作者归档:莫飞

关于莫飞

总有那么一件事值得你去坚持!一个有理想的人,这辈子未必会实现理想,但是他在追求理想的路上遇到的风景,这是没有理想的人到死也不曾有过的!

centos coreseek4.1安装和配置

概念

1. sphinx是国外的一款搜索软件,一款基于SQL的高性能全文检索引擎
2. coreseek是在sphinx的基础上,增加了中文分词功能,增加对中文的支持。4.1版本是2011年发布的,它是基于Sphinx2.0.2的。
  1. 安装依赖
yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
  1. 下载coreseek-4.1-beta.tar.gz
链接: https://pan.baidu.com/s/1RA8_p_SiE5LCyG26Mw0ODg 提取码: 7cdw
  1. 首先安装mmseg中文分词
tar zxvf coreseek-4.1-beta.tar.gz
cd coreseek-4.1-beta/mmseg-3.2.14/
./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/usr/local/mmseg
make && make install
---------------------------------------

#编译时可能会报错config.status: error: cannot find input file: src/Makefile.in
yum -y install libtool
automake
#如果automake报错 原因可能是下列
Libtool library used but `LIBTOOL' is undefined
The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL'
to `configure.ac' and run `aclocal' and `autoconf' again.
If `AC_PROG_LIBTOOL' is in `configure.ac', make sure
its definition is in aclocal's search path.

configure命令执行之前,执行

aclocal  
libtoolize --force  
automake --add-missing  
autoconf  
autoheader  
make clean  
执行完之后,从新执行configure命令
./configure --prefix=/usr/local/mmseg
  1. 安装coreseek
cd csft-4.1/
./buildconf.sh
./configure --prefix=/usr/local/coreseek --with-mysql=mysql安装目录 --with-mmseg=/usr/local/mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/

#遇到的问题:  
at  -L/usr/local/lib -lrt  -lpthread
修改MakeFile文件和src/MakeFile文件
vim Makefile
LIBS = -lm -lexpat -L/usr/local/lib
改成
LIBS = -lm -lexpat -liconv -L/usr/local/lib
# configure 之后修改

问题:执行 buildconf.sh 报错,无法生成configure文件

# csft-4.1/buildconf.sh 文件中,查找
&& aclocal \
后加上
&& automake --add-missing \
# csft-4.1/configure.ac 文件中,查找
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
改成
AM_INIT_AUTOMAKE([-Wall foreign])
查找:AC_PROG_RANLIB 
后面加上:AM_PROG_AR
#最后,在 csft-4.1/src/sphinxexpr.cpp 文件中, 替换所有
T val = ExprEval ( this->m_pArg, tMatch );
改为
T val = this->ExprEval ( this->m_pArg, tMatch );

小技巧:末行模式下输入“:1,$s/T val = ExprEval ( this->m_pArg, tMatch )/T val = this->ExprEval ( this->m_pArg, tMatch )/g”从第一行开始替换到最后一行

  1. 修改配置csft.conf,增加对中文支持
打开csft.conf
index test1 段下面,增加
charset_type = zh_cn.utf-8
charset_dictpath =/usr/local/mmseg/etc/
  1. 测试
cd /usr/local/coreseek/bin
./indexer --all
./search 四十
  1. coreseek的bin目录
1. /usr/local/coreseek/bin/indexer #indexer文件,用于建立/更新/合并数据源的索引
# 例子
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all #csft.conf配置文件中配置的所有数据源建立索引
2. /usr/local/coreseek/bin/search # search文件,用于测试数据源的搜索
# 例子
/usr/local/coreseek/bin/search -c etc/csft.conf 网友 #测试csft.conf配置文件中配置的数据源是否有“网友”这个内容
3. /usr/local/coreseek/bin/searchd # searchd文件,负责接受查询、处理查询和返回数据集的服务
# 例子
/usr/local/coreseek/bin/searchd -c etc/csft.conf 通过csft.confsearchd配置开启负责接受查询、处理查询和返回数据集的服务

参考地址:

1. https://yq.aliyun.com/articles/529853?spm=5176.10695662.1996646101.searchclickresult.310d2d65t0zsnK
2. https://www.cnblogs.com/GaZeon/p/5327578.html

mac通过HomeBrew安装qt5.11.1

HomeBrew 不支持 iOS/Android

go的版本为go1.9.7,低版本1.8,缺少math/bits包

1. 安装HomeBrew 和 qt

# 先安装 HomeBrew,并且 export QT_HOMEBREW=true
brew install qt5 //安装 Qt 

2. 设置环境变量

找到qt的安装目录,默认在 /usr/local/Cellar/qt/5.11.1
设置环境变量: QT_DIR = /usr/local/Cellar/qt/5.11.1

3. 克隆qt

go get -u -v github.com/therecipe/qt/cmd/...

 

4. 安装qtsetup、qtdeploy、qtminimal、 qtmoc、 qtrcc,安装前查看echo $GOBIN目录。默认安装在此目录。

1. github.com/therecipe/qt/cmd 执行安装命令
go install -x qtsetup/main.go //安装qt的各种包
go install -x qtdeploy/main.go // 发布qt的程序
go install -x qtminimal/main.go // 减少编译文件大小
go install -x qtmoc/main.go //Qt的moc包。
go install -x qtrcc/main.go //Qt的rcc包。

 

具体工具的使用教程: https://github.com/therecipe/qt/wiki/Available-Tools

5. 测试

#获取测试代码
go get -d -v github.com/therecipe/examples/...
cd $GOPATH/src/github.com/therecipe/examples
qtdeploy test desktop ./basic/widgets //执行

测试相关的教程:https://github.com/therecipe/qt/wiki/Getting-Started

效果如下:
6. 测试感想

测试了几个案例,编译的过程有点慢。可能是文件太多了,调用的东西也多。

需要点C++的基础,可能上手更快。

 

PHP过滤掉非utf8字符

开发生成XML的时候,发现里面有一些特殊字符,比如  ,在网上找到好多的过滤utf8的方法,都没有成功。只能靠自己来实现 PHP过滤非UTF8字符。

一、思想

1、先将utf8的字符替换为英文逗号。

2、通过英文逗号分隔为数组。

3、过滤出来特殊字符。

4、str_replace 查找替换特殊字符。

继续阅读

使用XHProf进行线上PHP性能追踪及分析

今天介绍下大家并不陌生的XHProf。它是Facebook开发的用来分析线上PHP性能的工具。相比较于Xdebug,占用内存和性能更低。

1.XHProf安装


# wget http://pecl.php.net/get/xhprof-0.9.4.tgz
# tar zxvf xhprof-0.9.4.tgz
# cd xhprof-0.9.4/extension/
# phpize //结合自己的环境确认phpize的目录
# ./configure --with-php-config=/usr/local/php/bin/php-config //结合自己的环境确认phpize的目录
# make
# make install

安装完成后,在php.ini中添加 extension=xhprof.so。

重启下web应用服务器。

继续阅读

使用Anemometer基于pt-query-digest将MySQL慢查询日志可视化

MySQL慢查询日志分析工具不少,比如:

1、mysqldumpslow,MySQL官方提供。

2、mysqlsla,hackmysql.com推出的一款日志分析工具。功能非常强大,数据报表,非常有利于慢查询分析,包括执行频率、数据量和查询消耗等。

虽然都可以满足日常的使用,但是不够直观,并且无法方便开发人员进一步完善SQL语句。

pt-query-digest

是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

Anemometer

将MySQL慢查询log可视化。

MySQL开启慢查询日志

不同的版本,MySQL开启慢查询日志方式有点不同。可以通过


#show variables like '%slow%'

命令查看都需要配置哪些参数。以5.6版本为例,修改my.cnf的数据库配置文件


slow_query_log = ON
slow_launch_time = 2
slow_query_log_file = /自定义日志目录/mysql-slow.log
log_queries_not_using_indexes = 1 //没有使用到索引的查询也将被记录在日志中

继续阅读

GDB调试C语言的常用命令

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,Linux开发人员必备的技能之一。长时间不使用命令很容易忘记,做下记录。

GDB功能

1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3、当程序被停住时,可以检查此时你的程序中所发生的事。
4、动态的改变你程序的执行环境。

GDB的启动

将调试信息加入到可执行文件中。使用-g命令可以实现。如下:

 

#gcc -g pointer.c -o pointer.out

如果没有-g,将看不见程序的函数名和变量名,代替它们的全是运行时的内存地址。当用-g把调试信息加入,并成功编译目标代码以后,看看如何用gdb来调试。

继续阅读