変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

インターネット

[Windows11,VScode]diagrams.net

旧名draw.ioの描画ツール。

MicrosoftStoreからインストールできファイル作成もテンプレ選択があるので使いやすい。

VScodeの拡張機能でもインスト可能だがいつものようにファイルの拡張子に連動してメニューが出る仕組みなので、まずdrawio拡張子でファイルを新規作成しなければ触ることすらできないし、一見するとテンプレは無い様に観えるが、メニューのの中にテンプレがある。

メニューのの「高度な設定」がなかなか奥が深い。

  • SQLを選択しCREATE TABLE文を入れるとDBのテーブルの図形が出る。
  • Marmaidを選択し、Marmaidのマークアップなテキストを貼り付けると、それらしい図形が出る。

スクラッチパッドがあるのであちこちに図形の組み合わせを複製するのが楽そう。

メニューのファイル>Exportから、svgやpngファイルに出力できるので、こんな感じの図形をブログの記事に埋め込むこともできるから使い道は結構ありそう。

欲を云えば、MS-WORDやMS-EXCELと線画のままコピペできたら便利そうだけど、どっちもインストしてないマシン(例えばスマホ等)で観れないだろうから、注意して取り扱わないといけない気がする。

MS-ExcelやGooleのSpreadSheetの図形や肝心な機能を制限してる無償ツールでUMLなシーケンス図描きに悩まさたのを思い出した。適材適所って重要だよね?(大笑



[Windows11]gitインスト

残念ながらStoreには無いので、公式のDownloadボタンでexeファイルをダウンンロード。

ここからは長い。基本Nextボタンで進めるが、

GitのエディタをVisualStudio Codeに変更する。

新規リポジトリ作成時のブランチの名前は手入力に変更する。

他への影響を抑えつつPowerShellからもgitを使えるようオプションを選択する。

シンボリックリンクも使えるオプションを追加で選択する。

で、インスト開始。

これでスタートの全てのアプリで見れるハズ。

このGit BashでGitでのデフォルトのアカウントを設定しておく。

git config --global user.name "ユーザー名"



[Windows11]PowerShellのアップグレードとその後

フォルダとかでターミナルを開くと

アップデートしよう!と毎回出てくる。

ちなみに今現在は・・・

> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.22621.4111
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.4111
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

先のリンク先へジャンプすると・・・

Windows PowerShell 5.1 から PowerShell 7 への移行

のページが開くが、インストール方法s(msiファイルとかzipファイルとか…)の解説ページだった。

その中で一番簡単そうなのはMicrosoft Storeからのダウンロードだ。

Microsoft StoreでPowerShellを検索すると

表記されたバージョンが古いとおもったけど「4.2★」が、「人気度4.2」の意味だった。

アプリ名の下の数値は普通「人気度」なんだけど、

ツール系のアプリの場合はその前にバージョンを表記するのが普通だから・・・紛らわしい。

PowerShellのプレートにマウスをフォーカスすると、取得済み(アンスコした後なせいかな?)からインストールに変わるのでボタンを押す。

PowerShell 7.4.5
PS C:\Windows\System32> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.4.5
PSEdition                      Core
GitCommitId                    7.4.5
OS                             Microsoft Windows 10.0.22631
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

無事今の最新版になったのでこれでOK。

と思ったが、フォルダからターミナルで開くをすると古いまま。

スタート全てのアプリからPowerShellをスタートにピン止めしクリックすれば新しいバージョンが起動できるけど、他は古いまま。

サイドバイサイド(同じOSで新旧のバージョンがどっちも使える)だけどさぁ?

新旧どうやって使い分ければいいのかな?

ちなみに

環境変数PATHを確認してみるとC:\Program Files\PowerShell\7がありここにインストしたかのように見えるが、削除して再インスコしても出てこないので、これは過去のインスーラのせいな気がする。

実際には他のアプリ同様にC:\Users\[ユーザ名]\AppData\Local\Microsoft\WindowsAppsにpwsh.exeとしてインストされている。

Microsoft Windows [Version 10.0.22631.4112]
(c) Microsoft Corporation. All rights reserved.

C:\Users\[ユーザ名]>where pwsh.exe
C:\Users\[ユーザ名]\AppData\Local\Microsoft\WindowsApps\pwsh.exe

先のページではバージョン別の居場所は

Windows PowerShell 5.1$env:WINDIR\System32\WindowsPowerShell\v1.0
PowerShell 6.x$env:ProgramFiles\PowerShell\6
PowerShell 7$env:ProgramFiles\PowerShell\7
バージョン別の居場所

となっているが、C:\ProgramFiles\PowerShellなんてフォルダすらできてない。

C:\Windows\System32\WindowsPowerShell\v1.0にはpowershell.exeがあるのでこれが旧バージョンらしい。

Microsoft Windows [Version 10.0.22631.4112]
(c) Microsoft Corporation. All rights reserved.

C:\Users\[ユーザ名]>where powershell.exe
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

つまり、現在はEXEのファイル名で新旧バージョンを切り替えて使うのが良いのかもしれない。

と云う訳で、新版はターミナルでpwshで起動するのが一番簡単かな?

ターミナルのタイトルの「v」の設定の「新しいプロファイルを追加します」から

新バージョン用のプロファイルを作ってみた。

注意点としてはコマンドラインを指定する際に参照ボタンからpwsh.exe ファイルを探し出して開くボタンを押してしまうと

となってしまうので、見つけたpwsh.exeでパスのコピーでクリップボードに入れ、エントリーボックスに貼り付ける様にすることかな?

ついでに旧版のプロファイルの名前にバージョンを加えてみた。

最後に設定のスタートアップで新バージョンを指定した。

これで、フォルダのターミナルを開くで、すぐPowerShell新バージョンで使える。

とりあえずコレで良い???かな???????



日刊?週刊?Google Chromeアップデート

時々Google Chromeのセキュリティ・アップデートの記事を見るけど、多すぎない?

自動的にアップデートして欲しいけど、そうなると・・・

  • 起動する度に「アップデートを有効にするために再起動しますか?」が出る。
  • 「OK」押し、再起動
  • 振出しに戻る

たまに~~~的な状況もありそうだから、しないんだろうけど。

今時のペイントで①とか描くと円の上が切れるんだね(笑



[シェルスクリプト]思い込みが強すぎるとバグる

if cp from to; then
  echo "コピーに成功しました"
else
  echo "コピーに失敗しました"
fi

という記事を見つけた。

cpのExit Statusは0は成功、0以外はエラーなので、上のコードで大正解なのだが、気に入らないらしい。

わざわざgrepを持ち出して、grep ‘[‘なら文法エラーで$?に2が入るから

if echo test | grep '['; then
  echo "文字列が見つかりました"
else
  case $? in
    1) echo "文字列が見つかりません" ;;
    2) echo "エラーが発生しました(終了ステータス: $?)" ;;
  esac
fi

うううん。素晴らしい。(だそうだ

だが、そうだろうか?

2) の後の$?は必ず 2 になるハズだから、

この組み合わせには不整合の臭いがする。

ちなみに

grepのExit Statusは

grepのステータス意味
0一致が見つかりました。
1一致が見つかりませんでした。
>1構文エラーが見つかったか、(一致が見つかったとしても) ファイルにアクセスできませんでした。

らしいので、明日にでも、>2が実装されれば、その事象が発生すると先のコードでは何も表示しないのだ。

よって・・・

if echo test | grep '['; then
  echo "文字列が見つかりました"
else
  case $? in
    1) echo "文字列が見つかりません" ;;
    2) echo "grepのオプションの構文エラーな気がする" ;;
    *) echo "ボクの知らないエラーが発生しました(終了ステータス: $?)" ;;
  esac
fi

が良い様な気がする。

今は想定外である( 3とか4など )な結果に対して、デグレードしているのは良くない。(と思う。

とかく、

  • ソースコードの書き方がよろしくない!
  • ソースコードが美しくない!
  • カバレッジテストで通らないコードがある!

な記事の多くには、バグ(あるいはデグレード)が含まれている。

主に経験不足なんだろうけど、そう云う香り(臭いではない)を楽しむのも風流かもしれない。

そもそもシェルファイル内で検索したい文字列をべた書きする事は稀で

WORD= "9999"
TEXT= "9999"
if echo $TEXT | grep $WORD ; then
  echo "$WORDが見つかりました"
else
  case $? in
    1) echo "'$WORD'が見つかりません" ;;
    2) echo "'$WORD'検索中にgrepのオプションの構文エラーが起きた気がする" ;;
    *) echo "'$WORD'検索中に不明なエラー($?)が発生しました" ;;
  esac
fi

の様に書く事が多い。

だって!

上のコードで云えば、grep 9999 と書けば

マジックナンバー扱いになるじゃないですかねぇ~(笑

それにechoの出力に検索したいテキストを埋め込むことも考えに入っていない。

そもそも・・・・・・・・

最初のコードに(終了ステータス: $?)を追記して

if cp from to; then
  echo "コピーに成功しました"
else
  echo "コピーに失敗しました(終了ステータス: $?)"
fi

とするだけでデメリット?らしいとこも無くなる。

やはり、

経験がかなり不足していると思える

て云うか、WindowsのBATファイルより少しマシな程度のものだから

デバッグのしやすさの方が優先するならソースデバッガが使えるpythonやnode.jsで書いた方が楽。

話がそれるけど・・・

man コマンド名でExit statusが見つけにくい

様に思う。

オプション多すぎ。



[Windows11]電源プランを変更できない件

二酸化炭素削減云々の言草で「最適な電源プラン」な「高パフォーマンス」から「バランス」へは容易に変更できなくなっています。Webで検索しても「存在しなくなった電源プラン」の欄で変更する方法しか出ません。

電源プランをバランスに変更する方法

  1. 設定の検索で「dengen」を検索。
    • 「電源」で検索してもヒットしなかった
      • 悪意しか感じられない
  1. 検索結果の電源プランの編集を選択すると、「プラン設定の編集」がポップアップする。
  1. 上部のメニューで電源オプションを選択し、電源オプション画面に移動。
  1. バランスを選択

やれやれ😥

設定内容を確認してみよう

何1つ変えさせない様になった。

二酸化炭素削減信者うざすぎだ!😡



[c++]の配列

ネットで、

int a[3];
int j=1;
a[j] --> *(&a[0] + j) --> *(a + j) --> *(j + a) --> j[a]

と云うのを見つけた。

要点は四則演算の+演算子の前後は差し替えOKなので、

 *(a + j) === *(j + a)

であるとこで、C++ではポインタとintは同値扱いだから通る。(んだろうなぁ

実際、その通りだと思うけどね。

CPUのクロックが1MHzでメモリも数キロバイトな20世紀の頃ならともかく、

CPUのクロックが1GHz越えでメモリも数Gバイトな21世紀の昨今の視点で観ると

C++コンパイラが int j と宣言してるのにjの配列を認めない位のチェックはやっても良さげなので意外だった。

それでも、コンパイラがOKしてしまえば、C++のソースがアセンブラを通して機械語に変換されてしまえば・・・

多分、こんなアセンブラになって

データ・セグメント・レジスタ ds

データ・インデックス・レジスタ idx

データ・オフセット・レジスタ ofs

a[j] は、 Add ds, idx, ofs
j[a] は、 Add idx, ds, ofs は多分CPUの機械語には無いので、Add ds, idx, ofsに置き換えられるハズ

となり、どっちも同じに機械語に変換されるはずなので、(ま、いいか的にコンパイルも通すのかな?

a[j] = 4 とすれば・・・

同じ意味の機械語に翻訳されるj[a]も4になるのは当たり前。

不思議でも何でもない。

と思った。

しかし、WebAssemblyしか知らないと、Webで使う言語ではj[a]はエラってしまうと思うので

ソンナコードは通らない!

だから、C++が変!

と云うことになるのだろう。

そこにつっこみを入れるなら、

int a[3];
a[1000]=1;  // オーバーランしてるので、スタックのどこかが破壊される。

だって、コンパイルは通るだろうし、

関数のポインタだって何か変だなぁと思うトコはある。

そんなことよりも、ビット長が異なるCPUでも、異なるOSでも、同じソースが使え移植性の高いコンパイラというトコがずっと優先度が高い。

もしC++がなかったら、異なるOSやCPUで同じ言語を提供するには、全く別々のコードを書かなければいけないと思うが、今はWebAssemblyを使えば問題なし かもしれない。

でもそんなWebAssemblyはC++無しではリリースできない様な気がするので、

一般のプログラマはC++には手を出さない方がいい。

と思う。

そもそも、intとポインタが同一視されている理由は、OSやドライバ内部では、他人のモジュールが引き渡してくるポインタって実際にはアクセス不能だったり(CPUからGPUのメモリが見えるとは限らない等)するからintも同然なので、仕方が無いんだよなぁ。

CPU:ポインタって言ってますけど、それって貴方(GPU)の感想(アドレス)ですよね?

的な・・・(笑

手元のWindows上のArdunoの開発環境はx86-64系CPUで見知らぬCPUのコードをクロスコンパイルしてるのでArduno内部のアドレスもintもx86-64系CPUから見れば、どっちも只のint型データでしかない。

移植先のターゲットっていつも貧弱で自前ビルドなんて無理、高価な機械でクロスコンパイラするのが当たり前なC言語ができた頃の常識が今も残ってる。

そんな感じがした。



[Linux]cockpit が「保護されていない通信」扱い

httpsを使わないとChromeの機嫌が悪い。

でも、そのままhttpsにしておくと、「怪しい電子証明書」として扱われるので、

ブログのためにLet’s Encryptで取得した電子証明書を流用してみる。

Let’s Encryptでの電子証明書は、/etc/letsencrypt/live/の{コモンネーム}のフォルダの中の fullchain.pem(証明書)とprivkey.pem(秘密鍵)を使用する。

cockitでは電子証明書を、/etc/cockpit/ws-certs.d/ フォルダの中に格納することになっているので、先の証明書と秘密鍵のファイルを、{コモンネーム}.crtと{コモンネーム}.keyとしてシンボリックリンクを貼り、cockpitを再起動。

しかし、ブログのkvmホストは非公開だからChromeが安心する様な電子証明書は作りにくいので、ブログサーバのcockpitのホストリストにkvmホストを登録してソコから接続することにした。

ま、この方法だとブログのサーバを止める時に困るけどね。普段は使えるからヨシとしよう。



[三国英雄たちの夜明け]鯖統合その7

サーバー統合の告知がやっと来た。

また課金要素が増えるのかな?

近況

アップデートの日付はまだ未定。GW開けかな?

ps.2024/5/7 未だアップデート日付の告知無し

上位キャラの魂玉を強化したら戦力ダウン。

ps.2024/6/15

サーバ統合の案内がまだ来ない。

そして、公式HPが「メンテ中」のまま。

ps.2024/06/18

6/19に神霊のスキル調整が入る予定。

前回のサーバ統合では直前の4/21に調整が入り4/25に統合が来たから、今回も近々に統合くるかも(しれない

ps.2024/06/21

アップデート完了。

英雄のスキルの「専用チェックマーク」が消えていたので、全部付け直し

地味にメンドイ。

官邸の爵位に「未確認マーク」が出ていたのが気になって

念のため追っていくと・・・

『伯爵』で【神軍】と【龍行】が未解放!

解放したら異民族が出現する砦まで出向かなくても良いし、即終了するので手早くなった。

新規実装?見落し?(不明

次の爵位は「次国工」?達成条件は不明だけど、

貿易の速度や兵舎の保存上限が100%アップできそうだ。

官邸をレベルアップすると、領地レベル+1、英雄レベル+3にできるからこっちも大変そうだ。

とりあえずは、お米は大事に使わないとねぇ。

来週の火曜日あたりにサーバ統合くるかな?と書いたら、お知らせが飛んできた。

オンライン状態:14日前?までしかはランキングに載らなくなったから、

S6-1~4を一つに統合しても支障無いよね?

とか想像するだけでも、恐ろしぃ。




top