扁桃腺を切って、1年経った

去年は扁桃炎で非常に悩んでて、扁桃切除手術を行った。

suthio.hatenablog.com suthio.hatenablog.com suthio.hatenablog.com

結論

すぐ腫れて熱出る人は切ったほうがいい。(と思う)


よかったこと

頑張れるようになった

切ってから1ヶ月経った1月から3月ぐらいまですごく忙しかったんだけど、 今までは疲れるとすぐ扁桃炎が発症して熱が出るので、そこまで頑張れない状況だったけど、 疲れても扁桃が腫れることがなくなったため、頑張れるようになった。 無事プロダクトリリースできたのも扁桃を切ったおかげと言っても過言ではない。

病院に行かなくなった

腫れそうになる度に頻繁に病院行ってたけど、切ってから腫れて病院に行くことはなくなった。 時間とお金の節約。

旅行などに行きやすくなった

今までは旅行中腫れたらどうしようとか悩んでて、実際旅行中に腫れるとめっちゃ困るんだけど 今は腫れることがないので、扁桃が腫れる心配無しで旅行に行ける

話のネタになる

「扁桃腺切った」と言うだけで話のネタになる。 初対面の人にも使える。扁桃が腫れやすい人だと仲良くなりやすい。


悪かったこと

違和感

切って2ヶ月ぐらいは違和感があった。 3ヶ月目以降は全然ない。

副作用

実際なかったと思っているけど、声が少しだけ変わった可能性がある。 自分自身は気にならない程度。


最後に

切るという決断をして本当によかったと思う。 今になってもコスパよかったなーって本当に思ってる。

2016年買ってよかったものまとめ

ネスプレッソ イニッシア

ネスプレッソ コーヒーメーカー イニッシア ルビーレッド C40RE

ネスプレッソ コーヒーメーカー イニッシア ルビーレッド C40RE

購入価格

Amazonで7579円で本体を購入。カプセルは1個80円前後。 本体を買うとサンプルコーヒーが16個(単純計算で1280円分)ついてるかつ、 キャンペーン 中でカプセル購入時に使える4000円分のクーポンがもらえた。 なので、実質約2300円(7549 - 1280 - 4000 = 2269)で購入。

Amazon.co.jp: 【メーカー主催】ネスプレッソ ウィンターキャンペーン

購入前思ったこと、購入に至った決め手

家でハンドドリップでコーヒーを淹れるのもめんどくさいし、コンビニなどに コーヒーを買いに行くのもめんどくさいので、家でコーヒー飲むために買おうと思ってたけど、 本体代も微妙に高いし、カプセル(1個80円前後)も安い訳ではないので悩んでたけど、 Amazon見たらキャンペーン中で4000円のクーポンがもらえること、 本体をメルカリで検索したら、買っても5000円以上で売れそうなので、使わなかったら、メルカリで 売ればいいかということで買った。

イニッシアで検索した商品一覧 -メルカリ

買った結果

買って本当によかったと思ってる。 自宅で気軽にコーヒーが飲めるようになった。 準備も楽だし、掃除の手間も全然かからない。しかもおいしい!

好きな味は最初についてる16個のカプセルから選んだり、ネスプレッソの店舗に行けば飲ませてもらえるので、 行って飲んでみればいいと思う。

Apple Watch

買ってよかった。 これについては別記事で書いた通り。

suthio.hatenablog.com

温湿度計

ドリテック(dretec) デジタル温湿度計 「オプシス」 ホワイト O-230WT

ドリテック(dretec) デジタル温湿度計 「オプシス」 ホワイト O-230WT

家にエアコンや加湿器はあるけど、エアコンが示している温度や 加湿器に表示されてる湿度を信用していいのかどうか悩んでたけど、 温湿度計を基準に暖房つけたり、加湿器入れたりするようになった。

※加湿器自体の場所が湿度を出してる場所なのにその場所で部屋の湿度を判断していいか不安だった

バイルバッテリー

外出た時にiPhoneの充電をあまり気にしなくなった。 このサイズで4回充電できるのがすごく良い

USB急速充電器

一つのコンセントで2つUSB充電できるようになった。 これ一つでiPhoneとモバイルバッテリーの両方充電できる

ブックスタンド

actto BST-02 ブックスタンド(OEM品番:EDH-004)

actto BST-02 ブックスタンド(OEM品番:EDH-004)

本置いたり、不安定だけどMacを置いたりしてる。

買いたい物

ヨーグルティアを買いたいと思う。 使うかどうかわからなくて悩んでいる。 来年もいいものを見つけていきたい

Apple Watch Series2を2ヶ月使ってみて

42mmのステンレスモデルを買った。

f:id:suthio:20161231163045p:plain

良いところ

ApplePayがとにかく便利

お財布無しで外に出れる。 財布を出すとかスマホを出すとかのアクション無しで 手首をかざすだけなので、体験として非常に良い。

iPhoneでいいじゃんとか言われるけど、この楽さは実際に体験してみないとわからないと思う。

次のスケジュールが簡単に見れる。

スケジュール管理にGoogleカレンダーを使ってていて、前までは iPhoneもしくはMacから見てたけど、次の予定が何時からどこであるというのがApple Watch見ればすぐに わかるので、MTG多い人は便利だと思う。

通知が受けれる

メッセージの一部が見えるので、Slackでメンション飛ばされた時にすぐ返すべきかあとでいいかの判断ができる。

タイマー便利。

iPhoneのタイマーだと音が出るけど、Apple Watchのタイマーは振えるだけなので、 周りを気にしなくて良いのが非常に楽。 仮眠する時によく使ってる。

iPhoneを呼び出せる

iPhoneを呼び出すボタンを押すとiPhoneから音が出るので、iPhoneの場所がわかるので、 便利。

f:id:suthio:20161231163016p:plain

良くないところ

時計なのに充電が長く持たない

大体、2.5日ぐらいしか持たないので、2日に1回充電してる。

電池が切れてるとApplePayが使えない

一度体験した。改札前で電池が切れたので、切符を買いました。 改札入った後に電池が切れてるとめんどくさそう。

Apple Watch関連商品でオススメ

Apple Watch充電ケーブル収納ケース

充電ケーブルを旅行等で持ち歩くにオススメ。 ApplePay使えなくなると困るので、常に充電ケーブルを持ち歩いてる。

Apple Watch充電スタンド

充電ケーブルだけで充電してると不安定でたまに充電できてない時があったので、買った。 充電できてないことがなくなったのと、Apple Watchが充電する場所が固定化されるので、オススメ。

RubyでHTTPリクエストを並列化する

この記事は、「Speee Advent Calendar 2016」の13日目です。 12日目は、_miyachikより、「HAProxyを使用した汎用的ABテスト基盤への挑戦」です。

RubyでHTTPリクエストを並列化したくないですか?

例えば、リクエストしてからレスポンスが返るまで、1リクエストにつき100msかかるとします。 それを順次実行で10回行うと1000msかかってしまいます。 その10回はほとんどCPUを使用してないのにもかかわらず、ロックされてしまうので、他からリソースが使われない限り、リソースが非常に無駄になりがちです。

上記ケースにて、HTTPリクエストを並列化すると、10回リクエストしても100msで全ての通信が完了します。

どんな時に並列化したくなる?

今回はクローラーで並列化したい前提とします。 例えば、クローラーを使って、ページ内のaタグのURLを全て取得したいとします。

直列での実行

require 'open-uri'
10.times.map do |num|
  open("http://example.com/articles/#{num}") do |file| # アクセスに100msかかる想定
    urls = Nokogiri::HTML.parse(html).xpath('//a/@href').map(&:value)
  end
end

上記のようなコードだと100msかかるページに10回アクセスするので、HTTPリクエスト時間だけで1000msは確実にかかってしまいます。

並列での実行

並列化する方法として様々な方法がありますが、 今回はTyphoeusというGemを使って、HTTPリクエストの並列化を実現しようと思います。

require 'typhoeus'
hydra = Typhoeus::Hydra.new
requests = 10.times.map do |num|
  request = Typhoeus::Request.new("http://example.com/articles/#{num}")
  hydra.queue request
  request
end
hydra.run
urls = requests.map { |request|
    urls = Nokogiri::HTML.parse(request.response.body).xpath('//a/@href').map(&:value)
}

Typhoeus を使うと上記のようなコードを書くだけで、HTTPリクエストの並列化が実現できます。

Typhoeus

あまり、Typhoeus についての記事がないので、 使い方について説明します。

※ほとんどはGitHubのREADMEを読めば理解できると思われる

基本的な考え方としてはTyphoeus::HydraオブジェクトにTyphoeus::Requestを突っ込む感じです。

簡単な使い方

単一のリクスエストもこのように実行することが可能です。

Typhoeus.get("www.example.com", followlocation: true)

並列化された実行もこのように実行できます。

hydra = Typhoeus::Hydra.new
10.times.map{ hydra.queue(Typhoeus::Request.new("www.example.com", followlocation: true)) }
hydra.run # runが実行された時点でURLに対してアクセスする

Requestの結果Responseを扱いたい場合

Request後の動作を定義することも可能です。 Request完了時の動作については以下のように定義します。

hydra = Typhoeus::Hydra.hydra
request = Typhoeus::Request.new("www.example.com", followlocation: true)
request.on_complete do |response|
  if response.success?
    # 成功した場合の処理
  elsif response.timed_out?
    # タイムアウトした時の処理
    log("got a time out")
  elsif response.code == 0
    # なにかしらの問題があり、HTTP Requestの結果を取得できなかった場合の処理
    log(response.return_message)
  else
    # その他の処理
    log("HTTP request failed: " + response.code.to_s)
  end
end
hydra.queue(request)
hydra.run

# 結果を後で参照することも可能
puts request.response.body
responseの値の参照方法
response = request.response
response.code
response.total_time
response.headers
response.body
最大並列数の設定
  • 並列数を設定することが可能
Typhoeus::Hydra.new(max_concurrency: 20)

※デフォルトは200

  • get以外でのアクセスも可能
Typhoeus.get("www.example.com")
Typhoeus.head("www.example.com")
Typhoeus.put("www.example.com/posts/1", body: "whoo, a body")
Typhoeus.patch("www.example.com/posts/1", body: "a new body")
Typhoeus.post("www.example.com/posts", body: { title: "test post", content: "this is my test"})
Typhoeus.delete("www.example.com/posts/1")
Typhoeus.options("www.example.com")

その他の並列化の方法

自分でスレッドを生成したり、ParallelなどのGemを使って、 複数スレッド、複数プロセスを立ち上げる方法がありますが、どちらにしても通信にしか使わないのにも関わらず、 スレッドやプロセスを立ち上げるのは非常にコストが高いです。 ※100並列をプロセスで実現しようとするとRubyプロセスが100個必要のため、Rubyプロセス100個分のメモリが必要

最後に

ドキュメントは以下のページにまとまっているので、大体見ればわかるものになってると思います。 Documentation for typhoeus/typhoeus (master)

また、今回の方法だと複数プロセスで実行できるわけではないので、CPUが複数個ある場合かつ CPUを使いたい場合はプロセスを立ち上げるなどの工夫が必要だと思います。

明日はkana_nakanoから「エンジニア採用を6ヶ月間やってみて(仮)」です お楽しみにー

決断することの重要性について

A案とB案があって、どっちがいいみたいな話になった時に ズルズルとなにも決まらずに話し続けているみたいなことを見ることが多い気がしている。 そんな時、「A案にするぞ!ついてこい!」っていう感じにしてみると案外うまくいくことが良い気がしている。

そういった時の決められない人の心情って自分は責任は取りたくない or 責任を取れる立場じゃないと思っているとかで 強く言えなかったりして、結局は責任を取ってくれる人を求めているんじゃないかなーって思う。 もしくは自分の意見がありながらもなにも言わない人にっていうのは本当はA案が悪いってわかってて、 B案が正しいって思っているのであれば、「A案にするぞ!ついてこい!」って言った時に「ちょっと待った、B案がいい」って 言ってくれるので、それはそれでB案を強く言ってくれる人になったりするので、そうなれば、B案を推した人が責任を 取らざるおえない状況となり、その場合も前に進んでうまくいったりする。

なので、今回の状況になった時に大事なのは最適な選択肢が選ぶことではなく、できるだけ進めるために動くことかなって思ったりしている。 ※時と場合によるが。

食とは

食について語るのにあたって、俺にとって食とはなにかを話さないわけにはいかない。 そしてこれはポエム以外のなにものでもない。
この記事を見始めた人が得られるものがあるか期待するかもしれないけど、 一切ないので、それを認識した上で見て欲しい。

俺にとって食とは生きることであり、そして楽しむことでもある。 調理師の親を持つ自分にとって、食とは楽しむのが当たり前のものだった。

食とは当たり前の存在だった。 高校生の頃は普通にラーメン屋巡りもしたし、マックとかも行ったりした。 だけど食というものが当たり前ではなくなり、特別なものとなる存在がきた

運命の出会い

当時の職場の上司に横浜市の関内にあるシシリヤというお店を紹介され、 ふと行ってみることにした。
気の知れた友人と共に店舗に行き、普通に入り、上司にオススメされたマルゲリータ×サルシッチャ(マルゲリータにハーブの入ったソーセージを載せたもの)の注文。
話をしながら待ってみる。
ピザが焼き上がり、手前に来たので、匂いを嗅いでみるとすごく香ばしい匂いがする。
おいしそうなので、すぐに口に入れた。 すると、口に入れた瞬間、小麦の甘みが口の中に広がり、その後チーズの旨味が広がっていく。
その後トマトソースの香りが抜けていって、くどさが残らない旨さが広がる。
食べた瞬間、「なんだこのバランスは!?」と思った。
この瞬間、「この世にはこんなおいしいものがあるのか!!!」と思った。
この時から色々なお店に行き始め、20代のうちに紹介できるお店を10店舗見つけるという
目標を持つことになった。
気分が乗れば、見つけたおいしいお店とかを紹介しようと思う。

スポーツジムに3ヶ月3000円で入会した

経緯

半年ぶりぐらいに体重測ったら5キロぐらい増えてるかつ、過去最高の体重を記録していたので、夏前に減らそうと思い、 スポーツジムに通うことにしました。

ただ、ジムって高いよなーって思いながらどこか安いとこないかと思い、なんとなくグルーポン見てたら ありました!!!

グルーポン使って、3000円で入会しました。 JOYFIT3ヶ月3980円というのもがあったのと、グルーポンの1000円引きクーポン使ったので2980円でした。 入会するときに半年以上の契約じゃないといけないんじゃないかと心配でしたが、 問題なく入会できました。 これから通っていこうと思います。