NVIDIAコントロールパネルのタスクが表示されない

NVIDIAコントロールパネルを開くと解像度やらphysxの設定を変更するためのタスクがまったく表示されなくなった。 原因はDisplayLinkのUSBグラフィックアダプターが繋がっているからだった。 こいつの接続を外してNVIDIAコントロールパネルを開くとタスクが表…

Xamarin4から${AppDirectory}マクロが無くなった

Xamarin4にアップグレードしたところビルドしたiOSアプリがまったく動作しなくなってしまった。 調べたらビルド時イベントに使用していたマクロ${AppDirectory}の値がブランクでコマンドラインに渡されるようになっていた。これが原因で必要なファイルが正常…

iOS9でATS関連の詳細ログをXamarin.iOSなプロジェクトで出力する

iOS9で導入されたATS関連の詳細ログをXamarin.iOSなプロジェクトで出力するには プロジェクトの設定で、Run->GeneralのEnvironment Variablesの所にCFNETWORK_DIAGNOSTICS=3という値を追加すればいい。 この状態で実行するとApplication Outputに 2015-11-06…

デバイスの空き容量を取得する

デバイスの空き容量を知りたく検索するとObjective-CのものはたくさんひっかかるがXamarin.iOSのものは見つけられず。 P/Invokeなコードを書かなければならないのか(汗)と思っていたらちゃんとクラスがありました。エラー処理等を考慮しないでCSなコードにコ…

DELL 1905FPのコンデンサを交換してみた

サブモニタとして使っているDELL 1905FPが突然映らなくなった。 よくみると電源ボタンがオレンジ点滅している。 これは調べると電源に不具合がある場合にでるらしい。 同様の事例がネットにもありコンデンサの交換で直る模様。 当然既に保証もなにもないモニ…

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コマンドにソリューションを読み込ませてビルドさせているだけのもの。 状況としてはこ…

VisualStudioであるフォルダ以下の全てのソースコードをリンクとしてプロジェクトに取り込みたいとき

VisualStudioでソースコードを共有する場合、ソースコードをプロジェクトにリンクする機能がある。 しかしあるフォルダ以下を全てリンクしたい時、フォルダ階層やソースコードの数が変化するとその度にプロジェクトを変更しなければならない。これはかなり面…

Xamarin.iOS製Appのプロファイリングについての備忘録

"メモリ"と"パフォーマンス(関数呼び出し)"の2種類を取得できる "パフォーマンス"はシミュレータ上で実行した時のみ取得可能 プロファイル結果ファイルを圧縮する設定にすると解析が不可能(実際は不可能では無いが止まったかのように遅い) "パフォーマンス"…

_WebTryThreadLock(bool) 例外の原因

Xamarin.iOSで開発中のアプリで、特定の操作で100%クラッシュするという報告をもらった。 操作としてはUIButtonなボタンとUITapGestureRecognizerを追加したUIViewと仮想キーボード上のキーの3カ所を同時に数回タップするというもの。発見した人凄い。 エラ…

iOSに設定されているプロキシの自動構成スクリプトを使ってみたい

.NETのHttpWebRequestクラスに対してiOSのWiFi接続に設定されている自動構成スクリプトの設定を適用するにはどうしたらいいかの調査。 .NET本来の方法 System.Net.WebRequest.GetSystemWebProxy()関数で取得すればあとは勝手にやってくれる模様。この方式をX…

Windows7 64bit + Logitech LBT-UAN04C1BK + Sony DRC-BTN40

今まで使っていたSony VGP-BRM1のバッテリーがヘタってきたのでワイヤレスオーディオ環境を一新した。BluetoothドングルはLogitec LBT-UA200C1を使っていた。新しい環境はLogitech LBT-UAN04C1BK + Sony DRC-BTN40の組み合わせ。何故こうしたのかは割愛する…

TimeZoneInfo.ConvertTimeFromUtcの戻り値のKindがおかしい

Xamarin.iOS v6.3.0.255と.NET v4.5で以下のコードの戻り値が異なっていた。 DateTime t1 = new DateTime(2013, 4, 19, 9, 0, 0, DateTimeKind.Utc); DateTime t2 = TimeZoneInfo.ConvertTimeFromUtc(t1, TimeZoneInfo.Local); t2.Kindは、 Xamarin.iOSはUns…

bug #9150

Xamarin Studio v4.0.3*1とXamarin.iOS v6.3.0.255の組み合わせで突然デバッグできなくなってしまった。 症状としてはブレークポイントのところでブレークする瞬間にSystem.NotImplementedException例外が起きるようになった。 この組み合わせで数日間まった…

LIONにVNCその2

以前の記事でたまに固まる問題があることを書いたがようやく原因が分かった。 iOSシミュレータ。これだった。 ログインウィンドウに行く前にiOSシミュレータを終了するようにしてから固まることが全くなくなった。

launchctlで定期的にMonoTouch製Appをリリースビルドするには

MonoTouchのリリースビルドはコンソールから以下のコマンドで可能。 /Applications/MonoDevelop.app/Contents/MacOS/mdtool build ソリューションファイル名 -c:'コンフィグ名'コンフィグ名とは'Ad-Hoc|iPhone'や'Release|iPhone'のこと。上記をふまえるとビ…

App自身で強制終了するには

Appが自分自身で強制終了したい場合、MonoTouchでは以下のコードで強制終了が可能になる。 UIApplication.SharedApplication.PerformSelector(new Selector("terminateWithSuccess"), null, 0f); 試してはいないがもう一つ見つけたのがInfo.plistでUIApplica…

MonoTouch製Appが生成したクラッシュログのシンボルを解決する

Appがクラッシュした時に生成されるクラッシュログ。この中身は関数アドレスが書いてあるだけでとても読み取りにくい。本家Appならばオーガナイザでアドレスのシンボル解決を自動的にやってくれるのだが、MonoTouch製Appの場合は手動で行う必要がある。 下準…

キーボードのReturnキー(の部分)が押された時の処理

キーボードのReturnキーの部分が押された時の処理はShouldReturnデリゲートを使う。 次のフィールドにカーソルを移動する場合 UITextField text1; UITextField text2; text1.ShouldReturn = delegate { // BecomeFirstResponderメソッドで移動させる text2.B…