溢れたかを確かめる

C言語でint aとint bの足した結果がintから溢れているかどうかを調べる処理を書くのに少し苦労しました。a×bが溢れているかどうかはもっと苦労しました。intもunsignedだったらもう少し簡単なんだけどsignedは場合分けが多すぎです。これはきっと世の中に優秀なロジックが転がっているに違いないと思いましたが、上手く検索できないのでゴーリゴリと書いたわけです。ああ、車輪の再発明の極み。

status = CALC_EXECUTE_SUCCESS;
if (((num1 > 0 && num2 > 0) && (num1 > INT_MAX - num2)) ||
    ((num1 < 0 && num2 < 0) && (num1 < INT_MIN - num2))) {
    status = CALC_EXECUTE_OVERFLOW;
}
result = num1 + num2;

減算と除算のサンプルコードは華麗にスルーして、除算が一番簡単です。

status = CALC_EXECUTE_SUCCESS;
if (num1 == INT_MIN && num2 == -1) {
    status = CALC_EXECUTE_OVERFLOW;
}
result = num1 / num2;

ていうか会社の仕事が手から溢れ気味です。困る。

XcodeとSCM

自作プログラムのソースコードを修正した履歴をXcode上で管理してみますか、ということでXcodeに標準で搭載されているSCMを試しに設定してみたので、その備忘録です。

まずは、自作プログラムのプロジェクトフォルダは「/Users/ishiura/Developer/Projects/iPhone/Calculator」、プロジェクトのの変更履歴を管理するフォルダ(リポジトリ)は「/Users/ishiura/Developer/Repos/iPhone」としてみます。使っている環境は、Mac OS X 10.6.2 (Snow Leopard)、Xcode 3.2.1です。

ターミナルで新しくリポジトリを作成します。

cd ~/Developer
mkdir Repos
cd Repos
svnadmin create iPhone

Xcodeを起動し新しいリポジトリを追加します。

  1. メニュー — SCM – SCMリポジトリを構成
  2. “Xcode”環境設定 — SCM — 追加

… 名前は「iPhone Repos」
… SCMシステムは「 Subversion」
… URLは「file:///Users/ishiura/Developer/Repos/iPhone」

リポジトリにプロジェクトを読み込みます。

  1. メニュー — SCM — リポジトリ
  2. リポジトリ — 読み込む

… リポジトリに読み込むディレクトリは「 /Users/ishiura/Developer/Projects/iPhone/Calculator」

プロジェクトはリポジトリから改めて取り出して同じ場所に配置するので、念のためオリジナルのプロジェクトフォルダ(/Users/ishiura/Developer/Projects/iPhone/Calculator)はデスクトップにでも移動しておきます。

リポジトリから作業用にプロジェクトをチェックアウトします。

  1. メニュー — SCM — リポジトリ
  2. リポジトリ — (Calculatorを選択) — チェックアウト

… チェックアウトしたディレクトリの保存先は「/Users/ishiura/Developer/Projects/iPhone/Calculator」

プロジェクトの作業用ファイルやフォルダ(build/とか)がリポジトリに含まれているので、これらをソースコード管理の対象から外します。

  1. メニュー — SCM — リポジトリ
  2. リポジトリ — (Calculatorを選択) — (不要なファイル/ディレクトリを選択) — 削除

プロジェクトがSCMに連携するように設定を変更します。

  1. メニュー — プロジェクト — プロジェクト設定を編集
  2. 一般 — ルートとSCMを構成…

… ルートは「 <プロジェクト・ファイル・ディレクトリ>」
… リポジトリは「 iPhone Repos – 推奨」

これでこのプロジェクトに含まれる作業ファイルやフォルダに対して、SCMメニューからリポジトリへのコミットや作業内容の破棄、前回との変更差分なんかのメニュー項目が使えるようになります。

“XcodeとSCM” の続きを読む

ヨーロッパの国

この一週間ほど、16進電卓を日本と米国で販売しておりましたがあまり問題も出ていないようなので(まぁ数も出ていないですが)、販売地域をヨーロッパに拡大してみました。とりあえず、イギリス、フランス、ドイツ、そしてカナダ。さてどうなっちゃうでしょうか。

Xcodeカスタマイズメモ 2009/11/08

Xcodeでソースファイル(*.hや*.m)を新規作成するとファイルのヘッダー部分コメントに、

// Copyright __MyCompanyName__ 2009. All rights reserved.

というのが挿入されてしまい、几帳面系のわたくしと致しましては「__MyCompanyName__」の部分を毎回書き換えるのが面倒くさいなぁと思っていましたが、ターミナルから

defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{ORGANIZATIONNAME="自分の名前";}'

というコマンドを実行するとこの部分の初期値を変えることができるようです。1つのアプリケーションの中で派生クラスをたくさん作らなければならないようなプロジェクトでは便利です。

16進電卓を販売開始

気がついたら日付が変わっていたので、試しにAppStoreへのリンクを踏んでみたら既に発売されていました。深夜0時からの販売だったようです。おおー!

16進電卓 — Apple iTunes AppStore

開発者に提供されるドキュメントを全部読みこなしてないのでなんとも言われませんが、多分、アップルの方で審査を通過して販売準備が完了した日がAppStoreに表示されるリリース日になる仕様のようですね。知りませんでした…。だったら開発者に販売予定日をちゃんと指定させる意味があまり無い気がしますが、こんなことなら、審査を通過した時点でさっさと発売日を次の日とかに前倒ししておけばよかったかしら、なんて思いました。

ちなみにサポートサイトはこちらからです。iPhone/iPod touchでAppStoreから探すのであれば「16進電卓」というキーワードで検索すると出てくると思います。

16進電卓を発売します

昨日、石浦製iPhoneアプリ第一弾「16進電卓」がアップル(AppStore)の審査を通過しました!。

11月1日発売予定となっておりますので、懐にジュース1本買うほどの余裕があるiPhoneユーザー(兼プログラマー)の皆様におかれましては、発売されたら是非お試しくださいませ。製品内容はこちらで紹介中です。

16進電卓

申請して10日、何のリジェクトも無く契約確認待ちにもならずに一発で通過というのはちょっと予想外です。審査に2週間ぐらいかかるのが普通という話を聞いていたので、発売予定日をわざわざ割と未来に設定したのですが…。多分ですが、アップルの開発者用サイトでアプリ設定の発売予定日を前にずらせば、一両日中にAppStoreの店頭に並ぶような気がしますけど、まぁいいか〜のんびり行きます〜。

AppStoreの審査に提出

先ほど、石浦製iPhoneアプリ第一弾「16進電卓」をついにアップル(AppStore)の審査に提出しました。この先果たしてどうなるのやら!。ちょっとドキドキいたします。

ビストロ・ラ・マルミットにて

うまくいったら、ボナペティ!