2023年12月13日水曜日

WindowsをDISMのrestorehealthで修復するときのSourceについて

 クッソ苦労したからメモっておこう。

windows updateに失敗するようになったから、sfc /scannowしたら、ファイル壊れてるって言われたんだ。

DISM /online /cleanup-image /restorehealth /Source:~ /LimitAccess

で修復するんだけど、/Sourceに何を指定するかってのがキモだよたぶん。

wimを指定するとかisoファイルからぶっこぬくとかいろいろ試したけどよぉ~結果的には

修正しようとしているバージョンと同じwindowsを修復ソースにしないといけなかったZE☆

osビルドバージョンまで合わせないとうまくいかなかったんだZE☆

windows updateを適用している環境だと、インストールメディアisoからぶっこぬいてもビルドバージョンが一致していないせいか、

"ソースファイルが見つかりませんでした"

とか言われるんだ!無慈悲!


で、VMに修復ソースを作ってぶち込んでみたら成功しました。

1. VirtualBoxにインストールメディアからベースのwindowを入れる。

2. ビルドバージョンが一致するwindows updateをMicrosoft®Update カタログから探してきて、1.のVMに適用する。

3.  VM上のwindowsバージョンと修復する側の windowsバージョンが一致することを確認する。

4. 構築したVMのC:\Windowsフォルダを共有フォルダ経由か何かでどうにかして持ってきて、修正ソースに指定してDISMを実行する。

ざっくりこんな感じで何とか修復に成功したってわけ。



 

 

 


2023年11月8日水曜日

tcpをポートフォワードする


PC1にサーバを立ち上げ、PC1からSSHサーバに接続し、PC2 からPC1にSSHサーバ経由でPC1のサーバに繋ぐ時のメモ

 

1.sshサーバに接続する

2.名前付きパイプを作る

$ mkfifo fifo

2.名前付きパイプを通して通信を転送する

 $ nc -lt sshサーバでリッスンするポート番号 < fifo |nc PC1のIP PC1のポート番号 > fifo

-l:リッスン

-t: tcp



*socatでも可


2023年10月30日月曜日

VC++の共通言語ランタイムサポートで.NetFrameworkのバージョンを指定する方法(VisualStudio2022)

1. ソリューションエクスプローラーで、プロジェクトを右クリックしてプロパティを開く。

2. 構成プロパティ->詳細->C++/CLIプロパティの、".Net Framework対象バージョン"に対象のバージョンを設定する。 


遭遇した問題は、

・昔のプロジェクトで、C++で作ったDLLをC#から呼ぶようにしていた。

・(たぶん)VisualStudioのバージョンが上がったせいで、デフォルトの".Net Framework対象バージョン"も上がっていて、C#側とバージョンが一致しなくなっていた。

というもの。

明示的に指定すればよさげ。

 

2023年8月12日土曜日

chrome(115.0.5790.171)右クリックメニューのサイドバー検索を無効にする

chromeアドレスバーに

chrome://flags/#csc

と入力してcscを"Disabled"に設定してRelaunchする。

 

過去バージョンだと 

chrome://flags/#search-web-in-side-panel

chrome://flags/#side-search

をdisabledにする方法だったらしいが、私の現環境(115.0.5790.171)だとこれらは無駄だった。めんどくさいなぁ。

サイドパネル検索って個人的には使いにくいんだよね。狭いし。 

バージョン変わったらまたやり方変わるんだろうなーめんどくせぇ

 

2023年7月29日土曜日

G304のスクロールが逆になる

G304のセンターホイールの挙動が怪しくなった件について

下スクロールしても上スクロールしたりする。

某サイトのレビューをみるに、同じ症状の人がちらほらいるっぽい。

ホコリを飛ばす程度の掃除では改善しなかった。

接点復活剤で掃除したら直ったけど、分解しないといけないんだよね…。

分解するにはマウスソール外さないといけないんよね。

マウスソールはがしても頑張れば元に戻せるけど 、交換品がアマゾンに売っている。

買い直すより掃除してみたほうがいいよ!

 

2023年7月18日火曜日

CNGでECDSAのメモ

    Cryptography API: Next GenerationでECDSAでDH鍵交換し、AESで暗号化する処理の大まかな流れのメモ。
  1. BCryptOpenAlgorithmProviderで鍵交換用プロバイダー(BCRYPT_ECDH_P256_ALGORITHM)を開く。
  2. BCryptGenerateKeyPairでキーペアを作成。
  3. BCryptFinalizeKeyPairでキーペアを作成を完成させる。
  4. BCryptExportKeyで公開鍵をエクスポートする。
  5. 相手に自身の公開鍵を渡す。
  6. 相手から相手の公開鍵を受け取る。 
  7. 受け取った公開鍵をBCryptImportKeyでインポートする。 
  8. BCryptSecretAgreementで、自身の秘密鍵と受け取った公開鍵で共有シークレット を作成する。
  9. BCryptDeriveKeyで、共有シークレットから派生鍵(共通鍵)を作成する。
  10. BCryptOpenAlgorithmProviderで、暗号化用プロバイダー(BCRYPT_AES_ALGORITHM)を開く
  11. BCryptGenerateSymmetricKeyで、共通鍵のためのキーオブジェクトを作成する。
  12. BCryptEncryptでメッセージを暗号化する。
  13. BCryptDecrypt でメッセージを復号化する。
  14. BCryptDestroySecretでシークレットアグリーメントを削除する。
  15. BCryptDestroyKeyでキーを破棄する
  16.  BCryptCloseAlgorithmProvider でプロバイダを閉じる。

 

うーん、めんどくさい。。

ちょっとしたメモ

  • CNGはハンドル(プロバイダハンドルやキーハンドル)でいろいろ操作する 
  • 生のキーデータを取るには BCryptExportKeyを使う。ここでとれるのはBLOB形式で、実際の生データはBCRYPT_ECCKEY_BLOBなどの構造体の後に続く形で格納されてる。共通シークレット取れる。共有シークレットはリトルエンディアンになっているので注意。また秘密鍵BLOBは公開鍵も含んでいる。例えばECDSAの秘密鍵のBLOBは

 BCRYPT_ECCKEY_BLOB
BYTE X[cbKey] 公開鍵のX
BYTE Y[cbKey] 公開鍵のY
BYTE d[cbKey] 秘密鍵

となっている。

公開鍵をのblob は、

BCRYPT_ECCKEY_BLOB
BYTE X[cbKey] 公開鍵のX
BYTE Y[cbKey] 公開鍵のY

となっている。




2023年5月13日土曜日

PrivateGPTをローカルで動かしてみた(動かなかった!!)

先に結論を言っとくと、環境がちょっと古すぎて、cpuが拡張命令をサポートしてないせいでコアダンプしてるっぽい

privategpt.ioじゃなくて、githubの方の話
(ていうかこれ名前同じで紛らわしいんだけど、それぞれ別モンだよね?)

実行結果は見ての通りで、お亡くなりになりましたわよ

$python privateGPT.py
llama.cpp: loading model from models/ggml-model-q4_0.bin
llama.cpp: can't use mmap because tensors are not aligned; convert to new format to avoid this
llama_model_load_internal: format     = 'ggml' (old version with low tokenizer quality and no mmap support)
llama_model_load_internal: n_vocab    = 32000
llama_model_load_internal: n_ctx      = 1000
llama_model_load_internal: n_embd     = 4096
llama_model_load_internal: n_mult     = 256
llama_model_load_internal: n_head     = 32
llama_model_load_internal: n_layer    = 32
llama_model_load_internal: n_rot      = 128
llama_model_load_internal: ftype      = 2 (mostly Q4_0)
llama_model_load_internal: n_ff       = 11008
llama_model_load_internal: n_parts    = 1
llama_model_load_internal: model size = 7B
llama_model_load_internal: ggml ctx size = 4113748.20 KB
llama_model_load_internal: mem required  = 5809.33 MB (+ 2052.00 MB per state)
...................................................................................................
.
llama_init_from_file: kv self size  = 1000.00 MB
AVX = 1 | AVX2 = 0 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 0 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 | 
Using embedded DuckDB with persistence: data will be stored in: db
Illegal instruction (コアダンプ)

で、どんな環境でやったのかって言うと、cpuは Ivy Bridge世代(i5-3550)でosはlinux(Manjaro)。GPUは…何だったかな、Radeon HD6600とかそんなんだったと思う(多分gpu関係ないけど)。ちょっと調べた感じではどうもavx2が使えないとだめっぽいです。ほえ〜
テストデータ state of the union transcript の読み込みは完走した。ただしクッソ時間かかる。2時間くらい?メモリは8Gくらいだったから、クッソ遅いのはメモリのせいかも。いややっぱCPUだな古いし。
動かせたら青空文庫のテキストをデータセットにして見ようと思っていたんだけど、キッツそう。
まあ、動いてないんですけどね

2023年5月12日金曜日

MSアカウントで"このアカウントには、親または保護者の同意が必要です。"とか言われた

知らんがな(´・ω・`)
とりあえず、アカウントに対して別のアカウントを親のアカウントとして紐づけてから、問題のアカウントの生年月日を修正して、ファミリーグループから削除すればいいっぽい。
…のだが、ググって出てくるメニュー選択項目が見当たらないんだが!サイトのレイアウトが変わってらぁ!
面倒くせぇ!!

頑張ってメニューを見つけたぞ‥‥。わかりにくいわ!
現時点では、Family Saftyなるサイトに、紐づけた親アカウントで入って、
1. 右上メニューの"ファミリー設定"
2. 変更したい、子アカウントを選択
3. 同意を管理する
4. このお子様の個人情報を編集

で編集できた。
そのあと、子のアカウントを"ファミリーグループから削除"で削除できる。
で、ファミリーグループの削除は、グループに一人もいない状態にならんとエラーになる
(エラーの原因を言えこのやろう…なんで削除できないのかわかりにくいわ!)
あくまで今の時点でのメニューなので変わっててもても知らん!!

2023年5月2日火曜日

PS4Macroが動かない(から頑張って動くようにしてみた)

PS Remote Play 6.0.0にするとPS4Macroは動かなくなるみたい、つら…
ダウングレードするしかねぇなぁ。

 でも昔のインストーラでダウングレードしても起動するとアップデート走っちゃうんだよね。

いろいろ調べてたら方法はあるっぽい
I need help: PS4Macro doesn't work anymore
このリンク先の方法で、現時点では動作することが確認できた

旧バージョンを入れた後、自動アップデートしないように細工をしてからプレイをするのだ!

必要なものは上記ページ内のリンクから飛べるから頑張ってやで。


ご利用は自己責任でね!

2023年5月1日月曜日

マイナポイントの申し込みってさぁ

これ、高齢者とかITリテラシー低い人には無理ゲーなのでは…
スマホだともっと簡単なのか?
PCでやったけど、高齢者にこれは無理だって…
IDと名のつくものが複数あって、サービスと名の付くものが複数あって、コードと名の付くものが複数あって…
なんでそうなっているのかは分かるけどさぁ…無理だって!w
分からん人は分かる人に聞くか、解説ページを頑張って読み解くしかない
大変やで…

個人的にはこれにしか使わないソフトウェアをPCにインストールするのがとても気持ち悪いです。
これも必要なのはわかるけど、なんか気持ち悪いんだよね。一度しか使わないアプリをインストーラで入れるのって
単体exe、で使ったらポイーできるほうがすっきりしていいんですけど、個人的には

2023年4月23日日曜日

Versa h17にAK400は入るのか⁉

結論:入る


まぁ、versa h17の公称cpuクーラー高が155mmだから、入らないと困るんだけど。
ギリギリなのかなー?と思っていたけど、サイドパネルまでの余裕は割とある、と思う。たぶん。
少なくともギリッギリじゃぁないよ。
とはいえ公称155mmなので、155mmまでが無難でしょうね。
あ、あとAK400はグリス付いています、ココアプレートに塗り済みの状態ね

設置して気になったのはクーラー高より、クーラーと隙間ですね。
PCI-Eの爪で固定するタイプで、クーラーとグラボの隙間が狭すぎて、するとPCI-Eの爪を外すのが難儀しそう
microATXだから仕方ないね。グラボ外すのにPCI-Eの爪を押すためにはクーラーを外さないとダメかもしれん・・・
クーラーのファン外すだけで行けるかなぁ・・無理かなぁ。。
まあそんなにグラボほいほい変えないし、まぁいいか!


cpu付属クーラーが爆音で回ることがあってうるさかったけど、変えたら静か~
評判通りコスパは良さそうです

2023年3月23日木曜日

jacksonでdate型のフォーマットを指定する方法のメモ

とりあえず簡単に。
var objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
var map = objectMapper.readValue(new Fiule("hogejson.json"),hoge.class)

2023年3月2日木曜日

マウスの右クリックが効かない!!

困ったねー
そんなんときはとりあえず分解だ!
どうせ壊れているんだ!分解して壊れても関係ねぇ!
で、なぜか分解するだけで直ることがあるんですよねー不思議ですねー
たぶん接触がちょーっと悪くなってたとか、たぶんそんななんだと思うけど
直ったからいいや!

2023年2月1日水曜日

ようつべ2窓すると動画が途切れる件

症状

windows10環境。Edgeでyoutubeを2窓すると、動画が途切れたり、ぐるぐる~になる。PCスペック上は余裕。ハードウェアアクセラレーションを切ると起きないっぽい。

原因

ドライバの既知の不具合だった。具体的には、Radeonの現時点での最新版、Adrenalin 22.11.2で発生する。ていうかrelease noteの既知の不具合に書いてあった。

https://www.amd.com/en/support/kb/release-notes/rn-rad-win-22-11-2

Intermittent system stuttering or UI flickering may occur when two videos are simultaneously playing using chromium-based browsers.

意訳;chromeベースのブラウザで2窓再生するとのカクつきや UIのちらつきが起こるかもよ!

直し方

ドライバをダウングレードした。手順は以下。

  1. ひとつ前のドライバ(Adrenalin 22.5.1)をダウンロードする。
  2. AMD Cleanup Utilityで既存ドライバを削除する https://www.amd.com/ja/support/kb/faq/gpu-601
  3. ダウンロードしたひとつ前のドライバをインストールする。

結果

自分の環境では治ったっぽい。やっぱドライバだったってオチです。

追記:Adrenalin 23.2.1 (2023年2月14日)で直ったらしいです

2023年1月28日土曜日

gccのpredefine macroでc++のバージョンを指定する方法のメモ

サクッと以下のような感じで
#if __cplusplus == 201703L // C++17
#elif __cplusplus == 201402L //C++14
#elif __cplusplus == 201103L //C++11
#else // Unknown
#endif

2023年1月24日火曜日

GUIDを文字列で出力する方法のメモ

デバッグのためにGUIDを標準出力に出したかっただけ。

GUID guid; //何かGUIDを取得する処理 WCHAR strGUID[39]; //要combaseapi.h StringFromGUID2(guid, strGUID, 39); std::wcout << strGUID << std::endl;

2023年1月21日土曜日

C++でバイナリファイルを読む方法のメモ

バイナリファイルを一度で読みたかったので。ほかにもいろいろ方法はあると思うけど、とりあえず簡易に。

C++11以降。たぶん1バイトずつ読むので、大きいファイルだと遅いかも(知らんけど)。

#include <string> #include <iostream> #include <fstream> #include <vector> std::vector<char> readAllBinary(const std::string& fileName){ std::fstream file(fileName, std::ios::in | std::ios::binary); std::vector<char> buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); file.close(); return buffer; } int main(){ std::string filePath="m_01.jp"; auto vecBuffer = readAllBinary(filePath); //ファイルの読み込みに失敗している場合サイズは0になる。 std::cout << "FileSize: " << vecBuffer.size() << std::endl; //buffer pointer char* buffdata = vecBuffer.data(); // some process return 0; }

2023年1月15日日曜日

VisualStudioでcmakeしたらエラーになった件

visual studioでcmakeしようとしたらエラーになった

こんなエラーが出た

CMake Error: CMAKE_CSharp_COMPILER not set, after EnableLanguage

こうしたら通った

CMakeジェネレータから適切なものを選択する。

設定方法は、

  1. cmakeの設定を開く。開き方は、cmakeの概要ページから開くか、CmakeSettings.jsonを右クリック->ファイルを開くアプリケーションを選択->CMakeエディターで開く。
  2. "高度な設定を表示する"を選択 CMakeジェネレータから適切なものを選択する。自分の場合、VS2022(x64)だったので、"Visual Studio 17 2922 Win64"を選択した。
  3. Ctl+Sとかで保存。
  4. ソリューションエクスプローラーから、プロジェクトを選択して、"キャッシュの削除と再構成"を行う。