Pinclub 是基于 Nodeclub 进行的二次开发. 增加了瀑布流展示方式, 主要参考花瓣网的设计风格(感谢花瓣网的设计师和前端工程师的辛勤工作), 加入了hanming距离的算法, 当然是在mongodb中使用了 function 的形式实现.
Pinclub's base code is forked from Nodeclub project. Pinclub add waterfall layout using Masonry plugin. The style of Frontend is mainly refer to Huaban.com, thanks. For support simulate search function simply add an mongodb function to achieve the Hamming Distance algorithm.
Pinclub 目前处于开发阶段,尚未发布 Stable 版本.
Pinclub is at developing statge, not stable enough.
在 Topic 模型中加入了 image 的相关属性值, 其中就包括 image_hash, 使用 imghash 模块生成了 16 bits 的二进制字符串.
在 Mongodb 中创建了一个 function 命名为 hammingDistance, 代码如下:
At the Topic modal, we add a property named image_hash, to save the image hash of pictures, and we build a function in Mongodb, blow is the code segment of it:
function (a, b) {
if (typeof(a) === "undefined" || typeof(b) === "undefined") return 64;
var aa = a.split("");
var bb = b.split("");
var count = 0;
for (var i = 0; i < aa.length; i++) if (aa[i] !== bb[i]) count++;
return count;
}
通过 mongo 命令行创建 Function
创建脚本:
db.system.js.save(
{
_id: "hammingDistance",
value : function (a, b) {
if (typeof(a) === "undefined" || typeof(b) === "undefined") return 64;
var aa = a.split("");
var bb = b.split("");
var count = 0;
for (var i = 0; i < aa.length; i++) if (aa[i] !== bb[i]) count++;
return count;
}
}
)
如果目标网站做了引用保护,则无法完成图片的 Get 操作
插件下载地址 / Download Chrome plugin
插件应用商店地址 / Download Chrome plugin from web store
如果你想贡献一份力量, 请查看 TODO 列表
不保证 Windows 系统的兼容性
线上跑的是 Node.js v4.4.0,MongoDB 是 v3.0.5,Redis 是 v3.0.3。
1. 安装 `Node.js[必须]` `MongoDB[必须]` `Redis[必须]`
2. 启动 MongoDB 和 Redis
3. `$ make install` 安装 Nodeclub 的依赖包
4. `cp config.default.js config.js` 请根据需要修改配置文件
5. `$ make test` 确保各项服务都正常
6. `$ node app.js`
7. visit `http://localhost:3000`
8. done!
使用 npm run apidoc 命令在本地生成文档后, 访问: http://localhost:3000/public/apidoc
Nodeclub 是使用 Node.js 和 MongoDB 开发的社区系统,界面优雅,功能丰富,小巧迅速, 已在Node.js 中文技术社区 CNode(http://cnodejs.org) 得到应用,但你完全可以用它搭建自己的社区。
跑测试
$ make test
跑覆盖率测试
$ make test-cov
Pinclub 可以联系 @hhdem
Nodeclub 有任何意见或建议都欢迎提 issue,或者直接提给 @alsotang
Pinclub is released under the MIT License. Have at it.