icon

実際壊れたのは異音してたHDDで、SSDはなんで認識しなくなったのか良く分からずで、こうして何もしてないのに復帰すると、ほんとなんだったんだって感じだ

多分異音出したHDDを、シャットダウンせずうっかり休止モード中に引っこ抜いて復帰したのが、何故か分からんけどSSDにも影響してしまったのかなって思ってたけど、それ位しか思いつかないし・・・

icon

ファイルの中身がおかしくなってないかとかはまだ残るけど、とりあえずexplorerでのファイルのコピーは滞りなく進んでいる

icon

データ、読めるな・・・読めてる・・・

icon

ファイナルデータ体験版でドライブを検出してて全然進まんってやつだけど、スキャンしたセクタ数が減ってる。
ペース的に全部スキャンして振出しに戻った訳じゃないと思うが、どっかのタイミングで戻ってるっぽい。謎。
これはもう終わるはずもないという事でキャンセルして、今度System RescueのBootable USBの方でMBRというかGPTの修復を試みようと思った。

が、キャンセルして直ぐ、念のため他のスキャンとかあるかなと再度実行しようとしたら、ハードディスク2だったものがちゃんとストレージ名が取れてる・・・
そして、explorerで見たら、普通にマウント出来てる・・・

実は昨日寝る前にうっかり休止モードに入れてしまったので寝てる間はスキャンしてなくて、復帰したらエラーにならずにスキャン継続してたからほっといたんだけど、まぁこれはファイナルデータのお陰というより、休止から復帰したタイミングで認識したんかなぁ。
スキャンだけで好転にせよ悪化にせよ変化するとはあんま考えられないし。

まぁ、ほぼ何もしてないのに認識する様になったという事は、また認識できなくなる可能性高いし、今からデータのコピーを試みる。
容量空いてるのがNASしかないから、ddコマンドとかじゃなくexplorerでファイルをコピーするしかないけど。
さて、うまく読み取り出来るだろうか・・・

Attach image
Attach image
icon

webサイトに仕込まれるヤバイって話ばかりで、仕込まれたwebサイトにアクセスした端末にどんな影響があるものだったのかの情報が全然ないな。
英語の記事に当たらないとだろうか・・・
そんな暇じゃないんだが

icon

セキュリティ企業のSanSecによると、オーナーが方能に変わったのち、cdn.polyfill.ioを埋め込んだサイトを介して、モバイル端末にマルウェアを感染させる試みが確認されているとのこと。Polyfill.ioを利用中のサイトは10万以上あるとみられます。
https://gigazine.net/news/20240626-polyfill-supply-chain-attack/

uBlock Originのルールに
||polyfill.io書いておいてたしと思ったが、モバイルか・・・
AndroidのFirefoxはuBlock Origin入ってるけど、iPhoneのFirefoxはアドオン無いからなぁ、大丈夫かな・・・?

Web site image
JavaScriptライブラリ「Polyfill.io」にマルウェアが混入され10万以上のサイトに影響
icon

JavaScriptライブラリ「Polyfill.io」にマルウェアが混入され10万以上のサイトに影響 - GIGAZINE https://gigazine.net/news/20240626-polyfill-supply-chain-attack/

下の売却の記事が2024年3月6日だから4ヶ月弱でか

[注意喚起]ブラウザ互換ライブラリ「Polyfill.io」がドメイン名ごと中国企業に売却、CloudflareとFastlyが代替となる配信を開始 - Publickey
https://www.publickey1.jp/blog/24/polyfilliocloudflarefastly.html

Web site image
JavaScriptライブラリ「Polyfill.io」にマルウェアが混入され10万以上のサイトに影響
Web site image
[注意喚起]ブラウザ互換ライブラリ「Polyfill.io」がドメイン名ごと中国企業に売却、CloudflareとFastlyが代替となる配信を開始
icon

こねてる間、ChatGPTは何かにつけて[T any, PT TreeNode[T]]にしようとしてきた。
別の行を修正する回答なのに、無言及でこれに変えてくる位に。

という事はそういう学習をしてるって事だから、その方が良いのかと思って一応この路線も確認してみた。
まぁ、ChatGPTの書いたコードは動かなくて、型アサーション挟む必要あったけど。

interfaceの方の
Children() []*Tが、戻り値ポインター型であると分かりやすいメリットはあるけど、断然良いという感じでは、ないかなぁ。

package main

import "fmt"

type TreeNode[T any] interface {
	Id() int
	Children() []*T
}

func PrintAllDescendants[T any, PT TreeNode[T]](node PT) {
	children := node.Children()
	for _, child := range children {
		// childは*T型として返ってくるので、型アサーションでPTにする
		childNode, ok := interface{}(child).(PT)
		if !ok {
			panic("Failed to cast child to PT")
		}
		fmt.Println("Id:", childNode.Id())
		PrintAllDescendants(childNode)
	}
}

type MyNode struct {
	id       int
	children []*MyNode
}

func (m *MyNode) Id() int {
	return m.id
}

func (m *MyNode) Children() []*MyNode {
	return m.children
}

func main() {
	grandChild1 := &MyNode{id: 3}
	grandChild2 := &MyNode{id: 4}

	child1 := &MyNode{
		id:       1,
		children: []*MyNode{grandChild1},
	}
	child2 := &MyNode{
		id:       2,
		children: []*MyNode{grandChild2},
	}

	root := &MyNode{
		id:       0,
		children: []*MyNode{child1, child2},
	}

	PrintAllDescendants(root)
}
https://go.dev/play/p/4I8sQ88iS_R

Web site image
Go Playground - The Go Programming Language
icon

グラフの木構造を、interfaceを介して、特定のnode structに依存せず扱いたくて、ChatGPTにも聞きつつこね回してこうなった。
func PrintAllDescendants[T TreeNode[*T]](node *T)からスタートしたけど、どうにも動かず、こねて下の様になったんだけど、暗黙的にポインター型じゃないと動かないのでせめてPTという名前にしてみた。
ChatGPTの力を借りて動いたけど、正直100の理解をしてないのでどうだろうなという所。

package main

import "fmt"

type TreeNode[PT any] interface {
	Id() int
	Children() []PT
}

func PrintAllDescendants[PT TreeNode[PT]](node PT) {
	children := node.Children()
	for _, child := range children {
		fmt.Println("Id:", child.Id())
		PrintAllDescendants(child)
	}
}

type MyNode struct {
	id       int
	children []*MyNode
}

func (m *MyNode) Id() int {
	return m.id
}

func (m *MyNode) Children() []*MyNode {
	return m.children
}

func main() {
	grandChild1 := &MyNode{id: 3}
	grandChild2 := &MyNode{id: 4}

	child1 := &MyNode{
		id:       1,
		children: []*MyNode{grandChild1},
	}
	child2 := &MyNode{
		id:       2,
		children: []*MyNode{grandChild2},
	}

	root := &MyNode{
		id:       0,
		children: []*MyNode{child1, child2},
	}

	PrintAllDescendants(root)
}
https://go.dev/play/p/yPzu6uY6KxN

Web site image
Go Playground - The Go Programming Language
icon

CursorとClaudeも名前は見かけるから気になってるけど、この記事だと両方使って40ドルかぁ。
自分もChatGPTとGitHub Copilotで30ドルだからそんな変わらんって言われたらそうかもだけど。
GitHub CopilotはともかくGitHub Copilot Chatは役に立ってないから、とりあえずCursorの方を試してみるのが良いかねぇ。10ドル増えちゃうけど。

CursorとClaudeを使った最近の私の開発環境|ニケちゃん
https://note.com/nike_cha_n/n/n444e28ec0c73

Web site image
CursorとClaudeを使った最近の私の開発環境|ニケちゃん
icon

:hotsprings:​♨️
なんか2種類ある

icon

ってあれ?スクショ取ってノート書いてる数分の間に、なんか一気に進んだ?
全体からすると全然なんだけど、24時間かけて辿り着いた最上の位が数分目を離した間に1から2になるって、どういう事だ。
挙動が謎すぎる

Attach image
icon

CPUクーラーを交換後改めてファイナルデータでドライブを検出を実行してるけど、24時間経ってもこの進捗。
やっぱこれ現実的な時間では終わらないぞ。

なお、ドライブを検出(形式の検出)をディスク全領域で行うと相当な時間がかかります。ディスクの管理画面などを参照し、あらかじめ目的のパーティションの物理的な位置を把握しておいてください。
[検索するセクタ範囲]画面のスライドバーを動かし、目的のパーティションがあった場所付近を選択してください。

ドライブを検出機能はどのような機能ですか? どういう場合に有効でしょうか? - ファイナルデータシリーズ FAQ https://faq.aosdata.co.jp/fd_series/2008/09/post-15.html
全領域だと時間かかると書いてある通りではあるんだけど、スライドバーを動かすと0か最大値かしかなくて、書いてある様に目的のパーティションがあった場所付近を指定できなかった。

このストレージはパーティション複数作って無いし、冒頭のセクタだけスキャンすれば済むはずだと思うんだけど・・・

ドライブを検出機能はどのような機能ですか? どういう場合に有効でしょうか? - ファイナルデータシリーズ FAQ
Attach image
icon

目がショボになってしまってもう何も出来ない

icon

ChatGPT4oになっても、謎の融通の利かなさというか、違うそうじゃないって感じの回答になる事、やっぱあるなぁ。

自分「こういう事がしたいからコードを書いて。」
ChatGPT4o「書いたで。」
自分「そのコードは、こういう処理をするという理解であってる?」
ChatGPT4oさん、合ってるとも間違ってるとも判断つかない事を言いつつ、何故か修正コードを書き始める。

修正は求めてないし、修正が必要な理由も、そもそも修正が必要だったのかも分からない・・・