西海岸より

つらつらざつざつと

アプリのiOS5のアップデート対応

iOS5が公開され、既存アプリのiOS5対応が必要だった項目のまとめ(全部ではないけど)。印象として、追加された機能以上に既存ライブラリの仕様がそこそこ変わっていて、テストして発見の繰り返しだった。 以下トピック別対応の一覧。 removeFromSuperlayerの…

sqliteファイルのテーブルを一括でCSV出力して、他のsqliteと差分比較

sqliteファイルの差分を取りたいと思い、無料であまり良いツールが無かったので、sqliteファイルをCSV出力するshellを自分で組み、その出力結果をdiffツールで比較することを考えた。 (Macを想定してます) sqliteファイルをCSV出力するshell ソース (sqliteT…

ASIHTTPRequestをiOS5でビルドしたら一部宛先に対するhttps通信ができなくなった

現象としては、特定の宛先においてはすぐに通信タイムアウトが返ってきてしまう。 デバッグでエラーを見ると、(OSStatus error -98XX) が出ており、 過去だけれど関連する記事があった。 https://github.com/pokeb/asi-http-request/issues/132どうやらSSLの…

GitHub用のmarkdown(md)形式ファイルの確認方法

GitHubでは、README.md、README.mkdn、README.markdownといったmarkdown形式をサポートしているが、自作した際にどう表示されるのか、その確認方法。 みんなどうやってんだろう、と思ったらちゃんとgithub上にpreviewサイトがあった。。http://github.github…

UUIDの取得方法

iOS5より、UDIDが禁止になったので代わりにUUIDを使えと。。 + (NSString*) UUIDString { CFUUIDRef uuidObj = CFUUIDCreate(nil); NSString *uuidString = (NSString*)CFUUIDCreateString(nil, uuidObj); CFRelease(uuidObj); return [uuidString autorelea…

python-fuを使った画像レイヤ情報の取得方法

※Mac OSX snow leopard上で利用psdファイルでレイヤ化された各画像パーツの座標を取り出したくてgimpのpython-fuに手を出してみた。 psdファイルとは、フォトショップで作成されたレイヤ等の情報を含むファイルで、gimpでも開くことができる。もともとやりた…

非同期で画像をロードするUIImageView

多くのWeb画像をUIImageViewで表示する時に、読み込み中はインジケータアニメーションを表示し、画像ダウンロード完了後に画像を表示するというものがほしかったので作成。(一般には既出かと)以下のような、UIImageのImageWithURLでは、同期で画像をWebから…

UIImagePickerControllerを使わないカメラ機能のサンプルView(iOS4以上)

カメラ機能を利用する際、iOS3系まではUIImagePickerControllerを使うしかなかったが、iOS4でカメラ機能のコアAPIが解放されて、いろいろとカスタマイズできるようになった。 ので、サンプルを書いてみる。 見た目 白い矩形を操作して、そのタイミングでキャ…

UIAlertViewのキャプチャー画像を出力

UIAlertViewのキャプチャ画像を取得するコードメモ。 出力例 (本当は透過あり) AlertCaptureViewController.h #import <UIKit/UIKit.h> @interface AlertCaptureViewController : UIViewController @property (nonatomic, retain) UIAlertView *alertView; @end AlertCaptur</uikit/uikit.h>…

Xcodeのソースのヘッダーの氏名、会社名を変更する方法

以下のファイルを開く(Xcode) ~/Library/Preferences/com.apple.Xcode.plist 以下の項目を追加 PBXCustomTemplateMacroDefinitions (Dictionary) FULLUSERNAME (String) -> 個人名 ORGANIZATIONNAME (String) -> 組織名 参考 http://cocoa.synck.jp/12368224…

Objective-CのCSVパーサ

CSVをパースしてくれる便利なクラスのパースライブラリがあったので、メモ。""囲いにも対応。 Writing a parser using NSScanner (a CSV parsing example) http://cocoawithlove.com/2009/11/writing-parser-using-nsscanner-csv.html サンプルは以下よりダ…

iPhoneのソースレビュー項目

会社では、iPhoneがらみでソースレビューを多くする機会があったので、一度まとめてみた。(ただし、そのプロジェクトの場合や都合によるので参考にならないかもしれない) コード整形 インデントはスペースを4つとする。(数はプロジェクトごとに都度決める) …

iPhoneアプリ開発への道

新しくiPhoneアプリ開発を始めるためにどういうステップがよいか、考えてみたので簡単にまとめてみました。 ※あくまで個人的な経験を元に書いてますので、その点ご了承ください。 ※ゲーム開発はターゲットにはしていません。 役立つスキル iPhoneアプリ開発…

iPhoneアプリの保証

iPhoneアプリを作成してリリースする際、気になるのがいつまでサポートすべきか。 AppStoreを見る限り、提供する個人、会社なりの独自基準でサポートを続けているっぽいが、iTunesStore上の規約ではどうなっているのか確認してみた。ITUNES STORE - サービス…

Xcode4で困ったことQ&A

Xcode4では劇的にUIが変わってしまい、やり方がわからず困ったことが多々あったので簡単にまとめ。 エディタの設定を変えたい Xcodeメニューより、[Xcode] -> [Preferences] で設定画面を開き [TextEditing]のタブを選択。 行数を表示させる インデント、タ…

重い処理途中の再起動で落ちない方法

iOSでは、ホームボタンを押して5秒以内に(メインスレッドで)処理中のメソッドが終了しない場合は、強制的にアプリが終了させられる制約があり、この場合アプリはバックグラウンドからも削除されてしまう。 とはいえ時間のかかる長い処理をしたいことは多々あ…

UTF-32の16進文字列を文字へ変換する方法

例えばUTF-16だと「3042」->「あ」、UTF-32だと「00003042」->「あ」へ変換するメソッド。 NSStringの内部表現は2バイトまでなので、UTF-32の場合にはサロゲートペアでCFStringを使って表現し、NSStringにキャストしてやる必要がある。 //UTF-16の16進数コー…

iPhoneでMD5

よく使うので備忘メモ。 NSDataのカテゴリで実装。 なお、利用するには、Security.frameworkをリンクする必要あり。 NSData+MD5.h #import <Foundation/Foundation.h> @interface NSData (MD5) - (NSString *)MD5DigestString; @end NSData+MD5.m #import "NSData+MD5.h" #import <CommonCrypto/CommonCryptor.h> @im</commoncrypto/commoncryptor.h></foundation/foundation.h>…

UIAlertViewの表示タイミングがずれる問題

アプリ開発をしていると、何気なくUIAlertViewを使っているけれど、タイミングによっては表示がずれて、意図していないタイミングで表示されることがある。 結構苦しめられたが、やっと再現方法がわかったので備忘メモ。現象としては、「UIAlertViewのshowを…

自分にできること

地震発生時に私は東京にいましたが、阪神大震災の時以上の地震でこれまでに経験したことのない揺れを体感しました。 オフィスのPCは倒れ、壁は崩れ。。本当に恐怖でした。そして、テレビをつけて見えた東北地方では、津波による被害が想像以上のもので、改め…

デバイスIDの取得方法

UIDevice *device = [UIDevice currentDevice]; NSString *uniqueIdentifier = [device uniqueIdentifier]; 追記: iOS5よりUDIDが禁止 iOS5より上記メソッドがdeprecatedされ、かつUDIDが禁止されてしまいました。(審査リジェクトという噂があります) 代わり…

NSDateFormatterで日付文字列変換する際の注意

以下のように、NSDateFormatterを用いてNSDateから現在の年月を取得する場合があるけれど、 ユーザ設定が和暦の場合には、yyyyの部分が平成xx年として想定している年と異なる文字列が入り こんでしまう場合がある。 NSDateFormatter *formatter = [[NSDateFo…

UILabelやUITextViewのフォントをヒラギノで揃える

UILabelやUITextViewではデフォルトだとsystemフォントが設定されており、 記号(※)などの文字は、全角で入力しても半角フォントが適用されてしまい小さく表示されてしまう。これを防ぐには、UILabelのsetFontで明示的にヒラギノフォントを指定すればよい。 U…

iPhone4フロントパネルの修理費用比較

昨年のイブの夜、急いで帰宅している最中にマイiPhoneがアスファルトをまさかのスライディング。。。こんなザマに。。。交換は高いかなぁと思いつつ、一刻も早く修理したく調べてみたところ、 修理業者はいくつかあるみたいで、自分なりに調査して比較。 iPh…

iPhoneアラームが新年に誤作動した理由(憶測)

yahooでこんな記事 アイフォーンのアラーム誤作動で新年早々、寝坊 。 アイフォーンのアラーム用アプリケーション(アプリ)で、2011年1月1日~2日にかけて1回限りの設定機能が正常に作動せず、一部の人から寝過ごしてしまったかもしれないとの報告があった。…

Bose m2 を購入

ずっと前から、こんなスピーカーを探していて、、 音質がよい ウーハーのように低音がしっかり表現できる とにかく小さいサイズのスピーカー いろいろ調べたけど、この条件を満たすのは、BoseM2 M3しか無く、 4万円という値段に躊躇していたけど、ついにM2を…

iPhone上の各種パスを取得するコード

documentsディレクトリのパス NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; tmpディレクトリのパス NSString *tmpPath = NSTemporaryDirectory…

CookieをiPhone側でセット/削除する方法

Cookieは通常サーバ側で自動的にセットされるが、場合によってはiPhone側で制御したい場合もあり、その方法のメモ。iPhoneは、アプリ単位で、共有クッキーストレージと呼ばれるものを持っており、iPhoneの通信APIはその共有クッキーストレージを参照している…

エンタープライズライセンスでのipaファイル作成をコマンドで実行

コマンドのメモ。 エンタープライズライセンスでは、adhocにアプリを配布することができるが、そのためにはアプリをビルドした後に、配布可能なファイルモジュール(ipaファイル)を作成する必要がある。 そのipaファイルがあれば、itunesにドラッグするだけで…

NSDateFormatterのYYYY利用時の注意点

NSDateFomatterを利用していてハマったところ。 以下のコードでは、originalという年月日時分秒の文字列を、 フォーマッタで日付変換し、さらに同じフォーマッタで文字列に戻すというもの。 結果は元の文字列になるはず。(original = originalReversed) (フ…