There's an echo in my head

日々のメモ。

7/26 ELLEGARDEN 「FUJI ROCK FESTIVAL 2019」グリーンステージ

去年のツアーに行けなかったので、今回が活動再開後初参加。2008年のフジロックのグリーンステージで見たのが最後だったので、フジロックで止まっていたものが11年ぶりにまたフジロックで再開したような気持ち。当時とは状況が真逆なのも面白かった。もう聴けないかもなと思うことが多かったから、生きててよかった。

セットリスト

Fire Cracker
Space Sonic
Missing
高架線
Supernova
Pizza Man
風の日
The Autumn Song
Middle Of Nowhere
金星
Red Hot
ジターバグ
No.13
Salamander
虹
Make A Wish
スターフィッシュ

移行アシスタントでTime Machineから復元しようとしたら"No volumes found in backup"だったときに試すこと

  1. 移行元のデータを持っているMacのTime Machineの設定から一度ディスクを外す(Select Disk... → Remove Disk)
  2. 再度同じディスクを選択する(Select Disk... → Use Disk)
  3. Back Up Now(それまでにバックアップしていたデータが使い回されるので数分で終わる)
  4. 移行先のMacで再度移行アシスタントを実行する(失敗していたままなら一度再起動する)

ファイルアップローダを手軽に立てられるようにした

端末からスクリーンショットをPCにアップロードしたいことがあって、でもAndroidBluetoothとかよくわからないし…というときに、手軽に立ち上げられるようなアップローダを作った。

github.com

$ curl -sL https://raw.githubusercontent.com/a2ikm/uploader/master/uploader.rb | ruby - [-p PORT] [-u DIRECTORY]

なお、事前にRubybundler/inlineが使えるBundler(v1.16以上)を入れておく必要がある。

きっと車輪の再発明だろうけど、bundler/inlineSinatraでサクッと作れたので面白かった。

追記

git.io短縮URLを作成したので、そちらでも起動できるようになった。

$ curl -sL https://git.io/uploaderrb | ruby - [-p PORT] [-u DIRECTORY]

インタラクティブにRipperで構文解析するIRipperというREPLを作った

github.com

「この記述はRubyにどういうふうに解析されているんだろう!?」という疑問を逐次解決していくためのREPLとして作りました。

lexsexptokenizeというRipperのメソッドを使って、引数で与えられたコードを解析して表示します。

$ iripper
iripper> tokenize 1 + 1
["1", " ", "+", " ", "1"]
iripper> sexp 1 + 1
[:program, [[:binary, [:@int, "1", [1, 0]], :+, [:@int, "1", [1, 4]]]]]
iripper> lex 1 + 1
[[[1, 0], :on_int, "1", EXPR_END|EXPR_ENDARG],
 [[1, 1], :on_sp, " ", EXPR_END|EXPR_ENDARG],
 [[1, 2], :on_op, "+", EXPR_BEG],
 [[1, 3], :on_sp, " ", EXPR_BEG],
 [[1, 4], :on_int, "1", EXPR_END|EXPR_ENDARG]]

「いちいちlexと入力するのが面倒くさい」「ワシはtokenizeにしか興味が無いんじゃ」「S式だけを見ていたい」というように、実行したいメソッド(READMEでは「コマンド」と記載していますが)が決まりきっている場合には、起動引数もしくはdefaultコマンドでデフォルトのメソッドを指定するのが便利でしょう。

$ iripper tokenize
iripper(tokenize)> 1 + 1
["1", " ", "+", " ", "1"]
iripper(tokenize)> default sexp
iripper(sexp)> 1 + 1
[:program, [[:binary, [:@int, "1", [1, 0]], :+, [:@int, "1", [1, 4]]]]]
iripper(sexp)> default
iripper> tokenize 1 + 1
["1", " ", "+", " ", "1"]

例の最後のように、defaultコマンドに何も与えなければデフォルトのメソッド指定を外します。

履歴やカーソル移動などはできません。気が向いたらReadlineなどで対応します。

ペンギン・ハイウェイ

9/4

penguin-highway.com

  • アオヤマくんが二段ベッドを使っているのは、彼には実はアメリカに野球留学している兄がいるからという説をずっと持っているんだけど、フリクリを見に行くタイミングが無くてこのままだと見に行けないかもしれない
このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。