PromCon2016 记实报道

PromCon2016 已落下帷幕,是时候写一篇相关的记实报道了。 起初我对本次 Conf 还是有些担忧的,毕竟这是第一届,但随着时间推移,才发现我的担忧是多余的。 本届 Conf 无论是从举办场地(Google Berlin), 赞助商(基本一线大公司),演讲 Topic (实战性强), 还是参与人数,现场氛围来看,都算得上是一次成功的 Conf,来句套路满满的话: PromCon2016 was awesome. Great hosting. 好了,废话这么多,下面为大家带来一些现场照片和 Topic Slide. 分享照片: 照片看上去,逼格满满,好想吃那个点心有没有 (强烈推荐 @RubyConf 也来一打)。 Share Slide: Alerting...…

前后端分离简单玩法

前后端分离原因,这里就不展开讨论了,大家可以去了解下相关技术文章。 需求背景: 前后端分离。 利用 cookies 记住会话。 具体实践: 路由设计: 用户直接访问的页面,全部由前端框架来 routing, 所有 API 请求以 /api 开头, 并被 nginx 代理到后端应用里 。 为什么要这么设计? 因为我们需要利用 cookies 来记录会话,但是 cookies 有同域保护的问题(子域名也不行), 那么用户访问地址和 API 请求必须具有相同的域名。 API 的请求全部拥有统一的前缀,只是为了方便...…

benchmarks in go

在涉及代码性能优化的时候,benchmarks 自然少不了,那么如何在 golang 中做 benchmarking 呢? 这里我们可以使用 testing 包,它包含了 benchmark 全部代码。 1. 定义 benchmark 用例 与单元测试相似,benchmark 用例的定义也是靠函数名来约定,只不过函数名从 Testxx 换成了 Benchmarkxx. 例如: func BenchmarkHello(b *testing.B) { for i := 0; i...…

黄山三日游

五岳归来不看山,黄山归来不看岳 2016 的端午小长假,临时兴起,决定到黄山去爬山。 路线规划: 上海南站->黄山风景区汤口镇->翡翠谷->黄山->宏村->屯溪->上海 住宿: 分别在翡翠谷和宏村各住一晚 费用: 共计 1300 左右 好了,开始放图(大图,手机流量用户慎入)。 翡翠谷: 黄山: 宏村: 愉快的假期很快就结束了,速度恢复到工作模式;期待下一场旅行,我们不期的相遇。 …

个人常用 web 框架吞吐率对比

目的 测试个人经常使用的不同 App server(主要用来做 API)的吞吐率。 测试主机 系统: MacBook Air (11-inch, Early 2015) CPU: 1.6 GHz Intel Core i5 x4 (4 核) 内存: 4 GB 1600 MHz DDR3 参数对比 1. Golang...…

自顶向下,自底向上,逐步完善知识体系

自顶向下和自底向上, 往往被人们用来描述软件开发的不同思路,但是我觉得它们同样可以用来表示不同的学习思路和方向。 先来说说自顶向下: 所谓自顶向下,就是根据自身职业规划(某一阶段目标),并针对该目标的实现,理清需要得知识储备,并勾勒出知识点之间的联系,简而言之即知识体系。 自顶向下的知识体系是宏观指导,它具有重要性: 大方向上不会跑偏,对各种新技术有更好的取舍标准,不至于茫然而恐慌,也不会随意跟风。 能够提升新知识的获取速度,因为你总是发散的思考问题,更容易产生联系。 能够提高问题解决能力。不知你有没有发现,请教那些经验丰富的同事的时候,他们经常很快就会定位到问题所在, 即使 google 也会比你更快搜索出结果。同样面对的是新问题,为什么他们就比你快,不知道你思考过没有。其中的奥妙我认为还是在于知识体系, 因为同事关注的不是问题表象,而是产生问题的上下文,再根据具体问题,就能很快检索出关键词。 一切的根源原来在于同事拥有比你更完善和健全的知识体系! 写到这里,我停下了很久,为的就是规划和整理自己的知识脉络(我将另起博客讨论这个问题)。 自低向上: 如果我们将个人发展比喻成一棵不断成长的树,那么自顶向下的知识体系就好比树径,枝干;树光有躯干是不行的, 因为你还要有叶子(需要光合作用),此时自底向上的学习就好比一片片枝头的树叶,足够的树叶才能为躯干的生长提供充足的能量。 所以,自底向上的学习也是极其重要的,它是知识体系落地实施的坚实基础,如果没有它,知识体系就是空洞的,夸夸其谈。 作为一名 Ruby 开发者,开发新功能对你来说是容易的,因为你不需要了解太多底层技术实现,社区中总能找到对应的封装; 你只需要看看某个 gem 的文档就能快速搞定工作。 但是这样对于个人发展而言,真的好吗?如果你仅仅只是会用 gem(工具), 而不是了解背后的依赖的基础知识和原理,你的水平只是停留在使用工具层面。 你会为工具变化太快而烦恼,因为工具都是为某一特定需求的具体实现, 需求和实现都是在不断变化的,它只是一些花哨的招式而已。 自底向上的学习,恰恰可以解决这些问题,因为它学习和补充的是更底层的知识,...…