タグ

ブックマーク / kazzz.hatenablog.com (7)

  • 深淵へ - ゾンビオブジェクトを検出する (Xcode編) - Kazzz's diary

    iOSプログラミングの学習と称して書籍やネット上のサンプルコードを試しているが、「iOSプログラミング 第2版」の10章のコードにて、意図しない所で"EXC_BAD_ACCESS"に遭遇した。 "EXC_BAD_ACCESS"といえば噂には聞いていたが、iOSで最もよく遭遇する異常終了の原因の一つである。これに遭遇したということはiOSプログラミングのスタートラインに立ったということだろう。 さて、異常終了が発生したのは分ったがこれだけでは情報が不足しており手がかりも何も無い。変数ビューを見るとPossesionクラスのメンバ変数であるpossesionNameとserialNumberはNSString型だが、正しい値がセットされていないようだ。 そこで、Xcode上でアプリケーション実行時に環境変数をいくつか追加することで追加のデバッグ情報を取得することにする。 Xcode 4.2で現

    深淵へ - ゾンビオブジェクトを検出する (Xcode編) - Kazzz's diary
  • xcode-selectコマンドでXcodeのインストールディレクトリを変更する - Kazzz's diary

    Xcodeを4.2から4.3に上げた所xcodebuildMacPorts、AppCode(評価中)が動作しなくなる現象が発生した。 Xcodeにはxcode-selectというコマンドがあり上記のツールはこのコマンドの実行結果を使用しているが、Xcodeのインストール場所とパッケージが4.3で変わったことにより※、xcode-selectで設定されているXcodeのインストールパスが不正になり、その結果としてツール類の実行に失敗しているようだ。 これを修正するには同コマンドを使ってXcode4.3の正しいインストールパスを指定してやる必要がある。 $ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer これでOKだ。 ※[Mac][Xcode] Xcode4.3からは/Developer以下がパッケー

    xcode-selectコマンドでXcodeのインストールディレクトリを変更する - Kazzz's diary
  • iOS開発で使えるXMLパーサ - Kazzz's diary

    URLやFileに接続してXMLを取得〜解析するためのライブラリィ、いわゆる「XMLパーサー」だが、iOSで使用することができる実装はどのようなものがあるのだろう。 NSXMLParser NSXMLParser Class Reference Cocoa/Foundationの標準XMLパーサ。※ SAX形式であり、恐らくは一番よく使われているパーサだろう。 SAXでありタグ駆動ということでコードが大きくなりがちだが、SAXは馴染みが深い開発者が多く使いやすいことが予想できる。 libxml2 The XML C parser and toolkit of Gnome libxml2は元々はGNOMEのためにCで書かれた標準的なXMLパーサだったが、Cの標準的なパーサとして様々なプラットホーム言語に移植されており、Max OS X用にポーティングされた実装がiOS SDKから直接使用する

    iOS開発で使えるXMLパーサ - Kazzz's diary
  • PortraitとLandscapeの正しい判定 - Kazzz's diary

    デバイスのポートレイトとランドスケイプを判定する処理をなんとなく以下のように書いていた。 + (BOOL)isDevicePortrait { UIDevice* d = [UIDevice currentDevice]; return (d.orientation == UIDeviceOrientationPortrait || d.orientation == UIDeviceOrientationPortraitUpsideDown); } + (BOOL)isDevicelandscape { UIDevice* d = [UIDevice currentDevice]; return (d.orientation == UIDeviceOrientationLandscapeLeft || d.orientation == UIDeviceOrientationLandscap

    PortraitとLandscapeの正しい判定 - Kazzz's diary
  • HttpServletRequest#getRemoteAddr()とIPv6 その4 - Kazzz's diary

    ローカルホスト上でIE7からTomcatにリクエストを投げるとIPv6で解決されたアドレスが使われるため、該当のメソッドで"::1"というアドレスが戻ることが判明したのは前回書いた通りだ。 IPv6が使われているコールスタック new Inet6Address() [ネイティブ・メソッド ] PlainSocketImpl.socketAccept(SocketImpl) SocksSocketImpl(PlainSocketImpl).accept(SocketImpl) ServerSocket.implAccept(Socket) ServerSocket.accept() JavaIPv6対応に関してだが、JSDK1.4の時点ですでに問題が発生することを認識しており、IPv4とIPv6それぞれのスタックの優先度を切り替えるシステムプロパティを用意している。 IPv6 関連のシステ

    HttpServletRequest#getRemoteAddr()とIPv6 その4 - Kazzz's diary
  • Java on Vista - Kazzz's diary

    .NET関連の報告はしたが、私のもうひとつの開発環境であるJava環境の幾つかをWindows Vista(x86) RTM Japanese上で動かしてみた。(ちなみに、UAC周りではなくアプリケーションそのものの互換性を見ているため、断りが無い限りはUACはOffにしたままで、管理者権限でソフトウェアを実行している) ・JSDK1.4.2_13 私は未だにJ2SE1.4ベースを使っているが、後述するJFC/Swing以外は全く問題無く動作した。アプリケーションサーバも幾つか動かしてみたが、HTMLベースのコンソールに乱れが出るものの、サーバ自体は問題なく動作する。 心配なのはネィティブとのリンクがあるJNI系、データベース系、デバイス系だが、試す環境が無いので判らない。 ・JFC/Swing 予想はしていたが、JSDK1.4.xのJFC/SwingはAeroGlassに対応していないよ

    Java on Vista - Kazzz's diary
  • DIコンテナの初期化 - Kazzz's diary

    メモ アプリケーションがDIコンテナを使う際の準備としては 設定ファイル等から定義情報を読み込んで、コンポーネント定義情報を構成する コンポーネント定義情報を基にコンポーネントを生成して、依存性を解決する 一般的にはこの2段階の処理が必要なのだが、故意に最初のフェーズで処理を止め、必要な時にコンポーネントを取得するようにアプリケーションを書くと、コンポーネントの生成をぎりぎりまで遅らせることが可能になる。(遅延バインドとでも呼ぶか?) 起動をできるだけ早くしたいアプリケーション(例えばリッチクライアント等)は、遅延バインドの方が印象よさげ。

    DIコンテナの初期化 - Kazzz's diary
  • 1