変奏現実

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

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

パソコン

[Visual Studio Code]node.js デバッグ

サーバで、foreverをグローバルでインストールしコマンドラインから使える様にする。

$ npm install forever -g
$ forever --version
v3.0.0

デバッグの準備

$ cd {node.jsアプリのフォルダ}
$ forever -c 'node --inspect=0.0.0.0:9229' app.js
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
Debugger listening on ws://0.0.0.0:9229/ad7164d6-5cb7-43bb-9585-7c95c6d24e28
For help, see: https://nodejs.org/en/docs/inspector

アプリがlisenに成功したら標準出力に
app listening on port http://{サーバー名}:{ポート} !
と表示させると便利。

Visual Studio Code の方の「実行」⇒「構成の追加」から
{} Node.js :Attach to remote program を選択し
lanuch.jsに追加されたブロックに
 ”address”: {サーバ名}
 ”port”: 9229
と編集して、【実行】すると、

(node:22749) [INSPECTOR_ASYNC_STACK_TRACES_NOT_AVAILABLE] Warning: Warning: Async stack traces in debugger are not available on 32bit platforms. The feature is disabled.

と出てくるので、lanuch.jsのAttach to remote programに設定を追加。

"showAsyncStacks": false

適当にソースでブレークポイントも追加しても〇になるので無効。
しかし、アプリの出力はサーバーのコンソールとデバッグコンソールの両方に表示され、VSCから再起動も出来る。

デバッグコンソールに何故かconsole.logしたソースのリンクが貼ってある。

これをクリックするとデバッグ中のプロセスと連携しているソースが表示されるので、ブレークポイントを設定できる。

しかし、次にその場所に来た場合に一時停止になる仕組みなので、
事前にブレークポイントを設定して実行!という訳にはいかないが、大抵のことはコレで十分だろう。

VSCからまだコミットが出来ないので git push も変だ。

OpenSSH Authentication Agentを自動起動
> ssh-agent
> ssh-add
Enter passphrase for C:\Users\***/.ssh/id_rsa: {パスワード}
Identity added: C:\Users\***/.ssh/id_rsa (***@********)

まですると、コマンドラインからは git pushできる。
VSCは待機中になってしまう。



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



ThinkCentre M75q-1 Tiny:価格.com限定 パフォーマンス

ThinkCentre M75q-1 Tiny:価格.com限定 パフォーマンス

もう無くなってると思ったら、まだ売っていた。

このページの「直販モデル」のタグをクリック

価格.comパフォーマンスの列の下の方の「カスタマイズ」をクリック

HDDが「なし」になっているので1TBを選択する。

SDDを無しにする。

メモリは8GB1枚になっていることを確認する。増設するなら4GBx2は不可。

どうでもいいオプションは全部「なし」にする。

で土曜日のせいか3.2万円ぐらいになった。

あとは、

SO-DIMM DDR4 2666MHz 8GB, PCI接続のSSD NVMeの256 GBを別のショップで購入すればいいハズ。

PCが届いたら、Windows10をセットアップ。

Windowsが認証済みになっていることを確認。

USBメモリに回復ドライブを作成。

メモリとSSDが届いたら、 PCの裏蓋を開けて を取り付ける。

SSDの中は空っぽなので、USBメモリからWindows10をインスト。

参考:youtobe 【PC】なんとコンパクトな新品パソコンが3.3万円で買える!(RYZEN5搭載)

でも、ボクは買ってないよ。



[UEFI] 電源復旧後の設定

停電の後、勝手にPCが起動しても都合が悪いので

大抵はパワーオフにしている。

※但し、自宅サーバを除く。

本当は

  • UPSで停電発生時に自動的にシャットダウン。
  • 電源復旧後に自動的にPCが起動する。

と出来るといいが、

そんなことができるUPSやUPSのアプリが

本当に見当たらない。



[VSCode]Python, pytest

Visual Studio Code で Pythonのソースを実行する手順

1.VisualStudioCodeをインストールする。

https://azure.microsoft.com/ja-jp/products/visual-studio-code/ から
ダウンロードして、インスト。

日本語化する。

メニューのView Command Paletteを選択
[Configure Display Language]と入力
プルダウンリストから[Install additional Language…]を選択
画面左のEXTENSIONS: MARKETPLACEから
[Japanese Language Pack for VS Code]を選択
画面右の[Japanese Language Pack for VS Code]の説明下の【install】を押す
画面左下の【Restart Now】を押す
多々変なトコロもあるけど、タダだから仕方が無い

2.適当な場所にフォルダを作り、Pythonのソースを入れておく。

参考:https://scrapbox.io/remi-tech/VisualStudioCode%E3%81%A7pytest%E7%92%B0%E5%A2%83%E3%82%92%E4%BD%9C%E3%82%8B

E:\pythonProject
 │- sample.py
 │- pytest.ini
 └─tests
      └─ test_sample.py
def func1(para) :
    print("func1")
    return "func1_" + para

def func2(para) :
    print("func2")
    return "func2_" + para
# pytest用

import os
import sys
sys.path.append(os.getcwd())
import sample

class Test_sample :
    def test_sample_func1(self) :
        assert sample.func1("aaa") == "func1_aaa"
        
    def test_sample_func2(self) :
        assert sample.func2("aaa") == "func2_aaa"
       
[pytest]
testpaths = ./tests
python_files = test_*.py
python_classes = Test
python_functions = test_

3.ワークスペースに上記のフォルダを追加する。

メニューの【フォルダーの追加】を押す
追加するフォルダを開いたら【追加】を押す
無事に目的のフォルダが追加された
壊さないうちにワークスペースとして保存してしまおう
勿論ワークスペース設定ファイルは先のフォルダの中に作る
とりあえずOK

3.Pythonの環境作り

・Windows StoreからPython3.8をインスト。
※本来Python3.xのインストールはOSやCPUの特性を詳細に調査しgccのConfigure(中身はPython2のソース)を熟読してオプションを探り出してビルドの後のTestモードの結果を見て何度もウンザリするものだが、Windowsはその辺の選択肢が一つしかないから世界中の誰かが成功すればもうその人の設定をコピペするだけでOK(逆算的に容易)であり、今ではベンダーのHPにもインストーラが用意されている。

ところが、
> python
指定されたプログラムは実行できません。
となる、これはPATH環境変数にプログラムのパスが通っていないせい。

コントロールパネル⇒システムとセキュリティ⇒システム
システムの詳細設定の【環境変数(N)…】を押す
システム環境変数(S)のPathを選択し【編集(I)…】を押す
設定内容の最後にコマンドラインで
> where python
の結果
C:\Users\ユーザ名\AppData\Local\Microsoft\WindowsApps\python.exe
のファイル名のフルパスのフォルダ名を入れる
※ C:\Users\ユーザ名\AppData\Local\Microsoft\WindowsApps

・VSCodeのエクスプローラのpythonのソースをクリックしてみると、

【Install】を押す
少し待つと、自動的にpython(の何か)がインストールされる

その↓の説明通りデバッグビューを経由して設定を進める

※スクショ上書きして消えたけど、確か「Python」 を選択したハズ。

設定が終わったら、緑の▷を押すと実行する。

4.pytestを設定する

インスト中、3.8だとアップグレード要求が出る

> python -m pip install –upgrade pip するとpipがアップグレードされる

ここまで進むとテストビューが出てくる。
出なければpythonソースを右クリックして「全ての単体テストを実行」を選択

Discover Testを押してテストソースを探させよう!

ここで、発見できない場合は、画面の左下の「出力」に原因が出る。
大体はテストソースの何かのエラーだ。

os.cwd()は間違い os.getcwd()が正解
実行してみよう!
うまくいった!!!

あ、vscodeやpipのリポジトリィも一旦消しといた方がいいね。

vscodeの場合は、C:\Users\ユーザ名\.vscode フォルダを消す。

pipの場合は、C:\Users\slani\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.*_************
※ * 部分はインストするマイナーバージョンやランダム文字

ps.

{
	"folders": [
		{
			"path": "."
		}
	],
	"settings": {}
}
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
}
{
    "python.pythonPath": "C:\\Users\\{ユーザ名}\\AppData\\Local\\Microsoft\\WindowsApps\\python3.8.exe",
    "python.testing.pytestArgs": [
        "tests"
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.pytestEnabled": true
}

では、なぜこんな記事を書いたのかと云うと・・・今朝方、仕事場の開発環境がぶっ飛んだから、予算の都合で非力なマシンになってしまったので試行錯誤するとむやみに時間だけが過ぎ去っていくので家に戻って準備した。
これを見れば、あの非力なマシンでも1時間もあれば余裕のハズ。(涙

ps.
VScodeではソースを修正すると改行コードがCR・LFとLFが混在することがある。この場合、見た目は問題無いソースだけどCRのせいで行が繋がって見えるらしく、イミフなインデントエラーが出ることがある。

def func1() CRLF
    """CRLF
    コメントLF
    """LF
※コメントは宣言されていない変数です。等


エディタ右下がCRLF表示になっている時は特に危ない。

{
// エディター設定
"editor.tabSize": 4,
"editor.insertSpaces": true, // Tabキーで半角空白
// ファイル設定
"files.autoSave": "off", //VScodeを閉じている間に他のエディタでソースを開くと変なことになりやすいのでOFF
"files.eol": "\n",  // 改行コードをLFにする
}

と強制的にLFしたりTABも空白になる様に仕向けないといけないようだ。

多分、改行コードのせいなのだろう。沢山のpytestのテスト関数を全部実行したらいくつかNGになった。しかし、1つづつ実行するとOK。
こんな時は大方は初期化処理が他のテスト関数と競合していたり依存しているためだ。
そのため、
def Test_xxxxx を def __Test_xxxxx と変えてpytestをやり過ごし、少しづつ戻していって、馬鹿な間違いをしているコードをあぶりだそうとした。

しかし、その結果。全て戻したら、ALL GREENになってしまった。
エディタが何かやらかしたらしい。もし幅0空白とか見えない文字だったら勘弁だ。

結果オーライでいいんだけど、再現したら泣きそうだ。

ここまで気を使わないといけないCompute言語なら・・・
Pythonなんて無くなってしまえ!
と素直に思う。

マネーをケチれば、 等価交換に則り、時間が足りなくなるのは必然である。

Slanirish Warlander



[Thermaltale]Versa H26

Core i7-3770TのATXケースの電源スイッチが壊れて久しい。
外付け電源スイッチで間に合わせてたけど、安いケースがあったのでポチった。

Thermaltake Versa H26 Black /w casefan ミドルタワー型PCケース [ブラックモデル] CS7070 CA-1J5-00M1WN-01 時価¥ 4,162

やはりデカイ。

入れ替え完了。

このケースにはファンは2つ付いてるが、マザボにはシステムファンのコネクタは1つしかない。

二股ケーブルを探すか

左側面のアクリル板の擦り加工が濃すぎて中が見えないなぁ~と思ったら両面に保護シートが貼ってあった。剥がしてみるとスケスケ、少しスモークが掛ってる方がいいかな。

上面のメッシュはゴム磁石で固定。PCでフロッピーディスクを使っていた頃はPCに磁石は大敵だったなぁ。




top