2014-01-01から1年間の記事一覧

XmlWriter.WriteRawメソッドでサロゲートペアを含んだ文字列を書き込むと文字化けする

XmlWriter.WriteRawメソッドを使ってXMLを生成するコードがあるのだが、XMLに書き込む文字列にサロゲートペアを含んでいる場合生成されたXMLが文字化けする問題がおきた。 文字化けには法則があり4バイトで構成されたサロゲートペアの文字コード(UTF8)が必ず…

Mac版のXamarin.Studioでディレクトリのシンボリックリンクを経由したファイルをリンク形式でプロジェクトに参加させると使い物にならない

Xamarin.Studioには共有プロジェクトといったコード共有機能が備わっているが、ソースコード管理の都合でどうしてもシンボリックリンクを経由した上でソースコードをプロジェクトに追加させなければならなくなってしまった。 追加自体は問題なくビルドもデプ…

ニュートラルカルチャ名から任意の特定のカルチャ名を得る

ニュートラルカルチャ名から任意の特定のカルチャ名を得るにはCultureInfo.TextInfo.CultureNameを見ればよい。 例えば英語(en)ならアメリカ英語(en-US)、日本(ja)なら日本語(ja-JP)を取得するというもの。 The CultureName property always reflects a spec…

Xamarin.iOSでInstrumentsを使わずにアプリの使用メモリ量を取得する

アプリの使っているメモリ量はInstrumentsを使うと詳しく調査できるのだが、 パフォーマンスが悪かったりコードの特定の地点での値を得るのが難しい。 こういう場合本家ではtask_info()を使用してtask_basic_info構造体を取得すればよいのだが、Xamarin.iOS…

ad-hoc用IPAパッケージを再ビルドしないで修正してみた

業務的に同一のソースコードからBundle IdentifierやAppアイコン、スプラッシュイメージが異なるだけのIPAパッケージをいくつも作る必要があった。 今までは差分ファイルを切り替えるシェルスクリプトと自動ビルドさせるシェルスクリプトを組み合わせてパッ…

SMB2の不具合?

何時の頃からか秀丸でファイル共有先のファイルを編集していると「このファイルは、他のアプリケーションによって書き換えられてしまいました。」の旨のダイアログが表示されるようになってしまった。 サーバー側(共有先)で編集中のファイルのタイムスタンプ…

iOS7.1から企業内アプリ配布にSSLが必須となったので自己証明書でなんとかしてみた

突然社内へのiOSアプリ配信が動かなくなったと連絡を受けた。 原因はこれ。 iOS7.1からplistファイルの配布にhttpsが必須になっていた。 しかし社内向けのしかもテスト用の配信システムににわざわざ予算を掛けてまでSSL証明書など買っていられないので自己証…

ステータスバーのバッテリーアイコン付近の色情報を取得してみた

ステータスバーのバッテリーアイコン付近の色情報(RGBA)を取得する必要があって、そのときに書いたコード。 処理的にはスクリーンキャプチャしたCGImageから対象の領域を1pxにトリミングして、そこからRGBA情報を取得するというもの。 using System; using S…

DispatchQueue内でNSRunLoop.Current.RunUntilを呼び出すコードが動かなくなってしまった その3

解決できた。前回の記事の追記にて見つけたページにヒントがあった。Dispatch内でRunLoopは扱えないとのこと。これをふまえて修正したコードはこのようになった。 DispatchQueue.GetGlobalQueue(DispatchQueuePriority.Low).DispatchAsync(delegate { Dispat…

Comparer<object>.Default.Compareメソッドでbyte配列の比較ができない

以下のコードが.NETでは動作するがXamarin.iOSでは動作しない。 byte[] v1 = new byte[]{0,1}; int ret = Comparer<object>.Default.Compare(v1, v1); // <-ここで例外。メッセージは"does not implement right interface" バグ?仕様? 追記 2014/02/12 10:21 サン</object>…

DispatchQueue内でNSRunLoop.Current.RunUntilを呼び出すコードが動かなくなってしまった その2

前回の記事の動かなくなったコードをObjective-Cで記述してみた。Xcodeはv5.0.2を使用。 bool alertFinished; - (void)hoge1:(id)sender { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ dispatch_sync(dispatch_get_main_…

DispatchQueue内でNSRunLoop.Current.RunUntilを呼び出すコードが動かなくなってしまった

元々は本家Objective-Cでも使われているテクニックで、非同期処理を同期処理にするためにNSRunLoop.Current.RunUntilを使うテクニックがある。 これをDispatchQueueからDispatchAsync経由で呼び出している箇所があるのだが、 DispatchQueue.GetGlobalQueue(D…

mtouchコマンドがインターネットアクセスを要求してくる

Xamarin.iOSのビルドをシェルスクリプトで定期的に行っているのだが、ある時から突然動作しなくなってしまった。 シェルスクリプトといっても単純でXamarin.iOSのmdtoolコマンドにソリューションを読み込ませてビルドさせているだけのもの。 状況としてはこ…