add expire_helper and change the code way of set cache expire!

email_verify
lizanle 11 years ago
parent 7d351e9794
commit 3047b523b0

4
.gitignore vendored

@ -6,8 +6,8 @@
/config/database.yml
/files/*
/log/*
/tmp/*
/cache/*
/public/tmp/*
/public/cache/*
.gitignore
/public/images/avatars/*
/Gemfile

@ -0,0 +1,16 @@
module ExpireHelper
#index.html 中 “projects”塊 緩存過期
def expire_project_cache
ActionController::Base.new.expire_fragment('projects')
end
#index.html 中 “activities”塊 緩存過期
def expire_activitie_cache
ActionController::Base.new.expire_fragment('activities')
end
#welcome/index.html 中 “forums”塊 緩存過期
def expire_forum_cache
ActionController::Base.new.expire_fragment('forums')
end
end

@ -17,6 +17,7 @@ class Bid < ActiveRecord::Base
HomeworkProject = 2
attr_accessible :author_id, :budget, :deadline, :name, :description, :homework_type, :password
include Redmine::SafeAttributes
include ExpireHelper
belongs_to :author, :class_name => 'User', :foreign_key => :author_id
belongs_to :course
@ -34,9 +35,9 @@ class Bid < ActiveRecord::Base
# has_many :fork_homework, :class_name => 'Bid', :conditions => "#{Bid.table_name}.parent_id = #{id}"
after_create :expire_cache
after_update :expire_cache
before_destroy :expire_cache
after_create :expire_activitie_cache
after_update :expire_activitie_cache
before_destroy :expire_activitie_cache
acts_as_attachable
@ -154,7 +155,5 @@ class Bid < ActiveRecord::Base
end
end
def expire_cache
ActionController::Base.new.expire_fragment('activities')
end
end

@ -16,6 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class Changeset < ActiveRecord::Base
include ExpireHelper
belongs_to :repository
belongs_to :user
include UserScoreHelper
@ -64,9 +65,9 @@ class Changeset < ActiveRecord::Base
includes(:repository => :project).where(Project.allowed_to_condition(args.shift || User.current, :view_changesets, *args))
}
after_create :scan_for_issues,:refresh_changests,:expire_cache#:be_user_score # user_score
after_update :be_user_score,:expire_cache
before_destroy :expire_cache
after_create :scan_for_issues,:refresh_changests,:expire_activitie_cache#:be_user_score # user_score
after_update :be_user_score,:expire_activitie_cache
before_destroy :expire_activitie_cache
after_destroy :down_user_score
before_create :before_create_cs
@ -329,9 +330,5 @@ class Changeset < ActiveRecord::Base
self.repository.fetch_changesets if Setting.autofetch_changesets?
end
end
#added by lizanle
#设置活动过期
def expire_cache
ActionController::Base.new.expire_fragment('activities')
end
end

@ -1,11 +1,10 @@
class ContestNotification < ActiveRecord::Base
include ExpireHelper
attr_accessible :content, :title
validates :title, length: {maximum: 30}
after_create :expire_cache
after_update :expire_cache
before_destroy :expire_cache
after_create :expire_forum_cache
after_update :expire_forum_cache
before_destroy :expire_forum_cache
def expire_cache
ActionController::Base.new.expire_fragment('forums')
end
end

@ -17,15 +17,16 @@
class Document < ActiveRecord::Base
include Redmine::SafeAttributes
include ExpireHelper
belongs_to :project
belongs_to :user
belongs_to :category, :class_name => "DocumentCategory", :foreign_key => "category_id"
include UserScoreHelper
after_save :be_user_score # user_score
after_destroy :down_user_score
after_create :expire_cache
after_update :expire_cache
before_destroy :expire_cache
after_create :expire_activitie_cache
after_update :expire_activitie_cache
before_destroy :expire_activitie_cache
acts_as_attachable :delete_permission => :delete_documents
acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project

@ -1,12 +1,13 @@
class Forum < ActiveRecord::Base
include Redmine::SafeAttributes
include ExpireHelper
has_many :topics, :class_name => 'Memo', :conditions => "#{Memo.table_name}.parent_id IS NULL", :order => "#{Memo.table_name}.created_at DESC", :dependent => :destroy
has_many :memos, :dependent => :destroy, conditions: "parent_id IS NULL"
belongs_to :creator, :class_name => "User", :foreign_key => 'creator_id'
after_create :expire_cache
after_update :expire_cache
before_destroy :expire_cache
after_create :expire_forum_cache
after_update :expire_forum_cache
before_destroy :expire_forum_cache
safe_attributes 'name',
'description',
'topic_count',
@ -46,7 +47,5 @@ class Forum < ActiveRecord::Base
["id = ?", forum_id])
end
def expire_cache
ActionController::Base.new.expire_fragment('forums')
end
end

@ -19,7 +19,7 @@ class Issue < ActiveRecord::Base
include Redmine::SafeAttributes
include Redmine::Utils::DateCalculation
include UserScoreHelper
include ExpireHelper
belongs_to :project
belongs_to :tracker
belongs_to :status, :class_name => 'IssueStatus', :foreign_key => 'status_id'
@ -80,9 +80,9 @@ class Issue < ActiveRecord::Base
after_create :act_as_activity,:be_user_score_new_issue
after_update :be_user_score
after_destroy :down_user_score
after_create :expire_cache
after_update :expire_cache
before_destroy :expire_cache
after_create :expire_activitie_cache
after_update :expire_activitie_cache
before_destroy :expire_activitie_cache
# after_create :be_user_score
# end
@ -1555,8 +1555,6 @@ class Issue < ActiveRecord::Base
end
def expire_cache
ActionController::Base.new.expire_fragment('activities')
end
end

@ -4,6 +4,7 @@
class JournalsForMessage < ActiveRecord::Base
include Redmine::SafeAttributes
include UserScoreHelper
include ExpireHelper
safe_attributes "jour_type", # 留言所属类型
"jour_id", # 留言所属类型的id
"notes", # 留言内容
@ -54,9 +55,9 @@ class JournalsForMessage < ActiveRecord::Base
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
validates :notes, presence: true
after_create :act_as_activity ,:expire_cache#huang
after_update :expire_cache
before_destroy :expire_cache
after_create :act_as_activity ,:expire_activitie_cache#huang
after_update :expire_activitie_cache
before_destroy :expire_activitie_cache
after_create :reset_counters!
after_destroy :reset_counters!
after_save :be_user_score
@ -165,7 +166,5 @@ class JournalsForMessage < ActiveRecord::Base
end
end
def expire_cache
ActionController::Base.new.expire_fragment('activities')
end
end

@ -1,6 +1,7 @@
class Memo < ActiveRecord::Base
include Redmine::SafeAttributes
include UserScoreHelper
include ExpireHelper
belongs_to :forum
belongs_to :author, :class_name => "User", :foreign_key => 'author_id'
@ -168,7 +169,7 @@ class Memo < ActiveRecord::Base
update_replay_for_memo(User.current,1)
end
def expire_cache
ActionController::Base.new.expire_fragment('forums')
ActionController::Base.new.expire_fragment('activities')
expire_forum_cache
expire_activitie_cache
end
end

@ -18,7 +18,7 @@
class Message < ActiveRecord::Base
include Redmine::SafeAttributes
include UserScoreHelper
include ExpireHelper
belongs_to :board
belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
@ -59,9 +59,9 @@ class Message < ActiveRecord::Base
validates_length_of :subject, :maximum => 255
validate :cannot_reply_to_locked_topic, :on => :create
after_create :add_author_as_watcher, :reset_counters!,:expire_cache
after_update :update_messages_board,:expire_cache
before_destroy :expire_cache
after_create :add_author_as_watcher, :reset_counters!,:expire_activitie_cache
after_update :update_messages_board,:expire_activitie_cache
before_destroy :expire_activitie_cache
after_destroy :reset_counters!,:down_user_score
# fq
@ -197,7 +197,5 @@ class Message < ActiveRecord::Base
end
end
def expire_cache
ActionController::Base.new.expire_fragment('activities')
end
end

@ -17,6 +17,7 @@
class News < ActiveRecord::Base
include Redmine::SafeAttributes
include ExpireHelper
belongs_to :project
#added by nwb
belongs_to :course
@ -47,9 +48,9 @@ class News < ActiveRecord::Base
# fq
after_create :act_as_activity
# end
after_create :expire_cache
after_update :expire_cache
before_destroy :expire_cache
after_create :expire_activitie_cache
after_update :expire_activitie_cache
before_destroy :expire_activitie_cache
scope :visible, lambda {|*args|
includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_news, *args))
@ -95,7 +96,5 @@ class News < ActiveRecord::Base
self.acts << Activity.new(:user_id => self.author_id)
end
def expire_cache
ActionController::Base.new.expire_fragment('activities')
end
end

@ -17,6 +17,7 @@
class Project < ActiveRecord::Base
include Redmine::SafeAttributes
include ExpireHelper
ProjectType_project = 0
ProjectType_course = 1
@ -127,9 +128,9 @@ class Project < ActiveRecord::Base
#after_save :update_position_under_parent, :if => Proc.new {|project| project.name_changed?}
after_save :update_inherited_members, :if => Proc.new {|project| project.inherit_members_changed?}
# 创建project之后默认创建一个board之后的board去掉了board的概念
after_create :create_board_sync,:expire_cache
after_update :expire_cache
before_destroy :delete_all_members,:expire_cache
after_create :create_board_sync,:expire_project_cache
after_update :expire_project_cache
before_destroy :delete_all_members,:expire_project_cache
def remove_references_before_destroy
return if self.id.nil?
Watcher.delete_all ['watchable_id = ?', id]
@ -1150,8 +1151,6 @@ class Project < ActiveRecord::Base
end
end
def expire_cache
ActionController::Base.new.expire_fragment('projects')
end
end

@ -1,145 +0,0 @@
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420532950.016201: @value"ÔI"È <li class="message-brief-intro">
<div class='memo_title text_nowrap'>
<a href="/forums/3" class="memo_Bar_title">[æ•™ç¨å…±äº«å<C2AB>§]</a>
<a href="/forums/3/memos/579" title="Log4j Best Practices">Log4j Best Practices</a>
</div>
<div class='memo_attr'>
<span class='memo_timestamp'>
更新于
2015-01-06 16:29
</span>
<span class="memo_author">
楼主:
<a href="/users/85" title="net">net</a>
</span>
<span class="memo_last_person">
最å<E282AC>Žåžå¤<C3A5>:
<a href="/users/6280" title="lzl">lzl</a>
</span>
<span class="memo_reply">
åžå¤<C3A5>
(<a href="/forums/3/memos/579">1</a>)
</span>
</div>
</li>
<li class="message-brief-intro">
<div class='memo_title text_nowrap'>
<a href="/forums/13" class="memo_Bar_title">[技术知识交æµ<C3A6>]</a>
<a href="/forums/13/memos/582" title="转:MOOCå¦ä½•改å<C2B9>˜å­¦ä¹ ">转:MOOCå¦ä½•改å<C2B9>˜å­¦ä¹ </a>
</div>
<div class='memo_attr'>
<span class='memo_timestamp'>
更新于
2015-01-06 16:28
</span>
<span class="memo_author">
楼主:
<a href="/users/170" title="xDong">xDong</a>
</span>
<span class="memo_last_person">
最å<E282AC>Žåžå¤<C3A5>:
<a href="/users/6280" title="lzl">lzl</a>
</span>
<span class="memo_reply">
åžå¤<C3A5>
(<a href="/forums/13/memos/582">2</a>)
</span>
</div>
</li>
<li class="message-brief-intro">
<div class='memo_title text_nowrap'>
<a href="/forums/12" class="memo_Bar_title">[äºè<E28099>”ç½æ°é—»]</a>
<a href="/forums/12/memos/427" title="三星å¦ä½•从称霸全ç<C2A8>ƒèµ°å<C2B0>çä¸å<E28093>±æœº">三星å¦ä½•从称霸全ç<C2A8>ƒèµ°å<C2B0>çä¸å<E28093>±æœº</a>
</div>
<div class='memo_attr'>
<span class='memo_timestamp'>
更新于
2015-01-06 16:27
</span>
<span class="memo_author">
楼主:
<a href="/users/5" title="jacknudt">jacknudt</a>
</span>
<span class="memo_last_person">
最å<E282AC>Žåžå¤<C3A5>:
<a href="/users/6280" title="lzl">lzl</a>
</span>
<span class="memo_reply">
åžå¤<C3A5>
(<a href="/forums/12/memos/427">9</a>)
</span>
</div>
</li>
<li class="message-brief-intro">
<div class='memo_title text_nowrap'>
<a href="/forums/9" class="memo_Bar_title">[åˆä¸šå<C5A1>§]</a>
<a href="/forums/9/memos/565" title="乔布æ¯çš„管ç<C2A1>†è¯¾">乔布æ¯çš„管ç<C2A1>†è¯¾</a>
</div>
<div class='memo_attr'>
<span class='memo_timestamp'>
更新于
2014-11-28 13:43
</span>
<span class="memo_author">
楼主:
<a href="/users/5" title="jacknudt">jacknudt</a>
</span>
<span class="memo_last_person">
最å<E282AC>Žåžå¤<C3A5>:
<a href="/users/5" title="jacknudt">jacknudt</a>
</span>
<span class="memo_reply">
åžå¤<C3A5>
(<a href="/forums/9/memos/565">3</a>)
</span>
</div>
</li>
<li class="message-brief-intro">
<div class='memo_title text_nowrap'>
<a href="/forums/1" class="memo_Bar_title">[æ°æ‰è®¨è®ºå<C2BA>§]</a>
<a href="/forums/1/memos/576" title="win7字体问题">win7字体问题</a>
</div>
<div class='memo_attr'>
<span class='memo_timestamp'>
更新于
2014-11-27 06:22
</span>
<span class="memo_author">
楼主:
<a href="/users/4955" title="gaoli">gaoli</a>
</span>
<span class="memo_last_person">
最å<E282AC>Žåžå¤<C3A5>:
<a href="/users/5" title="jacknudt">jacknudt</a>
</span>
<span class="memo_reply">
åžå¤<C3A5>
(<a href="/forums/1/memos/576">2</a>)
</span>
</div>
</li>
<li class="message-brief-intro">
<div class='memo_title text_nowrap'>
<a href="/forums/1" class="memo_Bar_title">[æ°æ‰è®¨è®ºå<C2BA>§]</a>
<a href="/forums/1/memos/574" title="Trustieå¹³å<C2B3>°ç”¨æˆ·æ‰å†Œ(2014å¹´11月21æ—¥8ç¹ç‰ˆæœ¬)">Trustieå¹³å<C2B3>°ç”¨æˆ·æ‰å†Œ(2014å¹´11月21æ—¥8ç¹ç‰ˆæœ¬)</a>
</div>
<div class='memo_attr'>
<span class='memo_timestamp'>
更新于
2014-11-25 18:48
</span>
<span class="memo_author">
楼主:
<a href="/users/1" title="freedom">freedom</a>
</span>
<span class="memo_last_person">
最å<E282AC>Žåžå¤<C3A5>:
<a href="/users/5" title="jacknudt">jacknudt</a>
</span>
<span class="memo_reply">
åžå¤<C3A5>
(<a href="/forums/1/memos/574">1</a>)
</span>
</div>
</li>
:ET

@ -1,185 +0,0 @@
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420531897.9176939: @value"Ý3I"Ñ3 <li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='odd'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/2" class="d-g-blue d-p-project-name" title="Trustie-Forge">Trustie-Forge</a>
(<a href="/projects/2/member" course="0">53人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title ='SocialForge是TrustieForgeçš„å<E2809E>‡çº§ç‰ˆï¼Œæ”¯æŒ<C3A6>社交åŒå<E28093><C3A5>å<EFBFBD>Œå¼€å<E282AC>与å<C5BD>ˆä½œã€
SocialForge aims to provide a socialized and crowd sourcing enabled collaboration development platform. It is combining and will combine TrustieForge, Influx, Redmine and other open source projects.'>
SocialForge是TrustieForgeçš„å<E2809E>‡çº§ç‰ˆï¼Œæ”¯æŒ<C3A6>社交åŒå<E28093><C3A5>å<EFBFBD>Œå¼€å<E282AC>与å<C5BD>ˆä½œã€
SocialForge aims to provide a socialized an...
</span>
</div>
<div >
<span class="tooltip" id="tooltip-2" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:28736</span>
</div>
</li>
<li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='even'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/17" class="d-g-blue d-p-project-name" title="Bench4Q">Bench4Q</a>
(<a href="/projects/17/member" course="0">7人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title =' Bench4Q is a Cloud-Based software'>
Bench4Q is a Cloud-Based software
</span>
</div>
<div >
<span class="tooltip" id="tooltip-17" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:8158</span>
</div>
</li>
<li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='odd'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/315" class="d-g-blue d-p-project-name" title="haflow">haflow</a>
(<a href="/projects/315/member" course="0">5人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title ='Hadoop has become the defacto standard of big data analysis, due to its scalability, fault-tolerance and availability. However, using Hadoop is still a non-trivial task; difficulties, like unfriendly interfaces, heterogeneous but isolated tools, make data analysis on Hadoop a tedious work. The goal of this topic is to design and implement a flexible web based tool facilitating big data analysis using Hadoop. The contesters are required to fulfill the following tasks: (1) Build web user interface for HDFS file management and Hive table management. (2) Integration open source data mining tools, like weka, Mahout etc. Develop a drag and drop based web user interface for developing big data analysis applications with these functions. (3) Implement web based report charts design interface.'>
Hadoop has become the defacto standard of big data analysis, due to its scalability, fa...
</span>
</div>
<div >
<span class="tooltip" id="tooltip-315" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:1535</span>
</div>
</li>
<li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='even'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/28" class="d-g-blue d-p-project-name" title="A better sandbox for BtrPlace (Entropy)">A better sandbox for BtrPlace (Entropy)</a>
(<a href="/projects/28/member" course="0">1人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title ='Btrplace is the flexible VM placement algorithm inside Entropy. It allows to compute the VMs placement, the servers' state, the resource allocation with regards to high-level constraints expressed by users.'>
Btrplace is the flexible VM placement algorithm inside Entropy. It allows to compute th...
</span>
</div>
<div >
<span class="tooltip" id="tooltip-28" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:1036</span>
</div>
</li>
<li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='odd'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/299" class="d-g-blue d-p-project-name" title="Trustie-OSSEAN">Trustie-OSSEAN</a>
(<a href="/projects/299/member" course="0">15人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title ='This project is to build an platform for OSS Evaluating, Analying and Networking. This project uses webmagic framework and many open source data analysis tools for monitoring and mining open source software community data. '>
This project is to build an platform for OSS Evaluating, Analying and Networking. This ...
</span>
</div>
<div >
<span class="tooltip" id="tooltip-299" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:884</span>
</div>
</li>
<li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='even'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/290" class="d-g-blue d-p-project-name" title="R-Memcached for Service4All (RMCS)">R-Memcached for Service4All (RMCS)</a>
(<a href="/projects/290/member" course="0">4人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title ='To improve the performance of Service4All, we will employ the widely-used cache tools such as memcached to it, which can lower the latency of read operations. However, applications on Service Oriented AppEngine(SAE) are massive and diverse, and the memory is volatile, therefore we design a R-Memcached to improve the efficiency and data reliability in the memcached. '>
To improve the performance of Service4All, we will employ the widely-used cache tools s...
</span>
</div>
<div >
<span class="tooltip" id="tooltip-290" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:420</span>
</div>
</li>
<li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='odd'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/29" class="d-g-blue d-p-project-name" title="WDMVC">WDMVC</a>
(<a href="/projects/29/member" course="0">10人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title ='基于工作æµ<C3A6>的分布å¼<C3A5>MVC软件体系结构,支æè½¯ä»¶å¼€å<E282AC>的“三线â€<C3A2>å·¥ç¨ï¼ˆç”Ÿäº§çº¿ã€<C3A3>æµ<C3A6>水线åŒäº§å“<C3A5>线)ã€
详è§<EFBFBD>项ç®Wikiã€'>
基于工作æµ<C3A6>的分布å¼<C3A5>MVC软件体系结构,支æè½¯ä»¶å¼€å<E282AC>的“三线â€<C3A2>å·¥ç¨ï¼ˆç”Ÿäº§çº¿ã€<C3A3>æµ<C3A6>水线åŒäº§å“<C3A5>线)ã€
详è§<EFBFBD>项ç®Wikiã€
</span>
</div>
<div >
<span class="tooltip" id="tooltip-29" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:359</span>
</div>
</li>
<li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='even'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/134" class="d-g-blue d-p-project-name" title="VMThunder">VMThunder</a>
(<a href="/projects/134/member" course="0">1人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title ='æ•°æ<C2B0>®ä¸­å¿ƒä¸­å¤§è§„æ¨¡å¿«é€Ÿéƒ¨ç½²è™šæŸæœºï¼Œè¾¾åˆ°ç§çº§å<C2A7>¯åŠ¨ä¸Šå<C5A0>ƒå<C692>°è™šæŸæœºçš„ç®æ ‡'>
æ•°æ<C2B0>®ä¸­å¿ƒä¸­å¤§è§„æ¨¡å¿«é€Ÿéƒ¨ç½²è™šæŸæœºï¼Œè¾¾åˆ°ç§çº§å<C2A7>¯åŠ¨ä¸Šå<C5A0>ƒå<C692>°è™šæŸæœºçš„ç®æ 
</span>
</div>
<div >
<span class="tooltip" id="tooltip-134" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:340</span>
</div>
</li>
<li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='odd'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/300" class="d-g-blue d-p-project-name" title="FetchNetworks">FetchNetworks</a>
(<a href="/projects/300/member" course="0">1人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title ='forked 4rom webmagic'>
forked 4rom webmagic
</span>
</div>
<div >
<span class="tooltip" id="tooltip-300" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:284</span>
</div>
</li>
<li style="overflow:auto;word-break:break-all;height:100%;word-wrap: break-word;" class='even'>
<div style="float: left;">
<img alt="0?1420357778" class="avatar-4" src="/images/../images/avatars/Project/0?1420357778" />
</div>
<!-- 上左ä¸å<E280B9>³ -->
<div style="float: left; margin-left: 10px; width: 380px;">
<a href="/projects/330" class="d-g-blue d-p-project-name" title="WSCRP">WSCRP</a>
(<a href="/projects/330/member" course="0">5人</a>)
</div>
<div style=" float: left;margin:5px; margin-left: 10px; width: 380px;min-height: 42px;">
<span class='font_lighter' title ='In order to meet the requirements of users, sorts of Web services coordination and recommendation methods can be adopted to recommend Web service composition. During the process of coordination and recommendation, some factors should be taken into account, such as privacy protection and so on'>
In order to meet the requirements of users, sorts of Web services coordination and reco...
</span>
</div>
<div >
<span class="tooltip" id="tooltip-330" style="cursor: pointer; display: inline-block; float: right; color: #ec6300;" title="项ç®å¾—分,综å<C2BC>ˆè€ƒè™äº†é¡¹ç®çš„å<E2809E>„项活动,å<C592><C3A5>映了该项ç®çš„æ´»è·ƒç¨åº¦">项目评分:284</span>
</div>
</li>
:ET

@ -1,22 +0,0 @@
o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1420531924.17955: @value"ÿI"ó <li style="display: block;height:60px; padding-bottom: 4px;">
<div class="inner-right" style="float: left; height: 100%; ">
<img alt="0?1420357778" class="avatar-3" src="/images/avatars/User/0?1420357778" />
</div>
<div class="inner-right" style="float: right; width:86%; height: 100%; overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" >
<span style="color: green;">
<a href="/users/6280" style="color:green;" target="_blank">lzl</a>
</span>
&nbsp;<span>å<>表了</span><span>缺陷</span>:&nbsp;<a href="/issues/2210_%E7%BC%93%E5%AD%98%E6%B5%8B%E8%AF%951(1-1)" title="缺陷 缓存æµè¯•1#1 (新增): 多å<C5A1>ç¹">缺陷 缓存æµè¯•1#1 (新增): 多å<C5A1>ç¹</a>
<p style="margin-top: 4px;">
<span style="color: rgb(172, 174, 177)">
更新于
2015-01-06 16:11
</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span style="float: right; color: rgb(172, 174, 177);">
åžå¤<C3A5>(<a href="/issues/2210_%E7%BC%93%E5%AD%98%E6%B5%8B%E8%AF%951(1-1)">0</a>)
</span>
</p>
</div>
</li>
:ET

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save