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

「接触確認アプリ「COCOA」、Android版は昨年9月から事実上機能せず 政府謝罪」

"The Android version of COCOA, an app for confirming contact with patients with new coronas, has been effectively disabled since last September, and the government has apologized"

Andoroidスマホを持っている人は激怒していいし、政府は床に頭を擦りつけて謝るべきだ ―― それでいいし、そうでなくてはならない。

People with Android phones should be outraged, and the government should apologize for scraping its head on the floor. That's fine, and that should be.

2020年9月末以降から機能していないなど、言語道断である。

It is outrageous that the system has not been functioning since the end of September 2020.

Andoroidスマホを持っている人は、危険に晒されたという理由で、政府に対して、国家賠償法に基づく訴訟を起こしても良いとも思う。

I also think that people who have Android phones can file a lawsuit under the State Compensation Act against the government on the grounds that they have been put at risk

(第1条2項の「重過失」に相当すると思うが、損害の認定が難しいとは思う)

(I think this is equivalent to "gross negligence" under Article 1, Section 2, but I know it is difficult to determine the damages.)

-----

だからこそ、エンジニアである私だけは、言ってやろうと思う。

That's why, as an engineer, I'm the only one who's willing to say it.

―― Andoroidのスマホって、そういうこと、結構、あるよね

"Android phones do that a lot, don't they?"

と。

-----

私、以前から、感染者端末を模擬するダミーソフトを配布すれば良いのに、と思っています。

I have always thought that it would be a good idea to distribute dummy software that simulates an infected terminal.

模擬ソフトの配布者は、少なくとも公開鍵暗号システムを取り扱えるITの専門家(つまり私)だけに限定して配布しても良いと思います。

I think that the distribution of the simulated software can be limited to only IT experts (i.e. me) who can handle at least public key cryptosystems.

スマホ本体には、『テスト用端末に反応を確認しましたが、感染者との接触ではありません』という表示が、一日、1~2件くらいい表示される方が、COCOAの運用としては、望ましいと思います。

I think it would be preferable for COCOA to display one or two messages a day that say, "Your phone has confirmed a reaction to the test terminal, but it is not contact with an infected person.

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

「私を助けてくれるのは、過去の私だ」 ―― を実感しています。

I'm realizing that 'The only person who can help me is the past me'.

数年くらい前から、私は、とにかく、どんなヘロヘロのコードでも、どんな汚いスクリプトでも、どんな見苦しいSQL文でも、片っ端からホームページに残すようにしています。

For a few years now, I've been trying to leave every bit of lousy code, every dirty script, every unsightly SQL statement on my homepage.

もちろん、記載事項は、「技術」に関することだけですので、私が何をやっているかは分かっても、私がどんな仕事をやっているかは、分からないハズです。

Of course, the description is only about "technology", so you know what I do, but you don't know what kind of work I do.

というか、意図的にそういう風に記載しています ―― 必要なら、各種の偽装情報も放り込んでいます。

Or rather, it's intentionally written that way -- with all sorts of disguised information thrown in if necessary.

なぜなら、私は、業務に関しての守秘義務があるからです。

Because I have a duty of confidentiality regarding my work.

------

私がメモに残しているのは、先人の残してくれたメモ(公開情報)を使って、自分で動かした結果だけです。

All I have in my notes are the results of using the notes (public information) left by my predecessors and running them by myself.

これは、基本的には「未来の私に対する備忘録の転送」ですが、同時に、「先人の貢献に対する、わずかばかりの貢献」の意図もあります。

This is basically a "memorandum transfer to future me", but at the same time, it is intended as a "small contribution to the contributions of my predecessors".

で、こんな「個人的な落書きのようなメモ」が、他の人に役に立っているのか ―― とも思えるのですが、これが結構、役に立っているみたいなんですよ。

So, I'm not sure if these "personal scribbled notes" are useful to other people, but they seem to be quite useful.

結構ビックリするんですけど、私のwp.kobore.netのサイトで、もっともPVを稼いでいるページは、

It's pretty amazing, but the page that generates the most PV on my wp.kobore.net site is

「MSYS2に"tree"一つ入れるのに大騒動(PGP鍵が不明とか)」

"A lot of trouble to get a single "tree" into MSYS2 (PGP key unknown)"

と、

and

「"dial tcp: lookup db on 127.0.0.11:53: no such host exit" に苦しめられる日々の終焉」

"Day by day of suffering from "dial tcp: lookup db on 127.0.0.11:53: no such host exit"

です。

信じられます?

Can you believe it?

"MSYS2"なんて、誰が使っているのかと思っているほどでしたよ、私は。

I even wondered who was using MSYS2.

-----

ところが、アクセスログを見てみると、世界各国からアクセスがあるようです。

However, when I looked at the access log, it seems that there are accesses from all over the world.

みんな、検索エンジンで、この極東のエンジニアのページに辿りついているわけです。

People are using search engines to find this Far Eastern engineer's page.

そんでもって、彼らは、日本語が読めなくとも、記載されたスクリプトから、その内容を推測しているのでしょう。

And even if they can't read Japanese, they can probably guess what it is from the script that is written.

私も、技術的に嵌ったときは、そのコンテンツが、中国語であろうがが、ロシア語であろうが、アラビア語であろうが、そこの記載されている内容を、かたっぱしから試します。

Whenever I have a technical problem, I try everything I can find, whether the content is in Chinese, Russian, or Arabic.

追い詰められたエンジニアは、なんだってやるのです。

A cornered engineer will do anything.

-----

「技術メモを世界に公開しておく」というだけのことが、世界中のエンジニアにに貢献している、ということは ―― 決して大袈裟な話ではないようです。

It's not an exaggeration to say that "making technical memos available to the world" is contributing to engineers around the world.

でもって、これは、私の私見ですが、

And this is just my personal opinion,

「ヘロヘロのコード、汚いスクリプト、見苦しいSQL文こそが、役に立つ」

'Lousy code, dirty scripts, and unsightly SQL statements are useful'

と信じています。

なぜなら、私は、そっちの方が、とても助かるからです。

Because that would be so much more helpful to me.

ぶっちゃけ、綺麗に簡潔に整理されたコードなんぞ、私には、クソの役にも立ちません。

To be frank, a clean and concise code is of no use to me.

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

―― 強いリーダーシップを持っている政治家が求められている

"Politicians with strong leadership skills are in demand"

これが本当か嘘か知りませんが、少なくとも、私は「求めていません」

I don't know if this is true or false, but at least I'm not 'asking for it'.

そんな奴が、どんな災禍を引き起してきたか、近代史を勉強した人ならすぐに分かると思います。

Anyone who has studied modern history will immediately understand what kind of disasters such a man has brought about.

ルドルフヒトラー、ヨシフスターリン、毛沢東、ポル・ポト、ニコラエ・チャウチェスク

Rudolf Hitler, Joseph Stalin, Mao Zedong, Pol Pot, Nicolae Ceauescu

「独裁者と強いリーダーシップとは違う」という人もいるかもしれません。

Some people may say, "Dictatorship is not the same as strong leadership.

私も、町内会や生徒会や私企業において、リーダが力強くあることは望ましいと思います。

I also believe that it is desirable for leaders to be strong in neighborhood associations, student councils, and private businesses.

しかし、「政治家」というのは、国民から付託されて、あるいは暴力装置に支えられて、権力を行使できる主体です。

However, a "politician" is an entity that can exercise power by being entrusted by the people or by being supported by a violent apparatus.

「強いリーダーシップ」と「政治家」の組み合わせは、通常のリーダーシップとは訳が違うのです。

The combination of "strong leadership" and "politicians" is not the same as normal leadership.

-----

新型コロナ禍の「経済対策」は難しいですが、「感染対策」は、かなりクリアになってきました。

The "economic measures" for the new corona disaster are difficult, but the "infection control measures" have become much clearer.

2回目の緊急事態宣言による結果で、証明されつつあると思います。

I think this is being proven by the results of the second emergency declaration.

人と「出会うな」「しゃべるな」「飯食うな」 ―― これまで、ずっと言われてきたことが、やはり正しかった。

Don't talk to people, don't meet people, don't eat with people - all the things they've been told were right.

正しかったんだから、正しいことをやる。

They were right, so we'll do the right thing.

飲食店に行き、そして、日本の飲食産業を救う。ただし、1人で行く。そんでもって「黙食」する。

Go to a restaurant and save Japan's restaurant industry. However, go alone. And eat in silence.

スマホを見ながら食っていれは、それなりに食事は楽しい。

If you eat while looking at your phone, the meal is enjoyable in its own way.

"1人飯"については、(この)私の日記が世界で一番詳しい。参照されたし。

My diary is the best place in the world to learn about "eating alone". Please refer to it.

さて ―― この程度のことに、「強いリーダーシップ」がいるのか? 私たちは、そこまで愚かか?

Now -- do we really need "strong leadership" for something like this? Are we really so stupid?

(そこまで愚かな政治家や官僚ははいますね。私忘れっぽいので、後日、リストを作って、公開します。新しい愚か者が出るたびに、更新して公開し続けます)

(There are politicians and bureaucrats who are that stupid. I'm forgetful, so I'll make a list and publish it later. I'll keep updating and publishing it as new fools appear)

-----

政府に求められるのは、「経済対策」と「感染対策」の2つのハンドルの、超高精度の制御です。

What is required of the government is ultra-precise control of the two handles, "economic measures" and "infection control.

この手の超高精度の制御は、『場当たり』と『予測』が原則です。

This kind of ultra-precise control is based on the principle of "on-the-spot" and "prediction".

制御とは、 ―― 古典制御であれ、現代制御であれ、PIDであれ、ファジィであれ、ニューロであれ、

Control is -- whether classical control, modern control, PID, fuzzy, neuro, etc.

■環境からの情報から得られた段階で対応する『場当たり』

- "On-the-spot" to information as it is obtained from the environment.

and,

■現在の制御から得られる『予測』

- 'Predictions' derived from current controls

です。

-----

「新型コロナの完全な撲滅はない」という前提に立てば、私たちは、ウイルスとの共存の世界を生きるしかありません。

Based on the premise that the new coronas will never be completely eradicated, we will have to live in a world of coexistence with the virus.

その手段こそが『場当たり』と『予測』です。

The means to do this are "on-the-spot" and "predicting.

もちろん、高度に、数学的かつ統計的で、論理的で、かつ高い的中率を導かなければなりません。

Of course, it has to be highly mathematical and statistical, logical, and highly targeted.

はっきりと言えることは「これをやれば完璧」 ―― そんな魔法のパラメータは存在しない、ということです。

What is clear is that there is no magic parameter of 'Do this and make it perfec'

政府はこれからも緊急事態宣言を発令し、国民はそれに即座に応じる。

The government will continue to declare a state of emergency and the people will immediately respond to it.

結果が出たら、緊急事態宣言を解除する ―― これを、これから何度でも繰り返すのです。

Once the results are in, the state of emergency will be lifted -- and this will be repeated as many times as necessary.

それが、政府の仕事で、そして、私たちに求められている行動変容です。

That is the work of government, and the behavioral change that is required of us.

-----

「強いリーダーシップ」なんぞは、不要です。

There is no need for "strong leadership.

必要なのは、「政府の全能力を結集して高度な計算と予測を行い、その結果を出せるリーダー」です。

What is needed is "a leader who can mobilize the full power of government to perform advanced calculations and forecasts and deliver the results.

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

1.前提

(1)"gintoyo_postgres_1 docker-entrypoint.sh Up 0.0.0.0:8910->5432/tcp" というDockerコンンポーネントが動作中であるとする。

(2)docker exec -it gintoyo_postgres_1 psql -U postgres -d ca_sim という方法で、"ca_sim"というDBに直接アクセスできるものとする。

(3)docker exec -it gintoyo_postgres_1 bash → psql -d ca_sim -p 8910 -U postgres という方法でも"ca_sim"というDBにアクセスできるものとする

2.目的

ca_sim というDBと全く同じものを、ca_sim9という名前で作る

3. 手順

(Step.1) Dockerで直接DBには入らないで、シェルでログインする
C:\Users\ebata\20210203\gintoyo>docker exec -it gintoyo_postgres_1 bash

(Step.2) シェルからDBを作成する(ここでは"ca_sim9")
root@8240d01caea2:/# createdb -U postgres ca_sim9
(Step.3) シェルからDBをコピーする(ここでは"ca_sim"→"ca_sim9") 。"-U postgres"を入れないと、"rootじゃない"等の文句を言われる
root@8240d01caea2:/# pg_dump -U postgres -Ft ca_sim | pg_restore -U postgres -d ca_sim9
■ シェルからpsqlアクセスしようとすると失敗する
root@8240d01caea2:/# psql -d ca_sim -p 8910 -U postgres
psql: error: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.8910"?
これは、既にコンテナ(8240d01caea2)の中に居るので、
# psql -d ca_sim -U postgres
もしくは
# psql -d ca_sim -p 5432 -U postgres
であればアクセスできると思います(5432番:postgresのデフォルトのポート番号)。
(懇意にして頂いているKさんからアドバイスを頂きました)
(Step.4) シェルから出る
root@8240d01caea2:/# exit
exit
(Step.5) Docker exec でアクセスする
C:\Users\ebata\20210203\gintoyo>docker exec -it gintoyo_postgres_1 psql -U postgres
psql (13.1 (Debian 13.1-1.pgdg100+1))
Type "help" for help.
(Step.6) "ca_sim9"が存在するか調べる
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 ca_sim    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 ca_sim9   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(5 rows)
(Step.7) "ca_sim9"の中身を調べる
postgres=# \c ca_sim9
You are now connected to database "ca_sim9" as user "postgres".
ca_sim9=# \dt
                 List of relations
 Schema |          Name          | Type  |  Owner
--------+------------------------+-------+----------
 public | aggregate_result       | table | postgres
 public | area_definition        | table | postgres
(中略)
 public | ways                   | table | postgres
 public | ways_vertices_pgr      | table | postgres
(21 rows)
ca_sim9=# \dv
               List of relations
 Schema |        Name        | Type |  Owner
--------+--------------------+------+----------
 public | bus_position_view  | view | postgres
(中略)
 public | user_position_view | view | postgres
(5 rows)
ca_sim9=#
=======  ここまで =========
この方法なら、アクセス中のDBでも、作成中のDBでも、強制的に(その時点でのDB)をコピーしてくれるようです。
以上