diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..28e6f56
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,52 @@
+*.gem
+*.rbc
+/.config
+/coverage/
+/InstalledFiles
+/pkg/
+/spec/reports/
+/spec/examples.txt
+/test/tmp/
+/test/version_tmp/
+/tmp/
+
+# Used by dotenv library to load environment variables.
+# .env
+
+## Specific to RubyMotion:
+.dat*
+.repl_history
+build/
+*.bridgesupport
+build-iPhoneOS/
+build-iPhoneSimulator/
+
+## Specific to RubyMotion (use of CocoaPods):
+#
+# We recommend against adding the Pods directory to your .gitignore. However
+# you should judge for yourself, the pros and cons are mentioned at:
+# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
+#
+# vendor/Pods/
+
+## Documentation cache and generated files:
+/.yardoc/
+/_yardoc/
+/doc/
+/rdoc/
+
+## Environment normalization:
+/.bundle/
+/vendor/bundle
+/lib/bundler/man/
+
+# for a library or gem, you might want to ignore these files since the code is
+# intended to run in multiple environments; otherwise, check them in:
+# Gemfile.lock
+# .ruby-version
+# .ruby-gemset
+
+# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
+.rvmrc
+
+.idea/*
diff --git a/.idea/.generators b/.idea/.generators
deleted file mode 100644
index 1618976..0000000
--- a/.idea/.generators
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
diff --git a/.idea/.rakeTasks b/.idea/.rakeTasks
deleted file mode 100644
index 36e25b9..0000000
--- a/.idea/.rakeTasks
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
diff --git a/.idea/guoren.iml b/.idea/guoren.iml
deleted file mode 100644
index a421df4..0000000
--- a/.idea/guoren.iml
+++ /dev/null
@@ -1,192 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 3803ed9..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 703f630..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations/Development__guoren.xml b/.idea/runConfigurations/Development__guoren.xml
deleted file mode 100644
index 7c3f68c..0000000
--- a/.idea/runConfigurations/Development__guoren.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations/Production__guoren.xml b/.idea/runConfigurations/Production__guoren.xml
deleted file mode 100644
index 0d25565..0000000
--- a/.idea/runConfigurations/Production__guoren.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations/spec__guoren.xml b/.idea/runConfigurations/spec__guoren.xml
deleted file mode 100644
index 9dfd121..0000000
--- a/.idea/runConfigurations/spec__guoren.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/runConfigurations/test__guoren.xml b/.idea/runConfigurations/test__guoren.xml
deleted file mode 100644
index ae53fc4..0000000
--- a/.idea/runConfigurations/test__guoren.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
deleted file mode 100644
index bab5bf8..0000000
--- a/.idea/workspace.xml
+++ /dev/null
@@ -1,1051 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- DEFINITION_ORDER
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- project
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1482408182630
-
-
- 1482408182630
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/log/development.log b/log/development.log
index af15082..d26c061 100644
--- a/log/development.log
+++ b/log/development.log
@@ -181540,3 +181540,353 @@ Processing by ChatController#notify as JSON
Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:09:41 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:09:47 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:09:58 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:10:11 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:10:18 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:10:30 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:10:38 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:10:51 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:10:58 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:11:11 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:11:17 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:11:27 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:11:37 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:11:49 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:11:57 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:12:07 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:12:17 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.1ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.2ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:12:27 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.1ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:12:41 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:12:47 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:12:57 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:13:11 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:13:18 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:13:27 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:13:37 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:13:47 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.2ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:13:57 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:14:07 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:14:17 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.2ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.4ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:14:28 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:14:37 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:14:47 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:14:57 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.4ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:15:07 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.4ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.5ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:15:17 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:15:27 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:15:37 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:15:47 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.1ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.2ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:15:58 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:16:07 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:16:21 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:16:28 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.1ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 2ms (Views: 0.2ms | ActiveRecord: 0.2ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:16:37 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:16:47 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:16:57 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.1ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.2ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:17:07 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:17:18 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:17:27 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:17:37 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 0.3ms)
+
+
+Started GET "/notify" for 127.0.0.1 at 2016-12-25 14:17:47 +0800
+Processing by ChatController#notify as JSON
+ [1m[36mUser Load (0.2ms)[0m [1m[34mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?[0m [["id", 1], ["LIMIT", 1]]
+ [1m[35m (0.1ms)[0m [1m[34mSELECT COUNT(*) FROM "messages" WHERE "messages"."recieve_user" = ? AND "messages"."readed" = ?[0m [["recieve_user", 1], ["readed", false]]
+Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.3ms)
+
+
diff --git a/高级软件工程TODOList.md b/高级软件工程TODOList.md
new file mode 100644
index 0000000..4dec509
--- /dev/null
+++ b/高级软件工程TODOList.md
@@ -0,0 +1,27 @@
+# 张裕
+------------------------
+分页功能 张裕
+简单的组团、失物招领动态 张裕
+网站整体时间修改 张裕
+动态排行榜(评论数、组团人数) 张裕
+
+# 朱京乔
+------------------------
+多图上传 朱京乔
+
+# 尹吉宪
+------------------------
+用户个人资料修改 尹
+用户个人动态的评论显示 尹
+用户个人动态的删除 尹
+忘记密码功能的实现 尹
+
+# 白芳洲
+------------------------
+测试 白
+整体代码检测与bug捕捉 白
+
+# 倪令斌
+-------------------------
+部署 倪
+公告 倪