<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6666395799935960184</id><updated>2011-12-15T09:07:27.837+09:00</updated><category term='launchd'/><category term='RubyOSA'/><category term='TV'/><category term='Lion'/><category term='vi'/><category term='plutil'/><category term='2010-amazon-api-jp'/><category term='mblogger'/><category term='AppleScript'/><category term='Music'/><category term='Amazon'/><category term='SnowLeopard'/><category term='Write'/><category term='Design'/><category term='Perl'/><category term='macruby'/><category term='mdiary'/><category term='textutil'/><category term='Blogger'/><category term='Apple'/><category term='OSX'/><category term='Leopard'/><category term='RubyCocoa'/><category term='AirMac'/><category term='x'/><category term='sleep'/><category term='essay'/><category term='get-item-amazon'/><category term='iTunes'/><category term='git'/><category term='gem'/><category term='Ruby'/><category term='Safari'/><category term='readbook'/><category term='Nuclear'/><category term='RubyUtility'/><category term='AirPort'/><category term='vim'/><category term='Book'/><category term='networksetup'/><category term='News'/><category term='google'/><category term='daybook'/><category term='importdata'/><category term='MacVim'/><title type='text'>midore's blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default?start-index=101&amp;max-results=100'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>209</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-1068564180889859756</id><published>2011-12-15T09:07:00.001+09:00</published><updated>2011-12-15T09:07:27.893+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nuclear'/><title type='text'>FRYING DUTCHMAN humanERROR</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;# タイトルと記事内容が不一致なのはミスじゃありません。*1&lt;br/&gt;&lt;br/&gt;電力不足だから、原発は必要だとか、&lt;br/&gt;放射性物質ってのはもともと自然界に存在していたから大丈夫!だとか&lt;br/&gt;日本の技術力はすごいのだ。原発売って何が悪いかとか。&lt;br/&gt;このように考える方は少なからずいらっしゃるでしょう。&lt;br/&gt;&lt;br/&gt;または、&lt;br/&gt;セシウム137 だけじゃない、学問的プロパガンダにも汚染されてしまったのに&lt;br/&gt;その自覚が全くない理系出身の方々や、&lt;br/&gt;&lt;br/&gt;内部被曝による健康被害は科学的には立証されていないらしい...&lt;br/&gt;すなわち、人体に影響はなーい。&lt;br/&gt;このようなおとぎ話を「まるで宗教のように信じ込み」&lt;br/&gt;懐疑的視点を持たない己の『非』科学的態度を省みず、&lt;br/&gt;Web を探せばどこにでも転がっているチェルノブイリの汚染地図も、&lt;br/&gt;チェルノブイリ周辺の子供たちのガンはどのようなものかも、&lt;br/&gt;自ら自発的に「調べようとしたことがなく」&lt;br/&gt;内部被曝について検索したこともないことを、&lt;br/&gt;すっかり棚に上げきったあげく...&lt;br/&gt;&lt;br/&gt;騒ぎ過ぎ。と言い放つ俺様の方々。&lt;br/&gt;&lt;br/&gt;このような人々にとっての『科学的』とは一体何なのでしょうか?&lt;br/&gt;&lt;br/&gt;下記のサイトは、福島原発が放出した放射性物質について、&lt;br/&gt;一般市民が科学的に理解する上で欠かせない重要なことを示唆していると思います。&lt;br/&gt;&lt;a href='http://jun-makino.sakura.ne.jp/articles/811/note008.html'&gt;./note008.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;-- その他関連&lt;br/&gt;&lt;br/&gt;&lt;a href='http://fujiwaratoshikazu.com/2011disaster/'&gt;放射線と健康&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://savechild.net/archives/3463.html'&gt;「情報を開示し子供と妊産婦を守れ」チェルノブイリ周辺で甲状腺癌治療に従事した松本市長 菅谷昭氏 | SAVE CHILD&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;被曝と健康被害との関係については、議論の余地があるが、&lt;br/&gt;『法的』な面から捉えた場合は、あまり議論の余地はないのでは?&lt;br/&gt;という東京大学の先生の意見もあります。&lt;br/&gt;&lt;a href='http://togetter.com/li/136056'&gt;事故で放射能汚染があったため、放射線管理区域(一時管理区域)を設定していた実例&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;この法律が制定された当時の研究者や原発を推進した政治家たちでさえ、&lt;br/&gt;人口的な放射性物質と健康との関係において科学的に未解明なことがあるから&lt;br/&gt;といってそれを「根拠」に法律を「制定しない」という判断は下しませんでした。&lt;br/&gt;なぜでしょう?&lt;br/&gt;法律自体の必要性や、そこに定められた線量は科学的根拠を持ったものか?&lt;br/&gt;や、なぜこの法律の中で飲食や睡眠を禁止しているのかについて、&lt;br/&gt;是非ご一考いただければと思います。&lt;br/&gt;&lt;br/&gt;もし仮に、この法律が存在しなかったら....&lt;br/&gt;全国あちこちにある&lt;br/&gt;大学内、企業内、実験所内などの放射線管理区域に日々出入りする人々は&lt;br/&gt;仕事をしながら、無制限に外部被曝、内部被曝してよし、&lt;br/&gt;とされてしまいます。&lt;br/&gt;被曝と健康との関係が立証されようが、されまいが&lt;br/&gt;自らの健康を保護することができない環境下におかれてしまう訳です。&lt;br/&gt;もし、法律がなかったら現実におこっていたことでしょう。&lt;br/&gt;この法律によって命びろいした人や、事故を未然に防止できたケースも&lt;br/&gt;あったであろうと推測できます。&lt;br/&gt;&lt;br/&gt;そして、なにより重要なことは、福島原発事故によって、&lt;br/&gt;放射線管理区域に相当する地域になってしまった場所で、&lt;br/&gt;居住する一般市民が存在していることです。&lt;br/&gt;&lt;br/&gt;*1&lt;br/&gt;限られた日本人たちの間で蔓延する『空気』とやらを重んじるならば、&lt;br/&gt;『決して』口にしてはいけないであろう詩を素晴らしく歌う Artist 。&lt;br/&gt;&lt;br/&gt;YouTube - Broadcast Yourself&lt;br/&gt;http://www.youtube.com/watch?v=ENBV0oUjvs0&lt;br/&gt;&lt;br/&gt;# Google 動画検索 で FRYING DUTCHMAN humanERROR&lt;br/&gt;# を検索すると Flash なしで聞くことのできるサイトもいくつかありました。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-1068564180889859756?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/1068564180889859756/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=1068564180889859756' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1068564180889859756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1068564180889859756'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/12/frying-dutchman-humanerror.html' title='FRYING DUTCHMAN humanERROR'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4593448192513414041</id><published>2011-11-22T20:38:00.001+09:00</published><updated>2011-11-23T09:00:23.484+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><category scheme='http://www.blogger.com/atom/ns#' term='macruby'/><title type='text'>iTunes: MacRuby で重複する曲を削除</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;先日&lt;br/&gt;MacRuby で iTunes から重複する曲を削除するものを作りました。&lt;br/&gt;https://gist.github.com/1382271&lt;br/&gt; (OS X 10.7.2 限定)&lt;br/&gt;&lt;br/&gt;-- 参考にさせていただいたサイト&lt;br/&gt;&lt;br/&gt;# ファイルを移動させる際の条件など大変参考になりましたし、&lt;br/&gt;# MacRuby についての情報もいろいろありました。&lt;br/&gt;&lt;a href='http://d.hatena.ne.jp/Watson/20081215/1229299017'&gt;iTunesに重複登録されている音楽ファイルを削除する - Watsonのメモ&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;# iTunes.app に下記のような機能があったことをこれまで知りませんでした。&lt;br/&gt;&lt;a href='http://support.apple.com/kb/ht2905?viewlocale=ja_JP'&gt;iTunes ライブラリで重複した項目を検索し、削除する方法&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;-- 当初、最も悩んだこと&lt;br/&gt;&lt;br/&gt;track.delete&lt;br/&gt;を実行すると なぜか MacRuby がクラッシュしました。&lt;br/&gt;MacRuby バージョンは&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% macruby -v
MacRuby 0.11 (ruby 1.9.2) [universal-darwin11.0, x86_64]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;重複する曲が 20 個以上あるとき&lt;br/&gt;playlist.tracks の曲を each でまわし一定の条件を満たしたタイミングで&lt;br/&gt;track.delete するとクラッシュしました。&lt;br/&gt;こんな感じ。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;myplaylist.tracks.each{|x|
  if ...
  # x がなにかの条件をみたしたら
  x.delete
  # この瞬間にクラーッシュ!
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;それで、オブジェクトを探ってみることに...&lt;br/&gt;&lt;br/&gt;test.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;framework "ScriptingBridge"

i = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes")
a = i.sources[0].userPlaylists.find{|x| x.name ==  "ミュージック"}.tracks
p b = a[0]
p c = a[0]
p b.equal?(c)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;#=&amp;gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% macruby test.rb
false
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;なんと false がかえってきました。&lt;br/&gt;b, c は object としてはイコールでは『ない』とのこと。&lt;br/&gt;a は１度しか定義していないにもかかわらず...。&lt;br/&gt;&lt;br/&gt;例えば、Ruby 1.9 では&lt;/p&gt;&lt;pre&gt;&lt;code&gt;a = ["a","b","c"]
b = a[0]
c = a[0]
p b.equal?(c)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;#=&amp;gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby193 -v aaa.rb
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]
true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;true がかえってきます。&lt;br/&gt;&lt;br/&gt;MacRuby のこの件について理解できておりませんが、ともかく&lt;br/&gt;この事が原因でクラッシュをひきおこしているのかも? と考え&lt;br/&gt;一意の曲オブジェクトを「確実」に指名する方法をとることにしました。&lt;br/&gt;要は&lt;/p&gt;&lt;pre&gt;&lt;code&gt;track.databaseID
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を使うことにしました。&lt;br/&gt;&lt;br/&gt;こんな感じです。&lt;br/&gt;&lt;br/&gt;条件をみたした 曲オブジェクトの databaseID を hash に溜め込んでから、&lt;br/&gt;hash を each でまわしつつ&lt;br/&gt;その都度 fileTracks から 指定した databaseID に基づいて曲オブジェクトを検索し&lt;br/&gt;検出できたら&lt;br/&gt;.delete&lt;br/&gt;を実行...&lt;/p&gt;&lt;pre&gt;&lt;code&gt;      @h.each{|k,v|
        t = @filetracks.find{|x| x.databaseID == k}
        next unless t
        t.delete
      }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;このようにしてみたところ .delete を実行しても&lt;br/&gt;クラッシュしなくなりました。&lt;br/&gt;# あくまでも私の環境下においてでは!です。&lt;br/&gt;&lt;br/&gt;# ちなみに .fileTracks と .tracks の 2 種類ありますが&lt;br/&gt;# 上記では .fileTracks　を対象にしています。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4593448192513414041?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4593448192513414041/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4593448192513414041' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4593448192513414041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4593448192513414041'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/11/macruby-itunes-httpsgist.html' title='iTunes: MacRuby で重複する曲を削除'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5084978958901676889</id><published>2011-11-12T12:54:00.001+09:00</published><updated>2011-11-22T20:36:53.631+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><category scheme='http://www.blogger.com/atom/ns#' term='macruby'/><title type='text'>Tutorial MacRuby</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://arstechnica.com/apple/guides/2011/09/tutorial-os-x-automation-with-macruby-and-the-scripting-bridge.ars/2'&gt;Tutorial: OS X automation with MacRuby and the Scripting Bridge&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;One more for the road&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;以降にある iTunes のサンプルを実行すると&lt;/p&gt;&lt;pre&gt;&lt;code&gt;... `&amp;lt;main&amp;gt;': undefined method `playlists' for nil:NilClass (NoMethodError)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;playlists がない？&lt;br/&gt;なーんてことはなくて単に日本語システムだからだった。&lt;br/&gt;要素名を日本語に変えればよいのだった。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;...
  .find {|s| s.name == "ライブラリ"}
  .playlists.find {|p| p.name == "トップ 25"} #Top 25 Most Played"}
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;この内容を理解する為、基本的な AppleScript を動かす。&lt;/p&gt;&lt;pre&gt;&lt;code&gt; tell application "iTunes"
  repeat with i in playlists
    if name of i is "ミュージック" then
      get tracks
    end if
  end repeat
end tell
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;AppleScript Editor.app　のイベントログで&lt;br/&gt;playlists の要素や tracks の属性を確認できた。&lt;br/&gt;sources にアクセスしなくても、playlists を獲得できた。&lt;br/&gt;&lt;br/&gt;MacRuby でも playlists 要素を目視したい為...&lt;/p&gt;&lt;pre&gt;&lt;code&gt;framework "ScriptingBridge"

i = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes")
i.sources.select{|x|
  x.playlists.each{|y|
    puts y.name
    if y.name ==  "トップ 25" # "トップレート", "ミュージック"
      songs = y.tracks.sort{|t1,t2| t2.playedCount &amp;lt;=&amp;gt; t1.playedCount}
      # songs[0..2].map{|t| puts "#{t.artist} - #{t.name} (#{t.playedCount})"}
    end
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;puts y.name でプレイリスト名一覧を確認できた。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;ライブラリ
ミュージック
ムービー
テレビ番組
Podcast
iTunes U
ブック
iTunes DJ
90 年代ミュージック
クラシック音楽
トップ 25
トップレート
ミュージックビデオ
最近再生した項目
最近追加した項目
ラジオ
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;書き換えながらいろいろ試す。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;framework "ScriptingBridge"

i = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes")
ary = i.sources.map{|x| x.playlists}.flatten
top25 = ary.find{|i| i.name == "トップ 25"}
songs = top25.tracks.sort{|t1,t2| t2.playedCount &amp;lt;=&amp;gt; t1.playedCount}
songs.find_all{|t| t.rating &amp;gt; 2}.map{|t| puts "#{t.artist} - #{t.name} (#{t.playedCount})"}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;Ruby らしい(つもりの)書き方へ。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;framework "ScriptingBridge"

class MyiTunes
  def initialize(str)
    exit if (str.empty? or str.nil?)
    @str = str
    # iTunes Object
    i = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes")
    # playlist Object
    @ary = i.sources.map{|x| x.playlists}.flatten
    @songs = @ary.find{|i| i.name == @str}.tracks
  end

  def debug
    @ary.each{|x| puts x.name}
  end

  def view
    print "-- #{@str}\n"
    find_all
    count_sort
    to_s
  end

  private
  def count_sort
    @songs = @songs.sort {|t1,t2| t2.playedCount &amp;lt;=&amp;gt; t1.playedCount}
  end

  def find_all
    @songs = @songs.find_all{|t| t.rating &amp;gt; 60}
  end

  def to_s
    @songs.each_with_index{|x,n|
      break if n &amp;gt; 2
      puts "#{x.artist} - #{x.name} (#{x.playedCount}) [#{x.rating}]"
    }
  end
end

MyiTunes.new("トップ 25").view
# MyiTunes.new("トップ 25").debug

&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;-- トップ 25
Glenn Gould - Bach: Goldberg Variations, BWV 988 - Aria (5) [100]
Glenn Gould - Bach: Goldberg Variations, BWV 988 - Var. 7 (5) [60]
Glenn Gould - Bach: Goldberg Variations, BWV 988 - Var. 5 (4) [80]
% 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;MyiTunes クラスは&lt;br/&gt;"トップ25" から、&lt;br/&gt;星が3つ以上の曲を抽出し、&lt;br/&gt;再生回数順にソートし&lt;br/&gt;3行出力したら終わる。&lt;br/&gt;&lt;br/&gt;.rating&lt;br/&gt;に注意を払っていなかった。&lt;br/&gt;puts 表示させてよくみてみると&lt;br/&gt;星が 5つだと 100で、&lt;br/&gt;星が 4つだと 80 で、&lt;br/&gt;星が 3つだと 60 に、&lt;br/&gt;なっていた。&lt;br/&gt;星が3つ以上( &amp;gt; 60 )に変えた。&lt;br/&gt;# t.rating &amp;gt; 60&lt;br/&gt;&lt;br/&gt;iTunes.app 環境設定で表示する項目を減らして&lt;br/&gt;MyiTunes.new("トップ 25").debug&lt;br/&gt;を実行すると...正しく捕獲できた。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;ライブラリ
ミュージック
ブック
90 年代ミュージック
クラシック音楽
トップ 25
トップレート
ミュージックビデオ
最近再生した項目
最近追加した項目
% 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;MyiTunes.new("ミュージック")&lt;br/&gt;でも OK だった。&lt;br/&gt;&lt;br/&gt;-- 追記&lt;br/&gt;OS X 10.7.2 で自力で MacRuby をインストールしていない為&lt;br/&gt;/System/Library/PrivateFrameworks/MacRuby.framework/Versions/A/usr/bin/macruby&lt;br/&gt;を使った。&lt;br/&gt;&lt;br/&gt;最後に、~/Library/Logs/CrashReporter で&lt;br/&gt;MacRuby がクラッシュしていないかみてみたが&lt;br/&gt;大丈夫だった。&lt;br/&gt;&lt;br/&gt;[2011-11-12]&lt;br/&gt;最短?&lt;/p&gt;&lt;pre&gt;&lt;code&gt;i = SBApplication.applicationWithBundleIdentifier("com.apple.iTunes")
top25 = i.sources.flat_map{|x| x.playlists}.find{|t| t.name == "トップ 25"}
p top25.name
songs = top25.tracks
p songs.size
=&amp;gt;
"トップ 25"
25
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;[2011-11-22]&lt;br/&gt;&lt;a href='https://gist.github.com/1379657'&gt;続き&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5084978958901676889?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5084978958901676889/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5084978958901676889' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5084978958901676889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5084978958901676889'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/11/tutorial-macruby.html' title='Tutorial MacRuby'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-7314456493477292177</id><published>2011-11-12T12:52:00.001+09:00</published><updated>2011-11-12T12:52:22.160+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Time.parse</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;はまった。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; Time.parse("2011/11/01 am 10:00:00")
=&amp;gt; Thu Nov 10 01:00:00 +0900 2011
&amp;gt;&amp;gt; Time.parse("2011/11/01 am 00:30:00")
ArgumentError: argument out of range
  from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/time.rb:184:in `local'
  from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/time.rb:184:in `make_time'
  from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/time.rb:243:in `parse'
  from (irb):5
&amp;gt;&amp;gt; Time.parse("2011/11/01 am 01:30:00")
=&amp;gt; Tue Nov 01 01:00:00 +0900 2011
&amp;gt;&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;parse 様にいわせればユーザが am, pm 言うなんておかしいだろってこと？&lt;br/&gt;そ、そうかも。&lt;br/&gt;&lt;br/&gt;# 2011-11-04&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-7314456493477292177?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/7314456493477292177/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=7314456493477292177' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7314456493477292177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7314456493477292177'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/11/timeparse.html' title='Time.parse'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6029064543971059719</id><published>2011-11-08T15:48:00.001+09:00</published><updated>2011-11-08T16:13:13.225+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>OS X 10.7.2: Mobile Processes</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Lion になって新しく登場したプロセスにはどのようなものがあるだろうか?と&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ sudo launchctl list
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を眺めつつ&lt;br/&gt;% man xxx&lt;br/&gt;しつつ&lt;br/&gt;&lt;br/&gt;ふと&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% apropos Mobile
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を試してみたら...&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;mdmclient(1)             - MDM (Mobile Device Management) client
mtmd(8)                  - Mobile Time Machine snapshot daemon
mtmfs(8)                 - Mobile Time Machine file system daemon
special_file_handler(8)  - data provider for special files used by Mobile Documents
ubd(8)                   - ubiquity daemon, part of Mobile Documents
% 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;Mobile 関連ぽいものがわかった。&lt;br/&gt;&lt;br/&gt;#-------------------------&lt;br/&gt;# MDM&lt;br/&gt;#-------------------------&lt;br/&gt;# 1. mdmclient(1)             - MDM (Mobile Device Management) client&lt;br/&gt;# 2. mtmd(8)                  - Mobile Time Machine snapshot daemon&lt;br/&gt;#    mtmfs(8)                 - Mobile Time Machine file system daemon&lt;br/&gt;# 3. special_file_handler(8)  - data provider for special files used by Mobile Documents&lt;br/&gt;# 4. ubd(8)&lt;br/&gt;#-------------------------&lt;br/&gt;&lt;br/&gt;#-------------------------&lt;br/&gt;# 1. mdmclient&lt;br/&gt;#-------------------------&lt;br/&gt;# man mdclient&lt;br/&gt;# mdmclient -- MDM (Mobile Device Management) client&lt;br/&gt;#&lt;br/&gt;# $ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mdmclient.daemon.plist&lt;br/&gt;# % launchctl unload -w /System/Library/LaunchAgents/com.apple.mdmclient.agent.plist&lt;br/&gt;&lt;br/&gt;#-------------------------&lt;br/&gt;# 2. mtmd, mtmfs&lt;br/&gt;#-------------------------&lt;br/&gt;# $ man mtmd&lt;br/&gt;# $ man mtmfs&lt;br/&gt;# $ man tmutil&lt;br/&gt;#&lt;br/&gt;# $ sudo tmutil disable&lt;br/&gt;# $ sudo tmutil disablelocal&lt;br/&gt;# $ sudo launchctl unload -w System/Library/LaunchDaemons/com.apple.mtmd.plist&lt;br/&gt;# $ sudo launchctl unload -w System/Library/LaunchDaemons/com.apple.mtmfs.plist&lt;br/&gt;&lt;br/&gt;#-------------------------&lt;br/&gt;# 3. special_file_handler&lt;br/&gt;#-------------------------&lt;br/&gt;# man special_file_handler&lt;br/&gt;# special_file_handler -- data provider for special files used by Mobile Documents&lt;br/&gt;#&lt;br/&gt;# $ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.ubiquity.special_files.plist&lt;br/&gt;&lt;br/&gt;#-------------------------&lt;br/&gt;# 4. ubd&lt;br/&gt;#-------------------------&lt;br/&gt;# man ubd&lt;br/&gt;# ubd -- ubiquity daemon, part of Mobile Documents&lt;br/&gt;# ubd is the ubiquity server process. It is primarily used for "Mobile Documents".&lt;br/&gt;# SEE ALSO&lt;br/&gt;#     special_file_handler(8)&lt;br/&gt;&lt;br/&gt;# % launchctl unload -w /System/Library/LaunchAgents/com.apple.ubd.plist&lt;br/&gt;&lt;br/&gt;#-------------------------&lt;br/&gt;# findmymac&lt;br/&gt;#-------------------------&lt;br/&gt;# /System/Library/PrivateFrameworks/FindMyMac.framework/Resources/FindMyMacMessenger.app/Contents/MacOS/FindMyMacMessenger&lt;br/&gt;#&lt;br/&gt;# $ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.findmymac.plist&lt;br/&gt;# $ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.findmymacmessenger.plist&lt;br/&gt;&lt;br/&gt;# % launchctl unload -w /System/Library/LaunchAgents/com.apple.findmymacmessenger.plist&lt;br/&gt;&lt;br/&gt;#-------------------------&lt;br/&gt;# awacsd&lt;br/&gt;#-------------------------&lt;br/&gt;# man awacsd&lt;br/&gt;# awacsd -- Apple Wide Area Connectivity Service daemon&lt;br/&gt;# awacsd is an executable invoked by launchd to facilitate connections between devices using Back to My Mac.&lt;br/&gt;#&lt;br/&gt;# $ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.awacsd.plist&lt;br/&gt;&lt;br/&gt;#-------------------------&lt;br/&gt;# talagent&lt;br/&gt;#-------------------------&lt;br/&gt;# man talagent&lt;br/&gt;# The talagent tool provides services related to the Transparent App Lifecycle feature.&lt;br/&gt;#&lt;br/&gt;# % launchctl unload -w /System/Library/LaunchAgents/com.apple.talagent.plist&lt;br/&gt;# % launchctl unload -w /System/Library/LaunchAgents/com.apple.TMLaunchAgent.plist&lt;br/&gt;&lt;br/&gt;# [WARNING: 要注意]&lt;br/&gt;# 上記に点在するコマンドを実行すると、iPhone, iPod, iPad などのデバイスと&lt;br/&gt;# うまく連携できなくなるかもしれません。&lt;br/&gt;# また、iTunes も起動できなくなるかもしれません。起動できたとしても&lt;br/&gt;# 思い通りに動かなくなるかもしれません。&lt;br/&gt;# iCloud と一切交信できなくてもよい人向け entry なのです。&lt;br/&gt;&lt;br/&gt;-- 至らない説明。&lt;br/&gt;&lt;br/&gt;$ で始まる行は管理者ユーザ用。&lt;br/&gt;% で始まる行は一般ユーザ。&lt;br/&gt;実行するといずれも、&lt;br/&gt;/var/db/launchd.db/&lt;br/&gt;にキャッシュされる。&lt;br/&gt;&lt;br/&gt;/System/Library/LaunchDaemons/&lt;br/&gt;配下には daemon plist が保存されており、&lt;br/&gt;/System/Library/LaunchAgents/&lt;br/&gt;配下には daemon に対する agent plist が保存されている。&lt;br/&gt;&lt;br/&gt;特定の daemon を 起動時に読み込むか読み込まないかは、&lt;br/&gt;sudo launchctl [load|unload] ...&lt;br/&gt;で制御可能(管理者のみ)。&lt;br/&gt;だが、unload されていない daemon&lt;br/&gt;(イコール load していて sudo launchctl list に表示されるdaemon)&lt;br/&gt;が率いる agent を一般ユーザ側が unload しても反映されない。場合がある。&lt;br/&gt;&lt;br/&gt;反映しているかしていないかは&lt;br/&gt;一般ユーザで&lt;br/&gt;% launchctl list&lt;br/&gt;を実行すればわかる。&lt;br/&gt;保存された launchctl を確認したい時は&lt;br/&gt;% cat /var/db/launchd.db/.../.../overrides.plist&lt;br/&gt;で確認できる。&lt;br/&gt;&lt;br/&gt;-- 私が実行してみたものはこちら。&lt;br/&gt;&lt;a href='https://gist.github.com/1330318'&gt;github.com/1330318&lt;/a&gt;&lt;br/&gt;&lt;a href='https://gist.github.com/1330308'&gt;gist.github.com/1330308&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;-- その他&lt;br/&gt;anonymous.librariand&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ sudo defaults read /System/Library/LaunchAgents/com.apple.librariand
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;なんのことやら。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ man librariand
No manual entry for librariand
$ 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;-- 感想&lt;br/&gt;Apple は Mac OS X を iCloud やデバイス中心の OS にしてしまった。&lt;br/&gt;Mac OS X 10.7 全ユーザが iCloud にログインすることを前提にしている。&lt;br/&gt;iCloud やデバイスと無関係でいたいマシンも&lt;br/&gt;そのようなプロセスと無関係でいられなくなってしまった。&lt;br/&gt;Mac OS X は Snow Leopard 以降、変わってしまった。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6029064543971059719?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6029064543971059719/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6029064543971059719' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6029064543971059719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6029064543971059719'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/11/os-x-1072-mobile-processes.html' title='OS X 10.7.2: Mobile Processes'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-7421796260848767102</id><published>2011-11-08T00:25:00.001+09:00</published><updated>2011-11-08T00:25:27.287+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='textutil'/><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>textutil</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;めったに使わないコマンド textutil&lt;br/&gt;-- rtf file を plain text に変換する方法 --&lt;br/&gt;&lt;br/&gt;# /Libray で rtf file をみかけたら適当な名前でホームにコピーする。&lt;br/&gt;% cp /Library/Documentation/AirPort\ Acknowledgements.rtf ~/airport-doc.rtf&lt;br/&gt;&lt;br/&gt;# そのファイルの information を表示する。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% textutil -info airport-doc.rtf
File:  airport-doc.rtf
  Type:  rich text format (RTF)
  Size:  43836 bytes
  Length:  39382 characters
  Contents:  Acknowledgments...
% 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# ヘルプで確認する。&lt;br/&gt;% textutil -help&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;...&lt;br/&gt;&lt;br/&gt;-convert fmt   convert each input file to format (txt, rtf, rtfd,&lt;br/&gt;                html, doc, docx, odt, wordml, or webarchive)&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;# txt に変換。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% textutil  ~/airport-doc.rtf  -convert txt -output ~/000.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# txt ファイルを読む。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% more ~/000.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-7421796260848767102?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/7421796260848767102/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=7421796260848767102' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7421796260848767102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7421796260848767102'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/11/textutil.html' title='textutil'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4053210329837684311</id><published>2011-11-08T00:19:00.001+09:00</published><updated>2011-11-08T00:19:09.499+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacVim'/><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>org.vim.MacVim</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;mymvim.rb&lt;br/&gt;http://midorex.blogspot.com/2011/11/mymvimrb.html&lt;br/&gt;のその後。(いろいろ試してわかったこと)&lt;br/&gt;&lt;br/&gt;自分で -g に設定していたものを削除。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% defaults delete -g NSQuitAlwaysKeepsWindows
% defaults delete -g ApplePersistenceIgnoreState

% su admin
$ sudo defaults delete /Library/Preferences/.GlobalPreferences NSQuitAlwaysKeepsWindows
$ sudo defaults delete /Library/Preferences/.GlobalPreferences ApplePersistenceIgnoreState
$
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;org.vim.MacVim からも追加したものを削除&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% defaults delete org.vim.MacVim NSQuitAlwaysKeepsWindows
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;MacVim の環境設定&lt;br/&gt;[Preference General]&lt;br/&gt;Open untitled window: never&lt;br/&gt;Open files from applications: with a tab for each file&lt;br/&gt;After last window closes: Quit MacVim&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% defaults read org.vim.MacVim
{
    MMAutosaveColumns = 150;
    MMAutosaveRows = 45;
    MMCurrentPreferencePane = General;
    MMLastWindowClosedBehavior = 2;
    MMNativeFullScreen = 0;
    MMOpenInCurrentWindow = 1;
    MMTopLeftPoint = "{516, 746}";
    MMUntitledWindow = 0;
    MMUseInlineIm = 0;
    NSNavLastRootDirectory = "~";
    NSNavPanelExpandedSizeForOpenMode = "{585, 418}";
    NSQuotedKeystrokeBinding = "";
    NSRepeatCountBinding = "";
    SUCheckAtStartup = 0;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;これで、MacVim が起動していない時に、&lt;br/&gt;MacVim 付属の mvim を動かしても shell が終了しないなんてことはなくなった。&lt;br/&gt;mvim の exec は何も悪くなかった!。&lt;br/&gt;せっかく作った mymvim.rb は残念だけど不要だった。&lt;br/&gt;&lt;br/&gt;% syslog -w&lt;br/&gt;をみていても変なメッセージはでてこなくなった。&lt;br/&gt;&lt;br/&gt;MacVim 起動すると、&lt;br/&gt;~/Library/Saved Application State/org.vim.MacVim.savedState&lt;br/&gt;が生成されるけれど、MacVim を終了すると同時に自動的に消えてなくなってくれるようにもなった!。&lt;br/&gt;&lt;br/&gt;感想。&lt;br/&gt;今後 defaults -g に write するのはやめよう。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4053210329837684311?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4053210329837684311/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4053210329837684311' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4053210329837684311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4053210329837684311'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/11/orgvimmacvim.html' title='org.vim.MacVim'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-8163329741877761664</id><published>2011-11-04T21:30:00.001+09:00</published><updated>2011-11-04T21:33:28.491+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacVim'/><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>mymvim.rb</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;MacVim 付属のmvim はshell で書かれている。&lt;br/&gt;mvim で存在しないファイルを指定すると新規ファイルを作成する。&lt;br/&gt;Lion で MacVim を起動していない時にうっかり mvim を動かすと&lt;br/&gt;下記のようなエラーが残り shell 終了しない。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;... MacVim[451:507] ApplePersistenceIgnoreState: Existing state will not be touched. New state will be written to ....
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ctr + C で終了するはめになる。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;defaults write -g ApplePersistenceIgnoreState YES
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行しているけれど&lt;br/&gt;念のため org.vim.MacVim にも指定。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% defaults write org.vim.MacVim ApplePersistenceIgnoreState YES
% defaults read org.vim.MacVim
{
    ApplePersistenceIgnoreState = YES;
    MMAutosaveColumns = 150;
    MMAutosaveRows = 45;
    MMCurrentPreferencePane = General;
    MMLastWindowClosedBehavior = 1;
    MMNativeFullScreen = 0;
    MMOpenInCurrentWindow = 1;
    MMTopLeftPoint = "{208, 723}";
    MMUntitledWindow = 0;
    MMUseInlineIm = 0;
    NSQuotedKeystrokeBinding = "";
    NSRepeatCountBinding = "";
    SUCheckAtStartup = 0;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;が...むなしく変化なく shell 終わらず。&lt;br/&gt;そりゃそうかも。&lt;br/&gt;mvim の最後の行あたり exec が怪しいのかも...&lt;br/&gt;&lt;br/&gt;それで&lt;br/&gt;Ruby 1.9.3 で mymvim.rb を作るいい口実ができた。&lt;br/&gt;mymvim.rb は&lt;br/&gt;MacVim が起動していなかったら、たぶん?正しく起動し、指定したファイルを開く。&lt;br/&gt;存在しないファイルを指定してしまっても、何もおこらない。&lt;br/&gt;おもったよりも早く動く。&lt;br/&gt;&lt;br/&gt;ところが mymvim.rb を実行すると...&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ps aux  |grep task
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;=&amp;gt;&lt;br/&gt;...(略)   grep --color=auto task&lt;br/&gt;...(略)   /usr/libexec/taskgated -p -s&lt;br/&gt;&lt;br/&gt;必ず  /usr/libexec/taskgated　が発生する。&lt;br/&gt;数分すると自動的に消える。これは一体なんなのだろう。&lt;br/&gt;Snow Leopard　の時もあったような気もする...。&lt;br/&gt;&lt;br/&gt;taskgated を sudo で kill しつつ&lt;br/&gt;よくよく試してみると mymvim.rb だけでなく&lt;br/&gt;MacVim 付属の mvim を実行したあとにも taskgated が発生していた。&lt;br/&gt;ということは、&lt;br/&gt;どのような方法で MacVim を起動したかってことは関係なくて、&lt;br/&gt;MacVim を起動したこと、そのこと自体が taskgated を引き起こしている&lt;br/&gt;ようだ。&lt;br/&gt;&lt;br/&gt;MacVim をインストールしている ~/Application　と&lt;br/&gt;同じ階層にある他の Application を起動してみると...&lt;br/&gt;taskgated が発生した。&lt;br/&gt;&lt;br/&gt;dmg をダウンロードしてインストールした&lt;br/&gt;/usr/local/git/bin/git&lt;br/&gt;を動かしてみると、やはり発生した。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby19 -e "puts \"hello\""
hello
% 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行しただけでも発生した。&lt;br/&gt;&lt;br/&gt;しかし Lion にデフォルトで入っていた ruby 1.8 を動かしても発生しなかった。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby  -e "puts \"hello\""
hello
% 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;/Application にある Safari.app などを起動してみると&lt;br/&gt;taskgated は発生しなかった。&lt;br/&gt;&lt;br/&gt;つまり&lt;br/&gt;Apple によって署名されていない Application やプログラムを起動すると&lt;br/&gt;taskgated process が発生するってことかな。?&lt;br/&gt;&lt;br/&gt;署名されたソフトウエアと、そうじゃないものの違い....&lt;br/&gt;&lt;br/&gt;mymvim.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# coding: utf-8
# snapshot MacVim 7.3
# OS X Lion 10.7.2
# ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]

module Mymvim
  class Mvim
    def initialize(f)
      @f = f
      @osa = '/usr/bin/osascript'
      macvim = "Tell application \"MacVim\""
      @s1 = "#{macvim} to open (POSIX file \"#{@f}\") as string"
      @s2 = "#{macvim} to activate"
    end
    def base
      run
    end
    def run
      begin
        e = system("#{@osa} -e '#{@s1}' -e '#{@s2}'")
        exit unless e
      ensure
        print "bye\n"
        exit
      end
    end
  end
end

f = ARGV[0]
 unless File.exist?(f)
  print "Not found : #{f}\n"
  exit
end
Mymvim::Mvim.new(f).base
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-8163329741877761664?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/8163329741877761664/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=8163329741877761664' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8163329741877761664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8163329741877761664'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/11/mymvimrb.html' title='mymvim.rb'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2200493821416084297</id><published>2011-10-22T10:10:00.001+09:00</published><updated>2011-10-22T10:10:17.365+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='networksetup'/><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>OS X 10.7.2: networksetup</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Lion 10.7.2&lt;br/&gt;優先するネットワークの設定。&lt;br/&gt;&lt;br/&gt;# 管理者ユーザでログイン。&lt;br/&gt;# ヘルプをみる。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ networksetup --help | grep addpreferredwirelessnetworkatindex
networksetup -addpreferredwirelessnetworkatindex &amp;lt;device name&amp;gt; &amp;lt;network&amp;gt; &amp;lt;index&amp;gt; &amp;lt;security type&amp;gt; [password]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# manual で addpreferredwirelessnetworkatindex の詳細をみる。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ man networksetup
     -addpreferredwirelessnetworkatindex hardwareport network index securitytype [password]
             Add wireless network named &amp;lt;network&amp;gt; to preferred list for &amp;lt;hardwareport&amp;gt; at &amp;lt;index&amp;gt;. Store the optional password in the
             keychain For security type, use OPEN for none, WPA for WPA Personal, WPAE for WPA Enterprise, WPA2 for WPA2 Personal,
             WPA2E for WPA2 Enterprise, WEP for plain WEP, and 8021XWEP for 802.1X WEP.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;実行すべきコマンドの雛形は&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ networksetup -addpreferredwirelessnetworkatindex &amp;lt;device name&amp;gt; &amp;lt;network&amp;gt; &amp;lt;index&amp;gt; &amp;lt;security type&amp;gt; [password]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で オプションは&lt;br/&gt;&lt;br/&gt;&amp;lt;device name&amp;gt;&lt;br/&gt;en0 とか en1 とか&lt;br/&gt;$ networksetup -listallhardwareports で要確認。&lt;br/&gt;&lt;a href='http://midorex.blogspot.com/2011/06/networksetup-createlocation.html'&gt;前回&lt;/a&gt;&lt;br/&gt;このオプションを間違えていたかも...&lt;br/&gt;&lt;br/&gt;&amp;lt;network&amp;gt;&lt;br/&gt;優先的に参加するローカルネットワーク名。&lt;br/&gt;&lt;br/&gt;&amp;lt;index&amp;gt;&lt;br/&gt;0 にすると優先順位が 1 番に。&lt;br/&gt;優先順位を 2 番目したければ 1 に。&lt;br/&gt;&lt;br/&gt;&amp;lt;security type&amp;gt;&lt;br/&gt;WPA2 Personal で設定しているなら -&amp;gt; 'WPA2'&lt;br/&gt;WPA2 Enterprise -&amp;gt; 'WPA2E'&lt;br/&gt;WPA Personal -&amp;gt; 'WPA'&lt;br/&gt;WPA Enterprise -&amp;gt; 'WPAE'&lt;br/&gt;plain WEP -&amp;gt; 'WEP'&lt;br/&gt;# ノンパスワードでローカルネットワーク解放しているなら&lt;br/&gt;none -&amp;gt; 'OPEN'&lt;br/&gt;&lt;br/&gt;[password]&lt;br/&gt;いわずもがな&lt;br/&gt;&lt;br/&gt;下記を実行すると...&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ sudo networksetup -addpreferredwirelessnetworkatindex en0 'homearea' 0 'WPA2' 'xxxxxxxxx'
Security type is set to: WPA2 Personal
Added bh to preferred networks list
$ 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;キーチェーンのシステムとログインに Wi-Fi 用鍵が出現。&lt;br/&gt;&lt;br/&gt;$ syslog -w をみながら&lt;br/&gt;&lt;br/&gt;おもむろに Wi-Fi 電源を On&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ networksetup -setairportpower en0 on
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;つながりました！&lt;br/&gt;&lt;br/&gt;追加された鍵のアクセス制御欄を確認すると&lt;/p&gt;&lt;pre&gt;&lt;code&gt;networksetup
AirPort
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;以前と同様にアクセス制御欄には「システム環境設定」が存在していない。&lt;br/&gt;(GUI から設定した場合は存在する)&lt;br/&gt;若干気になるがうまくいったようなので無視する。&lt;br/&gt;&lt;br/&gt;# 実行する前後に注意したこと。&lt;br/&gt;&lt;br/&gt;コマンドを実行する前にシステム環境設定ーネットワークを開き&lt;br/&gt;「新しいネットワークに接続するを確認」にチェックが『入っていない』ことを確認。&lt;br/&gt;詳細欄の&lt;br/&gt;「このコンピュータが接続したネットワークを記憶」&lt;br/&gt;「コンピュータとコンピュータネットワークを作成」&lt;br/&gt;「ネットワーク変更」&lt;br/&gt;の３つを On にしておく。&lt;br/&gt;&lt;br/&gt;コマンド実行後、&lt;br/&gt;Wi-Fi電源を ON にし優先するローカルネットワークに参加できたことを確認したら、&lt;br/&gt;一旦 Wi-Fi 電源をOFF。&lt;br/&gt;「新しいネットワークに接続するを確認」にチェックを入れて&lt;br/&gt;システム環境設定の鍵をかけ&lt;br/&gt;システム環境設定を終了しキャッシュする。&lt;br/&gt;&lt;br/&gt;管理者ユーザからログアウトし一般ユーザでログインしなおす。&lt;br/&gt;メニューバーから Wi-Fi 電源を On にする。&lt;br/&gt;優先するネットワークに参加できることを確認。&lt;br/&gt;一般ユーザのログインキーチェーンには Wi-Fi 用鍵は存在していなくて全然 OK 。&lt;br/&gt;&lt;br/&gt;最終確認。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ networksetup -listpreferredwirelessnetworks en0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行すると優先的に参加する無線ローカルネットワーク名が表示される。&lt;br/&gt;&lt;br/&gt;# IPv6&lt;br/&gt;&lt;a href='http://midorex.blogspot.com/2011/07/os-x-107-ipv6.html'&gt;OS X 10.7 : IPv6 を切る&lt;/a&gt;&lt;br/&gt;$ networksetup -getinfo 'Wi-Fi'&lt;br/&gt;$ sudo networksetup -setv6off 'Wi-Fi'&lt;br/&gt;&lt;br/&gt;# DNS&lt;br/&gt;$ networksetup --h | grep dns&lt;br/&gt;networksetup -getdnsservers &amp;lt;networkservice&amp;gt;&lt;br/&gt;networksetup -setdnsservers &amp;lt;networkservice&amp;gt; &amp;lt;dns1&amp;gt; [dns2] [...] &lt;br/&gt;&lt;br/&gt;$ networksetup -listnetworkserviceorder&lt;br/&gt;を実行すると &amp;lt;networkservice&amp;gt;　がわかる&lt;br/&gt;&lt;br/&gt;# Google DNS&lt;br/&gt;$ sudo networksetup -setdnsservers Wi-Fi '8.8.8.8' '8.8.4.4'&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2200493821416084297?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2200493821416084297/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2200493821416084297' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2200493821416084297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2200493821416084297'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/10/os-x-1072-networksetup.html' title='OS X 10.7.2: networksetup'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-7950994505156135376</id><published>2011-10-13T13:35:00.001+09:00</published><updated>2011-10-13T13:35:15.582+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nuclear'/><title type='text'>Pu</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;私は6月に&lt;a href='http://midorex.blogspot.com/2011/06/fukushima-nuclear.html'&gt;Fukushima Nuclear&lt;/a&gt; を書いた。&lt;br/&gt;公開した記事は実際に書いた文章のうちの後半半分だったので、ここに前半部分も公開しておこうと思う。&lt;br/&gt;個人としての私が欠如していると考えた情報とは何だったのか?を記録として残しておきたいから。&lt;br/&gt;&lt;br/&gt;2011.06.15 Wed PM 13:39:54&lt;br/&gt;&lt;br/&gt;今現在、ホットスポット(日本の法律に照らせば[放射線管理区域]に相当する地域) 発生地域を「予測できない」事を前提に、&lt;br/&gt;福島原発700キロ圏内地域の「全ての住民」が、&lt;br/&gt;&lt;br/&gt;「己の居住地域が現在どの程度汚染されているか?管理区域相当になっているだろうか?」&lt;br/&gt;&lt;br/&gt;を、正確かつリアルタイムに、知り得る環境にあるだろうか?...。&lt;br/&gt;No だと思う。&lt;br/&gt;&lt;br/&gt;なぜなら、文部科学省が公開している放射線測定結果は、即時性に欠けているばかりか、あまりにも測定地点が少ない。驚くほど少ない。測定されていない地域が圧倒的に多いから。(福島県内の学校における情報は十分とは言い難い。)&lt;br/&gt;&lt;br/&gt;何キロも離れた隣の町の線量値はわかっても自分の町の数値はわからない。こんなことで「情報公開されている」んだろうか?&lt;br/&gt;&lt;br/&gt;「700キロ」圏内の住民は、居住区域がどの程度汚染されているか正確に「リアルタイムに」知る必要に迫られている(命のために)が、現在のような緩慢な測定ではあまりに心もとない。なぜ、防ぐ事ができる将来的健康被害を「防ぐ為の測定」が行われていないか、だ。放射線測定は人の健康を守るため、ではないのだろうか。&lt;br/&gt;測定しない事が、風評被害を発生させる隙を、十二分に与えてしまっている。&lt;br/&gt;# 測定することで住民がパニックになったら困ると公言する役人もいるらしいが、それこそが根拠なき「憶測」で非科学的な最たる「風評」と呼びたい。&lt;br/&gt;&lt;br/&gt;ただちに、東京電力、日本政府及び地方自治体及び原子力安全委員会は、&lt;br/&gt;福島原発「700キロ圏内」の全ての公立小学校、及び公共施設で&lt;br/&gt;下記の測定を実施し、&lt;br/&gt;内部被曝を加味した暫定「総実効被曝線量」を、「24時間リアルタイム」に国民に告知すべき、なんじゃなかろうか...。&lt;br/&gt;&lt;br/&gt;1, 屋外(地上から歩行可能2,3歳児の身長程度の高さ)、および屋内(木造家屋含む)における放射線線種別測定と総合線量の測定。&lt;br/&gt;2, 道路上、土壌、上下水道中に含まれる「核種」別測定。&lt;br/&gt;3, 空気中に浮遊する放射性物質「核種」別の測定。大気中放射性物質含有量の測定。&lt;br/&gt;# zero ではない「数値」をゼロや未検出にねつ造しないことがもっとも重要。&lt;br/&gt;&lt;br/&gt;テレビ、ラジオにおいて、『公共の電波』において、天気予報とともに放射性物質拡散予報が報道されて当然のはずが、実施されていない。&lt;br/&gt;人命にかかわる重要かつ緊急情報を、天気予報とともに報道しない放送局は『公共の電波』を自らの利益追求のみに悪用している、のだと私は解釈している。&lt;br/&gt;&lt;br/&gt;[追記：2011.10.13]&lt;br/&gt;&lt;br/&gt;# なぜか二つ存在している世田谷区のニュース。&lt;br/&gt;世田谷区の道路で高い放射線量　NHKニュース&lt;br/&gt;http://www3.nhk.or.jp/news/html/20111012/t10013213371000.html&lt;br/&gt;世田谷区の道路で高い放射線量　NHKニュース&lt;br/&gt;http://www3.nhk.or.jp/news/html/20111012/k10013213371000.html&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;10月12日 18時18分&lt;br/&gt;高い放射線量が検出されたのは、世田谷区弦巻の区道の歩道部分です。世田谷区によりますと、今月３日、区民から「放射線量が高い場所がある」という情報が寄せられたため、区が測定したところ、１時間当たり最大でおよそ２．８マイクロシーベルトと周辺に比べて高い放射線が検出されたということです。このため高圧の洗浄器を使って歩道部分の洗浄を行いましたが、放射線量はあまり下がらず、１時間当たり最大で２．７０７マイクロシーベルトが検出されたということです。原因について世田谷区が専門家に聞いたところ、問題の場所は雨水が集まって放射線量が高くなったことが考えられるということです。この区道は小学校の通学路にもなっていることから、区は、１２日朝からこの場所をコーンで囲って立ち入らないよう呼びかけるとともに今後の除染を検討しています。世田谷区は、ことし７月から８月にかけて区内の小中学校や保育園、それに幼稚園で放射線量を測定しており、その際、高い放射線量は検出されていませんでした。世田谷区は、子どもへの影響を重視し、今月下旬から来月下旬にかけて区内の砂場がある２５８か所の公園について調査することにしています。&lt;br/&gt;&lt;br/&gt;東京・世田谷区で検出された１時間当たり２．７マイクロシーベルトという放射線量は、文部科学省が積算の放射線量を計算する際に用いている、１日のうち、屋外で８時間、屋内で１６時間過ごすという条件で計算すると、１日の被ばく量が３８．８８マイクロシーベルト、１年間にすると１４．２ミリシーベルトになります。これは国が避難の目安としている年間の放射線量の２０ミリシーベルトを下回っています。計画的避難区域に指定されている福島県の飯舘村役場では、１２日、移動式のモニタリングポストを使って計測された放射線量が１時間当たり２．１マイクロシーベルトで、世田谷区の値はこれよりもやや高くなっています。首都圏では、比較的高い茨城県の北茨城市で、１２日、０．１４マイクロシーベルトが計測されています。放射線影響研究所の長瀧重信元理事長は「文部科学省などによる上空からの測定では、世田谷区では放射線量の高い場所は確認されなかったので、このような値が出たことに驚いている。ただ、地形や天候の関係で局地的に高い線量になることはあり得ると思う。周辺の土壌や草木などから放射性物質の種類を調べたり、どこから放射線が出ているのか調べて原因を突きとめるとともに、ほかにもこうした場所がないか調査する必要がある」と話しています。&lt;br/&gt;&lt;br/&gt;世田谷区環境総合対策室の斉藤洋子室長は「現場は小学校の通学路で、近くには幼稚園や保育園もある。心配する保護者の方がいると思うので、専門家とも相談してできるだけ速やかに除染などの対応をとりたい」と話していました。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;上記の文章から、国が避難の目安としている年間20ミリシーベルトなる基準が、いまや当たり前のこととして公然とまかり通っていることがわかる。&lt;br/&gt;2011/03/11 以前の日本は、1ミリシーベルトが基準で、地震以降は20ミリシーベルト。&lt;br/&gt;&lt;br/&gt;&lt;a href='http://hiroakikoide.wordpress.com/2011/10/06/tanemaki-oct6/'&gt;10月5日 被曝限度「1〜20mSv」へ変更提言を批判。20mSv被曝で子供の癌死80倍320人 小出裕章（MBS） « 小出裕章 (京大助教) 非公式まとめ&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;いまとなっては、&lt;br/&gt;住所にたとえるなら「番地」ごとに測定される必要があり、その番地に居住する居住者に測定結果の値を告知する義務を、行政は（法律的に）遂行する必要があると思う。栃木、茨城、群馬、神奈川県、千葉県、埼玉県、東京で、番地ごとの行政による測定が必要なのではないのでしょうか。住民保護の観点から。&lt;br/&gt;&lt;br/&gt;国、及び地方自治体は高い放射線量値が検出された時、&lt;br/&gt;居住する居住者全員に対し、&lt;br/&gt;すみやかに避難勧告を告知し、&lt;br/&gt;幼児、児童、妊婦、病人、障害者、20歳未満の子供 など&lt;br/&gt;基礎体力の低い者や放射性物質が及ぼす影響に対し「感受性の高い者」を優先的に被曝から保護しなければならない はず。&lt;br/&gt;法律に則って考えれば...&lt;br/&gt;# 自分がどれほどむなしい事を書いているかは自覚している。&lt;br/&gt;&lt;br/&gt;現在、強制避難が実施されているのは、福島県の原発から近い地域だけだが、実際にはあちこちにホットスポットが存在している。にもかかわらず、被曝被害から避難するかしないかは、住民自身の「自己判断」と「自己資産」に委ねられている。&lt;br/&gt;&lt;br/&gt;台風の場合、避難勧告が発令され、地域住民は銀行から自己資産を引き出す必要なく、家族会議で熟考する必要もなく、躊躇なく危険から避難できる。&lt;br/&gt;一方、放射性物質拡散による被曝避難勧告などは発令されず、情報告知すらない。放射線測定機器購入費も避難に伴う費用も自らが自己資産をはたくしかない。お金を用意できないならば、逃げたくても避難できない。避難者受け入れ支援をする団体も、福島県民だけを対象にした団体が圧倒的に多い。&lt;br/&gt;こうして関東地方において被曝者となった人々が実際何人にのぼるのか、国は把握していない。正確に言うなら把握することを政府自ら自主的に拒否しているに等しい。旧ソビエトと同じく。&lt;br/&gt;&lt;br/&gt;これが2011年の日本。&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;&lt;br/&gt;平成23年9月30日 文部科学省による、プルトニウム、ストロンチウムの核種分析の結果について&lt;br/&gt;http://radioactivity.mext.go.jp/ja/distribution_map_around_FukushimaNPP/0002/5600_0930.pdf&lt;br/&gt;&lt;br/&gt;東京などの放射線量を公表　NHKニュース&lt;br/&gt;http://www3.nhk.or.jp/news/html/20111007/k10013095081000.html&lt;br/&gt;&lt;br/&gt;市民団体&lt;br/&gt;http://www.radiationdefense.jp/&lt;br/&gt;&lt;a href='http://doc.radiationdefense.jp/dojyou1.pdf'&gt;PDF: 首都圏土壌調査結果リスト&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://kipuka.blog70.fc2.com/blog-entry-418.html'&gt;早川由紀夫の火山ブログ 放射能汚染地図（四訂版）&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;10/13 東京新聞:世田谷区、さらに高い放射線量　地上１ｍ、原因は不明:社会(TOKYO Web)&lt;br/&gt;http://www.tokyo-np.co.jp/s/article/2011101301000297.html&lt;br/&gt;&lt;br/&gt;10/13 東京新聞:世田谷で最高２．７マイクロシーベルト　弦巻　小学校の通学路:社会(TOKYO Web)&lt;br/&gt;http://www.tokyo-np.co.jp/s/article/2011101390072238.html&lt;br/&gt;&lt;br/&gt;10/12 東京新聞:ストロンチウム検出　市が採取物検査開始:神奈川(TOKYO Web)&lt;br/&gt;http://www.tokyo-np.co.jp/article/kanagawa/20111012/CK2011101202000047.html&lt;br/&gt;&lt;br/&gt;10/12 放射性物質：横浜でストロンチウム検出　８０キロ圏外初 - 毎日ｊｐ(毎日新聞)&lt;br/&gt;http://mainichi.jp/select/jiken/news/20111012k0000e040037000c.html&lt;br/&gt;&lt;br/&gt;10/07 放射性物質：小中学校５校で線量基準値超え　東京・大田区 - 毎日ｊｐ(毎日新聞)&lt;br/&gt;http://mainichi.jp/select/weathernews/20110311/radioactive/news/20111008k0000m040132000c.html&lt;br/&gt;&lt;br/&gt;10/02 福島原発から45キロの地点でプルトニウム検出 - WSJ日本版 - jp.WSJ.com&lt;br/&gt;http://jp.wsj.com/Japan/node_317561&lt;br/&gt;&lt;br/&gt;09/29 放射性物質除染：１～５ミリシーベルトでも国負担 - 毎日ｊｐ(毎日新聞)&lt;br/&gt;http://mainichi.jp/select/jiken/news/20110930k0000m010116000c.html&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;&lt;br/&gt;&lt;a href='http://savechild.net/'&gt;【SAVE CHILD】放射能汚染から子供を守ろう&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://savechild.net/archives/9878.html'&gt;【汚染マップ】東京都の放射線量と土壌汚染地図（文部科学省10/6発表） | SAVE CHILD&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;飯舘村など プルトニウム検出　NHKニュース&lt;br/&gt;http://www3.nhk.or.jp/news/html/20110930/t10015963921000.html&lt;br/&gt;# 東京大学大学院は、長崎教授の発言(飛ぶとは思わなかった) をどうとらえているのだろうか?。&lt;br/&gt;&lt;br/&gt;&lt;a href='http://darknessofasia.blogspot.com/2011/10/blog-post_02.html'&gt;プルトニウムは重いので飛ばないと言ったのは誰だったのか&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://kaleido11.blog111.fc2.com/blog-entry-845.html'&gt;隠されてきたプルトニウムの大量放出！ | カレイドスコープ&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://hakatte.jp/'&gt;測ってガイガー！&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-7950994505156135376?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/7950994505156135376/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=7950994505156135376' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7950994505156135376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7950994505156135376'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/10/pu.html' title='Pu'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2983148528949938378</id><published>2011-10-08T09:42:00.001+09:00</published><updated>2011-10-11T11:21:58.676+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Ruby 1.8.7</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://www.ruby-lang.org/ja/news/2011/10/07/plans-for-1-8-7/'&gt;1.8.7の今後につきまして&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;(&amp;lt;URL:http://www.ruby-lang.org/en/news/2011/10/06/plans-for-1-8-7/&amp;gt; の翻訳です)&lt;br/&gt;...&lt;br/&gt;&lt;br/&gt;今後の予定&lt;br/&gt;&lt;br/&gt;2012年6月まで、通常のメンテナンスが続きます。&lt;br/&gt;それ以降、バグフィックスリリースは終了いたします。2013年6月まではセキュリティフィックスは続けますので、それまでは1.8.7をお使いいただけます。&lt;br/&gt;2013年6月より先は、1.8.7はあらゆるサポート対象外になります。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;Mac OS X Lion の&lt;br/&gt;/usr/bin/ruby は&lt;br/&gt;ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]&lt;br/&gt;&lt;br/&gt;なので、すぐにでも 1.9 にアップデートして欲しいです。&lt;br/&gt;1日でも早く Lion 標準で 1.9 を使えるようにしてほしいです。&lt;br/&gt;ソフトウェアアップデート経由で 1.9 を提供していただきたい。心から切望。&lt;br/&gt;&lt;br/&gt;OS X Lion で似?1.9 をお試ししたい場合&lt;/p&gt;&lt;pre&gt;&lt;code&gt;alias 'macruby'=/System/Library/PrivateFrameworks/MacRuby.framework/Versions/A/usr/bin/macruby
alias 'macirb'=/System/Library/PrivateFrameworks/MacRuby.framework/Versions/A/usr/bin/macirb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を ~/.bashrc などなどに追記して&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% source ~/.bashrc
% macirb
irb(main):001:0&amp;gt; RUBY_VERSION
=&amp;gt; "1.9.2"
irb(main):002:0&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2983148528949938378?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2983148528949938378/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2983148528949938378' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2983148528949938378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2983148528949938378'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/10/ruby-187.html' title='Ruby 1.8.7'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5554281963940635736</id><published>2011-10-07T19:39:00.001+09:00</published><updated>2011-10-08T07:23:36.977+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AppleScript'/><title type='text'>楽しいAppleScript</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;# このタイトルはトーゼン「楽しいRuby」にかぶせています。&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.makiaea.org/post/5993587804'&gt;makiaea.org | wifi power toggle using applescript in mac os x 10.7 lion&lt;/a&gt;&lt;br/&gt;を目にして衝動的に久方ぶりに AppleScript Editor.app を起動してしまいました。&lt;br/&gt;すっかり記憶喪失になっていたので&lt;br/&gt;以前作った github.com/midore/readbook-scpt を開いて書き方を思い出しました。&lt;br/&gt;&lt;br/&gt;実は普段は&lt;br/&gt;~/.bashrc に&lt;/p&gt;&lt;pre&gt;&lt;code&gt;alias 'wifi'='/usr/sbin/networksetup -setairportpower en0'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を追加していて&lt;br/&gt;$ wifi on&lt;br/&gt;などして使っているんですが...それはそれとして&lt;br/&gt;この主題は面白いです。&lt;br/&gt;&lt;br/&gt;その昔、梅棹忠夫氏は&lt;br/&gt;将来は誰でもが気軽にプログラミングする時代がくるんじゃないか、と言ったとか言わなかったとか。&lt;br/&gt;# 原典が何だったか思い出せない。*1&lt;br/&gt;そんなことを心の片隅におきつつ...&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# wi-fi.scpt
script wifi

  on my_dialog(title, str, b_str, b_no)
    tell application "Finder"
      activate
      display dialog str buttons b_str default button b_no with title title
      set res to button returned of result
      return res
    end tell
  end my_dialog

  on setpower(onoff)
    return do shell script "networksetup -setairportpower en0" &amp;amp; space &amp;amp; onoff
  end setpower

  on getpower()
    return do shell script "networksetup -getairportpower en0"
  end getpower

  on getinfo(opt)
    return do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport" &amp;amp; space &amp;amp; opt
  end getinfo

  on endinfo()
    return my_dialog("Wi-Fi Info", getinfo("-I"), {"Done"}, 1)
  end endinfo

end script

on run
  tell wifi
    set v to do shell script "networksetup -version"
    # networksetup, Version 1.8
    # Copyright 2002-2010 Apple Inc. All rights reserved.
    set str to word 5 of getpower()
    if str is "On" then
      set msg to {"Off", "GetInfo", "Cancel"}
    else
      set msg to {"On", "Cancel"}
    end if
    try
      set res to my_dialog("Wi-Fi", v &amp;amp; return &amp;amp; return &amp;amp; "Wi-Fi Power (en0): " &amp;amp; str, msg, 1)
      if res is "GetInfo" then
        return endinfo()
      end if
      setpower(res)
      my_dialog("Wi-Fi", getpower(), {"OK"}, 1)
    on error number -128
      return
    end try
  end tell

end run
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;きりがないのでここらあたりで完成。&lt;br/&gt;&lt;br/&gt;*1&lt;br/&gt;あったあった。&lt;br/&gt;出典『知的生産の技術』岩波新書&lt;br/&gt;P.15&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;ややさきばしったいいかたになるかもしれないが、わたしは、たとえばコンピューターのプログラムのかきかたなどが、個人としてのもっとも基礎的な技能となる日が、意外にはやくくるのではないかとかんがえている。すでにアメリカでは、初等教育においてコンピューターの言語FORTRANをおしえることがはじまったようだ。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;この本の初版は1969年7月21日。&lt;br/&gt;梅棹氏は、プログラミングが「個人としてのもっとも基礎的な技能」になると書かれていますので、私が記憶していたこととは微妙に異なりますな。&lt;br/&gt;&lt;br/&gt;それにしても「個人としてのもっとも基礎的な技能」としてのプログラミングとは?&lt;br/&gt;&lt;br/&gt;特に言語指定はしないが日本語の読み書き&amp;amp;会話ができることと等しくプログラミングソースを読み書き&amp;amp;実行できる技能、&lt;br/&gt;...と解釈したとして...&lt;br/&gt;では、いま、この日本で、梅棹氏の予想は現実のものとなっているか? というと...幸か不幸か? No かもしれません。&lt;br/&gt;けれどこれまた幸か不幸か?&lt;br/&gt;こんな私でも「易しい」ものを読んだり書いたりできているのだからある意味 Yes なのかもしれません。&lt;br/&gt;&lt;br/&gt;これからもっとプログラミングが普及して、梅棹氏の言ったような基礎的な技能となる日はくるんだろうか。もしそんな日がくるならば AppleScript も楽しい言語の１つとして普及してほしいなーと思います。&lt;br/&gt;&lt;br/&gt;Steve Jobs 氏を悼み「ヒッピーに捧ぐ」を聞こう。&lt;br/&gt;&lt;br/&gt;-- screen shot&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-L8Ncu2PCbz4/To7aNgWkRLI/AAAAAAAAAEw/KL-bvC_JwA4/s1600/001.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://3.bp.blogspot.com/-L8Ncu2PCbz4/To7aNgWkRLI/AAAAAAAAAEw/KL-bvC_JwA4/s320/001.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-aioSmHkUL4U/To7aX6S8eUI/AAAAAAAAAE4/AT9Gq0HxSYM/s1600/002.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://4.bp.blogspot.com/-aioSmHkUL4U/To7aX6S8eUI/AAAAAAAAAE4/AT9Gq0HxSYM/s320/002.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-QlPtpnvbrko/To7a4uiM8mI/AAAAAAAAAFI/4dU0PQ8wZU0/s1600/003.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; ma
rgin-right: 1em;"&gt;&lt;img border="0" height="154" src="http://3.bp.blogspot.com/-QlPtpnvbrko/To7a4uiM8mI/AAAAAAAAAFI/4dU0PQ8wZU0/s320/003.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;/div&gt;


&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5554281963940635736?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5554281963940635736/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5554281963940635736' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5554281963940635736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5554281963940635736'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/10/applescript.html' title='楽しいAppleScript'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-L8Ncu2PCbz4/To7aNgWkRLI/AAAAAAAAAEw/KL-bvC_JwA4/s72-c/001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6796687041619542200</id><published>2011-10-06T23:26:00.001+09:00</published><updated>2011-10-12T00:12:09.910+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>dream</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;本日(日本時間 2011.10.06) Steve Jobs 氏の訃報。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Steve Jobs 氏 と Apple Inc. 社は大人たちを子供にさせました。&lt;br/&gt;誰しもが子供みたいに、内心のワクワクを隠せませんでした。&lt;br/&gt;この感覚は、世界中の User が共有していたようでした。&lt;br/&gt;改めて、おもうに、考えれば考えるほど、とても不思議なことです。&lt;br/&gt;長い夢から無理矢理目覚めさせられたような気もします。&lt;br/&gt;&lt;br/&gt;Steve Jobs 氏が生きた時代を共に生きる事ができたラッキーな世代だからこそ&lt;br/&gt;極めて歴史的に特異な現象として受け止め損ねちゃったかもしれません。&lt;br/&gt;恐ろしいことです。&lt;br/&gt;&lt;br/&gt;ただ、私にとって確かなことがあります。&lt;br/&gt;地震が起きて真っ暗な気持ちになっている時だって、&lt;br/&gt;ほら Macintosh を触ってみれば心地よい気分がかえってきました。&lt;br/&gt;おそらく私だけじゃない世界中の人々がこの computer から何かを感じ取り、&lt;br/&gt;それで子供のように晴れ晴れとした気持ちやワクワクする気持ちを持つことができたのではないでしょうか。&lt;br/&gt;&lt;br/&gt;これから computer はもっと大きな変化を遂げるでしょうが、&lt;br/&gt;私たちの世代は科学者でもない一般人が、&lt;br/&gt;コンピュータ&amp;amp;インターネットと共に生活を始めた最初の世代です。&lt;br/&gt;私は10年以上にわたって Steve Jobs 氏のアイディアの具現を Apple から受け取り、&lt;br/&gt;コンピュータの楽しさを存分に教えてもらいました。&lt;br/&gt;この贈り物は素晴しい Energy です。&lt;br/&gt;&lt;br/&gt;Steve Wozniak 氏と Steve Jobs 氏 が Apple を創設し&lt;br/&gt;一般人の為にパーソナルコンピュータを作った事で今日があることを改めて思い出したいと思います。&lt;br/&gt;Steve Jobs 氏 の夢に感謝し謹んでご冥福をお祈り申し上げます。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;# もちろん、ゲイツの Windows が長年市場制覇している訳ですが、&lt;br/&gt;# あらゆる意味で Microsoft は Apple の後を追ってきました。&lt;br/&gt;# いまだにこの事実を知らない方も多いようですが、何年かすれば時間が解決することでしょう。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6796687041619542200?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6796687041619542200/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6796687041619542200' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6796687041619542200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6796687041619542200'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/10/dream.html' title='dream'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-8730294051892209523</id><published>2011-10-04T18:56:00.000+09:00</published><updated>2011-10-04T21:07:48.551+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>OS X 10.7.1: XProtect</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Get Safe Downloads List last update time and current version - Mac OS X Hints&lt;br/&gt;http://hints.macworld.com/article.php?story=20110602091032338&lt;br/&gt;&lt;br/&gt;を読んで...&lt;br/&gt;&lt;br/&gt;現在の様子 Memo&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% defaults read /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta LastModification
Fri, 23 Sep 2011 18:08:25 GMT
% defaults read /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta Version
1003
% cat /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;強制的にアップデートしたい時。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ sudo /usr/libexec/XProtectUpdater
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# XProtect.plist&lt;br/&gt;# XProtect.meta.plist&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-8730294051892209523?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/8730294051892209523/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=8730294051892209523' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8730294051892209523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8730294051892209523'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/10/os-x-1071-xprotect.html' title='OS X 10.7.1: XProtect'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4233813049055663645</id><published>2011-09-23T21:02:00.001+09:00</published><updated>2011-10-11T11:24:59.365+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>OS X 10.7.1: mtmfs</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;マックがうなり熱くなるので、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ top
$ sudo lsof -i
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;知らないものが Listen していた。気持ち悪い。調べてみると&lt;br/&gt;&lt;br/&gt;Lion Running Hot: Apple Support Communities&lt;br/&gt;https://discussions.apple.com/message/15700251#15700251&lt;br/&gt;&lt;br/&gt;これかも。&lt;br/&gt;/System/Library/CoreServices/backupd.bundle/Contents/Resources/mtmfs&lt;br/&gt;&lt;br/&gt;% man mtmfs&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;...There are no configurations to mtmfs, and users should not run mtmfs manually.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;% man mtmd&lt;br/&gt;&lt;br/&gt;ふーん。設定ファイルはないよ。ユーザはいじるな、と。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ cd /System/Library/LaunchDaemons/
$ grep -R mtmfs .
./com.apple.mtmfs.plist:	&amp;lt;string&amp;gt;com.apple.mtmfs&amp;lt;/string&amp;gt;
./com.apple.mtmfs.plist:		&amp;lt;key&amp;gt;com.apple.mtmfs&amp;lt;/key&amp;gt;
./com.apple.mtmfs.plist:		&amp;lt;string&amp;gt;/System/Library/CoreServices/backupd.bundle/Contents/Resources/mtmfs&amp;lt;/string&amp;gt;

$ sudo launchctl list | grep mtmfs
64	-	com.apple.mtmfs

$ more /System/Library/LaunchDaemons/com.apple.mtmfs.plist 
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mtmfs.plist 
$ sudo lsof -i
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;消えたわ。&lt;br/&gt;あ、sudo launchctl unload　やってからシステム環境のタイムマシン「切」にした。順序間違えたかも。&lt;br/&gt;というか「切」にしておけばマックが熱くなることもなかったのかな...。わからない。&lt;br/&gt;ちなみに、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% mdutil -s /Users/midore/
/Users/midore:
  No index.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;[余談]&lt;br/&gt;いい↓事知りました。&lt;br/&gt;&lt;br/&gt;Lion Running Hot: Apple Support Communities&lt;br/&gt;https://discussions.apple.com/message/15791385#15791385&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;% ps -arcwwwxo "command %cpu %mem" | grep -v grep | head -13&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;[2011.09.25]&lt;br/&gt;mtmd&lt;br/&gt;&lt;br/&gt;【コラム】新・OS X ハッキング! (15) Lion備忘録(8) ～タイムマシンにおねがい～ | パソコン | マイコミジャーナル [SP]&lt;br/&gt;http://journal.mycom.co.jp/column/osxhack/015/index.html&lt;br/&gt;&lt;br/&gt;(Mac OS X Tips::Lion)mtmd(Mobile Time Machine Daemon)のCPU使用率が異常に高い時の対応 - jitsu102の日記 [SP]&lt;br/&gt;http://d.hatena.ne.jp/jitsu102/20110912/1315834305&lt;br/&gt;&lt;br/&gt;[2011.10.02]&lt;br/&gt;tmutil&lt;br/&gt;&lt;br/&gt;Disable Time Machine Local Backups in Mac OS X Lion&lt;br/&gt;http://osxdaily.com/2011/09/28/disable-time-machine-local-backups-in-mac-os-x-lion/&lt;br/&gt;&lt;br/&gt;Time Machineのローカルスナップショット機能を無効にする方法&lt;br/&gt;http://veadardiary.blog29.fc2.com/blog-entry-3493.html&lt;br/&gt;&lt;br/&gt;[2011.10.11]&lt;br/&gt;記事タイトル変更&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4233813049055663645?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4233813049055663645/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4233813049055663645' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4233813049055663645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4233813049055663645'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/09/mac-os-x-1071-mtmfs.html' title='OS X 10.7.1: mtmfs'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6594263826470223423</id><published>2011-09-22T21:12:00.001+09:00</published><updated>2011-09-22T22:10:09.748+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>OS X 10.7.1: Keychains</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Mac OS X 10.4 の重要なファイルをバックアップおよびリストアする方法&lt;br/&gt;http://support.apple.com/kb/HT2980?viewlocale=ja_JP&amp;amp;locale=ja_JP#key&lt;br/&gt;&lt;br/&gt;下記は超我流です。&lt;br/&gt;&lt;br/&gt;----------------------------------------&lt;br/&gt;ハードディスクを初期化する前に&lt;br/&gt;~/Library/Keychains をバックアップする。&lt;br/&gt;----------------------------------------&lt;br/&gt;# キーチェーン.app が起動していない事を確認。&lt;br/&gt;# デスクトップに /Volume/backupHDD/ がマウントできているとしたら。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ cp -a ~/Library/keychains  ~/Volume/backupHDD/your-name-backup-keys
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;[重要]&lt;br/&gt;キーチェーン"ログイン"パスワードにユーザログインパスワード「以外」のパスワードを設定している場合、バックアップから戻す際にはそのパスワードが必要になる事を心にとめておく。&lt;br/&gt;&lt;br/&gt;----------------------------------------&lt;br/&gt;バックアップした Keychains を戻す。&lt;br/&gt;----------------------------------------&lt;br/&gt;[重要]&lt;br/&gt;これから行う作業において事故があった場合に備え予め現在の ~/Library/Keychains をバックアップしておく。この時キーチェーン.app は起動していてはいけない。メニューバーにカギアイコンがあればカギをかけておく。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# 現在のキーチェーンカギ束をバックアップする。
$ cp -a ~/Library/Keychains/  ~/now-backup-keys
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;外付けディスクなどにバックアップしておいた ~/Volume/backupHDD/your-name-backup-keys フォルダを Home 配下 にコピーする。
マウントしている外付けディスクに存在するバックアップしたカギ束を、直接触ることは厳禁。必ずバックアップの「コピー」を操作対象にする。
&amp;lt;pr&amp;gt;
# バックアップの「コピー」を ~/ 以下におく。
$ cp -a ~/Volume/backupHDD/your-name-backup-keys  ~/backup-keys
$ cd ~/backup-keys

# login.keychain があるはず。ファイル名 login を任意の名前(ここでは my)に変更。
$ mv login.keychain my.keychain
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;/Applications/Utilities/Keychain Access.app を起動する。&lt;br/&gt;キーチェーンアクセス.app のメニューから「キーチェーンを追加」をクリック。&lt;br/&gt;保存しておいたカギ束のコピー ~/backup-keys/my.keychain を選ぶ。&lt;br/&gt;バックアップした時に使用していたパスワードを尋ねられる。&lt;br/&gt;正しいパスワードを入力するとキーチェーンリストに「ログイン」「システム」と共に「my」 が追加されるはず。&lt;br/&gt;&lt;br/&gt;キーチェーンリストに追加された"my"キーチェーンは ~/backup-keys　内に存在するカギを参照している。&lt;br/&gt;よって、もし仮に ~/backup-keys　を削除してしまうと実体を失ってしまう。&lt;br/&gt;&lt;br/&gt;このような状態を解消するには、&lt;br/&gt;# キーチェーンリスト"ログイン"の鍵がロックされていたらはずす。&lt;br/&gt;"my"に追加された鍵、全てを"ログイン"キーチェーン内にドラッグ&amp;amp;ドロップする。もしくは「新規キーチェーン」を追加しておいてその中にドロップする。&lt;br/&gt;キーチェーン"ログイン"に使用しているパスワードを尋ねられる。&lt;br/&gt;"my"キーチェーン内の鍵を全てドラッグ&amp;amp;ドロップで移動したらメニューファイルーから「キーチェーン”my”を削除」をクリックする。&lt;br/&gt;「参照のみ」「実体と参照」の選択肢から「実体と参照」をクリック。&lt;br/&gt;~/backup-keys フォルダの中身は空になっているはず。&lt;br/&gt;&lt;br/&gt;全て終了したらカギをかけキーチェーンアクセス.app を終了しライブラリ内を確認する。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ ls -la ~/Library/Keychains/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;アップルメニューから&lt;del&gt;ログイン&lt;/del&gt;ログアウトし再度ログインしてからキーチェーンアクセス.app を起動し正常にカギが存在していることを確認する。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# キーチェーンを使用している Application を使用してみるなどして、
# 問題ない事を確認し終えたら不要なバックアップを削除する。
$ srm -rf  ~/now-backup-keys/ ~/backup-keys/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6594263826470223423?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6594263826470223423/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6594263826470223423' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6594263826470223423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6594263826470223423'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/09/os-x-1071-keychains.html' title='OS X 10.7.1: Keychains'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6359341673170273809</id><published>2011-09-22T20:05:00.001+09:00</published><updated>2011-09-22T21:09:38.836+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>OS X 10.7.1: dscl</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;最近...&lt;br/&gt;&lt;br/&gt;yebo blog: Mac OS X Lionはパスワードクラックが簡単&lt;br/&gt;http://yebo-blog.blogspot.com/2011/09/mac-os-x-lion.html&lt;br/&gt;&lt;br/&gt;Change the Password in Mac OS X 10.7 Lion Without Knowing the Current Password&lt;br/&gt;http://osxdaily.com/2011/09/19/change-password-mac-os-x-10-7-lion-without-knowing-current-password/&lt;br/&gt;&lt;br/&gt;このような話題を目にしてげげと思っていたところ、&lt;br/&gt;&lt;br/&gt;Quick Fix to Prevent dscl Unauthorized Password Changes in OS X Lion&lt;br/&gt;http://osxdaily.com/2011/09/21/quick-fix-to-prevent-dscl-unauthorized-password-changes-in-os-x-lion/&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;His reasoning is that chmod 100 is too restrictive in that it changes the command to execute only, where as before the root user could read, write, and execute.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# ものすごい意訳。&lt;br/&gt;# 彼の方法(chmod 100)ではとても制限があるので...。root user が&lt;del&gt;読み書き&lt;/del&gt;読み書き実行できるよう。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6359341673170273809?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6359341673170273809/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6359341673170273809' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6359341673170273809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6359341673170273809'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/09/os-x-1071-dscl.html' title='OS X 10.7.1: dscl'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6834964919904548058</id><published>2011-09-02T19:51:00.001+09:00</published><updated>2011-09-03T00:21:49.671+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nuclear'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>George Orwell</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;『新装版 オーウェル評論集2 水晶の精神』| ジョージ•オーウェル | 平凡社ライブラー | 978-4-582-76688-2&lt;br/&gt;# 2009.11.10 初版第一版&lt;br/&gt;# 新装版は全部で4冊の文庫。&lt;br/&gt;本の扉にはこう記されている。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;本書は、『水晶の精神ーオーウェル評論集2』（平凡社ライブラリー、1995年）を改題した新装版です。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;この夏、福島原発事故を契機に益々顕著になった情報欠如について、これは一体どのような事なのかを探るべく、また、自身のある種の混乱を整頓する必要にもかられ、これら４冊に収められた評論をランダムに読み直してみた。一流のシェフの味、そんな本だった。&lt;br/&gt;&lt;br/&gt;信じたくないくらい衝撃的なことは、下記の文章は1945 年に書かれたものなのに、なぜ今の日本について語っているのだろう？ってことだ。要は世界は60年以上前と変わっていないし歴史は繰り返されているし、悪い意味でのナショナリズムは生き続けているばかりか増殖している証拠なのだろうかね。&lt;br/&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;P.52 - P.53&lt;br/&gt;客観的真実の無視は、世界の一部から遮断することによっていっそう助長される。そのために、現実に何が起こっているかを知ることがいよいよ困難になるからである。非常な重大事についてさえ疑いが持たれる場合がしばしば生じる。たとえば、この戦争から生じた死者の数にしても、百万単位、千万単位でもはっきりつかむことができない。いろんな惨事ー...を聞かされているうちに、一般の人にはその現実感が薄れてしまうのである。事実を確認する方法を持たず、それが実際起こったことかどうかも十分確信が持てず、それぞれの方面からそれぞれまったく違った解釈をいつも与えられる。...(略)ドイツがポーランドに作ったといわれるガス室というのは本当だったのだろうか？&lt;br/&gt;&lt;br/&gt;...(略)おそらく真相は発見できるのだろうが、ほとんどの新聞でも事実が非常にゆがめられて報ぜられるのだから、一般読者が嘘を丸呑みにしたり、判断を下しえなかったとしても、しかたがない。実際はどうなのかだれも確信がもてないとなると、いよいよ気違いじみた信念にすがってゆくことになる。なに一つはっきり立証もされなければ否認もされないとなると、明々白々たる事実までがずうずうしく否定される。のみならず、ナショナリストはたえず権力や勝利や敗北や復讐を考えているくせに、しばしば、現実の世界で起こっていることにある程度無関心になる。&lt;br/&gt;&lt;br/&gt;〜ナショナリズム覚え書き(1945年)〜より&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;新聞報道のありさまを嘆きつつ、一般読者が判断を下し得なかったとしてもいた仕方ない、と述べられた上で事実までが否定されている、とある。これでは、まるで今の日本そのものではないか...。&lt;br/&gt;&lt;br/&gt;ところでオーウェルが「ナショナリズム」をどう捉えていたのか？について、&lt;br/&gt;この記事を目にしてしまった方に誤解を与えないよう留意することは、引用させてもらった者の最低限の礼儀だと思うので、下記の引用も添える。&lt;br/&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;P.35-P.36&lt;br/&gt;...現在ではほとんどあらゆる問題についての私たちの考えを左右するほど広まっていながら、まだ名前のついていないひとつの精神的習慣がある。それにもっとも近いものとして私は「ナショナリズム」という言葉を選んでみたが、しかしすぐおわかりになるように、私は必ずしも普通に使われている通りの意味でそれを使っているのではない。...&lt;br/&gt;私が「ナショナリズム」と言う場合に真っ先に考えるものは、人間が昆虫と同じように分類できるものであり、何百万、何千万という人間の集団全体に自信をもって「善」とか「悪」とかのレッテルが貼れるものと思い込んでいる精神習慣である。*1&lt;br/&gt;しかし第二にはーそしてこの方がずっと重要なのだがー自己をひとつの国家その他の単位と一体化して、それを善悪を超越したものと考え、その利益を推進すること以外の義務はいっさい認めないような習慣をさす。&lt;br/&gt;ナショナリズムと愛国心とを混同してはならない。通常どちらも非常に漠然とした意味で使われているので、どんな定義を下しても必ずどこかから文句が出そうだが、しかし両者ははっきり区別しなければならない。というのは、そこには二つの異なった、むしろ正反対の概念が含まれているからである。私が「愛国心」と言う場合、自分では世界中でいちばんよいものだとは信じるが他人にまで押しつけようとは思わない。特定の地域と特定の生活様式に対する献身を意味する。愛国心は軍事的な意味でも文化的な意味でも本来防御的なものである。それに反して、ナショナリズムは権力欲と切り離すことができない。すべてのナショナリストの不断の目標は、より大きな勢力、より大きな威信を獲得すること、といってもそれは自己のためではなく、彼がそこに自己の存在を没入させることを誓った国なり何なりの単位のために獲得することである。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;一応、引用しておいたが、今の私にとってオーウェルがナショナリズムをどう捉えていたかは、おおきな問題じゃない。(1年前だったらそうじゃなかったかもしれないが...) 第二次世界大戦終戦時イギリスに住んでいた作家が、新聞や映画を通して肌で感じたこと、その感触が、今の日本の新聞やテレビから受ける印象とまるっきり同じである、ってこと。この事実の方がずっとずっと重い。歴史は繰り返されている。&lt;br/&gt;&lt;br/&gt;1945年、生活に追われこの戦争はなんなのかを知らされないまま、帰らない人を待ち続けていた人々と同じように、今、日本でも生活に追われてあの福島の事故で何がどうなったのか？今どうなっているのか？を知らされないまま、テレビや新聞を疑う事もしないで、インターネットで情報を得ようとしない（できない）人たちがいる。&lt;br/&gt;彼らにとっての当たり前は、節電する事であり、物理学的には確かで当たり前だったはずの事が、不確かで曖昧で人によって見解が異なるので誰にもわかんない仕方のない事に成り下がることだ。&lt;br/&gt;今も大気中への放射性物質の拡散は止まっていないし海へも大量に流れており、このような海洋への流出は人類初だというのに。&lt;br/&gt;&lt;br/&gt;『この国の「問題点」』| 上杉 隆 | 大和書房 | 978-4-479-39211-8&lt;br/&gt;の中で上杉氏は&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;P.24&lt;br/&gt;ちなみに、東電主催によるマスコミ接待中国ツアーは氷山の一角に過ぎません。東電は毎週のように、記者クラブ幹部を飲食やゴルフでもてなしていたわけです。「原発は安全である」ということをテレビや新聞を使って国民にアピールするためです。また東電が加入している電気事業連合会は、記者クラブメディアの大型スポンサーになっています。その広告費の総額は毎年８００億円以上を計上しています。しかも接待費はこれとは別です。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;マスコミの人々が「なぜ？」をなぜ自主的に追求できない単純ルーチンに陥ったままなのか、そのからくりを指摘してくれている。&lt;br/&gt;上杉氏のような人々がインターネットには大勢いることによって、かろうじて1945年のオーウェルの時代よりはましな環境にある、とはいえ、それでも、いざインターネットのない状態におかれたら、一瞬にして情報から遠ざかりまるで原発事故など発生していなかったかのように、放射性物質など飛んでいないのだぞと、集団催眠にかけられたごとく危機感を麻痺させられ、テレビは放射線測定されたかどうかもわからないような福島の野菜をみんなで食べよう!と煽る。&lt;br/&gt;台風情報だけは鬼の首をとったごとく熱心なくせに、放射性物質拡散予想がリアルタイムで報じられたためしがない。&lt;br/&gt;&lt;br/&gt;これが先進国だ、情報立国だと声高らかに自称してきた日本のありさま。血税で作られたスーパーコンピューターはなんの役にもたたないほど、それほどお粗末なものだったのだろうか？一体なんの為の誰の為のコンピューターだったのか？。お金をかけて整備されていたはずのスピーディも「より大きな威信を獲得すること」だけが目的のサクラだったのか？。&lt;br/&gt;&lt;br/&gt;最後に強く印象に残った箇所も引用する。&lt;br/&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;P.84&lt;br/&gt;常識的な法則が日常生活や若干の精密科学の場においては、通用するけれども、政治家や歴史家や社会学者からはかまわず無視されるという、分裂症的な思想体系を組み立てるだろう。&lt;br/&gt;&lt;br/&gt;P.84&lt;br/&gt;問題についての展望を失わないようにこの評論の冒頭で述べたことをくり返しておこう。すなわち、イギリスにおいての真実の、したがってまた思想の自由の直接の敵は、新聞や映画を牛耳っている者たちと官僚である。&lt;br/&gt;しかし長い目でみれば、知識人たち自身の間における自由への希求の衰えがもっとも深刻な兆候である。&lt;br/&gt;&lt;br/&gt;P.93&lt;br/&gt;知的自由の破壊は、ジャーナリスト、社会問題評論家、歴史家、小説家、批評家、詩人から、この順序で活動力をそぐ。&lt;br/&gt;&lt;br/&gt;P.98&lt;br/&gt;いまのところ全体主義国家は、必要に迫られて科学者を寛大に扱っている。ナチス•ドイツにおいてさえ、ユダヤ人以外の科学者は比較的好遇(ママ)を受け、ドイツの科学界は全体としてヒトラーになんらの抵抗も示さなかったのである。&lt;br/&gt;...(略)&lt;br/&gt;金で買われた精神は毒された精神であるという事実を克服することはできない。&lt;br/&gt;...(略)&lt;br/&gt;いまのところわれわれにわかっているのは、想像力が、ある種の野生動物と同じように、捕われの状態では繁殖しないだろうということだけである。その事実を否定する作家やジャーナリストは...事実上自らの破滅を要求しているのである。&lt;br/&gt;&lt;br/&gt;〜文学の禁圧(1946年)〜より&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;いずれは、自らの破滅を要求している。オーウェルの鋭いこの指摘が、&lt;br/&gt;日本の新聞社(東京新聞などの心ある一部の報道人を除く)やテレビ局やあらゆる「マス」メディアに携わる人々、&lt;br/&gt;また、立派な肩書きをお持ちになり自分がひとたび何かを発信すればすぐにでも多くの人々に事実が伝わるであろうと自覚のある方々に、&lt;br/&gt;届くことを願う。&lt;br/&gt;...と書きながら矢野顕子さんがカバーした「右手」を思い出す。&lt;br/&gt;〜僕らの右手はどこまであげれば、誰かに届くかって〜&lt;br/&gt;なんとも言いようのない気持ちにもなる。&lt;br/&gt;&lt;br/&gt;# キーワード：&lt;br/&gt;# ドイツzdf frontal21 福島原発事故&lt;br/&gt;# などで Google 検索すると海外メディアが伝える福島原発事故に関する動画(日本語字幕付き)がヒットするはずです。&lt;br/&gt;&lt;br/&gt;「シュピーゲル」誌(2011年5月23日号) 「原子力国家」日本語訳 | ジャーナリスト上杉隆 -公式ウェブサイト- takashi uesugi - official web site&lt;br/&gt;http://uesugitakashi.com/?p=917&lt;br/&gt;&lt;br/&gt;原発Tweets #Genpatsu 紙&lt;br/&gt;http://paper.li/malilin/1302845303#!technology&lt;br/&gt;&lt;br/&gt;[2011-09-03] 加筆修正。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6834964919904548058?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6834964919904548058/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6834964919904548058' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6834964919904548058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6834964919904548058'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/09/george-orwell.html' title='George Orwell'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2951699892613447326</id><published>2011-08-29T12:10:00.000+09:00</published><updated>2011-08-29T12:10:00.725+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Write'/><title type='text'>抽象化</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;“所有”という時代遅れ&lt;br/&gt;http://d.hatena.ne.jp/Chikirin/20100622&lt;br/&gt;&lt;br/&gt;人がうすうす意識している「何か」が詳らかにされていて大変面白かった。&lt;br/&gt;漠然とした何かと何かを結びつけはっきりと言語化できる人や抽象化できる人をみると尊敬する。&lt;br/&gt;&lt;br/&gt;そこにある言葉に心をよせることができなかったとしてもそんなささいな事などもあまり気にならない。&lt;br/&gt;元来、混沌として漠然としたものが一定の視点から形づくられ名付けられ抽象化されて明快になるプロセスや結果は美しいものなのでしょう。&lt;br/&gt;&lt;br/&gt;... プログラミングにも抽象化という概念があってこれと向き合うということは、一体なにが self であるべきか？という問いを丹念に考えることのようでして、ましてや隠蔽というのはさらに高度な技のようで、なぜその必要性があるのかは書いた人にははっきりとしているんだろうけれどもそれを知らない者からするとわかりずらいところがあり、が、そこにこそ隠蔽の意味があったりするわけで ...。&lt;br/&gt;&lt;br/&gt;プログラミングの楽しさを味わうことは誰にでもわりとたやすいのだろうけれど、その美に手をのばそうとすることは全くたやすいことじゃない。少なくとも私にとってはとっても難しい。第一に美を求める以前に淡々と理解をすすめていくこと、それが難しい。これまでも何度も挫折してる。半年以上何も書かない読まない(プログラムを)こともある。&lt;br/&gt;ところが不思議なものでふとある時に放り出してあった本を手にとってみると以前とは違う感触を覚えたりして、またぞろなにやら書いたり読んだりするものの、しばらくすると挫折する。これを繰り返している。&lt;br/&gt;&lt;br/&gt;そんなわけで美を意識できるような世界からは１００万光年ほど離れたところでうろうろしていて、急ぐ旅じゃなしと寄り道ばかりして、はてな界隈の優秀な方の文章に感心しきってお茶ばかり飲んでる今日このごろ。&lt;br/&gt;&lt;br/&gt;これじゃーね。&lt;br/&gt;&lt;br/&gt;# 2010-07-01&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2951699892613447326?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2951699892613447326/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2951699892613447326' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2951699892613447326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2951699892613447326'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/08/blog-post.html' title='抽象化'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2854616209193394349</id><published>2011-08-28T12:58:00.001+09:00</published><updated>2011-08-28T12:58:13.483+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Steve Jobs 氏辞任報道をみて</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;私が初めて自分の為にパソコンを買う時、何を買おうか半年以上悩んだ。&lt;br/&gt;悩んだ末、Windows OS が抱える問題を自分専用のパソコンにまで持ち込むなんて「おかしいだろう」という結論に至った。&lt;br/&gt;&lt;br/&gt;ある日曜日、Apple をこよなく愛する店員さんのいるお店でパワーマックとモニターを選び少しだけメモリーを増設してもらい、マックライフがスタートした。&lt;br/&gt;たしかその年のうちに、iMac が登場し Apple 社のイメージは格段に変わった。&lt;br/&gt;iMac の仕掛人がどのような人物なのか知るにつれ、パーソナルコンピュータそのものの新たな扉が開いたような明るい予感がもたらされ、程なくして Apple 社が危機を乗り越えつつあることを Wired かなにかが報じだした。驚き喜んだ私は猫にごちそうした。&lt;br/&gt;# ただ、あとになって当時なぜ IE が入っていたのかを知った時はなんとも複雑な気持ちを覚えたものだった。&lt;br/&gt;&lt;br/&gt;そして Mac OS X β が発売された。なにが画期的だったかといえばコマンドが使えるようになった事だった。最初のまったり感はバージョンアップで消えていったし Aqua はそれまでみたどんな GUI　よりもきれいだった。&lt;br/&gt;&lt;br/&gt;数年後、ある日ある時電車の中で、ふとある事に気がついてかなり仰天した。&lt;br/&gt;白いイヤホンをしている人があっちにもこっちにも、ほらあそこにもいるではないか！なにごとが起きているのか？にわかに信じられなかった。そそくさと帰宅し調べてみるに、iPod が順調に売れているらしいと分かり時代が変わったことを突如として実感させられた。まさかこんな時代がくるなんて...。よもやテレビコマーシャルで Apple のロゴを目にする日がくるとは...。&lt;br/&gt;&lt;br/&gt;今 Apple 製品を様々思い出しながら、かつ、こうして Apple のノートパソコンを使いながら Apple 社に Steve Jobs 氏に心から感謝している。ありがとう。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2854616209193394349?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2854616209193394349/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2854616209193394349' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2854616209193394349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2854616209193394349'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/08/steve-jobs.html' title='Steve Jobs 氏辞任報道をみて'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-44290877552881512</id><published>2011-07-31T10:59:00.001+09:00</published><updated>2011-08-05T19:57:45.859+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nuclear'/><category scheme='http://www.blogger.com/atom/ns#' term='Safari'/><title type='text'>「放射線の健康への影響」について</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;pre&gt;&lt;code&gt;% pwd
/Library/Internet Plug-Ins
% l
(...略)
drw-r--r--   3 root  wheel   102  6 20 14:50 QuickTime Plugin.plugin
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;このようにしていたにも関わらず Lion のSafari 5.1 で QuitckTime 動画をみることができてしまったわけだが...今回に限っては予想に反し閲覧できてよかったと思ってしまった。もうね Safari plugin のことなんかふっとびました。

# 言い方を変えよう。Mac OS X Lion に Adobe Flash Player プラグイン入れるのやだな。とか思っている方も多いのではないでしょうか。(多くはないか?）
# でも、下記のような埋め込まれたQuickTime動画の場合は、Safari でプラグインオフにしていたとしても否応なく閲覧できちゃう。便利! ですね!?

&amp;lt;a href="http://savechild.net/archives/6135.html"&amp;gt;http://savechild.net/archives/6135.html&amp;lt;/a&amp;gt;
&amp;lt;blocquote&amp;gt;
2011年7月27日 (水) 衆議院厚生労働委員会「放射線の健康への影響」について
参考人説明より
児玉龍彦(参考人 東京大学先端科学技術研究センター教授 東京大学アイソトープ総合センター長)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;以下, 個人メモ。&lt;br/&gt;&lt;br/&gt;2011.3.15 AM9:00&lt;br/&gt;東海村 10条通報&lt;br/&gt;東京　 &lt;del&gt;5&lt;/del&gt;0.5マイクロシーベルトパーアワー&lt;br/&gt;&lt;br/&gt;2011.3.21&lt;br/&gt;東京　 0.2マイクロシーベルトパーアワー&lt;br/&gt;枝野幹事長、問題ない。&lt;br/&gt;&lt;br/&gt;福島原発の総量。&lt;br/&gt;熱量換算では、広島原爆の29.6個分に相当するものが漏出。&lt;br/&gt;ウラン換算では20個分のものが漏出していると換算される。&lt;br/&gt;&lt;br/&gt;原爆による残存料 1年後&lt;br/&gt;1,000分の1&lt;br/&gt;原発からの放射線汚染物残存料&lt;br/&gt;10分の1程度&lt;br/&gt;&lt;br/&gt;補償問題と子供を守るための問題は分けてほしい。&lt;br/&gt;緊急避難的除染と恒久的除染をわけろ&lt;br/&gt;&lt;br/&gt;内部被曝はパーソナルな問題。&lt;br/&gt;4つの提案。&lt;br/&gt;&lt;br/&gt;『7万人の人が自宅を離れてさまよっている時に国会は一体何をやっているのでしょうか。』&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-44290877552881512?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/44290877552881512/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=44290877552881512' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/44290877552881512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/44290877552881512'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/07/blog-post.html' title='「放射線の健康への影響」について'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-7894110069485707154</id><published>2011-07-25T10:13:00.001+09:00</published><updated>2011-07-25T10:13:00.896+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>OS X 10.7 : IPv6 を切る</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Mac OS X 10.7 では下記に書かれてある通りにIPv6 を切ることはできなくなってしまった。&lt;br/&gt;&lt;br/&gt;Configuring IPv6 in Mac OS X v10.6.7 or later&lt;br/&gt;http://support.apple.com/kb/HT4667&lt;br/&gt;&lt;br/&gt;基本的にはできなくなったけどコマンドからはできた。&lt;br/&gt;&lt;br/&gt;サービス名デバイス名一覧表示(一般ユーザ実行可能)&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ networksetup -listnetworkserviceorder
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;IPv6の現況&lt;br/&gt;# &amp;lt;networkservice&amp;gt; には -listnetworkserviceorderで表示されたサービス名を使う。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ networksetup -getinfo &amp;lt;networkservice&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;指定したサービスのIPv6 を OFF にする # 管理者ユーザで実行&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ sudo networksetup -setv6off &amp;lt;networkservice&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;確認&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ networksetup -getinfo &amp;lt;networkservice&amp;gt;
...
IPv6: Off
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;システム環境設定-&amp;gt;ネットワークから IPv6の構成をみてみると「切る」になっていた。&lt;br/&gt;&lt;br/&gt;もしかして、Apple は&lt;br/&gt;『これからはじゃんじゃんIPv6を使いましょう。よって IPv6 「切る」を選択肢から削除しました』&lt;br/&gt;なーんて意図を持ってるのかもしれない。&lt;br/&gt;できればちゃんとした公式ドキュメントが欲しいところ...。&lt;br/&gt;&lt;br/&gt;参照&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ networksetup --help | grep 6
networksetup -setv6off &amp;lt;networkservice&amp;gt;
networksetup -setv6automatic &amp;lt;networkservice&amp;gt;
networksetup -setv6manual &amp;lt;networkservice&amp;gt; &amp;lt;networkservice&amp;gt; &amp;lt;address&amp;gt; &amp;lt;prefixlength&amp;gt; &amp;lt;router&amp;gt;
networksetup -create6to4service &amp;lt;newnetworkservicename&amp;gt; 
networksetup -set6to4automatic &amp;lt;networkservice&amp;gt; 
networksetup -set6to4manual &amp;lt;networkservice&amp;gt; &amp;lt;relayaddress&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-7894110069485707154?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/7894110069485707154/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=7894110069485707154' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7894110069485707154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7894110069485707154'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/07/os-x-107-ipv6.html' title='OS X 10.7 : IPv6 を切る'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5436830791807870779</id><published>2011-07-24T16:17:00.001+09:00</published><updated>2011-07-25T23:17:45.448+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>Mac OS X Lion Install</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Mac OS X Lion クリーンインストール。&lt;br/&gt;# App Store から Installer をダウンロードした『直後』でインストール始める『直前』に&lt;br/&gt;# /Applications にダウンロードされた Installer をバックアップとらないといけない。ここはまる。ここ「はまる」の意。&lt;br/&gt;&lt;del&gt;# 詳細は googleへ。&lt;/del&gt; 記事末尾参照&lt;br/&gt;&lt;br/&gt;PRMA クリアして option を押しながら USB フラッシュメモリーから起動。&lt;br/&gt;ユーティリティ-&amp;gt;ディスクユーティリティを使ってパーティションの1つを初期化しインストール。&lt;br/&gt;&lt;br/&gt;システム環境とターミナル.appをざっと設定し 3 度目の起動 後。&lt;br/&gt;# ソフトウェアアップデートはしていない。&lt;br/&gt;# Wi-Fi (Lion から メニューバーのAirMac は Wi-Fi になった) に繋がることは確認。&lt;br/&gt;# FileVault はオンにしていない。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# lsof
$ sudo lsof -i
$ sudo launchctl list | more

# grep netbios
$ sudo launchctl list | grep netbios

$ pwd
/System/Library/LaunchDaemons
$
$ grep -R netb  .
./com.apple.netbiosd.plist: &amp;lt;string&amp;gt;com.apple.netbiosd&amp;lt;/string&amp;gt;
./com.apple.netbiosd.plist:   &amp;lt;string&amp;gt;/usr/sbin/netbiosd&amp;lt;/string&amp;gt;
./com.apple.netbiosd.plist:        &amp;lt;string&amp;gt;_netbios&amp;lt;/string&amp;gt;
./com.apple.netbiosd.plist:                &amp;lt;string&amp;gt;netbios-ns&amp;lt;/string&amp;gt;
./com.apple.netbiosd.plist:                &amp;lt;string&amp;gt;netbios-dgm&amp;lt;/string&amp;gt;
$
$ more com.apple.netbiosd.plist

# unload netbiosd
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.netbiosd.plist 
$ sudo lsof -i

# chmod netbiosd
$ which netbiosd
$ sudo chmod a-x /usr/sbin/netbiosd
$ ls -la /usr/sbin/netbiosd 
# chmod smbd
$ sudo chmod a-x /usr/sbin/smbd
$ ls -la /usr/sbin/smbd

# unload blued
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.blued.plist
# unload RemoteDesktop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.RemoteDesktop.PrivilegeProxy.plist 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# halt&lt;br/&gt;# shift key 押しながら起動。&lt;br/&gt;# login as admin user&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# moved RemoteManagement agent
$ sudo mv /System/Library/LaunchAgents/com.apple.RemoteDesktop.plist  ~/backup/com.apple.RemoteDesktop.plist
# moved RemoteManagement
$ sudo mv /System/Library/CoreServices/RemoteManagement/  ~/backup/RemoteManagement/

# moved IOBluetooth
$ cd /System/Library/Extensions
$ sudo mv IOBluetoothFamily.kext/  ~/backup/IOBluetoothFamily.kext/
$ sudo mv IOBluetoothHIDDriver.kext/  ~/backup/IOBluetoothHIDDriver.kext/
$ sudo mv AppleBluetoothMultitouch.kext ~/backup/AppleBluetoothMultitouch.kext

# important touch
$ sudo touch /System/Library/Extensions/

# chmod blued
$ which blued
$ sudo chmod a-x /usr/sbin/blued
$ ls -la /usr/sbin/blued 

# reboot
# login as admin user
# system log
$ syslog -w 200 | more
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# system error log&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ syslog -k Level Nle error
Jul 24 10:38:59 localhost UserEventAgent[11] &amp;lt;Error&amp;gt;: CaptiveNetworkSupport:CaptiveSCRebuildCache:81 Failed to get service order
--- last message repeated 3 times ---
Jul 24 10:38:59 localhost airportd[21] &amp;lt;Error&amp;gt;: _processDLILEvent: en0 attached (down)
Jul 24 10:39:00 localhost UserEventAgent[11] &amp;lt;Error&amp;gt;: CaptiveNetworkSupport:CaptiveSCRebuildCache:81 Failed to get service order
--- last message repeated 1 time ---
Jul 24 10:39:00 localhost configd[14] &amp;lt;Error&amp;gt;: bootp_session_transmit: bpf_write(en0) failed: Network is down (50)
Jul 24 10:39:00 localhost configd[14] &amp;lt;Error&amp;gt;: DHCP en0: INIT-REBOOT transmit failed
Jul 24 10:39:01 osx mDNSResponder[47] &amp;lt;Error&amp;gt;: mDNSResponder mDNSResponder-320.5 (Jun 16 2011 17:42:39) starting OSXVers 11
Jul 24 10:39:02 osx mDNSResponder[47] &amp;lt;Error&amp;gt;: D2D_IPC: Loaded
Jul 24 10:39:02 osx mDNSResponder[47] &amp;lt;Error&amp;gt;: D2DInitialize succeeded
Jul 24 10:39:02 osx corestoraged[73] &amp;lt;Error&amp;gt;: .... status = "Locked"
Jul 24 10:39:02 osx systemkeychain[33] &amp;lt;Error&amp;gt;: done file: /var/run/systemkeychaincheck.done
Jul 24 10:39:02 osx loginwindow[49] &amp;lt;Error&amp;gt;: Login Window Application Started
Jul 24 10:39:03 osx mds[46] &amp;lt;Error&amp;gt;: (Normal) FMW: FMW 0 0
Jul 24 10:39:05 osx loginwindow[49] &amp;lt;Error&amp;gt;: Login Window Started Security Agent
Jul 24 10:39:05 osx WindowServer[99] &amp;lt;Error&amp;gt;: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
Jul 24 10:39:05 osx loginwindow[49] &amp;lt;Error&amp;gt;: kCGErrorFailure: CGSPackagesGetWorkspaceType: couldn't get workspace type
Jul 24 10:39:05 osx loginwindow[49] &amp;lt;Error&amp;gt;: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
Jul 24 10:39:06 osx SecurityAgent[118] &amp;lt;Error&amp;gt;: Echo enabled
Jul 24 10:39:08 osx SecurityAgent[118] &amp;lt;Error&amp;gt;: kCGErrorFailure: CGSPackagesGetWorkspaceType: couldn't get workspace type
Jul 24 10:39:08 osx SecurityAgent[118] &amp;lt;Error&amp;gt;: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
Jul 24 10:39:18 osx SecurityAgent[118] &amp;lt;Error&amp;gt;: Login Window login proceeding
Jul 24 10:39:18 osx loginwindow[49] &amp;lt;Error&amp;gt;: Login Window - Returned from Security Agent
$_
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# :) を検索&lt;br/&gt;$ syslog -k Message Seq ':)'&lt;br/&gt;&lt;br/&gt;[2011-07-25]&lt;br/&gt;&lt;br/&gt;yebo blog: OS X Lionのディスクを作成する方法&lt;br/&gt;http://yebo-blog.blogspot.com/2011/06/os-x-lion_18.html &lt;br/&gt;&lt;br/&gt;http://osxdaily.com/2011/07/08/make-a-bootable-mac-os-x-10-7-lion-installer-from-a-usb-flash-drive/&lt;br/&gt;&lt;br/&gt;Install Mac OS X Lion on More Than One Computer&lt;br/&gt;http://osxdaily.com/2011/07/21/install-mac-os-x-lion-multiple-macs/&lt;br/&gt;&lt;br/&gt;OS X Lion: About Lion Recovery&lt;br/&gt;http://support.apple.com/kb/HT4718&lt;br/&gt;&lt;br/&gt;OS X Lion: About FileVault 2&lt;br/&gt;http://support.apple.com/kb/HT4790&lt;br/&gt;&lt;br/&gt;Inside Mac OS X 10.7 Lion: New Wi-Fi Diagnostics tool&lt;br/&gt;http://www.appleinsider.com/articles/11/03/15/inside_mac_os_x_10_7_lion_new_wifi_diagnostics_tool.html&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5436830791807870779?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5436830791807870779/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5436830791807870779' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5436830791807870779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5436830791807870779'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/07/mac-os-x-lion-install.html' title='Mac OS X Lion Install'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5894971174508913170</id><published>2011-06-30T06:37:00.001+09:00</published><updated>2011-06-30T07:03:14.377+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><title type='text'>Blogger API Get Request</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Blogger API に対し最初に発行すべき Get Request 先はどこか? についてわかったこと。&lt;br/&gt;&lt;br/&gt;&lt;a href='http://code.google.com/p/gdata-ruby-util/downloads/list'&gt;gdata-1.1.2 (ruby-lib)&lt;/a&gt;を使ってログインしてから&lt;/p&gt;&lt;pre&gt;&lt;code&gt;https://www.blogger.com/feeds/default/blogs
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;に対して Get リクエストすると基本的な情報が返ってきた。&lt;br/&gt;その XML はこのような構成になっており&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;xml root&amp;gt;
  &amp;lt;title/&amp;gt;
  &amp;lt;name/&amp;gt;
  &amp;lt;link/&amp;gt;
  &amp;lt;author/&amp;gt;
  &amp;lt;entry&amp;gt;
    &amp;lt;published/&amp;gt;
    &amp;lt;updated/&amp;gt;
    &amp;lt;category/&amp;gt;
    &amp;lt;link/&amp;gt;
  &amp;lt;/entry&amp;gt;
&amp;lt;/xml root&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;こんなような def を用意すると...&lt;/p&gt;&lt;pre&gt;&lt;code&gt;def xinfo_link(str)
   # @xr = response.to_xml.root
   # str = "link" or "entry/link"
   @xr.get_elements("#{str}").each{|x|
    m = x.attributes['rel'].to_s.match(/\#(.*?)$/)
    m ? s = m[1] : s = x.attributes['rel']
    print "#{s} =&amp;gt; ", x.attributes['href'], "\n"
  }
end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;各種 URL を得ることができました。&lt;br/&gt;下記のリンク先(末尾)の内容どおり実際にテンプレート用URLなども用意されておりちょっと驚きました。&lt;br/&gt;&lt;br/&gt;また、これまで使用したラベル(category)も全て格納されておりました。&lt;br/&gt;こんなような def を用意すると、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;def category
  # @xr = response.to_xml.root
  @xr.get_elements('entry/category').each{|y| print "[", y.attributes['term'], "]\s"}
  print "\n"
end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;category 一覧をみることができました。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Category:
[Music] [get-item-amazon] [OSX] [SnowLeopard] [readbook] [AirMac] [Safari] [Amazon] [Apple] [importdata] [AirPort] [2010-amazon-api-jp] [News] [MacVim] [mdiary]     [mblogger] [Book] [AppleScript] [google] [gem] [essay] [Leopard] [vi] [Blogger] [Perl] [x] [Nuclear] [sleep] [launchd] [Design] [RubyCocoa] [vim] [iTunes] [git]     [RubyUtility] [Ruby] [daybook] [TV] [RubyOSA] [plutil] [macruby]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;下記を参考にさせていただきました。&lt;br/&gt;&lt;br/&gt;&lt;a href='http://groups.google.com/group/bloggerdev?lnk=rga'&gt;Blogger Developer Group | Google グループ&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://code.blogger.com/2011/03/using-oacurl-to-explore-bloggers-api.html'&gt;Blogger Developers Network: Using OACurl to explore Blogger’s API&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://idratherhack.blogspot.com/2011/06/howto-change-blogger-settings-with.html'&gt;I'd Rather Hack: Howto Change Blogger Settings with the GData API&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5894971174508913170?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5894971174508913170/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5894971174508913170' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5894971174508913170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5894971174508913170'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/06/blogger-api-get-request.html' title='Blogger API Get Request'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6043347738386270838</id><published>2011-06-27T13:33:00.001+09:00</published><updated>2011-06-27T13:33:21.365+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>キュレーションの時代</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;キュレーションの時代 | 佐々木俊尚 | 筑摩書房 | 978-4-48-006591-9&lt;br/&gt;&lt;br/&gt;わたしは twitter も facebook も使っていないが全体として非常に面白く興味をもって読んだ。ただ疑問が残るところがあった。&lt;br/&gt;&lt;br/&gt;以下「情報の真贋」について述べられている箇所の引用。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;p.204&lt;br/&gt;情報の真贋なんてだれにもみきわめられない&lt;br/&gt;&lt;br/&gt;p.205-p.206&lt;br/&gt;考えてもみてください。&lt;br/&gt;すでにある一次情報をもとにしているプログだったら、「その論理展開は変だ」「ロジックが間違ってる」という指摘はできます。たとえば「日本で自殺者が増えているのは、大企業が社員を使い捨てしているからだ」とかいうエントリーがあれば、自殺増加の原因についていろんな議論ができるでしょう。...&lt;br/&gt;(略)...逆に、誰にも検証できないような一次情報が書かれている場合、それってどう判断すればよいのか。&lt;br/&gt;(略)...だから、「真贋をみきわめる」という能力は、そもそもだれにも育まれようがないというのがごく当たり前の結論だったわけです。&lt;br/&gt;&lt;br/&gt;p.207&lt;br/&gt;つまり「事実の真贋をみきわめること」は難しいけれども、それにくらべれば「人の信頼度をみきわめること」の方ははるかに容易であるということなのです。&lt;br/&gt;&lt;br/&gt;p.242&lt;br/&gt;一次情報を発信することよりも、その情報が持つ意味、その情報が持つ可能性、その情報が持つ「あなただけにとっての価値」、そういうコンテキストを付与できる存在の方が重要性を増してきているということなのです。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;下記感想。&lt;br/&gt;&lt;br/&gt;第一に、p.242 ここで一次情報を発するよりも重要だとされているコンテキスト(つまりそれは二次情報、三次情報だと受け止めてもいいと思うが)それらが一次情報と「比較され」「重要」だと論じられている点。&lt;br/&gt;&lt;br/&gt;コンテキストの重要性は決して一次情報を軽んじている訳では「ない」と理解しているつもりだが...、&lt;br/&gt;例えば、ゴッホの絵よりもゴッホの絵を発掘した人の方が重要なのか？&lt;br/&gt;例えば Google が提供する「サービス」と Google のフィルターを通して出現した「検索結果」を構成する情報、これらはどちらがより重要か？を論じた場合、にわとりが大事か卵が大事かに陥るのでは？情報とはなにかについて考えた方が精神衛生上よいのではないだろうか。&lt;br/&gt;&lt;br/&gt;第二に、わたしたちは、例えば Google がなかった頃一次情報に辿りつくことができなかった永遠の漂流者だったんだろうか？&lt;br/&gt;そんなことはないと思う。確かに Google のおかげで飛躍的に楽になったが、Google がない時代でも一次情報が存在している限りは、また探す気力がある限りはどうにか辿り着けていたんじゃないのかな。時間を要する時もあったけど...。&lt;br/&gt;&lt;br/&gt;第三に、わたしたちは、果たして「情報の真贋」をみきわめられない存在なのだろうか？&lt;br/&gt;「そもそもだれにも育まれようがない」と結論づけてしまう(p.206)のは過剰なのでは？と思う。&lt;br/&gt;# この件について 『CODE 2 』でも語られている思うけれども私は読了できていない。&lt;br/&gt;仮に佐々木氏の言うように、みきわめられないとして、じゃあその者は信頼できる人物(p.207)とやらをみきわめられるんだろうか？&lt;br/&gt;実際、情報の真贋をみきわめるのは難しい時もある。実際、情報ハブ的人物の情報をありがたく享受することも多々ある、けれども真贋をみきわめる能力は育まれないと結論づけてしまうのはそれは何か重要なものを放棄することにならないだろうか？&lt;br/&gt;&lt;br/&gt;あえてここでちょっと意地悪な仮定を試みてみよう。&lt;br/&gt;もしも、わたしたち社会を構成する[全員]が氏の述べるような「情報の真贋をみきわめられない」存在であると仮定するならば、重大な矛盾を内包することになる。つまり、一次情報発信者自身も、佐々木氏が述べるキュレーター自身も、情報の真贋がみきわめられない存在だという矛盾に陥ることになってしまう...。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6043347738386270838?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6043347738386270838/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6043347738386270838' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6043347738386270838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6043347738386270838'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/06/blog-post_27.html' title='キュレーションの時代'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6697406460199898813</id><published>2011-06-27T13:30:00.001+09:00</published><updated>2011-06-27T13:30:07.730+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>美の構成学</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;美の構成学 | 三井秀樹 | 中公新書 | 978-4-12-101296-8&lt;br/&gt;&lt;br/&gt;第一章「構成学とデザイン」は&lt;br/&gt;主にバウハウスの歴史について語られ&lt;br/&gt;第二章「構成学と造形」&lt;br/&gt;主に構成学の歴史&lt;br/&gt;第三章「造形の秩序」&lt;br/&gt;黄金比、シンメトリーについて&lt;br/&gt;第四章「くらしの中の構成学」&lt;br/&gt;暮らしの中にある美について&lt;br/&gt;第５章「新しい構成学」では&lt;br/&gt;これからの構成学についてテクノロジーとの関係が述べられている。&lt;br/&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;p.123&lt;br/&gt;構成学は芸術やデザインの専門家のためにだけあるのではなく、日々の生活に活かしてこそ意味があり、私たち自身がそれぞれ美意識をもち快適な生活を送るための生活美学であると位置づけて欲しい。&lt;br/&gt;&lt;br/&gt;p.151&lt;br/&gt;このようにバウハウスで確立した造形の基礎概念を柱とする構成学は、モホリ•ナギからケペッシュの視覚言語論を経て、ネグロポンテのマン•マシン•インターフェイスという人間とコンピュータの情報理論を加えた、つまり視覚の世界から視覚＋情報の情報認知科学の分野へ領域が拡がってきたといえる。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;本を読み終えて。&lt;br/&gt;なぜ、アスファルトの色はよりによってこんな灰色なんだろうと、子供の頃真剣に思い悩んでいたことを思い出した。できたてのアスファルトの道は灰色というより黒に近い。けれど時間がたつとともに少しづつ白い絵の具を重ねて塗ったように灰色に近づいていく。そして町中がこの灰色の道におおわれている。&lt;br/&gt;私はこの状態につよい不満を感じていた。なぜもっときれいな色じゃないんだろう。どうせならもっと美しい色にしてくれていたら道を歩くのはもっと楽しいのに。あるいは真っ白だったらどれだけ気持ちいいだろう。ビルや工場もそうだ。なぜ灰色なんだろう。どうせならもっときれいな色にしてくれたら町が明るくなるのに。なぜ大人は灰色が好きなんだ？&lt;br/&gt;子供の私がこの疑問を口に出して大人に聞いてみることはなかった。まともに相手にされることはないだろうと思ったから。&lt;br/&gt;今、私はこの疑問に対する妥当な答えを持ち合わせていない。&lt;br/&gt;なぜ日本の道路でアスファルトが使われ続けているのか歴史的経緯を調べることはできたとしても...&lt;br/&gt;当時の大人たちもこんなこと聞かれたらさぞかし困ったことだろう...。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6697406460199898813?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6697406460199898813/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6697406460199898813' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6697406460199898813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6697406460199898813'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/06/blog-post.html' title='美の構成学'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4306528408185203858</id><published>2011-06-25T12:40:00.001+09:00</published><updated>2011-07-25T23:28:11.495+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><category scheme='http://www.blogger.com/atom/ns#' term='AirMac'/><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><title type='text'>networksetup createlocation</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;[2011-07-25]&lt;br/&gt;追記：OS X Lion から試してみた。結論からいうと、このコマンドを使って「優先するネットワーク」を設定しないほうがいい。と私は思う。&lt;br/&gt;キーチェインのシステムとログインそれぞれに鍵は登録されるものの、その鍵のアクセス制御欄を確認してみると「システム環境設定」が含まれていない。&lt;br/&gt;つまり手動で設定した場合のアクセス制御とは異なる結果が生じてしまう。&lt;br/&gt;また、10.7 でサポートされなくなったオプションもいくつかあるようだ。&lt;br/&gt;----------&lt;br/&gt;&lt;br/&gt;コマンドラインから AirMac(AirPort) 設定するメモが出てきた。&lt;br/&gt;7月に OS X Lion になったら試してみようと思う。&lt;br/&gt;&lt;br/&gt;下記 Mac OS X 10.6.1 時代の日記より。(2009-09-14)&lt;br/&gt;&lt;br/&gt;# --&lt;br/&gt;# help をちゃんと読んでみる&lt;br/&gt;$ /usr/sbin/networksetup -help | more&lt;br/&gt;# 管理者ユーザになる&lt;br/&gt;&lt;br/&gt;### 新規ロケーション作成 - デフォルトサービスつき&lt;br/&gt;# Usage: networksetup -createlocation &amp;lt;location name&amp;gt; [populate]&lt;br/&gt;&lt;br/&gt;$ sudo networksetup -createlocation test-location populate　&lt;br/&gt;# システム環境設定 - ネットワーク から手動で新規ロケーションを作成したのと同じ結果になる.&lt;br/&gt;# populate をつけると利用可能なサービス(Ethrnet, Airport など)がすべて有効な状態で登録される。&lt;br/&gt;&lt;br/&gt;### ロケーションの削除&lt;br/&gt;# sudo networksetup -deletelocation &amp;lt;location name&amp;gt;&lt;br/&gt;$ sudo networksetup -deletelocation test-location&lt;br/&gt;# 成功すると、found it!　と表示&lt;br/&gt;&lt;br/&gt;### 新規ロケーション作成 - デフォルトサービスなし&lt;br/&gt;$ sudo networksetup -createlocation test-location&lt;br/&gt;&lt;br/&gt;### ロケーション一覧をみて新規ロケーションを確認する&lt;br/&gt;$ networksetup -listlocations&lt;br/&gt;&lt;br/&gt;### 新しく作ったロケーションへ切替&lt;br/&gt;$ sudo networksetup -switchtolocation test-location&lt;br/&gt;&lt;br/&gt;### サービスの作成 - アドレスは自動的に DHCP 参照になる。&lt;br/&gt;# Usage: networksetup -createnetworkservice &amp;lt;newnetworkservicename&amp;gt; &amp;lt;hardwareport&amp;gt;&lt;br/&gt;# &amp;lt;newnetworkservicename&amp;gt; - 自分で自由につける名前.ここでは air2 とした&lt;br/&gt;# &amp;lt;hardwareport&amp;gt; - $ networksetup -listallhardwareports で確認できているもののなかから無線を選ぶ.ここでは AirPort&lt;br/&gt;$ sudo networksetup -createnetworkservice air2 AirPort&lt;br/&gt;&lt;br/&gt;# サービスを作成すると途端に AirMac 電源が入り周囲をスキャンしはじめるのですぐ電源を切っておく.&lt;br/&gt;# networksetup -setairportpower &amp;lt;device name&amp;gt; &amp;lt;on off&amp;gt;&lt;br/&gt;$ networksetup -setairportpower AirPort off&lt;br/&gt;or&lt;br/&gt;$ networksetup -setairportpower en0 off&lt;br/&gt;&lt;br/&gt;### サービス作成されたことを確認&lt;br/&gt;$ sudo networksetup -listnetworkserviceorder&lt;br/&gt;# &amp;lt;newnetworkservicename&amp;gt; である air2 設定状況表示 - DHCP 参照になっている&lt;br/&gt;$ networksetup -getinfo ai2&lt;br/&gt;&lt;br/&gt;### 優先するネットワークの設定&lt;br/&gt;% networksetup -help&lt;br/&gt;# Usage: networksetup -setairportnetwork &amp;lt;network&amp;gt; &amp;lt;device name&amp;gt; [password]&lt;br/&gt;#        Set AirPort Network to &amp;lt;network&amp;gt; for &amp;lt;device name&amp;gt;.&lt;br/&gt;#        If a password is included, it gets stored in the keychain.&lt;br/&gt;&lt;br/&gt;# &amp;lt;device name&amp;gt; -&amp;gt; $ networksetup -listallhardwareports で確認できているもののなかから無線を選ぶ&lt;br/&gt;# &amp;lt;network&amp;gt; -&amp;gt; 参加したい無線LANネットワーク名。SSID ともいう。ここでは homearea 。&lt;br/&gt;# &amp;lt;index&amp;gt; -&amp;gt; 0 を指定すると優先順位が１番になるようだ。末尾にしたい場合は任意の数字&lt;br/&gt;# &amp;lt;security type&amp;gt; -&amp;gt; WEP とか　WPA2 とか選ぶ&lt;br/&gt;# [password]　- パスワードを入力するとキーチェインの「システム」キーチェインに自動的に登録される。はず?&lt;br/&gt;&lt;br/&gt;$ sudo networksetup -addpreferredwirelessnetworkatindex AirPort homearea 0 WPA2 password&lt;br/&gt;# =&amp;gt;&lt;br/&gt;# Security type is set to: WPA2 Personal&lt;br/&gt;# Added homeerea to preferred networks list&lt;br/&gt;&lt;br/&gt;# 優先するネットワークの設定のためのコマンドは動くもののキーチェインに key が正しく登録されないようだ。&lt;br/&gt;# 結果、無線につながることはなかった。&lt;br/&gt;# システム環境設定ーネットワークを開き手動で優先するネットワークを設定し無事つながった。&lt;br/&gt;# --&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4306528408185203858?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4306528408185203858/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4306528408185203858' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4306528408185203858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4306528408185203858'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/06/networksetup-createlocation.html' title='networksetup createlocation'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-908223341773130170</id><published>2011-06-22T11:01:00.001+09:00</published><updated>2011-06-22T11:42:47.067+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><title type='text'>Changed Blogger's feed access</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;# Blogger API へアクセスする際は https 使用のこと。&lt;br/&gt;&lt;br/&gt;Blogger Developers Network: Clarifying recent changes to Blogger’s feed access&lt;br/&gt;&lt;a href='http://code.blogger.com/2011/06/clarifying-recent-changes-to-bloggers.html'&gt;Blogger Developers&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Developer\'s Guide: Protocol - Blogger APIs - Google Code&lt;br/&gt;&lt;a href='http://code.google.com/intl/ja/apis/blogger/docs/2.0/developers_guide_protocol.html'&gt;Developers Guide&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Blogger API - Google Code&lt;br/&gt;&lt;a href='http://code.google.com/intl/ja/apis/blogger/index.html'&gt;Blogger API&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;# 新しい gdata&lt;br/&gt;gdata-1.1.2.gem - gdata-ruby-util - Version 1.1.2 - Google Data APIs Ruby Utility Library - Google Project Hosting&lt;br/&gt;&lt;a href='http://code.google.com/p/gdata-ruby-util/'&gt;gdata-ruby-util&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-908223341773130170?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/908223341773130170/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=908223341773130170' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/908223341773130170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/908223341773130170'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/06/changed-blogger-feed-access.html' title='Changed Blogger&amp;#39;s feed access'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6646889652754644530</id><published>2011-06-22T10:59:00.004+09:00</published><updated>2011-06-22T13:46:31.063+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nuclear'/><title type='text'>Fukushima Nuclear</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;いずれにせよ、きっちり、まんべんなく、くまなく測定することで「ただちに、健康に影響はない」と公言した「根拠」を数字で示す義務を負ってしまっている人々が存在していることにかわりなかろう。&lt;br/&gt;そもそも、この公言は「どこの誰の健康」なのかが全く不明だった。&lt;br/&gt;福島県内の60歳以上高齢者の健康なのか生後3ヶ月の赤ちゃんの健康なのか猫の健康なのか、福島|宮城|山形|栃木|茨城|群馬|長野|千葉|埼玉|東京|神奈川　居住者「全員」の健康なのか? はたまた！福島原発で働く人々の健康なのか?&lt;br/&gt;そもそも、この公言は「ただちにではない」「3年5年後将来的にはどうなの?」といった疑問が排除されていた。&lt;br/&gt;排除されて3ヶ月、裏付けとなるはずの測定を実施せず、風下にある住民たちに正確な値(狭いエリアでの)を告知しないまま、晩発性健康被害拡大を確信犯的に放置するならば、それは非人道的で法律にも反した犯罪的行為なのではなかろうか。&lt;br/&gt;&lt;br/&gt;全国に54基存在する原発周辺住民の不安感は拭えていなにも関わらず、政府は現在停止中の原発を運転再開するよう自治体に要請した。&lt;br/&gt;今後、巨大地震が発生した場合、たとえ原子炉が運転停止していたとしても、そこに保管されている「莫大な量の」人工毒物、放射性廃棄物が減る訳じゃない。それらが今後、地震や津波をきっかけに大気中に放出されるかもしれないであろうことは、いまや幼稚園児でも予測可能でしょう。&lt;br/&gt;この絶望感は言葉を奪う。&lt;br/&gt;全国54基原発周辺700キロ圏内「全ての公立小学校」で、放射線量および放射性物質の測定が実施され、常時告知され、常時緊急時に備えられるようになっていなければ、安全対策が施されたなどと言えないのでは?つまり、ほぼ日本全国の全ての公立小学校や公共施設において測定が必要なのでは?。&lt;br/&gt;&lt;br/&gt;もともと自然界に「存在していない」人工の放射性「物質」に対する免疫性を人間は持っていない。&lt;br/&gt;免疫性がないってことは、つまり、それらは人間や動物にとって毒物。&lt;br/&gt;人間がこの毒物を「体内に」取り込んでしまった場合、この毒性を除去する医療技術は「ほぼ」ない。&lt;br/&gt;だからこそ、下記のような法律が存在し管理区域における飲食や睡眠が禁じられ長時間の滞在が禁止されていたはずなのだと思う。&lt;br/&gt;&lt;br/&gt;読んでいただいてありがとう。&lt;br/&gt;&lt;br/&gt;--参照&lt;br/&gt;http://ja.wikipedia.org/wiki/放射線管理区域&lt;br/&gt;http://ja.wikipedia.org/wiki/原子力災害対策特別措置法&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.numtech.co.jp/column/20110520/#ch3'&gt;IAEA報告書(2006)抄訳: チェルノブイリ原発事故による環境への影響とその修復 - ニューメリカルテクノロジーズ株式会社&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://sites.google.com/site/radioisotopeweb/radioactivitymeas/4-tokyohotspot'&gt;4. TokyoHotspot - RadioisotopeWeb&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.rri.kyoto-u.ac.jp/NSRG/tyt2004/'&gt;Nucler Safety Research Group&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;PDF:2006.8.11　プルトニウムという放射能とその被曝の特徴（2006年7月15日)&lt;br/&gt;http://www.rri.kyoto-u.ac.jp/NSRG/kouen/Pu-risk.pdf&lt;br/&gt;&lt;br/&gt;PDF:低レベル被ばく影響に関する最近の報告より　　今中　哲二&lt;br/&gt;http://www.rri.kyoto-u.ac.jp/NSRG/seminar/No106/imanaka090306.pdf&lt;br/&gt;&lt;br/&gt;&lt;a href='http://hiroakikoide.wordpress.com/'&gt;小出裕章 (京大助教) 非公式まと&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.afpbb.com/article/disaster-accidents-crime/disaster/2802414/7261231'&gt;「さらに7万人が避難すべき」、仏IRSNが福島原発事故の評価を更新　国際ニュース : AFPBB News&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.democracynow.org/2011/6/10/as_japan_nuclear_crisis_worsens_citizen'&gt;Japan Admits 3 Nuclear Meltdowns, More Radiation Leaked into Sea; U.S. Nuclear Waste Poses Deadly Risks&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.nikkei.com/news/latest/article/g=96958A9C93819481E3EBE2E2828DE3EBE2E4E0E2E3E38297EAE2E2E2'&gt;原発の安全性、確認なら再稼働　首相が経産相支持：日本経済新聞&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.nikkei.com/news/headline/article/g=96958A9C93819890E0E2E2E3908DE0E2E2E4E0E2E3E3E2E2E2E2E2E2'&gt;福井知事、原発再稼働に慎重　「安全対策要請に答えを」：日本経済新聞&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.nikkei.com/news/category/article/g=96958A9C93819490E3EAE2E2908DE3EAE2E4E0E2E3E3E2E2E2E2E2E2;at=DGXZZO0195166008122009000000'&gt;泉田新潟県知事は「論評に値しない」と批判：日本経済新聞&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;# Weather Japan | Cloud spread Fukushima I power plant radiation&lt;br/&gt;# http://www.weatheronline.co.uk/weather/news/fukushima?LANG=en&amp;amp;VAR=zamg&lt;br/&gt;&lt;br/&gt;--書籍&lt;br/&gt;E＝mc２ | デイヴィッド・ボダニス | 早川書房 | 978-4-15-050371-0&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6646889652754644530?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6646889652754644530/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6646889652754644530' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6646889652754644530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6646889652754644530'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/06/fukushima-nuclear.html' title='Fukushima Nuclear'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-1606918560593267936</id><published>2011-06-22T10:59:00.003+09:00</published><updated>2011-06-22T10:59:58.636+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MacVim'/><title type='text'>MacVim in Dock</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://d.hatena.ne.jp/LaclefYoshi/20101024/1287887644'&gt;Google ChromeをAppleScriptで操作する - DiaryException&lt;/a&gt;&lt;br/&gt;こちらを拝見し&lt;/p&gt;&lt;pre&gt;&lt;code&gt;nnoremap u2 &amp;lt;ESC&amp;gt;:&amp;lt;C-u&amp;gt;read !osascript -e 'tell application "Google Chrome" to get copy selection of active tab of window 1' ; pbpaste
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を .vimrc に記入したところ、とっても便利になりました。(MacOS X の /usr/bin/vim  ver 7.2.108)&lt;br/&gt;# Chrome で閲覧している Webpage 中の文字列を選択し、vim 側で &amp;lt;ESC&amp;gt; u2 すると選択した文字列がコピペされる。&lt;br/&gt;&lt;br/&gt;ところが Application MacVim version 7.3 (code.google.com/p/macvim/) で試したみたら文字化けされてペーストされてしまった。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ man pbpaste
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;をみてもわからないので...&lt;/p&gt;&lt;pre&gt;&lt;code&gt;nnoremap u2  &amp;lt;ESC&amp;gt;:&amp;lt;C-u&amp;gt;read !osascript -e ' tell application "Google Chrome" to (get copy selection of active tab of window 1)' -e 'the clipboard'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;/usr/bin/pbpaste　の代わりに StandardEdition の the clipboard を使ってみたら文字化けがなおった。&lt;br/&gt;/usr/bin/vim からもOK。と思ったのもつかのま、今度は改行がおかしくなった。改行が&amp;lt;0d&amp;gt;&amp;lt;0d&amp;gt;になっている様子。&lt;br/&gt;&lt;br/&gt;# 翌日。&lt;br/&gt;どうにもお手上げなので、元の(pbpaste使用) nnoremap に戻して再度 MacVim から試すと、なんと!文字化けしないし改行もおかしくない。なんの問題もない。&lt;br/&gt;この間、スリープはしたけどログアウトはしていない。&lt;br/&gt;~/.MacOSX/environment.plist , ~/.inputrc は配置していない。.bashrc , .gvimrc は変更していないし .vimrc は件の nnoremap 行以外の行を触っていない。一体なんだったんだろう...。&lt;br/&gt;&lt;br/&gt;# さらに後日。&lt;br/&gt;MacVim 付属の mvim 使ってファイルを開いたり、Dock にある MacVim アイコンをクリックし ⌘+O でファイルを開いたり...両方使ってたかも?と気づいてハッとした。&lt;br/&gt;Dock にある MacVim アイコンをクリックし MacVim 起動。 Chrome で文字列を選択しu2 すると、文字化けがみごと再現した。&lt;br/&gt;ターミナルから mvim または /usr/bin/vim 使った場合。 No problem .&lt;/p&gt;&lt;pre&gt;&lt;code&gt;一般ユーザーも7月には自分のマシンにインストールできるようになる。価格は$29で、Mac App Storeからのみ購入できる。

Ferericchiはフルスクリーン・アプリ、マルチタッチ、Airdropなどの機能を紹介した。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;引用元: Mac OS X Lionの新機能トップ10&lt;br/&gt;http://jp.techcrunch.com/archives/20110606top-10-new-mac-ox-lion-desktop-features/&lt;br/&gt;&lt;br/&gt;つまり、件のワンライナーは、ターミナルから mvim を通して MacVim を起動した場合と、/usr/bin/vim で使う場合においては全く問題なし。&lt;br/&gt;ドックにおいたMacVimアイコンをクリックし起動した場合は問題あり、のようだ。&lt;br/&gt;# ちなみに:set fileencoding? を実行すると「いずれの場合」も&lt;br/&gt;# =&amp;gt;&lt;br/&gt;# fileencoding=utf-8&lt;br/&gt;# になっている。&lt;br/&gt;&lt;br/&gt;また、ターミナルから&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% open -a MacVim testest.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;した場合も問題なかった。&lt;br/&gt;&lt;br/&gt;# さらにさらに後日。&lt;br/&gt;% cat testing.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/ruby
path = ARGV[0]
exit unless File.exist?(path)
system("/usr/bin/osascript -e 'Tell application \"MacVim\" to open (POSIX file \"#{path}\") as string' -e 'return'")
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;% ruby testing.rb 001.txt&lt;br/&gt;によって開いたファイルで u2 してみると...問題なかった。&lt;br/&gt;&lt;br/&gt;感想。&lt;br/&gt;# Dock から MacVim 起動してはいけないのだろうか?&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-1606918560593267936?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/1606918560593267936/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=1606918560593267936' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1606918560593267936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1606918560593267936'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/06/macvim-in-dock.html' title='MacVim in Dock'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-3192384920686698562</id><published>2011-03-09T00:05:00.001+09:00</published><updated>2011-03-09T00:05:23.944+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>hash.merge</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Hash の merge&lt;br/&gt;&lt;br/&gt;2つのハッシュに同じkey が存在した場合...&lt;br/&gt;merge 元の値は nil じゃない。&lt;br/&gt;merge 対象の値は nil。&lt;br/&gt;これらを merge すると nil ではない merge 元の値は保持されたままになるのだっけ？&lt;br/&gt;なーんて一瞬でも思ったのは大間違いだった。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% irb
&amp;gt;&amp;gt; a = {:a=&amp;gt;'a', :b=&amp;gt;'b'}
=&amp;gt; {:b=&amp;gt;"b", :a=&amp;gt;"a"}
&amp;gt;&amp;gt; b = {:a=&amp;gt;nil, :b=&amp;gt;'c'}
=&amp;gt; {:b=&amp;gt;"c", :a=&amp;gt;nil}
&amp;gt;&amp;gt; a.merge(b)
=&amp;gt; {:a=&amp;gt;nil, :b=&amp;gt;"c"}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;nil であろうときっちり上書きされて nil になる。&lt;br/&gt;上書きされたくなければ同じ key を持たない。...というかマージしない...?&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-3192384920686698562?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/3192384920686698562/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=3192384920686698562' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3192384920686698562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3192384920686698562'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/03/hashmerge.html' title='hash.merge'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6186384075135652397</id><published>2011-03-07T18:44:00.001+09:00</published><updated>2011-03-07T19:44:51.755+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><title type='text'>about xblogger</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='https://github.com/midore/xblogger'&gt;xblogger&lt;/a&gt; について。&lt;br/&gt;&lt;br/&gt;ターミナル(/Applications/Utilities/Terminal.app/) から&lt;br/&gt;&lt;a href='http://code.google.com/p/gdata-ruby-util/downloads/list'&gt;gdata-ruby-util&lt;/a&gt;&lt;br/&gt;を使って Blogger に記事を ポスト| ゲット | 削除 | アップデート する為のものです。&lt;br/&gt;&lt;br/&gt;Mac OS X 上で作りました。使用する Ruby は 10.6 に搭載されているRuby 1.8.7 (/usr/bin/ruby) です。&lt;br/&gt;# Ruby 1.9.2 用は &lt;a href='https://github.com/midore/mblogger'&gt;mblogger&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;『はじめに』&lt;br/&gt;&lt;br/&gt;xblogger は utf-8 で保存されたテキストファイルで 特定の書式に則ったものだけを対象にしています。ものすごく端折って言うと&lt;br/&gt;--control, --category, --title, --content&lt;br/&gt;が明記されたファイルに記事内容を記入する必要があります。サンプルは xblogger/draft.txt です。&lt;br/&gt;&lt;br/&gt;--------------------&lt;br/&gt;0) 準備ー設定&lt;br/&gt;--------------------&lt;br/&gt;&lt;br/&gt;&lt;a href='http://code.google.com/p/gdata-ruby-util'&gt;gdata-ruby-util&lt;/a&gt; からgdata-ruby-util をダウンロードし&lt;br/&gt;xblogger/xblogger-config と xblogger/bin/run.rb を編集してください。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cd /pathto/download/
% gem unpack gdata-1.1.1.gem
%
% cd xblogger
% vim xblogger-config
% vim bin/run.rb
% chmod +x bin/run.rb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;gem を使用したい場合は&lt;br/&gt;% gem install gdata&lt;br/&gt;などして gdata に含まれている README を参照の上 bin/run.rb を書き換えてください。私はこの方法を試していません。&lt;br/&gt;&lt;br/&gt;自分の BlogID が不明な場合は下記を試してください。&lt;br/&gt;最初に自分の Blogger Profile Page をみにいきます。その URL に含まれている数字が仮に XXXXX だったとします。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cd xblogger/bin
% ruby get-blogid.rb XXXXX
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行。&lt;br/&gt;&lt;br/&gt;# xblogger-config の xname は任意の文字列を記入してくださいです。アンダーバーやハイフンは含めない方がよいかもしれません。&lt;br/&gt;&lt;br/&gt;--------------------&lt;br/&gt;1) 確認ー投稿前&lt;br/&gt;--------------------&lt;br/&gt;&lt;br/&gt;# --doc&lt;br/&gt;# 記事を投稿する前にリクエスト対象となる XML Document を確認します。&lt;br/&gt;&lt;br/&gt;サンプル xblogger/draft.txt を test.txt にコピーし編集し保存します。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cd xblogger
% cp draft.txt test.txt
% vim test.txt
% cat test.txt
--control
yes
--category
test,blogger
--title
TestTitle
--content
test post.
second line.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;test.txt を指定。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cd xblogger/bin
% ./run.rb  --doc ../test.txt
CONTROL: yes
TITLE: TestTitle
CATEGORY: test,blogger
# =====
&amp;lt;entry xmlns='http://www.w3.org/2005/Atom'&amp;gt;&amp;lt;title type='text'&amp;gt;TestTitle&amp;lt;/title&amp;gt;&amp;lt;content type='xhtml'&amp;gt;&amp;lt;div xmlns='http://www.w3.org/1999/xhtml'&amp;gt;&amp;lt;p&amp;gt;test post.&amp;lt;br/&amp;gt;second line.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/content&amp;gt;&amp;lt;app:control xmlns:app='http://www.w3.org/2007/app'&amp;gt;&amp;lt;app:draft&amp;gt;yes&amp;lt;/app:draft&amp;gt;&amp;lt;/app:control&amp;gt;&amp;lt;category term='test' scheme='http://www.blogger.com/atom/ns#'/&amp;gt;&amp;lt;category term='blogger' scheme='http://www.blogger.com/atom/ns#'/&amp;gt;&amp;lt;/entry&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;問題があればエラーになりますがエラーとして認識されない場合もあります。&lt;br/&gt;&lt;br/&gt;--------------------&lt;br/&gt;2) 投稿（ポスト）&lt;br/&gt;--------------------&lt;br/&gt;&lt;br/&gt;# --post&lt;br/&gt;# Blogger へ記事を投稿します。&lt;br/&gt;&lt;br/&gt;さきほどのtest.txt を指定し投稿します。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ./run.rb  --post ../test.txt
CONTROL: yes
TITLE: TestTitle
CATEGORY: test,blogger
# =====
Post Entry
OK? [y/n]

&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と尋ねられます。n を選択すると何事もなく終了します。y を選択すると記事を投稿します。投稿に成功すると success message が返ってきます。&lt;br/&gt;&lt;br/&gt;この時 ファイル test.txt の --control 値が yes になっていたら下書きの記事として投稿します。記事は公開されません。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;--control
yes
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;yes 以外の文字列になっている場合は公開記事として投稿します。記事は公開されます。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;--control
ok
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;記事文章内にリンクを張りたい時は、&lt;/p&gt;&lt;pre&gt;&lt;code&gt;--content
あいうえお &amp;lt;a href='http://github.com'&amp;gt;github.com&amp;lt;/a&amp;gt; かきくけこ。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のように記入しておくとハイパーリンクになります。html そのままです。&lt;br/&gt;引用の場合は &amp;lt;blockquote&amp;gt;改行+引用文+改行&amp;lt;/blockquote&amp;gt;&lt;br/&gt;コードの場合は &amp;lt;pre&amp;gt;改行+コード+改行&amp;lt;/pre&amp;gt; で囲むようにしてください。&lt;br/&gt;&lt;br/&gt;詳細は % cat xblogger/draft.txt で確認してください。&lt;br/&gt;&lt;br/&gt;--------------------&lt;br/&gt;3) 確認ー投稿後&lt;br/&gt;--------------------&lt;br/&gt;&lt;br/&gt;# 記事投稿に成功した場合結果ファイルを自動生成します。&lt;br/&gt;# 下書であろうとなかろうと。&lt;br/&gt;&lt;br/&gt;xblogger/bin/run.rb は 記事を投稿した場合に限って 指定したディレクトリに一意のファイルを生成します。&lt;br/&gt;指定したディレクトリ とは、xblogger/xblogger-config に自分で入力した任意のパス。&lt;br/&gt;例えば、~/data ディレクトリを指定していた場合、2011/01/01 に投稿した記事は&lt;/p&gt;&lt;pre&gt;&lt;code&gt;~/data/2011-01/2011-01-01T00-00-00-xxxxxx.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;に保存されます。xxxxxx はBlogger が与えた一意の番号です。&lt;br/&gt;&lt;br/&gt;生成されたファイルには、Blogger から受け取った情報が保存されています。具体的には edit_id, published date, updated date, url です。&lt;br/&gt;ただし --control によって"下書き"として投稿した場合は --url はありません。&lt;br/&gt;&lt;br/&gt;例&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cat ~/data/2011-01/2011-01-01T00-00-00-xxxxxx.txt
--edit_id
xxxxxxxxxx
--published
2011-01-01T00:00:00.001+09:00
--updated
2011-01-01T00:00:00.001+09:00
--date
2011/01/01 Sat AM 00:00:00
--control
ok
--category
test
--title
test
--url
http://midorex.blogspot.com/2011/01/test.html
--content
...略
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;--------------------&lt;br/&gt;4) 削除&lt;br/&gt;--------------------&lt;br/&gt;&lt;br/&gt;# --del, --delete&lt;br/&gt;# Blogger へ投稿した記事を削除します。&lt;br/&gt;# 下書きとして投稿した記事を指定することもできます。&lt;br/&gt;&lt;br/&gt;自動生成されたファイルの path を指定したい場合&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% run.rb --delete path
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;edit_id を指定したい場合&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% run.rb --del xxxxxxx
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;--------------------&lt;br/&gt;5) アップデート&lt;br/&gt;--------------------&lt;br/&gt;&lt;br/&gt;# --update&lt;br/&gt;# 既に投稿した記事内容を修正します。&lt;br/&gt;&lt;br/&gt;自動生成されたファイルの中から修正したい投稿ファイルを編集しファイルを保存します。&lt;br/&gt;保存したファイルのパスを指定します。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% run.rb --update ~/data/2011-01/2011-01-01T00-00-00-xxxxxx.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;[y/n] を尋ねられます。y を選択するとアップデートを実行します。完了すると success message を表示します。&lt;br/&gt;&lt;br/&gt;run.rb --update は指定したファイル内容を読み込みます。この時ファイルに保存されているはずの --edit_id が 空欄だったり 間違った番号(Blogger が管理していないような番号)であった場合 アップデートは成功しません。また、--title --category --content の内容は修正できますが ひとたび付与された --url などは変更できません。&lt;br/&gt;&lt;br/&gt;余談ですが...&lt;br/&gt;Blogger 記事の URL は&lt;br/&gt;記事タイトルに日本語の文字列が含まれていた場合、その月内で何番目の記事かが考慮された URL となり、日本語が含まれていない場合はスペース等を別の文字に置換した文字列が URLに反映されているようです。&lt;br/&gt;&lt;br/&gt;--------------------&lt;br/&gt;6) 記事取得&lt;br/&gt;--------------------&lt;br/&gt;&lt;br/&gt;# --get&lt;br/&gt;# 月内に投稿された全ての記事の タイトル, 日付, URL, Category, edit_id などを返します。&lt;br/&gt;&lt;br/&gt;--get の後になにもなければ現在の年月を指定したことになります。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ./run.rb --get
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;2011年2月を指定したい場合。month は 2桁で指定する必要があります。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ./run.rb --get 2011-02
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;--------------------&lt;br/&gt;7) HELP&lt;br/&gt;--------------------&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ./run.rb --h
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6186384075135652397?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6186384075135652397/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6186384075135652397' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6186384075135652397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6186384075135652397'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/03/about-xblogger.html' title='about xblogger'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-7952479874518218369</id><published>2011-02-23T19:49:00.001+09:00</published><updated>2011-02-23T19:49:25.730+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><title type='text'>Customized template.xml</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Blogger template.xml (css) をカスタマイズした際の memo。&lt;br/&gt;&lt;br/&gt;1)&lt;/p&gt;&lt;pre&gt;&lt;code&gt;.body-fauxcolumn-outer .cap-top {
  position: absolute;
  z-index: 1;
  /* Default */
  /* height: 400px;*/
  height: 5px;
  width: 100%;
  background: $(body.background);
  $(body.background.override)
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最上部フレーム高さとか。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#navbar-iframe {
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を追加しないで変更した場合どうなるかは試していない。&lt;br/&gt;&lt;br/&gt;2)&lt;/p&gt;&lt;pre&gt;&lt;code&gt;.content-inner {
  /* Default */
  /* padding: $(content.padding) $(content.padding.horizontal); */
  padding: 0px 20px;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;content は ブログタイトル, description, 全ての投稿を包括する大枠。&lt;br/&gt;&lt;br/&gt;3)&lt;/p&gt;&lt;pre&gt;&lt;code&gt;.header-inner .Header .titlewrapper {
  /* Default */
  /* padding: 22px $(header.padding); */
  padding: 5px $(header.padding);
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ブログタイトル余白。&lt;br/&gt;&lt;br/&gt;4)&lt;/p&gt;&lt;pre&gt;&lt;code&gt;.main-inner {
  /* Default
  padding-top: $(main.padding.top);
  padding-bottom: $(main.padding.bottom);
  */
  padding-top: 0px;
  padding-bottom: $(main.padding.bottom);
}

&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;main は全投稿記事を包括するパート。(記事フッタ、日付、タイトル含む)&lt;br/&gt;上部余白を減らすとブログタイトルと記事全体の間が狭くなる。&lt;br/&gt;&lt;br/&gt;5)&lt;/p&gt;&lt;pre&gt;&lt;code&gt;.post-header {
  margin: 0 0 1.5em;
  line-height: 1.6;
  font-size: 90%;
  /* add */
  border-bottom: 1px solid #6ea1bb;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;投稿タイトルと投稿記事の間の余白。&lt;br/&gt;padding-top: 20px; などの確認を要した。&lt;br/&gt;&lt;br/&gt;6)&lt;br/&gt;mobile のあと。&lt;br/&gt;p, pre-code, blockquote 部分。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;/*
----------------------------------------------- */

#navbar-iframe {
  height:0px;
  visibility:hidden;
  display:none
}

/* p tag
----------------------------------------------- */
.post-body p {
  margin: 0px;
  padding: 0px;
  font-size: 10.2pt;
  line-height: 1.6em;
  letter-spacing: 2px;
}

/* pre code
----------------------------------------------- */
.post-body pre {
  margin: 7px 0 7px 0px;
  padding: 7px 0 7px 7px;
  color: #6666B3;
  overflow: auto;
  border-bottom: 1px solid #eeeeee;
  border-left: 1px solid #eeeeee;
  background-color: #FCFFFD;
}
.post-body code {
  margin: 0em;
  padding: 0em;
  font-family: Menlo, Monaco, Monospace;
  font-size: 8.7pt;
  line-height: 1.7em;
  letter-spacing: 1.5px;
}

/* brockquote
----------------------------------------------- */
.post-body blockquote {
  margin: 5px 0px 5px 5px;
  padding: 0.8em 0.5em 0.5em 0.8em;
  color: #555;
  background-color: #FBFDFF;
  border-top: 1px solid #dddddd;
  border-right: 1px solid #dddddd;
  border-bottom: 1px solid #dddddd;
  border-left: 1px solid #dddddd;
}
.post-body blockquote p {
  margin: 0px;
  padding: 0px;
  font-family: Optima, Georgia, sans-serif;
  font-size: 9pt;
  line-height: 1.4em;
  letter-spacing: 2px;
  font-style: italic;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;カラー参照&lt;br/&gt;&lt;a href='http://www.w3schools.com/css/css_colornames.asp'&gt;http://www.w3schools.com/css/css_colornames.asp&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-7952479874518218369?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/7952479874518218369/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=7952479874518218369' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7952479874518218369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7952479874518218369'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/02/customized-templatexml.html' title='Customized template.xml'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-8877852593244061071</id><published>2011-02-16T21:57:00.001+09:00</published><updated>2011-02-18T01:12:02.342+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>UTF8-MAC and Encoding.list</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://www.artonx.org/diary/20110205.html#p02'&gt;OSXでのファイル名比較&lt;/a&gt;&lt;br/&gt;&lt;a href='http://www.artonx.org/diary/20110205.html#p01'&gt;OSXのファイル名について教えてもらったこと&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;を拝見しとっても興味深かったので私も試してみました。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% touch るびー
% mkdir が
% ls -F
test.rb       が/         るびー
% cat -n test.rb
  1 # coding: utf-8
  2
  3 Dir.entries('.').each do |d|
  4   next if d =~ /^\.|rb$/
  5   printf("name=%s, size=%d, encoding=%s\n", d, d.size, d.encoding)
  6   d = d.encode('utf-8', Encoding::UTF8_MAC)
  7   printf("name=%s, size=%d, encoding=%s\n", d, d.size, d.encoding)
  8 end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby192old -v test.rb
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
name=が, size=2, encoding=UTF-8
test.rb:6:in `block in &amp;lt;main&amp;gt;': uninitialized constant Encoding::UTF8_MAC (NameError)
  from test.rb:3:in `each'
  from test.rb:3:in `&amp;lt;main&amp;gt;'
%
% ruby192 -v test.rb
ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10.6.0]
name=が, size=2, encoding=UTF-8
name=が, size=1, encoding=UTF-8
name=るびー, size=4, encoding=UTF-8
name=るびー, size=3, encoding=UTF-8
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;1.9.2p136 で動きました。&lt;br/&gt;&lt;br/&gt;1.9.2p0 で動かないことも気になるので Encoding.list をみてみます。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby192old -ve "p Encoding.list"
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0]
[#&amp;lt;Encoding:ASCII-8BIT&amp;gt;, #&amp;lt;Encoding:UTF-8&amp;gt;, #&amp;lt;Encoding:US-ASCII&amp;gt;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;あれ？なんか少ないような気が...。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby192 -ve "p Encoding.list"
ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10.6.0]
[#&amp;lt;Encoding:ASCII-8BIT&amp;gt;, #&amp;lt;Encoding:UTF-8&amp;gt;, #&amp;lt;Encoding:US-ASCII&amp;gt;, #&amp;lt;Encoding:Big5&amp;gt;, #&amp;lt;Encoding:Big5-HKSCS&amp;gt;, #&amp;lt;Encoding:Big5-UAO&amp;gt;, #&amp;lt;Encoding:CP949&amp;gt;, 

...たくさんあるので以下省略
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;1.9.2p136 (2010-12-25 revision 30365) の Encoding.list は&lt;br/&gt;1.9.2p0 (2010-08-18 revision 29036)&lt;br/&gt;のそれとは全然違うようです...。&lt;br/&gt;&lt;br/&gt;Encoding.list からutf だけをgrep&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cat -n test.rb
  1 # coding: utf-8
  2
  3 a = Encoding.list
  4 p a.map{|x| x.to_s}.grep(/utf/i)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# なぜ map して to_s しているかというと...配列に対して grep かけるにはその配列の要素が String クラスでないとうまくいかない。&lt;br/&gt;# けれどEncoding.list が返した配列、を構成する要素のクラスは Encoding クラスなので String クラスに変える必要があるから。&lt;br/&gt;&lt;br/&gt;結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby192old test.rb
["UTF-8"]

% ruby192 test.rb
["UTF-8", "UTF-16BE", "UTF-16LE", "UTF-32BE", "UTF-32LE", "UTF-7", "UTF8-MAC", "UTF8-DoCoMo", "UTF8-KDDI", "UTF8-SoftBank"]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;ruby 1.9.2p136 (2010-12-25 revision 30365) にはいろんな種類の UTF があるけど、&lt;br/&gt;UTF8-MAC は ruby 1.9.2p0 (2010-08-18 revision 29036) にはない?! 。&lt;br/&gt;&lt;br/&gt;今度は encode の逆の指定。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 # coding: utf-8
  2
  3 str = "が"
  4 p str.size
  5 p str.encode('UTF8-MAC', 'utf-8').size
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby192 test.rb
1
2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;"が" をutf-8 から UTF8-MAC に変えてみるとsize 1から2に変化しました。&lt;br/&gt;&lt;br/&gt;ちょっと rurema で再確認。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% rurema String#encode
...
self を指定したエンコーディングに変換した文字列を作成して返します。引数
を2つ与えた場合、第二引数は変換元のエンコーディングを意味します。さもな
くば self のエンコーディングが使われます
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;最後に iTunes Music Folder の中を検索テスト。&lt;br/&gt;先ずは encode 変換しないでそのまま検索。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cat -n test.rb
  1 # coding: utf-8
  2 # いかにもそれらしきもの(濁音などを含む)を選んでおく
  3 ary = ["東京スカパラダイスオーケストラ", "Yael Naim", "Yael Naïm"]
  4 dir = '/path/to/itunes/music/'
  5
  6 a = Dir.entries(dir)
  7 a.each{|x|
  8   p x if ary.index(x)
 11 }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby192 test.rb
"Yael Naim"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;濁音を含む"東京スカパラダイスオーケストラ" と 特別な文字を含む "Yael Naïm" これら2つの folder は存在しているのにヒットしない。&lt;br/&gt;&lt;br/&gt;下記に書き換え。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  6 a = Dir.entries(dir)
  7 a.each{|x|
  8   # p x if ary.index(x)
  9   u = x.encode('utf-8', 'UTF8-MAC')
 10   p x if ary.index(u)
 11 }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby192 -v test.rb
ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10.6.0]
"Yael Naim"
"Yael Naïm"
"東京スカパラダイスオーケストラ"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;期待どおりにヒットしました!&lt;br/&gt;&lt;br/&gt;さらに ascii_only な文字を encode しなくてすむようにこんな風にしてみても&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  6 a = Dir.entries(dir)
  7 a.each{|x|
  8   (x.ascii_only?) ? u = x : u = x.encode('utf-8', 'UTF8-MAC')
  9   p x if ary.index(u)
 10 }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;同じ結果を得ることができましたー。&lt;br/&gt;&lt;br/&gt;[関連記事]&lt;br/&gt;&amp;lt;http://midorex.blogspot.com/2010/02/utf8-mac.html&amp;gt;&lt;br/&gt;&amp;lt;http://midorex.blogspot.com/2010/02/utf8-mac-2.html&amp;gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-8877852593244061071?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/8877852593244061071/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=8877852593244061071' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8877852593244061071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8877852593244061071'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/02/utf8-mac-and-encodinglist.html' title='UTF8-MAC and Encoding.list'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6222942740489451103</id><published>2011-02-16T20:07:00.001+09:00</published><updated>2011-02-19T10:49:55.672+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>vim noplugins</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;半年以上前だしメモを残さなかったので素晴らしく参考になったsiteが正確にはどこだったか分からなくなってしまった。&lt;br/&gt;&lt;br/&gt;確かなことは...&lt;br/&gt;kaoriya 様の日本語ヘルプドキュメントと&lt;br/&gt;github.com に公開されていた達人の方々の .vimrc と&lt;br/&gt;Google にて vim noplugins や vim shebang&lt;br/&gt;とか検索した結果のいくつかのサイト&lt;br/&gt;&lt;br/&gt;などを参考にさせていただきました。&lt;br/&gt;&lt;br/&gt;" --------------------&lt;br/&gt;&lt;br/&gt;/usr/bin/vim (OS X に最初から入ってるvim) を起動する際、自動的にロードされてしまう標準プラグインを "ロードしない" ようにした上で実現したいこと...大きくわけて2つ。&lt;br/&gt;&lt;br/&gt;mission 1 :)&lt;br/&gt;&lt;br/&gt;% vim aaa.rb で新しいファイルを作ると&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/ruby
# coding: utf-8
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この2行が予め記入され、入力するとインデントかかり、class とか def  とかそういった文字に色がつく。&lt;br/&gt;&lt;br/&gt;インデントかかるっていうのは例えば...&lt;/p&gt;&lt;pre&gt;&lt;code&gt;def a [return-key] if [return-key] end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とキーボードを打つと自動的に&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  4 def a
  5   if
  6   end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;になったり&lt;/p&gt;&lt;pre&gt;&lt;code&gt;begin [return-key] a [return-key] rescue
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とキーボードをたたくと自動的に&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  5 begin
  6   a
  7 rescue
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;こうなるっ。&lt;br/&gt;&lt;br/&gt;mission 2 :)&lt;br/&gt;&lt;br/&gt;% vim aaa.txt で開いたテキストファイルを編集する際&lt;br/&gt;# を入力すると以降の文字列（改行まで）は青色になり&lt;br/&gt;-- で始まる行はシアン色?に。&lt;br/&gt;http や https で始まる行もシアンに。&lt;br/&gt;行中にある &amp;lt;http://...&amp;gt; や &amp;lt;https://...&amp;gt; もシアンになるっ。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;% cat test.vimrc&lt;/p&gt;&lt;pre&gt;&lt;code&gt;set nocompatible
set number
set backspace=indent,eol,start

" -------------------- Status
set laststatus=2
set statusline=%n\:%y%F\ \|%{(&amp;amp;fenc!=''?&amp;amp;fenc:&amp;amp;enc).'\|'.&amp;amp;ff.'\|'}%m%r%=&amp;lt;%-10(%3l,%02c%03V%)&amp;gt;

" -------------------- HighLight
highlight StatusLine term=NONE cterm=NONE ctermfg=gray ctermbg=darkcyan
highlight IncSearch ctermfg=gray ctermbg=cyan
highlight Search ctermfg=yellow ctermbg=darkcyan

highlight LineNr ctermfg=lightcyan ctermbg=NONE
highlight Visual term=NONE cterm=NONE ctermfg=NONE ctermbg=gray
highlight ModeMsg ctermfg=lightcyan ctermbg=NONE

" -------------------- tab
set shiftwidth=2
set tabstop=2
set expandtab
set ts=2 sw=2 expandtab

" -------------------- Plugins
" :help noloadplugins
set noloadplugins

" :help :filetype-off, :filetype-overview
filetype off

" :help :filetype-plugin-off
filetype plugin off

" :help :filetype-indent-on
filetype indent on

" /usr/share/vim/vim72/syntax/syntax.vim
syntax enable
" syntax on

" debag
" set verbose=9
autocmd! filetypedetect
" autocmd! BufWrite

if has("autocmd")
  "echo 'Hello!01'
  augroup MyVim
      autocmd!
      autocmd BufRead,BufNewFile *.txt           setlocal filetype=txt
      autocmd BufRead,BufNewFile *.rb            setlocal filetype=ruby
      autocmd BufRead,BufNewFile *.vimrc         setlocal filetype=vim
      "autocmd BufRead,BufNewFile *.vim           setlocal filetype=vim
      "autocmd BufRead,BufNewFile *.py            setlocal filetype=python
      "autocmd BufRead,BufNewFile *.sh            setlocal filetype=sh
      "autocmd BufRead,BufNewFile *.html          setlocal filetype=html
      autocmd FileType txt  syn match Comment /\#.*/
  augroup content
    autocmd!
    autocmd BufNewFile *.rb
          \ 0put = '#!/usr/bin/ruby'    |
          \ 1put = '# coding: utf-8'   |
    autocmd FileType txt
          \ :highlight MyGroup ctermfg=darkcyan ctermbg=NONE  |
          \ :match MyGroup /^\--.*\|&amp;lt;http.*&amp;gt;\|^http.*/        |
"    autocmd BufNewFile *.py
"        \ 0put = '#!/usr/bin/python'       |
"        \ 1put = '#-*- coding: utf-8 -*-'  |
"        \ $put = '' |
"        \ $put = '' |
  augroup END
endif

" -------------------- Last
" http://github.com/kana/config/
set secure  " must be written at the last.  see :help 'secure'.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;テストファイルを指定して vim 起動&lt;/p&gt;&lt;pre&gt;&lt;code&gt;vim -i "NONE" -u test.vimrc aaa.rb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;vim のコマンド結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;:filetype
# =&amp;gt;
filetype detection:ON  plugin:OFF  indent:ON
&lt;/code&gt;&lt;/pre&gt;&lt;p/&gt;&lt;pre&gt;&lt;code&gt;:autocmd
# =&amp;gt;
--- Auto-Commands ---
MyVim  BufNewFile
    *.txt     setlocal filetype=txt
    *.rb      setlocal filetype=ruby
    *.vimrc   setlocal filetype=vim
content  BufNewFile
    *.rb      0put = '#!/usr/bin/ruby'      | 1put = '# coding\: utf-8'     |
MyVim  BufRead
    *.txt     setlocal filetype=txt
    *.rb      setlocal filetype=ruby
    *.vimrc   setlocal filetype=vim
filetypeindent  FileType
    *         call s:LoadIndent()
syntaxset  FileType
    *         exe "set syntax=" . expand("&amp;lt;amatch&amp;gt;")
MyVim  FileType
    txt       syn match Comment /\#.*/
content  FileType
    txt       :highlight MyGroup ctermfg=darkcyan ctermbg=NONE  | :match MyGroup /^\--.*\|&amp;lt;http.*&amp;gt;\|^http.*/        |
Syntax
    *         call s:SynSet()
    cpp       if (exists('b:load_doxygen_syntax') &amp;amp;&amp;amp; b:load_doxygen_syntax)^I|| (exists('g:load_doxygen_syntax') &amp;amp;&amp;amp; g:load_doxygen_syntax)   | runtime! syntax/doxygen
.vim | endif
    c         if (exists('b:load_doxygen_syntax') &amp;amp;&amp;amp; b:load_doxygen_syntax)^I|| (exists('g:load_doxygen_syntax') &amp;amp;&amp;amp; g:load_doxygen_syntax)   | runtime! syntax/doxygen
.vim | endif
    idl       if (exists('b:load_doxygen_syntax') &amp;amp;&amp;amp; b:load_doxygen_syntax)^I|| (exists('g:load_doxygen_syntax') &amp;amp;&amp;amp; g:load_doxygen_syntax)   | runtime! syntax/doxygen
.vim | endif
Press ENTER or type command to continue

&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;# 現在の vim バージョン(OS X 10.6.6)&lt;br/&gt;% vim --version&lt;br/&gt;VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Aug 10 2010 22:09:22)&lt;br/&gt;...&lt;br/&gt;&lt;br/&gt;[memo]&lt;br/&gt;python のインデントはこのままだとうまくいかない。&lt;br/&gt;&lt;br/&gt;[2011-02-19]&lt;br/&gt;'# coding\: utf-8'&lt;br/&gt;になってた。&lt;br/&gt;'# coding: utf-8'&lt;br/&gt;に修正&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6222942740489451103?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6222942740489451103/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6222942740489451103' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6222942740489451103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6222942740489451103'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2011/02/vim-noplugins.html' title='vim noplugins'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2011501367766001767</id><published>2010-10-27T12:08:00.001+09:00</published><updated>2010-10-27T12:08:08.899+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><title type='text'>doc-support-HT3200</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://support.apple.com/kb/HT3200?viewlocale=ja_JP&amp;amp;locale=ja_JP'&gt;Mac OS X v10.6 Snow Leopard 以降搭載の Macintosh コンピュータで「消去してからインストール」する方法&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;5, Mac OS X インストール DVD を選択し、その下の矢印をクリックして、インストール DVD からシステムを起動します。&lt;br/&gt;6, Mac OS X Leopard インストーラ画面が表示されたら、「続ける」をクリックします。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;ここのstep 5,6 の間、もしくは&lt;br/&gt;step 6から step 11(第 1 段階)の間のどこかでAirMac電源をオフにすべきステップがあるべきなのでは？ははん？&lt;br/&gt;と思った。&lt;br/&gt;# DVDから起動したマシン、そこにOSをインストールする場合。== ネットワークを介してターゲットマシンにインストールするんじゃない場合。&lt;br/&gt;&lt;br/&gt;なぜなら&lt;br/&gt;OS をインストールしている間ずっとAirMac電源が入っていて周囲をサーチし続ける必要はあるんだろうか？=&amp;gt; ないだろ&lt;br/&gt;と思うから。&lt;br/&gt;&lt;br/&gt;アップル公式ドキュメントにおいてこの件については全く触れられていない。&lt;br/&gt;おそらくそんなこと気にするなってことなんでしょう。&lt;br/&gt;でも少し気になる。&lt;br/&gt;私は今後も自ら手動でメニューバーのAirMacアイコンをクリックし電源をオフにしてからインストールすることだろう。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2011501367766001767?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2011501367766001767/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2011501367766001767' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2011501367766001767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2011501367766001767'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/10/doc-support-ht3200.html' title='doc-support-HT3200'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-8802963135648043107</id><published>2010-10-27T01:15:00.005+09:00</published><updated>2011-02-18T01:04:36.878+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='macruby'/><title type='text'>Install MacRuby</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href='http://www.macruby.org/'&gt;http://www.macruby.org/&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;
から MacRubyをダウンロードして遊んでみた&amp;#12290;&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% macruby -v
MacRuby 0.7.1 (ruby 1.9.2) [universal-darwin10.0, x86_64]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;サンプルをデスクトップにコピー&amp;#12290;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cp /Developer/Examples/Ruby/MacRuby/Scripts/hello_world.rb ~/Desktop/sample_hello_world.rb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このサンプルと&lt;br/&gt;&lt;br /&gt;
&lt;a href="http://macruby.labs.oreilly.com/ch01.html"&gt;http://macruby.labs.oreilly.com/ch01.html&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;
に掲載されてる hello_world.rb を見比べつつ クラスを作ってみた&amp;#12290;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;framework 'AppKit'

module Hello3
  module MyWindow
    def window(ary, title, obj)
      @w = NSWindow.alloc.initWithContentRect(ary,
        styleMask:NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask,
        backing:NSBackingStoreBuffered,
        defer:false)
      @w.level = 3
      @w.title = title
      @w.delegate = obj
      return @w
    end
  end
  class MyButton
    attr_reader :b
    def initialize(ary, title, obj)
      @b = NSButton.alloc.initWithFrame(ary)
      @b.title = title
      @b.bezelStyle = 4
      @b.target = obj
    end
  end
  class Myapp
    include MyWindow
    attr_reader :app
    def initialize
      @app = NSApplication.sharedApplication
      @app.delegate = self
    end
    def windowWillClose(notification)
      puts "Bye!"
      exit
    end
    def sayHello(sender)
      puts "Hello again, World!"
    end
    def sayBye(sender)
      puts "bye"
      exit
    end
    def setup
      # button
      b1 = MyButton.new([150, 30, 100, 50], "Hello World!", @app.delegate).b
      b1.action = 'sayHello:'
      b2 = MyButton.new([30, 30, 100, 50], "Stop", @app.delegate).b
      b2.action = 'sayBye:'
      # window
      w = window([200, 300, 300, 100], "HelloWorld.app", @app.delegate)
      w.contentView.addSubview(b1)
      w.contentView.addSubview(b2)
      # display
      w.display
      w.orderFrontRegardless
      return @app
    end
  end
  def self.run
    Myapp.new.setup.run
  end
end
Hello3.run
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;実行&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% macruby hello3.rb
&lt;/code&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vxZ9s-UXs4M/TMcAHHNUShI/AAAAAAAAADo/xMyj0Yz58Ww/s1600/00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="152" src="http://4.bp.blogspot.com/_vxZ9s-UXs4M/TMcAHHNUShI/AAAAAAAAADo/xMyj0Yz58Ww/s320/00.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Interface Builder.app 起動しなくてすむ&amp;#12290;すごい&amp;#65281;&amp;#12290;快適&amp;#12290;&lt;br/&gt;&lt;br /&gt;
[2010-10-28]&lt;br/&gt;&lt;br /&gt;
@b1, @b2, @w を b1, b2, w に修正&amp;#12290;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-8802963135648043107?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/8802963135648043107/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=8802963135648043107' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8802963135648043107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8802963135648043107'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/10/install-macruby.html' title='Install MacRuby'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vxZ9s-UXs4M/TMcAHHNUShI/AAAAAAAAADo/xMyj0Yz58Ww/s72-c/00.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4577151735831542290</id><published>2010-10-14T21:32:00.001+09:00</published><updated>2010-10-20T22:19:45.889+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>全体主義</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;『全体主義』 / エンツォ•トラヴェルソ / 平凡社新書 / 9784582855227&lt;br/&gt;の感想。&lt;br/&gt;&lt;br/&gt;P.22　&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;マックス•ヴェーバーが「合法的支配権」(legale Herrschaft)と定義したものの完全な否定に行きつく。言い換えれば＜犯罪国家＞の登場である。&lt;br/&gt;だが、全体主義は、文明のパラダイムとは正反対の退行的非合理主義を、歴史の舞台に立たせたのではない。&lt;br/&gt;それはむしろ、西洋近代のただなかを流れる＜反＝合理主義＞を展開し、その破壊力のすべてを悲劇的なかたちで露にしたのである。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;当時のドイツは法治国家だった。選挙だってあったし、人々は今の私たちと同じように迷信ではない「歴史」を知りえた。&lt;br/&gt;人権思想だってとうの昔に誕生していたのだし、地球がだいたい丸いことも人々は知ってた。はず。&lt;br/&gt;けれども、あれよあれよという間に恐ろしい事態が人々を支配してしまった。&lt;br/&gt;その坂を転げ落ちていくような悲惨な出来事に対し、ヴェーバーだけじゃない、カントやヘーゲルも何もかも、&lt;br/&gt;それまでに培われたはずの「合理的」な人類の叡智などなんの役にも立たなかった。&lt;br/&gt;そればかりか、むしろその「合理性」がアダになってしまった。&lt;br/&gt;&lt;br/&gt;では、合理性をも利用する全体主義の正体とは何なのか？&lt;br/&gt;&lt;br/&gt;P.101 からの引用&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;カール•ヤスパースは、全体主義を、共産主義やファシズムをはるかに超えた現象として、「どの体制よりも普遍的であり、人類の未来にのしかかる＜文明＞の脅威である」と述べている。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;確かに全体主義は時代を超越してる。ようだ。&lt;br/&gt;ある時代では奴隷制、またある時代では魔女狩りや宗教裁判、強制労働、大虐殺。&lt;br/&gt;ある国ではいまだに！言論統制、一党独裁。&lt;br/&gt;各地での焚書も全体主義的現象と呼べるし、日本でも長く続いた江戸時代を全体主義の時代として捉え直すことは十分可能だろう。&lt;br/&gt;徳川による独占支配、五人組による相互監視制、士農工商エタ非人のピラミッド構造、踏み絵、人質を強要し謀反を抑圧する参勤交代...etc.&lt;br/&gt;『一九八四年』は江戸時代の日本において既に実現してたってわけだ。&lt;br/&gt;&lt;br/&gt;P.106&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;ベネデット•クローチェは、&lt;br/&gt;...(略)&lt;br/&gt;その結論に彼はこう書いた。...&lt;br/&gt;決して忘れてはいけない。ギリシャ＝ローマにはじまる文明の凋落という以上に、さらに途方もなく重大な何かが起ることを。...&lt;br/&gt;人類は、自然に対して、人間本性に対して巨大な罪を背負い、あらゆる腐敗の保管者たる思想自体を堕落させて死滅するだろう。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;クローチェはいつか死滅するだろうと警告している。&lt;br/&gt;&lt;br/&gt;ニ千年以上にわたって、世界各地で発生した(している)あらゆる人権侵害や大規模犯罪は、&lt;br/&gt;封建制だとか植民地主義だとか帝国主義だとか資本主義だとか共産主義だとか&lt;br/&gt;まるでてんでばらばらな呼び方に隠蔽され教えられる羽目に陥っているわけだけども、&lt;br/&gt;結局、みえてくるものは、&lt;br/&gt;その社会が全体主義的かどうか「だけ」なのかもしれない。極論だけど。&lt;br/&gt;# どの程度、その社会が全体主義的か？それは測定できるようなものなのか？は、さておき&lt;br/&gt;# 全体主義的現象に共通する特徴についてはこの本でも言及されてる。&lt;br/&gt;思うに...&lt;br/&gt;全体主義的現象の発生を許してしまう「共通必要条件」のようなものはあるのでしょうか。&lt;br/&gt;また、時として、概念による制度的枠組みなど、特定の恣意が影響力を持ちうるような現実においては、無意味の烙印を押されるに等しくむなしく儚い。&lt;br/&gt;といえなくもないのであれば、制度って何？&lt;br/&gt;&lt;br/&gt;ところで、今、「正義について」考えたりディスカッションすることは有意義なのだろうけど、&lt;br/&gt;合理性を善とする西洋哲学が全体主義に対して非力であったと同時に、結果的には理論加担させられた歴史を無視したまま、&lt;br/&gt;あたかも絶対的善や絶対的正義が、独立して是とされるような倫理観が助長されるようであれば、あれば、&lt;br/&gt;仮にだよ！あくまでも仮定として仮にそうであった場合(春樹的method)...&lt;br/&gt;それは、いかに合理性が全体主義に利用できるかのロジックを図らずも暴露し、再正当化してしまう滑稽な議論にもなりかねないかも。&lt;br/&gt;などと思った。&lt;br/&gt;&lt;br/&gt;#『 これからの「正義」の話をしよう』ISBN 9784152091314&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4577151735831542290?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4577151735831542290/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4577151735831542290' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4577151735831542290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4577151735831542290'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/10/blog-post.html' title='全体主義'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-1766958790668722341</id><published>2010-08-07T13:32:00.000+09:00</published><updated>2010-08-07T15:01:31.294+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>instance_variable</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;http://midorex.blogspot.com/2010/07/attraccessor.html&lt;br/&gt;http://midorex.blogspot.com/2010/08/singletonclass.html&lt;br/&gt;http://midorex.blogspot.com/2010/08/selfclass.html&lt;br/&gt;これらに関連して...&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test
  @x = 'x'
  class &amp;lt;&amp;lt; self
    attr_accessor :x
  end
end

class Test1
  def initialize
    self.class.singleton_class.send(:attr_accessor, :x)
    self.class.x = 'x1'
  end
end

t, t1 = Test.new, Test1.new
puts "t = Test.new, t1 = Test1.new"
puts "t.class.x=&amp;gt; #{t.class.x}"
puts "t1.class.x=&amp;gt; #{t1.class.x}"
puts "t.class.instance_variables=&amp;gt; #{t.class.instance_variables}"
puts "t1.class.instance_variables=&amp;gt; #{t1.class.instance_variables}"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;t = Test.new, t1 = Test1.new
t.class.x=&amp;gt; x
t1.class.x=&amp;gt; x1
t.class.instance_variables=&amp;gt; [:@x]
t1.class.instance_variables=&amp;gt; [:@x]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以上をふまえて&lt;br/&gt;&lt;br/&gt;class Test オブジェクトと&lt;br/&gt;それを new した オブジェクトと&lt;br/&gt;class Test の特異クラスになったオブジェクト&lt;br/&gt;この３つのオブジェクトにそれぞれ @x と attr_accessor, :x を定義してみる練習&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  4 class Test
  5   @x = 'x'
  6   class &amp;lt;&amp;lt; self
  7     @x = 'singleton-xxx'
  8     attr_accessor :x
  9     self.class.send(:attr_reader, :x)
 10   end
 11   def initialize
 12     @x = 'ini-xyz'
 13   end
 14   attr_accessor :x
 15 end
 16
 17 t  = Test.new
 18 puts "t = Test.new"
 19 puts "t.x=&amp;gt; #{t.x}"
 20 puts "t.instance_variables=&amp;gt; #{t.instance_variables}"
 21 puts "--\n"
 22 puts "t.class.x=&amp;gt; #{t.class.x}"
 23 puts "t.class.instance_variables=&amp;gt; #{t.class.instance_variables}"
 24 puts "--\n"
 25 s = t.class.singleton_class
 26 puts "s = t.class.singleton_class"
 27 puts "s=&amp;gt; #{s}"
 28 puts "s.x =&amp;gt;#{s.x}"
 29 puts "s.instance_variables=&amp;gt; #{s.instance_variables}"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;t = Test.new
t.x=&amp;gt; ini-xyz
t.instance_variables=&amp;gt; [:@x]
--
t.class.x=&amp;gt; x
t.class.instance_variables=&amp;gt; [:@x]
--
s = t.class.singleton_class
s=&amp;gt; #&amp;lt;Class:Test&amp;gt;
s.x =&amp;gt;singleton-xxx
s.instance_variables=&amp;gt; [:@x]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;line5 の @x を外から読めるようにしているのは&lt;br/&gt;line8     attr_accessor :x&lt;br/&gt;&lt;br/&gt;同様に&lt;br/&gt;line7 の@x は&lt;br/&gt;line9  の self.class.send(:attr_reader, :x)&lt;br/&gt;&lt;br/&gt;line12 の@x は&lt;br/&gt;line14   attr_reader :x&lt;br/&gt;&lt;br/&gt;おもしろいことに&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  4 class Test
  5   @x = 'x'
  6   class &amp;lt;&amp;lt; self
  7     @x = 'singleton-xxx'
  8     attr_accessor :x
  9     # self.class.send(:attr_reader, :x)
 10   end
 11   def initialize
 12     @x = 'ini-xyz'
 13     self.class.class.send(:attr_accessor, :x)
 14   end
 15   attr_accessor :x
 16 end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;line9 のかわりに line13 にしても同じ結果を得ることができた。&lt;br/&gt;&lt;br/&gt;+++ memo +++&lt;br/&gt;&lt;br/&gt;あたりまえだけども&lt;br/&gt;class Test&lt;br/&gt;  attr_reader :x&lt;br/&gt;  def initialize&lt;br/&gt;    @x = 'ini-xyz'&lt;br/&gt;  end&lt;br/&gt;end&lt;br/&gt;t = Test.new&lt;br/&gt;t.x&lt;br/&gt;=&amp;gt;'ini-xyz'&lt;br/&gt;こうすると class Test のインスタンスが定義したインスタンス変数に代入された値を得られる。&lt;br/&gt;&lt;br/&gt;new した class Test のインスタンスではなくて、&lt;br/&gt;class Test そのものや、class Test の特異クラスにも&lt;br/&gt;それぞれインスタンス変数を定義できるしそれらのアクセサを定義できるということを&lt;br/&gt;『プログラミングRuby1.9 言語編』(ISBN: 978-4-274-068096) P.351 から学ぶことができた。&lt;br/&gt;&lt;br/&gt;# P.351 あたりをうろうろしたままぜんぜん先に進んでいない。それにしても暑い。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-1766958790668722341?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/1766958790668722341/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=1766958790668722341' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1766958790668722341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1766958790668722341'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/08/instancevariable.html' title='instance_variable'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-3736516444082131207</id><published>2010-08-07T07:44:00.000+09:00</published><updated>2010-08-07T08:59:45.755+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>self.class</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&amp;lt;http://midorex.blogspot.com/2010/08/singletonclass.html&amp;gt; 前回からの続き&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test
   def initialize(h)
     h.each{|k,v|
       self.class.send(:attr_accessor, k)
       self.send("#{k}=", v)
     }
  end
end

h={:cat=&amp;gt;'cat'}
t = Test.new(h)
t.cat = 'ddd'
p t
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これを実行すると&lt;br/&gt;#&amp;lt;Test:0x00000 @cat="ddd"&amp;gt;&lt;br/&gt;となる。でもでも :cat を attr_reader にしたかった場合はこのままだとうまくいかない。んで考えてみたこと。&lt;br/&gt;&lt;br/&gt;まずは通常の書き方&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test
  attr_reader :cat, :dog
  def initialize
    @cat = 'meow'
    @dog = 'bowwow'
  end
end

t = Test.new
p t.instance_variables
p t.class.instance_methods[0..2]
p t.cat
t.cat = "cat"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;[:@cat, :@dog]
[:cat, :dog, :nil?]
"meow"
./draft.rb:15:in `&amp;lt;main&amp;gt;': undefined method `cat=' for #&amp;lt;Test:0x00000 @cat="meow", @dog="bowwow"&amp;gt; (NoMethodError)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最後の行でcat に代入しようとしても attr_reader だから代入できないことを確認。&lt;br/&gt;&lt;br/&gt;この結果と同じ結果を導きだすには？&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test1
  def initialize(h)
    h.each{|k,v|
      self.class.send(:attr_reader, "#{k}")
      self.send("#{k}=", v)
    }
  end
end

h = {:cat=&amp;gt;'meow', :dog=&amp;gt;'bowwow'}
t = Test1.new(h)
p t.instance_variables
p t.class.instance_methods[0..2]
p t.cat
t.cat = "cat"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;... `block in initialize': undefined method `cat=' for #&amp;lt;Test1:0x00000&amp;gt; (NoMethodError)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;self.send("#{k}=", v)　は attr_accessor の時は使えるけど attr_reader の時は使えない。&lt;br/&gt;文字通り reader だから getter であって setter じゃないため instance 変数に"cat"を代入できないためにエラーがかえってきた。&lt;br/&gt;ならば&lt;br/&gt;self.send のかわりに普通に instance_variable_set を使ってみた。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test1
  def initialize(h)
    h.each{|k,v|
      instance_variable_set("@#{k}", v)
      self.class.send(:attr_reader, "#{k}")
    }
  end
end

h = {:cat=&amp;gt;'meow', :dog=&amp;gt;'bowwow'}
t = Test1.new(h)
p t.instance_variables
p t.class.instance_methods[0..2]
p t.cat
t.cat = "cat"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;[:@cat, :@dog]
[:cat, :dog, :nil?]
"meow"
./draft.rb:25:in `&amp;lt;main&amp;gt;': undefined method `cat=' for #&amp;lt;Test:0x00000 @cat="meow", @dog="bowwow"&amp;gt; (NoMethodError)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;うまくいった。&lt;br/&gt;instance_variable_set でインスタンス変数に値を代入しておいてその後に、getter を設定した。&lt;br/&gt;self.class.send(:attr_reader, "#{k}")&lt;br/&gt;を削除すると、[通常の書き方]から attr_reader を削除した場合と等しくなる。&lt;br/&gt;&lt;br/&gt;# --------------------&lt;br/&gt;&lt;br/&gt;次はインスタンス変数を定義しないし attr も必要ない場合。&lt;br/&gt;定義したいのはinstance_method def cat と def dog だけ。&lt;br/&gt;&lt;br/&gt;通常の書き方。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test
  def initialize
  end
  def cat
    "meow"
  end
  def dog
    "bowwow"
  end
end

t = Test.new
p t.instance_variables
p t.class.instance_methods[0..2]
p t.cat
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;[]
[:cat, :dog, :nil?]
"meow"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;上記と同じ結果を導くには？&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test1
  def initialize(h)
    h.each{|k,v|
      self.class.send(:define_method, k){v}
    }
  end
end

h = {:cat=&amp;gt;'meow', :dog=&amp;gt;'bowwow'}
t = Test1.new(h)
p t.instance_variables
p t.class.instance_methods[0..2]
p t.cat
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;[]
[:cat, :dog, :nil?]
"meow"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;まとめ&lt;br/&gt;1, getter setter をinitialize 内で使う&lt;br/&gt;self.class.send(:attr_accessor, k)&lt;br/&gt;self.class.send(:attr_reader, k)&lt;br/&gt;self.class.send(:attr_writer, k)&lt;br/&gt;&lt;br/&gt;2, @cat のようなインスタンス変数に値を代入する (k はシンボル)&lt;br/&gt;instance_variable_set("@#{k}", v)&lt;br/&gt;# setter が定義されていることが必要条件&lt;br/&gt;self.send("#{k}=", v)&lt;br/&gt;&lt;br/&gt;3, def cat のようなインスタンスメソッドを定義する&lt;br/&gt;self.class.send(:define_method, k){v}&lt;br/&gt;&lt;br/&gt;+++ 追記 +++&lt;br/&gt;&lt;br/&gt;attr_accessor　は通常は クラス内の def initialize の上とか下に書く。&lt;br/&gt;initialize の中には書かない。つか普通にエラーになる。&lt;br/&gt;ということは、class Test のinstance が保有するメソッドじゃなくて&lt;br/&gt;class Test が知っているメソッドだとわかるわけだけども&lt;br/&gt;p Test.methods&lt;br/&gt;とかやったって表示されない。じゃ一体どこにあるんだ？ということで下記を作ってみた。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  4 module My
  5   def self.search_method(x, key)
  6     ary = x.methods
  7     print "=== OBJECT:#{x} ===\n"
  8     ary.each{|m|
  9       next unless /methods/.match(m.to_s)
 10       next if m == :methods
 11       eval "a = x.send(m)
 12         if a.index(key)
 13           print \"[:#{key}] exist in #{m}\n\"
 14         else
 15           print \"# #{m}\n\"
 16         end"
 17     }
 18   end
 19 end
 20
 21 class Test
 22   def initialize
 23     My::search_method(self.class, :attr)
 24     # My::search_method(self, :nil?)
 25   end
 26 end
 27
 28 Test.new
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# 実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;=== OBJECT:Test ===
# instance_methods
# public_instance_methods
# protected_instance_methods
# private_instance_methods
# singleton_methods
# protected_methods
[:attr] exist in private_methods
# public_methods
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;クラスの「private_methods」に属していることがわかった。&lt;br/&gt;結局...&lt;br/&gt;self.class.send(:attr_accessor, k)&lt;br/&gt;self.send("#{k}=", v)&lt;br/&gt;&lt;br/&gt;こういう方法でインスタンス変数を定義するってことは、親の遺伝子を子供が外側から操作しているように思えてきてよくないような気もしてきた。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-3736516444082131207?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/3736516444082131207/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=3736516444082131207' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3736516444082131207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3736516444082131207'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/08/selfclass.html' title='self.class'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4560590122790882442</id><published>2010-08-01T11:19:00.000+09:00</published><updated>2010-08-01T13:36:36.394+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>singleton_class</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;昨日のその後&lt;br/&gt;&lt;br/&gt;% ruby192 -v&lt;br/&gt;ruby 1.9.2dev (2010-07-11 revision 28618) [x86_64-darwin10.4.0]&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;module My
  def self.detail(s)
    p s
    puts "ParentName: #{s.class.name}"
    puts "Object_id: #{s.object_id}"
    puts "Methods 1to5: #{s.methods[0..4]}"
    begin
      puts "Method_define? Hello: #{s.class.method_defined?(:hello)}"
      puts "Class.Ancestors: #{s.ancestors}"
      puts "Superclass: #{s.superclass}"
      puts "Singleton_class #{s.singleton_class}"
      puts "Singleton_class #{s.singleton_class.object_id}"
    rescue
    end
    puts "\n"
  end
end
class Test1
  @@top = self
  puts "# -- main of class Test1 --"
  My::detail(self)
  class &amp;lt;&amp;lt; self
    @@top_self = self
    puts "# -- class &amp;lt;&amp;lt; self of class Test1 --"
    My::detail(self)
  end
  def initialize
    puts "# -- def initialize of class Test1 --"
    My::detail(self)
    puts "="*10
    puts "# TEST: @@top.singleton_class.equal?(@@top_self)"
    p @@top.singleton_class.equal?(@@top_self)
    puts "#"*5
    puts "self.class:: #{own1 = self.class}"
    puts "self.class.singleton_class::  #{own2 = self.class.singleton_class}"
    puts "# TEST: @@top.equal?(self.class)"
    p @@top.equal?(own1)
    puts "# TEST: @@top_self.equal?(self.class.singleton_class)"
    p @@top_self.equal?(own2)
  end
  def hello
    return self
  end
end
t = Test1.new.hello
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# -- main of class Test1 --
Test1
ParentName: Class
Object_id: 2151885720
Methods 1to5: [:allocate, :new, :superclass, :freeze, :===]
Method_define? Hello: false
Class.Ancestors: [Test1, Object, Kernel, BasicObject]
Superclass: Object
Singleton_class #&amp;lt;Class:Test1&amp;gt;
Singleton_class 2151885700

# -- class &amp;lt;&amp;lt; self of class Test1 --
#&amp;lt;Class:Test1&amp;gt;
ParentName: Class
Object_id: 2151885700
Methods 1to5: [:nesting, :constants, :allocate, :new, :superclass]
Method_define? Hello: false
Class.Ancestors: [Class, Module, Object, Kernel, BasicObject]
Superclass: #&amp;lt;Class:Object&amp;gt;
Singleton_class #&amp;lt;Class:#&amp;lt;Class:Test1&amp;gt;&amp;gt;
Singleton_class 2151884980

# -- def initialize of class Test1 --
#&amp;lt;Test1:0x00000100864970&amp;gt;
ParentName: Test1
Object_id: 2151883960
Methods 1to5: [:hello, :nil?, :===, :=~, :!~]
Method_define? Hello: true

==========
# TEST: @@top.singleton_class.equal?(@@top_self)
true
#####
self.class:: Test1
self.class.singleton_class::  #&amp;lt;Class:Test1&amp;gt;
# TEST: @@top.equal?(self.class)
true
# TEST: @@top_self.equal?(self.class.singleton_class)
true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# TEST: @@top.singleton_class.equal?(@@top_self)&lt;br/&gt;は一体何をやっているのか？&lt;br/&gt;&lt;br/&gt;Test1　直下における self が .singleton_class メソッドを呼び出すと&lt;br/&gt;#&amp;lt;Class:Test1&amp;gt;&lt;br/&gt;が得られる。&lt;br/&gt;その #&amp;lt;Class:Test1&amp;gt;　は、class &amp;lt;&amp;lt; self　した self 自身と同等のオブジェクトだろうか？&lt;br/&gt;これを確かめたかった。&lt;br/&gt;&lt;br/&gt;結果は ture  だった&lt;br/&gt;実際&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;# -- main of class Test1 --&lt;br/&gt;...略&lt;br/&gt;&lt;br/&gt;Singleton_class #&amp;lt;Class:Test1&amp;gt;&lt;br/&gt;Singleton_class 2151885700&lt;br/&gt;&lt;br/&gt;# -- class &amp;lt;&amp;lt; self of class Test1 --&lt;br/&gt;#&amp;lt;Class:Test1&amp;gt;&lt;br/&gt;ParentName: Class&lt;br/&gt;Object_id: 2151885700&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;同じobject_id をさしている。&lt;br/&gt;&lt;br/&gt;一方&lt;br/&gt;initialize　の中から呼び出した&lt;br/&gt;self.class と&lt;br/&gt;self.class.singleton_class&lt;br/&gt;に関しても　同様に true がかえってきた。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;# TEST: @@top.equal?(self.class)&lt;br/&gt;true&lt;br/&gt;# TEST: @@top_self.equal?(self.class.singleton_class)&lt;br/&gt;true&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;# TEST: detail(self.class) in initialize　もこの(true)結果を裏付けた。&lt;br/&gt;&lt;br/&gt;own1 に代入された self.class はTest1 である。&lt;br/&gt;それは class Test1　直下の self と同等。その証拠に同じobject_id を指している。&lt;br/&gt;own2 に代入された self.class.singleton_class は、#&amp;lt;Class:Test1&amp;gt;である。&lt;br/&gt;それは class &amp;lt;&amp;lt; self 内の self と同等。同じobject_id を指している。&lt;br/&gt;&lt;br/&gt;あらためて...&lt;br/&gt;Test1.new して出来上がったオブジェクトは、class Test1 自身 のインスタンスだってことを思い知らされた。&lt;br/&gt;class Test1　直下のself と、Test1.new されインスタンスとして登場した self とはそれぞれ異なるオブジェクト。&lt;br/&gt;その証拠に異なる object_id を持つ。&lt;br/&gt;&lt;br/&gt;class Test1&lt;br/&gt;class &amp;lt;&amp;lt; self&lt;br/&gt;end&lt;br/&gt;end&lt;br/&gt;&lt;br/&gt;この時点で２つのオブジェクト(Test1  と　#&amp;lt;Class:Test1&amp;gt;)にアクセスできる準備ができており&lt;br/&gt;Test1.new することでインスタンスが生成されて３つめのオブジェクトができあがる、と。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4560590122790882442?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4560590122790882442/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4560590122790882442' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4560590122790882442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4560590122790882442'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/08/singletonclass.html' title='singleton_class'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5117924252769125891</id><published>2010-07-31T00:00:00.001+09:00</published><updated>2010-07-31T00:00:36.393+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='get-item-amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><title type='text'>attr_accessor</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;『プログラミングRuby1.9 言語編』(ISBN: 978-4-274-068096) を読みながら試してみたこと&lt;br/&gt;# P.351 にクラスレベルのアクセサを定義する方法と解説がありました。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;class Test&lt;br/&gt;  @var = 99&lt;br/&gt;  class &amp;lt;&amp;lt; self&lt;br/&gt;    attr_accessor :var&lt;br/&gt;  end&lt;br/&gt;end&lt;br/&gt;&lt;br/&gt;puts "Original value = #{Test.var}"&lt;br/&gt;Test.var = "cat"&lt;br/&gt;puts "New value = #{Test.var}"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;# 実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Original value = 99
New value = cat
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# 少し書き換えself を表示してみると&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test
  p self
  @var = 99
  class &amp;lt;&amp;lt; self
    p self
    attr_accessor :var
  end
end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# 実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Test
#&amp;lt;Class:Test&amp;gt;
Original value = 99
New value = cat
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# P.351 には&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;... 次のように特異クラス内で attr_accessor を呼び出す必要があります。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;# とあるのだからして&lt;br/&gt;# &amp;lt;Class:Test&amp;gt; が特異クラスなのだと理解していいのだろうか?&lt;br/&gt;#  #&amp;lt;Class:#&amp;lt;MyClass:xxxxx&amp;gt;&amp;gt; のような形式になっていないのが気になる...&lt;br/&gt;# という疑問は一旦おいといて&lt;br/&gt;&lt;br/&gt;# で、この class &amp;lt;&amp;lt; self を使わないかぎり attr は定義できないのだろうか？&lt;br/&gt;# class &amp;lt;&amp;lt; self と書くのとは異なる方法はないのかな？&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test1
  @var = 89
  self.class.attr_accessor :var
end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# =&amp;gt;
./test.rb:30:in `&amp;lt;class:Test1&amp;gt;': private method `attr_accessor' called for Class:Class (NoMethodError)
  from ./test.rb:28:in `&amp;lt;main&amp;gt;'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# エラーだ。&lt;br/&gt;# attr_accessor は &amp;lt;class:Test1&amp;gt; にとって private method だから外から呼べないよと言われてしまった。&lt;br/&gt;# そんなメソッドは知らない、とは言われてない、てことは？&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test2
  @var = 123
  self.class.send(:attr_accessor, :var)
end

puts "Original value = #{Test2.var}"
Test2.var = "dog"
puts "New value = #{Test2.var}"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# 実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Original value = 123
New value = dog
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# やったー&lt;br/&gt;# では、これをinitialize の中でも使えるかな?&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test3
  def initialize
    @var = "99-dayo"
    self.class.send(:attr_accessor, :var)
  end
end

t = Test3.new
puts "Original value = #{t.var}"
t.var = "apple"
puts "New value = #{t.var}"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# 実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Original value = 99-dayo
New value = apple
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# 使えた！ので ...&lt;br/&gt;&lt;br/&gt;# @varなど予め定義されたインスタンス変数が不要な場合で(というか用意したハッシュの値を既定値にしたい)&lt;br/&gt;# 尚かつインスタンス変数を定義する時になんら制限をもたせなくてよい条件下。&lt;br/&gt;# ハッシュをうけとった class Test4 が&lt;br/&gt;# 受け取ったハッシュをもとにインスタンス変数とアクセサを定義するには？&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class Test4
  def initialize(h)
    @now ||= Time.now
    h.each{|k,v|
      ks = k.downcase.to_sym
      self.class.send(:attr_accessor, ks)
      self.send("#{ks}=", v)
    }
  end
end

h = {"Now"=&amp;gt;"123","Cat"=&amp;gt;"meow", "Dog"=&amp;gt;"bowwow"}
t = Test4.new(h)
p t, t.cat, t.dog

puts "----\n"
print "Instance_variables: #{t.instance_variables}\n"
print "Singleton: #{t.singleton_methods} \n"
print "Singleton_class: #{t.singleton_class}\n"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# 実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#&amp;lt;Test4:0xxxxxx @now="123", @cat="meow", @dog="bowwow"&amp;gt;
"meow"
"bowwow"
----
Instance_variables: [:@now, :@cat, :@dog]
Singleton: []
Singleton_class: #&amp;lt;Class:#&amp;lt;Test4:0xxxxxx&amp;gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# あれーTest4 の中に singleton_class が存在しているのはなぜかしら&lt;br/&gt;# self.class してる時点で自動的に特異クラスができあがっているのだろうか。&lt;br/&gt;&lt;br/&gt;# 一瞬 object_id 同じなのか!?とぎょっとしたけど&lt;br/&gt;# print "Object_id: #{t.object_id}, #{t.singleton_class.object_id}\n"&lt;br/&gt;# を実行してみたら同じじゃなかった。&lt;br/&gt;&lt;br/&gt;+++ memo +++&lt;br/&gt;&lt;br/&gt;これ &amp;lt;http://midorex.blogspot.com/2010/05/selfsend2.html&amp;gt; を書いた頃...&lt;br/&gt;ハッシュを受け取ったクラスがインスタンス変数を定義する際、アクセサによる一定の制限があればいいと考えた。&lt;br/&gt;なぜなら Amazon から受け取る値の[全て]が必要ではないだろうと判断したから。&lt;br/&gt;&lt;br/&gt;でも、全ての値をinstanceにしてもいっかと考えれば&lt;br/&gt;アクセサによる制限は必要なくなるので上記のように書き換えてもいいのかもしれない..がよくわかっていない...。&lt;br/&gt;&lt;br/&gt;&amp;lt;http://github.com/midore/get_item_amzon&amp;gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5117924252769125891?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5117924252769125891/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5117924252769125891' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5117924252769125891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5117924252769125891'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/07/attraccessor.html' title='attr_accessor'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-1036833288204332683</id><published>2010-07-08T07:25:00.001+09:00</published><updated>2010-07-08T07:27:20.880+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>MacRuby0.6</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://www.rubyinside.com/could-ruby-be-apple%e2%80%99s-language-and-api-future-3483.html'&gt;Could Ruby be Apple’s Language and API Future?&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;MacRuby is going to become a first-class language at Apple.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;ということらしい？MacRuby インストールしてみようかな...&lt;br/&gt;&lt;br/&gt;+++ Links +++&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.rubyinside.com/macruby-0-5-released-2951.html'&gt;MacRuby 0.5 Released: A Significant, Stable Release&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.macruby.org/'&gt;MacRuby » Home&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.macruby.org/blog/2010/04/30/macruby06.html'&gt;MacRuby » MacRuby 0.6&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.macruby.org/blog/2010/01/31/macruby05.html'&gt;MacRuby » MacRuby 0.5&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://lists.macosforge.org/pipermail/macruby-devel/2010-April/004722.html'&gt;[MacRuby-devel] MacRuby 0.6 release notes&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.macruby.org/downloads.html'&gt;MacRuby » Download MacRuby&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-1036833288204332683?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/1036833288204332683/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=1036833288204332683' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1036833288204332683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1036833288204332683'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/07/macruby06.html' title='MacRuby0.6'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-7633680451489576066</id><published>2010-07-06T15:30:00.010+09:00</published><updated>2010-07-07T15:02:20.798+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mdiary'/><title type='text'>mdiaryについて</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;a href="http://github.com/midore/mdiary"&gt;mdiary&lt;/a&gt;&amp;nbsp;はメモ帳、日記帳、ToDo管理、Blogに投稿したファイルの管理、本の管理、思いついたことをどんどん書き込んでいくだけの雑記帳 ...etc.　いろいろな用途に利用できます。&lt;br /&gt;
&lt;br /&gt;
[特徴]&lt;br /&gt;
1, ファイルタイプ&lt;br /&gt;
mdiary が管理する全てのファイルはテキストファイルであることを前提としています。&lt;br /&gt;
&lt;br /&gt;
2, ファイル内の表記について&lt;br /&gt;
当初、Blogspot.com に投稿する記事を管理したかった為下記のような項目になっています。&lt;br /&gt;
&lt;br /&gt;
1 --date&lt;br /&gt;
2 2010/07/04 Sun PM 12:40:52&lt;br /&gt;
3 --control&lt;br /&gt;
4 yes&lt;br /&gt;
5 --category&lt;br /&gt;
6 diary&lt;br /&gt;
7 --title&lt;br /&gt;
8 NewTitle&lt;br /&gt;
9 --content&lt;br /&gt;
&lt;br /&gt;
3, 必要なもの&lt;br /&gt;
Mac OS X 10.6.x &lt;br /&gt;
Ruby 1.9.x&lt;br /&gt;
&lt;br /&gt;
4, その他&lt;br /&gt;
自分が作成した文書(テキストファイル)は、常に統一した文書フォーマットを維持し、尚かつ素早く検索閲覧できるようにするにはどうすべきか？mdiary はこういった自問自答に対する１つの答えだったりしています。&lt;br /&gt;
あと、Ruby で遊ぶための口実のようなものが欲しかったというのもあります。口実が目的でもあり Ruby で遊ぶのが目的でもあり、そのあたりは曖昧模糊としています。いわゆる趣味で作ったやつなのです。&lt;br /&gt;
[mdiayr の使い方]&lt;br /&gt;
# 設定方法などはREADME を読んでください。&lt;br /&gt;
0) 新しい entry の作成 &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -a 
&lt;/code&gt;&lt;/pre&gt;
を実行するとTerminal.app で新しいWindow が開き vim が起動します。&lt;br /&gt;
こんな感じです。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/_vxZ9s-UXs4M/TDQXDCyzRiI/AAAAAAAAADI/5w6BKwUby-8/s1600/001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://3.bp.blogspot.com/_vxZ9s-UXs4M/TDQXDCyzRiI/AAAAAAAAADI/5w6BKwUby-8/s400/001.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
# 設定ファイルを編集すると vim 以外の editor に変えることもできます。&lt;br /&gt;
# テキストエディット.app に変更することもできます。(参照:README)&lt;br /&gt;
&lt;br /&gt;
category と content を編集します。&lt;br /&gt;
category は,で区切ることができます。&lt;br /&gt;
content には test ... と記入。&lt;br /&gt;
編集し終えたら editor を終了し exit します。&lt;br /&gt;
&lt;br /&gt;
1) リスト表示&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -l
1 [-] [2010/07/03 Sat PM 13:51:10] [NewTitle] (diary,mdiary)
Select [i/e/r]:
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
entry が1つしかない場合はすぐにオプションを訊ねられます。&lt;br /&gt;
entry が複数ある場合は entry 番号を選んだ後にオプション選択となります。&lt;br /&gt;
何も選択しないでこのまま終了する場合はリターンキーか CTRL + C で終了します。&lt;br /&gt;
&lt;br /&gt;
i を選択すると　entry ファイルのパスや生成時刻、カテゴリーなどをみることができます。&lt;br /&gt;
e を選択すると　先ほどと同じように entry ファイルを開きます。&lt;br /&gt;
r を選択すると　選択された entry ファイルは ~/.m_diary/trash に移動し2度とリストに現れなくなります。&lt;br /&gt;
&lt;br /&gt;
2) 日時とタイトルを指定して新しい entry を作る場合&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -a 'お菓子ストック' -t '2010/07/30 18:00'
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
-a でタイトルを指定しています。&lt;br /&gt;
-a だけを指定し -t がなかった場合は自動的に現在の日付時刻になります。&lt;br /&gt;
-t は '2009/12/01 1:00:00' など過去の日付を指定することもできます。秒数もOKです。&lt;br /&gt;
&lt;br /&gt;
control と content を編集します。&lt;br /&gt;
お菓子ストックは重要なので control を 「yes」 から 「must」 にしてファイルを保存します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_vxZ9s-UXs4M/TDQXR_KdnoI/AAAAAAAAADM/32PBLsRvsxY/s1600/002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://2.bp.blogspot.com/_vxZ9s-UXs4M/TDQXR_KdnoI/AAAAAAAAADM/32PBLsRvsxY/s400/002.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
保存したらexit します。&lt;br /&gt;
&lt;br /&gt;
リストをみます。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -l
1 [+] [2010/07/30 Fri PM 18:00:00] [お菓子ストック] (diary)
2 [-] [2010/07/03 Sat PM 13:51:10] [NewTitle] (diary,mdiary)
Select NO:
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
controlを yes 「以外」にすると [-] だったところが [+] になります。&lt;br /&gt;
&lt;br /&gt;
3) [+] マークがついた entry の表示&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -s +
1 [+] [2010/07/30 Fri PM 18:00:00] [お菓子ストック] (diary)
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
-s をつけると tilte, category, control を検索し該当する entry を表示します。&lt;br /&gt;
-s '7/30'&lt;br /&gt;
でも同様の結果を得られます。&lt;br /&gt;
&lt;br /&gt;
お菓子も大事だけど水と缶詰も重要だったことに気づきました。&lt;br /&gt;
2つ目のentryを追加します。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -a 水と缶詰のストック -t '2010/07/30 18:00'
2
Same name file is exist.
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
先ほどと全く同じ時刻を指定しまった為エラーになりました。&lt;br /&gt;
時刻を少し変え 18:10 にすると entry を追加できます。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -a 水と缶詰のストック -t '2010/07/30 18:10'
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
水と缶詰も重要なので&lt;br /&gt;
editor でcontrol を 「yes」 から 「must」 に変えておきます。&lt;br /&gt;
&lt;br /&gt;
[+] の entry を検索します。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -s +
1 [+] [2010/07/30 Fri PM 18:10:00] [水と缶詰のストック] (diary)
2 [+] [2010/07/30 Fri PM 18:00:00] [お菓子ストック] (diary)
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
4) 今日の日付を持つ entry の表示&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% ./test.rb -today
1 [-] [2010/07/03 Sat PM 13:51:10] [NewTitle] (diary,mdiary)
&lt;/code&gt;&lt;/pre&gt;
です。&lt;br /&gt;
&lt;br /&gt;
5) 検索について&lt;br /&gt;
-s をつけると category, title, control, date 内を検索します。&lt;br /&gt;
-st をつけると content 内を検索します。&lt;br /&gt;
-today は今日の日付のentry を検索します。&lt;br /&gt;
&lt;br /&gt;
6) 予定の entry の追加&lt;br /&gt;
来月になったら思い出すべき事柄があったとします。&lt;br /&gt;
未来の日時を指定して entry を追加します。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -a 'Watch TV' -t '2010/08/19 23:00'
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
editor で編集します。&lt;br /&gt;
プラスマークを検索した時に表示させたいので control を 「yes」 から 「enjoy」 にしておきます。&lt;br /&gt;
category を TV,music にします。&lt;br /&gt;
content に .... 要注意! と記入しファイルを保存し editor を終了します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/_vxZ9s-UXs4M/TDQXbgygd7I/AAAAAAAAADQ/ow_MOoPrkuQ/s1600/003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://1.bp.blogspot.com/_vxZ9s-UXs4M/TDQXbgygd7I/AAAAAAAAADQ/ow_MOoPrkuQ/s400/003.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: auto;"&gt;
&lt;br /&gt;&lt;/div&gt;
リストで来月(現在:2010/07/03) のentry をみるためには -d 2010-08 をつけます。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -d 2010-08 -l
1 [+] [2010/08/19 Thu PM 23:00:00] [Watch TV] (TV,music)
Select [i/e/r]:
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
-d がない限り、今月の entry 「だけ」を表示します。&lt;br /&gt;
# ToDo : 今月の entry しかリストにあらわれないのはやっぱり不便かな...と考え中です。&lt;br /&gt;
(コンピュータの日付が8月以降になれば　
% diary -l　
と打つと 2010年08月の日付をもつentry があらわれます。)&lt;br /&gt;
&lt;br /&gt;
7) content の検索 &lt;br /&gt;
content の内容に'要注意'という単語が含まれているentry を表示します。&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -d 2010-08 -st '要注意'
1 [+] [2010/08/19 Thu PM 23:00:00] [Watch TV] (TV,music)
Select [i/e/r]:
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
検索する時も -d で検索する月を指定します。-d がなければ今月の entry 内だけを検索します。&lt;br /&gt;
# 私のmdiary を vim で検索してみたところ&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% diary -s vim
1 [-] [2010/07/02 Fri PM 22:57:36] [vim-practice-autocommand] (vim)
2 [-] [2010/07/02 Fri AM 10:00:00] [vim-practice-filetype] (vim)
3 [+] [2010/07/01 Thu PM 23:00:00] [safari.scpt] (vim, SnowLeopard)
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
めんどい時は最初から grep などを使ってください。# え" &lt;br /&gt;
&lt;br /&gt;
+++ memo +++&lt;br /&gt;
実際の放送予定&lt;br /&gt;
2010/08/19 Thu PM 23:30:00&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-7633680451489576066?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/7633680451489576066/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=7633680451489576066' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7633680451489576066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7633680451489576066'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/07/mdiary.html' title='mdiaryについて'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vxZ9s-UXs4M/TDQXDCyzRiI/AAAAAAAAADI/5w6BKwUby-8/s72-c/001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2507074029632124864</id><published>2010-07-01T23:00:00.002+09:00</published><updated>2010-07-08T07:23:30.582+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><title type='text'>safari.scpt</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;インターネットでなにかをみていると、これは!と思うことがあります。ふとみれば vim が立ち上がっている。今開いているファイルにこのURL をメモしておきたいと思ったらどうしたらいいんだろ...&lt;br/&gt;&lt;br/&gt;昔(OS 9 の頃か?)今みているブラウザのURL とタイトルをクリップボードにコピーするAppleScript をどなたかが公開していた思うのですが、それに近いことを vim 内でできないかな？って試みです。&lt;br/&gt;&lt;br/&gt;vim から osascript を呼び出せると最近知りましたので使ってみました。&lt;br/&gt;&lt;br/&gt;# home に戻ります。&lt;br/&gt;$ cd&lt;br/&gt;# テキストファイルを作ります。&lt;br/&gt;$ vim 01.txt&lt;br/&gt;# .applescript でも .txt でもどっちでもいいみたい。&lt;br/&gt;&lt;br/&gt;$ 01.txt&lt;/p&gt;&lt;pre&gt;&lt;code&gt;tell application "Safari"
  tell current tab of window 1
    set str to "-- 
" &amp;amp; name &amp;amp; "
" &amp;amp; URL
  end tell
  return str
end tell
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# コンパイルしてみます。# この時 Safari が起動します。(起動していなかった場合)&lt;br/&gt;$ osacompile -o ~/01.scpt 01.txt&lt;br/&gt;&lt;br/&gt;$ vim memo.txt&lt;br/&gt;# vim で memo などしています。と思いきやインターネットもみているとします。&lt;br/&gt;&lt;br/&gt;# !!と思ったら&lt;br/&gt;:r !osascript ~/01.scpt&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
--
Apple - Support - Discussions - Forum Home
http://discussions.apple.com/index.jspa
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# ↑こんな感じに title とulr が書き込まれます。&lt;br/&gt;# でも&lt;br/&gt;# Safari の window を開いない時に誤って :r! osascript ... したとすると&lt;br/&gt;... Can’t make name of «class cTab» of window 1 of application "Safari" ....&lt;br/&gt;# ↑このようになっちゃいます。これを修正しつつあらたまった風情にしてみます。&lt;br/&gt;&lt;br/&gt;$ cat 02.applescript&lt;/p&gt;&lt;pre&gt;&lt;code&gt;script get_title_url
  to main()
    set n to ASCII character (10)
    tell application "Safari"
      try
        tell current tab of window 1
          set str to "--" &amp;amp; n &amp;amp; name &amp;amp; n &amp;amp; URL &amp;amp; n &amp;amp; "&amp;lt;a href='" &amp;amp; URL &amp;amp; "'&amp;gt;" &amp;amp; name &amp;amp; "&amp;lt;/a&amp;gt;"
          if URL is "" then return
          return str
        end tell
      end try
    end tell
  end main
end script

on run
  tell get_title_url
    return main()
  end tell
end run
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;$ osacompile -o ~/safari.scpt 02.applescript&lt;br/&gt;# test&lt;br/&gt;:r !osascript ~/safari.scpt&lt;/p&gt;&lt;pre&gt;&lt;code&gt;
--
Mac OS X clipboard sharing - Vim Tips Wiki
http://vim.wikia.com/wiki/VimTip687
&amp;lt;a href='http://vim.wikia.com/wiki/VimTip687'&amp;gt;Mac OS X clipboard sharing - Vim Tips Wiki&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# うまくいきました。&lt;br/&gt;# -- INSERT -- で \safari　と打つとタイトルとURL とリンク形式文字列が埋め込まれるようにしてみる?&lt;br/&gt;# inoremap &amp;lt;Leader&amp;gt;safari  &amp;lt;ESC&amp;gt;:&amp;lt;C-u&amp;gt;read !osascript ~/safari.scpt&amp;lt;CR&amp;gt;kkkddjjA&lt;br/&gt;&lt;br/&gt;osascript から受け取る文字列の行頭には \n が混入されている為（\n--\n になる）受け取った後にvim側で kkkdd とかしてます。osascript 側からこれを制御できればいいけどどうしてもわりませんでした。&lt;br/&gt;&lt;br/&gt;+++ &lt;br/&gt;&lt;br/&gt;もっと他の方法(or 適切なのはこうだよ or coolなのあるよ or ふつうこうだよ or plug-in あるよ)などをご存知の方は教えてくださいませ。どのようなコメントも大歓迎です。&lt;br/&gt;&lt;br/&gt;[2010-07-08]&lt;br/&gt;fileencodings=utf-8 以外を設定しているとおかしなことになるかもしれません。 アマゾンの本のトップページをsafariで開き、上記の safari.scpt をvim 経由で動かすと下記のようになります。 こうならない場合は :set fileencodings? あたりをみてみてください。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# アマゾンの本トップページ
--
Amazon.co.jp: 本 (和書) 
http://www.amazon.co.jp/%E6%9C%AC-%E5%92%8C%E6%9B%B8/b/ref=sa_menu_jb0/377-9481435-0601213?ie=UTF8&amp;amp;node=465392
109 
&amp;lt;a href='http://www.amazon.co.jp/%E6%9C%AC-%E5%92%8C%E6%9B%B8/b/ref=sa_menu_jb0/377-9481435-0601213?ie=UTF8&amp;amp;node=465392'&amp;gt;Amazon.co.jp : 本 (和書)&amp;lt;/a&amp;gt;

# 日本語の本を一冊選んだ場合
--
Amazon.co.jp： 床下の小人たち (岩波少年文庫): メアリー ノートン, ダイアナ・スタンレー, Mary Norton, 林 容吉: 本
http://www.amazon.co.jp/%E5%BA%8A%E4%B8%8B%E3%81%AE%E5%B0%8F%E4%BA%BA%E3%81%9F%E3%81%A1-%E5%B2%A9%E6%B3%A2%E5%B0%91%E5%B9%B4%E6%96%87%E5%BA%AB-%E3%83%A1%E3%82%A2%E3%83%AA%E3%83%BC-%E3%83%8E%E3%83%BC%E3%83%88%E3%83%B3/dp/4001140624/ref=pd_ts_zgc_b_526266_1/377-9481435-0601213?_encoding=UTF8&amp;amp;s=books&amp;amp;pf_rd_m=AN1VRQENFRJN5&amp;amp;pf_rd_s=right-4&amp;amp;pf_rd_r=0EK1B90C9XBKZFDFK6AT&amp;amp;pf_rd_t=1401&amp;amp;pf_rd_p=95969149&amp;amp;pf_rd_i=3077031496
&amp;lt;a href='http://www.amazon.co.jp/%E5%BA%8A%E4%B8%8B%E3%81%AE%E5%B0%8F%E4%BA%BA%E3%81%9F%E3%81%A1-%E5%B2%A9%E6%B3%A2%E5%B0%91%E5%B9%B4%E6%96%87%E5%BA%AB-%E3%83%A1%E3%82%A2%E3%83%AA%E3%83%BC-%E3%83%8E%E3%83%BC%E3%83%88%E3%83%B3/dp/4001140624/ref=pd_ts_zgc_b_526266_1/377-9481435-0601213?_encoding=UTF8&amp;amp;s=books&amp;amp;pf_rd_m=AN1VRQENFRJN5&amp;amp;pf_rd_s=right-4&amp;amp;pf_rd_r=0EK1B90C9XBKZFDFK6AT&amp;amp;pf_rd_t=1401&amp;amp;pf_rd_p=95969149&amp;amp;pf_rd_i=3077031496'&amp;gt;Amazon.co.jp： 床下の小人たち (岩波少年文庫): メアリー ノートン, ダイアナ・スタンレー, Mary Norton, 林 容吉: 本&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2507074029632124864?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2507074029632124864/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2507074029632124864' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2507074029632124864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2507074029632124864'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/07/safariscpt.html' title='safari.scpt'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-8874780089993570650</id><published>2010-06-29T01:41:00.001+09:00</published><updated>2010-06-29T01:41:44.126+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RubyCocoa'/><title type='text'>RubyCocoa</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;先日&amp;lt;http://ashplanning.blogspot.com/2010/06/google.html&amp;gt;のコメントの中でちゃらんさんに&lt;br/&gt;&lt;a href='http://limechat.net/rubycocoa/tutorial/'&gt;RubyCocoa 入門&lt;/a&gt;を教えていただきました。&lt;br/&gt;こちらを経由し&lt;br/&gt;&lt;a href='http://limechat.net/rubycocoa/wiki/?Programming'&gt;Programming - RubyCocoa wiki&lt;/a&gt;&lt;br/&gt;ここを読みながら遊んでみました。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# サンプル通りに警告音を鳴らす。
% irb
&amp;gt;&amp;gt; require 'osx/cocoa'
=&amp;gt; true
&amp;gt;&amp;gt; names = Dir['/System/Library/Sounds/*.aiff'].grep(/([^\/]+)\.aiff/){ |i| $1 }
=&amp;gt; ["Basso", "Blow", "Bottle", "Frog", "Funk", "Glass", "Hero", "Morse", "Ping", "Pop", "Purr", "Sosumi", "Submarine", "Tink"]
&amp;gt;&amp;gt; OSX::NSSound.soundNamed(names[0]).play
=&amp;gt; true

# OSX::NSSound のpublic メソッドをみてみた。
&amp;gt;&amp;gt; OSX::NSSound.methods
=&amp;gt; ["objc_class_method", "_ns_enable_override?", "kvc_wrapper_writer", "objc_instance_method_type", 
... 略

# OSX::NSSound を管理している OSX モジュールのメソッドをみてみた。
# ものすごい量に驚いてしまった！
&amp;gt;&amp;gt; OSX::methods
=&amp;gt; ["CFRelease", "CGColorSpaceRelease", "CGRectIntersectsRect", "frozen?", "CFNumberGetTypeID", "CGAffineTransformConcat", "launch_data_dict_lookup", "CGPaletteCreateWithByteSamples", "CGPDFDocumentAllowsCopying", "CFLocaleCreateCanonicalLocaleIdentifierFromScriptManagerCodes", "to_a"
... 略

# サンプルにあるテキストクラスの生成
&amp;gt;&amp;gt; str = OSX::NSString.stringWithString 'hello'
=&amp;gt; #&amp;lt;NSCFString "hello"&amp;gt;

# 'hello'.methods と同じことをしたつもり
&amp;gt;&amp;gt; str.methods
=&amp;gt; ["upcase!", "to_f", "to_yaml", "lines", "sub", "methods", "send", "replace", "empty?", "squeeze", "crypt", "chr", "gsub!", 
... 略

# RubyのString と同じように扱えるようだ。
&amp;gt;&amp;gt; str.upcase
=&amp;gt; #&amp;lt;NSCFString "HELLO"&amp;gt;
&amp;gt;&amp;gt; str.reverse
=&amp;gt; #&amp;lt;NSCFString "olleh"&amp;gt;

# class String は OSX::NSCFString 
&amp;gt;&amp;gt; str.class
=&amp;gt; OSX::NSCFString

&amp;gt;&amp;gt; str.object_id
=&amp;gt; 216018122

# OSX::NSCFString を str2 に代入
# さっきの str は OSX::NSString.stringWithString だった。
&amp;gt;&amp;gt; str2 = OSX::NSString
=&amp;gt; OSX::NSString

# メソッドの表示
&amp;gt;&amp;gt; str2.methods
=&amp;gt; ["objc_class_method", "_ns_enable_override?", "kvc_wrapper_writer", "objc_instance_method_type", 
... 略

# send でstringWithStringを設定してみる
&amp;gt;&amp;gt; str2.send(:stringWithString, "hi")
=&amp;gt; #&amp;lt;NSCFString "hi"&amp;gt;
# ちょっと感動!

# OSX::NSCFString のクラスは?
&amp;gt;&amp;gt; str2.class
=&amp;gt; Class
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;あ? Class なんだ。&lt;br/&gt;&lt;br/&gt;% irb&lt;br/&gt;&amp;gt;&amp;gt; str = String&lt;br/&gt;=&amp;gt; String&lt;br/&gt;&amp;gt;&amp;gt; str.class&lt;br/&gt;=&amp;gt; Class&lt;br/&gt;&lt;br/&gt;これと同等てことかな。&lt;br/&gt;&lt;br/&gt;+++ memo +++&lt;br/&gt;% sw_vers&lt;br/&gt;ProductName:	Mac OS X&lt;br/&gt;ProductVersion:	10.6.4&lt;br/&gt;BuildVersion:	10F569&lt;br/&gt;&lt;br/&gt;% ruby -v&lt;br/&gt;ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-8874780089993570650?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/8874780089993570650/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=8874780089993570650' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8874780089993570650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8874780089993570650'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/rubycocoa.html' title='RubyCocoa'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-1530912937155046134</id><published>2010-06-27T00:14:00.000+09:00</published><updated>2010-06-27T00:14:08.837+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>Blogger Preview</title><content type='html'>&amp;nbsp;デザイン-&amp;gt;HTMLの編集 画面を表示し&lt;br /&gt;
何も編集しないで「プレビュー」をクリックすると&lt;br /&gt;
about:blank&lt;br /&gt;
になってしまった。まっしろけの画面。はっこれは！？　なぜだろう。&lt;br /&gt;
&lt;br /&gt;
Safari の設定を変えて（ポップアップ開く、サイト固有のハックを無効にしない、Runawy JavaScript タイマーを無効にしない、クッキーを常に受け入れる）みたが、やはり about:blank になった。&lt;br /&gt;
&lt;br /&gt;
編集して保存はできたのでよかった。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-1530912937155046134?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/1530912937155046134/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=1530912937155046134' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1530912937155046134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1530912937155046134'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/blogger-preview.html' title='Blogger Preview'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2336851622361590188</id><published>2010-06-23T17:01:00.001+09:00</published><updated>2010-06-23T17:01:03.230+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><category scheme='http://www.blogger.com/atom/ns#' term='launchd'/><title type='text'>launchd.db</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;一般ユーザが&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% launchctl unload -w /System/Library/LaunchAgents/com.apple.midiserver.plist
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行したとするとその記録はどこにあるんだろうか？&lt;br/&gt;&lt;br/&gt;/private/var/db/launchd.db/com.apple.launchd.peruser.XXX/overrides.plist&lt;br/&gt;だった。(XXX は userid)&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cat /private/var/db/launchd.db/com.apple.launchd.peruser.XXX/overrides.plist
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;一般ユーザの launchctl list の中には&lt;br/&gt;% launchctl unload してもなぜかエラーがかえってきてしまって unload させることができないような agent がたまにある。&lt;br/&gt;そんな場合 overrides.plist に書きこむと確実に unload させることができる。&lt;br/&gt;# 再度ログインしなおすことが必要&lt;br/&gt;&lt;br/&gt;+++ &lt;br/&gt;&lt;br/&gt;as general user&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% launchctl list | grep UI

# unload ScreenReaderUI agent
% launchctl unload -w /System/Library/LaunchAgents/com.apple.ScreenReaderUIServer.plist
# =&amp;gt; returned error message

# user's id 
% id
uid=XXX(foo) ...

# change directory
% cd /private/var/db/launchd.db/com.apple.launchd.peruser.XXX

# files
% ls
overrides.plist

# look
% cat overrides.plist

# add element
% vi overrides.plit

# logout and login as general user.
% launchctl list | grep UI
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2336851622361590188?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2336851622361590188/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2336851622361590188' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2336851622361590188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2336851622361590188'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/launchddb.html' title='launchd.db'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-554037466241571708</id><published>2010-06-23T16:35:00.001+09:00</published><updated>2010-06-23T16:35:08.207+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi'/><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><title type='text'>vi -i</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;OS X 10.6.4 で&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ su admin-user
$ vi foo.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;として保存終了しようとすると&lt;/p&gt;&lt;pre&gt;&lt;code&gt;E138: Can't write viminfo file /Users/foo/.viminfo!
Press ENTER or type command to continue
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と言われるようになってしまった。いつからこうなったのかはよくわからない。&lt;br/&gt;&lt;br/&gt;$ vi -i "NONE" foo.txt&lt;br/&gt;-i オプションをつけて起動するとすんなり終了できた。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-554037466241571708?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/554037466241571708/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=554037466241571708' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/554037466241571708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/554037466241571708'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/vi-i.html' title='vi -i'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4911632229707251119</id><published>2010-06-23T16:32:00.001+09:00</published><updated>2010-06-23T16:32:39.276+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>GoogleCL post file</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;GoogleCL から&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ google blogger post --draft --title "test-01" post.txt 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で post する場合&lt;br/&gt;&lt;br/&gt;Blogger にログインして&lt;br/&gt;設定-&amp;gt;フォーマット-&amp;gt;改行の変換を[はい]にしておく必要がある。&lt;br/&gt;&lt;br/&gt;こうしておかないと改行のない本文になってしまうようだ。&lt;br/&gt;&lt;br/&gt;また --title オプションをつけないでファイルの1行目をタイトルにさせた場合、&lt;br/&gt;実際1行目がタイトルになるんだけど本文にも1行目が残ってしまう...ようだ。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4911632229707251119?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4911632229707251119/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4911632229707251119' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4911632229707251119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4911632229707251119'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/googlecl-post-file.html' title='GoogleCL post file'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6626576460232557242</id><published>2010-06-21T19:13:00.004+09:00</published><updated>2010-06-21T19:47:51.991+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>googleCL</title><content type='html'>&lt;a href='http://ashplanning.blogspot.com/2010/06/google.html'&gt;Google のコマンドラインツールを使ってみる&lt;/a&gt; をよみまして GoogleCL を試してみました。  &lt;br /&gt;
&lt;br /&gt;
(~/home 以下にインストールしたので)&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
% export PATH=$PATH:/Users/foo/path/to/bin  
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
投稿してみました。 &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;% google blogger post --title "try-googleCL-1" "command line posting." --tags="google,blogger"
&lt;/code&gt;&lt;/pre&gt;成功しました。  &lt;br /&gt;
&lt;br /&gt;
削除してみました。 &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
% google blogger delete --title "try-googleCL-1"
Are you SURE you want to delete post "try-googleCL-1"? (y/N): y
&lt;/code&gt;&lt;/pre&gt;ほんとに削除していいのですか？と訊ねられて y を入力すると投稿は削除されました。  &lt;br /&gt;
&lt;br /&gt;
下書きで投稿するには、--draft  をつければいいらしい &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
% google blogger post --draft --title "test-try-googleCL" "command line posting." --tags="test,blogger"
&lt;/code&gt;&lt;/pre&gt;ファイルを指定してみる &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
% google blogger post post.txt
&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6626576460232557242?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6626576460232557242/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6626576460232557242' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6626576460232557242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6626576460232557242'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/googlecl.html' title='googleCL'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-3188741116018455333</id><published>2010-06-16T19:00:00.000+09:00</published><updated>2010-06-18T22:32:57.860+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>refe.rb を読む</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://midorex.blogspot.com/2010/06/install-rurema.html'&gt;これの&lt;/a&gt;続き。&lt;br/&gt;&lt;br/&gt;たとえば&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ rurema String 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とすると&lt;br/&gt;&lt;br/&gt;bitclust の&lt;/p&gt;&lt;pre&gt;&lt;code&gt;bitclust/bin/refe.rb String -d db_path
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行させているってことがわかったので↓&lt;br/&gt;rurema/myrurema/bin/rurema&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 92     sh "#{bitclust_path/'bin/refe.rb'}" +
 93           " #{query} -d #{db_path(ver)}", :silent =&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;それでふと refe.rb は "String" などの文字列うけとった後どうしているのだろう？と思っておいかけてみた。&lt;br/&gt;(デバッガーみたいなものを使い倒せる人じゃないので　p self;exit を付け足すといった原始的な方法）&lt;br/&gt;&lt;br/&gt;bitclust/bin/refe.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;def _main
  refe = BitClust::Searcher.new
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;BitClust::Searcher　をnew して、class Searcher の method parse に "String" という引数を渡しているらしきことがわかったので&lt;br/&gt;class Searcher を探す...&lt;br/&gt;&lt;br/&gt;% grep Searcher lib/bitclust &lt;br/&gt;class Searcher は searcher.rb　ファイルに納められていることがわかった。&lt;br/&gt;&lt;br/&gt;bitclust/lib/bitclust/searcher.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 20 module BitClust
 21 
 22   class Searcher
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;public method parse は80行あたりにあった。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 81     def parse(argv)
 82       @parser.parse! argv
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;引数としてうけとった argv の中身は&lt;br/&gt;["String", "-d", "/path/to/data/db/1.9.2"]&lt;br/&gt;配列になっていて "/path/to/data/db/1.9.2"　は、myrurema でいうところの db_path がわたされていた。&lt;br/&gt;&lt;br/&gt;そして条件分岐した後に&lt;br/&gt;refe_mode_check argv&lt;br/&gt;を実行していた。この時 refe_mode_check に渡している argv には ["String"] がおさめられていた。&lt;br/&gt;&lt;br/&gt;refe_mode_check をみてみると、(line 118あたり)&lt;br/&gt;@target_type によって条件分岐していて、@target_type　が :class だった場合とそうでない場合の処理があった。&lt;br/&gt;&lt;br/&gt;でも&lt;br/&gt;% rurema String を実行した場合 @target_type は nil になるので case 中の条件のどれにもあてはまらない。&lt;br/&gt;case がおわった後の箇所から実行されることになる。&lt;br/&gt;（line 135 あたり）&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;       @view = TerminalView.new(compiler,
...略
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;class TerminalView を new して @view にそれを代入していることがわかった。&lt;br/&gt;それでこのあとの続きはどこにあるのだろうか？&lt;br/&gt;@view には class TerminalView が代入されているだけで、ほかにメソッドが与えられていない。&lt;br/&gt;&lt;br/&gt;これまで辿ってきた道を引き返していくほかなさそうだ... 。&lt;br/&gt;最初までもどってみたら続きがあった。&lt;br/&gt;&lt;br/&gt;bitclust/bin/refe.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;def _main
  refe = BitClust::Searcher.new
  refe.parse ARGV
  refe.exec nil, ARGV
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;要は&lt;br/&gt;1, _main は ローカル変数 refe に class Searcher を代入する。&lt;br/&gt;2, class Searcher のパブリックメソッドである parse　を実行し@view にTerminalView.new を代入する。&lt;br/&gt;3, class Searcher のパブリックメソッドである exec を実行。&lt;br/&gt;&lt;br/&gt;ということのようだ。&lt;br/&gt;&lt;br/&gt;では早速続きにあたる3番目の箇所 class Searcher　の method exec をみてみよう。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 90     def exec(db, argv)
 91       if @listen_url
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;@listen_url 変数に何か値がはいっていたら　spawn_server を、そうでなければ search_pattern を実行する、と。&lt;br/&gt;% rurema String を実行した時 @listen_url は nil なので&lt;br/&gt;line 94 の search_pattern &lt;br/&gt;が実行される。&lt;br/&gt;&lt;br/&gt;def search_pattern みてみよう。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;200     def search_pattern(db, argv)
201       db ||= new_database()
202       case @target_type || db
203       when :class
...略
214       else
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;引数として "String" を渡した時は　@target_type　は nil なので　line 214 以降に移動する。移動すると　argv のサイズによっての条件分岐が始まる。サイズが 1 の場合は&lt;/p&gt;&lt;pre&gt;&lt;code&gt;219         when 1
220           find_class_or_method db, argv[0]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;find_class_or_method　を実行する...&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;262     def find_class_or_method(db, pattern)
263       case pattern
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;pattern の値によって処理を分けている。&lt;br/&gt;pattern には "String"　がおさまっている。&lt;br/&gt;db には#&amp;lt;BitClust::MethodDatabase&amp;gt;&lt;br/&gt;　&lt;br/&gt;"String" という文字列受け取った場合は when /\A[A-Z]/ に該当するのでそれに続く begin以降にジャンプする。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;270       when /\A[A-Z]/   # Method name or class name, but class name is better.
271         begin
272           find_class db, pattern
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;次に探すべきメソッドは find_class  。&lt;br/&gt;&lt;br/&gt;find_class&lt;/p&gt;&lt;pre&gt;&lt;code&gt;241     def find_class(db, c)
242       @view.show_class db.search_classes(c)
243     end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;をーここで @view と出会いました。やっと話がつながった感じがします。&lt;br/&gt;つまり&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;1, _main は ローカル変数 refe に class Searcher を代入する。&lt;br/&gt;2, class Searcher のパブリックメソッドである parse　を実行し@view にTerminalView.new を代入する。&lt;br/&gt;3, class Searcher のパブリックメソッドである exec を実行。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;この3番目の処理が &lt;del&gt;line 242&lt;/del&gt;line 90 にあたると。&lt;br/&gt;2番目の処理で「あらかじめ」Searcher のインスタンス変数である @view に class TerminalView  が代入されているからここ（line 242 ）で@view.show_class を使うことができるわけね、と。&lt;br/&gt;&lt;br/&gt;一応、確認してみると&lt;/p&gt;&lt;pre&gt;&lt;code&gt;def find_class(db, c)
  p @view.class, c ; exit
end
&lt;/code&gt;&lt;/pre&gt;&lt;p/&gt;&lt;pre&gt;&lt;code&gt;% rurema String
BitClust::TerminalView
"String"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ちゃんと TerminalView　が代入されている。&lt;br/&gt;&lt;br/&gt;ではでは&lt;br/&gt;class TerminalView　の methods show_class をみてみよう。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;324     def show_class(cs)
325       if cs.size == 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;def show_class は cs をうけとって そのサイズが１だった場合とそうじゃなかった場合とで処理を分岐させている。&lt;br/&gt;&lt;br/&gt;% rurema String&lt;br/&gt;の場合、cs は　[#&amp;lt;class String&amp;gt;]&lt;br/&gt;&lt;br/&gt;% rurema Hash　&lt;br/&gt;の場合、cs は　[#&amp;lt;class Hash&amp;gt;]&lt;br/&gt;と変化する。@line が false の場合で、csのサイズが１ならば describe_class を実行する。&lt;br/&gt;&lt;br/&gt;なので&lt;br/&gt;% rurema String&lt;br/&gt;した時は&lt;br/&gt;&lt;br/&gt;line. 329 describe_class cs.first&lt;br/&gt;を実行するのだとわかった。&lt;br/&gt;では def describe_class はどこだろう？ line 411 あたりにあった。&lt;br/&gt;&lt;br/&gt;describe_class&lt;/p&gt;&lt;pre&gt;&lt;code&gt;411     def describe_class(c)
...略
416       puts "#{c.type} #{c.name}#{c.superclass ? " &amp;lt; #{c.superclass.name}" : ''}"
417       p c.class.name; p c; exit
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;line. 417 を上のようにしてみると&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% rurema String
class String &amp;lt; Object
"BitClust::ClassEntry"
#&amp;lt;class String&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と返ってきたのでローカル変数c には ClassEntry が代入されていてそのクラスは type や name といったメソッドを持っているとわかった。&lt;br/&gt;つづいて&lt;/p&gt;&lt;pre&gt;&lt;code&gt;417       unless c.included.empty?
...略
423       unless c.source.strip.empty?
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とあって c (すなわち　BitClust::ClassEntry)のincluded が empty じゃなかったら空行を1行出力し&lt;br/&gt;c.included.each ...&lt;br/&gt;を実行し&lt;br/&gt;同様に、c.source.strip.empty?　がempty じゃなかったら空行を1行出力し&lt;br/&gt;@compiler.compile(c.source.strip)&lt;br/&gt;を実行する。&lt;br/&gt;ようだ。&lt;br/&gt;&lt;br/&gt;% rurema String &lt;br/&gt;を実行した場合は何行目の処理が実行されるのか？&lt;br/&gt;&lt;br/&gt;line 417 のunless c.included.empty?　にキャッチされるとわかった。従ってこの部分&lt;/p&gt;&lt;pre&gt;&lt;code&gt;419         c.included.each do |mod|
420           puts "include #{mod.name}"
421         end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行していることになる。&lt;br/&gt;&lt;br/&gt;変数c には class ClassEntry が代入されているので c.included  は、ClassEntryクラスの included メソッド。&lt;del&gt;included メソッドはブロックを受け取ることができるのだなぁ、と。&lt;/del&gt;&lt;br/&gt;&lt;br/&gt;では class ClassEntry　がどうなっているかをみてみよう...。 classentry.rb を開いてみると&lt;br/&gt;&lt;br/&gt;bitclust/lib/bitclust/classentry.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;class ClassEntry &amp;lt; Entry
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Entry クラスを継承していた。searcher.rb　が使っていた included はどこだろ？継承元の Entry の方なのかな？いや無い。てことは ClassEntry が自分でもっている？ないみたい。&lt;br/&gt;&lt;br/&gt;うむむ、どうやら何かにくるまれているようだ...。&lt;br/&gt;&lt;br/&gt;hash のキーとしてならあるんだけども...&lt;br/&gt;&lt;br/&gt;bitclust/lib/bitclust/classentry.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 77       property :included,   '[ClassEntry]'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;included のゆくえがわからなくなってしまった。&lt;br/&gt;&lt;br/&gt;こういう時は最初に initialize がどうなっているかをみてみよう。&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 16   class ClassEntry &amp;lt; Entry
 ... 略 
 36       init_properties
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;init_properties って何かな？classentry.rb ファイル中にその実態は無いようだ。&lt;br/&gt;継承元のクラスのファイルを開いてみると&lt;br/&gt;% vim entry.rb&lt;br/&gt;init_properties は module_eval によって定義されていた...。&lt;br/&gt;&lt;br/&gt;もう一度頭を整理して考えてみよう。呼び出した側は下記のようになっていて&lt;br/&gt;bitclust/lib/bitclust/searcher.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;419         c.included.each do |mod|
420           puts "include #{mod.name}"
421         end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;ClassEntryクラスのパブリックメソッドの中に included という名前のメソッドはない。&lt;br/&gt;classentry.rb ファイル中に included という名前で存在しているのはハッシュのキーのみ。&lt;br/&gt;&lt;br/&gt;最終的なところまで近づいてきた感じがしつつもこの先はちょっと難しそうだな。読み解けるかなぁ...&lt;br/&gt;今日はここまで。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-3188741116018455333?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/3188741116018455333/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=3188741116018455333' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3188741116018455333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3188741116018455333'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/referb.html' title='refe.rb を読む'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5779419919025599686</id><published>2010-06-08T16:00:00.000+09:00</published><updated>2010-06-08T16:16:10.960+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>install-rurema</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://route477.net/d/?date=20100605#p01'&gt;Rubyの新リファレンスマニュアルをコマンドラインから簡単に引くためのツールを書いた&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;うわっこれいいな。早速 install&lt;br/&gt;&lt;br/&gt;&lt;a href='http://github.com/yhara/myrurema'&gt;http://github.com/yhara/myrurema&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;README を読むと gem を使ってインストールできるとあったんですが、ちょっと gem 苦手な為 gem を使わないで動せないものかな？と、try してみました。 (OS X 10.6.3)&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ git clone git://github.com/yhara/myrurema  rurema
$ cd rurema/myrurema/bin
$ vim rurema
# shebang を自分の ruby 1.9.2 のパスに修正。#!/usr/bin/env ruby　#  changed
$ pwd
/path/to/rurema/myrurema/bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# とりあえず&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ ./rurema
Usage: rurema [options]
         --init                       initialize rurema
         --update                     update documents and database
...(略)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# README を読みながら&lt;br/&gt;# Init&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ ./rurema --init --ruremadir=/path/to/rurema/data
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# これを実行すると ~/home に.subversion ディレクトリができた。&lt;br/&gt;&lt;br/&gt;try&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ ./rurema Array#index
You don't have a database for ruby 1.9.2.
109 Make it now? [y/n]
...略
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;y としたけど ~/home/.rurema を作っていないのだからアップデートできない。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ ln -s /path/to/rurema/data ~/.rurema
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;シンボリックはってみた&lt;br/&gt;&lt;br/&gt;# Update&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ ./rurema --update --ruremadir=/path/to/rurema/data
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;# この時勢いよくファンが回りはじめてちょっと不安になった。$ top してみると ruby(OS X に標準インストールされてる方) 一時的に50% 台になったりしつつも基本的には10% 台で動いてた。ずっとみていたら急に90% 近くなってあ”と思ったとたんに終了してほっとした。&lt;br/&gt;&lt;br/&gt;# try &lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ pwd
$ /path/to/rurema/myrurema/bin
$ ./rurema Array#index
Array#index
--- index(val)           -&amp;gt; Integer | nil 
--- index {|item| ...}   -&amp;gt; Integer | nil 

指定された val と == で等しい最初の要素の位置を返します。
等しい要素がひとつもなかった時には nil を返します。
...（略）

&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;わい&lt;br/&gt;動かすことができたのでエイリアスにしちゃう。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ vim ~/.bashrc
# alias 'rurema'='/path/to/myrurema/bin/rurema'

$ source ~/.bashrc
$ rurema String#size
String#size
--- length -&amp;gt; Integer
--- size -&amp;gt; Integer

文字列の文字数を返します。バイト数を知りたいときは bytesize メソッドを使ってください。

@see [[m:String#bytesize]]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;コマンドラインからるりまをみることができました。うれしいな。便利だなー。&lt;br/&gt;&lt;br/&gt;+++ まとめ +++&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Download rurema 
$ git clone git://github.com/yhara/myrurema rurema
$ cd rurema/myrurema/bin

# shebang を自分がインストールした ruby 1.9.2 のパスに修正。#!/usr/bin/env ruby　#  changed
$ vim rurema

# 確認 &amp;amp; ヘルプ
$ ./rurema

# database directory
$ mkdir /path/to/rurema/data

# リンク作成
$ ln -s /path/to/rurema/data ~/.rurema

# init and update
$ ./rurema --init --rubyver=1.9.2 --ruremadir=/path/to/rurema/data
$ ./rurema --update --rubyver=1.9.2 --ruremadir=/path/to/rurema/data

# みてみる
$ ./rurema String#size

# alias
# $ vim ~/.bashrc 
# $ source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;参照&lt;br/&gt;&lt;a href='http://ja.wikipedia.org/wiki/Subversion'&gt;http://ja.wikipedia.org/wiki/Subversion&lt;/a&gt;&lt;br/&gt;SnowLeopard には標準でSubversion入っていた。知らなかった。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5779419919025599686?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5779419919025599686/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5779419919025599686' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5779419919025599686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5779419919025599686'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/install-rurema.html' title='install-rurema'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-1191692138247328639</id><published>2010-06-05T12:35:00.000+09:00</published><updated>2010-06-05T12:45:31.038+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='plutil'/><title type='text'>plutil</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;無駄な試みかもしれないけれども下記のヘルプをもう2度とみたくないために書いてみる...。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% plutil -h
unrecognized option: -h
plutil: [command_option] [other_options] file...
  (略)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;[ -lint: シンタックスエラーがないかどうかみてくれる! ]&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% plutil -lint /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist 
/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist: OK

% plutil -lint ~/.MacOSX/environment.plist 
/Users/foo/.MacOSX/environment.plist: OK
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;-s で silent mode。OK ならば黙っている。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% plutil -lint -s ~/.MacOSX/environment.plist
%
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;[ -convert: binary を text にしたり逆にbinary にしたり ]&lt;br/&gt;&lt;br/&gt;cat とかで読めない plist を読めるようにする為には convert する。&lt;br/&gt;convert したファイルをいきなり上書きするのがいやな時は -o オプションをつける。&lt;br/&gt;&lt;br/&gt;binary plist to text plist&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% plutil -convert xml1 ~/.MacOSX/environment.plist  -o ~/test-dot-environment.plist
% 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;失敗すると ... file does not exist or is not readable or is not a regular file　とかなんとか言われる。&lt;br/&gt;&lt;br/&gt;成功すると&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% more ~/test-dot-environment.plist
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;読めるようになる。&lt;br/&gt;&lt;br/&gt;今つくったファイルをbinary にするテスト&lt;br/&gt;text plist to binary plist&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% plutil -convert binary1 ~/test-dot-environment.plist -o ~/test-dot-bin-environment.plist

% more test-dot-bin-environment.plist 
"test-dot-bin-environment.plist" may be a binary file.  See it anyway? 

% defaults read ~/test-dot-bin-environment
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;-e オプションについてはわからず。&lt;br/&gt;&lt;br/&gt;+++ memo +++&lt;br/&gt;&lt;br/&gt;defaults コマンドを使うと設定内容を閲覧できる。&lt;br/&gt;こんなかんじで。&lt;br/&gt;% defaults read  /Library/Preferences/SystemConfiguration/com.apple.PowerManagement&lt;br/&gt;/Library 配下の plist ファイルを指定する時は必ずフルパスで指定する必要がある。&lt;br/&gt;&lt;br/&gt;で、おもむろに&lt;br/&gt;% defaults read com.apple.Finder&lt;br/&gt;などとうってみたりするとすんなり返事をかえしてくれる。&lt;br/&gt;（たとえ cd /Volumes していて ~/home にいなかったとしても）&lt;br/&gt;ログインユーザ所有の plist を指定した場合は admin 所有のplist 等とは異なり&lt;br/&gt;必ずしもフルパスを要求されない。&lt;br/&gt;&lt;br/&gt;以前は、こうじゃなかったような気もするんだけど&lt;br/&gt;（つまりユーザplist もフルパスを毎度毎度要求されていたような記憶があるんだけども）&lt;br/&gt;おもいっきり記憶違いかもしれない。とりあえず OS X 10.6.3  では今このようになってる。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-1191692138247328639?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/1191692138247328639/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=1191692138247328639' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1191692138247328639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1191692138247328639'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/plutil.html' title='plutil'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4814561450914260787</id><published>2010-06-02T17:48:00.000+09:00</published><updated>2010-06-02T19:44:16.764+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>install-ruby-1.9.2-preview3</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;さっそく&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% autoconf
% ./configure --prefix=/Volumes/foo/ruby192 --program-suffix=192 --with-x=no
% make
% make test
% make install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;% make test の時&lt;/p&gt;&lt;pre&gt;&lt;code&gt;PASS all 932 tests
 ./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb  ./tool/runruby.rb --extout=.ext  -- "./bootstraptest/runner.rb" --ruby="ruby1    92"  ./KNOWNBUGS.rb

Driver is ruby 1.9.2dev (2010-05-31 revision 28117) [x86_64-darwin10.3.0]
Target is ruby 1.9.2dev (2010-05-31 revision 28117) [x86_64-darwin10.3.0]


KNOWNBUGS.rb .
PASS all 1 tests
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;となりましたが KNOWNBUGS とあったので気にしないで install してみました。&lt;br/&gt;&lt;br/&gt;github.com/midore/mblogger&lt;br/&gt;をruby 1.9.2 preview3 でもって「この投稿」を投稿してみました。どうかな？&lt;br/&gt;=&amp;gt; 成功しました。&lt;br/&gt;put はどうかな？&lt;br/&gt;=&amp;gt; OK.&lt;br/&gt;&lt;br/&gt;github.com/midore/mdiary&lt;br/&gt;こっちも、検索できなくなったかな？と思ったけどできてるみたい。&lt;br/&gt;&lt;br/&gt;github.com/midore/2010-amazon-jp-api&lt;br/&gt;は動かない！と思ったらruby 1.9.2 はとはぜんぜーん関係ない問題でした。ショック。ずっと気づいてなかった。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4814561450914260787?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4814561450914260787/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4814561450914260787' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4814561450914260787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4814561450914260787'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/install-ruby-192-preview3.html' title='install-ruby-1.9.2-preview3'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6750062882139007643</id><published>2010-06-01T07:15:00.000+09:00</published><updated>2010-06-01T08:03:32.576+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><title type='text'>Mac OS X Security Configuration Guides</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Mac OS X にはファイル共有機能があるので、例えば自宅にある複数のコンピュータ間でデータをやりとりできるし、iTunes 共有機能を使えば メインのコンピュータのiTunes を複数のコンピュータで共有できます。&lt;br/&gt;また、sshd など 使えば外出先からでも自宅のコンピュータにアクセスできます。&lt;br/&gt;そういった様々な OS X に付随してるサービス機能をふる活用させている方も世の中にはいらっしゃるのでしょう。&lt;br/&gt;&lt;br/&gt;けれども、いまどき自宅コンピュータをサーバ化させたい人のうち Mac OS X を選択する人ってどれだけの割合なのでしょうか？もし仮に私がそういう必要に迫られたとしたら迷わず Ubuntu を使うと思います。&lt;br/&gt;&lt;br/&gt;多くの人が、OS X をクライアントとして使用しているにすぎなくて、たまに iPodやiPhoneやiPad と同期させるくらい。&lt;br/&gt;だとするならば...&lt;br/&gt;下記のドキュメントはより多くの Mac OS X Users に読まれるべき文章なんじゃないかと思います。&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.apple.com/support/security/guides/'&gt;Mac OS X Security Configuration Guides&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;ただ、日本語化されていません。&lt;br/&gt;過去の Leopard 時代の文書ですら未だに日本語化されていないようです。&lt;br/&gt;&lt;br/&gt;で、英語ですがコマンドに慣れてる人なら最後の index 眺めてみるだけでもポイントを押さえられます。&lt;br/&gt;&lt;br/&gt;コマンドを使ったことない方でも、&lt;br/&gt;手始めにターミナル(Applications-&amp;gt;Utilities-&amp;gt;Terminal.app)のヘルプの中の「UNIX の基礎」に目を通し、興味を持てそうであればUNIX関連の書籍や、コマンドリファレンス的な本やそもそも shell って何？的な本を眺めつつ、簡単なコマンドの練習などしながら、これを機会にコマンドに慣れていけば大丈夫かと思います。&lt;br/&gt;&lt;br/&gt;+++ 追記:上記ドキュメントを読む読まない以前の最低限のセキュリティ +++&lt;br/&gt;&lt;br/&gt;1, たとえ自宅にたった1台しかコンピュータがない場合でも ルータ を使用する。&lt;br/&gt;2, 無線ルータの WEP の使用を避ける。&lt;br/&gt;3, ウイルス対策用のアプリケーションを購入する。また、そのアップデートを怠らない。&lt;br/&gt;4, OS X のソフトウエア•アップデートは定期的に必ず行うか自動アップデート（システム環境設定-&amp;gt;ソフトウエア•アップデート-&amp;gt;アップデートを自動的にダウンロード）にしておく。&lt;br/&gt;5, ファイアウォール機能を有効にする。（システム環境設定-&amp;gt;セキュリティ-&amp;gt;ファイアウォール）&lt;br/&gt;6, 自分ユーザにファイル共有させる必要がないのであれば FileValut を 入 にする。&lt;br/&gt;7, システム環境設定-&amp;gt;共有　不必要なサービスを起動しない。&lt;br/&gt;8, 必要がないかぎり、システム環境設定-&amp;gt;アカウント-&amp;gt;ゲストアカウント は無効にしておく。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6750062882139007643?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6750062882139007643/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6750062882139007643' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6750062882139007643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6750062882139007643'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/06/mac-os-x-security-configuration-guides.html' title='Mac OS X Security Configuration Guides'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-7457781650748836435</id><published>2010-05-20T06:23:00.000+09:00</published><updated>2010-05-20T11:46:29.228+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='get-item-amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>self.send()[2]</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;http://midorex.blogspot.com/2010/05/selfsend.html&lt;br/&gt;の続き。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  class Foo
    ary = [
      "Author", "Binding", "Creator",
      "EAN", "ISBN", "Label",
      "Manufacturer", "NumberOfPages",
      "ProductGroup", "ProductTypeName",
      "PublicationDate", "Publisher", "Studio",
      "Title", "MediumImage", "Price", "Edition",
      "Rank", "DetailPageURL", "Artist",
      "Format", "NumddberOfDiscs", "OriginalReleaseDate",
      "PackageQuantity", "ReleaseDate", "UPC", "RunningTime"
    ].each{|x| attr_accessor x.downcase.to_sym}

    def initialize(h)
      return nil unless h
      set_up(h)
      #@created ||= Time.now.to_s
    end

    def detail
      str = ""
      ins_a.each{|i| str &amp;lt;&amp;lt; i.to_s.gsub("@",'').upcase + ":\s" + self[i] + "\n" }
      return str
    end

    def set_up(h)
      h.each{|k,v| 
        begin
          self.send("#{k.downcase.to_sym}=", v)
        rescue NoMethodError
          next # ignore new value.
        end
        }
    end

    # def detail needs [] and ins_a
    alias [] instance_variable_get
    alias ins_a instance_variables

    private :set_up, :[], :ins_a

  end
  h = {'Artist'=&amp;gt;'artist-name','Title'=&amp;gt;'music-title'}
  p Foo.new(h)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;% ./test-item.rb &lt;br/&gt;#&amp;lt;Foo:0x000000000 @artist="artist-name", @title="music-title"&amp;gt;&lt;br/&gt;&lt;br/&gt;h = {'Artist'=&amp;gt;'artist-name','Title'=&amp;gt;'music-title'}&lt;br/&gt;h['noindex'] = 'noindex'&lt;br/&gt;p Foo.new(h)&lt;br/&gt;% ./test-item.rb&lt;br/&gt;#&amp;lt;Foo:0x000000000 @artist="artist-name", @title="music-title"&amp;gt;&lt;br/&gt;&lt;br/&gt;git =&amp;gt;  &lt;a href='http://github.com/midore/get_item_amzon'&gt;github.com/midore/get_item_amzon&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-7457781650748836435?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/7457781650748836435/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=7457781650748836435' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7457781650748836435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7457781650748836435'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/05/selfsend2.html' title='self.send()[2]'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-3314345909882117911</id><published>2010-05-16T01:08:00.001+09:00</published><updated>2010-05-20T11:47:34.495+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2010-amazon-api-jp'/><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>self.send()[1]</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;gdata-1.1.1　を読んでいたら gdata-1.1.1/lib/gdata/client/base.rb に &lt;/p&gt;&lt;pre&gt;&lt;code&gt;41           self.send("#{key}=", value)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とあった。&lt;br/&gt;&lt;br/&gt;それで&lt;br/&gt;クラスを初期化する際 hash をもちいてインスタンス変数を一気に設定したい場合について考えてみた。&lt;br/&gt;&lt;br/&gt;1) 最初にgdataでも使われている self.send() を使った場合&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  3 class My_1
  4   attr_writer :id, :name
  5   attr_reader :name
  6   def initialize(h={})
  7     h.each{|k,v| self.send("#{k}=", v)}
  8   end
  9 end
 10 
 11 h = {:id=&amp;gt;'123', :name=&amp;gt;'abc'}
 12 p My_1.new(h)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;実行結果&lt;br/&gt;#&amp;lt;My_1:0xxxxxxxx @id="123", @name="abc"&amp;gt;&lt;br/&gt;&lt;br/&gt;ハッシュのキーと値がinstance 変数に設定されていることがわかる。&lt;br/&gt;また attr_writer によって :id と :name 以外のkey を受け付けないよう設定されている。&lt;br/&gt;これを確認する為、&lt;br/&gt;h = {:id=&amp;gt;'123', :name=&amp;gt;'abc', :title=&amp;gt;'ddd'}&lt;br/&gt;に変更し実行してみると&lt;br/&gt;...(NoMethodError)&lt;br/&gt;&lt;br/&gt;:title は attr_writer に定義されていないので instance 変数として定義できないことが確認できた。&lt;br/&gt;&lt;br/&gt;2) 次に self[]= をつかってinstance 変数を設定するクラスの場合&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 15 class My_2
 16   attr_writer :id, :name
 17   attr_reader :name
 18   def initialize(h={})
 19     h.each{|k,v| self[:"@#{k.downcase}"] = v}
 20   end
 21    alias []= instance_variable_set
 22    alias [] instance_variable_get
 23    private :[], :[]=
 24 end
 25 p My_2.new(h)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#&amp;lt;My_2:0xxxxxxxx @id="123", @name="abc"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;My_1 の場合と全く同じ結果を得ることができる。&lt;br/&gt;では、My_1 の場合と同様に h を変更し&lt;br/&gt;h = {:id=&amp;gt;'123', :name=&amp;gt;'abc', :title=&amp;gt;'ddd'}&lt;br/&gt;として実行してみるとどうなるか？&lt;br/&gt;&lt;br/&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#&amp;lt;My_2:0xxxxxxxx @id="123", @name="abc", @title="ddd"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;attr_writer とは無関係になんなく :title が定義されてしまった。&lt;br/&gt;15行目のattr_writer :id, :name は class My_2 においては無意味のようだ。&lt;br/&gt;&lt;br/&gt;では、あたかも attr_writer を設定したかのようにさせるにはどうすればいいのだろうか？&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 14 class My_2
 15   @@ins_keys = [:id, :name]
 16   @@ins_keys.each{|x| attr_reader x}
 17   def initialize(h={})
 18     h.each{|k,v|
 19       key = k.downcase.to_sym 
 20       self[:"@#{key}"] = v if @@ins_keys.index(key)}
 21   end
 22   alias []= instance_variable_set
 23   alias [] instance_variable_get
 24   private :[], :[]=
 25 end
 26 h = {:id=&amp;gt;'123', :name=&amp;gt;'abc', :title=&amp;gt;'ddd'}
 27 p m = My_2.new(h)
 28 p m.name
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#&amp;lt;My_2:0xxxxxxxx @id="123", @name="abc"&amp;gt;
"abc"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;@@ins_keys を定義し19行目に if @@ins_keys.has_key?(k) を追加することで&lt;br/&gt;attr_writer に「似た」役目をはたしてもらうことにした。&lt;br/&gt;attr_reader は16行目にまとめた。&lt;br/&gt;配列の要素を全て attr_reader にした。&lt;br/&gt;配列の要素をチョイスして attr_reader したい場合はさらに2行加える必要あり。&lt;br/&gt;&lt;br/&gt;@@ins_keys に登録されていない :title は定義されなくなった。&lt;br/&gt;つまり定義したい instance 以外 が定義されるようなことはおこらないという意味で My_1 と同じ結果を得られるようになった。&lt;br/&gt;ただし、My_1 ではerrorが返ってくるが My_2 では error にはならない。&lt;br/&gt;error を返す必要があれば20行目直前に raise unless @@ins_keys.index(key)　などすればいいのかも。&lt;br/&gt;&lt;br/&gt;+++ メモ +++&lt;br/&gt;&lt;br/&gt;0) self[] を initialize で使用しつつどの key を instance 変数として定義するかをちゃんと制御したい時&lt;br/&gt;attr_writer で設定したつもりになっていてもそれは意味をなさないので、別途 式を用意するなどする必要がある。&lt;br/&gt;あるいは最初から My_1 のような方法を採用した方がいいかも。&lt;br/&gt;あるいは通常どおりに def initialize で @id = nil などと定義しておいて instance_variable_defined? を使う。&lt;br/&gt;&lt;br/&gt;1) (派手に間違えているかもしれない)書きながら浮かんだイメージ&lt;br/&gt;self.send()&lt;br/&gt;は、一旦廊下に出て attr_writer ドアをノックしてから self 部屋に入るが、&lt;br/&gt;self[]=&lt;br/&gt;は、既にself 部屋の内側に入っていて attr_writer ドアの存在を意識していない。&lt;br/&gt;といったようなイメージ。&lt;br/&gt;&lt;br/&gt;2) git にあげてある &lt;a href='http://github.com/midore/2010-amazon-api-jp'&gt;2010-amazon-api-jp&lt;/a&gt; に、上記の内容を反映する予定は未定。&lt;br/&gt;&lt;br/&gt;&lt;a href='http://midorex.blogspot.com/2010/05/selfsend2.html'&gt;続き&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-3314345909882117911?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/3314345909882117911/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=3314345909882117911' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3314345909882117911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3314345909882117911'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/05/selfsend.html' title='self.send()[1]'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2176947601251193407</id><published>2010-04-21T19:14:00.000+09:00</published><updated>2010-06-02T18:14:05.142+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2010-amazon-api-jp'/><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><title type='text'>2010-amazon-api-jp</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;SnowLeopard で OpenSSL がバージョンアップしたことに伴い &lt;br/&gt;&lt;a href='http://github.com/midore/amazon-jp-api'&gt;amazon-jp-api&lt;/a&gt; を作り直した。&lt;br/&gt;=&amp;gt; &lt;br/&gt;&lt;a href='http://github.com/midore/2010-amazon-jp-api'&gt;2010-amazon-jp-api&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[参考になったURL]&lt;br/&gt;OpenSSL SHA 256 の使い方は&lt;a href='http://diaspar.jp/node/239'&gt;http://diaspar.jp/node/239&lt;/a&gt; を参考にしました。&lt;br/&gt;&lt;br/&gt;[主な変更点]&lt;br/&gt;1, Mac OS X 10.6.3 で SHA256 を使えるようになったことに伴う変更。&lt;br/&gt;   module AmazonAuth　=&amp;gt; 新規に作ったモジュール。認証用。&lt;br/&gt;2, 設定ファイル =&amp;gt; ２つのモジュールにわけた。&lt;br/&gt;3, class AwsItem =&amp;gt; インスタンス変数の持ち方の変更。&lt;br/&gt;4, class AmazonAccess =&amp;gt; アマゾンにアクセスしデータを獲得したのちに AwsData.new(data).add_data でアイテムまで生成していたが、アイテム生成は他のクラスに移動させて、このクラスはアマゾンにアクセスしデータを獲得するだけのクラスに変更した。&lt;br/&gt;5, class AwsDataWriter =&amp;gt; 新規に作ったクラス。マーシャルデータを変更するためのクラス。&lt;br/&gt;6, class AwsDataReader =&amp;gt; 新規に作ったクラス。マーシャルデータを読み込んで表示させるためのクラス。&lt;br/&gt;7, module AmazonAuth　=&amp;gt; 新規に作ったモジュール。アマゾン認証を行うためのもの 。&lt;br/&gt;&lt;br/&gt;[変更されていない点]&lt;br/&gt;1, ローカルで使うもの。&lt;br/&gt;2, Ruby 1.9.1 だけで動き Ruby 1.8 系はサポートしていない。&lt;br/&gt;3, マーシャルデータを使用している。&lt;br/&gt;4, 指定したEAN の本やCDのデータをアマゾンから受け取ることができるがアマゾンサーバに対して検索はできない。&lt;br/&gt;5, README に書いたオプション引数はそのまま。&lt;br/&gt;&lt;br/&gt;[少しだけ気になっている点]&lt;br/&gt;1, もともとのものは force_encodig を使わないように&lt;a href='http://midorex.blogspot.com/2009/12/forceencoding.html'&gt; 変更している&lt;/a&gt;。今回もこの状態でうまくいったので受け取ったXMLデータが valid? かどうかだけチェックするにとどめ encode 変換は行っていない。このことによってなにか弊害があるのかないのかは謎。&lt;br/&gt;2, timeout を使っている。使わないバージョンも作ってみたがあっさり挫折。&lt;br/&gt;3, exec を使っている。exec を使わないバージョンを考えてみたがわからなくなって中断。&lt;br/&gt;4, send を使っている。最近使い方を覚えたため、使ってみたかったから使っているにすぎない。あえて使う必要はないのかもしれない。&lt;br/&gt;&lt;br/&gt;[このブログ内の関連する投稿]&lt;br/&gt;=&amp;gt; http://midorex.blogspot.com/2009/06/amazon-web-with-ruby-191.html&lt;br/&gt;=&amp;gt; http://midorex.blogspot.com/2009/08/amazon-product-advertising-api.html&lt;br/&gt;=&amp;gt; http://midorex.blogspot.com/2009/12/forceencoding.html&lt;br/&gt;=&amp;gt; http://midorex.blogspot.com/2008/12/amazon-aws-with-ruby191.html&lt;br/&gt;&lt;br/&gt;[Amazon ラベルをもつ全ての投稿]&lt;br/&gt;&lt;a href='http://midorex.blogspot.com/search/label/Amazon'&gt;Amazon&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2176947601251193407?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2176947601251193407/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2176947601251193407' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2176947601251193407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2176947601251193407'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/04/2010-amazon-api-jp.html' title='2010-amazon-api-jp'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-3988881299307655258</id><published>2010-04-03T23:00:00.000+09:00</published><updated>2010-04-05T00:39:19.671+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>はじめての send</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;ISBN: 978-4048678841 | リファクタリング:Rubyエディション (大型本)&lt;br/&gt;&lt;br/&gt;この本、私は対象読者ではなかった。飛ばし読みしていたらあっという間に p.165 までたどり着いてしまった。&lt;br/&gt;&lt;br/&gt;そこで目にしたもの&lt;br/&gt;p.165&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;サンプル&lt;br/&gt;引数をまとめたHash を受け付けて、それらの引数をインスタンス変数に代入する SearchCriteria クラスがあるものとする。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;とあり&lt;br/&gt;p.166&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Class.send :include, CustomInitilizers
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;send って何?といろいろ試してみた。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 #!/usr/local/bin/ruby191
  2 # coding: utf-8
  3 
  4 module Items
  5   module Setup
  6     def base(h)
  7       h.each{|k,v| self["@#{k}"] = v}
  8     end
  9     alias []= instance_variable_set
 10     alias [] instance_variable_get
 11   end
 12   class Music
 13     def initialize(h)
 14       self.base(h)
 15     end
 16   end
 17   class Book
 18     def initialize(h)
 19       base(h)
 20     end
 21   end
 22   Object.send :include, Setup
 23 end
 24 
 25 h = {:isbn=&amp;gt;'978xxx', :title=&amp;gt;'book-title', :price=&amp;gt;'1000'}
 26 p b = Items::Book.new(h)
 27 h = {:isbn=&amp;gt;'077xxx', :title=&amp;gt;'music-title', :price=&amp;gt;'2000'}
 28 p b = Items::Music.new(h)
 29 p b['@title']

=&amp;gt;
#&amp;lt;Items::Book:0xxxx @isbn="978xxx", @title="book-title", @price="1000"&amp;gt;
#&amp;lt;Items::Music:0xxx @isbn="077xxx", @title="music-title", @price="2000"&amp;gt;
"music-title"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;最近知った &lt;a href='http://midorex.blogspot.com/2010/03/instancevariable.html'&gt;あのalias&lt;/a&gt;を使ってみた。&lt;br/&gt;&lt;br/&gt;そして&lt;br/&gt;「プログラミング言語 Ruby」p.285&lt;br/&gt;を読み直した&lt;br/&gt;Book.public_send :include, Setup&lt;br/&gt;にしてもOKだった。&lt;br/&gt;&lt;br/&gt;さらに&lt;br/&gt;「Ruby Way」( Second edition)&lt;br/&gt;にて send を探してみたら p.350 にsort_by のカスタムバージョン例の中で send  を使う例があった。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;self.sort{|x,y| x.send(sym) &amp;lt;=&amp;gt; y.send(sym)&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;この場合、x はArrayの要素でその要素のひとつひとつには Preson.new() Object　が入っていて、&lt;br/&gt;で、Presonの@name は attre_reader で読み込めるようになっている。ここがミソ。従ってソート対象として:name を指定することができる、と。&lt;br/&gt;attre_writer :name だったらこれは成功しないだろう。&lt;br/&gt;p.350 をジーとみているとうっかり send(@name)なのだと勘違いして理解しそうになるが、&lt;br/&gt;send は「シンボル」を受けつけるのだから、send(@name) ではダメ。&lt;br/&gt;&lt;br/&gt;+++ まとめ +++&lt;br/&gt;send or public_send (Ruby 1.9) はシンボルを受けつける&lt;/p&gt;&lt;pre&gt;&lt;code&gt;module XXX
  module Setup ... end
  class Book ... end
  class Music ... end
  Object.send :include, Setup
end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Object.send とした場合は module が内包する[全て]のクラスのinclude メソッドに Setup module をおくりつけたことになる、と。&lt;br/&gt;Object.send を Class.send としてみたら&lt;br/&gt;`initialize': undefined method `base'&lt;br/&gt;のエラーになった。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;module XXX
  module Setup ... end
  class Book ... end
  class Music ... end
  Book.send :include, Setup
end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とした場合は module XXX が内包するBook クラスに[だけ]Setupをおくったことになる&lt;br/&gt;従ってこの場合&lt;/p&gt;&lt;pre&gt;&lt;code&gt;module XXX
  module Setup ... end
  class Book
    include Setup
  end
end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と全くおなじ、と。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-3988881299307655258?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/3988881299307655258/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=3988881299307655258' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3988881299307655258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3988881299307655258'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/04/send.html' title='はじめての send'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-3887132966933839577</id><published>2010-03-21T13:43:00.000+09:00</published><updated>2010-03-23T23:18:22.863+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>$LOAD_PATH.delete(".")</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://jp.rubyist.net/magazine/?0029-1.9.2Preview'&gt;Rubyist Magazine - Ruby 1.9.2 予告編&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;将来的に&lt;br/&gt;$LOAD_PATH.delete(".")&lt;br/&gt;と書かなくてよくなる。わーい!&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-3887132966933839577?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/3887132966933839577/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=3887132966933839577' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3887132966933839577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3887132966933839577'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/03/loadpathdelete.html' title='$LOAD_PATH.delete(&amp;quot;.&amp;quot;)'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-3862632558103557436</id><published>2010-03-18T22:47:00.000+09:00</published><updated>2010-03-19T03:20:06.003+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>git-clone-port</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;memo&lt;br/&gt;&lt;br/&gt;github.com で公開されてるプロジェクトを clone したい時&lt;br/&gt;TCP 9418&lt;br/&gt;が出て行くのを許可されてないと clone できない。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-3862632558103557436?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/3862632558103557436/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=3862632558103557436' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3862632558103557436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/3862632558103557436'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/03/git-clone-port.html' title='git-clone-port'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-779881268975065756</id><published>2010-03-16T18:39:00.000+09:00</published><updated>2010-03-21T18:08:10.530+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>The Catcher in the Rye</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;「The Catcher in the Rye」by J.D. Salinger &lt;br/&gt;は二人の訳者によって日本語に訳されています。&lt;br/&gt;&lt;br/&gt;ISBN: 978-4-560-07051-2 | ライ麦畑でつかまえて | J.D.サリンジャー | 野崎孝訳&lt;br/&gt;ISBN: 978-4-560-04764-4 | The Catcher in the Rye | J.D.サリンジャー | 村上春樹訳&lt;br/&gt;&lt;br/&gt;下記は、両者の相違を通しイチ読者としての勝手で野暮な感想を述べたものです。&lt;br/&gt;&lt;br/&gt;1) 書き出し&lt;br/&gt;野崎孝訳 p.5&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;もしも君が、ほんとうにこの話を聞きたいんならばだな、まず、僕がどこで生まれたかとか、チャチな幼年時代はどんなだったかとか、そういった&amp;lt;&amp;lt;デーヴィッド•カパーフィールド&amp;gt;&amp;gt;式のくだんないことから聞きたがるかもしれないけどさ、&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;村上春樹訳　p.5&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;こうして話を始めるとなると、君はまず最初に、僕がどこで生まれたかとか、どんなみっともない子ども時代を送ったかとか、僕が生まれる前に両親が何をしていたかとか、その手のデイヴィッド•カッパーフィールド的なしょうもないあれこれを知りたがるかもしれない。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;2003年春。村上春樹訳の「The Catcher in the Rye」のこの冒頭の１行目を目にした時、この本は私がかつて読んだあの「ライ麦畑でつかまえて」とマルッキリ！違う本だぞと瞬時に認識しました。正直に言うと、みてはいけないものをみてしまった感に襲われました。その日からあっというまに何年か経過してしまいました。&lt;br/&gt;&lt;br/&gt;サリンジャーのこの作品についてふれることは私にはちょっとヘビーなので、できれば永久に避けたいと思っていましたが村上春樹訳「The Catcher in the Rye」が手元にあったことで何かが変わりました。&lt;br/&gt;&lt;br/&gt;2) 走ることへの衝動&lt;br/&gt;野崎孝訳 p.11&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;何のために駆けたりなんかしたのか、自分でもよくわかんないーたぶん、なんということもなく、ただ駆けたくて駆けたんだろう。&lt;br/&gt;いやあ、スペンサー先生の家につくが早いか、いきなり僕はベルを鳴らしたね。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;村上春樹訳 p.12&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;なんでわざわざ走らなくちゃならないのか、自分でもそのへんはよくわからないけど、たぶんただ走りたかったんじゃないかな。&lt;br/&gt;やれやれ、やっとの思いでスペンサー先生の家にたどり着くと、僕はすごい勢いで玄関のベルを鳴らした。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;この文の前後ははしょりましたが、主人公はまるで10歳くらいの子どものように突然走り出します。冬の寒い日、ふいに何かに背中を押されれたかのようにして、ぶったおれるかと思うくらいの勢いで走り出すわけですが、村上春樹氏の訳はこの年頃のこの感覚をすっかり忘れてしまったか、もともとそれを知らない人(たぶん走るのが好きじゃなかった人)が訳したかのような印象をうけます。&lt;br/&gt;&lt;br/&gt;村上春樹氏が書いた小説の中に、貧乏を経験したことのある人間かそうでないかはそれを知っている人間にはすぐわかる(正確にはこのとおりではない)、&lt;br/&gt;といったようなことを主人公に語らせている作品が確かあったと思うのですが...もう子どもじゃないと自覚してるのに、無性に駆け出したくなったことがある人間か、そうでないかは、この訳の違いを読むとわかるような気がします。&lt;br/&gt;&lt;br/&gt;3) 会話 &lt;br/&gt;野崎孝訳 p.52&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;「おれにわかるはずないだろ。どいてくれ。おまえ、おれのタオルに坐ってるじゃねえか」と、ストライドレイターは言った。僕は奴の間抜けなタオルの上に坐ってたんだ。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;村上春樹訳 p.56&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;「よくわからねよ、そんなこと。とにかくそこをどいてくれよ。お前な、俺のタオルの上に座ってるんだぜ」とストライドレイターは言った。僕はたしかに彼のくだらないタオルの上に座っていた。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;奴の間抜けなタオルがいかに間抜けになるか？はストライドレイターにいかにカッカして言い放ってもらうか、にかかっていると思います。そして奴の間抜けなタオルにはちゃんと間抜けになってもらってコールフィールド的な笑いを読者に受け止めてもらわないと、ここではなにもかもが台無しなんだと思います。&lt;br/&gt;で、野崎孝訳では「...じゃねえか」と「...坐ってたんだ」がその役割を果たしています。&lt;br/&gt;&lt;br/&gt;が、村上春樹訳では、「... に座ってるんだぜ」と、...ぜ、が使われていることと、その直前に「とにかく」って単語が加わることでストライドレイターのカッカが薄く間延びしたものになってしまっています。また「僕はたしかに...」と「たしかに」って単語が加わることで、間抜けなタオルの間抜けさは間抜けでもなんでもないただの退屈なタオルになりさがってしまってます。この感覚。&lt;br/&gt;コールフィールド特有の奴に対するワライはすべってませんか？&lt;br/&gt;&lt;br/&gt;4) 時間に関するジョーク&lt;br/&gt;野崎孝訳 p.59&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;...まるでこっちが恩恵を施されてるみたいな感じなんだ。&lt;br/&gt;奴は支度するのに、五時間ばかしかかった。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;村上春樹訳 p.64&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;... 君はきっとアックリーの方がこっちに恩恵を施していると思うだろうよ。&lt;br/&gt;アックリーが出かける支度をするのに、だいたい五時間かかった。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;この抜粋された文だけを、今、生まれて初めて目にした方はアックリーが支度をするのに５時間かかったのが、ジョークだなんてピンとこないんだろうけれども、最初からこの作品を読んできている読者にはこれがコールフィールドのジョークだとすぐにわかります。野崎孝訳においては。&lt;br/&gt;村上春樹訳によってこの作品を初めて読んでいる読者が、これがジョークだとすぐにわかるものなのかどうか、私には疑問です。&lt;br/&gt;&lt;br/&gt;他にもこれと同じように、実際とは無関係なおおげさな数字が書かれている箇所がいくつかあって、そのたびに読者はちょっとクスッとなります。&lt;br/&gt;野崎孝訳p.312&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;校長の姿は見えなかったけど、百歳ばかしの年取った女の人が、...&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;これも同様のパターン。&lt;br/&gt;&lt;br/&gt;5) 叫び&lt;br/&gt;野崎孝訳 p.84&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;「ガッポリ眠れ、低能野郎ども！」&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;村上春樹訳 p.89&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;「ぐっすり眠れ、うすのろども！」&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;おそらく、読者はここで一旦お茶をいれるか一旦本を閉じるか、俺も（or私も）寝るわと電気を消すなどすると思うんだけども&lt;br/&gt;「ああ、ガッポリ寝るわ、豚のようにね」（笑）&lt;br/&gt;などと冗談を言いかえしたくなるのは野崎孝訳であって村上春樹訳を読んでいてもそんな気持ちにはなれそうにありません。私は。&lt;br/&gt;&lt;br/&gt;ガッポリってところが、ちょっといいわけです。このちょっとした笑い「クスッ」感がとてつもなく大事なのです。どれだけ大事かというと、なにはともあれ、なにをさしおいても大事、としかいいようがありません。しかもそんな馬鹿げた声が静かな廊下にこだましちゃってたところが尚面白いわけです。&lt;br/&gt;&lt;br/&gt;このニュアンスを持つか持たないかが両者の大きな違いのようにも感じます。とらえどころが難しいけども決定的な違い。主人公コールフィールドは始終まともな話ができる人と話をすることに飢えていますが、同じ作品を訳したにもかかわらず、村上氏の訳ではその切実感が薄いのはこのあたりにも秘密があるような気もします。&lt;br/&gt;&lt;br/&gt;6) 恩師との会話&lt;br/&gt;野崎孝訳 p.284&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;「英語はどうだった？英語をしくじったなんて言おうものなら、さっさと出て行ってもらうからな。この若き作文の天才め」&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;村上春樹訳 p.303&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;「英語の成績はどうだった？もし君が英語を落としたというのなら、すぐさまこの場を退出していただくことになる。なにしろ君は作文に関しては文句なしのエースだったもんな」&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;野崎孝訳では、さっさと出て行ってもらうからな... と一瞬すごみをきかした先生が、 この...天才め、と言い放つと同時に笑顔になっている様がよく伝わってきます。先生の顔をみながら主人公の顔も少しほほえんでいるのが(視覚的に)よくみえるような気がします。この先生が冗談好きな明るい人間だってことも一瞬に理解できるし、主人公がなぜこの人を訪ねたのかもよくわかります。それで安心して私も主人公が座った椅子の隣にこしかけたい気持ちになります。&lt;br/&gt;&lt;br/&gt;しかし村上春樹訳で読むと、この先生、なんともまわりくどい言い方をする人だなって印象を持ちかねません。退場していただく、と品のある言い方で書かれているせいか先生の陽気さが半減してしまってます。読者である私はそこに同席したいなど感じません。&lt;br/&gt;これでは、なぜ主人公がこの人に会いにやってきたのかが読者に伝わりにくいのではなかろうか？と心配になります。&lt;br/&gt;&lt;br/&gt;この文によって、読者はなぜ主人公はこの人に会いにやってきたのかを知ることができるので、ここは話の構成上でも重要なんじゃないかと思います。&lt;br/&gt;その後、この恩師の家を出ていくことになる出来事とのギャップを浮き彫りにする上でも大切に感じます。&lt;br/&gt;&lt;br/&gt;...&lt;br/&gt;&lt;br/&gt;全体を通して、村上春樹訳では重要な何かが「ガッポリ」ぬけおちているように感じます。単語の多さとまるで反比例しているのは興味深いところです。&lt;br/&gt;&lt;br/&gt;野崎孝訳ではコールフィールド独特のささやかな笑いや、ちょっとした気の利いた言い回しなんかによって、この少年がどういう人物かってことが読者には手にとるようにわかるようになっていると、私は思うのですが、そのあたりのおもしろみが村上訳からは消えさってしまっているように思います。&lt;br/&gt;&lt;br/&gt;たとえば「やれやれ」って言葉を村上春樹氏の小説の中に登場する主人公が口にした時、それはまるで彼によく似合う服のようだから、読んでいてなんのさしさわりも感じないし、むしろほどよく彼の気持ちが伝わってきます。こういう時にこういう感じ方をするのが彼なんだなとぐっと彼に近づきますが、サリンジャーの主人公は「やれやれ」が似合うような主人公じゃないと思うんです。決して。彼はそんなにクールでもないし。&lt;br/&gt;&lt;br/&gt;ディケンズの名作をくだらないって言ってのけちゃう少年。しいていえば、夏目漱石なんてくだらない、あたりまえだろって言っている少年と同じなわけです。&lt;br/&gt;日本語の「やれやれ」が持つニュアンスを多少の笑いを含んで言えるような人物が、&lt;br/&gt;「その手のデイヴィッド•カッパーフィールド的なしょうもないあれこれ...」&lt;br/&gt;あるいは&lt;br/&gt;「そういった&amp;lt;&amp;lt;デーヴィッド•カパーフィールド&amp;gt;&amp;gt;式のくだんないこと」&lt;br/&gt;と、斬って捨てるような言い方をするだろうか？と、違和感を感じます。&lt;br/&gt;例えば「そういった&amp;lt;&amp;lt;坊ちゃん&amp;gt;&amp;gt;的なくだらないこと...」&lt;br/&gt;などとは、そういう人は言わない、いや、言えないんじゃないのかな。&lt;br/&gt;&lt;br/&gt;だから、そもそも「やれやれ」などとコールフィールドが心の中で口にすることができていたのなら、この小説自体生まれなかったんじゃないの？とも思うのです。「やれやれ」と心の中でつぶやきつつその場をやりすごすことができるかできないか、そのハードルを超えるか超えないかの、違い。そのハードルこそがコールフィールドにとってはとてつもなく巨大で重要で真っ暗な出来事として描かれていると、私は思うので、そこをまるっきり無視しちゃっうのならこの作品の存在自体を否定しかねないのではないか？と考えてしまいます。&lt;br/&gt;実際、野崎孝氏は一度も「やれやれ」なんて使わないで訳を完了させてしまってますしね。ところどころ言葉遣いの古さは否めないけど。&lt;br/&gt;&lt;br/&gt;私は作品の主人公とほぼ同年齢に野崎孝氏訳の「ライ麦畑でつかまえて」に巡り会えてよかったと思ってます。大人になってからこの作品を読んだ人の感想をどこかで信用していない悪い癖がついてしまったのは、それはしかたのないことだと言いかねないほど。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-779881268975065756?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/779881268975065756/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=779881268975065756' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/779881268975065756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/779881268975065756'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/03/cacher-in-rye.html' title='The Catcher in the Rye'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5217217891709330252</id><published>2010-03-08T21:13:00.001+09:00</published><updated>2010-06-02T00:14:15.588+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='x'/><title type='text'>NASAが...</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://www.gizmodo.jp/2010/03/nasa1000.html'&gt;NASAが1000日後にアバターを月に送り込む予定&lt;/a&gt;&lt;br /&gt;
によると&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;もしヒューマロイドを月に送り込み、科学者達自身での探索が可能になったら、それは全ての科学者を実際に月に送り込むのと同じくらいの意味があります&lt;br /&gt;
。科学者達が彼ら自身で探索し研究の対象となるサンプルを探すことができるのです。遠隔操作はほんの3秒くらいのタイムラグだそうですよ。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;だそうだ。&lt;br /&gt;
&lt;br /&gt;
ヒューマロイドがロビイになったりしませんように。&lt;br /&gt;
ディヴになったりしませんように。&lt;br /&gt;
ハーヴィーになったりしませんように。&lt;br /&gt;
どうかロボットデカルトさまになったりしませんように^^;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5217217891709330252?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5217217891709330252/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5217217891709330252' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5217217891709330252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5217217891709330252'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/03/nasa.html' title='NASAが...'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4802505580081388726</id><published>2010-03-08T16:04:00.000+09:00</published><updated>2010-03-08T22:58:03.369+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>instance_variable</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://ujihisa.blogspot.com/2009/12/left-hand-values-in-ruby.html'&gt;http://ujihisa.blogspot.com/2009/12/left-hand-values-in-ruby.html&lt;/a&gt;を読んで試してみたこと。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 #!/usr/local/bin/ruby191
  2 # coding: utf-8
  3 
  4 class Diary
  5   def initialize
  6     @title, @date = nil, nil
  7   end
  8   alias [] instance_variable_get
  9   #alias []= instance_variable_set
 10   def []=(i, v)
 11     instance_variable_set(i, v) if i_defined?(i)
 12   end
 13   def i_defined?(i)
 14     instance_variable_defined?(i)
 15   end
 16 end
 17 
 18 d = Diary.new
 19 d['@title'] = "NewTitle"
 20 d['@date'] = Time.local(2010,02,01)
 21 d['@ddd'] = 'ddd'
 22 p d['@title']
 23 p d
 24 # =&amp;gt;
 25 # "NewTitle"
 26 #&amp;lt;Diary:0xxxx @title="NewTitle", @date=2010-02-01 00:00:00 +0900&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;initialize をとりさり i_defined?　もとりさってみる&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 29 class Diary
 30   alias [] instance_variable_get # instance_variable_defined?
 31   alias []= instance_variable_set
 32 end
 33 
 34 d = Diary.new
 35 d['@title'] = "NewTitle"
 36 d['@date'] = Time.local(2010,02,01)
 37 p d
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;% ./try.rb&lt;br/&gt;#&amp;lt;Diary:0xxxx @title="NewTitle", @date=2010-02-01 00:00:00 +0900&amp;gt;&lt;br/&gt;&lt;br/&gt;勉強になった。&lt;br/&gt;&lt;br/&gt;self.instance_variable_set&lt;br/&gt;にしなくちゃいけないと思っていた。&lt;br/&gt;instance_variable_set&lt;br/&gt;だけで動くなんて知らなかった!&lt;br/&gt;&lt;br/&gt;alias [] instance_variable_get&lt;br/&gt;これでinstance の値をとれるなんて！&lt;br/&gt;&lt;br/&gt;instance_variable_get&lt;br/&gt;のところを&lt;br/&gt;alias [] instance_variable_defined?&lt;br/&gt;に変えてみたら値をとるかわりに定義されているか否かを true or false で返してくれた!びっくり。&lt;br/&gt;&lt;br/&gt;alias [] instance_variable_get&lt;br/&gt;alias []= instance_variable_set&lt;br/&gt;alias [] instance_variable_defined?&lt;br/&gt;&lt;br/&gt;のようなことをしてみたくなったが&lt;br/&gt;[] methods&lt;br/&gt;は1度使ってしまったら2個目は使えない。の overwrite されちゃう。あたりまえかも。&lt;br/&gt;1回目の [] と&lt;br/&gt;2回目の [] を&lt;br/&gt;区別させる方法はない? ぽい。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4802505580081388726?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4802505580081388726/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4802505580081388726' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4802505580081388726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4802505580081388726'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/03/instancevariable.html' title='instance_variable'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4046306052315775379</id><published>2010-03-04T19:34:00.000+09:00</published><updated>2010-03-04T19:55:43.747+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>部分変更重要</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;入門Git のp.57-58 を読みながら試してみたこと&lt;br/&gt;&lt;br/&gt;# 複数のファイルが git diff に表示されていた場合、git add -p する際にファイル名を指定することもできた。&lt;br/&gt;% git add -p filename&lt;br/&gt;% git add -p &lt;br/&gt;してすぐにリターンするとヘルプをみることができた。&lt;br/&gt;&lt;br/&gt;思い通りに hunk が分かれていなかった場合は s 選択するとより細かく分割してくれるようだ。今回のコミットに反映したい箇所は y で反映したくない時は n。 q で終了。&lt;br/&gt;&lt;br/&gt;% git diff --cached &lt;br/&gt;今からコミットする内容を確認&lt;br/&gt;&lt;br/&gt;% git commit -v&lt;br/&gt;変更箇所の詳細内容をみながらコミット文を作成できる。書式ルールは&lt;br/&gt;&lt;br/&gt;１行目が要約文&lt;br/&gt;２行目空行&lt;br/&gt;３行目以降に詳細文&lt;br/&gt;&lt;br/&gt;これからは要点と合致した commit を心がけようと思った。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4046306052315775379?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4046306052315775379/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4046306052315775379' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4046306052315775379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4046306052315775379'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/03/blog-post.html' title='部分変更重要'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5036255232248825889</id><published>2010-02-26T12:57:00.000+09:00</published><updated>2010-03-08T20:36:00.636+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>UTF8-MAC [2]</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://midorex.blogspot.com/2010/02/utf8-mac.html'&gt;UTF8-MAC&lt;/a&gt; みなおし。&lt;br/&gt;&lt;br/&gt;要は \\ があればいいんでしょ？とお気楽な発想を展開してみました。&lt;br/&gt;が、以下は非常によろしくないことをしている可能性あり。&lt;br/&gt;あくまでも実験なので試さない方がいいです。おい&lt;br/&gt;&lt;br/&gt;macustr.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 #!/usr/local/bin/ruby19
  2 # coding: utf-8
  3 
  4 exit unless Encoding.default_external.name == 'UTF-8'
  5 
  6 require 'nkf'
  7 def macustr(line)
  8   str = String.new # p str.encoding
  9   line.chars.entries.each{|x| str &amp;lt;&amp;lt; "\\" + x}
 10   #line.codepoints.entries.each{|x| str &amp;lt;&amp;lt; "\\" + [x].pack("U*")}
 11   mustr = NKF::nkf('--ic=UTF-8 --oc=UTF8-MAC', str)
 12   return mustr
 13 end
 14 
 15 ARGF.each{|line|
 16   exit unless line.encoding.name == "UTF-8"
 17   next unless line.valid_encoding?
 18   mustr = macustr(line.strip)
 19   next unless  mustr.valid_encoding?
 20   sh = system("mkdir #{mustr}")
 21   print "Maked Directory: #{line}" if sh
 22 } 
 23 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;line 4 : 環境変数LANGが UTF-8 でない場合はおいかえす。&lt;br/&gt;line 16: 読み込んだ文字列が UTF-8 でなければすぐ終了。&lt;br/&gt;line 17: valid でなければ次&lt;br/&gt;line 18: def macustr に一行わたす&lt;br/&gt;line 9 : 冒頭に"\\" を付け加えて一文字ずつ str に追加。最初は line 10 にしたのだが line 9 にしておいた。 &lt;br/&gt;line 11: str を UTF8-MAC に変換&lt;br/&gt;line 19: valid でなければ次&lt;br/&gt;line 20: mkdir コマンド&lt;br/&gt;line 21: コマンドが成功したらメッセージ表示&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;./macustr.rb utf8_text.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行すると utf8_text.txt を一行ずつ読み込み&lt;br/&gt;同名のDirectory を同じ階層に作成します。&lt;br/&gt;utf8_text.txt は UTF-8 で保存されたテキストファイル。&lt;br/&gt;&lt;br/&gt;[2010-02-27]&lt;br/&gt;s/chomp/strip/g&lt;br/&gt;&lt;br/&gt;[2010-03-08]&lt;br/&gt;追記&lt;br/&gt;# 失敗例&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 #!/usr/local/bin/ruby19
  2 # coding: utf-8
  3 # test-encode.rb
  4 
  5 text = 'utf8-text.txt'
  6 # % cat utf8-text.txt 
  7 # and two &amp;amp;three
  8 
  9 File.open(text, "r:utf-8"){|f|
 10   f.each_line{|x|
 11     #  行末\n や行頭\s を削除
 12     line = x.strip
 13     # print out
 14     puts "Line: \"#{line}\"| Encoding: #{line.encoding}| Valid: #{line.valid_encoding?}\n"
 15     puts "# Calling encode\n"
 16     # encode で変換
 17     mustr = line.encode("UTF8-MAC")
 18     # print out
 19     puts "String: \"#{mustr}\"| Encoding: #{mustr.encoding}| Valid: #{mustr.valid_encoding?}\n"
 20     print "# Calling system\n"
 21     # Directory 作成
 22     sh = system("mkdir #{mustr}")
 23     puts "Result: #{sh}\n--\n"
 24   }
 25 }
 26 
 27 =begin
 28 % ./test-encode.rb 
 29 Line: "and two &amp;amp;three"| Encoding: UTF-8| Valid: true
 30 # Calling encode
 31 String: "and two &amp;amp;three"| Encoding: UTF8-MAC| Valid: true
 32 # Calling system
 33 sh: three: command not found
 34 Result: false
 35 
 36 % ls -F
 37 and/            test-encode.rb* two/            utf8-text.txt
 38 =end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;17行目&lt;/p&gt;&lt;pre&gt;&lt;code&gt;mustr = ine.encode("UTF8-MAC")
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を&lt;/p&gt;&lt;pre&gt;&lt;code&gt;mustr = line.force_encoding("UTF8-MAC")
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;にしても同様の結果だし&lt;/p&gt;&lt;pre&gt;&lt;code&gt;require 'nkf'
mustr = NKF::nkf('--ic=UTF-8 --oc=UTF8-MAC', line)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;としてみても結果は同じ&lt;br/&gt;&lt;br/&gt;検索して次を読んでみたけど よくわかってないというか...。&lt;br/&gt;&amp;lt;http://redmine.ruby-lang.org/issues/show/1411&amp;gt;&lt;br/&gt;&amp;lt;http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/40233?help&amp;gt;&lt;br/&gt;&lt;br/&gt;+++ 感想 +++&lt;br/&gt;&lt;br/&gt;通常 Mac OS X を使用する上で自ら日本語名のフォルダを作る人はあまりいないだろうし、スペースが混入した文字列をわざわざフォルダの名前にする人もあまりいないはずなので、じゃあ一体どういった場面で上のような必要が生じるかというと&lt;br/&gt;ずばり&lt;br/&gt;iTunes のための iTunes による Folder 生成 | File 生成なのかな? と。&lt;br/&gt;2010/03/08 現在ではこれ以外の場面で UTF8-MAC への変換なんて一般的には必要とされてないことなのかもしれません。&lt;br/&gt;&lt;br/&gt;ただ、今後 iPad が登場しまた新しくiのつく名前のアプリケーションがでてきたりすると UTF8-MAC への変換に対する需要は増えるかもしれませんね？電子書籍を買って読むための iBooks.app が OS X に搭載される日は案外近い将来かもしれません。&lt;br/&gt;&lt;a href='http://www.apple.com/ipad/features/'&gt;iPad&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;それで、例えば iBooks.app が生成するであろう著書名のついたファイルにアクセスする際、もしも著書名に\&amp;amp; や\s が含まれていたり日本語だったりしたらRuby からそれらのファイルにアクセスしようとするのはちょっと困難がありそうです。いまの iTunes ファイル群と同様に。&lt;br/&gt;# Ruby からはそういうファイル群にアクセスしないから大丈夫...といった意見の人もいるかもしれません。&lt;br/&gt;# あるいは上に書いた失敗例を[ちゃんとした]成功例にする方法を私が知らないだけのことなのかもしれません。&lt;br/&gt;# macustr.rb は一見成功してるようにみえるけどもちゃんとはしていないだろうし。&lt;br/&gt;&lt;br/&gt;はたまた違う観点からみた場合、セキュリティ的にどうなんだろう？って問題も私にはよくわからないけどきっとあるんだろうと思います。そっちが優先された上で現在こうなっているのであればこのままの方がうれしい人も多いのかもしれません?。&lt;br/&gt;&lt;br/&gt;ということで、幾日経過後のまとまりのない&amp;amp;とりとめないのない感想でした。&lt;br/&gt;&lt;br/&gt;# 私が間違った認識をしている可能性は多分にあります。何かお気付きの方はコメントお願いします。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5036255232248825889?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5036255232248825889/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5036255232248825889' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5036255232248825889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5036255232248825889'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/02/utf8-mac-2.html' title='UTF8-MAC [2]'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2694007765539190473</id><published>2010-02-24T10:06:00.000+09:00</published><updated>2010-02-26T07:02:20.965+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='mdiary'/><title type='text'>mdiary 最近の変更点</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;pre&gt;&lt;code&gt;  5     def initialize(arg)
  6       @err = false
  7       k, @h = nil, Hash.new
  8       arg.each{|x| m = /^-(.*)/.match(x); (m) ? (k = m[1].to_sym; @h[k] = nil) : @h[k] ||= x}
  9     end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;arg は ARGV の値 &lt;/p&gt;&lt;pre&gt;&lt;code&gt;% .mdiary-run.rb -d 2010-01 -s music
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行した場合 arg は&lt;/p&gt;&lt;pre&gt;&lt;code&gt;arg = ["-d", "2010-01", "-s", "music"]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;になる。line 8 はこの配列を &lt;/p&gt;&lt;pre&gt;&lt;code&gt;@h = {:d=&amp;gt;"2010-01", :s=&amp;gt;"music"} 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;のようなハッシュにするためのもの。&lt;br/&gt;&lt;br/&gt;arg = ["-d", "2010-01", "-l", "3"] だった場合&lt;br/&gt;@h={:d=&amp;gt;"2010-01", :l=&amp;gt;"3"}&lt;br/&gt;&lt;br/&gt;arg = ["-d", "2010-01", "-l"] だった場合&lt;br/&gt;@h={:d=&amp;gt;"2010-01", :l=&amp;gt;nil}&lt;br/&gt;になる。&lt;br/&gt;&lt;br/&gt;line 7-8 をくだいて書くと&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 # arg = ["-d", "2010-01", "-s", "music"]
  2 k, @h = nil, Hash.new
  3 arg.each{|x| 
  4   m = /^-(.*)/.match(x)
  5   if m
  6     k = m[1].to_sym
  7     @h[k] = nil
  8   else
  9     @h[k] ||= x
 10   end
 11 } 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;line 4: x が '-' で始まっていたら m の値は #&amp;lt;MatchData "-d" 1:"d"&amp;gt;&lt;br/&gt;line 5: m の値に何か入っていたら(マッチしたら)&lt;br/&gt;line 6: k に m の1番目のマッチの値を代入。&lt;br/&gt;line 7: ハッシュキーが k で 値が nil のペアを @h に格納。&lt;br/&gt;line 8: m の値に何もはいっていなければ(マッチしなかったら)&lt;br/&gt;line 9: @h[k] が nil の場合は x を代入。@h[k] の値が nil でなく何か値が入っていたら何もしない。&lt;br/&gt;&lt;br/&gt;+++ memo +++&lt;br/&gt;&lt;br/&gt;1) @h[k] ||= x&lt;br/&gt;&lt;br/&gt;line 9 の @h[k] ||= x を @h[k] = x　にしてしまうと&lt;br/&gt;あやまって&lt;br/&gt;arg = ["-d", "2010-01", "xxx", "-s", "music"]&lt;br/&gt;が与えられてしまった時&lt;br/&gt;@h = {:d=&amp;gt;"xxx", :s=&amp;gt;"music"}&lt;br/&gt;になってしまう。これでは意図した結果と異なる為 ||= にしている。&lt;br/&gt;&lt;br/&gt;2) k = nil&lt;br/&gt;&lt;br/&gt;line 2 の k = nil を書き忘れ&lt;br/&gt;line 2 は @h = Hash.new だけだった場合&lt;br/&gt;arg = ["-d", "2010-01", "-s", "music"] を与えると&lt;br/&gt;@h={:d=&amp;gt;nil, nil=&amp;gt;"2010-01", :s=&amp;gt;nil} &lt;br/&gt;になってしまう。&lt;br/&gt;なぜなら...&lt;br/&gt;{}　の外側に k が存在していなければ k は {} の中だけで使える変数となり&lt;br/&gt;m == nil でなければ&lt;br/&gt;k = m[1].to_sym なので k には m[1].to_sym が代入されるが&lt;br/&gt;&lt;br/&gt;m == nil だった場合、すなわち else 節においては&lt;br/&gt;k = nil が代入されてしまうから。そして&lt;br/&gt;line 9: @h[k] ||= x&lt;br/&gt;で nil を ハッシュキーとしたペア(nil=&amp;gt;"2010-01")を @h に格納することになってしまう。&lt;br/&gt;&lt;br/&gt;だから{} の外側の k = nil はとても大切。&lt;br/&gt;外側で定義された k があることによって else 節においても k は m[1].to_sym を保持していてくれる。&lt;br/&gt;&lt;br/&gt;[2010-02-26]&lt;br/&gt;&lt;del&gt;arg.each{|x| m = /(^-(.*))/.match(x); (m) ? (k = m[2].to_sym; @h[k] = nil) : @h[k] ||= x}&lt;/del&gt;&lt;br/&gt;arg.each{|x| m = /^-(.*)/.match(x); (m) ? (k = m[1].to_sym; @h[k] = nil) : @h[k] ||= x}&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2694007765539190473?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2694007765539190473/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2694007765539190473' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2694007765539190473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2694007765539190473'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/02/mdiary.html' title='mdiary 最近の変更点'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4585067481204171641</id><published>2010-02-22T19:40:00.000+09:00</published><updated>2011-02-19T10:48:57.994+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='AppleScript'/><title type='text'>UTF8-MAC</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='https://discussionsjapan.apple.com/thread/10085390;jsessionid=A9BCA6F7A81965D6CB88582A3D73A664.node0?tstart=1'&gt;ここ&lt;/a&gt;を読んで&lt;br/&gt;&lt;br/&gt;私も perl でためしてみました。&lt;br/&gt;% cat test.pl&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#!/usr/bin/perl
while(&amp;lt;&amp;gt;) {
    chop;
    print "Making a folder $_...\n";
    mkdir();
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;% cat 02.txt&lt;/p&gt;&lt;pre&gt;&lt;code&gt;ABC_a'bc 織田 信長
ABC_e'fg 豊臣 秀吉
ふげふが リファレンス&amp;amp; ドロー
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;% ./test.pl 02.txt &lt;br/&gt;Making a folder ABC_a'bc 織田 信長...&lt;br/&gt;Making a folder ABC_e'fg 豊臣 秀吉...&lt;br/&gt;Making a folder ふげふが リファレンス&amp;amp; ドロー...&lt;br/&gt;&lt;br/&gt;わざと\s や ' や濁点や &amp;amp; を入れてみましたがちゃんとおかしな名前のフォルダが出来上がりました。&lt;br/&gt;&lt;br/&gt;で、Ruby ではどうなのでしょ。&lt;br/&gt;% cat test.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#!/path/to/ruby19
# coding: utf-8
ARGF.each{|line|
  system ("mkdir #{line}")
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;% ./test.rb 02.txt&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ./test.rb 02.txt 
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
sh: ドロー: command not found
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;こうなるのは予測していたので&lt;br/&gt;&lt;br/&gt;&lt;a href='http://gihyo.jp/dev/serial/01/ruby/0004?page=2'&gt;http://gihyo.jp/dev/serial/01/ruby/0004?page=2&lt;/a&gt; を読み直し&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#!/path/to/ruby19
# coding: utf-8
require 'nkf'
ARGF.each{|line|
  ustr = NKF::nkf('--ic=UTF-8 --oc=UTF8-MAC', line)
  system ("mkdir #{ustr}")
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;nkf を使ってみました。が、最初と同じエラーが現れ ふげふが/  リファレンス/ の2のフォルダができました。&lt;br/&gt;&lt;br/&gt;結果をみると \s のところでパスが区切られてしまったようなので&lt;br/&gt;gustr = ustr.gsub(/\s/, "\\ ")&lt;br/&gt;を挟んでみたものの ”&amp;amp;” でまたパスを区切られてしまいました。結局エラーになりそうな文字(て何?)を全て gsub しないとだめなのかもしれません。いやいやそんなことじゃなく正しい指定(nkf の)さえ分かればいいだけのことなのかもしれません。&lt;br/&gt;あーわからない。&lt;br/&gt;&lt;br/&gt;このままで話が終わるのはなんだか後味が悪いので AppleScript で Ruby を呼んでみました。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;tell application "Finder"
  activate
  set cf to choose file with prompt "読み込みたいテキストファイル_UTF-8_を選択してください。"
  set dst to choose folder with prompt "保存先フォルダを選択してください。"
  set f to quoted form of POSIX path of cf
  set rubyfile to quoted form of POSIX path of (((folder of file cf) as text) &amp;amp; "ioread.rb")
  # ---------------------------
  try
    set str to do shell script "/usr/bin/ruby" &amp;amp; space &amp;amp; rubyfile &amp;amp; space &amp;amp; f
    set ary to paragraphs of str
    if (count of ary) &amp;gt; 3 then # this line
      return display dialog "体力の限界です。" buttons {"OK"} default button 1 with title "Oh, NO "
    end if
    repeat with fname in ary
      make new folder at (dst) with properties {name:fname}
    end repeat
  on error error_str
    display dialog error_str buttons {"OK"} default button 1 with title "Error"
  end try
end tell
# return AppleScript's version =&amp;gt; "2.1.1"
&lt;/code&gt;&lt;/pre&gt;&lt;p/&gt;&lt;pre&gt;&lt;code&gt;% cat ioread.rb 
#!/usr/bin/ruby
f = ARGV[0]
print nil unless f
ary = IO.readlines(f)
ary.delete("\n")
print ary
&lt;/code&gt;&lt;/pre&gt;&lt;p/&gt;&lt;pre&gt;&lt;code&gt;% ls -F
ABC_a'bc 織田 信長/                                  ふげふが リファレンス&amp;amp; ドロー/
ABC_e'fg 豊臣 秀吉/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;ちゃんとおかしな名前のフォルダができました。&lt;br/&gt;テストなんでフォルダの数は３つまでに制限かけておきました。# this line のところ。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;+++ 追記 +++ &lt;br/&gt;2010-02-22&lt;br/&gt;しばらくしたら思いつきました。文字ごとに gsub してみようと。&lt;br/&gt;&lt;br/&gt;% cat 02.txt&lt;/p&gt;&lt;pre&gt;&lt;code&gt;ABC_&amp;amp;a'bc 織田 信長
ABC_e'fg 豊臣 秀吉
ふげふが リファレンス&amp;amp; ドロー
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;test.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 #!/path/to/ruby19
  2 # coding: utf-8
  3 
  4 require 'nkf'
  5 def ex(line)
  6   mu = String.new("")
  7   ary = line.each_char{|x|
  8     gx = x.gsub(
  9       /[\s\'\(\)\+\!\&amp;amp;\,\[\]\;]/,
 10       " "=&amp;gt;"\\ ", "'"=&amp;gt;"\\'",
 11       "("=&amp;gt;"\\(", ")"=&amp;gt;"\\)",
 12       "+"=&amp;gt;"\\+", "!"=&amp;gt;"\\!",
 13       "&amp;amp;"=&amp;gt;"\\&amp;amp;", "."=&amp;gt;"\\.",
 14       "ï"=&amp;gt;"\\i", ","=&amp;gt;"\\,",
 15       "["=&amp;gt;"\\[", "]"=&amp;gt;"\\]",
 16       ";"=&amp;gt;"\\;"
 17     ) 
 18     mu &amp;lt;&amp;lt; gx
 19   } 
 20   p macustr = NKF::nkf('--ic=UTF-8 --oc=UTF8-MAC', mu)
 21   p macustr.encoding
 22   system ("mkdir #{macustr}")
 23 end
 24 
 25 ARGF.each{|line| ex(line)}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;% ./test.rb 02.txt&lt;/p&gt;&lt;pre&gt;&lt;code&gt;"ABC_\\&amp;amp;a\\'bc\\ 織田\\ 信長"
#&amp;lt;Encoding:UTF8-MAC&amp;gt;
"ABC_e\\'fg\\ 豊臣\\ 秀吉"
#&amp;lt;Encoding:UTF8-MAC&amp;gt;
"ふげふが\\ リファレンス\\&amp;amp;\\ ドロー"
#&amp;lt;Encoding:UTF8-MAC&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;% ls -F&lt;/p&gt;&lt;pre&gt;&lt;code&gt;02.txt                                               test.rb*
ABC_&amp;amp;a'bc 織田 信長/                                 ふげふが リファレンス&amp;amp; ドロー/
ABC_e'fg 豊臣 秀吉/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;line 10　"'" を "\\'" と&lt;del&gt;スラッシュ&lt;/del&gt;バックスラッシュ２つにしてみたらうまくいった。それがなぜなのかは分かっていない。&lt;br/&gt;こういうのは力技と呼ばれることなんだろう。&lt;br/&gt;&lt;br/&gt;&lt;a href='http://midorex.blogspot.com/2010/02/utf8-mac-2.html'&gt;UTF8-MAC [2]&lt;/a&gt; へ続く&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[2011-02-19]&lt;br/&gt;&lt;br/&gt;2010-02 時点での敗因はただ単にchomp しわすれとsystem コマンド発行する引数を'' で囲まなかったこと。それだけ。びっくりする愚かなおち。&lt;br/&gt;nkf とかね関係ありません...。&lt;br/&gt;それにしても今読み返してつくづく...単純ミスから泥沼していく様は自分でもあきれました。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% cat a.txt
ふげふが &amp;amp;どろー
% cat test.rb
# coding: utf-8

ARGF.each{|x|
  s =  "\'#{x.strip}\'"
  p sh = system("mkdir #{s}")
}
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;% ruby -v test.rb a.txt
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
true
% ls
a.txt                            test.rb                          ふげふが &amp;amp;どろー
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;ruby 1.9.2&lt;br/&gt;でも同様の結果。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4585067481204171641?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4585067481204171641/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4585067481204171641' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4585067481204171641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4585067481204171641'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/02/utf8-mac.html' title='UTF8-MAC'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6026694528106940695</id><published>2010-02-17T19:44:00.000+09:00</published><updated>2010-03-04T16:28:44.895+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>git push error</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;% git push origin master&lt;br/&gt;を実行したら&lt;/p&gt;&lt;pre&gt;&lt;code&gt; ! [rejected]        master -&amp;gt; master (non-fast-forward)

error: failed to push some refs to (...略) 
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'non-fast-forward'
section of 'git push --help' for details.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;となってしまった。思い当たることとしては OS を再インストールして git repository へのパスを変えてしまったことと git のバージョンをあげたこと。&lt;br/&gt;&lt;br/&gt;% git push --help&lt;br/&gt;を&lt;br/&gt;/non-fast-forward&lt;br/&gt;next していたら次のような文章があった。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;       There is another common situation where you may encounter non-fast-forward rejection when you try to push, and it is possible even
       when you are pushing into a repository nobody else pushes into. After you push commit A yourself (in the first picture in this
       section), replace it with "git commit --amend" to produce commit B, and you try to push it out, because forgot that you have pushed A
       out already. In such a case, and only if you are certain that nobody in the meantime fetched your earlier commit A (and started
       building on top of it), you can run "git push --force" to overwrite it. In other words, "git push --force" is a method reserved for a
       case where you do mean to lose history.

&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;辞書をひきつつ 2 回読んでみたけどもなぜこうなってしまったのか？や、どうすればいいのか？は読み解けない。&lt;br/&gt;&lt;br/&gt;Google にて "non-fast forward"&lt;br/&gt;を検索してみたところ&lt;br/&gt;&lt;a href='http://blog.digital-squad.net/article/132085683.html'&gt;http://blog.digital-squad.net/article/132085683.html&lt;/a&gt;&lt;br/&gt;に&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;こういうときは --forceオプションをつけてやることで強制的にpushできる。&lt;br/&gt;git push origin master --force&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;とありまして --force をつけて試してみるとあっさり git push に成功しました。とても助かりました。&lt;br/&gt;一時は ssh-keygen で鍵を作りなおさなくちゃいけないのかと思った。&lt;br/&gt;&lt;br/&gt;さて、落ち着いてから上の英文を読みなおすと&lt;/p&gt;&lt;pre&gt;&lt;code&gt;you can run "git push --force" to overwrite it. In other words, "git push --force" is a method reserved for a
       case where you do mean to lose history.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;... "git push --force" はあなたが歴史を失うケースに備えての予備のメソッド?&lt;br/&gt;間違えて読んでる可能性大だけど歴史を失うとはどういうことだろ。&lt;br/&gt;OS 再インストールしてパスが変わってるから何かが失われたってことなのかな。何が？&lt;br/&gt;&lt;br/&gt;% git log &lt;br/&gt;ちゃんと動いてる。最初からのlog もみえてる。はて？&lt;br/&gt;&lt;br/&gt;+++ 教訓 +++&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% git push midore@github.com:midore/mblogger.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;などしても&lt;/p&gt;&lt;pre&gt;&lt;code&gt;...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;エラーになる。だからといって ~/.ssh/ の中の鍵のパーミションが関係してる？とか考えない。&lt;br/&gt;&lt;br/&gt;remote 先を明示したい時は&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% git push git@github.com:midore/mblogger.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;~/.gitconfig や ~/.ssh/ にゆるぎない自信があれば&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% git push origin master
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で OK.&lt;br/&gt;&lt;br/&gt;[後日談]&lt;br/&gt;入門Git(秀和システム) を読みましてこの時何がおこっていたか？を考えてみました。&lt;br/&gt;p81 に non fast forward エラーについて解説がありました。&lt;br/&gt;&lt;br/&gt;私の場合OS を入れ替える前にバックアップをとり、OS を新規インストールした後にこのバックアップから&lt;br/&gt;local git repository を読み込んだわけだけどもバックアップした直後で新規インストールする直前に &lt;br/&gt;github.com/midore/mdiary に対してgit push　しちゃっていたのかもしれません(驚)&lt;br/&gt;だとすればこの挙動はものすごく納得がいきます。&lt;br/&gt;バックアップとった後に git push した記憶がない自分が怖い...&lt;br/&gt;&lt;br/&gt;私がうっかり git push していたのならば上記の対処は正しいやり方じゃなかったようです。&lt;br/&gt;% git pull &lt;br/&gt;を使い&lt;br/&gt;(pull 先は add remote  した先を指し、clone したproject の場合は自動的にclone 元になるそうだ) &lt;br/&gt;github.com においてあるリポジトリの最新コミットと手元のリポジトリのコミットをマージさせるべきでした。&lt;br/&gt;git pull してみればどこで conflict していたか明らかになったはずなのでした。&lt;br/&gt;（ただしgit push した記憶がない状態で pull する勇気をもてたかは不明）&lt;br/&gt;conflict メッセージがでていたのならそのファイルを編集した上でcommit するべきだったのかもしれません。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6026694528106940695?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6026694528106940695/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6026694528106940695' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6026694528106940695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6026694528106940695'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/02/git-push-error.html' title='git push error'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-599955904880636055</id><published>2010-02-16T13:00:00.000+09:00</published><updated>2010-02-18T23:23:28.431+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='AppleScript'/><title type='text'>Remove resource fork in AppleScript</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;私は Twitter に参加していませんが何日か前に Google Reader で&lt;br/&gt;&lt;a href='http://twitter.com/yukihiro_matz/statuses/9010806982'&gt;急募: OS XのiTunesから、mp3ファイルを_リソースフォークなしに...&lt;/a&gt;&lt;br/&gt;を見かけました。&lt;br/&gt;&lt;br/&gt;早速 AppleScript で try&lt;/p&gt;&lt;pre&gt;&lt;code&gt;tell application "Finder"
  set src to quoted form of POSIX path of (choose folder)
  set dst to quoted form of POSIX path of (choose folder)
  set str to "ditto -v --norsrc  " &amp;amp; src &amp;amp; "  " &amp;amp; dst
  do shell script str
end tell
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;日本語名のフォルダを指定しても大丈夫でした。でもこれだけだと愛想がないのでいろいろ付け足し。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# remove-resource-forlk.scpt
tell application "Finder"
  # フォルダを選択
  set src to quoted form of POSIX path of (choose folder with prompt "リソースフォークをまるっと取り除きたいフォルダを選択してください。")
  # 保存先フォルダの選択
  set dst to quoted form of POSIX path of (choose folder with prompt "保存先であるフォルダを選択してください。")
  # コマンド文字列
  set str to "ditto -v --norsrc  " &amp;amp; src &amp;amp; "  " &amp;amp; dst
  if src is dst then
    set err_str to "指定したフォルダと保存先であるフォルダが同じです！異なるフォルダを選択してください。"
    display dialog err_str buttons {"OK"} default button 1 with icon 2 with title "Error"
    return
  end if
  set warn_str to "多くのファイルが含まれているフォルダを選択した場合時間がかかる（数分）場合があります。よろしいですか？"
  display dialog warn_str buttons {"OK", "Cancel"} default button 2 with icon 2 with title "Warning"
  try
  # コマンドの実行
  set res to do shell script str
  on error num
    display dialog "エラーが発生しました。" buttons {"OK"} default button 1
    return
  end try
  if res is "" then display dialog "おわりました。" buttons {"OK"} default button 1 with icon 1 with title "Success"
end tell
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;[用途]&lt;br/&gt;フォルダに含まれるファイルからリソースフォークを削除したファイルを保存先フォルダに保存します。（もとのファイル名は維持されます。）&lt;br/&gt;複数のフォルダ&lt;del&gt;が&lt;/del&gt;を内包しているフォルダを指定した場合、保存先フォルダの階層は、もとのフォルダの階層を維持します。&lt;br/&gt;&lt;br/&gt;# iTunes Music フォルダにあるミュージシャン(Artist) の名前がついたフォルダを選択すると、そこに含まれるアルバム名のついたフォルダにある音楽ファイル( 末尾に.m4a .mp3 などの名前のついたファイル)から、リソースフォークを削除したものを、保存先フォルダに保存します。&lt;br/&gt;# ターミナルからコマンドを叩くことなく、操作できます。&lt;br/&gt;&lt;br/&gt;[使い方]&lt;br/&gt;Finder メニュ-&amp;gt; 移動-&amp;gt; アプリケーションを開く （Command + Shift + A でApplication フォルダ を表示)&lt;br/&gt;-&amp;gt;ユーティリティ -&amp;gt;AppleScript Editor.app(AppleScript エディタ.app) をダブルクリックで起動し新しいファイルを作り上記をコピー and ペーストします。&lt;br/&gt;&lt;br/&gt;1, コマンドKey(⌘) + K でコンパイルします。&lt;br/&gt;2, コマンドKey(⌘) + S で File 保存(必ずスクリプト として)&lt;br/&gt;3, コマンドKey(⌘) + R で実行 です。&lt;br/&gt;&lt;br/&gt;処理がおわると『おわりました。』と表示します。エラーが発生した場合は『エラーが発生しました。』と表示します。&lt;br/&gt;&lt;br/&gt;複数のアルバムフォルダが含まれている ミュージシャン(Artist) のフォルダなどを選択するとファイル数にして何百曲などのファイルを処理することになります。その場合ものすごく時間がかかる(数分)こともあります。なので最初は下記の手順でテストしてみてどのくらい時間がかかるものかを体感してみてください。&lt;br/&gt;&lt;br/&gt;[テスト手順]&lt;br/&gt;(1) デスクトップに2つ新規フォルダを作りそれぞれ「SRC」「DST」と名付けておく。&lt;br/&gt;(2) 「SRC」フォルダの中にリソースフォークを取り除きたいフォルダを1 つだけコピーしておく。&lt;br/&gt;　　その際極力ファイル数の少ないフォルダを選ぶ。&lt;br/&gt;   「DST」フォルダは空っぽのままにしておく。&lt;br/&gt;(3) 保存しておいた AppleScript ファイルを開いてから コマンドKey(⌘) + R をおす。または「実行」ボタンを押す。&lt;br/&gt;「リソースフォークをまるっと...」ときかれたら「SRC」を選ぶ。&lt;br/&gt;「保存先...」 ときかれたら 「DST」を選ぶ。&lt;br/&gt;&lt;br/&gt;処理している間はなんのメッセージも表示しません。&lt;br/&gt;10 枚程のファイルを処理した場合 2,3 秒でおわります。&lt;br/&gt;&lt;br/&gt;# 注意1: &lt;br/&gt;OS X 10.5x 時代のファイルにはリソースフォークがついてるけど、Snow Leopard 時代に作ったファイルにはついてません。&lt;br/&gt;&lt;br/&gt;# 注意2: &lt;br/&gt;指定フォルダとしてミュージシャン(Artist)名のついたフォルダを指定し&lt;br/&gt;保存先フォルダには適当な名前(「test」とか)のフォルダを指定し実行した場合&lt;br/&gt;&lt;br/&gt;iTunes-&amp;gt;詳細-&amp;gt;”iTunes Media”フォルダを整理する&lt;br/&gt;にチェックをいれてから保存先フォルダ（「test」とか）を iTunes に取り込むと本来のミュージシャン(Artist)名のついたフォルダ名に自動変換されます。&lt;br/&gt;(iTunes 9.03)&lt;br/&gt;&lt;br/&gt;[ターミナルで確認]&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# % ditto -h
# % xattr -h

# 指定フォルダ: test-src
# 保存先フォルダ: test-dst
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;指定フォルダ内&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ls -FRl test-src/
total 0
drwx------  3 foo  staff  102  2 15 16:35 Makana/
drwx------  3 foo  staff  102  2  4 11:48 平沢 進/

test-src//Makana:
total 0
drwx------  17 foo  staff  578  2 15 16:33 Different Game/

test-src//Makana/Different Game:
total 92824
-rw-------@ 1 foo  staff  4428672  6  6  2009 01 Away.m4p
-rw-------@ 1 foo  staff   623834  2  4 18:09 02 Interlude I.m4p
-rw-------@ 1 foo  staff  3821305  6  6  2009 03 Mars Declares.m4p
# ... 略

test-src//平沢 進:
total 0
drwx------  4 foo  staff  136  2  4 11:48 時空の水/

test-src//平沢 進/時空の水:
total 15344
-rw-------@ 1 foo  staff  4542192  4  4  2008 01 ハルディン・ホテル.m4p
-rw-------@ 1 foo  staff  3311160  4  4  2008 10 金星.m4p

% xattr -x test-src/Makana/Different\ Game/01\ Away.m4p 
# =&amp;gt; com.apple.FinderInfo

% xattr -x test-src/平沢\ 進/時空の水/01\ ハルディン・ホテル.m4p
# =&amp;gt; com.apple.FinderInfo
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;AppleScipt 実行後&lt;br/&gt;保存先フォルダ内&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ls -FRl test-dst/
total 0
drwx------  3 foo  staff  102  2 15 16:35 Makana/
drwx------  3 foo  staff  102  2  4 11:48 平沢 進/

test-dst//Makana:
total 0
drwx------  17 foo  staff  578  2 15 16:33 Different Game/

test-dst//Makana/Different Game:
total 92824
-rw-------  1 foo  staff  4428672  6  6  2009 01 Away.m4p
-rw-------  1 foo  staff   623834  2  4 18:09 02 Interlude I.m4p
-rw-------  1 foo  staff  3821305  6  6  2009 03 Mars Declares.m4p
# ... 略

test-dst//平沢 進:
total 0
drwx------  4 foo  staff  136  2  4 11:48 時空の水/

test-dst//平沢 進/時空の水:
total 15344
-rw-------  1 foo  staff  4542192  4  4  2008 01 ハルディン・ホテル.m4p
-rw-------  1 foo  staff  3311160  4  4  2008 10 金星.m4p

% xattr -x test-dst/Makana/Different\ Game/01\ Away.m4p
# =&amp;gt; 何もかえってこない。

% xattr -x test-dst/平沢\ 進/時空の水/01\ ハルディン・ホテル.m4p
# =&amp;gt; 何もかえってこない。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;[2010-02-16]&lt;br/&gt;s/errr_str/err_str/g&lt;br/&gt;s/warm_str/warn_str/g&lt;br/&gt;s/やめる/Cancel/g&lt;br/&gt;[2010-02-18]&lt;br/&gt;s/folk/fork/g&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-599955904880636055?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/599955904880636055/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=599955904880636055' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/599955904880636055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/599955904880636055'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/02/remove-resource-folk-in-applescript.html' title='Remove resource fork in AppleScript'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5908554825378050714</id><published>2010-02-11T08:52:00.001+09:00</published><updated>2010-05-31T22:20:56.736+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><category scheme='http://www.blogger.com/atom/ns#' term='x'/><title type='text'>Snow Leopard Re-Install memo</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;# backup&lt;br/&gt;$ sudo launchctl bslist -j &amp;gt; default-launchctl-bslist.txt&lt;br/&gt;# PRAM Clear&lt;br/&gt;# $ sudo nvram &lt;del&gt;-c&lt;/del&gt; -xp&lt;br/&gt;&lt;br/&gt;0) Remove Extensions&lt;br/&gt;# Bluetooth &lt;br/&gt;$ sudo srm -rf /System/Library/Extensions/IOBluetooth*&lt;br/&gt;# iSight&lt;br/&gt;$ sudo srm -rf /System/Library/Extensions/Apple_iSight.kext/&lt;br/&gt;$ sudo srm -rf /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/&lt;br/&gt;&lt;br/&gt;# Touch&lt;br/&gt;$ sudo touch /System/Library/Extensions/&lt;br/&gt;&lt;br/&gt;# blued&lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.blued.plist&lt;br/&gt;$ sudo chmod 600 /usr/sbin/blued &lt;br/&gt;&lt;br/&gt;$ sudo reboot &lt;br/&gt;&lt;br/&gt;1) mDNSResponder.plist&lt;br/&gt;$ ps aux | grep mDNS&lt;br/&gt;# =&amp;gt; ... /usr/sbin/mDNSResponder -launchd&lt;br/&gt;&lt;br/&gt;&lt;del&gt;$ sudo vi /System/Library/com.apple.mDNSResponder.plist&lt;/del&gt;&lt;br/&gt;$ sudo vi /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist&lt;/p&gt;&lt;pre&gt;&lt;code&gt;        &amp;lt;array&amp;gt;
                &amp;lt;string&amp;gt;/usr/sbin/mDNSResponder&amp;lt;/string&amp;gt;
                &amp;lt;string&amp;gt;-launchd&amp;lt;/string&amp;gt;
                &amp;lt;string&amp;gt;-NoMulticastAdvertisements&amp;lt;/string&amp;gt;
        &amp;lt;/array&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# Reload com.apple.mDNSResponder.plist&lt;br/&gt;$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist&lt;br/&gt;$ sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist&lt;br/&gt;&lt;br/&gt;$ ps aux | grep mDNS&lt;br/&gt;# =&amp;gt; ....  /usr/sbin/mDNSResponder -launchd -NoMulticastAdvertisements&lt;br/&gt;&lt;br/&gt;See: support.apple.com/kb/HT3789&lt;br/&gt;&lt;br/&gt;2) change mode&lt;br/&gt;$ man samba&lt;br/&gt;$ apropos smbd&lt;br/&gt;&lt;br/&gt;$ sudo chmod 600 /usr/sbin/nmbd&lt;br/&gt;$ sudo chmod 600 /usr/sbin/smbd&lt;br/&gt;$ sudo chmod 600 /usr/sbin/cupsaddsmb&lt;br/&gt;&lt;br/&gt;$ sudo chmod 600 /usr/bin/smb*&lt;br/&gt;$ sudo chmod 600 /usr/bin/nmblookup&lt;br/&gt;$ sudo chmod 600 /etc/smb.conf&lt;br/&gt;$ sudo chmod 600 /etc/smb.conf.template&lt;br/&gt;&lt;br/&gt;# httpd&lt;br/&gt;$ sudo chmod 600 /usr/sbin/httpd&lt;br/&gt;&lt;br/&gt;# sshd&lt;br/&gt;$ sudo chmod 600 /usr/sbin/sshd&lt;br/&gt;&lt;br/&gt;# ftpd&lt;br/&gt;# sudo chmod 600 /usr/libexec/ftpd&lt;br/&gt;&lt;br/&gt;# nfsd&lt;br/&gt;$ sudo chmod 600 /sbin/nfsd &lt;br/&gt;&lt;br/&gt;# Apple FileServer&lt;br/&gt;# $ ls -la /usr/sbin/AppleFileServer&lt;br/&gt;$ sudo chmod 0 /System/Library/CoreServices/AppleFileServer.app/Contents/MacOS/AppleFileServer&lt;br/&gt;&lt;br/&gt;# ae server (Apple Event)&lt;br/&gt;# $ more /System/Library/LaunchDaemons/com.apple.eppc.plist&lt;br/&gt;$ sudo chmod 0 /System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Versions/A/Support/AEServer&lt;br/&gt;&lt;br/&gt;# Problem Reporter&lt;br/&gt;$ sudo chmod 600 /System/Library/CoreServices/Problem\ Reporter.app/Contents/MacOS/Problem\ Reporter &lt;br/&gt;&lt;br/&gt;See: &lt;a href='http://www.macosxhints.com/'&gt;http://www.macosxhints.com/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;# Plug-Ins&lt;br/&gt;$ ls -la /Library/Internet\ Plug-Ins/&lt;br/&gt;$ sudo chmod 700 /System/Library/Frameworks/JavaVM.framework/Resources/JavaPluginCocoa.bundle&lt;br/&gt;$ sudo chmod 700 /Library/Internet\ Plug-Ins/Flash Player.plugin&lt;br/&gt;$ sudo chmod 700 /Library/Internet\ Plug-Ins/QuickTime Plugin.plugin&lt;br/&gt;$ sudo chmod 0 /Library/Internet\ Plug-Ins/NP-PPC-Dir-Shockwave&lt;br/&gt;$ ls -la /Library/Internet\ Plug-Ins/&lt;br/&gt;&lt;br/&gt;3) launchctl unload&lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.cups.cupsd.plist&lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.x.privileged_startx.plist &lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.webdavfs_load_kext.plist &lt;br/&gt;&lt;br/&gt;# com.apple.smb.server.preferences.plist  com.apple.smb.sharepoints.plist         com.apple.smbfs_load_kext.plist         &lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smb.sharepoints.plist&lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smb.server.preferences.plist &lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smbfs_load_kext.plist &lt;br/&gt;&lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.RFBRegisterMDNS_ScreenSharing.plist &lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.RFBRegisterMDNS_RemoteManagement.plist &lt;br/&gt;&lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.printtool.plist &lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.portmap.plist &lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.nfsd.plist &lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.RemoteDesktop.PrivilegeProxy.plist&lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.IIDCAssistant.plist&lt;br/&gt;&lt;br/&gt;# 2010-03-30&lt;br/&gt;$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dashboard.advisory.fetch.plist&lt;br/&gt;&lt;br/&gt;# /System/Library/Filesystems/AppleShare/check_afp.app/Contents/MacOS/check_afp&lt;br/&gt;# $ more /System/Library/LaunchDaemons/com.apple.afpfs_checkafp.plist &lt;br/&gt;&lt;br/&gt;# /System/Library/Filesystems/AppleShare/afpLoad&lt;br/&gt;# $ more /System/Library/LaunchDaemons/com.apple.afpfs_afpLoad.plist&lt;br/&gt;&lt;br/&gt;# /System/Library/PrivateFrameworks/SoftwareUpdate.framework/Resources/suhelperd&lt;br/&gt;# $ more /System/Library/LaunchDaemons/com.apple.suhelperd.plist&lt;br/&gt;&lt;br/&gt;$ sudo launchctl bslist -j&lt;br/&gt;$ sudo lsof -i&lt;br/&gt;&lt;br/&gt;4) Spotlight&lt;br/&gt;# as admin-user&lt;br/&gt;$ sudo chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search&lt;br/&gt;$ sudo mdutil -i off /Volumes/abc&lt;br/&gt;$ sudo mdutil -E /Volumes/abc&lt;br/&gt;$ sudo mdutil -s /Volumes/abc&lt;br/&gt;&lt;br/&gt;See: &lt;a href='http://www.macosxhints.com/article.php?story=20091030173117381'&gt;http://www.macosxhints.com/article.php?story=20091030173117381&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;5) fseventsd&lt;br/&gt;$ sudo touch /Volumes/abc/.fseventsd/no_log&lt;br/&gt;$ sudo touch /Users/foo/.fseventsd/no_log&lt;br/&gt;$ sudo chmod 644 /Users/foo/.fseventsd/no_log&lt;br/&gt;$ sudo chown -R foo:staff /Users/foo/.fseventsd/&lt;br/&gt;&lt;br/&gt;See: &lt;a href='http://developer.apple.com/jp/documentation/Darwin/Conceptual/FSEvents_ProgGuide/FileSystemEventSecurity/chapter_5_section_4.html#//apple_ref/doc/uid/TP40005289-CH6-DontLinkElementID_3'&gt;ファイルシステムイベントストレージの防止&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;# default value "ttyskeepawake" of pmset is 1.&lt;br/&gt;$ sudo pmset ttyskeepawake 0&lt;br/&gt;&lt;br/&gt;See: &lt;a href='http://forums.applenova.com/showthread.php?t=33172'&gt;http://forums.applenova.com/showthread.php?t=33172&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;$ sudo reboot&lt;br/&gt;$ Login as admin-user&lt;br/&gt;$ syslog -w 120 | more&lt;br/&gt;&lt;br/&gt;# fseventsd[xx] &amp;lt;Critical&amp;gt;: Logging disabled completely for device:1: /Users/foo&lt;br/&gt;&lt;br/&gt;6) Login as User foo &lt;br/&gt;% rm ~/.fseventsd/000000*&lt;br/&gt;% mdutil -i off /Users/foo&lt;br/&gt;% mdutil -E /Users/foo&lt;br/&gt;% mdutil -s /Users/foo&lt;br/&gt;% pmset -g&lt;br/&gt;&lt;br/&gt;% syslog -w 30 &lt;br/&gt;# What is this warning ? &lt;br/&gt;#  (com.apple.ReportCrash) &amp;lt;Warning&amp;gt;: Falling back to default Mach exception handler. Could not find: com.apple.ReportCrash.Self&lt;br/&gt;&lt;br/&gt;% more /System/Library/LaunchAgents/com.apple.ReportCrash.Self.plist&lt;br/&gt;&lt;br/&gt;% launchctl list | grep Repo&lt;/p&gt;&lt;pre&gt;&lt;code&gt;-	0	com.apple.ReportPanic
-	0	com.apple.ReportCrash.Self
-	0	com.apple.ReportCrash
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;See: &lt;a href='http://www.insanelymac.com/forum/index.php?showtopic=192563'&gt;http://www.insanelymac.com/forum/index.php?showtopic=192563&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;# User foo&lt;br/&gt;% mkdir ~/Library/LaunchAgents&lt;br/&gt;# if you did't set umask&lt;br/&gt;# % chmod 700 ~/Library/LaunchAgents&lt;br/&gt;&lt;br/&gt;% cd ~/Library/LaunchAgents&lt;br/&gt;% cp /System/Library/LaunchAgents/com.apple.ReportCrash.Self.Plist .&lt;br/&gt;&lt;br/&gt;# User admin&lt;br/&gt;$ su admin-user&lt;br/&gt;$ cd /path/to/backup-dir/&lt;br/&gt;$ sudo mv /System/Library/LaunchAgents/com.apple.ReportCrash.Self.Plist .&lt;br/&gt;&lt;br/&gt;# logout and login as User foo&lt;br/&gt;% syslog -w &lt;br/&gt;# not found, "...  (com.apple.ReportCrash) &amp;lt;Warning&amp;gt;: (...) Could not find: com.apple.ReportCrash.Self"&lt;br/&gt;&lt;br/&gt;[2010-02-11]&lt;br/&gt;# RemotManagement&lt;br/&gt;# $ sudo srm -rf /System/Library/CoreServices/RemoteManagement/&lt;br/&gt;# or&lt;br/&gt;# cd /path/to/backup-dir/&lt;br/&gt;# $ sudo mv /System/Library/CoreServices/RemoteManagement/ .&lt;br/&gt;&lt;br/&gt;[2010-02-12]&lt;br/&gt;# User foo&lt;br/&gt;# % launchctl list | grep Remote&lt;br/&gt;# =&amp;gt; exist.&lt;br/&gt; &lt;br/&gt;# Admin user&lt;br/&gt;# $ grep 'Remote' /System/Library/LaunchAgents/*&lt;br/&gt;# $ sudo mv /System/Library/LaunchAgents/com.apple.RemoteDesktop.plist /path/to/backup-dir/&lt;br/&gt;# $ sudo mv /System/Library/LaunchAgents/com.apple.ScreenSharing.plist /path/to/backup-dir/&lt;br/&gt;&lt;br/&gt;# reboot &lt;br/&gt;&lt;br/&gt;# User foo&lt;br/&gt;# % launchctl list | grep Remote&lt;br/&gt;# =&amp;gt; not exist.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[2010-05-31]&lt;br/&gt;Apple Releases Snow Leopard Security Configuration Guide&lt;br/&gt;&lt;a href='http://blog.intego.com/2010/05/26/apple-releases-snow-leopard-security-configuration-guide/'&gt;http://blog.intego.com/2010/05/26/apple-releases-snow-leopard-security-configuration-guide/&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Apple has released their Snow Leopard Security Configuration Guide,&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;Mac OS X Security Configuration Guides&lt;br/&gt;&lt;a href='http://www.apple.com/support/security/guides/'&gt;http://www.apple.com/support/security/guides/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5908554825378050714?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5908554825378050714/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5908554825378050714' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5908554825378050714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5908554825378050714'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/02/snow-leopard-re-install-memo.html' title='Snow Leopard Re-Install memo'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-607530735416722230</id><published>2010-01-20T20:52:00.002+09:00</published><updated>2010-02-13T11:57:13.616+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='mblogger'/><title type='text'>git-push</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;mblogger 変更点&lt;br/&gt;&lt;br/&gt;1, テキストファイルを読み込む処理方法と表示するエラーの変更。&lt;br/&gt;2, XML タグ生成に失敗した際 行内容とメッセージを表示するようにした。&lt;br/&gt;3, コンテンツ内容が空の場合は post も puts もできないようにした。&lt;br/&gt;4, その他 draft.txt, README なども若干変更&lt;br/&gt;5, mdiary と保存先ディレクトリが一致した場合、mdiary は年月別のサブディレクトリをかましているので mblogger もそれにあわせた。&lt;br/&gt;&lt;br/&gt;など。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-607530735416722230?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/607530735416722230/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=607530735416722230' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/607530735416722230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/607530735416722230'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/01/git-push.html' title='git-push'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5216884165470508296</id><published>2010-01-20T19:54:00.000+09:00</published><updated>2010-01-20T20:46:22.236+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><title type='text'>10.6.2 Spotlight OFF</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://www.macosxhints.com/article.php?story=20091030173117381'&gt;ここ&lt;/a&gt;を読んでSpotlight を無効にしてみた。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ sudo chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これを実行するとログイン時 syslog にエラーが検出されるようになる。が使っていて特に支障はないようだ。たぶん...。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ sudo mdutil -a -i off
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;$HOME の mdutil 状態確認。&lt;br/&gt;&lt;br/&gt;以前は&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ mdutil -s /Users/username/

　　　　Indexing enabled.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;だったが&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ mdutil -s /Users/username/

        Indexing disabled.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;になった。&lt;br/&gt;&lt;br/&gt;また&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ man mdutil

mdutil -- manage the metadata stores used by Spotlight
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とあるので&lt;br/&gt;Spotlight 自体をストップさせている訳ではないのだと想像するがよくわかっていない。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ launchctl list | grep meta
-	0	com.apple.metadata.mdwrite.plist
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;こっちには何も影響していない。ようだ。 &lt;br/&gt;&lt;br/&gt;要は、手動でシステム環境設定を開きスポットライト設定のプライバシーにおいては全てのボリュームを登録し、検索結果においては全てのカテゴリーのチェックを外したことと全く同様の結果になるのだと思う。&lt;br/&gt;ただ、一点の違いは、タイムマシン使用時などに外部ボリュームをマウントした場合に、違いが生じるのかな？sudo chmod しているから。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5216884165470508296?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5216884165470508296/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5216884165470508296' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5216884165470508296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5216884165470508296'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/01/1062-spotlight-off.html' title='10.6.2 Spotlight OFF'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-2993760626948663562</id><published>2010-01-14T20:59:00.001+09:00</published><updated>2010-01-20T21:19:04.551+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>google は中国を Free にする？</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;すばらしい news。&lt;br/&gt;&lt;a href='http://jp.techcrunch.com/archives/20100112google%E2%80%99s-china-stance-more-about-business-than-thwarting-evil/'&gt;Googleにとっての中国: 人権うんぬんよりも世界でのビジネスが第一&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href='http://gigazine.net/index.php?/news/comments/20091127_tiananmen_googled/'&gt;中国を含む各国版のGoogleで「天安門事件」を画像検索するとどうなるのか？ &lt;/a&gt;&lt;br/&gt;関連するnews&lt;br/&gt;&amp;lt;http://news.google.co.jp/news/more?pz=1&amp;amp;cf=all&amp;amp;ned=jp&amp;amp;ncl=d-eIca1RL6XFYMMoNLA9_rbSH7SAM&amp;amp;topic=h&amp;gt;&lt;br/&gt;&lt;br/&gt;結果的にどう転ぶにせよ、ビジネスが第一であろうとも、Google の決断はすばらしいと思いました。&lt;br/&gt;&lt;br/&gt;それにひきかえ、&lt;a href='http://news.google.co.jp/news/more?pz=1&amp;amp;cf=all&amp;amp;ned=jp&amp;amp;topic=b&amp;amp;ncl=dC59ST9BJgsML2MGKiIV74UBpUo_M'&gt;こちら&lt;/a&gt;はすばらしくない news。&lt;br/&gt;そのすばらしくない news の中のすばらしい情報。さすがは...。&lt;br/&gt;&lt;a href='http://slashdot.jp/yro/article.pl?sid=10/01/13/2048252'&gt;大手出版社21社、「日本電子書籍出版社協会」を立ち上げ。Amazonに対抗？ &lt;/a&gt;&lt;br/&gt;どの意見もえぐい。その中でもことさら際立っていた意見。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;「経済産業省の皆様に理事として天下っていただくためのハコを用意いたしました。つきましては、物書き風情がわれわれに歯向かって勝手に電子化などできないようにしてアマゾンを潰してください」&lt;br/&gt;って読むんだよ。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;まさにこのとおりなんだろう。&lt;br/&gt;でも基本的に今の日本で著作権者の契約の自由を侵害する権利は認められないはずなので、とーぜん限定された範囲内(既に出版されている著作物)のことなんだろう。と、信じていたい。&lt;br/&gt;&lt;br/&gt;他の場所で「これはカルテルだ」と言っている人もみかけたような気もするがわたしの気のせいかもしれない。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-2993760626948663562?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/2993760626948663562/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=2993760626948663562' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2993760626948663562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/2993760626948663562'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/01/google-free.html' title='google は中国を Free にする？'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6786361504825659672</id><published>2010-01-07T20:14:00.000+09:00</published><updated>2010-01-08T20:02:24.598+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Kindle DX</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://news.google.co.jp/news?hl=ja&amp;amp;q=Kindle+DX&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;ei=i7pFS6eTDIvg7APm0exl&amp;amp;sa=X&amp;amp;oi=news_group&amp;amp;ct=title&amp;amp;resnum=1&amp;amp;ved=0CBYQsQQwAA'&gt;Kindle DXのニュース検索結果 &lt;/a&gt;&lt;br/&gt;&lt;br/&gt;日本は電子ブック戦争になぜ敗れたのか&lt;br/&gt;&lt;a href='http://ascii.jp/elem/000/000/487/487838/'&gt;http://ascii.jp/elem/000/000/487/487838/&lt;/a&gt;&lt;br/&gt;ふーん pdf よめない?&lt;br/&gt;あれ、&lt;a href='http://slashdot.jp/mobile/article.pl?sid=09/11/26/056240'&gt;こっち&lt;/a&gt;には読めるとあった。&lt;br/&gt;&lt;br/&gt;読めるの読めないのどっち？ってことはあとでゆっくり調べることにして、&lt;br/&gt;&lt;br/&gt;それにしても、最初の ascii の記事&lt;a href='http://ascii.jp/elem/000/000/487/487838/index-2.html'&gt;２ページ目&lt;/a&gt;で気になったこと&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;しかし電子ブックには在庫リスクなんてないのだから、こんな不合理なシステムを守る必要はない。それなのに彼らはアマゾンの参入を求めようとしない...&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;この文章の意味、私にはさっぱりわかりませぬ。&lt;br/&gt;彼らって取り次ぎのこと？&lt;br/&gt;アマゾンの参入をもとめ&lt;del&gt;る&lt;/del&gt;ようとしない？はぁ？&lt;br/&gt;アマゾンさんも取り次ぎ業一緒にはじめませんか？楽しいですよって営業にいくの？なあほなね。&lt;br/&gt;それともアマゾンさん、商品全部全部 すべからく取り次ぎとーしてくださいよっ！て言うってこと？まさかね。&lt;br/&gt;&lt;br/&gt;ま、どうでもいけど、&lt;br/&gt;ここでいわれてる不合理なシステム、すなわち再販制度にとっては、kindle は黒船以外の何者でもないのでしょうね。&lt;br/&gt;&lt;br/&gt;あんまりなんでちょっと追記。(2010-01-08)&lt;br/&gt;&lt;br/&gt;第一に&lt;br/&gt;Kindle の物理的な特徴は、アマゾンに参入を求めるとか「認めるとか認めないとか」、そんな従来の井戸の中の蛙的価値観の枠の中で語ることを不可能至らしめてしまうであろうこと、そして Kindle の日本上陸とは、そういったレベルの出来事なんだってこと、を池田氏はちゃんと認識しているのかな？と疑問を持ってます。&lt;br/&gt;&lt;br/&gt;第二に不合理なシステム（再販制度）を持つ業界と電気産業とは基本的に別々の業界である以上、書籍の再販制度の不合理な点と、電気産業が独自の規格で我の支配を広げたがる話とは、似ているようで全く似ていない似て非なる話なのに、それをごっちゃにして日本側陣営のようにしてる点でも、首をかしげてしまってます。&lt;br/&gt;むしろ、不合理なシステムが不合理であることはえらい昔からわかってたことなので、それを変えることができないまま今日に至っているのは、なぜなのかにきりこんで欲しかったです。 &lt;br/&gt;&lt;br/&gt;第三に日本は取り残されると心配する心情は理解できなくもないけれども、ダイナミックな本の歴史の流れからみれば、そんな心配はささいな支流にすぎず、電気産業に肩入れしただけの単なる杞憂にすぎないと思う。Kindle のもたらす影響を考えれば　電機メーカー心配するより出版業界心配すべきだろ、とあきれています。&lt;br/&gt;日本の再販制度 vs アメリカ発電子本屋の市場競争の行く末は、どちらかが許容するだの認めるだのなんてあまっちょろいもんじゃないでしょうに。&lt;br/&gt;&lt;br/&gt;それに電子ブック戦争はこの日本ではこれからはじまるのだから、日本の電機メーカーが敗れたって言ってしまう（記事のタイトルにおいて）のは早すぎる結論なんじゃないのかな。Sony は先進的すぎて成功できなかったかもしれないけど日本においては今がチャンス到来なわけですし。&lt;br/&gt;もっとも、電子ブック戦争といえば、Apple の未来のデバイス vs Kindle を意味するようになっている時代がくるのかもしれません。&lt;br/&gt;&lt;br/&gt;とまれ、池田氏のトーンは時代の変化を受け入れているように読めるので、その点「だけ」は好感を持ってます。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6786361504825659672?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6786361504825659672/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6786361504825659672' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6786361504825659672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6786361504825659672'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/01/title.html' title='Kindle DX'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-7580049500134023544</id><published>2010-01-06T20:22:00.001+09:00</published><updated>2011-06-28T15:11:40.592+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='mblogger'/><title type='text'>mblogger</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://github.com/midore/mblogger'&gt;mblogger&lt;/a&gt; について&lt;br/&gt;&lt;br/&gt;gdata を使用して Ruby で遊びながら Blogger に投稿するためのツールです。&lt;br/&gt;&lt;br/&gt;必要なもの&lt;br/&gt;• Ruby 1.9.1&lt;br/&gt;• gdata-ruby-util  &amp;lt;http://code.google.com/p/gdata-ruby-util/downloads/list&amp;gt;&lt;br/&gt;• Blogger アカウント&lt;br/&gt;&lt;br/&gt;&lt;del&gt;この記事はテストをかねていたりしてます。&lt;/del&gt;&lt;br/&gt;&lt;br/&gt;[2010-01-07]&lt;br/&gt;&lt;del&gt;自分のBlogID を取得 or 確認するための get-blogid.rb を作りました。&lt;/del&gt;&lt;br/&gt;&lt;br/&gt;[その他のメモ]&lt;br/&gt;&lt;a href='http://www.google.com/support/forum/p/blogger/thread?tid=383ae127490f9fd3&amp;amp;hl=ja'&gt;blogの公開時間設定について&lt;/a&gt;&lt;br/&gt;2009-07-01 付けで投稿予定が実行されないトラブルがあるとのこと。&lt;br/&gt;&lt;del&gt;たしかにこの頃から、未来の日付をもつ記事を post しても記事公開の予約に反映されなくなった記憶がある。それ以前は未来の日付をもつ記事を post すると指定された時刻に自動的に記事が公開されていた。はず。なので、おそらく仕様が変わったのだろうと思う。&lt;/del&gt;&lt;br/&gt;&lt;br/&gt;カテゴリーを指定して Get Request を発行する場合のURL (2009-05-17)&lt;br/&gt;参照：&lt;br/&gt;&lt;a href='http://code.google.com/intl/ja/apis/blogger/docs/2.0/developers_guide_protocol.html'&gt;http://code.google.com/intl/ja/apis/blogger/docs/2.0/developers_guide_protocol.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;例：ラベル Fritz か Laurie を得るための URL&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;[2010-03-06]&lt;br/&gt;% cd /path/to/your/dir&lt;br/&gt;% git clone git://github.com/midore/mblogger.git mblogger&lt;br/&gt;% ls &lt;br/&gt;mblogger&lt;br/&gt;% cd mblogger&lt;br/&gt;% ls&lt;br/&gt;README bin    lib&lt;br/&gt;&lt;br/&gt;% git clone は、TCP PORT 9418&lt;br/&gt;を使用するのでファイアウォールなどを使用している場合は 9418 が出て行けるように設定する必要があります。&lt;br/&gt;&lt;br/&gt;[2011-06-28]&lt;br/&gt;get-blogid.rb を削除。&lt;br/&gt;&lt;br/&gt;関連する記事&lt;br/&gt;&lt;a href='http://midorex.blogspot.com/search/label/Blogger'&gt;"Blogger"ラベルがついた全ての記事&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-7580049500134023544?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/7580049500134023544/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=7580049500134023544' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7580049500134023544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7580049500134023544'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/01/mblogger.html' title='mblogger'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4402693662566168318</id><published>2010-01-06T00:16:00.001+09:00</published><updated>2010-01-06T00:40:26.659+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>gdata</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;いつのまにか新しい gdata がでていた。 &lt;br/&gt;gdata-1.1.1&lt;br/&gt;http://code.google.com/p/gdata-ruby-util/downloads/list&lt;br/&gt;&lt;br/&gt;memo &lt;br/&gt;gem19 unpack gdata-1.1.1.gem&lt;br/&gt;ruby 1.9.1 で動かす為に最後の２行をコメントにした。lib/gdata.rb&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4402693662566168318?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4402693662566168318/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4402693662566168318' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4402693662566168318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4402693662566168318'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/01/gdata.html' title='gdata'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-378561264785064682</id><published>2010-01-05T20:37:00.000+09:00</published><updated>2010-01-06T00:36:30.679+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='mdiary'/><title type='text'>mdiary 覚え書き</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;新年とともに大幅に変えた。(2010/01/04)&lt;br/&gt;次回(不明)は、ARGV の処理を変更予定。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-378561264785064682?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/378561264785064682/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=378561264785064682' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/378561264785064682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/378561264785064682'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2010/01/mdiary.html' title='mdiary 覚え書き'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-9054115965262962117</id><published>2009-12-30T12:38:00.001+09:00</published><updated>2010-02-15T21:47:28.571+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='mdiary'/><title type='text'>def max</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;github.com/midore/mdiary&lt;br/&gt;&lt;br/&gt;個人が使うものなのであまり意味はないような気もするが、指定ディレクトリ内でのファイル上限数をもうけてみた。&lt;br/&gt;bin/mdconfig に1ヶ月内に追加できるファイルの上限数を指定するメソッド default_file_count を追加し&lt;br/&gt;&lt;br/&gt;mdconfig&lt;/p&gt;&lt;pre&gt;&lt;code&gt;def default_file_count
  90
end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;当月ディレクトリ内のファイル数が default_file_count メソッドで指定した数を超えた場合&lt;br/&gt;-a や -at でのファイル生成を抑制する。指定数に達している場合はその旨の文を返す。&lt;br/&gt;&lt;br/&gt;万一、bin/mdconfig に default_file_count メソッドが存在しない場合(line 185)&lt;br/&gt;ファイル上限数は 90 になる。(line 186)&lt;br/&gt;１日平均2,3枚のファイルを生成すると仮定して 30 * 3&lt;br/&gt;&lt;br/&gt;line 189 はなんかヘンなんだけど とりあえず...。&lt;br/&gt;&lt;br/&gt;mdiary-main.rb&lt;br/&gt;class Main&lt;/p&gt;&lt;pre&gt;&lt;code&gt;184     def max?
185       max = default_file_count if defined? default_file_count
186       max = 90 unless max
187       s = Dir.entries(@now_dir).select{|x| /\.txt$/.match(x)}.size
188       return false if s &amp;lt; max
189       print "too many files. Edit bin/mdconfig.\n"
190       return true
191     end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;これに伴って&lt;br/&gt;class Add &amp;lt; Main&lt;/p&gt;&lt;pre&gt;&lt;code&gt;221       return nil if max?
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;class ChoiceDir &amp;lt; Main&lt;/p&gt;&lt;pre&gt;&lt;code&gt;266     def base_view(n)
267       return nil if max?
...

273     def base_search(w, st=nil)
274       return nil if max?
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;としておいた。&lt;br/&gt;&lt;br/&gt;あと&lt;/p&gt;&lt;pre&gt;&lt;code&gt;./mdiary-run.rb -s ""
./mdiary-run.rb -s ''
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とかしたら無視するようにした。&lt;br/&gt;line 132 あたり&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-9054115965262962117?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/9054115965262962117/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=9054115965262962117' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/9054115965262962117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/9054115965262962117'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/12/def-max.html' title='def max'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-4380489434955969908</id><published>2009-12-29T00:39:00.001+09:00</published><updated>2009-12-30T12:37:15.789+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='essay'/><title type='text'>よみもの</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://d.hatena.ne.jp/lionfan/20091226#1261852450'&gt;ポール・グレアム「バージョン1.0&lt;/a&gt;&lt;br/&gt;これ、めちゃくちゃおもしろかった。&lt;br/&gt;&lt;br/&gt;「偉大な」執事とは何か？&lt;br/&gt;と、小説の中の主人公が自問自答する場面を思い出した。なんでだろな...。あんまり関係ないと思うんだけど。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-4380489434955969908?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/4380489434955969908/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=4380489434955969908' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4380489434955969908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/4380489434955969908'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/12/blog-post.html' title='よみもの'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-8557668022516095469</id><published>2009-12-28T01:01:00.001+09:00</published><updated>2009-12-28T01:01:06.208+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='mdiary'/><title type='text'>unless a.nil?</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;このあいだ&lt;br/&gt;github.com/midore/mdiary&lt;br/&gt;&lt;br/&gt;mdiary-main.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;378       return nil unless @st.nil? || @plus.nil?
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;だったのを&lt;/p&gt;&lt;pre&gt;&lt;code&gt;379       return nil if @st &amp;amp;&amp;amp; @plus
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;に変えた。&lt;br/&gt;&lt;br/&gt;前者と後者は同じ動きをする。どちらも&lt;br/&gt;@st は nil ではなく、かつ、@plus もnil でなければ、return nil をかえす。&lt;br/&gt;&lt;br/&gt;例えば&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 # coding: utf-8
  2 
  3 a = 'a'
  4 b = 'b'
  5 print "a,b どちらも not nil です。\n" unless a.nil? || b.nil?
  6 print "a,b どちらも not nil でっす。\n" if a &amp;amp;&amp;amp; b
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実行すると&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;a,b どちらも not nil です。
a,b どちらも not nil でっす
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;となる。&lt;br/&gt;&lt;br/&gt;前者(||を使用),後者(&amp;amp;&amp;amp;を使用)ともに&lt;/p&gt;&lt;pre&gt;&lt;code&gt;a は nilではない。かつ、b も nil ではない。
であれば print する。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と動く。ちょっと不思議だけど。&lt;br/&gt;&lt;br/&gt;条件文が読みやすいのは &amp;amp;&amp;amp; を使用した後者。&lt;br/&gt;ただ、&lt;br/&gt;if x&lt;br/&gt;と書いて nil じゃなければとするより&lt;br/&gt;unless x.nil?&lt;br/&gt;と、nil なの？そうじゃないなら　と書いてあった方が私にとってはわかりやすい時もあったりする。&lt;br/&gt;&lt;br/&gt;...とはいっても || なのに「かつ」 を意図してるとなってると後になって自分がぎょっと驚いてしまうだろうから...変えた。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-8557668022516095469?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/8557668022516095469/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=8557668022516095469' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8557668022516095469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8557668022516095469'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/12/unless-anil.html' title='unless a.nil?'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-5499289332635222434</id><published>2009-12-28T00:52:00.001+09:00</published><updated>2009-12-28T01:26:58.899+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>url for blogger-api</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Blogger API 用&lt;br/&gt;日付範囲を指定したURLの生成&lt;br/&gt;&lt;br/&gt;line 10: &lt;br/&gt;t に2010/12 が指定された場合、翌月は年も変わるので年に１加算し月にも１加算すると2011/1/1 が得られそこから１秒ひくと2010/12/31の23:59:59&lt;br/&gt;になる。&lt;br/&gt;&lt;br/&gt;Time だけ使った場合&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 require 'time'
  2 
  3 def range_current_month(t=nil, bid)
  4   u = "http://www.blogger.com/feeds/#{bid}/posts/default"
  5   begin
  6     t = Time.parse(t) unless t.nil?
  7   rescue
  8     t = Time.now()
  9   end
 10   t.month == 12 ? x = [t.year+1, 1] : x = [t.year, t.month+1]
 11   min = t.strftime("%Y-%m-%dT00:00:00")
 12   max = (Time.local(x[0], x[1], 1) -1).strftime("%Y-%m-%dT%H:%M:%S")
 13   return u + "?published-min=#{min}" + "&amp;amp;published-max=#{max}"
 14 end
 15 
 16 bloggerid = 'xxxxxxxxxxxx'
 17 t = '2010/12'
 18 p range_current_month(t, bloggerid)
 19 t = '2010/2'
 20 p range_current_month(t, bloggerid)
&lt;/code&gt;&lt;/pre&gt;&lt;p/&gt;&lt;pre&gt;&lt;code&gt;=&amp;gt;
"http://www.blogger.com/feeds/xxxxxxxxxxxx/posts/default?published-min=2010-12-01T00:00:00&amp;amp;published-max=2010-12-31T23:59:59"
"http://www.blogger.com/feeds/xxxxxxxxxxxx/posts/default?published-min=2010-02-01T00:00:00&amp;amp;published-max=2010-02-28T23:59:59"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;Date も使った場合&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 require 'time'
  2 require 'date'
  3 
  4 def range_current_month(t=nil, bid)
  5   u = "http://www.blogger.com/feeds/#{bid}/posts/default"
  6   begin
  7     t = Time.parse(t) unless t.nil?
  8   rescue
  9     t = Time.now()
 10   end
 11   t.month == 12 ? x = [t.year+1, 1] : x = [t.year, t.month+1]
 12   min = t.strftime("%Y-%m-%dT%H:%M:%S")
 13   max = ((Date.new(x[0], x[1], 1)) - 1).strftime("%Y-%m-%dT23:59:59")
 14   return u + "?published-min=#{min}" + "&amp;amp;published-max=#{max}"
 15 end
 16 
 17 bloggerid = 'xxxxxxxxxxxx'
 18 t = '2010/12'
 19 p range_current_month(t, bloggerid)
 20 t = '2010/2'
 21 p range_current_month(t, bloggerid)
 22 
&lt;/code&gt;&lt;/pre&gt;&lt;p/&gt;&lt;pre&gt;&lt;code&gt;=&amp;gt;
"http://www.blogger.com/feeds/xxxxxxxxxxxx/posts/default?published-min=2010-12-01T00:00:00&amp;amp;published-max=2010-12-31T23:59:59"
"http://www.blogger.com/feeds/xxxxxxxxxxxx/posts/default?published-min=2010-02-01T00:00:00&amp;amp;published-max=2010-02-28T23:59:59"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;もう少し短くできないかなと思うんだけど...。 ?&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-5499289332635222434?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/5499289332635222434/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=5499289332635222434' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5499289332635222434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/5499289332635222434'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/12/url-for-blogger-api.html' title='url for blogger-api'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6112429559789150070</id><published>2009-12-20T09:59:00.001+09:00</published><updated>2009-12-20T10:12:17.491+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='mdiary'/><title type='text'>class Search</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;github.com/midore/mdiary&lt;br/&gt;の最近変更した箇所&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ ./mdiary-run.rb -st 'music'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;を実行すると、ファイル content 内容に'music'を含むファイルがあるか検索する。&lt;br/&gt;検索結果がゼロでなければ&lt;/p&gt;&lt;pre&gt;&lt;code&gt;1	[+] [2009/12/10 Thu AM 00:00:00] [music] (tower)
2	[+] [2009/12/11 Fri PM 17:04:36] [music] (diary)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と結果を返す。&lt;br/&gt;&lt;br/&gt;この場合、&lt;br/&gt;class ChoiceDir の中でSearch クラスを呼びだす。&lt;br/&gt;mdiary-main.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;252       Search.new(@word, @now_dir, st).base if @now_dir
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;Search の base method は、View の set_i_ary　を呼び出す。&lt;br/&gt;set_i_ary　は、Search の get_diary を使用して一つづつファイルを処理する。&lt;br/&gt;&lt;br/&gt;get_diary は @st が nil でなければ find_content にパス をわたす。&lt;br/&gt;find_content はうけとったパスのファイルを一行づつ読み検索対象文字列を探す。&lt;br/&gt;対象文字列がみつかった場合、ary_to_h をかえす。ary_to_h がかえす中身は Hash。&lt;br/&gt;get_diary の中の to_obj　は、Hash がかえってきた場合、その Hash をもとに Diary.new() する。&lt;br/&gt;&lt;br/&gt;method "get_diary" in mdiary-main.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;370     def get_diary(x)
371       begin
372         h = find_index(x) unless @st
373         h = find_content(x) unless @st.nil?
374         to_obj(h) unless h.nil?
375       rescue
376         return nil
377       end
378     end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;method "find_content" in mdiary-io.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt; 38     def find_content(path)
 39       i, m = nil, nil
 40       a, mark = [], /^--content$/
 41       IO.foreach(path){|line|
 42         if line.match(mark)
 43           i = true; next
 44         end
 45         (i.nil?) ? a.push(line) : m = line.match(@word)
 46         break if m
 47       }
 48       return ary_to_h(a, path) if m
 49     end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6112429559789150070?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6112429559789150070/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6112429559789150070' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6112429559789150070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6112429559789150070'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/12/class-search.html' title='class Search'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-1564181669851230454</id><published>2009-12-15T01:16:00.001+09:00</published><updated>2009-12-15T01:27:28.101+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='mdiary'/><title type='text'>about-mdiary</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://github.com/midore/mdiary.git'&gt;mdiary&lt;/a&gt; について&lt;br/&gt;&lt;br/&gt;有名な tDiary にあやかり mdiary と名付けた。&lt;br/&gt;正式名称は「ま(m)だできてない diary」で mdiary ^^;&lt;br/&gt;&lt;br/&gt;&amp;lt;特徴&amp;gt;&lt;br/&gt;• ruby 1.9.1 が必要です。&lt;br/&gt;• local (自分のコンピュータの中) で使うものです。&lt;br/&gt;• home user 向けです。&lt;br/&gt;• ちょっとしたメモ、雑記帳、todolist としても利用できます。&lt;br/&gt;• vim を前提にしてますが mdiary-main.rb を一行変更するだけで他のエディタでもつかえます。&lt;br/&gt;• 標準ライブラリ以外のライブラリに依存してません。&lt;br/&gt;• gem とかいらないです。&lt;br/&gt;• データベースを使用していません。&lt;br/&gt;• marshal なども使用していません。&lt;br/&gt;• キャッシュを作成しません。&lt;br/&gt;• logfile ありません。&lt;br/&gt;• ひょっとしたら軽いかも？&lt;br/&gt;• まだ未完成です。&lt;br/&gt;&lt;br/&gt;&amp;lt;使い方&amp;gt;&lt;br/&gt;$ vim bin/mdconfig&lt;br/&gt;ファイル保存先として利用したいディレクトリのパスを記入。&lt;br/&gt;$ vim bin/mdiary-run.rb &lt;br/&gt;ruby 1.9.1 のパスを一行目に記入(例：#!/usr/local/bin/ruby)&lt;br/&gt;&lt;br/&gt;新規ファイル作成&lt;br/&gt;$ ./mdiary-run.rb -at '2009/12/14 21:00'&lt;br/&gt;&lt;br/&gt;一覧表示(ハイフン + 小文字のエル)&lt;br/&gt;$ ./mdiary-run.rb -l&lt;/p&gt;&lt;pre&gt;&lt;code&gt;=&amp;gt;
1  [-] [2009/12/14 Mon PM 21:00:26] [about-mdiary] (draft)
2  [-] [2009/12/14 Mon PM 21:00:00] [about-git] (diary)
3  [+] [2009/12/14 Mon PM 20:00:00] [list] (book)
Select NO:
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;使い方の続きは REAME を...&lt;br/&gt;$ git clone git://github.com/midore/mdiary.git&lt;br/&gt;or&lt;br/&gt;ブラウザごしにダウンロードもできると思います。&lt;br/&gt;URL : http://github.com/midore/mdiary.git&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-1564181669851230454?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/1564181669851230454/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=1564181669851230454' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1564181669851230454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1564181669851230454'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/12/about-mdiary.html' title='about-mdiary'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-259938420424834535</id><published>2009-12-15T01:00:00.001+09:00</published><updated>2009-12-15T01:00:50.142+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><title type='text'>force_encoding</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://yugui.jp/articles/850'&gt;ここ&lt;/a&gt;を読んで&lt;br/&gt;github.com/midore/amazon-jp-api&lt;br/&gt;をなおした。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-259938420424834535?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/259938420424834535/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=259938420424834535' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/259938420424834535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/259938420424834535'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/12/forceencoding.html' title='force_encoding'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-8403771251900191455</id><published>2009-11-07T11:42:00.001+09:00</published><updated>2009-11-07T11:42:28.903+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>numerical.rb</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;&lt;a href='http://www.midore.net/daybook/2006/5-9/1159081162.html'&gt;www.midore.net/daybook/2006/5-9/1159081162.html&lt;/a&gt; &lt;br/&gt;を書き直し。&lt;br/&gt;&lt;br/&gt;% cat numerical.rb&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 # coding: utf-8
  2 # 2009-11-06
  3 
  4 str =&amp;lt;&amp;lt;EOF
  5 &amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
  6 &amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&amp;gt;
  7 &amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"&amp;gt;
  8 &amp;lt;head&amp;gt;
  9 &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/&amp;gt;
 10 &amp;lt;title&amp;gt;数値文字参照&amp;lt;/title&amp;gt;
 11 &amp;lt;/head&amp;gt;
 12 &amp;lt;body&amp;gt;
 13 EOF
 14 
 15 n = ARGV[0]
 16 abort unless n
 17 abort if /\D/.match(n)
 18 (n.to_i..n.to_i+5).step{|x|
 19     str &amp;lt;&amp;lt; "&amp;lt;p&amp;gt;#{x} =&amp;gt; &amp;amp;##{x};&amp;lt;/p&amp;gt;"
 20 }
 21 str &amp;lt;&amp;lt; "&amp;lt;/body&amp;gt;\n&amp;lt;/html&amp;gt;"
 22 filename = 'numerical.html'
 23 # save file
 24 File.open(filename, 'w:utf-8'){|f| f.print str}
 25 # only OS X
 26 system "open #{filename}"
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;表示する数値文字は引数として与える数字から５を足した数までに制限している。line.18&lt;br/&gt;数字の範囲は得に定めていないので、与える数字によってはすべて空欄にもなりうる。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;% ruby19 numerical.rb '1100'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;を実行すると実行ファイルと同じ階層に'numerical.html' ファイルが保存される。&lt;br/&gt;OS X の場合、最終行でブラウザが 'numerical.html' を開く。&lt;br/&gt;与えた数に対応する数値文字がブラウザに表示される。&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;1100 =&amp;gt; ь

1101 =&amp;gt; э

1102 =&amp;gt; ю

1103 =&amp;gt; я

1104 =&amp;gt; ѐ

1105 =&amp;gt; ё
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-8403771251900191455?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/8403771251900191455/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=8403771251900191455' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8403771251900191455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/8403771251900191455'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/11/numericalrb.html' title='numerical.rb'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6857847302709104895</id><published>2009-10-31T12:23:00.001+09:00</published><updated>2010-02-09T18:00:18.184+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SnowLeopard'/><category scheme='http://www.blogger.com/atom/ns#' term='x'/><title type='text'>FXRecentFolders</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;Finder-&amp;gt;移動-&amp;gt;最近使ったフォルダ&lt;br/&gt;に追加されたフォルダの削除&lt;br/&gt;&lt;br/&gt;% cat delete-recentrolders.sh&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#!/bin/bash

cd
defaults delete com.apple.Finder FXRecentFolders
killall Finder
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;# 実行権付与&lt;br/&gt;% chmod +x delete-recentrolders.sh&lt;br/&gt;&lt;br/&gt;# 実行&lt;br/&gt;% ./delete-recentrolders.sh&lt;br/&gt;&lt;br/&gt;参考&lt;br/&gt;http://www.macosxhints.com/&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6857847302709104895?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6857847302709104895/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6857847302709104895' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6857847302709104895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6857847302709104895'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/10/fxrecentfolders.html' title='FXRecentFolders'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6348149675879522918</id><published>2009-10-30T18:44:00.001+09:00</published><updated>2009-10-31T17:36:05.172+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Book.new('1Q84')</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;村上春樹の『1Q84』が世間に投げかけた何かを仮に x として読者が感じ取ったものを仮に k とする。&lt;br/&gt;k は抽象的概念を並べたものでもありキーワードの束のようなものとする。&lt;br/&gt;&lt;br/&gt;これを Ruby で表現してみると&lt;br/&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;  1 # coding: utf-8
  2 
  3 class Book
  4 
  5   attr_reader :name
  6   attr_accessor :x
  7   
  8   def initialize(name)
  9     @name = name
 10     @x = nil
 11   end
 12   
 13 end
 14 
 15 class Reader
 16 
 17   attr_reader :booklist
 18   
 19   def initialize
 20     @booklist = Hash.new
 21   end
 22   
 23   def read(book)
 24     @book = book
 25     return self
 26   end
 27   
 28   def image(*k)
 29     @booklist[@book.name] = k
 30   end
 31   
 32 end
 33
 34 book1 = Book.new('1Q84-1')
 35 book2 = Book.new('1Q84-2')
 36 
 37 i = Reader.new
 38 i.read(book1).image('science','nation','man')
 39 i.read(book2).image('religious','language','female')
 40 p i.booklist
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;実行結果&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# =&amp;gt;
# {"1Q84-1"=&amp;gt;["science", "nation", "man"], "1Q84-2"=&amp;gt;["religious", "language", "female"]}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;@x には値を付与できるし値を読み取ることもできる。けれども値を付与できるのは作者以外にいない。そして Reader class は直接 @x の値を読み取る手段をもたない。@booklist の values は読者の抱いた感想に基づくキーワード群。それぞれ何かと対をなしていて二項対立とも同一概念の表裏とも光と陰とも言えるような値にしておいた。あえて加えなかったけれども Author class を作るとしたらそこには作者が値が付与できる @booklist があるはずだ。それは作家の頭の中にしか存在しないものなんだろうけど。&lt;br/&gt;&lt;br/&gt;作ってみて一番面白かったのは、２５行目 return self。 これは i.read(book).image('xxx') と記したかった為に必要だったからなにげなく書いたんだけど def read が self を返す（or 返す必要がある）なんて! ちょっとリアルな感じがした。&lt;br/&gt;&lt;br/&gt;'science' のかわりに 'mathematic' の方がふさわしいような気もするし&lt;br/&gt;'nation' のかわりに 'force' とすべきなのかなと迷った。&lt;br/&gt;'female' のかわりに 'child', 'man' のかわりに 'soldier' にしてもよいような気もした。&lt;br/&gt;&lt;br/&gt;『1Q84』を読み終えた読者が実際今何人なのか？なんて知る由もないが、仮にすべての読者が抱いたキーワードを全て寄せ集めることができたのなら、この本が抱えるキーワードの束は膨大な数になるんだろうなー。そして時間経過とともに読者数累計は増加してキーワードのエントロピーは増大していく。翻訳される言語が増えればなおさら...。それにキーワードはただ増えるだけじゃなく他の本とどんどんと繋がっていく。&lt;br/&gt;&lt;br/&gt;たとえば&lt;br/&gt;『知識人とは何か』（ Edward W. Said / 平凡社 / 978-4582762365 ）&lt;br/&gt;に 『 若き日の芸術家の肖像 』（ Joyce James ）&lt;br/&gt;からの引用がある。&lt;br/&gt;&lt;br/&gt;p.46&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;「きみには、ぼくがすることと、しないことをおしえてあげよう。ぼくは自分で、もう信じていないもの、それを家庭と呼ぼうが、祖国と呼ぼうが、教会と呼ぼうが勝手だけれども、そういうものに仕えるつもりはない。ぼくがやってみたいのは、人生とか芸術をとおして、自分自身を、できるかぎり自由に、できるかぎりそこなうことなく表現することなんだ。そのため、自分をまもるのに使う武器は、三つにかぎることにするー沈黙、亡命、そして狡知」。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;ここにある３つの単語は、『1Q84』が発する何かと強烈に結びついているように思えてならない。&lt;br/&gt;狡知に対応するものが 'science' or 'mathematic' &lt;br/&gt;亡命に対応するものが 'nation'&lt;br/&gt;沈黙に対応するものが 'language'&lt;br/&gt;&lt;br/&gt;それにしても、と思う。たくさんの小説家が巨大な渦に流され溺れてしまわないための自衛策についてあらゆるかたちで書き残してる。それこそ「そこなうことなく」しるされてる。&lt;br/&gt;&lt;br/&gt;修正: 'femail' =&amp;gt; 'female'&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-6348149675879522918?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/6348149675879522918/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=6348149675879522918' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6348149675879522918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/6348149675879522918'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/10/booknew.html' title='Book.new(&amp;#39;1Q84&amp;#39;)'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-7832747087671152876</id><published>2009-10-30T18:42:00.001+09:00</published><updated>2009-10-31T12:11:15.744+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>悪霊にさいなまれる世界</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;悪霊にさいなまれる世界 上 / Carl Sagan / 早川書房 / 978-4150503567&lt;br/&gt;悪霊にさいなまれる世界 下 / Carl Sagan /早川書房 / 978-4150503574&lt;br/&gt;&lt;br/&gt;この文庫本は2000年に「人はなぜエセ科学に騙されるのか」というタイトルで出版された作品で2009年7月に文庫化されたもの。&lt;br/&gt;&lt;br/&gt;訳者の青木薫氏が「訳者あとがきに代えて」の中で&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;これまでも、たびたび、自ら行李を背負い、一冊一冊行商して歩きたいぐらいだと冗談めかして言ってきたが、実はそれは本音である。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;と述べているのが印象深かった。&lt;br/&gt;&lt;br/&gt;この訳者が手がけた本は過去にいくつか読んだことがある。どれも非常に面白かった。面白いばかりでなく「読者の１人として尊重されている」とすら感じた。&lt;br/&gt;それはどういうことかというと....&lt;br/&gt;&lt;br/&gt;科学分野の本(一般市場に流通する書籍)を書く人たちは、一般人への配慮に欠いていることがある。なぜならその方がより的確な単語を使用できるし効率的に話を進めることができるであろう、から。そこには本が作られる最初から一般人との境界線がある。そのような本は専門書店にだけ置いてあるわけではなく普通の書店にも並べられているので、私が何かの間違いで購入してしまった時、その都度私は自分を落第生だと改めて思い知らされマラソンを走る最後のランナーだと感じてきた。じっさい世の中は私にとって難しい本でみちみちているし。&lt;br/&gt;たまには運良く少し理解できるようになることも稀にある。それはよほど意識的に関連本を探したり、うなりながら何度も繰り返し読んでみたり違う方向から探ってみることなしにはありえない。こういった読者の姿勢は独習することそのものだからそのように学ぶことを、億劫がったり嫌悪するべきではない、という考えは当然なことだとも思うけれども、一方で、難しいことをわかりやすい文章で説明し多くの人が理解しやすい内容の本に出会ってしまうと、なんというか、やっぱり深く感動する。小説を読み終わった後の感動となにも違わない。&lt;br/&gt;&lt;br/&gt;そういった意味で「暗号解読」など青木薫氏が訳された一連の本は、読者である私に落第生だと感じさせるような真似は一切しなかった。私は最後まで興味深いマラソンを完走できてしまった。文系人間（高校生の時に文系か理系かの選択を迫られて文系を選択したという意味）の私でも科学ジャンルの本の面白さにフル参加できた...。これは当時非常に稀なことだった。この喜びは本の面白さともあいまって二重の楽しさを私にもたらしてくれた。ひとえに作者の人と訳者の人がわかりやすい文章を用意してくれたおかげだ。そこには科学者でも研究者でもないごく普通の一般人を尊重し信頼する気持ちが根底に流れているように感じた。だから、読者である私は&lt;br/&gt;&lt;br/&gt;「読者として尊重されている」&lt;br/&gt;&lt;br/&gt;と、思った。&lt;br/&gt;（最近福岡伸一氏の著作にも同じ印象を持っている）&lt;br/&gt;&lt;br/&gt;...以上のような経緯があり&lt;br/&gt;この人が訳す本は面白いと認識している。そして実際今回も期待以上に面白かった。この本にこめられたカールセーガンさんの気合いと根気強さには驚くばかりだった。&lt;br/&gt;&lt;br/&gt;懐疑的な精神を培うことは民主主義的な思考と矛盾しない。むしろ大切なことのようだ。加えて、もしもあなたが今なお数学や科学に対して文学や音楽に対するのと同じような興味や関心を抱けないでいるのなら、それはあなたの人生にとっても人類の歴史にとってもマイナスでしかない、とカールセーガンさんは言っているんだと思う。たとえこの本を手に取る人が何歳であろうともそんなことは全くおかまいなしに、知るとは科学的とはどういうことかについて改めて立ち止まって考えるべき機会を全ての読者に与えてくれると思う。愚かな権力者に対してストッパーとして役割を果たせるのは、結局１人１人の科学的な視点およびその総体なんだろうと思った。&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.nationalgeographic.co.jp/'&gt;nationalgeographic.co.jp&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-7832747087671152876?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/7832747087671152876/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=7832747087671152876' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7832747087671152876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/7832747087671152876'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/10/blog-post.html' title='悪霊にさいなまれる世界'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-1920933942335432375</id><published>2009-10-30T18:36:00.003+09:00</published><updated>2009-10-31T12:11:33.039+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>怠惰への讃歌-1</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;怠惰への讃歌 / Bertrand Russell / 平凡社 / 978-4-582-76676-9&lt;br/&gt;&lt;br/&gt;新聞の書評欄に紹介されていたのを読んで（確か10月半ばあたり）珍しく素直に購入してみた。第四章まで読んだ&lt;br/&gt;&lt;br/&gt;この本は、平凡社から2009/08/10 付けで出版されたものだが本の最初のページに 「1958年に角川文庫から刊行されたもの」だと記されている。作者のバートランド•ラッセル氏は数学者としても知られている人。&lt;br/&gt;&lt;br/&gt;第1章 1932 年&lt;br/&gt;第9章 1929 年&lt;br/&gt;第10章 1930 年&lt;br/&gt;第11章 1933 年&lt;br/&gt;第13章 1928 年&lt;br/&gt;第15章 1928 年&lt;br/&gt;&lt;br/&gt;とあり1928年から1933年のあいだに書かれたもののようだ。&lt;br/&gt;&lt;br/&gt;第一章で１日４時間労働説を読んだ。これにはちょとしたカルチャーショックをうけた。この説はたとえこの本に興味がない人でも知っていて損はないと思う。&lt;br/&gt;そして、それにもまして興味深かったのが下記。&lt;br/&gt;&lt;br/&gt;p.72&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;この気狂いじみた状態に対し、気狂いじみた解決を考えついた。ドイツに、ドイツが支払わなければならないものは何でも貸すときめたられたのである。&lt;br/&gt;連合国が結局いいわたしたことはこうである。「私たちは、賠償をお前らから免除してやるわけにはいかぬ。というのは、それはお前たちの犯した罪悪に対する正当な罰であるからだ。さてまた、私たちは賠償を支払わせるようにしてやることはできない。そうすると、私たちの産業を破壊するからである。それで、私たちはお前たちに金を貸そう。そして私たちが貸したものをお前たちが返却するようにさせよう。この方法によると、原則は守られて、しかも私たちに損害はないだろう。お前たちに及ぶ損害についていえば、それをただ後まわししようと考えているだけだ」。だがいうまでもなく、この解決は、その場限りのものにすぎなかった。...&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;これはひどい話だと思った。&lt;br/&gt;&lt;br/&gt;「インフレーション」という単語をガッコーのキョーカショではじめて目にした時、大量のお札を荷車にのせてそれを引っ張る老婆の白黒写真がそのかたすみに掲載されていたと記憶している。その写真の人はドイツ人だと習った気もする。その程度のことであとはほぼ忘れてしまっているんだけども、ここを読んでへぇーそんなことだったわけ？とちょっと驚いてしまった。ドイツに多額の賠償を負わせた。としか私は認識していなかったから。&lt;br/&gt;&lt;br/&gt;p.74&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;私たちの不幸のもととなったしどろもどろの考え方は、消費者の立場と生産者の立場、もっと正しくいうなら、競争する組織の中の生産者の立場との間に起こった混乱である。賠償がドイツに課せられると、連合国は、自分たちを消費者だと思いこんだ。即ちドイツ人の生産したものを消費することができるのは、いい気持ちだろうと考えた。ところが、ヴェルサイユ条約が結ばれてしまって、彼らが俄に気がついたことは、自分たちも生産者であり、自分たちが求めているドイツの品物が流れ込むと、自分たちの産業が亡ぶだろうということだ。彼らは非常に困ったので、途方にくれ頭をかきはじめたが、何の役にも立たなかった。連合国側は一緒に集まって頭をかき、それを国際会議といってみても何にもならない。正直なところ、世界の支配階級が甚だ無智、愚かであるから、かよな問題を考えぬくこともできず、また甚だ鼻柱が強いから、彼らを助けようとする人々から注意をしてもらおうともしなかった。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;え!...。ヴェルサイユ条約についてこんな風に書いてある文章には初めておめにかかった。これがある程度事実に即しているのならば連合国側は相当子供ぽいというか「あなたいくつですか」よばわりされても不思議じゃない程の愚行を行ったことになる。国際会議つったって商店街のおじさんたちの井戸端会議と大差のないような代物だったということにもなる。いや商店街のおじさんたちの方がよっぽど優秀だろうから大差はあるかな。これじゃたまらない気持ちになるし、これが歴史だと思いこまされてきたいくつかのことは詭弁だったのかと疑いたくなってしまう。&lt;br/&gt;&lt;br/&gt;戦争がなぜ起きたのかを解説する本はたくさんあるし、何が事実で何が事実でなかったのかをできるかぎり正確に見分けようとするのは結構大変なことなんだけども、だからといってそれは永久に知ることができないものだと決めてかかるのもおかしな話だと、あらためて思ったりもした。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6666395799935960184-1920933942335432375?l=midorex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://midorex.blogspot.com/feeds/1920933942335432375/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6666395799935960184&amp;postID=1920933942335432375' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1920933942335432375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6666395799935960184/posts/default/1920933942335432375'/><link rel='alternate' type='text/html' href='http://midorex.blogspot.com/2009/10/1.html' title='怠惰への讃歌-1'/><author><name>midore</name><uri>http://www.blogger.com/profile/06841209281530059057</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vxZ9s-UXs4M/Scm6ee-gV3I/AAAAAAAAAAQ/ZBSnNN6xOU4/S220/nekoclick-s.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6666395799935960184.post-6626816684522317764</id><published>2009-10-30T18:36:00.001+09:00</published><updated>2009-10-30T18:36:12.945+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='x'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Black Swan</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;ブラック•スワン[上] / Nassim Nicholas Taleb / ダイヤモンド社 / 978-4478-00125-7&lt;br/&gt;ブラック•スワン[下] / Nassim Nicholas Taleb / ダイヤモンド社 / 978-4478-00888-1&lt;br/&gt;を読んだ。&lt;br/&gt;&lt;br/&gt;上巻p.285&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;ある時...政治オタクを前に話をした。私たちは未来を正しく考えられない、いいかげん思い知れと言って、私は彼らに噛みついた。&lt;br/&gt;お客は縮み上がって黙っていた。私はお前らの信じていることも、やっていることも全部間違いだと言ったのだ。私のほうは自分の客観的な主張に酔っていた。&lt;br/&gt;...宗教会議に集まった枢機卿たちを前にした好戦的な無神論者みたいな気分だった。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;とある。&lt;br/&gt;&lt;br/&gt;この文章で上巻１冊の全てが言い尽くされているように思った。（ええ、そうですそうです。人は要約が大好き。）残りのページはこの文章を裏付けるための具体例に全て費やされているだけのような気がした。&lt;br/&gt;&lt;br/&gt;上巻を読み終えて下巻を買ったことを後悔することってめったにないんだけどもそういう点で珍しい本だった。&lt;br/&gt;&lt;br/&gt;読みながらストレスを感じることもあった。たとえば&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;p.134&lt;br/&gt;私たちが、講釈に陥りがちな大本の原因がある。これは心理的なものではない。むしろ情報の溜め込みや読み込みを行う仕組みが及ぼす影響にかかわることである。確立論や情報理論の根本的な問題だと思うので、ここで説明しておくのがいいだろう。&lt;br/&gt;第一の問題は、情報を手に入れるのにはコストがかかるという点である。....&lt;br/&gt;第二の問題は、情報は溜め込むのにもコストがかかるという点である。...&lt;br/&gt;第三の問題は、情報は複製したり取り出したりするのにもコストがかかるという点である。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br/&gt;とあって&lt;br/&gt;情報理論学の根本的な問題として上記の３つが当然のように書かれてあるんだけども、はたしてそれは誰が言ったことで誰がとりあげていることなのかといった文章がない。情報理論を指さした以上はどういったところでそれが提唱されているかなど書かれるべきだと思うんだけども、そういった最低限の情報はこのページのどこにもない...。ない。&lt;br/&gt;&lt;br/&gt;ここで述べられている「コスト」というのは例えばインターネットを使用する上で必要な電気消費量や電線であったり、10年以上前だったら古本屋をうろうろできるだけの脚力や電車代や気力がコストともいえるんだろう。いずれも「コスト」という変数におさまるべき値と想像できる。値が時代の変化によっていかに変化しようとも、情報を手に入れるためにはコストが必要なことにかわりはない。&lt;br/&gt;&lt;br/&gt;といった考えをめぐらせ...p.13
