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

■全部のDockerを止める
C:\Users\ebata>docker ps -aq | xargs docker stop

■全部のDockerを消す
C:\Users\ebata>docker ps -aq | xargs docker rm (これやると、これまでの設定も全滅するので注意)

(ちなみに2つを纏めてやる方法は、>docker prune と教えて貰いました )

■作りなおす
C:\Users\ebata>docker run -d --name postgres122 -e POSTGRES_PASSWORD=test -p 5432:5432 postgres:12.2

■確認(スキップしてもいい)
C:\Users\ebata>docker container ls

■確認(シェルに入れることを確認する(しなくてもいい))
C:\Users\ebata>docker exec -ti postgres122 bash

■ファイルコピー(やらなくてもいいが、やらないと後の話に繋がらない)
C:\Users\ebata>docker cp c:\routing-20200221.sql postgres122:/tmp/

■コンテナに入る(やらなくてもいい)
C:\Users\ebata>docker exec -i -t postgres122 /bin/bash

■コピーされているかを確認する
root@839317f0bb70:/# cd tmp
root@839317f0bb70:/tmp# ls
で、
routing-20200221.sql
が表示されたので成功

■ローカル(例えば C:\Users\ebata)に以下のdocker-compose.ymlを作成する

version: '3.7'

services:
db:
image: pgrouting/pgrouting:v3.0.0-dev-postgresql_12
expose:
- 5432
ports:
- 15432:5432
volumes:
- db_data
- ./shared:/shared
db_data:
image: busybox
volumes:
- /data/db

■次のコマンドを実施する
C:\Users\ebata>docker-compose up -d

■DBの作成
C:\Users\ebata>docker-compose exec db createdb -h db -U postgres routing

■postgisのインストール(これが失敗するみたい)
C:\Users\ebata>docker-compose exec db psql -h db -U postgres -d routing -c 'CREATE EXTENSION pgrouting CASCADE; CREATE EXTENSION hstore;'

■ダンプしたsqlの取り込み
C:\Users\ebata>docker-compose exec db psql -h db -U postgres routing -f /shared/routing-20200221.sql

■作られたDockerの確認
C:\Users\ebata>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64101530c199 pgrouting/pgrouting:v3.0.0-dev-postgresql_12 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:15432->5432/tcp ebata_db_1
f5ae64d47096 busybox "sh" About a minute ago Exited (0) About a minute ago ebata_db_data_1
d7838161c2f9 postgres:12.2 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:5432->5432/tcp postgres122

----- ここから次のフェーズに入る ------

■ログインする
C:\Users\ebata>docker container exec -it ebata_db_1 bash

■psqlに入る
C:\Users\ebata>docker container exec -it ebata_db_1 bash
root@64101530c199:/#
root@64101530c199:/#
root@64101530c199:/# psql -U postgres
psql (12.0 (Debian 12.0-2.pgdg100+1))
Type "help" for help.

postgres=#

postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
routing | 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)

■d1というDBを作る
postgres=# CREATE DATABASE d1;

■d1に接続
postgres=# \c d1
You are now connected to database "d1" as user "postgres".

■postGISのインストール
d1=# CREATE EXTENSION postgis;
CREATE EXTENSION
d1=# CREATE EXTENSION pgrouting;
CREATE EXTENSION

■テーブルを作成する
d1=# CREATE TABLE edges (id serial, source int, target int, cost int);
CREATE TABLE

■値を入力する
d1=# INSERT INTO edges (source, target, cost) VALUES (1, 2, 7), (1, 3, 9), (1, 6, 14), (2, 3, 10), (2, 4, 15), (3, 4, 11), (3, 6, 2), (4, 5, 6), (5, 6, 9); ← 端点ノード1、端点ノード2、コスト
INSERT 0 9

■最短コスト計算をする
d1=# SELECT seq, node, edge, cost FROM pgr_dijkstra('SELECT id, source, target, cost FROM edges', 1, 5, directed:=false); ← ノード1からノード5までの最短コストを算出する
seq | node | edge | cost
-----+------+------+------
1 | 1 | 2 | 9
2 | 3 | 7 | 2
3 | 6 | 9 | 9
4 | 5 | -1 | 0
(4 rows)
1->3->6->5の最短コストが出てくる。

--------- Dockerで作ったpgRoutingにosmファイルをインポートする ---------

(一回psqlをログアウトしてから、再度 psql -U postgres でログインした)

■データベース新規作成
psqlでデータベースを新規作成する(以下、データベース名をca_simとする)。
postgres=#CREATE DATABASE ca_sim;

■データベース拡張
psqlに入って次のコマンドを実行する。

postgres=# \c ca_sim
postgres=# create extension postgis;
postgres=# create extension pgrouting;

■kashiwanoha.osmを読み込む
C:\Users\ebata\Desktop\20190327_casim_final\environment>docker cp kashiwanoha.osm ebata_db_1:/db_data

■osm2pgrouting をインストール(が、できると思わなかったので、かなり驚いた)

root@70fa5aa3a11d:/# apt-get update
root@70fa5aa3a11d:/# apt-get install
root@70fa5aa3a11d:/# apt-get install osm2pgrouting

■kashiwanoha.osmをインポート

root@70fa5aa3a11d:/# osm2pgrouting -f /db_data/kashiwanoha.osm -c /usr/share/osm2pgrouting/mapconfig_for_cars.xml -d ca_sim -U postgres

■sqlファイルをシェルから実施する(これ実施中→うまくいなかいが、後の処理で回収できる(はず))

root@70fa5aa3a11d:# psql -f /db_data/make_bus_route_table.sql -d ca_sim -U postgres

--------- QGISでの表示の為のパスワードの設定 --------

■root@19e323b3f7c1:/# psql -U postgres

とした状態で、

postgres=# alter role postgres with password 'c-anemone';

■と打ち込んだ後、psqlからログアウトして、別のコンソールから、

C:\Users\ebata>docker stop postgres122

C:\Users\ebata>docker start -a postgres122

この後、間違っても、"docker ps -aq | xargs docker rm"なんぞやらんように。ここまでの設定が吹き飛ぶ

===== このままPCを落して寝ると、次の日、DBが落ちているので、立ち上げ直す

C:\Users\ebata>docker start -a postgres122

C:\Users\ebata>docker container exec -it postgres122 bash

root@19e323b3f7c1:/# psql -U postgres

とした状態で、

postgres=# alter role postgres with password 'c-anemone';

と打ち込んだ後、psqlからログアウトして、別のコンソールから、

C:\Users\ebata>docker stop postgres122

C:\Users\ebata>docker start -a postgres122

次は、ebata_db_1の方を使えるようにする。

C:\Users\ebata>docker start -a ebata_db_1 ← pgRoutingで作ったDockerのDB
C:\Users\ebata>docker container exec -it ebata_db_1 bash ← ログインできる

root@19e323b3f7c1:/# psql -U postgres

postgres=# alter role postgres with password 'c-anemone';

C:\Users\ebata>docker stop ebata_db_1

C:\Users\ebata>docker start -a ebata_db_1

これで、QGIS3 や pgAdmin4からアクセスできるようになる(というか、"なった")

------- PostgresのpostGISに、鉄道情報も入れる --------

omsのデータには、鉄道情報入っていません(と思う osm2pgrouting にtrainを取り出すオプションがなかったので) ―― ので、国土地理院からダウンロードする

https://nlftp.mlit.go.jp/ksj/index.html から 鉄道時系列(ライン)(ポイント)を探して、ここからファイル(N02-08.zip)をPCにダウンロードして解凍する。中身はKS-META-N02-08.xmlと、N02-08.xml が入っている。

ところが、xmlファイルは、postgresにインポートできないのでshpファイルに変換する必要がある。

で、https://nlftp.mlit.go.jp/ksj/jpgis/jpgis_tool.html にある、「国土数値情報XML-シェープ変換ツール」をダウンロードしてインストールする。私の場合、64Bit版OSに対応した変換ツールはこちらからダウンロードできます。(ksjtool_64_v1.8.zip 約18MB)をダウンロードした。

で、先程のN02-08.xmlを変換すると、N02-08_EB02.dbf、N02-08_EB02.shp、N02-08_EB02.shx、N02-08_EB03.dbf、N02-08_EB03.shp、N02-08_EB03.shx が生成される。

(どういう訳か、shp2pgsqlがなくて、apt-get install shp2pgsql にも失敗するので)、QGIS3を使って、PostgresのDBにつっこむ。

N02-08_EB02 を選んで、OKを押下して、さらにN02-08_EB03を選んで、OKを押下する(2つインポートする)

以下を見ると、N02-08_EB02は路線情報が、N02-08_EB03は駅の情報が入っているみたい

ただ、selectしようとすると、変なエラーがでるので、テーブルの名前を変更した方がいい(が、今日は疲れたので、ここまで)

selectでは、テーブルの名前は小文字で、"-"も使えないようである。QGISから、以下のように変更した。

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

以前、「臨場感システムを作る」という話をしました ―― が、すでに作られていました("#ひとり大声援"で検索)

I talked about the "realistic sensations presence system" before -- but it was already in the works ("#Loud Cheer")

しかも、システムエンジニアでもない、アマチュアの方にです。

by not a professional engineer but an amateur.

もっとも、このシステムは、正しい意味での「臨場感システム」ではありません。

However, this system is not a "realistic sensations presence system" in the proper sense of the word.

双方向もなく、リアルタイムでもなく、単に応援映像を同期を取って、合成するだけのシステムです。

The system is not bidirectional or real time, but simply synchronizes and composes the cheering video.

それでも、この応援映像は、無人観客で開催される野球場の電光掲示板に表示されることになったそうです。

Still, the cheering video will be displayed on an electronic billboard at the baseball stadium, which will be held in an unattended audience.

-----

このシステムが、私に与えた衝撃はハンパではなかったです。

The impact this system has had on me has been tremendous.

私がショックを受けたのは、「技術」ではなく「着想」です。

What shocked me was not the "technology" but the "inspiration".

双方向、リアルタイムで、キチンと閉じたシステムしか考えられなかった私は、「一方的に応援歌を届ける」という発想に全く至れなかったのです。

I could only think of a two-way, real time, neatly closed system, and I could not come up with the idea of "delivering a one-way cheer" at all.

もちろん、私でも同程度のシステムやコンテンツを作ることはできたかもしれませんが、それは大した問題ではありません。

Of course, I could have created the same level of systems and content, but that's not a big deal.

「一方的に応援歌を届ける」という野球ファンの思いと、そしてそれを感謝を込めて受けとる球団の思いを、私は、1mmも気がつくことできなかった ――

I couldn't have noticed that both the desire of baseball fans to "deliver a one-sided cheer song", and the thought of the team receiving it with gratitude.

これは、社会システムを考えなければならない研究員にとっては、致命的な失点であると言えます。

This is a fatal flaw for researchers who have to think about social systems.

-----

もっとも、このシステムを提案したところで、会社が事業ベースで開発をすることはなかったと思います(ペイしないから)

I don't think the company would have been able to develop this system on a business basis (because it wouldn't pay).

また、私が、週末エンジニアモードで、開発のContributorになる、ということもしなかっただろうと思います(私、プロ野球に興味がありません)。

I also don't think I would have been an development contributor in weekend engineer mode (Because I'm not interested in professional baseball).

しかし、この一件、「無償の行為」という考え方を持てなかった、私の完全な敗北です。

But for this case, I am completely defeated because I couldn't have the idea of a "gratuitous act".

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

(昨日の続きです)

(Continuation from yesterday)

私の基本スタンスは、「やられたら、やりかえせ」であり、「江戸の敵を、長崎のみならず、世界中どこでもで討つ」であり、「後ろから背中を撃ってきた奴の背中をさらに撃つ」です。

My basic stance is "If you get hit, hit back", "I will take on the enemies of Edo, not only in Nagasaki, but anywhere in the world", and "I will shoot him in the back after he shoots me in the back".

この最低のポリシーは、「報復の無限連鎖」を導くだけのようにも見えますが、実は結構な「自分への抑制力」にもなっているのです。

This lousy policy may seem to only lead to an "endless chain of retaliation," but it's actually quite a bit of "restraint on myself" as well.

(1)私のような考え方をする人間は、少なくないはずだ

(1) There must be more than a few people who think like me.

(2)恨みを買うような批判の仕方をすると、どこでどんな報復されるか分かったもんじゃない

(2) If I criticize people in a way that causes resentment, I don't know where I am going to get retribution.

(3)故に、当時の状況や社会通念、相手の心象風景を可能な限り探り、最大限の配慮をした上で、ロジカルに、証拠(数値等)をつけて批判を行う

(3) Therefore, I should explore the circumstances and social conventions of the time and the mental picture of the other person, as much as I can. criticize people with the utmost care, logically and with evidence (numbers, etc.).

つまり、自分の中の「夜叉」を上手く使うことで、上手い(狡猾な)批判をするモチベーションが作れるのです。

In other words, I can create motivation to be a good (and cunning) critic by using the "demon" in you well.

-----

私は、批判されると、その内容が正当であろうが不当であろうが、不愉快に感じて、直ちに戦闘体制に入る、かなり「最低な人間」です。

I'm a pretty "lousy person", whenever I'm criticized I feel uncomfortable and immediately go into combat mode even if the criticism is right.

しかし、その「最低」を究(きわ)めることによって、逆に得られるものもあるのです。

However, there is something to be gained by getting to the bottom of that "minimum".

私は、無理して「いいひと」を目指しません ―― そもそも、私、そういう努力はできません。

I'm not going to force myself to be a good person -- To begin with, I can't make the effort like that.

私は、クレバーでロジカルでクールな「最低な人間」を目指し、これからも「後ろから背中を撃ってきた奴の背中をさらに撃つ」を続けます。

I will continue to be a clever, logical, cool "lousy person" and continue to "shoot the guy in the back who shot me in the back some".

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

最近、新型感染ウイルスに対する、具体的な対応を提唱し実施した人物を、結果から批判する記事やコメントが目立ちます。

Recently, there have been a number of articles and comments criticizing those who have advocated and implemented a specific response to the new virus.

これらの記事やコメントは ――

In response to these articles and comments,

『燃えさかる家屋の前から逃げ去った奴が、その後、現場検証の時、消火の手順に難癖を付けるような』 ―― すさまじい下品さを感じます。

A person who ran away from a burning house, says "difficulty with firefighting procedures" during a subsequent site inspection. I feel that it's tremendously vulgar.

―― 全てが終った後で、安全なところから、闘ってきた人の背中を撃つ

"Shooting someone who has fought back from a safe distance, after everything is done"

まさに、これです。

This is exactly it.

-----

まあ、私も、自分で言うのもなんですが、「燃えさかる家屋の前に、無理矢理押し出されたこと」があり、同じように「何とか鎮火した挙句に、難癖を付けられた」という経験があります。

Well, in my experiments, I was once forced out in front of a burning house. And I've had the same experience of "I've managed to put out the fire, and after that I've had a difficult time with it".

私は、こういう「後ろから背中を撃ってきた」人物を、生涯、絶対に許さないことに決めています。

I am determined to never forgive these "shoot me in the back" people for the rest of my life.

もちろん、私は、社会人ですから(そして、若いころは劇団員でしたから)、日常生活での「外面似菩薩、内心如夜叉(げめんじぼさつ、ないしんにょやしゃ)」は、徹底しています。

Of course, I'm a working man (and I was a theatergoer in my youth),so in daily life, "Fair face, foul heart" is a thoroughgoing practice.

-----

ただ、これらが、「背中を撃つ」行為であるとしても、全ての批判を全て止めてしまっては、物事を良くしてくことができないことは事実です。

However, it's also true that even if these are "shots in the back" acts, you can't make things better if you stop all the criticism.

私のコラムなんぞ、他者への批判が全体の半分を占めていると思います。

According to my columns, I think criticism of others makes up half of the content.

つまり「闘ってきた人の背中を撃つ」ことをしてきたのは、他の誰でもないこの私です。

In other words, it is me who "shoots people in the back who have been fighting".

しかし、私は「他者の批判を行っている者(私)は、他者からの批判を甘受しなければならない」 などとは、1mmも思っていないのですよ。

But I don't believe at all that "those who are criticizing others (me) must indulge in criticism from others".

(続く)

(To be continued)

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

在宅勤務が続き、昼飯は自宅で自炊しています。

I continue to work at home and cook my own lunch at home.

ここのところ、家族全員が自宅にいることが多くなり、夕食を一緒に食べる機会がぐっと増えました。

These days the whole family is home more and more often, and we have much more opportunities to eat dinner together.

しかし、昼飯については、各自が自分の好きな時間に、好きなものを作って食べています。

However, as for lunch, each of us cook and eat what we want at our own time.

どうしても簡単な麺類になってしまうのですが、これもずっと続くと、さすがに飽きてきます。

It's inevitably going to be a simple noodle dish, and I get bored indeed.

-----

江端家では、ストックされている非常食の中で、賞味期限が経過したものを、嫁さんが、籠にいれてキッチンに置くようにしています。

In the Ebata's house, my wife put the stocked emergency foods, which are past their expiration date into baskets and place them in the kitchen.

家族は、そこから好きなものを取り出して食べていますが、こちらも保存食の性質上、レトルトの食材になります。

My family takes what they want out of it and eats it. Due to the nature of preserved foods, they are retort foods.

レトルトと言えば、カレーライスでしょう。

Speaking of retorts, curry and rice would be the best.

私がカレーをカレールーから作ると、私以外の家族が食することができない激辛カレーになります。

When I make a curry from a curry roux, it's a very hot curry that no other family member can eat except me.

しかし、レトルトカレーは、私に言わせれば、全く「辛くない」。

However, for me, the retort curry is not "spicy" at all.

-----

で、まあ、レトルトカレーを自分流にアレンジしています。

And, well, I have my own take on retort curry.

フライパンに、唐辛子とニンニクを刻んだものを入れて軽く炒めた後、そこに100g程度の鶏肉とナスを一口大に切って投入。

In a frying pan, lightly fry the chilies and chopped garlic, then add about 100g of Cut the chicken and eggplant into bite-sized pieces and throw them in.

鶏肉に火が通ったら、レトルトカレーをぶちまけて具とからませた後、ホウレンソウを手で千切って、しんなりとなるまで炒めて、

最後に、ババロネソースを投入して完成です。

After the chicken is cooked, pour the retort curry on it and mix it with the ingredients, cut the spinach into strips by hand and fry it until it becomes soft, and finally, throw in the Bavarone sauce.

まあ、それでも、レトルトカレーの域を出ることはないのですが ―― 結構、いけます。

Well, still, it's never out of the range of retort curry -- it's pretty good.

在宅勤務で、昼飯がマンネリになっている人は、一度お試し下さい。

If you work at home and are in a lunch rut, give it a try.

マリーシャープス ハバネロソース HOT 148ml

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

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

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

踊るバズワード ~Behind the Buzzword(3)量子コンピュータ(3):

量子ビットを初期化する ~さあ、0猫と1猫を動かそう

Dancing Buzzword-Behind the Buzzword (3) Quantum Computer (3)

Initializing the Quantum Bit - Now let's move the 0cat and 1cat!

-----

いずれ、娘たちが、我が家を去る時がくるはずです ―― 就職か、結婚か、あるいは別の理由かは分かりませんが。

The time is coming when our daughters will leave our home -- whether it's for a job, marriage, or some other reason. I don't know.

子どもは、親を踏み台として、親を見捨てて、親と逆の方向に向かって、跳ばなければなりません。

The children must leap in the opposite direction of the parent, abandoning the parent as a stepping stone.

親は、子どもが飛翔する為のエネルギーとして、使い尽されることで、その任を終えるのです。

Parents finish their charge by being used up as energy for their children to fly.

私が、同じように親を踏み台としてきたように。

Just as I have used my parents as a stepping stone in the same way.

―― とまあ、それはさておき。

Aside from that.

-----

長女と次女がいなくなった後、我が家には、結構なスペースが生じます。

After my senior and junior daughter are gone, our house will have quite a bit of space.

子ども部屋を2つ壁をぶち抜いたら、そこに「量子コンピュータ」を設置できるかな、とか考えています。

I'm wondering if I could set up a "quantum computer" in the children's room if I busted out the wall.

取り敢えず、スペースとしては。

For now, as for space.

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

(昨日の続きです)

(Continuation from yesterday)

COCOAのセキュリティや個人情報の流出が心配なら、いっそのこと Contributorとして参加させて貰えばいいかな、と思いつきました。

If I am worried about COCOA's security and the release of your personal information, I came up with the idea that I might as well go to Contributor.

まあ、ソースコード開発は無理としても、テスターくらいなら役に立つかもしれません。

Well, even if I can't do source code development, it might be useful, at least for testers.

とは言え、もうリリースされているし、今後バージョンアップでもない限り、私がでしゃばる場面はないかもしれません。

However, it's already released, and unless it's an upgrade in the future, there may not be a situation where I'm going to be stuck with it.

まだソースコードをちゃんと読んでいる訳ではないのですが、オープンソースとして公開されているという時点で、「個人情報が抜かれる」とか「政府に監視される」とかをチェックするのが面倒くさくなってきたのです。

I haven't read the source code properly yet, but I am tired of checking for "personal information being pulled out" or "government surveillance" just because it's published as open source.

これは、「テスト前に、人のノートのコピーを取っただけで安心してしまう」という、あの心理に似ています。

This is similar to a peace of mind of "just getting a copy of someone's notes before a test".

そもそも、私は、オープンソースの開発者は信じることができきます(これは理屈ではありません)。

To begin with, I can believe (not in theory) that open source developers are believable.

それと、政府首脳の、あの絶望的なITリテラシーを見ている限り、

And, as far as the heads of government are concerned, that hopeless IT literacy, I have a tremendous amount of trust in the government that

『現政府に、ITを使った陰謀を企てられるほどの知性も度胸もない』

"The current government lacks the intelligence and nerve to pull off an IT conspiracy"

という、政府に対する絶大な信頼があります。

最近、巷で騒がれている元大臣の選挙違反事件についても、そのIT情報の取り扱い(証拠隠滅)は、酷いものです。

According to the election fraud case of a former minister, their handling of IT information (destruction of evidence) is terrible.

地検によってパソコンから証拠のデータを復元させられるなど ―― 私なら、その事実で、恥かしくて転げ回りそうです。

"The district attorney's office can have evidence recovered from your computer"、If I were him, I would be so embarrassed with crying.

-----

COCOAのインストールは個人の自由ですが、私はインストールをお勧めしたいと思います。

Installing COCOA is a personal choice, but I would recommend that you install it.

特に、接客業の人には、感染リスクを見える化できる、という点で、働き方の工夫へのモチベーションが上がると思います。

Particularly for those in the hospitality industry, I believe that the ability to visualize the risk of infection will increase motivation to devise new ways of working.

また、通勤通学での電車やバスを利用する人などは、「やっぱりラッシュ時の乗車は怖いんだなぁ」と怖い思いをすることで、時差出勤や、在宅勤務や、あるいは、自転車やバイクを使った通勤などの検討のきっかけになるかもしれません。

Also, people who use trains and buses to commute to work or school can be afraid of riding at rush hour. This may lead you to consider staggered work, telecommuting, or even biking or biking to work.

加えて、長期間の多くの人の利用によって「これはヤバい」「これはヤバくない」が、ハッキリとしてくるかもしれません。

In addition, the use of many people over a long period of time may make it clear that "this is bad" or "this is not bad".

なにより、PCR検査や抗体検査ほどに面倒ではない、という点がいいです(インストールするだけです)。

The best part is that it's not as cumbersome as PCR or antibody testing (just install it).

-----

もし、私から陽性反応が出るようなことがあれば、即座に登録します。

If I get a positive reaction from me, I will register it immediately.

もちろん、「市民としての義務と貢献」という観点もあります。

Of course, there is also the perspective of "civic duty and contribution".

加えて、「エンジニアとしての義務と興味」という気持ちもあります。

In addition, there is a feeling of "duty and interest as an engineer".

部屋に閉じ込もっている2週間の間、私のスマホから出ている通信メッセージのハックを続ける予定です。

During the two weeks I'm locked in my room, I will continue to hack the communication messages coming out of my phone.

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

先日、新型コロナウイルス接触確認アプリ(COCOA)についての誤った情報を展開してしまいました(元記事にて誤記を明示しました)。

Recently, I deployed misinformation about the new Coronavirus Contact Confirmation App (COCOA) and (I clarified the error in the original article).

以下は、その後、私が調べた(正しいと思われる)情報です。

Here's what I've found out after (which I believe to be correct)

(1)ソースコードは、ここにあるようです。

(1) The source code seems to be here.

(2)Mozilla Public License Version 2.0でライセンスされているようです。

(2) Licensed under the Mozilla Public License Version 2.0

(3)C#で開発されている?

(3) Is it developed in C#?

スマホアプリをC言語系で開発しているとはかなり意外でした。もちろん、私にとっては、C言語は歓迎なのですが。

I was quite surprised to see that they are developing a smartphone app in the "C" language system. Of course, for me, C is a welcome addition.

サーバシステム・・・という訳でもないよなぁ。そもそもCOCOAは、ネイティブなスマホアプリだし。

The server system... is notreally. COCOA is a native smartphone app, to begin with.

(4)悪意(イタズラ)の感染者登録はできそうにない

(4) It's unlikely to register as a malicious (prank) infected person.

保健所から付与されるID番号を入れないと、感染者登録されないようです。

If you don't put in the ID number given by the health department, you will not be registered as an infected person.

デタラメな番号いれても「登録されました」と表示されるけど、実際には登録されません。

Even if you put in a bullshit number, it will say "registered", but it won't actually register.

(5)14日後に感染者登録情報は消滅

(5) After 14 days, the information on the infected person's registration will disappear.

14日後は、感染者として取り扱われなくなります。現実に即しています。

After 14 days, you will no longer be treated as an infected person. It is a reality.

(6)感染情報は、機器(スマホ)の固体番号とは紐付いていない

(6) Infection information is not tied to the solid number of the device (smartphone).

アプリのハックでは、感染者の特定は無理でしょう。

The app hack will not be able to identify the infected people.

私なら、Public Address(EthernetのMACアドレスのような)のハックができるかもしれませんが、そこから機種を探しだし、個人に至るのは、無理だと分かります

I might be able to hack the Public Address (like Ethernet MAC address), however, I think that it's impossible to find a model and get to a personal identification.

どのくらい不可能かというと、自分の側にいる人の一人一人に「すみませんがスマホ貸して下さい」頼んで、無線アナライザで解析作業をする、というくらいの面倒くさい作業が必要です。

How impossible can it be? It requires a lot of annoying works, like, asking each person on your side of the line, and saying "Excuse me, can I borrow your phone?" and work on the analysis with the radio analyzer.

仮に、それを強行したとしても、普通はスマホが自動生成するRandomアドレスを使うので、固定のPublic Addressを読みとることは、できないだろうと思います。

Even if you were to force it, I don't think it would be possible to read a fixed Public Address, because it would normally use the Random Address that your phone automatically generates.

「セキュリティが万全」というよりは、「ハックするコストが全然見合わない」という感じです。

It's not "full security," but "no worth to hack it"

(続く)

(To be continued)

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

* [Dockerのあれこれを断捨離する](https://qiita.com/ksato9700/items/b0075dc54dfffc64b999)
* [dockerでいらないimage,container,networkを一括削除する](https://qiita.com/mom0tomo/items/911b92cc18871f52a2a0)

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

コンテナを一括削除する

$ docker ps -aq | xargs docker rm

イメージを一括削除する

$ docker images -aq | xargs docker rmi