来週の宿題
1-9-5 で、やっとマルチ画面のバグが取れた。
あとは、オンライン予約
それにしても、emacsのshellモードって、凄くない? 出力中のprint文で検索かけれるエディタなんて、他にあるかなぁ
U-NEXT は"解約"では足りない。必ず"退会"まで持っていくこと
嫁さんが、「U-NEXTのとあるコンテンツを見たい」と言ってきたので、U-NEXTについて色々調べてみました。
無料期間サービスの解約トラブルに関する事項が山のように出てきたので、『心証悪い』と思いました。
「月額プラン1490」を契約していた場合、契約から1年以内の解約に限り違約金5,000円が発生します。
を読んで、『今どき、コンテンツサービスで違約金?』と、その心証は、決定的となりました。
# 江端家は、大型連休中などに、1ヶ月単位でNetFlixへの登録→解約を繰返しています。
とは、言え、嫁さんの希望に応える為にも、入会してみました。
で、徹底的にそのコンテンツを捜してみたのですが、全く見付からなかったので、入会から30分後に解約手続を開始しました。
を見ながら、処理を進めたのですが、怖いと思ったのは、「解約」だけでは足りず、「退会」まで持っていかなければならなかった、ということです。
解約:サービスの停止はするが、アカウントは残る
退会:アカウントも消す
解約だけでは、メールによる宣伝やら、電話による営業までくらうらしいことが分かり、『やっぱり入会するんじゃなかった』と後悔しつつ、退会(アカウントも消す)まで持っていきました。
これが「解約」のエビデンス↓
これが「退会」のエビデンス↓
以上
来週の宿題
1-9-4 bus(),person()の終了から、ちゃんと正常終了メッセージを送付して、echo2を自力破壊するようにしてみる。
デッドロック? している場所をつきとめる 1-9-4は完全に壊したっぽい
golang内でredis経由でJSONを飛す時、golangから直接JavaScriptへJSONを飛す時の覚え書き
- golang内でredis経由でJSONを飛す時
// パブリッシュ側 type GetLoc struct { ID int `json:"id"` Lat float64 `json:"lat"` Lng float64 `json:"lng"` TYPE string `json:"type"` // "PERSON","BUS","CONTROL POPUP int `json:"popup"` //Address string `json:"address"` } gl.TYPE = "BUS" gl.Lat = 35.654543 + (rand.Float64()-0.5)*0.00001*20 gl.Lng = 139.795534 + (rand.Float64()-0.5)*0.00002*20 gl.ID = rand.Int() % 5 json_gl, _ := json.Marshal(gl) r, err := redis.Int(conn.Do("PUBLISH", "channel_1", json_gl)) // サブスクライブ側 for { switch v := psc.Receive().(type) { case redis.Message: fmt.Printf("%s: message: %s\n", v.Channel, v.Data) var gl GetLoc _ = json.Unmarshal(v.Data, &gl) fmt.Println(gl.ID)
- golangから直接JavaScriptへJSONを飛す時
golangから (上記の続き)var gl GetLoc _ = json.Unmarshal(v.Data, &gl) fmt.Println(gl.ID) //conn.WriteJSON(v.Data) conn.WriteJSON(gl)
JavaScriptで受けとる
<script> function obj(id, lat, lng, type, popup){ this.id = id; this.lat = lat; this.lng = lng; this.type = type; this.popup = popup; } //ws.onmessage = e => console.log(e.data) ws.onmessage = function(event) { // 受信したメッセージはここに飛んでくる console.log("RESPONSE",event.data) var obj = JSON.parse(event.data); console.log("after parse:",obj.id) }
ポイントは、Marshal、Unmarshal、
parseの使い方
WP Githuber MD – WordPress Markdown Editor のテスト
結論から言うと、クラッシックモードが使えなくなるので、使えない。(というか、クラッシクモードを手放せない)
ただ、markdownをそのままビューに出してくれるので、編集をmarkdownかhtmlだけで行うという覚悟ができれば、このWP Githuber MD – WordPress Markdown Editor は"あり"かと思う。
以下、テストに使ったmarkdown表記のメモ
5. Intermission(休憩)
ちょっと、ここで、今回の、開発コード 1-9で使っている開発言語golangと開発環境Visual Studio Code について、こぼれ話にお付き合い頂きたいと思います。
5.1. Golangって、そんなにいいか?
Golangは、今回の開発の課題「数万以上のオブジェクトをスレッド(正確にはgoroutine)で動かしたい」というニーズに答えられる唯一の言語だったのです。
個人的にはC/C++と添い遂げて、あとはJavaScriptをちょろっと援用して、エンジニア人生を終える予定だったのですが、私の課題である「スケーラブルエージェントシミュレーション」を行うには、どうしても、この万のオーダのスレッド(goroutine)をサクっと作れる言語がGolang以外になかったのです。
ただなぁ ―― 変数の取扱い、特に配列の取扱いが、C言語やどの違うので、試行錯誤を続けなければならず、ストレスが溜ることこの上もなかったです。
ただ、この軽量なスレッド(goroutine)を使い倒すには、"チャネル(channel)"という、gorotine間でメッセージを飛し合う仕組みを使い倒さなければなりません。これ、悪意を持って言えば"スレッド間のGOTO"をやっている様にも見えます。
オブジェクト指向の考え方も、敢えて踏み躙っているようにも見えます。クラスの考え方に成れた人間には、時代に逆行しているような気すらします。
「スケーラブルエージェントシミュレーション」では、エージェントの生成と消滅が果てしなく続き、エージェントは非同期に同時に動き続けるので、はっきり言ってデバッグが地獄です。
それでも、将来的には"億"のオーダのエージェントシミュレータを作りたい私には、現時点でgolang以外の選択肢がないのです。
Visual Studio Code (vscode)って、そんなにいいか?
gcc + gdb + emacsで、職人気質のようにやってきた私は、emacsのキーバインディングが、体に埋まれこまれています。将来、認知症になって、妻や子どもを思い出せなくなったとしても、emacsキーバインドは忘れないだろうという、確かな確信があります。
vscodeでも、emacsキーバイドはサポートされていますが、完璧ではありません。
加えて、開発環境用に必要となる、"launch.json"やら、"settings.json"とかの設定が、死ぬほど面倒くさい。
もっとも、visual Studioは、米国赴任中にうんざりするほど使ってきたので、慣れれば使い易くなってくるのは分かるのですが、このような『開発環境縛り』が嫌で、"gcc + gdb + emacs"に逃げてきた私にとっては、正直辛いです。
ただ、「拡張機能」は凄いと思える。思いついた機能はほとんど手に入りますからね。
ざっくりとした「ワクチン非接種者:ワクチン接種者」の感染率と死亡率
コロナ関係のコラム(第8弾)を執筆しているのですが、どうにも、分かりやすいデータが見つからなくて困っています。
私が知りたいのは、ざっくりとした「ワクチン非接種者:ワクチン接種者」の感染率と死亡率です。
これだけのことなのに、なんでグラフが出てこないんだ? と思いながら、捜していたのですが、
神奈川県の、新型コロナワクチンの有効性-ブレイクスルー感染調査から
が、比較的分かりやすいグラフを使っていましたので、ここを参照しています。
ふむ、感染者の97%以上が、ワクチン接種を選択しなかった人、ということですね。
このグラフを見る限り、死亡者の大半が、ワクチン接種を選択しなかった人、と読めます。
現在の日本では「ワクチン非接種者:ワクチン接種者 = 2:8」だから、それを勘案すると、ワクチン非接種者は、さらにリスクが高いと言えそうです。
以上