Skip to main content

· 8 min read

这是一个系列文章,大部分内容都来自我过去在小红书发现 Feed 团队工作期间的实践和经验。在介绍的过程中我会尽量不掺杂过多的业务细节1,而专注于这背后我个人一些浅薄的设计思想,希望你在阅读完这些文章以后能够直接或者间接地拓展到不同的场景。

在介绍什么是索引框架之前先了解一下我们当时面临的业务场景2,业界现在的 feed 流产品已经逐步从非个性化全面过渡到个性化,所谓的个性化 feed 其实就是基于机器学习的推荐系统

· 22 min read

知乎在 4 年前已经开始尝试服务化,至今也经历了好几个架构的变迁演化。我大约是 2013 年开始在知乎负责服务化的工作,对服务化的理解也从最初的模糊逐渐变得清晰,前段时间看了一篇叫做 [Microservices - Not A Free Lunch!][] 的文章,也想趁着这个机会梳理总结目前为止我的一些感悟和想法。

· 11 min read

曾经对香港的印象就是便宜的苹果电脑和遍地的茶餐厅,竟忘记了这是一个靠海的岛屿。作为一个在西部长大的孩子,对于海总是有很多憧憬。从小到大见过很多地方的海,有浑浊的,有碧蓝的,有挤满游客的,也有波涛汹涌的。其实海不一定就是蓝色的,只是人们习惯性地把自己的愿望加诸在别的东西身上,所以如果某一天你见到了不是蓝色的海,请不要抱怨它。

· 3 min read

前段时间看过一篇叫 Automate Everyday Tasks 的博客,其中的一些见解很有意思,我们日常工作中有很多细小但是重复的事情,如果能够将某些工作自动完成,会让生活更加舒适。我很喜欢 Mac 上一个叫 PopClip 的小 app,可以大大减少很多重复的操作。这篇博客就是介绍如何制作一个 app,当复制 URL 时自动在浏览器中打开。

· One min read

前段时间知乎的 cache 服务器中的某个数据总是错乱,想到了几个可能修改缓存的源头,同时在代码中搜索相关代码,把这些服务都重启了。但是问题依旧,只是没有之前那么严重。好吧,这下肯定是某个不知名的地方仍然在访问缓存。那就从根源查起,猛然发现 Redis 的 MONITOR 命令,可以实时打印出此时正在执行的命令,正合我意,修改缓存的命令我是知道的,只需要监测这个命令,然后就可以查到来源了。

redis-cli monitor | grep '"set" "alist"'

· 4 min read

孩子,你的一生会遇见很多不一样的人,在陌生的城市和环境里结交着朋友,找寻着恋人。你每天都会很忙,忙到没有时间喝水,没有时间吃饭,没有时间思考。你会羡慕那些生活得悠闲自在的人,仿佛他们生来如此。看到街上的情侣你也会想她是否也在想着你,因为你们仰望着同一片星空。你向往着有一天和她一起生活,你们想要的生活。

· 3 min read

Responsive 与 Modal

在开启 responsive 后,小屏幕设备上显示 modal 时会变成一闪而过,然后浮动窗口就不见了。具体效果可以缩小浏览器尺寸,在这个页面的 Live demo 点击「Launch demo modal」看到。Issue #2130 专门讨论了这个问题,目前比较好的解决办法是使用这个插件,根据页面大小来动态调整 modal 的位置,不过貌似用了之后 modal 那个由上至下显示的动画就没有了。这个 issue 现在还处于开启状态,看来官方短期内是不会解决这个问题的。

· 4 min read

Tornado 通过 @asynchronous decorator 来实现异步请求,但使用的时候必须将 request handler 和 callback 分离开,tornado.gen 模块可以帮助我们在一个函数里完成这两个工作。下面是官方的一个例子: