Visual Studio 2022でビルド時に「機能 ‘再帰的パターン’ は C# 7.3 では使用できません。8.0 以上の言語バージョンをお使いください。」のエラーが出た時の対処

ChatGPTって便利ですよね。自分ではできないプログラミングも、チャット形式でヒアリングしていくうちに完成します。
ただChatGPTは実環境にてすぐに実行できるものを生成してくれるとは限りません。今回の場合は下記エラーが表示されました。

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー (アクティブ) CS8370 機能 '再帰的パターン' は C# 7.3 では使用できません。8.0 以上の言語バージョンをお使いください。 Test C:\Users\User\source\repos\Test\Test\ChatTest.cs 83

Visual Studio 2022にて新規プロジェクトを作成すると、C# 7.3として作成されてしまい、ChatGPTが作成したプログラムがC# 8.0のものだったので、上記エラーが表示されたようです。

対応としては、C# Project file (*.csproj)をメモ帳などで開きます。

そうすると <TargetFrameworkVersion>v4.8</TargetFrameworkVersion> といった.Net Frameworkのバージョン指定があるので、その下に改行して <LangVersion>8.0</LangVersion> を追加してあげればビルドできます。

自分の実力以上のことをしようとすると、思わぬところで躓きますね(笑)

Windows 10で2024年10月パッチを適用するとPDFアイコンが真っ白になった時の対応

燃え尽きたぜ。。。真っ白に。。。

そんなわけで、Windows Updateでパッチを適用したところ、PDFのアイコンが白い色に変ってしまいました。かっこいい!って思っていたんですが、エクスプローラーなど背景が白い場合、アイコンが見えないという罠。

PDFファイルを右クリックしてプロパティを開くと、そこはEdge標準のPDFアイコンが表示されており、一時的なキャッシュの不整合か何かで表示できていないだけのようですね。

戻し方は、PDFファイルのプロパティを開き、プログラムの右にある「変更」を押します。

そうすると「今後の .pdf ファイルを開く方法を選んでください。」と聞かれますが、変更せずにOKを押して、プロパティもOKを押して閉じます。

そうすると、Windows 10のEdge標準のPDFアイコンに戻りました。

Acrobat Readerなどを使っている人は、この事象は発生していないみたいですね。
もしかすると専用リーダー使えって事?

2024年にWindows 7 SP1やWindows Server 2008 R2をインストールした後に手動で当てるパッチ一覧

検証・確認のため、古いOSをインストールすることはよくあるかと思いますので備忘録。
Windows 7 SP1やWindows Server 2008 R2などを新規インストールした後、そのままではVMware ToolsやWindows Updateが実行できません。
VMToolsの場合は下記のエラーが出てしまい、インストールがロールバックされます

Windows セキュリティ:ドライバー ソフトウェアの発行元を検証できません。

VMware Tools のインストール:セットアップ中に、 VSock 仮想マシン通信インターフェイス ソケット ドライバを自動インストールできませんでした。ドライバを手動でインストールする必要があります。

VMware Tools のインストール:セットアップ中に、 メモリ制御ドライバを自動インストールできませんでした。ドラバを手動でインストールする必要があります。

Windows Updateは次のエラーが出て失敗します。

Windows Update:新しい更新プログラムを検索できませんでした。
このコンピューターで利用できる新しい更新プログラムを確認中にエラーが発生しました。
エラー:コード 80072EFE Windows Update で不明なエラーが発生しました。

この場合に手動で適用するパッチ一覧は下記となります。基本的には①のSha2だけ当ててもよいんですが、どうせならロールアップ含めて当てるべきかと思っています。③の後に再起動して④の適用です。

① KB4474419
SHA-2 code signing support update for Windows Server 2008 R2, Windows 7, and Windows Server 2008: September 23, 2019
https://www.catalog.update.microsoft.com/search.aspx?q=kb4474419

② KB4490628
Servicing stack update for Windows 7 SP1 and Windows Server 2008 R2 SP1: March 12, 2019
https://www.catalog.update.microsoft.com/search.aspx?q=kb4490628

③ KB3020369
April 2015 servicing stack update for Windows 7 and Windows Server 2008 R2
https://www.catalog.update.microsoft.com/search.aspx?q=kb3020369

④ KB3125574
Convenience rollup update for Windows 7 SP1 and Windows Server 2008 R2 SP1
https://www.catalog.update.microsoft.com/search.aspx?q=kb3125574

上記4つのパッチを当てると、Windows Updateも実施できるようになり、VMware Toolsのインストールもエラーが発生せずに完了します。

ミーク株式会社さんより「MEEQロゴ入りボトル」をいただきました

アイティメディア社主催の「ITmedia Virtual EXPO 2024 夏」というものがありまして、iPhone 16が当たるキャンペーンをしていたので景品もらえるものにいろいろクリックをしていたら、ミーク株式会社さんのステンレスボトルが当たりました。
ありがとうございます!

正直、御社のサービスまったく知らないです!まぁそういった人に知ってもらうイベントなんだと思います!景品狙いですけど!

MEEQは、携帯SIMで3キャリアに対応、1枚からでも注文できるサービスのようです!
(ステンレスボトル分は宣伝しておかないと。。。)

ボトルは、そのうち使おうと思います!

Process Explorerを起動しようとして「Not able to run on this version of Windows」エラーが表示された時の対処

今はもうほぼ使われていないとは思いますが、Windows 7、Windows Server 2008 R2でプロセス詳細を調べようとしたときに下記エラーが表示されることがあります。

Not able to run on this version of Windows: Missing function: winsta!WinStationConnectW
Not able to run on this version of Windows: Missing function: winsta!WinStationShadow
Not able to run on this version of Windows: Missing function: winsta!WinStationGetProcessSid

このエラーの後に下記「Sysinternals Process Explorer は動作を停止しました」と表示されます。

これは新しいProcess Explorerを起動しようとしており、OSにパッチが当たっていないためAPIが見当たらず起動できないという事象です。
解消するには、OSへパッチを2つ適用する必要があります。パッチ適用後、OS再起動が必要です。

Windows 7 for x64-based Systems (KB3033929)
https://www.microsoft.com/en-us/download/confirmation.aspx?id=46148
Windows 7 for x64-based Systems (KB2758857)
https://www.microsoft.com/en-US/download/confirmation.aspx?id=35936

パッチ適用後、Process Explorerが起動するようになりました。

Process Explorerでプロセスの詳細を調べたいのに、パッチが当たっていないとOS再起動が必要となりプロセスが初期化されてしまうという、本末転倒な事態になってしまいます。パッチは定期的に適用するか、もしくは古いProcess Explorerが必要です。

古いProcessExplorerはWebArchiveなどで入手できると思います。下手なところから落とさず下記こちらがおすすめです。
・Process Explorer v11.33
https://web.archive.org/web/20100103100904/https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

FortiGateでerror sslvpn FortiSslvpnが出た時の対処

FortiGateを構築してSSL-VPNを設定した後、接続検証を行った際に3分程度で切断されてしまう事象が発生しました。クライアント側のFortiClient VPNには下記のログが記録されています。

これはセグメンテーションエラー(Segmentation Error)の時に記録されるエラーです。
クライアント側の設定を見ると、VPNオプションの「DTLSトンネル優先」にはチェックが入っておらず、UDPで通信したために断片化されてしまったというわけではなさそうでした。

そのためFortiGate側が通信するときに断片化していると思われるため、MTUを変更してみたところ改善しました。

実際にはpppoe1だけ、MTUではなくMSS長の値を変更しています。MSS値とは、MSS (Maximum Segment Size)の略で一度に伝送できるTCPの最大セグメントサイズになります。各インタフェースからパケットが送信されるとき、一番小さい値に変更されるためすべてのインターフェースに対する変更は不要です。

変更はFortiGateのコンソールへ接続するか、SSH接続、もしくはWebインターフェースからコンソールを開いて、下記のようなコマンドを実行することで実施できます。

WindowsにPythonを導入して生成AI「Llama 3 Youko」を実行してみた

最近、巷では生成AIが盛んだとか。いや、もうすでに乗り遅れている感じが満載ですが、まだいけるはず!ChatGPTが公開されてから盛んですよねー。
そんな訳で、生成AIをWindows 11のマシンで試してみました。

まず必要となるのは、GPUが搭載されたマシンだとか。でも手元にないので、テキトーな仮想マシンを立ち上げてからテスト的に実施してみます。
そう、私はまだスタートラインにすら立っていないという。ボーナスが入ればきっと。。。
セットアップしたのは、CPU:2core、メモリ:16GB、HDD:480GBな環境です。

最初に、基本となる Python の導入です。導入バージョンは古いほうがいろいろ組み合わせ上サポートがあるらしく、最新のものが良いというわけではないとか。
そのためPython 3.10.11をダウンロードしてインストールしてみました。

https://www.python.org/downloads/windows/
https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe

インストールが完了した後、自動的に環境変数のパスにpythonインストールディレクトリが登録されます。ただ即座に反映はしないようなので、一度サインアウトをするか、PCの再起動を実施したほうがよさそうです。
ソフトウェア導入すると大体再起動すると思いますが。次に使うコマンドpipが実行できなくて焦ったのは私だけ・・・(笑)

そのあとに、Pythonで使用するパッケージのインストールを、コマンドプロンプトを起動させて実行します。

今回は仮想なので実施しませんが、GPUがある場合はドライバ最新化とかも必要なようです。
nVIDIAなどの場合は、下記からcuDNN for CUDAも導入するとか。
https://developer.nvidia.com/cudnn-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exe_local

導入したら、スタートメニューからpythonをクリックして実行させます。
今回実施してみる生成AIは、FacebookのMetaが開発したLlama-3に、昔Microsoftでよく見た女子高生bot「りんな」の学習を追加したLlama 3 Youko 8B Instructというものです。
https://huggingface.co/rinna/llama-3-youko-8b-instruct

何かよくわかりませんが、量子化というのがされているらしく、GPUのメモリが少なくても動作するようになっているらしいです。
今回の環境はGPUがないので、それでどこまで動くかがポイントでしょうか。

Llama 3 Youkoは、サイトに記載されているサンプルそのままを、起動したpythonへ貼り付けて実行です。
貼り付けした時に複数行の警告が出ますが、そのまま貼り付けさせました。

そうすると下記のような、良くわからない警告が表示されます。今回は実行できているので無視しましたが、eos_token_idというのを指定してあげないとだめって感じのことが書かれてます。そのうち調べる(たぶんやらない)リストへ追加です。

The attention mask and the pad token id were not set. As a consequence, you may observe unexpected behavior. Please pass your input’s attention_mask to obtain reliable results.
Setting pad_token_id to eos_token_id:128001 for open-end generation.
The attention mask is not set and cannot be inferred from input because pad token is same as eos token. As a consequence, you may observe unexpected behavior. Please pass your input’s attention_mask to obtain reliable results.

実行結果ですが、1時間20分ほどかかり、下記が出力されました。めちゃくちゃ時間がかかりますが、CPUだけでも文字生成できるのはすごいですね!

西田幾多郎(にしだきわたろう、1870年 – 1945年)は、日本の哲学者であり、京都大学教授を務めた人物です。
彼は「純粋経験」という概念を提唱し、現代日本哲学において最も重要な思想家の一人とされています。西田は、知識や認識が外部世界に基づくものではなく、むしろ主体的な経験によって生じるという考え方を示しました。この考え方は、現代の認知科学や脳神経科学にも影響を与えていると言われています。
また、西田は倫理学においても独自の立場を確立し、「善」の概念を再定義したことで知られています。彼の哲学は、戦後の日本哲学界に大きな影響を与えたと評価されており、その業績は現在でも広く研究され続けています。

ちなみにノートパソコンでも実行してみました。
CPU:Intel Core i5-1135G7 (4c/8T)、メモリ:23.7GB(24GB)な環境で、同じコマンドを実行すると10分程度で完了します。CPUだけでも、coreがたくさんある環境であればそこそこ動きそうです。

普通に安いグラフィックカードを使ったほうが、もっと早いんでしょうけどねー(笑)
自分でやるのは楽しいけど、普通にChatGPTなどのサービス利用していたほうが、日々進歩していくので楽かもです。

Google PlayでAndroidアプリを収益化すると個人情報が全世界に公開されるらしい

Qiitaトレンドで下記記事が上がってました。

こどおじがAndroidアプリ作ってたらGoogleに子供部屋を追い出された話
要約すると、新しい規約で収益化しているアカウントについては住所と氏名がGoogle Playで公開されるとのこと。記事の人はそのため、実家ではなく賃貸を別途契約して住み始めたって事みたいです。

そういえば、私もGoogle Playに登録していたなぁと思ってしばらく使ってないGmailを開いてみると。。。下記メッセージが届いておりすでに削除されていました!(笑)

[ご対応のお願い] デベロッパー アカウント(yamahide.biz)に問題があります
デベロッパー アカウントは使用されていないため、閉鎖される可能性があります

[最終通知] yamahide.biz 様、Google Play Console デベロッパー アカウントが閉鎖されました
デベロッパー アカウントは使用されていなかったため閉鎖されました

つかっていないアカウントだったのでショウガナイという気持ちと、25ドルがモッタイナイという気持ちとがせめぎあっています。まぁ、残っていてもAndroidアプリを公開する可能性は低いので、不要なアカウントは消していくっていう方針自体には同意です。

教訓としては、定期的にメール確認しましょうって事ですね!