Visualization of your reading history.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
conf change asset root, use NODE_ENV Jan 14, 2018
database use different key for top users by tag Feb 27, 2014
lib fallback to a Chinese IP (it`s actually douban`s IP) Jan 1, 2017
models add localization support - close #38 Jan 1, 2017
serve
static cleaner header Nov 3, 2016
tasks add localization support - close #38 Jan 1, 2017
templates add whitespace around the book overview numbers Jan 14, 2018
tools MongoDB stream doesnt accept `close` event anymore, use `end` instead Oct 23, 2016
.dockerignore add a docker file Apr 26, 2015
.foreverignore
.gitignore
.gitmodules use component to manage static files Feb 28, 2013
.npmrc add CHECKS and .npmrc file see dokku/dokku#420 May 11, 2015
CHECKS wait longer for dokku checks Jan 14, 2018
Gruntfile.js fix extraneous error message in grunt file Oct 23, 2016
Makefile upgrade bower and oauth Jan 1, 2017
README.md fix book total in overview Jan 14, 2018
app.js add localization support - close #38 Jan 1, 2017
apps.json revert deploy script Jan 14, 2018
bower.json bootstreap to 3.3.4 May 12, 2015
cluster.js initial commit Feb 18, 2013
package.json revert deploy script Jan 14, 2018

README.md

豆瓣酱 repo dependency

豆瓣 私人收藏数据可视化。

依赖

数据库服务器

同时依赖 mongodb 和 redis ,配置参数参见 conf/default.conf.js

工具包

npm install forever -g
npm install component -g
npm install grunt-cli -g
npm install

开始开发

make init
make grunt
make

make 的默认命令是使用 forever 执行 app.js

如果需要修改静态文件,请执行 make watch ,利用 grunt 监视静态文件改动。

一点说明

MongoDB 的用处

  1. 存储用户账户信息、收藏信息、条目信息
  2. 利用 aggregation 生成统计结果

redis 的用处

  1. 替代 memcached 的缓存服务
  2. 存储统计结果(计划中)

队列管理

使用 node-pool,数据库请求、API请求、统计请求,都有分别的队列。

静态文件

  • 依赖的开源库都用 component 来管理。
  • 使用 grunt 来打包。具体配置参见 Gruntfile.js
  • 服务器递送的总是 /static/dist 目录下的文件,调试时也要保证 dist 目录下有所有需要的文件。没有 fallback 。因此请保证修改静态文件时,watch 有运行。

客户端JS的模块化

  • static/js/do.core.js 是由豆瓣的 do.js 修改而来的文件加载器
  • 用了 component-build 的一套东西,参看 static/js/do.cmd.js
  • Gruntfile.js 里定义了对 js 文件包裹 CommonJS require 定义的命令
  • 使用模版配套的 #{urlmap()} 方法为 Do 生成所需文件的真实地址
  • 使用 Do('module1', 'module2', ... 显式延时加载你需要的模块,模块名即文件名,在 Do 内部安全地使用 require('xxx') 具体使用实例参见 static/js/people/booter.js

版本管理

发布上线前执行 grunt build ,将为压缩后的文件生成一个 hashmap (即 static/hash.json ),并重命名文件为 static/dist/js/xx_HASH.js 格式。 为了保证这套机制的顺利运行,请保证新加的静态文件名中不包括下划线(_)。

提供 API Key

采集豆瓣数据需要使用豆瓣 API。请配置一下环境变量来制定豆瓣 API KEY:

  • DOUBAN_APP_KEY
  • DOUBAN_APP_SECRET
  • DOUBAN_APP_MORE - 格式:key1:secret1, key2:secret2