2009-11-02

移行しました。

思うところあって、いくつかあったブログを一本化することにしました。以後、この「Macをプログラムする」の更新は行いません。これまで投稿してきたエントリはそのまま、ここに残します(Googleが消せと言ってこないかぎり)。

移行先

2009-10-30

Git 早見表

公式サイトからたどって発見。

印刷するなら Large がオススメ。↓に写っているのは Large を A4 用紙に印刷したもの。

送信者 Macをプログラミング

2009-10-29

SSHで接続 (MacBook → Mac mini Server)

Snow Leopard Server ではデフォルトで SSH のサーバが稼動している。せっかくだから、MacBook から接続してみる。せっかくの SSH なんだから、鍵を生成して mini 側に転送しておく。ホームネットワークでやっても意味ないけどな〜。

参照した文献はこれ(↓):

MacPorts 1.8.1

mini (Snow Leopard Server) に MacPorts をインストールしてみた。
送信者 Macをプログラミング
今のところ、インストールした ports は gnupg だけ。次は git をインストールしてみようかと思っている。「入門git」を読み始めたから。

Snow Leopard Server のドック(デフォルト状態)

先日、購入した Mac mini は Server モデルだけど、デスクトップ兼用で使う。デフォルト状態でのドックは滅多に見かけないので記念に撮っておいた。ハサミの付いたアイコンは、このスクショを撮るための「グラブ」アプリのもの。
送信者 Macをプログラミング
もう、今ではすっかり別の並びになっている。

2009-10-23

Mac mini Server、届いた!

昨日(10/22)、Apple Store で発注したら、もう届いた。早くてびっくり。↓は手に持ってみたところ。小さい、軽い。MacBook ですらデカく見えるよ。

送信者 Macをプログラミング

次は付属するマニュアル類。サーバのマニュアルはすっかり見慣れた雪豹のもの。Apple 製品のマニュアルにしては分厚い。といってもサーバOSのマニュアルだとはとても思えない薄さなんだけどね(ジャストCDサイズで 180 ページ弱)。

送信者 Macをプログラミング

ちなみに、Mac mini (Late 2009) もデフォルトではカーネルが 32 bit モードで起動する。ものは試しと 64 bit モードで起動させてみると・・・

送信者 Macをプログラミング

これ(↑)じゃあ、使えないよ。シネマにつなげるための Dual-Link ケーブルの問題だという可能性もあるけど。

2009-08-29

MacBook と L997

EIZO の FlexScan L997 はパネルを90度回転させることができ、縦長のディスプレイとしても使える。さらに、グラフィックカードとOSが対応していれば自動的に画像の表示方向も切り替わる。この機能は ActiveRotationII と呼ばれている。

ところが、この機能は MacBook (Early 2008) とは相性が悪い。縦長だと認識してくれない。グラフィックチップの問題なのか、Mini Display ポートの制限なのか不明だけど、1600 x 1200 (縦長)の表示エリアを生かすことができず、中央部の 1024 x 768 の部分にだけ表示されてしまう。

Snow Leopard にアップデートしたので、何か変わっているかもしれないと思い、試してみた。結果は・・・× 。
うーんん(´・ω・`)

このとき、ふと気がついた。「ActiveRotation を切れば良いんじゃないの?」と。

もともと、Mac OS X のディスプレイの設定には表示を回転させる項目がある。90度ごとに、4方向に表示を切り替えられる。L997 の機能ではなく、OS X の機能で表示を回転させれば良い。で、やってみた(↓)。

送信者 Macをプログラミング

うまくいった。

手順は、(1) L997 の設定で「ActiveRotation II」を無効にする、(2)OS X で「システム環境設定」>「ディスプレイ」を開き、L997側の「回転」を「90度」に設定する、というもの。

MacBook を買ってから1年以上たって気付くなんてなぁ・・・。

ちなみに、↑のスクショに写っている背景画像は、どちらも Snow Leopard で追加されたもの。L997 側の方は Snow Leopard のパッケージなんかに使われているもの。MacBook 側のは雪豹が山(ヒマラヤとかかなあ)を歩いている様子。雪豹、かわいいよ。

2009-08-28

Snow Leopard、MacBook にインストールした。

うちの MacBook は Early 2008 と呼ばれるモデルで、黒ポリカのやつ。Open CL の恩恵なんかは享受できない。体感的にキビキビ動くようになったと思うのは気のせいだろうか(・ω・)? Safari がとても速いと思うんだけどな。起動も速い。ページを表示するのも速い。当分、Firefox をインストールするのは見送って、Safari を使ってみよう。

送信者 Macをプログラミング

事前に流れていた情報どおり、MacBook ではカーネルは 64 bit モードにならない。なったからって、目に見えて良くなるわけじゃないけど、ちょっとションボリ(´・ω・`)。

Snow Leopard、届いた。

発売日に届いた。パッケージはジャストCDサイズ。安っぽくも感じるけど、デカいパッケージはあとあと邪魔になるだけ。この方が良い。

送信者 Macをプログラミング

内容は、DVD が1枚にうすい説明書。パッケージもふくめて雪豹だらけ。

送信者 Macをプログラミング

最初、この雪豹の写真を見たときは、ちょっといかつい印象だった。何度も見てたら慣れてきた。見慣れたらカワイイよ、雪豹。

2009-08-25

[ヒレガス本]Chapter 1. Cocoa: What Is It? (Cocoaって何?)

(p.7)
Most of the time, Cocoa fulfills the promise: Common things are easy, and uncommon things are possible. If you find yourself writing many lines of code to do something rather than ordinary, you are probably on the wrong track.

Cocoaプログラマの座右の銘だねえ。「Cocoaを使えば、当たり前のことは簡単に書けるし、そうじゃないことだって少なくとも不可能じゃない。もし、大量のコードを書く羽目におちいったとしたら、たぶん何か間違った道筋をたどっている。」うーん、うまく日本語で表現できないけど、まあ、そんな感じのこと。

Cocoaだけじゃない、ヒトの手に触れるすべてのプログラム(とそれを作るプログラマ)にとっての指針だ。

関連エントリ

2009-02-06

iPhone SDK (OS 2.2.1用) にアップデート

iPhone SDK をアップデート。Xcode のバージョンは変わらず(3.1.2のまま)。かかった時間はやはり10分ほど。

送信者 iPhoneをプログラミング

2009-02-05

iPhone Developer Program

ちょっと手間取ったけど、どうにか iPhone Developer Program のアクティベーションにまでこぎつけた。ADC の iPhone DevCenter で Program Portal に行くボタンが表示されるようになった。

送信者 iPhoneをプログラミング

何をどう手間取ったかは、そのうち書こう。

2008-12-20

荻原(2.0)本

追記@2010-12-19

2010年12月に改訂版が出た。改訂版の目次も引き写しておいたので、以下を参照のこと。

何度も言及しているので、目次だけでも参照できるように書き込んでおく。

詳解 Objective-C 2.0 ([著]荻原剛志, [版]SoftBank Creative)

詳解 Objective-C 2.0
荻原 剛志
ソフトバンククリエイティブ ( 2008-05-28 )
ISBN: 9784797346800
  • CHAPTER 01. オブジェクトに基づくソフトウェアの作成
  • CHAPTER 02. Objective-Cのプログラム
  • CHAPTER 03. 継承とクラス
  • CHAPTER 04. オブジェクトの型と動的結合
  • CHAPTER 05. リファレンスカウンタを用いたメモリ管理方式
  • CHAPTER 06. ガーベジコレクション
  • CHAPTER 07. NSObjectクラスとランタイムシステム
  • CHAPTER 08. Foundationフレームワークの重要なクラス
  • CHAPTER 09. カテゴリ
  • CHAPTER 10. 抽象クラスとクラスクラスタ
  • CHAPTER 11. プロトコル
  • CHAPTER 12. 宣言プロパティとアクセサ
  • CHAPTER 13. オブジェクトのコピーと保存
  • CHAPTER 14. メッセージ送信のパターン
  • CHAPTER 15. アプリケーションの構造
  • CHAPTER 16. 例題: 簡易画像ビューア
  • CHAPTER 17. 例外とエラー
  • CHAPTER 18. スレッド
  • CHAPTER 19. 分散オブジェクト
  • CHAPTER 20. キー値コーディング
  • Appendix A: Foundationフレームワークの概要
  • Appendix B: コーディングの指針

ゾーンについて調べてみた

ヒレガス本を読んでいた。ちょっと気になることがあって ADC Documents の中の "Cocoa Fundamentals Guide" を開いた。そこで、"zone" という言葉に出会う。「ああ、そう言えば "allocWithZone" とか見たことあるな。ゾーンって何(・ω・)?」と思ったので、荻原(2.0)本を開いた。「CHAPTER 13. オブジェクトのコピーと保存」の最初にゾーンの解説が載っている。軽く引用してみる:

(p.304)
Cocoa では、動的に確保されるメモリの管理をゾーン(zone)と呼ばれる領域を使って行います。(・・・中略・・・) メモリ空間にいくつかのヒープを設けて、関係の深いデータやオブジェクトは特定のヒープからメモリが割り当てられるようにします。このようにすると、空間的な局所参照性を生かした効率的なメモリアクセスを実現できると期待されます。

ページフォールトを避けたい、ってこと何だろうねえ。何というか、C の時代に戻ったような気がするよ。と思いつつ先を読み進むと・・・

(p.305)
Apple社のドキュメントでは、通常はデフォルトゾーンだけの利用で十分な実行効率が得られるとされており、(・・・中略・・・) さらに、ガーベジコレクションを利用した場合には、オブジェクトを生成する時にゾーンを指定することができません。

ええええ??

しょうがない、英語と格闘するか。と ADC Documents にもどって、ゾーンに関する記述を探した。荻原(2.0)本には "Objective-C 2.0 Runtime Reference"、"Memory Management Programming Guide for Cocoa" の名前が挙がっている。

"Memory Management Programming Guide for Cocoa" にこう書いてあった。

Zones are page-aligned areas of memory that hold the objects and data allocated by an application. (・・・中略・・・) In most circumstances, using the default zone is faster and more efficient than creating a separate zone.

(・・・中略・・・) For example, allocating a group of related objects in the same zone co-locates those objects in the same area of memory. If a page fault occurs when trying to access one of the objects, loading the page brings in all of the related objects, which could significantly reduce the number of future page faults.

たいていはデフォルト(ランタイムシステムが自動的に割り当てるゾーン)だけで十分だ。一方で、独立したゾーンを使うと、メモリのフットプリントが大きくなる代わりに、ページフォールトが減らせるかもよ、とも書いてある。

"Garbage Collection Programming Guide" では、つぎの一文を発見。

You cannot allocate objects in separate zones—all Cocoa objects must be allocated in a single managed heap. If your application is running in garbage collection mode, the zone parameter in NSAllocateObject is ignored.

GCが有効だと、ゾーンを指定しても無視される、と。

まとめてみよう・・・。Mac で、それも Leopard 以降だけをプラットフォームとするなら、GC を使えるし、使いたいだろう。その場合、ゾーンのことは忘れて OK。けど、iPhone OS では GC は使えない。しかもメモリやパフォーマンスはシビアなプラットフォームだから、ゾーンを使ったプログラミングが関係してくるかもしれない。

2008-12-14

"Beginning iPhone Development" が届いた

今日、Amazon から届いた。

表紙の輪切りフルーツは何? 裏表紙を見ると関連するタイトルで同様の柑橘系フルーツの輪切り写真が使われていて、レモン、ライム、オレンジのように見える。とすると、この iPhone のやつは・・・。

それはさておき、まずは目次。

  • CHAPTER 1 Welcome to the Jungle
  • CHAPTER 2 Appeasing the Tiki Gods
  • CHAPTER 3 Handling Basic Interaction
  • CHAPTER 4 More User Interface Fun
  • CHAPTER 5 Autorotation and Autosizing
  • CHAPTER 6 Multiview Applications
  • CHAPTER 7 Tab Bars and Pickers
  • CHAPTER 8 Introduction to Table Views
  • CHAPTER 9 Navigation Controllers and Table Views
  • CHAPTER 10 Application Settings and User Defaults
  • CHAPTER 11 Basic Data Persistence
  • CHAPTER 12 Drawing with Quartz and OpenGL
  • CHAPTER 13 Tabs, Touches, and Gestures
  • CHAPTER 14 Where Am I? Finding Your Way with Core Location
  • CHAPTER 15 Whee!
  • CHAPTER 16 iPhone Camera and Photo Library
  • CHAPTER 17 Application Localization
  • CHAPTER 18 Where to Next?

2008-12-13

iPhone SDK (OS 2.2用) にアップデート

MacBookの方の Xcode、っていうか iPhone SDK をアップデート。iPhone OS 2.2 対応のもの。Xcode は 3.1.2。インストールにかかった時間は約10分。

送信者 iPhoneをプログラミング

2008-11-29

MindNode Pro を使うことにする

FreeMind はファイルの拡張子に「.mm」を使う。これは Objective-C++ 用として Xcode にひもづけられている。気に入らない。「.mmap」とかに変えると、今度は FreeMind が開けないと文句を言う。むかつく。立ち上げた後、ファイルを開こうとするとダイアログはデフォルトが「.mm」でフィルタリングされている。いちいち「All Files」に変えないと他の拡張子のファイルを探せない。イライラする。

他のソフトを探してみることにした。「mac mindmap」でグーグルさんに聞いてみると、すぐに MindNode というソフトが見つかった。まだ新しいソフトのようだけど、評判も良さそう。

公式サイトを開く( MindNode >> MindNode Pro )。フリー版がある。試してみた。うん、なかなかイイ感じ。あれ、ノードの移動ができないぞ。むむむ、カット&ペーストしろっていうのか? ほほお、それは Pro 版(有料)ならできるのか。いくらいくら? 11.95 ユーロって・・・(だいたい¥1,500.-ぐらいらしい)。そこまで言うなら買おうじゃないか。PayPal でお支払い。

こんな感じ(↓)。

送信者 Macをプログラミング

2008-11-24

Power Mac にメモリ増設

Power Mac G5 にメモリを増設した。少し前から、2GBだと少しキツいな、と思い始めていた。ブラウザ(Firefox と Safari)、メールに iCal、iTunes、iPhoto。Omni系のアプリが加わることもある。これでもういっぱいいっぱい。アクティビティモニタで「システムメモリ」を見ると緑の部分(空き)がほとんど残らない。というか、すでにページアウトが増えている状態。ここから Xcode を起動すれば、その分がそのまま他を押し出すことになる。

で、思い切って買ってみることにした。ちなみにうちの Power Mac は G5で、Early 2005 って言われているやつ。

増設作業自体は簡単。Power Mac に付属してきたマニュアルに書いてあるとおりにやればOK。スロットは少々、カタく、けっこう力をかけて押し込まなければならなかった。良く見れば、きちんと刺さっているかどうかはわかる。

少しドキドキしながら起動。無事に起動する。ログインして「このMacについて」を表示させると・・・このとおり(↓):

送信者 Macをプログラミング

さらにプロファイラを開いてメモリの項目を見たものがコレ(↓):

送信者 Macをプログラミング

買ったのはコレ(↓):

送料込みで¥6,800.-ぐらい。金曜日(11/21)の夜(ってか深夜)にネットで発注して、今朝(11/24)届いた。素早い発送で満足。次の週末になるかと思っていたからね。

2008-11-08

iPhone SDK をインストールしてみた

送信者 iPhoneをプログラミング

インストールに要した時間は約10分。インストールしたのは MacBook (Early 2008; 黒)。Xcode はインストールずみだったので、上書き + 追加、ってことになる。

インストール完了後、Xcode を立ち上げる。新規プロジェクトを選ぶと、確かに 「iPhone OS」が選択肢に増えている。

送信者 iPhoneをプログラミング