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

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

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

世界を「数字」で回してみよう(64)番外編:

あの医師がエンジニアに寄せた“コロナにまつわる13の考察”

Let's turn over the world by number (64). Extra:

"A forefront of corona infection battle" sent by the doctor to me as an engineer

-----

私の著書の中では、最長のコラムとなってしまいました。

This is the longest column I've ever written.

(Step1)シバタ先生からご送付頂いたメールを江端が読む

(Step 1) Ebata read the email sent by Dr. Shibata

(Step2)江端が理解の為、片っ端からシバタ先生のメールの中の専門用語を調べまくる

(Step 2) Ebata looks up all the technical terms in Shibata-sensei's e-mails to understand them.

(Step3)江端が説明する為にフレーズの変更や追加を行い、図面を作成し、シバタ先生にメールで転送する

(Step 3) Ebata makes changes and additions to phrases to explain, makes drawings, and forwards them to Dr. Shibata via email.

(Step4)それを読んだシバタ先生が、江端の誤解を解消し、正確な解説を行う為のフレーズや図面を追加して、江端に転送する

(Step 4) After Dr. Shibata reads it, he adds phrases and drawings to clear up Ebata's misunderstanding and provide accurate explanations, and forwards them to Ebata.

(Step5)それを読んだ江端が・・・(以下、(Step2)に戻る ・・・)

(Step 5) Ebata reads it, and... (Goes back to (Step 2) )

このステップの間に、件(くだん)の後輩のレビューを受ける

During this step, I am reviewed by the junior.

-----

この繰返しを、数日間、午後11時~午前3時頃に間に行い、

This process was repeated for several days between 11 p.m. and 3 a.m.

最終的に纏まったメールを、編集部のMさんに転送し、Mさんがこの膨大な文章を、僅か2日間で公開ページとして編集し、その最終確認を、シバタ先生と江端に依頼をし、

Ebata forwarded the final edition by e-mails to Ms.M, who was in charge of editing, she took this massive amount of text and edited it into a public page in just two days. and asked both Dr. Shibata and Ebata to do a final check on that,

シバタ先生と江端は、(素直にOKを出さずに)さらに、Step2~Step5を実施し、

However, Dr. Shibata and Ebata (without giving a straightforward go-ahead), furthermore, conducted Step 2 through Step 5 again.

Mさんの最終校正を経て、本日18:30にようやくリリースされました。

After final proofreading by Ms.M, it was finally released today at 6:30 p.m.

-----

で、今、冷静になって、読み直してみると、

And now that I've cooled down and re-read it, I come to think

―― 関係者全員に、「何かが乗り移っていた」かのようなオーラが漂う作品として仕上がっている

"It's a complete work of art with an aura, as if "something had taken over" everyone involved"

ような気がします。

その何かの一つには、「ここ1週間ほどの、新型コロナ感染者数の、かつて経験したこともないほどの増加」があったような気がします。

I think one of those something was "an unprecedented increase in the number of new corona cases in the last week or so".

ただ、関係者全員 ―― 特に"私" ―― が、冷静さを欠き、『読者、置いてけぼり』にしてしまったような気もしています。

However, I just feel that everyone, especially I, has lost our cool and "forgot about the readers".

-----

反省しています。

I'm deeply sorry.

でも、まさに、「今」必要な、とても大切なことを記載した、と信じています。

However, we believe that we have described the very important things that people in Japan need right now.

だから―― 「見出しだけ」でいいから、読んでください。

So, please read this work, even if you read "headlines only".

見出しだけなら、たったの13行です。

For headlines only, there are only 13 lines.

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

以前、我が家のFMトランスミッタについてのお話をしました。

I've talked about our FM transmitter before.

この件について、読者の方から、メールを頂き、色々とアドバイスを頂きました。

I received an email from a reader who gave me a lot of advice on this matter.

当家のFMトランスミッタの設置環境について、文章で説明するのが難しくなってきたので、以下のような手書きの図面をメールに添付して送付しました。

It's getting harder and harder to explain our FM transmitter installation environment just in writing, so I've sent the following free-hand drawing as an attachment of my e-mail.

-----

ところで、私、自分の管理している会社の資産の中で、管理権を他人に手離さないものがあります。

By the way, I have some assets under my control,that I never hand over to others.

「白板(ホワイトボード)」です。

It is a "white board".

『他の人たちは、ホワイトボードにスペックアウト(書き出す)せずに、他の人に自分の考えを伝えることができるのか?』と、いつも不思議に思っています。

I have always wondered, why other people can communicate their thoughts to others, without specing them out (writing them out) on the whiteboard.

少くとも私は、スペックアウトされていない他人の考えは、「理解すること」は勿論、「理解するフリ」すらできません。

At least, I cannot "understand" or even "pretend to understand" other person's ideas that aren't speced out.

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

(昨日の続きです)

(Continuation from yesterday)

これについては、以前から言い続けてきましたが、もう一つ言えそうなことは、

I've been saying this for a long time now, but the other thing I could say about this,

―― システム構築のセンスが絶望的にない

"many people are hopelessly lacking in the sense of system configuration"

と人間が多いということです。

私は、この理由がかなり明確に分かっていまいます。

I know the reason pretty clearly.

「モノを作らない/作れない」 ―― この一択です。

'They don't make/can't make things' -- this is one choice.

「情報工学」だの、「システム構築方法」だの、講義を受けたり、How to 本を読んでいる暇があるなら ――

If you have time reading "how to books" and attending lectures on "information engineering" and "how to build systems"

「週末使って、ラズパイを使って、ショボいアプリを一つ自作」した方が、その100倍も知識が得られるし、

You can get 100 times more knowledge if you "create a poor app by yourself using a Raspberry Pi on the weekend."

「寝る時間削って、100行のコードを書く」方が、その100倍も速く理解できる。

"Writing 100 lines of code without sleeping" is 100 times faster than them.

そもそも、モノを作らない/作れない人間に、その技術的な難しさを頭の中でイメージすることができるとは、私には到底思えないのです。

In the first place, it's hard for me to think that a person who doesn't/can't make things can imagine the technical difficulty in their mind.

-----

まあ、パワーポイントとワードしか使わない人間であっても、イベントプランや、ビジネスモデルを作ることはできるでしょう。

Well, even a person who uses only PowerPoint and Word can make event plans and business models.

しかし、モノを作らない/作れない人間に、発明などできるわけがない。

However, I don't think that a person who does or cannot make things can invent.

発明とは「技術的思想の創作」(特許法第1条)です。

An invention is a "creation of a technical idea" (Patent Law Article 1).

技術的思想は、技術的アプローチを経た経験、つまり「モノを作る経験」から案出されます。

A technical idea is devised from experience through a technical approach, that is, "the experience of making things."

パワーポイントとワードだけで、エンジニアを名乗り、特許発明の業務に携わるものは、

Those involved in the work of patented inventions, self-proclaimed an engineer Just using PowerPoint and Word are

『無銭飲食者よりもタチが悪い』

"it's worse than a cashless person".

と思っています。

I think.

私は、口にしないだけです。

I just don't speak that, because,

サラリーマンですから。

I'm an office worker.

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

最近、発明のアイデアを創成する為に、ブレーンストーミング(BS)を頻繁に参加しています。

Lately, I've been participating in frequent brainstorming (BS) sessions to create ideas for inventions.

発明創成に関しては、BSの最中に「否定的なコメントをしてはならない」という暗黙のルールがあります。

When it comes to invention creation, there is an unspoken rule of "no negative comments" in the middle of the BS.

その理由の一つとしては、発明を創成する為には、現状の社会常識のパラダイムの「破壊」が前提となるからです。

One of the reasons is that in order to create an invention, "destruction" of the current paradigm of common sense is a prerequisite.

簡単に言えば、

Simply, it is

■「非常識」が常態となった世界のイメージ創成

"Creating an image of the world where "insane" is the norm"

であり、もっと簡単に言えば、

more simply, it is

■「異世界」の構築

"Creating 'another world'"

です。

-----

最近分かってきたのですが、他の人と比べて、私は、この『「異世界」の構築』が、比較的「得意」なようです。

I've recently discovered that, compared to others, I seem to be relatively 'good' at this 'another worldly' construction.

私は、「ぶっとんだ世界」を考えることが好きです。

I like to think of the "insane world".

例えば、

For example,

(1)ミサイルの着弾が3分後と確定した世界 → 被害は免れないが、この被害を最小にする為の情報システムは?

(1) A world where it is confirmed that the missile will land in three minutes → Damage is inevitable, but what is the information system to minimize this damage?

(2)日本の観測点の半分以上の最高気温が40度を越えと日々が20日ぶっつづけで続く世界 → 一日、千人~万人のオーダで発生する熱射病患者を、医療設備以外の手段でどうやって治療するか?

(2) More than half of the stations in Japan have a maximum temperature of over 40 degrees Celsius for 20 straight days → How do we treat tens of thousands of heatstroke patients a day, in tens of thousands of orders, by means other than medical equipment?

(3)特殊出生率が0.5までに下った世界 → 子どもの存在が珍しい世界における、子どもの育成方法や教育方法は?

(3) A world where the fertility rate has fallen to 0.5 → What are the methods of raising and educating children in a world where the existence of children is rare?

とまあ、こんな風に、極端な世界を考えることで、「課題」が出てきます。

And, well, thinking about the world of extremes in this way helps us to see the "challenges".

でもって、こちらでも述べていますが、

―― 「発明」は難しくない。本当に難しいのは「その発明を必要とする課題」を見つけ出すことである

"Invention" is not hard. What is really hard is to find the "problem that requires the invention".

というのは本当です。

It is true that.

(続く)

(To be continued)

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

docker-compose.ymlの内容

version: '3.5'

services:
app:
build:
context: ./
dockerfile: docker/app/Dockerfile
target: build
command: ./main
depends_on:
- db
- tile38
volumes:
- ./:/XXXXXX_ride_hailing_go
db:
image: postgis-pgrouting:latest
build:
context: docker/postgis-pgrouting

expose:
- "5432"
ports:
- "15432:5432"
volumes:
- data
- ./:/XXXXX_ride_hailing_go
data:
image: busybox
volumes:
- "/data/db"
tile38:
image: tile38/tile38:1.17.0
expose:
- "9851"
ports:
- "19851:9851"
volumes:
- tile38_data
tile38_data:
image: busybox
volumes:
- "/data/tile38"
nginx:
image: nginx:1.15-alpine
ports:
- "80:80"
links:
- app:app
volumes:
- "./nginx.conf:/etc/nginx/conf.d/default.conf"

でもって、

XXXXXX_ride_hailing_go/docker/postgis-pgrouting/ の直下の Dockerfileの中身

FROM postgres:11.2
LABEL maintainer="dev@connect.co.jp"

ENV POSTGIS_MAJOR 2.5 →これもコメントアウト
ENV POSTGIS_VERSION 2.5.2+dfsg-1~exp1.pgdg90+1 → これはコロコロ変わるので注意のこと
ENV PGROUTING_MAJOR 2.5 → 最近は"3"になっている
ENV PGROUTING_VERSION 2.5.2
→コメントアウト

社内から使う時には、以下のプロキシの設定がないと動かない
ENV http_proxy http://12.34.56.789:8080
ENV https_proxy http://12.34.56.789:8080 ("http://" なのか "https://"なのかを間違えないように)

RUN apt-get update \
&& apt-cache showpkg postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR \
&& apt-get install -y --no-install-recommends \
postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR=$POSTGIS_VERSION \
postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR-scripts=$POSTGIS_VERSION \
postgis=$POSTGIS_VERSION \
postgresql-$PG_MAJOR-pgrouting \
&& rm -rf /var/lib/apt/lists/*

RUN mkdir -p /docker-entrypoint-initdb.d
COPY ./initdb-postgis.sh /docker-entrypoint-initdb.d/postgis.sh
COPY ./update-postgis.sh /usr/local/bin
COPY ./initdb-pgrouting.sh /docker-entrypoint-initdb.d/routing.sh

VOLUME /XXXXXX_ride_hailing_go
WORKDIR /XXXXXX_ride_hailing_go

の赤字の部分が原因で、以下のようなエラーが出ているらしい、というところまで分かった。

Reverse Provides:
Reading package lists…
Building dependency tree…
Reading state information…
E: Version '2.5.2+dfsg-1~exp1.pgdg90+1' for 'postgresql-11-postgis-2.5' was not found
E: Version '2.5.2+dfsg-1~exp1.pgdg90+1' for 'postgresql-11-postgis-2.5-scripts' was not found
E: Version '2.5.2+dfsg-1~exp1.pgdg90+1' for 'postgis' was not found

Service 'db' failed to build: The command '/bin/sh -c apt-get update && apt-cache showpkg postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR && apt-get install -y --no-install-recommends postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR=$POSTGIS_VERSION postgresql-$PG_MAJOR-postgis-$POSTGIS_MAJOR-scripts=$POSTGIS_VERSION postgis=$POSTGIS_VERSION postgresql-$PG_MAJOR-pgrouting && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 100

さて、どうも最新バージョンの問題だな、というところまでは分かたけど、何を入れたら良いのか分からず、2時間ほどすったもんだしていた。

このバージョンだが、docker-compose buildの最中に登場するので、見逃さないように

Reverse Depends:
postgresql-12-postgis-3-dbgsym,postgresql-12-postgis-3 3.1.0+dfsg-1.pgdg100+1
postgresql-12-postgis-3-scripts,postgresql-12-postgis-3
postgis-gui,postgresql-12-postgis-3
Dependencies:
3.1.0+dfsg-1.pgdg100+1 - postgresql-12 (0 (null)) postgresql-12-postgis-3-scripts (0 (null)) libc6 (2 2.14) libgcc1 (2 1:3.0) libgdal20 (2 2.0.1) libgeos-c1v5 (2 3.7.0) libjson-c3 (2 0.11) libpcre3 (0 (null)) libproj13 (2 4.9.0) libprotobuf-c1 (2 1.0.1) libsfcgal1 (2 1.3.1) libstdc++6 (2 5) libxml2 (2 2.7.4) postgis (3 1.2.1) postgis (0 (null))
Provides:
3.1.0+dfsg-1.pgdg100+1 - postgresql-postgis (= ) postgresql-12-postgis (= )
Reverse Provides:
Reading package lists…
Building dependency tree…
Reading state information…
E: Version '3.0.2+dfsg-4.pgdg+1' for 'postgresql-12-postgis-3' was not found

そこで、最近構築したPostgreSQLにログインして、色々情報を探ってみたら、

ca_sim-# \dx
List of installed extensions
Name | Version | Schema | Description
-----------+---------+------------+---------------------------------------------------------------------
pgrouting | 3.0.0 | public | pgRouting Extension
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
postgis | 3.0.0 | public | PostGIS geometry, geography, and raster spatial types and functions
(3 rows)

ca_sim-# select postgis_version();
3.0 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)

ということが分かり、postgreSQLも、pgroutingも、postgisも、全部'3'になっていることが分った。そこで、docker-compose buildの画面に戻って、調べていたら、こんなメッセージを見つけた。

Reverse Depends:
postgresql-11-postgis-3,postgresql-11-postgis-3-scripts
Dependencies:
3.0.1+dfsg-4.pgdg90+1 - perl:any (0 (null)) postgresql-11-postgis-3 (0 (null)) postgresql-11-postgis-scripts (3 2.2.2+dfsg-3~)
Provides:
3.0.1+dfsg-4.pgdg90+1 - postgresql-postgis-scripts (= ) postgresql-11-postgis-scripts (= )
Reverse Provides:
Package: postgresql-11-postgis-3-dbgsym
Versions:
3.0.1+dfsg-4.pgdg90+1 (/var/lib/apt/lists/apt.postgresql.org_pub_repos_apt_dists_stretch-pgdg_main_binary-amd64_Packages.lz4)

なんか、これがクサいな、と思い、XXXXXX_ride_hailing_go/docker/postgis-pgrouting/ の直下の Dockerfileの中身を以下のように変えてみた。

FROM postgres:12.2
LABEL maintainer="dev@connect.co.jp"

ENV POSTGIS_MAJOR 3
ENV POSTGIS_VERSION 3.0.1+dfsg-4.pgdg100+1

# ENV PGROUTING_MAJOR 2.5
# ENV PGROUTING_VERSION 3.0.0
(上記2つの環境変数は、使われていないようだったのでコメントアウトしておいた)

この変更で、docker-compose build が無事通ることを確認した。

(あいかわらず、docker-compose.yml も Dockerfile も、よく分かっていないが、トライアンドエラーで何とかしている)

以上

=====

C:\Users\ebata\xxxxxxx_ride_hailing_go>docker-compose ps

xxxxxxx_ride_hailing_go_app_1 ./main Exit 1
xxxxxxx_ride_hailing_go_data_1 sh Exit 0
xxxxxxx_ride_hailing_go_db_1 docker-entrypoint.sh postgres Exit 1
xxxxxxx_ride_hailing_go_nginx_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcp
xxxxxxx_ride_hailing_go_tile38_1 tile38-server -d /data Up 0.0.0.0:19851->9851/tcp
xxxxxxx_ride_hailing_go_tile38_data_1 sh Exit 0

となって、DBがどうしても動いてくれない問題発生。手動で起動を試みてみたら、こうなった。

C:\Users\ebata\xxxxxxx_ride_hailing_go>docker start -a xxxxxxx_ride_hailing_go_db_1
Error: Database is uninitialized and superuser password is not specified.
You must specify POSTGRES_PASSWORD to a non-empty value for the
superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run".

You may also use "POSTGRES_HOST_AUTH_METHOD=trust" to allow all
connections without a password. This is not recommended.

See PostgreSQL documentation about "trust":
https://www.postgresql.org/docs/current/auth-trust.html

そこで、PostgresのDockerImageに変更があって起動ができなくなった話 を参照させて頂き、docker-compose.yml に

  POSTGRES_HOST_AUTH_METHOD: 'trust'
  POSTGRES_PASSWORD: 'postgres'

を追加して、

  db:
    image:  postgis-pgrouting:latest
    environment:
      POSTGRES_HOST_AUTH_METHOD: 'trust'
      POSTGRES_PASSWORD: 'postgres'
    build:
      context: docker/postgis-pgrouting
    expose:
      - "5432"
    ports:
      - "15432:5432"
    volumes:
      - data
      - ./:/xxxxxxx_ride_hailing_go
  data:
    image:  busybox
    volumes:
      - "/data/db"

のようにしてみて、再度 docker rmでコンテナ潰しておき、$ docker-compose build $ docker-compose up -d で、(さらに上手く動かない場合は) docker-compose restartを実施してみたら

C:\Users\ebata\xxxxxxx_ride_hailing_go>docker-compose restart
Restarting xxxxxxx_ride_hailing_go_nginx_1       ... done                                                                                                                                                              Restarting xxxxxxx_ride_hailing_go_app_1         ... done                                                                                                                                                              Restarting xxxxxxx_ride_hailing_go_data_1        ... done                                                                                                                                                              Restarting xxxxxxx_ride_hailing_go_tile38_data_1 ... done                                                                                                                                                              Restarting xxxxxxx_ride_hailing_go_db_1          ... done                                                                                                                                                              Restarting xxxxxxx_ride_hailing_go_tile38_1      ... done                                                                                                                                                              
C:\Users\ebata\xxxxxxx_ride_hailing_go>docker-compose ps
                Name                               Command              State             Ports
--------------------------------------------------------------------------------------------------------
xxxxxxx_ride_hailing_go_app_1           ./main                          Exit 1
xxxxxxx_ride_hailing_go_data_1          sh                              Exit 0
xxxxxxx_ride_hailing_go_db_1            docker-entrypoint.sh postgres   Up       0.0.0.0:15432->5432/tcp
xxxxxxx_ride_hailing_go_nginx_1         nginx -g daemon off;            Up       0.0.0.0:80->80/tcp
xxxxxxx_ride_hailing_go_tile38_1        tile38-server -d /data          Up       0.0.0.0:19851->9851/tcp
xxxxxxx_ride_hailing_go_tile38_data_1   sh                              Exit 0

となり、xxxxxxx_ride_hailing_go_db_1 docker-entrypoint.sh postgres Up 0.0.0.0:15432->5432/tcp を確認できるようになるに至った。

docker-compose run db psql -h db -U postgres -d gis -c 'CREATE EXTENSION pgrouting CASCADE; CREATE EXTENSION hstore;' で失敗した

失敗のメッセージはこんな感じ

C:\Users\ebata\xxxxxxx_ride_hailing_go>docker-compose run db psql -h db -U postgres -d gis -c 'CREATE EXTENSION pgrouting CASCADE; CREATE EXTENSION hstore;'
psql: warning: extra command-line argument "EXTENSION" ignored
psql: warning: extra command-line argument "pgrouting" ignored
psql: warning: extra command-line argument "CASCADE;" ignored
psql: warning: extra command-line argument "CREATE" ignored
psql: warning: extra command-line argument "EXTENSION" ignored
psql: warning: extra command-line argument "hstore;'" ignored
ERROR: unterminated quoted string at or near "'CREATE"
LINE 1: 'CREATE

ので、pgAdminで、xxxxxxx_ride_hailing_go のエントリーを作って接続してみたら、一応繋げた。

試しに、C:\Users\ebata\xxxxxxx_ride_hailing_go>docker-compose run db psql -h db -U postgres をやってみたら、ログインできて、こうなった

C:\Users\ebata\xxxxxxx_ride_hailing_go>docker-compose run db psql -h db -U postgres
psql (12.2 (Debian 12.2-2.pgdg100+1))
Type "help" for help.

postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
gis | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)

postgres=# \c gis
You are now connected to database "gis" as user "postgres".
gis=# \dt
Did not find any relations.
gis=#

やっぱり何も入っていないか。

ここから直接、

CREATE EXTENSION pgrouting CASCADE;
CREATE EXTENSION hstore;

を実行したら成功した。

次は、

C:\Users\ebata\xxxxxxx_ride_hailing_go>docker-compose run app migrate -database 'postgres://postgres:@db:5432/gis?sslmode=disable' -path ./repository/postgresql/migrations up
Starting xxxxxxx_ride_hailing_go_tile38_1 … done
Starting xxxxxxx_ride_hailing_go_db_1 … done
error: database: parse 'postgres://postgres:@db:5432/gis?sslmode=disable': first path segment in URL cannot contain colon

うーん、「コロンを消せ」と言われているようだけど、まあ、試してみる

C:\Users\ebata\xxxxxxx_ride_hailing_go>docker-compose run app migrate -database postgres://postgres:@db:5432/gis?sslmode=disable -path ./repository/postgresql/migrations up
Starting xxxxxxx_ride_hailing_go_db_1 … done Starting xxxxxxx_ride_hailing_go_tile38_1 … done 1/u create_administrators (43.041999ms)
2/u create_worlds (84.101398ms)
3/u create_passengers (126.189996ms)
4/u create_services (169.342395ms)
5/u create_bus_stops (237.856592ms)
6/u create_service_bus_stops (277.409391ms)
7/u create_waypoints (320.23459ms)
8/u create_trips (386.509487ms)
9/u add_pickuped_at_to_trips (410.829887ms)
10/u add_dissatisfaction_to_trips (437.705386ms)

通った。(ただ、その後、コンテナの再構築したら「コロンを消せ」のメッセージが出てこなくなった)。


その後、何度http://localhost をしても動かないので、試しに、http://localhost/admin/login から、 admin-0/password でログインできた。

「デモ世界の管理」を選択すると

が出てくるので、「地図表示」を選択すると、例の画面が出てきた。

そういえば、データの生成は、以下のコマンドで。

docker-compose run app go run cmd/dummy_data_generator_concurrent_small/main.go

ああ、疲れた。(これで、ようやく眠れる)

==========

$ cd /path/to/hitachi_ride_hailing_go
$ docker-compose build
# 上記部分が完了するまで、はじめての場合はネットワーク環境により数分かかります
$ docker-compose up -d
$ docker-compose run db createdb -h db -U postgres gis
$ docker-compose run db psql -h db -U postgres -d gis -c 'CREATE EXTENSION pgrouting CASCADE; CREATE EXTENSION hstore;'
$ docker-compose run db psql -h db -U postgres gis < repository/postgresql/data/dump.sql
$ docker-compose run db psql -h db -U postgres -d gis -f repository/postgresql/data/postgis-vt-util.sql
$ docker-compose stop
$ docker-compose start
$ docker-compose run app migrate -database 'postgres://postgres:@db:5432/gis?sslmode=disable' -path ./repository/postgresql/migrations up
$ docker-compose run app go run cmd/dummy_data_generator_concurrent_small/main.go
$ docker-compose stop
$ docker-compose start

Windows10のコマンドプロンプトではなく、MinGW64のシェルを使うと調子がいい

==========

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

(昨日の続きです)

(Continuation from yesterday)

研究者やエンジニアにとって、「できるかどうかが分からないもの」を作るのは、物凄いストレスがあります。

For researchers and engineers, it is extremely stressful to make "what you can make or not".

なにしろ「分からない」のですから。

Above all, "we can't know to make".

しかし、「できることが分かっている」ものであれば、そのストレスは、1/100以下まで下がります。

However, if you "know what you can do", the stress will drop to less than 1/100.

なぜなら、「苦労の果てにゴールがあることが分かっている」からです。

Because "I know there is a goal at the end of my hard work."

私にしても、すでに開発されている技術の後追いをしたり、それを活用したりすることはできます。

Even I can follow the technology already developed and used it.

もちろん、そこに至る為には、何十回~何百回にも及びトライアンドエラーがあります。

Of course, there are tens to hundreds of trials and errors to get there.

しかし、それは、本人の努力と時間の問題でなんとかなる(ことが多い)ものです。

However, it is (often) manageable with the effort and time of the individual.

-----

加えて、「できるかどうかが分からないもの」は、間違いなく、世間から、過激でネガティブな批判に晒されます。

In addition, "what we don't know if we can do it" is definitely exposed to radical and negative criticism from the public.

そして、多くの場合、この過激でネガティブな批判は、「できるかどうかが分からないもの」に挑戦する人間を潰します。

And in many cases, this radical and negative criticism kills people who try "what we don't know if we can do it".

我が国の場合、どういう訳か、この「できるかどうかが分からないもの」に対して、「敬意」とか「支援」とかいう概念が出てきません。

In Japan, I don't know the reason, however there is no concept of "respect" or "support" for this "what we don't know if we can do it".

「潰す」の一択です。

It is a choice of "crush".

この「陰湿な均一性を尊ぶ我が国の国民性」が、私を含めた日本人の特性です。

This "national character of Japan that respects insidious uniformity" is a characteristic of Japanese people including myself.

そういう挑戦をしている人間を、私達、多くの凡人は『黙って看過する』ことすらできないのです ―― 自分に、1mmも不利益がないにもかかわらず。

Many ordinary people, like us, cannot even "silently overlook" those who are taking on such challenges --- even though we do not have a disadvantage at all.

-----

天才とは何か ――

What is a genius?

これらの、過激でネガティブな批判に「耐えられる」では足りず、「耳を貸さない」「聞こえない」という、

It's not enough to "bear" these radical, negative criticisms, but to "turn a deaf ear" and "not be heard

『そんじょそこらの「狂い方」では足りない、「人間的な感情を喪失するほどの狂い方」をすることができる者をいう』

"A person who is capable of going 'so mad that they lose their human emotions,' not just some 'madness' is not enough.

と、私には思えます。

I think so.

そして、そのような「人間的な感情を喪失するほどの狂い方」は、「幸せな人生」というフレームワークの枠外です。

And such 'so mad that they lose their human emotions' is outside the framework of the "happy life" framework.

-----

ほとんどの人は、「天才」を見ることすらなく、自分の人生を終えます。

Most people end their lives without even seeing the "genius" in them.

私は、これまで、私の認定する「天才」を2人"も"見ました。

I have "seen" two "geniuses" in my lifetime.

これだけでも、私の人生は、かなりラッキーだったと思います。

I've been pretty lucky in my life for this reason.

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

『天才とそうでない者を分けるものは何か?』

"What separates the geniuses from the non-geniuses?"

私、このネタについては、何度も記載してきました。

I have described this story many times.

■「天才は、自分の天賦の才(天才)に無自覚である」というのが、私の観察結果です。

My observation result is that "Genius is unaware of their genius".

■故に、彼らは、平気で「毎日の練習」だの「継続は力」だの「努力は報われる」だのと言い放ちます。

Therefore, they are confident that they are "everyday practice", "continuation is power" and "effort is rewarded".

■ですので、私は、人に説教垂れる「こと」が嫌いですし、人に説教垂れる「奴」はもっと嫌いです。

So I don't like to give a sermon to others, and don't like a person who give a sermon to me more.

■『致死率"100%"だけど、伝染率"0%"のインフルエンザ病症』

"Influenza disease with a lethal rate of" 100% "and a transmission rate of" 0% ""

-----

基本的には、この考え方、

Basically, this thoght is coming from the topic of

■それは、彼らの一人一人が「狂っている」からです。

Each member of them becomes crazy.

がベースですが、今回は、さらにこの「狂い方」についてお話したいと思います。

Today, I would talk about the "crazy".

-----

(1)原子爆弾は、かなり早い段階で、その基本方式については分っていました。

(1) The basic method of the atomic bomb was known very early on.

(2)しかし、それが実現されるのは、「マンハッタン計画」を待たなければなりませんでした。

(2) However, it had to wait for the "Manhattan Project" to be realized.

(3)そして、広島、長崎への原爆投下後、各国は続々と開発に成功していきました。

(3) After the atomic bombs were dropped on Hiroshima and Nagasaki, each country succeeded in development one after another.

この(1)~(2)の期間と、(2)~(3)の期間に、メチャクチャな差があるのです。

There is a messy difference between this period (1)-(2) and the period (2)-(3).

感じとしては、1/10~1/20の期間です。

As my feeling, it was a period from 1/10 to 1/20.

これは、各国スパイの暗躍や、内通者の存在は確かに大きかったのですが、一番大きいかったことは、

It was true that the spy of each country's spies and the presence of insiders were big reasons, howeer, the biggest thing was

―― 原子爆弾を「作ることができる」という事実

"The fact that we can "make" an atomic bomb"

です。

(続く)

(To be continued)

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

石膏ボード 600円 5+1 枚
4x2フォーム 3000円くらい

吸音ざい 910X910 6 = 4500 x 6 27000 → 18000円くらい

防音シート 5885円
https://item.rakuten.co.jp/pialiving/cz-12/?iasid=07rpp_10095___eh-kcng6x35-2p-d8c44078-682d-426b-96ad-33c9bf2dc05f

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

(昨日の続きです)

(Continuation from yesterday)

我が家では、家族の誰かが嬉しいことがあった場合、その本人が、他の家族に対して

At home, if someone in my family is happy, that person has the right to claim

「(理由を尋ねることなく)本人を褒めること」

"praise her/him" (without asking why)

を請求する権利があります。

to another family member.

また、本人が何か/誰かに怒っている時には、

If someone in my family are angry at something/someone, that person has the right to claim to

「(理由を尋ねることなく)本人に対して『お前が正しい。相手が悪い』と慰めること」

"say 'you are right, your friend is bad"" (without asking why)

を請求する権利もあります。

to another family member.

-----

多くの場合、我々は、正しい分析や評価を欲していません。

In many cases, we don't want the right analysis or assessment.

ただ、"Yes"とだけ言って欲しいだけです。

I just want them to say "Yes".

この権利システムを江端家に導入したのは、何を隠そう、この私です。

It is me who introduced this rights system to the Ebata family.

それはさておき。

That aside.

-----

最近の、"Stay Home"によって、江端家の無線LANの使用率は格段に上っています。

Recently, "Stay Home" has significantly increased the usage rate of Ebata's wireless LAN.

無線LANの不感帯を調べるために、Padにインストールしたアナライザを持って、家中を歩き回って、家族から不満のあるエリアの、通信感度を上げるために、日々、WiFiのリピータの増設を行っています。

In order to investigate the dead zone of wireless LAN, I have an analyzer installed on my Pad, walk around the house. Thanks for my efforts, the number of WiFi repeaters every day are increasing, for deleting areas where my family is dissatisfied.

環境が改善された後、クレームは消えてなくなりますが、感謝の声も聞こえてきません。

After the environment has improved, the claims have disappeared, but no gratitude is heard.

『私への功労に対する、感謝の言葉がない』

"There is no word of gratitude for my service"

というクレームをしたところ、

When I said that,

長女:「この手のインフラは、通信できることが『普通』と思ってしまうので、どうにも感謝の気持ちを忘れがちになって」

Senior daughter: "I feel like being able to communicate is'normal' in this kind of infrastructure, so I tend to forget my appreciation."

彼女はそう言い訳をして、私に一回だけ感謝の言葉を述べました。

She made that excuse and gave me a single thank-you note.

その後は、感謝の言葉を聞いたことはありません。

After that, I never heard the words of gratitude.

-----

皆さん。インフラを守る者に、もっと思いを馳せましょう。

Everyone. Let's think more about those who maintain the infrastructures.

毎日、水を使わせて貰ってありがとう。

Thank you for letting me use water every day.

毎日、電気が使えてありがとう。

Thank you for letting me use electricity every day.

毎日、ガスが使えてありがとう。

Thank you for letting me use gas every day.

毎日、道路/鉄道が使えてありがとう。

Thank you for letting me use the road/railway every day.

朝、起きたら、この感謝の言葉を心の中で唱えましょう。

When you get up in the morning, say this word of thanks in your heart.

もし、これを3日連続して忘れたら ―― 私が、あなたの家の真下にある「活断層」を活性化する"(邪)念"を送りますよ。

If you forget this for three days in a row, I will send you a "(wickedness) trigger" that activates the "Active Fault" in the basement of your house.