2012-05-01から1ヶ月間の記事一覧

アプリケーションで一意のIDを生成、取得する

AppleがiOSアプリケーションからUDID(機器固有ID)の取得を禁止したことにより、開発者の間でモバイル機器の認証に使用するIDをどのように生成、取得するが議論になったのは記憶に新しいが、ドメインやアプリケーションに対して一意なIDを生成、保存するか、…

SenTestユニットテストが失敗する

EXC_BAD_ACCESSが取れて、メモリリークも取れて、KVOの警告も消えて「さあテストだ!」と勢いを付けたのだが、テストを実行すると... 2012-05-30 20:17:01.610 HogeApp[983:fb03] *** Assertion failure in -[SenTestClassEnumerator init], /SourceCache/OCU…

這い寄る混沌

今度はテスト時にこんなログが飛ぶようになった。 2012-05-29 20:02:46.675 HogeApp[409:f803] An instance 0x6e20250 of class HogeTask was deallocated while key value observers were still registered with it. Observation info was leaked, and may …

一難去ってまた一難

EXC_BAD_ACCESSは解決したのだが... 同様の処理シーケンスで大量にリークしているようだ。 嫌だなと思うのは、自分の書いたコードがトレース上に一切登場していない所。というかlibxml2.2ということはNSXmlParserだろうか。このようなケースだとリークが発生…

設計変更

結果から書くとGCDを使った非同期処理で発生していたEXC_BAD_ACCESSは漸く解決することが出来た。原因はInstrumentでプロファイルした通りGCD、というかメインスレッド(UIスレッド)と別スレッドで動作するメソッドの戻り値の参照カウント。以前にも書いたが…

謎の4回

むーん、わからんな。 ゾンビになっていることだけは確実に判るんだが。 こういう場合、ARCをオフにした方が却って判りやすいのかもしれないな。コードと関係の無いところで動いているReleaseはGCDスレッドのAutorelease poolらしい。 GCDを使った場合、ブロ…

GCDに絶賛はまり中

昨日からのバグを引きずり中。 GCDを使用せず全て通常通りUIスレッドで書くと全く問題無いのを確認しているので、やはりGCD(Grand Central Dispatch)が原因だろうとは思われるのだが、ここを直せば完璧という状態になっていない。GCDは生成又は取得したキュ…

EXC_BAD_ACCESS発生中

全く同じ処理を、同期処理で実行した場合は大丈夫なのだが、以前にも書いたようなGCDを通した非同期処理で通した場合に同エラーが発生しており、中々原因が判明せず難儀している。 正常に動くケース ボタンタップ (UIThread) --> IBAction --> HogeAction --…

LEAP

Mac

Leap Motion何も解説はいらない。このページの動画を見て貰えばLEAPがどんなデバイスかが判るだろう。 同じようなモーションキャプチャデバイスにはMicrosoftのKinect等があるが、LEAPは殆どの操作を人差し指一本で行っており、この動画がフェイクでないなら…

iPhoneで使用できる1D/2Dバーコードリーダーライブラリィ 2選

iOS

スマートフォンに搭載されているカメラでバーコード、QRコードを読み取り、その情報を利用するという要件は多く、Android、iPhone共に読み取り用のアプリケーションを開発する為のライブラリィが出ているが、無償で使える、それもiPhoneでとなるとある程度絞…

BOOL bool boolean

Objective-Cでブール(真偽)値を表す型として使うとされているのはBOOL型だが、これが使いにくくてたまらない。 BOOL型というその名の通り、YESとNOの二値とか取らない型なのだが、内部的には以下のように定義されている。 objc.h typedef signed char BOOL; …

Android SDK R18+Intel HAXM

Android SDK R17以降でサポートされたIntelのATOMイメージをIntel HAXM(Intel® Hardware Accelerated Execution Manager)と共に動かすと、あの酷く重いAndroid Emulatorが実機並にスムースに動作する、ということは聞いていたのだが、暫くiOS開発をしていてA…

ZXingWidgetをXcodeプロジェクトに取り込む

zxing - Multi-format 1D/2D barcode image processing library with clients for Android, Java - Google Project Hosting Androidプラットホームではあまりに有名なバーコード読み取りアプリケーションとそれを構成するライブラリィでお世話になっている人…

こんなのがバチバチ音を立てながら降ってたが、実は二回目。今年の5月はちょっとおかしい。

イベント処理の簡易化、間接化(#2)

この方法はアクションを複数のイベントと統合できたり、動的にアクションを差し替えたりと柔軟性の高いプログラミングができるが、それでもイベント処理用のメソッドがばらまかれるのは避けられない。JavaやC#のようにラムダや無名クラスのような仕組みは使…

イベント処理の簡易化、間接化

VisualBasic等を使ったGUIプログラミングの黎明期にはイベント処理がモジュールやクラスの内部に節操なくばらまかれた状態になるのを見て嫌な気持ちになったものだが、現在、そのようなコードは少なくなってきている。それは言語側でイベントハンドラやイベ…

残業

ここ暫くしたことが無かったのだが、訳あって残業なんかしてる。 このなんともいえない敗北感。しかし、自分で選んだ道だもんね。ちょっとだけ頑張ってみよう。

cellForRowAtIndexPath

このイディオムは"Dynamic Prototypes"でも"Static Cells"でも使えるはずなのだが、実際には"Static Cells"では以下の例外が発生してしまう。 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:'UITableView data…

NSInvocationは可変個引数のシグネチャに対応していない

以前に紹介したBBAsyncTaskだが、AndroidやJavaのように起動するメソッドのシグネチャを可変(Variadic)にしようと思い、プロトコルを以下のように修正して実装〜テストをしていたのだが、 BBAsyncTaskProtocol.h @protocol BBAsyncTaskProtocol <NSObject> @required -</nsobject>…

StoryBoard上で定義したUITableViewCell(Static Cells)が取得できない

最新のXcodeとStoryBoardを使うことで従来よりも直感的で柔軟なアプリケーションを開発することができる。 私が特に気に入っているのはこのスクリーンショットのように、UITableViewを配置した所にラベルやテキストフィールド使ってWISYWIGでカスタマイズし…

一回休み

帰宅時間がこれでは何も書けない。 お休み。

形の次は形

インストールは出来たし次は実際に使いながら覚える。 それにはやはり書籍が必要だ。入門Redmine 第2版 Linux/Windows対応作者: 前田剛出版社/メーカー: 秀和システム発売日: 2010/08/11メディア: 単行本購入: 2人 クリック: 48回この商品を含むブログ (13件…

BitNAMI成功

ということで、BitNamiによるRedMineのオールインワンパッケージだが、CentOS6.2での動作を確認できた。 全てが一つのインストーラに同梱されているのだから失敗のしようが無いのだが、それでも1度失敗した。 手順 1. CentOS6.2をVMWare Player上にインスト…

All in one

コメントでも頂戴したが、Redmineはそのセットアップが面倒なせいか必要なパッケージをまとめたインストーラ/パッケージが提供されているそうな。 alminium/alminium BitNami :: Redmine RedmineLE プロジェクト日本語トップページ - SourceForge.JP これは…

Redmineサーバを建てる

TiDD(チケット駆動開発)を試してみようと思うが、私にとって重要なのは「形」なのでRedMineをインストールしたサーバを用意しようと思う。 最終的にはレンタルサーバかクラウド上に建てるとしてもまずはローカルで試したい。 そこで先日消したUbuntuのパーテ…

Ubuntuのパーティションを解放する

PC

一時Androidの開発でUbuntuを使いたくてWindows7とのデュアルブートにしていたのだが、結局殆ど使わないので※パーティションを解放したい。 パーティションだけならWindows側でも消せるのだが、ブート時のOSの選択にGRUBを使用しているのでまずはこいつを消…

HTTP通信

恐らくiOSを使ったアプリケーションでは必須の処理であろうHTTP通信だが、Foundationの標準的なクラスであっても、書き方によってバリエーションがあるようだ。 同期通信 通信開始を明示的に実行し、結果が戻るまでブロックする同期通信処理 NSURL* url = [N…

duplicate symbol

少し大きくなってきたプロジェクトをXcodeでビルドするとリンク時によく出てくるやっかいなエラー。 最初のうちは中々原因が判らずにいらいらするが、私の場合以下が原因であることが多いことが判ったので気をつけるようにしている。 同じファイルが存在して…

MacBook Air復活

Mac

修理に出していたMacbook Airだが、本日自宅に届いた。ジニアスバー担当者の見立てよりも1日早かった計算だ。※ 書類はこのAppleのクリアケースに入っており洒落ている。 ロジックボードつまりPCで言う所のマザーボードを丸まま交換したようだ。 一律の費用(…

Objective-CとStream

Objective-Cを使っていてもJavaやC#と比べて不便に感じたことはあまりないのだが、敢えて言うならばストリーム(Stream)が弱いなと感じる。 勿論無い訳ではないのだが、両者が非常に豊富なクラス群を持ち、更にはリーダーやライターなどで様々なオブジェクト…