2020/10,江端さんの忘備録

体育祭の季節です。

It's the season of athletic festival.

もっとも、今年は、コロナ禍によって中止されているようです。

This year, however, the athletic festival seems to have been cancelled due to the corona disaster.

そういう意味では、ごく稀な事例ではありますが、コロナ禍も有効に機能することがある、とも言えるでしょう。

In that sense, it could be argued that corona disasters can also be effective, in if it's a very rare case.

体育祭なるイベントが、

The events called "athletic festival" are

■本人の許諾を得ない、成績の強制公開イベントであり、

- compulsory release of the results without the person's permission, and

■誰も異議申し立てができない、究極の「いじめ」であり、

- the ultimate "bullying" that no one can dispute.

■どれほど「憎悪」していたか

- How much I had hated it

については、すでに山ほど述べてきたので、今回は、割愛します。

I have already mentioned a lot about this, so I will omit it this time.

-----

ところで ――

By the way --

次女は、あいかわらず、私が「中学校で生徒会長をやっていた」ことを、ガンとして信じていないようですが、

My junior daughter still doesn't seem to believe that I was the student council president in junior high school, however,

先日、私が中学二年生の時に

The other day, I said that when I was in the second year of junior high school

『体育祭で、応援団長をやったことがある』

"I was a cheerleader in athletic festival once.

という話をしたら ―― 次女に、もの凄い目で見られました。

she looked at me in a very cold way.

まあ、分からなくもありません。

Well, I could understand her feeling.

私は、学級対抗リレーの選手どころか、徒競走で一番後ろを走っていて、

I was not just a class relay athlete, but running last in a sprint.

組体操にしても、メインのブリッジから、もっとも遠いところに配置されていたような人間です。

and I was placed farthest away from the main bridge in gymnastics.

まあ、"応援団長"という概念から、もっとも遠いところにいたのは確かです。

Well, I was certainly the furthest thing from the concept of a "cheerleader".

理由は色々あるのですが、当時、生徒会長に就任していたことが、最大の要因だったように記憶しております。

There were various reasons, but I remember that being the student president at that time was the biggest factor.

-----

学ランにたすき姿で、グランドの真ん中で大声を出して応援団を統率し、相手側の応援団とエールの交換をする ―― そういうことをやったのです。

I did that in a school uniform, loudly leading the cheering squad in the middle of the ground, and exchanging ale with the enemy cheering party.

本当です。

It's true.

調べてもらっても大丈夫ですし、証人もまだ存命だと思います。

It's okay to have them checked, and I think the witnesses are still alive.

それが、どうして、今の私のように、ここまで捻くれた孤独な・・・もとい、誇り高き孤高のエンジニアになったかというと ―― それはそれは、長い長い物語が必要となります。

How did that make me so twisted and lonely as I am now... I mean "a proud, lone engineer", it will take a long, long story to do that.

本当に、うんざりするほどに、長い話が。

Really, it takes a long story to be disgusting.

2020/10,江端さんの技術メモ

MarkdownをWord形式(docx)に変換する を参考にして、Pandoc をインストールしましたが、とてもキレイに表示されて便利です。

# PruneMobileとは

複数の人間や自動車等の移動体のリアルタイムの位置情報を、地図上に表示する、PruneClusterのアプリーケーションです。

PruneMobileのサーバに対して、任意のタイミングで位置情報を送り込むだけで、地図上にマーカーが表示されます。

## 使用環境

- golang(Go言語)のインストールされていれば良いです。私(江端智一)の環境では以下のようになっています。
```
$ PruneMobile\server>go version
$ go version go1.14 windows/amd64
```

- 実際に動かせば、コンパイラから、あれこれ言われますので、それに対応して下さい。基本的には、
```
$ go get github.com/gorilla/websocket
```
は必要になると思います。

## サンプルプログラムの環境

- Webブラウザで表示される地図は、東京都江東区の豊洲駅を中心にして作ってあります。
  - PruneMobile\server\serverX.go (Xは数字) の中にある、
```
var map = L.map("map", {
   attributionControl: false,
   zoomControl: false
}).setView(new L.LatLng(35.654543, 139.795534), 18);
```
の"35.654543, 139.795534"の座標を変更すれば、地図の中心位置が変わります。

- クライアントプログラムでは、豊洲駅を中心にランダムウォークさせています
  - PruneMobile\server\clientX.go (Xは数字)を起動すると、10秒間程、マーカーが移動して、その後消滅します。

- クライアントプログラム(clientX.go)は複数同時に起動させることができます。

## 現時点で確認している問題点で、いずれ直すもの

- マーカーの消滅のタイミングが、同時になってしまう

- Webブラウザの表示が、最初の1つめしか、正常に動作しない

- ローカルのjs(javascript)のローディングに失敗した為、江端のプライベートサーバ(kobore.net)からローディングしている。PruneMobile\server\serverX.goの以下を参照
```
	<script src="http://kobore.net/PruneCluster.js"></script>
	<link rel="stylesheet" href="http://kobore.net/examples.css"/>
```

# サンプルプログラムの動作方法

## Step 1 サーバの起動

適当なシェルを立ち上げて
```
$ cd PruneMobile\server
$ go run serverX.go (Xは数字)
```
とすると、「Windowsセキュリティの重要な警告(windows10の場合)」が出てくるので、「アクセスを許可する」ボタンを押下して下さい。

## Step 2 ブラウザの起動
Chromoブラウザ(他のブラウザのことは知らん)から、
```
http://localhost:8080/
```
と入力して下さい。豊洲地区の地図が表示されます。

## Step 3 クライアントの起動
適当なシェルを立ち上げて
```
$ cd PruneMobile\client
$ go run clientX.go (Xは数字)
```
とすると、マーカが0.5秒単位でランダムに動きます。

# クライアントプログラムで使うI/F(データ形式)

## 前提

- サーバとwebsocketのコネクションを確立して下さい。方法は問いません。golangでの記述方法はclient/clientX.goを参考にして下さい。

- データ形式はJSONを用います。golangでの記載サンプルは以下の通りです。

```

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

## Step.1 マーカーの登録

IDを"0"にして、最初のマーカーの座標を入力したJSONを、サーバに送付して下さい。golangでの送信方法はは以下の通りです。
```
	gl := GetLoc{
		ID:  0,
		Lat: 35.653976,
		Lng: 139.796821,
	}

	err = c.WriteJSON(gl)
	if err != nil {
		log.Println("write:", err)
	}
```

返り値に入ってきたIDが、これからそのマーカで使うID番号となります。golangでの受信方法はは以下の通りです。

```
	gl2 := new(GetLoc)
	err = c.ReadJSON(gl2)
	log.Printf("after ID:%d", gl2.ID)
	log.Printf("after Lat:%f", gl2.Lat)
	log.Printf("after Lng:%f", gl2.Lng)
```

以後、このID番号(整数)を使用して下さい。この番号と異なる番号を使用した場合、動作は保証されません。

## Step.2 マーカーの移動

指定されたIDを使って、移動後の座標を送付して下さい。
```
	gl := GetLoc{
		ID:  5,         // IDが"5"の場合
		Lat: 35.653923,
		Lng: 139.796852,
	}

	err = c.WriteJSON(gl)
	if err != nil {
		log.Println("write:", err)
	}
```
返り値は、入力と同じJSONが戻ってきますが、必ず受信して下さい。
```
	gl2 := new(GetLoc)
	err = c.ReadJSON(gl2)
	log.Printf("after ID:%d", gl2.ID)
	log.Printf("after Lat:%f", gl2.Lat)
	log.Printf("after Lng:%f", gl2.Lng)
```

## Step.3 マーカーの抹消

指定されたIDを使って、地球上の緯度経度の数値で現わせない座標を入力して下さい。具体的に、latに90.0より大きな値、またはlngに180より大きな値を入力することで、マーカが消去されます。
```
	gl := GetLoc{
		ID:  5,         // IDが"5"の場合
		Lat: 999.9,
		Lng: 999.9,
	}

	err = c.WriteJSON(gl)
	if err != nil {
		log.Println("write:", err)
	}
```
返り値は、入力と同じJSONが戻ってきますが、必ず受信して下さい。
```
	gl2 := new(GetLoc)
	err = c.ReadJSON(gl2)
	log.Printf("after ID:%d", gl2.ID)
	log.Printf("after Lat:%f", gl2.Lat)
	log.Printf("after Lng:%f", gl2.Lng)
```

以上

 

README.docx

 

 

 

2020/10,江端さんの忘備録

昨日の日記について、私の日記の読んで頂いているSさんから、メールでご指摘を頂きました。

Mr. S, who is a reader of kobore.net, pointed out yesterday's diary to me via email.

大変の良いご指摘を頂いたと思いますので、ご本人の許諾を頂き、本日、やり取りをさせて頂きたメールの全文(改行を除き、一切の変更なし)を公開させて頂きます。

I think I have got a very good point. With the permission, I am publishing the full text of the email we exchanged today (without any changes, except for line breaks).

=====

2020年10月7日(水) 10:40 S

October 7, 2020 10:40 S

江端様

Mr. Ebata

こぼれネット読者のSと申します。

My name is S, a kobore.net reader.

何時も興味深い記事をありがとうございます。

Thank you for interesting articles, as always.

標記の件、本日の備忘録を読ませていただきましたが、杉田水脈氏の発言について取り上げている事について、意見させていただきます。

I have read today's memorandum on the aforementioned matter, and I would like to comment on what Ms. Sugita Mio's comments.

女は平気で嘘をつく、という発言ですが、その文脈の前段としては[性暴力事件]ではなく[韓国慰安婦の経歴]を対象とした発言とのことです。

According to her comment of "women lie without hesitation, I have heard that the statement is not about [the sexual violence case] but about [the career of Korean comfort women] in the first part of the context.

http://tsuisoku.com/archives/57245137.html

無論、公的な討論の場において適切な言葉選びかどうか、については考慮の余地はありますが、慰安婦問題の歴史(イ・ヨンスの発言履歴等)から考えれば決して奢った発言ではありませんでした。

Of course, there is room for consideration as to whether the choice of words is appropriate in a public debate. However, given the history of the comfort women issue (Lee Young-soo's history of speaking out, etc.), it was not a deliberate statement.

水脈氏の発言について、メディアの取り上げかたには目に余るものがあり、印象が悪くなるのも、備忘録の記事を書かれるのもやむなしと思います。

Regarding Ms. Sugita's remarks, the way the media picked them up was overwhelming, and I think it would be unavoidable to write a memorandum article, which would make the impression worse.

しかし、日々の江端様の考察の深さに対し、悪印象を持たれる記事であるかも知れないとも感じました。

However, I also felt that the article may give a bad impression against the depth of Mr. Ebata's daily reflections.

もしお暇があれば、今一度背景を見た上で、記事の是非を検討していただけませんでしょうか?

If you have time, could you please consider the pros and cons of the article after looking at the background once again?

不躾ではありますが、よろしくお願いいたします。

I apologize for my rudeness, but I would like to thank you for your patience.

=====

2020年10月7日(水) 11:25

October 7, 2020 11:25

S様

Mr. S

ご指摘ありがとうございます。

Thank you for pointing that out.

本件につきましては、私も重要なポイント(慰安婦問題と、性暴力問題)であると思いましたので、一通りの調査は致しました。

I believe this is an important point (comfort women and sex victims), so I have done a thorough investigation.

私としては、普段私が信用しているソースをベースにしたものであって、通常の商用のコラムと同様に慎重に調査したとはいいかねるものです。(コラムでは、かならずベース記事に辿り付くようにしています)

As for me, it's based on sources I usually trust. Unfortunately, I can't claim to have researched it as carefully for regular commercial columns. (In the columns, I do try to get to the base article)

従いまして、本件、再度調査をしたいと思います。

Therefore, I would like to investigate this matter again.

あわせて、

In addition, about the phrase of

>女は平気で嘘をつく、という発言ですが、その文脈の前段としては[性暴力事件]ではなく[韓国慰安婦の経歴]を対象とした発言とのことです。

"According to her comment of "women lie without hesitation, I have heard that the statement is not about [the sexual violence case] but about [the career of Korean comfort women] in the first part of the context"

についての出典について、当方にソース(URL等)を送付して頂ければ幸いと存じます。

It would be greatly appreciated if you could send us the source (URL etc.)

# 頂いたTwitter等のまとめは、本人の主張 + twitter の発言集であり、私の中では「信頼できるソース」の基準には満たされておりません。

The summary of Twitter and other sources you provided is a collection of her own claims + twitter statements. So I am sorry but it does not come up to the standard of "reliable source" in my mind.

なお、これは私見ですが、私は「仮に、そのスレッドが慰安婦問題であったとしても・・・」と思っております。

In addition, this is my personal opinion, but I think that "even if the thread was about the comfort women issue...".

慰安婦問題の歴史的経緯については、ティーンエイジャのころから追跡を続けており、某新聞社の件も含めて、ずっと監視続けてきています。

I've been tracking the historical process of the comfort women issue since I was a teenager, and I've been monitoring it since then, including the case of the certain newspaper company.

勿論、慰安婦問題と性暴力問題を、同一に語るのは暴力的に乱暴であると思っていますし、「歴史的事実」に立脚するか「考え方」に立脚するかの違いもあると思います。

Of course, I believe that talking about the comfort women issue and the sexual violence issue in the same thread is bordering on violence, and I also think there's a difference between basing it on "historical facts" or "policies".

# 私には、とても難しく、日記の中で記載している「敢えて無視」している案件の一つです。

# This is one of those "dare to ignore" cases in yesterday's diary, because this is very difficult for me.

いずれにしても、Sさまと私の慎重なダブルチェックを行い、その上で、必要なら削除や訂正や追加(出典を明確にする)を行うことも視野にいれております。

In any case, Mr. S and I will carefully double-check the information, and then I will try to delete, correct or add to it (to clarify the source) if necessary.

また、本件も、(S様のご許諾を頂ければ)その経緯の全文を一切の訂正なく私の日記に記載させて頂きたいと考えております。

Also, I would like to show the full text of these mails in my diary without any corrections. (If I could get Mr. S's permission).

お手数ですが、ご協力頂けましたら幸いと存じます。

We would be grateful for your cooperation.

江端智一

Tomoichi Ebata

=====

2020年10月7日(水) 12:29 S

October 7, 2020 12:29 S

江端様

Mr. Ebata

ご返信いただき、ありがとうございます。

Thank you for your reply.

出典元ではなく二次ソースの提示となってしまい、申し訳ございません。

I apologize for the presentation of the secondary source instead of the primary source.

自分の経緯としても、普段の収集先で答弁の動画の提示があったことを確認した後、切り貼りだったという論が広がったため、鵜呑みにしていた次第です。

As for my own background, I was swallowing that the story that it was cut and pasted spread, after confirming that the video of the answer was presented at the usual collection destination.

そのため、再度該当の答弁を確認した後、再度意見をまとめたいと思います。

Therefore, after confirming the relevant answer again, I would like to summarize my opinion again.

不確かな根拠で意見してしまい、申し訳ございません。

I apologize for giving you an opinion on uncertain grounds.

自分としても、歴史が解釈や取り上げかたでいくらでも姿が代わり、それにメディアがどう関わっていたか、を多少なりとも調べる機会があり、それによる不信感が先立っていました。

For me, I had the opportunity to find out more or less how history changed its appearance and how it was related to the media. So my distrust caused by it.

また、自身の答弁への解釈の際、総じて何を言いたいか、を重視し、多少の弁論の荒さは重視しない(そうでなければ、個人の表現や解釈を出しきれないと考えるため)ということがあり、本発言への感性が鈍感であった、とも思います。

I also think that my sensitivity to this statement was insensitive, because I focused on what she wanted to say as a whole in order to explain about her own opinions, and I didn't focus on some roughness. (Even if not, no one can express or interpret in their mind).

なんにせよ、情報がまとまり次第、改めてご連絡させていただきます。

In any case, I will contact you as soon as the information is available.

また、意見した側の責務として、本件が公開される件については同意させていただきます。

In addition, as the responsibility of the opinion side, I agree that this matter will be disclosed.

以上、よろしくお願いいたします。

Thank you for your cooperation.

=====

2020年10月7日(水) 17:20

October 7, 2020 17:20

Sさま

Mr. S

お返事頂きありがとうございました。

Thank you for your reply.

御言葉に甘えまして、頂いたメールの全文公開をさせて頂きたいと思います。

Thanks for your cooperation, I would like to publish the full text of the email you received and I sent

(1)Sさまのお名前は「読者のSさん」と致します。また、Sさまのメールアドレスは絶対的な意味において(どのような圧力があろうとも)非公開を貫きます。

(1) Mr. S's name will be "Mr. S, the kobore.net reader". In addition, Mr. S's email address will be kept private in the absolute sense. (No matter what the pressure).

(2)文言は一文字も換えませんが、改行は私にコントロールさせて下さい(私は、3行でかならず改行を入れるスタイルを採用しています)。

(2) I don't change the wording, but let me control the line breaks (I use the style of always inserting line breaks in 3 lines).

(私のメールについても、原則同様です)

(The same applies to my email)

(3)ただ、日記に展開した内容や構成に関して、Sさまにご不満がありました場合は、理由を問わず、可及的速やかに日記の全部を削除します。

(3) However, if Mr. S is dissatisfied with the contents and structure developed in the diary, I will delete the entire diary as soon as possible regardless of the reason.

(上記(1)-(3)は、これまでもメールを公開させて頂いている方に適用させて頂いている内容となっています)。

(The above (1)-(3) are based on past projects).

なお、本件、私についてご心配頂いた上でのご意見であること、十分に理解しております。

In addition, I fully understand that this is an opinion you have been concerned about me.

このようなチェックを頂ける幸甚に、心より感謝申し上げます。

I would like to express our sincere gratitude to you for the checks.

江端智一

Tomoichi Ebata

2020/10,江端さんの忘備録

(昨日の続きです)

(Continuation from yesterday)

ただし「無視」にも2つあります。

However, there are two ways to "ignore" it.

「(1)黙っているか」か、「(2)痛みで苦しんでいる人を、さらに、痛めて苦しめる」か、です。

Either (1) keep quiet or (2) make the person who is suffering from the pain suffer even more, painfully.

私は、「無視」するなら、最低でも(1)である続けることが、自分なりの矜持だと思っています。

I'm proud to say that if I'm going to "ignore" it, I'm going to continue to be (1) at least.

例えば、高齢者の権力者に阿ねるなどという理由で、(2)を選択することはしないようにしています。

For example, I try not to choose (2) on the grounds that I am beholden to an elderly authority figure.

―― (性暴力事件で)女は平気で嘘をつく

"Women don't mind lying -- in sexual assault cases"

みたいなセリフは、(2)になる、と思っています。

Such a line would be (2), I believe.

まあ、こういうセリフを、"ノリ"で言ってしまうこともありでしょう。

Well, it's possible to say these lines in the "groove".

居酒屋とか、女子会とかでは"あり"なのかもしれません ―― しかし、

I think it's possible at an izakaya or a girls meeting. However, it's out of the question.

『政治集会やら勉強会やらの公の(我々の血税が投じられて開催された)場などのような、特別な場所』

"Special places, such as public, taxpayer-funded venues for political meetings and workshops"

では、論外です。

しかし、そんな人は滅多にいるものではないです ―― 絶望的に低能で非常識な人間でもない限りは。

But such people are rare. Unless they are hopelessly low and insane.

ましてや、『性暴力被害者』のスレッドで、そんなことをセリフを言う人間は ―― もはや、人間ではない。

Anyone who says lines like that in the "Victims of Sexual Assault" thread, is no longer a human being.

-----

まあ、私だって、結構な頻度で、自分のコラムの中で、エンジニア自虐とか、エンジニア自己批判とかやって来ています。

Well, in my columns, I've been doing a lot of self-deprecation and self-criticism of engineers.

読者に媚びるフレーズも平気で書きますし、権力サイドから目を付けられない程度には、表現にも配慮しています。

I don't care of writing phrases that flatter my readers, and I am careful to express myself in order to avoid pressure from the power side.

私は「社会正義」の為に書いているのではなく、「自分(の娯楽)」の為に書いていていて、そんでもって、これからも書き続けたいからです。

I don't write for "social justice", I write for "my (my) amusement", and I want to keep writing.

その為には、社会弱者を意図的に無視することもあります ―― だって、私の手に負えないこともあるし、私にとって都合の悪いことだってありますから。

To do that, I sometimes deliberately ignore the most vulnerable people in society. Because some things are out of my control, and some things are not good for me.

-----

ただ、それでも「無視」をする時でも ―― 『うしろめたさ』を感じながら「黙り」続けます。

But even when I still "ignore" them -- I continue to "shut up" with a sense of "guilt".

「痛みで苦しんでいる人を、さらに、痛めて苦しめること」がないように気を付けます。

I take care not to "make those who are in pain suffer more and more pain and suffering"

だから、私の無礼な友人たちや、遠慮のない家族たちが、私を見張ってくれていることを、感謝しています。

So I'm grateful that my rude friends and unassuming family members are keeping an eye on me.

2020/10,江端さんの忘備録

私が、当初、夫婦別姓制度に反対の立場であったことは、これまで何度もお話してきたと思います。

I think I have told you many times in the past that I was initially opposed to the "conjugal surname system".

同性愛を、精神障害の一態様であるとすら思っていたこともあります。

I once even thought of homosexuality as a form of mental disorder.

今は、そうは思っていません。

Now, I don't think so.

「自分で勉強したから」と言いたいですが、基本的には、「社会の意識の変化に身を委ねてきた」という面が強いです。

I'd like to say "because I learned it myself," however, essentially, I've surrendered myself to the changing attitudes of society.

とはいえ、『多くの人が肯定していれば、多分正しいのだろう』という考え方はリスクがあります。

Nevertheless, the idea that "if a lot of people affirm it, it's probably right" is risky.

しかし、『多くの人が関心を持っているのであれば、ちゃんと自分で調べてみよう』というスタンスなら、良いと思います。

However, if your stance is "if it's the matter that many people are interested in, I'll look into it myself". Then it's good.

-----

新しい考え方(夫婦別姓、同性愛等)を自分に取り込むには、私には結構なエネルギーが必要でした。

It took quite a bit of energy to incorporate new ideas (marital separation, homosexuality, etc.) into my life.

自分の中にある、他の部分の考え方の変更も余儀なくされるからです ―― 正直、これは、「辛い作業」です。

Because it also forces me to change the way of other parts of myself. Honestly, this is "hard work".

特に、既存の価値観で生きてきたシニアにとっては、若い人には想像できないほどの「痛みを伴う」作業なのです。

It's a "painful" process that is unimaginable to younger people, especially for elder people who have lived by existing values.

「痛くて辛い作業」ですので、他人に強要することはできません。

It's "painful work" and I can't force others to do it.

しかし、その「痛くて辛い作業」を経ないと、現状の制度や差別で痛み苦しんでいる人 ―― 私の痛みや辛さとは比較にならない程の ―― に寄り添うことができません。

However, without going through that "painful work," it is impossible to reach out to those who are in pain and suffering from the current system and discrimination. It's so much worse than my pain and hardship.

-----

しかし、基本的には、それは「他人の苦痛」であって、「自分の苦痛」ではありません。

But basically, it's "other people's pain" and not "my pain".

どれほどの痛みや苦しみがあろうが ―― 所詮は、「他人事」です。

No matter how much pain and suffering there is -- it's just for "other people".

あなたは、それを無視したっていいと思います。

You're allowed to ignore it.

私(だけ)は、あなたを責めません。

I (only) don't blame you.

私も、沢山の問題を「無視」し続けています。

I also continue to "ignore" a lot of issues.

私のやっていることは、単なる「問題の数値化」に過ぎません。問題の解決法(ソリューション)に至れているものはほとんどありません。

What I am doing is merely "quantifying the problem". Very few of the problems (solutions) have been reached.

(続く)

(To be continued)

2020/10,江端さんの忘備録

(昨日の続きです)

(Continuation from yesterday)

しかし、一方の私は、「完全な死」など希望していません。

But I, on the other hand, have no hope of "complete death".

■理性的な思考が残存しており、

- Reasonable thinking remains,

■自分の意志が第三者に伝達可能で、

- Being able to convey my intentions to a third party

■自分の肉体が可制御の状態にあって、

- My body is in control

■絶望的な苦痛が到来する前に

- Before the arrival of desperate pain

とっとと死んでしまいたい、という気持ちがあります。

I have a feeling that I want to die suddenly.

私は、苦痛回避の死を肯定し、そして、他者にも実施してきました。

I have affirmed the death of pain avoidance and have done it to others.

「いかなる手を尽しても、絶対的に救えない、究極の死」などというのは ―― 本当に、冗談ではありません。勘弁して下さい、と、全力で土下座できるレベルです。

"The ultimate death that I can never save no matter what I do" is not joking. I can kneel down on the ground with saying "Please forgive me "

-----

私が何を言いたいかというと、

What I want to say, is that

『あらゆる手を尽くして延命を施すという考え方』は、昨日の「江端の腕時計」の話と似ていないか

Isn't "the idea of doing everything possible to prolong life" similar to the story of "Ebata's watch"?

ということです。

私の命を制御する側 ―― 例えば

The side that controls my life, for example

■「医師」の立場からすると、命を可能な限り延すことが「職務」であり、

- From the point of view of a "doctor", it is the "duty" to prolong life as much as possible.

■「身内」の立場からすると、命を可能な限り延すことが「権利」である

- From the standpoint of "relatives", it is "right" to prolong life as much as possible.

かのように思えるかもしれない、ということです。

might think this problem as above.

言い換えるのであれば、

In other words, that means,

『私の腕時計は、耐用年数を越えて、すでに廃棄される状態にある』

"My watch has reached the end of its useful life and is already in a state of disposal."

にもかからわず、

however,

『腕時計の意志を無視して、性能劣化している状態で、見苦しい外観を晒され続け、所有者によって動かされて続けられている』

"Ignoring the will of the watch, it continues to be exposed to its unsightly appearance and kept being driven by the owner, with its performance degraded."

ということです。

-----

『腕時計と人命を同じロジックで説明するのは乱暴に過ぎる』と思う人はいるかもしれません。

Some may think that it is too rough to explain a wristwatch and human life with the same logic.

法律や生命倫理、あるいは、その時点の社会通念や常識など、様々な問題を総合的に考えなければならないことは分かっています。

We know that we have to think comprehensively about various issues such as law, bioethics, and social conventions and common sense at that time.

しかし、私は、この問題、一度、ここまで単純化して考えてみる必要があると思っています。

However, I think this problem needs to be simplified to this point once.

―― 私達は、「腕時計の使用者」であると同時に、「腕時計本体」でもあるのです。

We are not only "watch users" but also "watch bodies".

2020/10,江端さんの忘備録

私が愛用している時計は、こちらに記載したものです。

This is about my watch repair.

耐用年数をとうに越えており、すでに同じ時計は入手できませんが、電池交換を繰り返しながら、使い続けています。

It's already past its service life and the same watch is no longer available. However I continue to use it, changing the batteries repeatedly.

リストバンドはジョイント部が欠けており、もはやリストバンドの交換もできない状況です。

The wristband is missing a joint and the wristband can no longer be replaced.

ですので

So,

―― Amazonで購入したリストバンドを、瞬間接着剤で、強制的にジョイント

"I buy a wristband from Amazon, with instant glue, to force a joint"

しています。

リストバンドが劣化して、切断した場合には、その接続の部分を無理矢理引き剥がして、固化した接着剤をドライバで削ぎ取っています。

If the wristband deteriorates and is cut, the connection part is forcibly peeled off and the solidified adhesive is scraped off with a screwdriver.

案外なんとかなるものです。

It's surprisingly manageable.

時計に限らず、私は、"モノを直して使い続ける"のが好きです。

Besides watches, I like to "fix things and keep using them."

-----

デバイスを完全に停止するまで使い倒す ―― これは、あまり経済的な行為とは言えません。

"Use it until the device is completely shut down". This is not very economical.

国内消費にも、GDPにも貢献しません。

It does not contribute to domestic consumption or GDP.

私自身「既存システムの積極的な廃棄」をアジテーションしてきた、という自覚すらあります。

I even realize that I have agitated "active disposal of existing systems".

そんな私が『モノを大切にしましょう』などと、おこがましいことが言える立場ではありません。

I'm not in a position to say something, such as "Let's take good care of things."

私は、デバイスの「完全な死」を見届けたいだけです。

I just want to see the "complete death" of the device.

私がいかなる手を尽しても、絶対的に救えない、究極の死を。

The ultimate death that I can never save no matter what I do.

(続く)

2020/10,江端さんの技術メモ

取り敢えず、週末の成果(ちゃんと動くものではないので、そのまま使うことはお勧めしません)

"client1.go"の内容

package main

import (
	"flag"
	"log"
	"net/url"

	"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"`
}

var addr = flag.String("addr", "0.0.0.0:8080", "http service address") // テスト
//var addr = flag.String("addr", "localhost:8080", "http service address") // テスト
var upgrader = websocket.Upgrader{} // use default options

func main() {
	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()

	gl := GetLoc{
		ID:  1,
		Lat: 35.653976,
		Lng: 139.796841,
	}

	log.Printf("ID:%d", gl.ID)
	log.Printf("Lat:%f", gl.Lat)
	log.Printf("Lng:%f", gl.Lng)
	//err = c.WriteJSON(mt, gl)
	err = c.WriteJSON(gl)
	if err != nil {
		log.Println("write:", err)
	}
}

"server8.go"の内容

/*
// server7.go

// Copyright 2015 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build ignore

// 使い方
// go run server7.go      (適当なシェルから)
// http://localhost:8080  (ブラウザ起動)
*/

package main

import (
	"flag"
	"html/template"
	"log"
	"net/http"

	"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"`
}

//var addr = flag.String("addr", "localhost:8080", "http service address")
var addr = flag.String("addr", "0.0.0.0:8080", "http service address") // テスト

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

func echo2(w http.ResponseWriter, r *http.Request) {
	c, err := upgrader.Upgrade(w, r, nil) // cはサーバのコネクション
	if err != nil {
		log.Print("upgrade:", err)
		return
	}
	defer c.Close()

	for {
		//mt, message, err := c.ReadMessage() // クライアントからのメッセージの受信(mtはクライアント識別子)
		//_, _, err := c.ReadMessage() // クライアントからのメッセージの受信(mtはクライアント識別子)

		gl := new(GetLoc)

		err := c.ReadJSON(&gl) // クライアントからのメッセージの受信(mtはクライアント識別子)

		log.Printf("ID:%d", gl.ID)
		log.Printf("Lat:%f", gl.Lat)
		log.Printf("Lng:%f", gl.Lng)

		if err != nil {
			log.Println("read:", err)
			break
		}
	}
}

func echo(w http.ResponseWriter, r *http.Request) {
	c, err := upgrader.Upgrade(w, r, nil) // cはサーバのコネクション
	if err != nil {
		log.Print("upgrade:", err)
		return
	}
	defer c.Close()

	/*
		for {
			//mt, message, err := c.ReadMessage() // クライアントからのメッセージの受信(mtはクライアント識別子)
			_, _, err := c.ReadMessage() // クライアントからのメッセージの受信(mtはクライアント識別子)
			if err != nil {
				log.Println("read:", err)
				break
			}

			// JSON(位置情報)を無理やり入れてみた

			gl := GetLoc{
				ID:  1,
				Lat: 35.653976,
				Lng: 139.796842,
			}

			//log.Printf("recv_serv: %s", gl)
			//err = c.WriteJSON(mt, gl)
			err = c.WriteJSON(gl)
			if err != nil {
				log.Println("write:", err)
				break
			}
		}
	*/

	gl := GetLoc{
		ID:  1,
		Lat: 35.653976,
		Lng: 139.796842,
	}

	//log.Printf("recv_serv: %s", gl)
	//err = c.WriteJSON(mt, gl)
	err = c.WriteJSON(gl)
	if err != nil {
		log.Println("write:", err)
	}

}

func home(w http.ResponseWriter, r *http.Request) {
	homeTemplate.Execute(w, "ws://"+r.Host+"/echo")
}

func main() {
	flag.Parse()
	log.SetFlags(0)
	http.HandleFunc("/echo2", echo2)           // echo関数を登録 (サーバとして必要)
	http.HandleFunc("/echo", echo)             // echo関数を登録 (サーバとして必要)
	http.HandleFunc("/", home)                 // home関数を登録
	log.Fatal(http.ListenAndServe(*addr, nil)) // localhost:8080で起動をセット
}

var homeTemplate = template.Must(template.New("").Parse(`
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>PruneCluster - Realworld 50k</title>

	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.0-beta.2.rc.2/leaflet.css"/>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.0-beta.2.rc.2/leaflet.js"></script>

	<script src="http://kobore.net/PruneCluster.js"></script>           <!-- これ、いずれローカルホストから取れるように換える -->
	<link rel="stylesheet" href="http://kobore.net/examples.css"/>      <!-- これも、いずれローカルホストから取れるように換える -->

	<!-- goのテンプレートのローカルって、どこになるんだろう? -->

</head>
<body>
<div id="map"></div>

<script>

	ws = new WebSocket("{{.}}"); // websocketの確立

	/*
	var print = function(message) {
		var d = document.createElement("div");
		d.textContent = message;
		output.appendChild(d);
	};
	*/

	//引数にはミリ秒を指定。(例:5秒の場合は5000)
	function sleep(a){
  		var dt1 = new Date().getTime();
  		var dt2 = new Date().getTime();
  		while (dt2 < dt1 + a){
			dt2 = new Date().getTime();
		}
  		return;
	}

    var map = L.map("map", {
        attributionControl: false,
        zoomControl: false
    }).setView(new L.LatLng(35.654543, 139.795534), 18);

    L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
        detectRetina: true,
        maxNativeZoom: 18
    }).addTo(map);

    var leafletView = new PruneClusterForLeaflet(1,1);  // (120,20)がデフォルト

	/*
	// 送信5発(3秒単位)を送信
	ws.onopen = function (event) {
		for (let i = 0; i < 1; i++){
			ws.send("Ebata is great"); 
			//print("send: Ebata is great");
	
			//print("Start sleep");
			sleep(1000);
			//print("End sleep");
		}
	}
	*/

	var markers = [];

	// 受信すると、勝手にここに飛んでくる
	ws.onmessage = function (event) {
		// データをJSON形式に変更
		var obj = JSON.parse(event.data);

		// データをマーカーとして登録
		var marker = new PruneCluster.Marker(obj.lat, obj.lng);
		markers.push(marker);
		leafletView.RegisterMarker(marker);

        // leafletView.ProcessView();  // 変更が行われたときに呼び出されなければなりません。		
	}


	/*
	// 100人分を登録する
    var size = 1;
    var markers = [];
    for (var i = 0; i < size; ++i) {
        var marker = new PruneCluster.Marker(35.654543 + (Math.random() - 0.5) * 0.00001 * size, 139.795534 + (Math.random() - 0.5) * 0.00002 * size);

        markers.push(marker);
		leafletView.RegisterMarker(marker);
		
	}
	*/
	

	// ランダムウォークさせる
    window.setInterval(function () {
        for (i = 0; i < 1; ++i) {
			//var coef = i < size / 8 ? 10 : 1;
			var coef = 10;
            var ll = markers[i].position;
            ll.lat += (Math.random() - 0.5) * 0.00001 * coef;
            ll.lng += (Math.random() - 0.5) * 0.00002 * coef;
        }

        leafletView.ProcessView();  // 変更が行われたときに呼び出されれなければならない
	}, 500);


	// サーバを止めると、ここに飛んでくる
	ws.onclose = function(event) {
		//print("CLOSE");
		ws = null;
	}


    map.addLayer(leafletView);
</script>



</body>
</html>
`))

未分類

(昨日の続きです)

(Continuation from yesterday)

江端:「まあ、それはさておき、『一旗』って何だ?」

Ebata: "Well, aside from that, what's a 'the flag' ?"

嫁さん:「『故郷に錦を飾る』とも言うね」

Wife: "It's also called 'return to their hometown in glory'"

江端:「『一旗』から想起されるイメージって、ミュージシャン、アイドル、役者、くらいしか思い付かないんだけど」

Ebata: "The only images that 'the flag' reminds me of are musicians, idols and actors"

嫁さん「あるいは、政治家とか野球選手・・・いずれにしても、この程度が私達のイメージが限界かな」

Wife: "Or a politician or a baseball player... Anyway, I guess this is the limit of our image.

江端:「自分の望みのことが達成できれば、それは、『一旗上がった』ということにならないのかな? 自分なりの目標に対して、それを達成すれば、足るというような」

Ebata: "If they can achieve what they want, is that 'they could raise the flag' ? I suppose it's good enough for my own goals, if I achieve them."

嫁さん「・・・いや、それはちょっと違うかな」

Wife:"...no, that's not enough.

江端:「?」

Ebata:"?"

嫁さん:「『故郷に錦を飾る』と合わせて考えれば、それは、第三者にとって ―― 特に出身地の ―― 多くの人間が、共通して、"成功"と認識できる何かでなければ、成立しない」

Wife: "If they use the phrase of "return to their hometown in glory", the flag should be something that could be perceived as a "success." for many people, especially in their hometown."

江端:「・・・多くの人が共通して価値のあると認められるもの ―― つまり"金"か」

Ebata: "...what most people consider to be of common value -- 'money'"

嫁さん「あるいは、有名になること ―― "名声"も含まれるかな」

Wife: "Or to be famous -- I guess that includes 'fame'"

江端:「第三者から観測可能な"金"と"名声"というとになると ―― ああ、なるほど、『ミュージシャン』などは、分かりやすい」

Ebata: "When it comes to 'money' and 'fame' that can be observed by a third party - ah, I see, 'musicians' is easy to understand.

嫁さん「そうだねえ。そこに至るプロセスが、努力と能力だけでなく、運も必要であり、加えて"その可能性が恐しく小さい"という要件も必要だね」

Wife: "Yes, you're right. The process of getting there requires not only effort and ability, but also luck, and in addition, 'the possibility should be terribly small'.

-----

正直、私は、

Honestly, I thought that

―― 面倒くさいな

"It's troublesome"

と思いました。

私は、「自分の意志で目指す成功」であるならともかく、「他人の目に映る成功」なんぞの為に、自分が振り回されることなど、ゴメンです。

I don't want to be at the mercy of "success in the eyes of others", but "success of my own volition.

-----

最後にいらんことを書き残します。

Finally, I'll leave you with something unnecessary.

こういう、他人視点の"一旗"幻想を持っている方は、このページの一読をお勧めします。

If you have an illusion of the flag in the eyes of others, let you read this article.

文字を読むのが面倒であるなら

If you can't be bothered to read the words, it is O.K. to watch these figures.

この図と、この図と、この図、を見るだけでも、結構です。

参考くらいにはなると思います。

I think it's at least a reference.