Rails Elasticsearch 转义 最终解决方案 / Rails Elasticsearch Escape Final Solution

遇到的问题

最近在做公司关于搜索这一快, 是基于Elasticsearch来做的.然而使用过程中发现了问题.query的时候转义有很大问题, 专门去查了官方文档得出:

1
2
3
4
5
If you need to use any of the characters which function as operators in your query itself (and not as operators), then you should escape them with a leading backslash. For instance, to search for (1+1)=2, you would need to write your query as \(1\+1\)\=2.

The reserved characters are: + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /

Failing to escape these special characters correctly could lead to a syntax error which prevents your query from running.

官方也给出了一个解决方式是Regexp.escape(str) 试用之后还是会有不同情况的报错. 比如

1
str = '(圣彼得堡=)大/教堂'

这种就比较无语. 因为 () / \都是需要转义的. 然而在stackoverflow找到了一个完美的解决方式.

解决

原帖地址

下面这一段代码是基于原版修改的. 原版发布的时候 / 还不是特殊字符 所以我加了最后一句.

然后原版的代码过不了rubocop的代码检查.. 以下的代码是修正过的=-= 欢迎享用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def sanitize_string_for_elasticsearch_string_query(str)
# find in http://stackoverflow.com/questions/16205341/symbols-in-query-string-for-elasticsearch
# Escape special characters
escaped_characters = Regexp.escape('\\+-&|!(){}[]^~*?:')
str = str.gsub(/([#{escaped_characters}])/, '\\\\\1')

# AND, OR and NOT are used by lucene as logical operators. We need
# to escape them
['AND', 'OR', 'NOT'].each do |word|
escaped_word = word.split('').map { |char| "\\#{char}" }.join('')
str = str.gsub(/\s*\b(#{word.upcase})\b\s*/, " #{escaped_word} ")
end

# Escape odd quotes
quote_count = str.count '"'
str = str.gsub(/(.*)"(.*)/, '\1\"\3') unless quote_count.even?
str = str.gsub('/', '\/')
str
end

这一段代码是基于原版修改的. 原版发布的时候 / 还不是特殊字符 所以我加了最后一句.

然后原版的代码过不了rubocop的代码检查.. 以上的代码是修正过的=-= 欢迎享用

git批量删除分支

问题发现

在公司写了好多个feature的代码, 上传到gitlab的时候 远程merge request的时候可以直接把远程分支删除, 但是本地需要手动一个一个删. 就找到这个方案删除.

删除本地分支

以删除所有名称包含“feature/”字段的本地分支 为例子:

对应的命令:

$ git branch -r| grep 'feature/4.0-' |xargs git branch -d

删除远程分支

以 删除所有名称包含“develop”字段的远程分支 为例子:

直接上命令:

$ git branch -r| awk -F '[/]' '/develop/ {printf "%s/%s\n",$2,$3}' |xargs -i{} git push gitlab :{}

以 删除所有名称包含“develop/6.0”字段的远程分支 为例子:

直接上命令:

git branch -r| awk -F '[/]' '/develop\/6.0/ {printf"%s/%s\n",$2,$3}' |xargs -i{} git push gitlab :{}

Nice男团 剧本

Nice男团 剧本

设想

大海非诚勿扰片段

人物设定

  • 付强 主持人
  • 高老师 第一场演 穿裙子的李恺 第二场演 被牵手的女生
  • 小黄 大海
  • 许曦 哈日哈韩的小女孩 喜欢cosplay
  • 雯聪 高收入的白领
  • 张斐 以下内容不是我想的 是小鑫 角色设定 , 淫荡 放荡 风骚
  • 王劲 高冷只等一人(你恺)
  • 小鑫(德鲁伊) 屌丝程序员
  • devin 歪果仁女孩 妩媚

具体实施

第一幕

女嘉宾登场

首先主持人请女嘉宾登场,每个人5秒钟亮相.(音乐)
女嘉宾自我介绍: 每个人10-15秒钟
介绍完之后 有请男嘉宾登场

第一场

主持人介绍德鲁伊登场(音乐)
德鲁伊:大家好,主持人好,各位女嘉宾好,我姓德,名鲁伊,德鲁伊.我是一名程序员.我最大的爱好是打魔兽,希望我的另一半也可以陪我一起打魔兽.(全场灭灯,只有许曦留灯)
主持人:许曦,现在场上只剩下你留灯了,你有什么话要问男嘉宾么
许曦:主持人,我之所以留灯,是因为我有一个问题想问男嘉宾
主持人:你问吧
许曦:当你玩游戏的时候我把网线掐了, 我是不是在找死.
德鲁伊: 你不是作死 你就是直接找死.
许曦也灭灯. 下一轮
德鲁伊:含泪走去… 我还是回家继续撸啊撸吧, 晋级赛二胜二负.德玛西亚!(下场音乐)

第二场

主持人介绍高老师登场(穿着粉色裙子,上面贴着名牌李恺)(音乐)
高老师自我介绍:hello~大家好,主持人好,各位女嘉宾好.我是李恺,今天我只为我心中的那个她儿来.
主持人:哎呦,看来今天你是有目的而来呀.来快说说你是为哪位女生而来的呢
高老师:王劲,你默默的站在那里一声不响,然而我就是要带走你的,因为你是我的命中注定.(走上前去牵王劲)
主持人:哎,你等等,人家女生还没有说同不同意呢.
王劲:羞答答的点点头
主持人:这是有备而来呀.好,让我们一起祝福一对有情人能白头到老.(音乐起高老师王劲退场)有请下一位男嘉宾(恭喜这一对的 音乐)

第三场

选一个心动女生 –
小黄自我介绍:hello~大家好,我是吴大亨,今年26岁来自希腊,现在在北京,各位女嘉宾好,杠铃老师好.我是一名旅行定制师, 我要带着我心爱的那个她,环游世界.我这里一份礼物送给杠铃老师.以及各位女嘉宾.

主持人:雯聪,给你的上面写的什么.
雯聪:瑾呈雯聪小姐,毛里求斯欢乐游.毛里求斯,我还挺喜欢的,最近正有想法去玩一下呢.主持人,你的写的什么.
主持人:我这个礼物是瑾呈杠铃先生,这个没有任何问题,关键是,下一句写着,就让我感受孤岛的夜店之美.这,全公司的程序员只有我一个单身非要说出来吗? 真是的.(翻看路书)

  • 全部留灯 没人灭

  • 主持人问: 好 3号女嘉宾张斐提问

  • 张斐: 男嘉宾你好, 请问您的工作是什么? 定制旅行计划是嘛
  • 小黄: 我是为大家指定旅行计划的那种, 就是大家提什么要求, 根据大家的要求来为大家定制一个独一无二的旅行.
  • 张斐: 所以男嘉宾 如果以后要旅行的话 是不是可以找你呀~
  • 小黄: 当然没有问题
  • 张斐: 那你在圣托里尼有几套房 几辆车呢, 有多少存款呢.
  • 小黄: 呵呵 圣托里尼的房子20w就能买一套, 具体多少存款呢….
  • 主持人打断: 不管多少 肯定能养得起你! 你看人家名字 大亨! 肯定能养得起你就是了!(张斐灭灯)
  • devin: 大家好: 我就是付强的大姨妈: 帅哥, 我想跟你结婚, 给你生娃,可以嘛.
  • 小黄:其实,我不找外国女生的原因,就是我想给我麻麻一个中国的儿媳妇.
  • devin: 世界这么大, 能带我去看看嘛?
  • 小黄:您真的非常的貌美,但是我还是比较想考虑找一个大眼睛的中国女孩.(devin灭灯)
  • 主持人:恭喜你,进入男生权利,上去灭掉两盏灯,留下一盏然后回来.
  • 小黄灭掉了小鑫和许曦的灯,只留下高老师的
  • 主持人:下面咱们来揭晓一下大海的心动女生: 正好就是现在场上留灯的.这位!恭喜你们即将获得由无二之旅提供的双人苹果社区一日游!还有黄阿姨独家提供爱心趟圆一份!
    —-大家鼓掌 退场,只留下主持人 男女嘉宾
    -主持人:那么两位现在说一下牵手成功的感受吧!
  • 小黄:妈!我终于可以不用每年春节回家相亲了!
  • 女嘉宾:我跟大家说啊,我早就不想待在这个节目了!这么老远飞上海还只让我们住汉庭!(带上名牌)jinjin我来找你玩啦~
  • 小黄(打电话):妈,下周跟我相亲的妹子电话是多少来着?

道具

  • 灯: 手机的手电筒
  • 音效: 男嘉宾上场.下场
  • 需要照片: 子潇 严女士 李恺 王劲 大海 高老师
  • 想一个头版头条的标题

Learn ruby

开始学习ruby ! Fighting!

##教程参考
RailsGuides

安装ruby

mac下已经默认集成了ruby. 如果需要自己手动安装 去ruby-lang.org下载安装.

检查是否安装成功. 命令行输入

ruby --version

安装rails

sudo gem install rails

如安装成功 输入

rails --version

搭建第一个ruby on rails blog

刚输入的时候就发现了一个坑. 教程里写直接输入rails new blog就行了.
结果运行的时候报错. 需要安装bundle.

sudo bundle install --path vendor/bundle

安装之后才好用.

  • 启动rails 服务器: rails server

rails 程序的视图都存放在 app/views/ 这个目录. 想修改的话直接修改这里面的内容.

修改了里面的welcome/index.html.erb 的文件之后. 保存退出.

设置修改好的主页 在 http://localhost:3000 这里显示. 需要修改config/文件夹中的配置文件.

回到根目录. cd config/ vim routes.rb 把 root 哪一行的注释打开. :wq
就保存退出. 这个时候在启动 rails server magic!

vim 黑魔法

:w | !open http://localhost:3000/articles

  • w 写
  • | 执行下一个命令
  • ! 执行shell命令 open url 直接打开浏览器并刷新

无二之旅-Android 技术栈

Android 技术栈

架构

旅行君/无二之旅 均采用MVC架构

此模式是将应用层中的业务逻辑抽象出来,这在Android中十分重要.因为Android本身的框架将这一层与数据层耦合在了一起,一个明显的例子就是Adapter.也是官方推荐的方式.

开发环境

Library

协作工具

instant Run之后libpng error not a png file最佳解决方案

这个问题困扰了我很久, 我从第一天升级2.0之后就迫不及待的开启instant Run. 结果直接报错.

libpng error not a png file

找了半天 众说纷纭.好多说是图片不是png少了alpha通道. 图片导出来一张张重新保存就好了.

妈个鸡老子将近30张类似的图啊..一张张找累死了..而且我还不想麻烦我们设计..

然后找到了这个:

It’s metadata added by tools like Photoshop that isn’t even honored by Android. Strip it.

brew install exiftool

find . -path '*src/main/res/*' -name '*.png' -exec exiftool -overwrite_original -all= {} \;

两行代码完美解决!

本周放映--The Hateful Eight

本周推荐 The Hateful Eight

本周推荐来源于室友. 偶然提到昆汀大神有新片了准备回国看,因为昆汀的片子在中国基本看不了..然而今天惊喜的发现网上有资源了! 所以本着杠铃影城的宗旨, 只能放弃刘阿姨推荐的东北玩泥巴 哦不对, 印度片. 放映 《八恶人》.

关于昆汀·塔伦蒂诺


昆汀·塔伦蒂诺应该不用过多介绍, 从《低俗小说》开始,到 《杀死比尔》.在到《被解救的姜戈》.说成步步精品也不足为奇.

昆汀·塔伦蒂诺从 1987 年开始拍摄第一部电影,眼看 30 年要过去,这位先生一共执导的作品寥寥可数。本次放映的正好是他的第 8 部作品《八恶人》.

他曾经说,自己只拍 10 部电影就退休,保证自己拍的每部电影都是精品.这话听起来有些耳熟,《这个杀手不太冷》的导演吕克·贝松也曾经说过这句话,不过他现在的作品已经数不清了.

关于电影本身

  • IMDb 8.1
  • 豆瓣 8.5

《八恶人》讲述了美国南北战争数年后,八名身份各异的人阴差阳错地来到怀俄明州的一座山口的马车驿站,等待去往红岩镇. 但却被一场冰雪暴困在了红岩镇……一个房间里面, 八个身份不明的人, 因为一杯有毒的咖啡, 陷入一场争斗中.

当然《八恶人》不会是一部纯粹的西部片. 在一个 8 人齐聚的房间里,每个人都互相不信任,赏金猎人、女囚、黑人, 这当中没有真正的好人和坏人, 每个人都让人憎恨. 昆汀说, 这部电影有点像《落水狗》, 又有点像尤金·奥尼尔的戏剧《送冰人来了》, 不过这一切都是西部风格的.

70mm

《八恶人》将在今年圣诞率先以 70mm 胶片的格式上映,在一月份才会上映数字版本. 70mm 的剧情片非常少, 在过去的很多年中, 只有保罗-托马斯-安德森的《大师》和肯尼思-布拉纳的《哈姆雷特》采用过该格式上映. 所以《八恶人》可能是 20 年来, 以 70mm 格式公映的规模最大的影片.

昆汀曾经公开表示数字电影宣判了电影的死亡,“我他妈真的不明白,为什么一个有基础的电影制作人要选择数字化”. 对于昆汀这样的痞子来说, 一定要时不时做些和好莱坞唯利是图相悖的事情, 可想而知这次采用胶片拍摄, 他内心有多么得意.

所有的美好都与你不期而遇

所有的美好都与你不期而遇

技术

2015对我来说, 是开花结果的一年

GitHub GitLab的数据好像还是那么回事儿.

2015在Android这条路上渐行渐远.从AsyncTask到RxJava, 从Universal-Image-Loader到Fresco, 从偶尔参加小型技术分享活动到Google GDG积极参与组织, 从Android Studio 0.5 到 2.0 . 技术这条路算是越来越顺. 从所谓的高手Android QQ群, 到 小范围的干货分享群, 再到 在小范围的精品技术文章内测群. 近距离的接触了很多圈子里的大牛级人物, 当你跟着几十万粉丝的大牛一起交流探讨的时候, 发现他们也并不是多么遥不可及, 每个人都很优秀, 认识你们倍感荣幸.

工作

天使汇是我来北京的第一家公司. 在天使汇的时候就觉着, 如果几年后在中国财富500强中发现他们的身影我一点都不会奇怪, 每个人都很努力都很优秀.

(上图左一是CEO.A轮融了4000万美刀.数据来自IT桔子)

今年跳了一次槽. 8月份跳到了无二之旅. 真是三生有幸才能和如此多三观相符并且优秀的他们共事.
可能做旅行的公司都这样, 逢年过节公司的人就跟撒网一样. 近一点的日韩新马泰, 远一点的格陵兰夏威夷欧洲. 头一天还在一起工作,第二天就均匀的分布在世界的各个角落.

很喜欢公司的Slogan.

家人

五一假期姐姐外甥带着爸爸去了大连. 爸爸想去大连很多年, 终于如愿.

8月份妈妈姐姐外甥来到了北京. 脱离了旅行团逆着人流顶雨爬长城. 结果上去的时候雨停了. 整个长城上面不超过20个人. 外甥因为跑太快被姐姐训斥. 委屈的拍下了这张难得的照片.

家里在县城买了一个新楼. 70多平两室一厅. 给家里打电话妈妈说, 儿子你过年回家就装修好啦. 11月份度过了自己的经济压力期. 开始固定每月帮家里还贷. 满满的幸福.

小伙伴们

  • 两个最好的发小2015都有来京. 无一例外的都在寂静的夜谈了很多. 关于未来, 关于生活, 关于种种无奈和希望.

  • 搬家到苹果社区. 室友来自世界各地, 英格兰 美国 印度 西班牙. 同事笑着问我:是不是每天回家跟出国一样? 我说是阿哈哈哈.

  • 人们总会发现自己的圈子, 太高的圈子你够不着, 太低的圈子你不合群. 2015找到了自己的圈子. 一起圣诞一起狼人杀一起愉快的跨年, 谁说不能跟同事深交. 我打死你.

  • 等待海底捞的时候跟小贝一句玩笑话: 有空帮我杠铃影院做个头图吧! 结果小贝第二天早上就给我发来了异常认真的logo+头图:

感动之余更是珍惜这些朋友. 三生有幸才能遇见你们.

剑网3

2015年4月建立了一个帮会 <山河破> . 认识了很多有爱的小伙伴. 从走路跑商30分钟神行, 到现在帮会总人数161, 在线峰值达到33人. 离不开每个人的功劳. 由于工作太忙现充需要. 转交帮主并AFK. 希望帮会小伙伴们不要怪我. 江湖不见.

我的2015

2015对我来说, 是缤纷多彩的一年. 用数字来量化,大概是:

增重了10kg. 来到了70kg的健康体重.开通了微信公众号推送了2篇文章,阅读量260;
去了5个城市,读了20+本书,看了100+部电影;
听了1800+首音乐,换了2次发型;
跑步100+km,尝试了20+不同的餐厅;
新学会了500+新单词,练习了2种乐器;
培养了3种兴趣爱好,结交N个好友;

等待一个对的人.

鞠躬.

本周推荐--时空恋旅人(About Time)

本周推荐–时空恋旅人(About Time)

本周推荐电影来源于阿九. 给你们感受一下..

电影评分

  • 豆瓣 8.6
  • iMDb 7.8

剧情简介

Tim(多姆纳尔·格利森 Domhnall Gleeson 饰)21岁了,他的老爸(比尔·奈伊 Bill Nighy 饰)告诉他,他们家族的男人都有时光旅行的超能力,可以回到过去。于是Tim将信就疑地试了一下,回到了夏天,在那里他试图改变和暗恋对象的关系,却发现怎么穿越时空都不能让不爱你的人爱上你。之后Tim来到了伦敦,成为了一个律师。他爱上了一个漂亮的姑娘Mary(瑞秋·麦克亚当斯 Rachel McAdams 饰),他通过几次时空旅行,努力地想成为Mary的男朋友。再后来,他又试图通过时光旅行,去挽回一场失败的话剧,去改善妹妹的生活,去更好地和亲人、朋友相处,度过生命中的每一天。

##一些影评

排片时间

本周三晚上8点准时开播.

一些说明

  1. 尽量播放一些适合大家看的冷门佳片.
  2. 暂定每周三开门,没想着收钱所以来之前请吃完阿姨.不收门票.
  3. 播放影片期间请尽量尊重他人尊重自己.
  4. 免费提供瓜子饮料矿泉水(等等..
  5. 推荐影片请私聊,如果都有推荐我会发布公共号投票,一切按照得票数来.
  6. 本篇文章只对内.请勿转载收藏舔屏爱上我.

老炮儿--影评

关于这篇影评

很久没有写影评了.或者说, 很久没有好电影让我觉着值得写影评了.今天这部电影.最后管虎的名字出现后,有几个人在鼓掌, 然后带动了半个影厅,都在给这部电影鼓掌.这是很久没见过的景象.出了电影院给小伙伴们的反馈是:


所以, 有了想写一篇影评的冲动.

缘起

最开始知道这部电影, 是通过邓超–>金马奖–>没去领奖–>冯小刚在工体.
当时的反应大概是..卧槽好大牌呀.金马奖都不自己去.然后看到了这张图.

看到这张图之后发现 , 这绝对是个有故事的电影 , 连上映都没上 , 就直接拿了个金马奖..冯小刚这种表情就像是一个普通的讲故事大叔.操着沙哑的嗓音静静的唱着.心里暗暗决定上映了一定要去看.

关于电影本身

老炮儿. 在北京话是指,整天无所事事遛鸟撩闲的混混儿. 六爷整天活在胡同里,邻里街坊都叫他 六哥. 在他的世界里, 打抱不平惩奸除恶. 凡事呢,得论一个规矩. 过这徒有其表每天主持公道的日子.然而他并不知道外面的世界已经天翻地覆.

看的时候掉了三次眼泪:

  • 第一次是李易峰和冯小刚在酒馆喝酒那场对手戏.冯小刚趴在桌子上没法言语.浑身颤抖;

  • 第二次是父子俩坐出租车回来,冯小刚戴上墨镜流眼泪那一刻;

  • 第三次是整个影片的最后一幕, 倒下了,额头全是汗的站起来.扭曲着脸往前冲.

    仿佛这个故事就发生在身边, 电影中出现的所有场景我都去过. 什刹海冰场, 后海酒吧一条街, 拥挤的10号线, 老北京胡同, 颐和园 .

他有难去筹钱的时候,有的兄弟借了,有的兄弟施舍了,有的兄弟没借,老炮儿从头到尾没怨过谁,该谢的谢,该报恩的报恩,负了他的也只是一句淡淡的谁都不容易。曾经仗剑江湖用暴力解决一切问题的汉子,在老去之后对生活充满了深刻的理解和通融,只是血管阻塞的胸中热血仍在,满是皱纹波澜不惊的老脸下依然暗流汹涌。

觉着最精彩的还是六爷在小酒馆里和儿子谈心那场戏。六爷几度落泪,儿子却总是能找到话茬挤兑他,他实在没招,就想给儿子磕一个,真磕一个儿子也不领情,他也只能服软儿。表面看起来是爹对儿子没招儿,只能认怂,其实磕头、流泪,服软儿,都是爹对儿子的爱,但碍着面子还得端着,嘴上还得说:“就瞧不上你那弯腰端肩的二刈子样儿。”

老炮跟不上时代了,他不理解飙车夜店睡女人,他也不懂几个毛头小子以为这就是酷,这就是兄弟道义,江湖的规矩已经不在.老炮儿自己说,自己是一枚发了霉的炮仗,已经发霉了,谁知道什么时候会憋出个响来.老炮儿最后举着军刀杀向对面的时候.我真心是浑身颤抖.
没落的旧时代老炮儿最讲究的是江湖的道义和尊严,但是这个新崛起的时代却让他处处难堪.

2015这一年挺有意思的.不到最后一刻永远不知道年度最佳是什么.电影的配乐,镜头转换,在我看来都是大师级.或者说完全符合我的口味.冯小刚这个金马影帝.当之无愧.

本站总访问量