変奏現実

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

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

おっとっと

[VB.net]Enumとハッシュ

VB.net の列挙名と列挙値のリストをハッシュ化する必要があったので調べた。

まずは列挙の名前の方。

Dim aNames= [Enum].GetString(GetType(Enum型名))
Debug.Print(String.Join(",", aNames))

次は列挙の値の方。

Dim aValues= [Enum].GetValues(GetType(Enum型名))
Debug.Print(String.Join(",", aValues))

得た列挙名と値のリストを合体させる

'VBでハッシュテーブルを作る
Function createHash(aNamess() As String, aValues() As Integer)
    Dim ht As Hashtable = New Hashtable
      For Each item In aNamess.Select(Function(Value, Index) New With {Value, Index})
        Dim key As String = item.Value ' コレクションの要素
        Dim index As Integer = item.Index ' ループのインデックス
        Dim val As Integer = aValues(index)
        ht.Add(key, Val)
    Next
    Return ht
End Function

なお、ソース内で使用するenumの列挙子の情報(enumの型名、列挙子の名前、列挙値)を得ることはできるが、参照元でgetEnumValInfo(EnumFuga.Hero)の様に
Enumの列挙子を指定しないうまくいかない。

Public Function getEnumValInfo(enumItem As Object) As String()
    Dim enumType = enumItem.GetType()
    Dim enumItemName = [Enum].GetName(enumType, enumItem)
    Return {enumType.Name, enumItemName, enumItem}
End Function
Public Enum EnumRcIndex
    TypeName
    ItemName
    ItemValue
End Enum

あとは変換先のEnumのハッシュを作り、 変換元のEnum列挙子の情報を得て、先のハッシュに読ませれば・・・

Dim strCollectionB() As String = [Enum].GetNames(GetType(EnumB))
Dim intCollectionB() As Integer = [Enum].GetValues(GetType(EnumB))
Dim aRc1 = getEnumValInfo(EnumA.Hero)
Dim rc = enumHtB(aRc1(EnumRcIndex.ItemName))

トあるEnumAのHeroから別のEnumBのHero値を得られるハズ。

あと列挙型のデータ型は、Integer以外にもStringも指定できるから抽象型(T)で書かないといけないのかもしれない。

それにしても、うーむ、気が付かないうちに、Pythonにでも侵されていたのかな。全然VBコードじゃない。てか、ここまでくると、サンプルの多いC#の方が読みやすいだろうw(普通に

ここまで来るとVBを使う用途は

使い古したVBソースは二度と書き変えたくない。
~ Slanirish Warlander 「変装現実」より~

以外にありえないだろう。(爆笑

参考

列挙型(Enum)に文字列や数値を利用する

[VB.NET] Enum の要素数を知る

列挙体のメンバの値や名前を列挙する

foreachループで現在の繰り返し回数を使うには?

ハッシュテーブル(連想配列)を使うには?



[game]三国英雄たちの夜明け

Youtobeの広告をクリックして始めた。

他のスマホゲー同様、「課金こそ全て」である。

そんな訳で勢力分布はこんな感じ。

ふふふ、圧倒的じゃないか我が軍は!(当方魏側)

当然の成り行きで、9月29日に目出度く鯖(S07~28)統合。

メンテ中
強そうだけど弱いキャラ
よく判らない国戦表彰

鯖統合前にレベルだけは終わりたかった。

官邸は23/24。

敗因は、官邸のレベルアップ条件に「いづれか2か所の兵営がLV23に到達」が追加されていたこと。いづれの兵営もLV16と手抜きしていたせい。

キャラは69/72。(キャラレベルは現在の官邸レベルの上限)

とりあえず、食料が足りないと、兵を募集できないし、移動もできない。レベルがあがれば、一騎で使える戦力が増えていけば余計に腹が減る。

よって、レベルを順当に上げていくと、

お腹が空いて力が出なぃ~

と****マン風に動けない城主が続出する。

鯖統合後、国はからに変わったけど、弱小なことに変わりは無かった。

常弱派

やっとメインキャラが赤ラベルになり副将を使えるようになったけど、これじゃない感でいっぱい。(育て方?知らんw

副将は・・・よく判らん(以上

官邸がレベル27になった。

官邸ランキングが壊れているけど、いいかも。

一位になる。でもすぐ変動する。

やっと、伝説の英雄が貰える「伝説への道」が解放された。
しかし、1日5回まで、5回戦っても進捗は0.4%。
貰えるまで250日かかりそう。



[モバイルモニタ]中華系

色々悩んだけど、6K円の割引に釣られてポチった。

届いたのはメーカー名らしき文字が一切無い完璧なノーブランド品。

箱の表には「Portable Monitor」
横に
「モバイルモニター13….イ カバー付3年保証付
 新品」
のシールが付いていた。

裏面には

Specification
Color: Black
Backlight: Highlit LED
Input: HDMI
Speaker: Built-in 2 Speakers

と書かれていた Made in China 製

中華製は押すと凹むものを見かけるが、
これは厚さ1cm、重さも2kg近くもある頑丈仕様。

取り扱い説明書では

機型MDS-133B11
パネルの種類IPS
サイズ13.3型ワイド
アスペクト比16.9
解像度1920*1080
視角178°
コンスラスト1000:1
明るさ600cd/㎡
色域パラメータ100%NTSC
入出力端子mini HDMI*2、USB TYPE-C*1、PD*1
Speac.

となっており、普通に使う分には申し分ないけど、色域は古い感じがする。

一応タッチ機能があるが、接続するとよくある「USB装置が…」が表示されるが、マウスの様な使い方はできるものの、手元のWindows10はタブレットモードがONにならなかったのでジェスチャーは使えないっぽい。

この製品はMacやUSB 3.1付きのスマホがメインなのでコレでいいんだろう。

スペック表の通り3入力あるので、HDMI1、HDMI2、USB 3.1を切替も可能、但し、ボタンを押してOSD表示⇒設定⇒入力切替 とメニューを進めないといけないので、まず使うことは無いだろう。

一番残念なのは、HDMIケーブルを延長コネクタで延長すると認識しないことかな。

しかし、Rasbery-pi にHDMIとUSBで繋いだら、座標が右下1cmくらいズレてるけどタッチキーが反応した。ズレを調整できるなら使い物になるかもしれない。これでケースサイズの小さなLCDは不要かな。もっともX-Windowは反応が遅すぎてキツイ。




Core i9-9900 Normal

型番のゴロが良いから買った。

店員が「9900Xですね?」と値段もTDPも高杉るCPUに誘導してくるけど、
焼肉するつもりはないので「いや、ノーマルで」と答えた。

※この暑い時期、TDP65Wでも電源入れっぱなしにすると部屋の温度は34℃まで上がるのでTDP165Wは避けた。

Core i9-9900 (Normal)

しかし、CPU-ZのCPUイメージはX-Series。このことを云いたかったのかな?

性能は、まぁまぁだ。

CPUクロックや温度はベンチ中は4.8GHz、45℃まで上がるけど、通常は3.1GHz、20℃台とヌルい設定。これはマザボ(ASUS PRIME H310I-PLUS)のAUTO設定のせいなんだろう。

ベンチ結果は子供に取られたi5-9400Fの性能の1.5倍、でも値段は3倍でコスパは悪いがHyper-VのクライアントOSの動きは良いから無問題。

CineBench(R20)の最中のCPU温度は42℃前後。

これでPentium Gold G5500でHyper-Vするよりはマシになったハズ。

後は起動メニューに出てこない事が多いM.2 SSD (128GB)をどうするかだなぁ。
※とりあえず、電源ケーブルを抜き差しするとブートできるので、リセットがかかりぱなしらしい。

ps.
ブート時にSSDがブートマネージャに表示されない事が多いので、買い替え。

QLCとTLCの区別が付かなかったので店員に聞いたら、スペック上はQLCの方が寿命が短い(らしい)ということなので、TLCのKingstonのSA2000M8/1000Gを購入。Kingston製なので、寿命は案分(×Kingston係数)して考えた方が良さそう。

外すと元に戻せなさそうなIntel A200NGWはマザボに刺したまま。

ぱぱっとWindows10インスト

設定のプライベート・ネットワークでファイル共有OKになっているのを確認したが、うまく共有できない。再インストしてもダメだった。何となくExploreの左の「ネットワーク」をクリックすると、Exploreになぜか「ファイル共有が有効ではありません」バーが表示される。

ここで【有効】に変えることで、やっとファイル共有が使える様になった。ここでハマるとリモートデスクトップも使えないから非常に困る。

Hyper-Vを入れ、仮想スイッチマネージャーで「新しいスイッチLAN」を作成。
これってLANをブリッジ接続に切り替えるものなので、リモートデスクトップ接続が切れ、再接続。

メインPCからHyper-VのクライアントOSイメージをエクスポートしてみる。
他のPCの共有フォルダにエクスポートさせようとしたら失敗。ネットドライブを割り当てたら、参照ダイアログにネットドライブが出ないので、ローカルなフォルダにエクスポート。

この辺で、ブートしにくい128GBのM.2SSDが転がっているのに気が付き、M.2 SATA型SSD用のUSBアダプターをポチる。

ps.USBアダプターに動作が怪しいSSDを組み込んだ。

i7-3770のUSB3に繋ぐと、ドライブのアイコンが出たり消えたりを繰り返す。

壊れてるのかな?

i7-3770のUSB2に繋ぐとちゃんと動作する。
i9-9900のUSB3に繋ぐとちゃんと動作する。

どうやら、このUSBアダプターはしっかりと電力を供給できないUSB3では動作できないようだ。残念だが出先のPCでは動作できない気がする。

ps.WOL(Wake-on-Lan)
Windows10のソフトWOLではなくハードウェアWOLの方。

1.まず単純にデバイスマネージャのLANの設定でWONをONしようとしたが、
「電源の管理」タグが無かったので、ASUSからマザボ用のLANドライバをダウンロードしインストしなおした。

2.ASUS PRIME H310L-PLUSのUEFIの「APM」で
「PCIEによる電源ON」を「Enabled」にした。
しかし、これだけではダメで、
「ErP Ready」も「有効(S4+S5)」に変更した。

3.Vectorで見つけたWolアプリ「Wake up On Lan Tool」を使用し、
起動したPCで「このPC(AUTO)」で拾ってくる内容で、
別のPCから起動した。
IPv6のIPアドレスを拾ってしまうがコレでは起動できず、
IPv4に書き換えたところ無事起動できた。



[宇宙]インフレ

なんでも宇宙はできてすぐインフレしたらしい。

真空がエネルギーの高い状態から低い状態に相転移した際に、一気に膨張したそうな。真空の相転移とは、真空で作用する力場が変わったという事だろう。

当初の力場は、電磁気力、強い相互作用、弱い相互作用、重力は混ぜ混ぜ状態で、重力が一足速めに分離されたそうだから、主に重力が分家したせいでインフレしたんだろう。

そうならば、極小の始祖宇宙のエネルギーの揺らぎから宇宙の中心に回転しない点ブラックホールが偶然出来、その点ブラックホールの極小な表面に沿って極小真空の空間が平たく引き延ばされ、重力が宇宙から離脱し、宇宙自体は重力から解放されたのだろう。

背は曲がっているが、私の心は真っ直ぐである。

ゲームの中で劉塘が呟くセリフ。原典は不明。

ともあれ、その後、ブラックホール表面の近くで宇宙の最初の物質と反物質の対(どんな物質対かはこの際どうでもいい)がふらつき、うっかり、時空の境界線の越えて、点ブラックホールに反物質が落ち込み、宇宙へは物質が吐き出される。

無限小の真空と点ブラックホールによる無限大の時間遅延というその後に起こることは無い異常な状況下で現象が同じ方向に偏った現象のループが発生し次々にコピーされる。※宇宙へは物質が、ブラックホールへは反物質が×∞。

宇宙の中心であった座標に点ブラックホール、そして宇宙はその表面を覆う球面状の物質の皮。その皮もブラックホールに無限の時間をかけて回転しながら落ちていくが、先の現象のコピー速度が圧倒的に速いため、次第に分厚くなっていく。限界まで分厚くなれば自然とブラックホールになる。

結果、真空だけど物質性が高く故に回転してしまっている宇宙、物質で出来た回転するブラックホール、反物質で出来ているが点なので回転できないブラックホールの3構造となる。

宇宙自体が極小サイズとは云え、高いエネルギーの真空状態であり、また宇宙の内側にとんでもない超エネルギーの反応弾を抱えている様なものだ。

これなら、いずれ、光速度の制限を無視して宇宙がインフレしても支障は無いだろう。勿論、宇宙自体も只では済まず、ズタボロに引き裂かれ、今の立体網状態になっているのも十分に理解できる。また、宇宙が球体の表面(2次元状)だったから、宇宙の膨張が一様なものになったのだ。

但し、このモデルでは宇宙は物理的に球面状で、認識はできなくとも宇宙に表と裏は存在することになるが、極小サイズ下で膨張しながらズタボロに引き裂かれ、メチャクチャにされ、上下左右の区別が付かなくなっている可能性が高い。つまり、今、この宇宙と認識している空間は、パンクで破裂したタイヤの小さな断片(あるいは粉状の何か)の様なものだと考える。

また現在の重力は他の力場に比べ、到達距離は宇宙サイズと断トツだが、その力は地球の引力を小さな磁石で引き離せるくらいとても弱い。それも宇宙の中心にあった点ブラックホールから百数十億年が経て原初の重力源から遠く離れてしまったせいかもしれない。

こう考えると、

無の空間で釘を踏んでパンクしたタイヤの断片

それが宇宙

の様だ。

そうなると、物質の質量と重量は比例関係にあるが、数億年経つと、重力係数に変化が現れるかもしれない。

とっくに時計の針の進み方は場所によってバラバラだと判っているし・・・

何かのはずみで光速不変の法則も定説から外されるのかな?

実際、真空、大気中、水中、ガラスの中、いづれも外部から観測される光速度が異なるので、これらの境界線で屈折してるハズだもんね。

そもそも、真空中の光速度ってちゃんと測定できてるんだろうか?

また、理論値とかじゃなかろうか?(結構、コレで騙されてるからなぁ 爆



[WordPress]5.5

またアップグレードの催促があったので、【アップグレード】ボタンを押した。

なぜ、自動アップグレードしない。?

$nslookup  {このサーバーのお名前}

するとグローバルなIPアドレスしか出てこない。

そりゃ無理です。

そのせいか?
編集画面・左上のW印の「記事一覧を表示」をクリックすると、WordPressの案内ページにジャンプするのでとても使いにくい。

ルータにループバックさせればいいけど、ルータ調整中に無限ループするとかなり面倒な事になるので、

127.0.0.1   {このサーバーのお名前}

にした。

これで自動的にアップグレードやバックアップが動くはず。

ついでに、dnf updateしたら、Listen 443 設定が被っているので停止になった。

あれこれ調べたら、/etc/conf.d/ssl.conf を消して、vhost.confの名前でVirtualHostの設定をしていたから、Updateで自動的に/etc/conf.d/ssl.confが復元されていたせいだった。消したのでOK。

$ httpd -t
Syntax OK

ついでにSELINUXもtargetedになっていたので、disableに直した。

まだ変だな?

AM/PM表記を、24時間表記に変更。

カレンダーの週の初めが月曜になっているので日曜に変更。

php 7.2 では古いらしい。

# dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# # dnf module list php
最速のミラーを確定しています (41 hosts).. done. ---  B/s |   0  B     --:-- ETA
Remi's Modular repository for Enterprise Linux  182 kB/s | 576 kB     00:03
Safe Remi's RPM repository for Enterprise Linux 1.5 MB/s | 1.5 MB     00:01
CentOS-8 - AppStream
Name     Stream         Profiles                       Summary
php      7.2 [d][e]     common [d], devel, minimal     PHP scripting language
php      7.3            common [d], devel, minimal     PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name     Stream         Profiles                       Summary
php      remi-7.2       common [d], devel, minimal     PHP scripting language
php      remi-7.3       common [d], devel, minimal     PHP scripting language
php      remi-7.4       common [d], devel, minimal     PHP scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
# dnf module reset php
# dnf module install php:remi-7.4
# php -v
PHP 7.4.9 (cli) (built: Aug  4 2020 08:28:13) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.9, Copyright (c), by Zend Technologies

tarコマンドが使えない?

# dnf install tar

警告 オプションのモジュール imagick がインストールされていないか、無効化されています。

警告 オプションのモジュール zip がインストールされていないか、無効化されています。

# dnf install php-imagick
ImageMagick-libs-6.9.10.86-1.el8.x86_64
php-pecl-imagick-3.4.4-10.el8.remi.7.4.x86_64
他多数。
# dnf install php-zip
libzip-1.7.3-1.el8.remi.x86_64 php-pecl-zip-1.19.0-1.el8.remi.7.4.x86_64

残るはあと2つ

停止中のテーマを削除してください セキュリティ

テーマはサイトのデザインを決定します。ブランドの一貫性とサイトの安全性の維持のため、常に更新することが重要です。

サイトのインストール済みテーマ5個はすべて最新版です。

サイトには WordPress のデフォルトテーマ Twenty Twenty と現在有効なテーマ Enough を除いて、3個の停止中のテーマがあります。 サイトのセキュリティ向上のため未使用のテーマは削除することをおすすめします。

※無視。パス!

予約したイベントの実行に失敗しました

予約したイベント inpsyde_phone-home_checkin の実行に失敗しました。サイトは動作しますが、予約した投稿や自動更新は正しく動作しないかもしれません。

5.4.1の頃から原因不明らしい。



風邪

新型コロナをただの風邪とするデモがあった様なので、ググってみると、

発熱したり、セキをしたり症状は似ているし、「ただの風邪も肺炎を発病するウイルスが原因だったりすることもある様で、「ただの風邪」と新型コロナは素人目には区別は付きにくい。

ともあれ、自然免疫で防げない量(個人差有)の新型コロナを浴び、早々に獲得免疫を得られなければ、本当の病気になるハズだから、インフルパーティみたいなことをやって「ただの風邪」と証明でもしたのかな?と思ったら、

「新型コロナをただの風邪」と触れ回っているだけだった。

それで済めば、医者なんて要らないんだけどなぁ。

「ただの風邪」だと思って病院行って診てもらうと、医者が病気になって、その医者を診た医者も・・・とドミノ倒しになって病状を診る医者がいなくなったりそうだから、困って見よう見まねで対策中ってとこ。

これは「ただの風邪」では無い客観的な証拠じゃないのかな?

特効薬が開発された暁には

昔はどうだったのか知らんけど、
PCR検査が陽性でも
「ただの風邪ですね。」
と医者に診断され薬局でお薬貰っただけだよ。

これは希望的憶測に基づく未来のお話。
※故に、この引用元のリンクは実在しない。

となるんだろうけどね。

そして、今はとっても暑い、

暑いから「地球温暖化は正義」と簡単に思うのは早とちり。

太陽の黒点減少で放射熱総量が減少して10余年。

しかし、プチ氷河期はまだ来ない。

単にハズれならいいいが、外からの熱量が減った反動で南の海に溜め込んだ熱量(CO2も一緒に)を放出し、梅雨が明けると、いつもより暑苦しいくなっている気がする。

暫くはそれでもいいけど、とりあえず、熱放出が収まると、今度は冷え冷えになるので、困るな。困ったな。

と、ならないことを期待しよう。

地球の平均気温が40度ぐらいになっても、まだ生きていられると思うけど、

プチ氷河期が来たら、逃げ場は無いかもしれないからね。



[MS-ACCESS]エクスポートとbit型

MDBファイルのテーブルをMySQLにエクスポートしてみると、テーブルの構成に色々と問題が出てくる。

特にNULLを許可するかどうかが一番の問題。

作ったプログラムが許容できなかった場合を考慮して、フィールドが Not NULLだったり、初期値を設定してあれば、それと取り込んでALTER TABLEすれば大体問題は解消。

AutoNumberもNIQUE KEY扱いしてAUTO_INCRIMENT属性を付ければ何とかなる。

[MySQL]ODBC接続でフィールドの番号を振り直してみる

しかし、それでは気が付かないモノもあった。

Bit型のフィールドだ。

MS-ACCESSではYes/NoのフィールドがBit型(長さ1)のフィールドに変換されるがNULLはOKとなっている。でも大丈夫かと思ったら、そうでは無かった。

MS-ACCESSの連携フィールドではチェックマークになる。

このフィールドがある場合に「*」でレコードを追加する際に先のチェックを入れないと、何故かBit型のフィールドに NULL が入ってしまう。

それでも、MS-ACCESS上で支障がなければいいが、そうなっていない。

ビューの上では追加した行にDELETEマークが並ぶ。ビューを最新表示すれば消えるが、その行を編集や削除をすると、

データの強豪

と、いつもの頓珍漢なメッセージが出てしまい、何が原因か全く判らない状況に陥ってしまう。しかし、サーバやPCを再起動しても、リンクテーブルのビューでも編集や削除をすると、同じメッセージが出るので、

MSーACCESSが何かトチったことが判る。

PHPMySQLでBit型がNULLになっているとこを0に変えると問題は解消される。

つまり、INSERTで設定した(つもりの)値と違う内容がレコードに入っていたので、誰かが書き換えたに決まっている!とMS-ACCESSは判断をしたらしい。

実際にはINSERT時はBitフィールド型が未設定の様だ。それをやっちまっているのはMS-ACCESSなのかMySQLのODBCドライバなのかは判らないケドね。

SELECT * FROM テーブル名 WHERE Bitフィールド名 IS NULL;

なレコードをポチポチ直すものいいけど、

UPDATE テーブル名 SET Bitフィールド名 = 0 WHERE Bitフィールド名 IS NULL;

で焼き尽くしても、どうせ、すぐに増えるから・・・直ぐに!

ALTER TABLE テーブル名 CHANGE Bitフィールド名 Bitフィールド名 BIT( 1 ) NOT NULL DEFAULT b'0';

と、BitフィールドでNULLを禁止し、初期値も0にした方がいいだろう。

※bit(2)とかbit(3)に変換されるフィールドもあるのかもしれない。(ケド

一応、

SELECT table_schema, table_name, column_name FROM information_schema.columns WHERE data_type = 'bit';

で見ると、bitフィールドが意外にいっぱいあったりする。

エクスポートする際は、bitフィールド型も要注意。(ダナ

SET sql_mode='PIPES_AS_CONCAT'; select 'UPDATE `' || table_schema || '`.`' || table_name || '` SET `' || column_name || '` = 0 WHERE `' || column_name || '` IS NULL;',
 'ALTER TABLE `' || table_schema || '`.`' || table_name || '` CHANGE `' || column_name || '` `' || column_name || '`  BIT(' || NUMERIC_PRECISION || ') NOT NULL DEFAULT b''0'';'
 FROM information_schema.columns WHERE data_type = 'bit';

これを実行すると全データベースのBitフィールドをサッパリにするSQLを吐き出す。ALTER TABLEは1行づつ整合性チェックが入るみたいなのでレコード数が多いと結構時間がかかる。(ッヨ!

※SETはconcatを使うとミスが見つけにくいので、 || を使ったから。

※UPDATEしてるのは、NULLデータがあるとALTER TABLEでNOT NULLが整合性エラーで弾かれるから。

さて、絶対安全?MS-ACCESSからMySQLへのエクスポートのVBAに手を入れなければ・・・




top