未分類

なるほど、なるほど、 ―― 「侍タイムスリッパー」を見た感想です。

Amazon Primeに、昨日から来ているのを見ました。

多分、ここから始まる地獄の半年の最後の休憩時間と考えて、部屋の暗くして、嫁さんと二人でリビングのテレビでソファーで観賞しました。

-----

今、宣伝用のページを見ているのですけど、『ああ、ここには書かれていないんだ』と分かりました。

私の記憶している限り、2回、驚かされるストーリー展開(転換)があります(ネタバレになるので書きませんが)。

自信をもって、お勧めできる映画です。

少なくとも、単なる「笑い」の映画ではなく、私には、本当に、真剣に、真面目に、『良い映画』でした。

未分類

「その着せ替え人形は恋をする」を読了して、コスプレという文化と技術とコスプレに傾倒する人たちの熱意とかを知ることができました。このようにコミックによって、サブカルそのものを理解できなくても、サブカルを『分かったような気にはなれる』と思いました。
サブカルに限らず、このような表現文化に関するマンガ、その他のメディアについて、ピックアックして頂き、その文化と技術と傾倒する人たちの熱意について、一覧で纒めて頂きたいです。

承知しました。以下に、先ほどの表現文化系に加えて「スポーツ」を描いたマンガを含めた一覧をアップデートしました。野球・サッカーはそれぞれ1作品のみに絞り、あまり知られていない競技(相撲・アーチェリー・スケートなど)を中心にピックアップしています。


表現文化・スポーツを描いたマンガ・メディア一覧

(文化・技術・情熱に注目)

作品名 扱っている文化/競技 技術的要素 登場人物たちの熱意・姿勢
その着せ替え人形は恋をする コスプレ、衣装制作 裁縫、メイク、造形、ウィッグ 創作を通じた自分らしさの追求と他者尊重
アクタージュ act-age 演技、舞台・映画 感情表現、演技法、舞台理解 自己内面と演技を繋げる研ぎ澄まされた集中
映像研には手を出すな! アニメ制作 絵コンテ、演出設計、世界観構築 想像力を具現化することへの純粋な渇望
重版出来! 出版・編集 取材、企画力、マンガ制作進行 マンガという文化を世に届ける使命感
げんしけん オタク文化全般 同人誌、イベント、考察 サブカルに対する深い知識と共有の喜び
バクマン。 マンガ制作 ネーム、作画、プロ意識 少年の夢を現実にするための試行錯誤と覚悟
ちはやふる 競技かるた 和歌暗記、反射、心理戦 伝統文化を「勝負」に昇華させる集中力
ランウェイで笑って モデル・服飾 ファッション構成、表現力 身体的ハードルを越える努力と夢への執念
ボールルームへようこそ 社交ダンス ステップ技術、ペアの呼吸、審査基準 表現と競技の融合を極める覚悟
火ノ丸相撲 相撲 組み手、体重コントロール、精神修行 小兵が巨漢に挑む意志と日本文化の継承
弓道士魂 弓玄(きゅうげん) 弓道 射法八節、集中、姿勢の美しさ 無心の精神と精度への執念
スピナマラダ! アイスホッケー スケート技術、パス、戦術 東北を舞台にした熱血かつ泥臭い成長劇
ノーコン・キッド 卓球 サーブ、ラリー、台上技術 地味な競技に魂を燃やす高校生たちの青春
BAMBOO BLADE 剣道 構え、打突、間合い チームとの絆と勝利への葛藤
あさひなぐ 薙刀 構え、打突、礼節 女子ならではの精神的・技術的成長物語
群青にサイレン 野球 バッテリー、心理戦 心の葛藤を抱えながらも頂点を目指す兄弟
DAYS サッカー ドリブル、連携、気持ち 才能よりも“努力”で這い上がる物語
銀盤カレイドスコープ フィギュアスケート ジャンプ、表現力、演技構成点 表現と技術の両立に悩む選手の成長譚
ツルモク独身寮 家具職人 木工加工、設計、美的センス 若者たちの手仕事への矜持と熱意(番外的だが技術職マンガとして)

ご覧のとおり、スポーツといっても「競技」だけでなく、「表現」や「精神性」が求められるものが多く、文化と地続きです。相撲や弓道、薙刀のような日本伝統の身体文化にも熱い想いが描かれています。

今回の私の質問の意図は、「サブカルであれマイナーなスポーツであれ、それを知ろうという行動を起こすことなく、批判しているヤツは『バカ』と断言して良い」、ということです。

未分類

VSCodeでC言語のインデントをGo言語のようにTABキーで自動的に整える方法を説明します。

1. C/C++拡張機能をインストール

まず、MicrosoftのC/C++拡張機能がインストールされているか確認してください。

  • VSCodeの「拡張機能」 (Ctrl+Shift+X) で「C/C++」を検索
  • ms-vscode.cpptools をインストール

2. settings.json を作成

.vscode フォルダの中に settings.json を作成します。

方法1: VSCodeのGUIを使う

  1. .vscode フォルダ内で 右クリック → 新しいファイル
  2. ファイル名を settings.json にする

3. settings.json に設定を追加

作成した settings.json を開いて、以下の内容を記述します。

{
  "editor.formatOnType": true,  // セミコロンや波括弧入力時に自動フォーマット
  "editor.formatOnSave": true,  // 保存時に自動フォーマット
  "editor.tabSize": 4,          // タブ幅を4に設定
  "editor.insertSpaces": false,  // タブをスペースに変換しない
  "C_Cpp.clang_format_fallbackStyle": "Google", 
  "C_Cpp.clang_format_style": "{ BasedOnStyle: Google, IndentWidth: 4, UseTab: Always }"
}

4. Emacsキーバインドを使いつつTABの動作を変更

Emacsのキーバインドを保持したままTABの動作だけ修正したい場合、keybindings.json でTABキーの挙動を変更できます。

設定方法

  1. Ctrl+Shift+P「Preferences: Open Keyboard Shortcuts (JSON)」 を検索
  2. keybindings.json を開く
  3. 以下の設定を追加:
    [
      {
        "key": "tab",
        "command": "editor.action.reindentlines",
        "when": "editorTextFocus"
      }
    ]
    
    

    これで、私の環境の方では何とか動いたようです。

[.vscode/c_cpp_properties.json]

{
	"configurations": [
		{
			"name": "Win32",
			"includePath": [
				"${workspaceFolder}/**",
				"C:/msys64/mingw64/include"
			],
			"defines": [
				"_DEBUG",
				"UNICODE",
				"_UNICODE"
			],
			"windowsSdkVersion": "10.0.22621.0",
			"compilerPath": "C:/msys64/mingw64/bin/gcc.exe",
			"cStandard": "c17",
			"cppStandard": "c++17",
			"intelliSenseMode": "windows-gcc-x64"
		}
	],
	"version": 4
}

[.vscode/launch.json]

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cデバッグ (MinGW64)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "gdb を有効化",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe"
        }
    ]
}

[.vscode/settings.json]

{
	"editor.formatOnType": true, // セミコロンや波括弧入力時に自動フォーマット
	"editor.formatOnSave": true, // 保存時に自動フォーマット
	"editor.tabSize": 4, // タブ幅を4に設定
	"editor.insertSpaces": false, // タブをスペースに変換しない
	"C_Cpp.clang_format_fallbackStyle": "Google",
	"C_Cpp.clang_format_style": "{ BasedOnStyle: Google, IndentWidth: 4, UseTab: Always }"
}

[.vscode/tasks.json]

{
	"version": "2.0.0",
	"tasks": [
		{
			"label": "Cコンパイル (MinGW64)",
			"type": "shell",
			"command": "C:/msys64/mingw64/bin/gcc",
			"args": [
				"-g",
				"${file}",
				"-o",
				"${fileDirname}/${fileBasenameNoExtension}.exe"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"problemMatcher": [
				"$gcc"
			],
			"detail": "MSYS2 MinGW64 の GCC を使用して C をコンパイル"
		}
	]
}

作成したCファイルをアクティブにし、Ctrl + Shift + B を押してビルドタスクを実行したあと、vscodeのデバッグができるようです。

未分類

「なんでC言語のスレッドとする関数の引数は、構造体渡しにしなければならないのでしょうか?」と泣き言を言ってみました。

すでに他のサブシステムでがんじがらめになったCのプログラムでは、トレースが使えないので、デバッグはログに吐き出しながらの作業になります。

これが、結構な地獄で、つい先刻、改造したスレッドの稼動を確認できたのですが、愚痴がいいたくなりました(例えば、GO言語のGoroutineなんか、めちゃくちゃ簡単にスレッド作れる)。

ーーーーー ChatGPTの回答ここから ーーーーー

C言語のスレッド関数 (pthread_create() で実行する関数) の引数として 構造体を渡すのが一般的 なのは、以下の 4つの理由 によります。


1. pthread_create() の仕様

pthread_create() のスレッド関数(スレッドのエントリポイント)には、単一の void* 型の引数 を受け取る関数を渡す必要があります。

pthread_create() のプロトタイプ

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine)(void *), void *arg);
  • start_routinevoid *arg という 単一の引数 を受け取る関数。
  • arg に渡せるのは ポインタのみ

つまり、スレッドに複数のデータを渡したい場合、
1つの void* にまとめる必要がある構造体で渡すのが一般的 ということになります。


2. 複数のデータを渡したい

スレッド関数で処理するのに 複数の引数(変数)を渡したい ことがよくあります。

例えば:

void *my_thread_func(void *arg) {
int *num = (int *)arg;
printf("Received number: %d\n", *num);
return NULL;
}

では、int の値しか渡せません。

もし 複数の値を渡したい場合

typedef struct {
int id;
double value;
} ThreadArgs;
void *my_thread_func(void *arg) {
ThreadArgs *args = (ThreadArgs *)arg;
printf("ID: %d, Value: %f\n", args->id, args->value);
return NULL;
}

このように、構造体を使えば複数の値をまとめて渡せる ので便利です。


3. スレッドの実行中に変数が消えないようにする

スレッド関数に渡す引数は、スレッドが終了するまで有効 でなければなりません。

例えば:

int num = 42;
pthread_create(&thread, NULL, my_thread_func, &num);

この場合、もし num がローカル変数で main() の実行が終了すると、
そのメモリが解放されてしまい、スレッド関数内で num を使うと 未定義動作 になります。

解決策

  • malloc() で確保して pthread_create() に渡す。
  • 構造体にして必要なデータを安全に渡す
ThreadArgs *args = malloc(sizeof(ThreadArgs));
args->id = 1;
args->value = 3.14;
pthread_create(&thread, NULL, my_thread_func, (void *)args);

こうすれば、スレッドが終了するまで args は有効になります。


4. スレッドごとに異なるデータを渡せる

スレッドを複数作成する場合、それぞれ異なるデータを渡すことが多い。

例えば、複数のスレッドに異なる ID を渡す場合:

ThreadArgs args[3];

for (int i = 0; i < 3; i++) {
args[i].id = i;
args[i].value = i * 1.1;
pthread_create(&threads[i], NULL, my_thread_func, &args[i]);
}

構造体なら、スレッドごとに異なるデータを安全に管理できる


結論

  • pthread_create()1つの void* しか渡せない複数の値を渡すには構造体が便利
  • スレッド実行中に変数が消えると 未定義動作ヒープ領域に確保すれば安全
  • 複数のスレッドに異なるデータを渡すのに構造体が適している

C言語のスレッドの引数は、構造体を渡すのが基本になる

ーーーーー ChatGPTの回答ここまで ーーーーー

まあ、そりゃそうなんだろうけどさ(そして、私としても、今さら仕様を変えられても困るんだけどさ)。でも構造体の引数に構造体が入ってくる場合、ポインタの記載方法で大混乱するんだよね。スレッド内部で構造体の分解も必要になるし。

-----

ところで、今なお、「プログラマーが好むプログラム言語」などという見出しの記事が散見されます。

開発するソフトウェアの内容によって、選ばれるプログラム言語は変ります。

ダムの掘削するのに「シャベル」を選ぶことはできませんし、家庭菜園をするのに「シャベルカー」を持ち込むことはできません。

プロのプログラマーなら、「シャベル」も「シャベルカー」も使えなければなりません。必要なら新しいプログラム言語を勉強して、仕事をしなければならないんです。

「プログラマーが好むプログラム言語」という考え方が、一体どこからやってくるのか、私は今でも分からないです。

「プログラマーが好むプログラム言語」などという、アホな内容の記事が散見されるのは何故でしょうか。見解を聞かせて下さい

ーーーーー ChatGPTの回答ここから ーーーーー

「プログラマーが好むプログラム言語」系の記事が散見される理由は、以下のような要因が考えられます。

  1. 簡単にウケるネタだから
    プログラム言語の人気ランキングや「初心者向け」「稼げる言語」といったテーマは、プログラマーだけでなく、これから学ぼうとする人や経営層にも関心を持たれやすい。専門知識がなくても理解しやすいため、記事として書きやすく、アクセスを稼ぎやすい。

  2. 宗教戦争を煽ると盛り上がる
    プログラマーには、それぞれ慣れ親しんだ言語やこだわりがあるため、「○○言語が最強!」といった記事を出せば議論が活発になり、SNSや掲示板で拡散される。結果として、PV(ページビュー)やエンゲージメントが向上し、メディア側の利益につながる。

  3. 技術を知らない人でも書けるから
    プログラミングの実務に詳しくないライターでも、「流行りの言語ランキング」「人気の言語トップ10」といった記事なら、調査や寄せ集めで簡単に書ける。しかも、明確な正解がないため、適当にデータを並べるだけでも成立する。

  4. 初心者や未経験者向けの情報が求められている
    現場のエンジニアにとっては無意味な話でも、これからプログラミングを学ぼうとする人には「どの言語を学べばいいか」という関心がある。需要がある以上、供給され続ける。

  5. 技術選定の本質を理解していない層が多い
    本来、プログラム言語は開発するソフトウェアの要件や環境、チームのスキルセットに応じて選ばれるべきもの。しかし、「言語そのものの優劣」や「人気」だけで語ろうとする風潮が根強く、それに迎合した記事が多くなる。

結局のところ、**「簡単に書けて、簡単にウケて、簡単に拡散される」**から、この手の記事が量産されるわけです。

ーーーーー ChatGPTの回答ここまで ーーーーー

ChatGPTも、なかなか語りますね。

 

未分類

「上級国民」という言葉の意味が分からなかったので、ChatGPTに聞いてみました。

「上級国民」という言葉の意味が分かりません。定義して下さい

「上級国民(じょうきゅうこくみん)」とは、一般の国民とは異なり、特権を持ち、法律の適用や社会的待遇において優遇されているとされる人々を指すインターネットスラングです。

私は、特権を持たず、法律の適用や社会的待遇において優遇されていないです。私は「上級国民」という言葉に対して、何国民と称呼されるでしょうか(もちろん真面目な回答ではなく、皮肉な回答をお願いします)

それなら、「一般国民」とか「下級国民」なんて呼ばれるかもしれませんね(笑)。ネットの皮肉っぽい表現を使うなら、

  • 「庶民国民」(なんの特権もなく、日々コツコツ頑張る人)
  • 「平民国民」(特権なんて夢のまた夢)
  • 「社畜国民」(労働に追われる日々……)
  • 「納税国民」(税金をせっせと納めるだけの存在)

なんてのもありそうですね。
まあ、「上級国民」って言葉自体が皮肉なので、それに対する呼び方もだいたい自虐的なニュアンスになりますね

未分類

■カードリーダーが使えなくなっていた

SCR3310-NTTCom は既に販売終了しており、公式のドライバ提供も終了しているため、新規の利用や再インストールは実質的に不可能
→ 同じWindowsで、その途中からハードウェアが使えなくなる、というケースを考えたことがなかったので、これに気がつくのに、随分時間を使ってしまった。

■カードリーダーの購入検討と購入

比較表

製品名 価格 (目安) 主要特徴 対応OS 推奨用途
SCR3310v2.0 約2,300~3,000円 NTTコミュニケーションズ製、業務用途でも使用実績あり Windows, macOS 業務用途や安定性重視
アイ・オー・データ USB-ICCRW2 約2,000円 ドライバ不要、マイナンバー対応 Windows, macOS 家庭用で手軽に使いたい
ゴッパ GP-ICCR 約1,500円 最安クラス、コンパクトサイズ Windows, macOS コスト最重視
サンワサプライ ADR-MNICU2 約1,800円 ドライバ不要、USBバスパワー駆動 Windows, macOS 簡単に使いたいが安定性も求める

Amazonで即日入荷で、ドライバ不要 という観点から、サンワサプライ ADR-MNICU2 に決定。

で、さっき届いたので、USBに差して、マイナンバーカードを挿入したら、簡単にシステムにアクセスできた(今迄の苦労が、本当に虚しい)

■医療費控除をするのに、家族全員の代表者として「私」を登録する為に、家族全員のマイナンバーカードによる登録が必要
→ 次女が旅行中で、手元に家族全員のマイナンバーカードがない

#昨年まで、こういう『代表者登録』しなくてよかったんだけどな

#まあ、こういう代表者を悪用する「バカ」が不正な医療費控除を受けようとした、などの事件が発生したんだろう、と思う。

-----

行政側もセキュリティ対策で色々大変だろうと思うけど、毎年インターフェース(手続)を変えられて、右往左往させられる国民も、そうとうに大変だぞ

この、インターフェース変更は、これからも、毎年ずっと続いていくのだろう、と思うと ――

正直、(システムエンジニアである、私でさえも)『デジタル化、もういい』という気持ちになります

 

 

未分類

今週の「坂の上の雲(再放送)」の、この部分を20回ほど見直して、ようやく分かってきました。

Step 1 : 日本海軍の戦艦が、大きなUターンをするこによって、ロシア艦隊が「一列」になって攻撃を開始(この間、日本側は回頭中のため、一切反撃できず)
Step 2: 一列になってしまったロシア艦隊の目の前に、日本艦隊が集結
Step 3: 日本艦隊が一斉砲撃で、一列になったロシア艦隊を先頭から一つづつ潰していく

下図は、NHKのテレビ画面のキャプチャに、江端が図を追記したもの

 

ポイントは3点

(1)ロシア艦隊を1列にする必要があり、その為に、あえて直前での大Uターンを実施
(2)1列になったロシア艦隊の直前に、できるだけ早く日本艦隊を結集させる
(3)一列になったロシア艦隊を、ひとつづつを、一斉砲撃で潰す

YouTubeとか見れば、正解が分かるかもしれませんが、まずこの図面(とそこに記載された時刻だけ)から、上記を導いてみました。
答合わせは、後でやってみます。

未分類

BIOS画面をいじるのは怖いので、Ryzen Controllerを使おうとう思うのですが、良いでしょうか

Ryzen Controller を使って TDP を制限するのは安全な方法なので、問題ありません。
BIOS設定を変更するよりリスクが低く、手軽にTDP制限を適用できるのでおすすめ です。


✅ Ryzen Controller の使用手順

1. Ryzen Controller をダウンロード

公式サイトから最新版を取得: 👉 Ryzen Controller公式サイト

  1. 「Download」ボタンをクリック
  2. インストールファイル (Ryzen Controller.exe) をダウンロード
  3. インストール後、管理者権限で実行

2. TDP制限の設定

(1) 「Power and Temperature」 タブを開く

  • 「PPT (Package Power Tracking)」を 35W に変更
  • 「TDC (Thermal Design Current)」を 25A に変更
  • 「EDC (Electrical Design Current)」を 50A に変更
  • 「Temperature Limit」を 85℃以下 に設定(温度制限)

(2) 「Apply」ボタンを押す

  • すぐに適用され、PCの発熱が抑えられる。

(3) 自動適用設定

Ryzen ControllerはデフォルトではPC再起動時に設定がリセットされるため、自動適用の設定を行う。

  1. 「Auto-start」機能を有効にする
    • 「Enable Auto-Start」オプションをON
    • Windows起動時に自動で設定を適用。

3. TDP制限が適用されたか確認

設定が適用されたかどうかをチェックする。

(1) HWiNFOで確認

  1. HWiNFO をダウンロード・起動
    👉 HWiNFO公式サイト
  2. 「CPU Package Power (PPT)」 の値が 35W前後になっているか 確認

(2) Ryzen Master で確認

  1. AMD Ryzen Master をダウンロード・起動
    👉 AMD公式ダウンロードページ
  2. PPTの最大値が 35W に制限されているか確認

4. パフォーマンス影響のチェック

TDPを35Wに制限すると発熱は抑えられるが、CPU性能も少し下がるため、以下の方法で影響をチェック。

(1) Cinebench R23 でテスト

  1. Cinebench R23 をダウンロード
    👉 Cinebench公式サイト
  2. シングルコア & マルチコアのスコアを測定。
  3. TDP制限前後でスコアを比較

(2) 通常の使用で問題ないか確認

  • 動画再生、Webブラウジング、プログラム開発など、普段の使用で問題がないか確認。

✅ Ryzen Controller を使うメリット

BIOSを変更しないので安全
簡単に設定できる
TDP制限を試して、問題があればすぐ元に戻せる
PCを移動せずに放熱対策ができる


⚠️ Ryzen Controller の注意点

PC再起動時に設定がリセットされるため、Auto-start を有効にすることを推奨
一部のWindowsアップデートで互換性が変わる可能性あり(設定が適用されなくなる場合がある)
100%完全な動作保証はないため、TDP制限後はPCの動作をチェック


✅ 結論

BIOSをいじるのが怖いなら、Ryzen Controller を使うのは良い選択。
TDPを35Wに制限することで、発熱を抑えながらPCを安定させられる
ソフトウェアなので、いつでも設定を戻せる

まずは Ryzen Controller で PPT = 35W に設定し、負荷テストをしながら安定動作するか確認するのがベスト!

Ryzen Controller Setup 2.5.4.exe をダウンロードしましたが、これで良いでしょうか

はい、Ryzen Controller Setup 2.5.4.exe は最新版の 2.5.4 で問題ありません。
以下の手順でインストールと設定を行ってください。


✅ Ryzen Controller 2.5.4 のインストール手順

1. インストール

  1. Ryzen Controller Setup 2.5.4.exe をダブルクリック
  2. 「Next」ボタンを押してインストールを進める
  3. インストールが完了したら 「Finish」ボタンを押す
  4. 管理者権限で起動(右クリック → 「管理者として実行」

2. TDPを35Wに制限する設定

  1. 「Power and Temperature」 タブを開く
  2. 以下の数値を設定:
    • PPT (Package Power Tracking)35W
    • TDC (Thermal Design Current)25A
    • EDC (Electrical Design Current)50A
    • Temperature Limit85℃以下
  3. 「Apply」ボタンをクリック
  4. 設定が反映されたか確認。

3. 再起動後も設定を維持する

再起動後に設定がリセットされるので、自動適用を有効化する。

  1. 「Auto-Start」機能を有効にする
    • 「Enable Auto-Start」を ON
    • Windows起動時に自動でTDP制限を適用

4. 設定が適用されたか確認

(1) HWiNFO で確認

  1. HWiNFO をダウンロード&起動
    👉 HWiNFO公式サイト
  2. 「CPU Package Power (PPT)」 の値が 35W以下 になっているか確認。

(2) Ryzen Master で確認

  1. AMD Ryzen Master をダウンロード&起動
    👉 AMD公式ダウンロードページ
  2. PPTの最大値が 35W に制限されているか確認

✅ 結論

  • Ryzen Controller 2.5.4 で問題なし!
  • TDPを35Wに制限する設定を行い、Auto-StartをONにする
  • HWiNFO や Ryzen Master で設定が適用されたか確認

この手順で設定すれば、放熱を改善しながらPCを安定動作させることが可能!

Temperature Limit (°C)
CPU TDP (W)
Long Boost Duration
Long Boost TDP (W)
Short Boost Duration
Short Boost TDP (W)

という画面がでています。次にどうすれば良いですか。目標は熱暴走の防止です

✅ Ryzen Controller 2.5.4 の設定手順 (熱暴走防止)

この画面でTDP(消費電力制限)と温度制限を適切に設定することで、熱暴走を防ぎつつパフォーマンスを維持することができます


1. 各パラメータの意味

Ryzen Controller では、以下のパラメータを調整できます。

設定項目 説明
Temperature Limit (°C) 最大CPU温度制限(これを超えると性能を下げる)
CPU TDP (W) 通常時の消費電力制限
Long Boost Duration ブースト持続時間(長時間)
Long Boost TDP (W) 長時間ブースト時の最大TDP
Short Boost Duration 短時間ブースト時間
Short Boost TDP (W) 短時間ブースト時の最大TDP

2. 熱暴走を防ぐための最適設定

以下の設定を入力してください。

  • Temperature Limit (°C)85(安全な範囲、85℃以上でクロックダウン)
  • CPU TDP (W)35(通常時の消費電力を35Wに制限)
  • Long Boost Duration10(ブースト時間を10秒に短縮)
  • Long Boost TDP (W)45(長時間ブースト時の最大消費電力を45Wに制限)
  • Short Boost Duration2(短時間ブーストを2秒に短縮)
  • Short Boost TDP (W)50(瞬間的な最大消費電力を50Wに制限)

3. 設定を適用

  1. 上記の値を入力
  2. 「Apply」ボタンをクリック
  3. 「Enable Auto-Start」を ON(再起動後も設定を維持)
  4. 動作確認のためPCを再起動

4. 設定が適用されたか確認

  1. HWiNFO を使って CPU Package Power が 35W以下に制限されているか確認
  2. Cinebench R23 で負荷テストを実行し、温度が 85℃以下に抑えられているかチェック

✅ 結論

この設定で、通常時の消費電力を35Wに抑えつつ、短時間のブーストを最大50Wまで許容することで、性能を落としすぎずに熱暴走を防ぐことが可能!

 

メニューを叩いてみると、現在値(?)は、上から、85,25,900,25,60,10となっています。

ChatGPT:

現在の設定値(85, 25, 900, 25, 60, 10)を見た限りでは、TDPが 25W に制限されており、かなり低い値になっています。この状態では、パフォーマンスが抑えられすぎている可能性があります。

また、Long Boost Duration (900秒 = 15分) と Short Boost Duration (60秒) が非常に長く設定されており、負荷が高い状態が長く続く可能性があるため、熱暴走を防ぐためにはこれらを短縮する必要があります。


✅ 熱暴走防止のための最適設定

1. 推奨設定

現在の値を 以下の値に変更 してください。

設定項目 変更前 推奨値 説明
Temperature Limit (°C) 85 85 CPUの温度制限(そのままでOK)
CPU TDP (W) 25 35 通常時の最大消費電力を35Wに制限
Long Boost Duration 900 10 長時間ブーストの持続時間を短縮(10秒)
Long Boost TDP (W) 25 45 長時間ブースト時の最大TDPを45Wに
Short Boost Duration 60 2 短時間ブーストを2秒に短縮
Short Boost TDP (W) 10 50 瞬間的な最大消費電力を50Wに

2. 設定手順

  1. 各値を上記の推奨値に変更
  2. 「Apply」ボタンをクリック
  3. 「Enable Auto-Start」を ON(再起動後も設定を維持)
  4. PCを再起動して設定が適用されているか確認

3. 設定適用後の確認

HWiNFO で CPU Package Power が 35W前後になっているかチェック
Cinebench R23 で負荷テストを行い、温度が 85℃以下で安定しているか確認
通常使用で問題がないかテスト(動画再生やWebブラウジングなど)


✅ 結論

現在の 25W制限は厳しすぎる ので、35Wに引き上げながら、ブースト時間を短縮 するのが最適!
この設定で、性能を維持しつつ、熱暴走を防ぐことができる 🎯

 

「Apply」ボタンをクリックしましたが、「Enable Auto-Start」が見つかりません。

Enable Auto-Start が見つからない場合、手動で設定を再適用する方法を使う必要があります。
Ryzen Controllerは再起動後に設定がリセットされるため、毎回適用する必要があります
以下の手順で、起動時に自動で設定が適用されるようにする方法を紹介します。


✅ 自動適用の方法(手動スクリプト設定)

Ryzen Controller自体にはAuto-Start機能がないバージョンもあるため、Windowsのタスクスケジューラを使って、PC起動時に自動適用する方法を設定します。


1. Ryzen Controller をバッチファイルで起動

  1. メモ帳 を開く

  2. 以下のスクリプトをコピーして貼り付ける

    bat
    @echo off
    start "" "C:\Program Files\Ryzen Controller\Ryzen Controller.exe"
    timeout /t 5
    nircmd sendkeypress enter
    • C:\Program Files\Ryzen Controller\Ryzen Controller.exe のパスは、実際にRyzen Controllerがインストールされている場所に合わせる。
    • nircmd はキーボードのEnterキーを自動で押すコマンド(詳細後述)。
  3. RyzenControllerAutoStart.bat としてデスクトップに保存


2. タスクスケジューラで自動実行

  1. Win + R を押して taskschd.msc を入力し、Enter
  2. 「タスクスケジューラ ライブラリ」 を開く
  3. 「基本タスクの作成」 をクリック
  4. タスクの名前を「Ryzen Controller AutoStart」 に設定し、「次へ」
  5. 「ログオン時」に設定し、「次へ」
  6. 「プログラムの開始」を選択し、「次へ」
  7. 「参照」ボタンをクリックし、RyzenControllerAutoStart.bat を選択
  8. 「完了」を押す

3. nircmd で自動適用(オプション)

Ryzen Controllerの設定適用ボタンを自動で押すために、nircmd という小さなツールを使うことができる。

  1. nircmd をダウンロード
    👉 公式サイト
  2. nircmd.exeC:\Windows\System32 にコピー
  3. 先ほどの .bat スクリプトの最後に以下を追加
    bat
    nircmd sendkeypress enter

    これにより、Ryzen Controller 起動後に自動で「Apply」を押す。


✅ 確認手順

  1. PCを再起動
  2. Ryzen Controller が自動で起動し、設定が適用されているか確認
  3. HWiNFORyzen Master で、TDP制限が有効かチェック

✅ 結論

  • Ryzen Controller 2.5.4 には Enable Auto-Start がないため、手動で自動適用を設定する必要がある
  • タスクスケジューラで bat ファイルを登録すれば、PC起動時に設定が自動適用される
  • nircmd を使えば、「Apply」を自動で押せるようになる

この方法で、再起動後もTDP制限が適用され、熱暴走を防ぐことができる!

面倒ですが、毎回手動で設定してもいいです。「Apply」を設定した段階で設定されたと考えて良いですか

はい、「Apply」ボタンをクリックした時点で設定は即時適用されています
したがって、手動で毎回「Apply」を押す方式でも問題ありません


✅ 手動適用の流れ

  1. PCを起動
  2. Ryzen Controller を管理者権限で実行
    • (右クリック →「管理者として実行」)
  3. 設定値(TDP=35W など)が変更されていないか確認
  4. 「Apply」ボタンをクリック
  5. 設定が反映されたか確認 (HWiNFO などでチェック)

✅ 設定が反映されたかの確認

以下のいずれかの方法でTDPが適用されているか確認してください。

方法①: HWiNFO で確認

  1. HWiNFO をダウンロード
    👉 公式サイト
  2. Sensors Only モードで起動
  3. 「CPU Package Power (PPT)」の値を確認
    • 35W前後になっていれば設定適用OK ✅

方法②: Ryzen Master で確認

  1. AMD Ryzen Master をダウンロード
    👉 AMD公式ダウンロードページ
  2. 「PPT (Package Power Tracking)」の最大値を確認
    • 35Wに制限されていれば適用OK ✅

✅ 結論

「Apply」を押した時点で設定は即時反映されるので、手動適用でも問題なし!
毎回「Apply」を押すだけでOK
再起動後に忘れないようにするだけ
HWiNFORyzen Master で設定が適用されているか確認すれば確実

面倒でも手動で問題なければ、この方法で TDP制限を適用し、熱暴走を防ぐことが可能! 🎯

ちなみに、現在の画面には「APPLY] [CREATE PRESET]「RESET」のボタンがあります、現在「APPLY]を押しました。このままアプリケーションを終了すれば良いですか?

ChatGPT:

はい、「APPLY」ボタンを押した時点で設定は適用されている ので、そのままアプリケーションを終了しても問題ありません。

✅ 手順

  1. 「APPLY」ボタンを押した時点でTDP制限が反映
  2. アプリケーションを閉じてOK
  3. 設定が適用されているか確認
    • HWiNFORyzen Master で「CPU Package Power (PPT)」が 35W前後になっているかチェック。

✅ 「CREATE PRESET」は必要か?

  • 「CREATE PRESET」ボタンは、設定を保存する機能 ですが、再起動後に自動適用されるわけではないため、手動適用の場合は不要。
  • 毎回「APPLY」を押すなら 「CREATE PRESET」は押さなくてOK

✅ 「RESET」は何をする?

  • 「RESET」ボタンは、すべての設定をデフォルトに戻す ため、押さないように注意。

✅ 結論

「APPLY」ボタンを押した時点で設定は適用済み
アプリを閉じてもOK
再起動後は、再度Ryzen Controllerを開いて「APPLY」を押す必要がある

これで、熱暴走を防ぎつつ、安定した運用が可能になります! 🎯

未分類

MINISFORUM EliteMini HM90 (AMD Ryzen 9 4900H) のスペックや過去の報告を考慮すると、特定のハードウェアや構成に起因するクラッシュの可能性がいくつか考えられます。


考えられるクラッシュの原因

1. 熱暴走 (特にCPU・VRM)

問題点

  • Ryzen 9 4900HはノートPC向けのハイパフォーマンスCPUであり、TDP(最大54W)はミニPCの放熱設計ではギリギリの範囲。
  • MINISFORUM HM90は冷却設計がタイトで、長時間の高負荷時にサーマルスロットリングシャットダウンを引き起こすことがある。
  • 一部ユーザーから「高負荷時にブラックアウトする」との報告がある。

確認方法

  • HWMonitorRyzen Master でCPU温度を確認。
  • Stress-ngCinebench を実行し、高負荷時の温度変化をチェック。
  • 冷却ファンが正常に動作しているか確認 (HWiNFO などでファン回転数を見る)。

対策

  • BIOSで「プロセッサのPPT制限」を設定し、TDPを制限 (例: 35Wに設定)。
  • ヒートシンクやファンのメンテナンス (ホコリ除去)
  • 冷却パッドを追加するか、外部クーラーを使用

2. GPU (Vega 8) ドライバの不具合

問題点

  • Ryzen 9 4900H の Vega 8 GPU は、Windows 11環境や特定のドライバでブラックスクリーン問題を起こすことがある
  • 一部のAMD Adrenalinドライバ(特に最新版)は、スリープ復帰時や高負荷時にクラッシュを誘発。

確認方法

  • イベントビューアー (eventvwr.msc)システムログamdkmdag エラーがないか確認。
  • Windows + Ctrl + Shift + B を押してGPUリセットで復帰するか確認
  • dxdiag で DirectX のエラーが発生していないかチェック。

対策

  • AMD公式サイトから旧バージョンのドライバ (WHQL版) にロールバック
  • デバイスマネージャー → ディスプレイアダプター「標準VGAアダプター」に一時変更し、ブラックスクリーンが発生しないかテスト。
  • Fast Startup (高速スタートアップ) を無効化(Windows 10/11の場合)。

3. メモリの相性・不良

問題点

  • MINISFORUMの 初期搭載メモリ (SODIMM DDR4-3200) に相性問題があることが報告されている。
  • 一部のユニットでは、デュアルチャンネル動作時に不安定な動作をする個体がある

確認方法

  • Memtest86 を実行し、エラーが出ないか確認。
  • Windows の メモリ診断 (mdsched.exe) を試す。
  • 1枚のメモリだけを装着して動作をテスト(デュアルチャンネル動作を無効化)。

対策

  • メモリの XMP設定をBIOSで無効化 する(デフォルトのJEDECプロファイルを使用)。
  • 別のメモリ (Crucial, Kingston などの相性が良いブランド) に交換

4. 電源ユニット (ACアダプタ) の容量不足

問題点

  • MINISFORUM HM90 は 19V/4.74A (90W) のACアダプタを使用しているが、フル負荷時にはギリギリ。
  • 高負荷時に 電力不足でブラックアウト する報告がある。

確認方法

  • バッテリー駆動のノートPCではないので、ACアダプタの電力供給が正しく行われているかチェック
  • 高負荷時 (CinebenchFurMark 実行時) に突然電源が落ちる場合、電力不足の可能性あり。

対策

  • 120W以上のACアダプタ (同じ電圧・プラグ) に交換
  • BIOSでTDPを35W程度に制限し、電力消費を抑える

5. SSD (ストレージ) の不良

問題点

  • 初期搭載の 512GB NVMe SSD (ブランド不明のOEM品) は、一部の個体でブラックアウトを引き起こすことがある。

確認方法

  • CrystalDiskInfo でSSDのS.M.A.R.T.情報をチェック(異常温度やエラーログがないか)。
  • chkdsk /f /r を実行し、ファイルシステムのエラーを確認。

対策

  • 別のM.2 NVMe SSD (Samsung 970 EVO Plus, WD Black) に交換し、Windowsをクリーンインストール。

結論

MINISFORUM EliteMini HM90 は、発熱・電源供給・GPUドライバの問題がブラックアウトの主な原因となりやすい

最優先で試すべき対策

  1. Windows + Ctrl + Shift + B で画面復帰を試す
  2. イベントビューアーamdkmdag エラーがあるか確認
  3. AMD GPUドライバをロールバック (WHQL版を使用)
  4. BIOSでTDPを35Wに制限
  5. メモリを1枚にして動作確認
  6. 120WのACアダプタを試す
  7. SSDのS.M.A.R.T.情報をチェック

ブラックアウトが頻発するなら、特に「電源」「GPU」「熱」の問題を疑うべき
最終手段として、BIOSアップデートとOSのクリーンインストールを検討。

未分類

単純な比較はできないと思いますが、ノード内にあるDockerの中のPostgresqlデータベースにアクセスするのと、ノード外にあるPostgreSQLデータベースにアクセスするのはどちらが速いと思いますか

単純な比較は難しいですが、一般的なケースでは以下のような要因を考慮すると、ノード内のDockerコンテナ内にあるPostgreSQLのほうが速い可能性が高いです。

ノード内のDockerコンテナのPostgreSQL

メリット

  • 低遅延:ネットワークのオーバーヘッドが小さい(通常、localhostunix domain socket経由での接続)。
  • 帯域制限なし:ローカルのリソースを直接使うため、物理ネットワークの帯域制限を受けにくい。
  • 通信の最適化:Dockerネットワークのブリッジモードやホストモードを適切に設定すれば、通信のオーバーヘッドを抑えられる。

デメリット

  • コンテナリソースの影響:他のコンテナとリソースを競合する可能性がある(CPU、メモリ、I/O)。
  • スケーラビリティの問題:複数のノードからのアクセスが必要な場合、スケールアウトしにくい。

ノード外のPostgreSQL

メリット

  • スケールしやすい:専用のデータベースサーバーとして運用でき、負荷分散の選択肢が広がる。
  • リソース分離:アプリケーションとデータベースが分かれるため、DBのリソース管理がしやすい。

デメリット

  • ネットワーク遅延:ノード間通信のオーバーヘッドがある(特にインターネット越しのアクセスやVPN経由の場合)。
  • ネットワーク帯域の制約:LANでも帯域制限がある場合、トラフィックの影響を受ける可能性がある。
  • セキュリティ対策が必要:認証やSSL/TLSを設定することでオーバーヘッドが増える場合がある。

結論

一般的には、ノード内のDockerコンテナのPostgreSQLの方が低遅延で速い可能性が高いですが、以下のケースではノード外の方が適していることもあります。

  • 複数のノードからアクセスする場合(スケールアウトを考えるならノード外)
  • データベースの負荷が高い場合(専用DBサーバーの方がパフォーマンスを確保しやすい)
  • ノードのメモリやCPUリソースを節約したい場合(DBを外部に分離することでアプリケーション側のリソースを確保できる)

もしローカルのDockerコンテナ内PostgreSQLを使うなら、unix domain socketを利用することでTCP接続よりもさらに低遅延でアクセスできるので、それも検討するとよいでしょう。

PostGISのルート計算の回数が、計算時間に大きく影響しているみたいで、昨日、1日分のシミュレション(1万8000人分)に、1時間44分かかった時には青冷めました。ちょっとDBアクセスに工夫したのですが、それでも25分間かかります。ぶっちゃけ10分以内にしないと、ちょっと厳しいのです。

今、ローカルのDBにアクセスしたらハブの点滅が減っています。

Elapsed Time: 16m20.5619673s
ちょっと安心してきました。でも10分には、まだまだ遠いです。