通院, 待ち時間に本
付き添いで通院。やはり気温や気圧の高低で調子を崩している人が多いみたいだった。 こういった周りの気候だったり環境が変わったときに自分は大丈夫だと思わずにきちんと調整しないとなと、つい先日喉を潰した人間として…。
もっぱら移動中だったり待合室で本を読む。Airbnbに関する本を読んでいるのだけれども面白い。
Airbnb Story 大胆なアイデアを生み、困難を乗り越え、超人気サービスをつくる方法
- 作者: リー・ギャラガー,関美和
- 出版社/メーカー: 日経BP社
- 発売日: 2017/05/25
- メディア: 単行本
- この商品を含むブログ (1件) を見る
2017年7月に読んだ本を振り返る
ぬかよろこび は水曜どうでしょうでおなじみ嬉野さんのエッセイ2作目。読んでいてほっとする文章。自分もこういった言葉の表現ができる様になりたいと思う。あと15年くらいの間に。いや、もうちょっと早い時期に。
公園対談 クリエイティブな仕事はどこにある? からは抜粋。
世の中にはクリエイティブな仕事とクリエイティブでない仕事があるわけではない。どんな職業であれ、その職業にクリエイティブに向き合う人間と、クリエイティブに向き合わない人間がいるだけだ。そこを間違ってはいけない。 (p.96〜)
まさにその通りだと思う。 「おもしろき こともなき世を おもしろく すみなすものは心なりけり」。物事は捉え方次第。
「半径5メートル最適化」仕事術 おしゃべりな職場は生産性が高いは生産性 x 雑談にフォーカスした一冊。雑談は個人的にもとても重視しているキーワードなので興味あって読んでみたが、日本・米国・イタリアでの体験談等を混ぜつつの雑談で生じるメリットが紹介されていてどちらかというと同意する点が多い一冊だった。
面談, LDRサービス提供終了
業務時間の大半を本日は面談に使う。大体自分は月1回一人30分ずつくらい頂いているのだけれども、時間を頂いた分、きちんとフィードバックできているとよいのだけれどもと毎回自問自答しながら面談させていただいてる。
単にルーチン的にこなすのではなくて、よい雑談をしながらその中で課題を見つけたり目標を設定しながら進められる様にと意識してる。
帰り際、一人ふらりと居酒屋さんのカウンターでお酒を飲んでいたら、タイムラインのこんなニュースが。
【重要】Live Dwango Reader/LDR Pocketサービス終了のお知らせ|LDR / LDRポケット 開発日誌
Live Dwango Readerがサービス終了とのことで残念。現LINEから譲渡されるときに一度引っ越しを考えたのだけれども、dwangoに譲渡されて継続されることを契機に結局使い続けていたのだけれども継続されず残念*1。
*1:こればっかりは仕方ない….
この週末読んだ本
400のプロジェクトを同時に進める 佐藤オオキのスピード仕事術 (幻冬舎単行本)
- 作者: 佐藤オオキ
- 出版社/メーカー: 幻冬舎
- 発売日: 2016/02/09
- メディア: Kindle版
- この商品を含むブログを見る
少し前に話題になった本。読めていなかったので今更ながら読んでみた。 自分は中でも特に「PART.3 ビジネスを加速する投資&チームづくり」の章が興味深かった。 魅力を伝えるための投資、スピードの体感をさせること、人を巻き込むために自分が楽しむ etc… ことといった内容は多少耳が痛いところもありつつも同意するところが多々あった。
「私らしく」働くこと ?自分らしく生きる「仕事のカタチ」のつくり方?
- 作者: 一田憲子,.
- 出版社/メーカー: マイナビ
- 発売日: 2015/07/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
素敵な働き方をされている方がたくさん紹介されていた。 と同時に、多分ここで紹介されているのと負けないくらい素敵な人がたくさん自分の周りでは働かれているので、そういった人たちと一緒に働けていることを嬉しく思うと同時にもっと働きやすくできる様にしていきたいなと思った。最近ぼんやり自分が思い悩んでいたことがふとした方向から解決された気がして読んでよかった。
- 出版社/メーカー: エイ出版社
- 発売日: 2017/04/27
- メディア: 単行本
- この商品を含むブログを見る
分類が細かくて凄い。 あと、最近マイブームの発酵関連で味噌、醤油の重要性について改めて認識。
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.
雑にまとめたのが下の図。
特徴としては、サービスを一箇所に登録するのではなく離散ハッシュテーブルで管理されるクラスタに登録できるところで、そこにサービスを登録することでそのサービスの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に登録されているのでこれを利用していく。
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ではこれを実際にサービスに投入しているとのことなので面白い仕掛けだなと思った。