投稿

マウスを更新 Logi M750

 マウス、安いようで高い消耗品なのでしばらく使っていないとゴム感でねっとりしたり。 今回は新しくLinux機としてミニPCを買ってみたらWindows機としても使えそうだったので追加でマウスも足してみた。古いマウスはところどころ調子が悪い。 Logi M750は3台のWindows/Macで切り換えで使えるワイヤレスマウスでUSB AのBolt系ドングルとBluetooth LE対応。同じ3PC対応キーボードとセットで使うのもいいかもしれない。 2サイズあるが小さい方は今までと似たようなサイズ感だった。 基本的にはドングルで繋いでおくと無難。Windowsは繋ぐだけで専用アプリもセットアップされる。BluetoothだとBIOSなどがつつけない、OS毎に設定が必要などいろいろ制約があったりする。 M750はPC切り換えスイッチが背面に移動してしまったので基本的にはPC間の移動はFlowアプリで画面の端に行けば移動するという形。Windows/Mac専用で使うならいいか。Android/Linux用などドライバがない環境には向かないかもしれない。 PC切り換えボタンの代わりにスピード変更ボタン的なものがついている。他の機能も割当可能だが切り換えには使えず。 あとはホイールの横スライドスイッチがなくなっている。特に使っては無いけど。 ホイールはやや力を込めてまわすと惰性でずっと回転するタイプ。下向きだけ。まわりすぎてやや困る。 同じ部屋で2台3台同時に使うのでなければ切り替えは要らないかなという結論?

Ryzen 5 5600H なミニPCをLinux用に買ってWindowsをみてみる

PCを選ぶとき、必要ないものを削るとさくっと安くなったりする。今回はLinux用というところでGPUをCPU統合の最小な感じにしてみた。 必要なのはCPU、メモリ、SSD、ネットのみ。拡張性も不要。 中華っぽいmini PCが安いのでRaspberryPiの高性能版くらいの感覚でLinuxで使えるかもと買ってみる。ミニPCとかNUCと呼ばれている括り? ノートPCから入出力(ディスプレイ、キーボード、タッチパッド)とバッテリーを取り除いたような構成。 Intel版だと安いのはN100らしいが4コア4スレッド。AMD系はZen 2, Zen 3世代、Ryzen 5や7, 9のノートPC版APUがあって手頃なのは5600(Zen3 6Core), 5700(Zen2), 5800(Zen3 8Core) くらいの型番。シングルコア性能重視でZen 2よりはZen 3にしておきたいところ。 今回はZen 3世代でRyzen 7 5800H 32GB, 1TB(クーポンで6万円台くらい)にしようかと思ったが Ryzen 5 5600HでRyzen Proらしいメモリ16GB、SSDは 512GBというところにしてみた。Windows 11 Pro入り3万円台の謎。RaspberryPi 4Bの8GBモデルが1万円くらいなことを考えるとお得。Ryzenだけ5600Hに落として32GB,1TBでも4万円台くらいか。Linuxや2台目Windowsではメモリディスクそんなに使わないかもと思ったので最小にした。高性能GPU単体より安い。 サイズ的には11.4cmx10cmx5cm程度。 放熱が気になるが、そういう使い方はしないはず。キーボード、マウス、ディスプレイ(HDMIx2,USB-C)とWi-FiかEthernetで接続先があれば使える。電源は本体よりやや長い感じのACアダプタでUSB-C給電では使えない。 HDMIケーブルは4K 60Hzなどの高速転送には若干不安なので別のケーブルもあるといいのかも。 M.2 NVMe は2280の標準的なサイズと2242のハーフサイズぐらいまでのが使えるようなので増設する場合は小さいものを選ばないといけなさそう。Windowsを残して交換してみるのもいいのかも。 WindowsのドライバがAmazonから直接リンクされているようなサポート

DockerとPodman

DockerとかPodman とか仮想っぽいものをつついてみる。 Linuxのカーネルの機能で複数環境を切り盛りする系のいろいろ Dockerさん入れてみた Docker Compose 2種類あるよ というわけで進化も速いとドキュメントも古いぞ、ということになったり。 継ぎ接ぎだらけで調べてみたりしている。 どのツールが残ってるのかわからんな。Machineってなに、どこに機能移行したの。 RaspberryPi に入れてみたり、Windows に Docker Desktop 入れてみたり。 Minecraft の バニラとかPaperMeのとか入れてみたらそれなりに動いたり動かなかったり癖ありな感じはする。 最近のJREの作り方も把握した。 これでイメージファイル小さくはできるけどそこそこ大きいのは大きい。ディスクがあればメモリー消費するのでもないからいいか。 Podmanの本が出ていた? ようなので半額ポイントバック買い。Dockerよりいろいろできそう。Podman Desktopの1.5も出てるっぽいので入れてみるとDockerと併用できる。どっちが走ってるんだかわからない状態。 Podman Desktop (Windows, Mac, Linux) Podman イン・アクション (電子書籍版) Docker 互換な上でGoogleのKubeなんとか寄りのことなどもできるとか。 RaspberryPiにもDockerを消し去って入れてみる。v3.0系しか入らなかったのでdocker compose 互換がない。 test版でバージョンあげてみようとして失敗。RaspberryPi OS を最新版で入れ直し。Podman v4.3.1 くらいがそのまま入ったよ。 podman-compose が使えるようになっていた。docker.io が省略できない以外はだいたい同じでも動くのかな。imageの残り方がなんか違う気もする。 dockerでbuild するのとdocker composeでbuildするのと環境変数の指定が違うのかどうなのか。パラメータの多いdocker / podman 単体で使いたくないので苦戦。 dockerとpodman、基本は同じなのでそれ以降行かないならどっち使ってもいい気がした。 古い環境はdockerの方が入れやすそ

Lenovo Tablet P11 Pro (2nd) でサブディスプレイ

製品案内ではMiracastでサブディスプレイにできる、とか書かれていたLenovo Tablet P11 Pro (2nd) だが、方法がわからず。 設定のどこかでできるっぽい記述もあるが、今はそんな項目もなく。 結局Lenovo Freestyle というアプリでサブディスプレイ化することが判明。 同じアカウントで設定して共有、あっさりできたが何か違わないか?

AES高速化をもう少し

割と最速だったJavaで作ったAES実装もJDKのAESがOpenSSLかなにかのハードウェア実装を使うようになったおかげで数倍の差がついてしまった。KCyper-2がまだよくわからないのでAESをつついてみたりPKIの方を見たり。 Intel CPU にはAES NI というAESの計算補助的なものがあり、AMD Ryzen 2600X でも使えるようになっていて速くなる。OpenSSLが対応しているのでJavaでもOpenSSL経由でいつのまにか使えるようになっていて、高速処理ができている。 AES NIもたぶん途中の計算をまとめられるだけまとめてあらかじめ計算しておき配列に押し込んで高速化をする手法。 ソフト的にも高速化していくと同じような実装になって普通に解説されているような実装の数十倍はやくなる。 特に競ってみようというわけではないが、いろいろなハッシュや暗号を実装してみるなかでAESも乗せてみたついでに高速化もしてみたというのが前回くらい。32bitまとめるところで高速化ができたが、64bitにしてみたらもう少し速くなった気がするのでそのあたりで止めておいた。 decode側は最適化をどうやればいいのかと思っていたら、計算順を変えることでencodeと同じように最適化できることもわかったので割と高速な方にすることはできた。encodeと同じように64bit化したらencode以上に速くなった。  AES-CBC Ryzen 7 5800X で 初期値 1400Mbps、JavaのJITが効いてくると1650Mbpsくらいまで速くなる印象。AES-NIだと初期値2500Mbpsくらいなのでかなり追いついている。AES単体だとまだまだ差は大きいが今は未計測。 元になるAESのコードが跡形もなくなってきているので、原型を留めたコードを別に残しておかないと何の参考にもならないなと。 速度比較、AES単体ではなく若干実用的なAES-CBCで比較してみることにして、JDKのコードと2倍くらいの差まで迫ることができる。ということはJDKのCBCが遅いのか。CBCで64bit演算してそのままAESに持っていくことで高速化できている感じ。JDKはそのあたりが遅い印象。 最近の主流はCBCからGCMかなんかになってきているようなので、そっちも実装したいが仕様だけ見てコード自

RSA鍵を作る

最近暗号系をいろいろ実装してみている中で PKCS #1 の RSA も必要になってきたので実装してみた。中身がわからないと使いにくいタイプ。 RSA は公開鍵暗号という形で秘密鍵、公開鍵の2つの鍵を使う。AESなどの共通鍵暗号とは違うところ。 公開鍵で暗号化、秘密鍵で復号ができるのがひとつめ。 秘密鍵で署名。公開鍵で検証。これが2つめ。  公開鍵暗号共通の特徴ではなくRSAの特徴のようなので注意。 アルゴリズム的にはガロア体と同じようなものを作って2つの状態を行き来してる感じがした。 何に使えるのか。ひととおりバイト列の暗号化などにも使えるが、速さが出ないので署名用途の方が主流で暗号化も一部用途に限定して使う場合が多い。 秘密鍵と公開鍵の中身を見ていく。 RSAは大きい数の因数分解が難しいというところから作られているので2つの素数から鍵を作る。 素数(prime)2つ(pとq)を決める。2048ビットのRSAだと1024ビットくらいの素数を2つ。今なら3072ビットくらいが最低ラインになってきているので1536ビットくらいの素数を2つ。 Java で作るのでいろいろ省略できるところは省略する。 乱数はjava.math.SecureRandom っぽいところから。安全かどうかは不明。他の要素があればいろいろ混ぜるとより安全かも。普通のRandomは安全ではない。 SecureRandom srnd = SecureRandom.getInstanceStorong(); BigInteger p = BigInteger.probablePrime( len / 2, srnd ); BigInteger q = BigInteger.probablePrime( len / 2, srnd ); これで素数2つを作ってくれるのでおまかせ。素数ではない場合もあるらしい。 modulus 素数2つを掛けたもの 変数名は n など。 BigInteger n = p.multiply(q); // n = p * q nをpとqに素因数分解するのが難しい。 次はeとdという指数(exponent)を決めていく。 eは公開指数(public exponent)、dは秘密指数(private exponent)。 e * d = 1 mod (p - 1)(q - 1)

Ryzen 7 5800X CPU変えたら爆速か?

次世代のZen 4が迫ってきてZen 3のRyzen 5000系が値下がってきたので現状のシステム構成のままでゲームに最適らしいシングルダイのRyzen  7 5800X を購入してCPU(とクーラー)だけ差し替えてみることにした。 現状の基本構成 AMD Ryzen 5 2600X (付属クーラー) → Ryzen 7 5800X + DEEPCOOL ASSASSIN Ⅲ ASUS TUF X470 PLUS-GAMING DDR4 3200? 8GBx6枚くらい所有(混合) Palit GeForce RTX 2070 ? Storage Transcend NVME 1TB? Intel AX200 (Wi-Fi 6 + Bluetooth 5) Zen 2直前くらいのマザーボードだがZen 3も問題なし。 PCI-Expressが3.0なのでNVME なところに影響あるかもくらい。UEFIもX5800X3D対応版が出ていたので必要ないが更新しておいたり。 Zen 2ですらないかもしれないが、メモリは高クロックまでオーバークロック対応するものを持っていたりする。CPUの影響であまり上げられなかったが。 Ryzen 7 5800X以上になると暴れもののようで発熱が多いらしく(簡易)水冷推奨でCPUクーラーがついてこない。最適なのはどのあたりかなと見てみたところ、空冷ではほぼ壊滅状態のようなので、空冷最上級らしいDEEPCOOL ASSASSIN Ⅲとやらを購入してみることにした。横から風を当てて冷やすタイプでファンも2個ついている。交換用のドライバ(物理)もついているのでお得。 水冷よりは安い、が体積がお化けでケースに収まるのかどうかわからない。メモリーと干渉するとファンがはみ出てアウト、という前提で購入。サイズはそれなりに大きい。 アップデート もともと対応バージョンにはなっているが、事前にBIOS/UEFIをアップデートしておく。 UEFI更新だけでCPU変えてさくっと動くのはすごいところか。チップセットドライバなどは交換前でも後でも最新版にしておくのがいいかもしれない。 ASUS BIOS Update AMD チップセットドライバ Windows Update それぞれ最新版にしておく 交換 Ryzen 5 2600X を取り外す。CPUグリスが乾いて