Quantcast
Channel: ドナドナされるプログラマのメモ
Viewing all 551 articles
Browse latest View live

Ryzen3700Xに大手裏剣 参を装着してみた(装着手順編)

$
0
0

Ryzen 3700Xに標準でついてきたWraith Prismは結構音が大きいので、CPU冷却ファンを買い替えてみた。ちょっと冷却能力に不安があったけど買ってみたのは大手裏剣 参。

www.scythe.co.jp

 

取付対象

寸法情報

f:id:donadonasan:20200412222355p:plain

大手裏剣 参 各部寸法

箱に、寸法情報が書かれていた。細かい寸法は、各自で画像から割り出してください。

Wraith Prism使用時のベンチマーク。詳しくは別ページで。

f:id:donadonasan:20200412224621p:plain

CPU使用率がほぼ0の場合の消費電力と温度、ファン回転数

Wraith Prismと大手裏剣 参の大きさ比較。

f:id:donadonasan:20200413001104p:plain

Wraith Prismと大手裏剣 参の大きさ比較

大手裏剣、ファンのサイズは大きいけど放熱部の寸法はかなり小さい。自分のように大きなPCケースを使っていてスペースに余裕があるのなら、無限五 リビジョンBなどを使ったほうがいいかもしれない。(若干後悔中)

www.scythe.co.jp

換装手順

CPUファンの換装手順を示します。部品の向き等は付属の説明書を確認してください。

ちなみに、換装前のPC内部はこんな感じ。

f:id:donadonasan:20200412231449p:plain

Wraith Prism使用時のPC内部(換装前)

1. Wraith Prismのレバーを反対側に倒し、固定を解除する。

f:id:donadonasan:20200412234913p:plain

Wraith Prismの固定解除

2. プラスチックの爪から金具を外す(合計2箇所)。

f:id:donadonasan:20200412235226p:plain

Wraith Prismの固定金具を外す

3. CPUとファンはグリスにより固着しているので、Wraith Prismが動くまでグリグリと左右にねじって固着を解除する。動きそうもない場合は、PCの電源を入れて温め、グリスを柔らかくする。

4. ファンを外す。

f:id:donadonasan:20200412235726p:plain

CPUファンを外したところ

5. マザーボードについているプラスチックの部品のうち片方を外す。マニュアルでは両方外すことになっているが、そうしてしまうとマザーボードの裏にあるバックプレートが外れてしまう。それが嫌だったため、以下ではプラ部品を片方ずつ外すことでバックプレートを外さずに作業する。

f:id:donadonasan:20200413001933p:plain

Wraith Prismを保持していたプラスチック部品の片方を外す。プラスドライバー必須。

6. 大手裏剣 参に付属するプラスチック部品を2個はめる(ここはマニュアル通り)。そして、バックプレートを固定するため軽くネジで締める(ここはマニュアルと異なる)。ネジがゴム部にめり込まないようにすること。使うネジは、付属のもののうち短い方。

f:id:donadonasan:20200413003053p:plain

プラ部品の固定とネジ締め

f:id:donadonasan:20200413002658p:plain

AM4ソケット用に使うネジ

6. 残ったWraith Prism固定用のプラ部品を外す。

f:id:donadonasan:20200413003417p:plain

Wraith Prism用の固定部品を外す(2個目)

7. プラ部品を固定し、片方だけ軽くネジを締める

f:id:donadonasan:20200413003949p:plain

プラ部品2個を取り付け、片方だけ軽くネジ締めする

8. プレート固定準備のため、ネジを一個外す。

f:id:donadonasan:20200413004150p:plain

ネジを一個外す

9. 大手裏剣 参固定用のプレートをしっかり固定する。プレートには上下があるので注意。マニュアル参照。

f:id:donadonasan:20200413004622p:plain

大手裏剣 参固定用のプレートを固定する

10. 反対側のプレートも固定する。

f:id:donadonasan:20200413004833p:plain

反対側のプレートも固定する

11. 大手裏剣 参の底面についているシールを剥がす

f:id:donadonasan:20200413005046p:plain

保護シールを剥がす

12. 熱伝導グリスを塗布する。CPUと冷却ファンの間が埋まる、必要最低限の量にするのが良いのだが・・・どのくらいが必要最低限なのかわからない。とりあえず適当に。

f:id:donadonasan:20200413005405p:plain

熱伝導グリスを適当量おいてみた

f:id:donadonasan:20200413005454p:plain

熱伝導グリス塗布後

13. 大手裏剣 参の取り付け。ネジは左右交互に少しずつ締めること。詳しくはマニュアル参照。なお、冷却ファンは張り出し部がメモリの上にくる向きと、M.2 SSDの上にくる向きの2通りの向きに取り付けることができる。メモリの上に来る向きの場合、メモリの冷却も狙えるけどメモリが外せなくなる。M.2 SSDの上に来る場合はメモリの取り付け・取り外しは問題なくできそう。M.2 SSDの取り外しもたぶんできるので、そちらのほうがおすすめかも知れない。自分はメモリ増設の予定がCPU交換まで無いので、前者を選択。

f:id:donadonasan:20200413005712p:plain

大手裏剣 参の固定

別の向きでの取り付けイメージを参考までに。

f:id:donadonasan:20200413010903p:plain

大手裏剣 参を別の向きで固定した場合のイメージ

14. ファンの電源をマザーボードに固定する。

取り付け状況

取り付け結果。M.2 SSDとはまったく干渉していない。PCI Expressコネクタとも十分距離がある。

f:id:donadonasan:20200413011044p:plain

大手裏剣 参の取り付け結果

メモリとの干渉状況。使用メモリは冷却プレート付きの大きなものだが、当たらずに済んでいる。

f:id:donadonasan:20200413010534p:plain

メモリと冷却ファンの干渉状況

PCの内部状況。エアフローも問題なさそう。

f:id:donadonasan:20200413011152p:plain

大手裏剣 参取り付け後のPC内部

Ryzen3700Xに大手裏剣 参を装着してみた(ベンチマーク編)

$
0
0

Ryzen3700Xに大手裏剣 参を装着してみた(装着手順編) - ドナドナされるプログラマのメモ の続き。

Wraith Prismから換装する前と後で、色々とどう変わったか調べてみた。なにしろ、サイズがちっこいので冷却能力が足りるか不安なので。

冷却性能のベンチマーク

ベンチマーク内容:CPUの負荷およびPrecision Boost Overdriveの有無により、ファン回転数とCPU温度がどう変わるかを調べる。CPUの負荷はBOINCを使って100%としている。

 表 ベンチマーク結果

 DefaultPrecision Boost Overdrive
 負荷0~2%負荷100%負荷0~2%負荷100%
 Wraith
Prism
大手裏剣
Wraith
Prism
大手裏剣
Wraith
Prism
大手裏剣
Wraith
Prism
大手裏剣
最大クロック
(MHz)
(655)(896)37813780(707)(784)39423902
CPU温度
(℃)
42.6239.481.3881.4544.2243.829595.01
IC全体の発熱
PPT (W)
29.0431.68888828.835.32113.6109.3
ファン回転数
(RPM)
2170117329471713取得し忘れ120029341708
Precision Boost Overdriveを有効にし、負荷を100%としたときのPPTに若干の違いが出た。懸念したとおり、WraithPrismと比べるとわずかに冷却能力が低いようだ。そのため、大手裏剣 参はCPUの定格を超えて使う人には向かないと思われる。一方、定格で使う分には全く問題なく、低いファン回転数による静かな環境を構築できる。

音のベンチマーク


CPU冷却ファンの音を比べてみた:WraithPrism VS 大手裏剣参

関連記事:

Ryzen3700Xに大手裏剣 参を装着してみた(装着手順編) - ドナドナされるプログラマのメモ

 

 

 

logicool M705 ワイヤレスレーザーマウスを分解・修理した

$
0
0

logicool M705 ワイヤレスレーザーマウスを使っているのだが、ホイールの回転が悪くなってきた。内部にホコリが溜まったせいだと思い、分解・修理したので手順をメモ。

なお、M705にはいくつかのモデルが存在し、それぞれ構造が異なる。今回分解したのは2018年頃に発売されていたモデルナンバーM-R0073である。

 

分解対象外見

f:id:donadonasan:20200418162228p:plain

logicool M705 M-R0073 上面

 

f:id:donadonasan:20200418162313p:plain

logicool M705 M-R0073 裏面

裏カバーの取り外し

ネジは合計5本。うち2本は前方のシールに、2本は電池ケースのシールに隠されているので、これらを剥がす必要がある。

f:id:donadonasan:20200418162819p:plain

M705 M-R0073の裏カバーを固定するネジの位置

今回のマウスでは特殊ネジ(トルクスネジ、おそらくT6)が使われていた。ただ、logicoolのマウスは同じモデルナンバーでもネジ形状が違うことがあるので(例:M-R0009。プラスネジだったり六角ボルトだったりする)、M-R0073の全てで特殊ネジが使われているかどうかは不明。

f:id:donadonasan:20200418163404p:plain

M705 M-R0073のネジ形状

ネジ5本を外すと、容易に裏カバーが外れる。

f:id:donadonasan:20200418164525p:plain

M705 M-R0073 内部

ホイールユニットの取り外し

ホイールユニットはピン一本で本体とつながっているので、これを抜くと外れる。外す際に、ホイールユニットの下に隠れているバネがどこかに飛んでいかないよう、本体の水平を維持しながらゆっくり外すこと。

f:id:donadonasan:20200418164835p:plain

ホール部を固定しているピンを外す

f:id:donadonasan:20200418164956p:plain

小さいバネ2個が行方不明にならないよう気をつけること

ホイールユニットを外したところ。裏を見ると、ホコリがみっちり詰まっている。グロ画像かもしれない。

f:id:donadonasan:20200418165137p:plain

M705のホイールユニットと固定ピン

f:id:donadonasan:20200418165219p:plain

ホイールユニット裏側。みっちり詰まったホコリが見える。

ホイールユニットの分解

ホイールユニットは概略以下のような順番で分解する。ネジは②を固定しているプラスネジ1個のみ。

f:id:donadonasan:20200418165711p:plain

ホイールユニットの分解順番(概略)

ホイールユニットは12個の部品からできている。なお、下図ではバネ1個が4番に固定されたままであり、2番を固定するプラスネジは写っていない。

f:id:donadonasan:20200418170306p:plain

M705 ホイールユニット部品一覧

分解作業は、ホイールを透明部品から外すのに苦労するが、ほかはスムーズに進むはずである。なお、5番の部品は4番を外すと自然に外れるので、どこかに落ちないよう気をつけること。また、向きを覚えておくこと。

ホイールユニットの組み立て

組み立ては手こずるので、詳細に説明する。

まず、ホイールを透明部品に組み付ける。

f:id:donadonasan:20200418170633p:plain

ホイールを透明部品に組み付ける

白い5番パーツ2個を透明部品に入れる。5番パーツは一端が平坦なものと尖っているものがあるが、平坦なものがマウス上方に、尖っているものが下方に位置する。また、それぞれギザギザを有するが、それが噛み合うようにセットする。

f:id:donadonasan:20200418171239p:plain

5番パーツの装着。写真表面側が尖ったパーツ。写真裏面側が平坦なパーツ。

バネの付いた4番パーツを取り付ける。バネの固定位置は下図を参照。

f:id:donadonasan:20200418171657p:plain

4番パーツのバネ固定位置

3番の金具および3'のバネを取り付ける。向きは下図を参照。

f:id:donadonasan:20200418171843p:plain

3番の金具および3'のバネの取り付け

3'のバネを3番の金具に固定する。

f:id:donadonasan:20200418172002p:plain

3'のバネを3番の金具に固定する

2番のパーツをプラスネジで固定する。2番のパーツはこのネジ以外にも、1箇所スナップロックがある。

f:id:donadonasan:20200418172141p:plain

2番のパーツを固定。写真左側に1箇所スナップロックがある。

f:id:donadonasan:20200418172420p:plain

スナップロック位置

1番のパーツを取り付ける。向きに注意。

f:id:donadonasan:20200418172535p:plain

1番のパーツの取付向き

ホイールユニットを本体に取り付け、固定ピンを刺す。小さなバネがどこかに行かないよう注意すること。また、固定ピンは正しい向きで取り付けないとマウスの上面カバーが取り付けられない。下の写真では間違えてしまっている。コの字の開口部が後ろを向くようにすること。

f:id:donadonasan:20200418172810p:plain

ホイールユニットを取り付け、固定ピンを刺す。固定ピンの向きに注意。これは間違った向きの例。

あとはマウス上面パーツを取り付け、ネジを締めてシールを貼るだけである。上面パーツと裏カバーの間に隙間が開く場合は、固定ピンの向きが間違っている可能性があるので確認すること。

重い処理中にステータス(状態)を表示するダイアログの実装(ユーザーインターフェーススレッド)

$
0
0

解決したい課題

MFCを使ったソフトにおいて重い処理をしている最中に、進捗等を表示するダイアログを表示したくなることは多々ある。しかし、単純にダイアログを作って表示しようとしても、以下のようにうまく行かないことが多い。

  • 重い処理が終わるまでダイアログが表示されない
  • ダイアログは表示されるが、表示内容が更新されない

何が原因か

これらが起きるのは、今の処理が終わらないとダイアログを表示するための処理が実行されないためである。ダイアログの表示やコントロールの変更を処理するメッセージはダイアログのメッセージプロシージャで処理されるのだが、困ったことにこのメッセージプロシージャは、デフォルトではメインウィンドウのメッセージプロシージャに接続されてしまうようなのだ。そのため、メインウィンドウのメッセージプロシージャが重い処理によって応答しなくなった場合、ダイアログの方も応答が止まり上記の症状が発生する。

一般的な解決方法

一般的な解決方法は、重い処理を別スレッド化してしまい、メインのメッセージプロシージャの応答性を確保することである。すなわち、AfxBeginThread()を使ってワーカースレッドを生成し、そのスレッド上で重い処理を実行する。AfxBeginThreadの第1引数はワーカースレッドの関数、第2引数はその関数への引数である。多くの場合、第2引数はワーカースレッドに渡したいオブジェクト、すなわちその関数が属するオブジェクトへのポインタである。そしてメインのウィンドウまたはダイアログでは、適宜ワーカースレッドの状態などを覗いてGUI上の表示を更新する。

Example of creating worker thread

この方法にて注意すべき点は、通常はワーカースレッドからはメイン側のMFC関数を直接呼び出せないことである。例えば、SetWindowText()を直接呼び出すことはできない。これは、ワーカースレッドにはMFCオブジェクト生成時に自動保存されるHWND情報が無いためである。詳しくは以下を参照。

マルチスレッド: MFC プログラミングのヒント | Microsoft Docs

そのため、前述のようにダイアログ側から適宜覗いて表示を更新するか、上記リンクにあるようにPostMessage()等を使ってメイン側ウィンドウに表示の更新を促すメッセージを送る必要がある。なお、上記リンクには FromHandle()を使ってメイン側オブジェクトへのポインタを取得してアクセスすることも書かれているが、これによりアクセスできるのは各MFCオブジェクトであり、MFCから派生したユーザー定義のクラスではないため実用的ではない。

ワーカースレッドに処理を移せない場合の解決方法

「重い処理」の内容によっては、処理をワーカースレッドに移すことができない。たとえば、CTreeCtrlに数万、数十万のノードを追加する処理は非常に重いのでワーカースレッドに移したくなるが、前述の通りワーカースレッドからはメイン側のMFC関数を呼び出せないため移せない。

このような場合は、例えばメインウィンドウとは別のスレッドを生成し、ダイアログのメッセージプロシージャをそちらのスレッドに接続すればよい。このようにすれば、メインウィンドウは重い処理のために応答しなくなるが、状態を表示するダイアログは応答を継続できる。MFCにおいて、メッセージプロシージャを有するスレッドはユーザーインターフェーススレッドと呼ばれ、単純なスレッドであるワーカースレッドとは区別される。ユーザーインターフェーススレッドもAfxBeginThreadで生成できるが、ワーカースレッド生成時とは引数が異なり以下の引数の方を使う。

CWinThread* AfxBeginThread(
  CRuntimeClass* pThreadClass,
  int nPriority = THREAD_PRIORITY_NORMAL,
  UINT nStackSize = 0,
  DWORD dwCreateFlags = 0,
  LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);

使用例は以下の通り。

CStatusDlgThread* pThread = DYNAMIC_DOWNCAST(CStatusDlgThread, AfxBeginThread(RUNTIME_CLASS(CStatusDlgThread)));

ここで、CStatusDlgThreadはCWndThreadクラスの派生であり、ユーザーインターフェーススレッドの実体である。また、DYNAMIC_DOWNCASTは単なるdynamic_castでもよいはずだが、ここではMFCの流儀に則っている。

作成したユーザーインターフェーススレッドにダイアログのメッセージプロシージャを接続するには、CWndThread::m_pMainWndにダイアログへのポインタをセットすればよい。

ダイアログに表示する内容を変更する場合は、メインウィンドウからダイアログに対しユーザー定義のメッセージをSend / PostMessageする。

状態を表示するためのエディットボックスと処理を中止するキャンセルボタンを有するダイアログの実装例を以下に示す。この例では、以下のような構成となっている。

  • CFactorioFactoryCalculatorDlg:メインウィンドウのダイアログ。OnCbnSelchangeComboTarget()が呼び出された際に、AddNode()を呼び出してCTreeCtrl m_CtrlTreeに大量のアイテムを追加する。追加処理中に状態表示ダイアログを表示し、ユーザーに進捗を示す。
  • CStatusDlg:状態表示ダイアログ。ユーザー定義のメッセージ:ID_UPDATE_STATUSを受け取ると、メンバ変数:m_Statusにセットされた文字列をエディットボックスに表示する。
  • CStatusDlgThread:状態表示ダイアログのユーザーインターフェーススレッド。状態表示ダイアログを所有し、InitInstance時にDoModal()を呼び出す。ダイアログが閉じられるとm_Validがfalseとなり、メインウィンドウ側は処理を中止すべき状態になったことを知ることができる。UpdateStatusを呼び出すことでダイアログに文字列を表示できる。

f:id:donadonasan:20200505102718p:plain

実装したダイアログの外観

A dialog with independent User Interface thread (C ...

 

Factorioでアイテム生産に必要な工場の数を試算するツール(FactorioFactoryCalculator)

$
0
0

Factorioでアイテム生産に必要な工場の数を試算するためのツール, FactorioFactoryCalculatorを公開しました。これを使えば、例えば製造サイエンスパックを毎秒3個作るために必要な、生産力モジュール1の工場の数やそのための発展基板工場の数などが試算できます。

  • プロジェクトページ

github.com

  • バイナリ公開場所

Releases · nibasya/FactorioFactoryCalculator · GitHub

Factorio スペース・エクスプローラーでのアイテム制作メモ

$
0
0

Factorioスペース・エクスプローラーでディープ・スペース・サイエンス・パックを含む各種パックを作ろうとすると、拡張総合~カタログのレイヤーまではそれぞれが絡み合っているため必要な工場数がよくわからない。そこで、毎秒1個生産する場合に必要な工場の数を整理した。コンピュータは量子スーパーコンピュータを基本とした。

 

 流速設備設備数
天文学サイエンスパック1宇宙工場3
生物化学パック1宇宙工場3
エネルギー科学パック1宇宙工場3
材料科学パック1宇宙工場3
ディープ・スペース・サイエンス・パック1宇宙工場2
重要なデータ24量子288
天文学インサイト44.2ニューラル24
生物学的インサイト44.2ニューラル24
エナジーインサイト44.2ニューラル24
材質インサイト44.2ニューラル24
拡張総合天体カタログ2.02ニューラル27
拡張総合生物カタログ2.02ニューラル27
拡張エネルギーカタログ2.02ニューラル27
拡張総合材質カタログ2.02ニューラル27

 

重要なデータ・・まじか・・

 

Factorio Space Explorationメモ:貨物ロケットの自動準備

$
0
0

FactorioのSpace Exploration Modをプレイしていると、そのうち母星の資源が枯渇してくる。そうなると他の惑星へ資源を奪いに行く必要がある。Factorioの醍醐味は様々な工夫による作業の自動化にあるので、できれば奪った資源の輸送も自動化したい。しかし、ここで問題になるのは貨物ロケットの発射準備方法。貨物ロケットを発射するには、発射台に以下をセットする必要がある。

  • 宇宙カプセル×1
  • 貨物ロケットセクション×100
  • 液体燃料×(目的地までの距離により異なるらしい)

このうち、液体燃料は生産・貯蔵設備からパイプを発射台に繋げておけば勝手に必要量だけ重点されるので楽なのだが、残りの2つが曲者。発射台にはロケットに載せる貨物もセットできるのだが、貨物のセット先も上記ロケットの部品のセット先も共通なのだ。そのため、何も考えずにインサーターで宇宙カプセルや貨物ロケットセクションを発射台にセットする構成にすると、必要量以上がセットされてしまい貨物ロケットがこれら部品で埋まってしまう。そのため、以下の仕掛けが必要になる。

  • 発射準備中であることを認識する
  • 発射準備中ならば部品を必要量だけセットする

発射準備中かどうかは発射台から出てくる信号で識別ができ、0が準備中、1が準備完了である。またFactorioでは信号の比較、信号の加減乗除ができ、ラッチ回路等も作れる。以上の道具立てからすると、実現方法は・・いくつもあるなあ。思いついた各方式の概要を列挙してみる。

  • 1->0の信号変化をトリガーに所定の個数をセットする。
  • 1のときはセットせず、0の間だけ所定の個数をセットする。
  • 宇宙カプセルを1個だけセット後、信号が1になるまで貨物ロケットセクションをぶちこむ。
  • 打ち上げに必要な部品はセットと同時に消滅する(発射台に吸収される)ことを利用し、各部品をひたすらセットするインサーターとひたすら取り除くインサーターを設置する(信号は使わない)

・・・あれ?ラッチとかが必須かと思ったけど、一番最後のをちょっぴり改良して、セットするインサーターを発射台からの信号で直接制御してあげれば行けるんじゃない?つまり、こうだ。

f:id:donadonasan:20200526180659p:plain

ひたすら部品のセットと除去をする例(失敗)

でも、これは失敗。セットする方にスタックフィルタインサータを使ったにも関わらず、なぜか普通のフィルタインサータが全てを瞬時に除去してしまうのだ。

ということで、他の方式を検討する。まずラッチ方式だが、リセット信号のエッジ検出がめんどくさそうなのでパス。そこで、信号が1の間は部品をセットせず、信号が0の間だけ所定の個数セットする方式にする。所定の個数をカウントする回路のクリアは、信号=1を条件とすればタイミングチャート的に大丈夫なはず・・。

f:id:donadonasan:20200526184841p:plain

3個だけインサータでセットする場合のタイミングチャート

などと思いながら回路を組んでいたら、発射台からセット済みアイテムの個数も出力されていたことが発覚。ラッキー。(でも考えたり記事書いたりしたのにかかった数時間は無駄に)

f:id:donadonasan:20200526191705p:plain

発射台からの出力信号例。Lは発射先までの距離、Eは空いている貨物スロット数、Fは埋まっている貨物スロット数

 

1日1時間Factorio

$
0
0

Factorio Space Explorationの進捗。

  • とりあえず宇宙まで行った
  • 地上で作れるアイテムは、ほぼ全て生産自動化した
  • ディープ・スペース・サイエンスパックを毎秒1個作れるラインを構築中
  • 拡張総合生物カタログ、総合生物カタログ、大域生物カタログ、重要なバイオマス、実験バイオマスは構築完了。
  • 生物カタログとバイオマスを構築すれば生物系のラインはきっと完成。

以下詳細。

 

ディープ・スペース・サイエンスパックの製造ライン進捗(毎秒1)

  • 拡張総合天体カタログ:毎秒2.02必要、未着手
  • 拡張総合生物カタログ:毎秒2.02必要、構築中
  • 拡張エネルギーカタログ:毎秒2.02必要、未着手
  • 拡張総合材質カタログ:毎秒2.02必要、未着手
  • 重要なデータ:毎秒24必要、完

拡張総合生物カタログの製造ライン進捗(毎秒2.02)

  • 比較遺伝子データ:毎秒2.02必要、遺伝学研究所×3, 完
  • 減圧抵抗データ:毎秒2.02必要、機械研究室×41、完
  • 神経異常データ:毎秒2.02必要、電磁気学研究所×41、完
  • 放射線データ:毎秒2.02必要、放射線研究室×21、完
  • 総合生物カタログ:毎秒2.02必要、量子スーパーコンピュータ×31、構築中

発展ニューラルジェルの製造ライン進捗(毎秒166.6)

  • 発展ニューラルジェル:毎秒166.6必要、微生物育成施設×334、完
  • 生体電気データ:毎秒16.6必要、電磁気学研究所×186、完
  • ニューラルジェル:毎秒166.6必要、微生物育成施設×166.6、完

総合生物カタログの製造ライン進捗(毎秒2.02)

  • 生体電気データ:毎秒2.02必要、電磁気学研究所×23、完
  • 極低温データ:毎秒2.02必要、生化学研究室×8、完
  • 減圧データ:毎秒2.02必要、機械研究室×41、完
  • 放射線被ばくデータ:毎秒2.02必要、放射線研究室×21、完
  • 大域生物カタログ:毎秒2.02必要、量子スーパーコンピュータ×21、構築中

重要なバイオマスの製造ライン進捗(毎秒47.67)

  • 実験バイオマス:毎秒104.265必要、微生物育成施設×1043、構築中

実験バイオマスの製造ライン進捗(毎秒104.265)

  • 実験バイオ文化:毎秒208.53必要、遺伝学研究所×209、完
    栄養素データ:毎秒208.53必要、生化学研究室×348、完
    実験遺伝子データ:毎秒208.53必要、遺伝学研究所×209、完
    生化学的データ:毎秒208.53必要、生化学研究室×696、完
    遺伝子データ:毎秒208.53必要、遺伝学研究所×105、完
  • バイオマス:毎秒104.265必要、構築中

大域生物カタログの製造ライン進捗

  • バイオ燃焼性データ:毎秒2.02必要、熱力学研究所×21、完
  • 実験遺伝子データ:毎秒2.02必要、遺伝学研究所×3、完
    生化学的データ:毎秒2.02必要、生化学研究室×7、完
    遺伝子データ:毎秒2.02必要、遺伝学研究所×2、完
  • 実験生化学的データ:毎秒2.02必要、生化学研究室×8、完
  • 生体力学的抵抗データ:毎秒2.02必要、生化学研究室×8、完
    生体力学的データ:毎秒2.02必要、機械研究室×21、完
  • 生物カタログ:構築中

Ryzen搭載14インチノートPCの検討

$
0
0

今まで使っていたThinkPad X240のキーボードが不具合をおこした。修理しようかと思ったけどかなり古いPCでもあったので、買い替えることに。そこで、何を買うか検討してみた・・・が、比較表を作っただけで時間切れ。なんで各社とも、発表内容と仕様が食い違うなどのミスが多いのだ。ノートPC業界はいい加減なんだろうか?

要求仕様

  • 本体サイズ:13~14インチノートPC
  • ディスプレイ:フルHD以上
  • OS:Windows10 64bit 可能ならProf.
  • CPU:AMDRyzen 5 4600Hまたは4650U
  • RAM:8GB以上(ただし換装可ならそれ以下もOK)
  • 電源:USB Type-C優先
  • SSD:256GB以上(M.2スロット)
  • WiFi:必須、種別問わず
  • USBポート:2以上(電源用は別カウント)
  • 有線LAN:あったほうがよい

予算

4年間使用、毎月¥3,000相当の価値があるとして¥144,000程度まで

各社PCの比較(2020/06/06現在)

メーカーLenovoLenovoLenovoLenovoLenovoLenovoLenovoDELLASUSASUSMSIMSI
ブランドThinkPadThinkPadThinkPadThinkPadThinkPadThinkPadLegionG5ROGROG  
シリーズL14 Gen 1L15 Gen 1L15 Gen 1X13 Gen 1T14s Gen 1T14 Gen 1Legion 55015プレミアムTUF A15Zephyrus G14Bravo 15Modern 14
ステータス発売日未定発売日未定発売日未定発売中発売中発売中7/17発売中6月中旬発売6/26発売予定6/22発売予定6/15発売予定
納期目安未発売未発売未発売1-2週間1-2週間1-2週間不明3-5日?不明不明不明不明
標準価格未公表¥170,000¥150,000¥227,700¥222,200¥199,100¥130,000¥152,980¥108,909¥118,164不明不明
実売価格(2020/06/06)不明不明不明¥122,958¥124,432¥103,532不明¥115,984¥98,909¥106,347¥119,800¥98,800
OSWin10Prof64bitWin10Prof64bitWin10Prof64bitWin10Prof64bitWin10Prof64bitWin10Prof64bitWin10Home64bitWin10Prof64bitWin10Home64bitWin10Home64bitWin10Home64bit
Win10Home64bit
CPURyzen5PRO 4650URyzen5PRO 4650URyzen5 4500URyzen5PRO 4650URyzen5PRO 4650URyzen5PRO 4650URyzen5 4600HRyzen5 4600HRyzen5 4600HRyzen5 4600HSRyzen5 4600HRyzen5 4500U
定格クロック2.1GHz2.1GHz2.3GHz2.1GHz2.1GHz2.1GHz3.0GHz3.0GHz3.0GHz3.0GHz3.0GHz2.3GHz
最大クロック4.0GHz4.0GHz4.0GHz4.0GHz4.0GHz4.0GHz4.0GHz4.0GHz4.0GHz4.0GHz4.0GHz4.0GHz
TDP10-25W10-25W15W10-25W10-25W10-25W45W45W45W35W?45W15W
電池容量未公開未公開48Wh48Wh57Wh50Wh不明51Wh48Wh76Wh?51Wh 
追加GPUなしなしなしなしなしなしGTX1650TiRadeonRX5600MGeForceGTX1650GeForceGTX1650RadeonRX5300Mなし
RAM容量最大64GB8GB8GB8GB8GB8GB16GB8GB8GB8GB16GB16GB
RAM仕様PC4-25600PC4-25600PC4-25600PC4-25600PC4-25600PC4-25600PC4-25600PC4-25600PC4-25600PC4-25600DDR4DDR4
RAMスロット数2220(オンボード)0(オンボード)1(+オンボード×1)222?(信用できない)12 
SSDタイプ未公表M.2 PCIe NVMEM.2 PCIe NVMEM.2 PCIe NVMEM.2 PCIe NVMEM.2 PCIe NVMEM.2 PCIe NVMEM.2 PCIe NVMEM.2 PCIe NVMEM.2 PCIe NVMEM.2 PCIe NVMEM.2
SSD容量未公表256GB256GB256GB256GB256GB512GB512GB512GB512GB512GB512GB
画面サイズ1415.615.613.3141415.615.615.61415.614
解像度HD or FHDHDHDFHDFHDFHDFHDFHDFHDFHDFHDFHD
ノングレアyesyesyesyesyesyesyesyesyesyesyesyes
本体サイズ331×235×20.4366.5×250×21.7366.5×250×21.7311.9×217.2×16.9329×226.15×16.7329×227×17.9363.1×259.6×23.6365.5×254×21.6359.8×256×24.7324×222×18.9359×254×21.7319×220.2×16.9
重量1.611.981.981.281.331.572.32.52.31.651.961.3
有線LAN111001111000
USB3.1 Type-C111222001201
USB3.0 Type-C111000110010
USB3.0 Type-A222222412230
USB2.0 Type-A000000021002
電源コネクタUSB3.1 Type-CUSB3.1 Type-CUSB3.1 Type-CUSB3.1 Type-CUSB3.1 Type-CUSB3.1 Type-C独自独自独自+USB Type-C独自+USB Type-C独自独自
HDMIポート111111111111
DisplayPort0000000MiniDP×10000
趣味でつけたオプション   IRカメラIRカメラIRカメラ      
備考6/5発売予定が
発売日未定に
6/5発売予定が
発売日未定に
6/5発売予定が
発売日未定に
     Win10Pro,
RTX2060、
バッテリ90Whを
謳うも存在しない
KingSoft OfficeUSB-PD非対応 

 

 

各社PCへのリンク

Lenovo

ThinkPad L14 Gen 1(AMD) | 豊富な拡張性と接続性を備えた14型メインストリームPC | レノボジャパン

ThinkPad L15 Gen 1 (AMD) | 豊富な拡張性と接続性を備えた15.6型メインストリームPC | レノボジャパン

ThinkPad X13 Gen 1 (AMD)| コンパクトでパワフルな13.3型モバイルノート | レノボジャパン

ThinkPad T14s Gen 1 (AMD) | 14型ハイパフォーマンス・スリム・ノート | レノボジャパン

ThinkPad T14 Gen 1 (AMD) | 14型ハイパフォーマンス・ノート | レノボジャパン

Lenovo Legion 550 | AMD Ryzen搭載15.6型ゲーミングノート | レノボジャパン

DELL

Dell G5 15インチ ゲーミング ノートパソコン(AMD Radeon CPU搭載) | Dell 日本

ASUS

ASUS TUF Gaming A15 | ASUS TUF Gaming | ノートパソコン | ASUS日本

ROG Zephyrus G14 | Gaming | ノートパソコン | ASUS日本

MSI

MSI - AMD Ryzen 搭載ゲーミングノートPC Bravo 15

MSI ビジネス・クリエイターノートPC Modern 14 - B4M

Factorioでエッジカウンタ

$
0
0

Factorioでヒステリシスつきエッジカウンタ。

入力信号がリセット状態からセット状態になると1パルスだけ信号を出力します。

f:id:donadonasan:20200609122239p:plain

Factorio用ヒステリシス付きエッジ抽出回路 全体構成

f:id:donadonasan:20200609123037p:plain

Factorio用ヒステリシス付きエッジ抽出回路 詳細

以下、BluePrint.

Edge Counter for Factorio

Factorio + AAI Programmable Vehiclesで自動移動&陣形形成+補給

$
0
0

Factorioにて採掘・戦闘を自動化するため、AAI Programmable Vehiclesと、関連MODを入れてみた。

そして、さっそく惑星内の敵性生命体を滅ぼすための制御回路を構築してみた。


An Example of Half-Automated Troop in Factorio using AAI Programmable Vehicles

目次

 

全体構成

f:id:donadonasan:20200611192418p:plain

AAI Programmable Vehiclesを使った移動・陣形構築・修理回路 外観

これにより、Pathで設定した経路に沿って車群が移動し、WayPointにて所定の陣形となり、各車両の修理完了後に次のWayPointへ向かって再び移動する。もし途中に敵の巣があったら蹂躙する。

BluePrintは以下。

Half-automatic troops for Factorio using AAI Prog…

各部分の働きは以下の通り。

f:id:donadonasan:20200611193924p:plain

AAI Programmable Vehiclesを使った移動・陣形構築・修理回路 概略構成

 

各車両状態の取得と移動目標の設定、車両不在の表示

 

f:id:donadonasan:20200611195240p:plain

車両状態の取得と移動目標の設定、車両不在の表示 外観

最も面積をとっている「各車両状態の取得と移動目標の設定、車両不在の表示」部分は車両台数分だけある「車両状態の(略)表示」から構成されている。

各「車両状態の(略)表示」部分は、「群移動目標の設定」部が出力する群としての移動目標座標と、「Y座標設定」「X座標設定」「車両間隔設定」から得た車群における自車の目標相対座標をもとに自車の移動目標を設定する。また、自車の速度やHP、存在の有無を出力する。そして存在しなくなった(撃破された)場合は赤ライトを点灯する。

f:id:donadonasan:20200611195736p:plain

車両状態の取得と移動目標の設定、車両不在の表示 概略構成

「移動目標の設定」部は、外部からこのマスのX・Y座標(X, Y)、群移動目標のX・Y座標(Xpos, Ypos)、車両間隔Dを受け取ります。これらに対し、Xpos = Xpos+X×D, Ypos = Ypos+Y×Dを演算してUnit Controllerに出力します。X×D, Y×Dを各マスで演算しているのは無駄なのですが、信号の混入がこわいので絶縁も兼ねて各マスでやっています。UnitControllerはこの情報と「制御対象の設定」部から受け取った車両IDに基づき対象車両の目標座標を設定します。UnitControllerによる目標更新間隔は、デフォルトでは1(60回/秒)ですが60(1回/秒)と遅くしてAIの経路探索頻度を減らしFactorioを軽くしています。

f:id:donadonasan:20200611202041p:plain

移動目標の設定 詳細構成

「制御対象の設定」部は、他の各部へ車両IDを提供します。この例では定数を設定していますが、下記のように隣接するマスの車両IDに1を足すようにしているものが大半です。1を足した信号は信号混入を防ぐため算術回路で絶縁後(下図の*+0)、マス内の各部へ供給しています。

f:id:donadonasan:20200611202205p:plain

制御対象の設定 詳細構成

「車両状態の取得」部は、Unit Scannerを使って対象の存在・速度・HPを取得し、速度およびHPが次のWayPointへの移動にふさわしい状態かチェックし結果を出力します。対象の存在はBattery信号を使っています。速度は10未満ならOK、HPは所定値より大きければOKとしています。HPは車種ごとに設定する必要があります。自動化は可能だけど設定頻度が少ない割に複雑になるのでやってません。

f:id:donadonasan:20200611203425p:plain

車両状態の取得 詳細構成

「車両状態の表示」部は、車両状態の取得部からのバッテリ状態信号が0になったらライトを赤に光らせる構成となっています。

f:id:donadonasan:20200611205807p:plain

車両状態の表示 詳細構成

群状態の取得

f:id:donadonasan:20200611210411p:plain

群状態の取得 外観

群状態の取得部は、以下の合計値を演算する。

  • 総車両数
  • 停止している車両数
  • HP回復済み車両数

各情報は中央部・1層目・2層目・3層目・4層目と層ごとに分かれて「各車両状態の取得と移動目標の設定、車両不在の表示」部から送られてくる。これは、層毎に異なる車両を設定していた頃の名残である。そして、送られてきた信号を絶縁後合計している。

f:id:donadonasan:20200611210801p:plain

群状態の取得 概略構成

群状態の取得部は、信号絶縁部と合計部からなる。合計部はなくてもよいが、あったほうがわかりやすい・・・と思う。

f:id:donadonasan:20200611211034p:plain

群状態の取得 詳細構成

群移動目標の設定

f:id:donadonasan:20200611211214p:plain

群移動目標の設定 外観

群移動目標の設定部は群状態の取得部から受け取った信号とPath Scannerからの信号により動作し群としての移動目標座標を出力する。

以下の流れで動作する。

  1. 次の移動目標への移動条件を満たしたか判定する
  2. 満たした場合、ヒステリシス付きエッジカウンタによりカウンタを1だけ増やす。以後、このカウンタは移動を開始するなどの条件を満たすまでは増えない(エッジトリガ)。
  3. カウンタ値から、移動目標を示すウェイポイント番号を生成する。
  4. Path Scannerを用いてウェイポイント番号より移動目標の座標を生成する。

f:id:donadonasan:20200611213539p:plain

群移動目標の設定 概略構成

全てのウェイポイントを通過すると、ウェイポイント信号生成が出力するウェイポイント番号は無効な番号となってしまい、Path Scannerは座標(0,0)を出力してしまう。これは望ましくない挙動なため、ウェイポイント信号が上限を超えないようにしている。上限値はPath Scannerが出力するウェイポイント信号数の信号を使っている。

f:id:donadonasan:20200611215644p:plain

群移動目標の設定 詳細構成

車両間隔設定

車両の間隔を設定する。以下、D=1, 2それぞれの例を示す。

f:id:donadonasan:20200611220241p:plain

車両間隔D=1の場合

f:id:donadonasan:20200611220419p:plain

車両間隔D=2の場合

X座標設定、Y座標設定

上がY=-12, 下がY=12, 左がX=-12, 右がX=12である。

各車両のUnit Data初期化

各車両のUnit Dataを初期化するための仮設備である。Vehicle Deployerを正しく使えば要らないはずの設備なので、詳細は省略する。普段は未稼働で使いたいときのみ算術回路に配線を追加してUnit Dataを初期化する。ループ回路の仕様上、Unit Data Controllerの更新間隔は1としている。

f:id:donadonasan:20200611220908p:plain

各車両のUnit Data初期化 外観

f:id:donadonasan:20200611221114p:plain

各車両のUnit Data初期化 詳細構成

 

FactorioのMODを日本語化する手順

$
0
0

FactorioのMODを自分で日本語化したい!という人向けの記事です。

日本語化の流れは以下の通り。

 

(以下長いので畳んでいます)

 1. modの圧縮ファイルを展開する

modは圧縮ファイルとして保存されており、そのままではテキストファイルの編集ができません。たぶん。そこで、圧縮ファイルを展開します。圧縮ファイルは%AppData%\Factorio\modsにあります。

展開したままでもFactorioはファイルをそこから読んでくれますので、再圧縮は不要です。

f:id:donadonasan:20200625140728p:plain

圧縮ファイル展開後のmodsフォルダの様子

2. 日本語用localeフォルダを作成する

modのフォルダを覗くと、localeというフォルダがあります。そこの中にja(注意!jpではありません!)フォルダを作ります。

f:id:donadonasan:20200625141046p:plain

localeフォルダ

f:id:donadonasan:20200625141230p:plain

localeフォルダ内にjaフォルダを作る

 

3. 文字列を定義するファイルをenフォルダとかからコピーしてくる

他のlocaleフォルダにある、文字列を定義する.cfgファイルをコピーします。ファイル名は任意のようで、modによって異なります。(factorio 公式wikiには*.cfgとある)

f:id:donadonasan:20200625141307p:plain

locale/enフォルダとかにある.cfgファイルをlocale/jaにコピーする

4.  追加データをinfo.jsonから持ってくる

enにある.cfgファイルは、殆どの場合mod名やmodの概要情報が抜けています。そこで、必要に応じこれらをinfo.jsonから持ってきます。持ってこれるものは"title"と"description"です。

4.1 title

titleは、factorioのmod選択画面に表示されるmod名です。

f:id:donadonasan:20200625142600p:plain

info.json内のtitle部分

f:id:donadonasan:20200625143003p:plain

Factorio内での表示

locale/ja内の.cfgファイルに[mod-name]カテゴリを作り、その中にmodの名前(バージョン番号を含まない)でキーを作りmodの名前を設定します。'='の前後には、原則として空白を含めないで下さい。空白も文字の一部と認識されます。

f:id:donadonasan:20200625143619p:plain

mod-nameカテゴリ

なお、この例では.cfgの先頭ではなく途中にカテゴリを追加しています。これは、この例では先頭にあるキー群にカテゴリが設定されていないためです(たまにそういうmodがいる)。こういうのの先頭に[mod-name]を書いてしまうと、これら先頭にあったキー群が全て[mod-name]カテゴリ内に入ってしまい、困ったことになります。

ちなみに変更後のFactorio内表示はこうなります。

f:id:donadonasan:20200625144039p:plain

title変更後のFactorio内mod選択画面の様子
4.2 description

descriptionは、modの説明として表示される文章です。

f:id:donadonasan:20200625144724p:plain

info.json内のdescription部分

f:id:donadonasan:20200625144837p:plain

Factorio内での表示

locale/ja内の.cfgファイルに[mod-description]カテゴリを作り、その中にmodの名前(バージョン番号を含まない)でキーを作りmodの詳細説明を記述します。'='の前後には、原則として空白を含めないで下さい。空白も文字の一部と認識されます。

f:id:donadonasan:20200625145017p:plain

mod-descriptionカテゴリ

なお、この例では.cfgの先頭ではなく途中にカテゴリを追加しています。これは、この例では先頭にあるキー群にカテゴリが設定されていないためです(たまにそういうmodがいる)。こういうのの先頭に[mod-description]を書いてしまうと、これら先頭にあったキー群が全て[mod-description]カテゴリ内に入ってしまい、困ったことになります。

ちなみに変更後のFactorio内表示はこうなります。

f:id:donadonasan:20200625145206p:plain

description変更後のFactorio内mod選択画面の様子

5. 翻訳する

.cfg内の各文字列を翻訳します。繰り返しになりますが、'='の前後には、原則として空白を含めないで下さい。空白も文字の一部と認識されます。

f:id:donadonasan:20200625145454p:plain

翻訳する

6. Factorioを起動し翻訳結果を確認する

Factorioを起動し、翻訳結果を確認します。これは必ずやってください。諸般の事情で文字化けすることもありますし、またプログラマのミスでキーを参照していなかったり、.cfg内のキー名が間違っていたりします。また、ゲーム内で文字列を見ると「あ、この翻訳はよくないな」ってなることも多々あります。

f:id:donadonasan:20200625145820p:plain

翻訳結果の例

なお、.cfgファイルはFactorioの起動処理内でのみ読み込まれます。Factorio起動後は読み込まれないため、.cfgに加えた変更の結果を見る場合はFactorioを再起動してください。

スペース・エクスプローラー 0.3.xが公開

$
0
0

Factorioの大規模MODであるスペース・エクスプローラーが0.2.xから0.3.xへと大規模アップデートされた。その結果、レシピやら何やらが大規模に変更され、今までの生産ラインが全て無駄に。宇宙でまだ生産開始していないかったのに・・・。また、AAI Industoryが必須MODとなり、その結果地上の生産ラインも壊滅してしまった。

まあでも、また設計を楽しむ事ができると前向きに捉えつつ、変更点を見てみる。

宇宙での研究用アイテムは、以前と同様の天文・材料・生物・エネルギーの4種に加え、従来は地上で製造可能だった白いサイエンスパックがロケットサイエンスパックという名前になって宇宙での製造となった。

f:id:donadonasan:20200704112001p:plain

ロケットサイエンスパック

これの材料にVulcanite blockというものが見えるが、これは0.3.xで追加された新鉱物Vulcaniteを精製したもので、惑星nauvis等でのコアマイニング時に取り出される。

追加された新鉱物は他にもあり、それらはnauvisでは採掘できない。それらが必要な場合は他の惑星や月、アステロイドベルトに行く必要がある。追加されたのはベリリウムインジウム、Holmium、Cryonite、Vitamelenge、Naquatite。これら新鉱物は宇宙での上位サイエンスパック作成に必要だが、既存のアイテム製造に使うことで既存アイテムの原料を半減させたりもできる。

f:id:donadonasan:20200704112957p:plain

Vulcanite blockを使うと鉄の製造効率が1.5倍になる

f:id:donadonasan:20200704113158p:plain

ベリリウム板を使うと出来上がる貨物ロケットセクションが2倍になる

MODの日本語版は作業着手されているようだが、未完の模様。

AAI系MODの日本語版は作業完了しており、MODへの反映待ち。

Factorioでの軌道上工場設計方針

$
0
0

(今回は文字ばっかりでつまんないです)

FactorioのSpace Exploration 0.3.x系公開により宇宙での生産ラインを完全に作り直す必要が生じた。面倒ではあるけど、せっかくなので色々と改善を図ってみる。

以前の設計では、宇宙に限っては物資の輸送をドローンに任せていた。いや、だって、宇宙世紀だし?しかしSpace Explorationではドローンが一定確率で墜落するRobot Attritionが必須となっており、この墜落確率は宇宙だと数倍にもなる。そのため、試験運転したらひどいことになってしまった。そこで、ドローンによる輸送を最小限にする。すなわち、特定の物資を必要とする場所にはロケットの着陸場を直接設け、ピンポイントで届ける。ドローンの使用は、再利用するロケット部品の輸送など最小限に留める。

また、従来の設計ではジャンクデータカードの再生処理を1箇所にまとめていたが、その結果ジャンクデータカード用ベルトコンベアが悲惨な幅になりそうだった。しかし、ジャンクデータカードの再生処理に必要な材料はジャンクデータカードそのものと流体のみである。そこで、ジャンクデータカードの再生は各サイエンスパックの製造拠点に分散配置することにした。一方、再生処理時に29%の確率で生じる壊れたデータカードは、リサイクル処理すると体積5倍のスクラップとなる。5倍は嬉しくないので、こちらは1箇所に集めて集中処理することにする。このように集中処理する対象をジャンクデータカードから壊れたデータカードに変更することで、必要なベルトコンベア数を1/3にできる・・はず。

ThinkPad X240 vs ThinkPad T14 AMD

$
0
0

長年ThinkPad X240を使っていたがキーボードの調子が悪くなったので本体ごとThinkPad T14 AMDに買い替えたのでベンチマーク

 

ThinkPad X240 Core i5-4200U (2 Core 4 Thread 2.3GHz)

CINEBENCH Release 20: 473 cb

FinalFantasyXIV (ノート:標準品質) 1156

 

Thinkpad T14 AMDRyzen 5 PRO 4650U (6 Core 12 Threads 2.1GHz)

CINEBENCH Release 20: 2223 cb

FinalFantasyXIV (ノート:標準品質)  2657

 

CPU性能を素直に反映するであろうCINEBENCHを見ると、コア数は3倍だけどスコアは4.7倍。素晴らしい。

グラフィック能力が関係してくるだろうけどコア数はあまり関係なさそうなFinalFantasyXIVはスコアが2倍。これも自分の用途なら十分。いいな、このThinkPad

さっそく開発環境をどんどん入れよう。


Lenovo ThinkPadでBluetoothをつかったテザリングで「直接接続」しか選べない問題

$
0
0

LenovoThinkPadBluetoothを使ったテザリングをしようとしたけど、なぜか接続方法に「アクセスポイント」が無く、直接接続しか選べない。色々と調べたけど解決せず。そこで、古より伝わる「Windowsで困ったら再起動」を実行したら無事「アクセスポイント」が表示された。言い伝えは正しかった・・・

Lenovo ThinkPad T14 Gen1 (AMD)にメモリを増設する手順

$
0
0

LenovoThinkPad T14 Gen1 (AMD)を買ったわけだが、自分の用途だとメモリが大量に必要なのに敢えて最小設定である8GBとしていた。これはLenovoでメモリ16GB機を購入するより、8GB機を購入してあとから8GB増設したほうが6000円~1万6000円安いため。

調べてみると、マザーボードに直接搭載されているメモリはPC4-25600だったので同じ性能のものを発注。先日無事にメモリ(PATRIOT PSD48G320081S, 8GB PC4-25600)が届いたので、増設した。

ThinkPadを選んだ理由の一つは充実したメンテナンスマニュアル。たかがメモリ交換とは思ったけどせっかくだしマニュアルを読んでみた。・・・お、初手から知らない手順がある・・・読んで良かった・・・。

以下、手順。

 

1. 高速スタートアップを無効にする

1.1 コントロールパネルを開く。

f:id:donadonasan:20200711122838p:plain

目視でコントロールパネルを探すのが面倒だったため検索している様子

1.2 コントロールパネルの表示方法を大きいアイコンまたは小さいアイコンに変更する。

f:id:donadonasan:20200711123300p:plain

コントロールパネルの表示方法変更

1.3 電源オプションをクリック

f:id:donadonasan:20200711123415p:plain

電源オプションをクリック

1.4 「電源ボタンの動作を選択する」をクリック

f:id:donadonasan:20200711123520p:plain

「電源ボタンの動作を選択する」をクリック

1.5 「現在利用可能ではない設定を変更します」をクリック

f:id:donadonasan:20200711123627p:plain

「現在利用可能ではない設定を変更します」をクリック

1.6 「高速スタートアップを有効にする」のチェックを外す

f:id:donadonasan:20200711123852p:plain

「高速スタートアップを有効にする」のチェックを外したところ

1.7 「変更の保存」をクリック。

以上で高速スタートアップは無効になります。

f:id:donadonasan:20200711123945p:plain

変更の保存ボタン

2. 内蔵バッテリの無効化

2.1 コンピュータを再起動し、Lenovoのロゴが表示されている間にF1キーを押してUEFIBIOSメニューに入る。

f:id:donadonasan:20200711125510p:plain

Lenovoのロゴが表示されている状態

f:id:donadonasan:20200711130503p:plain

UEFIBIOSメニュー画面

2.2 ConfigよりPowerをクリック

f:id:donadonasan:20200711131013p:plain

ConfigよりPowerをクリック

2.3 Disable Built-in Battery (和訳:内蔵バッテリを無効化)をクリック

f:id:donadonasan:20200711131127p:plain

Disable Built-in Batteryをクリック

2.4 Yesをクリックし内蔵バッテリを無効化する。

このとき、自動で電源も落ちる。

ダイアログ内の文章和訳:Yesをクリックするとシステムの電源が落ちます。このまま進めてよいですか?

f:id:donadonasan:20200711131244p:plain

Yesをクリックし内蔵バッテリを無効化する。このとき、電源も自動で落ちる。

2.5 内部部品の温度が下がるまで数分待つ。

以上で内蔵バッテリの無効化完了。

3. ベースカバーの取り外し

3.1 ノートPCから電源ケーブルを外し、ディスプレイを閉じる

f:id:donadonasan:20200711140351p:plain

解体準備の整ったThinkPad T14 Gen1 (AMD)

SIMカードを刺している場合は、外します。

3.2 裏返し、ネジを外す

正確には緩める。どのネジも紛失防止のため外れない模様

f:id:donadonasan:20200711140610p:plain

ThinkPad T15 Gen1 (AMD)の裏面 ネジを緩める場所

3.3 カバーを外す

コツを掴めば指の爪でも簡単にあけられる。マニュアルいわく、外すのは以下の順番。

f:id:donadonasan:20200711140801p:plain

カバー固定箇所と外す順番

開けるとこんなかんじ。

f:id:donadonasan:20200711141138p:plain

LenovoThinkPad T14 Gen1 (AMD) 内部写真

目についた主要部品たち。

f:id:donadonasan:20200711142354p:plain

LenovoThinkPad T14 Gen1 (AMD) 主要部品

搭載しているM.2 SSDSamsung PM991 M.2 PCIe Gen3 SSD。Gen4じゃないのか。ちぇっ。

それにしても高そうなファンである。フィンが高密度。

f:id:donadonasan:20200711143418p:plain

冷却ファン

なおカバーは放熱性向上のためか、銅でコーティングされていた。

f:id:donadonasan:20200711143528p:plain

カバー内側

4. メモリモジュールを装着

4.1 メモリモジュールをセット

メモリの切り欠きとコネクタの爪が合うようにメモリモジュールをセット。

f:id:donadonasan:20200711144337p:plain

切り欠きの位置

4.2 メモリモジュールを差し込む

レバーの幅広部分がメモリ側面の凹部に合う程度までメモリモジュールを差し込む。

f:id:donadonasan:20200711144531p:plain

メモリモジュールの差し込み

4.3 メモリモジュールを押し込む

レバーにより固定されるまでメモリモジュールを上から押し込む。

f:id:donadonasan:20200711144642p:plain

押し込まれ、固定できたメモリモジュール

5. もとに戻す

5.1 カバーを取り付け、ネジを締める

5.2 電源ケーブルを接続し、PCを起動する

5.3 メモリが増えたか確認する

f:id:donadonasan:20200711144912p:plain

メモリが8GBから16GBに増えました

5.4 高速スタートアップの設定をもとに戻す

f:id:donadonasan:20200711145109p:plain

高速スタートアップの設定をもとに戻す

なおバッテリは自動で有効に戻っていました。

以上。

CAN dbcファイルのフォーマット (1/2)

$
0
0

CAN dbcファイルのフォーマットについて整理した。

dbcフォーマットの出典は下記ファイル。

http://read.pudn.com/downloads766/ebook/3041455/DBC_File_Format_Documentation.pdf

目次

 

共通項目

unsigned_integer: 符号なし整数。

signed_integer: 符号あり整数。

double: 倍精度浮動小数点。

char_string: "(ダブルクォーテーション)以外の表示可能な文字。"で囲まれている。

C_identifier: 英字または_(アンダースコア、アンダーバー)から始まり英数字又は_を含む文字列。最大128文字だが、最大32文字までしか対応しない古いツールもある。正規表現だと[a-zA-Z_][a-zA-z_0-9]*

オブジェクト

BU_ : ネットワーク上のノードであることを示す。

BO_ : メッセージであることを示す。

SG_ : シグナルであることを示す。

EV_ : 環境変数であることを示す。

書式の文法

各項目の書式は、以下の文法に従い記述する。

= : 等号の左側にある語を、等号の右側にある文で定義する。

; (セミコロン) : 定義の文末を示す。

| (垂直な棒) : or の意味。

[ ... ] : ...部分はオプション。すなわち、...部分は0または1個あればよい。

{ ... } : ...部分は複数。すなわち、...部分は0または1個以上ある。

( ... ) : 要素のグループを示す。

' ... ' : ...部分は変数ではない。...の通りにdbcファイルに書く必要がある。

(* ... *) : コメント。

DBCファイルの構造

DBCファイルはヘッダおよび本体から成る。

ヘッダ

以下の項目を含む。

VERSION : オプション。

_NS:new_symbols. オプション。

本体

他の項目から成る。以下の項目を含む。

BS_ : bit_timing. 廃止された使われない項目だが、dbcファイルに必須。

BU_ : ノード定義。必須。

VAL_TABLE_ : 値から文字列へのグローバルな変換テーブル。めったに使われない。オプション。

BO_ : メッセージの定義。シグナルの定義であるSG_を含む。必須。

BO_TX_BU_ : メッセージ送信ノードの定義。上位プロトコルで使われることがある。オプション。

VAL_ (1回目) : シグナルまたは環境変数の値から文字列への変換テーブル。この段階ではシグナルのものしか定義できない。オプション。

EV_ : 環境変数の定義。オプション。

ENVVAR_DATA_ : 環境変数のデータサイズ。オプション。

VAL_ (2回目) : シグナルまたは環境変数の値から文字列への変換テーブル。この段階なら環境変数のものも定義できる。オプション。

SGTYPE_ (1回目): シグナルの共通プロパティを定義する。通常使われない。オプション。

CM_ : 各種オブジェクト(ノードとかメッセージとかシグナルとか)のコメントを定義する。オプション。

BA_DEF_ : ユーザー定義属性の定義。オプション。

BA_ : ユーザー定義属性の値を設定する。オプション。

SGTYPE_ (2回目): シグナルの共通プロパティを定義する。通常使われない。オプション。

 SIG_GROUP_ : シグナルの集合を定義する。通常使われない。オプション。

 各項目の書式

次回へ続く(共通項目とは別ページのほうが見やすかったので・・・)。

CAN dbcファイルのフォーマット (2/2)

$
0
0

CAN dbcファイルの書式 2/2。各項目の詳細を書きます。

目次

 

各項目の詳細

VERSION

バージョン情報を定義する。オプション。

書式

'VERSION'version

変数

version = char_string;

バージョン情報。

備考

CANdbエディタで使用するバージョン情報を含む。空でもよい。

使用例

VERSION ""

_NS

new symbolsを定義する。詳細情報は見つからず。オプション。

書式

'_NS'':'  {symbols}

変数

symbols = ['CM_'] ['BA_DEF_'] ['BA_'] ['VAL_'] ['CAT_DEF_'] ['CAT_'] ['FILTER'] ['BA_DEF_DEF_'] ['EV_DATA_'] ['ENVVAR_DATA_'] ['SGTYPE_'] ['SGTYPE_VAL_'] ['BA_DEF_SGTYPE_'] ['BA_SGTYPE_'] ['SIG_TYPE_REF_'] ['VAL_TABLE_'] ['SIG_GROUP_'] ['SIG_VALTYPE_'] ['SIGTYPE_VALTYPE_'] ['BO_TX_BU_'] ['BA_DEF_REL_'] ['BA_REL_'] ['BA_DEF_DEF_REL_'] ['BU_SG_REL_'] ['BU_EV_REL_'] ['BU_BO_REL_'];

使用するシンボルを列挙する。 

備考

使用例

NS_ :
 NS_DESC_
 CM_
 BA_DEF_
 BA_
 VAL_
 CAT_DEF_
 CAT_
 FILTER
 BA_DEF_DEF_
 EV_DATA_
 ENVVAR_DATA_
 SGTYPE_
 SGTYPE_VAL_
 BA_DEF_SGTYPE_
 BA_SGTYPE_
 SIG_TYPE_REF_
 VAL_TABLE_
 SIG_GROUP_
 SIG_VALTYPE_
 SIGTYPE_VALTYPE_
 BO_TX_BU_
 BA_DEF_REL_
 BA_REL_
 BA_DEF_DEF_REL_
 BU_SG_REL_
 BU_EV_REL_
 BU_BO_REL_
 SG_MUL_VAL_

BS_

ビットタイミングを定義する。廃止された項目だがdbcファイル内に必須な項目。

書式

'BS_:' [baudrate':'BTR1','BTR2]

変数

baudrate = unsigned_integer;

ボーレートを設定する。

BTR1 = unsigned_integer;

BTRレジスタのビットタイミング1を設定する。

BTR2 = unsigned_integer;

BTRレジスタのビットタイミング2を設定する。

備考

使用例

BS_:

BU_

dbc内に登場する全てのノードを定義する。必須。

書式

'BU_:' {node_name}

変数

node_name = C_identifier;

ノード名。

備考

使用例

BU_: DUT HCM

VAL_TABLE_

値と文字列を関連付けるグローバルな変換テーブルを定義する。オプション。

書式

'VAL_TABLE_'value_table_name {value_description} ';'

変数

value_table_name = C_identifier;

テーブル名を定義する。

value_description = double char_string;

数値と文字列を関連付ける。

備考

単体ではあまり使われないが、SGTYPE_(通常使われない)で使用する。

使用例

BO_

メッセージを定義する。また、これに続くSG_でシグナルを定義する。必須。

書式

'BO_' message_id message_name ':' message_size transmitter {signal}

変数

message_id = unsigned_integer;

CAN ID。CAN IDのMSBが1の場合、拡張CANとみなされる。dbcファイル内で固有のIDである必要がある。

message_name = C_identifier;

メッセージ名。dbcファイル内で固有の名前である必要がある。

message_size = unsigned_integer;

メッセージのサイズ。単位はバイト。

transmitter = node_name | 'Vector__XXX';

メッセージを送信するノードの名前。node_nameはBU_で定義したものに含まれる必要がある。node_nameの型はC_identifier。送信するノードがない場合は'Vector__XXX'を設定する。

signal = (次節のSG_を参照)

備考

使用例

BO_ 910 DUTData1: 8 DUT
 SG_ SensorVoltage3 : 55|16@0+ (1,0) [0|5000] "mV" HCM
 SG_ SensorVoltage2 : 39|16@0+ (1,0) [0|5000] "mV" HCM
 SG_ SensorVoltage1 : 23|16@0+ (1,0) [0|5000] "mV" HCM
 SG_ SensorVoltage0 : 7|16@0+ (1,0) [0|5000] "mV" HCM

SG_

シグナルを定義する。オプション。

書式

'SG_' signal_name [multiplexer_indicator] ':' start_bit '|' signal_size '@' byte_order value_type '(' factor ',' offset ')''[' minimum '|' maximum ']' unit receiver {',' receiver}

変数

signal_name = C_identifier;

シグナル名。これはメッセージ内で固有の名前である必要がある。

multiplexer_indicator = 'M' | ('m' multiplexer_switch_value);

あるIDの特定のデータ領域を複数のシグナルで共有するマルチプレクサ機能を使用する場合に必要な定義。共有パターンごとにunsigned_integerであるmultiplexer_switch_valueを割り当て、データ領域を共有するシグナルごとにm1, m2等を指定する。どれに切り替えるかは別途データ領域で指定する。このデータ領域を表すシグナルには'M'を指定する。

start_bit = unsigned integer;

シグナルが格納されているデータ領域のスタートビットを指定する。ビット位置は信号のエンディアンにより定義が異なる。下記図を参照。

f:id:donadonasan:20200813160813p:plain

CANデータのビット位置定義 (Racelogic社日本代理店VBOX JAPAN様のRLVBCAN02操作マニュアルより追記転載)

バイト境界をまたぐ場合、シグナルは以下のように成る。

f:id:donadonasan:20200813163224p:plain

バイト境界をまたぐシグナルの取り扱い(https://github.com/eerimoq/cantools/blob/master/cantools/database/can/signal.pyより)

signal_size = unsigned_integer;

シグナルの大きさ。単位はビット。

byte_order = '0' | '1'; (* 0: little endian, 1: big endian *)

シグナルのエンディアンを定義する。0はlittle endian(Intel), 1はbig endian(Motorola)。

value_type = '+' | '-'; (* +: 符号なし, -: 符号あり*)

シグナルの符号あり・符号なしを定義する。

factor = double;

シグナルに適用すべき倍率(ゲイン)を設定する。

offset = double;

シグナルに適用すべきオフセットを設定する。

物理値 = factor × シグナルの値 + offset

minimum = double;

シグナル物理値の最小値。

maximum = double;

シグナル物理値の最大値。

unit = char_string;

シグナルの単位を示す文字列。

receiver = node_name | 'Vector__XXX';

シグナルを受け取るノード名。node_nameはBU_で定義したものに含まれる必要がある。node_nameの型はC_identifier。受信するノードがない場合は'Vector__XXX'を設定する。

備考

シグナルの型はSIG_VALTYPE_で指定可能。特にfloatおよびdoubleはここで指定する必要がある。なお、小数点や符号のある物理値をCANで送る場合はfactorおよびoffsetを用いてシグナルを符号なし整数とし、データサイズを圧縮することが多い。

使用例

BO_を参照。

SIG_VALTYPE_

シグナルの型を定義する。オプション。

書式

'SIG_VALTYPE_' message_id signal_name signal_extended_value_type ';'

変数

message_id = unsigned_integer;

CAN ID。

signal_name = C_identifier;

シグナル名。

signal_extended_value_type = '0' | '1' | '2' | '3';

0: 符号なしまたは符号あり整数

1: 32-bit IEEE浮動小数点 (float)

2: 64-bit IEEE浮動小数点 (double)

3: 不明

備考

SIG_VALTYPE_が未定義の場合、シグナルの型は符号なしまたは符号あり整数とみなされる。

使用例

BO_TX_BU_

メッセージの送信ノードが複数ある場合に定義する。上位プロトコルが本情報を使用する可能性がある。オプション。

書式

'BO_TX_BU_' message_id ':' {transmitter} ';'

変数

message_id = unsigned_integer;

CAN ID。 

transmitter = node_name | 'Vector__XXX';

メッセージを送信するノードの名前。node_nameはBU_で定義したものに含まれる必要がある。node_nameの型はC_identifier。

備考

定義上はtransmitterに'Vector__XXX'を設定できるが、本当に設定できるのか不明。

使用例

VAL_

シグナルまたは環境変数の値から文字列への変換テーブルを定義する。オプション。

書式

シグナル用:

'VAL_' message_id signal_name {value_description} ';'

環境変数用:

'VAL_' env_var_name {value_description} ';'

変数

message_id = unsigned_integer;

CAN ID。

signal_name = C_identifier;

シグナル名。

value_description = double char_string;

値と文字列の関係。

env_var_name = C_identifier;

環境変数名。

備考

シグナルの変換テーブルはシグナルの定義(SG_)後、環境変数の変換テーブルは環境変数の定義(EV_)後にしたほうが良さそうである。

使用例

シグナル用:

VAL_ 300 WARNING_flag 0 "N/A" 1 "WARNING" ;

環境変数用:

VAL_ Move_Stop 1 "On" 0 "Off" ;

EV_

環境変数を定義する。オプション。

書式

'EV_' env_var_name ':' env_var_type '[' minimum '|' maximum ']' unit initial_value ev_id access_type access_node {','access_node} ';'

変数

env_var_name = C_identifier;

環境変数名。

env_var_type = '0' | '1' | '2'; (* 0: integer, 1: float, 2: string *)

環境変数の型。doubleは指定不能環境変数には"Data"型も保存できる。備考を参照。

minimum = double;

値の最小値。

maximum = double;

値の最大値。

unit = char_string;

値の単位。

initial_value = double;

値の初期値。

ev_id = unsigned_integer; (* 廃止 *)

廃止されているが何らかの値を設定する必要がある。

access_type = 'DUMMY_NODE_VECTOR0' | 'DUMMY_NODE_VECTOR1' | 'DUMMY_NODE_VECTOR2' | 'DUMMY_NODE_VECTOR3'; (* 0: 無制限, 1: read, 2: write, 3: readWrite *) 

access_nodeに許可するアクセス権限。

access_node = node_name | 'VECTOR__XXX';

環境変数へのアクセスを許可するノード。node_nameはBU_で定義したものに含まれる必要がある。node_nameの型はC_identifier。アクセスするノードがない場合は'Vector__XXX'を設定する。

備考

"Data"型を保存したい場合はENVVAR_DATA_にて対象変数名およびデータサイズを指定する。

使用例

EV_ Back_ECU_status: 0 [0|0] "" 0 1 DUMMY_NODE_VECTOR0 Vector__XXX;

ENVVAR_DATA_

環境変数のデータサイズを指定する。オプション。

書式

'ENVVAR_DATA_' env_var_name ':' data_size ';'

変数

env_var_name = C_identifier;

環境変数名。

data_size = unsigned_integer;

データサイズ。単位はバイト。

備考

ENVVAR_DATA_にてデータサイズを指定された環境変数は独自の型"Data"となる。これにより指定された環境変数は任意のデータ長とできる。

使用例

 SGTYPE_

複数のシグナルに共通するプロパティを設定する。通常使われない。オプション。

書式

共通プロパティの定義

'SGTYPE_' signal_type_name ':' signal_size '@' byte_order value_type '(' factor ',' offset ')''[' minimum '|' maximum ']' unit default_value','value_table ';'

シグナルと共通プロパティの関連付け

'SGTYPE_' message_id signal_name ':' signal_type_name ';'

変数

signal_type_name = C_identifier;

シグナルタイプ名。

signal_size = unsigned_integer;

シグナルの大きさ。単位はビット。

byte_order = '0' | '1'; (* 0: little endian, 1: big endian *)

シグナルのエンディアンを定義する。0はlittle endian(Intel), 1はbig endian(Motorola)。

value_type = '+' | '-'; (* +: 符号なし, -: 符号あり*)

シグナルの符号あり・符号なしを定義する。

factor = double;

シグナルに適用すべき倍率(ゲイン)を設定する。

offset = double;

シグナルに適用すべきオフセットを設定する。

物理値 = factor × シグナルの値 + offset

minimum = double;

シグナル物理値の最小値。

maximum = double;

シグナル物理値の最大値。

unit = char_string;

シグナルの単位を示す文字列。

default_value = double;

値のデフォルト値。

value_table = value_table_name;

VAL_TABLE_にて作成した値と文字列の関係テーブルであるvalue_tableの名前を指定する。型はC_identifier。

message_id = unsigned_integer;

CAN ID。

signal_name = C_identifier;

シグナル名。

 備考

value_tableは省略できない。そのため、関係テーブルを使わない場合でもダミーのテーブルが必要と思われる。

使用例

SIG_GROUP_

メッセージ内のシグナルのグループを定義する。オプション。

書式

'SIG_GROUP_'  message_id signal_group_name repetitions ':' {signal_name} ';'

変数

message_id = unsigned_integer;

CAN ID。

 signal_group_name = C_identifier;

グループ名。

repetitions = unsigned_integer;

繰り返し回数。

signal_name = C_identifier;

シグナル名。

 備考

使用例

CM_

コメント(説明)を設定する。

書式

'CM_' (comment |
  'BU_' node_name comment |
  'BO_' message_id comment |
  'SG_' message_id signal_name comment |
  'EV_' env_var_name comment)

  ';'

変数

comment = char_string;

コメント。説明。

node_name = C_identifier;

ノード名。

message_id = unsigned_integer;

CAN ID。

signal_name = C_identifier;

シグナル名。 

env_var_name = C_identifier;

環境変数名。

備考

一番最初のcommentのみの書式が、何のためにあるのかは不明。

使用例

CM_ BO_ 1920 "This is a auto-generated message for not used signals.";

BA_DEF_

ユーザー定義属性を定義する。ここで定義した属性の値はBA_DEF_DEF_を用いてデフォルト値を設定する必要がある。個別の属性の値はBA_にて指定できる。オプション。

書式

'BA_DEF_' object_type attribute_name attribute_value_type ';'

変数

object_type = '' | 'BU_' | 'BO_' | 'SG_' | 'EV_';

ユーザー定義属性を付与するオブジェクトのタイプを指定する。

attribute_name = '"' C_identifier '"';

ユーザー定義属性の名前。

attribute_value_type = ('INT' minimum_integer maximum_integer) |
  ('HEX' minimum_integer maximum_integer) |
  ('FLOAT' minimum maximum) |
  ('STRING') |
  ('ENUM' [enum_name { ','enum_name}];

ユーザー定義属性の型を設定する。minimum_integer = signed_integer; maximum_integer = signed_integer; minimum = double; maximum = double; でそれぞれ値の最小値と最大値を定める。enum_name = char_string; でENUMの文字列を定める。ユーザー定義属性は通信等に現れないため、各文字列がどの数値に割り当てられるかはユーザーから隠蔽されている模様。

備考

使用例

BA_DEF_ BU_ "DiagNode"ENUM"No","Yes";

BA_DEF_DEF_ "DiagNode""Yes";

BA_ "DiagNode" BU_ Tester "No";

BA_DEF_DEF_

ユーザー定義属性のデフォルト値を設定する。オプション。

書式

'BA_DEF_DEF_' attribute_name attribute_value';'

変数

attribute_name = '"' C_identifier '"';

ユーザー定義属性の名前。

 attribute_value = unsigned_integer | signed_integer | double | char_string;

デフォルト値。unsigned_integerをわざわざ含めている理由は不明。

備考

使用例

BA_DEF_を参照。

BA_

ユーザー定義属性の値を個別に設定する。オプション。

書式

'BA_' attribute_name (attribute_value) |
  ('BU_' node_name attribute_value) |
  ('BO_' message_id attribute_value) |
  ('SG_' message_id signal_name attribute_value) |
  ('EV_' env_var_name attribute_value)
  ';'

変数

attribute_name = '"' C_identifier '"';

ユーザー定義属性の名前。

 attribute_value = unsigned_integer | signed_integer | double | char_string;

デフォルト値。unsigned_integerをわざわざ含めている理由は不明。

node_name = C_identifier;

ノード名。

message_id = unsigned_integer;

CAN ID。

signal_name = C_identifier;

シグナル名。 

env_var_name = C_identifier;

環境変数名。

 備考

使用例

BA_DEF_を参照。

画面右下に出るクリックできないアイコンの消し方(NVIDIA GeForce Experience ステータスインジケーター)

$
0
0

画面右下に出る、クリックできない矢印が円を描いているアイコンの消し方を説明します。

f:id:donadonasan:20200910115203p:plain

画面右下に出る、クリックできないアイコン

これはNVIDIAGeForce Experienceというソフトが画面の録画状態を示すために表示しているアイコンです。これは、同ソフトのHUDレイアウト設定で非表示にできます(2020/09現在)。この設定を開く手順は2通りあります。まずは手順Aを試してみてください。うまく行かなかった場合は手順Bをどうぞ。

手順A ホットキーを使って設定を開くやりかた

1. AltキーとZキーを同時に押す。以下のような画面が出てきたらOK。出てこなかった場合は、手順Bを試してください。

f:id:donadonasan:20200910120232p:plain

GeForce Experience コントロール画面(仮称)

2. 設定アイコンをクリックする。

f:id:donadonasan:20200910120356p:plain

設定アイコン

3. HUDレイアウトをクリックする。

f:id:donadonasan:20200910120457p:plain

HUDレイアウト

4. ステータスインジケーターをクリックする。

f:id:donadonasan:20200910120545p:plain

ステータスインジケーター

5. オフを選ぶ。

f:id:donadonasan:20200910120643p:plain

ステータスインジケーターをオフにする

これで消えました。

手順B GeForce Experienceを起動して設定を開くやり方

1. 画面右下の通知領域よりNVIDIA設定を右クリックし、NVIDIAGeForce Experienceをクリックする。

f:id:donadonasan:20200910120854p:plain

NVIDIA設定

f:id:donadonasan:20200910121026p:plain

NVIDIAGeForce Experience

2. 設定アイコンをクリックする。

f:id:donadonasan:20200910121332p:plain

設定アイコン

3. 「ゲーム内のオーバーレイ」の設定ボタンをクリックする。

f:id:donadonasan:20200910121444p:plain

「ゲーム内のオーバーレイ」の設定ボタン

4. HUDレイアウトをクリックする。

f:id:donadonasan:20200910120457p:plain

HUDレイアウト

5. ステータスインジケーターをクリックする。

f:id:donadonasan:20200910120545p:plain

ステータスインジケーター

6. オフを選ぶ。

f:id:donadonasan:20200910120643p:plain

ステータスインジケーターをオフにする

これで消えました。

Viewing all 551 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>