• Stars
    star
    147
  • Rank 251,347 (Top 5 %)
  • Language
    JavaScript
  • Created over 13 years ago
  • Updated over 11 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An online rss reader written in clojure & javascript & java.

RSSMiner

Features

  • Build for readability
  • Realtime, instant fulltext search
  • Realtime, personalized recommendation based on reading history
  • Google Chrome plugin to add subscription
  • Clean and compact code
  • Super fast (In order to be fast, I write the Web server, Database Connection Pool, Chinese segmentation, Template System, Some JS libs from scratch. I save every bit to make it faster. The server can handle thousands of request per seconds(Including fulltext search) with very low latency.

Technologies

Server-side

  • Java. Clojure.
  • Apache Lucene, use it to do fulltext, realtime, instant search.
  • Ring, compojure, easier http.
  • http-kit, super fast event driven HTTP server and HTTP client. Especially written for Rssminer.
  • dbcp, Simple database connection pool. Especially written for Rssminer
  • mmseg, A java implementation of MMSEG. Especially written for Rssminer
  • MySQL, data store
  • Redis, Message Queue; Per user per feed score Store. Proxy cache.
  • Mustache.clj, Mustache for Clojure

Client-side

How to run it

Install Instructions

  1. Install Dependencies leiningen, JDK7(JDK6 works), Redis, MySQL, sass, rake

  2. clone this repo, install dependency

git clone git://github.com/shenfeng/rssminer.git && cd rssminer && lein deps
  1. Initialize database, create user, import schema
cd rssminer && ./scripts/admin init-db
  1. Run it
# make sure /var/rssminer/index dir exits and is writable. refer command line args for more info
rake run:dev # run server in dev profile, view it: http://127.0.0.1:9090

Run unit test

rake test
rake mysql_dev # replace my.cnf will a dev one, run mysql in /tmp, run it after understand it.

It will create/drop a temp MySQL database for each test. If MySQL's db path is in tmpfs, It will much faster(12s vs 40+s).

Command line args

rake prepare javac && ./scripts/run --help  # rake -T list commands
Usage:

 Switches                 Default                          Desc
 --------                 -------                          ----
 -p, --port               9090                             Port to listen
 --worker                 2                                Http worker thread count
 --fetcher-concurrency    10
 --fetch-size             20                               Bulk fetch size
 --profile                :dev                             dev or prod
 --redis-host             127.0.0.1                        Redis host
 --redis-port             6379                             Redis port
 --static-server          //192.168.1.200                  static server
 --db-url                 jdbc:mysql://localhost/rssminer  MySQL Database url
 --db-user                feng                             MySQL user name
 --db-pass                                                 MySQL password
 --bind-ip                0.0.0.0                          Which ip to bind
 --events-threshold       20                               How many user feed events buffered before recompute again
 --index-path             /var/rssminer/index              Path to store lucene index
 --no-fetcher, --fetcher  false                            Start rss fetcher
 --no-proxy, --proxy      false                            Enable Socks proxy
 --no-help, --help        false                            Print this help

Copyright

Copyright (c) Feng Shen[email protected]. All rights reserved.

More Repositories

1

tiny-web-server

a tiny web server in C, for daily use.
C
375
star
2

http-watcher

A Web Server for Web developers: automatically reload browsers when file changed, help developer focus on coding.
Go
186
star
3

dictionary

Pure c with epoll: A English-English dictionary to assist reading
JavaScript
117
star
4

mustache.clj

High performance mustache template library for Clojure
Java
45
star
5

async-http-client

A fast async http client based on netty
Java
42
star
6

pedis

A fast and lightweight key/list database server.
C
18
star
7

rockredis

A server using redis protocol, backend by rocksdb. In golang
Go
13
star
8

ftpd.go

a ftp server written in go in order to learn the language
Go
11
star
9

java-jdbc

Generate JAVA JDBC Database Access using SQL statement. No dependency, No reflection
Python
10
star
10

dotfiles

Linux & OS X config files
C
9
star
11

feedb

A special key-value storage server written in go and mmap.
Go
8
star
12

build-web-application-with-clojure

JavaScript
7
star
13

http-kit

move to https://github.com/http-kit/http-kit
7
star
14

mmseg

A java implementation of MMSEG. http://technology.chtsai.org/mmseg/
Java
6
star
15

proxy

HTTP proxy, backend by few socks proxy. Route traffic based on rule
Go
6
star
16

redis.go

High performance golang redis client
Go
5
star
17

fibonacci-game

A language benchmark game, just for fun.
Python
3
star
18

shenfeng.github.com

my personal blog
CSS
3
star
19

lunch-lottery.go

Lunch Lottery of AVOS china team in golang
Go
2
star
20

ac

Auto complete
C++
1
star
21

rope-emacs

a patched ropemode to support goto-definistion-other-window and pop-goto-definition-stack. for emacs python editing.
Python
1
star
22

thrift-router

Go
1
star
23

livereload

Clojure
1
star
24

readability

JavaScript
1
star