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

このページをまるまる試しました。

Roaming Geofences - Tile38

Roaming Geofences

Tile38 1.2では、geofencesを動的に使用できる強力な新機能が導入されました。これにより、1つ以上の移動体が近くにある場合のリアルタイム監視が可能になります。

一般的な使用例としては、次のようなものがあります。

  • 車両ピックアップサービス: ピックアップを待っている人が近くにいるとき、または人が車に近づいたとき、または車が近くにいるときに瞬時に通知されます。

  • 近接型ソーシャルアプリ: 常にデータベースを照会しなくても、2人のユーザーが近くにいるかどうかを確認する必要がある場合に非常に便利です。


簡単な例:

NEARBY people FENCE ROAM people * 5000

これは people コレクションのローミングフェンスを開きます。フェンスは、同じコレクション内の他のオブジェクトから5000メートル以内にあるオブジェクトを監視しています。

テストするには、2つの端子を開きます。:

ターミナル1

Tile38サーバーに接続し、fenceコマンドを入力します。

$ tile38-cli

localhost:9851> NEARBY people FENCE ROAM people * 5000

ターミナル2

peopleコレクションに2点を追加します。2つ目のsetコマンドは、もう一方の端末に表示されるフェンスイベントをトリガーします。

$ tile38-cli

localhost:9851> SET people bob POINT 33.01 -115.01

localhost:9851> SET people alice POINT 33.02 -115.02

イベントはターミナル1に表示され、以下のようになります。

{

"command":"set",

"detect":"roam",

"hook":"",

"key":"people",

"id":"alice",

"time":"2016-05-24T09:19:44.08649461-07:00",

"object":{"type":"Point","coordinates":[-115.02,33.02]},

"nearby":{

"key":"people",

"id":"bob",

"meters":1451.138152186708

}

}

アリスが更新されてボブは1,451メートル離れていることがわかります。

他にもいくつかの例があります。

# アリスボブがお互いに100メートル以内にいるかを見張ります。

NEARBY people MATCH alice FENCE ROAM people bob 100

# 'a'で始まるオブジェクトは、友達のコレクション内の任意のオブジェクトの100メートル以内にいるかを見張ります。

NEARBY people MATCH a* FENCE ROAM friends * 100

また、webhooksを使用している場合は、このようなフェンスを割り当てることができます。

SETHOOK myhook http://10.0.1.5/hook NEARBY people FENCE ROAM people * 5000

NODWELL Keyword

副次的な効果としては、2つの場合に近くの通知がたくさん届くことがあります。 オブジェクトがお互いに近くに存在し続けます。これが問題であれば nodwellキーワードを使います

tile38-cli> NEARBY people FENCE NODWELL ROAM people * 5000

これにより、2つの接続オブジェクトに対して、近くの通知と遠くの通知が繰り返されるようになります。

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

これをやられると、コマンドのコピペをする時に、困ったことになるので、対応を探していたら、"WordPress 半角の「"」や「'」が、全角に変換されてしまう件"と同じ対応したら上手くいったので、メモを残しておきます。

remove_filter("the_content", "wptexturize");
remove_filter("the_excerpt", "wptexturize");
remove_filter("the_title", "wptexturize");

の3行をまとめてfunctions.phpに追記したら、上手くいきました。

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

「JIN -仁」―― これが、我が国、屈指の名作テレビドラマであることに、異義を唱える人は少ないでしょう。

Many people would agree that "JIN" is one of Japan's greatest TV dramas.

本シリーズで貫かれている基本コンセプトは、このフレーズに集約されるでしょう。

The basic concept that runs through this series can be summed up in this phrase.

「神は乗り越えられる試練しか与えない」

"God only gives us trials that we can overcome"

人間の技術への飽くなき可能性を問い、人間の可能性と人間愛を描く、感動ドラマといっても過言ではないでしょう。

It is no exaggeration to say that this is a moving drama that shows the insatiable potential of human technology and depicts the potential of human beings and human love.

-----

これらを全て踏まえ上で、私の技術への適当な可能性とこだわり、ささいな可能性と、絶無に等しい人間愛しか持ちえない、私、江端から、一言申し上げたい。

Based on the background, with reasonable potential and commitment to technology, a trivial human being, almost nothing love, I, Ebata, would like to say a few words.

「神は乗り越えられる試練しか与えない」ではなく、

NOT "God only gives us trials that we can overcome"

「神なら、私に試練を与えるな」―― と。

BUT "If you're God, don't give me a trial"

ぬるま湯のような人生を、これといった野望もなく、ボンヤリと生きたいだけの私にとって、

I've had a lukewarm life, I had no ambitions and I just want to live my life easily.

"JIN"は、ただの「憧れの人」であれば良いのです。

"JIN" should just be a "person of admiration" for me.

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

基本的には、https://tile38.com/topics/geofencing/ と同じことをやっただけ

(Step 1)サーバを立ち上げる
C:\Users\ebata>docker run -p 9851:9851 tile38/tile38

(Step 2)1つ目のターミナルを上げる
F:\しゅらばしゅう\tile38-master>docker run ----net=host -it tile38/tile38 tile38-cli
127.0.0.1:9851> SETCHAN warehouse NEARBY fleet FENCE POINT 33.462 -112.268 6000
{"ok":true,"elapsed":"41.5µs"}
127.0.0.1:9851> SUBSCRIBE warehouse
{"ok":true,"command":"subscribe","channel":"warehouse","num":1,"elapsed":"4.4µs"}

(Step 3)2つ目のターミナルを上げる
$ winpty docker run --net=host -it tile38/tile38 tile38-cli

(Step 4)2つ目のターミナルから座標を入力する
127.0.0.1:9851> SET fleet bus POINT 33.460 -112.260
{"ok":true,"elapsed":"61.7µs"}

1つ目のターミナルに以下が表示される。
{
"command":"set", ← (A)
"group":"5ed3c9a30a24b900011ea4a8",
"detect":"enter", ←(B)
"hook":"warehouse",
"key":"fleet",
"time":"2020-05-31T15:13:39.296483124Z",
"id":"bus",
"object":{"type":"Point","coordinates":[-112.26,33.46]}
}
(A)
del:フェンスで囲まれているコレクションからオブジェクトが削除されたことをクライアントに通知します。
drop:コレクション全体が削除されたことをクライアントに通知します。
set:オブジェクトが追加または更新されたことをクライアントに通知します。
(B)
inside:オブジェクトが指定された領域の内側にあるときです。
outside:オブジェクトが指定されたエリアの外にあるときです。
enter:以前はフェンスの中にいなかったオブジェクトがエリアに入ったときです。
exit:以前フェンスの中にいたオブジェクトがエリアから出たときです。
cross:以前はフェンスの中になかったオブジェクトがエリアに入り、エリアを出たときです。

ところで、
$ SETCHAN warehouse NEARBY fleet FENCE DETECT inside,outside POINT 33.462 -112.268 6000
とか、指定することを可能。
また、例えば COMMANDS オプションを使用することで、どのコマンドを返すかをマスクすることも可能です。以下は、これは、setコマンドのenter検出のみを行うことを指定します。
$ SETCHAN warehouse NEARBY fleet FENCE DETECT enter COMMANDS set POINT 33.462 -112.268 6000

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

[tile38のdockerのインストール]

docker pull tile38/tile38
(これは1回で良い)

[tile38サーバのdockerの起動]
Windows10のコマンドプロンプト立ち上げて
docker run -p 9851:9851 tile38/tile38

で、サーバ起動

C:\Users\ebata>docker run -p 9851:9851 tile38/tile38


てな表示が出てきて、表示がロックされる

[tile38クライアントのdockerの起動]

F:\tile38-master>docker run --net=host -it tile38/tile38 tile38-cli
127.0.0.1:9851>

(ちなみに、"docker run -it tile38/tile38 tile38-cli"だと、"Could not connect to Tile38 at 127.0.0.1:9851: Connection refused"が連続で出てくる)

なんだかよく分からないが、https://tile38.com/topics/command-line-interface/ に記載されている内容を入力すると、こうなった。

127.0.0.1:9851> SET fleet truck1 POINT 33.5123 -112.2693
{"ok":true,"elapsed":"45.7μs"}
127.0.0.1:9851> SET fleet truck2 POINT 33.4626 -112.1695
{"ok":true,"elapsed":"8.9μs"}
127.0.0.1:9851> SCAN fleet
{"ok":true,"objects":[{"id":"truck1","object":{"type":"Point","coordinates":[-112.2693,33.5123]}},{"id":"truck2","object":{"type":"Point","coordinates":[-112.1695,33.4626]}}],"count":2,"cursor":0,"elapsed":"56.7μs"}
127.0.0.1:9851> NEARBY fleet POINT 33.462 -112.268 6000
{"ok":true,"objects":[{"id":"truck1","object":{"type":"Point","coordinates":[-112.2693,33.5123]}}],"count":1,"cursor":0,"elapsed":"37.2μs"}
127.0.0.1:9851> GET fleet truck1
{"ok":true,"object":{"type":"Point","coordinates":[-112.2693,33.5123]},"elapsed":"8.8μs"}
127.0.0.1:9851> DEL fleet truck2
{"ok":true,"elapsed":"5.5μs"}
127.0.0.1:9851> DROP fleet
{"ok":true,"elapsed":"1.9μs"}
127.0.0.1:9851> q
(error) unknown command 'q'
127.0.0.1:9851> quit

というように、とりあえずDockerのtile38サーバの起動を確認。

========

ちなみに、ダウンロードしてきた"tile38-master.zip"からDockerを作ろうとしましたが、上手くいきませんでした。
(Docker使うなら、上記の手順と同じことになります)

ただ、手順は間違っていないと思うので、書き残しておきます。

tile38-master.zipを解凍して、tile38-masterの中で、makeを実施(Goのインストールは前提)。

すると、tile38-masterの中に、
tile38-benchmark
tile38-cli
tile38-server

ができる。

あとは、docker build .
で、Docker Imageができる。

が、このImageの中に上記の3つが入らなくて、頭を抱えて週末が終わった。

(結局、"docker pull tile38/tile38" ,"docker run -p 9851:9851 tile38/tile38"だけで足ることが分かったのは、日曜日の夜だった)

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

PostgreSQLのDockerを作っていて、ようやくその「ラクさ」に気がつきました。

I've been building Docker for PostgreSQL and finally realized how easy it is.

それは「環境汚染から逃げられる」という一言につきます。

It can be summed up in one word: "I can get away with environmental pollution.

例えば、違うバージョンのPostgreSQLサーバを、1つのPCにインストールすることはできません。

For example, a different version of the PostgreSQL server cannot be installed on a single PC.

もちろんできない訳ではないのですが、大抵の場合、面倒な設定の衝突が発生し、どちらのサーバにも問題が発生します。

Of course, I can do it. In most cases, troublesome configuration conflicts occur, causing problems for both servers.

両方のPostgreSQLサーバをDockerで作っておいて、必要な時に必要な方だけを立ち上げれば、この問題が発生しません。

If I keep both PostgreSQL servers in Docker and only start up the one I need when I need it, I won't have this problem.

(まあ、正直に言えば、Docker自体、ホストOS(特にWindows)の上で変な動きをすることもあるので、世間で言うように、諸手を上げて「凄い」とまでは言えないのですが)

Well, to be honest, Docker itself can run weirdly on host OSes (especially Windows), so I can't say that it's "great" with all my hands, as people say....

-----

Dockerとは、要するに

Docker is, in short,

―― 別々のマンションに囲っておき、気が向いた時だけに尋ねることができる愛人

"a mistress you can keep enclosed in a separate condo and ask only when you feel like it"

この一言に尽きます。

I can sum it up in one word.

―― しかも、その愛人とマンションのコストが、恐しく安い

"What's more, the cost of the condo with the mistress is frighteningly cheap."

なぜ、多くの人は、この表現を用いてDockerを語らないのか、私には分かりません。

I don't know why so many people don't use this expression to talk about Docker.

-----

自分の品性が疑われるからかなぁ。

It may be because my character is questioned.

しかし、私のような「高潔な人物」でも思いつくメタファーなんですけどね。

However, it's a metaphor that even a " noble person " like me can come up with.

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

我が家には、1Gの光ネットワークが敷設されています。

We have a 1G optical network in our house.

これまで、帯域の問題などは発生したことはなかったのですが、最近、しばしばネットワークが不調となることとがあります。

I have never had any bandwidth issues, but recently I have been experiencing frequent network malfunctions.

まあ、私が会社のリモート会議をして、嫁さんがAmazon PRIMEを見て、次女がリモート授業を受けて、長女が企業面接をやっている ――

Well, I'm doing corporate remote meetings, my wife is watching Amazon PRIME, my second daughter is taking remote classes, and my senior daughter is doing corporate interviews --

そんな状況が、同時に発生することになれば、スループットに問題が発生するだろうとは思います。

I think that if such a situation is to occur at the same time, there would be throughput problems.

-----

一方、ここにきて、「私(江端)の『無線は信用ならん』」のポリシーが上手く回っているように思います。

On the other hand, it seems that my (Ebata's) policy of "I don't trust radio" is working well here.

なにしろ、我が家は、自宅を建てた時に敷設した100Mイーサのネットワークがベースですし、その他、外壁や、庭の土の中にも、イーサネットが張り巡らされています。

After all, our house is based on the 100M Ethernet network that I installed when I built our house. There are also other Ethernet lines on the exterior walls and in the soil of the garden.

企業面接では、長女は、ノートPCに有線LANを接続しているようです。

In the company interview, my senior daughter seems to have a wired LAN connection to her laptop.

WiFiは通信品質の変動が激しいです。

WiFi is prone to fluctuating communication quality.

企業面接の途中で、通信リンクが切れたらシャレになりません。

It's no joke if she lose her communication link during the company interview.

-----

それにしても、『我が家のリビングで、就職面接が行なわれる時代がやって来ようとは』 ―― 誰が予想できたでしょうか。

By the way, who would have guessed that the era of job interviews in our living room would be coming ?

エンジニア、投資家、コンサル、ベンチャーの社長、政治家、人工知能(とか言う何かよく分からないもの)、誰も予想できなかった未来です。

It's a future that no one could have predicted, engineers, investors, consultants, venture presidents, politicians, artificial intelligence (or something I'm not sure).

(占い師とかカルト宗教団体は、厚顔甚しくも「私は予言していた」と言い出しかねないので、確認的に記載しておきます)。

I'll note this confirmatively, because fortune tellers and religious cults may say "I predicted it" with a thick face.

-----

スーツ姿でバッチリと決めた娘が、リビングで、自分のノートPCを使って面接している様は ――

My daughter, looking great in her suit, is interviewing in the living room on her notePC.

もちろん、面接中は、家族全員がリビングに立ち入りませんが、

Of course, the whole family won't be in the living room during the interview

もの凄い、非日常感です。

It's an amazing, extraordinary feeling.

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

SNSの誹謗中傷によって、また誰かが自殺に追いやられたようです。

It seems that someone has been driven to suicide again by the slander on social media.

今さらですが、我が国において、この手の話は今回が初めてという訳ではありませんし、世界中でも同じ事件が起こっています。

I hate to say it now, but this is not the first time, and the same incidents are happening all over the world.

このような事件が発生する度に、私には不思議に思っています。

Every time an incident like this occurs, it makes me wonder.

―― 「SNSでの誹謗中傷はやめよう」とは言う人はいても、「SNSを使うのをやめよう」と言う人はいない

"There are people who say, "Let's stop slandering people on SNS," but there are no people who say, "Let's stop using SNS."

とても、不思議です。

It's very, very strange.

-----

この話、私には「銃規制」と同じ様に見えます。

This story, to me, looks a lot like "gun control".

我が国では、個人的な銃は「所持」しているだけで刑事罰の対象です。

In our country, personal "possession" of a gun is subject to criminal penalties.

日本国の法律は、銃の「殺傷」以外の効果(例えば「自衛力」)を個人の権利として認めていません。

Japanese law does not recognize the non-"lethal" effects of a gun (e.g., "self-defense") as an individual right.

しかし、我が国において、その「銃規制」の効果は絶大です。

However, in our country, that "gun control" has had a tremendous effect.

なにしろ、我が国では、銃による殺人事件は、「暴力あるいは暴力的脅迫によって自己の私的な目的を達しようとする反社会的集団」を除けば、ほとんど発生していません。

After all, we don't have any gun murders in this country with the exception of "an antisocial group that seeks to achieve its own private ends through violence or threats"

この反社会的集団が、一般市民に銃を使用したケースもありましたが、実行犯は勿論、組織は壊滅、組織の長も連座の罪となり、悲惨な人生を送り、その報いを受けています。

There have been cases where this anti-social group has used guns on civilians, but the perpetrators, of course, the organization has also been destroyed. The head of the organization has also been guilty of association. They had to live their miserable life, and are reaping the rewards.

勿論、1mmも同情する気にもなれませんが。

Of course, I'm not inclined to pity them at all.

-----

私は、「SNSを法律で規制せよ」などと言う気はありません。

I don't want to say that SNS should be regulated by law.

SNSによって形成される世論には、問題もありますが、有効な面もあると思っているからです。

The public opinion formed by social networking has its problems, but I believe that it also has an effective side.

ただ、「SNSでの誹謗中傷」の被害者に対して、本気の反省と同情と哀悼を「行動」として示すのであれば、

However, for victims of "slander on SNS," If we show real genuine remorse, sympathy and condolence as an "action",

「SNSをやめる」こと ―― それだけだと思うのです。

"To quit SNS" - I think that's it

正直、1人が「SNSをやめること」による社会への効果は絶無でしょう。

To be honest, the effect on society of one person quitting SNS will be negligible.

それでも、少なくとも「自分だけは行動した」と自分に言い切ることはできます。

Still, we can at least tell ourselves that "I am the only one who has acted"

-----

「SNSでの誹謗中傷はやめよう」と、SNSで叫び回る人間は、

People who go around shouting, "Stop slandering people on SNS!

私には、

I feel "vulgar" like

―― 銃をぶっぱなし続けながら「銃を規制すべきだ」と叫んでいる人間

"the person who keeps blasting guns and shouting "we should control guns!""

と同じ「品性のなさ」を感じるのです。

-----

ともあれ、今回の事件で、「SNSをやめる」という決断をした人がいれば、私にご一報下さい。

Anyway, if there is anyone who has decided to quit SNS because of this incident, please let me know.

ゆっくりとお話したいです。

I would like to take my time and talk to you.

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

  1. データベース新規作成
    psqlでデータベースを新規作成する(以下、データベース名をca_simとする)。

postgres=#CREATE DATABASE ca_sim

  1. データベース拡張

psqlに入って次のコマンドを実行する。

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

  1. kashiwanoha.osmを読み込む

C:\Users\ebata\Desktop\20190327_casim_final\environment>docker cp kashiwanoha.osm ebata_db_1:/db_data

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

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

5.kashiwanoha.osmをインポート

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

6.sqlファイルをシェルから実施する

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

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

「YouTubeの張りつけ」テスト

■Subject(題目) Visualization of "Q-learning" progress using QGIS add-in "PosiVew" (QGISのアドイン"PosiVew"を使った、Q学習の進み方の視覚化)

■Outline(概要) The shorter the passenger pick-up to drop-off time, the higher the reward is given (乗客のピックアップからドロップオフまでの時間が短いほど、高い報酬を与えられる)

■Source codes and others(ソース、その他一式) http://www.kobore.net/diary_techno/?d...

■How to grasp the status(状態の認定方法) http://www.kobore.net/q_20190419.jpg