Category Archives

146 Articles

Coreseek4.x/5.x编译和一些注意事项

0   10945 转为繁体

使用ubuntu/debian系统32位的可以在这里下载我编译好的coreseek5/csft包

对于>2.2.10的版本,我在这篇博客里提供了完整的补丁,可以应用在sphinx的源码上编译。

编译mmseg

 编译coreseek5

自动脚本有一些bug :

  • 手动运行一次autoconf和automake
  • ./configure xxxx之后,修改src/Makefile在LIBS加上-L/usr/local/mmseg3/lib  -lmmseg
  • am__object_1 增加 tokenizer_zhcn.$(OBJEXT)
  • SRC_SPHINX增加tokenizer_zhcn.cpp
  • gcc 5.不知道多少版本以后会脑残,sphinx.cpp里有个地方要加上this->,忘记具体变量了,没关系gcc会告诉你在哪的

 

如果用4.1的话不能用最新版的sphinxclient,可以去sphinx_php_api的trunk里找define ( “VER_COMMAND_SEARCH”, 0x117 );的版本(0x117 ->1.23)

 

最后贴一个图来表达对xunsearch的…………

又慢(搜索比sphinx慢5~10倍,索引体积比原始数据大7倍,比sphinx大21倍),结果又少(mysql模糊搜索≈coreseek搜索≈740+,这货只有114,$search->count获得的精确值是286条)

另外ini文件名和里面填的project_name不一致会神作

告诉我是我打开方式不对

Memcached扩展的一些坑及强迫症专用PV统计的实现

0   43161 转为繁体

以下针对PHP的Memcached扩展

  • increment/decrement/touch方法必须使用binary protocol($_mc->setOption(Memcached::OPT_BINARY_PROTOCOL,true)),且连续执行两个请求必须先关闭之前的才可以
  • $expiry参数可以是UNIX 时间戳也可以是当前秒数,秒数大于30天会被认为是时间戳,要设置用不超时可以设为0
  • 启用binary protocol后increment/decrement的返回值可能类似1 15415 a2d1,←注意是类似这样的,没关系加个intval就行了
  • 看php.org文档的时候下面的用户留言比上面的有用得多

强迫症专用PV统计

强迫症认为PV统计漏掉一个IP就会浑身难受

在需要统计的页面的PHP中嵌入一下代码

每个ip一小时内访问相同页面只计一次;注意要先touch再increment,因为increment并不会增加超时时间,如果增加了还没被读就超时就杯具了;反之如果key不存在touch一下也不会怀孕;每当一个新用户访问,增加生命值10min

cron定时入库

 

注意这里不能用delete,因为delete可能会使数据丢失,但是decrement就没关系了

awk(又是awk)高亮显示nginx日志

7   12457 转为繁体

请叫我awk小(nao)王(can)子(fen)

效果

awk分析日志统计当日热门页面

0   25719 转为繁体

不想写python,而且我比较相信awk+uniq+sort的速度

  •  cron的时区很奇怪,不会调,系统时间是+8,tail /var/log/syslog之后发现是西五区,手动+13小时 可以通过修改localtime,修改完之后重启service cron(还是重启系统好了)参阅
  • 第一步取出所有日期是今天且响应是200的请求,打印请求ip和请求uri
  • 第二、三步对(ip uri)排序,去重,单个ip访问单个页面只会被记为一次
  • 打印uri,去重,排序,显示前50个

 

time计时

52M日志,26w条

134M日志,加上了两个自定义条件,65w条

小站可以考虑

在某网站中使用的字幕文件名猜测视频文件名的算法

2   71296 转为繁体

觉得有点意思,拿出来和大家一起研究下,欢迎提供更好的建议。

因为爬x手的时候,网页已经没了,只能自食其力;用unrar(rarlab上下的,apt-get里的太古老)获得rar内的文件名,用zipfile模块列zip包的,抓的时候直接把返回的内容插到数据库了,没分析,因为没那么多时间去想算法,还是先把dirty data撸下来再说。

然后开始正文了www

按照这么一个基本思想,字幕文件名除了扩展名以外,其余部分和视频文件是一样的。如果压缩包里面只有一个文件,那么直接就是它去掉扩展名就好了;但是如果有多个版本的字幕(比如eng,GB,BIG5等),那就需要一个字符串最大匹配的算法。←为了装B取的名字
Read More

优酷超清视频(kux)压制mkv脚本

0   7170 转为繁体

优酷客户端下载的[超清]清晰度视频会被保存为kux格式。其实这个格式就是一堆分段的flv。

头上应该还有索引之类的,懒得分析了其实是分析不出来

因为木有索引,我们只能自己判断flv段何时开始,何时结束;因为flv文件头特征不明显其实是想装b,我们需要分析flv的格式。

在参考这篇博客之后,写了个脚本

拖出了所有flv之后,我们用mkvmerge来合体

完整脚本在gist上可以找到

 

解包之后很有快感啊