| Subcribe via RSS

在CentOs中安装Memcached

7月 27th, 2008 | No Comments | Posted in 心得
准备安装:

需要先安装gcc,libevent

yum install gcc wget http://monkey.org/~provos/libevent-1.4.4-stable.tar.gz tar xvzf libevent-1.4.4-stable.tar.gz cd libevent-1.4.4-stable ./configure –prefix=/usr/local/libevent make make install

编译安装:

./configure –prefix=/usr/local/memcached –build=i686-pc-linux-gnu \ –with-libevent=/usr/local/libevent make make install

启动:

$ /usr/local/memcached/bin/memcached -p 11211 -m 64m -d -u root

 

使用memcached -h可以查看所有可用选项:

  • 选项     说明-p     使用的TCP端口。默认为11211

    -m     最大内存大小。默认为64M

    -vv     用very vrebose模式启动,调试信息和错误输出到控制台

    -d     作为daemon在后台启动

  • -u     运行Memcache的用户,默认不能用root启动,所以当前用户为root用户时,需要用-u参数来指定。
  • -l       监听的服务器的ip
  • -c      最大并发连接数,默认为1024
  • -P     指定pid文件
常见问题:

1. 编译memcached时出现下面错误:

./configure checking build system type… Invalid configuration `i686-pc-linux-’: machine `i686-pc-linux‘ not recognized configure: error: /bin/sh ./config.sub i686-pc-linux- failed

解决方法:

在./configure 时加入参数–build=i686-pc-linux-gnu

2.启动时找不到libevent库

memcached: error while loading shared libraries: libevent-1.3c.so.1: cannot open shared object file: No such file or directory 

解决办法:

将libevent库所在路径加入LIBRARY_PATH,在/etc/profile中加入

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/libevent/lib
相关文章:
Tags: , , ,

几个不常用但很有用的javascript方法

11月 12th, 2007 | No Comments | Posted in 心得
1. javascript代码延迟执行。

我们经常可以看到这样的应用,鼠标放到tab上时切换tab内容为当前tab.但是这样就会有个问题,怎么样防止鼠标不经意划过tab时触发这个事件呢?可以通过延迟触发来避免这种情况,但是javascript中没有这样的函数。

javascript提供了一个函数 setTimeout(),可以延迟一个操作的执行,但是这个操作最终还是要执行的。我们需要的是鼠标放在tab上超过0.5s才执行某个操作,否则什么都不发生。

幸好,javascript还提供了另外一个函数,叫做clearTimeout(),于是这个问题就解决了。

 var tabId;
 var timeoutId;
 //鼠标放上时
 function tabOnMouseOver(tabid)
 {
 tabId=tabid;
 //延时500毫秒
 timeoutId=setTimeout(changeTab,500);
 }
 //鼠标移开时清除定时器
 function tabOnMouseOut()
 {
 clearTimeout(timeoutId);
 tabId=0;
 }
2. 设置下拉列表的默认值。

通常的做法是用jsp标签在页面上判断当前默认应该选中哪个value.这样不但繁琐,程序的可读性也很差。这个工作完全交给javascript去做。

// 设置下拉列表的默认值,用于设置表单初始值,表单加载结束时调用
 function setSelectDefaultValue(eleId,value)
 {
 var options=document.getElementById(eleId).options;
 for(i=0;i<options.length;i++)
 {
 if(options[i].value==value)
 {
 options[i].selected =true;
 }
 }
 }

这样,每次页面加载完之后调用这个方法set下拉列表的默认值就可以了。

3. 计算两个日期间隔。

这里要求日期的格式必须为”yyyy-MM-dd”格式。

//检查日期间隔不能大于interval天
 function checkInterval(date1,date2,interval)
 {
 //将天数转为毫秒数
 iseconds = 1000 * 3600 * 24 * interval;
 date1=Date.parse(new Date(date1.replace(/-/g,"/")));
 date2=Date.parse(new Date(date2.replace(/-/g,"/")));
 if(date2-date1)>iseconds)
 {
 alert("查询时间间隔不能超过" + interval + "天") ;
 return false;
 }
 if(date2-date1)<0)
 {
 alert("请设置正确的查询间隔,开始时间不能晚于结束时间");
 return false;
 }
 return true
 }
相关文章:
Tags: , , ,

Groovy WebSite Generator(Groovy 网站生成器)开源啦

11月 11th, 2007 | No Comments | Posted in 心得

用于生成bestunix 的程序发布在google code上,网址为 http://gwg.googlecode.com .

可以通过 svn checkout http://gwg.googlecode.com/svn/trunk/ gwg 取得最新代码。也可以在网站上下载打包好的代码。

经过两次比较大的重构(更新历史),目前gwg的主要功能有:

  1. 使用groovy根据rss生成网站首页,detail页面,分类页面,tag页面;
  2. 使用google ajax api实现了站内搜索功能;
  3. 页面内容中的tag链接替换为本地链接;
  4. 实现了本地rss输出;
  5. 实现了google sitemap;

gwg的价值在哪里:

  1. 可以快速的生成自己的独立网站;
  2. 只有一个配置文件需要修改;
  3. 网页风格可以通过dreamweaver的模板快速更改;
  4. gwg本身也是很好的groovy资料

快速启动:

  1. 首先需要配置好groovy运行环境;
  2. 进入gwg/src 目录,修改Config中的sourcePath和topFolder路径
  3. 在命令行运行 groovy start.groovy

相关文章:
Tags: , ,

同时启动多个jboss需要修改的端口

10月 31st, 2007 | No Comments | Posted in 心得

此方法适用于jboss4.x

$JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml 中所有端口
$JBOSS_HOME/server/default/deploy/dynclassloader-service.xml:      <attribute name=”Port”>8083</attribute>
$JBOSS_HOME/server/default/deploy/invokers-service.xml:      <attribute name=”RMIObjectPort”>4444</attribute>
$JBOSS_HOME/server/default/deploy/invokers-service.xml:      <attribute name=”ServerBindPort”>4445</attribute>
$JBOSS_HOME/server/default/deploy/naming-service.xml:      <attribute name=”Port”>1199</attribute>
$JBOSS_HOME/server/default/deploy/naming-service.xml:      <attribute name=”RmiPort”>1198</attribute>

相关文章:
Tags:

使用Groovy自动生成网站

10月 21st, 2007 | No Comments | Posted in 心得

周末忽然心血来潮,决定重建一下bestunix,为了不再出安全问题,这次决定完全使用静态页面。

基本思路是这样的:

  1. 使用crontab定期从space上面下载feed.rss
  2. 使用groovy脚本解析feed.rss,生成静态页面
  3. 每次生成的页面覆盖以前的页面。

看起来很简单,但是因为以前没有用过groovy,而且groovy又没有好的ide工具,完全使用ultraEdit来做的,大概花了一天半时间。

基本上写程序半天,做页面半天,配置服务器半天(jdk,groovy,apache)。

通过这个小东西,基本上理解groovy的闭包了,另外对groovy的优点也有了进一步认识,进行io操作非常方便,语法习惯了以后写起来也很爽,虽然使用ultraEdit,但因为基本上没有重复的代码,ide生成代码的功能也显得不那么重要。缺点也很明显,没有好用的ide,调试程序非常麻烦,比js难调多了。另外就是性能太差,慢得要死,当工具来使还行,大项目上这东西还是不敢用。

做页面本身不是我的长项,花半天也是可以理解的。

配置服务器之所以要这么长时间,主要是因为编码的问题。通过iconv转换程序代码,设置apache默认编码等若干次尝试后,终于不再出乱码了。另外一个要注意的地方是groovy在linux下必须设置classpath,否则会找不到类。

现在设好以后,每次我在msn space上写了东西,bestunix上就会生成相应的静态页面了,呵呵,还是很有成就感的。

10月22日更新:

今天整理了一下程序,主要做了下面几点

  1. 程序功能分工更清晰,文件由原来的两个急剧增加到6个
  2. 增加了配置文件,适应性更好
  3. 程序和模板,生成的网站可以分离了
  4. 增加了RSS输出
  5. 增加了自动生成sitemap
  6. 修改了原来日期显示的问题

今天用了一下groovy的eclipse插件,还不错,有部分的代码自动完成功能和部分的语法检查,可以进行很简单的调试。另外一个感觉就是非常慢。

11月6日更新

  1. 重构了代码,使功能分工更清晰
  2. 增加了一个DataFactory,所有磁盘资源都只需要读取一次,减少了因为重复读取数据造成的性能问题
  3. 增加了tag的功能,使得导航更方便
  4. 解决了非utf-8环境下测试的问题
  5. 其他地方的性能也做了一些优化
  6. 网页模板改用绝对链接,这样模板文件更容易管理
  7. 程序与模板,生成的完全分离,可以在Config中指定。

11月8日更新

  1. 增加了taglist页

11月11日更新

  1. 增加了站内搜索,使用google ajax api,折腾了半天,还算好用
  2. 对上面的一级栏目做了调整,不再放分类了
  3. 修改了rss中一个链接错误

11月12日更新

  1. 终于实现分页了,确实有点麻烦,自己写了个分页类。
  2. 对网站的整体样式做了一些调整,使用大字体了,这样看着不会那么费劲。
  3. 把源代码放到 google code 上了。

TODO:

  1. 合并rss.因为网站上的rss只输出最近的几十条。内容多了就会丢失以前的数据。需要写个程序来增量合并更新的内容。
  2. 自动生成对应的繁体中文网站
  3. 根据tag自动生成专题
  4. 生成pdf

相关文章:
Tags: ,

不测试没有发言权,jdk中正则表达式的效率问题

10月 11th, 2007 | No Comments | Posted in 心得

今天帮同事写了个用正则表达式进行html中部分标签替换的方法。因为这个方法使用频率非常高,担心会有效率问题,看到网上也有很多人说jdk的正则表达式效率极差,简直没法用。

后来又用oro中的perl5写了一个同样的方法(他们以前一直用这个),做了10万次替换来比较,结果jdk版的速度是oro的两倍。

恩,结论当然就是jdk正则表达式效率尚可,没有传说中那么差。

有可能jdk5.0对这部分的性能有所改善吧。

相关文章:
Tags: , ,