写给前端的甩锅指南

1
2
3
4
5
6
7
8
9
前端小白,“老王,你的接口不能用了”
后端老王一脸不屑,“怎么可能,刚刚还能用,你看看参数传对了没有。”
前端小白吭哧吭哧检查了几遍,“参数没问题啊,你看看是不是有 username, id。。。”
后端老王顿了许久, “参数应该没问题,你再清下浏览器缓存试试”
前端小白摁着 "ctr + f5" 刷新了好多次, 一脸苦逼的说:“清完浏览器缓存了,还是有问题”
后端老王略过一丝疑虑,难道是我接口出问题了,不该啊,刚还能用,都测试好几遍了,说道:“你看看是不是数据库存的测试数据有问题,删了再试试,或者换个浏览器,重启下 server。”
前端小白照着老王的方法逐一尝试着。。。
突然老王拍了下脑瓜,一脸尴尬的说:“小白,我刚 fix 一个线上 bug, 测试环境换了分支,所以接口出问题了。”
小白一脸生无可恋的望着老王头顶的地中海发呆。。。

上面情节纯属虚构,作为一个后端开发人员,我怎么忍心这么黑自己的同行呢 😭。不过思考下这么一个问题,前端如何能够快速的定位问题呢。这里面跟很多因素有关,比如前后端协作流程是否完善,前后端人员的经验。

Read More

过滤豆瓣租房小组中介贴之 python 实现 k 近邻算法(四)

豆瓣有各种小组,每个小组会有个主题,比如租房小组基本里面全是房源相关的,当然偶尔也会有广告出现。那么如何能够让机器知道你发的帖子到底是哪个主题的呢,简单来说就是如何给帖子分类。这个时候需要介绍机器学习一个最简单的算法,叫 k 近邻算法。 原理介绍见这篇 K NEAREST NEIGHBOR 算法

屏幕快照 2017-03-06 下午1.35.46

Read More

过滤豆瓣租房小组中介贴之 python 实现 TF-IDF 算法(二)

前段时间写过一篇 过滤豆瓣租房小组中介贴之 python 实现余弦相似度(一), 这里面使用 jieba 将文档分词,然后计算对分词的结果向量化计算相似度。比如 我的房子在方庄地铁附近的芳城园一区 会被分词为 方庄 芳城园 一区 地铁 房子 附近,我们发现少了 我 的 在 这些词,在自然语言处理的过程中,称这些词为停用词,简单的说就是这些词对于分词结果没有多少帮助,所以需要直接过滤掉。因为我们直接调用 jieba.analyse 方法,所以停用词被直接过滤了,如果只是调用 jieba.cut,会将返回包含停用词的结果。

Read More

过滤豆瓣租房小组中介贴之 python 实现 布隆过滤器(三)

其实这篇文章跟过滤中介贴没什么关系,只是在爬豆瓣小组的时候遇到的一点思考,我们知道,其实爬虫就是循环的爬取网站的 url,但是怎么判断爬取的 url 是否重复呢,最简单的,维护一个列表,每次循环查找,很明显效率很低。进阶的,采用哈希表,每次查询都是 O(1), 看上去不错。不过如果一旦 url 大到一定程度时,单台机器的内存肯定吃不消,这个时候分布式方案就呼之欲出,变得越来越复杂。那么能不能在牺牲一点点精确性的前提下,有简单的方案呢,答案是肯定的。这就是 布隆过滤器。

Read More

ghost 博客中文搜索插件

在用 ghost 博客的时候,发现一直没有合适的搜索插件,主要是官方没提供相应的 search api, ghostHunter 采用 api 获取所有文章的方式,然后用 lunir 做全文搜索。但是 lunir 本身不支持中文分词,虽然有小伙伴提供了中文分词的方案,但是为了一个简单的搜索加了好大一堆库,感觉还是不怎么经济。

所以鉴于此,根据 ghsotHunter 改了个简单的插件,为了效率,api 获取的时候只取 title, 所以只支持简单的 title 匹配搜索, 代码如下:

1
2
3
4
5
6
var searchResult = [];
for(var i=0; i < this.blogData.length; i++) {
if(value && this.blogData[i].title.toLowerCase().search(value.toLowerCase()) != -1){
searchResult.push(this.blogData[i]);
}
}

Read More