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

タイムトラベルフリークの江端さんとしては、「シュタインズゲート/ゼロ」と「時をかける少女」は鉄板です。

As a time travel freak, Ebata-san, Steins Gate/Zero and The Girl Who Leapt Through Time are sure things.

(この2つのコンテンツをまだ視聴していない人は、後で私のチャットルームの裏庭に来なさい)

(If you haven't watched these two pieces of content yet, come back to my chat room backyard later.)

「時をかける少女」ラストシーンで、千昭が真琴に「未来で待ってる」という言葉は、その解釈を巡って多くの人が、議論しているの楽しく見て来ました。

In the last scene of The Girl Who Leapt Through Time, I've enjoyed watching many people argue over the interpretation of Chiaki's words to Makoto: "I'm waiting in the future.

とすると、こういうアナザーストーリができるのではないかと。

So, I thought we could do another story like this.

-----

■真琴が、タイムリープマシンを作る為に、理系に進み、留学して、SERNに職を得る。

Makoto goes into science to build a time machine, and she study abroad and get a job with a SERN.

■プロジェクトリーダになった真琴は、世界のネットワークを監視して、秋葉原のガジェット研究所の岡部のメールをハッキングする。

Makoto, who has become the project leader, monitors the world's networks and hacks into Okabe's emails at the Gadget Research Institute in Akihabara.

■当初から、SERNの世界支配に全く興味のない真琴は、米国留学中のクリスに接触し、岡部をタイムリープマシンの開発に向かうように誘導する。

From the beginning, Makoto, who has no interest in SERN's global domination, reaches out to Chris, who is studying abroad in the United States, and leads Okabe to develop a time machine.

■ラボメンの一員となり、SERNからの攻撃を回避しつつ、岡部をタイムマシンの開発を支援する。

She becomes a member of the Rabomen and assists Okabe in developing a time machine while fending off an attack from SERN.

■真琴は完成した試作機の、試運転のテスト運用に名乗りを上げて、単身タイムマシンに乗り込むが、そこで、彼女はこっそりと、ターゲットの到着の未来の日時を変更する

Makoto wishes to ride in a prototype time machine, however she secretly changes the future date and time of the target's arriva

■変更された設定は、未来の時空を捻じ曲げて都市一つを壊滅させる爆発が発生する。シュタインズゲートの世界線で安定していた世界は、第3次世界大戦に突入し、その戦争は、千昭が見たかった「絵画」を焼失させてしまう

The altered setting twists time and space in the future, resulting in an explosion that decimates the city. The world, which had been stable in the Steinsgate worldline, is plunged into World War III, and that war burns down the "painting" that Chiaki wanted to see

■真琴は、この変更された未来を、修正するために、再度のタイムリープを試みる

Makoto attempts another timeline to fix this altered future.

「千昭の望みを叶えたい真琴」と、「千昭にもう一度会いたい真琴」と、そして、それぞれの真琴を支援するラボメンを二分する、

"Makoto who wants to fulfill Chiaki's wishes", and "Makoto who wants to see Chiaki again" with dividing the lab-menmer into each two for supporting two Makotos.

2人の真琴の「最後のタイムリープ戦」が始まる ――

Two Makoto's "Last Time Leap battle" begins

-----

・・・なんで、私がストーリーを書くと、こういうバットエンドになってしまうんだ?

...Why is it that when I write a story, I end up with this kind of bat-ending?

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

(昨日の続きです)

(Continuation from yesterday)

冠婚葬祭とは思想も方向性も異なりますが、日本には「信仰や祭祀によってコロナ禍に勝つ」とか、バカなことを言っているカルト宗教団体があります。

It's different in ideology and direction from weddings and funerals. however, there are some cult groups in Japan that say stupid things like "we can beat the coronary disaster by faith and rituals".

彼らの低能さについては、もはや語る言葉もありません。

I have no more words to say about their "incompetence".

また、世界で、そのような主張をしてきた教祖が、(私が知っているだけでも)少なくとも2人、COVID-19感染で死亡しています。

Also, in the world, at least two gurus who have performed such missions have died from COVID-19 infections (even I know).

彼等に対して、同情、追悼、哀悼に相当する気持ちは、1mmも湧いてきません。

For them, I don't have any feeling of compassion, mourning at all.

むしろ、このような教祖や信徒は、「テロリスト」と認定してもよいのではないかと思います。

Rather, I think that such gurus and followers may be identified as "terrorists."

とは言え、「信仰や祭祀によってコロナ禍に勝てる」というデタラメを流布しているバカを「バイオテロリスト」と呼ぶのは、あまりにも、高尚に取り扱い過ぎていると思えます。

Nevertheless, I am unwilling to call the idiots spreading the bullshit that "you can beat the corona disaster by faith and ritual" a "bioterrorist".

----

そこで、ここは、一つ「低能」という新しい社会悪を定義した上で、このような教義を流布するカルト宗教団体を、

So, here's one new social evil to define "incompetence", and I would like to suggest that we call the cult groups that disseminate such ignorant doctrines

「低能テロリスト」

"incompetent terrorists".

と称呼することを提案したいと思います。

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

先日、父の三回忌がありましたが、姉と相談して、私は欠席することにしました。

There was a third anniversary of my father's death the other day, and after discussing it with my sister, I decided not to attend.

実家への移動中の感染リスクや、移動先の行動(と地元の人々の懸念)なども、総合的に判断したからですが、

I made a comprehensive assessment of the risk of infection while traveling to my parents' home and the behavior of the people I was traveling to (and the concerns of the locals).

最も大きな理由は、

I think that the biggest reason was

―― 冠婚葬祭に関する、私個人の意識の低さ

"My personal lack of awareness about weddings and funerals"

だったと思います。

-----

冠婚葬祭に関する決め事は、国や地方、そして、宗教は宗派によっても、全然異なります。

Decisions regarding weddings and funerals are very different, depending on the country, the region, and even the religion, depending on the denomination.

それらの決め事は、煩わしいことも多いですが、地縁や血縁に係わるイベントを発動する為の大切なトリガーであると思っています。

Those decisions are often complicated, but I believe they are important triggers for triggering events related to geographical and blood ties.

それ以上に、そのイベントによって、生きている人に、心の安寧を与えられるのであれば、良いことだと思います。

More than that, if the event can give peace of mind to a living person, it's a good thing.

そのようなイベントに、賢しく文句を付けることは、大人げないことです。

To wisely complain about such an event is unwise.

―― とまあ、私は、そこそこ「大人の対応や考え方」ができるんです。

And, well, I can do "adult responses and ideas"

実際、大人ですし、いつまでも中二病やっている訳にもいきません。

In fact, I'm an adult, and I need to stop acting as a youthful indiscretion.

ただ今回のような、コロナ禍のような状況では、そのような「大人の対応や考え方」は、「合理的な考え方」 ―― リスク計算の前では、簡単に取り下げられてしまいます。

But in a situation like this one, a corona disaster, such "adult responses and ideas" are easily withdrawn in the face of "rational thinking (risk calculation)".

(続く)

(To be continued)

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.