Code Monkey home page Code Monkey logo

doubanj's Introduction

[豆瓣酱] repo dependency

This repo has been deprecated. 由于豆瓣关闭了 API 通道,本网站已下线。

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

依赖

数据库服务器

同时依赖 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

doubanj's People

Contributors

ktmud avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

doubanj's Issues

希望开发出音乐酱

最早开始用豆瓣主要就是用来听歌的,到后来才用到其他功能,感觉音乐也挺能代表一个人的喜好的,当然要能有电影酱的话那最好不过了。:smile:

數據同步的問題

數據是不是每次都是增量同步,而不是全部同步?爲什麽有的書已經刪了,同步之後數量并不見減少?而且後面差異越來越大,現在統計的内容已經完全沒意義。因爲書的數量已經差的太離譜了。懷疑每次都是增量同步,錯誤纍積逐漸增大,最後完全失去統計意義。
强烈建議增加全量同步,或者增加數據清零功能。這樣能解決纍積的同步錯誤。
功能可以不加太多,但現有的有限的功能要正確才可以,否則一切都沒有意義……

本人也是程序員,并下載了代碼,很希望業餘時間爲這個項目貢獻出自己的力量。有沒有郵箱之類的聯係方式?可以請教些問題,或者指出需要學習的技術内容和方向?謝謝!

数据清理和统一化

  • 同一作者的不同拼写(繁简,异体字)
  • 作者的国别清理

这个事本身应该豆瓣来做,优先级不高

设计一套更清晰的架构

现在还是太多「随手写」的代码,做了一段时间后,应该已经明确了需求,需要一个更清晰的架构

整理同步/计算状态

  1. 有哪些状态是需要后端存的?
  2. 有哪些是可以在前端展示的?
  3. 需要分别存储哪些状态?每个状态有多少种值?

用 redis 来存 stats

现在的统计结果是直接存在 user 表里,但其实会发现有写地方拿 user 的时候并不需要详细的统计结果。

需要把 stats 都转移到 redis 里面。类似于现在用 user.data 方法来存的契合指数。

按个人收藏关键词找到同好

根据 people.book_stats.[all done].top_[tags, author, publisher] 找到所有包含类似标签的用户

all 和 done 的数据应该有不同权重

生成结果需要调整时区

建议楼主修改下服务器的时区,服务器的时区用的应该是格林尼治标准时间.

我上午10:31分同步的结果页面上显示为2:31分已同步。经查询刚刚标记的书籍已经同步上去,推断楼主没有修改时区。

可能感兴趣的人

根据已有数据,找到你可能感兴趣的人。

  • 按个人收藏关键词找到同好 #28
  • 按五星图书找到同好 #30

静态文件打包说明

Component + Grunt (includes) 的方式是否合适?

Do.js 作为加载器,自定义的 grunt-wrapper 实现的 CMD 模块打包,似乎会有很多坑?

问:项目计划&如何参与

你好,我对这个项目比较感兴趣,请问这个项目后面计划如何,想参与的话从那块开始比较好,谢谢~

完善文档和代码注释

  • tasks/interest
  • tasks/compute
  • tasks/toplist
  • tasks/click

文档内容将主要写在代码注释里,并且力求文件组织结构的清晰易懂。

品味相似度

比较计算两个人阅读品味的相似度。

可利用维度:

  1. 共同收藏图书地数量和比例
  2. 打分相同和接近的书
  3. 打分差异特别大的书
  4. 对方没有看过的小众图书

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.