下载代码并构建jar包。 git clone https://github.com/medcl/elasticsearch-analysis-ik cd elasticsearch-analysis-ik mvn package 复制到es目录里 mkdir -p ~/elasticsearch-2.3.3/plugins/ik unzip target/releases/elasticsearch-analysis-ik-1.9.3.zip -d ~/elasticsearch-2.3.3/plugins/ik/ 启动elasticsearch, 然后发现不能用root启动,只好换用户重新设置。。 默认es监听的127.0.0.1.修改config/elasticsearch.yml network.host: 0.0.0.0 我这是在虚拟机里改的。 测试中文分词 参考github上的提示执行了玩了一下。 我只能说目前比sphinx简单多了。
Archive for 常用工具
Elasticsearch安装
之前用过sphinx,不选择sphinx的原因是用过,配置过太麻烦了,增量也不友好。之前用的场景也简单,对种子title和内容的检索。
现在决定用个别的试试学习一下,大体查了一下资料elasticsearch安装配置简单,需要安装java,提供http api调用。语言不是问题。
不用solr的原因是不走大流,没意思 哈哈,es的高端用户也挺多。
1 去Elasticsearch官网下载个包,解压。
2 执行./bin/elasticsearch启动,-d参数可以daemon启动
3 执行curl -X GET http://localhost:9200/
{
"name" : "Vance Astrovik",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.3",
"build_hash" : "218bdf10790eef486ff2c41a3df5cfa32dadcfde",
"build_timestamp" : "2016-05-17T15:40:04Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
Read more...
坑爹的jenkins已经不知道踩了多少坑
jenkins有好的方面,只有一个war包,目录基本兼容版本,迁移方便,可以在不同机器上编译。
今天打的包突然说代码没上去,然后查发现真没上去,啥都没改就出问题了。看jenkins打包日志没报错,checkout的分支也是对的。然后查workspace,svn log命令还执行不了,说版本不一致的啥问题,之前从一台机器迁移到另一台机器,两台机器的版本不一样就折腾了好久。但是也没再动,然后执行svn upgrade可以看log,一看没有新代码版本。卧槽急了一身汗,办公室也热。
然后跟同事一起分析,然后又看了一遍jenkins打包日志,在checkout代码完了之后,发现有个警告。。
Read more...
WARNING: clock of the subversion server appears to be out of sync. This can result in inconsistent check out behavior. 同步了一下服务器时间就好了。网上说 在jenkins job的 svn地址后边加个 @HEAD 也行。 之后的项目等加上@head
vim清除搜索历史
清除vim搜索历史
:call histdel('/')
寄存器文档 :help registers ,少输入了一个然后文档没查到。用google直接搜文档找到了,,
Read more...
Spark入门学习(一) 分析nginx log文件
Spark也是一个集群计算系统,提供Python,Java,Scala,R语言的高级API进行数据操作。Spark有各种优点,请自行搜索。
一、下载安装spark
下载编译好的二进制版本,目前还用不到hadoop选择第一个安装。
wget http://mirrors.cnnic.cn/apache/spark/spark-1.5.2/spark-1.5.2-bin-hadoop2.6.tgz
解压
tar zxvf spark-1.5.2-bin-hadoop2.6.tgz
使用默认参数进入python交互模式。启动参数可以指定Spark集群的地址,处理的线程数等值。
park-1.5.2-bin-hadoop2.6/bin/pyspark
交互模式下,Spark会默认给你启动一个SparkContext,名字为sc。你可以执行以下命令查看版本和应用名字。
>>> sc.version
u'1.5.2'
>>> sc.appName
u'PySparkShell'
二、分析nginx log文件
在交互模式下输入,创建一个RDD,textFile会按行读入一个文件,这种方式读入的文件,不会随文件的更新数据进行更新。
第二篇将进行脚本的编写和使用Stream进行实时数据的统计。
>>>log=sc.textFile('./app_access.log')
查看文档有多少行,对应nginx收到多少请求。count是一个action,返回值。
>>> log.count()
2186762
返回文档第一行
>>> log.first()
u'117.136.40.185 [11/Nov/2015:06:25:52 +0800] "POST /zmw/v2/favorite_status HTTP/1.1" 200 0.013 61 "-" "%E6%B2%B3%E7%8B%B8%E5%AE%B6/2891 CFNetwork/758.1.6 Darwin/15.0.0" "-" 0.013 Upstream:"10.0.10.135:8700"'
查看IP为"117.136.40.185"的访问次数。filter是一个transformations,返回一个新的RDD,然后对这个新的rdd进行count求值
>>> log.filter(lambda line: "117.136.40.185" == line.split()[0]).count()
637
可以使用cache操作将经常使用RDD尽可能的存放在内存中,加快计算速度。
>>> log.cache()
统计每个ip的访问次数,还可以统计每个url的访问次数,HTTP status code分别的访问次数等相关类似统计
>>> ips = log.map(lambda line: (line.split()[0], 1)).reduceByKey(lambda a, b: a + b)
>>> ips
PythonRDD[16] at RDD at PythonRDD.scala:43
>>> ips.collect()
验证之前统计过的,数据是否一致
>>> b=ips.filter(lambda a: a[0]=="117.136.40.185")
>>> b.collect()
[(u'117.136.40.185', 637)]
三、监控
可以从WEB访问,查看job执行情况和统计数据
http://172.16.117.0:4040/jobs/
Read more...
svn添加忽略提交文件ignore
查了两三遍了,整理一下记录着。svn好像不能统一记录,因为有的文件夹不一样,不能统一写匹配模式。现在只是每个文件夹添加
设置使用的编辑器:
export SVN_EDITOR=/usr/bin/vim
忽略的文件必须不在版本控制里,add上的还要reset掉才行
svn propedit svn:ignore 文件夹名
svn propget svn:ignore .
Read more...
mac系统下让firefox页面a标签等获取tab焦点
之前就发现mac下没这功能,一直没找问题,现在面板用起来不方便。找了一下解决问题。
方法:
进入about:config
右键新建整数键
Read more...
accessibility.tabfocus,输入值7.然后就行了
不知道为什么只有mac下没有这个功能。
1是文本编辑框
2是除了文本编辑框其他的表单
3是a标签和img标签
其他是上边几个功能的组合之和
git版本控制里的全局设置global
设置全局的用户名邮箱
$ git config --global user.name 0x55aa
$ git config --global user.email admin@google.com
设置全局的.gitignore
git config --global core.excludesfile ~/.gitignore
设置全局的命令别名
git config --global alias.st status
这个命令确实好用啊,用hg用的一直输入st, 现在又换成git不适应了,总要输错一次。mercurial和git,svn做简单版本控制还是都不错的
其实这些设置都是更改了~/.gitconfig文件。可以参考文档http://git-scm.com/docs/git-config.html
Read more...
一个java class文件反编译工具jd jui
一个很方便的java class文件反编译工具,支持mac linux windows,使用也很方便,可以直接打开一个jar文件,然后就可以浏览代码了0 0.
下载地址:http://jd.benow.ca/
Read more...
mutt配置邮件客户端
还是在邮件列表里学到的,今天折腾了一下,好在找到一片不错的文章照着配置了一下。
http://home.ustc.edu.cn/~lixuebai/GNU/MuttConfig.html
我用的组合也是mutt+msmtp+getmail+procmail,显示html邮件用的w3m。
安装都是apt-get安装,开始我用源码安装,进去界面都是乱码的也没找原因,直接删掉重新安装了一下。
创建了~/mail目录,下面inbox,postponed,sent,配置文件没有就创建。
复制一下配置文件
~/.muttrc
Read more...
#编辑器
set editor="vim"
#邮件发送
set sendmail="/usr/bin/msmtp"
#信箱
set folder="~/mail"
set mbox="~/mail/inbox"
set spoolfile="~/mail/postponed"
set record="~/mail/send"
# 让mutt监视下面几个邮箱,并随时报告新邮件
mailboxes "=inbox"
mailboxes "=Gmail"
#指定你有那些信箱文件。当你按 "c" 切换信箱时,再按 Tab 键,这些信箱就可供你选择
mailboxes Mailbox sent-mail
#显示html
auto_view text/html
set check_new = yes
set timeout = 600
#这是一个格式字符串,用来控制你的index的列表显示。它的缺省定义是
set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"
#这是一个 bool 型变量。它表明你在回信时引用原文是否加入原文的邮件头。
set header=no
#可以设置为 yes, no, ask-yes, 或者 ask-no. 这是说,当你按q退出时,是否提示你(ask-yes,ask-no),
#还是直接就退出了(yes),还是根本不理你(no)。
set quit=ask-yes
#这也是一个提示性变量。它是确定当你退出时,是否提示你把信件从 spool 移动到的 mbox 文件。
set move=no
#当 Mutt 用 thread 方式显示时,是否用纯 ascii 表示树状列表。
set ascii_chars=yes
#回信时是否包含原文。
set include
#回信的引文之前插入那个符号?
set indent_str="> "
#设置你自己的邮件头。
#my_hdr From: xxx@mail.ustc.edu.cn
#打分
#新信件+4分,主题包含“通知”的+2,主题包含 “Circulation” +3, 已经标记删除的 -5,上次没有读的 +1,包含 “believe”的 -10(垃圾广告!)。
score "~N" +4
#score "~s 通知" +2
#score "~s Circulation" +3
score "~D" -5
score "~O" +3
#score "~s believe" -10
#排序方式。
set sort=score
#当用 thread 排序方式时,我们对各个 thread 的相对排序顺序。
set sort_aux=date
#如果翻到最后,再按往下翻也不会翻到下一封信件
set pager_stop
#如果设置,当你按 "r" 回信时,就不会再提示你输入回信地址和主题,直接进入编辑模式。
set fast_reply
#当你按 "t" 或者 "D" 之类的标记操作时,是否自动把光标移动到下一封信件。
set resolve=yes
#地址簿
#source ~/.mutt.alias
#当你在 index 里按 "a" 为来信者取别名时,使用哪一个别名文件保存这个别名。
#set alias_file=~/.mutt.alias
#你发出的邮件保存到那个信箱文件?比如可以像我这样每个月发出的信件放在不同的文件里。
set record="~/mail/=sent-mail-`date +%Y-%m`"
#你的终端支持哪一种编码的显示?这个必须和你的终端编码一样。推荐用utf8
set charset="utf-8"
#send_charset
set send_charset="utf-8"
#外部程序退出时,是否要求用户按一个键才返回。这在察看某些shell命令输出时是比要的,
#否则它们一下就消失了。
set wait_key=yes
#当你要把信件存到另一个信箱,而这个信箱已经存在时,是否提示附加?
set noconfirmappend
#是否把邮件头也放在编辑器里可以修改?
set edit_headers=no
#当你在用 pager 看信件时,在 index 留出多少行显示邮件列表?
set pager_index_lines=4
#告诉 Mutt 你已经订阅了那些邮件列表(mailing-list).
#subscribe fvwm@fvwm.org
#mutt显示日期为中文
set locale="zh_CN"
#有些没有设置字符编码时
#charset-hook ^us-ascii$ utf-8
#Chinaren 等服务器发出来的信件使用了 quoted-printable 的 subject,
#而且设置编码为 "iso8859-1",这显然是错误的。
#对付这个错误的办法是把 iso-8859-1 变成 gb2312 的别名
#charset-hook ^iso-8859-1$ gb2312
# evolution 发过来的 subject 为 utf-8 编码的邮件标题乱码!
#那就把不是 utf-8 的编码都映射到 gb2312
#charset-hook !utf-8 gb2312
charset-hook ^gb2312$ gb18030
# mutt进行pop3收信,当然之前要查看$ mutt -v 编辑情况的确编辑了pop3了。
# 以后进入mutt按G就可以收信了。
#set pop_user=xxx@mail.ustc.edu.cn
#set pop_pass="xxxxxx"
#set pop_host=202.38.64.8
#现在不用mutt直接收信了。
#把mutt发送的from域作为sendmail发送邮件的sender(否则会用user@localdomian)
set envelope_from=yes
macro index G "!getmail\n" "Invoke getmail"
macro pager G "!getmail\n" "Invoke getmail"
~/.mailcap
text/html; w3m -o document_charse=%{charset} %s; nametemplate=%s.html text/html; w3m -dump -o document_charse=%{charset} %s; nametemplate=%s.html; copiousoutput~/.msmtprc
account default host smtp.gmail.com port 587 tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt from your@gmail.com auth on user your@gmail.com password pass logfile ~/.getmail/msmtp.log
chmod 600 .msmtprc~/.getmail/getmailrc
[options] verbose = 1 read_all = false message_log = ~/.getmail/log [retriever] type = SimplePOP3SSLRetriever server = pop.gmail.com username = shanqiuchant@gmail.com port = 995 password = 370asd285jp##%%** [destination] type = MDA_external path = /usr/bin/procmail unixfrom = true使用crontab定时自动收信
$ crontab -e每隔10分钟收一次信,只收未读的信件。
0,10,20,30,40,50 * * * * getmail -n~/.procmailrc
PATH=/bin:/sbin:/usr/bin:/usr/sbin SHELL=/bin/bash MAILDIR=$HOME/mail DEFAULT=$MAILDIR/inbox LOGFILE=$MAILDIR/.procmaillog :0 * ^From.*@gmail.com Gmail :0 #最后的这个配置就是指如果上面分类剩下的信件全扔到inbox里 * .* inbox # 黑名单(垃圾邮件) :0: * ^From.*badguy /dev/null可以用msmtp anoth_email@gmail.com 这里随便输入一些内容,然后按下Ctrl-d组合键来结束,来测试是否能发送成功。 照着配置了一下还没使用,要使用还需要很多人性化的设置。