1. Capistrano 部署Rails5 puma 项目小结

    项目目录名为: cap_puma

    2017/11/09 Rails

  2. 最近工作总结(十)

    rails find_by 别忘了查询条件 线上出现了一个诡异的bug。查了很久终于发现是find_by查询没有加条件。举个例子:

    2017/11/04 Work

  3. 为rails项目升级使用Elasticsearch 5.x版本

    最近为项目系统中使用的Elasticsearch进行了升级。从原来1.4版本的Elasticsearch升级到5.x版本。

    2017/10/15 Elasticsearch

  4. 最近工作总结(九)

    net/http in Golang

    2017/10/13 Work

  5. 安装配置elasticsearch-5.5.2+IK中文分词器

    最近的任务是将elasticsearch集群由低版本的1.4.2升级到5.5.2版本。由于跨的版本比较多,查看了一下elasticsearch文档,Breaking changes 非常多,所以这会是一次改动很大的升级。

    2017/09/14 Elasticsearch

  6. 最近工作总结(八)

    ActiveRecord reload reload方法:数据库更新不可能反馈到变更前创建的对象上。通过reload方法让对象重新加载数据库最新的变更。

    2017/09/07 Work

  7. ubuntu 解决 Problem with MergeList /var/lib/apt/lists/ 类似错误

    使用过ubuntu的人儿们可能都遇到过这类问题,明显这种问题是一个类型,而不是单一的由于某一个固定的因素引起的。

    2017/09/02 Tool

  8. 在Linux系统中监控系统TCP数量

    netstat

    2017/08/25 Tool

  9. 简记Rails中的logger实用技巧

    Gem lograge

    2017/08/23 Rails

  10. 用喜欢和舒服的方式在Golang中使用锁、使用channel自定义锁

    众所周知,我们能使用Golang轻松编写并发程序。Golang利用goroutine,让我们编写并发程序变得容易。并发程序中重要的问题之一就是如何正确的处理“竞争资源”或“共享资源”。Golang为我们提供了锁的机制。这篇文章,就简单介绍Golang中锁的使用方法。并且进行错误的使用方法和正确的使用方法的代码示例对比。文章的所以代码示例在:https://github.com/pathbox/learning-go/tree/master/src/lock

    2017/08/13 Golang

  11. 最近工作总结(七)

    使用正则快速获取括号内的字符串 result = file_name.match(/\A.((\S+)).\Z/) result1 = file_name.match(/\A.[(\S+)].\Z/) p $1 p result.to_a

    2017/08/03 Work

  12. 升级Elasticsearch集群数量实战记录

    现在线上有一个elasticsearch集群搜索服务有三台elasticsearch实例(es1、es2、es3),打算将其升级为5台(增加es4、es5)。这篇文章主要是对整个操作的过程记录,以及出现的问题总结,包括移动数据量所需要的时间。因为,一开始由于不知道线上数据量全部分配完需要多少时间,如果从凌晨开始操作,到早上8点都还没有同步完,这样会影响到白天线上业务的正常使用。

    2017/07/31 Elasticsearch

  13. 最近工作总结(六)

    如果调用第三方接口,请别忘了超时机制 周末的时候,线上出了问题。是由于IPIP服务商的服务器出了问题,我们调的接口迟迟没有返回值。 导致我们项目中,开了很多goroutine,每个goroutine中会请求IPIP的接口分析ip地址,由于IPIP的服务器没能及时相应, 导致大量的goroutine都阻塞在了那里。所以, 不要“信任”第三方服务,调用他们服务接口的时候,应该使用超时机制。

    2017/07/04 Work

  14. Callback order in controller of Rails

    在Rails controller中可以定义回调方法。回调方法是一个队列,满足先进先出的执行顺序。但我们知道,回调有before_action, after_action, around_action 这三种简单的类型。并且还有append_xxx_action、 prepend_xxx_action、和skip_xxx_action。 在RubyChina上有一篇精华帖讲了controller callback 源码的内容 详解 Rails Controller 中的 Callback 这里我们研究除了skip_xxx_action的其他类型的执行顺序。

    2017/06/17 Rails

  15. 最近工作总结(五)

    多个条件进行操作的时候,难免遇到冲突 比如触发器,不同的触发器的触发条件如果有冲突,顺序不同,影响不同。如果A触发器先执行更改记录,会导致B触发器条件不满足而无法执行。如果让B先执行,则两者都可以顺利执行。

    2017/06/01 Work

  16. 记一次Go websocket项目内存泄露排查 + 使用Go pprof定位内存泄露

    从同事接手了一个项目。这个项目是用了<go-socket.io>这个库,仿照socket.io的功能,和前端进行交互。因为之前是用socket.io做的后端,但是 觉得性能不够用了,就改用Go来进行重构。重构之后,发生内存泄露的现象。这个项目峰值大概维护1w-1.5w个socket长连接,一开始内存消耗量大概到2g-3g。 然而,当连接数没有增长的情况下,随着运行时间的增长,内存也在增长。并且大概一个多小时的时间,内存就涨到了10g,而且连接数才1w多,说好的支撑”百万连接呢”。如果不进行重启服务操作,内存会涨到14g(16g的内存)。所以,确定是有内存泄露。我需要做的就是找到内存泄露的原因,修复这个问题。

    2017/05/27 Golang

  17. 在Web application 中基本的安全防范小结

    CSRF攻击

    2017/05/23 Summary

  18. ssh in my work

    我喜欢在<hosts>文件里给ip地址定义域名名称。比如一台测试服务器的ip地址是<192.168.100.1>

    2017/05/19 Tool

  19. Ruby 的GIL 到底做了什么

    GIL 是 Global Interpreter Lock 也叫 GVL

    2017/05/13 Ruby

  20. 最近工作总结(四)

    在数据库层面建立唯一索引,是最好的防止数据重复的方法,即使是在高并发的情况下 在Rails model层使用validates 方法进行唯一性的验证逻辑,比如:

    2017/05/04 Work

  21. 用更好的Ruby code style 避免类型错误

    我们知道,Ruby是动态语言。 静态类型:编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。

    2017/04/09 Ruby

  22. 最近工作总结(三)

    !!符号 !! 符号可以将nil转为true之后,再转为false。这样可以将false或nil都以false结果进行判断

    2017/04/07 Work

  23. Install Elasticsearch in Ubuntu and macOS

    Ubuntu 14.04环境

    2017/03/24 Elasticsearch

  24. simple examples make you be close to channel in Go

    example1

    2017/03/18 Golang

  25. 最近工作总结(二)

    serialize Hash 在serialize Hash 有个小坑。 普通的hash和ActionController::Parameters 或 Hashie::Mash 等类型都能存。这就会导致了,如果代码中原本使用symbol方式取值正确的逻辑,当该字段值用hash类型,并且hash对应的key用字符串形式存了,原本原本使用symbol方式取值正确的逻辑取值就变为空了。所以,推荐当取值的时候都用字符串形式。第二个是,如果数据库存了ActionController::Parameters类型的值,在rails 5中取这个值的时候就报错,,直接导致用这个model的时候就报错。因为ActionController::Parameters 在rails 5不再继承于Hash,而进行 serialize hash 的时候就不行了。在rails 4 中把这个数据用普通hash更改一下,在rails 5 项目中就恢复正常

    2017/03/09 Work

  26. Manage and custom your elasticsearch index in Rails project

    这周对Rails项目中的ElasticSearch进行了总结并写成了文档,觉得有一些内容值得记录和分享。 这篇文章主要是在Rails项目中对索引,mapping的设置、管理操作的总结,不涉及搜索方面的内容。 源数据是存在MySQL中,ES的数据是MySQL写操作的时候进行了回调同步到ES中,这个应该和很多人的使用同步策略一样。

    2017/03/02 Elasticsearch

  27. Background job is awesome for your application

    What is the background job? It is simple that is running in the background.

    2017/02/17 Thought

  28. Pointer in Go

    Go有指针类型含义和作用和C语言的指针是一样的,指向类型的地址,而且用途很广,但是你不能对指针进行运算。 比如C语言中的对指针的++ 运算或移位运算在Go中是没有的。

    2017/02/10 Golang

  29. More about OOP in Go

    面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的程序编程范型,同时也是一种程序开发的方法。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。Go语言也是一种面向对象编程的语言,但是和传统的编程语言有一些不同。但是Go也有很多传统OOP语言的特点:

    2017/01/22 Golang

  30. CSV operation in Go

    简单的读取

    2017/01/20 Golang

  31. Nice Conferences In The World

    Ruby Rails

    2017/01/16 Nice

  32. 最近工作总结(一)

    ES 慢查询优化 对搜索客户手机号码的ES慢查询进行优化。由于表的记录已经达到一定数量级,对手机号码进行char_split 的分词方法, 会产生性能问题,因为该分词方法会把手机号码进行拆分组合,这里很耗时。 优化方法:用正则表达式检验出传的参数是手机号码,不使用char_split分词查询,而是使用完全匹配的方式进行过滤

    2017/01/10 Work

  33. Range In Go

    iteration variable重用

    2016/12/31 Golang

  34. go方法

    methods on value or pointer

    2016/12/29 Golang

  35. supervisor 安装、配置和使用

    简介

    2016/12/20 Tool

  36. Elasticsearch 聚合搜索

    这次掉了这个坑里。

    2016/12/13 Elasticsearch

  37. 如何更可控、稳定地写Rails脚本操作线上数据库的记录

    描述:某个功能需要为数据库增加相关数据。大概逻辑是:根据表Company,根据某些条件往Department和DepartmentsUser表中插入数据。 然后将User表中满足筛选条件的status字段进行更改。

    2016/11/08 Rails

  38. Hash struct in rails

    最近遇到了一个坑,关于rails中的hash struct。问题不难,但非常容易让人忽略。

    2016/09/25 Rails

  39. Rails 项目的数据库慢查询优化

    最近项目中出现了很多MySQL的慢查询,平均耗时10s钟。运维小哥把慢查询找了出来,交给我们进行优化。本文就是本次MySQL慢查询优化的总结。

    2016/09/14 Database

  40. Seek the amazing Git

    Git is amazing! 本文是对git的进一步的学习和掌握总结。

    2016/08/30 Tool