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,能减少不少麻烦,代码里有大量的测试用例参考

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()

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)

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。

2010年11月1日星期一

默认Mysql 数据库表名区分大小写

修改/etc/my.cnf,可不区分大小写:
在[mysqld]里加入:lower_case_table_names=1
重启数据库

2010年10月31日星期日

MySQLdb安装是件烦人的事

每次在新系统下源码安装mysqldb都会或多或少有问题,还是简单点使用apt-get:
sudo apt-get install python-mysqldb

2010年9月15日星期三

MySQL varchar自动截取处理

在调试中发现有乱码,导致程序异常,到数据库中看时,的确后面有一个乱码。
查明是最后一个字符被截取了,但应用程序没有作任何截取的操作,尝试后发现是Mysql干的。

Mysql有一个SQL_MODE模式,一般情况下是空,你可以查询你的Mysql库是什么模式:
select @@sql_mode; ##我的是空
在这个情况下,当你插入一条记录时,当有字段超出长度,mysql自动作了截取后存入数据库(会给条警告的信息)。

一般情况下我们不允许这样(为什么有这种处理,很奇怪),设置sql_mode为严格模式:
mysql> set SQL_MODE='TRADITIONAL';
Query OK, 0 rows affected (0.00 sec)

mysql> select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                    |
+-------------------------------------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER |
+-------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

后面再有超出长度的将报错!!!

2010年8月15日星期日

ubuntu10使用vim

使用vim,发现没安装,试试apt-get install vim也不能用,修改source.list解决。

把/etc/apt/sources.list 里的软件源列表修改一下。

deb http://cn.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse

deb-src http://cn.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse

sudo apt-get vim

一切OK!

2010年7月24日星期六

linux google输入法

1. 安装必要
$ sudo apt-get install scim
$ sudo aptitude install autotools-dev libgtk2.0-dev libscim-dev libtool automake

2. 下载google输入法:
$ git clone git://github.com/tchaikov/scim-googlepinyin.git
$ cd scim-googlepinyin

3. 编译
$ ./autogen.sh
$ make
$ sudo install

关闭scim:
$ sudo pkill scim
然后启动:
$ sudo scim -d
"系统"菜单 : "系统管理" : “语言支持”的“输入法”选择scim作为默认输入法就OK了。

若输入法乎不出来,需要重启系统!!!

使用Virtualenv进行多环境开发

在看Flask时,有专门的Virtualenv介绍,为了在多环境下开发,独立其它环境.
如系统中有Flask0.5稳定版,但在測试环境下需要dev, 这样可创建一个dev的虚拟环境,相互之间不影响.

先安装:
$ sudo easy_install virtualenv

配置一个使用Flask-dev(没有正式release的版本)的开发环境,不影响其它环境,取名为env。
$ mkdir flask
$ cd flask
$ virtualenv env
$ . env/bin/activate
New python executable in env/bin/python
Installing setuptools............done.
(env)$ easy_install Flask==dev

这时安装的flask-dev其实是安装在当前环境,进入env/lib看看。
同样可以在不同环境下,使用如不同版本的python等。

2010年7月22日星期四

Python2.6.5不能访问Mysql解决办法

安装ubuntu10.04后,急不可待,安装上python2.6.5(最新版).
再安装上mysql : sudo apt-get install mysql-server-5.1
安装Mysql-python-1.2.3.
>import MySQLdb
报错: libmysqlclient.so.15找不到.

但是在/usr/lib/下,执行: ls libmysql*,发现有libmysqlclient.so.16,于是把16作一个连接符号到15上.发现还是有错.

10.04上已经没有15,只有16,而Mysql-python只使用15,使用ldd可看出
/usr/local/lib/python2.6/dist-packages/MySQL_python-1.2.3c1-py2.6-linux-i686.egg$
ldd _mysql.so
linux-gate.so.1 => (0x0095c000)
libmysqlclient_r.so.15 => /usr/lib/libmysqlclient_r.so.15 (0x00653000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x003e5000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00110000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0x008d4000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0x0026a000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x00293000)
libz.so.1 => /lib/libz.so.1 (0x00365000)
/lib/ld-linux.so.2 (0x00df7000)

所以还是要找到15装上.

使用: libmysqlclient15off, 解决问题,下载地址:
http://packages.ubuntu.com/karmic/i386/libmysqlclient15off/download
文件:libmysqlclient15off_5.1.30really5.0.83-0ubuntu3_i386.deb
安装后,再到/usr/local/lib下,输入: ls libmysql*,有了:
libmysqlclient.a libmysqlclient_r.so.15.0.0 libmysqlclient.so.16
libmysqlclient.la libmysqlclient_r.so.16 libmysqlclient.so.16.0.0
libmysqlclient_r.a libmysqlclient_r.so.16.0.0 libmysqlpp.a
libmysqlclient_r.la libmysqlclient.so libmysqlpp.so
libmysqlclient_r.so libmysqlclient.so.15 libmysqlpp.so.3
libmysqlclient_r.so.15 libmysqlclient.so.15.0.0 libmysqlpp.so.3.0.9


再运行import MySQLdb,一切正常.

2010年7月18日星期日

在ubuntu10上apt-get install sun-java6-jdk无效

在ubuntu10上执行: apt-get install sun-java6-jdk 矢效

解决方法
1. 自己从sun网站下载相应的Jre,jdk安装即可 (有依赖, 还是apt-get install好)
2. 从新立得软件管理器中search openJDK,安装 (一般不要open jdk)
3.系统 -->管理工具-->软件源中
 "其他软件",勾选第一项"http://archive.canonical.com/ubuntu lucid partner"
 然后执行apt-get install sun-java6-jdk 
 
 果然可以! 10.04默认不添加此源,加上就可以了.

2010年7月11日星期日

sudo apt-get install mysql-server-5.1

在ubuntu10.4安装MYSQL很简单
$sudo apt-get install mysql-server-5.1


启动$sudo /etc/init.d/mysql start 
关闭$sudo /etc/init.d/mysql stop 

使用ps aux |grep mysqld 查看mysql启动状态 

ps命令用于查看当前系统中运行的进程信息 
命令格式:ps [选项] 
常见参数: 
-a    显示系统中所有进程,包括其他用户进程 
-e    显示所有进程信息 
-f    显示进程的所有信息 
-l    显示长格式显示进程的信息 
-r    只显示正在运行的程序 
-u    以用户的格式显示进程信息 
-x    显示所有终端上的进程信息 

2010年6月20日星期日

下载tornado

翻墙后下载tornado有问题,所以安装了git,找到源码托管地址,下载:
git clone git://github.com/facebook/tornado.git tornado

呵呵!其他的就简单了:
cd tornado
python setup.py build
sudo python setup.py install

2010年6月18日星期五

天朝新闻与别国新闻节目的区别

看到的,忍不住放过来:
 
天朝新闻与别国新闻节目的区别

1、连续发生假货泛滥、食物中毒等事件后——
别国新闻:政府应当反省,加大整治、监管力度,不能推诿责任!
天朝新闻:公民应该加强防范意识,提高识别假货的能力,不要购买过期变质食品。

2、贫困山区的孩子上不起学,要靠XX拼了老命捐助——
别国新闻:这是教育部门和社会保障部门的失职和耻辱。
天朝新闻:号召大家学习XX,这是时代的光荣和国家的骄傲!

3、抓了一个大贪官,追回了XX万元巨额赃款——
别国新闻:这说明监督机制有漏洞,应该反思。
天朝某国新闻:监督部门及时发现问题,为国家挽回了巨额损失,成绩斐然。

4、煤矿屡屡塌方、爆炸——
别国新闻:政府安全监管部门的官员引咎辞职。
天朝新闻:事故引起了政府安全监管部门领导的高度重视,他怒斥下级、亲笔批示,一定要追究相关人员的法律责任!

5、遇到穷凶极恶的亡命徒——
别国新闻:提醒广大公民及时报警,避免与歹徒发生冲突。
天朝新闻:呼吁广大公民见义勇为、冲上去与歹徒玩命,只有大家一起上、社会治安才能根本好转。

6、辖区一贫如洗,村民们饥寒交迫、看不起病——
别国新闻:政府主管官员的支持率严重下降,民众强烈不满。
天朝新闻:政府主管官员政绩卓著,亲自下乡给农民"送温暖",农民们感激涕零、山呼万岁,亲切地把这些官员称作好公仆、领路人、贴心者、父母官。

7、别国新闻节目都是什么事儿大、什么事儿新鲜什么就排前面;
天朝"新闻"联播则是谁官大谁就排前面,某些领导说句大话、放个空屁回回都排在当日头条。

8、别国新闻节目里有好事也有坏事,
天朝"新闻"联播里则都是好事;如果有坏事,那一定是在最后几分钟的国际要闻里。

9、别国新闻节目里的环境问题总是很严峻,尽管他们国家的河流看上去很清澈;
天朝"新闻"联播里的环境治理总是捷报频传、再上一个新台阶,尽管他们国家的河流又黑又臭。

10、别国新闻节目里没有整天强调教育、医疗的重要性,却也没多少人上不起学、看不起病;
某国"新闻"联播里重视教育、医疗改革、取缔乱收费天天结硕果,但还是有那么多人上不起学、看不起病。

11、别国新闻节目里的官员没有把为纳税人着想挂在嘴边,但他们的数量从不膨胀、办公楼也非常简易;
天朝"新闻"联播里的官员总在强调一切为了人民,但他们的队伍越来越臃肿、公车和办公楼也越来越奢侈。

2010年6月3日星期四

到了61+3,HK的google都不能访问

草木皆兵!说明某Group心态有问题!

2010年5月16日星期日

袁腾飞不见了

引子一篇报道:
袁腾飞发表了诸如"蒋介石是一党独裁,毛泽东其实也一样"、"三年自然灾害(1959年至1961年)死了三千万,比二战全欧洲死的人还多"、
"中国历史教科书纯粹胡说八道"等言论。他认为中国文革10年(1966年至1976年)"在中华五千年文明史上,甚至在人类一万八千年文明史上都是最黑暗的10年,能跟它勉强媲美的是,斯大林的俄国和希特勒的德国";并指天安门广场的毛主席纪念堂"是中国的靖国神社","供奉的是一个沾满人民鲜血的刽子手"。