全銀によると、中継コンピュータでエラーが発生した直接の原因は、銀行間手数料を入力する際に参照するインデックステーブルが壊れていたこと。一部金融機関のコードが読み取れず、エラーが発生した。
一方、一部報道ではメモリ不足や64bit OSへの移行を問題視しているが、小林氏は「現時点でそれがテーブルにどう影響したか分からない」としている。
⇧ テーブルが壊れてることが分かってるのなら、テーブルを扱っているベンダーのサポートに問い合わせたりできないんかな?
何にせよ、原因が特定できないんなら、改修プログラムを適用する前の状態に切り戻した方が良いような気もするけど、難しいんかな?
稼働50年で初の障害、って言葉が真実だとするならば、加えた改修プログラムが障害のトリガーとなってしまった気がするのだけど...
まぁ、プログラムの改修以外にも何かしら手を加えてるんだとしたら、切り戻し箇所が多くなるとは思うけども、何が影響してるか分からない状態で運用させ続けるのは、精神衛生上、宜しくない気がしますからね...。
切り戻さない状態での運用でも二次的な障害が発生しないってことが担保できていることが分かっているんであれば問題ないとは思うけども...
Windowsでgrep検索っぽいことは、findstrでできるっぽいが、文字コードの対応に難あり...
メモ帳しかない使えない環境で、サクラエディタで使えるgrep検索っぽいことをしたかったのだけど、メモ帳しか無いし、はて、どうしたもんか、と思ってググってたら、findstrコマンドなるもので実現できるっぽいですと。
⇧ Microsoftのドキュメントだと、Windows Serverの学習向けのページで紹介されているコマンドっぽいのだけど、
などでも使えるっぽいですな。自分のマシンがWindows 11へのアップグレードの要件を満たしていないので、Windows 11で試せないから分からんけど、Windows 11とかでも使えるんじゃないかしら。
ただ、
⇧ 文字コードとかの問題があるっぽい...
Microsoftのfindstrコマンドのドキュメントだと、文字コードの問題については何も言及されていないようなんだが...
公式のドキュメントで、言及ないにもかかわらず、
「findstr」の落とし穴
ズバリ、「Shift_JISの文字列で検索する」ということです。
つまり、「日本語文字列を検索するのは危ない」。
特定の文字列を含むファイルを探したいとき、Unix系ではgrepを使うと実現できます。Windowsではコマンドプロンプトから「findstr」「find」が使えましたが、UTF8が利用できませんでした。PowerShellの「Select-String」を使えばUTF8のファイルを検索することができます。
⇧ 上記サイト様によりますと、原因は特定していらっしゃる...
しかし、残念ながら、いずれも、一次情報が提示されていないので推測の域を出ていないと思われるわけなのだが...
とりあえず、日本語とかも扱いたいってなった場合に、findstrは使い物にならないらしいので、
⇧ 上記サイト様にありますように、Windows環境では、PowerShellのコマンドである、「Select-String」を使った方が良さ気でありそう。
findstrコマンドを試してみる
実際、findstrが使い物にならないのか確認してみる。
というわけで、まずは、適当にファイルを用意しておく。
⇧ 公開されているOutOfMemoryについての内容をコピペしてます。『OutOfMemoryError例外の理解』って文言は、Java 8とJava 11までのドキュメントには載ってるけど、Java 17 からは『java.lang.OutOfMemoryErrorエラー』って文言に痴れっと変わってるっぽい...
脱線しましたが、findstrコマンドを実行してみる。
findstr /S /n /C:"OutOfMemoryError" *.* > grep_result.txt
で、
サクラエディタで開くと、壮絶な文字化け...
メモ帳で開いても、文字化けしとりますな...ただ、1行分が変に改行された見た目になっていないのが多少はましか...
Javaの標準APIとかライブラリとかで出力されるエラーはほとんど英語だと思うから、エラー・ログとかでgrep検索するには問題ないかも知らんけど、日本語のエラーメッセージとかを検索したいってなった場合は、findstrコマンドは全く役に立たないってことですな...
PowerShellのコマンドである、Select-Stringを試してみる
findstrコマンドは、日本語に対しては無力であると。
というわけで、
⇧ 上記サイト様を参考にPowerShellのコマンドである「Select-String」を試してみます。
Get-ChildItem -Recurse | Select-String -Pattern "OutOfMemoryError" > grep_result_by_select-string.txt
⇧ 出力結果のファイルを確認してみる。
■メモ帳で開いた場合
■サクラエディタで開いた場合
⇧ う~む、ファイルのパスが文字化けしてるっぽい...
何やら、
⇧ PowerShell独特のファイル出力方法がある模様。
■UTF8
Get-ChildItem -Recurse | Select-String -Pattern "OutOfMemoryError" | Out-File -FilePath "C:\Users\Toshinobu\Desktop\soft_work\winodws_work\grep_result_by_select-string_utf8.txt" -Encoding UTF8
⇧ UTF8指定しても駄目なんだが...
⇧ 上記サイト様を参考に、他の文字コードについても試してみる。
■Default
Get-ChildItem -Recurse | Select-String -Pattern "OutOfMemoryError" | Out-File -FilePath "C:\Users\Toshinobu\Desktop\soft_work\winodws_work\grep_result_by_select-string_default.txt" -Encoding Default
■ASCII
Get-ChildItem -Recurse | Select-String -Pattern "OutOfMemoryError" | Out-File -FilePath "C:\Users\Toshinobu\Desktop\soft_work\winodws_work\grep_result_by_select-string_ASCII.txt" -Encoding ASCII
Get-ChildItem -Recurse | Select-String -Pattern "OutOfMemoryError" | Out-File -FilePath "C:\Users\Toshinobu\Desktop\soft_work\winodws_work\grep_result_by_select-string_Unicode.txt" -Encoding Unicode
■Oem
Get-ChildItem -Recurse | Select-String -Pattern "OutOfMemoryError" | Out-File -FilePath "C:\Users\Toshinobu\Desktop\soft_work\winodws_work\grep_result_by_select-string_Oem.txt" -Encoding Oem
⇧ う~む、ファイルパスの文字化けには対応しとらんのかしら?
相変わらず、Windowsのコマンドって微妙だなぁ...
Microsoftの我関せず感、何とかならんものか...
あんたらが提供してるコマンドだろうに...
毎度モヤモヤ感が半端ない...
今回はこのへんで。