Thanks Driven Life

日々是感謝

今日の夢

ある休日の昼下がり。どこかのお店から外に出て「しかし晴れというのはいいものだ」などと
入口で体を伸ばすなどの動きをしていたところ、背後から「ちょっとすみません」と声を掛けられる。
おっと、邪魔してしまった。早くどかなくては。そう思い体を寄せながらも振り返ると、そこには見知らぬ女性がいた。
見知らぬ女性とは書いたが、その見た目には何となく覚えがあった。というのも、よくTVで居そうな万引Gメンっぽい人オーラを放っていたのだ。

「ちょっと今あなた怪しい動きしたので事務所まできてください」

何が怪しい動きだ。ただのストレッチではないかと反射的にレスポンスしようと喉の筋肉が硬直したが
たしかに店の出入口でストレッチは怪しい。というか邪魔だ。
また、先述のとおり、いかにも万引Gメンっぽいオーラが見えたのと、もちろん万引きなどしていない僕は

「わかりました」

と答えた。すると女性は僕の腕を掴んで店内に連れ込む。

(少し強引すぎではないか。素直に付いていくのに)

心で思いながらも、せっかくなので女性と世間話を開始した。


「ところで怪しい動きってなんですか」
「静かについてきてくさい」
「いやいや、できれば説明が欲しいんですが」
「…いいでしょう」

すると女性は立ち止まり、僕に向かって語り始めた

「あなたは独身男性が身寄りのない男子を引き取る理由を知っていますか?」
「は?」
「それはですね、子供が『男子』だからですよ」
「はぁ」
「ふふふ」

そこで夢から覚めました。

Turnip 3.0.0 & turnip_formatter 0.6.0 リリースしました

新年早々にリリースするつもりだったけど新年度になってしまった。
明けましておめでとうございます。本年度もよろしくお願い致します。

内容

メインの内容としては以下のとおりです。

  • turnip
    • Gherkin 4 の対応
  • turnip_formatter
    • エラーシナリオの各パターンへの対応

Gherkin 4 対応はだいぶ前からできていましたが、formatter が終わったらリリースしようと先延ばしにしていたらこんな時期に。

その formatter は、before/after hook はともかく、RSpec 3.3 ぐらいから導入された aggregate_failures に対応するのがそこそこ大変でした。

あとはリファクタ枠として、クラスがごちゃごちゃしていたのでそれっぽく分割したり書き直したりしていました。

おわり

忙しかった*1

*1:ソシャゲぇ

今日の夢

沖縄の4月は晴天時においては夏日になるぐらいの陽気さがあり、
「いい天気だ。ドライブがてらご飯でも食べに行こうぜ」と車で店に向かった。同乗者も居たが誰かは忘れた。

駐車場に着いて車から降りた時に、隣の車中で男女がまぐわっているのが目に入ってしまった。
「お盛んだわ〜」と思いながらその場を離れようとしたら、急にその車から人が出てきた。
なんだなんだ、もう終わったのか?それとも見られたことに気づいて中断したか?と、つい反射的に振り替えって見てしまった。

ゾンビだった。

「うぉやべえゾンビだ逃げろ!!」って自分の車に逃げ込もうとしたが、同乗者も既にゾンビになっていた。
仕方ないので走って逃げた。ゾンビも追い掛けてきた。

しかし、ゾンビは「PHPPHP…」って言いながら追い掛けてきたので、「あ、これ夢だ」って気づいた。
念のため、PHP を知らない人の為にも紹介しておくが、PHP とは PHP: Hypertext Preprocessor再帰的に略したもので、
世界一有名なスクリプト言語である。異論は心の内に秘めておいて欲しい。議論している場合ではないのだ。

http://php.net/manual/ja/intro-whatis.php

夢の中にまで現れやがって PHP の亡霊め。急に怒りが湧いてきた。
夢なら戦えるのではないかと思ったが、PHP PHP と呟くゾンビに明晰夢内で殺されたら
一生 PHP に呪われるんじゃないかと恐怖し、なんとか夢からの脱出を図ろうと頬をつねったが目が覚めない。

仕方ない飛ぶぞ!!って飛翔を試みたとこで目が覚めた。

shellcheck を Docker で実行する

TL;DR

経緯

  1. シェルスクリプトを書く時、ちょくちょく shellcheck のお世話になる
  2. いざ実行しようとすると、このマシン shellcheck インストールしてないじゃん!!となる
  3. インストールするかー。DebianCentOS であれば apt や yumリポジトリ提供されてるな
  4. でも今は macOS 使ってるから、 ドキュメント に従って

     $ brew install shellcheck
    
  5. ビルド終わるまで待つか

     _人人人人人人人人人人人人人人_
     > 一時間待っても終わらない <
      ̄YYYYYYYYYYYYYY ̄
    

私の環境だけかもしれませんが、めっちゃ時間かかります。 もちろん、一度ビルドしてしまえばあとは問題なく使えますが、 何かしらの理由で新しい環境に移行した時、またこの時間を過ごすのはよくない。どうにかしたい!!

Docker イメージ

そんなわけで、「ビルドした shellcheck バイナリを持った Docker イメージでもあればいいのでは?」と安易に考え、 とりあえず Docker Hub で探したら当然のように shellcheck 公式の Docker Image が見つかりました。

https://hub.docker.com/r/koalaman/shellcheck/

使い方はドキュメントのとおり

$ docker pull koalaman/shellcheck
$ docker run -v $(pwd):/scripts koalaman/shellcheck /scripts/myscript.sh

docker run するスクリプト

問題なく動きましたが、しかし毎回 docker run ... と書くのもめんどくさいので、適当に runner を作りました。

#!/bin/sh

(
    dir="$(cd "$(dirname "$1")" && pwd)"
    name="$(basename "$1")"

    docker run --rm -v "${dir}:/scripts" koalaman/shellcheck "/scripts/${name}"
)

こいつをてきとうな名前(私は同名 shellcheck にしました)で保存しておけば

$ shellcheck /path/to/script.sh

ってやると実行してくれます。

まとめ

最近(結構前からかな)は各ツールや環境を Docker コンテナに分離する流行を感じるので、追っ掛けてみました。便利。

バグなどの謎の現象に立ち向かうも闇が濃く、どうしても沼から脱出できない時に見るフローチャート

ご査収ください

(2022年12月8日 追記) フローチャートを書き直しました。内容自体は当時のものと同じです。

補足

パフォーマンスの出し方は人それぞれなので「私はこんな感じです」というものです。

  • とりあえず「なんかやばいな?」と思ったら休む

    体調的にはもちろん、「これ結構やばそうだな?」という勘所は大事

  • 15分以上(長くても30分)悩んだら周りに聞いてみる

    こういう時はだいたい

    • 視野が狭くなっている(簡単なスペルミスだったり)
    • 暗黙知に触れている(業務だとよくある)
    • とてつもない難問にぶちあたっている

    といったケースなので、仲間にSOSを出した方がチーム全体の進捗も結果的に良くなる、という経験談です。 ちなみに15分の根拠はなんとなくです。

ちなみに、問題に取り組み始めるその瞬間から「15分やってわからなかったら誰かに聞こう」としている場合は、 フローチャートの「30分動いてなかったら運動する〜」とか「飯を食う〜」あたりをすっ飛ばして、すぐ仲間に救援要請しています。 しかし、私達が触れる闇は往々にして突如目の前に現れ、「……ん?なんか動きおかしいな?」となり、気づいたらどんどん深みにハマることがほとんどなんですよね…(例: yak shaving)。

そういった「気づいたら闇に同化していた」みたいな時に振り返ってみましょう。

※ もちろん、「一人の力で沼から脱出する」という目的であればこの限りではありません

まとめ

私もドツボに嵌りやすいタイプなので、なるべく思い出すように心掛けています。

🎄 Merry Christmas in Emacs 🎄

f:id:gongoZ:20161225003908g:plain

https://gist.github.com/gongo/dc8fe61af6f2599c8e948035fbf66c13

クリスマスツリーが表示されて、SPACE キーを押すと雪が降る xmas-tree-mode です。 ちなみに上の GIF で雪が降ってる間、ひたすら SPACE キー連打しています。

本当は Emacs Advent Calendar 2016 の記事として投稿する予定でしたが、体力が消えたので参加取り消しました。 せっかくなのでクリスマスツリーだけは載せることにしました。Emacs 24 とか 25 あたりで動くと思います。


余談ですが

(flet ((gamegrid-display-type () 'mono-tty))
  (xmas-tree))

を実行すると

f:id:gongoZ:20161225004356g:plain

こういう感じで表示されます。これは gamegrid.el の機能を使っているのですが、これについては体力が戻ったら別で書こうと思います。

Amazon Drive の iPhone アプリで .co.jp じゃなくて .com にサインインしたい場合

前提

  • 容量無制限プランが開始したタイミングで Amazon Drive を使い始めた
  • .com の方で契約した。値段で決めた
    • .co.jp は 年間13,800円
    • .com は 年間59.99USD
    • 速度は今のところ気にならない

経緯

Amazon Drive に写真やら音楽やらをバックアップとして配置しているが、「そういえばこれ iPhone でも見れるのだろうか」と思い、 調べてみると Amazon Cloud Drive というアプリがあった。

早速インストールしてサインイン画面まできたところ

f:id:gongoZ:20161214112125j:plain

Amazon.co.jp へのサインイン」と思われるメッセージが表示されている。 通常のショッピングサイトであるところの amazon.comamazon.co.jp と同じく、 Amazon Drive も .com と .co.jp で別ストレージ扱いになる。

私がバックアップをとっているのは .com の方なので、このままサインインしても何も無い、虚無のストレージが表示される。 しかしアプリ設定を見ても「.com にサインインする」という希望を叶える UI は存在しない。不便

解決方法

  1. iPhone言語設定地域 をそれぞれ「英語」「米国」にする
    • もしかしたら他でもいけるかも
    • 言語と地域 両方 設定する必要があります
  2. Amazon Drive アプリで .com にサインインする
  3. サインイン後は言語、地域設定を元に戻しても大丈夫
    • サインアウトするとまた 1 から

参考: iPhone、iPad、iPod touch で言語を変更する - Apple サポート

f:id:gongoZ:20161214112859j:plain

一度サインインしたら、また元の設定に戻しても大丈夫です。

まとめ

今回は .co.jp → .com でしたが、もちろん逆だったり、別ドメインに対しても適切な言語や地域を設定すると、望みの Amazon Drive にサインインできるようになると思います。

実はデスクトップ版の Amazon Drive でも似たようなことがあって、その時も同じように設定画面から言語設定を変更すれば .com に入れます。

参考: Amazon Cloud Driveのデスクトップアプリでamazon.co.jpにサインインできないとき - THE えのき