なんか喉の調子が悪いなと思っていたら見事に喉が崩壊した。
2,3年前くらいから、
寝付きが悪くなる → 疲れがとれなくなる → 喉が腫れる
というコンボを繰り返しているのでいい加減セーブできる様になりたい…。
耳鼻咽喉科の先生によると男性で30代を超えると同様の症状になりやすいという傾向があるということだったので余計にケアしないと駄目なのだろうな。イブプロフェン、トラネキサム酸系のお薬を飲んで可能な限り声を出さない様にして一日を過ごす。
なんか喉の調子が悪いなと思っていたら見事に喉が崩壊した。
2,3年前くらいから、
寝付きが悪くなる → 疲れがとれなくなる → 喉が腫れる
というコンボを繰り返しているのでいい加減セーブできる様になりたい…。
耳鼻咽喉科の先生によると男性で30代を超えると同様の症状になりやすいという傾向があるということだったので余計にケアしないと駄目なのだろうな。イブプロフェン、トラネキサム酸系のお薬を飲んで可能な限り声を出さない様にして一日を過ごす。
業務時間の大半を本日は面談に使う。大体自分は月1回一人30分ずつくらい頂いているのだけれども、時間を頂いた分、きちんとフィードバックできているとよいのだけれどもと毎回自問自答しながら面談させていただいてる。
単にルーチン的にこなすのではなくて、よい雑談をしながらその中で課題を見つけたり目標を設定しながら進められる様にと意識してる。
帰り際、一人ふらりと居酒屋さんのカウンターでお酒を飲んでいたら、タイムラインのこんなニュースが。
Live Dwango Readerがサービス終了とのことで残念。現LINEから譲渡されるときに一度引っ越しを考えたのだけれども、dwangoに譲渡されて継続されることを契機に結局使い続けていたのだけれども継続されず残念*1。
*1:こればっかりは仕方ない….
少し前に話題になった本。読めていなかったので今更ながら読んでみた。
自分は中でも特に「PART.3 ビジネスを加速する投資&チームづくり」の章が興味深かった。
魅力を伝えるための投資、スピードの体感をさせること、人を巻き込むために自分が楽しむ etc… ことといった内容は多少耳が痛いところもありつつも同意するところが多々あった。
素敵な働き方をされている方がたくさん紹介されていた。
と同時に、多分ここで紹介されているのと負けないくらい素敵な人がたくさん自分の周りでは働かれているので、そういった人たちと一緒に働けていることを嬉しく思うと同時にもっと働きやすくできる様にしていきたいなと思った。最近ぼんやり自分が思い悩んでいたことがふとした方向から解決された気がして読んでよかった。
分類が細かくて凄い。
あと、最近マイブームの発酵関連で味噌、醤油の重要性について改めて認識。
近所の公園へ。
高温注意情報も出ていたので定期的に水分を取りながら移動して公園の中をふらふらしていた。
スポーツカイトを飛ばしている人たちがいて、遥か高い青い空に飛ぶ凧が鮮やかだった。
BITFINEXというビットコイントレードのプラットフォームを提供している会社がGrenacheというマイクロサービスを管理するフレームワークを提供しているので少し触ってみた。
例によってサンプルプログラム、ほぼそのままなのだけど多少咀嚼した(つもり)。
Grenache is a DHT based high-performance microservices framework by Bitfinex. Its decentralised and optimized for performance. Because its simple, it is easy to understand and to set up.
雑にまとめたのが下の図。
特徴としては、サービスを一箇所に登録するのではなく離散ハッシュテーブルで管理されるクラスタに登録できるところで、そこにサービスを登録することでそのサービスのIP等の接続情報が管理されていくところにある。
まずはGRAPEと呼ばれるデーモンを立ち上げてクラスタを構成する。npmで雑にインストール。
$ npm i -g grenache-grape
GRAPEを立ち上げる。3クラスタ構成にしてみる。
$ grape --dp 20001 --aph 30001 --bn '127.0.0.1:20002' $ grape --dp 20002 --aph 30002 --bn '127.0.0.1:20003' $ grape --dp 20003 --aph 30003 --bn '127.0.0.1:20001'
dp
はクラスタ間でのDHTを構成する際に通信するためのポート番号、aph
はAPIのポート番号になる。 bn
は立ち上げ時に参照するGRAPEを指定する。
これでクラスタは構成されたので次は実際にWorker(=サービス)を登録していく。サンプルではフィボナッチ数列の和だったけど、ここでは階乗を求めるサービスにしてみる。
GRAPEクラスタへWorkerを登録したり、登録したWorkerを呼び出すClientを作成するためのライブラリもnpmに登録されているのでこれを利用していく。
まずはWorkerから。
'use strict' const { Link, PeerRPCServer } = require('grenache-nodejs-ws') function fact (n) { if (n == 0) { return 1 } let m = fact(n-1); return m * n; } const link = new Link({ grape: 'http://127.0.0.1:30001' }) link.start() const peer = new PeerRPCServer(link, {}) peer.init() const service = peer.transport('server') service.listen(1337) setInterval(() => { link.announce('fact_worker', service.port, {}) }, 1000) service.on('request', (rid, key, payload, handler) => { const result = fact(payload.number) handler.reply(null, result) })
なんとなく見て分かる通り fact_worker
という名前でサービスをGRAPEクラスタに登録している。リクエストが来たときに fact
というfunction呼び出してその結果をリプライしているという至極シンプルな形。
では、上のWorkerを立ち上げたままの状態で次にこれを実際に呼び出すクライアントを書いてみる。
同じく先のgrenache-nodejs-wsを利用して、
'use strict' const { Link, PeerRPCClient } = require('grenache-nodejs-ws') const link = new Link({ grape: 'http://127.0.0.1:30001', requestTimeout: 10000 }) link.start() const peer = new PeerRPCClient(link, {}) peer.init() const payload = { number: 10 } peer.request('fact_worker', payload, { timeout: 100000 }, (err, result) => { if (err) throw err console.log(`${payload.number}! = ${result}`); });
上を実行すると
が行われて、
$ node client.js 10! = 3628800
といった結果が得られる。
クライアントはWorkerの接続先を直接知ること無く、GRAPEクラスタに登録された階乗の結果を得るサービスの接続先情報をクラスタから得た上でWorkerに接続を行い処理結果を得ることができた。
確かにこの仕組があるとシンプルにクラスタを形成することもでき、更にそこに対してマイクロサービスを登録していくことが実現できそう。BITFINEXではこれを実際にサービスに投入しているとのことなので面白い仕掛けだなと思った。
シュウマイが妙に食べたくなったなという瞬間があったので突発的に作ってみたところ、意外とスムーズに作れたのでお薦めです。餃子より簡単に作れる気も。
ちなみに以下の様なレシピで作ってみました
キンキンに冷えたビールと酢醤油、辛子を添えて熱々のところをハフハフいいながら食べます
ちなみに作ったシュウマイはこちら。グリーンピースが無いですが、まぁ、それなりにシュウマイっぽい。楽しく作れて美味しく食べれたらそれでいいんです。
*1:あぁ、意外とシュウマイっぽくなるだなと思いました
あれこれ含めて8作品。
6月に読んだ本はどれもお薦めしたいと思える本ばかりだった。
特に 発酵文化人類学 微生物から見た社会のカタチ はお薦め。
最近のコメント