Object.create(null)

TypeError: Cannot convert object to primitive value

特に工夫もない紫蘇ジュース

実家にいた頃祖母が作ってくれた紫蘇ジュースが飲みたいと思いつつ就寝, 翌日スーパーに行ったら実家付近で採れた紫蘇が大量に売られており, 運命を感じて即購入. というわけで特に工夫もない紫蘇ジュースを作った話をします.

以下, 紫蘇の鮮やかさをお伝えするため, 写真に一貫して謎のフィルタを適用しています. 代償として金属が妙に CG めいた感じになりましたがご了承下さい.


材料を揃えましょう.

  • 赤紫蘇 (てきとう) f:id:susisu:20180609220947j:plain これくらい. 祖母も分量を量っていなかったし, 特に味にムラがあったとかそういう思い出はないのでたぶん本当に適当で良いはず. 予め洗って水を切っておく.
  • 砂糖 (200 g くらい)
  • レモン汁 (50 ml くらい)
  • 水 (1 リットル弱, これは手持ちの鍋のサイズによる上限)

お湯を沸かす.

f:id:susisu:20180609221341j:plain

沸いた. このくだり本当に必要ですか?

f:id:susisu:20180609221437j:plain

紫蘇を投入.

f:id:susisu:20180609221529j:plain

赤紫蘇は色素が抜けて緑色になっていく.

f:id:susisu:20180609221552j:plain

ある程度煮出せたら出涸らし, 通称ドレミファラを適当に菜箸とかで取り出します. 細かいのは後で茶漉しで取り除くので気にしなくて良い.

これが世間一般には青紫蘇と呼ばれている物質.

f:id:susisu:20180609221613j:plain

続けて煮出した汁にこれでもかと砂糖を投入します. 大量に入れているのは保存のためで, この時点では味は気にせず飲む際に適宜調整するスタイル. 溶かし終えたら火を止める.

さて色が悪いですね. このままでも味に問題はないのですが, ここに酸を入れて見た目の改善を試みます.

f:id:susisu:20180609221638j:plain

というわけでレモン汁を投入. これは変色の様子を GIF 動画に収めたものですが, 文字が邪魔なので ☆ 1 つです.

f:id:susisu:20180609221701g:plain

風情が欲しければ生のレモンを搾っても良いし, 実家ではクエン酸をドボと投入していた. 風の噂によると酢を入れる流派もあるらしい.

Vivified.

f:id:susisu:20180609221718j:plain

適当に茶漉しで残った葉を取り除きつつ容器に移して完成. たまたま棚に眠っていたお茶用の容器が茶漉しもついていて最適だった.

f:id:susisu:20180609221746j:plain

そのままだと激甘なので, 飲む時は水で薄めてお好みの甘さにしましょう. 大体この作り方だと二倍に薄めると丁度良いくらい.

f:id:susisu:20180609221818j:plain

炭酸水で割ると爽やかさが増して, 一足先に夏が来ます.

作った紫蘇ジュースは大体一ヶ月くらい保存できるとの噂がありますが, 特に試していないので保証はしません.

Mackerel で Cookie Clicker を監視してみた

ステマ記事です.

みなさん Cookie Clicker を覚えていますか

これです. 昔一瞬流行ったなあ, という感想が出てくることを予想してますが (ついこの前言われた), まだまだ続けている人はいて, 私もその一人です.

過去の記事:

Mackerel とは

はてなが開発しているサーバー管理・監視サービスです. 詳細は下記を見てね.

上記の通り Mackerel は基本的にはサーバーを監視するためのサービスで, サーバー (ホスト) の各種状態 (メトリック: CPU, メモリ, ディスクの使用率など) の監視したり, 推移をグラフにして眺めたりすることができます. 一方それとは別にサービスメトリックというものがあり, サーバー各個体に結びついた情報ではなく, サービス (例えば複数のサーバーを使って何らかのサービスを提供する場合を考えてもらえれば良いです) についての各種状態についての状態を監視することができます. これは Web API を使って状態を比較的簡単に投稿することができて, 今回はこれを使って Cookie Clicker の状態を監視してみました. *1

Mackerel で Cookie Clicker を監視する

先にどういったものができたのかをお見せしましょう.

これは cookies (現在の所持クッキー枚数), cookiesPerSecond (一秒あたりのクッキー生産量), cookiesEarned (現世でこれまでに生産したクッキー枚数), cookiesAllTime (前世も含めてこれまでに生産したクッキー枚数) の直近一日分の記録です (グラフにマウスカーソルを乗せるとどの線がどれなのかわかります). リアルタイムに更新されているので見ているタイミングによって値は変化します.

これはどう実現されているかと言うと, まあ皆さんご想像の通りだと思いますが, 一定間隔でゲームの状態を投稿するスクリプトCookie Clicker のページ内で動かしています.

Cookie Clicker はとても素朴な作りになっていて, ゲームの状態はすべてグローバルにある Game オブジェクトから取得できます. 例えば現在所持しているクッキー枚数は Game.cookies, といった具合ですね. これらのプロパティを読むだけならチート判定が出ることもありません.

サービスメトリックの投稿は https://api.mackerelio.com/api/v0/services/<サービス名>/tsdb に対して POST で JSON データを送るだけです. 投稿スクリプトは大体次のような感じで, これをゲーム起動後にコンソールを開いて貼り付けて実行します.

setInterval(() => {
  const time = Math.floor(Date.now() / 1000);
  const body = JSON.stringify([
    {
      "name" : "CC.cookies",
      "time" : time,
      "value": Game.cookies
    },
    {
      "name" : "CC.cookiesPerSecond",
      "time" : time,
      "value": Game.cookiesPs
    },
    {
      "name" : "CC.cookiesEarned",
      "time" : time,
      "value": Game.cookiesEarned
    },
    {
      "name" : "CC.cookiesAllTime",
      "time" : time,
      "value": Game.cookiesEarned + Game.cookiesReset
    }
  ]);
  const req = new Request(
    "http://localhost:7777/proxy",
    {
      mode  : "cors",
      method: "POST",
      body
    }
  )
  fetch(req);
}, 60 * 1000);

お気付きの方もいると思いますが, Cookie Clicker のページ内で動かしている都合上, 別ドメインの Mackerel に直接リクエストを送ることはできない*2ので, ローカルに Node.js でプロキシサーバーを立ててそこに投稿して, さらにそこから Mackerel に投稿しています. それ以外には特に難しいこともしていません.

というわけでこれで上に見せたようなグラフができて, どこにいても現在のクッキー生産の様子がわかるわけです. CPU 使用率といったものほど変化があるわけではありませんが, 見ていて楽しい.

よかったこと

下のグラフは放置時の 5 分間のクッキー生産量の理論値 (standby) と, 実際に 5 分間で生産されたクッキー枚数 (actual) の直近 12 時間の様子です.

これもリアルタイムに変化するのでどのように見えているかわかりませんが, 最初に私がこれを見た時は次のようになっていました.

f:id:susisu:20180414190229p:plain

左の方は理論値 (青) に比べて実際の値 (黄) がかなり小さな値になっています. これには, 通常 Cookie Clicker は setTimeout を使って 30 fps で動いているのが, タブがバックグラウンドになっている間は 1 fps になってしまうことが影響しています. Cookie Clicker 側も対策はしているので, 例えば生産量がいきなり 1 / 30 になるということはないのですが, それでも思っていたよりもずっと少なくなってしまう (1 / 5 程度) ということがわかりました. 実際にどの程度影響が出るのかはちゃんと計測してみないとわからないものですね.

ちなみに上の図の一番右端はタブをフォアグラウンドにして放置している状態で, ちゃんと理論値と同じ値になっています. でもファンがずっと回り続けてうるさいのでどうしようか考え中...

*1:今回はサーバーが複数台あるというわけではないのでホストのメトリックとして投稿しても良いのですが, 今後も同じマシンでクッキーを焼き続けるかどうかはわからないのでこちらの方が安心でしょう

*2:API キーをヘッダに付与できない