Category Archives: トラブルシューティング

lipo:複数アーキテクチャ向けライブラリを結合するコマンド

0
Filed under iPhoneアプリ, トラブルシューティング, プログラミング言語, 仕事ツール
Tagged as , , , , ,

Odd merge signphoto © 2008 Jason McHuff | more info (via: Wylio)

iOS Static Libraries

iOS Static LibrariesというiOSアプリ向けにビルドされた便利ライブラリ群があります。
ちょっと必要なライブラリが含まれていて、自分でビルドするよりも便利ですし、iOS SDKがバージョンアップされたらきちんと更新されているので便利に使わせてもらっています。
先日、iOS Static Librariesの、iOS SDK 4.3向けのビルドがリリースされました。
しかし、これがちょっと曲者で、現在iOSデバイスはARM V6かARM V7の二つがあり、今回のビルドバーションは、ARMアーキテクチャ向けに二つのビルドがなされているのです。
ARM V6というのはiPhone 3G以前で使われていたものなので、対応機種を3GS以降に絞るならARM V7のみに対応したビルドを行えばいいのですが、まだ3Gも無視できない状況ですので、これをなんとかしないといけません。
そして、Xcodeのビルド設定的には一つにマージされている方が便利なのです。
マージって、、なんかツールがあるのか?設定でどうにか回避できるものなのか?と調べてみたところ、偶然、lipoというコマンドを知ることが出来ました。

lipoコマンド

man lipoによると、次のような説明があります。

The lipo command creates or operates on “universal” (multi-architecture) files.

まさに複数アーキテクチャ対応のユニバーサルファイルを生成するためのツールだと分かります。
そして、これはiOSアプリを開発できる環境ならインストール済みであることも分かりました。
例として、前述したiOS Static Librariesについて調べてみます。
ARM V6用のライブラリ libcurl.a について下記のコマンドで調べてみます。すると、ちゃんとターゲットアーキテクチャを調べることが出来ることが分かります。

1
2
3
$ lipo -info libcurl.a
input file libcurl.a is not a fat file
Non-fat file: libcurl.a is architecture: armv6

そして、ユニバーサルファイルを作る例ですが、例えば、ARM V6用、V7用のlibcurl.aが、./armv6/libcurl.a と、 ./armv7/libcurl.a にある場合には、次のようにして生成できます。出力先は ./fat/ とします。

1
lipo -arch armv6 ./armv6/libcurl.a -arch armv7 ./armv7/libcurl.a -create -output ./fat/libcurl.a

直感的でわかりやすいですね!

armv6/armv7ユニバーサルライブラリをつくる

というわけで、今回の目標である「iOS Static Librariesのarmv6/armv7ユニバーサルライブラリをつくる」シェルスクリプトを載せておきます。
まず、準備として次のようなファイル配置にしておきます。

workディレクトリ直下で実行したら、work/lib以下にユニバーサルライブラリファイルが生成されると思います。また、処理対象は”*.a”ファイルのみ、とします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
 
echo 'makefat.sh -- start!'
 
RootV6='./iPhoneOS-V6-4.3'
 
for lib_armv6 in `find $RootV6 -name "*.a" -print`
do
	lib_armv7=`echo $lib_armv6 | sed "s/V6/V7/g"`
	echo $lib_armv6
	echo $lib_armv7
	lib_fat=`echo $lib_armv6 | sed "s/iPhoneOS-V6-4.3\///g"`
	echo $lib_fat
 
	lipo -arch armv6 $lib_armv6 -arch armv7 $lib_armv7 -create -output $lib_fat
done
 
echo 'makefat.sh -- end!'

one more lipo

lipoは複数アーキテクチャのユニバーサルライブラリをから特定のアーキテクチャパートを削除することも出来たりするようです。
両方対応版のライブラリのみが提供されている環境で、不要なアーキテクチャを削除すれば、ビルド後の実行ファイルサイズが小さくなったりすると思うので、そういう用途にも使えそうですね。


[AD]

↓リンカーとかプログラムをきっちりやろうとしたら外せない部分。去年出たらしいこの本、面白そうですね。

リンカ・ローダ実践開発テクニック―実行ファイルを作成するために必須の技術 (COMPUTER TECHNOLOGY)

著者/訳者:坂井 弘亮

出版社:CQ出版( 2010-08 )

定価:¥ 2,940

Amazon価格:¥ 2,940

単行本 ( 303 ページ )

ISBN-10 : 4789838072

ISBN-13 : 9784789838078


↓もうすぐ発売されるWEB+DB PRESS plusシリーズ。気になるタイトルです!!

良いコードを書く技術 -読みやすく保守しやすいプログラミング作法 (WEB+DB PRESS plus)

著者/訳者:縣 俊貴

出版社:技術評論社( 2011-04-09 )

定価:¥ 2,394

Amazon価格:¥ 2,394

単行本(ソフトカバー) ( 240 ページ )

ISBN-10 : 4774145963

ISBN-13 : 9784774145969


↓こういうのじっくり読んでみたいなぁ〜。

プログラミングコンテストチャレンジブック

著者/訳者:秋葉 拓哉 岩田 陽一 北川 宜稔

出版社:毎日コミュニケーションズ( 2010-09-11 )

定価:¥ 3,444

単行本(ソフトカバー) ( 316 ページ )

ISBN-10 : 4839931992

ISBN-13 : 9784839931995


↓結局まだ読んでいない数学ガールシリーズ最新作はアルゴリズムへ突入!

数学ガール/乱択アルゴリズム

著者/訳者:結城 浩

出版社:ソフトバンククリエイティブ( 2011-03-02 )

定価:¥ 1,995

Amazon価格:¥ 1,995

単行本 ( 480 ページ )

ISBN-10 : 479736100X

ISBN-13 : 9784797361001


iPhoneが家のWifiに繋がらなくなっていた!

0
Filed under iPhone, トラブルシューティング

繋がらないiPhone 3GS/4

いつの間にかiPhoneが家のwifiに繋がらなくなっていた。
Macからはつながるし、設定も切り替えられるし、特に問題がないけど、iPhoneだけが繋がらない。
しかも私のiPhone 3GSだけではなく、妻のiPhone 4もつながらない。
仕事にかまけて、いつからこうなっていたのかははっきり覚えていないのが問題なのだけど、もしかしたら、iOS 4.2.1に上げたタイミングかも?と思い調べてみたら、どうやら、やっぱりその予感は的中した様子。


iOSのバージョンアップに伴い、無線LAN接続の問題は発生しているようですが、誰の環境でも直る特効薬的な対応はない様子。
うちの環境の場合も、無線ルーターの設定見直しとか、iPhone再起動とかやってみたけど、全然ダメでした。
結局、上記フォーラムに書かれていたうち、一番効きそうな(でも、面倒そうな)対応である「無線ルーターを工場出荷時に戻して再設定」を試したら直りました。
これで治らなかったら、iPhoneのリストアぐらいしか無かったのですが、それは結構避けたい対応でした。

もしかしたらMACアドレスの問題だったかも?

途中調べている過程で怪しいと感じたのは、iPhoneのMACアドレスが変わっていたのかもしれない、ということ。
もともとうちの環境はMACアドレスフィルタリングしていたのですが、繋がらなくなったiPhoneのMACアドレスが、無線ルーターに登録されていたMACアドレスと近い数値(1桁しか違わない)が表示されていて、iPhoneのアドレスがなかったのです。そのあたりをiOSのバージョンアップでいじられたのかもしれない、と思っています。でも、そのMACアドレスを登録したり、MACアドレスフィルタリングを切ったりしてみても駄目だったのですが。
まぁ、面倒だったけど、直ったので良しとしますか。


[AD]
↓家のテレビが場所の関係からネットにつながっていないのですが、これがあればいいのかもしれない。ちょっと欲しい。

NEC Aterm WL300NE-AG (Ethernet子機) PA-WL300NE/AG

NEC Aterm WL300NE-AG (Ethernet子機) PA-WL300NE/AG

中古価格: ¥ 7,200 より

Amazon価格:¥ 8,570

カテゴリ:Personal Computers

発売日:2009-02-08



NEC Aterm WR8700N(HPモデル) イーサネットコンバータセット PA-WR8700N-HP/NE

NEC Aterm WR8700N(HPモデル) イーサネットコンバータセット PA-WR8700N-HP/NE

Amazon価格:¥ 15,100

カテゴリ:Personal Computers

発売日:2010-04-15


↓これ、こまどりアニメが簡単にできる玩具なんですが、なんか激安ですよ!クリスマスプレゼントにいいかも。(自分が欲しい)

ANIME STUDIO (アニメスタジオ)

ANIME STUDIO (アニメスタジオ)

定価:¥ 15,750

Amazon価格:¥ 5,900

カテゴリ:おもちゃ&ホビー

発売日:2008-11-25


↓おもちゃといえば、こっちの拡大鏡をテレビに繋げられるものってシンプルで面白いですよね!欲しい!

アイクロップス

アイクロップス

定価:¥ 7,980

Amazon価格:¥ 7,600

カテゴリ:おもちゃ&ホビー

発売日:2008-07-12


TortoiseSVNアップデートでトラブったら、、

0
Filed under Subversion, トラブルシューティング, 仕事ツール
Tagged as , ,

TortoiseSVNのアップデートについて、ちょっとトラブったのと、それが解決したので、そのメモです。

コンテキストメニューに出てこない!

以前、1.6.9から1.6.10にしたときにコンテキストメニューに全く出てこなくなり、使い物にならなかったので、すぐに1.6.9に戻していました。
で、最近、1.6.11が出て、今回は大丈夫だろうと思ってインストールしてみたのです。
すると、、、やっぱりコンテキストメニューに出てこない!

一度でダメならもう一度!?

でも、すぐに戻すのも悔しいのでネットで検索してみました。
すると、こんな情報を発見!

よくみるとダウンロードページに「インストーラーを2回実行して、2回目のときは『修復』を使え!」とか書かれているようです。

 [TortoiseSVN]バージョンアップしたら日本語パックがチェック通らない!⇒また【修復】で回復。 – Project Note
これは1.6.10のときにRelease Noteに書かれていたようです。
藁をもすがる思いで、もう一度インストーラを起動、そして、Repairを実行してみました。
すると!!なんとうまくいったではありませんか!
マジカヨ!!


[AD]

↓Subversionの本ではこれが評判いいですね!

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)

著者/訳者:Mike Mason

出版社:オーム社( 2007-04-21 )

定価:¥ 2,730

Amazon価格:¥ 2,730

単行本(ソフトカバー) ( 256 ページ )

ISBN-10 : 4274066800

ISBN-13 : 9784274066801


↓TortoiseSVNとRedmineの連携について書かれているようです!

オープンソースによるプロジェクト管理入門

著者/訳者:ファーエンドテクノロジー株式会社

出版社:秀和システム( 2010-02 )

定価:¥ 2,940

Amazon価格:¥ 2,940

単行本 ( 352 ページ )

ISBN-10 : 4798025208

ISBN-13 : 9784798025209


Progressionで驚きのハマリ!

0
Filed under AS3, Flash, トラブルシューティング
Tagged as , , , ,

Progressionを使い、とある大規模プロジェクトでFlashコンテンツ制作したのですが、特定環境で発生した問題には戸惑いました。

PPC Mac only!

その問題が発生する環境とは「PowerPC Macでのみ発生」というもの。
ちょっと調べてみたところ、確かにブラウザやFlash PlayerやOSのバージョンは関係なく、本当にただPowerPC Macである、というだけで発生するのです。
具体的な症状は、ProgressionのメソッドであるAddChildで配置するパーツが配置(表示)されない、という現象。
しかも、「一つも AddChild出来ない」というわけではなく、ある特定のパーツ以降で発生する。
なんだか、メモリリークのにおいプンプンである

ググれ!きっと先人がいるはず!

で、ググりにググってみたところ、同様の症状について言及されいてるページを発見した。

この方によれば、「new AddChildを、コンストラクタのaddChildに変更すると正常に動作する」とのことで、たしかに、コマンドリストにnew AddChildしていた箇所だったのでそのコードを以下のように変更してみました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*
// Progression標準的コード.
addCommand(
  new AddChild( partsRoot, _partsA ),
  new AddChild( partsRoot, _partsB ),
  new AddChild( partsRoot, _partsC )
};
*/
 
// PPC Mac対応コード.
partsRoot.addChild( _partsA );
partsRoot.addChild( _partsB );
partsRoot.addChild( _partsC );
_partsC.initOnAdded(); // ←必要に応じて初期化メソッド呼び出し.

AddChildしてた箇所を全てこのようにしたところ、問題は発生しなくなりました!
かなり規模が大きいプロジェクトだったので同様なコードはかなりあり、それぞれ動作確認を取るのも結構大変でしたが、大抵これでうまくいくと思います。

それでも、便利なProgression

まさかのこの問題では手こずりましたが、このプロジェクトで初めて使ったProgression、総じてかなり便利でした
クラスとかの構造もわかりやすかったので、自前でラッパークラスをつくり、便利に使いました。
使用していたProgressionのバージョンは3.1.62でしたが、最新版では直っていたりするのかな?


[AD]

↓最近発売されたオフィシャルProgression本!バージョン4にも対応、とのことで、これからProgressionやるなら必携!

ProgressionによるFlashコンテンツ開発ガイドブック

著者/訳者:阿部貴弘 池田泰延 楢山哲弘 松竹 誠 山上健一

出版社:毎日コミュニケーションズ( 2010-04-28 )

定価:¥ 2,940

Amazon価格:¥ 2,940

単行本(ソフトカバー) ( 312 ページ )

ISBN-10 : 4839931798

ISBN-13 : 9784839931797


↓今までの歴代Macが載っているらしい。話が通じる人と呑むときにこの本があれば酒も進みそう!

Macintosh名機図鑑 (エイムック 1512)

著者/訳者:大谷 和利

出版社:エイ出版社( 2008-03-24 )

定価:¥ 1,260

Amazon価格:¥ 1,260

単行本 ( 157 ページ )

ISBN-10 : 4777909921

ISBN-13 : 9784777909926