ブックマーク / ykakinoki.hateblo.jp (18)

  • UTF-8 の BOM について - 将棋プログラミング

    1.はじめに UTF-8 の文字コードのファイルには、BOM (Byte Order Mark) がある場合とない場合がある。 Unicode の規格では、BOM は、推奨されないが、許容されている。 ja.wikipedia.org 今回、必要があり、色々な OS や言語で、UTF-8 の文字コードのファイルを作成した時、BOM が記録されるか、されないか、を調べた。 2.色々な OS や言語での BOM 2.1 Windows 10, Visual Studio, C++, _wfopen (_tfopen), // Visual Studio 2005 以降 保存 FILE *fp = _wfopen(name, _ L"w, ccs=UTF-8"); if (fp == NULL) { // エラー処理 } fwprintf_s(fp, L"ABC漢字123\n"); fclose

    zu2
    zu2 2024/06/14
  • Xcode 15 に更新した際の問題 - 将棋プログラミング

    Xcode 14.2 で開発したアプリを App Store Connect にアップロードしたところ、次の問題が表示された。 SDK version issue. This app was built with the iOS 16.2 SDK. Starting April 29, 2024, all iOS and iPadOS apps must be built with the iOS 17 SDK or later, included in Xcode 15 or later, in order to be uploaded to App Store Connect or submitted for distribution.Xcode 15 で開発しないといけない、とのことなので、Xcode 15.2 に更新した。 なお、Xcode を更新するとプロジェクトも変更が必要にな

    Xcode 15 に更新した際の問題 - 将棋プログラミング
    zu2
    zu2 2024/04/22
  • 第33回世界コンピュータ将棋選手権の戦型分析 - 将棋プログラミング

    今年(2023年)の第33回世界コンピュータ将棋選手権の棋譜266局の戦型を分析しました。 1.棋譜の入手 棋譜ファイルは、次の CSA のサイトから入手できます。 www2.computer-shogi.org 第33回 (2023年5月3,4,5日) から wcsc33_kifu.zip をダウンロードし、展開します。 拡張子が .csa のCSA形式の棋譜ファイルが266局あります。 今回は、評価値・読み筋付きです(送られた場合)。 ファイル名の形式が昨年までと違います。 なお、今回、棋譜ファイルを作成したのは、僕のソフトですので、問題がある棋譜がありましたら、お知らせ下さい。 2.戦型の自動判別 柿木将棋Ⅸを起動し、ツール/棋譜情報の一括設定 のメニューを実行します。 「フォルダ」で、CSA形式の棋譜ファイルがあるフォルダを指定します。 「入力」で CSA、「出力」で KIF を選

    第33回世界コンピュータ将棋選手権の戦型分析 - 将棋プログラミング
    zu2
    zu2 2023/05/08
  • iOS の Objective-C で UTType を使う - 将棋プログラミング

    iOS の Objective-C で、例えば、次のように UTType を使う場合、 NSArray *theTypes = [UTType typesWithTag: @"extension" tagClass: UTTagClassFilenameExtension conformingToType: nil];次の import が必要だった。 #import <UniformTypeIdentifiers/UniformTypeIdentifiers.h>リンク時、次のエラーになった。 Undefined symbol: _OBJC_CLASS_$_UTTypeUniformTypeIdentifiers.framework をリンクし、解決した。 なお、Optional でリンクしないと、古い iOS でクラッシュする。 参考: qiita.com

    iOS の Objective-C で UTType を使う - 将棋プログラミング
    zu2
    zu2 2023/01/09
  • Android 12 対応 - 将棋プログラミング

    アプリをアップデートしようとしたところ、次のエラーが表示された。 現在、お客様のアプリは API レベル 30 を対象にしています。セキュリティとパフォーマンスが最適化された最新の API を利用するには、API レベル 31 以上を対象にする必要があります。アプリの対象 API レベルを 31 以上に変更してください。2022年11月より、アプリのアップデートAPI レベル 31 以降を対象としないといけなくなっていた。 developer.android.com まず、単純に、build.gradle の compileSdkVersion と targetSdkVersion を 31に上げた。 android { compileSdkVersion 31 defaultConfig { targetSdkVersion 31 } } 再度、アップデートしようとしたところ、次のエ

    Android 12 対応 - 将棋プログラミング
    zu2
    zu2 2022/11/26
  • 第32回世界コンピュータ将棋選手権の戦型分析 - 将棋プログラミング

    今年(2022年)の第32回世界コンピュータ将棋選手権の棋譜279局の戦型を分析しました。 1.棋譜の入手 棋譜ファイルは、次の CSA のサイトから入手できます。 www2.computer-shogi.org 第32回 (2022年5月3,4,5日)から wcsc32_kifu.zip をダウンロードし、展開します。 拡張子が .csa のCSA形式の棋譜ファイルが279局あります。 2.戦型の自動判別 柿木将棋Ⅸを起動し、ツール/棋譜情報の一括設定 のメニューを実行します。 「フォルダ」で、CSA形式の棋譜ファイルがあるフォルダを指定します。 「入力」で CSA、「出力」で KIF を選択します。 「戦型を自動判別」をチェックします。 OK 押すと、CSA形式の棋譜を読み、戦型を自動判別し、KIF形式に変換し、保存します。 棋譜情報の一括設定 3.棋譜データベース KifuBase

    第32回世界コンピュータ将棋選手権の戦型分析 - 将棋プログラミング
    zu2
    zu2 2022/05/06
  • AWS EC2 で C5 より高速なインスタンスタイプ C6i が使用可能に - 将棋プログラミング

    AWS EC2 の東京リージョンで、2021年12月13日から、C5 より高速なインスタンスタイプ C6i が使用可能になった。 aws.amazon.com aws.amazon.com C6i インスタンスは、オールコアターボ周波数 3.5GHz の第 3 世代インテル Xeon スケーラブルプロセッサー (コードネーム: Ice Lake) を搭載し、様々なワークロードにおいて C5 インスタンスと比較して最大 15% のコンピュートティングプライスパフォーマンスを提供とのことであり、費用は C5 と同じである。 将棋AI の探索速度を調べたところ、C6i は、C5 より 4.6 % 高速、という結果だった。 少し速いだけであるが、費用は同じなので、今後は、C5 ではなく、C6i を使うべきである。 ただし、C6i を使うためには、Elastic Network Adapter (E

    AWS EC2 で C5 より高速なインスタンスタイプ C6i が使用可能に - 将棋プログラミング
    zu2
    zu2 2022/01/14
  • Objective-C での iOS 15 対応 - 将棋プログラミング

    Xcode 13 で、iOS 15 に対応する際に必要になった変更をまとめる。 最近のコードの例は、殆ど Swift なので、Objective-C のコード例が役に立つ人もいると思う。 1. ナビゲーションバー・ツールバーの色が変わる scrollEdgeAppearance を指定する。 developer.apple.com ナビゲーションバー if (@available(iOS 15.0, *)) { UINavigationBarAppearance* navBarAppearance = [self.navigationController.navigationBar standardAppearance]; [navBarAppearance configureWithOpaqueBackground]; // 不透明 navBarAppearance.titleTextA

    Objective-C での iOS 15 対応 - 将棋プログラミング
    zu2
    zu2 2021/10/07
  • iOS 13 以降、UITableView の scrollToRowAtIndexPath が正しく動作しない場合がある - 将棋プログラミング

    iOS 13 以降、UITableView の scrollToRowAtIndexPath が正しく動作しない場合がある。 最初に気がついたのは、iOS 13 になったとき、iPad では、scrollToRowAtIndexPath が正しく動作しなくなった時であった。 この時、animated が NO だと問題があり、YES だと正しく動作することがわかった。 最近、UITableView のセルの表示を追加した際、iOS 14 の iPhone でも、同様の問題が起きることに気がついた。 animated が NO だと問題があり、YES だと正しく動作する。 シミュレータでは問題がなく、実機だけで問題が起きるので、やっかいである。 この問題は、次のように、50 ms の遅延実行で、解決した。 [self performSelector:@selector(***:) withO

    iOS 13 以降、UITableView の scrollToRowAtIndexPath が正しく動作しない場合がある - 将棋プログラミング
    zu2
    zu2 2021/06/29
  • 将棋の局面の形勢(勝率)について - 将棋プログラミング

    ABEMAやニコ生の対局中継では、AI による局面の形勢が評価値や勝率の数値で表示されるが、形勢(勝率)は絶対的な数値ではなく、対局者によって変わる数値である。 このことを知らない人がいると思われるので、説明しておく。 コンピュータ将棋は、一般的に、可能な手を進め、勝ちやすさを数値(評価値)とし、双方が最善を尽くした場合、自分が最も勝ちやすくなると判断した手を選ぶ(MIN-MAX法、アルファベータ法)。 局面の評価値や勝率は、勝ちやすさを数値化したものである。しかし、同じ局面でも、勝ちやすさは、対局者によって変わる。 このことを明確に発表したのを僕が見たのは、10年以上前の鶴岡さん(激指の開発者)のCSA例会での発表である。 極端な例を考える。 先手番の局面で、後手玉には難解な詰みがある。先手玉は簡単な必至である。 この場合、後手玉を詰ませられる場合、先手の勝率は100%である。 しかし、

    将棋の局面の形勢(勝率)について - 将棋プログラミング
    zu2
    zu2 2020/08/21
  • UIWebView から WKWebView への書き換え:iOS 9 で異常終了 - 将棋プログラミング

    2020年12月から、UIWebView は使えず、WKWebView に書き換えなければならない。 ITMS-90809: Deprecated API Usage - App updates that use UIWebView will no longer be accepted as of December 2020. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview). それで、次のコードで WKWebView に書き換えたが、ちょっとした落とし穴があった。 WKWebViewConfiguration *webConfig = [[WKWebViewConfigura

    UIWebView から WKWebView への書き換え:iOS 9 で異常終了 - 将棋プログラミング
    zu2
    zu2 2020/08/04
  • iOS 和暦の落とし穴 - 将棋プログラミング

    iOS で、西暦年を取得する際、大きな落とし穴がある。 これが原因で、10年程前にトラブルが起き、以来、注意していたが、最近も失敗してしまった。 iOS の Objective-C で、西暦年を4桁の数字で取得する際、次のようなコードとなる。 NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; formatter.formatterBehavior = NSDateFormatterBehavior10_4; formatter.dateFormat = @"yyyyMMdd"; NSDate *today = [NSDate date]; NSString* dateStr = [formatter stringFromDate: today]; NSLog(@"### dateStr='%

    iOS 和暦の落とし穴 - 将棋プログラミング
    zu2
    zu2 2020/05/07
  • iOS 13 のダークモードへの対応(ダークモードにしない) - 将棋プログラミング

    Xcode 10.2 以降、旧CPUに対する最適化にバグがあるので、Xcode 10.1 を使い続けていたが、2020年4月からは、いよいよ Xcode 11 以降で作成しないと、App Store に提出できなくなる。 ykakinoki.hateblo.jp ITMS-90725: SDK Version Issue - This app was built with the iOS 12.1 SDK. Starting April 2020, all iOS apps submitted to the App Store must be built with the iOS 13 SDK or later, included in Xcode 11 or later. Xcode 11 以降でアプリを作成すると、デフォルトで、TableView 等が自動的にダークモードへ対応される。

    iOS 13 のダークモードへの対応(ダークモードにしない) - 将棋プログラミング
    zu2
    zu2 2020/03/15
  • Xcode 11 で作成した Mac アプリケーションは applicationWillTerminate が呼ばれない - 将棋プログラミング

    Xcode 11 で作成した Mac アプリケーションでは、applicationWillTerminate と applicationShouldTerminate が呼ばれないことに気が付いた。 ファイルをドロップしたりすると、呼ばれる場合がある。 これらが呼ばれないと、アプリケーション終了時にデータを保存できないので、大変困る。 Xcode 10.1 や Xcode 9.2 で作成すると、呼ばれる。 それぞれで作成したプロジェクトを比較したところ、Xcode 11 で作成した Mac アプリケーションでは、Info.plist に、次の2項目が追加されていることに気が付いた。 <key>NSSupportsAutomaticTermination</key> <true/> <key>NSSupportsSuddenTermination</key> <true/>NSSupport

    Xcode 11 で作成した Mac アプリケーションは applicationWillTerminate が呼ばれない - 将棋プログラミング
    zu2
    zu2 2019/11/14
  • iOS の定期購読のリジェクト事例 - 将棋プログラミング

    参考として、iOS の定期購読のリジェクト事例を紹介する。 従来、承認されていた iOS アプリのアップデイトが次の理由でリジェクトされた。 Guideline 3.1.2 - Business - Payments - Subscriptions We noticed that one or more of your auto-renewable subscriptions is marketed in a manner that may mislead or confuse users about the subscription terms or pricing. Specifically, the billed amount of your auto-renewable subscription is not clearly and conspicuously displayed

    iOS の定期購読のリジェクト事例 - 将棋プログラミング
    zu2
    zu2 2019/11/01
  • Unexpected error while obtaining screenshot from device: EOF - 将棋プログラミング

    多分、Android SDK Build-Tools を r29 にアップデイトしたことが原因で、スクリーンショットを撮る際、次のエラーになるようになった。 Unexpected error while obtaining screenshot from device: EOF次の対策で、この問題が解決した。 1. Android Studio を終了 2. 次のファイルをダウンロードする。 https://dl.google.com/android/repository/platform-tools_r28.0.0-windows.zip 3. adb.exe を入れ替える。 Android\sdk\platform-tools にある adb.exe の更新日時は 2019/03/06 だった。 これをダウンロードした adb.exe と入れ替える。 adb.exe の更新日時は 20

    Unexpected error while obtaining screenshot from device: EOF - 将棋プログラミング
    zu2
    zu2 2019/07/10
  • 第29回世界コンピュータ将棋選手権の戦型分析 - 将棋プログラミング

    今年(2019年)の第29回世界コンピュータ将棋選手権の棋譜296局の戦型を分析しました。 第29回世界コンピュータ将棋選手権の戦型分析 1.棋譜の入手 棋譜ファイルは、次の CSA のサイトから入手できます。 www2.computer-shogi.org •第29回 (2019年5月3,4,5日) から wcsc29_kifu.zip をダウンロードし、展開します。 拡張子が .csa のCSA形式の棋譜ファイルが296局あります。 2.決勝 8チームによる決勝 28局の勝率・平均手数は、次の通りです。 先手(下手)勝ち: 12 後手(上手)勝ち: 10 先手(下手)宣言勝ち: 2 後手(上手)宣言勝ち: 2 千日手    : 2 持将棋    : 0 先手(下手)勝率: 0.538 後手(上手)勝率: 0.462 平均手数   : 190.143 千日手を含む 平均手数   : 20

    第29回世界コンピュータ将棋選手権の戦型分析 - 将棋プログラミング
    zu2
    zu2 2019/06/04
  • AlphaZero の棋譜の戦型分析 - 将棋プログラミング

    昨年12月に公開された AlphaZero の棋譜100局の戦型を分析しました。 AlphaZero の棋譜の戦型分析 1.AlphaZero が先手 前回の記事(次)で書いたように、AlphaZero が先手の場合、初手は▲2六歩と▲7八金だけで、49勝1敗です。 ykakinoki.hateblo.jp 次の手   棋譜数(%)  先手勝率 ──────────────────────────── 1.▲2六歩 33 ( 66%) 1.000 33勝 0敗 2.▲7八金 17 ( 34%) 0.941 16勝 1敗 ──────────────────────────── 計 50 0.980 49勝 1敗その戦型は、次のようになりました。 戦型  棋譜数 割合(%) 先手勝率 ──────────────────────────── (なし): 0 0.0% 1: 相掛かり: 33

    AlphaZero の棋譜の戦型分析 - 将棋プログラミング
    zu2
    zu2 2019/04/25
  • 1