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

お題: subPerson1が終了したら subPerson2も巻き添えで強制的に終了させるには?
当初、一方が終了したら、他方も終了するように作りたかったのだけど、いいやり方が思いつかなかったので、subPerson1 → subPerson2 の順番で終わせるような実装にした。
まあ、subPerson1を送信専用、subPerson2を受信専用のgoroutineとすれば、まあ、いけるんじゃないかな、と
/*
	お題: subPerson1が終了したら subPerson2も巻き添えで強制的に終了させるには?
	当初、一方が終了したら、他方も終了するように作りたかったのだけど、分からなかったので、subPerson1 → subPerson2 の順番で終わせるような実装にした
*/

package main

import (
	"fmt"
	"sync"
	"time"
)

func subPerson1(i int, wg *sync.WaitGroup, ch chan struct{}) {
	defer wg.Done()
	time.Sleep(1 * time.Second)
	fmt.Println("		End of sub_person1(", i, ")")
	close(ch) // subPerson2に終了を通知する
}

func subPerson2(i int, wg *sync.WaitGroup, ch chan struct{}) {
	defer wg.Done()
	<-ch // subPerson1 のclose(ch)が発行されるまでロック (普通はselect待ちにする)
	fmt.Println("		End of sub_person2(", i, ")")
}

func person(i int, wg *sync.WaitGroup) {
	fmt.Println("	Start... person(", i, ")")
	defer wg.Done()

	subWG := sync.WaitGroup{}

	subWG.Add(2)
	ch := make(chan struct{})
	go subPerson1(i, &subWG, ch)
	go subPerson2(i, &subWG, ch)

	subWG.Wait()

	fmt.Println("	End... person(", i, ")")
}

func main() {
	fmt.Println("start... main()")
	wg := sync.WaitGroup{}
	for i := 0; i < 5; i++ {
		wg.Add(1) // goルーチンを実行する関数分だけAddする

		go person(i, &wg)
	}

	wg.Wait()
	fmt.Println("end of ... main()")
}
出力結果
ebata@DESKTOP-P6KREM0 MINGW64 ~/goga/0-2
$ go run main.go
start... main()
        Start... person( 4 )
        Start... person( 0 )
        Start... person( 1 )
        Start... person( 3 )
        Start... person( 2 )
                End of sub_person1( 3 )
                End of sub_person2( 3 )
        End... person( 3 )
                End of sub_person1( 0 )
                End of sub_person1( 4 )
                End of sub_person2( 4 )
        End... person( 4 )
                End of sub_person2( 0 )
        End... person( 0 )
                End of sub_person1( 1 )
                End of sub_person2( 1 )
        End... person( 1 )
                End of sub_person1( 2 )
                End of sub_person2( 2 )
        End... person( 2 )
end of ... main()

とまあこんな感じで、sub_person1 → sub_person2 → person という順番でgoroutineが終了していることが確認できました。

未分類

総務省からの手紙がきていました。

「ん・・・『取下げ』?」

ああ、そういうことか。電話で「オンライン不使用団体については、私が自分で纏めます」といったから、「取下げ」扱いになっている訳ですね。

でも、メールで、オンライン使用団体は教えて貰ったから、全然OKです。

疑問点が一つ。この収入印紙300円分は、再利用できるのだろうか? 一応残しておくか。

 

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

先程、情報開示請求先の、総務省の担当者の方から、『本日中に資料を送付して頂ける』旨の電話連絡を頂きました。

総務省の方からお電話頂き、調べ方について丁寧に御説明頂きました。まずは手順を忘れない内にメモを残しておきます。(政治資金収支報告書のオンライン提出を怠っている政治団体を全部開示する件 続報)

I received a phone call from the person in charge at the Ministry of Internal Affairs and Communications, to whom I made a request for information disclosure, stating that they would be able to send me the documents today.

そもそも、存在していなかった資料をわざわざ作って頂いているので、時間がかかるのは覚悟しているたのですが ――

I was prepared for it to take a long time, since they had to create a document that didn't exist in the first place, however...

それにしても、丁寧なフォローをして頂いて、恐縮してしまいます。

Nevertheless, I'm very grateful for their careful follow-up.

-----

親切が嬉しい反面、ちょっと心配になってきました。

While I'm glad for their kindness, I'm getting a little worried.

この対応の理由には、3つのケースが考えられると思うからです。

The reason for this response is that I think there are three possible cases.

(1)基本的に総務省の担当者の方が親切

(1) Basically, the person in charge at the Ministry of Internal Affairs and Communications is kind.

(2)情報開示請求をしてくるような民間人はやっかな奴が多い → その対応のノウハウがある

(2) Many private citizens who request disclosure of information are difficult, so they have the know-how to deal with them.

(3)こんなコラムを書いているような奴(江端)を怒らせると面倒

(3) A guy who writes a column like this (Ebata) can be a pain in the ass if they piss him off.

上記の(1)だといいけど、(3)だとちょっと悲しいなぁ、と思っています。

I hope it's (1) above, but if it's (3), I'm a little sad.

-----

あ、第4のケースもありそうです。

Oh, there may be the fourth case.

(4)「政治資金収支報告書のオンライン提出を怠っている政治団体」を、江端から思いっきりDisって欲しい

(4) They want Ebata to disrespect "political organizations that fail to submit their political fund balance reports online" with all his might.

うん、これありそうだな。

Yeah, that's a possibility.

『政府としては、政治団体に恥をかかせるのはマズいけど、民間人のライター(江端)がやってくれるなら、それに越したことはない』

"It's not good for the government to embarrass a political group, but if a civilian writer (Ebata) can do it, so much the better"

と。

これなら、政府と私が、Win-Winです。

This is a win-win situation for the government and me.

-----

まあ、こんな感じで、『アナログ かつ アナクロ な政治団体を見張っていくのは、私のようなシニアの義務だろう』てなことを思っています。

In this way, I think it is the duty of senior citizens like me to keep an eye on analog and analogous political organizations.

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

C/C++では、構造体を丸ごと送信するのに、文字列にキャストを被せて無理矢理送り込むということをやっていました。

Goの場合、チャネルに ch chan interface{}を使うと、何でも運んでくれるようなので、これで同じように「手を抜く」を考えていました。

で、色々試した結果、こういう風に使えるらしいので自分用のメモとして残しておきます

// 単一通信の構造体
type SingleCaster struct {
	//ch   chan int   // 単一通信路
	ch   chan interface{}
	lock sync.Mutex // 単一通信路のロック
}

でもって、

type locInfo struct {
	lon float64
	lat float64
}
でもって、
type PERSON struct {
    number      int     // 人間番号
    live        bool    // 存在フラグ 存在:true 消滅:false
    destination locInfo // 出発座標
    arrival     locInfo // 到着座標
    distance    float64 // 到着座標と出発座標の距離
    present     locInfo // 現在位置
}

を、こんな風に運びたい時、

sc_person.ch <- person.present

これで、元に戻ります。

case v_p := <-sc_person.ch:
			fmt.Println("catched from person send", v_p)
			//var ll locInfo
			ll := v_p.(locInfo)
			fmt.Println(ll.lon, ll.lat)

channelで構造体を送り込む方法

var ch1 chan interface{}

type PERSON struct {
	number      int     // 人間番号
	action      int     // 0:リクエスト 1:乗車 2:降車
}

func sub1(){
	 var person PERSON
	 person.number = 1
	 person.action= 2

	 ch1 <- person 
} 

func sub2(){

	 p := <-ch1

	 person := p.(PERSON)
	 fmt.Println(person) 
}

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

私、「気が狂うほど勉強をし続けた10年間」がありました。

I had "ten years of crazy studying".

実際、気が狂って、電車のレールの上に落ちていきそうになった ―― という話は、こちらに書きました。

In fact, I almost went crazy and fell onto the train rails -- I wrote about it here.

夢は「持つ」より「捨てる」方がはるかに辛いです。

It is much harder to "throw away" a dream than to "have" one.

しかし、それを認識して、勇気を持って「捨てる」を実施しないと、命を落しかねません。

However, if we do not recognize this and courageously implement "discarding", we may lose our lives.

ですので、歌番組等で、『夢を持つことの素晴しさ』だの、『夢を諦めるな』てな若いミュージシャンの安直な歌詞を聞いていると、同世代の若者への『洗脳』が本気で心配になってきます。

Therefore, when I listen to young musicians on singing programs and hear their simple lyrics such as "It's wonderful to have a dream" or "Don't give up on your dream," I am seriously worried about brainwashing the youth of their generation.

加えて、

In addition,

―― いずれ売れなくなる(ことが運命づけられている)ミュージシャンである彼らの未来が、本気で心配です

"I'm seriously worried about their future as musicians who will eventually stop selling (and are destined to)"

この辺は、こちらの、「5年以上芸能界に残って活動ができている芸能人は、1万人に1人」の、私の計算結果をご覧下さい。

For more information on this, please see my calculation of "1 in 10,000 entertainers who remain active in the entertainment industry for more than 5 years" here.

それはさておき。

But that's beside the point.

-----

その「気が狂うほど勉強をし続けた10年間」で知ったのですが、社会人で勉強をしている人は、凄く多いです。

During the "ten years of crazy studying", I know there are many adults who are studying after their working.

私、ファストフード店で、コーヒーを頼んで、2~3時間、勉強に集中する日々を、10年間続けてきましたが、どんな店に入っても、必ず1~2人はいたものです。

For the ten years, I would order a cup of coffee at a fast food restaurant and concentrate on my studies for two to three hours. And no matter what kind of restaurant I entered, there would always be one or two people like me there.

しかし、私の場合、「スタバ」と「マック」にだけは行きませんでした。

However, in my case, I did not go to "Starbucks" and "Mac"

「スタバ」のコーヒーは高価すぎるし、座席の混在が酷い。

The coffee at Starbucks is too expensive and the seats are badly mixed.

「マック」のコーヒーは不味く、空調が酷い(寒いか暑い)。

The coffee in "Mac" is bad and the air conditioning is terrible (cold or hot).

私の場合、通勤途中の人の出入りの少ないローカル駅の近くにポツンと立っている「モスバーガ」か「KFC」を使っていました。

In my case, I used to use the "Mossberg" or "KFC" that stood poking around near the local train station with few people coming and going on the way to work.

もちろん、ハンバーガーなどは頼まず、ひたすらコーヒー1杯のみで粘りました。

Of course, I didn't order a hamburger, but just a cup of coffee.

夜9時以降はお客もいなくなり、心理的な抵抗も少なくて済みました。

After 9:00 p.m., there were no more customers, so there was less psychological resistance.

店員に迷惑がられた、という記憶もありません ―― まあ、暗黒オーラを出している時の私に、声をかけられる店員がいなかっただけかもしれませんが。

I don't remember any shopkeepers bothering me -- well, maybe there just weren't any shopkeepers who could talk to me when I was giving off a dark aura.

-----

ともあれ、結果として、私は、10年間の時間を失いました。

Anyway, as a result, I lost 10 years of my life.

『あの10年、全くの無駄だった』と思うと、やはり悔しい思いはあります。

I still feel frustrated when I think that those 10 years were a complete waste.

もっと、良い時間の使い方があったのではないかと思うし ―― 客観的に見て、私は数多くのチャンスを見逃してきたと思います。

I think I could have used my time better, and -- objectively speaking -- I think I've missed a lot of opportunities.

今、こうして日記を書いている時間も、同じように、無駄な時間を使っているのかもしれません。

The time I'm spending writing this diary may be wasted in the same way.

-----

しかし、未来の私に見えるかもしれない後悔は、今の私には見えない後悔です。

But the regret that I may see in the future is a regret that I cannot see in the present.

後悔はしたくないけど、これからも私は後悔し続けるのでしょう。

I don't want to regret anything, but I know I will continue to regret something.

そして、人生最期の時に、この『迷走しつづけている私の人生』を、『迷走しつづけた人生だった』と総括することになるんだろう、と思っています。

I think that at the end of my life, I will sum up this "life of mine that has been a constant wandering" as "a life that has been a constant wandering".

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

「入門WebAssembly」と言う本が出版されるようです。

It seems that a book called "Introduction to WebAssembly" is being published.

もの凄く読みたいのですが ―― 高い。

I want to read it so badly, but -- it's expensive.

(WebAssemblyの日本語の本、まだ3冊くらいしかないみたいです)

(It seems that there are still only about three books on WebAssembly in Japanese)

私、技術書の値段は概ね適正だと思っていますが、問題は、技術書の提供してくる内容と、私が欲する知識の内容がマッチしないことがあるのです。

I believe that the price of technical books is generally fair, but the problem is that sometimes the content of the technical book does not match the content of the knowledge that I want.

(1)本の内容が「難しすぎる」か「簡単すぎる」、または

(1) The content of the book is "too difficult" or "too easy," or

(2)「本が提供する情報」と「私が知りたい情報」がマッチングしない

(2) "Information provided by the book" and "Information I want to know" do not match.

ということが多いからです。

are often the case.

そういえば、私、ビットコインについては、現時点で出版されている本のほとんどに目を通したと思うのですが ――

Speaking of which, I think I've read through most of the books published on Bitcoin at this point -- and I'm not sure I've ever read anything else.

私が知りかった「ビットコインの信用」について記載されている本は、1冊しかありませんでした。

There was only one book describing "Bitcoin trust" that I could find.

その1冊であっても、マッチングは15%程度だったかなぁ、と思います。

Even for that one book, I think the matching was about 15%.

まあ、それはさておき。

Well, that's beside the point.

-----

それにつけても、WebAssembly、勉強したいです。

I would like to learn WebAssembly.

師匠のSさんに教えてもらったこのデモを見てから、この技術をGISのビューアに転用したいとずっと考えています。

Ever since I saw this demo that my mentor, Mr. S, taught me, I have been thinking of converting this technology into a GIS viewer.

自分でも、色々やってきました。

I've done a lot of work on my own.

問題は、今は、これよりも優先してやらなければならばならないこととがあることと、その本が「当たり」か「はずれ」か、分からないことです。

The problem is that now I have to prioritize what I have to do over this, and I don't know if the book is a "hit" or a "miss".

うーん、どうしようかなぁ。

Hmm, I wonder what I should do.

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

本日は、コラムがリリースされた日なので、日記はお休みです。

Today, new my column is released, so I take a day off.

踊るバズワード ~Behind the Buzzword(16)STEM教育(4)

GIGAスクール構想だけでは足りない、「IT×OT×リーガルマインド」のすすめ

Dancing Buzzword-Behind the Buzzword(16) STEM education(4)

The GIGA school concept is not enough, "IT x OT x Legal Mind" is recommended

 

-----

中国(大陸の方)では、高齢者がスマホを使い倒しているらしいです。

In China (the mainland), I heard that the elderly are using their smartphones to the fullest.

理由は単純で、

The reason is simple.

『政府は行政サービスをスマホで提供している。使う/使わないは、お前たちの勝手だ』

The government is providing government services through smartphones. It's up to you to use it or not."

と言い切って、スマホを使わない人をバッサリと切り捨てているそうです。

They seem to be cutting off people who don't use smartphones by saying the above.

スマホを使えなければ、生きていくことができない ―― そりゃ、だれだって、命懸けでスマホの操作を覚えるでしょう。

If they can't use a smartphone, they can't live -- anyone would risk their life to learn how to use a smartphone.

-----

この話、結構、残酷なこと言っていると思いますが ―― 私も会社の中では同じような目にあっています。

I think this story is pretty brutal -- however, I've been through the same thing in my company.

会社は、社員の意見など聞くことなく、勝手に業務システムを変更してしまいます。

Companies change their business systems at will, without listening to the opinions of their employees.

それまで、蓄積してきたオペレーションの知識は、その瞬間、ドブに捨てられます。

At that moment, all the operational knowledge I have accumulated will be thrown away.

また1から、いや、ゼロから、学び始めなければなりません。

I have to start learning again from even scratch.

そして、どんなに恥しくても、大声で『助けて下さい!』と叫べない奴は ―― (社内で)死にます。

And those who can't shout out loud, no matter how embarrassing, "Please help me! (within the company) " will die.

面子もプライドもあったもんじゃありません。

There is no honor, no pride.

『無様に泣き叫ぶシニアたち』―― これが、ITシステムを使わされている世界の現状です。

"Senior citizens crying out in vain." This is the state of the world in which we are forced to use IT systems.

-----

という訳で、(今回のコラム以外の方法では)「デジタル競争力世界第28位」から挽回する為には、

So, in order to recover from being "the 28th most digitally competitive in the world" (in ways other than this column), we need to make citizens who

■大声で『助けて下さい!』と叫べぶことができるようになり、

- are able to shout out, "Please help me! in a loud voice, and

■そこに手を差し延べることができるになる

- are able to reach out to the voice.

国民の育成だと思うのです。

だから ―― 私を含めて、高齢者の皆さんは諦めて下さい。

So -- please give up, all you elderly people, including me.

「『無様に泣き叫ぶシニア』になる勇気」 ―― これが、私たちに残された老後戦略なのです。

"To be a wailing old man". This is the only retirement strategy we have left.

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

「政治資金収支報告書のオンライン提出を怠っている政治団体を全部開示する件」で書いた通り、先程、郵便局から、行政文章開示請求書を送付してきました。

政治資金収支報告書のオンライン提出を怠っている政治団体を全部開示する件

As I wrote in my article "Disclosure of All Political Organizations Failing to Submit Political Fund Balance Reports Online," I went to the post office and submitted the Administrative Text Disclosure Request Form to Ministry of Internal Affairs and Communications (formerly Ministry of Public Management, Home Affairs, Posts and Telecommunications).

きっと記載不備を指摘されて、何回か再提出することになると思いますが ―― 完全正確な書類を作成する時間よりは、そっちの方が時間が短い(ことが多い)です。

I'm sure I'll be pointed out as incomplete and I'll have to resubmit several times -- that's less time (and often more) than it takes to create a completely accurate document.

私は、これを"ping処理"と読んでいます。

I call this "pinging".

Ping(ピンガー)とは、潜水艦が、敵潜水艦、または、駆逐艦等の洋上戦艦の位置を特定するために使われる、アクティブソナーの発する音波のことです。

A Pinger is a sound wave emitted by an active sonar used by a submarine to locate an enemy submarine or an offshore warship such as a destroyer.

ネットワークの世界では、ターゲットのマシンの稼動を確認する為に、">ping (相手のIPアドレス等)"というコマンドインターフェースで使われています。

In the network world, the command interface ">ping (e.g. IP address of the other machine)" is used to check the operation of the target machine.

要するに「メッセージを投げつけられたら、応答せざるを得ない」という性質を利用したコミュニケーションです。

In essence, it is communication that takes advantage of the nature of "when a message is thrown at you, you have no choice but to respond.

まあ、相手側にとっては、甚だ迷惑なコミュニケーションであることは ―― 潜水艦であろうが、コンピュータであろうが、そして行政手続であろうが ―― 共通していると思います。

Well, I think we can all agree that it's a very annoying communication for the other side -- whether it's a submarine, a computer, or an administrative procedure.

-----

"ping処理"の濫用形態が、電話やメールやSNSでのストーカー行為ですが、

Well, abusive forms of "pinging" is stalking through phone calls, emails, and social networking sites, however I think

『まあ、行政機関に対するストーカーなら、国民の権利だろう ―― 適正な運用の範囲であれば』

"Well, if I am stalking a government agency, it's our right -- as long as it's done properly."

と思っています。

-----

私の知る限り、国土交通省、厚生労働省は、電話で親切に対応してくれました。

As far as I know, the Ministry of Land, Infrastructure, Transport and Tourism and the Ministry of Health, Labor and Welfare were kind enough to help me over the phone.

文部科学省は1回だけWebのコメント欄で質問したことがありますが、その時は、無視されました。

I had only asked a question to The Ministry of Education, Culture, Sports, Science and Technology (MEXT) in the comments section of the web once, but at that time, I was ignored.

さて、総務省は、どうかな?

Now, how will the Ministry of Internal Affairs and Communications respond?

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

我が家のダイニングテーブルは、4人用なので、家族全員が着席できる ―― はずなのですが、

Our dining table is designed for four people, so the whole family can be seated, however,

感染予防用の2つのパーティションを購入後、そのパーティションに書類を貼りつけるようになり、

After purchasing two partitions for infection prevention, we started attaching documents to the partitions.

娘たちが、読書したり、スマホでアニメ見たり、レポート作成したり、製図を書いたり、リモート授業を受講したり、

My daughters are reading, watching cartoons on their phones, writing reports, drawing, taking remote classes, etc. on the table,

テーブルの上は、ノートパソコン、各種資料、請求書、書籍等が散乱している状態となっており、

with being cluttered with laptops, various documents, invoices, books, etc.

テーブルの定員は、今や『2名』が上限となっています。

The maximum number of people at a table is now just "two".

-----

先程、パンケーキとスクランブルエッグを作り、皿に盛って着席しようとしたのですが、すでに、嫁さんと次女によって、テーブル席が占拠されていました。

I had just made pancakes and scrambled eggs, put them on plates and was about to be seated, but the table was already occupied by my wife and second daughter.

仕方がないので、トレイに皿を置いて、

I had no choice but to put my plate on the tray.

『部屋で食べてくる』

"I'll eat in my room."

と言って、階段を上がり始めました。

I said, and started up the stairs.

次女:「二階席は、比較的、空席がございますーー」

Daughter: "The seats on the second floor are relatively empty.

私:「ないわ! 二階席のテーブル(私の机)も、プログラムリスト、参考資料と書籍で、満席だ!!」

I: "No! Even the upstairs table (my desk) is full, with program lists, reference materials and books!"

と、愚痴を言いつつ、自分の部屋に向かいました。

I complained and went to my room.