# Tag Cloud for Octopress # ======================= # # Description: # ------------ # Easy output tag cloud and category list. # # Syntax: # ------- # {% tag_cloud [counter:true] %} # {% category_list [counter:true] %} # # Example: # -------- # In some template files, you can add the following markups. # # ### source/_includes/custom/asides/tag_cloud.html ### # # <section> # <h1>Tag Cloud</h1> # <span id="tag-cloud">{% tag_cloud %}</span> # </section> # # ### source/_includes/custom/asides/category_list.html ### # # <section> # <h1>Categories</h1> # <ul id="category-list">{% category_list counter:true %}</ul> # </section> # # Notes: # ------ # Be sure to insert above template files into `default_asides` array in `_config.yml`. # And also you can define styles for 'tag-cloud' or 'category-list' in a `.scss` file. # (ex: `sass/custom/_styles.scss`) # # Licence: # -------- # Distributed under the [MIT License][MIT]. # # [MIT]: http://www.opensource.org/licenses/mit-license.php # require'stringex'
moduleJekyll
classTagCloud < Liquid::Tag
definitialize(tag_name, markup, tokens) @opts = {} if markup.strip =~ /\s*counter:(\w+)/i @opts['counter'] = ($1 == 'true') markup = markup.strip.sub(/counter:\w+/i,'') end super end
defrender(context) lists = {} max, min = 1, 1 config = context.registers[:site].config category_dir = config['root'] + config['category_dir'] + '/' categories = context.registers[:site].categories categories.keys.sort_by{ |str| str.downcase }.each do|category| count = categories[category].count lists[category] = count max = count if count > max end
html = '' lists.each do| category, counter | url = category_dir + category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase style = "font-size: #{100 + (60 * Float(counter)/max)}%" html << "<a href='#{url}' style='#{style}'>#{category}" if @opts['counter'] html << "(#{categories[category].count})" end html << "</a> " end html end end
classCategoryList < Liquid::Tag
definitialize(tag_name, markup, tokens) @opts = {} if markup.strip =~ /\s*counter:(\w+)/i @opts['counter'] = ($1 == 'true') markup = markup.strip.sub(/counter:\w+/i,'') end super end
defrender(context) html = "" config = context.registers[:site].config category_dir = config['category_dir'] categories = context.registers[:site].categories categories.keys.sort_by{ |str| str.downcase }.each do|category| html << "<li><a href='/#{category_dir}/#{category.to_url}/'>#{category}" if @opts['counter'] html << " (#{categories[category].count})" end html << "</a></li>" end html end end
本文簡單說明如何設定兩台 MySQL server,讓它們彼此互相備份資料 (Master-master 模式)。雖然這樣的設定通常是支援高可用性 (high availability) 平台的一部分,但本文不包含如何完成其他 HA 的工作。設定兩台 MySQL 伺服器互相備份,主要目的就是要確認資料的安全性;同時也提高可用性。