2010年10月22日金曜日

スクリプトのこんなところが嫌い

 rails で @hoge = Hash.new を使っていたのだが、erb の template で値が引けない。何が悪いのかさっぱり、わからんかったが、どうやら、key に代入された型が、integer なのか、string なのかで挙動が変わっていた。
ところが、片方では 明示的に .to_i しなくても integer 型で登録され、もう片方では明示的に .to_i しないと string 型で登録されてしまう。

 ソースを追うと、ここかしこに選択子があり嫌な感じだ。

1. ActiveRecord から find_by_sql で引いた値が、integer 型なのか、string型なのか不明瞭
2. Hash.new した値に登録する時に、integer 型で登録するのか string 型で登録するのか選択できる
3. template 内で、@hoge[ key.to_i ] するのかどうか?そもそも、key の型が何なのか全く予測がつかない。

どうも、こんなあたりに、げんなりします。

2010年10月21日木曜日

Postgresql 値比較備忘録

 今回は、PostgreSQL の Stored Procedure にて、こんなコードではまった。
  ...
  IF TG_OP = 'UPDATE' THEN
    IF OLD.name <> NEW.name THEN
       UPDATE ...
    END IF;
  END IF;
  ...

この場合、OLD.name か、NEW.name が null の場合に条件に合致しない。正しくは
  ...
  IF TG_OP = 'UPDATE' THEN
    IF COALESCE(OLD.name,'') <> COALESCE(NEW.name,'') THEN
       UPDATE ...
    END IF;
  END IF;
  ...

2010年10月16日土曜日

xcode で symbol(s) not found 備忘録

xcode で、c++ のコードを追加したら、symbol(s) not found と怒られてしまった。
あるはずの関数がシンボルが見つからない。名前をみると _hoge という形式なので、ははぁ?C++の関数をC でリンクしにいってるな?と、そこまではわかったのだが、手を抜いて単純に extern "C" だけを付けたのがまずかった。

 *.mm *.cpp 等では、cplusplus のコードとしてコンパイルされるが、*.m など Objective-C では c と同じ扱いのようだ。そのせいで、extern "C" 自体が構文エラーになっていた。ヘッダの宣言では、ちゃんと

#ifdef __cplusplus
extern "C" {
#endif

...

#ifdef __cplusplus
};
#endif

してやらんと、いけません。
なんとなく、不安にかられるなぁー。class や template キーワードが入った場合は、c++ マングリングにスイッチしたりすんの??? Objective-C 不気味な感じがする

2010年10月15日金曜日

DLL_PROCESS_DETACH は難しい

 ちょい記憶が曖昧なのだが、DLL_THREAD_DETACH は、必ずしもコールされるとは限らないのである。APIで無効にできるからだ。そして、DLL_PROCESS_DETACH時の処理も非常に難しい。実は、このタイミングで C|C++ランタイムのクリーンアップ処理が自動で実行されるからだ(Vista, 7 では、どうかわからん)。
 よって、DLL_PROCESS_DETACH のタイミングで、スレッドの同期保護オブジェクトを利用して何かを実行しようとすると、たいていは、デッドロックを起こしてしまう。とにかく、厄介な代物なのである。
 MSには、DLL_PROCESS_DETACH の他に、DLL_PROCESS_DETACHING とかいった通知をDLL_PROCESS_DETACHの前にしてもらいたいと希望したい。そうすれば、デッドロックを起こさずに済む。結局のところ、このような仕様のおかげで、マルチスレッド絡みで、ほいほいとDLLをロードしたりアンロードしたりできない。つか、不可能だろう。皆さん、どうされているのだろうか?あ?C#使ってるから、関係ねぇのか!

2010年10月14日木曜日

apple id の管理がひどいっぽい

どうも、apple id の管理は、ひどいような気がしてきた。macbook を買った時に登録した apple id が、どうも消失しているような気がする。いや、多分、消失している。おそらく、iphone sdk 用のアカウントを作成した時にでも、統一されて上書きされてしまったのだろう。
macbook のアドレスブックに記載されている apple id をなんとかしようとしても、全くもって、どうにも見つからない。メールを送信しましたって、メッセージは表示されても、いっこうにメールが届かない。アカウントの確認の生年月日が、違うと言われてはじかれるし、どないなっとんねん。
それはそうと、なんでもかんでもサービスで、やれ、ログインIDを作成してパスワードを入力しろだの、アホかっちゅーーーーーねーーーん。
もう、そんなにたくさんのIDとパスワードなんて管理できへんねん。人間の限界を超えてるねん。
最近のアプリやサービスの流行は、ユーザ ーイン。俺のサービスは、こんなにユーザがいてまんねん。おかげで、何かアプリをダウンロードするたびに、サインアップを求められて、ちょーうざい。これからのサービスは、まじめに OpenID を考慮してくれ。

追記:どうやら、apple id と mac.com の id は別物らしい。後者は有料という事でいいのかな?あと、使わないけど iChat のアカウントが AOL で、もう訳がわかんねぇ。

2010年10月12日火曜日

自炊再開

 全然忙しくて、どうにもならんかった本の自炊を再開した。ScanSnapの設定は、スーパーファインで、自動補正の類は用紙サイズ以外、すべてオフにしている。なんだかんだと、AdobeAcrobatの最適化で修正する方向で落ち着いてしまった。
 また、ダンボール2箱分ぐらい本が減って嬉しい。新書も読む前から容赦なくスキャンだ。

 日曜日には坊ちゃん連れて自転車キャンプだー!と画策していたが、あいにくの雨で中止。月曜日には、やっぱりツーリングに連れていきました。でも今回は15キロぐらいしか走らなかった。

2010年10月9日土曜日

iPhoneSDK用のboost

 探したらあった。情報はCompiling Boost 1.44 for iPhone
 とりあえず、ライブラリのコンパイルまでは成功した。

2010年10月5日火曜日

macでboost

簡単だった。

bjam は、既にコンパイル済みのものが www.boost.org で配布されている。なので、ダウンロードして、

$ sudo cp bjam /usr/bin

デフォルトで利用する事に、ほんでもって /usr/local/src/boost_1_44_0 を展開して、そこで

$ sudo bjam

を実行すると、めでたくコンパイルも通った。

$ sudo bjam install

で、/usr/local/include/boost, /usr/local/lib にインストールされた。

試しに boost::thread のコードをコンパイルしてみたが、よさげだ。

$ c++ y.cpp -I /usr/local/include -lboost_thread

2010年10月4日月曜日

mac ぼやきてぇよ

 なんか、iconひとつ作成するのにも、えらい面倒くさい。適当なアイコン作成アプリもわかんねぇ。/Develper/Applications/Utilities/Icon Composer 72x72のアイコンはどうすんだ?しかも、先に psd ファイルを生成しろ?えーっ?
ソフトを入れようとしたら、six とか、知らねー圧縮形式出てきて、面食らって、やっと解凍したと思ったら、「クラッシック形式の実行ファイルは対応してません」とか怒られて、、、orz こりゃ、慣れるまでしばらくかかりそう。

2010年10月2日土曜日

本日も親子でツーリング

 本日も、親子で自転車ツーリング、ドリームビーチへ行って、森林公園に行って、帰ってきた。








23キロぐらいは走ったでしょうか・・・。
森林公園で、おやつのオールレーズンを鴨にあげたのが、地味に楽しかったらしい。

ウルトラマン・アート展

旭川市の美術館で、ウルトラマン・アート展があったので行ってきました。
ノスタルジーに浸れました









散歩

9月の通勤風景




iTunes iPad データ windowsからwindows移動備忘録

コピーするフォルダは、以下の3つ

  • C:\ProgramData\Apple Computer\iTunes
  • C:\Users\yourname\AppData\Roaming\Apple Computer\iTunes
  • C:\Users\yourname\Music\iTunes

とりあえず、これで移行は完了した。