<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>ssig33.com - recent update</title>
    <description>ssig33's web site</description>
    <link>http://ssig33.com</link>
    <item>
      <title>text/欧米では〜</title>
      <link>http://ssig33.com/text/欧米では〜</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;欧米では〜&lt;/h2&gt;

&lt;h3&gt;障害者差別はない&lt;/h3&gt;

&lt;p&gt;んなわけあるかアマルフィのレストランで車椅子の奴追い出してるの見たことあるぞ。&lt;/p&gt;

&lt;h3&gt;安い店では店員は横暴&lt;/h3&gt;

&lt;p&gt;そんなことなかなかないし、横暴だとしたら日本人のあなたが人種差別されてます、フランスとかではそういうこと多いです。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 22 May 2013 19:54:44 +0900</pubDate>
      <guid>http://ssig33.com/text/欧米では〜</guid>
    </item>
    <item>
      <title>text/セキュリティの話</title>
      <link>http://ssig33.com/text/セキュリティの話</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;セキュリティの話&lt;/h2&gt;

&lt;h3&gt;実際に危険な例&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;データの変更が出来るドメインに XSS がある&lt;/li&gt;
&lt;li&gt;秘匿されたデータが閲覧できるドメインに XSS がある&lt;/li&gt;
&lt;li&gt;声優の住所を公開するサイトがある&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;実際には危険ではない例&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;ameblo.jp に XSS がある&lt;/li&gt;
&lt;li&gt;Twitter クライアントの Consumer Key と Consumer Secret を第三者が取得できる&lt;/li&gt;
&lt;li&gt;声優の携帯電話の情報をブログからまとめて公開するサイトがある&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;後者は大して危険ではないですし、こういうものを危険だ危険だといっていると真に危険なものについて話している人の声が届くべきところに届かないことになります。&lt;/p&gt;

&lt;p&gt;ところで実際のところ、インテリジェンスなるもの大半は公開情報を検索可能な形に編集し意味のあるデータを作成する行為であり、声優の携帯電話に対してインテリジェンスの暴力を声優に翳すなと言う批判は成立するのだと思います。&lt;/p&gt;

&lt;p&gt;例えば&lt;a href="http://seiyunokeitaidenwa.ssig33.com/seiyu/%E9%B9%BF%E9%87%8E%E5%84%AA%E4%BB%A5"&gt;鹿野優以の使っていた携帯電話の情報をまとめること&lt;/a&gt;により、鹿野優以は&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;平均 190 日に 1 回ぐらい携帯電話を買っている&lt;/li&gt;
&lt;li&gt;ドコモとソフトバンクの 2 台持ちである&lt;/li&gt;
&lt;li&gt;iPhone は 2 年に一回、ドコモの携帯電話は 1 年に 1 回以上買い替えている

&lt;ul&gt;
&lt;li&gt;飽きっぽい性格であることがなんとなく伺える&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という人物であることが明らかになります。これは単にデータだけあってもなかなか得られない知見で、編集し検索可能になった時点で明らかになることです。&lt;/p&gt;

&lt;p&gt;鹿野優以が自身のこうしたパーソナリティについて公開することを企図していたかというと、彼女のエキセントリックな性格を加味しても、そうではないと僕は推測します。よってこれはインテリジェンスの暴力とは言えるかもしれない。&lt;/p&gt;

&lt;p&gt;でもそんなのは程度問題であって、携帯ぐらいどうでもいいだろ、ツイートから住所推定してまとめてるわけじゃねえんだ、と思っています。&lt;/p&gt;

&lt;p&gt;以上です。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 21 May 2013 22:38:10 +0900</pubDate>
      <guid>http://ssig33.com/text/セキュリティの話</guid>
    </item>
    <item>
      <title>source/app.rb</title>
      <link>http://ssig33.com/source/app.rb</link>
      <description>&lt;p&gt;raw&lt;/p&gt;

&lt;h1&gt;vim:set syntax=ruby:&lt;/h1&gt;

&lt;p&gt;require &amp;quot;msgpack&amp;quot;
require &amp;#39;memcached&amp;#39;
require &amp;#39;digest/md5&amp;#39;
$memcache = Memcached.new(&amp;quot;localhost:11211&amp;quot;)
class Page &amp;lt; ActiveRecord::Base
  def subdomain request
    if self.body.split(&amp;quot;\n&amp;quot;).last == &amp;quot;subdomain only&amp;quot;
      return nil unless request.host == &amp;quot;ssig33.com&amp;quot;
      return &amp;quot;http://#{self.name}/&amp;quot;
    else
      return nil
    end
  end&lt;/p&gt;

&lt;p&gt;def blog str
    text = &amp;lt;&amp;lt;EOS&lt;/p&gt;

&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;#{self.blogtitle}&lt;/h2&gt;

&lt;p&gt;EOS
    str.sub(/# &lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/p&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;app.rb&lt;/h2&gt;

&lt;p&gt;end&lt;/p&gt;

&lt;p&gt;def blogtitle
    if self.body.split(&amp;quot;\n&amp;quot;).first =~ /%blog%\ .&lt;em&gt;/
      self.body.split(&amp;quot;\n&amp;quot;).first.sub(/%blog%\ /, &amp;#39;&amp;#39;)
    else
    self.name.sub(/^.&lt;/em&gt;?\//, &amp;#39;&amp;#39;)
    end
  end&lt;/p&gt;

&lt;p&gt;def html request
    if self.body.split(&amp;quot;\n&amp;quot;).last == &amp;quot;subdomain only&amp;quot;
      a = self.body.split(&amp;quot;\n&amp;quot;)
      a.pop
      self.body = a.join(&amp;quot;\n&amp;quot;)
    end
    case self.body.split(&amp;quot;\n&amp;quot;).first 
    when /^haml/
      return self.haml request
    when /^coffee/
      return self.coffee
    when /^ruby/
      str = &amp;quot;&amp;quot;
    when /^title/
      str = &amp;quot;&amp;quot;
      ary = self.body.split(&amp;quot;\n&amp;quot;)
      str = &amp;quot;&amp;quot;
      ary.shift
      str = ary.join(&amp;quot;\n&amp;quot;)
    else
      str = self.body
    end
    str = self.blog(str) if str =~ /%blog%/
    Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced&lt;em&gt;code&lt;/em&gt;blocks: true, tables: true).render(str)&lt;br&gt;
  end&lt;/p&gt;

&lt;p&gt;def title
    case self.body.split(&amp;quot;\n&amp;quot;).first
    when /title/
      str = self.body.split(&amp;quot;\n&amp;quot;).shift.split(&amp;quot;title\ &amp;quot;).last
    when /%blog%\ .*/
      str = self.body.split(&amp;quot;\n&amp;quot;).first.sub(/%blog%\ /, &amp;#39;&amp;#39;)
    when /haml/
      str = self.body.split(&amp;quot;\n&amp;quot;).shift.split(&amp;quot;haml\ &amp;quot;).last
    when /builder/
      str = self.body.split(&amp;quot;\n&amp;quot;).shift.split(&amp;quot;builder\ &amp;quot;).last
    when /coffee/
      str = self.body.split(&amp;quot;\n&amp;quot;).shift.split(&amp;quot;coffee\ &amp;quot;).last
    when /ruby/
      str = self.body.split(&amp;quot;\n&amp;quot;).shift.split(&amp;quot;ruby\ &amp;quot;).last
    else
      str = self.name
    end
    str.chomp!
    str = self.name if str == nil or str == &amp;quot;&amp;quot; or str == &amp;quot;haml&amp;quot;
    str.gsub(/=created&lt;em&gt;at=/, self.created&lt;/em&gt;at.getutc.to_s)
  end&lt;/p&gt;

&lt;p&gt;def raw
    ary = self.body.split(&amp;quot;\n&amp;quot;)
    ary.pop if ary.last == &amp;#39;subdomain only&amp;#39;
    ary.shift
    if ary.first =~ /^mime/
       mime = ary.shift.split(&amp;quot; &amp;quot;).last
    else
       mime = &amp;quot;text&amp;quot;
    end
    return ary.join(&amp;quot;\n&amp;quot;), mime
  end&lt;/p&gt;

&lt;p&gt;def haml request
    ary = self.body.split(&amp;quot;\n&amp;quot;)
    str = &amp;quot;&amp;quot;
    ary.shift
    str = ary.join(&amp;quot;\n&amp;quot;)
    Haml::Engine.new(str).render
  end&lt;/p&gt;

&lt;p&gt;def ruby request, env
    ary = self.body.split(&amp;quot;\n&amp;quot;)
    str = &amp;quot;&amp;quot;
    ary.shift
    if ary.first =~ /^mime/
     mime = ary.shift.split(&amp;quot; &amp;quot;).last
    else
     mime = :html
    end&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;str = ary.join(&amp;quot;\n&amp;quot;)
return [eval(str), mime]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;end&lt;/p&gt;

&lt;p&gt;def builder request
    ary = self.body.split(&amp;quot;\n&amp;quot;)
    str = &amp;quot;&amp;quot;
    ary.shift
    str = ary.join(&amp;quot;\n&amp;quot;)
    xml = ::Builder::XmlMarkup.new(:indent =&amp;gt; 2)
    eval str
  end&lt;/p&gt;

&lt;p&gt;def coffee
    ary = self.body.split(&amp;quot;\n&amp;quot;)
    str = &amp;quot;&amp;quot;
    ary.shift
    str = ary.join(&amp;quot;\n&amp;quot;)
    CoffeeScript.compile(str)
  end&lt;/p&gt;

&lt;p&gt;def layout
    ary = self.body.split(&amp;quot;\n&amp;quot;)
    ary.shift
    ary.join(&amp;quot;\n&amp;quot;)
  end
end&lt;/p&gt;

&lt;p&gt;class Store &amp;lt; ActiveRecord::Base
  def value
    MessagePack.unpack(self.body) rescue nil
  end&lt;/p&gt;

&lt;p&gt;def value= hash
    self.body = hash.to_msgpack
  end
end&lt;/p&gt;

&lt;p&gt;def page id, request, env
  file = open(&amp;quot;public/#{id}/index.html&amp;quot;).read rescue nil
  return file if file
  @page = Page.where(:name =&amp;gt; id).order(&amp;quot;created&lt;em&gt;at desc&amp;quot;).first
  if request.query&lt;/em&gt;string 
    q = CGI.parse(request.query&lt;em&gt;string)
    p q
    if q[&amp;#39;history&lt;/em&gt;id&amp;#39;] and q[&amp;#39;history&lt;em&gt;id&amp;#39;].first != nil and q[&amp;#39;history&lt;/em&gt;id&amp;#39;].first != &amp;#39;&amp;#39;
      @page = Page.find(q[&amp;#39;history_id&amp;#39;].first)
    end
  end&lt;/p&gt;

&lt;p&gt;redirect &amp;quot;&lt;a href="http://ssig33.com/edit/#%7Bid%7D"&gt;http://ssig33.com/edit/#{id}&lt;/a&gt;&amp;quot; unless @page&lt;/p&gt;

&lt;p&gt;redirect @page.subdomain(request) if @page.subdomain(request)&lt;/p&gt;

&lt;p&gt;return [@page.haml(request), :html] if @page.body.split(&amp;quot;\n&amp;quot;).first =~ /^haml/&lt;/p&gt;

&lt;p&gt;case @page.body.split(&amp;quot;\n&amp;quot;).first
  when /^raw/ , /^layout/
    raw, mime = @page.raw
    return [raw, :&amp;quot;#{mime}&amp;quot;]
  when /^coffee/
    return [@page.coffee, :js]
  when /^html/
    return [@page.raw, :html]
  when /^builder/
    return [@page.builder(request), :xml]
  when /^ruby/ 
    return @page.ruby(request, env)
  else
    if layout = Page.where(:name =&amp;gt; &amp;quot;layout&amp;quot;).order(&amp;quot;created_at desc&amp;quot;).first
      return [haml(layout.layout), :html]
    else
      return [haml(:page), :html]
    end
  end
end&lt;/p&gt;

&lt;p&gt;configure do
  set :logging, false
  set :app&lt;em&gt;file, _&lt;/em&gt;FILE__
  use Rack::Session::Cookie, :secret =&amp;gt; &amp;#39;fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or&amp;#39;
  use Rack::Csrf, :raise =&amp;gt; true
end&lt;/p&gt;

&lt;p&gt;get &amp;#39;/&amp;#39; do
  begin
    cache = $memcache.get(&amp;quot;site/#{CGI.escape request.path&lt;em&gt;info}&amp;quot;)
    c = JSON.parse cache
    type = c[&amp;#39;type&amp;#39;]
    body = c[&amp;#39;body&amp;#39;]
  rescue Memcached::NotFound
    id = &amp;#39;index&amp;#39;
    id.chop! if id.reverse[0] == &amp;quot;/&amp;quot;
    body, type = page id, request, env
    for&lt;/em&gt;cache = {type: type, body: body}.to&lt;em&gt;json
    $memcache.set(&amp;quot;site/#{CGI.escape request.path&lt;/em&gt;info}&amp;quot;, for&lt;em&gt;cache, 60)
  end
  #response[&amp;#39;Access-Control-Allow-Origin&amp;#39;] = &amp;#39;&lt;em&gt;&amp;#39;
  #response.headers[&amp;quot;Access-Control-Allow-Origin&amp;quot;] = &amp;quot;&lt;/em&gt;&amp;quot; 
  content&lt;/em&gt;type type
  body
end&lt;/p&gt;

&lt;p&gt;get %r{/.*favicon.ico} do
   content_type :png
   open(&amp;quot;public/favicon.ico&amp;quot;).read
end&lt;/p&gt;

&lt;p&gt;get %r{/edit/(.*)} do
  @id = params[:captures].first.to&lt;em&gt;s
  @page = Page.where(:name =&amp;gt; @id).order(&amp;quot;created&lt;/em&gt;at desc&amp;quot;).first
  @page = Page.new if @page == nil
  ary = Page.where(:name =&amp;gt; &amp;quot;source/edit.haml&amp;quot;).order(&amp;quot;created_at desc&amp;quot;).first.body.split(&amp;quot;\n&amp;quot;)
  ary.shift
  status 404
  haml ary.join(&amp;quot;\n&amp;quot;)
end&lt;/p&gt;

&lt;p&gt;get %r{/(.&lt;em&gt;)} do
  if request.query&lt;em&gt;string.empty?
    cache&lt;/em&gt;path = &amp;quot;site/#{CGI.escape request.path&lt;em&gt;info}&amp;quot; 
  else
    cache&lt;/em&gt;path = &amp;quot;site/#{CGI.escape request.path&lt;em&gt;info+&amp;#39;?&amp;#39;+request.query&lt;/em&gt;string}&amp;quot;
  end
  cache&lt;em&gt;path = Digest::MD5.hexdigest(cache&lt;/em&gt;path).to&lt;em&gt;s
  begin
    cache = $memcache.get(cache&lt;/em&gt;path)
    c = JSON.parse cache
    type = c[&amp;#39;type&amp;#39;]
    body = c[&amp;#39;body&amp;#39;]
  rescue Memcached::NotFound
    id = params[:captures].first.to&lt;em&gt;s
    id.chop! if id.reverse[0] == &amp;quot;/&amp;quot;
    body, type = page id, request, env
    for&lt;/em&gt;cache = {type: type, body: body}.to&lt;em&gt;json
    if type == :js or type == :css
      $memcache.set(cache&lt;/em&gt;path, for&lt;em&gt;cache, 80000)
    else
      $memcache.set(cache&lt;/em&gt;path, for_cache, 30)
    end
  end
  #response[&amp;#39;Access-Control-Allow-Origin&amp;#39;] = &amp;#39;&lt;/em&gt;&amp;#39;
  #response.headers[&amp;quot;Access-Control-Allow-Origin&amp;quot;] = &amp;quot;*&amp;quot; 
  content_type type
  body
end&lt;/p&gt;

&lt;p&gt;post &amp;#39;/update&amp;#39; do
  if Digest::MD5.hexdigest(params[:password]).to&lt;em&gt;s != PASSWORD
    return &amp;quot;ERROR&amp;quot;
  else
    begin
      $memcache.delete Digest::MD5.hexdigest(&amp;quot;site/#{CGI.escape &amp;quot;/&amp;quot;+CGI.unescape(params[:id])}&amp;quot;).to&lt;/em&gt;s
    rescue Memcached::NotFound
    end
    page = Page.new
    page.name = params[:id]
    page.body = params[:body]
    page.save
    key = Digest::MD5.hexdigest(page.name).to&lt;em&gt;s
    Groonga[&amp;#39;Pages&amp;#39;].add key unless Groonga[&amp;#39;Pages&amp;#39;][key]
    Groonga[&amp;#39;Pages&amp;#39;][key].name = page.name
    Groonga[&amp;#39;Pages&amp;#39;][key].text = page.body
    Groonga[&amp;#39;Pages&amp;#39;][key].page&lt;/em&gt;id = page.id
    redirect &amp;quot;&lt;a href="http://ssig33.com/#%7Bparams%5B:id%5D%7D"&gt;http://ssig33.com/#{params[:id]}&lt;/a&gt;&amp;quot;
  end
end&lt;/p&gt;

&lt;p&gt;post &amp;#39;/destroy&amp;#39; do
  raise if Digest::MD5.hexdigest(params[:password]).to&lt;em&gt;s != PASSWORD
  Page.where(:name =&amp;gt; params[:id]).delete&lt;/em&gt;all
  redirect &amp;quot;&lt;a href="http://ssig33.com/"&gt;http://ssig33.com/&lt;/a&gt;&amp;quot;
end&lt;/p&gt;

&lt;p&gt;post &amp;#39;/usr2&amp;#39; do
  raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD
  system &amp;quot;rm site.pid.oldbin&amp;quot;
  system &amp;quot;kill -QUIT &lt;code&gt;cat site.pid&lt;/code&gt;&amp;quot;
  redirect &amp;quot;&lt;a href="http://ssig33.com/"&gt;http://ssig33.com/&lt;/a&gt;&amp;quot;
end&lt;/p&gt;

&lt;p&gt;post %r{/(.*)} do
  id = params[:captures].first.to_s
  id.chop! if id.reverse[0] == &amp;quot;/&amp;quot;
  page id, request, env
end&lt;/p&gt;

&lt;p&gt;error do
  &amp;quot;error... #{env[&amp;#39;sinatra.error&amp;#39;]}&amp;quot;
end&lt;/p&gt;

&lt;p&gt;helpers do
  def h str
    CGI.escapeHTML str.to_s
  rescue
    &amp;quot;&amp;quot;
  end&lt;/p&gt;

&lt;p&gt;def title
    if request.path&lt;em&gt;info == &amp;quot;/&amp;quot; or request.path&lt;/em&gt;info == &amp;quot;/index&amp;quot;
      return &amp;quot;ssig33.com&amp;quot;
    else
      return &amp;quot;ssig33.com - #{@page.title}&amp;quot;
    end
  end
end&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 21 May 2013 21:16:42 +0900</pubDate>
      <guid>http://ssig33.com/source/app.rb</guid>
    </item>
    <item>
      <title>text/Google I/O で発表されたサービスについて</title>
      <link>http://ssig33.com/text/Google I/O で発表されたサービスについて</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;Google I/O で発表されたサービスについて&lt;/h2&gt;

&lt;p&gt;使ってから言及しろと思うわけです。&lt;/p&gt;

&lt;h3&gt;新しい Google Play Music&lt;/h3&gt;

&lt;p&gt;UI が Windows 8 っぽくなって猛烈に重くなりました。スクロールがガクガクで曲再生しながらスクロールしたらブラウザ(Google Chrome)落ちた。 Android アプリのほうはどうなってるのか知らん。&lt;/p&gt;

&lt;p&gt;例によってアメリカからしか新機能は使えません。アメリカ人以外からは Web がゴミになっただけ。&lt;/p&gt;

&lt;h3&gt;新しい Google+&lt;/h3&gt;

&lt;p&gt;Google は使い辛い SNS の頂点を極めようとしているのだと思います。幅の広いシングルカラムは素早く読むことが出来、幅の狭いカラムが複数並んでいるものは欧米人が視覚的には好むが実際には読み辛いことが各種の実験から知られています。&lt;/p&gt;

&lt;p&gt;つまり新しい Google+ は見栄えだけをとり実質的な使いやすさはゴミ箱に捨てているということになります。実際使ってみると分かりますが驚異的な使い辛さです。&lt;/p&gt;

&lt;h3&gt;新しい Hangout&lt;/h3&gt;

&lt;p&gt;Google Talk が Hangout とブランド的に統合されました。ブランド的に統合されたというだけで、システム的にメッセージなどが同じところに乗るようになったというわけではないので、意味不明の度合いはさらに激しく上がっています。グループチャットの仕組みは極めて分かりづらく、同じようなメンバーが入っているチャットを複数作ってしまうなどといった事故が起きがちです。&lt;/p&gt;

&lt;p&gt;Video Call 、つまり従来の Hangout と呼ばれていたものについては大幅に劣化しました。ビデオチャットアプリのはずなのに、ビデオの共有が多くの環境で正しく行なえません。いろいろと検証したところ Windows 上の Chrome ぐらいでしかまともに動かないようです。左右反転されて共有される、複数の入力ソースがある場合それが激しく点滅される、全くビデオが送信されない、全くビデオを受信できないという事態が頻発します。&lt;/p&gt;

&lt;p&gt;また「キーボード入力中は音声をミュートする」というおせっかいな機能がついたせいで、テキストチャットとビデオチャットを平行してやるということが困難になりました。 Hangout の利点としてビデオチャットに自分のパソコンの画面を簡単に流しこめるというのがあって、これを使ってデスクトップの様子を共有しながらテキストチャットをやるというのが出来て非常に楽しかったのですが、テキストチャットをずっとやると音声が事実上ずっと流れなくなるので著しく不便です。&lt;/p&gt;

&lt;h3&gt;総評&lt;/h3&gt;

&lt;p&gt;近年 Google が作る多くの Web アプリケーションと同様ゴミです。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 17 May 2013 09:27:17 +0900</pubDate>
      <guid>http://ssig33.com/text/Google I/O で発表されたサービスについて</guid>
    </item>
    <item>
      <title>北方謙三の『史記 武帝紀』という小説について</title>
      <link>http://ssig33.com/text/北方謙三の『史記 武帝紀』</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;北方謙三の『史記 武帝紀』という小説について&lt;/h2&gt;

&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=waraeyo-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=4758437262" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;

&lt;p&gt;最近文庫版が出て買いやすくなったこの小説ですが、読むにあたって一点知っておく必要があると思うことがあるのですが、その点言及してる人が全然いないので書いておきます。あるいはみんな分かってそういうこと書くのは無粋なだけなのかもしらんがまあいい。&lt;/p&gt;

&lt;p&gt;北方謙三は中島敦の大ファンであることを公表している作家です。本作はそういった事情の中で執筆されており、内容としては中島敦の『李陵』の BL 二次創作です。李陵知らないと後半あんま楽しめないと思います。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.aozora.gr.jp/cards/000119/files/1737_14534.html"&gt;青空文庫に『李陵』ある&lt;/a&gt;ので一読の後本作を読んだほうがいいと思います。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 17 May 2013 08:59:51 +0900</pubDate>
      <guid>http://ssig33.com/text/北方謙三の『史記 武帝紀』</guid>
    </item>
    <item>
      <title>text/Rails 4 にして動かなかったやつ</title>
      <link>http://ssig33.com/text/Rails 4 にして動かなかったやつ</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;Rails 4 にして動かなかったやつ&lt;/h2&gt;

&lt;p&gt;もう皆々様におかれましては Ruby 1.9 の廃絶が済んで、今月末とも言われる Rails 4 への移行の為 RC1 で準備をしていることと思います。&lt;/p&gt;

&lt;p&gt;〜〜 という新しい機能があるから 〜〜 のように対応すればいい みたいのは Web 上に沢山あるんだけど、 Rails 4 ではこれ動かんわ、というのがあんまり出てきていないように感じます。&lt;/p&gt;

&lt;p&gt;出てきてない理由単に「動かないものが殆どない」というのが理由なんだろうという気がしますが。&lt;/p&gt;

&lt;p&gt;手元で動かなかったの一個だけありました。&lt;/p&gt;

&lt;p&gt;どうも spork-rails が動きません。問題を認識している人達はいて、こういう &lt;a href="https://github.com/sporkrb/spork-rails/pull/13"&gt;pull req&lt;/a&gt; が来てたりするんですが、なんとこの pull req のブランチは動きません。糞が。&lt;/p&gt;

&lt;p&gt;というわけでいろいろとを読むと &lt;a href="http://github.com/railstutorial/spork-rails"&gt;railstutorial/spork-rails&lt;/a&gt; が動くっぽいということなので、 Gemfile には&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  gem &amp;#39;spork-rails&amp;#39;, github: &amp;#39;railstutorial/spork-rails&amp;#39;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;とでも書いておきましょう。&lt;/p&gt;

&lt;p&gt;これでめでたしめでたしという訳には行かないなーと思っていて、こういう問題があるのに spork-rails の動向が 5 ヶ月ぐらい止まっているのが現状でして、もしかしたら Rails4 世代に移行するとともに spork 打ち捨てられるみたいなふうになるんじゃねーのかとかなんとか不安に思う次第です。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 14 May 2013 17:27:42 +0900</pubDate>
      <guid>http://ssig33.com/text/Rails 4 にして動かなかったやつ</guid>
    </item>
    <item>
      <title>text/綺麗なコードか汚いコードかという話</title>
      <link>http://ssig33.com/text/綺麗なコードか汚いコードかという話</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;綺麗なコードか汚いコードかという話&lt;/h2&gt;

&lt;p&gt;延々と議論されるテーマですが、実態として&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;綺麗なコード: 動く&lt;/li&gt;
&lt;li&gt;汚いコード: 動かない&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;であることが殆どだと思いますので、あえて汚くする理由がどこにもない。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 14 May 2013 13:44:43 +0900</pubDate>
      <guid>http://ssig33.com/text/綺麗なコードか汚いコードかという話</guid>
    </item>
    <item>
      <title>text/プログラマの話</title>
      <link>http://ssig33.com/text/プログラマの話</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;プログラマの話&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gin0606.hatenablog.com/entry/2013/05/13/215449"&gt;プログラミングはアプリを作ることの手段なのか&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/mizchi/20130512/1368351397"&gt;プログラミングはそれ自体が目的であっていい&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/moto_maka/20130512/1368308092"&gt;プログラミングを勉強したい人が勉強する前にすべきこと&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rosylilly.hatenablog.com/entry/2013/05/13/231447"&gt;プログラミングの話&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;これらの記事を読めば分かる通りプログラマにはこういう鬱陶しい話が大好きな人がとても多いので、そういう人達と楽しく付き合っていく自信が無いならプログラマなど目指さない方がいい。真面目に。&lt;/p&gt;

&lt;p&gt;「人それぞれ」で済む話にこうやって長文を書くのがプログラマです。&lt;/p&gt;

&lt;p&gt;僕はこういう話が大好きです。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 14 May 2013 08:40:45 +0900</pubDate>
      <guid>http://ssig33.com/text/プログラマの話</guid>
    </item>
    <item>
      <title>text/自分語りが〜みたいな話</title>
      <link>http://ssig33.com/text/自分語りが〜みたいな話</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;自分語りが〜みたいな話&lt;/h2&gt;

&lt;p&gt;〜〜のフリして自分語りするのがつまらないみたいのはよく言われるんですが、そういうことをやっている作品でそこそこ高評価を得ているものはいろいろあって、ド定番から言えばスターウォーズとかそんなんだろ。&lt;/p&gt;

&lt;p&gt;「自分語り」という行為がつまらないのではなくて、文章力など表現力の問題なので、「自分語りがつまらない人間」というのが「つまらない人間」だということだと思います。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Mon, 13 May 2013 13:45:57 +0900</pubDate>
      <guid>http://ssig33.com/text/自分語りが〜みたいな話</guid>
    </item>
    <item>
      <title>翠星のガルガンティアのターゲットとか実際にやってることとかについて</title>
      <link>http://ssig33.com/text/翠星のガルガンティアのターゲットとかについて</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;翠星のガルガンティアのターゲットとか実際にやってることとかについて&lt;/h2&gt;

&lt;p&gt;現在放送中のアニメ翠星のガルガンティアですが、公式サイトを見てみると、以下のようなことが書かれています。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;このアニメは企画段階から 10 代後半〜 20 代前半の年齢層、つまりこれから社会に出る、或いは社会に出たばかりの戸惑いを感じている若者たちへ向けたメッセージ（以後省略）
&lt;img src="http://ssig33.com/gyazo/897a7dd898f49009d454c27b3e6a371f.png" alt="コメント"&gt;
&lt;a href="http://gargantia.jp/#introduce_comment_2"&gt;コメント | シリーズ構成・脚本：虚淵 玄（ニトロプラス）&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;そこで実際にアニメで放送された内容を見ていくと、&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;感謝の言葉を知らなかった主人公が「ありがとう」と言えるようになる話（3 話）&lt;/li&gt;
&lt;li&gt;病人との触れ合いのなかで多様性こそが社会の強さを作ると知る話（4 話）&lt;/li&gt;
&lt;li&gt;仕事をしたいという漠然とした意識を持ち、人がそれぞれにいろいろと仕事をすることで支え合い社会を作っていると実感する話（5 話）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;と幼児向けのアニメや公共広告機構の CM もびっくりの教育アニメとなっております。&lt;/p&gt;

&lt;p&gt;いくらなんでもこれおかしいだろと思う次第なわけです。コレようするにこのアニメ作ってる人達は「10 代後半から 20 代後半のアニオタは、まるで異星人であるかのように社会に馴染んでおらず全く常識がなく、人にありがとうという言葉も言えない程のどうしようもない人格で、社会の多様性についての見識などまるでなく、人と人が仕事を介して支えあっているというような認識もない人間である」と考えているということになるんじゃないかと。&lt;/p&gt;

&lt;p&gt;さすがにそんな奴いないだろ。「社会に出る、或いは社会に出たばかりの戸惑いを感じている若者」というのは上記のようなことは頭で分かっていても実践出来ないだとか、そういう問題なんじゃねーかとさすがに思うんです。&lt;/p&gt;

&lt;p&gt;いや俺が知らんだけでアニオタってそういう奴ばっかなのか、&lt;a href="http://ssig33.com/text/%E5%B1%B1%E5%B2%B8%E5%92%8C%E5%88%A9%E3%81%AE%E8%A9%B1"&gt;山岸和利&lt;/a&gt;だってもうちょっとまともだぞ。&lt;/p&gt;

&lt;p&gt;「社会生活」 なる事柄について、何もかも理屈が分かっていないという人はさすがに少なくて、実践のレベルで苦労している人が多いのだと思いますし、このアニメでは実践の部分についてはエイミーという都合のいい美少女がやってきて解決してくれます。&lt;/p&gt;

&lt;p&gt;いくらなんでも若いアニオタ馬鹿にしすぎなんじゃないかと思います。&lt;/p&gt;

&lt;p&gt;ちなみにここまでボロクソに言ったアニメを延々と見続けている理由は褐色阿澄佳奈がかわいいからです。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 12 May 2013 21:29:32 +0900</pubDate>
      <guid>http://ssig33.com/text/翠星のガルガンティアのターゲットとかについて</guid>
    </item>
    <item>
      <title>**(本のジャンル)初心者向けみたいなエントリを書いて</title>
      <link>http://ssig33.com/text/**(本のジャンル)初心者向け</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;**(本のジャンル)初心者向けみたいなエントリを書いて&lt;/h2&gt;

&lt;p&gt;自分の若いころの思い出を若者に押し付けようとする老害というのが跡を断たないわけですが。僕が考えるに&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kindle で読める&lt;/li&gt;
&lt;li&gt;文庫版が安い&lt;/li&gt;
&lt;li&gt;なるべく薄い&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;本を勧めたほうがいいんじゃないのと思う次第です。実際には逆であることが多い。僕も自分の経験から言えば「中国経済史初心者はまずは&lt;a href="http://www.amazon.co.jp/dp/4589013371"&gt;中国塩政史の研究&lt;/a&gt;から読めや」とか言いたくなるところなんですが、それじゃあどうしようもないわけです。&lt;/p&gt;

&lt;p&gt;ですが現実的に**初心者向けみたなエントリを書く人は、自分と同じ体験をしてきた人から「うん、うん、そうだよね」みたいな反応を貰って自分の人生について他人から承認されたいだけですからどうにもならないし、若者はそういうエントリを真に受けてはいけない。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 12 May 2013 11:32:18 +0900</pubDate>
      <guid>http://ssig33.com/text/**(本のジャンル)初心者向け</guid>
    </item>
    <item>
      <title>text/山岸和利の話</title>
      <link>http://ssig33.com/text/山岸和利の話</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;山岸和利の話&lt;/h2&gt;

&lt;p&gt;はじめに: 10 万円の件に関しては流布してる説がだいたい真実です。以上。&lt;/p&gt;

&lt;p&gt;山岸和利の能力などについていろいろ言っている人がいるので、客観的に確かめられることと、友人同僚として個人的に知っていることと感じていることを書く。&lt;/p&gt;

&lt;h3&gt;客観的に確かめられること&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/ykzts"&gt;Github&lt;/a&gt; 見ろや、で済ませたいところですが、ここで見ていきましょう。&lt;/p&gt;

&lt;p&gt;全体的に JavaScript に詳しいことが伺えます。&lt;a href="https://github.com/ykzts/node-gyazo"&gt;node.js も無難に使えます&lt;/a&gt;。 &lt;a href="https://github.com/ykzts/coloring-xml.xslt"&gt;XSLT というロストテクノロジーに精通していること&lt;/a&gt;も伺えます&lt;/p&gt;

&lt;p&gt;Ruby On Rails で作成された Web アプリケーションの開発を行なうことができ、 fastladder プロジェクトにコントリビュートしていたことがあります。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/fastladder/fastladder/pull/151"&gt;https://github.com/fastladder/fastladder/pull/151&lt;/a&gt; (JavaScript)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fastladder/fastladder/pull/145"&gt;https://github.com/fastladder/fastladder/pull/145&lt;/a&gt; (Ruby)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fastladder/fastladder/pull/141"&gt;https://github.com/fastladder/fastladder/pull/141&lt;/a&gt; (CSS および Rails 固有の事情)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fastladder/fastladder/pull/134"&gt;https://github.com/fastladder/fastladder/pull/134&lt;/a&gt; (Ruby)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fastladder/fastladder/pull/132"&gt;https://github.com/fastladder/fastladder/pull/132&lt;/a&gt; (Ruby)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fastladder/fastladder/pull/129"&gt;https://github.com/fastladder/fastladder/pull/129&lt;/a&gt; (JavaScript HTML)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;他多数。カッコ内はその pull req で扱っている言語というか分野というかとにかくそういうのです。コードはかなり綺麗といっていい部類ではないかと思います。&lt;/p&gt;

&lt;h3&gt;個人的に知っていること&lt;/h3&gt;

&lt;h4&gt;技術的な面について&lt;/h4&gt;

&lt;p&gt;山岸和利は僕の友人であり、同僚でもあります。山岸和利共々僕達が所属している企業については秘匿されています（10 万円の件が秘匿の理由です）。&lt;/p&gt;

&lt;p&gt;仕事の都合もあり最近は Rails アプリを書かされていることが多いですが本来は JavaScript と Python を好んでいます。いわゆる W3C 信者の類いで、様々な仕様を読むことを趣味としています。 W3C 関連の仕様と JavaScript の仕様に関しては精通していると言えると思います。&lt;/p&gt;

&lt;p&gt;その手の仕様屋にたまに見られるようにそれを実務に生かせないという傾向は全くありません。その場その場の事情に応じて必要な妥協をすることが出来ます。&lt;/p&gt;

&lt;p&gt;自動化テストに関する興味はほぼ全く無いように思われます。それが致命的にならない程度の作業の正確さがあると思います。&lt;/p&gt;

&lt;h4&gt;技術的な面以外について&lt;/h4&gt;

&lt;p&gt;かなり若年であり、故に社会常識に疎い部分があります。これが 10 万円事案に巻き込まれた最大の原因だと思います。&lt;/p&gt;

&lt;p&gt;会話能力は通常のレベルで、口頭、メール、チャットなどの手段で問題なく意思疎通を取ることが出来ます（非エンジニアの人にはなかなか想像出来ないこととは思いますが、メール、チャットでは問題なく意思疎通出来るのに口頭ではまともに会話出来ない人とかザラにいるんですよ）。&lt;/p&gt;

&lt;p&gt;友人として遇するには気遣いなどについていくらか欠点がありますが、すくなくとも僕にとっては致命的ではないです。美少女が無惨に殺害されるアニメなどを非常に好むなど趣味趣向は若干アブノーマルな部類に入りますが、それがコミュニケーションにおいて致命的な障害になるタイプではありません。 GJ 部見て乙女新党のイベント行ってました。&lt;/p&gt;

&lt;p&gt;以上。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 11 May 2013 22:41:46 +0900</pubDate>
      <guid>http://ssig33.com/text/山岸和利の話</guid>
    </item>
    <item>
      <title>text/レ・ミゼラブル見てきた</title>
      <link>http://ssig33.com/text/レ・ミゼラブル見てきた</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;レ・ミゼラブル見てきた&lt;/h2&gt;

&lt;p&gt;いろいろあって見に行った。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;平野綾のエポニーヌは本当によかった

&lt;ul&gt;
&lt;li&gt;この人は本当に怪物的な俳優だと思う。どんな役でも演じられるほど器用でしかも主役級もやれる。&lt;/li&gt;
&lt;li&gt;マーロン・ブロンドやエドワード・ノートンなどと同列に論じられるべき人だと思っている。&lt;/li&gt;
&lt;li&gt;プレビュー初日に行ったんですが平野綾よかったっていってる人が Twitter に 10 人ぐらいしかいなかったのでライフライナーはもう皆死んだのだと思う。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;それ以外は何ひとつとしてよくなかった

&lt;ul&gt;
&lt;li&gt;脚色は本当に最悪。このブログを読むようなアニオタに向けて解説すると横手美智子の脚本みたいな感じでした。もっと分かりやすく言えば RDG を想像してもらえばいい。&lt;/li&gt;
&lt;li&gt;絵作りも悪い。悪すぎる。適当な美術、ストーリー的にしかたないところはあるにせよ常に暗すぎて何も見えない、意味不明な映像を使用した演出。&lt;/li&gt;
&lt;li&gt;歌もかなり聞きとり辛いところが多かった&lt;/li&gt;
&lt;li&gt;平野綾以外演技正直微妙&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;総じてダメなんですが平野綾が本当にいいので、その為だけに見る価値はあるんじゃないかと思いました。平野綾がいない日とか、平野綾が嫌いな人とかは見ないほうがいいと思います。&lt;/li&gt;
&lt;li&gt;&lt;p&gt;隣の女が「私仮面ライ（省略されました）&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
      <pubDate>Fri, 10 May 2013 20:25:55 +0900</pubDate>
      <guid>http://ssig33.com/text/レ・ミゼラブル見てきた</guid>
    </item>
    <item>
      <title>text/ベトナムで働くとして</title>
      <link>http://ssig33.com/text/ベトナムで働くとして</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;ベトナムで働くとして&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ものによるが現状物価日本の 1/10 〜 1/7 ぐらい

&lt;ul&gt;
&lt;li&gt;都市部の年収が 2 千ドルぐらいなのでベトナム人の生活は日本人規準ではまだまだ結構苦しいということにはなる&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;物価にせよ年収にせよまだまだ上昇傾向&lt;/li&gt;
&lt;li&gt;日本にも関わりを残すとすると、日本円換算での収入は為替で大幅に変動する&lt;/li&gt;
&lt;li&gt;たまには日本に帰ってきたいよね&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;とか考えると結局なんだかんだで最低でも日本で同じような職責を背負う時の 1/2 〜 2/3 ぐらいは無いとつらいよねと思う。対日本比 100% あればライフスタイルにもよるが結構いい感じだと思う。&lt;/p&gt;

&lt;p&gt;で。ホーチミンとかハイフォンとかで起業した日本人が日本人雇いたい！！！みたいな時にそういう給与レンジでオファーしてる事例をあんまりみないので、そりゃまあ誰も応募せんわと思う次第。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Thu, 09 May 2013 08:17:04 +0900</pubDate>
      <guid>http://ssig33.com/text/ベトナムで働くとして</guid>
    </item>
    <item>
      <title>発展途上国でスムースに SIM を買うにあたって注意した方がいいこと</title>
      <link>http://ssig33.com/text/発展途上国でスムースに SIM を買う</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;発展途上国でスムースに SIM を買うにあたって注意した方がいいこと&lt;/h2&gt;

&lt;p&gt;SIM フリーな携帯電話機が国内において入手が容易となった昨今、海外旅行をするにあたって国内キャリアの高価な海外ローミングを使用するのではなく、現地キャリアの安価なプリペイド SIM カードを購入するという選択肢はますます一般的なものになってきていると思います。&lt;/p&gt;

&lt;p&gt;また携帯電話のデータ通信インフラなどが先進国だけでなく発展途上国にも浸透してきており、わりといろんな国で SIM を買うことになるかと思います。&lt;/p&gt;

&lt;p&gt;ここで発展途上国で SIM を買うにあたって以下の 2 点を注意しておくと非常にやりとりをスムースに済ますことができます&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;iPhone ではなく Android を用意しておく&lt;/li&gt;
&lt;li&gt;携帯電話の言語設定は英語にしておく&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;適当な屋台で SIM 売ってるなんていう場合でも（往々にして親切心から）店員がアクティベーションだけでなく疎通確認をしてくれることが多いです。それにあたって iPhone を出すとそれいくらで買ったのとかなんとか絡まれてめんどくさいことになる事例が多いです。 iPhone で使うにせよなるべく安そうな Android を渡して手続きを済ませてもらった方がいいです。&lt;/p&gt;

&lt;p&gt;言語設定を英語にしておくというのも店員が設定をすぐやれるようにするために必須です。また同じような理由から Windows Phone などあまり世に浸透してないデバイスを出すのもやめたほうがいいです。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 04 May 2013 17:43:29 +0900</pubDate>
      <guid>http://ssig33.com/text/発展途上国でスムースに SIM を買う</guid>
    </item>
    <item>
      <title>text/HDD を毎月 12TB 使う人について</title>
      <link>http://ssig33.com/text/HDD を毎月 12TB 使う人について</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;HDD を毎月 12TB 使う人について&lt;/h2&gt;

&lt;p&gt;最近話題になっていた HDD を毎月 12TB 消費する人についてですが、僕が今手元のファイルを計算してみたところ、&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;無料のアニメを全部録画して MPEG2-TS で保存した場合、月間 3000GB 〜 4000GB ぐらい必要&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という感じになります。なんで曖昧な数字しか出せないかというと 720p の MP4 に変換してしまっているからです。だいたいエンコードで 1/7 〜 1/9 ぐらいまで圧縮していて、手元のアニメが月間で 430GB という数字だったので上記のような数字が出てきます。&lt;/p&gt;

&lt;p&gt;僕はそれ以外にもいろいろ録画していて、直近一ヶ月の実績として月間 1250GB ほど録画しています。エンコード後の数字なので TS で保存すれば 10000GB 〜 14000GB ぐらいになるんでしょうか。&lt;/p&gt;

&lt;p&gt;というわけで実感として 12TB の HDD を毎月消費するというのはそんなにありえない量ではないと思います。資源でいえばテレビチューナーは 8 局同時録画ぐらいの量あればいいと思います。具体的には PT3 2 枚で運用みたいなことしてる可能性が高いと思う。&lt;/p&gt;

&lt;p&gt;それで、その程度の量の録画なら Intel Quick Sync Video などの技術を使うことで 720p の MP4 に変換することが可能です。そして MP4 にしてしまえば月間 1TB ちょいの HDD 消費ですみますし、&lt;a href="https://github.com/ssig33/pig-media-server"&gt;ブラウザベースのメディアプレイヤー&lt;/a&gt;とかを作って遠隔地からも動画を見れるようにしてガンガン見たりして有効に動画という資源を使えるのではないかと思います。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Thu, 02 May 2013 20:03:12 +0900</pubDate>
      <guid>http://ssig33.com/text/HDD を毎月 12TB 使う人について</guid>
    </item>
    <item>
      <title>text/キャリアパス分離の話</title>
      <link>http://ssig33.com/text/キャリアパス分離の話</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;キャリアパス分離の話&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;幹部社員とそうじゃない社員のキャリアパスを完全に分ける&lt;/li&gt;
&lt;li&gt;全員同じところからスタートしてすこしづつふるいにかける&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;というのがどちらが優れているかというのを論争するのが皆さん大好きなわけですが。実際問題どちらの方法にも成功例失敗例いくらでもあるわけです。&lt;/p&gt;

&lt;p&gt;キャリアパス分離型の失敗例として日本で最も良く知られる事例は旧日本軍でしょう。ですがこれはキャリアパスが分離されていることが問題なのではなくて&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;陸軍大学校の教育内容がアレだった&lt;/li&gt;
&lt;li&gt;陸軍大学校以降特に教育機関がないなどその後のキャリアパスの整備が酷かった&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という話だと一般に理解されていると思います。戦後後継組織の陸自ではその辺いろいろ考慮して教育機関を大量整備したり外部の大学院に自衛官送り出したりいろいろしてます。&lt;/p&gt;

&lt;p&gt;結局のところキャリアパス全体がよく整備されているかどうかという個々の事例によって優劣が決まるので「ユニクロはキャリアパス分離だから糞」みたいなこと言ってもしょうがないと思います。「ユニクロ入れば海外で働くエリートになれるよ〜」って事実誤認させてる（あるいは大学生がそういう風に誤認しているのを否定しない）というのは糞なんでしょうが。&lt;/p&gt;

&lt;p&gt;それはともかく引っ越してきたのだがこの辺にはユニクロがない。狛江市は東京の闇のようなところだと思う。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 24 Apr 2013 11:51:13 +0900</pubDate>
      <guid>http://ssig33.com/text/キャリアパス分離の話</guid>
    </item>
    <item>
      <title>others</title>
      <link>http://ssig33.com/others</link>
      <description>&lt;h2&gt;ssig33.com other contents&lt;/h2&gt;

&lt;p&gt;&lt;a href="/%E9%80%A3%E7%B5%A1%E5%85%88"&gt;連絡先&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://text.ssig33.com"&gt;Old Texts&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/onagawa"&gt;女川町の様子&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://kure.ssig33.com/"&gt;Please&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/arakawatomonori"&gt;Arakawa Tomonori&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/sitemap"&gt;Sitemap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/blog"&gt;Blog(old)&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href="/"&gt;back to the top&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 23 Apr 2013 18:49:31 +0900</pubDate>
      <guid>http://ssig33.com/others</guid>
    </item>
    <item>
      <title>index</title>
      <link>http://ssig33.com/index</link>
      <description>&lt;h1&gt;ssig33.com&lt;/h1&gt;

&lt;h2&gt;Contents &amp;amp; Service&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://ssig33.com/text"&gt;Texts&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://icon.ssig33.com"&gt;Rolling Icon&lt;/a&gt; &lt;em&gt;Twitter Icon Manager that&amp;#39;s very cool.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://kanekure.ssig33.com"&gt;Money Please&lt;/a&gt; &lt;em&gt;KANEKURE Platform&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://tumblelog.ssig33.com"&gt;Tumblelog&lt;/a&gt; &lt;em&gt;powered by Tumblr&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/%E9%80%A3%E7%B5%A1%E5%85%88"&gt;Contact Infomation&lt;/a&gt; (for Japanese)&lt;/p&gt;

&lt;p&gt;&lt;a href="/recent"&gt;Recent Update of This Site&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="/others"&gt;others&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Profile&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Name :&lt;/strong&gt; Rick Koike (ssig33)&lt;br&gt;
&lt;strong&gt;Mail :&lt;/strong&gt; &lt;a href="mailto:mail@ssig33.com"&gt;mail@ssig33.com&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Phone :&lt;/strong&gt; +81 90 1450 2501&lt;br&gt;
&lt;strong&gt;Living at: SECRET&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Twitter :&lt;/strong&gt; &lt;a href="http://twitter.com/ssig33"&gt;ssig33&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Facebook :&lt;/strong&gt; &lt;a href="http://facebook.com/ssig33"&gt;ssig33&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Skype :&lt;/strong&gt; ssig33&lt;br&gt;
&lt;strong&gt;Job :&lt;/strong&gt; Scinario Writer, Software Engineer, Game Planner&lt;br&gt;
&lt;strong&gt;Face :&lt;/strong&gt;&lt;br&gt;
&lt;img src="http://ssig33.com/data/6cd997decc7a4113e451529c7662137b.png" alt="img"&gt;&lt;/p&gt;

&lt;h2&gt;Skill&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;Ruby on Rails&lt;/li&gt;
&lt;li&gt;Sinatra&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;RSpec&lt;/li&gt;
&lt;li&gt;Behavior Driven Development&lt;/li&gt;
&lt;li&gt;JavaScript &amp;amp; Ajax &amp;amp; HTML5&lt;/li&gt;
&lt;li&gt;HTML &amp;amp; CSS&lt;/li&gt;
&lt;li&gt;Japanese&lt;/li&gt;
&lt;li&gt;English(a bit)&lt;/li&gt;
&lt;li&gt;Know much about History of Nanbokucho(JPN), Muromachi(JPN), and Sanguozhi(CN) &lt;/li&gt;
&lt;/ul&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;
</description>
      <pubDate>Tue, 23 Apr 2013 18:49:08 +0900</pubDate>
      <guid>http://ssig33.com/index</guid>
    </item>
    <item>
      <title>koutetsu.itoyanagi.name.ssig33.com/default.css</title>
      <link>http://ssig33.com/koutetsu.itoyanagi.name.ssig33.com/default.css</link>
      <description>&lt;p&gt;raw
mime css&lt;/p&gt;

&lt;p&gt;html {
    background: #000033;
}&lt;/p&gt;

&lt;p&gt;a:visited {
    color: #BBBBFF;
}&lt;/p&gt;

&lt;p&gt;a:link {
    color: #9999FF;
}&lt;/p&gt;

&lt;p&gt;a:hover, a:active {
    color: #8888FF;
}&lt;/p&gt;

&lt;p&gt;body {
    margin: 0%;
    padding: 0% 5% 30% 5%;
    text-align: left;
    color: #D8D8FF;
}&lt;/p&gt;

&lt;p&gt;div.pre {
    background-color: #4C4C7D;
    color: #D8D8FF;
    padding: 0.2em 0.5em 0.2em 0.5em;
    text-indent: 0.0em;
}&lt;/p&gt;

&lt;p&gt;h1 {
    font-size: 22pt;
}&lt;/p&gt;

&lt;p&gt;h2 {
    font-size: 15pt;
    background-color: #444477;
    color: #D8D8FF;
}&lt;/p&gt;

&lt;p&gt;h3 {
    font-size: 13pt;
    background-color: #444477;
    color: #D8D8FF;
}&lt;/p&gt;

&lt;p&gt;h4 {
    border-bottom: thin solid #666666;
}&lt;/p&gt;

&lt;p&gt;dl {
    margin-top: 0.1em;
    padding-top: 0.0em;
    padding-bottom: 0.3em;
}&lt;/p&gt;

&lt;p&gt;dt {
    font-size: 11pt;
    font-weight: bold;
    padding-top: 0.3em;
    padding-bottom: 0.2em;
}&lt;/p&gt;

&lt;p&gt;dd {
    font-size: 11pt;
    padding-bottom: 0.1em;
    text-indent: 1em;
    margin-left: 2.0em;
}&lt;/p&gt;

&lt;p&gt;img {
    border: 0;
}&lt;/p&gt;
</description>
      <pubDate>Tue, 23 Apr 2013 18:42:08 +0900</pubDate>
      <guid>http://ssig33.com/koutetsu.itoyanagi.name.ssig33.com/default.css</guid>
    </item>
    <item>
      <title>koutetsu.itoyanagi.name.ssig33.com</title>
      <link>http://ssig33.com/koutetsu.itoyanagi.name.ssig33.com</link>
      <description>&lt;p&gt;raw
mime html
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot; &amp;quot;&lt;a href="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd%22%3E"&gt;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;&lt;/a&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"&gt;
&lt;head&gt;
    &lt;link rel="start index" href="./" /&gt;
    &lt;link rev="made" href="mailto:kazunori@itoyanagi.name" /&gt;
    &lt;title&gt;鋼鉄の意識&lt;/title&gt;
    &lt;link rel="stylesheet" type="text/css" media="screen" href="./default.css" /&gt;
&lt;/head&gt;&lt;/p&gt;

&lt;p&gt;&lt;body&gt;&lt;/p&gt;

&lt;h1&gt;鋼鉄の意識&lt;/h1&gt;

&lt;p&gt;人間の肉体の70%は水分だが、その実態は血液である。そして血液は鉄分であり、すなわち人類は鋼の存在である。前世に於いて純粋な鋼鉄として存在していた我々は、錆びにより肉に詰められた鉄として転生した。我々は錆びを落とし、新たなる鋼鉄として復活しなければならない。&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;人類は鉄と共に歩み、そして倒されてきた。&lt;/li&gt;
    &lt;li&gt;私の体から鉄がにじみ出ると冒涜である。&lt;/li&gt;
    &lt;li&gt;全ての血液は舐めとることができる。&lt;/li&gt;
    &lt;li&gt;筋肉は鉄を保有する。全ての筋肉である。&lt;/li&gt;
    &lt;li&gt;鋼鉄の意識が私を支配する。支配されないことが始まりである。&lt;/li&gt;
    &lt;li&gt;倒されても折れない鋼鉄が存在する。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;まず、私が鉄を言葉にして感じたのは、夏のことである。私は水分を残して錆びている頃にも、鋼鉄の意識が世界の全てを支配していることがわかっていた。誰も気付いていないが、人類は血液であり、鋼である。その体内を流れる鋼鉄が、流れこそが私の意識を鉄の姿にしていることを、ふと考えてみた。そして汗をかき、全ての水分が私から失われた。私は純粋な鋼鉄になり、そこには何もかもがあった。ちょうど鉄の像を想像していると思っていいだろう。一撃である。錆びている頃には私にもわからなかったが、今の私には、敵が水分だと思っても構わない。&lt;/p&gt;

&lt;p&gt;筋肉を鍛えていると、筋肉に鉄が存在することがわかる。動かしているのは筋肉であり、すなわち鉄である。硬くすると鋼鉄のような体と言う。これこそが全てである。&lt;/p&gt;

&lt;p&gt;私は筋肉を鍛え始めた。最も重要なものが脂である。人体には脂がある。これは中華鍋を暖めて錆びないためのごま油である。私は体の贅肉を鍛えた。これも鍛えることが肝要で、それから私は筋肉と脂の虜の一人である。&lt;/p&gt;

&lt;p&gt;太陽には磁力がある。我々にも微弱ながら筋肉が磁力として働き、互いに引き合っている。肉体の美しさに引かれるのは磁力である。一つの巨大な鋼鉄の意識として、まず太陽の巨大な意識に戻り、プラスマイナスゼロとなる。そのためには太陽の巨大な、一つになるための熱量、爆発が寸前に回避できるだけの力が、鋼鉄の肉体として存在しなければならない。&lt;/p&gt;

&lt;p class="note"&gt;鋼鉄である。そして、我々は真面目に取り組んでいます。&lt;/p&gt;

&lt;p&gt;&lt;/body&gt;
&lt;/html&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 23 Apr 2013 18:41:48 +0900</pubDate>
      <guid>http://ssig33.com/koutetsu.itoyanagi.name.ssig33.com</guid>
    </item>
    <item>
      <title>text/リブーターを買った</title>
      <link>http://ssig33.com/text/リブーターを買った</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;リブーターを買った&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://www.meikyo.co.jp/products/m2c.html"&gt;これ&lt;/a&gt;買った。 &lt;a href="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"&gt;25800 円&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;PC でテレビ番組を録画している人ならなんとなく経験があることかとは思うが、結構 PC が頓死します。あきらかに録画用のハードウェアやドライバが原因なので手も脚も出ない。よってこれが起きると昔ながらの電プチによる復帰をしないといけないわけです。&lt;/p&gt;

&lt;p&gt;ですがまあ実際問題そう頻繁に落ちるかというとそうでもなく、月に 1 度か 2 度あるかどうか、まあそれくらいなら手動で対処してもいいやという感じで運用してました。&lt;/p&gt;

&lt;p&gt;ところが結構僕が関東や日本にいないことが多いかんじで、そのタイミングで死んだらどうにもならない、これまで奇跡的にそういうタイミングで死んでなかっただけという感じで極めてよろしくないので上記の商品を買った次第です。&lt;/p&gt;

&lt;p&gt;30 分ぐらいかけていろいろ設定すると簡単に死活監視と自動電プチ自動復帰、緊急時の手動での再起動などが出来るようになり極めて生活が快適になった感があります。&lt;/p&gt;

&lt;p&gt;録画などに限らず、常時稼動するサーバーを自宅に設置している人はこういうもの持ってたほうがいい気します。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 17 Apr 2013 22:01:13 +0900</pubDate>
      <guid>http://ssig33.com/text/リブーターを買った</guid>
    </item>
    <item>
      <title>4 月にエンジニアとなった人たちに知っておいてもらいたいこと</title>
      <link>http://ssig33.com/text/4 月にエンジニア</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;4 月にエンジニアとなった人たちに知っておいてもらいたいこと&lt;/h2&gt;

&lt;p&gt;大抵の場合転職しない限り給与とか上がらんからそのつもりでいた方がいいです。昇給ある会社も大抵 2 年で昇給止まる。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 17 Apr 2013 11:56:54 +0900</pubDate>
      <guid>http://ssig33.com/text/4 月にエンジニア</guid>
    </item>
    <item>
      <title>text/声優の携帯電話というサイトを作りました</title>
      <link>http://ssig33.com/text/声優の携帯電話というサイトを作りました</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;声優の携帯電話というサイトを作りました&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://seiyunokeitaidenwa.ssig33.com/"&gt;声優の携帯電話&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ssig33/seiyunokeitaidenwa"&gt;サイトのソースコード&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;声優の携帯電話の情報を登録し、いろんな観点から一覧出来るサイトです。&lt;/p&gt;

&lt;p&gt;正直 scaffold に認証つけただけに近いんですが、こうやってデータをまとめるだけでかなり面白いです。&lt;/p&gt;

&lt;p&gt;どうぞ、ご利用ください。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 07 Apr 2013 14:09:36 +0900</pubDate>
      <guid>http://ssig33.com/text/声優の携帯電話というサイトを作りました</guid>
    </item>
    <item>
      <title>layout</title>
      <link>http://ssig33.com/layout</link>
      <description>&lt;p&gt;layout layout
&amp;lt;!DOCTYPE html&amp;gt;
%meta{:charset =&amp;gt; &amp;quot;UTF-8&amp;quot;}
%title=h title
%link{:href =&amp;gt; &amp;quot;&lt;a href="http://ssig33.com/common.css"&gt;http://ssig33.com/common.css&lt;/a&gt;&amp;quot;, :media =&amp;gt; &amp;quot;screen&amp;quot;, :rel =&amp;gt; &amp;quot;stylesheet&amp;quot;, :type =&amp;gt; &amp;quot;text/css&amp;quot;}
%link{:href =&amp;gt; &amp;quot;&lt;a href="http://ssig33.com/sh_style.css"&gt;http://ssig33.com/sh_style.css&lt;/a&gt;&amp;quot;, :media =&amp;gt; &amp;quot;screen&amp;quot;, :rel =&amp;gt; &amp;quot;stylesheet&amp;quot;, :type =&amp;gt; &amp;quot;text/css&amp;quot;}
%link{:href =&amp;gt; &amp;quot;&lt;a href="http://ssig33.com/metro.css"&gt;http://ssig33.com/metro.css&lt;/a&gt;&amp;quot;, :media =&amp;gt; &amp;quot;screen&amp;quot;, :rel =&amp;gt; &amp;quot;stylesheet&amp;quot;, :type =&amp;gt; &amp;quot;text/css&amp;quot;}
%meta{:name =&amp;gt; &amp;quot;viewport&amp;quot;, :content =&amp;gt; &amp;quot;width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&amp;quot;}
%link{:href =&amp;gt; &amp;#39;/feed&amp;#39;, :rel =&amp;gt; &amp;#39;alternate&amp;#39;, :title =&amp;gt; &amp;#39;feed&amp;#39;, :type =&amp;gt; &amp;quot;application/rss+xml&amp;quot;}
%script{:src =&amp;gt; &amp;quot;&lt;a href="http://ssig33.com/sh_main.min.js%22"&gt;http://ssig33.com/sh_main.min.js&amp;quot;&lt;/a&gt;}
%script{:src =&amp;gt; &amp;quot;&lt;a href="http://ssig33.com/sh_ext.js%22"&gt;http://ssig33.com/sh_ext.js&amp;quot;&lt;/a&gt;}
%script{:src =&amp;gt; &amp;quot;&lt;a href="http://ssig33.com/jquery.js%22"&gt;http://ssig33.com/jquery.js&amp;quot;&lt;/a&gt;}
%script{:src =&amp;gt; &amp;quot;&lt;a href="http://ssig33.com/search.coffee%22"&gt;http://ssig33.com/search.coffee&amp;quot;&lt;/a&gt;}
%div#all
  ~@page.html(request)
  %hr
  %h4 Site Search
  %div
    %input#search
  #search&lt;em&gt;area
  -if Page.where(name: @page.name).order(&amp;#39;id desc&amp;#39;).count &amp;gt; 1
    %h4 Update History of this content
    %div
      %ul
        -Page.where(name: @page.name).order(&amp;#39;id desc&amp;#39;).each&lt;/em&gt;with&lt;em&gt;index do |p,i|
          %li.history
            - if i == 0
              -if @page.id == p.id
                %a{href: &amp;quot;/#{URI.encode(@page.name)}&amp;quot;} 
                  %b #{p.created&lt;/em&gt;at.gmtime} (Latest)
              -else
                %a{href: &amp;quot;/#{URI.encode(@page.name)}&amp;quot;} #{p.created&lt;em&gt;at.gmtime} (Latest)
            - else
              -if @page.id == p.id
                %a{href: &amp;quot;/#{URI.encode(@page.name)}?history&lt;/em&gt;id=#{p.id}&amp;quot;}
                  %b=p.created&lt;em&gt;at.gmtime
              -else
                %a{href: &amp;quot;/#{URI.encode(@page.name)}?history&lt;/em&gt;id=#{p.id}&amp;quot;}=p.created_at.gmtime&lt;/p&gt;

&lt;p&gt;:javascript
  if($(&amp;#39;.history&amp;#39;).length &amp;gt; 3){$(&amp;#39;.history&amp;#39;).slice(3).hide();$(&amp;#39;.history&amp;#39;).last().after($(&amp;#39;&lt;li&gt;&amp;#39;).html($(&amp;#39;&lt;a href="javascript:void(0)"&gt;more...&lt;/a&gt;&amp;#39;).click(function(){$(&amp;#39;li.history&amp;#39;).show();$(this).parent().remove()})))}
  $.each($(&amp;quot;pre code&amp;quot;), function(){
    var code = $(this);
    var text = code.text();
    var pre = $(code.parent());
    var lang = code.attr(&amp;#39;class&amp;#39;);
    code.remove();
    pre.text(text);
    if(lang != undefined){
      pre.addClass(&amp;quot;sh&lt;em&gt;&amp;quot;+lang);
    }
  })
  sh&lt;/em&gt;highlightDocument();&lt;/p&gt;

&lt;p&gt;if($(&amp;quot;#created&lt;em&gt;at&amp;quot;).length == 1){
  $.getJSON(&amp;quot;&lt;a href="http://api.ssig33.com/timestamp?name=%22+encodeURI(&amp;#x27;#%7B@page.name%7D&amp;#x27;)"&gt;http://api.ssig33.com/timestamp?name=&amp;quot;+encodeURI(&amp;#39;#{@page.name}&amp;#39;)&lt;/a&gt; , function(data){
    var date
    date = new Date(Date.parse(data[&amp;quot;created&lt;/em&gt;at&amp;quot;]))
    var created&lt;em&gt;at = date.toGMTString()
    date = new Date(Date.parse(data[&amp;quot;updated&lt;/em&gt;at&amp;quot;]))
    var updated&lt;em&gt;at = date.toGMTString()
    if(created&lt;/em&gt;at == updated&lt;em&gt;at){
      $(&amp;quot;#created&lt;/em&gt;at&amp;quot;).html(&amp;quot;created at: &amp;quot;+created&lt;em&gt;at)
    }else{
      $(&amp;quot;#created&lt;/em&gt;at&amp;quot;).html(&amp;quot;created at: &amp;quot;+created&lt;em&gt;at+&amp;quot;  updated at: &amp;quot;+updated&lt;/em&gt;at)
    }&lt;/p&gt;

&lt;p&gt;})
  }
&amp;lt;!-- layout from Database --&amp;gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 06 Apr 2013 03:03:29 +0900</pubDate>
      <guid>http://ssig33.com/layout</guid>
    </item>
    <item>
      <title>Recent Update</title>
      <link>http://ssig33.com/feed</link>
      <description>&lt;p&gt;builder Recent Update&lt;/p&gt;

&lt;h1&gt;vim: set ft=ruby:&lt;/h1&gt;

&lt;p&gt;xml.instruct!
xml.rss :version =&amp;gt; &amp;quot;2.0&amp;quot; do
  xml.channel do
    xml.title &amp;quot;ssig33.com - recent update&amp;quot;
    xml.description &amp;quot;ssig33&amp;#39;s web site&amp;quot;
    xml.link &amp;quot;&lt;a href="http://ssig33.com"&gt;http://ssig33.com&lt;/a&gt;&amp;quot;
    posts = []
    Page.order(&amp;quot;created&lt;em&gt;at desc&amp;quot;).limit(150).each{|p|
      flag = true
      posts.each{|t|
        flag = false if t.name == p.name
      }
      posts &amp;lt;&amp;lt; p if flag
    }
    posts.each do |post|
      xml.item do
        xml.title post.title
        xml.link &amp;quot;&lt;a href="http://ssig33.com/#%7Bpost.name%7D"&gt;http://ssig33.com/#{post.name}&lt;/a&gt;&amp;quot;
        xml.description post.html(request)
        xml.pubDate Time.parse(post.created&lt;/em&gt;at.to_s).rfc822()
        xml.guid &amp;quot;&lt;a href="http://ssig33.com/#%7Bpost.name%7D"&gt;http://ssig33.com/#{post.name}&lt;/a&gt;&amp;quot;
      end
    end
  end
end&lt;/p&gt;
</description>
      <pubDate>Sat, 06 Apr 2013 02:56:05 +0900</pubDate>
      <guid>http://ssig33.com/feed</guid>
    </item>
    <item>
      <title>common.css</title>
      <link>http://ssig33.com/common.css</link>
      <description>&lt;p&gt;raw
mime css
@-ms-viewport{ width: device-width; }&lt;/p&gt;

&lt;p&gt;@media screen and (max-width: 720px) {@-ms-viewport { width: 320px !important; }}
@media screen and (max-width: 480px) {@-ms-viewport { width: 320px !important; }}&lt;/p&gt;

&lt;p&gt;body{
  text-align:center;
  }&lt;/p&gt;

&lt;h1&gt;all, .all{&lt;/h1&gt;

&lt;p&gt;max-width:860px;
  margin-left:auto;
  margin-right:auto;
  text-align:left;
}&lt;/p&gt;

&lt;p&gt;h1, h2, h3, h4{font-family:serif;}
h4{margin: 8px;}&lt;/p&gt;

&lt;h1&gt;notice{ color:green; }&lt;/h1&gt;

&lt;h1&gt;error{ color:red; }&lt;/h1&gt;

&lt;p&gt;.small{ font-size:small;}&lt;/p&gt;

&lt;p&gt;img, video{ max-width:100%; }&lt;/p&gt;

&lt;p&gt;.lightgray{color:lightgray}&lt;/p&gt;

&lt;p&gt;.none{display:none}
a{color:blue}
.h0{font-size:9em}
.h1{font-size:7em}
.h2{font-size:3em}
.right{float:right}
.left{float:left}
.clear{clear:both}
nick{color:lightpink}
.mine{color:yellow}
.x-small{font-size:x-small}
span.link{font-size:x-large}&lt;/p&gt;
</description>
      <pubDate>Sat, 06 Apr 2013 02:55:38 +0900</pubDate>
      <guid>http://ssig33.com/common.css</guid>
    </item>
    <item>
      <title>text/サイト内検索つけた</title>
      <link>http://ssig33.com/text/サイト内検索つけた</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;サイト内検索つけた&lt;/h2&gt;

&lt;p&gt;下のほうに出てるサイト内検索というところにいろいろ入れると検索結果が出ます、よくあるやつ。裏にいるのは Groonga です。&lt;/p&gt;

&lt;p&gt;サイト内検索の実装は&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ssig33.com/source"&gt;ソース&lt;/a&gt; 

&lt;ul&gt;
&lt;li&gt;これは DB に入ってるサイトのメインのコードの呼び出しとか Groonga への接続だけやる部分&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ssig33.com/source/app.rb"&gt;上記から呼ばれる実際のコード&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ssig33.com/layout"&gt;レイアウトファイル&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ssig33.com/edit/search"&gt;検索 API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ssig33.com/edit/search.coffee"&gt;インクリメンタルサーチを行なう JS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;に分散しておりこのサイトの悍しい構成がここに明らかになります。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 06 Apr 2013 02:50:51 +0900</pubDate>
      <guid>http://ssig33.com/text/サイト内検索つけた</guid>
    </item>
    <item>
      <title>このサイトのソース</title>
      <link>http://ssig33.com/source</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;title&gt;ssig33.com - このサイトのソース&lt;/title&gt;
&lt;link href='http://ssig33.com/common.css' media='screen' rel='stylesheet' type='text/css'&gt;
&lt;link href='http://ssig33.com/sh_style.css' media='screen' rel='stylesheet' type='text/css'&gt;
&lt;meta content='width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' name='viewport'&gt;
&lt;link href='/feed' rel='alternate' title='feed' type='application/rss+xml'&gt;
&lt;script src='/sh_main.min.js'&gt;&lt;/script&gt;
&lt;script src='/sh_ext.js'&gt;&lt;/script&gt;
&lt;script src='/jquery-1.6.1.min.js'&gt;&lt;/script&gt;
&lt;div id='all'&gt;
  &lt;h1&gt;このサイトのソース&lt;/h1&gt;
  &lt;h2&gt;ちょっとした解説&lt;/h2&gt;
  &lt;p&gt;Web から楽にサイトを更新したいというよくあるアレ。&lt;/p&gt;
  &lt;p&gt;ただの Wiki 形式だと出力できるのが固定に layout された html だけなので、いろいろやっています。&lt;/p&gt;
  &lt;p&gt;まず何も考えずにページを新規作成すると Markdown として扱われます。&lt;/p&gt;
  &lt;p&gt;ページの行頭に title ほげふが と入れておくとページタイトルがほげふがになります。&lt;/p&gt;
  &lt;p&gt;頭に haml *title と入れておくと、 haml としてレンダリングされます。自由なレイアウトのページも Web 上から更新することが出来ます。 haml 内で Ruby のコードを記述することも出来、とても幸せになれます。&lt;/p&gt;
  &lt;p&gt;頭に builder *title と入れておくと、 builder テンプレートとしてレンダリングされます。 RSS など XML を吐きたい時に便利。 Ruby を書けるので幸せになれます。&lt;/p&gt;
  &lt;p&gt;頭に raw でいれたものをそのまま吐きます。 js をアップロードしたり貼ったりしたい時に便利。&lt;/p&gt;
  &lt;p&gt;頭に ruby で ruby のコードとして評価した結果を返す。何かに使えて便利。&lt;/p&gt;
  &lt;p&gt;以下のソースを読めば分かると思いますが、 &lt;a href='source/app.rb'&gt;/source/app.rb&lt;/a&gt; にソースがある場合はそれを使います。ソースすらサイトから更新出来るようにした。&lt;/p&gt;
  &lt;h2&gt;app.rb&lt;/h2&gt;
  &lt;pre lang='ruby'&gt;&lt;code&gt;require 'bundler'&amp;#x000A;Bundler.require&amp;#x000A;require './migrate'&amp;#x000A;&amp;#x000A;PASSWORD = open('password').read.chomp&amp;#x000A;&amp;#x000A;ActiveRecord::Base.establish_connection JSON.parse(open('dbconfig.json').read)&amp;#x000A;&amp;#x000A;ActiveRecord::Base.logger = Logger.new("./database.log")&amp;#x000A;&amp;#x000A;ActiveRecord::Migrator.migrate("migrate/", nil)&amp;#x000A;&amp;#x000A;class Page &lt; ActiveRecord::Base&amp;#x000A;end&amp;#x000A;&amp;#x000A;&amp;#x000A;configure do&amp;#x000A;  set :allow_origin, :any&amp;#x000A;  set :allow_methods, [:get, :post]&amp;#x000A;  set :allow_credentials, true&amp;#x000A;end&amp;#x000A;&amp;#x000A;begin&amp;#x000A;  code = Page.where(:name =&gt; "source/app.rb").order("created_at desc").first&amp;#x000A;  ary = code.body.split("\n")&amp;#x000A;  ary.shift&amp;#x000A;  eval ary.join("\n")&amp;#x000A;rescue StandardError, LoadError,SyntaxError =&gt; e&amp;#x000A;  p e&amp;#x000A;  class Page &lt; ActiveRecord::Base&amp;#x000A;    def html request&amp;#x000A;      if self.body.split("\n").first =~ /^haml/&amp;#x000A;        return self.haml request&amp;#x000A;      elsif self.body.split("\n").first =~ /^ruby/&amp;#x000A;        return "&lt;pre&gt;#{self.body}&lt;/pre&gt;"&amp;#x000A;      elsif self.body.split("\n").first =~ /^builder/ or self.body.split("\n").first =~ /^raw/ &amp;#x000A;        return "&lt;pre&gt;#{self.body}&lt;/pre&gt;"&amp;#x000A;      elsif self.body.split("\n").first =~ /^title/&amp;#x000A;        str = ""&amp;#x000A;        ary = self.body.split("\n")&amp;#x000A;        str = ""&amp;#x000A;        ary.shift&amp;#x000A;        str = ary.join("\n")&amp;#x000A;      else&amp;#x000A;        str = self.body&amp;#x000A;      end&amp;#x000A;      html = BlueCloth.new(str, :fenced_code, :gh_blockcode).to_html rescue "&lt;pre&gt;#{self.body}&lt;/pre&gt;"&amp;#x000A;      html&amp;#x000A;    end&amp;#x000A;&amp;#x000A;    def title&amp;#x000A;      if self.body.split("\n").first =~ /title/&amp;#x000A;        str = self.body.split("\n").shift.split("title\ ").last&amp;#x000A;      elsif self.body.split("\n").first =~ /haml/&amp;#x000A;        str = self.body.split("\n").shift.split("haml\ ").last&amp;#x000A;      elsif self.body.split("\n").first =~ /builder/&amp;#x000A;        str = self.body.split("\n").shift.split("builder\ ").last&amp;#x000A;      elsif self.body.split("\n").first =~ /ruby/&amp;#x000A;        str = self.body.split("\n").shift.split("ruby\ ").last&amp;#x000A;      else&amp;#x000A;        str = self.name&amp;#x000A;      end&amp;#x000A;      str.chomp!&amp;#x000A;      str = self.name if str == nil or str == "" or str == "haml"&amp;#x000A;      str.gsub(/=created_at=/, self.created_at.getutc.to_s)&amp;#x000A;    end&amp;#x000A;&amp;#x000A;    def raw&amp;#x000A;      ary = self.body.split("\n")&amp;#x000A;      ary.shift&amp;#x000A;      ary.join("\n")&amp;#x000A;    end&amp;#x000A;    &amp;#x000A;    def haml request&amp;#x000A;      ary = self.body.split("\n")&amp;#x000A;      str = ""&amp;#x000A;      ary.shift&amp;#x000A;      str = ary.join("\n")&amp;#x000A;      Haml::Engine.new(str).render&amp;#x000A;    end&amp;#x000A;&amp;#x000A;    def ruby request&amp;#x000A;      ary = self.body.split("\n")&amp;#x000A;      str = ""&amp;#x000A;      ary.shift&amp;#x000A;      str = ary.join("\n")&amp;#x000A;      eval str&amp;#x000A;    end&amp;#x000A;&amp;#x000A;    def builder request&amp;#x000A;      ary = self.body.split("\n")&amp;#x000A;      str = ""&amp;#x000A;      ary.shift&amp;#x000A;      str = ary.join("\n")&amp;#x000A;      xml = ::Builder::XmlMarkup.new(:indent =&gt; 2)&amp;#x000A;      xml.to_s&amp;#x000A;      eval str&amp;#x000A;    end&amp;#x000A;&amp;#x000A;    def layout&amp;#x000A;      ary = self.body.split("\n")&amp;#x000A;      ary.shift&amp;#x000A;      ary.join("\n")&amp;#x000A;    end&amp;#x000A;  end&amp;#x000A;&amp;#x000A;  configure do&amp;#x000A;    set :logging, false&amp;#x000A;    set :app_file, __FILE__&amp;#x000A;    use Rack::Session::Cookie, :secret =&gt; 'fsdjkfhsjkhr23f8fhsdjkvhnsdjhrfuiscflaaadn8or'&amp;#x000A;    use Rack::Csrf, :raise =&gt; true&amp;#x000A;  end&amp;#x000A;&amp;#x000A;  get '/' do&amp;#x000A;    @page = Page.where(:name =&gt; "index").order("created_at desc").first&amp;#x000A;    redirect '/edit/index' unless @page&amp;#x000A;    if layout = Page.where(:name =&gt; "layout").order("created_at desc").first&amp;#x000A;      return haml layout.layout&amp;#x000A;    else&amp;#x000A;      return haml :page&amp;#x000A;    end&amp;#x000A;  end&amp;#x000A;&amp;#x000A;  get %r{/edit/(.*)} do&amp;#x000A;    @id = params[:captures].first.to_s&amp;#x000A;    @page = Page.where(:name =&gt; @id).order("created_at desc").first&amp;#x000A;    @page = Page.new if @page == nil&amp;#x000A;    haml :edit&amp;#x000A;  end&amp;#x000A;&amp;#x000A;  get %r{/(.*)} do&amp;#x000A;    id = params[:captures].first.to_s&amp;#x000A;    id.chop! if id.reverse[0] == "/"&amp;#x000A;    file = open("public/#{id}/index.html").read rescue nil&amp;#x000A;    return file if file&amp;#x000A;    @page = Page.where(:name =&gt; id).order("created_at desc").first&amp;#x000A;    redirect "/edit/#{id}" unless @page&amp;#x000A;    return @page.haml(request) if @page.body.split("\n").first =~ /^haml/ &amp;#x000A;    return @page.raw if @page.body.split("\n").first =~ /^raw/ or @page.body.split("\n").first =~ /^layout/&amp;#x000A;    if @page.body.split("\n").first =~ /^builder/&amp;#x000A;      content_type  :xml&amp;#x000A;      return @page.builder(request)&amp;#x000A;    end&amp;#x000A;    return @page.ruby(request) if @page.body.split("\n").first =~ /^ruby/&amp;#x000A;    if layout = Page.where(:name =&gt; "layout").order("created_at desc").first&amp;#x000A;      return haml layout.layout&amp;#x000A;    else&amp;#x000A;      return haml :page&amp;#x000A;    end&amp;#x000A;  end&amp;#x000A;&amp;#x000A;  post '/update' do&amp;#x000A;    if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD&amp;#x000A;      return "ERROR"&amp;#x000A;    else&amp;#x000A;      page = Page.new&amp;#x000A;      page.name = params[:id]&amp;#x000A;      page.body = params[:body]&amp;#x000A;      page.save&amp;#x000A;      redirect "/#{params[:id]}"&amp;#x000A;    end&amp;#x000A;  end&amp;#x000A;  &amp;#x000A;  post '/usr2' do&amp;#x000A;    raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD&amp;#x000A;    system "rm site.pid.oldbin"&amp;#x000A;    system "kill -USR2 `cat site.pid`"&amp;#x000A;    system "kill -INT `cat site.pid.oldbin`"&amp;#x000A;    redirect "/"&amp;#x000A;  end&amp;#x000A;&amp;#x000A;&amp;#x000A;  post %r{/(.*)} do&amp;#x000A;    id = params[:captures].first.to_s&amp;#x000A;    id.chop! if id.reverse[0] == "/"&amp;#x000A;    file = open("public/#{id}/index.html").read rescue nil&amp;#x000A;    return file if file&amp;#x000A;    @page = Page.where(:name =&gt; id).order("created_at desc").first&amp;#x000A;    redirect "/edit/#{id}" unless @page&amp;#x000A;    return @page.haml(request) if @page.body.split("\n").first =~ /^haml/ &amp;#x000A;    return @page.raw if @page.body.split("\n").first =~ /^raw/ or @page.body.split("\n").first =~ /^layout/&amp;#x000A;    if @page.body.split("\n").first =~ /^builder/&amp;#x000A;      content_type  :xml&amp;#x000A;      return @page.builder(request)&amp;#x000A;    end&amp;#x000A;    return @page.ruby(request) if @page.body.split("\n").first =~ /^ruby/&amp;#x000A;    if layout = Page.where(:name =&gt; "layout").order("created_at desc").first&amp;#x000A;      return haml layout.layout&amp;#x000A;    else&amp;#x000A;      return haml :page&amp;#x000A;    end&amp;#x000A;  end&amp;#x000A;&amp;#x000A;&amp;#x000A;  post '/destroy' do&amp;#x000A;    raise if Digest::MD5.hexdigest(params[:password]).to_s != PASSWORD&amp;#x000A;    Page.where(:name =&gt; params[:id]).delete_all&amp;#x000A;    redirect "/"&amp;#x000A;  end&amp;#x000A;&amp;#x000A;  error do&amp;#x000A;    "error... #{env['sinatra.error']}"&amp;#x000A;  end&amp;#x000A;&amp;#x000A;  helpers do&amp;#x000A;    def h str&amp;#x000A;      CGI.escapeHTML str.to_s&amp;#x000A;    end&amp;#x000A;&amp;#x000A;    def title&amp;#x000A;      if request.path_info == "/" or request.path_info == "/index"&amp;#x000A;        return "ssig33.com"&amp;#x000A;      else&amp;#x000A;        return "ssig33.com - #{@page.title}"&amp;#x000A;      end&amp;#x000A;    end&amp;#x000A;  end&amp;#x000A;end&amp;#x000A;&amp;#x000A;__END__&amp;#x000A;@@ page&amp;#x000A;&lt;!DOCTYPE html&gt;&amp;#x000A;%meta{:charset =&gt; "UTF-8"}&amp;#x000A;%title=h title&amp;#x000A;%link{:href =&gt; "http://ssig33.com/common.css", :media =&gt; "screen", :rel =&gt; "stylesheet", :type =&gt; "text/css"}&amp;#x000A;%link{:href =&gt; "http://ssig33.com/sh_style.css", :media =&gt; "screen", :rel =&gt; "stylesheet", :type =&gt; "text/css"}&amp;#x000A;%meta{:name =&gt; "viewport", :content =&gt; "width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"}&amp;#x000A;%link{:href =&gt; '/feed', :rel =&gt; 'alternate', :title =&gt; 'feed', :type =&gt; "application/rss+xml"}&amp;#x000A;%script{:src =&gt; "/sh_main.min.js"}&amp;#x000A;%script{:src =&gt; "/sh_ext.js"}&amp;#x000A;%script{:src =&gt; "/jquery-1.6.1.min.js"}&amp;#x000A;%div#all~@page.html(request)&amp;#x000A;  :javascript&amp;#x000A;    $.each($("pre code"), function(){&amp;#x000A;      var code = $(this);&amp;#x000A;      var text = code.text();&amp;#x000A;      var pre = $(code.parent());&amp;#x000A;      code.remove();&amp;#x000A;      pre.text(text);&amp;#x000A;      var lang = pre.attr("lang");&amp;#x000A;      if(lang != undefined){&amp;#x000A;        pre.addClass("sh_"+lang);&amp;#x000A;      }&amp;#x000A;    })&amp;#x000A;    sh_highlightDocument();&amp;#x000A;&amp;#x000A;@@ edit&amp;#x000A;&lt;!DOCTYPE html&gt;&amp;#x000A;%meta{:charset =&gt; "UTF-8"}&amp;#x000A;%title=h "Edit - #{params[:captures].first.to_s}"&amp;#x000A;%link{:href =&gt; "http://ssig33.com/common.css", :media =&gt; "screen", :rel =&gt; "stylesheet", :type =&gt; "text/css"}&amp;#x000A;%meta{:name =&gt; "viewport", :content =&gt; "width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"}&amp;#x000A;%div#all&amp;#x000A;  %form{:action =&gt; "/update", :method =&gt; "post"}&amp;#x000A;    =Rack::Csrf.csrf_tag(env)&amp;#x000A;    %input{:id =&gt; "id", :name =&gt; "id", :type =&gt; "hidden", :value =&gt; "#{@id}"}&amp;#x000A;    %p&amp;#x000A;      %textarea{:cols =&gt; "80", :id =&gt; "bodY", :name =&gt; "body", :rows =&gt; "30"}=@page.body #rescue ""&amp;#x000A;    %p&amp;#x000A;      %input{:id =&gt; "password", :name =&gt; "password", :type =&gt; "password"}&amp;#x000A;    %p&amp;#x000A;      %input{:name =&gt; "commit", :type =&gt; "submit", :value =&gt; "Save changes"}&amp;#x000A;  %form{:action =&gt; "/destroy", :method =&gt; "post"}&amp;#x000A;    =Rack::Csrf.csrf_tag(env)&amp;#x000A;    %input{:id =&gt; "id", :name =&gt; "id", :type =&gt; "hidden", :value =&gt; "#{@id}"}&amp;#x000A;    %p&amp;#x000A;      %input{:id =&gt; "password", :name =&gt; "password", :type =&gt; "password"}&amp;#x000A;    %p&amp;#x000A;      %input{:name =&gt; "commit", :type =&gt; "submit", :value =&gt; "Destroy"}&amp;#x000A;  %form{:action =&gt; "/usr2", :method =&gt; "post"}&amp;#x000A;    =Rack::Csrf.csrf_tag(env)&amp;#x000A;    %input{:id =&gt; "id", :name =&gt; "id", :type =&gt; "hidden", :value =&gt; "#{@id}"}&amp;#x000A;    %p&amp;#x000A;      %input{:id =&gt; "password", :name =&gt; "password", :type =&gt; "password"}&amp;#x000A;    %p&amp;#x000A;      %input{:name =&gt; "commit", :type =&gt; "submit", :value =&gt; "Destroy"}&amp;#x000A;  %form{:action =&gt; "/usr2", :method =&gt; "post"}&amp;#x000A;    =Rack::Csrf.csrf_tag(env)&amp;#x000A;    %input{:id =&gt; "id", :name =&gt; "id", :type =&gt; "hidden", :value =&gt; "#{@id}"}&amp;#x000A;    %p&amp;#x000A;      %input{:id =&gt; "password", :name =&gt; "password", :type =&gt; "password"}&amp;#x000A;    %p&amp;#x000A;      %input{:name =&gt; "commit", :type =&gt; "submit", :value =&gt; "USR2"}&lt;/code&gt;&lt;/pre&gt;
  &lt;h2&gt;migrate.rb&lt;/h2&gt;
  &lt;pre lang='ruby'&gt;&lt;code&gt;require 'groonga'&amp;#x000A;Dir::mkdir "groonga" unless File.exist? "groonga"&amp;#x000A;if File.exist? "groonga/search"&amp;#x000A;  Groonga::Database.open "groonga/search"&amp;#x000A;else&amp;#x000A;  Groonga::Database.create path: "groonga/search"&amp;#x000A;  Groonga::Schema.define do |schema|&amp;#x000A;    schema.create_table("Pages", type: :patricia_trie, key_type: 'ShortText'){|table| &amp;#x000A;      table.short_text "name"&amp;#x000A;      table.long_text "text"&amp;#x000A;      table.integer 'page_id'&amp;#x000A;      table.integer 'created_at'&amp;#x000A;    }&amp;#x000A;    schema.create_table("Index", type: :patricia_trie, key_type: "ShortText", default_tokenizer: "TokenBigram", key_normalize: true) { |table|  &amp;#x000A;      table.index "Pages.name" &amp;#x000A;      table.index "Pages.text"&amp;#x000A;    }&amp;#x000A;  end&amp;#x000A;end&lt;/code&gt;&lt;/pre&gt;
  &lt;h2&gt;migrate/0_create_pages.rb&lt;/h2&gt;
  &lt;pre lang='ruby'&gt;&lt;code&gt;class CreatePages &lt; ActiveRecord::Migration&amp;#x000A;  def self.up&amp;#x000A;    create_table :pages do |t|&amp;#x000A;      t.string :name&amp;#x000A;      t.text :body&amp;#x000A;      t.timestamps&amp;#x000A;    end&amp;#x000A;    add_index :pages, [:name, :created_at]&amp;#x000A;    add_index :pages, :name&amp;#x000A;  end&amp;#x000A;&amp;#x000A;  def self.down&amp;#x000A;    drop_table :pages&amp;#x000A;  end&amp;#x000A;end&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;script&gt;
  $.each($("pre code"), function(){
    var code = $(this);
    var text = code.text();
    var pre = $(code.parent());
    code.remove();
    pre.text(text);
    var lang = pre.attr("lang");
    if(lang != undefined){
      pre.addClass("sh_"+lang);
    }
  })
  sh_highlightDocument();
&lt;/script&gt;
</description>
      <pubDate>Sat, 06 Apr 2013 02:48:35 +0900</pubDate>
      <guid>http://ssig33.com/source</guid>
    </item>
    <item>
      <title>coffee</title>
      <link>http://ssig33.com/search.coffee</link>
      <description>(function() {
  var search_loop;

  search_loop = function(str) {
    return setTimeout(function() {
      var new_str;

      new_str = $('#search').val();
      if (new_str === str || new_str === '') {
        if (new_str === '') {
          $('#search_area').html('');
        }
        return search_loop(new_str);
      } else {
        return $.get('/search', {
          q: new_str
        }).success(function(data) {
          var n, _i, _len;

          $('#search_area').html('');
          for (_i = 0, _len = data.length; _i &lt; _len; _i++) {
            n = data[_i];
            $('#search_area').append($('&lt;p&gt;').html($('&lt;a&gt;').attr({
              href: "/" + n[0]
            }).text(n[0])).append($('&lt;span&gt;').addClass('lightgray').html("&amp;nbsp;&amp;nbsp;" + n[3])));
          }
          return search_loop(new_str);
        }).error(function() {
          $('#search_area').html('');
          return seach_loop(new_str);
        });
      }
    }, 200);
  };

  $(function() {});

  search_loop('');

}).call(this);
</description>
      <pubDate>Sat, 06 Apr 2013 02:44:48 +0900</pubDate>
      <guid>http://ssig33.com/search.coffee</guid>
    </item>
    <item>
      <title>ruby</title>
      <link>http://ssig33.com/search</link>
      <description></description>
      <pubDate>Sat, 06 Apr 2013 02:41:54 +0900</pubDate>
      <guid>http://ssig33.com/search</guid>
    </item>
    <item>
      <title>text</title>
      <link>http://ssig33.com/text</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;meta charset='UTF-8'&gt;
&lt;title&gt;ssig33.com - texts&lt;/title&gt;
&lt;link href='http://ssig33.com/common.css' media='screen' rel='stylesheet' type='text/css'&gt;
&lt;link href='http://ssig33.com/sh_style.css' media='screen' rel='stylesheet' type='text/css'&gt;
&lt;link href='http://ssig33.com/metro.css' media='screen' rel='stylesheet' type='text/css'&gt;
&lt;meta content='width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' name='viewport'&gt;
&lt;link href='/feed' rel='alternate' title='feed' type='application/rss+xml'&gt;
&lt;script src='/sh_main.min.js'&gt;&lt;/script&gt;
&lt;script src='/sh_ext.js'&gt;&lt;/script&gt;
&lt;script src='/jquery.js'&gt;&lt;/script&gt;
&lt;div id='all'&gt;
  &lt;p&gt;
    &lt;a href='/'&gt;back to the top&lt;/a&gt;
  &lt;/p&gt;
  &lt;h1&gt;ssig33.com - texts&lt;/h1&gt;
  &lt;p&gt;
    &lt;a href='/text/欧米では〜'&gt;欧米では〜&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-22 10:54:44 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/セキュリティの話'&gt;セキュリティの話&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-21 13:38:10 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Google I/O で発表されたサービスについて'&gt;Google I/O で発表されたサービスについて&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-17 00:27:17 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/北方謙三の『史記 武帝紀』'&gt;北方謙三の『史記 武帝紀』という小説について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-16 23:59:51 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Rails 4 にして動かなかったやつ'&gt;Rails 4 にして動かなかったやつ&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-14 08:27:42 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/綺麗なコードか汚いコードかという話'&gt;綺麗なコードか汚いコードかという話&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-14 04:44:43 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/プログラマの話'&gt;プログラマの話&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-13 23:40:45 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/自分語りが〜みたいな話'&gt;自分語りが〜みたいな話&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-13 04:45:57 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/翠星のガルガンティアのターゲットとかについて'&gt;翠星のガルガンティアのターゲットとか実際にやってることとかについて&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-12 12:29:32 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/**(本のジャンル)初心者向け'&gt;**(本のジャンル)初心者向けみたいなエントリを書いて&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-12 02:32:18 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/山岸和利の話'&gt;山岸和利の話&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-11 13:41:46 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/レ・ミゼラブル見てきた'&gt;レ・ミゼラブル見てきた&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-10 11:25:55 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ベトナムで働くとして'&gt;ベトナムで働くとして&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-08 23:17:04 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/発展途上国でスムースに SIM を買う'&gt;発展途上国でスムースに SIM を買うにあたって注意した方がいいこと&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-04 08:43:29 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/HDD を毎月 12TB 使う人について'&gt;HDD を毎月 12TB 使う人について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-05-02 11:03:12 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/キャリアパス分離の話'&gt;キャリアパス分離の話&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-04-24 02:51:13 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/リブーターを買った'&gt;リブーターを買った&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-04-17 13:01:13 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/4 月にエンジニア'&gt;4 月にエンジニアとなった人たちに知っておいてもらいたいこと&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-04-17 02:56:54 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/声優の携帯電話というサイトを作りました'&gt;声優の携帯電話というサイトを作りました&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-04-07 05:09:36 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/サイト内検索つけた'&gt;サイト内検索つけた&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-04-05 17:50:51 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/録画する話'&gt;録画する話&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-04-05 15:47:18 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ベンチャーが大型資金調達をしていけない理由'&gt;ベンチャーが VC などから大型資金調達をしていけない理由&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-03-22 02:19:34 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/OpenFastladder クローラー向け RPC について'&gt;OpenFastladder クローラー向け RPC について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-03-20 09:49:46 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/OpenFastladder が現代的な環境で動くようになってきてる'&gt;OpenFastladder が現代的な環境で動くようになってきてる&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-03-16 10:56:50 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/OpenFastladder その後'&gt;OpenFastladder その後&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-03-16 06:17:12 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/PCの時計を2099年12月31日にしてみた'&gt;PCの時計を2099 年 12 月 31 日 23 時 59 分にしてみた&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-03-10 03:22:04 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Windows タブレットの現状'&gt;Windows タブレットの現状&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-02-26 08:29:50 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/アドネットワークをブラウザがデフォルトでブロックする件'&gt;アドネットワークをブラウザがデフォルトでブロックする件&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-02-26 08:19:54 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/コンテンツに履歴表示する作った'&gt;コンテンツに履歴表示するもの作った&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-02-24 04:00:26 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ブラウザで動画を表示する'&gt;ブラウザで動画を表示する&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-02-22 09:44:30 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Groonga で気軽に検索する為の Gem を作りました'&gt;Groonga で気軽に検索する為の Gem を作りました&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-02-22 07:20:05 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Tiarra のログを fluentd で流す'&gt;Tiarra のログを fluentd で流す&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-02-19 15:42:46 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/BULK INSERT について'&gt;BULK INSERT について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-02-15 08:37:38 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/NHK に関するデマについて'&gt;NHK に関するデマについて&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-29 04:35:50 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/MariaDB に移行した'&gt;MariaDB に移行した&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-28 03:29:41 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/日本の回線状況について'&gt;日本の回線状況について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-23 15:49:40 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Google Chrome 拡張がインストールできない'&gt;Google Chrome 拡張がインストールできない&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-20 15:21:22 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/CROSS 2013'&gt;CROSS 2013 に行きませんでした&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-20 13:26:37 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/得票率と議席数'&gt;得票率と議席数が一致してないのはおかしい&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-17 16:01:28 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/都会に住むということ'&gt;都会に住むということ&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-16 08:43:23 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/facebook と slidshare'&gt;facebook と slideshare に関する知っておいて損の無い知識&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-15 06:53:02 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/自炊環境 2013'&gt;自炊環境 2013&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-08 14:42:54 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/2012年ツイートオブジイヤー'&gt;2012年ツイートオブジイヤー&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-08 00:19:00 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/神奈川県には法律が無い'&gt;神奈川県には法律が無い&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-07 05:29:00 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/2012年振り返り'&gt;2012年振り返り&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2013-01-01 15:11:07 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ext4 を 16TB より大きくする'&gt;ext4 を 16TB より大きくする&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-12-20 16:58:27 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/原発をなくしてシェールガスを使おう'&gt;原発をなくしてシェールガスを使おうみたいな主張最近よく見るけど&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-12-17 08:57:03 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Webプログラマーを志す学生'&gt;Webプログラマーを志す学生さんが、学生のうちにやっておきたい11の事&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-12-14 09:05:15 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/拡散お願いします'&gt;拡散お願いします&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-12-10 04:10:26 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Web サイトの Windows8 対応(CSS編)'&gt;Web サイトの Windows8 対応(CSS編)&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-12-09 14:06:55 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ベトナムの 3G 事情'&gt;ベトナムの 3G 事情&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-12-05 08:00:51 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Groonga を囲む夕べ 3 で話しました'&gt;Groonga を囲む夕べ 3 で話しました&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-11-29 12:07:21 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/外国と日本の接客の違い'&gt;外国と日本の接客の違い&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-11-17 12:34:06 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/顧客第一という姿勢について・あるいは企業にどこまで公益への負担を求めるのか'&gt;顧客第一という姿勢について・あるいは企業にどこまで公益への負担を求めるのか&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-11-17 06:56:23 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/失敗したら繰り返すやつ'&gt;失敗したら繰り返すやつ&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-11-07 23:32:19 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ウィルスとフィッシングの合わせ技について'&gt;ウィルスとフィッシングの合わせ技について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-10-30 05:38:45 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ボーン・レガシーの感想'&gt;ボーン・レガシーの感想&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-10-14 15:22:39 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/OAuth とか OpenID とかのフローを利用してフィッシングする話'&gt;OAuth とか OpenID とかのフローを利用してフィッシングする話&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-10-10 16:54:15 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/音が鳴るエディタ軽量化'&gt;音が鳴るエディタ軽量化&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-10-09 07:25:31 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/文化について'&gt;文化について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-10-08 02:59:27 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/裁断器と世相'&gt;裁断器と世相&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-10-05 08:13:32 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ベンチャーについて極めて基本的なこと'&gt;ベンチャーについて極めて基本的なこと&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-10-04 12:05:04 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ネットアイドルじゃない'&gt;ネットアイドルじゃない&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-10-02 08:02:27 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか'&gt;プロメテウスの感想、あるいは何故リドリー・スコットは劣化したのか&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-29 06:35:16 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/在宅勤務について'&gt;在宅勤務について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-28 06:54:28 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/iOS6 の地図について駅などをもとに考えてみる'&gt;iOS6 の地図について駅などをもとに考えてみる&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-24 05:34:42 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/主張'&gt;主張&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-13 10:07:30 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/Heroku で古いアプリを Cedar Stack に移行する話'&gt;Heroku で古いアプリを Cedar Stack に移行する話&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-12 06:55:44 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/タスク分類法'&gt;タスク分類法&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-10 14:19:34 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/エミュ鯖送検の話について'&gt;エミュ鯖送検の話について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-08 20:17:11 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/ネイティブアプリ並のウェブアプリを云々'&gt;ネイティブアプリ並のウェブアプリを云々&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-05 01:26:37 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/テレビ番組をノベルゲーム風にするものを作った'&gt;テレビ番組をノベルゲーム風にするものを作った&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-04 13:35:01 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/履歴よりもヤバいと思うこと'&gt;履歴よりもヤバいと思うこと&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-04 04:28:20 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/利用規約の履歴の可視化について'&gt;利用規約の履歴の可視化について&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-09-01 14:17:33 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/地味にサイト改善した'&gt;地味にサイト改善した&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-08-24 19:22:28 UTC)&lt;/span&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/新しいブログっぽいやつ作った'&gt;新しいブログっぽいやつ作った&lt;/a&gt;
    &lt;span style='color:grey'&gt;(2012-08-24 18:32:12 UTC)&lt;/span&gt;
  &lt;/p&gt;
&lt;/div&gt;
</description>
      <pubDate>Sat, 06 Apr 2013 02:20:50 +0900</pubDate>
      <guid>http://ssig33.com/text</guid>
    </item>
    <item>
      <title>text/録画する話</title>
      <link>http://ssig33.com/text/録画する話</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;録画する話&lt;/h2&gt;

&lt;p&gt;あんまりまとまりの無い文章です。&lt;/p&gt;

&lt;p&gt;ここ一年ぐらいはテレビ番組録画が趣味ですとか、録画したものは全部保存して一ヶ月 2500 本前後容量にして 1TB ぐらいですとか言うとなんでそんなに録画するんだとか結構言われるんですが、いくらか真面目に考えていることがあって&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;まずデータが無いと駄目&lt;/li&gt;
&lt;li&gt;とにかくデータありき&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;だなあと。データを集めるのに理由はいらないと思うんです。データがあってなんとなく眺めていれば活用方法というのは自然と出てくる。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ssig33/pig-media-server"&gt;自作のメディアサーバー&lt;/a&gt;とか&lt;/li&gt;
&lt;li&gt;&lt;a href="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"&gt;字幕読むやつ&lt;/a&gt;とか&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;発想が先にあったんじゃなくて、データをぼーっと眺めてたら活用法が思い浮かんだ。&lt;/p&gt;

&lt;p&gt;何をするにせよ、まず手元にデータがあることの重要性というのは、かなりあると思います。何も無いところから発想が出てくるということはまず無いと思います。 Web サイトクロールしまくってもいいし、テレビ放送という映像を延々と垂れ流しているものを録画しまくるのでもいい。本というのもデータの塊ですから、僕は Amazon やメロンブックスから勝手に本を買ってくる bot を動かしていろいろ興味の無いものを集めている。&lt;/p&gt;

&lt;p&gt;特にこれ以上言いたいことがあるわけじゃないですが追記するかも。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 06 Apr 2013 00:47:18 +0900</pubDate>
      <guid>http://ssig33.com/text/録画する話</guid>
    </item>
    <item>
      <title>js/youpy.js</title>
      <link>http://ssig33.com/js/youpy.js</link>
      <description>&lt;p&gt;raw
mime js
function addCSS(){
    var l = document.createElement(&amp;quot;link&amp;quot;);
    l.rel = &amp;quot;stylesheet&amp;quot;;
    l.href = &amp;quot;&lt;a href="http://ssig33.com/youpy2.css"&gt;http://ssig33.com/youpy2.css&lt;/a&gt;&amp;quot;;
    document.getElementsByTagName(&amp;quot;head&amp;quot;)[0].appendChild(l);
}
$(function(){
  $(&amp;#39;#youpy&amp;#39;).click(function(){addCSS()})
})&lt;/p&gt;
</description>
      <pubDate>Sat, 06 Apr 2013 00:30:05 +0900</pubDate>
      <guid>http://ssig33.com/js/youpy.js</guid>
    </item>
    <item>
      <title>youpy2.css</title>
      <link>http://ssig33.com/youpy2.css</link>
      <description>&lt;p&gt;raw
mime css
* {&lt;/p&gt;

&lt;p&gt;-moz-transition: all 10s; 
  -webkit-transition: all 10s;&lt;br&gt;
  -ms-transition: all 10s;&lt;br&gt;
  -o-transition: all 10s;&lt;br&gt;
  transition: all 10s;&lt;br&gt;
  border-radius:0;&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;*:hover {&lt;/p&gt;

&lt;p&gt;border-radius:50px;
  width:50px;
  height:50px;
  background:#f0f;
  position:absolute;
  top:0;
  left:0;
  -moz-transition: all 10s; 
  -webkit-transition: all 10s;&lt;br&gt;
  -ms-transition: all 10s;&lt;br&gt;
  -o-transition: all 10s;&lt;br&gt;
  transition: all 10s;  &lt;/p&gt;

&lt;p&gt;font-size: 3000px !important;
border: 100px dotted #0f0;
}&lt;/p&gt;
</description>
      <pubDate>Sat, 06 Apr 2013 00:29:29 +0900</pubDate>
      <guid>http://ssig33.com/youpy2.css</guid>
    </item>
    <item>
      <title>gyazo</title>
      <link>http://ssig33.com/gyazo</link>
      <description>&lt;h1&gt;Gyazo&lt;/h1&gt;

&lt;h2&gt;スクリーンショットの瞬間共有&lt;/h2&gt;
</description>
      <pubDate>Mon, 01 Apr 2013 23:43:25 +0900</pubDate>
      <guid>http://ssig33.com/gyazo</guid>
    </item>
    <item>
      <title>coffee</title>
      <link>http://ssig33.com/hatenablog.coffee</link>
      <description>(function() {
  $(function() {
    return $('#globalheader-container').remove();
  });

}).call(this);
</description>
      <pubDate>Mon, 01 Apr 2013 15:23:00 +0900</pubDate>
      <guid>http://ssig33.com/hatenablog.coffee</guid>
    </item>
    <item>
      <title>recent update</title>
      <link>http://ssig33.com/recent</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;meta charset='UTF-8'&gt;
&lt;title&gt;ssig33.com - recent update&lt;/title&gt;
&lt;link href='http://ssig33.com/common.css' media='screen' rel='stylesheet' type='text/css'&gt;
&lt;link href='http://ssig33.com/sh_style.css' media='screen' rel='stylesheet' type='text/css'&gt;
&lt;link href='http://ssig33.com/metro.css' media='screen' rel='stylesheet' type='text/css'&gt;
&lt;meta content='width=320, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' name='viewport'&gt;
&lt;link href='/feed' rel='alternate' title='feed' type='application/rss+xml'&gt;
&lt;script src='/sh_main.min.js'&gt;&lt;/script&gt;
&lt;script src='/sh_ext.js'&gt;&lt;/script&gt;
&lt;script src='/jquery-1.6.1.min.js'&gt;&lt;/script&gt;
&lt;div id='all'&gt;
  &lt;h2&gt;ssig33.com - recent update&lt;/h2&gt;
  &lt;p&gt;
    &lt;a href='/feed'&gt;feed&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/text/欧米では〜'&gt;text/欧米では〜&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-22 10:54:44 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/セキュリティの話'&gt;text/セキュリティの話&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-21 13:38:10 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/source/app.rb'&gt;source/app.rb&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-21 12:16:42 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/Google I/O で発表されたサービスについて'&gt;text/Google I/O で発表されたサービスについて&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-17 00:27:17 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/北方謙三の『史記 武帝紀』'&gt;text/北方謙三の『史記 武帝紀』&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-16 23:59:51 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/Rails 4 にして動かなかったやつ'&gt;text/Rails 4 にして動かなかったやつ&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-14 08:27:42 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/綺麗なコードか汚いコードかという話'&gt;text/綺麗なコードか汚いコードかという話&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-14 04:44:43 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/プログラマの話'&gt;text/プログラマの話&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-13 23:40:45 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/自分語りが〜みたいな話'&gt;text/自分語りが〜みたいな話&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-13 04:45:57 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/翠星のガルガンティアのターゲットとかについて'&gt;text/翠星のガルガンティアのターゲットとかについて&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-12 12:29:32 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/**(本のジャンル)初心者向け'&gt;text/**(本のジャンル)初心者向け&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-12 02:32:18 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/山岸和利の話'&gt;text/山岸和利の話&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-11 13:41:46 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/レ・ミゼラブル見てきた'&gt;text/レ・ミゼラブル見てきた&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-10 11:25:55 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/ベトナムで働くとして'&gt;text/ベトナムで働くとして&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-08 23:17:04 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/発展途上国でスムースに SIM を買う'&gt;text/発展途上国でスムースに SIM を買う&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-04 08:43:29 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/HDD を毎月 12TB 使う人について'&gt;text/HDD を毎月 12TB 使う人について&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-05-02 11:03:12 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/キャリアパス分離の話'&gt;text/キャリアパス分離の話&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-24 02:51:13 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/others'&gt;others&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-23 09:49:31 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/index'&gt;index&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-23 09:49:08 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/koutetsu.itoyanagi.name.ssig33.com/default.css'&gt;koutetsu.itoyanagi.name.ssig33.com/default.css&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-23 09:42:08 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/koutetsu.itoyanagi.name.ssig33.com'&gt;koutetsu.itoyanagi.name.ssig33.com&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-23 09:41:48 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/リブーターを買った'&gt;text/リブーターを買った&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-17 13:01:13 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/4 月にエンジニア'&gt;text/4 月にエンジニア&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-17 02:56:54 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/声優の携帯電話というサイトを作りました'&gt;text/声優の携帯電話というサイトを作りました&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-07 05:09:36 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/layout'&gt;layout&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 18:03:29 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/feed'&gt;feed&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 17:56:05 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/common.css'&gt;common.css&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 17:55:38 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/サイト内検索つけた'&gt;text/サイト内検索つけた&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 17:50:51 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/source'&gt;source&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 17:48:35 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/search.coffee'&gt;search.coffee&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 17:44:48 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/search'&gt;search&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 17:41:54 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text'&gt;text&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 17:20:50 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/録画する話'&gt;text/録画する話&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 15:47:18 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/js/youpy.js'&gt;js/youpy.js&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 15:30:05 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/youpy2.css'&gt;youpy2.css&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-05 15:29:29 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/gyazo'&gt;gyazo&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-01 14:43:25 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/hatenablog.coffee'&gt;hatenablog.coffee&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-04-01 06:23:00 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/recent'&gt;recent&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-03-28 09:30:02 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/ベンチャーが大型資金調達をしていけない理由'&gt;text/ベンチャーが大型資金調達をしていけない理由&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-03-22 02:19:34 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/OpenFastladder クローラー向け RPC について'&gt;text/OpenFastladder クローラー向け RPC について&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-03-20 09:49:46 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/OpenFastladder が現代的な環境で動くようになってきてる'&gt;text/OpenFastladder が現代的な環境で動くようになってきてる&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-03-16 10:56:50 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/text/OpenFastladder その後'&gt;text/OpenFastladder その後&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-03-16 06:17:12 UTC
    &lt;/span&gt;
    &lt;br&gt;
    &lt;a href='/turbolinks で実際に攻撃する為に必要な事'&gt;turbolinks で実際に攻撃する為に必要な事&lt;/a&gt;
    &lt;span class='lightgray'&gt;
      updated at:
      2013-03-13 13:55:16 UTC
    &lt;/span&gt;
    &lt;br&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href='/'&gt;Go to Top Page&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;
</description>
      <pubDate>Thu, 28 Mar 2013 18:30:02 +0900</pubDate>
      <guid>http://ssig33.com/recent</guid>
    </item>
    <item>
      <title>ベンチャーが VC などから大型資金調達をしていけない理由</title>
      <link>http://ssig33.com/text/ベンチャーが大型資金調達をしていけない理由</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;ベンチャーが VC などから大型資金調達をしていけない理由&lt;/h2&gt;

&lt;p&gt;たった一つです。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;上場出来なくなる&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;VC の資金が全体の 40% とか 50% とかになってきますと、もう上場出来ません。国内において VC は上場されれば株を売るわけですから、 VC の比率が高いというのは上場後に株価が下落する方向に働きます。ですから比率が高ければ上場を引き受けてくれる幹事がいなくなります。&lt;/p&gt;

&lt;p&gt;ですから VC の比率が上がってしまうとそれを下げないといけないということになるのですが、一度崩れた資本構成を組み直すのは大抵無理です。&lt;/p&gt;

&lt;p&gt;では何故 VC がそういう行動をとってしまうかというと&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;そもそも VC 運営のノウハウがまだあまりない（それでもインドやヨーロッパよりマシだけど）&lt;/li&gt;
&lt;li&gt;VC が自己資金を投資にぶちこんじゃってるので回収しないといけないみたいな意識が強い

&lt;ul&gt;
&lt;li&gt;顧客の金入れてるだけなら手数料がそもそも回収できるのでもっと悠長にできるので小さくちょこちょこでいい&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;というあたりでしょうか。取り急ぎ書きました、お前のことだぞ、いいな、分かったか。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Fri, 22 Mar 2013 11:19:34 +0900</pubDate>
      <guid>http://ssig33.com/text/ベンチャーが大型資金調達をしていけない理由</guid>
    </item>
    <item>
      <title>text/OpenFastladder クローラー向け RPC について</title>
      <link>http://ssig33.com/text/OpenFastladder クローラー向け RPC について</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;OpenFastladder クローラー向け RPC について&lt;/h2&gt;

&lt;p&gt;OpenFastladder にクローラー向け API が出来ました。&lt;/p&gt;

&lt;p&gt;若干むちゃくちゃな仕様だが&lt;a href="https://github.com/fastladder/fastladder/pull/97"&gt;無理矢理通した&lt;/a&gt;というものです。&lt;/p&gt;

&lt;p&gt;自分の好きな言語でクローラーを開発し、 Fastladder で使用することが出来ます。&lt;/p&gt;

&lt;h3&gt;使い方&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Fastladder をセットアップする&lt;/li&gt;
&lt;li&gt;ユーザーを作り、サインインする&lt;/li&gt;
&lt;li&gt;右上のメニューにある Account っていうページにいって、左のメニューから API Key に行く&lt;/li&gt;
&lt;li&gt;Set or Change Auth Key っていうボタンクリックする&lt;/li&gt;
&lt;li&gt;Your API Auth Key is: *********************************** みたいになるのでそれ自分のクローラーにコピペ&lt;/li&gt;
&lt;li&gt;http://your_fastladder/rpc/update_feed に向けて以下の内容を POST する

&lt;ul&gt;
&lt;li&gt;feedlink: フィードの URL&lt;/li&gt;
&lt;li&gt;link: 記事の URL&lt;/li&gt;
&lt;li&gt;body: 記事の内容&lt;/li&gt;
&lt;li&gt;category: 記事のカテゴリ&lt;/li&gt;
&lt;li&gt;published_date: 記事の発行日&lt;/li&gt;
&lt;li&gt;api_key: 先程の API Key&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;以上です。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;api_key: API Key&lt;/li&gt;
&lt;li&gt;json: {&amp;quot;feedlink&amp;quot;:&amp;quot;フィードの URL&amp;quot;,&amp;quot;link&amp;quot;:&amp;quot;記事の URL&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;記事の内容&amp;quot;,&amp;quot;category&amp;quot;:&amp;quot;記事のカテゴリ&amp;quot;,&amp;quot;published_date&amp;quot;:&amp;quot;記事の発行日&amp;quot;}&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という感じで POST しても大丈夫です。&lt;/p&gt;

&lt;p&gt;複数の記事を一括で更新したい場合は&lt;/p&gt;

&lt;p&gt;/rpc/update_feeds という API に対して&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;api_key: API Key&lt;/li&gt;
&lt;li&gt;feeds: [{&amp;quot;feedlink&amp;quot;:&amp;quot;フィードの URL&amp;quot;,&amp;quot;link&amp;quot;:&amp;quot;記事の URL&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;記事の内容&amp;quot;,&amp;quot;category&amp;quot;:&amp;quot;記事のカテゴリ&amp;quot;,&amp;quot;published_date&amp;quot;:&amp;quot;記事の発行日&amp;quot;},{&amp;quot;feedlink&amp;quot;:&amp;quot;フィードの URL&amp;quot;,&amp;quot;link&amp;quot;:&amp;quot;記事の URL&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;記事の内容&amp;quot;,&amp;quot;category&amp;quot;:&amp;quot;記事のカテゴリ&amp;quot;,&amp;quot;published_date&amp;quot;:&amp;quot;記事の発行日&amp;quot;}]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;みたいな感じで POST してください。 feeds は JSON 。&lt;/p&gt;

&lt;p&gt;重複を Fastladder とクローラーで連携して確認し、無駄なものを POST しないようにするということも出来ます。 check_digest というのがそれです。その辺説明めんどくさいので&lt;a href="https://github.com/fastladder/fastladder/blob/master/app/controllers/rpc_controller.rb"&gt;ソース自分で読んで&lt;/a&gt;考えてください。&lt;/p&gt;

&lt;h3&gt;一歩進んだ使い方&lt;/h3&gt;

&lt;p&gt;上記の方法では、実はフィードしか送りつけることが出来ません。ですがこういう仕組みが用意されている以上、フィードでないものも Fastladder に送りつけて購読することはまさに醍醐味と言えるでしょう。以下のようにすることでフィードでないものも購読出来ます。&lt;/p&gt;

&lt;p&gt;上記で POST しているパラメーターに更に以下を加える&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;feedtitle: フィードのタイトル&lt;/li&gt;
&lt;li&gt;feeddescription: フィードの説明&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JSON の場合も複数登録の場合も同様です。 feedtitle は必須ですが feeddescripiton は必須ではありません。&lt;/p&gt;

&lt;p&gt;フィードではないものを Fastladder で購読する実例を以下に示します。&lt;/p&gt;

&lt;pre&gt;&lt;code class="ruby"&gt;require &amp;#39;user-stream-receiver&amp;#39;                                                                                                                                                     
require &amp;#39;json&amp;#39;                                                                                                                                                                     
require &amp;#39;rest_client&amp;#39;                                                                                                                                                              

HOST = &amp;#39;&amp;#39;
API_KEY = &amp;#39;&amp;#39;

UserStreamReceiver.new.run{|chunk|                                                                                                                                                 
  begin                                                                                                                                                                            
    chunk = JSON.parse(chunk)                                                                                                                                                      
    next unless chunk[&amp;#39;text&amp;#39;]                                                                                                                                                      
    hash = {                                                                                                                                                                       
      feedlink: &amp;quot;https://twitter.com/#{chunk[&amp;#39;user&amp;#39;][&amp;#39;screen_name&amp;#39;]}&amp;quot;,                                                                                                             
      feedtitle: &amp;quot;Twitter #{chunk[&amp;#39;user&amp;#39;][&amp;#39;screen_name&amp;#39;]}&amp;quot;,                                                                                                                        
      link: &amp;quot;https://twitter.com/#{chunk[&amp;#39;user&amp;#39;][&amp;#39;screen_name&amp;#39;]}/status/#{chunk[&amp;#39;id&amp;#39;]}&amp;quot;,                                                                                           
      title: &amp;quot;Twitter #{chunk[&amp;#39;user&amp;#39;][&amp;#39;screen_name&amp;#39;]}&amp;quot;,                                                                                                                            
      body: chunk[&amp;#39;text&amp;#39;],                                                                                                                                                         
      author: chunk[&amp;#39;user&amp;#39;][&amp;#39;screen_name&amp;#39;],                                                                                                                                        
      category: &amp;#39;Twitter&amp;#39;,                                                                                                                                                         
      published_date: chunk[&amp;#39;created_at&amp;#39;]                                                                                                                                          
    }                                                                                                                                                                         
    RestClient.post &amp;quot;http://#{HOST}/rpc/update_feed&amp;quot;, json: hash.to_json, api_key: API_KEY                                                       
  rescue                                                                                                                                                                           
    p &amp;#39;error&amp;#39;                                                                                                                                                                      
  end                                                                                                                                                                              
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これは Twitter の UserStreams を読み込んでガンガン Fastladder に送りつけていくというものです。全く便利ではありません。&lt;/p&gt;

&lt;p&gt;結構便利に遊べる API なのではないかと思います。どうぞ、ご利用ください。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 20 Mar 2013 18:49:46 +0900</pubDate>
      <guid>http://ssig33.com/text/OpenFastladder クローラー向け RPC について</guid>
    </item>
    <item>
      <title>text/OpenFastladder が現代的な環境で動くようになってきてる</title>
      <link>http://ssig33.com/text/OpenFastladder が現代的な環境で動くようになってきてる</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;OpenFastladder が現代的な環境で動くようになってきてる&lt;/h2&gt;

&lt;p&gt;表題通りの話です。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/fastladder/fastladder"&gt;Fastladder&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;これ Rails 2.0.2 とか絶望的に古い環境でしか動かなかったんですが。昨日一日で結構いろいろやりました。 Ruby 1.9.3 + Rails 3.2.12 という近代的な環境で動きます。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ユーザー作成&lt;/li&gt;
&lt;li&gt;ログイン&lt;/li&gt;
&lt;li&gt;フィードの登録&lt;/li&gt;
&lt;li&gt;クロール&lt;/li&gt;
&lt;li&gt;各種設定の変更&lt;/li&gt;
&lt;li&gt;閲覧&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;は「とりあえず」動いてます。今のところ動いてないことがはっきりしているものは&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OPML のインポートとエクスポート

&lt;ul&gt;
&lt;li&gt;ライブラリが 6 年近くアップデート止まってて結構辛い&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;です。週末中に OPML はなんとかします。クローラーがかなりアレなので&lt;a href="https://gist.github.com/mala/5162105"&gt;これ&lt;/a&gt;で提案されてるクローラー向け API もさくっと作ってしまおうと思っています。&lt;/p&gt;

&lt;p&gt;「どうぞ、ご利用ください」と言えるような品質にはまだなってませんが、ご利用 &amp;amp; pull req くれると嬉しいです。&lt;/p&gt;

&lt;p&gt;以下駄文。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ソーシャルフィルタリングあるからフィードとかいらねえし&lt;/li&gt;
&lt;li&gt;検索出来ればいいんだから暗記なんか必要ないし&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;みたいな主張を今回の Google Reader 停止騒動に関連して改めて多々見るようになりました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ソーシャルフィルタリングの上流にいる人がどうやって情報を得ているのか&lt;/li&gt;
&lt;li&gt;友達が興味あるような情報だけ得ていて友達に対して知的な優位を得ることが出来るのか&lt;/li&gt;
&lt;li&gt;得たい情報への検索ワードという暗記は結局必要じゃねえか&lt;/li&gt;
&lt;li&gt;検索して記事を読むっていうアクション結構重いよ？&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;みたいなことについて考えたほうがいいと思います。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;自分が知りたいものはなんなのか&lt;/li&gt;
&lt;li&gt;その為に何をすればいいか&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ということをコンピューターはまだ教えてくれません。だから「ソーシャルフィルタリング」とか「全文検索」とかいうものがあるわけです。ですがこれらは不完全です。結局上記のようなことは自分でなんとかするしかないです。&lt;/p&gt;

&lt;p&gt;しかしいずれはコンピューターがそういうことまでやってくれるようになり、そして超空間通路が南極に打ち込まれ人類はジャムとの泥沼の戦争に巻き込まれることになるでしょう。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 16 Mar 2013 19:56:50 +0900</pubDate>
      <guid>http://ssig33.com/text/OpenFastladder が現代的な環境で動くようになってきてる</guid>
    </item>
    <item>
      <title>text/OpenFastladder その後</title>
      <link>http://ssig33.com/text/OpenFastladder その後</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;OpenFastladder その後&lt;/h2&gt;

&lt;p&gt;&lt;a href="/text/OpenFastladder%20%E3%81%8C%E7%8F%BE%E4%BB%A3%E7%9A%84%E3%81%AA%E7%92%B0%E5%A2%83%E3%81%A7%E5%8B%95%E3%81%8F%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%A6%E3%82%8B"&gt;先日の状況&lt;/a&gt;からもう大分変わっている。優れた開発者が多数開発に参加し、動かない機能はほぼ無くなっているし、 JavaScript などもメンテしやすいようにリファクタリングされている。&lt;/p&gt;

&lt;p&gt;常用出来るレベルになってると思います。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 16 Mar 2013 15:17:12 +0900</pubDate>
      <guid>http://ssig33.com/text/OpenFastladder その後</guid>
    </item>
    <item>
      <title>turbolinks で実際に攻撃する為に必要な事</title>
      <link>http://ssig33.com/turbolinks で実際に攻撃する為に必要な事</link>
      <description>&lt;h3&gt;turbolinks で実際に攻撃する為に必要な事&lt;/h3&gt;

&lt;p&gt;まだ厳密に検証した訳じゃない。 -&amp;gt; それなりにマジメに検証した &amp;amp; 背景をちょっとだけ勉強した&lt;/p&gt;

&lt;p&gt;攻撃が成立する条件&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;オープンリダイレクタが設置されてる&lt;/li&gt;
&lt;li&gt;サイト内にユーザーが自由にリンク記述できる&lt;/li&gt;
&lt;li&gt;ブラウザーが IE

&lt;ul&gt;
&lt;li&gt;IE 以外では same origin から cross origin へのリダイレクトが XHR 内で起きるとエラーになる

&lt;ul&gt;
&lt;li&gt;どうもこの辺りの仕様がはっきりしていないので実装依存、という理解。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://xkansan.tumblr.com/post/17767109559/xhr-redirect-same-origin-to-cross-origin"&gt;有用な参考文献&lt;/a&gt; (1 年前の文献)&lt;/li&gt;
&lt;li&gt;今日の Firefox では same origin から cross origin へのリダイレクトはプリフライト必要な場合にエラー&lt;/li&gt;
&lt;li&gt;Firefox にしろ Chrome にしろ Safari にしろ何もメッセージを言わずにエラーだけ吐きやがる&lt;/li&gt;
&lt;li&gt;リリース版 IE10 ではエラー起きません&lt;/li&gt;
&lt;li&gt;正直 XHR 中で same origin から cross origin へのリダイレクトでエラーが発生しなくて嬉しくない事例が思いつかない。嫌がらせと攻撃にしか使えないだろ。 IE がおかしい。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/bulkneets/statuses/311747091397480448"&gt;IE の動作が正しいとのこと&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;つまり今後この XSS が発生する環境はどんどん増える可能性があります&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;ちなみに古い IE では XHR Level 2 自体が動かない。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;攻撃サーバー側がきちんと対応してること。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/rails/turbolinks/blob/f7295cacf375e2358310cb35a3c9253457a42707/lib/assets/javascripts/turbolinks.js.coffee#L29"&gt;ここ&lt;/a&gt;でカスタムヘッダが設定されてるので攻撃サーバー側は nginx なら以下みたいに設定する必要がある。&lt;/p&gt;

&lt;pre&gt;&lt;code class="conf"&gt;add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods &amp;quot;POST, GET, OPTIONS&amp;quot;;
add_header Access-Control-Allow-Headers &amp;quot;Origin, Authorization, Accept&amp;quot;;                                                                          
add_header Access-Control-Allow-Credentials true;         

location / {                                                                                                                                                   
  if ($request_method = OPTIONS ) {                                                                                                                                
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods &amp;quot;POST, GET, OPTIONS&amp;quot;;
    add_header Access-Control-Allow-Headers &amp;quot;Origin, Authorization, Accept, X-XHR-Referer&amp;quot;;
    add_header Access-Control-Allow-Credentials true;
    add_header Content-Length 0;
    add_header Content-Type text/plain;
    return 200;                                                                                                                                  
  }                                                                                                                                                 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Rails 側は実証コードも糞もあるか。&lt;/p&gt;

&lt;p&gt;重要なのは OPTION ではちゃんと X-XHR-Referer を受け入れること。本番リクエストでは別に受け入れなくていい。普通の CORS の話です。&lt;/p&gt;

&lt;h3&gt;未来予想&lt;/h3&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;この状態で turbolinks デフォルトとかクレイジーでしょ =&gt; デフォルトから外す pull req を誰かが投げる =&gt; 「オープンリダイレクタ置くようなバカの為にデフォルトから外すのはおかしい」みたいな意見が出てくる =&gt; &lt;a href="https://github.com/msgpack/msgpack/issues/128"&gt;#128&lt;/a&gt; みたいな炎上事案になる&lt;/p&gt;— 未来世紀ひだまりスケッチの絶対の危機 (@ssig33) &lt;a href="https://twitter.com/ssig33/status/311750164559847424"&gt;March 13, 2013&lt;/a&gt;&lt;/blockquote&gt;

&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;

&lt;p&gt;XHR Level 2 自体が人類にはまだ早すぎた感ある。&lt;/p&gt;
</description>
      <pubDate>Wed, 13 Mar 2013 22:55:16 +0900</pubDate>
      <guid>http://ssig33.com/turbolinks で実際に攻撃する為に必要な事</guid>
    </item>
    <item>
      <title>PCの時計を2099 年 12 月 31 日 23 時 59 分にしてみた</title>
      <link>http://ssig33.com/text/PCの時計を2099年12月31日にしてみた</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;PCの時計を2099 年 12 月 31 日 23 時 59 分にしてみた&lt;/h2&gt;

&lt;p&gt;VirtualBox 上の Windows 8 でやってみました。実際にどうなるのか？&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;設定した数秒後に NTP 経由で正しい時刻に戻った&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;以上。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 10 Mar 2013 12:22:04 +0900</pubDate>
      <guid>http://ssig33.com/text/PCの時計を2099年12月31日にしてみた</guid>
    </item>
    <item>
      <title>text/Windows タブレットの現状</title>
      <link>http://ssig33.com/text/Windows タブレットの現状</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;Windows タブレットの現状&lt;/h2&gt;

&lt;p&gt;Surface 上陸前夜という感じなので状況を整理しておきます。&lt;/p&gt;

&lt;p&gt;だいたい製品には以下のカテゴリーがあります&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ARM の Windows RT タブレット&lt;/li&gt;
&lt;li&gt;10.1 or 11.6 インチな Atom タブレット&lt;/li&gt;
&lt;li&gt;10.1 or 11.6 インチ or それ以上のサイズの Core i5 タブレット&lt;/li&gt;
&lt;li&gt;それ以外&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;でそれぞれなんとなく現状を書いていきます。&lt;/p&gt;

&lt;h3&gt;ARM の Windows RT タブレット&lt;/h3&gt;

&lt;p&gt;Surface RT などが該当するカテゴリです。これらは現状ゴミです。絶対に買ってはいけません。ゴミである理由は&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows RT であるが故に出来ることが少ない&lt;/li&gt;
&lt;li&gt;Atom タブレットと比較した時、重量、駆動時間などにおいてメリットが全くないかむしろ劣っている&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という 2 点です。このカテゴリの製品を見てよさそうと思ったら、それと似た感じの Atom タブレットを探したほうがいいです。&lt;/p&gt;

&lt;p&gt;ただし商用利用可能な Office がついてくるので Office とブラウザと Hulu ぐらいしかマジで使わないみたいな人はありかもしれません（そんな奴いないだろ）。&lt;/p&gt;

&lt;h3&gt;10.1 or 11.6 インチな Atom タブレット&lt;/h3&gt;

&lt;p&gt;ThinkPad Tablet 2 、 Iconia W510 、 Vivotab Smart などの製品が該当するカテゴリです。個人的にかなりおすすめのカテゴリです。&lt;/p&gt;

&lt;p&gt;これらの製品は Intel から提供された設計をもとに作られており（Ultrabook などと似たような成り立ち）、どの製品も似たようなスペックを持ちます。具体的には以下の通り&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ディスプレイは 10.1 インチ or 11.6 インチで画面画素数は 1366x768&lt;/li&gt;
&lt;li&gt;重量は 580g 前後&lt;/li&gt;
&lt;li&gt;CPU は Atom Z2760 と Power VR の SoC&lt;/li&gt;
&lt;li&gt;メモリは 2GB&lt;/li&gt;
&lt;li&gt;バッテリーの持ち時間は普通に使ってだいたい 12 時間ぐらい&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;これらの点で仕様が共通なので、あとはデジタイザを積んでるかとか、分離可能なバッテリー内蔵キーボードがあるかとか、各種 I/O がどうなってるかとかが違いになります。&lt;/p&gt;

&lt;p&gt;ストレージは大抵の製品で 64GB ですがリカバリ領域やシステム領域でいろいろ食われるので 64GB モデルでユーザーデータは iPad 32GB 版ぐらいしか入れられないと思っておくのがよいです。ですが全ての製品で microSDXC が使えるので増やせはします。&lt;/p&gt;

&lt;p&gt;このカテゴリの製品は Windows 8 の UI を最大限活用することが出来、駆動時間や携帯性の面でも iPad などと比べてもメリットがあります。また VLC とか入れれば普通に ts とかも再生できて便利です。ゲームもエロゲや Super Hexagon ぐらいなら余裕で動く。&lt;/p&gt;

&lt;p&gt;価格が安いのも特徴で、製品によっては &lt;a href="http://kakaku.com/item/K0000458587/"&gt;5 万円しないくらい&lt;/a&gt; です。&lt;/p&gt;

&lt;h3&gt;10.1 or 11.6 インチ or それ以上のサイズの Core i5 タブレット&lt;/h3&gt;

&lt;p&gt;Surface Pro とか Iconia W700 とか Thinkpad Helix とか。&lt;/p&gt;

&lt;p&gt;これらの製品は CPU は強力ですが非常に重量が重いという欠点があります。だいたいどの製品も 900g 前後です。この重量は日本の環境でタブレットとして使用するにはかなり無理があると思います。&lt;/p&gt;

&lt;h3&gt;それ以外&lt;/h3&gt;

&lt;p&gt;それ以外と書きましたが上記以外の製品というと変形ノート PC のことです。変形ノート PC はだいたいどれも重量が 1.5kg 前後あるのが現状で、タブレットとして使用するには、、、という感じです。変形機構のついていないタッチパネルノートは重量が 1.3kg 前後になってだいぶ軽いので、変な変形機構ついてるやつ買うくらいなら変形しないやつのほうがいいんじゃないかと思います。&lt;/p&gt;

&lt;h3&gt;結論&lt;/h3&gt;

&lt;h1&gt;Surface は買うな。&lt;/h1&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 26 Feb 2013 17:29:50 +0900</pubDate>
      <guid>http://ssig33.com/text/Windows タブレットの現状</guid>
    </item>
    <item>
      <title>text/アドネットワークをブラウザがデフォルトでブロックする件</title>
      <link>http://ssig33.com/text/アドネットワークをブラウザがデフォルトでブロックする件</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;アドネットワークをブラウザがデフォルトでブロックする件&lt;/h2&gt;

&lt;p&gt;どういうことが起きてるかは自分で調べてください、俺は説明する気はない。&lt;/p&gt;

&lt;p&gt;今回の話は&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;広告会社のトラッキングは邪悪なのでブラウザがデフォルトブロックする&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という話ですが、これを一般化すると&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;機能 A は邪悪なのでプラットフォーマーが禁止する&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;という話になります。やってることとしては iOS とか Windows とかのアプローチです。話を具体的な事例に戻して言いますが、 iOS のクローズなプラットフォームに対抗して Firefox OS というオープンなプラットフォームを作ろうとしている組織がこのようなことをやるのは絶対におかしいと思います。&lt;/p&gt;

&lt;p&gt;それはともかく携帯電話でもっと簡単にサードパーティークッキーブロックできるようにしてほしい。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Tue, 26 Feb 2013 17:19:54 +0900</pubDate>
      <guid>http://ssig33.com/text/アドネットワークをブラウザがデフォルトでブロックする件</guid>
    </item>
    <item>
      <title>コンテンツに履歴表示するもの作った</title>
      <link>http://ssig33.com/text/コンテンツに履歴表示する作った</link>
      <description>&lt;h1&gt;&lt;a href="/"&gt;ssig33.com&lt;/a&gt;&lt;/h1&gt;

&lt;div id="created_at"&gt;&lt;/div&gt;

&lt;h2&gt;コンテンツに履歴表示するもの作った&lt;/h2&gt;

&lt;p&gt;このサイトのデータ、以下のような持ち方をしている。&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;カラム名&lt;/th&gt;
&lt;th&gt;型&lt;/th&gt;
&lt;th&gt;中身&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;name&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;ページの名前(URL に表示してるやつ)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;text&lt;/td&gt;
&lt;td&gt;text&lt;/td&gt;
&lt;td&gt;本文&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;created_at&lt;/td&gt;
&lt;td&gt;datetime&lt;/td&gt;
&lt;td&gt;作成日時&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;で、ページは更新される毎に UPDATE かけるのではなく、 INSERT していて、ページを表示する時は、その name を持つページのうち一番新しいものを表示するとかしてる。&lt;/p&gt;

&lt;p&gt;もともと更新履歴表示したくてこういうデータの持ち方してたんだけど、めんどくさくて履歴表示する部分は作ってなかった。それを今作った。&lt;/p&gt;

&lt;p&gt;このサイトのソースは&lt;a href="/source"&gt;これ&lt;/a&gt;と&lt;a href="/layout"&gt;これ&lt;/a&gt;を見ると分かるようになってます。&lt;/p&gt;

&lt;p&gt;そんなわけでこのページは一回編集ミスしたりとかしてるので履歴が早速下にでてます。&lt;/p&gt;

&lt;p&gt;&lt;a href="/text"&gt;back to index of texts&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 24 Feb 2013 13:00:26 +0900</pubDate>
      <guid>http://ssig33.com/text/コンテンツに履歴表示する作った</guid>
    </item>
  </channel>
</rss>
