万事皆有因
近期公司的事情我基本上不太能插上手写代码(当领导了,天天写邮件和整理Excel),但是做为一个前主程怎么忍心让自己的技能荒废了呢(其实已经自废武功:Ruby on Rails完全忘的差不多了)?再和小伙伴们做一个项目A的时候,偶然间想起了我手里还有个域名ailink.io还是挺上口的(鬼知道我当时怎么想的要买这域名),再加上自己对Lisp大法的一些情怀(Emacs用多了的后遗症,早几年发现intelliJ,大概我和Lisp就没啥关系了)。然后就开始作为项目A的子功能先行开发完成了,并独立放出给诸位同学使用(求捧场TT)。
使用的技术
Clojure+Ring +Compojure + Enlive + PostgreSQL + beanstalkd(某些同学会问什么鬼)。
Ring+Compojure就不用说了,基本上可以说是使用Clojure写Web的主流选择之一(另一个是Luminus,貌似这框架更流行些)。
选择Enlive是因为这东西和JQuery的选择语法完全一致,同时可以将模版独立出来不必像hiccup那样把页面直接写在.clj文件中。好处不必多说,谁用谁知道。
PostgreSQL这选择可能会让很多小伙伴很意外,为毛不是MySQL。原因是这样的,做了多年的创业公司的后台猿(架构师+DBA+运维)深知MySQL的方便性和易用性,但也深知MySQL的类型系统是多么的让人不开心。同时考虑到,我们以后的大数据的方向,最终还是放弃了MySQL(毕竟小团队不适合用太多的技术)。
beanstalkd又是什么鬼,beanstalkd是一个非常简单的队列系统。说到这,很多亲们会说,博主,你不是非常会搞RabbitMQ嘛,为毛不用RabbitMQ呀。原因很简单,VPS体量太小,CPU数量少,内存小,RabbitMQ相对于beanstalkd完全没任何优势(其实就是穷TT,没钱买大体量的VPS)。这个时候又有亲会问,你为啥不用Redis呀,这个我只想说,Redis还是好好做它的存储吧,队列还是交给专业的来做吧。
成果
首先应当感谢JVM平台上的众多库和伟大的Bootstrap,基本上在1个小时内,我就搭建起了基本的Web环境。再剩下的3个小时内,大家就不用想了,就是调试正确性了和增加一些更友善的提示。