アメグラ2号のブログ

1980年代後半の古き良きビデオゲームのほか、オッサンの個人的備忘録

テリヤキソース

テリヤキソースのレシピ

煮詰めると良いらしい。

あと片栗粉が必要だったみたい。

で、やってみた。

 

f:id:game-allergy:20210422191610j:image

マジか。

水溶き片栗粉ってこんなんなるのか。

屋台の水飴じゃんΣ(゚д゚lll)

 

仕方ないので、マヨネーズ混ぜてパンにペーストとして塗ってみた。

f:id:game-allergy:20210422195651j:image

意外と美味い。

味としては抜群。

見栄えは最悪。

 

次は片栗粉の混ぜ方に注意しよう。

 

python 並列処理とevent,wait

f:id:game-allergy:20210331143049p:plain

並列処理を作った時にeventとwaitのこともちょっと確認した。

eventとwaitを使えば、自分の好きなところで処理を待機させ、好きなタイミングで実行処理に入ることができる。これは便利だ。

最初は理解不能…かと思ったけど、1つずつ処理を見ていったらそうでもなかった。

基本的な流れが分かるようにここに整理しておこう。

スクリプト

# ===================================
# 【備考】:2つのタスクを並列処理
# 【備考】:eventによる待機処理
# ===================================
from threading import (Event, Thread)
import time

#----------------------------
# 1 eventのインスタンス
event1 = Event()
event2 = Event()

#----------------------------
def func1():
    # 4-2 スレッドにより実行
    print("func1-1 executed")

    # 4-3 待機(イベント発生まで)
    # 5-2 実行(イベント発生後に)
    event1.wait()
    print("func1-2 executed")

def func2():
    # 4-2 スレッドにより実行
    print("func2-1 executed")

    # 4-3 待機(イベント発生まで)
    # 7-2 実行(イベント発生後に)
    event2.wait()
    print("func2-2 executed")

#----------------------------
# 2 スレッドに関数をセット
print("thread1,2 set")
thread1 = Thread(target=func1)
thread2 = Thread(target=func2)

# 3 スレッドを開始
print("thread1,2 start")
thread1.start()
thread2.start()

# 4 ちょっと待機
print("sleep 3sec")
time.sleep(3)

# 5 イベントを発生させる
print("event1set")
event1.set()

# 6 ちょっと待機
print("sleep 3sec")
time.sleep(3)

# 7 イベントを発生させる
print("event2set")
event2.set()

# 8 終了待ち合わせする
thread1.join()
thread2.join()
print("ALL process end")
#----------------------------
input()


最後の8の待ち合わせのjoinだけど、これを入れないとprint("ALL process end")の処理が先に始まってしまい、func2処理がその次になる…という変な順番になる。改めて待ち合わせ処理のjoinは大事だな~と思う。


◆ラズパイの並列処理はこちら

game-allergy.hatenablog.com

ひき肉とタマネギ テリヤキ風炒め?

味に新鮮さを求めてググったらテリヤキソースのレシピが出てきた。

しょうゆ、料理酒、みりんを各おおさじ1

砂糖を小さじ1.5くらい。

 

おお美味そう。

しかもこれならオレにもできそう。

 

しかし鶏肉はうちはあまり使わないので。。

とりあえず、ひき肉の料理の味付けに使ってみる。

 

 

・弱火でタマネギを炒める

・一旦タマネギを取り出す

・ひき肉を炒め、酒蒸し

・脂分を捨てる

・タマネギ、ひき肉を弱火で炒める

・テリヤキソースを入れる

 

 

できた。

f:id:game-allergy:20210422124508j:image

 

f:id:game-allergy:20210422124515j:image

が…テリヤキ?というより、牛丼みたいな感じになった…どこで間違った?

 

まぁ美味しかったから良いんだけど…

うーん、納得いかんな。

また今度作ってみよう。

ラズパイ LED点滅しながら撮影

f:id:game-allergy:20210422123309j:plain

ラズパイで定時撮影をしようと思ったが、夜間は何かしら照明をつけて撮影したい。真っ暗では撮影ができないし、当たり前か。

それならLEDを点灯させながら撮影したらええやん。

ってことでやってみようとしたら、あ~~~これ、並列処理なのか。。。。


スクリプト(撮影、LED点滅)

#! /usr/bin/env python3
# ===================================
# 【機能】:撮影
# 【機能】:LED点滅
# 【備考】:撮影、LED点滅の並列制御
# ===================================

import RPi.GPIO as GPIO
import time,datetime
import sys
import threading
import picamera

# ===================================
# 関数
# ===================================

# LED on/off
def ledonoff():
  print("Start led on/off")
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(4,GPIO.OUT)

  while flag:
    try:
      GPIO.output(4,GPIO.HIGH)
      time.sleep(1)

      GPIO.output(4,GPIO.LOW)
      time.sleep(1)

    except KeyboardInterrupt:
      GPIO.output(4,GPIO.LOW)
      GPIO.cleanup()
      sys.exit()

# LED off and clearup
def ledoff():
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(4,GPIO.OUT)
  GPIO.output(4,GPIO.LOW)
  time.sleep(1)
  GPIO.cleanup()
  sys.exit()

  print("Led off, done")

# Take a photo
def TakePhoto():
  time.sleep(2)
  now1 = datetime.datetime.now()
  now2 = now1.strftime('%Y%m%d_%H%M_%S')
  now3 = '/var/www/html/weather/fig/' + now2 + '.jpg'
  with picamera.PiCamera() as camera:
    camera.resolution = (640, 480)
    camera.start_preview()
    time.sleep(2)
    camera.capture(now3)
    time.sleep(5)

    print("Take a photo, done")

# ===================================
# 実行
# ===================================
# Create instance
thread1 = threading.Thread(target=ledonoff)
thread2 = threading.Thread(target=TakePhoto)

# start both of processes
flag=True
thread1.start()
thread2.start()

# Meeting up both of processes
# thread2[End thread]
# Taking photo is over,then flag's changed
thread2.join()
flag=False

# thread1[End thread]
# LED on/off is over
thread1.join()

# process for Led off
ledoff()

print("--------------------")
print("end of line")

最初は並列処理の意味が分からず、単にLEDをONにしてカメラ撮影をし、最後にLEDをOFFにする逐次処理をした。それはそれでできるんだけど、これでは制御とは言えないよな。

ということでググったら複数タスクを同時に処理=並列処理というものがあると。。。

処理したいタスクは「撮影」「LED点滅」の2つ。撮影が終わったらLED点滅も終了させる。これだけ。

これだけなのに、、、LED点滅処理がwhileループで終わってくれない…これでけっこうハマった。LED点滅自体をループにしないで回数制限を設けて終了させれば良いんだろうけど、、、これだとなんかやりたいことから逃げたような気がするし、、、逃げちゃダメだ、戦えオレ。

で、ほかの方のを参考にすると、ループの抜け方に「True」フラグを使っている点。
あー、なるほど、撮影処理が終了したらフラグをfalseにしてあげればLEDのループが終了し、スレッドが無事に終了になってくれるのか。素晴らしい~。


ということで今回はthreadingを使って2つのタスクを同時処理を進める方法を確認できた。次はカラーLEDを点灯して撮影してみようかな。

アゲハチョウ 幼虫

アゲハチョウの幼虫が順調に育っている。

というか、そろそろやばい。

とにかくよく食べる。

f:id:game-allergy:20210422091550j:image

最終齢の2匹がすごい食欲。

 

f:id:game-allergy:20210422091557j:image

f:id:game-allergy:20210422091603j:image

第二陣のチビ達…というかもうチビじゃないし。第二陣は10匹くらいいるんだけど、こいつらが一斉に最終齢になったら…

ヤバいな。

軽くヤバいな…。

飼育箱をさがさないといかんな。

 

↓あ、皮脱いだ。

f:id:game-allergy:20210422120604j:image

f:id:game-allergy:20210422120612j:image

いよいよ、最終齢が3匹!

 

アゲハチョウ3号 旅立ち

自宅で飼育していたアゲハチョウが旅立った。2月23日に羽化したので約2ヶ月も生きたことになる。すごいね、小さな身体でこんなに長生きするなんて。

 

f:id:game-allergy:20210421210915j:image

 

f:id:game-allergy:20210421210925j:image

 

f:id:game-allergy:20210421210933j:image

この3号は、去年の秋にサナギになり越冬。

2月ごろに突然色が変わり始めて羽化した。

実は越冬したサナギは5匹くらいいた。しかしこの羽化した子以外は全てヤドリバエに寄生されて死んでしまった。越冬してもヤドリバエの脅威からは逃れることができないのか…と半ば諦めムードの中にこの子が羽化したのはとても嬉しかった。残念なのは羽化不全で羽根が伸びなかったことだ。4〜5ヶ月頑張ってやっと羽化できても羽根に障害ができてしまうなんて。

 

と、悔やんでも仕方ない。

ということで、自宅で保護することになった。

 

この子は、ハチミツ水、ポカリを好んで飲んだ。その日によって飲みたいものが変わるんだね、人間みたいだ。しかも飲みたい時は前足をパタパタとして催促をする。チョウチョっていろんな仕草でアピールするんだね。

 

暖かい日中はよくカーテン越しに飛んでいた。といっても自由に飛べないのでもっぱらカゴの中だったけど、本能なのか外に向かってしきりに飛ぼうとしていた。

 

羽化して1ヶ月くらいすると脚が弱くなり、モノに捕まることができなくなった。

外の成虫の寿命が2週間くらいというのは、このように弱って動けない時にアリや他の外敵にやられてしまうのだろうね…。

 

そして、それからしばらくすると自分で歩くことが難しくなり、常に介護が必要な高齢者のような状況に。これはそろそろダメかな…なんて思っていたが、日中やご飯が欲しいときは羽根をパタパタするなど、旅立ちの寸前まで元気だった。

 

最後は外で捕まえたイケメン?とツーショット。

f:id:game-allergy:20210421210943j:image

楽しいデート出来たかな?

またどこかで会おう、アゲハちゃん。