内容 | コマンド例 |
サービスの起動 | postgres -D /usr/local/var/postgres |
デフォルトのテーブルに接続 | psql -d postgres |
直接データベースに接続 | psql -d テーブル名 |
データベース一覧の表示 | \l |
データベースへの接続 | \c データベース名 |
テーブルの作成 | create table テーブル名 ( counter int primary key, present_station int, departure_station int, present_time time ); |
データの書き込み | INSERT INTO テーブル名(counter, present_station, departure_station, present_time) VALUES(1, 2, 3, '12:23:34'); |
データの上書き | UPDATE テーブル名 set present_time = '23:34:45' WHERE counter = 1; |
テーブル一覧の表示 | \dt; |
テーブル構造の表示 | d テーブル名; |
テーブル内のデータを一覧 | select * from テーブル名; |
指定したカラムの内容を小さい順に表示 | select * from テーブル名 order by カラム; |
指定したカラムの内容を大きい順に表示 | select * from テーブル名 order by カラム desc; |
表示数指定 | select * from テーブル名 limit 数; |
表示の開始位置指定 | select * from テーブル名 offset 数; |
カラム内の任意の文字を表示 | select distinct カラム名 from テーブル名; |
カラム内の合計値 | select sum(カラム名) from テーブル名; |
カラム内の最大値 | select max(カラム名) from テーブル名; |
カラム内の最小値 | select min(カラム名) from テーブル名; |
カラム内の平均値 | select avg(カラム名) from テーブル名; |
データの更新 | update テーブル名 set 更新内容; |
全データの削除 | delete from テーブル名; |
テーブル本体の削除 | drop table テーブル名; |
データの削除 | delete from テーブル名 where 条件; |
テーブルのオーナーの変更 | alter table テーブル名 owner to オーナー名; |
文字数 | select length(カラム名) from テーブル名; |
文字列連結 | select concat(文字列, 文字列, ...) from テーブル名; |
カラムの追加 | alter table テーブル名 add カラム名 データ型; |
カラムの削除 | alter table テーブル名 drop カラム名; |
カラム名の変更 | alter table テーブル名 rename カラム名 to 新カラム名; |
カラムのデータ型を変更する | alter table テーブル名 alter カラム名 type データ型; |
インデックス追加 | create index インデックス名 on テーブル名(カラム名); |
インデックス削除 | drop index インデックス名; |
viewの作成 | create view ビュー名 as viewに指定するコマンド; |
view一覧の確認 | \dv; |
viewの使用方法 | select * from ビュー名; |
viewの削除 | drop view ビュー名; |
SQL文を外部ファイルに書いて実行する時に使う | \i ファイル名 |
PostgreSQLの基本的なコマンド
osm_railway_linestring はどこにあるの?
osm_railway_linestringの場所がさっぱり分からないので、とりあえずOpenMapTilesがあやしいので、「OpenMapTiles Map Server を使ってサイトに地図を埋め込む」を、そのまま真似てみる
https://qiita.com/kmdsbng/items/fe9239e96afe29eb893c をそのまま実行
タイルデータをダウンロードする
https://openmaptiles.com/downloads/
Downloads > Asia > Japan > Tokyo から 東京エリアをダウンロードする
OpenMapTiles Map Serverを起動する
タイルデータを置いたディレクトリで以下の docker コマンドを実行
docker run --rm -it -v $(pwd):/data -p 8080:80 klokantech/openmaptiles-server
C:\Users\ebata\Desktop\hirohakama_sim>docker run --rm -it -v $(pwd):/data -p 8080:80 klokantech/openmaptiles-server
Unable to find image 'klokantech/openmaptiles-server:latest' locally
latest: Pulling from klokantech/openmaptiles-server
c5e155d5a1d1: Pull complete 221d80d00ae9: Pull complete 4250b3117dca: Pull complete 3b7ca19181b2: Pull complete 425d7b2a5bcc: Pull complete 69df12c70287: Pull complete ea2f5386a42d: Pull complete d421d2b3c5eb: Pull complete da30b29849e7: Pull complete 737fbec6f196: Pull complete e4745ce6fed7: Pull complete 28b22a8cf232: Pull complete Digest: sha256:1a6fec0108fa78cf778d385205b4b0197b8c599fb91f9e08a1f114af9df75584
Status: Downloaded newer image for klokantech/openmaptiles-server:latest
docker: Error response from daemon: create $(pwd): "$(pwd)" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
あ、Windows10のコマンドプロンプトでは、$(pwd)が解釈できないみたいなので、
C:\Users\ebata\Desktop\hirohakama_sim>docker run --rm -it -v ~/data -p 8080:80 klokantech/openmaptiles-server としてみたら
C:\Users\ebata\Desktop\hirohakama_sim>docker run --rm -it -v ~/data -p 8080:80 klokantech/openmaptiles-server
/usr/lib/python2.7/dist-packages/supervisor/options.py:298: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
'Supervisord is running as root and it is searching '
2020-06-29 15:43:52,652 CRIT Supervisor running as root (no user in config file)
2020-06-29 15:43:52,652 INFO Included extra file "/etc/supervisor/conf.d/openmaptiles.conf" during parsing
2020-06-29 15:43:52,655 INFO Creating socket tcp://localhost:8081
2020-06-29 15:43:52,656 INFO Closing socket tcp://localhost:8081
2020-06-29 15:43:52,663 INFO RPC interface 'supervisor' initialized
2020-06-29 15:43:52,663 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2020-06-29 15:43:52,664 INFO supervisord started with pid 1
2020-06-29 15:43:53,669 INFO spawned: 'wizard' with pid 8
2020-06-29 15:43:53,674 INFO spawned: 'xvfb' with pid 9
Starting OpenMapTiles Map Server (action: run)
2020-06-29 15:43:54,196 INFO success: wizard entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
2020-06-29 15:43:54,196 INFO success: xvfb entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
Config file not found!
Starting installation…
Installation wizard started at http://:::80/
List of available downloads ready.
で、このまま、で停止した状態。
ブラウザで http://localhost:8080/ にアクセス
"CONTINUE"を押下
"CONTINUE"を押下
"SAVE & RUN THE SERVER"を押下
Click here to get the download keyを押下
上記のKeyをコピペして、"START DOWNLOAD"を押すと
てな画面がでてくる。
"OPEN MAP SERVER"を押下した後、http://localhost:8080/をすると以下の画面が出てくる。
疲れた。今日はここまで。
geometry型がさっぱり分からん
------- 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から、以下のように変更した。
------- ところが鉄道の路線情報が、geometry型で、何が何やらさっぱり分からん --------
例えば、新百合ヶ丘駅から五月台駅までのルートは、以下のような情報が入っている
hirohakama_sim2=# select geom from n02_08_eb02 where id = 6328;
0105000020E610000001000000010200000012000000E97DE36BCF6F6140CDCCCCCCCCCC4140E4141DC9E56F614006D847A7AECC41400D8E9257E76F61400DFD135CACCC4140BEBC00FBE86F6140A27A6
B60ABCC4140404D2D5BEB6F61401422E010AACC414045F0BF95EC6F6140A99F3715A9CC4140923F1878EE6F614062F3716DA8CC41400708E6E8F16F61401B47ACC5A7CC4140ABECBB22F86F6140F870C97
1A7CC414055F65D11FC6F61401B47ACC5A7CC414014ED2AA4FC6F61403F1D8F19A8CC414072A774B0FE6F6140A99F3715A9CC414047ACC5A70070614038F8C264AACC414075C8CD700370614031D3F6AFA
CCC4140130A117008706140B1E1E995B2CC4140C3B645990D70614006F52D73BACC414043C5387F13706140E23B31EBC5CC4140003ACC9717706140A2D11DC4CECC4140
(1 row)
これが訳が分からんのだが、QGISではちゃんと曲線も含めて表示される。
地物情報としては、両端の位置情報は入っているが、カーブの情報とかどうやて表現しているんだ?
なんか、色々探しているうちに、こんなのが出てきた。(参考 http://www.jurigis.me/2015/02/07/select-in-postgis/)
hirohakama_sim2=# select ST_Astext(geom) from n02_08_eb02 where id = 6328;
MULTILINESTRING((139.49407 35.6,139.4968 35.59908,139.49699 35.59901,139.49719 35.59898,139.49748 35.59894,139.49763 35.59891,139.49786 35.59889,139.49828 35.598
87,139.49904 35.59886,139.49952 35.59887,139.49959 35.59888,139.49984 35.59891,139.50008 35.59895,139.50042 35.59902,139.50103 35.5992,139.50166 35.59944,139.5023
8 35.59979,139.50288 35.60006))
(1 row)
エクセルで、この座標を並べて、QGIS3と比較してみた。
hirohakama_sim2=# select ST_Length(geom) from n02_08_eb02 where id = 6328;
st_length
0.009214722968728321
(1 row)
これだと、デカルトの長さになるらしい。これをメートルに変換するには、以下の様にする。
hirohakama_sim2=# select ST_Length(Geography(ST_Transform(geom,4326))) from n02_08_eb02 where id = 6328;
st_length
852.3697682752311
(1 row)
で、次は駅の情報。駅は、n02_08_eb03(×n02_08_eb02)に入っている。
五月台駅は、こんな感じ。
hirohakama_sim2=# select * from n02_08_eb03 where id = 3106;
id | geom | rac | int | lin | opc | stn
3106 | 0105000020E610000001000000010200000002000000E97DE36BCF6F6140CDCCCCCCCCCC4140A857CA32C46F614030478FDFDBCC4140 | 1
2 | 4 | 多摩線 | 小田急電鉄 | 五月台
(1 row)
で、駅の端点は、こんな感じで出てくる。
hirohakama_sim2=# select ST_Astext(geom) from n02_08_eb03 where id = 3106;
st_astext
MULTILINESTRING((139.49407 35.6,139.4927 35.60046))
hirohakama_sim2=# select ST_Length(Geography(ST_Transform(geom,4326))) from n02_08_eb03 where id = 3106;
st_length
134.22648323273413
(1 row)
ふーん、五月台駅って、134メートルなんだ
結論 geometryのフォーマットはさっぱり分からんが、関数使って取り出せるなら、それで良しとしよう。
課題 鉄道のgeometryを使った最短経路問題を解くのメソッドってあるのかな? pgr_dijkstra()とか・・・
http://kenpg.seesaa.net/article/385517945.html を、後で試してみること
postGIS環境作り直し方(バラバラに記載して、訳が分からなくなってエライ目にあった)
■全部の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から、以下のように変更した。
COCOAのインストールは個人の自由ですが、私はインストールをお勧めしたいと思います。
(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.
Dockerの捨て方
* [Dockerのあれこれを断捨離する](https://qiita.com/ksato9700/items/b0075dc54dfffc64b999)
* [dockerでいらないimage,container,networkを一括削除する](https://qiita.com/mom0tomo/items/911b92cc18871f52a2a0)
dockerのコンテナやイメージを一括削除する
コンテナを一括削除する
$ docker ps -aq | xargs docker rm
イメージを一括削除する
$ docker images -aq | xargs docker rmi
https://github.com/Covid-19Radar/Covid19Radar がソースコードの場所のようです。
「COCOAが「まもりあいJapan」のコードをベースにしている」という誤記を記載して、現在、COCOAのコードを探していましたが、どうやら、https://github.com/Covid-19Radar/Covid19Radar がソースコードの場所のようです。
現在、パッケージ一式をダウンロードして、読んでいます。
新型コロナウイルス接触確認アプリ(COCOA) COVID-19 Contact-Confirming Application のソースコード(?)のざっくりレビュー(誤記・訂正あり)
ここを↓をご参照下さい
===================
Wikipediaによりますと、
まもりあいJapanとは、新型コロナウイルス感染症(COVID-19)において陽性患者と濃厚接触した恐れのある人に通知を送るアプリとしてコード・フォー・ジャパンが開発し、Github上に公開したもの。2020年5月8日に厚生労働省が「新型コロナウイルス陽性判定者との濃厚接触ほか各種関連情報を迅速に通知するスマートフォンアプリ」を公式に導入することを決定し、これを受けて開発を取りやめた
となっなっており、以下の「まもりあいJAPAN」のコードと同じか、ベースとしている という、以下の記事は間違っております。訂正してお詫び申し上げます。
以下は、私の記録の為に残しますが、取扱にはご注意下さい。
===================
ここから↓は無視して下さい。
新型コロナウイルス接触確認アプリ(COCOA) COVID-19 Contact-Confirming Applicationが公開されています。
このアプリのソースコードは公開されている、「まもりあいJAPAN」コードと同じか、ベースとしているもののようです。
簡単にコードレビュー(本当に概要だけですが)したので、公開します。
本当のことを言えば、政府による個人情報の収集などの機能が組み込まれていないか、位置情報のトラックなどされていないかが心配だったので、調べました。
現在のところ、COCOAが「まもりあいJAPAN」のコードに100%準拠しているか確認が取れていません(これは、私がサボっているからです)し、そもそも「まもりあいJAPAN」も、現時点では、コードを眺めただけ(私がサボっているからです)、という状況なので、確たることは言えませんが、現時点では大丈夫ではないか、という所感を持っています。しかし ――
私が「見張っている」ということは、気にしておいて下さいね > 関係者各位皆様
まあ、政府が、個人情報の収集なんぞをやっていることがバレたら(通信パケットだけなら、発見は簡単です)、内閣は勿論、与党も吹き飛ぶのは間違いないと思うので、そういう意味でも、まあ、大丈夫ではないかと思っています。
私(江端)は、先程ダウンロードを完了しました。
で、今、ちょっと触っているのですが、ふざけて「陽性情報の登録」をするような奴がいたら、私が、草の根分けても、そいつを探し出します
(もちろん、仕組みとしては「できない」ハズですけど、激怒している時の私であれば、何をしでかすか分かりません(色々なことを思い付くことがあります)。お忘れなきよう)
ちなみに、各国のアプリについては、こちらを御参照下さい。
WebAssembly+Go とりあえず逃がしておく
c:\Users\ebata\Desktop\codelab-master>set GOOS=js
c:\Users\ebata\Desktop\codelab-master>set GOARCH=wasm
c:\Users\ebata\Desktop\codelab-master>go build -o main.wasm
package main
import (
"fmt"
"syscall/js"
)
type Test struct {
Num int
}
func (t *Test) Print(this js.Value, args []js.Value) interface{} {
fmt.Println(t)
return nil
}
func (t *Test) Twice(this js.Value, args []js.Value) interface{} {
t.Num *= 2
return nil
}
func (t *Test) Add(this js.Value, args []js.Value) interface{} {
t.Num += args[0].Int()
return nil
}
func (t *Test) GetNum(this js.Value, args []js.Value) interface{} {
return js.ValueOf(t.Num)
}
func registerCallbacks() {
var test = &Test{
Num: 1,
}
js.Global().Set("test", js.ValueOf(
map[string]interface{}{
"Print": js.FuncOf(test.Print),
"Twice": js.FuncOf(test.Twice),
"Add": js.FuncOf(test.Add),
"GetNum": js.FuncOf(GetNum),
},
))
}
func main() {
c := make(chan struct{}, 0)
registerCallbacks()
<-c
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Go wasm</title>
</head>
<body>
<script src="wasm_exec.js"></script>
<script>
const go = new Go();
WebAssembly.instantiateStreaming(fetch("main.wasm"), go.importObject).then((result) => {
go.run(result.instance);
});
</script>
<script>
function getNum(){
console.log(test.getNum())
}
</script>
<button onClick="test.Print();" id="runButton" >print</button><br>
<button onClick="test.Twice()" id="runButton">twice</button><br>
<button onClick="test.Add(1)" id="runButton">add</button><br>
<button onClick="test.GetNum()" id="runButton">get test.Num</button><br>
</body>
</html>