通院, 待ち時間に本

付き添いで通院。やはり気温や気圧の高低で調子を崩している人が多いみたいだった。 こういった周りの気候だったり環境が変わったときに自分は大丈夫だと思わずにきちんと調整しないとなと、つい先日喉を潰した人間として…。

もっぱら移動中だったり待合室で本を読む。Airbnbに関する本を読んでいるのだけれども面白い。

2017年7月に読んだ本を振り返る

ぬかよろこび水曜どうでしょうでおなじみ嬉野さんのエッセイ2作目。読んでいてほっとする文章。自分もこういった言葉の表現ができる様になりたいと思う。あと15年くらいの間に。いや、もうちょっと早い時期に。

公園対談 クリエイティブな仕事はどこにある? からは抜粋。

世の中にはクリエイティブな仕事とクリエイティブでない仕事があるわけではない。どんな職業であれ、その職業にクリエイティブに向き合う人間と、クリエイティブに向き合わない人間がいるだけだ。そこを間違ってはいけない。 (p.96〜)

まさにその通りだと思う。 「おもしろき こともなき世を おもしろく すみなすものは心なりけり」。物事は捉え方次第。

「半径5メートル最適化」仕事術 おしゃべりな職場は生産性が高いは生産性 x 雑談にフォーカスした一冊。雑談は個人的にもとても重視しているキーワードなので興味あって読んでみたが、日本・米国・イタリアでの体験談等を混ぜつつの雑談で生じるメリットが紹介されていてどちらかというと同意する点が多い一冊だった。


hideackの本棚 - 2017年07月 (11作品)
ぬかよろこび
ぬかよろこび
嬉野雅道
読了日:07月01日

FOOD DICTIONARY ラーメン
FOOD DICTIONARY ラーメン
-
読了日:07月23日

powered by Booklog

声が出なくなる

なんか喉の調子が悪いなと思っていたら見事に喉が崩壊した。

2,3年前くらいから、

寝付きが悪くなる → 疲れがとれなくなる → 喉が腫れる

というコンボを繰り返しているのでいい加減セーブできる様になりたい…。 耳鼻咽喉科の先生によると男性で30代を超えると同様の症状になりやすいという傾向があるということだったので余計にケアしないと駄目なのだろうな。イブプロフェン、トラネキサム酸系のお薬を飲んで可能な限り声を出さない様にして一日を過ごす。

面談, LDRサービス提供終了

業務時間の大半を本日は面談に使う。大体自分は月1回一人30分ずつくらい頂いているのだけれども、時間を頂いた分、きちんとフィードバックできているとよいのだけれどもと毎回自問自答しながら面談させていただいてる。

単にルーチン的にこなすのではなくて、よい雑談をしながらその中で課題を見つけたり目標を設定しながら進められる様にと意識してる。

帰り際、一人ふらりと居酒屋さんのカウンターでお酒を飲んでいたら、タイムラインのこんなニュースが。

【重要】Live Dwango Reader/LDR Pocketサービス終了のお知らせ|LDR / LDRポケット 開発日誌

Live Dwango Readerがサービス終了とのことで残念。現LINEから譲渡されるときに一度引っ越しを考えたのだけれども、dwangoに譲渡されて継続されることを契機に結局使い続けていたのだけれども継続されず残念*1

*1:こればっかりは仕方ない….

この週末読んだ本

少し前に話題になった本。読めていなかったので今更ながら読んでみた。 自分は中でも特に「PART.3 ビジネスを加速する投資&チームづくり」の章が興味深かった。 魅力を伝えるための投資、スピードの体感をさせること、人を巻き込むために自分が楽しむ etc… ことといった内容は多少耳が痛いところもありつつも同意するところが多々あった。

「私らしく」働くこと ?自分らしく生きる「仕事のカタチ」のつくり方?

「私らしく」働くこと ?自分らしく生きる「仕事のカタチ」のつくり方?

素敵な働き方をされている方がたくさん紹介されていた。 と同時に、多分ここで紹介されているのと負けないくらい素敵な人がたくさん自分の周りでは働かれているので、そういった人たちと一緒に働けていることを嬉しく思うと同時にもっと働きやすくできる様にしていきたいなと思った。最近ぼんやり自分が思い悩んでいたことがふとした方向から解決された気がして読んでよかった。

FOOD DICTIONARY ラーメン

FOOD DICTIONARY ラーメン

分類が細かくて凄い。 あと、最近マイブームの発酵関連で味噌、醤油の重要性について改めて認識。

公園を散歩

近所の公園へ。 高温注意情報も出ていたので定期的に水分を取りながら移動して公園の中をふらふらしていた。

スポーツカイトを飛ばしている人たちがいて、遥か高い青い空に飛ぶ凧が鮮やかだった。

f:id:hideack:20170723223123j:plain

Grenacheを利用してマイクロサービスを管理&呼び出ししてみる

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.

(ref: https://github.com/bitfinexcom/grenache )

github.com

雑にまとめたのが下の図。

特徴としては、サービスを一箇所に登録するのではなく離散ハッシュテーブルで管理されるクラスタに登録できるところで、そこにサービスを登録することでそのサービスのIP等の接続情報が管理されていくところにある。

f:id:hideack:20170701181107p:plain

まずは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を構成する際に通信するためのポート番号、aphAPIのポート番号になる。 bnは立ち上げ時に参照するGRAPEを指定する。

これでクラスタは構成されたので次は実際にWorker(=サービス)を登録していく。サンプルではフィボナッチ数列の和だったけど、ここでは階乗を求めるサービスにしてみる。

GRAPEクラスタへWorkerを登録したり、登録したWorkerを呼び出すClientを作成するためのライブラリもnpmに登録されているのでこれを利用していく。

GitHub - bitfinexcom/grenache-nodejs-ws: Grenache Node.JS WebSocket implementation

まずは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ではこれを実際にサービスに投入しているとのことなので面白い仕掛けだなと思った。

参照