River's Blog

I am a freelance programmer

抛弃 UDP, 用 TCP 查询 DNS

源起 —— UDP 查询不可靠我的 ChinaDNS 一直是使用 UDP 方式通过 Shadowsocks 的 ss-tunnel 来作代理查询的,SS 开启 udp relay 即支持 UDP 协议。见我在前两篇文章的介绍: ChinaDNS: 抵抗dns污染的利器,让国内的归国内,国外的归国外 为什么要用 ChinaDNS 查询 DNS? 域名劫持、缓存污染及应对办法 长期以来,国外......

NodeBB 10: 搜索很难(1)

在 NodeBB 的官方博客上看到这篇文章: Searching is hard… Pt. 1, 嗯,这是 Part 1, Part 2 等了几年还没出来! 目前 NodeBB 搜索中文还有点残,几不可用,可见搜索真的很难! 本文不是对 Julian 那一篇文章的翻译,只是我自己的一点有感而发,以及我对于搜索的一点经验和看法,或许微不足道,看者请不吝赐教! NodeBB 官方的搜索很难用,......

NodeBB 9: 又一个社会化分享插件 —— morebasicshare.js

这两天到处在找社会化分享插件,先后排除了 jiathis, baidushare 等等,发现了一个极简风格的插件——basicshare.js, 由青谷制作,其主页上一句话心有戚戚焉: 社会化分享是很多网站常用的功能之一,国内也有很多专业的公司在做,比较出名的包括 jthis,Bhare 等。不过很悲伤的是,这些公司的产品,无一利额外的具有一个特点:奇丑无比。丑就算了,还不允许别人修改其设......

NodeBB 8: 使用CDN,将图片等附件资源上传至又拍云

前几日 V2MM 和又拍云合作,又拍云赞助了 V2MM 免费的 CDN 存储服务,我因此写了一个叫 NodeBB Upyun Uploads 的 NodeBB 插件,具体安装和使用方式见 Github。 为什么要使用又拍云呢?又拍云是国内著名的云存储提供商,它们提供的服务当然不仅仅是 CDN, 具体见他们的官网。同时他们有开放且高度可扩展的API,为互联网提供基础服务,技术上高大上,服务上也......

NodeBB 7: 使用 Socket.io 实时通信

Socket.io 使用 websocket 实现浏览器上的实时通信,可能是此方面功能的最佳实践吧。它提供了前端到后端的全套解决方案,兼容各种语言和平台,传输协议还有降级功能,完美兼容各种浏览器。有了它就可以一套代码保证从手机到IE6的长连接的实时通信, 当然这么说可能不恰当,websocket 并不是长连接,它比长连接要高效得多,对服务器的压力也要小得多,推荐要开发实时通信功能的童鞋使用它......

NodeBB 6: 版本升级

做网站很头疼的一件事是版本升级,因为新版本发布之后不知道会有哪些 breaking changes, 不知道你的网站哪些代码会不会不兼容这些 breaking changes, 如果不兼容,就不能轻易升级。版本升级其实无非就是 schema changes, 或曾加或减少了某些数据库字段,升级的时候需要改改数据库的 schema 以及对历史数据做 data fix. NodeBB 在双十一的......

我为什么要重新开通博客

这张图片代表的是两种轻型博客提供商 Dropbox & Github,不同于 wordpress 的沉重和 blogger 的古板,这两种博客以其现代化和Geek的风格出其不意地流行起来,相比于其他博客平台的落寞,这两个平台可以说如日中天。随便Google一下可以找到大量的教程教你怎样 Blogging Like a Hacker 或者 Blogging with markdow......

NodeBB 5: 让你的网站全面使用HTTPS

V2MM 上线后开始考虑支持 HTTPS, 毕竟现在这个网络环境, 单纯的 HTTP 就像在网络上裸奔一样,总会吸引一些恶狼。Google 了一圈服务提供商,发现 Let’s encrypt 人气最高。 Let’s Encrypt 是由互联网安全研究小组(ISRG,一个公益组织)提供的服务。主要赞助商包括电子前哨基金会,Mozilla基金会,Akamai以及思科。2015年4月9日,ISR......

NodeBB 4: plugin 探秘

NodeBB 是一个高度可自定义的程序,要想完全按照自己的想法来设计, 不可避免的就会用到它的插件,甚至还可能需要编写自己的插件。比如 v2mm 在使用第三方登录插件 sso-github 的时候,发现有几个小问题使用不太爽,就 folk 了原来插件的代码,修改成了自己的 nodebb-plugin-sso-github2。目前 sso-github 已经 merge 了我的代码,这样两个插......

NodeBB 3: mongodb 与 redis

前面说过,NodeBB 支持 mongodb 或 redis 作为存储数据库。这种使用 NoSQL 数据库的做法我很欣赏,有时候写插件要给数据库添加某个字段的时候非常方便,直接加就行。比如给 Topic 添加一个 externalLink 属性。 其实 NodeBB 刚开始 0.x 版的时候还只支持 Redis, 所以它的数据存储格式就这几种: hashes, sets, sortedset......