githubのmarkdownに目次(Table of Contents)をつける

README.md がごちゃごちゃしてきたので、簡単に目次つけれないかと探していたら ekalinin/github-markdown-toc: Easy TOC creation for GitHub
というものがとても簡単だったのでご紹介。

How to use it

$ wget https://raw.githubusercontent.com/ekalinin/github-markdown-toc/master/gh-md-toc
$ chmod a+x gh-md-toc

localファイルもremoteファイルも実行できます。

$ gh-md-toc README.md

Table of Contents
=================

   * [git-trend](#git-trend)
      * [Requirements](#requirements)
      * [Installation](#installation)
      * [Usage of a gem](#usage-of-a-gem)
         * [Fetch trending](#fetch-trending)
         * [Use language and since options](#use-language-and-since-options)
         * [Show enable languages](#show-enable-languages)
      * [Usage of a command line tool](#usage-of-a-command-line-tool)
         * [Fetch daily trending](#fetch-daily-trending)
         * [Fetch daily trending with JSON format](#fetch-daily-trending-with-json-format)
         * [Fetch daily trending without description](#fetch-daily-trending-without-description)
         * [Fetch daily trending by language](#fetch-daily-trending-by-language)
         * [Fetch weekly/monthly trending](#fetch-weeklymonthly-trending)
         * [Fetch number of trending](#fetch-number-of-trending)
         * [Show enable languages](#show-enable-languages-1)
      * [Tips](#tips)
      * [Implementation of other language](#implementation-of-other-language)
      * [Contributing](#contributing)

Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)

sorce

ソース見て驚いたのですが、これbashなんです。
markdownをhtmlに変換して、h1-6 タグを sed/awk でごにょごにょして出力しています。

htmlの変換処理

githubmarkdown変換用のAPIを利用しているだけなんですが、こんなものがあったんですね。
Markdown | GitHub Developer Guide

$ curl -X POST --data '{"text": "Hello world github/linguist#1 **cool**, and #1!"}' https://api.github.com/markdown
<p>Hello world github/linguist#1 <strong>cool</strong>, and #1!</p>

その他

見るだけなら、こちらのbookmarkletが便利でした。
GitHub の Markdown に TOC (目次) を付けるブックマークレット (vanilla JS 編) - Qiita

習慣の力 読了

習慣の力 The Power of Habit (講談社+α文庫)

習慣の力 The Power of Habit (講談社+α文庫)

SOFT SKILLS 第10章で紹介されていた習慣に関する本です。
デール・カーネギーの人を動かすに続いて2冊目です。
SOFT SKILLS は良い本を紹介してくれます。

今のところ今年一番です。
読後に目次を読み直して、気になったところを一読することはあるのですが、
気になるところが多すぎて、ほぼ全部読み直してしまいました。

ざっくり

人の行動の4割を占めている「習慣」について、その仕組み、どう作られて、どう変わるか、習慣を使いこなす方法を個人・組織についての事例を実験や事実とともに記載された良書です。
そして最後の付録には、悪い習慣を変えるためのフレームワークが紹介されています。

第1部 個人の習慣

第1章 「習慣」のメカニズム

脳の基底核という部位が無意識の習慣を司っており、 習慣が「きっかけ」、「ルーチン」、「報酬」という一連のサイクルで成り立っていることがウィルス性脳炎の患者、てんかんの患者、ラットの実験から述べられています。

特にラット実験の脳の活性化を調べる実験、ウィルス性脳炎ユージン・ポーリーの話は面白いです。

第2章 習慣を生み出す「力」

ファブリーズが大ヒットした理由は「報酬」を期待させる「欲求」というものであったというのをジュリオというサルの実験とともにし紹介。
 
良い習慣を生み出すためのポイントです。

第3章 習慣を変えるための鉄則

「きっかけ」は変えずに同じ「報酬」を提供し、新しい「ルーチン」を組み込むこと、 またその習慣を永遠にするためには「信じること」が必要であることをフットボールのヘッドコーチ、アルコール依存更生会を例にして説明しています。

指を噛む癖を持つ女性の対処方法(「きっかけ」を感じたらチェックし、対抗方法として新しいルーチンを組み込むという)が印象的でした。

第2部 成功する企業の習慣

第4章 アルコアの奇跡

「キーストーン・ハビット」の説明。
成績不振のアルニウム・カンパニーが新しいCEOであるポール・オニールによって復活したという例。彼は「事故ゼロ」という目標だけを掲げて改革を行った。

また、マイケル・フェルペスの「ビデオ」の話も面白かったです。
彼は、頭の中に完璧な泳ぎを細かい部分までなんども繰り返し再生し、それぞれの一瞬に何が起こるか全て覚えようとしたそうです。コーチに家に帰ったら「ビデオを見ろ」、練習中に「ビデオをかけろ」、レース前に「ビデオを用意しろ」と言われたそうです。
彼にとってはこのイメージトレーニングが「キーストーン・ハビット」となり小さな勝利に結びついていったと。

他にも、食事の記録という「キーストーン・ハビット」で他の良い習慣が身についたという話も良かったので、これは現在やってみているところです。

第5章 スタバと「成功の習慣」

「意志力」という自分をコントロールする力についての話です。 これは、減るものでもあるが、鍛えることができるものであると。

以前読んだ、daigoの本にも 自分を操る超集中力 読了 - rochefort’s blog 「ウィルパワー」という言葉で紹介されているものに近い印象。

スタバでは、社員の教育にLATTEと呼ばれる意志力を発揮する習慣のループを取り入れているそうです。 Listen(耳を傾ける)、Acknowledge(不満を認める)、Take Action(行動する)、Thank(感謝する)、Explain(なぜその問題が起きたのかを説明する)。

客のクレームなどの「きっかけ」
マニュアルを作成し研修でLATTEで「ルーチン」が実行されるようにする
客や店長からの感謝という「報酬」があり
客を喜ばせたいという「欲求」を持つ

子供に習い事やスポーツをさせることは、意志力の向上に役立つということや 目標設定をさせた方がリハビリに効果的だった(転換点という「きっかけ」に対応すること)ことや 「丁寧な説明」と「無礼な扱い」の実験も面白かったです。
丁寧な説明をした方が、その後行った自制心を必要とするテストの成績が良く、無礼な扱いを受けた方の成績は散々だったと。

第6章 危機こそ好機

看護師と医師が対立し、組織の特有の習慣が生まれ、その結果医療事故を起こしたロードアイラン病院、縦割りの組織構造のために特有の習慣によって火事による死亡事故を起こしたキングス・クロス駅の話。 権力のバランスだけでなく、誰が責任を取るのかを明確にすることで転換できると。

第7章 買わせる技術

新しい習慣は古い習慣でくるんだ方が世界に受け入れられるという話。
 
購入履歴などから妊婦を特定しクーポンを配布するというマーケティングの仕組みを例にし、これを顧客に気持ち悪いと思われないために関係のない商品の間にこれらを挟んで提供するという話。
 
また、過去の曲をいろんな点から分析し、絶対ヒットする曲を判定する仕組みを例にし、これを本当にヒットさせるために、ラジオで紹介する際に聴き慣れた曲の間に挟んで紹介したという話。

第8章 公民権運動の真相

黒人差別の時代に、バスで白人に席をゆずることを拒否したローザ・パークスの周囲が中心となり、キング牧師を巻き込んで起こした市営バスのボイコットの話。そして、リック・ウォレンが社会的習慣に訴えて教会を作り、信者を増やしたという話。

第9章 習慣の功罪

普通の主婦だったアンジー・バックマンがギャンブルにより破産をした話とキャンピングカーで誤って妻を殺してしまった夢遊病患者のブライアン・トーマスの話。 トーマスは釈放されたが、バックマンは責任を問われた。この違いは「自分の習慣に気づいていたか」どうか。

付録

ざっくり書くと、以下のようなもの。
本書に具体例と合わせて記載されているので、気になる人は是非読んで実践してみると良いです。

変化の枠組み 1. ルーチンを特定する
2. 報酬を変える
 どのような欲求がルーチンを駆り立てるか
3. きっかけを見つける
 場所、時間、心理状態、自分以外の人物、直前の行動
 5つのカテゴリーでそれぞれ考える
4. 計画を立てる

See Also

rbenv から anyenv に乗り換えました

yak shaving (ここは読まなくていい)

最近数学ガールを読んでいまして、複素数平面とかのplotをrubyでできないかと
探していたら nyaplot というのが使えそうでした。
動作環境は IRuby notebook
IRuby notebook は Anaconda の利用が推奨されています。
pythonに関しては、たまに使うぐらいだったので、homebrew でinstallしていたのですが
そのまま、Anaconda のインストーラーを使うと homebrew 環境が壊れるとかなので
pyenv で Anaconda を入れるという方法で行こうと思ったのですが、
env系2つ以上入れるなら anyenv がいいよということなので
今回試してみることにしました。
 
この yak shaving 感ハンパないですね。
 
こういうのは Docker 使いこなすといちいちローカル環境整備しなくても良いのだろうなという気はしますが、node や go 環境も一旦 anyenv に乗せてローカルも綺麗にしておきたいという思いもあったので、環境整備することにしました。

Installation

Uninstall rbenv and python

~/.rbenv は .anyenv 以下に持っていっても動きそうな気がしますが、とりあえず消して再インストールすることにします。

$ brew uninstall rbenv ruby-build rbenv-default-gems
# .rbenv/default-gems の移行をするので、必要に応じてbackupしておいてください
$ rm -rf ~/.rbenv

$ brew uninstall python3
# python2はovencvの依存関係があったため ignore-dependencies を指定
$ brew uninstall --ignore-dependencies python

Install anyenv, rbenv and pyenv

$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.your_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.your_profile
$ exec $SHELL -l

$ anyenv install rbenv
$ anyenv install pyenv

Intall anyenv-update

homebrew 時代は ruby-build を利用してupdateしていましたが、anyenv では、 znz/anyenv-update で一括updateができるようです。

$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
$ anyenv update

Install rbenv-default-gems

rbenv-default-gems が便利 - rochefort’s blog
毎回installするgemを自動で入れてくれる便利な奴です。
rbenv/rbenv-default-gems: Automatically install gems every time you install a new version of Ruby
homebrew で入れていましたが、以下のようにすれば anyenv でも利用できます。

$ git clone https://github.com/rbenv/rbenv-default-gems.git $(rbenv root)/plugins/rbenv-default-gems

# 最初にバックアップしておいた、default-gems を rbenv root に配置
# mv .rbenv/default-gems $(rbenv root)

Install ruby, putyhon, annaconda

$ rbenv install 2.4.1
$ rbenv global 2.4.1

$ pyenv install 2.7.13
$ pyenv install anaconda3-4.4.0
$ pyenv global anaconda3-4.4.0

余談ですが、openssl, readline は RUBY_CONFIGURE_OPTS で指定しなくても hombrew のものが使われるんですね。

$ rbenv install 2.4.1
ruby-build: use openssl from homebrew
ruby-build: use readline from homebrew

余談

いつも思うのですが処理系をinstallするとCPU上がりまくりで、Macがあっちっちになるのなんとかならんのでしょうか? nodebrewのbinary installみたいなことができると嬉しいんだけどな。

See Also