Whimlog

寝るまでが一日

Zsh をシュッと高速化する

Zsh のレスポンスが悪い

最近会社の PC が新しくなったので、環境の整理をしています。
.zshrc がゴチャゴチャしているかつ、Enter 連打するとなぜか peco + z が発動する現象が起こるのでヤックシェービングを兼ねてチューニングしてみました。 以下の記事を参考にしました。

blog.aqutras.com

改善前

タイムを計測するのは効果がわかりやすいので載せています。数値で見ると既にそれなりのスピードは出ていそうです。

~ ❯❯❯ time ( zsh -i -c exit )
( zsh -i -c exit; )  0.13s user 0.13s system 76% cpu 0.346 total

改善内容

auto compile を追加 (-0.01)
これは無条件におすすめです

[add auto compile · Asuforce/dotfiles@86a6790 · GitHub

~ ❯❯❯ time ( zsh -i -c exit )
( zsh -i -c exit; )  0.12s user 0.11s system 80% cpu 0.287 total

.zshrc から .zshenv環境変数の設定を移動 (+0.01) 遅くなった...けどファイルが整理されるので採用)

mv ENV to .zshenv · Asuforce/dotfiles@5b5ef94 · GitHub

~ ❯❯❯ time ( zsh -i -c exit )
( zsh -i -c exit; )  0.13s user 0.13s system 79% cpu 0.331 total

.zshenv$TMUX の判定を追加 (-0.06)
TMUX が起動していたら環境変数を既に読み込ませているので export の処理をスルーできます。

Don't read ENV when tmux already start. · Asuforce/dotfiles@e8f94d9 · GitHub

~ ❯❯❯ time ( zsh -i -c exit )
( zsh -i -c exit; )  0.07s user 0.04s system 81% cpu 0.135 total

タイムは測ってないですが anyenv init 時に --no-rehash を付けて高速化できます。

add --no-rehash · Asuforce/dotfiles@329f16b · GitHub

まとめ

スコアとコミットだけ載せてますが、雰囲気は伝わると思います。
tmux を使って新しい window or pane を開いた時再度読み込まれてしまうのがよくなかったようです。
かなり早くなったので満足です。次はプラグイン達を整理していきます。

Furichan でふりかえろう

これはなに?

僕が作った週次ふりかえりgem Furichan の紹介と活用方法についてです。

github.com

Furichan とは

もともと futik を使って日々の記録は付けていたのですが、ディレクトリを作ってファイルを作って、ファイルに furik の出力結果を貼ってという作業がだんだん煩わしくなってきました。 その次に活用したのが Raketask だったのですが、コマンドが多くなってきたのでいい感じにまとめたくなり作成ししたのがこの furichan になります。

その週に行なった GitHub, GH:E の活動(issue, PR)をまとめて出力してくれる便利な gem です。以下の画像のようなフォーマットで出力してくれます。(Keep, Problem の内容は手入力)

f:id:asuforcegt:20180209133040p:plain

週に行なった事を見ながら Keep, Problem を書き出し保存するだけで、自分の活動記録をつけることができます。

Furichan は furik に依存しているライブラリなので、そちらの設定をすると使えるようになります。 furik については以下の記事をご覧ください

tech.pepabo.com

おすすめの使い方

Furichan は金曜日に使うと一週間分の記録がうまく取れるようになってるので、毎週金曜日の使用をおすすめします。

  1. 適当な場所にリポジトリを作る
    • GH:E 使ってる人はそちらで
  2. $ gem install furichan
  3. furik の設定をする
  4. $ furichan

これでディレクトリ、ファイルの作成からトピックブランチの作成まで行われます。

コマンド群はこのような感じです

Commands:
  furichan furichan        # Create file and write about this week's reflection
  furichan furik           # write stdout this week's furik
  furichan help [COMMAND]  # Describe available commands or one specific command
  furichan init            # initialize of week setting
  furichan reflection      # write file about this week's furik

どう活用できるのか

日々の記録をつけるのもよし、評価資料をいい感じにするために使うのもよしです。 僕は毎週毎の記録をまとめるリポジトリを作って1ヶ月毎にまとめて評価資料に実績を書くという流れを作ってます。 まだまだ足りない機能も多いと思うので、要望 or PR お待ちしております〜