未分類

先日、消火器を調べていたところ、耐用年数を超えていることが分かったので、交換することにしました。
思ったよりお高くて、驚いたのですが、火災のコストに比べれば安いものです。

で、古い消火器を玄関の外で試したのですが、
(1)消火器は一度放射を始めると止まりません(レバーを元に戻しても噴射が続く)
(2)消火器の消火用噴粒で、我が家の玄関と車庫は、ピンク色に染まっています。

以上

未分類

特定時間の同じ部屋、喋りやすさ、子供(幼児、乳児)をきっかけに会話スタート、年代別他人へのアクセス(要先行研究)

地図を複数用意して、そこにエージェントをランダムウォークさせれば良い。
エージェントは、一日単位で滞留・移動を計算して、また複数の地図に展開すれば良い。
選択される地図は、エージェントの戦略となり、戦略は常時変更しても良い。
SCのコストは原則移動距離。あとは年齢によるコスト変化とか入れても良いかも。

未分類

横浜市統計書によると2022年度の1日平均乗降人員18,339人(乗車人員:9,255人、降車人員:9,084人)である[3]。2020年度の1日平均乗降人員は16,535人であり[4]、京急線全72駅中30位。1988年をピークに乗降客数は減少し続けている。

https://ja.wikipedia.org/wiki/%E4%BA%AC%E6%80%A5%E5%AF%8C%E5%B2%A1%E9%A7%85

乗り場 系統 経由 行先 備考
富1 富岡西四丁目 横浜氷取沢高校 平日は朝夜のみ
富2 横浜氷取沢高校 能見台車庫前
富3 氷取沢 金沢文庫駅西口
富5 富岡西四丁目 富岡9期ニュータウン 朝夕のみ
富6 富岡西循環 京急富岡駅 日中のみ

 

Photo

未分類

スプリングコードの終端が切れてしまった場合

スプリングコード 最長90cm カラビナ付 [色指定不可] (100円ショップ 100円均一 100均一 100均)の通販はau PAY マーケット  - 100円雑貨&日用品卸−BABABA | au PAY マーケット-通販サイト

結束バンドで閉じることができます。

未分類

先日国会で成立した、国土強靭化基本法を熟読しています。

I read letters of the law named "Basic Law of National Land Enhancement."

一見無味乾燥な法令に見えますが、これは読み方によっては、とても面白いです。

At first glance, it looks like monotony law, but it is exciting from another perspective.

「省庁の縦割りを解消し」などという識者もいるようですが、私は、まったく逆に「縦割りを明文化した」というくらいに読めました(第11条~21条)。

Though some analysts tell us that this law results in compartmentalized public administration, I think it is the opposite; the law defines it.

私は、シミュレーション結果で、100年後に現在の人口の20%にまで落ち込むと予想しているので、人口を大都市に集中して社会インフラを集結することを考えていました。

I estimate that the population in Japan has decreased by 20% from the present after 100 years ago. I am afraid we must migrate to urban areas and integrate social infrastructures.

つまり、「地域を切り捨てる」しか日本が生き残る道はない、と思っていたのですが、この法律では、完全にその逆を唱えています(第2条:多極分散型の国土の形成)。

I mean, "Discarding rural areas." I think it is a final decision to survive in this country. But this law says the opposition against my opinion(Article 2: multiple cities)

といいつつ、その分散を3つに定義しています。具体的には、(1)首都圏、(2)近畿圏、(3)中部圏です(第8条)。

On the other hand, the law also defines the three decentralized areas: "Tokyo Metropolitan District," "Osaka Metropolitan District," and "Chuubu Metropolitan District"(Article 8).

―― という話を、後輩にしたところ、

I told the above issue to a junior fellow,

後輩:「江端さん。そりゃ分散のアプローチが間違っていませんか? 南海トラフで、その3つの分散は、纏めて全滅ですよ」

Ebata-san, I think there seems to be a wrong approach. The big earthquake in the Pacific zone will hit the three areas at the same time.

江端:「ま、一気に撃たれることはない、という見込みなのだろうと思う。でも、災害を想定した本当に分散する気があるなら、札幌圏、首都圏、高松圏、福岡圏の4つかなぁ」

Probably, I think they estimate not to do it simultaneously. If I were an administration, I would define four areas, "Sapporo," "Tokyo," "Takamatsu," and "Fukuoka."

まあ、「地域を捨てる」などという方針が出たとすれば、法案が潰されるのは当然として、政権与党の存続だって危ういだろうな、とは思うのです。

If "discarding rural areas" were included in the law, the Diet refused the bill and upset the regime.

それに、まだ「地域を切り捨てる」という決断をするには早いかもしれません。少子化の問題だって、何かの奇跡が起きて、持ち直すかもしれないじゃないですか ―― その奇跡に、全く心辺りがないとしても、です。

And it seems to be too early to judge it. The problem of a society with fewer children might be resolved in some miracle works -- I don't know them at all.

-----

なぜ、このような法律を調べているかというと、災害時を想定したシステムの提案資料を作る為です。

I investigated the law to make a proposal material for the system against some kinksters in Japan maJapan'sd.

で、その他の資料も色々見付けているのですが、これはいいですよ。是非御一読を。

I strongly encourage you to read the following paper.

その辺の小説より、ドキドキできます。

You must be excited, more than crisis novels around you.

-----

特に、地震直後に、停電→テレビ・ラジオ・PC全滅→情報ゼロ という状況は、リアルです。

Significantly, the story of a blackout, inactivate of TV, radio, and PC, and no information is authentic.

震災の時も、電池式のラジオだけが、最後の砦でした。

The cell radio is the last straw on the day of the earthquake disaster.

これも何かの機会です。もう一度、あの日の恐怖を思い出してみましょう。

This is a good change. Let us try to remember the fear of the day.

未分類

ノード間のコストが与えられているダイクストラ計算を行うノードのそれぞれに数値が設定されていて、ノードが持っている数値より小さい数値のノードとは繋がることができない、というアルゴリズムをGo言語で作成する

main2.goで、ノードのコストが分からない場合でも対応できるように改良したもの。

package main

import (
	"fmt"
	"math"
)

type Node struct {
	Name  string
	Value float64 // 各ノードに設定された数値 (負数の場合、この数値を無視する)
}

type Edge struct {
	From   *Node
	To     *Node
	Weight float64
}

func main() {
	/*
		// ノードとエッジを初期化
		nodeA := &Node{Name: "A", Value: 5}
		nodeB := &Node{Name: "B", Value: 8}
		nodeC := &Node{Name: "C", Value: 6}
		nodeD := &Node{Name: "D", Value: 2}
		nodeE := &Node{Name: "E", Value: 4}
	*/

	// ノードとエッジを初期化
	nodeA := &Node{Name: "A", Value: 3}
	nodeB := &Node{Name: "B", Value: -1} // 負数の場合無視
	nodeC := &Node{Name: "C", Value: -1} // 負数の場合無視
	nodeD := &Node{Name: "D", Value: 2}
	nodeE := &Node{Name: "E", Value: -1} // 負数の場合無視
	nodeF := &Node{Name: "F", Value: -1} // 負数の場合無視
	nodeG := &Node{Name: "G", Value: 1}

	/*
		edges := []Edge{
			{nodeA, nodeB, 2},
			{nodeA, nodeC, 4},
			{nodeB, nodeC, 1},
			{nodeB, nodeD, 7},
			{nodeC, nodeD, 3},
			{nodeC, nodeE, 5},
			{nodeE, nodeD, 2},
		}
	*/

	edges := []Edge{ // A,B,C,D,E,Fの順で双方向をしてい
		{nodeA, nodeB, 1},
		{nodeB, nodeA, 1},

		{nodeB, nodeC, 1},
		{nodeC, nodeB, 1},

		{nodeC, nodeD, 1},
		{nodeD, nodeC, 1},

		{nodeD, nodeE, 1},
		{nodeE, nodeD, 1},

		{nodeE, nodeF, 1},
		{nodeF, nodeE, 1},

		{nodeF, nodeG, 1},
		{nodeG, nodeF, 1},
	}

	startNode := nodeG
	targetNode := nodeA

	// ダイクストラアルゴリズムを実行
	shortestPath, totalWeight := dijkstra(startNode, targetNode, edges)

	if shortestPath == nil {
		fmt.Println("最短経路が見つかりませんでした。")
	} else {
		fmt.Printf("最短経路: %v\n", getNodeNames(shortestPath))
		fmt.Printf("最短経路の総重み: %.2f\n", totalWeight)
	}

	fmt.Println(nodeA.Value)
	fmt.Println(nodeB.Value)
	fmt.Println(nodeC.Value)
	fmt.Println(nodeD.Value)
	fmt.Println(nodeE.Value)
	fmt.Println(nodeF.Value)
	fmt.Println(nodeG.Value)

}

func dijkstra(startNode, targetNode *Node, edges []Edge) ([]*Node, float64) {
	// ノード間の最短距離を格納するマップを初期化
	shortestDistances := make(map[*Node]float64)
	// 各ノードの前のノードを格納するマップを初期化
	predecessors := make(map[*Node]*Node)

	// 最短距離を無限大で初期化し、開始ノードの最短距離を0に設定
	for _, edge := range edges {
		shortestDistances[edge.From] = math.Inf(1)
		shortestDistances[edge.To] = math.Inf(1)
	}
	shortestDistances[startNode] = 0

	// 訪問済みのノードを格納するセットを初期化
	visitedNodes := make(map[*Node]bool)

	// まだ訪問していないノードが残っている間ループ
	for len(visitedNodes) < len(shortestDistances) {
		// 未訪問のノードの中から最短距離のノードを選択
		currentNode := getClosestUnvisitedNode(shortestDistances, visitedNodes)

		// ノードがない場合やターゲットノードに到達した場合は終了
		if currentNode == nil || currentNode == targetNode {
			break
		}

		for _, edge := range edges {
			if edge.From == currentNode {
				if edge.To.Value < 0 { // -1などの負数が入っていたら、更新してしまう
					edge.To.Value = currentNode.Value // 下のif文を通す為の手続(書き換えても大丈夫かな(今のところ大丈夫そうだけど))
				}
				if edge.To.Value >= currentNode.Value { //
					distance := shortestDistances[currentNode] + edge.Weight
					if distance < shortestDistances[edge.To] {
						shortestDistances[edge.To] = distance
						predecessors[edge.To] = currentNode
					}
				}
			}
		}

		// このノードを訪問済みとしてマーク
		visitedNodes[currentNode] = true
	}

	// 最短経路を復元
	shortestPath := make([]*Node, 0)
	currentNode := targetNode
	for currentNode != nil {
		shortestPath = append([]*Node{currentNode}, shortestPath...)
		currentNode = predecessors[currentNode]
	}

	// 最短経路の総重みを計算
	totalWeight := shortestDistances[targetNode]

	return shortestPath, totalWeight
}

func getClosestUnvisitedNode(distances map[*Node]float64, visitedNodes map[*Node]bool) *Node {
	minDistance := math.Inf(1)
	var closestNode *Node

	for node, distance := range distances {
		if !visitedNodes[node] && distance < minDistance {
			minDistance = distance
			closestNode = node
		}
	}

	return closestNode
}

func getNodeNames(nodes []*Node) []string {
	names := make([]string, len(nodes))
	for i, node := range nodes {
		names[i] = node.Name
	}
	return names
}

未分類

昨夜の大掃除で、長女に使っていたiPod(×iPhone, ×iPad)がでてきました。

実験用として使えるかなぁ、とか考えて、最充電してみたら動くことは確認してみたのですが、『アクティベーションロックの解除』でハマりました。

そこで、家族全員に協力を要請することになりました。

まず、長女本人が覚えていないAppleのアカウントをハックする為に、過去に作った家族全員用の暗号表を解読して、アカウントの解除(他人がやれば、"アカウントの乗っ取り"という)というところまで持ち込んだのですが、別アカウントであるらしいことが分かりました(ここまでのハッキングの努力が水の泡)

この別アカウントについて、長女に問い合わせたのですが「分からん」と言われ、仕方がないのでカスタマーセンターに連絡しました。
シリアル番号は分からないか、と言われて、iPod本体を探してみたところ、『もの凄い小さな文字』のシリアル番号を見つけました。
拡大鏡のメガネでも視認できなかったので、iPhoneで撮影したものを拡大して確認できました。

(言うまでもありませんが、表示したシリアル番号は改竄済みです)

これでシリアル番号は確認できたのですが、今度は「購入店の購入履歴はあるか」と言われました。

もちろん、そんなものあるわけないと思いましたので「それでは、このアクティベーションは不可能、ということですね」と諦めたように呟いて電話を切りました。

『やれやれ、ここまでか』と、iPodを廃棄物用のバスケットに放り込もうとしたところで、嫁さんが、2010年のレシート持って私の部屋にやってきました。

再度、カスタマセンタに電話して、オペレータのタケダさんと協力しながら、情報の入力を続けました。
購入日、購入金額、店舗名、店舗の住所、電話番号、領収書と保証書の写真撮影と送付・・・

先程、申請処理を完了しました。

私、別段、このiPodがどうしても必要という訳ではなく、今、本当に忙しくて死ねるというくらいの状況なのですが ――なんと言うんですねえ、これがダンジョンRPGゲームのようなものでしょうか(私、ゲームやったことないので知らないのですが)。

オペレータさんと会話続けながら、この画面が出てきた時に、思わずガッツポーズしてしまいました。

いえ、本当に忙しいんです。こんなことやっている場合じゃないんです。

あ、今、Amazonから、時計交換用の電池が届いたみたいです・・・仕方ないなぁ・・・

「そこに怪我人がいれば、助けるのが医者だ」と「そこに動かない時計があれば、動かすのがエンジニアだ」というセリフが等価なのかは分かりませんが ――