Xamarin: ファイルパスの取得

概要 iOS, Androidのシステムディレクトリを取得する。 iOS, Android共通のAPI Xamarin.Essentials.FileSystem及びSystem.Environment.SpecialFolderを使用することができる。 サンプルコード System.Console.WriteLine("FileSystem.CacheDirectory=" + File…

Xamarin: JSONのエンコード、デコード

概要 XamarinでJSONのエンコード、デコードを行う。 依存関係 NuGetでSystem.Text.JSONを追加する必要があります。 *System.Text.JSONについては以下に説明があります。 docs.microsoft.com サンプルコード public MainPage() { InitializeComponent(); Stri…

Xamarin: プロジェクト内のリソースファイルを読み込む

概要 プロジェクト内に任意のファイルを配置し、それをアプリ内で読み込んで使用する。 プロジェクト内に任意のファイルを追加 プロジェクト内に任意のファイルを追加する。 *以下ではSampleText.txtを追加している。 追加したファイルのプロパティを開き、…

Amazon RDS: How to resolve problem that slow query log is stop on the Cloud Watch

AWS

Problem Amazon RDS can output slow query log to Cloud Watch. The cause is unclear but this log is sometimes stop. You can check log is working correctly by SQL below. select sleep(5); *The argument value of the sleep function (5 in above e…

Amazon RDS: スロークエリのログが出力されなくなった時の対応方法

AWS

症状 Amazon RDSではCloud Watchにスロークエリのログを出力することができる。 原因は分からないが、このスロークエリのログが出力されなくなってしまう場合がある。スロークエリが正常に出力されているかどうかは、以下のSQLを実行して確認できる。 select…

How to detect Chrome on iOS by JavaScript when "Request Desktop Site" setting is enabled.

Problem When the setting of "Request Desktop Site" of Chrome on iPhone is enabled, navigator value is changed that not include text CriOS. So you cannot detect browser is Chrome by JavaScript. *This problem and solution is checked on Chrom…

iOS版Chromeで「PC版サイトを見る」を有効にしている場合にJavaScriptでChromeであることを検知する

問題 iPhone版Chromeでは設定で「PC版サイトを見る」を有効にした場合、navigatorで取得できる情報が変化し、CriOSが含まれなくなるのでChromeであることが分からなくなる。 *Chrome 80.0.3987.95で確認。 iPhoneで取得可能なユーザーエージェント iPhone版C…

SQLite3: How to know transaction is already started

You can use get_autocommit() to know transaction is already started or not. When transaction is started: This function return 0 because auto-commit is disabled. When transaction is not started: This function return non-0 because auto-commi…

SQLite3: トランザクションが開始されているかどうかを判断する

現在SQLite3のトランザクションが開始されているかどうかを判断するには、get_autocommit()を使用する。 トランザクションが開始されている場合: 自動コミットが無効になるので0が返る。 トランザクションが開始されていない場合: 自動コミットが有効になる…

Notarizationに失敗した場合の対処方法

Notarizationに失敗した場合、Appleから以下のタイトルのメールが届く。 Your Mac software was not notarized. Organizerを使用してNotarizationを行なっている場合はそこで詳細を見ることができる。 コマンドを使用してNotarizationを行なっている場合はRe…

ビルドエラー: "WKWebView before iOS 11.0 (NSCoding support was broken in previous versions)"

iOS

エラー内容 xibファイルやstoryboardでビューにWKWebViewを配置してビルドすると、以下のエラーが発生する場合がある。 WKWebView before iOS 11.0 (NSCoding support was broken in previous versions) これはXcodeのバグに起因するエラー。Xcode10以下のWK…

SQLite3: トランザクション中に更新処理を行うとSQLITE_BUSY(5)が発生する

iOS 13.3, XCode 10.3で確認。 テーブルロック時のSQLITE_BUSY(5) SQLite3ではトランザクションによってテーブルロックがかかっている場合、そのテーブルを更新しようとするとSQLITE_BUSY(5)が発生する。 SQLITE_BUSY(5)については以下を参照。 www.sqlite.o…

macでアプリをインストールすると「ほかのインストールが完了するまでお待ちください...」と表示されて処理が進まない

環境 macOS 10.14.6で確認 症状 アプリのインストーラを実行した時に以下のように「ほかのインストールが完了するまでお待ちください...」と表示されて処理が進まない。 とりあえず待つが、いつまで待っても処理は進まない。他に実行されているインストーラ…

macOS: アプリ内で管理者権限でコマンドを実行する

macOSのアプリ内で指定したコマンドを管理者権限で実行する。 関数の実装 // Authorization系APIの返り値をチェックする // @param status 返り値 // @param apiName 実行したAPI名 void checkAuthorizationStatus(OSStatus status, NSString* apiName) { if…

Windows: 右クリックで表示されるコンテキストメニューからファイルを任意のプログラムで開く

Windowsのエクスプローラ上でファイルを右クリックして表示されるコンテキストメニューから、そのファイルを任意のプログラムで開けるようにする。 *以下はファイルをバイナリエディタ"Stirling"で開けるように設定した例。 ※"Stirling"は以下からダウンロー…

SoftEtherでWindowsマシン上にVPNサーバ/クライアントを構築する

SoftEtherを使用してLAN内のWindows上でVPNサーバを構築し、別のLAN内にあるWindowsからVPNサーバに接続する。 VPN機能を搭載しているルータはたくさんあるが、Windows 10のVPNクライアント機能があまりにできが悪く不安定で接続できない場合が多々ある。そ…

XCodeのコンソールに大量の"[Process] kill() returned unexpected error 1"が出力される

iOS 13.2以上で発生。 アプリ上でWKWebViewを使用するとコンソールに大量の"[Process] kill() returned unexpected error 1"が出力される。特にアプリに影響はないので無視して良い。 以下のバグが原因。既に修正されているが、iOS 13.3でもまだiOSには取り…

PDFKit bug: PDFDocument properties return wrong security permissions.

XCode 10.3, macOS 10.14 *I don't check it on iOS. Bug details We can get security permissions of PDF by following properties of PDFDocument instance. But It's not correct permissions on some cases. developer.apple.com If PDF has printing p…

Objective-C 非同期処理テンプレート

Objective-Cでよく使用する非同期処理のコードテンプレート。 メインスレッドで非同期処理を実行する dispatch_async(dispatch_get_main_queue(), ^{ // メインスレッドで実行する処理 }); バックグラウンドのスレッドで非同期処理を実行する dispatch_async…

PDFKitでPDFの綴じ方向、見開き時の表紙設定を取得してセットする

PDFKitでPDFの以下の設定を取得し、セットする。 PDFの綴じ方向(右、左) PDFの単ページ、見開き設定および見開き時の表紙設定 どちらもPDFKitでは直接はサポートしていないので、CGPDFDocumentRefから設定を取得して自分でセットする必要がある。 PDFの綴じ…

PDFKitのバグ: PDFDocumentが間違ったセキュリティ権限を返す

XCode 10.3, macOS 10.14で確認。 *iOS上では未確認。 症状 macOSのPDFKitでPDFDocumentインスタンスの以下の値を使用してPDFにセットされているセキュリティ権限を取得すると、正しく取得できない場合がある。 developer.apple.com PDFに印刷権限(低解像度…

CodaDataで"NSMergeConflict for NSManagedObject"エラーが発生する

CoreDataのNSManagedObjectContextインスタンスのsave:を実行した時にNSErrorが以下のエラーを返す。 NSError: code=133020, domain=NSCocoaErrorDomain, userInfo= { conflictList= ( NSMergeConflict (0x28164b080) for NSManagedObject (0x282e0ba70) wit…

XCodeでサポートされていないバージョンのiOSを使用しているデバイスにアプリをインストール&デバッグする

XCode 10ではiOS 13がインストールされているiOSデバイスに対してアプリをインストールしたりデバッグをすることはできない。XCode 11にバージョンをあげられない場合は、以下でXCode 10でもiOS 13のデバイスを扱うことができるようになる。 DeviceSupportフ…

The error "you must first sign the relevant contracts online (1048)" occurred when you upload archive file on XCode Organizer

The error below occurred when you upload archive file on XCode Organizer. you must first sign the relevant contracts online (1048) It say we have to agree with something contract but XCode nothing to show it even we restart XCode. How to r…

The error "error: unable to read property list from file:..." occurred for "Preprocessed-Info.plist" file while XCode building

XCode 10.3 The error below occurred while XCode building when you set YES to Preprocess Info.plist File of "Build Settings". "error: unable to read property list from file:<Preprocessed-Info.plist file path>" error: The operation couldn't be completed. (XCBUtil.PropertyList</preprocessed-info.plist>…

AWSのRoute53でZone Apexへのアクセスをリダイレクトする

AWS

やりたい事 AWS(Amazon Web Service)のRoute53で管理しているドメイン(example.com)について、Zone Apex(example.com)へのHTTP/HTTPSアクセスをサブドメイン(www.example.com)にリダイレクトする。 Route 53ではZone Apexに対して通常のCNAMEやAレコードを設…

頻繁にmdwrite wants to use the "metadata" keychainが表示されてパスワードの入力を求められる

XCode 10.3で発生。 症状 XCodeでビルドすると何度もmdwrite wants to use the "metadata" keychainが表示されてパスワードの入力を求められる。 ログインパスワードを入力してもパスワードが違うと言われる。仕方なくキャンセルすると、何事もなくビルドが…

iOS, macOS用アプリでバージョン番号をヘッダファイルで管理する

iOS, macOSではアプリのバージョン番号をInfo.plistのBundle VersionおよびBundle versions string, shortで指定する必要がある。 このバージョン番号をヘッダファイルに記載して、その値がInfo.plist内で使用されるようにしたい。 手順 バージョン番号を記…

XCodeでビルド時にPreprocessed-Info.plistで"error: unable to read property list from file:..."エラー

XCode 10.3で確認。 ビルド設定でPreprocess Info.plist FileをYESに設定している場合、ビルド時に以下のエラーが発生する。 "error: unable to read property list from file:<Preprocessed-Info.plistのファイルパス>"エラー: The operation couldn't be completed. (XCBUtil.PropertyListConversi</preprocessed-info.plistのファイルパス>…

Microsoft Edgeでカスタムプロトコルによるアプリ起動が動作しない

Windows 10のMicrosoft Edgeでカスタムプロトコルによるアプリ起動が動作しない症状。 IEやChrome, Firefoxなど、他のブラウザでは問題なく起動できる。 Edgeのデバッガを見ると "<カスタムプロトコルのURL> は開けませんでした" というメッセージのみが表示…