2018買ってすごく良かったもの
色々向き合うべきものが多く、1年ちょっとブログの更新が滞っていました。
2019年はもう少し更新して行きたいです。
まずはリハビリ程度に書きやすい題材で書いてみます。
LOWYAのテレビボード
引越しついでにテレビボードを買い換えたのですが、このLOWYAという家具屋さんがおしゃれかつ安くて とても気に入りました。
公式リンクの方が写真たくさんあるので載せます。
国産ローテレビ台 70V型対応 木製 半完成品 ヴィンテージ調 [幅178.6] [日祝配送不可] | 【公式】LOWYA(ロウヤ)|家具・インテリアのオンライン通販
個人的には、上段が空いているところにPS4を置きたい、下にお掃除ロボを収納したいという点を満たしつつ、 見た目もおしゃれな上、ケーブル収納などの日本製の家具特有の細かいこだわりがあり大満足の一品です。
Philips Hue スターターセット
Alexa 連携させたくて購入。
お値段がそこそこするので(これプラス照明も買い替えが必要だったり追加のランプ買ったりで)ので1or2年ほど悩みましたが、欲しい思いが変わらないので購入しました。
電球色や明るさの変更など、その時の気分に合わせて操作できる点はとても良いです。
「アレクサ、電気を電球色にして」、「アレクサ、電気を暗くして」などといった感じで利用。
ちなみに追加で購入した電球はiKea製のものを利用しています。それほど変わらないし、若干安いのでこちらも個人的には満足。
- 出版社/メーカー: フィリップスライティング(Philips Lighting)
- 発売日: 2017/01/13
- メディア: ホーム&キッチン
- この商品を含むブログを見る
おしゃれ照明
なんとなく安く売っていたシーリングライトを使い続けてい他のですが、Hue購入ついでに念願のおしゃれ照明デビュー。
お掃除ロボ
これも引越しついでに購入。
床にモノを置かない状態でしか利用できないので、必然的に床にモノを直置きすることが減りました。
たまにケーブル類に絡まったりしますが、そこら辺も含めて可愛らしくて良いです。
ルンバ使ったことないので比較しようがないですが、今の所これで満足。
ECOVACS DEEBOT N79 ロボット掃除機 カーペット掃除 静音&強力吸引 Wi-Fi接続 アプリ制御
- 出版社/メーカー: ECOVACS
- メディア:
- この商品を含むブログを見る
iPad Pro
Paypay祭りで購入。
絵はそんな書かないのでpro必要ないかもしれませんが、漫画を横向きでめくりながら見たりyoutube見たりするのに使っています。
購入時に触って見たFolio(キーボード&カバー)の出来が素晴らしいので、paypayの割引で購入しようか検討中。
apple pencilも使って見た所良さそうなので、こちらも検討中。
Apple iPad Pro (12.9インチ, Wi-Fi, 64GB) - スペースグレイ
- 出版社/メーカー: アップル
- 発売日: 2017/06/06
- メディア: Personal Computers
- この商品を含むブログを見る
Ruby throwの使いどころ
例外ではなく、制御構造の話。
- 作者: Peter J.Jones
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
項目27 スコープから飛び出したい時にはraiseではなくthrowを使おう
catchとthrowはgotoの安全バージョン。
StopIterationを使った例
begin @characters.each do |character| @colors.each do |color| if player.valid?(character, color) raise(StopIteration) end end end rescue StopIteration # ... end
catchを使うと
よりsimpleに書ける。throwの第二引数に値を渡せるのも良いね。これ知らなかったな。
match = catch(:jump) do @characters.each do |character| @colors.each do |color| if player.valid?(character, color) throw(:jump, [charcter, color]) end end end end
覚えておくべき事項
- 複雑な制御フローが必要な時には、raiseではなく、throwを使うようにしよう。throwを使うと、ボーナスとしてスタックの上にオブジェクトを送ることができる。catchの戻り値はそのオブジェクトだ。
- できる限り単純な制御構造を使おう。catchとthrowの組み合わせは、単純にreturnでスコープから抜け出すメソッドとそれに対する呼び出しで置き換えられることが多い。
Ruby リソースはブロックとensureで管理しよう
File::openの話にとどまらず、リソースを確保するというコードの抽象化の紹介。
(File::openについてはここでは省略)
- 作者: Peter J.Jones
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
項目24 リソースはブロックとensureで管理しよう
ensureを使ってリソースの解放を行う例
class Lock def self.acquire lock = new lock.exclusive_lock! yield(lock) ensure lock.unlo0ck if lock end end Lock.qcquire do |lock| # ここで例外が発生しても問題なし end
しかしこれだとblockがない場合が考慮されていない。
改良版
class Lock def self.acquire lock = new lock.exclusive_lock! if block_given? yield(lock) else lock # Lock::newのように動作する end ensure if block_given? lock.unlo0ck if lock end end end
本書の例だと、少しblock_given?
の所が見辛いですが、まぁ簡単に実装できます。
覚えておくべき事項
- 確保したリソースを解放するためにensure説を書こう。
- リソース管理を抽象化するために、クラスメソッドでblockとensureパターンを使おう。
- ensure節で変数を使うときには、その前に変数が初期化さレテいるかどうかを確かめよう。