大学生からの Web 開発

会社の人に見つかってぽよぽよしてきた

Atom でタブが多すぎて見づらいのを解決した

Atom にはいくつか不満があるんだけど、そのうちのひとつ「タブ開きすぎて見辛い」問題を解決したのでシェアさせていただきます

https://twitter.com/karur4n/status/719507772979544064

タブ開きすぎて見辛い

f:id:karur4n:20160411222558p:plain

開きすぎてつらい。画像はさっき撮ったもので、苦痛ってほどじゃないけど、だいたいもっと開いて大変なことになってる。

解決

アクティブなタブだけを表示する とした。

Atom は Web 技術で出来てて、見た目は CSS で扱われてる。styles.less に書いたら、それが反映される。

styles.less (メニューバー -> Atom -> Stylesheet... から開く)

.tab-bar .tab {
  display: none;
}

.tab-bar .tab.active {
  display: block;
}

するとドン

f:id:karur4n:20160411223518p:plain

見やすくなった。

ついさきほどこの設定をしたので運用はしてないので問題が起きるかもしれない。タブが独立したプロセスか知らないけど、もしそうなら気づかないうちに大変なことになっていた、ということがありそう。

あと、ctrl-w を pane:close にマッピングすると良いと思う。あと fuzzy-finder の Search All Panes は無効にしておこう。

無料で音楽が聴けるアプリ

Music なんとか (MusicBox, SoundMusic など) という無料で音楽聴ける系アプリはよくある。そういうアプリの音源はどこから取ってきているのか。

使ってみると分かるけど、それは YouTube

そういうアプリにはだいたいランキングがあるんだけど、そのランキングが Music ~ 系アプリすべて同じランキングを表示していて。で、これはどこから取得しているんだろうと気になって、WireShark を持ちだして通信を見てみてもよく分からず。

1時間ほど考えて分からなかったんだけど、さっき iTunes を開いたら分かった。iTunes Store のランキングと同じだった。

Apple が公開している RSS Builder を使うと、iTunes Store, App Store のランキングフィードが取れる。

例えば、日本の人気曲トップ 10 はこちら。

https://itunes.apple.com/jp/rss/topsongs/limit=10/xml

.zshenv で PATH を管理したら罠にハマった

Spacemacs を起動すると、.zshrcPATH の設定をするな、と怒られた。ので、.zshenv に記述を移すと、今度は不具合が起きた。emacs を以下のページの設定をして呼び出すと ~/bin/emacs を実行していたのが、 .zshenv に PATH を移したことによって /usr/local/bin/emacs を呼び出すようになってしまった。

karur4n.hatenablog.com

解決したのでメモする。

原因の特定

$ echo $PATH

をすると、/usr/local/bin~/bin より優先的に読み込まれていた。

なので、試しに .zshenv

PATH="$HOME/bin"

としてみても、

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/karur4n/bin

と出力された。

????????? なんで ???????

調べてみると、シェルログイン時に /etc/profile を読み込んでいて、そこにある path_helper が問題を引き起こしていた。

/etc/profile

...
...
if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi
...
...

path_helper はバイナリファイルなので、なにをしているかは man で知る。

$ man path_helper

path_helper(8) BSD System Manager's Manual path_helper(8)

NAME path_helper -- helper for constructing PATH environment variable

SYNOPSIS path_helper [-c | -s]

DESCRIPTION

The path_helper utility reads the contents of the files in the directo- ries /etc/paths.d and /etc/manpaths.d and appends their contents to the PATH and MANPATH environment variables respectively. (The MANPATH envi- ronment variable will not be modified unless it is already set in the environment.)

Files in these directories should contain one path element per line.

Prior to reading these directories, default PATH and MANPATH values are obtained from the files /etc/paths and /etc/manpaths respectively.

要は path_helper は、特定のファイルにディレクトリを書いておくと、それを PATH として読み込んでくれるものである。

PATH の値が取得される /etc/paths を見る。

/etc/paths

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

これが、上記の $ echo $PATH 時に勝手に読み込まれたものと一致していたので、path_helper が今回の問題の引き金だと断定した。

El Capitan からできなくなった対処法

似たような話があって、対策法も書いてあった。

blog.shibayu36.org

これは、以下を実行して path_helper から実行権限をなくすアプローチ。

$ sudo chmod -x /usr/libexec/path_helper

で、めでたしめでたし、じゃなくて El Capitan からは rootless っていうセキュリティで、ユーザが /System, /bin, /sbin, /usr に変更を加えられないようになっている、sudo しても。homebrew で騒ぎになったアレ。

Mac - HomebrewはEl Capitanへアップグレードする前に入れておく - Qiita

なので、これはできない。

解決した

どうやって解決したかと言うと、zsh には path_helper を呼び出していた /etc/profile を読み込まない設定があるので、それを有効にする。

.zshenv

setopt no_global_rcs

これでよい。試しに、PATH を表示してみる。

.zshenv

setopt no_global_rcs

PATH="$HOME/bin"
$ echo $PATH
~/bin

やったー 🎉

ただしこれまでのように、/usr/local/bin などが自動で読み込まれることはなくなったので、各自、PATH を読み込む必要がある。

よかった〜〜。

参考