2021/01,江端さんの忘備録

「シュレーディンガーの猫」について、私は、半端でない時間を費して勉強してきた、という自負があります。

I am proud to say that I have spent a considerable amount of time studying Schrodinger's cat.

そんでもって、多くの人が、勉強前の私と同様に、「シュレーディンガーの猫」の解釈を「知らない」か「誤解している」ということも分かりました。

I also found out that many people either don't "know" or misunderstand the interpretation of "Schrodinger's Cat" as I did before my study.

この話(「シュレーディンガーの猫」)の解説を、家族にしたところ、

When I explained this story ("Schrodinger's Cat") to my family...

次女:「なるほど。『"そういう猫"の存在を"仮定"すると、量子論が理解できる』ということね」

Junior daughter: "I see. "So you're saying that if we 'assume' the existence of such a cat, we can understand quantum theory.

ほら、やっぱり、誤解している。

See, I knew she misunderstood it.

-----

江端:「違う。『"そういう猫"は実在』しているし、『量子状態(例:絶対零度付近)の物質は、すべて"そういう猫"』なんだ」

Ebata: "No, it's not. Such cats do exist, and all matter in the quantum state (e.g., near absolute zero) is such a cat."

という私の言葉に対して、家族の反応は、予想した通りのものでした。

My family's reaction to my words was exactly what I expected.

「半分死んでいて、半分生きている猫」が実在するということを理解しろ、というのが無理なのかもしれません。

Maybe it's impossible for us to understand that "half-dead, half-alive cats" do exist.

実際に、嫁さんも次女も『分からん』の一言で終了しました。

In fact, both my wife and second daughter ended up saying, 'I don't know.

私も、それ以上の説明をしませんでした。

I didn't offer any further explanation either.

少なくとも、5種類の知覚センサしか有さない人間に対して、量子状態を、現時点の地球上の言語で説明するのは不可能だと思っているからです。

This is because I believe that it is impossible to explain quantum states to humans, who only have at least five types of perception sensors, using the current language on earth.

確率を使った数式と数値で、ギリギリ理解可能なレベルになりますが、そもそも、人類は「数字と数式が嫌い」な生き物です。

Quantum theory is just barely understandable with formulas and numbers using probability. However, the human race is a creature that "hates numbers and formulas" to begin with.

-----

今朝、ふと

This morning, I noticed that

―― 今回の新型コロナの感染拡大(爆発)の理由は、「シュレーディンガーの猫」で説明できる

"The reason for the spread (explosion) of this new corona infection can be explained by "Schrodinger's cat""

ことに気がつきました。

「シュレーディンガーのコロナ」

It is "Schrodinger's Corona.

です。

PRC検査の結果が「感染の有無」ではなく「感染の陽性/陰性」という、なんともはっきりしない物言いで語られるのは、

The reason why the results of the PRC test are referred to in such an unclear manner as "positive/negative for infection" rather than "presence of infection" is as follows.

「半分感染していて、半分感染していない私」

The "half-infected, half-uninfected me" is real.

が、現実に存在しているからです。

つまり、感染の有無は、発病するまで確定しないものであり、発病までの間、感染は確率的に、しかも、年齢や環境や体調や行動によって、常に変動しつづけるものなのです。

In other words, the presence or absence of infection is not determined until the onset of the disease, and until the onset of the disease, infection is probabilistic and constantly changing depending on age, environment, physical condition, and behavior.

と、ここで思い出したのですが、

And here I remembered...

「量子論から見たコロナ感染」については、すでに、「轢断のシバタ」医師が論じておられます。

"Dr. Shibata of the Run Over" has already discussed "Corona infection from the viewpoint of quantum theory".

(続く)

(To be continued)

2021/01,江端さんの忘備録

(昨日の続きです)

(Continuation from yesterday)

それはさておき。

Aside from that.

私(たち?)は、今回の『愚か者として描かれた米国大統領』のおかげで、米国の政治システムを深く知ることができました。

I (we?) thanks to "The U.S. President Portrayed as a stupid", I was able to learn more about the U.S. political system.

特に、米国の二大政党である民主党と共和党について、その違いだけでなく、その政党の支持者の「生々しい顔」を見ることもできました。

In particular, I was able to see not only the differences between the two major political parties in the U.S., the Democratic Party and the Republican Party, but also the "real faces" of the supporters of those parties.

同時に、私は、「自分自身にいい聞かせておかなければならないことがある」とも思いました。

At the same time, I thought to myself, "There are things I need to tell myself.

それは、例えば、

For examples,

■イスラム過激派と、イスラム教の教えを、混同してはならないこと

- Do not confuse Islamic extremism with Islam.

あるいは、

or

■天皇陛下と、天皇制を、混同してはならないこと

- Do not confuse His Majesty the Emperor with the emperor system.

と同様に、

■現職大統領の人格と、米国大統領制度を、混同してはならないこと

- Do not confuse the personality of the current president with the U.S. presidential system.

であり、なにより、

and above all,

■米国共和党の党員と、連邦議会議事堂を襲撃したデモ参加者を、混同してはならないこと

- Do not confuse members of the U.S. Republican Party with the protesters who attacked the U.S. Capitol.

です。

この混同によって、私も含めた多くの人が、政治やマスコミの情宣に「つけこまれやすい」ことを知っているからです。

I know that this confusion makes it easy for many people, including myself, to be "taken advantage of" by political and media sentiments.

私、経験者です。

I'm experienced.

「混同する側」としてだけでなく、「混同される側」としても、です。

not only as a "confuser" but also as a "confused".

-----

ところで ―― 我が国でも「国会襲撃事件」があったのをご存知ですか?

By the way -- did you know that there was an attack on the Diet building in Japan?

日米安全保障条約調印阻止闘争、いわゆる、安保闘争です。

It was the struggle to prevent the signing of the Japan-U.S. Security Treaty, the so-called Security Treaty Struggle.

1959年11月27日、全国で200万人がデモや集会に参加し、全学連主流派を中心とした国会襲撃事件が起こりました。

On November 27, 1959, two million people participated in demonstrations and rallies across the country, and the attacj on the Diet took place, led by the mainstream faction of the All-Japan Federation of Student Self-Government Associations.

ここで私が問題としているのは、

The problem I have here is that my feeling of

―― 「国会襲撃」ではなく、「国会突入」という言葉を使いたい

"I want not to use the term "attack on the Diet" but "rush on the Diet."

という、私の気持ちです。

もちろん、当時は、政府与党は勿論、日本共産党すらも、彼らを『左翼暴力集団』とテッレルを貼って、非難(蔑視)していました。

Of course, at that time, not only the ruling party but even the Japanese Communist Party condemned (scorned) them, labeling them as a "leftist violent group.

つまり、私は、当時の全共闘(学生を中心とした反安保運動)について比較的良く知っていて(まだ、生まれていませんが)、国会突入した当時の学生達に「共感」できるのです。

That is to say, I know relatively well (though I was not born yet) about the Zenkyoto (student-centered anti-Apartheid movement) of that time, and I can sympathize with the students of that time who rushed into the Diet.

-----

つまり、私は、「全共闘の国会突入」には共感して、「連邦議会議事堂を襲撃したデモ参加者」を非難しているのです。

In other words, I sympathize with the "students who rushed into the parliament" and condemn the "protesters who attacked the U.S. Capitol".

この両者に違いはあるのでしょうか?

Is there a difference between the two?

もちろん、あるでしょう。

Of course there is.

それでも、私の「エンジニアリングアプローチ」の視点から見れば ―― 私は、自分がとても「不公平な人間である」と感じてしまうのです。

Still, from the perspective of my "engineering approach" -- I feel that I am being very "unfair".

2021/01,江端さんの技術メモ

/etc/apt/apt.confに

1
2
3
Acquire::http::Proxy "http://proxy server : port 番号";
Acquire::https::Proxy "https://proxy server : port 番号";
("s"をつけるとマズい時もある)
Acquire::ftp::Proxy "ftp://proxy server : port 番号";

を追記してみたら、apt-get update できるようになった。pingなどは通る。

curl http://sample.com では、コマンドも戻ってこない。

 

明日は、

(1)シェルを変えてみる。

1
2
3
export http="http://proxy server : port 番号"
export https="https://proxy server : port 番号"
export ftp="ftp://proxy server : port 番号
1
printenv | grep -i proxy

/etc/apt/sources.listの内容を確認する

 

https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d から

3. スクリプトでのインストール

+ sh -c
echo
"deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial edge"
> /etc/apt/sources.list.d/docker.list

 

https://askubuntu.com/questions/1230189/how-to-install-docker-community-on-ubuntu-20-04-lts

2021/01,江端さんの技術メモ

// simple_csv_1_socket.go
// 2021/01/14
// 対向サーバは、server22-1.go(変更なしで使えた)
// simple_cvs.go の場合、数万のエージェント全部とwebsocket通信することになるため、
// サーバとの通信用のソケットを1つに限定して、この問題を回避した。
// ただエージェントは、従来通り、全部の数(数万から十万くらい?)作成したがそれでも。動いている。
// golang まじ凄い
// 変更点は、mainルーチンで、エージェント用のソケットを作って、goroutineでエージェント用のスレッド作る時に、それを渡している点
// あと通信は、送信→受信で1セットになるように、ミューテックスロックで競合回避を行った点(まあ通信が混乱するのを回避するため)
// 普通なら、これで相当の実行速度の低下が発生するはずなんだけど、体感的には遅くなかった。
// 現状の問題点は、chromoの方が先に落ちる、ということかな。まあ、数万のオブジェクトを1秒以内に動かされたら、chromoも文句の一つも言いたかろう。
// この問題は、メモリが潤沢に搭載されているPCでなら回避できるような気がするので、当面は放置することにする
// simple_csv_1_socket.go

// 2021/01/14
// simple_cvs.go の場合、数万のエージェント全部とwebsocket通信することになるため、
// サーバとの通信用のソケットを1つに限定して、この問題を回避した。
// ただエージェントは、従来通り、全部の数(数万から十万くらい?)作成したがそれでも。動いている。
// golang まじ凄い
// 変更点は、mainルーチンで、エージェント用のソケットを作って、goroutineでエージェント用のスレッド作る時に、それを渡している点
// あと通信は、送信→受信で1セットになるように、ミューテックスロックで競合回避を行った点(まあ通信が混乱するのを回避するため)
// 普通なら、これで相当の実行速度の低下が発生するはずなんだけど、体感的には遅くなかった。
// 現状の問題点は、chromoの方が先に落ちる、ということかな。まあ、数万のオブジェクトを1秒以内に動かされたら、chromoも文句の一つも言いたかろう。
// この問題は、メモリが潤沢に搭載されているPCでなら回避できるような気がするので、当面は放置することにする

package main

import (
	"encoding/csv"
	"flag"
	"fmt"
	"log"
	"math"
	"net/url"
	"os"
	"strconv"
	"sync"
	"time"

	"github.com/gorilla/websocket"
)

// GetLoc GetLoc
type GetLoc struct {
	ID  int     `json:"id"`
	Lat float64 `json:"lat"`
	Lng float64 `json:"lng"`
	//Address string  `json:"address"`
}

// 構造体の作り方
type unmTbl struct {
	uniName string // User Name: Example  6ca....
	objType string // "Bus" or "User"
	simNum  int
	pmNum   int
	lon     float64
	lat     float64
}

var list = make([]unmTbl, 0)                                           // 構造体の動的リスト宣言
var addr = flag.String("addr", "0.0.0.0:8080", "http service address") // テスト

func main() {
	file, err := os.Open("1.csv")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	var wg sync.WaitGroup

	reader := csv.NewReader(file)
	var line []string

	// サーバとのコネクションを1つに統一

	//var upgrader = websocket.Upgrader{} // use default options
	_ = websocket.Upgrader{} // use default options

	// rand.Seed(time.Now().UnixNano())

	flag.Parse()
	log.SetFlags(0)
	u := url.URL{Scheme: "ws", Host: *addr, Path: "/echo2"}
	//log.Printf("connecting to %s", u.String())

	c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
	if err != nil {
		log.Fatal("dial:", err)
	}

	for {

		time.Sleep(time.Millisecond * 1) // 0.001秒休む

		line, err = reader.Read()
		if err != nil {
			break
		}

		uniName := line[0]
		//fmt.Printf("%s\n", uniName)

		objType := line[9]
		//fmt.Printf("%s\n", objType)

		lon, _ := strconv.ParseFloat(line[8], 64)
		//fmt.Printf("%f\n", lon)

		lat, _ := strconv.ParseFloat(line[7], 64)
		//fmt.Printf("%f\n", lat)

		// 特定範囲に限定する
		//if lon > 139.744330 && lon < 139.866586 && lat > 35.574777 && lat < 35.694479 {
		if lon > 139.7583407156985 && lon < 139.81403350119444 && lat > 35.62835195825786 && lat < 35.66678018870369 {

			flag := 0

			for i := range list {
				if i != 0 && list[i].uniName == uniName { // 同一IDを発見したら
					list[i].lon = lon // 新しい経度情報の更新
					list[i].lat = lat // 新しい緯度情報の更新

					flag = 1
					break
				}
			}

			uniNum := len(list)

			if flag == 0 { // 新しいIDを発見した場合
				wg.Add(1) // goルーチンを実行する関数分だけAddする
				go movingObject(uniNum, uniName, objType, lon, lat, &wg, c)
			}
		}

	}
}

var mutex sync.Mutex

func movingObject(uniNum int, uniName string, objType string, lon float64, lat float64, wg *sync.WaitGroup, c *websocket.Conn) {

	fmt.Printf("start movingObject\n")

	defer wg.Done() // WaitGroupを最後に完了しないといけない。

	defer c.Close()

	// リストを作る前にテストをする
	//fmt.Printf("%s\n", objType)
	//fmt.Printf("%d\n", uniNum)
	//fmt.Printf("%f\n", lon)
	//fmt.Printf("%f\n", lat)

	ut := unmTbl{} // 構造体変数の初期化
	ut.uniName = uniName
	ut.objType = objType
	ut.simNum = uniNum
	ut.lat = lat
	ut.lon = lon

	gl := new(GetLoc)
	gl.ID = 0
	gl.Lat = ut.lat
	gl.Lng = ut.lon

	mutex.Lock()           // 送受信時にミューテックスロックしないと
	err := c.WriteJSON(gl) // PruneMobile登録用送信
	if err != nil {
		log.Println("write1:", err)
	}

	gl2 := new(GetLoc) // PruneMobile登録確認用受信
	err = c.ReadJSON(gl2)
	mutex.Unlock()

	ut.pmNum = gl2.ID // PrumeMobileから提供される番号

	//fmt.Printf("ut.objType=%v\n", ut.objType)
	list = append(list, ut) // 構造体をリストに動的追加

	// ここからは更新用のループ
	for {
		time.Sleep(time.Millisecond * 100) // 0.1秒休む

		// 前回との座標に差が認められれば、移動させる
		if math.Abs(list[uniNum].lat-gl.Lat) > 0.000000001 || math.Abs(list[uniNum].lon-gl.Lng) > 0.000000001 {

			fmt.Print("MOVING!\n")
			gl.Lat = list[uniNum].lat
			gl.Lng = list[uniNum].lon
			gl.ID = gl2.ID

			// 座標の送信

			mutex.Lock()
			err = c.WriteJSON(gl)
			if err != nil {
				log.Println("write2:", err)
			}

			// 応答受信
			gl3 := new(GetLoc)
			err = c.ReadJSON(gl3)
			mutex.Unlock()

		}

	}

}

2021/01,江端さんの忘備録

(昨日の続きです)

(Continuation from yesterday)

私の知る限り、このような描かれ方は、「ゴルゴ13」では非常に珍しいのです。

As far as I know, this kind of depiction is very rare in "Golgo 13".

「ゴルゴ13」の中で登場する米国大統領は、社会通念上の正義に反することを行ったとしても、そのストーリーの中に、それなりの正当化されうるだけの理由があることになっています。

The U.S. presidents in "Golgo 13" have been supposed to have a justifiable reason in their story, even if they have to do something that is against socially accepted justice.

ところが、現職の米国大統領だけは、このような「知性」を感じさせる描写が見あたらないのです。

The current president of the United States, however, is the only one who has not been portrayed as having this kind of "intelligence.

粗野で、頭が悪く、自我をコントロールできない ―― はっきり言って「三下のギャング」と同程度の取り扱いをされているように感じました。

He is crude, dim-witted, and unable to control his ego -- to put it bluntly, I felt like he has been treated on par with a "low-life gangster".

私が、今回たまたま、そのようなストーリーを読んだだけかもしれません。

Maybe I just happened to read such a story this time.

それでも、私が知る限り『愚か者として描かれた米国大統領』の話を思い出すことができません。

Still, as far as I know, I can't recall a story about a 'US President portrayed as a stupid'.

-----

「ゴルゴ13」は、連載期間50年間、シリーズ総発行部数は2億8000万部という、我が国で最も著名なコンテンツの一つです。

Golgo 13" is one of the most famous contents in Japan with 50 years of serialization and 280 million copies sold.

ここまで支持を受けてきた理由として、「ゴルゴ13」が、我が国の読者の想いや感情に、丁寧に寄り沿ってきたからだ、と思っています。

I believe that the reason why "Golgo 13" has received so much support is because it has carefully followed the thoughts and feelings of readers in our country.

ここから導かれる私の仮説は、

My hypothesis, derived from the above, is that

―― 「我が国の国民の現職米国大統領に対する評価」は、「ゴルゴ13の中で描かれている内容と同じ」

"Our people's assessment of the current U.S. president is about the same as that portrayed in Golgo 13.

です。

(続く)

(To be continued)

2021/01,江端さんの技術メモ

// simple_csv.go

package main

import (
	"encoding/csv"
	"flag"
	"fmt"
	"log"
	"math"
	"net/url"
	"os"
	"strconv"
	"sync"
	"time"

	"github.com/gorilla/websocket"
)

// GetLoc GetLoc
type GetLoc struct {
	ID  int     `json:"id"`
	Lat float64 `json:"lat"`
	Lng float64 `json:"lng"`
	//Address string  `json:"address"`
}

// 構造体の作り方
type unmTbl struct {
	uniName string // User Name: Example  6ca90e
	objType string // "Bus" or "User"
	simNum  int
	pmNum   int
	lon     float64
	lat     float64
}

var list = make([]unmTbl, 0)                                           // 構造体の動的リスト宣言
var addr = flag.String("addr", "0.0.0.0:8080", "http service address") // テスト

func main() {
	file, err := os.Open("1.csv")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	var wg sync.WaitGroup

	reader := csv.NewReader(file)
	var line []string

	for {

		time.Sleep(time.Millisecond * 1) // 0.001秒休む

		line, err = reader.Read()
		if err != nil {
			break
		}

		uniName := line[0]
		//fmt.Printf("%s\n", uniName)

		objType := line[9]
		//fmt.Printf("%s\n", objType)

		lon, _ := strconv.ParseFloat(line[8], 64)
		//fmt.Printf("%f\n", lon)

		lat, _ := strconv.ParseFloat(line[7], 64)
		//fmt.Printf("%f\n", lat)

		// 特定範囲に限定する
		//if lon > 139.744330 && lon < 139.866586 && lat > 35.574777 && lat < 35.694479 {
		if lon > 139.7583407156985 && lon < 139.81403350119444 && lat > 35.62835195825786 && lat < 35.66678018870369 {

			flag := 0

			for i := range list {
				if i != 0 && list[i].uniName == uniName { // 同一IDを発見したら
					list[i].lon = lon // 新しい経度情報の更新
					list[i].lat = lat // 新しい緯度情報の更新

					flag = 1
					break
				}
			}

			uniNum := len(list)

			if flag == 0 { // 新しいIDを発見した場合
				wg.Add(1) // goルーチンを実行する関数分だけAddする
				go movingObject(uniNum, uniName, objType, lon, lat, &wg)
			}
		}

	}
}

func movingObject(uniNum int, uniName string, objType string, lon float64, lat float64, wg *sync.WaitGroup) {

	fmt.Printf("start movingObject\n")

	defer wg.Done() // WaitGroupを最後に完了しないといけない。

	//var upgrader = websocket.Upgrader{} // use default options
	_ = websocket.Upgrader{} // use default options

	// rand.Seed(time.Now().UnixNano())

	flag.Parse()
	log.SetFlags(0)
	u := url.URL{Scheme: "ws", Host: *addr, Path: "/echo2"}
	//log.Printf("connecting to %s", u.String())

	c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
	if err != nil {
		log.Fatal("dial:", err)
	}
	defer c.Close()

	ut := unmTbl{} // 構造体変数の初期化
	ut.uniName = uniName
	ut.objType = objType
	ut.simNum = uniNum
	ut.lat = lat
	ut.lon = lon

	gl := new(GetLoc)
	gl.ID = 0
	gl.Lat = ut.lat
	gl.Lng = ut.lon

	err = c.WriteJSON(gl) // PruneMobile登録用送信
	if err != nil {
		log.Println("write:", err)
	}

	gl2 := new(GetLoc) // PruneMobile登録確認用受信
	err = c.ReadJSON(gl2)

	ut.pmNum = gl2.ID // PrumeMobileから提供される番号

	//fmt.Printf("ut.objType=%v\n", ut.objType)
	list = append(list, ut) // 構造体をリストに動的追加

	// ここからは更新用のループ
	for {
		time.Sleep(time.Millisecond * 100) // 0.1秒休む

		// 前回との座標に差が認められれば、移動させる
		if math.Abs(list[uniNum].lat-gl.Lat) > 0.000000001 || math.Abs(list[uniNum].lon-gl.Lng) > 0.000000001 {

			fmt.Print("MOVING!\n")
			gl.Lat = list[uniNum].lat
			gl.Lng = list[uniNum].lon
			gl.ID = gl2.ID

			// 座標の送信
			err = c.WriteJSON(gl)
			if err != nil {
				log.Println("write:", err)
			}

			// 応答受信
			gl3 := new(GetLoc)
			err = c.ReadJSON(gl3)
		}

	}

}

2021/01,江端さんの忘備録

私、現在進行中の国際紛争についての知識は、ほぼ「ゴルゴ13」から習得しています。

I have acquired most of my knowledge about ongoing international conflicts from "Golgo 13".

もちろん、「ゴルゴ13」はフィクションストーリーですので、それらを全てを丸ごと信じることはできません。

Of course, "Golgo 13" is a fictional story, so I cannot believe them all in their entirety.

国際情勢の専門家から見れば、「ゴルゴ13」の描く国際舞台の裏表には、噴飯ものの内容もあると思います。

From the point of view of an expert on international affairs, some of the ins and outs of the international arena as depicted in "Golgo 13" are frothing at the mouth.

加えて、私個人は、国際情勢を正しく判断するだけの、情報や人脈、そしてインテリジェンスがありません。

In addition, I personally do not have the information, connections, or intelligence to correctly judge the international situation.

-----

しかし、技術分野、その中でも、コンピュータ、ネットワーク、その他のIT分野に限って言えば、それらに実際に関わっている人間として、判断できることもあります。

However, when it comes to technical fields, especially computers, networks, and other IT fields, as an engineer who has actually been involved in these fields, I can make judgments.

「ゴルゴ13」には、科学技術の解釈について、正確ではない記載が散見されます。

There are a number of inaccurate descriptions of the interpretation of science and technology in the "Golgo 13" story.

しかし、私は、それらに目くじらを立てるようなことはしません。

But I am not going to be blindsided by them.

私たち、科学技術の世界の住人は、こういうことに慣れています。

We, the inhabitants of the world of science and technology, are used to this kind of thing.

むしろ逆に、『ああ、この技術は、世の中からは、こういう風に見えているんだ』ということを知る機会を得ていると言えます。

Rather, on the contrary, I can say that I am getting an opportunity to know, 'Oh, this is how the world sees this technology.

-----

「ゴルゴ13」というのは、基本的には、「良い奴」と「悪い奴」と「愚かな奴」を分けて、その3人を対立構造で描くストーリとして構成されています。

Golgo 13 is basically a story that divides the good guys, the bad guys, and the stupid guys, and portrays the three of them in an opposing structure.

ここで「良い」「悪い」「愚か」というのは、社会通念上の「正義」「悪」「無知」とは違うものです。

Here, "good", "bad", and "stupid" are different from the socially accepted "righteous", "evil", and "ignorant".

ストーリーの中での「善意の者」と「悪意の者」と、そして「愚かな者」というスタイルで描かれます。

In the story, it is depicted in the style of "the benevolent", "the malevolent", and "the foolish".

「良い奴」は「善人顔」で描かれていて、「悪い奴」は「悪人顔」で描かれていて、「愚かな奴」は「愚かな顔」で描かれていますので、すぐに判断することができます。

The "good guys" are depicted with a "good face," the "bad guys" with a "bad face," and the "stupid guys" with a "stupid face," so I can easily judge them.

-----

で、先日、コンビニで「ゴルゴ13」の新刊にざっと目を通していたのですが、ちょっとした違和感を感じました。

So, the other day, I was skimming through the new issue of "Golgo 13" at a convenience store, and I felt something strange.

―― 現時点の現職の米国大統領が「愚かな奴」として描かれている

"The current sitting President of the United States is portrayed as a 'stupid guy'"

(続く)

(To be continued)

2021/01,江端さんの技術メモ

以下、上記記事のコピペ

Create new file をクリックして、ファイル名を path/to/.gitkeep という名前で作成します
(例えば、testsというディレクトリが必要であれば、"tests/.gitkeep"で作成できる)
すると、スラッシュで区切られたところはファイル名ではなくディレクトリ名として扱われ、path/to ディレクトリ内に .gitkeep というファイルが作成されます。このとき path/to ディレクトリがまだ存在しない場合は新しく作成されますのでこれを利用しているというわけです。
なんでディレクトリの作成をしたいだけなのに、わざわざこんなファイルを作るのかといいますと、git では空のディレクトリを add することはできないためです。 まだディレクトリに入れるファイルが何も無い場合でも何かしら入れておかないと add して git での管理ができません。

2021/01,江端さんの忘備録

現在、私は、ビットコイン(正確にはブロックチェーン)をテーマに、連載を担当しています。

I am currently working on a series of articles on the topic of Bitcoin (Blockchain, to be precise).

この連載の第一回目で、私は『ビットコインの購入と利用の体験をする』と宣言しました。

In the first article of this series, I declared that I would 'experience the purchase and use of Bitcoin'.

この公約を果たすべく、先週の金曜日の深夜に、bitFlyerという仮想通貨取引所にアカウントの作る手続を実施しました。

In order to fulfill this commitment, I went through the process of creating an account with bitFlyer, a virtual currency exchange, late last Friday.

(このプロセスについては、後日の連載でご紹介します)。

(This process will be described in a later series of articles).

日曜日の夜に、メールで住所の記載ミスを指摘されて、現在、再提出中なのですが、その後、全く連絡が来ません。

On Sunday night, I received an email pointing out a mistake in my address, and I was in the process of resubmitting it, but I haven't heard from them at all since then.

―― アンチビットコイン派として、パージされたのかな?

"As an anti-Bitcoin group, have I been purged?"

などと邪推しています。

I'm guessing evil.

まあ、そんなことはないでしょうが。

Well, I don't think so.

-----

そんなこともあって、私、今週末、ビットコインの法定通貨との換金レートをずっと監視し続けていました。

That's why I, this weekend, kept monitoring the exchange rate of Bitcoin to legal tender.

なんだか、今、凄いことになっているようです。

It seems to be a big deal right now.

これを、言語化するのであれば

If you want to put this into words...

『観測史上最大級の台風の接近を、自宅の居間の窓から見ている』

"Watching the approach of one of the largest typhoons in recorded history from the window of my living room"

ような、感じです ―― 他人事のように。

As if it were someone else's problem.