2010年12月30日木曜日

MacBook (MB466J/A)の液晶パネル交換

(液晶交換にチャレンジされる場合は自己責任でお願いします)

ここ1、2ヶ月MacBook 2008 late unibody aluminum (MB466J/A) の液晶の調子が悪かった。以下の写真のように画面の右側に白い帯が発生し、画面に力を加えると白い帯が消えるという状態だった。パネルの問題かどうかの確証も得られていない状態だったが、とりあえずはパネルを交換してみようと考えた。


Apple に修理に出すと高いので、ネットでみつけた修理業者にだす(約40,000円)か、パネルを買って(約15,000円)自分で交換するかを悩んでいた。調べてみると自分で交換するのは相当難しいらしいことが分かったが、金額の差があったため挑戦することにした。ちなみに、業者に出すとパネルの問題かどうかの検証をしてくれるようだ。

参考にしたのは、
ifixit の Installing MacBook Unibody Model A1278 LCD Panel
と、以下の動画。



購入したものは以下の2点。(これ以外にもトルクスドライバーT6が必要)

  1. NOTEPARTSさん(http://www.noteparts.com/)で Apple MacBook MacBook Pro 13 A1278 MacBook Air 13.3 WXGA LEDバックライト TFT液晶パネル(14,980円)
  2. ホームセンターでミニ・サクションカップ(ESC-22) (698円)。

まずはドライバーでネジを抜いてパネルを取り外す。

そのあとドライヤーで液晶パネルの枠を熱して接着剤を溶かしてサクションカップでガラスカバーを引きはがす。

しかし、これが非常に難しいため何回も上のビデオをみて挑戦した。よくビデオをみるとパネルは本体に取り付けたまま本体を抑えるようにして力を加えるといいらしいことが分かったので、パネルを本体にとりつけて作業をした。力の加減が難しいが、ビデオの映像と音声(ベリッと聞こえる)で感覚をつかんだ(つもり)。

一カ所はがれると、あとはカードのようなもので周辺を順番に引きはがす。はがれないときはドライヤーで熱しながら行った。一点注意はパネル上部のカメラの部分で、フレキが引っかかりやすくなっていること。自分もカードでフレキを引き抜いてしまった。

めでたくガラスカバーがとれた様子。

パネルを新品に取り替えたあと組み立て直して無事に復活!

すべてがうまくいったわけではなく2点ほど失敗したことがあった。
  1. ガラスカバーと液晶パネルの間にゴミが入った。
  2. ガラスカバーのふちにあるゴムをカードで傷つけた。
もう二度とやりたくない種類の作業だった。。。

2010年12月8日水曜日

iOS デバッグ&最適化技法

 タイトルからコアな内容かと想像しましたが、内容はiOSアプリ開発の全般について解説したものだと理解しました。
しかし、他の入門書にはない内容がいくつかあります。メモリ管理について、デバッガ、プロファイラの使い方などです。特に、main 関数からどのようにアプリが立ち上がるかの解説は、他書ではあまり見られない内容かつ分かりやすい記述でした。このあたりの内容が本書のタイトルの理由かと思われます。
ソフトを仕事にしている人にとっては当たり前かもしれませんが、これから始める人にとっては、こんなツールや手段があるのかと俯瞰的に知ることができて、参考になるのではないでしょうか?

そういえば、Xcode の画面がデベロッパプレビュー版だったのが気になりました。

2010年12月6日月曜日

ZipCodeJapan 1.3.0 released

ZipCodeJapan 1.3.0 released !   details here.
ZipCodeJapan 1.3.0 をリリースしました。詳しくはこちら

2010年11月10日水曜日

ZipCodeJapan 1.2.0 released

ZipCodeJapan 1.2.0 released !   details here.
ZipCodeJapan 1.2.0 をリリースしました。詳しくはこちら

2010年11月7日日曜日

ZipCodeJapan 1.1.0 released

ZipCodeJapan 1.1.0 released !   details here.
ZipCodeJapan 1.1.0 をリリースしました。詳しくはこちら

2010年11月2日火曜日

O'Reilly Safari Books Online で、.MOBI, ePub コンテンツをさがす方法

O'Reilly の本の読み放題サービスSafari Books Online で、.MOBI, ePub コンテンツを探す方法がわかりました。検索窓にキーワードを入力する際、キーワードに続けて大文字でMOBI とかEPUB とか入力すればよいとHelp に書いてありました。例) iPhone MOBI

と本題は以上ですが、いろいろとサービスの紹介や感想などを書きます。

まず、O'Reilly Safari Books Online サービスについてです。このサービスは、O'Reilly の本がネットで読み放題になるサービスです(注意!英語書籍のみ)。ネットで読めるだけではなく、token というポイントと引換に本のデータを1ページ単位からダウンロードできます。このダウンロードで得られるファイルのフォーマットは、現在 pdf, .MOBI, ePub の3種類あります。token は購入することもできますし、プランによっては毎月一定数付与されます。私が加入している、Safari Library というコース(42.99 USD/month)では、毎月5 tokenが付与されます。tokenを購入するのとKindle store で同じ書籍を買うのを比較すると、Kindle store のほうが安いようです。

そして、貯まった token でダウンロードしたコンテンツはKindle で楽しみたいのですが、すべてのコンテンツに.MOBIやePub が用意されているわけではありませんでした。さらに、ダウンロード画面になってもどんなフォーマットが用意されているかわかりませんでした。ダウンロード前に対応ファイルフォーマットを知る方法を探すと、Help page に"How do I search for books with .MOBI or ePub download formats available?" という項があり解決しました。

ちなみに、個人的な感想としては、Kindle でpdf を読むのはとてもツラいので .MOBI, ePub にこだわっています。
Kindleでpdf を読む場合、大きな本はロードに時間がかかりますし、小さい文字を拡大するとページごと拡大されてしまい、読むのにスクロールが必要になります。スクロールに時間がかかるKindle では、頻繁なスクロールは向いていません。

まとめとしては、「Safari Books Online で .MOBI, ePub 対応書籍の探し方を見つけ出しました。これで Kindle でも読みやすいです。」という内容でした。

2010年10月23日土曜日

MacBook (MB466J/A)のメモリを8GB にしたー。

以下のページで詳しく解説されていました。全く同じ条件だったので安心して交換できました。

Macbook ( MB466J/A, 13-inch, Alminum, Late 2008 ) のメモリを 8GB に交換 | 情熱とスキルと市場

2010年10月21日木曜日

ZipCodeJapan 1.0.1リリース

ZipCodeJapan 1.0.1 がリリースされました。データを2010/9/30版にアップデートしました。

ZipCodeJapan は、郵便番号検索アプリです。View in App Store
高速検索を得意としています。iPhone4(iOS4.1), iPhone3G(iOS3.1.3) で動作確認済みです。
support: fffkk.b@gmail.com

iPhone4 での動作ムービーです。iPhone3G のムービーもYouTube にアップしました




以下、アプリの説明です。
--------
ZipCodeJapan は、郵便番号を検索するアプリケーションです.
郵便事業株式会社から公開されているデータを使用しています.

■特徴
◯超高速検索
iPhone3G, iPhone4 ともに約1秒程度検索が可能です
◯インクリメンタルサーチ
1文字目の入力から検索結果を表示します
◯オフライン検索
データがアプリケーションに内蔵されているため、ネットワーク接続の必要がありません

■機能
◯ドリルダウン検索
都道府県 > 市区町村 > 町域 と絞り込む検索が可能です
◯住所キーワード検索(インクリメンタルサーチ)
都道府県, 市区町村, 町域について文字列の前方一致検索が可能です。ひらがな、カタカナ、漢字で検索できます。
◯郵便番号検索(インクリメンタルサーチ)
郵便番号で検索します
◯コピー機能
郵便番号, 住所, 住所の読みをクリップボードにコピーできます

ZipCodeJapan 1.0.1 released

ZipCodeJapan 1.0.1 released.View in App Store
Confirmed operation on iPhone4 (iOS4.1) and iPhone3G (iOS3.1.3).
support: fffkk.b@gmail.com

What's New ?
Data version has been updated to 30 September, 2010.

This is a demo movie on iPhone4. A demo movie on iPhone3G is available on YouTube site.



This application is a reference application for Zip code of Japan.

Features
- Drill down Japanese address, then you can get Zip code.
- Search Zip code by keyword in Japanese
- Search Zip code by number
- Display details for search results.
includes Zip/Postal code, Address(KANJI) and Address(KANA).
- Copy one search result to clip board.

- Without network access
- High speed search

2010年10月19日火曜日

Netatalk 2.1.4 へアップデート

Debian lenny のNetatalk を2.1.2 から2.1.4 へアップデートしました。前回と同じ手順です。

ソースコードを本家から落としてくる
http://netatalk.sourceforge.net/

以下のようにビルド, インストール

% ./configure --enable-debian --prefix=/usr/local/netatalk-2.1.4
% make
% su
# make install


/usr/local/netatalk-2.1.4/etc/netatalk/ 以下に設定ファイルがあるので、いくつかを編集する

AppleVolumes.default を以下のように変更

#:DEFAULT: options:upriv,usedots
:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 ea:sys

/mnt/hdd/TimeMachine "TimeMachine" options:tm allow:hoge



おまけ
以下のようにしてみると、lennyパッケージ版netatalkの設定ファイルが残っていることが判明しました。。。

# dpkg -l | grep netat
rc netatalk 2.0.3-11+lenny1 AppleTalk user binaries

なので、以下のようにすべて削除してから作業しました。

# aptitude purge netatalk

前回、実はこれが悪かったのかな・・?

2010年10月16日土曜日

deb パッケージによってインストールされるファイルを表示する

Debian, Ubuntu などのdeb系パッケージ管理システムで、あるパッケージをインストールした際にインストールされるファイルの一覧を表示する方法。

% dpkg --listfiles

例) samba パッケージにより、どんなファイルがインストールされるか調べたい。
% dpkg --listfiles samba

2010年10月14日木曜日

ローマ字からカタカナ変換(kCFStringTransformLatinKatakana を使う)

kCFStringTransformLatinKatakana をCFStringTransform() に指定すると、アルファベットがカタカナに変換できる。しかし、Tokyo をトウキョウと変換できないようだ。。。惜しい。

2010年10月9日土曜日

ZipCodeJapan 1.0.0 released

ZipCodeJapan 1.0.0 released.View in App Store
Confirmed operation on iPhone4(iOS4.1) and iPhone3G(iOS3.1.3).
support: fffkk.b@gmail.com

This is a demo movie on iPhone4. A demo movie on iPhone3G is available on YouTube site.



This application is a reference application for Zip code of Japan.

Features
- Drill down Japanese address, then you can get Zip code.
- Search Zip code by keyword in Japanese
- Search Zip code by number
- Display details for search results.
includes Zip/Postal code, Address(KANJI) and Address(KANA).
- Copy one search result to clip board.

- Without network access
- High speed search

ZipCodeJapan 1.0.0リリース!

郵便番号検索アプリ、ZipCodeJapan が発売されました。View in App Store
高速検索を得意としています。iPhone4(iOS4.1), iPhone3G(iOS3.1.3) で動作確認済みです。
support: fffkk.b@gmail.com

iPhone4 での動作ムービーです。iPhone3G のムービーもYouTube にアップしました




以下、アプリの説明です。
--------
ZipCodeJapan は、郵便番号を検索するアプリケーションです.
郵便事業株式会社から公開されているデータを使用しています.

機能
- ドリルダウン検索
都道府県 > 市区町村 > 町域 と絞り込む検索が可能です.
- 住所キーワード検索
都道府県, 市区町村, 町域について文字列の前方一致検索が可能です.
- 郵便番号検索
郵便番号で検索します.インクリメンタルサーチが可能です.
- コピー機能
郵便番号, 住所, 住所の読みをクリップボードにコピーできます

特徴
- オフライン検索
データがアプリケーションに内蔵されているため、ネットワーク接続の必要がありません.
- 高速検索
数秒以内の検索が可能です
- 検索結果全件表示
検索の結果をすべて表示可能です

2010年10月8日金曜日

In Review になりました

2010/9/29 0:30 ごろに申請したiPhone アプリが、2010/10/7 の8:30 ごろ In Review になりました。発売が待ち遠しいです。

2010年9月30日木曜日

開発完了!

数カ月前から開発していたiPhone App の開発が終了しました。そして本日、App Store に申請しました。あとはレビュー結果待ちです。

終盤はアイコンを作ったり、申請方法を調べたり、バージョン、コピーライト、、、、などの調査と、開発以外の仕事を行っていました。改めて、製品化は大変だと思いました。それゆえに、作業が完了した喜びは大きいです。

2010年8月10日火曜日

NSString でひらがなカタカナ変換

現在作成中のアプリで、ひらがなをカタカナに変換する必要があったので調べてみた。以下のページにズバリあったので参考にさせていただきました。ありがとうございます。
iPhone開発日記: NSStringの全角→半角変換

2010年7月18日日曜日

Core Data パフォーマンスチューニング

Core Data (store type は、SQLite) のパフォーマンスチューニングについての覚書。

改善したいのは検索速度。インデックスを使っているつもりが、本当にインデックスが効いているか?ということを如何に調べるかがポイント。

まず、遅い部分のクエリが実際はどのようなSQL文かを調べる。
具体的には次のようにする。
Xcode プロジェクトの実行可能ファイルの該当ファイルをダブルクリックする。"引数"ダブの、"起動時に渡される引数"に、"-com.apple.CoreData.SQLDebug 1" と書く(Core Data Programming Guide: Core Data Performance 参照)。すると、コンソールにSQL 文が出力されるようになる。SQL 文中の、'?' はプレースホルダーで、実際は、何かの値が入る。
ここでは、調べたSQL 文をコピーしておく。

次に、sqlite3 コマンドを使って、 先程コピーしたSQL 文を実行してみる。'?' の部分は実際の値に入れ替えること。
実行してみて結果が正しく得られることを確認する。

最後に、インデックスが効いているかを見る。
sqlite3 コマンドで、以下のようにする。

sqlite> EXPLAIN QUERY PLAN SELECT ........;


結果、WITH XXXXX_INDEX と出力されると、そのインデックスが効いている。
ソートのインデックスが効いている場合は、WITH XXXX_INDEX ORDER BY と出力される。詳しくは、SQLite のドキュメントを参照。

自分の場合は、ソートが遅かったようで、WITH XXXX_INDEX ORDER BY と表示されるようにModel を調整すると、検索スピードが向上した。


最後に、気になったことをメモ。

Core Data で複合インデックスを表現する方法はない??と思われる。

抽象エンティティ内に、インデックスを張った属性を追加して、具象エンティティからその属性を使用する場合、ソート時にインデックスが効かない。この時のSQL 文を調べてみると、WHERE 句に、具象エンティティのID がAND で連結されていた。したがって、インデックスが効かなくなるようだ。

2010年7月14日水曜日

ひとつのXcode プロジェクトで、iPhone アプリとMac用コマンドラインツールをビルドできない!

Xcode 3.1 までは、iPhone 用アプリを開発していプロジェクトに、Mac用のコマンドラインツールをビルドするターゲットを作成できていた。こうしていた理由は、CoreData のモデルを共用したかったため。もう少し具体的には、データベース作成処理だけMacで行い、完成したデータベースファイルをiPhoneアプリで使用する、ということをしたかったため。

ところが、Xcode 3.2 にアップデートした後から、以下のエラーが表示されて、ビルドできなかった。。。

target specifies product type 'com.apple.product-type.tool', but there's no such product type for the 'iphonesimulator' platform

そこで、以下のように xcodebuild を使ってみたとこと、ビルドできた。(「iPhoneSDK開発のレシピ」を参考にしました)
% xcodebuild -sdk macosx10.6 -target target_name

Xcode 上でのビルドは無理かと諦めかけていたところ、以下のMLをみつけて無事解決した。
Apple Mailing Lists: Single Project with Mac and iPhone targets

Option キーを押しながら、画面左上のドロップダウンをクリックすると、すべてのSDK を選択可能になるようだ。

これがスマートな正解なのかはよくわかりません。


2010年6月30日水曜日

Netatalk 2.1.2 に乗り換えた

これまで、Debian lenny で、Netatalk 2.0.5 を動かしてTimeMachine をやっていたが、最近 Netatalk 2.1.2 がリリースされたとのことで、アップデートしてみた。
以下のページを参考にさせていただきました。ありがとうございます。
http://www003.upp.so-net.ne.jp/hat/netatalk/andsamba.html

ソースコードを本家から落としてくる
http://netatalk.sourceforge.net/

以下のようにビルド, インストール

% ./configure --enable-debian --prefix=/usr/local/netatalk-2.1.2
% make
% su
# make install


/usr/local/netatalk-2.1.2/etc/netatalk/ 以下に設定ファイルがあるので、いくつかを編集する

AppleVolumes.default を以下のように変更

#:DEFAULT: options:upriv,usedots
:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 ea:sys

/mnt/hdd/TimeMachine "TimeMachine" options:tm allow:hoge


当初は、以下のようなメッセージがでて起動しなかった。

Starting Netatalk services (this will take a while): eth0: multicast may not work correctly.
eth0: disabled.
atalkd: zero interfaces, exiting.

/etc/init.d/netatalk を読むと、読み込む設定ファイルが間違っていたので、それを、2010/7/2 追記に書いたように修正した。

その後、

# /etc/init.d/netatalk start

で、無事起動。

Mac (Mac OS X10.6) から、バックアップを作成を選択すると、バックアップが始まった。しかし、「バックアップの索引を作成中」が長時間続き終わっていない。しばらくまつことにする。

30分くらい待って完了した。これで、これまで通りのTimeMachine 生活に戻った。めでたし。

2010/7/2 追記
HAT さんより、atalkd を立ち上げる必要はないとのコメントを頂いたので、いろいろと調べてみた。
ATALKD_RUN=no としているのにおかしいな?と思っていたが、よく、/etc/init.d/netatalk を読むと、/etc/default/netatalk という設定ファイルを読み込んでいた。おそらく、Debian のバイナリパッケージをインストールした際に入ったものだろう。なので、以下のように、今回インストールしたものを指し示すように修正。


# Read in netatalk configuration.
#if [ -f /etc/default/netatalk ]; then
# . /etc/default/netatalk
#fi
if [ -f /usr/local/netatalk-2.1.2/etc/netatalk/netatalk.conf ]; then
. /usr/local/netatalk-2.1.2/etc/netatalk/netatalk.conf
fi

2010年6月27日日曜日

Mac でスクリーンキャプチャをとる

Mac 歴が浅いので、スクリーンキャプチャの取り方を知らなかったのでググッてみた。

command + shift + 3

でキャプチャできる。
驚いたことに、キャプチャと同時にカメラのシャッター音が鳴った。さすがMac。

2010年6月21日月曜日

1970/1/1 00:00:00 からの経過秒を求める

仕事で1970/1/1 00:00:00 (UNIX epoch) からの経過秒を求める必要があったので、date の使い方を調べた。こんな感じ。Debian で試した。

$ date -d "2010/1/1 00:00:00" --universal +%s
1262304000

2010年6月17日木曜日

iPhone4 予約


iPhone4 の予約をした。2010年6月16日22:00ごろ。ソフトバンクオンラインショップで予約したが、意外とあっさり終わった。サーバーを増強した後だったらしく、つながりにくいこともなかった。
しかし、予約受付のメールが届いただけで、それ以降のステータスには進んでいない様子。いったいいつ手に入るか。発売延期で7/14 とかいう噂もあるし。

2010年6月13日日曜日

はじめてのiPhone3 プログラミング


サンプルコードが豊富。手順を追ってかなり詳細にコードの解説がされている。掲載されているコードはすべて記述されているので、そのままビルドして使えるのがうれしい。

アプリを作るためのiPhone SDK の機能を網羅的に解説している。CoreData の解説もあったが、ボリュームが少ない。Apple 社の公式ドキュメントのGetting Start レベル。ちなみに、CoreData の詳細は、続編の More iPhone 3 Development: Tackling iPhone SDK 3 (洋書)が参考になる。





2010年6月12日土曜日

詳解Objective-C 2.0


何度も読み返している本。大変お世話になっています。

iPhone アプリケーションを開発するにあたり、まず覚える必要があるのがObjective-C。この本は入門を済ませた人が読む本。自分自身も、メモリ管理がイマイチわからなかったが、この本でずいぶんと理解が深まった。オーナーシップあたりが参考になる。
また、Objective-C 特有の機能(カテゴリ、宣言プロパティなど)の解説もありおもしろい。
後半の分散オブジェクトあたりから理解が追いつかなくなり、流し読みになったが、もう少し経験を積めば読めるようになると思う。


2010年6月10日木曜日

「情熱プログラマー ソフトウェア開発者の幸せな生き方」を読んで


「情熱」という言葉と、「ソフトウェア開発者の幸せな生き方」とうサブタイトルに惹かれて購入。

ソフトウェア開発者の日常の工夫・心構えから、キャリアにいたるまで幅広い内容。ソフトウェア開発者向けの自己啓発本といってしまうと軽々しいが、筆者の実際の経験に基づいたエッセイで説得力がある。また、内容の背景にあるのはソフトウェア開発者に限った教訓ではなく、幅広く適用できると思う。

わたしがこのブログを始めたのもこの本の影響。仕事・開発を楽しもう!