Anova Precision Cookerを買ってみた

公式ストアから念願のAnova Precision Cookerを買ってしまいました。120V-US Plugを無理やり100Vの日本で使ってます。US-Plugの変換プラグが必要ですが、アースの有無しか日本のPlugと変わらないのでうまいことなんとかしました。

 

anovaculinary.com

 こうゆう感じの箱でHong Kongから輸送されてきます。

f:id:HhDb:20170320174028j:plain

とりあえず東急スーパーの2400円の"高い肉"を料理しました。

こうゆう感じです。

f:id:HhDb:20170320174450j:plain

レシピは下のサイトを参考にしました。

http://www.douglasbaldwin.com/sous-vide.html#Roast_Beef

A Practical Guide to Sous Vide Cooking

 

 簡単にいうと今回は131°F24時間やって最後に表面をバーナーで(フライパンでも変わらない)焼く感じです。

f:id:HhDb:20170320175103j:plain

で完成品がこんな感じで、"まじで"うまいです。

f:id:HhDb:20170320174453j:plain

 

で、現在業務スーパーの800円の安い肉に挑戦してますがうまくいかないです。安い肉は高い肉よりコラーゲンが多く硬く、コラーゲンの酵素反応は遅く2日ほど定温調理するのがよいですがそうすると柔らかいですが食感はキモくなります。ので多分結局硬いのは我慢して一日定温調理するのがよい。結局高い肉には勝てない。

f:id:HhDb:20170320175845j:plain

 

PythonでBitcoin監視してみる

シュー・イガシさんがGoogle Apps Scriptを使ったBitcoin spread alertの作り方を解説してるので、それをパクリ参考にさせていただいてPythonで書いてみました。具体的にはAPIを使って国内の取引所の取引価格を60秒ごとに取得して価格差が1500円以上でとLineにalertを送るようにしてます。この際BTCBOXは出来高が小さすぎるので無視しました。

import json
import requests
import urllib.parse
import time

class Get_market:
   def __init__(self):
    
        URL={'bitFlyer':'https://api.bitflyer.jp/v1/getticker?product_code=BTC_JPY',
            'Quoine':'https://api.quoine.com/products/5',
            'Zaif':'https://api.zaif.jp/api/1/ticker/btc_jpy',
            'Coincheck':'https://coincheck.com/api/ticker'}
        
        bf={'name':'bitFlyer',
            'price':requests.get(URL['bitFlyer']).json()['ltp'],
            'volume':requests.get(URL['bitFlyer']).json()['volume_by_product']}
    
        qn={'name':'Quoine',
            'price':requests.get(URL['Quoine']).json()['last_traded_price'],
            'volume':requests.get(URL['Quoine']).json()['volume_24h']}
    
        zf={'name':'Zaif',
            'price':requests.get(URL['Zaif']).json()['last'],
            'volume':requests.get(URL['Zaif']).json()['volume']}
    
        cc={'name':'Coincheck',
            'price':requests.get(URL['Coincheck']).json()['last'],
            'volume':requests.get(URL['Coincheck']).json()['volume']}   
        
        market = [bf, qn, zf, cc]
    
        while 1:
            flg=0
            for i in range(len(market)-1):
            #print numbers[(i+1)]
                num1 = market[i]['price']
                num2 = market[(i + 1)]['price']
                if num1 > num2:
                    market[i],market[(i+1)]= market[(i+1)],market[(i)]           
                    flg = flg + 1
            if flg == 0:
                break
            
        self.data=market
    
        self.max_spread = market[3]["price"]-market[0]["price"]
        
        self.alert = '\n'+\
        market[3]["name"]+':'+str(market[3]["price"])+':'+str(market[3]["volume"])+'\n'+\
        market[2]["name"]+':'+str(market[2]["price"])+':'+str(market[2]["volume"])+'\n'+\
        market[1]["name"]+':'+str(market[1]["price"])+':'+str(market[1]["volume"])+'\n'+\
        market[0]["name"]+':'+str(market[0]["price"])+':'+str(market[0]["volume"])+'\n'+\
        'max_spread'+':'+str(self.max_spread)

while True:
    market=Get_market()
    time.sleep(60)
    if market.max_spread>1500:        
        LINE_ACCESS_TOKEN="YOUR_LINE_ACCESS_TOKEN"#あなたのtokenを入れて下さい
        url = "https://notify-api.line.me/api/notify"
        message =market.alert
        msg = urllib.parse.urlencode({"message":message})
        LINE_HEADERS = {'Content-Type':'application/x-www-form-urlencoded',"Authorization":"Bearer "+LINE_ACCESS_TOKEN}
        session = requests.Session()
        a=session.post(url, headers=LINE_HEADERS, data=msg)

シュー・イガシさんにソートの仕方を教えていただきました

のでソート部分を書き直すと

market=sorted(market,key=lambda x:x['price'],reverse=False)

こうなります(lambda式ってなんかなれないよね)