[54chen原创]简单好用的土办法抗击洋鬼子对wordpress系统的广告灌入

54chen

自升级wordpress3.0以后,一切风调雨顺,自上周起,被洋鬼子的广告肉机盯上了,平均每三五分钟一条广告,评论内容大致相同,评论ip来自五湖四海,各不相同。
虽然说akismet是wordpress中antispam无二的选择,但是akismet那个验证码让人很纠结,于是只能自己山寨一把了。 土办法步骤一 转发默认评论地址 常见的洋鬼子的广告肉机,都是利用了wordpress公开的post地址来做到脚本灌入的,其默认地址是wp-comments-post.php,第一步要做的是,屏蔽这个地址(以nginx为例):
rewrite ^/wp\-comments\-post\.php$ http://www.54chen.com/ last;

土办法步骤二 伪造假地址 既然第一步中的真实地址无法访问了,那第二步肯定是假冒出来可以访问的地址:
if (!-e $request_filename){
rewrite ^/wc([0-9]+)\.html$ /wp-comments-post.php?54chen=$1 last;
}

土办法步骤三 javascript制造假post 完成上面两步之后 ,最后一步就是将原来的comments.php修改post action的地址为伪造的地址,为了更加有效果,使用js来产生随机的wc1234.html即可:
在评论的form中增加onsubmit="chenAntiSpam()" name="commentform";
再增加js:

<script type="text/javascript">
function chenAntiSpam() {
 var param ='wc'+Math.round(Math.random()*1000)+'.html';
 document.commentform.action = 'http://www.54chen.com/'+param;
} </script>

大功告成,有效防住了洋鬼子的灌。

54chen Twitter Memo 2010-08-22

  • 54chen Twitter memo 2010-08-15 http://goo.gl/fb/ieVhS #
  • RT 路边新闻社: 在这个国家,有意思的是,有些事情你必须哀悼,有些事情则必须不能哀悼。前者只是会让你网页变黑白,后者则会让你网页压根儿打不开。—— 早安各位! #
  • 上了一早上的网,老看到有人说电视机全放一样的东西,我不相信,忍不住打开电视,还真的是。 #
  • 人口普查摸底整顿,摸你妈逼,忍不住骂一句。 #
  • 使用拦截器做权限控制,very cool #
  • RT @162cm:终于把淘宝的用户信息解密的blowfish方法搞定了....他们其实就加了一点点东西进去 搞得我这个java外行折腾了一整天 // java php我的前后两板斧,哈哈 #
  • RT @ fire9: RT @yanyanlong: fire9是开发飞信的啊? RT: @fire9: RT @365cao: 飞信今年太给力了,这半年里都更新好多次了,变化太大了//这话太给力了!//不是,是为飞信打杂的。 //感觉上这几个月飞信的人犹如雨后春笋一般的现身。 #
  • 多难穿帮 #
  • 华为的兄弟居然也有搞云计算的,还找上门来挖人,怕怕,可是搜了一下,天涯上都有骂华为云计算部门的了,“云计算”这么牛X的概念,还看工作经验毕业学校,能吹就行了。 #
  • 再来一句,传统IT行业进军互联网,先把过去十年的学费交上。 #
  • http://www.infoq.com/cn/news/2010/08/google-diffable #
  • 天津市盲人协会组织盲人免费“观看”唐山大地震 #
  • 云南又泥石流了 #
  • 美ICP备案000001号 #
  • 跟得过且过的人合作项目是搞技术的兄弟们最大的杯具 #
  • RT @162cm:我是162cm,我54Kg,体型正常,谢谢! @cnhawkorg @162CM RT @Oct_Ava: 请问男推友,大家觉得162CM多少KG是最合适的 //哥为啥不发发福呢 #
  • 汗啊,博客后台出现了一个很长的评论,全篇目标只为发一个淘宝网女装的连接。。。。 #
  • 今天看到人人网有人分享,从大学毕业了后的干部身份,职称评定,等等一系列的事情,问各位码农,有职称吗 #
  • @nshen121 帮BS in reply to nshen121 #
  • 海纳百川 人人网海量存储系统nuclear介绍 #
  • 你们加井空小姐的人太多了,结果大早上的推特就who to follow给我井そら #
  • RT @Fenng:杭州常住居民办理美国签证的实践 Version 0.314 http://www.dbanotes.net/Passport_US_Hangzhou.html //哥又要出墙去上网了 #
  • 和编辑闲扯蛋,某书《互联网XX智慧》作者是一线耗材专家,写书害人。 #
  • 西安到昆明的火车掉在了江里,哥看了半天新闻,始终没看明白,掉河里的救没救起来。 #
  • 运营的头在跟前端的同学培训:逢年过节的死多人的时候,你们要注意准备红的灰的全站css #
  • http://share.renren.com/share/GetShare.do?id=3066506955&owner=237480941&ref=newsfeed&sfet=110&fin=3 MJ唯一被和谐的mv,30秒的时候十分不和谐。 #
  • RT @ wingoffire: 那云南人现在每天不用买菜,直接从窗台上割蘑菇就可以了吧 RT: @hecaitou: 看到有人在昆明的西部客运站,马上去大理玩。一下子想起了现在是雨季,满街都应该是菌子了吧? //作为一个云南人,我表示鸭梨很大 #
  • 世界没有省油的灯:上去快的东西,死得快。 #
  • RT @ wolfdeng: RT:@sunli1223 开始正式使用maven管理项目,感觉非常不错。 //这是个好东西,我一直用它。 另外给你推荐咱们国内的一个maven六人 @juvenxu //果真是牛人,用了一年多maven,他公司居然在中国。。 #
  • RT @ juvenxu:@54chen 我的公司不在中国 //哦?看你博客写的常驻苏州说,莫非已经在国外混去了,牛人都走了 #
  • RT @juvenxu:@54chen 我的公司不在中国 //哦?看你博客写的常驻苏州说,莫非已经在国外混去了,牛人都走了 #

[54chen开发日记]注解和拦截器实现权限通用模型的设计实践

54chen ------------------英文大爱-----------------------

        在近期的开发过程中,有使用到拦截器来实现权限控制,使用这种设计方案,可以很好地分离权限与系统本身的功能,让开发过程更加关注系统的核心功能,同时可以很容易做到开发时的任务划分,同时使项目代码的可读性大大提升。先来普及几个相关的名词:

1.AOP:是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面编程,也有叫面向方面编程,不过切面更加形象。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。

2.GoF:《Design Patterns: Elements of Reusable Object-Oriented Software》(即《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为"四人组(Gang of Four)",而这本书也就被称为"四人组(或 GoF)"书。话说为首的Erich Gamma,在QCon的大会上54chen也有半面之缘。

权限模型的常量定义

        一个系统里最常见的需求莫过于权限、角色,事实上往往这样子的需求和系统本身的功能又是没有太多关联的。按照常规的做法,我们需要两个类,一个表明都有什么权限(例如:删除帖子权限、编辑帖子权限,等等);另一个类表明,各个角色都有什么权限。这样子相当于定义了一个权限和角色模型。

拦截器与注解

        拦截器(Invocation)在在流行的开源框架中很常见,依赖的技术就是Java的动态代理。许多流行的框架都提供实现拦截器的接口,可以很简单就实现一个拦截器,此文不表如何实现。注解(Annotations)是JAVA在5.0后引入的特性,它引入的目的是为了替代一些简单的配置到java代码里,而不用原来的xml。

注解请求示例

        一般的框架,都会有一个controller类,以下用伪代码表示: public class ThreadsController{
@PriCheckRequired({MemberPrivilegeIdentity.CREATE_THREAD})
public String createThread(){
return "createThread";
} }
        如代码中所示,一个controller里的一个method对应一个url请求(例中所示为创建帖子)。我们只需要在其方法上标注@PriCheckRequired({MemberPrivilegeIdentity.CREATE_THREAD}),PriCheckRequired就是注解,其传递了一个信息MemberPrivilegeIdentity.CREATE_THREAD,这也就是前文说的权限类中的创建帖子权限。 拦截器工作         拦截器一般都是实现一个框架提供的接口来实现,常用框架都支持。
可以想像在拦截器里要做的事情:

1.根据规定好的request请求的参数,取到用户属于哪个角色。
2.根据controller中注解,取到当前要判断的权限。
3.对比用户角色是否有注解中的权限,如果有,放行,反之拦截。
代码实现 拦截器的代码实现与框架有关:
rose框架如何实现拦截器请看http://code.google.com/p/paoding-rose/wiki/Rose_Code_Fragment_Interceptor;另外spring等都可以简单实现拦截器。

篇末         这种方式可以做的事情还有许多,例如cache等公共模块的地方,都可以使用,对开发速度、任务划分、代码重用程度都有非常适用的地方。

54chen Twitter Memo 2010-08-15

  • 54chen Twitter memo 2010-08-08 http://goo.gl/fb/HcNlK #
  • 接连4天没有上班,感觉许多东西要理顺一下才能继续工作。 #
  • 用人之长,凡事顺之。 #
  • RT @Qieqie:三重门、两道沟、一句话:语法 syntax、语义 Semitics、语用 Pragmatics;两道沟:经历 Experience、感悟 Taste..//哲学帝 #
  • @MingxingZhang comment what? in reply to MingxingZhang #
  • @MingxingZhang BS in reply to MingxingZhang #
  • 求一本,历史+经济相关的好书。 #
  • @MingxingZhang 不靠谱托夫斯基 in reply to MingxingZhang #
  • RT @fire9:收到 @ihower 快递过来的《松本行弘的程式世界-成为一流程式设计师的14种思考术》。感谢! //看上去这本书不错 #
  • 从事WEB开发多年,只有页面驱动开发才是可行之策,它能让枯燥的后台代码立马提升多倍的成就感,从而驱动快速完成开发。 #
  • 某日,完美时空、巨人、盛大、搜狐、阿里、金山共同投资了一公司,取名,完美巨大狐狸精 #
  • 状态不佳,头脑不清晰 #
  • 第一次参加的团购,七夕情人情礼物 #
  • 王兴创业的门道和术。http://url.cn/1fkomB #
  • RT @kejunz: RT @number5: RT @mranti: RT @baiyuji: 清华的校训,原本是“自强不息,厚德载物;独立精神,自由思想”,而现在却被拦腰斩断,只剩下前面8个字。 #
  • 雅虎一些旧同事的博客都很有风格,首页一致输出一个空白页,或者是某系统的安装页。很cool #
  • 一边实行scrum,一边订超大计划每日汇报,一边领导拍脑袋改需求,杂草丛生的企业软件开发。 #
  • @162cm 最后一次五四,来学习下吧,http://www.54chen.com/youth in reply to 162cm #
  • RT @162cm:你这个页面的敏感词太多了,自行检测一下! @54chen @162cm 最后一次五四,来学习下吧,http://www.54chen.com/youth //草民冤枉,纯粹是百度百科转自中国青年报,我又转自百度百科的。 #
  • RT @ arthur369:我们是豺狼配虎豹 RT @Tony3Chow5 我突然有个强烈想法:找个女朋友,让她上推,然后和我组成情侣推。§>_<§。我这是看西乔姐和霍炬哥郎才女貌的组合给触动的。 //其实我和我老婆还是在twitter上认识的 #
  • 毕业了后在弄了集体户口,近期结婚把常住人口登记卡借了出来,现在滋生了不想归还的思想,哪位神仙知道,不归还的后果是什么? #
  • RT @ 162cm: 您试过户口处于一种"锁定状态"么?不能办任何户口相关的东西,照身份证啥的,都不行 兲朝是个神奇的国度,我因为这个郁闷了一年多//怎么样操作可进入这个状态呢?以防不测我已经在领出相关东西的时候顺手把身份证再办了一个 #
  • RT @lixiaoshuan: RT @54chen: 毕业了后在弄了集体户口,近期结婚把常住人口登记卡借了出来,现在滋生了不想归还的思想,哪位神仙知道,不归还的后果是什么?//600押金不退了 // 其他东西有变化吗,比如说派出所会不会找不到你了 #
  • 翻看Qcon的ppt,蔡学镛大侠的ppt一枝独秀,大赞,做的时候是不是ps+某工具弄的呢,一定花不少时间。 #
  • RT @Fenng:敢问百度的索引更新到底周期是怎么个样子的?Google 这都索引了 10 万多的记录了,快两个礼拜了。百度还不见动静。 // 感觉上百度是有一个沙箱的,沙箱时间不确定,有人工参与的嫌疑,这段时间一定不要动就对了,不然时间会更长。 #
  • gmail这是在推通讯录? #
  • 时间产生无形的压力,八年不见的好兄弟,已经弄丢了当年的感觉。 #
  • 上海彩民中2.59亿大奖 #
  • 这是开放平台,还是应该叫“选择性开放平台”? #
  • 哎,孩子都老大了,别往外边跑了!男人一生的最成功不在于事业多大,而是在于儿女有多幸福。其实本身互联网就是最大的骗局!,这个东西是少数人玩的。这个东西忽悠别人可以,千万别忽悠了自己!我非常建议你考虑考虑往传统行业上发展!//转自QQ微博,笑而不语。 #
  • 中午休息看了下博客的来访浏览器,firefox占了第一,chrome第二,ie6第二 #
  • cnflex组织中3D兄弟老婆胃癌早期,万幸恢复良好,3D感言:保持良好的心态是健康的重要保障。学习之 #
  • 中房协是个什么鸟部门,竟然能够“上书”国务院,暂缓出台新的房地产调控政策。 #
  • 因噎废食 #
  • 用拦截器将权限判断外挂上 #
  • http://www.infoq.com/cn/presentations/cc-ria-rest-mass-storage 分享我在上次Qclub中的视频,同事帮我挖出来了 #
  • RT @turingbook:值得写篇文章 RT @cloudwu: 我的 lua protobuffer 库是官方 python 版本的速度的 30 多倍 (开 jit 后是 40 倍以上) //值得分享原因 #
  • rose pipe–一次对http技术的伟大革新实现(54chen乱弹版) http://goo.gl/fb/PCHZ8 #

Rose Pipe–一次对http技术的伟大革新实现(54chen乱弹版)

网站速度一直是互联网公司所关注的核心目标之一,作为SNS网站更是这样。来自世界第一大的打不开的SNS网站facebook的工程师日志中提到,BigPipe: Pipelining web pages for high performance。

原文在墙外,豆瓣有存根,地址为http://9.douban.com/site/entry/139173635/

来自infoq的一篇资料报道:http://www.infoq.com/cn/news/2010/08/bigpipe-facebook-optimize 它本意是充分利用http,将用户感受到的延迟时间降低一半,是如何做到的呢,下面由54chen流水记账一篇解释实现原理。院内曾经由人人网架构师王志亮大侠发表过一篇文章,地址是http://www.54chen.com/architecture/rose-open-source-portal-framework.html,本文将以此例中的项目举例。 HTTP协议 HTTP是一个客户端和服务器端请求和应答的标准,尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
在这里重新解释HTTP是为了后面做铺垫,一次http访问的过程如下:
1.打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作;
2.服务器在处理完客户的请求之后,要向客户机发送响应消息;
3.客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话。
在使用java的ServletResponse的时候,往往都是如下的操作返回结果到用户:

out.write(sb.toString());
out.flush();
out.close();
传统的WEB请求

以图1为例,一个WEB项目往往由不同的部分组成,不同的格局里往往代表需要从不同的数据表里去取不同的数据。 renren page 图1 人人网公共主页页面

一个用户来访问这个页面,按照传统的做法,其流程图可能是如图2这样的。 54chen:rose pipe 图2 一个传统的http请求过程
在图2中可以看到,一次打开网站页面的过程中,请求发到后端进行了处理(1和2步),只有当后端的取数据操作(2步)全部完成的时候,才可能进入第3步,向用户返回组装好的html页。如果说图1中一共有四个模块,对应后台有四条sql语句的话,那么,必须这四条sql语句全部返回了结果,才可能让用户看到页面。

pipe pipe技术充分利用了前后端技术。将一个页面里的多个模块分成不同的window,多线程取数据的操作,然后再充分利用http请求的连接,将原来的输出,从一次flush变成多次flush:

out.write(“基础的dom”);
out.flush();
//数据一准备好时
out.write(“js带数据一”);
out.flush();
//数据十二准备好时
out.write(“js带数据二”);
out.flush();
out.close();
其过程如图3所示: 54chen:rose pipe 图3 pipe的请求过程
借用big pipe的代码,第一次是输出的:

<div>
<div id=”left_column”>
<div id=”pagelet_navigation”></div>
</div>
<div id=”middle_column”>
<div id=”pagelet_composer”></div>
<div id=”pagelet_stream”></div>
</div>
<div id=”right_column”>
<div id=”pagelet_pymk”></div>
<div id=”pagelet_ads”></div>
<div id=”pagelet_connect”></div>
</div>
</div>

当有了完整的dom结构时,浏览器就会开始显示没有数据的框架了。

后面的数据每次都以js继续发送到页面中,浏览器收到即开始写入: <script type="text/javascript">
big_pipe.onPageletArrive({id: “pagelet_composer”, content=<HTML>, css=[..], js=[..], …})
</script>

性能 这种显示方式的性能,再借用facebook的图来表示之,如图4: facebook:pipe

54chen Twitter Memo 2010-08-08

  • 54chen Twitter memo 2010-08-01 http://goo.gl/fb/HrggT #
  • RT @162cm: 蛋蛋定 再搞两年技术管理 两年产品管理,我才能熟得跟路口卖得西瓜似的 这时创业才靠谱 @awguo @162cm 徐总把女儿照顾顺利了也早日出来创业吧,你是一个属于创业的人啊! //郭总这头像相当年轻啊,有校内上照片相比不WS多了,差点没认出来 #
  • RT 黄晶 : 能力的提升,事业的意义,职业的发展,现实的回报,在工作的任何阶段,都不要搞错这几件事的顺序,才能走的更顺更远——今天和某同学聊后的感想 //好像发过一回,再发一回做备份 #
  • 使用maven的profiles自动设置log4j线上环境和测试环境区别 http://goo.gl/fb/m8G0n #
  • 使用maven的profiles自动设置log4j线上环境和测试环境区别 http://goo.gl/fb/el7ti #

使用maven的profiles自动设置log4j线上环境和测试环境区别

程序猿

前言 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.   如果你已经有十次输入同样的Ant targets来编译你的代码、jar或者war、生成javadocs,你一定会自问,是否有一个重复性更少却能同样完成该工作的方法。Maven便提 供了这样一种选择,将你的注意力从作业层转移到项目管理层。Maven项目已经能够知道如何构建和捆绑代码,运行测试,生成文档并宿主项目网页.
项目的主页地址为:http://maven.apache.org/

深入 Profiles是maven的一个很关键的术语:profile是用来定义一些在build lifecycle中使用的environmental variations,profile可以设置成在不同的环境下激活不同的profile(例如:不同的OS激活不同的profile,不同的JVM激活不同的profile,不同的dabase激活不同的profile等等)。

实例 测试机环境,搞一个文件,比如说/data/test。
线上环境,不搞这个文件。
然后pom在project下如下写法:

<profiles>
<profile>
<id>produce</id>
<activation>
<activeByDefault>false</activeByDefault>
<file>
<missing>/data/test</missing>
</file>
</activation>
<properties>
<log4j.log.path>/opt/logs/xxx.log</log4j.log.path>
<log4j.debug.level>error</log4j.debug.level>
</properties>
</profile>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<log4j.log.path>/opt/logs/xxx.log</log4j.log.path>
<log4j.debug.level>debug</log4j.debug.level>
</properties>
</profile>
</profiles>
log4j.xml文件设置 为了配合maven的设置属性,需要将log4j中使用的声明用成变量,片段举例:
<logger name="com.xx.xx.xx.xx" additivity="false">
<level value="${log4j.debug.level}"/>
<appender-ref ref="dao"/>
</logger>

<root>
<level value="${log4j.debug.level}"/>
<appender-ref ref="service"/>
</root> 解释 这样,在运行mvn进行build项目的时候,如果线上环境,测试到/data/test文件是missing的,则会激活对应的设置,以此来达到线上环境改成error级别,而测试环境为debug级别。

54chen Twitter Memo 2010-08-01

  • 54chen Twitter memo 2010-07-25 http://goo.gl/fb/HIrSu #
  • 关掉所有的im 只留下twitter 如何? #
  • 不断加大的长江洪涝,犹如不断增长的业务访问量,偷工减料弄出来的各种工程,直接导致了一次又一次的重购,永远没有办法一劳永逸。 #
  • @Fenng 后台服务怎么用js写呢 求真相 in reply to Fenng #
  • RT 徐瑜骏: 问:如果腾讯抄袭你的产品,你怎么和他竞争?答:骂他狗日的---胡强童鞋 #
  • ubuntu下的chrome真的不怎么样,随时断线 #
  • @wolfdeng 好像在看哪里看到是chrome ubuntu版本的bug 不知是不是我的错 in reply to wolfdeng #
  • http://news.csdn.net/a/20100726/277273.html 人人网feed系统技术经理讲解实现原理 @xmpp这次活动非常成功!很棒 #
  • 人人网新鲜事系统探秘:Feed系统架构分析 http://goo.gl/fb/xolyX #
  • @xmpp cache mutex的问题也是一个典型的大负载网站常见的负载冲击问题,记之 in reply to xmpp #
  • http://blog.renren.com/share/256185402/2871632859 死亡率最高的车型和最低的车型~~~~ 买车的可以参考下 #
  • @kiminotes 西塘 西溪湿地 in reply to kiminotes #
  • @RageCarrier 段王爷 何故blog一直是install状态 in reply to RageCarrier #
  • 攒一个良好的人品,比起涨一倍的工资,难度要大得多。 #
  • 公司由小变大,老员工一直都以为,发到邮件组里的邮件大家都会看,但实际上,如果邮件组超过十个人了,基本上就没几个人在看里面的内容了。 #
  • @wingoffire 香港没有gfw in reply to wingoffire #
  • 生姜价格又上涨24%啦 说涨就涨 #
  • RT @162cm: RT @heqian: 杯具!@nzinfo 被警察蜀黍拦下查身份证了,因为长相... (@ 城铁西直门站) http://4sq.com/acbYJd // 人说了,我看你在这一块晃悠好久了,也不上班,你说,到底干啥的? //二话不说,送去挖沙 #
  • 找公司的极客产品给我设计了个新版本的blog, http://2011.54chen.com,现收集群众意见 #
  • RT 黄晶 : 能力的提升,事业的意义,职业的发展,现实的回报,在工作的任何阶段,都不要搞错这几件事的顺序,才能走的更顺更远——今天和某同学聊后的感想 #
  • @Fenng 我印象中你推过我一回没挂,哇哈哈哈,昨天发的一文章,让公司和谐了,分享精神过于极客了。。 in reply to Fenng #
  • 北京公租房暂不接受非京籍者申请 #
  • @hongqn 为啥现在这么流行geek文化,究竟怎么样才geek in reply to hongqn #
  • @hongqn 第一条瘦的准则工作上三年就挂掉了。。。 in reply to hongqn #
  • RT @wingoffire: 不许污蔑领导 RT: @sospartan: 正蹲坑呢 领导来了 ‘哪个让你拉的?‘ 立刻夹断 提裤走人 //“夹断”这个词太TM生动了 #
  • @GuoJiayue 上班时间,除了看美女,还能看电影,啧啧。。。 in reply to GuoJiayue #
  • @Fenng 应该已经是资深CTO啦 哈哈 in reply to Fenng #
  • 推荐几篇翻译得不错的文章:MapReduce: http://blog.csdn.net/active1001/archive/2007/07/02/1675920.aspx #
  • GFS: http://blog.csdn.net/xuleicsu/archive/2005/11/10/526386.aspx #
  • BigTale: http://blog.csdn.net/accesine960/archive/2006/02/09/595628.aspx #
  • @huairen 的确,很久没在墙外见到坏总 in reply to huairen #
  • 借了一回公司的公章做薪金收入证明,楼上楼下的跑,交通基本靠走。 #
  • @162cm 是说新浪发笔记本学是说要自带电脑? in reply to 162cm #
  • 一个奇怪的机器 一年没重启了 内存8G用上去只有2G的感觉,剩下6G怎么也用不上 reboot了居然好了。。。 #
  • sphinx安装配置手记(中文分词54chen支持版) http://goo.gl/fb/9qtX7 #
  • 居然订不到去大连的火车票,看来只能飞了 #
  • 一大早去买七天后的6张火车票,有四张售空,站票都没有,三分一的出票率,好吧,我朝的火车运力是不是不够啊,怎么这时候也买不到票,更别说春运了 #
  • RT @liut: 小空老师心情不错 RT @aoi_sola: 日本の皆様おはよー。 中国大家早上好。 한국의 여러분, 안녕。 Good morning everyone in the world. // Hi miss空 #
  • http://2011.54chen.com 新版本,专业产品设计,纪念领证、买房。准备厚着脸皮把twitter上认识的众大侠博客友情链接全交换一遍。以#2011为记。 #
  • RT @laogao: RT @hoorace: RT @jeffz_cn: 老公不是盛大男,便称美女也枉然。//帅哥不娶阿里妹,终生吃苦又受罪。//横批:男大当婚 女大当嫁 #

Sphinx安装配置手记(中文分词54chen支持版)

介绍

Sphinx[英] [sfɪŋks] [美] [sfɪŋks]

出自俄罗斯的开源全文搜索引擎软件Sphinx,单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Coreseek是一款基于Sphinx的开源检索引擎,支持Tb级的全文数据索引,专门为中文用户提供免费开源的中文全文检索系统。

下载

wget http://www.coreseek.cn/uploads/csft/3.2/csft-3.2.12.tar.gz
wget http://www.coreseek.cn/uploads/csft/3.2/mmseg-3.2.12.tar.gz

解压

tar -zxvf mmseg-3.2.12.tar.gz
tar -zxvf csft-3.2.12.tar.gz

中文依赖下载和安装

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
tar zxvf libiconv-1.13.tar.gz
cd libiconv-1.13/
./configure --with-libiconv-prefix
make
make install

建立系统动态链接

在/etc/ld.so.conf中加一行/usr/local/lib,运行ldconfig。 ld.so.conf和ldconfig是维护系统动态链接库的。真不明白为什么iconv库安装时不把这一步也做了

安装mmseg分词

cd mmseg-3.2.12
yum -y install glibc-common libtool autoconf automake mysql-devel expat-devel
aclocal
libtoolize –force
automake –add-missing
autoconf
autoheader
./configure –prefix=/usr/local/mmseg3
make
make install
cp -f src/*/*.h /usr/local/mmseg3/include/mmseg/

安装sphinx

cd ..
cd csft-3.2.12
aclocal
libtoolize –force
automake –add-missing
autoconf
autoheader
perl -pi -e ’s/lpthread/lpthread -liconv/g’ src/Makefile*
./configure –prefix=/usr/local/coreseek –enable-id64 –without-python –with-mysql –with-mmseg –with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ –with-mmseg-libs=/usr/local/mmseg3/lib/
perl -pi -e ’s/lpthread/lpthread -liconv/g’ src/Makefile*
make
make install
cd /usr/local/coreseek/etc/
cp sphinx.conf.dist csft.conf

修改配置中文支持

vim csft.conf

找到charset_type行,修改为:

charset_dictpath = /usr/local/coreseek/dict/
charset_type = zh_cn.utf-8

生成字典:

cd /root/install/mmseg-3.2.12/data/
/usr/local/mmseg3/bin/mmseg -u unigram.txt
mkdir -p /usr/local/coreseek/dict/
mv unigram.txt.uni /usr/local/coreseek/dict/uni.lib

增加mmseg配置:

vim /usr/local/coreseek/dict/mmseg.ini
mmseg.ini配置:(请将其放置到词典文件uni.lib所在的目录,并在文件结尾空两行)

[mmseg]
merge_number_and_ascii=0; ;合并英文和数字 abc123/x
number_and_ascii_joint=-; ;定义可以连接英文和数字的字符
compress_space=1; ;暂不支持
seperate_number_ascii=0; ;就是将字母和数字打散

索引 touch /data/exceptions.txt
bin/indexer –all

搜中文 bin/search 我爱北京天安门

54chen Twitter Memo 2010-07-25

  • 54chen Twitter memo 2010-07-18 http://goo.gl/fb/UQbwr #
  • 由php的call_user_func传reference引发的思考 http://goo.gl/fb/2YN7U #
  • 中国的互联网是人为割裂的。它既存在于精英的Think笔记本上,也存在于草根的MTK山寨机中。from 北风 #
  • 长焦拍不认识的,定焦拍认识的 #
  • http://house.baidu.com/ #
  • 今天的糯米网10000张电影票,一开始上班就over了,北京看电影的人这么多。。。 #
  • @162cm 哥看到凤姐了? in reply to 162cm #
  • 在eclipse下老是用不了fcitx,原来是eclipse的contrl+space和fcitx冲突了,还以为是老早以前的jdk的中文bug。。。干掉eclipse的热键后,灰常好用 #
  • 明天下班出发去山东济宁,看房、交钱。顺便离开京城逛一圈。 #
  • 老大讲座,气场灰场足,主题是,网聚人的智慧,SNS发展及互联网人口。这里现场不完全间断直播。#renren# #
  • 直播开始:人人网技术产品总监黄晶从SNS历史开始介绍#renren #
  • facebook每月活跃用户5亿#renren #
  • sns将成为互联网下一代入口#renren #
  • 传说google内部有一秘密sns产品#renren #
  • @Missiu 设置ip 直接https 我一直用 in reply to Missiu #
  • facebook在全球各处战胜其他sns的一张表#renren #
  • 在美国,facebook和在阿根廷的年龄分布#renren #
  • Qzone如果没有QQ的支持,要成功也是很困难的#renren #
  • @turingbook 什么叫做“冰火两重天”? in reply to turingbook #
  • 现在进入校内网的发展历史#renren #
  • 王兴在创业之前做过一个叫做“多多友”的SNS#renren #
  • "多多友"最后成了一个恋足僻的聚焦地 #renren #
  • 人人网在网吧调查过程#renren #
  • 很重要的一点,最早从学校出发,集中火力,战胜其他SNS的原因之一 #renren #
  • 集中火力后效果非常好#renren #
  • 有点像饥饿营销的原理 #renren #
  • 06年4月,5Q校园网12月完成合并 #
  • 王兴用linux给VC讲ppt时接不上投影#renren #
  • 中国最大的SNS 06年:30万日活跃用户#renren #
  • 做SNS 没过过春节。。。#renren #
  • @turingbook renren表示情绪稳定 in reply to turingbook #
  • 2008 人人网开放平台 #renren #
  • 中国社区化网络app的生态圈#renren #
  • 2009 开心农场现象 #renren #
  • 2009 更名人人:从七千万到3.38亿 #
  • 2010 竞争压力 保持坚挺增长 #renren #
  • 网民4.2亿,普及率31.8%,手机网民2.77亿#renren #
  • 手机网民:学生、民工、军人 #
  • 每周上网市场人均增加2小时以上#renren #
  • 引爆流行三法则 附着力法则 关键人物法则 环境威力法则#renren #