Blazor WebAssembly で制作したプログラムを発行するときに AOT コンパイルを行うとエラーになる場合の対処法

Blazor で作成したプログラムは AOT コンパイルを有効にするとファイルサイズの縮小や実行パフォーマンスの向上を得ることができます。

2023-03-25 23_09_58-公開

しかしいつのころからかこれを有効にして発行するとエラーになってしまう現象が発生しました。

2023-03-25 23_10_27-RandomStringGenerator - Microsoft Visual Studio

エラー文を見る限りは「wasm-tools-net6」のインストールが必要と書いており、調べてみたところ以下のコンポーネントを追加でインストールすることで解決するようでした。インストールする場合は Visual Studio のメニューの「ツール」>「ツールと機能を取得」で行うことができます。

2023-03-25 23_10_39-Visual Studio Installer

インストール後に発行したところ正常に実行することができました。

2023-03-25 23_27_48-RandomStringGenerator - Microsoft Visual Studio

Windows 11 におけるファイルの「アクセス日時」が変わるタイミング

細かくは調べていないので間違っている可能性もあるかもしれませんがおそらく以下のタイミングで書き換えられる模様。

  • ファイルが複製されたとき
  • ファイルが作成されたとき
  • ファイルが移動されたとき
  • ファイルが更新されたとき
  • エクスプローラーで表示したとき (何らかの情報が更新されたタイミング?)

ちなみに「作成日時」は

  • ファイルが作成されたとき
  • ファイルが複製されたとき

「更新日時」は

  • ファイルが作成されたとき
  • ファイルが更新されたとき

ただしファイルが作成されたときでもストリーム形式の保存だと「作成日時」と「更新日時」はずれる場合がある。

IIS 上の WordPress で使用している MySQL のバージョンを 5.1 から 5.7 に上げる際に躓いたこと

PHP の方は WebPI で簡単にバージョンアップできたので問題ないのですが、MySQL の方は WebPI に 5.5 までしかなく、さらに直接バージョンアップできないようなので以下のサイトを参考に実施してみました。

[MySQL]5.1から5.7へバージョンアップ(Windows編) (tksoft.work)

しかし、いくつかの箇所で書いている通りに動かなかったり文字化けしている箇所があったので、そのあたりを補足しておきます。

ちなみに参照先の記事ではコマンドプロンプトを使用していますが、私の環境ではすべて PowerShell で実行しています。

初回起動とデータファイルのアップグレード

image

図のようにかかれているのですが、上記をそのまま実施してもエラーになります。正しい手順としては

  1. コマンドプロンプトを起動して「cd "C:/Program Files/MySQL/MySQL Server 5.7/"」と入力する
  2. 「.\bin\mysqld --skip-grant-tables」と入力する。
  3. 最初のウィンドウは「実行中のまま」になるので閉じずに放置。
  4. 新しくコマンドプロンプトを起動して「cd "C:/Program Files/MySQL/MySQL Server 5.7/"」と入力する
  5. 「./bin/mysql_upgrade -u root 」と入力する。

数十行にわたってアップデートされれば成功です。抜粋すると結果はこんな感じ

Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv                                 OK
mysql.db                                           OK
      :
      :
status   : OK
Upgrade process completed successfully.
Checking if update is needed.

サービスの無効と登録

ここのコマンドもおそらく文字化けして間違っています。

image

正しい手順は

  1. コマンドプロンプトを「管理者権限」で起動。
  2. 「cd "C:/Program Files/MySQL/MySQL Server 5.7/"」を入力。
  3. 「.\bin\mysqld --install MySQL5.7 --defaults-file="C:/Program Files/MySQL/MySQL Server 5.7/my.ini"」を入力。

正常に実行されたなら「Service successfully installed.」と表示されるはずです。

次の Network Service のパスワードについてですが、登録するタイミングでは空にする必要があります。ここのパスワード蘭は空で登録しても再度開くと空登録でも●●●●が表示される仕組みになっています。

環境変数

変更しなくても 5.7 で動作することは確認しましたが、一応 5.1 から 5.7 に直した方がいいかも。コマンドで「mysql --version」と入力しても 5.1 のままなので。

PC TV Plus (Windows) で録画した番組を Blu-ray などに書き出す際に Hyper-V が有効になっているとエラーになる

タイトルの通りですが、Windows 10 で Hyper-V を有効にしていると nasne で録画したものを書き出す際に以下のようなメッセージが表示されてい書き出しが実行できません。メッセージの内容は PC TV Plus のバージョンによって変わるようです。

image

前まで正常に書き出せていたのに久々に書き出そうとしたら上記のようになっていたので、ネットで調べてみたところ「Hyper-V」のキーワードが見つかったので、そういえば最近有効にしたなと思いだしました。

とりあえず Hyper-V を無効にしたところ書き出しダイアログが正常に表示されるようになりました。エラーメッセージ内では「ネットワークを確認しろ」「ファイアウォールを確認しろ」「本体を再起動しろ」などいろいろ書いてありますが、どれも当てはまらないので注意が必要です。

もう少し調べてみたところ「VirtualBox」や「VMWare」など仮想環境が有効になっている状態はダメみたいなので、nasne を使うか仮想環境を使うかきちんと決め打ちしないといけないようですね。

一応 Hyper-V を無効にする方法は以下の手順で可能です。有効にする方法も同じなんですけどね。設定後は Windows の再起動が必要です。

image

image

image

Hyper-V を有効にするならチェックを入れる、無効にするならチェックを外す。

image

※(なんかこの nasne の問題、前にもやった気がするな・・・)

一応以下の他サイトの記事ではネットワークの設定を変更して対応しているみたいなのですがこちらでは未検証なので、まずはいったん以下の方法を試してみてダメだったら仮想環境を無効にする、という手順の方がいいかもしれません。

PC TV Plusで「番組データ準備中」と表示され番組がダウンロードできない場合 (ver001.com)

Windows の最新の IME が原因で一部のアプリケーションがフリーズする問題

Audacity という録音ツールを使っていたのですが、この1~2週間の間に頻繁にフリーズするようになりました。特定の操作、特にキーボードで操作しようとするとフリーズします。とはいってもアプリケーション自体はフリーズはしていなくてテキストのカーソルの点滅は常に動いている状態だけど、なんの操作も受け付けなくなるような現象です。

例えば以下は保存ダイアログなのですが、マウス操作している間はなんともないのですがファイル名をキーボードで入力しようとするとそれ以降何の操作も受け付けなくなります。

image

固まるのは上記のような形式のダイアログで、例えばメモ帳の保存ダイアログ形式では固まることはありません。

固まる原因が分からなくてこれについて Twitter でつぶやいたところ以下のリプライがありました。

OD−10Zさん 「@onodera_sf なんか、IME側の挙動が変わった影響とかなんとかで、日本語表示にしてるとキーボード入力した瞬間に固まるみたいです。私のほうは英語表示に切り替えたら解決しました。」

どうも IME に原因があるらしく、ネットで調べて試しに IME の互換性をオンにしてみたところ問題なく動作するようになりました。設定場所は以下の場所にあります。

  • 設定 → 時刻と言語 → 言語 → 日本語 (オプション) → Micorsoft IME (オプション) → 全般

image

ただ、古いバージョンを使用して対処しているので最終的には最新の IME で直ってくれるのがうれしいのですが、場合によっては古いアプリケーションは切り捨てられる可能性もあるかもしれませんね。互換性 IME もいつまで残ってくれるかもわかりませんし。

Outlook カレンダーでアラームが鳴った後しばらくすると勝手にアラームが消える現象を推測する

私の環境ではローカルに Outlook 2013 をインストールし、Microsoft の Outlook カレンダーとローカルの予定表を同期させています。予定を入力し、時間になったらアラームを表示させるように設定すると、アラームウィンドウが表示されるようになっています。

2016-11-06 12_50_09-アクション センター

表示されたアラームは明示的に消すまでは通常残り続けるのですが、何かのタイミングで表示後数十秒程度経過すると勝手にアラームが消えるようになってしまいました。予定表のアラームも「なし」に戻ってしまう現象です。

この現象についていろいろ試してみた結果治ったように見えるので、その原因の発生理由などについて書いてみたいと思うのですが、不具合の再現など細かく検証するのもめんどうだったのでおそらくこうだろうという推測で書きます。

現象

まず、ローカルで予定を作成し、アラームを設定すると、その時間にアラームは表示されるのですが、しばらく経つと勝手に消えます。予定自体は Outlook カレンダーにも同期されていますが、アラームが勝手に消えるとどちらのアラーム設定も「なし」に変わります。

Outlook カレンダー1

クラウド側の Outlook カレンダーで予定を作成し、アラームを設定した場合でも、ローカルで一度アラームは表示されますが、やはり一定時間後に消えてしまいます。この段階では Windows Update かなんかで何らかのバグが出てきたのではないかと思いました。

実はもう一台PCがあった

デスクトップで作業している PC とは別に Hyper-V で常時動かしている PC があり、実はそちらでも Outlook 2013 を常に起動していました (PC-B とする)。PC-B ではメールを見ることはあるのですが、頻繁に使うわけではなく、アラームを消したりするのが面倒なので、Outlook 2013 側でアラームを表示しない設定にしていました。なぜかというと、アラームを消すという動作は PC ごとに行われており、アラームを表示しておくと PC-B のほうにどんどんアラームが溜まっていくからです。

image
Outlook のオプションでアラームを非表示にできる

しかし、この設定は前々から行っていたものであり、PC-B でアラームを非表示にしていたからってほかの PC のアラームには影響はありませんでした。

Microsoft Exchange に変更した影響か

最近メールの送受信が失敗することが多く、ローカル PC 側の Outlook でアカウントを再作成していたりしていたのですが、その際接続方法が変わっているのに気づきました。前まではたしか種類が「Exchange ActiveSync」だったと思いますが、現在接続しようとすると「Microsoft Exchange」になっています。

image

予定表のアラームが勝手に消えるようになったタイミングと、PC-B でアカウントを作り直した時期が近いことを思い出し、もしかしたら Microsoft Exchange に変更したことによってアラームの制御も同期されるようになったのではないかと思います。

実際のところ推測でしかないのですが、PC-B 側でアラームを表示するようにしたところ、勝手にアラームが消えることはなくなりました。アラームが溜まるという問題についてですが、逆に同期されるようになったことにより、特定のPCでアラームが溜まるということはなくなりました。

Outlook カレンダー2

もし、同じような現象に見舞われたのであれば、上記の状態を確認してみるといいかもしれません。

]]>

Windows Server 2016 にアップグレードしてみた

Windows Server 2012 R2 から Windows Server 2016 にアップグレードしてみました。OS は Hyper-V のゲストとして動いているものです。

DVD からのブートでアップグレード

PC 起動時に DVD ドライブに Windows Server 2016 のインストーラーを配置してブートしてみました。基本的な操作手順は前の記事(Windows Server 2016 をインストールしてみた)で書いているのでそちらを参考にしてみてください。あらかじめ書いておくとこちらのパターンではアップグレードできませんでした。

まずはアップグレードするかどうかまで画面を進め、上の「アップグレード…」を選択します。

2016-10-15 12_16_06-yuuichi-ht - リモート デスクトップ接続

すると、下のような画面が表示されインストールが終了してしまいます。「閉じる」ボタンを押すとインストールの最初に戻るだけになります。仕方ないので、普通に Windows Server にログインした後にアップグレードするようにしました。

2016-10-15 19_13_23-yuuichi-ht - リモート デスクトップ接続

Windows Server にログインした後に DVD からセットアップを開始する

DVD ドライブにインストールメディアを入れて実行します。

2016-10-15 19_19_02-yuuichi-ht - リモート デスクトップ接続

ただ私の環境だとダブルクリックしてもエラーがでて起動できませんでした。

2016-10-15 19_40_22-yuuichi-ht - リモート デスクトップ接続

ですので、右クリックしてドライブの中身を開くことにしました。

2016-10-15 19_40_55-yuuichi-ht - リモート デスクトップ接続

DVD の中の「setup.exe」を起動します。

2016-10-15 19_41_04-yuuichi-ht - リモート デスクトップ接続

管理者権限を求められるので「はい」を選択。

2016-10-15 19_41_12-yuuichi-ht - リモート デスクトップ接続

更新プログラムをインストールします。

2016-10-15 19_43_02-yuuichi-ht - リモート デスクトップ接続

少し待ちます。

2016-10-15 19_43_21-yuuichi-ht - リモート デスクトップ接続

プロダクトキーを入力します。

2016-10-15 19_46_48-yuuichi-ht - リモート デスクトップ接続

今回はデスクトップ GUI ありでインストールします。

2016-10-15 19_47_16-yuuichi-ht - リモート デスクトップ接続

ライセンス条項を読んで同意します。

2016-10-15 19_47_44-yuuichi-ht - リモート デスクトップ接続

今回はアップグレード前提なので引き継ぐを選択します。

2016-10-15 19_48_26-yuuichi-ht - リモート デスクトップ接続

またもう少し待ちます。

2016-10-15 19_49_09-yuuichi-ht - リモート デスクトップ接続

可能であれば新規インストールをお勧めします、という注意書きが書かれています。どうしても設定引き継ぎでアップグレードしたいので「確認」ボタンをクリックします。

2016-10-15 20_15_00-yuuichi-ht - リモート デスクトップ接続

確認を終えたら「インストール」ボタンをクリックします。

2016-10-15 20_17_26-yuuichi-ht - リモート デスクトップ接続

デスクトップが全画面になりインストールが開始します。この後画面の色が変わったりしてインストールが継続されます。引き継ぐ設定にしていたからかもしれませんが、ここで結構時間がかかりました。1,2時間ぐらいかかりましたが、ゲストOSだったからかもしれません。運用面などで時間を気にされる方は注意しておいたほうがいいかもしれません。

2016-10-15 20_17_57-yuuichi-ht - リモート デスクトップ接続

インストールが完了し、無事新しいログイン画面に切り替わりました。ログイン後の内容は前の記事と同じです。

2016-10-16 00_45_31-yuuichi-ht - リモート デスクトップ接続

]]>

SQL Server の Service Broker が正常に動作しない場合の対処法

Service Broker にメッセージやキューなどを登録したにもかかわらず、正常に処理されない場合の確認と対処方法について記載します。ただ、実際に動作しない原因については多岐にわたる場合がありますので、ここではその一例としてとらえておいてください。

Service Broker 自体が有効かどうか確認
select name, is_broker_enabled from sys.databases
Service Broker を有効にする
alter database [データベース名] set enable_broker with rollback immediate
なんのエラーが発生しているかを確認

最後の列にエラーの理由が載っています。

select * from sys.transmission_queue order by enqueue_time desc
データベースの所有者が正しく設定されているかを確認(null なら設定されていない)
select d.name as 'database', s.name as 'owner'
from sys.databases d
left join sys.server_principals s
  on d.owner_sid = s.sid;

設定されていなければデータベースを右クリックしてプロパティから所有者を設定 (sa とか Administrator とか本来設定されるべきもの)

SQL Server のセキュリティ-ログインに設定しているユーザーと、対象データベースのユーザーが一致しているか

他のサーバーにあったデータベースを復元すると一致していないことが多い

]]>

USB メモリなどの外部ストレージが 32GB 以上あるのに 32GB しか認識されなくなった時の対処法

Windows 8.1 や Windows 10 で回復ドライブとして USB メモリなどの外部ストレージを指定すると、32GB までしか認識されなくなってしまう現象が発生することがあります。一度こうなると、エクスプローラーからのフォーマットやコンピューターの管理画面からのフォーマットでは戻せなくなってしまいます。

これを直すには、中のデータを消去する前提になってしまいますが、以下の手順で直すことができます。ただし、実際にやるときは自己責任の範囲で行ってください。

  1. コマンドプロンプトを開く
  2. 「diskpart」と入力して Enter
  3. diskpart.exe のコマンドプロンプトが開くので「list disk」と入力して Enter を押し、ディスクの一覧を表示
  4. フォーマットするディスクの番号を確認し「select disk 1」と入力して Enter (1 の部分はフォーマットするディスクの番号を入れてください)
  5. 「clean」と入力して Enter (実行したら閉じていいです)
  6. 「コンピューターの管理」画面を開き、ディスクが元に戻っていることを確認。ボリュームを作成して使えるようにする
]]>