変奏現実

パソコンや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日かかりそう。



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に書き換えたところ無事起動できた。



[MS-Office]32bit?,64bit?

MS-Office 365をインストールすると32bit版か64bit版のどっちが入るのか?

どうやら32bit版のOfficeをインストール済みのPCにインストすると32bitになり、Officeが入っていない64bit版のWindowsでは64bit版が自動的に入るようだ。

32か64か?の確認は、ファイル⇒アカウント⇒***のバージョンの「ボタン」を押すと、ダイアログの上の右あたりに ***ビットって書いてある。

とりあえず、メインPCは古いバージョンから使い続けているので32bit、サブPCにインストしたら64bitになった。

そうなると、VBAからのWindowsのAPIの呼び方が変わるので

Public Declare PtrSafe Sub SubName Lib "LibName" Alias "AliasName" (argument list)

にしないといけないが、32bit版だと ptrSafe は未定義なので

#if WIN64 then
Public Declare PtrSafe Sub SubName Lib "LibName" Alias "AliasName" (argument list)
#else
Public Declare Sub SubName Lib "LibName" Alias "AliasName" (argument list)
#endif

とコンパイル・オプションで切り替えが必要。

ODBCでデータベースに繋いでいると、更に面倒なことになる。

32bit版のWindows10は今まで通りで、
1.データベースのODBCドライバを32bit版をインストして、
2.C:\Windows\System32\dbcconf.exeで登録するBATファイルを作る。

しかし、64bit版のWindows10は、ODBCが32と64の両方ある。Officeが32bit版ならODBCも32bit版、64bit版ならODBCも64bit版になるようだから、どっちに転がるか判ったものではないので、

1.データベースのODBCドライバを32と64bitの両方をインスト。
2.C:\Windows\System32\odbcconf.exeで登録するBATファイルを作る。
3.2のBATファイルのSystem32をSysWOW64したODBC-32bit専用を作る。
4.とりあえず、2と3の両方を管理者モードで実行しておく。

細かい事だけど、
C:\Windows\System32\odbcconf.exeがメモリに残骸として残っている間は、
C:\Windows\SysWOW64\odbcconf.exeと指定しても、
System32の方が動いてしまう情けないシロモノなので、
cd C:\Windows\SysWOW64 と
odbcconf.exe xxxx に分けた方がいい。
※パスが通っている逆もしかり。

データソース名は32bitと64bitで重複しても気にならない様なので、こうしておけば、メインPCのOfficeが急に64ビット版に変わってもなんとかなるだろう。

ちょっと変な気がするけど、SysWOW64は、64bitのWindowsで32bitのEXEを実行するためのモノが入っているので、ここのdbcconf.exeを使うと、32ビット用のODBCの設定をやってくれる。
参考:WikepediaのWOW64

いづれ、メインPCがクラッシュすれば、32bit版は消滅するハズだ。

しかし、これがエンタープライズなWindows環境なら、いくら新PCであっても、32bit版が100年くらい生きながらえる可能性は高い。



DDL

データベースの設定用のスクリプトのこと。
データベースやテーブルの作成をGUIのツールで行うこともできるが、数が多いと操作が多くなりメンドクサイ。

よーく考えてみると、SQL形式でバックアップできるデータベースなら、
中身はSQLなんだから、その中の CREATE TABLE や CREATE INDEX を取り出せば、テーブルを作り直すSQLファイルを作れるはず。

しかし、SQL形式でバックアップできないなら、CREATE TABLEを作成するSQLを作ればいい。

MySQLの場合は、
SHOW COLUMNS FROM テーブル名
でテーブルのカラムの情報が見れる。

FieldTypeNullKeyDefaultExtra
link_idbigint(20) unsignedNOPRINULLauto_increment
link_urlvarchar(255)NO
link_namevarchar(255)NO
link_imagevarchar(255)NO
link_targetvarchar(255)NO
link_descriptionvarchar(255)NO
link_visiblevarchar(20)NOMULY
link_ownerbigint(20) unsignedNO1
link_ratingint(11)NO0
link_updateddatetimeNO0000-00-00 00:00:00
link_relvarchar(255)NO
link_notesmediumtextNONULL
link_rssvarchar(255)NO
link_categorybigint(20)NO0
SHOW COLUMNS FROM wp_links

EXCELに貼る元ネタはとしてはいいけど、これからCREATE TABLE を作るのは面倒。
SHOW CREATE TABLE テーブル名
で、直接DDLがゲットできる。

TableCreate Table
wp_linksCREATE TABLE `wp_links` (
 `link_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
 `link_url` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ”,
 `link_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ”,
 `link_image` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ”,
 `link_target` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ”,
 `link_description` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ”,
 `link_visible` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘Y’,
 `link_owner` bigint(20) unsigned NOT NULL DEFAULT 1,
 `link_rating` int(11) NOT NULL DEFAULT 0,
 `link_updated` datetime NOT NULL DEFAULT ‘0000-00-00 00:00:00’,
 `link_rel` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ”,
 `link_notes` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
 `link_rss` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ”,
 `link_category` bigint(20) NOT NULL DEFAULT 0,
 PRIMARY KEY (`link_id`),
 KEY `link_visible` (`link_visible`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
show create table wp_links

ORACLEの場合は
select DBMS_METADATA.getDDL(‘TABLE’, ‘テーブルの名前’);
でDDLがゲットできるらしい。



XRDPとWindows10の間でクリップボードが使えない等

ことがあったので調べてみた。まだ試してはいない。

3通りあった

まずはリモート接続の設定画面のローカルリソースでクリップボードを使える様にチェックが入っているか?

意外と忘れていることが多い。

ローカルコンピュータポリシーで
「コンピューターの構成」
 「管理用テンプレート」
   「Windowsコンポーネント」
   「リモートデスクトップサービス」
    「リモートデスクトップセッションホスト」
      「デバイスとリソースのリダイレクト」のトコで
「クリップボードのリダイレクトを許可しない」が「無効」になっている?
無効になっていなかったら「無効」にしてリモート接続しなおし。

メモリがギリギリだとDRP経由でクリップボードをやり取りするタスクがエラって仮死してる場合もあるらしい。

接続先のタスクマネージャの
「プロセス」タブに「RDPクリップボードモニタ」があったら、
※もしWindows7だったら「詳細」タブに「rdpclip.exe」が見当たるらしい。
「タスクを終了」し
「ファイル」
 「新しいタスクの実行」で
rdpclip.exe を起動する。

接続先がCentOSなら接続先には無いので、接続元を試すといいのかもしれない。

あと、XRDPは接続するPCに応じてセッションを増やすらしいので、接続を切る時はログアウトした方が良いかもしれない。

できれば、XRDPを再起動するといいだろう。

sudo systemctl restart xrdp
はできる様だが、
sudo service xrdp restart 2013年頃の記事
は無理らしい。
つまり古いバージョンはダメなんだろうね。

CentOSで「半角/全角」キーや「Windows+スペース」キーでかな漢字変換が動かないことがある。そんな場合は

画面右上のステータス・バーの右端で入力を切り替える。

アプリケーション
 システムツール
  設定で
言語と地域を選択し、入力ソースに、「日本語(xxx)」とかをメモって
再登録する。

とかショック療法が効くらしい。



GTX 1650

Core2Duo用のお手軽なDDR2メモリが見当たらなかったので、
外部電源不要な割に使えるグラボGTX750Ti(2GB)の代わりとして
VD6937 ZOTAC/PCP ZT-T16500F-10L (4GB) 16K円(税込)に変えてみた。

まぁまぁ稼いでくれそうである

ではFF14ベンチはどうかな

i5-9400F(16GB)+GTX1650(4GB)+SSD(m.2 NVMe)は、なかなか。
i7-3770T(16GB)+GTX-1060(6GB)+SSD(SATA3)は、ちょっと限界が見えてきたかも。

FF14はCPU性能がそれなりにスコアに反映されるので、純粋にグラボの性能の比較ではないが、1万円台のCPUとグラボを組合わせのサブPCが、9年前の3万円台のCPUと型落ちのグラボなメインPCよりスコアが良いのは、隔世感があり、なかなか良かった。

特にm.2(NVMe)のせいで、ロード時間が倍速になっている!

そろそろ棚に置きっぱなしのサブPCに移行してもいい頃合いの様だ。(大笑

あ、そうそうファンが1つなんでFolding@home中はまぁまぁな音が出るので、ITXでもツインファンの方がいいかも。

あ、どっちもFolding@homeが裏で動きっぱなしだったので取り直し。

i5-9400F(16GB)+GTX1650(4GB)+SSD(m.2 NVMe)、ローディング時間は14.951sec
i7-3770T(16GB)+GTX-1060(6GB)+SSD(SATA3)、ローディング時間は24.928sec

どっちも1万越えましたね。しかも僅差。微妙。



Folding@home

いつも見てるyoutoberがチームを作ってたのでチョット参加してみた。

G3900 CPUのスレッドは2個しかないので、
1日の貢献度 1496(予想)

プロジェクト14339は、武漢肺炎ウイルス(WHOで云うCOVID-19)の研究らしい。

i7-3770T + GTX1060

i7-3770T + GTX1060 の方がなかなか始まらない。
でも暫くすると・・・

GTXのCudaの行列に並んでしまった様だ。

1日の貢献度 72553(予想)

GPUを何に使っているかは不明。

ではこの2台で、ドレくらい貢献差があるのだろう?
G3900が、1500とGTX1060が72,500。

CPUとGPU(Cuda)の性能差がありすぎ(笑)

時間が経って3770の方も何やってるのか表示されるいようになった。

i7-3770T
GTX1060

i7-3770Tが72553だったのはガセでたったの2547でした。

ps. 未だに登録したチームには名前が載らないので、passkeyを取得し設定したら30,000あったポイントがリセットされました。

そのせいか?貰えるポイント数が1桁増えた気がします。

ps. リモート監視について、
Advanced Controleからリモート監視の設定ができます。

まずはリモートのPCで

WindowsのインジケータのFolding Activeから開く
とりあえずパスワード
パスワード付きのAllowに192.168.x.0/24とか追記 xはLANの状況で変わる

【Save】で設定は変えられるけど、読み込ませるためにWindowsのインジケータのFolding ActiveをQuitして、デスクトップのアイコンから再起動しないといけない。

さっきの設定でミスると、自分のPCの状況がAdvanced Controlerから見えなくなることがある。その場合は、C:\{ユーザ}\AppData\Roaming\FAHClient\config.xmlをsample-config.xmlを参考にエディタで直し、再びWindowsのインジケータのFolding ActiveでQuitして再起動しなおしAdvanced Controlerで状態が見れることを確認する。

続いて。自分のPCでAdvanced Controleを開き、

下の【Add】で監視先を追加

監視するPCを追加する。
上の図は既に追加済みの状態だな・・・

相手のIPアドレスとパスワードを設定して【Save】

StatusがOnlineではなくConnectingになる場合は、設定ミスかセキュリティソフトにfahcontole.exeが他のPCと通信できる様に設定が必要になるかもしれない。

インストーラはここまでは設定を入れてくれないからので追加した

これで離れたPCをFolding@homeに参加させっぱなしで寝てしまう問題は解消できるハズ。(笑)

ps.2 メインPCだけだと思ってSTOPにしてなかったらクレジットが50万を越えていた。今月の電気代が心配だ。

ps.
ずーっとPCを点けてるとファンが全力で回り続けるので音が大きい。
試しにGPUのみにしたら結構静かになった。intelのオマケのCPUファンは全開するとうるさい様だ。

ps.
しかし、CPUを外したままにすると、全くタスクが割り当てられなくなったりすることもあるので、元に戻す。

ついに300万台
RankRank
in term
NamePointsWork Unit
59,33779Slanirish6,289,562206
チーム内(4月末)
こんな感じで4月終了
WU200のままだけど


Core 2 Duo E8400

Windows10でまだ動くけどもっさりしている。

マザボはASUSTek P5QPL-AM

チップセットはG41。

BIOSが0408 (03/16/2010)

メモリはDDR2 2GB×2枚。PC2-6400で400MHz動作。※クロック×2動作なので実質800MHz。

グラボはRadeon HD5670、VRAMは512MB。

マザボの情報では

メモリ DDR2 1066(O.C.)/800/667
2スロット 最大8GB

なので、メモリ次第ではまだいけるかもしれない。

PIN入力までの時間が長いし、Windows Updateが非常に時間がかかる。 メモリを8GBにしても、SATA3.0G接続だからHDDをSSDに変えてもダメかな。

手元に古いSSD(SAMSUNG MZ-5PA064A)64GBがあったので、HDDをバックアップしたら差し替えてみよう。しかし、古いマザボなんでLANポートが100Mbpsで転送レートが11Mbps。※後期には1Gbpsになったのかと思ったらLANケーブルが100Mbpsだった。しかし、 古いマザボなんで USBは全て2なので、USB接続しても10Mbpsかな。

やっとバックアップを終え、SSDに取り換えて再インスト。

元が遅すぎたから比較すると非常に速く思える。ボタンを押すとスグPIN入力できる様になるのは凄いと思ったが、 CPUクロックのアクセルをベタ踏み状態なせいであり、やはりi-3770Tに比べれば重い処理は明らかに遅い。また64GBでは1909へのアップグレードの際に空き容量が不足してインストール0%まま待機してしまうので、ディスクのツールからWindowsUpdate関連のバックアップや配信等を削除しないといけなくなるので、128GB以上のSSDか、空き容量が30GBくらいあるUSBメモリを挿しておくと良いだろう。

ま、このPCはCore2Duo耐久テスト用なのでこのままでいいか(笑)

1909の最後の「更新プログラムを構成しています xx%」が1時間ペースなので、いつか中古のDDR2の4GBを2枚見つけて増設し性能UPするのか見てみたい。(爆笑

1909にアップグレードするとネットワークのファイアウォールがパブリックになったり。ファイルの共通や検索が無効になってたり、リモートデスクトップがOFFに変わったりすることがある。またPCによってどの現象が起きるかは判らないので、モニタとキーボードを繋いでからやった方が良さげ。
※本当にバラバラな結果だったので本当に困ったw




top