先日のユキヒョウことSnow Leopardをインストールしてみました.今回のSnow Leopardはほとんど64bit対応になったということ.もちろん,Apple製のアプリケーションは全て64bitになっている.という訳でもなかったのが実.

32bitのまま
• カーネル
• iTunes

カーネルのデフォルトが32bitであることは既に色々と騒がれています.もちろんEFIが32bitである初期のIntel Macでは64bitカーネルで起動する事は出来ません.EFI64bitでのみ,64bitカーネルで起動できます.XServeはデフォルトが64bitだそうです.その他のMacでは「6」と「4」を押したまま起動すると64bitカーネルで動くそうです.私の愛機は残念ながら32bit版なので,この現象を体験する事が出来ません.
ちなみに「/Library/Preferences/SystemConfiguration/com.apple.Boot.plist」に

Kernel Flags
arch=x86_64

を追加すると起動カーネルが変更できるそうです.
自身のEFIがどちらかわからない場合は以下のコマンドで調べる事が出来ます.

ioreg -l -p IODeviceTree | grep firmware-abi


詳細や64bit対応一覧はSnow Leopard Seeds Use 32bit Kernel, Drivers by Defaultに載っているのでそちらを見てください.

以下はその他の気がついた点と感想です.

•システム環境設定
システム環境設定.appはパネルから起動するアプリケーションもあるので64&32bitの両方に対応しており,デフォルトは64bit起動になっていました.

•QuickTime
インタフェースがすっきりしていて,扱い易い印象とトリミングが可能になったことで簡易動画編集ソフトとして価値が上がったこと

•Expose
Dockアイコンからの起動とアプリケーション別の起動が出来るようになったこと

•ブラウザ別Flash Playerの動作(Youtube鑑賞)
  •64bit版safari
    •safariだけで25%くらいのCPU使用率 +
    •Flash Playerプラグインの処理で 77%の使用率
  •32bit版その他のブラウザ(Firefox, Camino...)
    •変わらず,25〜35%の使用率
Flash Playerプラグイン自体は32bitのプロセスでほとんどがこのプラグインで負荷を強いられているようです.早急にsafariの改善を行なってほしいです.通常のFlash広告などでは32bitブラウザと同等かそれ以下の使用率です.Flash Playerの動画再生のみ「ものすごく」使用率があがるようです.safari自体は軽くなっています.


全体的にCPU利用率が低くなって速くなった(気がする)ことがメインです.マイナーチェンジという気がしますが,技術的にはすばらしく喜ぶべき事です.今回は比較的規模の小さい騒動でしたが,今後のAppleが発表するハードウェアに最適なサービスを実現させるための下準備というように感じます.プロセスを最適化しておいて,革新的なUIなどはハードウェアとともに発表されると予想します.この予想が当たると良いですねw.ちなみに家のSnowLeopard環境は最上の写真.しかし,暑いので本当はこんな感じ.


東京大学の柏図書館へ行く途中でパン屋さんによって昼食を買う事に。
気象大学のすぐ近くにあるパン屋さんで静かな場所にあるから大好きな場所なんですが、久しぶりにいったら,食パンマンの菓子パンが。すぐ横に幼稚園があるからこういった類いのものが人気なのだそうで。アンパンマンとかピカチュウとかのパンはよく見かけるが、食パンマンは珍しかったので思わずお店の人に断わって写真を一枚。

そして、柏の葉公園を通って図書館へ。
平和だなぁ〜

アプリケーション作りで動作に時間制限が必要なことは色々なアイディアを出す中で自然と感じるはずです.Foundation のNSTimer を使ってカウントダウンを作ってみました.作ったことがあるけど,改めてiPhone版で書いてみました(ほとんど,Mac版と変わりませんね).


Xcode
• ~ViewController に
   •NSTimer *timer
   •NSDate *stDate
   •NSDate *nowDate
   を設置
   • タイマ表示用のIBOutlet UILabel*を設置
• ~ViewController.m
   •stDate, nowDateを初期化
   •timer = [NSTimer scheduledTimerWithTimeInterval:(1.0)
        target:self
        selector:@selector(onTimer:)
        userInfo:nil
        repeats:YES];
        でメインループに呼び出す関数と呼出し間隔を登録
     •この処理はタイマー開始時に実行するのが要
     •今回はボタンを押して実行-(IBAction)action:(id)senderに書く
     •selector:@selector(~~:)にはインターバル毎に呼び出すメソッドを指定
   •onTimer(名前は任意)を作成
    •nowDateをNSDateクラスのdateメソッドで現在時間を取得
    •nowDateのtimeIntervalSinceDate メソッドでstDateとの差分を取得
    •上記の差分から任意の数値を引く(例.timeLimit - [nowDate timeIntervalSinceDate:stDate])
    •秒単位での起動なのでtime / 60で分
    •time % 60で秒

Interface Builder
• ViewにUILabelを設置
• ~ViewControllerのUILabelとバインド
• ボタンをバインド


タイマーをメイン処理にn秒毎のメソッド呼出しを登録する事でカウントダウンや時間に応じた作業が出来ます.変数stDate はnowDate と比較する静的基準です.タイマー開始時にstDateとnowDate を初期化して時間を記録します.そして,n秒毎にNSDate クラスのtimeIntervalSinceDate でstDate とnowDate の差分をとります.カウントダウンなら(設定時間 - stDateとnowDateの差分)で出来ます.タイマーが0になったらインスタンスtimerのinvalidateメソッドでメインループから実行登録を消します.

n秒置きに現在位置を取得することやサーバとの通信を定期的に行なうにはこういったタイマーが必要になるので練習しておくと良いっすね.

Timer.zip

2009年麻布十番祭りの最終日に出没.去年に続いてAVANTIの出店に出向くことにしました.そしたら、ペンネアラビアータがなくなって茹でに5分の待ちが発生.なんて人気度なんだAVANTI.ていうかリスナー多すぎ.スタッフの方に「今日はどなたかいらっしゃっていますか」と聞いたところ,教授ことミスターアヴァンティが来店中.これは逃してはならぬということでカクテルブックにサインしてもらいました.握手も2回程.「ようこそ,ここがお探しのAVANTIへ」なんて決め台詞までいってもらって幸せの絶頂の一部です.サインは「ミスターアヴァンティ」とあります.そして,いつも出店を手伝っている父娘の娘さんとサイコロを振って同一の出目ならテーブルクロスをプレゼントということで1/36の確率を考え,どうせ当たらないだろうと思っていたら,どうやら約3%の確率に当たったみたい.

色々と歩いていると今度は各地の協同組合の物産出店あたりでなまはげさんに会いました.近くにいた小さな子供が「怖いから〜,怖いからいい〜」なんてかわいいことをいってるな.と隣の友人にいったら,「はよ結婚しろ」とか.まだ無理です.

山梨のワインを試してみました.「サルナシ」というキウイに似たフルーツのワインを飲んできました.白ワインなんですが,普通のワインよりだいぶフルーティでジュースっぽい味わいでした.その他のスペインのパエリアやスウェーデンの肉団子など,各国の料理をつまみつつ麻布十番祭りを回りました.

去年と同様にAVANTIをメインに楽しみましたが,全体を楽しむには一日では足りないような気がします.


実家の無線LANルータがなくなったので,新しくFonルータを導入することになり,到着しました.これでやっと屋外のFonスポットでも使えるようになりました.(うれしい)外のコミュニティメンバーに提供するパブリック電波と家のプライベート電波の棲み分けはよく出来ており,パブリックからWAN側のネットワークにもアクセスできないようになっています.ただ,プライベートのネットワークがよろしくなく,消えたりついたり,セキュリティWPAにしてるのにセキュリティがかかってなかったり,iPhoneでつなげるとiPod touchのほうで切れるし.いい加減,設定に時間をかける訳にもいかなかったので「男は黙って再起動」を行使.うまくいくようになりました.ルータとしての機能は標準より少し劣るくらいですが,一般的にインターネットにつなげる程度なら問題ありません.ともあれ,実家に無線環境が復活したことに祝.無線LANルータ不在中に頑張ったMac miniの共有機能よありがとう.

ユーザインタフェースの見栄えや仕組みがアプリケーションの質を左右するというので,UINavigationController を使いこなせるように試してみました.今まで使ったこと無かったんですけど(えぇぇ!!今更っ),便利ですねぇ.ざっとやり方を自分用にメモしておきます.もっと細かく書いてある人もいるので探してみるとよいでしょう.

Xcode
•~AppDelegate.hにUINavigationControllerクラスのインスタンス変数を追加(*naviControllerとしておきましょう)
•~AppDelegate.m内の[window addSubview:viewController.view]の代わりに[window addSubview:naviController.view]を記入

InterfaceBuilder
•MainWindow.xib内にUINavigationControllerを追加
•UINavigationController内のroot view Controllerを削除
•代わりに元々あった~ViewControllerを追加
•無い場合はUIViewController追加してクラスをインスペクタのClass Identityで自分が作成した~ViewControllerに指定(xibファイルを持つ場合はNIB Name を記入しましょう)
•Xcodeで~AppDelegate.hに追加したnaviControllerとUINavigationControllerをバインド(関連づけ)します


ココまでの手順でNavigationBarが表示されるようになります.
次にアイテムボタンを自動的に作成してくれるやり方を記述します.

Xcode
•~ViewController.hに次のUIViewControllerを保持するインスタンス変数を容易
•~ViewController.mの初期化時(id)initにself.title = @"title"でタイトルを任意に変更
•-(void)viewDidLoadにボタン作成を記入
  •[super viewDidLoad]と self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc]
        initWithTitle:@"next"
        style:UIBarButtonItemStylePlain
        target:self
        action:@selector(button:)] autorelease]を追加
•ボタン作成時に記入した@selectorのbuttonメソッドを作成(ボタンが押された時の動作)
  •用意したUIViewControllerのインスタンス変数をallocする
  •プッシュされるViewControllerをpushViewControllerに引き渡し
    •[[self navigationController] pushViewController:nextViewController
animated:YES]を追加する

InterfaceBuilder
•各UIViewControllerのインタフェースで必要になったらアイテムを随時追加



UINavigationController内に含まれるUIViewControllerにはNaviBarのアイテムが自動的に付加されます.アイテムの自動付加はとても便利なのでやっぱり実際に書いてみて勉強するとありがたさが実感できます.
今後,ちょくちょくノートしていきます.


navitest.zip

火曜の朝5時頃に東名高速道路で崩落があったらしく,地震と大雨による土盛りがへにゃったようで.実はこの日の同時刻に夜行バスで実家に向かっているところで,地震発生は海老名SAで休憩をとっていたときに気がつき,「震度6かぁ、全然気がつかなかった.」と思いつつも気がつかなかっただけに規模の大きさに実感が持てないまま帰宅.あとで朝のニュースを見てみると東名高速が崩落とありました.しかも自分が乗ったバスが通った時間の約3,40分くらい後で.もしかしたら,滑落してたかも.と思うとぞっとします.

NEXCO中日本によるとすぐに復旧の応急工事がされるそうで.しかし,なんだか不安.帰りは新幹線にしようか.夜行バスなら中央高速使ってくれますように.

京都アニメーション制作の「涼宮ハルヒの憂鬱」.いつの間にか新作が放送されていて,話題になっていました.さらに話題になっていたのは,ほぼ同じ内容を繰り返し放送するといった暴挙(演出?)でブログや掲示板各所で騒がれていました.1話目は普通にストーリが流れる形.しかし,2〜7話目は1話を繰り返していることに気づいているキャラクター達のストーリを少々演出が変わっているが内容的にほとんど変わらないものを放送するというものです.今週8話目を迎えてこの「エンドレスエイト」と呼ばれる話は終わりました.

このループ演出には賛否両論が持ち出されましたが,ほとんど「否」.というか「非難」が浴びせられているようにとれます.否の流れはエヴァの最終回を思い出します.私自身もどちらかというとループ回数が多すぎたのではないかと思います.長くて5話完結が精々というところ.この件に関しては旧作の監督が京都アニメーションを退社したにもかかわらず,元関係者として謝罪のコメントを出している記事がありました.2話が限度だろうという反対意見を出していたが退社後,実行されてしまった.ということみたいです.この後の京都アニメーションから繰り返しをしたエンドレスエイト演出の意図の説明があるのか,それとも今後の制作においての伏線なのか.たかが,オタキャラのアニメだろうと思ってたのですが,面白い流れになってきましたね.

iPod Touch 2GのBluetooth と wifi b/gの同時利用は周波数帯が同じ2.4GHzなので,どうも干渉し合ってそれぞれの通信が妨げられる用です.BluetoothがONの状態でマウスコントロールのアプリを利用するとほとんどの場合で操作にタイムラグが発生します.逆にwifiがONでBluetoothデバイスと通信しようとするとペアリングができません.一時的に接続されてもすぐに切断されてしまいます.

どちらかをOFFにすることで長時間の通信は干渉し合いません.当たり前に.SDK 3.0で提供されたP2P通信ではBluetoothを標準にしているようですが,P2Pはうまくいってるのでしょうか?瞬間的な通信は問題ないと思いますが,ストリーミングとかボイスチャットとかは大丈夫でしょうか?
GKPeerPickerControllerクラスを利用するとBluetoothとネットワークのどちらかを利用するか選択できるようになるようです.提供されている接続動作はBluetoothでのみみたいですが,wifiネットワークでも作成すれば出来るそうです.とりあえず,Bluetoothで作ってみて動作確認したいですね.どの程度の通信で障害が発生するのか.場合によってはアプリ内からBluetoothのON/OFFが出来るようになれば良いのですが.


Frog, originally uploaded by ryour.

何気ない雨の日の日常