Mac OSX Mountain Lion へ rvm のインストール(Mac Ports編)

今後、嫌ほど仕事でインストールをするハメになることは見え見えなので Mountain Lion への rvmのインストール方法をメモっておく。

TBヘッドライン様の記事の丸パクリ
http://www.tbn.co.jp/blog/?p=540

1. AppStore からXCodeをダウンロード
2. メニューのXcode>Preference>Downloads>Command Line Tools からgccをインストールする

3. XCodeのライセンスを読む

$ sudo xcodebuild -license

4. Mac Portsをインストールする
http://www.macports.org/

5. XCodeから入るgccLLVM版のため、Mac Ports から gccをインストールする

$ sudo port install apple-gcc42

ちなみに2012/8/6 現在は、依存関係がおかしいのか一発で入らなかったが、多分そのうち修正されると思うので対処法は書かない(ってか依存パッケージを順番にインストールしただけ)

6. apple-gcc42 をgccに使用する

$ sudo ln -snf /opt/local/bin/gcc-apple-4.2 /usr/bin/gcc

7. rvmのインストールにはgit とcurlが必要なのでそれも入れる

$ sudo port install git-core curl

8. ruby-1.9.2を使う場合はautoconf,automake も必要なので入れる(現在の安定最新版ruby-1.9.3p194には必要なさそう)

$ sudo port install autoconf automake

9. rvm入れて終わり

$ curl -L https://get.rvm.io | bash -s

依存関係のreadline とか、opensslは特に指定しなくてもrvmが勝手にインストールしてくれる




written by iHatenaSync

足長蜂 アシナガバチ退治

いつもはコンピューター技術系ブログだけど、Twitter じゃ書き切れないし、他に困ってる人がいるなら参考になるかもとブログにしてみることにする。

事の発端は2日前の夜。
家に帰ったら蜂が入っているので、倒して欲しいと嫁。
はじめの一匹はキンチョールで行動不能にして、フリーペーパーを丸めたやつで潰して倒したのだが、その後勝手口を開けたら家の中に大量に蜂が入ってきた。
どうやら蜂が勝手口のすぐ上に巣を作っているみたい。
インターネットで調べると、蜂の種類はどうやらアシナガバチというらしい。
スズメバチの場合は自治体に連絡をすれば駆除してくれるらしいのだが、アシナガバチは危険性が低いらしく、駆除は自腹らしい。
大体相場は5000円程度らしいのだが、5000円あればホームセンターで色々ハチ駆除セットを買ってもお釣りが来そうだったので、自前で駆除することにした。(又、自治体でやってくれないということは危険性が低いと判断した。)

退治することにしてから巣を確認しに行ったんだけどデカイ!!

どうやら初夏頃に巣を作り始めるので、今頃が一番でかいらしい。
さっさと気づけよと自己ツッコミをいれつつ
とりあえず、蜂の巣のすぐ近くに、わかりにくいけど蚊取り線香を細かくちぎって、それぞれに火をつけたやつをおいて燻す。

2時間ほどたったら、あんまり蜂がいなくなるので、残ってる奴らをキンチョールで散らす。
しばらく格闘すると、蜂が全部いなくなるので、最後はどこのご家庭にもある三節棍で落とす。


じょうずに取れました。

ビニール袋だと蜂の子がかえった後に食い破られる可能性があるので、紙袋に入れて、ガムテープでぐるぐる巻きにして、次のごみの日に出す予定。
蜂の子料理は嫁の反対により実現しませんでした。
蜂用の殺虫剤だと、射程が長いので安全かもしれませんが、長時間戦うとすぐ無くなるので、命知らずで貧乏な人は普通の殺虫剤でも大丈夫です。

USB Overdrive + 日本語キーボード環境で Button 4 に戻る を割り振る方法

Mac で USB Overdriveを使ってButton 4 にキーボードを割り振ろうと思うと、使っているキーボードが日本語キーボードの場合に上手くいかない

Mac の基本的な操作では戻るは Cmd+[ に割り振られているのだが、[ の位置が日本語キーボードと 英語キーボードで異なるため、上手く動かない。
そのため、英語キーボードでの位置にありそうなキーをかたっぱしから押してみて発見した

結論
Cmd + @
にをPress Key に指定してやれば動作する。

自分用XCode4キーボードショートカット

XCode のキーボードショートカット

4になって大幅に変わったので修正
普段はemacsを使っているので、emacsと同じキーバインドは省略

ショートカット 効果 emacs
Cmd + ↑ 文章の一番上へ ^x [
Cmd + ↓ 文章の一番下へ ^x ]
^ + Cmd + ↑ ヘッダーファイル(h)⇔ソースファイル(m) の相互移動 M-x ff-find-otherfile RET
^ + Cmd + ← 前のバッファに移動 c-x c-left
^ + Cmd + → 次のバッファに移動 c-x c-right
Cmd + RET Assistant Editorの消去 c-x 0
Cmd + Opt + RET Assistant Editorの表示(画面の縦分割) c-x 3
Cmd + / コメントアウト/解除 M-;(transient-mark-mode)とかcomment-region, uncomment-region
Cmd + Opt + エディタの分割をグラフィカルに決定?説明しづらいので押してみてください
Cmd + Opt + > ウインドウ内を移動 C-x o
Cmd + Opt + , アシスタントエディタでも同じファイルを開く C-x o
Ctrl + . コード入力候補ウインドウ表示

自分用App StoreにiPad アプリを上げるときのチェックリスト

とりあえず今回チェックしたポイント
抜けがあれば後々修正する予定

プログラムは完成している気分

2011/2/24 Reject されてしまったのでもう一度見直す。
ちなみにAppleからのReject理由を書いたメールは無し。


アプリ名Padocu で上げる
plistのチェック

  • Localization native deelopment region : Janan(英語又はマルチランゲージならEnglish なんでJapaneseじゃないんだろ...)
  • Bundle identifier : jp.mksc.padocu
  • Bundle display name : Padocu
  • Icon file : 値無し
  • Icon files :
    • Item 0 : Icon-72.png
    • Item 1 : Icon-Small-50.png
    • Item 2 : Icon-Small.png
  • Bundle version : 1.0
  • Supported interface orientations (全方向サポート iPadでは必須?)
    • Item 0 : Portrait (bottom home button)
    • Item 1 : Portrait (top home button)
    • Item 2 : Landscape (left home button)
    • Item 3 : Landscape (right home button)
  • Application uses Wi-Fi : true (起動直後からネットワークが必要なので)
  • Required device capabilities
    • wifi (起動直後からネットワークが必要なので)

2011/2/24 修正
アイコンが全部あるかチェック
http://developer.apple.com/library/ios/#qa/qa2010/qa1686.html

Include the following in your application's Resources group in the Xcode project:

Table 2 : iPad-only apps icon requirements.

Image Size (px) File Name Used For Required Status Notes
512x512 iTunesArtwork Ad Hoc iTunes Optional but recommended File should be in png format, but name it without the .png extension
72x72 Icon-72.png App Store and Home screen on iPad Required
50x50 Icon-Small-50.png Spotlight on iPad Optional but recommended
29x29 Icon-Small.png Settings on iPad Recommended if you have a Settings bundle, otherwise optional but recommended

と書いてあるのに 72x72 のIconをIcon.pngで上げたのがちょっと臭い
後、Settings画面も使ってるので

  • Icon-72.png (72x72)
  • Icon-Small-50.png (50x50)
  • Icon-Small.png (29x29)
  • Default-Landscape.png
  • Default-Portrait.png

を用意する


xcodeproj

  • ビルド
    • 構成 : AppStore
      • コード署名ID : iPhone Distribution: MK System
      • Targeted Device Family: iPad

その他用意するもの

iTunes Connect

  • App Name : Padocu
  • SKU Number : jp.mksc.padocu
  • Bundle ID : jp.mksc.padocu(Provisioning Portal でこの名前にしてある)
  • Version number : 1.0 上の Bundle version と合わせる必要あり

Ruby Version Manager(RVM) を使って Mac OSX Snow Leopard にRuby 1.9 をインストールする

前回の失敗を踏まえてRuby Version Manager(RVM)をつかってMacRuby 1.9の導入を試みる

RVMはgem を使ってもインストールすることが出来るようだが、いまいちやり方が分からなかったのでgitを使ってソースを取ってくる

$ git clone git://github.com/wayneeseguin/rvm.git
$ cd rvm/
$ ./install

.bashrcの最後のほうに以下を追加

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session.

でターミナルを再起動

$ rvm -v
rvm 1.1.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]
$ rvm info
system:
  system:
    uname:       "Darwin mksc-no-mac-pro-2.local 10.5.0 Darwin Kernel Version 10.5.0: Fri Nov  5 23:20:39 PDT 2010; root:xnu-1504.9.17~1/RELEASE_I386 i386"
    bash:        "/bin/bash => GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)"
    zsh:         "/bin/zsh => zsh 4.3.9 (i386-apple-darwin10.0)"
  rvm:
    version:      "rvm 1.1.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]"
  homes:
    gem:          "not set"
    ruby:         "not set"
  binaries:
    ruby:         "/opt/local/bin/ruby"
    irb:          "/opt/local/bin/irb"
    gem:          "/opt/local/bin/gem"
    rake:         "/opt/local/bin/rake"
  environment:
    PATH:         "/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/shimizu/bin:/Users/shimizu/.rvm/bin:/Users/shimizu/.rvm/bin"
    GEM_HOME:     ""
    GEM_PATH:     ""
    MY_RUBY_HOME: ""
    IRBRC:        ""
    RUBYOPT:      ""
    gemset:       ""

インストールは成功している模様

サポートしている環境を一覧する

$ rvm list known_strings
ruby-head
ruby-1.9.2-rc2
ruby-1.9.2-rc1
ruby-1.9.2-preview3
ruby-1.9.2-preview1
ruby-1.9.2-p0
ruby-1.9.2-head
ruby-1.9.1-p429
ruby-1.9.1-p378
ruby-1.9.1-p243
ruby-1.9.1-head
ruby-1.8.7-p302
ruby-1.8.7-head
ruby-1.8.6-p399
ruby-1.8.6-head
ree-1.8.7-head
ree-1.8.7
ree-1.8.6-head
ree-1.8.6
rbx-head
rbx-1.1.1
rbx-1.1.0
rbx-1.0.1
maglev-head
maglev-24864
macruby-nightly
macruby-head      
macruby-0.8 
jruby-head
jruby-1.5.6
jruby-1.4.0
jruby-1.3.1
jruby-1.2.0
ironruby-head
ironruby-1.0-rc2
ironruby-0.9.3
goruby

Rubyのページの一番普通にDLできるバージョンが1.9.2-p0 なのでそれをインストールする

$ rvm install 1.9.2-p0
/Users/shimizu/.rvm/rubies/ruby-1.9.2-p0, this may take a while depending on your cpu(s)...

ruby-1.9.2-p0 - #fetching 
ruby-1.9.2-p0 - #downloading ruby-1.9.2-p0, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 8296k  100 8296k    0     0  1743k      0  0:00:04  0:00:04 --:--:-- 2036k
ruby-1.9.2-p0 - #extracting ruby-1.9.2-p0 to /Users/shimizu/.rvm/src/ruby-1.9.2-p0
ruby-1.9.2-p0 - #extracted to /Users/shimizu/.rvm/src/ruby-1.9.2-p0
ruby-1.9.2-p0 - #configuring 
ruby-1.9.2-p0 - #compiling 
ruby-1.9.2-p0 - #installing 
ruby-1.9.2-p0 - updating #rubygems for /Users/shimizu/.rvm/gems/ruby-1.9.2-p0@global
ruby-1.9.2-p0 - updating #rubygems for /Users/shimizu/.rvm/gems/ruby-1.9.2-p0
ruby-1.9.2-p0 - adjusting #shebangs for (gem).
ruby-1.9.2-p0 - #importing default gemsets (/Users/shimizu/.rvm/gemsets/)
Install of ruby-1.9.2-p0 - #complete 
$ rvm info

system:

  system:
    uname:       "Darwin mksc-no-mac-pro-2.local 10.5.0 Darwin Kernel Version 10.5.0: Fri Nov  5 23:20:39 PDT 2010; root:xnu-1504.9.17~1/RELEASE_I386 i386"
    bash:        "/bin/bash => GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)"
    zsh:         "/bin/zsh => zsh 4.3.9 (i386-apple-darwin10.0)"

  rvm:
    version:      "rvm 1.1.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]"

  homes:
    gem:          "not set"
    ruby:         "not set"

  binaries:
    ruby:         "/opt/local/bin/ruby"
    irb:          "/opt/local/bin/irb"
    gem:          "/opt/local/bin/gem"
    rake:         "/opt/local/bin/rake"

  environment:
    PATH:         "/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/shimizu/bin:/Users/shimizu/.rvm/bin:/Users/shimizu/.rvm/bin"
    GEM_HOME:     ""
    GEM_PATH:     ""
    MY_RUBY_HOME: ""
    IRBRC:        ""
    RUBYOPT:      ""
    gemset:       ""
$ which ruby
/opt/local/bin/ruby
$ ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10]
$ rvm use 1.9.2
Using /Users/shimizu/.rvm/gems/ruby-1.9.2-p0$ rvm info

ruby-1.9.2-p0:

  system:
    uname:       "Darwin mksc-no-mac-pro-2.local 10.5.0 Darwin Kernel Version 10.5.0: Fri Nov  5 23:20:39 PDT 2010; root:xnu-1504.9.17~1/RELEASE_I386 i386"
    bash:        "/bin/bash => GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)"
    zsh:         "/bin/zsh => zsh 4.3.9 (i386-apple-darwin10.0)"

  rvm:
    version:      "rvm 1.1.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]"

  ruby:
    interpreter:  "ruby"
    version:      "1.9.2p0"
    date:         "2010-08-18"
    platform:     "x86_64-darwin10.5.0"
    patchlevel:   "2010-08-18 revision 29036"
    full_version: "ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]"

  homes:
    gem:          "/Users/shimizu/.rvm/gems/ruby-1.9.2-p0"
    ruby:         "/Users/shimizu/.rvm/rubies/ruby-1.9.2-p0"

  binaries:
    ruby:         "/Users/shimizu/.rvm/rubies/ruby-1.9.2-p0/bin/ruby"
    irb:          "/Users/shimizu/.rvm/rubies/ruby-1.9.2-p0/bin/irb"
    gem:          "/Users/shimizu/.rvm/rubies/ruby-1.9.2-p0/bin/gem"
    rake:         "/Users/shimizu/.rvm/gems/ruby-1.9.2-p0/bin/rake"

  environment:
    PATH:         "/Users/shimizu/.rvm/gems/ruby-1.9.2-p0/bin:/Users/shimizu/.rvm/gems/ruby-1.9.2-p0@global/bin:/Users/shimizu/.rvm/rubies/ruby-1.9.2-p0/bin:/Users/shimizu/.rvm/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/shimizu/bin"
    GEM_HOME:     "/Users/shimizu/.rvm/gems/ruby-1.9.2-p0"
    GEM_PATH:     "/Users/shimizu/.rvm/gems/ruby-1.9.2-p0:/Users/shimizu/.rvm/gems/ruby-1.9.2-p0@global"
    MY_RUBY_HOME: "/Users/shimizu/.rvm/rubies/ruby-1.9.2-p0"
    IRBRC:        "/Users/shimizu/.rvm/rubies/ruby-1.9.2-p0/.irbrc"
    RUBYOPT:      ""
    gemset:       ""
$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]
$ gem -v
1.3.7
$ which gem
/Users/shimizu/.rvm/rubies/ruby-1.9.2-p0/bin/gem

おお!できたっぽい。

今後メインを1.9.2-p0にしたいので .bashrcに

rvm use 1.9.2-p0 > /dev/null

を追加する。

railsのインストール。gem はユーザー配下にインストールされるので一般ユーザーでインストー

$ gem install rails
$ rails -v
Rails 3.0.3

参考にさせて頂いたサイト
http://runeleaf.wordpress.com/2010/02/07/ruby-rvm%E3%81%A7ruby%E3%81%A8%E3%81%8Bgem%E3%81%A8%E3%81%8Brake%E3%81%A8%E3%81%8B%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88/

iPhone OS のPDF表示APIのバグ

iPhoneOSのPDF表示APIを触っていたところバグに遭遇した。

再現コードはこんな感じ

CFURLRef url
= CFURLCreateWithFileSystemPath(NULL,
	(CFStringRef)filePath_,
	kCFURLPOSIXPathStyle,
	0);
CGPDFDocumentRef doc = CGPDFDocumentCreateWithURL(url);
CFRelease(url);
if(!doc)return;
CGPDFPageRef page = CGPDFDocumentGetPage(doc, 1); //ここで1ページ目を取得
NSLog(@"page address:0x%x", page); //Logを出しておく
CGPDFPageRelease(page); //リリース
CGPDFPageRef page2 = CGPDFDocumentGetPage(doc, 1); //ここで1ページ目をもう一回取得

//ここで出力した内容が上のログと同じアドレス
//つまりRelease をしたにも関わらず、
//キャッシュしている同じアドレスを示す
NSLog(@"page address:0x%x", page); 

//ここでpage2を使うと落ちる 
CGRect aRect = CGPDFPageGetBoxRect (page2, kCGPDFCropBox);


下記のページ
Life is beautiful: iPadアプリ作成日誌: PDF関連APIのバグについて
http://satoshi.blogs.com/life/2010/05/ipad%E3%82%A2%E3%83%97%E3%83%AA%E4%BD%9C%E6%88%90%E6%97%A5%E8%AA%8C-pdf%E9%96%A2%E9%80%A3api%E3%81%AE%E3%83%90%E3%82%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6.html

でCGPDFPageRef をキャッシュしているみたいという事なので恐らく同じバグと思われる。
対策方法はやはり、CGPDFDocumentRefを毎回開放するという事みたい。