0%

在项目中踏完一系列坑后总结出来,消息的处理有两个要务:

  1. 消费一定要快,我们喜欢供小于求的市场。生产者生产的消息要满足不了消费者才行。
  2. 任何消息都不能丢,因为这都是数据啊,即使处理不了也得找地方存着。最好每次的消息都存着,之后就变成了event sourcing(另一个大坑)。
Read more »

这是最近看到的一个算法题,第一眼看过去连题目都看不懂啊囧。非计算机本科生表示对算法十分无力。第一直觉肯定是把ASCII的字符都换成int,然后题目就可以变成How to count the number of set bits in integer. google一下还真有[答案](How to count the number of set bits in ASCII string).第一个高分回答表示各种位操作都看不懂。传说中的Hamming_weight算法。真是给跪了。

突然想到Java的Integer类本来就有个toBinaryString方法,再加上最近正好研究UUID生成,觉得用现成的方法实现一下。

Read more »

最近一个使用Spring的项目中需要进行性能调优。方式基本上是编写新的代码实现原来一样的业务逻辑,只是实现方式有一些调整,例如增加cache,优化算法等等。

一开始大家希望直接在原有代码基础上修改,但是这样一来,就要跟上每周一次的发布节奏,一周搞定难度太大。于是决定拷贝出的package来重构。在没启用之前这个package下都是dead code。这样做的好处有几点:

  • 在调优后的code启用前,业务至少不会受影响。
  • 利用docker的特性,可以实现灰度发布,比如启动两个docker,一个是老的code,一个启用新的code,利用nginx实现分流。
  • 灰度发布后发现有紧急bug,只需要devOps修改一点配置,重启docker可以再切回老的code。
Read more »

近一个月拿Vue.JS做一个小项目练手。项目本身的API是现成的,而且都是json格式,所以前端选型自然会选择MV*M的框架。由于做了一段时间的angularJS,感觉对于这个工期很短的项目angular显得有些庞大了。所以尝试了一下Vue.JS。

Read more »

Docker官网出了最新的Docker For Mac.不是以前的基于virtual box的Toolbox了。内心小激动,赶紧下载安装。装完之后,menu bar上会有一个小鲸鱼的图标,可以restart,而且有GUI做一些额外配置,比如最需要的Proxy和文件mount。

Read more »

最新升级到最新系统的MAC貌似不能安装Scrapy了,lxml怎么安装都没权限。所以采用安装虚拟python环境的方法来解决吧。Scrapy官方也不建议用MAC自带的python, Installation Guide.

~ pyenv install 2.7.1

完成后基于这个版本的python创建一个virtualenv

~ pyenv virtualenv 2.7.11 venv-labs

会自动给这个虚拟env安装pip,wheel等工具,然后我们来使用这个创建出来的env作为我们默认环境

~ pyenv global venv-labs

切到Pycharm里面,在Project Interpreter里面添加一个env,指向~/pyenv/versions/venv-labs/bin/python.大功告成。开始愉快的安装Scrapy吧。

自己做项目需要一个日历控件,网上搜了半天觉得淘宝旅行的日历最合适

  • 起始和结束两个日历控件,并且可以联动
  • 支持国内的节假日显示
  • 有各类option支持不同的需求,比如三个月时间,结束时间必须在起始时间七天后等等。可定制化程度高。
Read more »

经过一天的折腾,终于实现在VPS上搭建一个基于jekyll的博客来替换wordpress。

Digital Ocean[^1] 的很多文章帮了大忙了

Read more »

最近被这个问题折磨了两天。

因为之前装了autojump,后来又卸载了才导致的,这里推荐使用z,因为oh my zsh自带这个插件,编辑~/.zshrc文件,在plugins=(git)这行中加上z变成plugins=(git z),然后source ~/.zshrc重新加载配置文件,就好了。

言归正传,对于tab自动补全crash的解决,需要执行以下的命令:

1
autoload -U compinit && compinit

如果重启以后又不工作的话,把这条命令加入到 ~/.zshrc 中。