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> は開けませんでした" というメッセージのみが表示…

XCodeでのビルド時にcodesignでerrSecInternalComponentエラーが発生する

XCodeでアプリをビルドした際、codesignコマンドでerrSecInternalComponentエラーが発生する場合がある。 以下に類似のエラー報告と解決方法がある。 stackoverflow.com 解決方法 "キーチェーンアクセス"アプリを起動する。 "キーチェーンアクセス"アプリの"…

macOS 10.15以上でアプリを実行するために必要になるNotarization処理

アプリのNotarization macOS 10.15以上でアプリを配布する場合、アプリのNotarizationを行う必要がある。App Storeからアプリを配布する場合はXCodeでアップロードする際に行われるので、特に気にする必要は無い。 Notarizing macOS Software Before Distrib…

How to identify user is iOS when 'Request Desktop Website' of Safari is enabled on iOS13.

iOS

Safari on iOS13 has a setting "Request Desktop Website" that changes value of 'userAgent' same with macOS 10.15. *The default value of this setting is on on iPadOS and off on iOS. The 'navigator' object properties when 'Request Desktop Web…

XCodeのOrganizerで"you must first sign the relevant contracts online (1048)"エラー

XCodeのOrganizerでアプリをアップロードすると以下のエラーが発生する場合がある。 you must first sign the relevant contracts online (1048) 何か利用規約に同意する必要があるようだが、XCodeを起動し直しても特に何も表示されない。 解決策 XCodeのメ…

iOS13で「デスクトップ用Webサイトを表示」がOnになっている場合にUserAgentでマイナーバージョンを識別する

iOS

「デスクトップ用Webサイトを表示」がOnになっている場合、iOS13ではどのマイナーバージョンでもUserAgentには"Intel Mac OS X 10_15"としか記載されていないため、マイナーバージョンを判別できない。 iOS 13.2で「デスクトップ用Webサイトを表示」をOnにし…

iOS13のSafariで「デスクトップ用Webサイトを表示」がOnになっている場合にUserAgentでiOSかどうか識別する

iOS

iOS13ではSafariの設定「デスクトップ用Webサイトを表示」がOnになっている場合、UserAgentがmacOS10.15と同じ値に変化する。 *この設定はiOSではデフォルトでOff、iPadOSではデフォルトでOnになっている。 「デスクトップ用Webサイトを表示」がOffの場合のU…