周末在家装OpenVPN,结果发现客户端能成功连上服务器,但却没法访问外网。
重新审查服务器端的所有操作步骤,完全正常。还发现一个问题,偶尔会有成功访问外网的时候,但如果重启服务器,又不能访问了。冥思苦想后……
终于发现,原来是服务器的iptables没有启动~
周末在家装OpenVPN,结果发现客户端能成功连上服务器,但却没法访问外网。
重新审查服务器端的所有操作步骤,完全正常。还发现一个问题,偶尔会有成功访问外网的时候,但如果重启服务器,又不能访问了。冥思苦想后……
终于发现,原来是服务器的iptables没有启动~
How to find the site-packages folder in Python?
在Mac OS或者Linux中比较有用,因为这些系统一般都同时安装了多个版本。尤其是Mac OS 10.5,目录结构太乱了
在python环境中:
1 2 | from distutils.sysconfig import get_python_lib print get_python_lib() |
或者,直接命令行:
1 | python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" |
今天又发现了一个UI设计工具--WireframeSketcher,和上一个工具差不多,用来进入界面草图设计,不过WireframeSketcher是一个Eclipse插件,如果开发环境是基于Eclipse,可能会方便很多。
不过也有一些问题,比如没有MenuItem,没有快速搜索Component的功能,在Component列表中不支持滚动。
对于License,也可以通过blog推广的方式来获取,试一下
今天在网上发现一个不错的工具,Mockups For Desktop,一款基于Adobe AIR的程序,使用它可以非常快捷地设计出程序界面。
Mockups For Desktop提供了很多“控件”进行选择,Button, Checkbox, Dialog Windows等等,直接拖到设计区域就可以,效果看起来像“手绘”的草图,感觉相当不错。
程序没有右键菜单,感觉挺奇怪的,而且似乎不支持中文字符输入。
售价$79,不过可以通过Blog推广等方式来免费获取注册码。未注册版本还不能保存设计稿,这点相当不爽。
================
2月9日更新:
昨晚发布了日志后,马上给作者发了邮件,告知已经在Blog上进行推广,另外还有右键菜单建议和中文问题,今天就收到了作者的回复,他们会在以后的版本中增加右键功能菜单;如果需要输入中文,则可以在View菜单下,选中Use System Fonts,即可支持中文输入。
使用作者提供的注册码激活后,就可以保存文件了,格式为BMML,其实是一个XML格式的文件。
在Seam中,使用<s:convertEntity/>或者<s:convertEnum/>会方便很多,Seam会自动将用户选中的Entity实例放到对应选择标签的value中。
这几天在JBoss Seam集成GWT,试了很多时间,总结出一些问题:
JBoss Seam版本:2.1.0.SP1
Google Web Toolkit版本:1.5.3
Eclipse Ganymede (Eclipse 3.4)版本出来很久了,一直没有在这个版本上搞定离线安装subclipse插件,不论是link,还是copy到dropins目录,却无法识别插件,今天在Mac上捣鼓时无意间问了Roy一句,他说3.4版本下的插件似乎不能有site.xml文件,否则好象会被认为在线安装。我随手删除掉site.xml,重新启动eclipse,居然装好了
在Java中,有两种初始化块:静态初始化块和非静态初始化块。
静态初始化块:使用static定义,当类装载到系统时执行一次。若在静态初始化块中想初始化变量,那仅能初始化类变量,即static修饰的数据成员。
非静态初始化块:在每个对象生成时都会被执行一次,可以初始化类的实例变量。
非静态初始化块会在构造函数执行时,且在构造函数主体代码执行之前被运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package com.tiandinet.studyjava; public class TestInitiateBlock { { System.out.println("In non-static initialization block!"); }; static { System.out.println("In static initialization block!"); }; public TestInitiateBlock() { System.out.println("In Constructor1!"); } public void show() { System.out.println("In show()!"); } /** * @param args */ public static void main(String[] args) { TestInitiateBlock ti = new TestInitiateBlock(); ti.show(); } } |
运行结果:
In static initialization block!
In non-static initialization block!
In Constructor1!
In show()!
虽然之前一直做PHP的开发,但一直没有用过memcache,仅是知道一些简单的原理。今天突然来兴趣,想试一下memcache,和PHP下的调用。
1. 安装memcached (服务器版本1.2.6)
服务器OS是RHEL5(Red Hat Linux Enterprise 5),之前已经装好LAMP环境,这是我们的一台测试服务器,LAMP均位于/opt/lamp下。准备将memcached安装在/opt/cache/memcached目录下。
memcached需要libevent(http://monkey.org/~provos/libevent/)的支持,所以需要先安装libevent,安装目录位于/opt/cache/libevent,下载最新版本的libevent(此例中为1.4.8),解压后进入源代码目录,进行配置和安装。
./configure --prefix=/opt/cache/libevent make make install
接着安装memcached,使用的版本是1.2.6,进入解压后的源代码目录,
./configure --prefix=/opt/cache/memcached --with-libevent=/opt/cache/libevent
–with-libevent指令指定libevent的目录 (阅读全文……)