hubot のことを "ひゅ〜ぼっと" と読むの、いけ好かない感じがする。たとえ GitHub の中の人が "ひゅ〜ぼっと" と読んでいたとしてもいけ好かない。 "ふぼっと" も芋っぽい感じがして好きになれない。 GitHub はジットハブという読み方が正しいのだから hubot は "はぼっと" なのでは?
Clean Ruby を読んでいる
CleanRuby を途中まで読んだ。一年半前に DCI 流行って、その後会社(東京の方)でも流行ってたので、「乗るしかない、このビッグウェーブに」と思って買うだけ買って積ん読してた。正月くらいから本気出して読み始めた。まだ全部読み終わってないんだけど、 Day One にメモ走り書きしてあって良い話っぽいのが書いてあったのでメモする。
2014/01/23
Clean Ruby 読んでる。まだ最初の方だけど何となく DCI についてつかめてきた。 DCI 、つまるところ RSpec みたいな BDD の考え方を製品コードにも持ってきたものだと思う。「テストコードだけ実際にプログラムが利用されるときの文脈( context )とか反映してるのもったいなくね? これプロダクトコードにも反映させるべきでは?」みたいなノリだと思う。
2014/01/26
Clean Ruby、3章くらいまで来た。 DCI の考え方だいたい分かった。Methodless Roles とはつまり良い名前を付けるところ、というところにぐっと来た。Clean Code からの引用で、「良い命名をすることがコードを良くしないことはない」というのが良かった。
モデルにいろいろ書くな、という話も良かった。 Being と Doing を分けるというやつ。モデルは変更しない情報(データ)だけを保存する場所にして、データを変更したりする処理は別の場所に書くという考え方。
サインアップについて。ユーザーがサインアップするとき、ユーザー自身がサインアップすることもあれば管理者がユーザーの代わりにサインアップすることもある。同じ種類のデータを作ろうとしてるんだけど、システムの挙動は異なる。管理者がユーザーの代わりにサインアップするときには、管理者にメールで通知する必要はない、など。モデルにデータの変更処理まで書くと、別の文脈からデータ操作しようとするときに苦しい感じになる。
頑張って最後まで読みたい。
TDD Boot Campの感想2 — ペアプログラミングで気づいたこと
Vimmabilityのなさ
TDD Boot Camp福岡で生まれて初めてペアプログラミングを経験した。自分のVimmabilityが思いの外低く焦った。書くの超とろいし、Rubyも全然分かってないしペア組んでもらった人に迷惑かけまくりな感じ。会社では誰もVimとか使ってなくてみんなEclipseとか秀丸使ってるし、周りにVimmerがいないので自分がどんなにしょぼいVim使いなのか気づいてなかった。
とりあえず今回、ペアを組んだ @mallowlabs さんに cw
とか <数字>y
とかを教えてもらった。あと
Vimでバックスペース使ったら負けだから
と言われてしまったのでバックスペースと矢印キーをなるべく使わずにプログラム書きたいと思います。でもTextMateとかCodaとか便利だからついつい使ってしまうんよね…。
プログラムが全然書けない
思ってたよりもプログラムができないことに気がついた。お題を与えられて、制限時間があるなかでコードを書いていかなければならない。しかもペアプログラミングなので一人でちんたら時間をかけて書くわけにもいかない。そしてやっぱ人に見られてると緊張する。Rubyの基本的なメソッドとかが分かってなくて教えてもらいながら書いてたけど、わからないと緊張してしまって頭が真っ白になって何も書けなくなる。いつもリファレンス本を片手にコードを書き捨てていたので、よくないなぁと思った。
というか、そもそも自分は仕事であまりコードを書いてないのだ。TDD Boot Campに来てる人たちはみんな公私ともにばりばりコードを書いててとても楽しそうだった。なんだかとても羨ましかった。
いろいろ考えないとなー、と思わせられた勉強会だった。
Nokogiri のインストールに失敗しない Ruby 2.1.2 のインストール方法
シェルの履歴から適当に拾って
CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl` --with-gcc=clang" rbenv install 2.1.2
とやったら nokogiri のインストールでこけた。
gem install nokogiri
Building native extensions. This could take a while...
Building nokogiri using packaged libraries.
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/Users/morygonzalez/.rbenv/versions/2.1.2/bin/ruby extconf.rb
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/morygonzalez/.rbenv/versions/2.1.2/bin/ruby
--help
--clean
--use-system-libraries
--enable-static
--disable-static
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--enable-cross-build
--disable-cross-build
extconf failed, exit code 1
Gem files will remain installed in /Users/morygonzalez/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Users/morygonzalez/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/extensions/x86_64-darwin-13/2.1.0-static/nokogiri-1.6.2.1/gem_make.out
Installing REE with rbenv with iconv support and Homebrew — eddorre という記事を参考に、 --with-iconv-dir
オプションをつけて Ruby インストールしたらうまくいった。
CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl` --with-iconv-dir=`brew --prefix libiconv` --with-gcc=clang" rbenv install 2.1.2
git commit --amend --no-edit 便利
なんか作業してて変更発生して一旦 git commit
したとします。例えば行末の空白(trailing white space)刈りをしていたとしましょう。一通り刈り終わって git commit
して別のファイル開いたらまた trailing white space があったとします。さっき "remove trailing white space" とコミットログを残したのにまた同じの書くのは意味ないし同じようなことやってるコミットを二つに分ける意味はない。なので git commit --amend
すると思うんですけど(じゃんじゃんコミットして後で git rebase -i
するやり方もあるけど remote に push 後だったら force push しないといけなくてだるい)、単なる git commit --amend
だとエディターが立ち上がってコミットログを確認して保存して終了しないといけない。非常にだるい。 git commit --amend
のエディター立ち上がらないオプションとかないのかと調べていたら --no-edit
というオプションがあることを知った。エディター立ち上がらずに --amend できて非常に便利。これまで「現在の作業内容をどこまで終わらせてからコミットするか」を考えるのが結構苦痛だったんだけど、 git commit --amend --no-edit
のおかげでリストカット感覚でコミットしていけそう。
Marked.app で GitHub Flavored Markdown を使う
MacVim で Markdown 形式で文章を書いて Marked.app でプレビューしてた。 Marked.app 、便利なんだけどリストのネストの解釈が GitHub とかの Markdown と違ってて、スペース 4 つ入れないといけないのがだるかった。あとコードのシンタックスハイライトも GitHub のに比べたら弱い。やはり GitHub Flavored Markdown で Markdown をプレビューしたい。
ここを読めばやり方が書いてある。
GitHub Flavored Markdown と互換にしたいなら結局 GitHub が使っていると公言している redcarpet と pygments.rb (と Python の Pygments )がいることになる。 Docter というその辺の gem をラップする Node.js 製のソフトを使えと書かれているけどいらないものは入れたくなかったので gem install pygments.rb redcarpet
するだけにとどめた。
rbenv とか rvm でインストールした Ruby のバージョンで gem をインストールして使おうとすると失敗するらしいのであまり気が進まなかったけど sudo
つけてシステムルビーにインストールした。
そんでもって同じ URL に書いてある Docter の Docter/bin/github-flavored-markdown.rb at master · alampros/Docter をパクってちょっと改変してから使うことにした。これをテキトーな名前で保存して chmod a+x
する。
なんか HTMLwithPygments#header
は引数三つ受け取れるようにしてないとエラーになるっぽい。あと style は Marked で当たるのでここで当てる必要なさそう。
Marked.app 側の設定で Custom Markdown Processor にチェックを入れてファイルのパスを指定すればオッケー。
Marked.app でも GitHub Flavored Markdown に近いかたちで Markdown のプレビューができるようになるのでドキュメント大量生成するしかないですね。
iCloud の調子悪くて TimeMachine から復元したら Adobe のソフトが死亡
日曜の朝に Mac を触っていたら突然 OS が落ちた。しょうがないのでスタートボタンを押して OS を起動させた。 OS 起動後、メッセージを見ようとするけど Messages.app 起動時にクラッシュして見られない。
一旦 iCloud アカウントからログアウトして再ログインしたらいけるかなと思ってログアウトして再度ログインを試みる。しかし各種設定をオンにしてもサーバーとの通信に失敗しているようで、 iCloud の利用ができない状態になってしまった。
同時にインターネットアカウント設定が出来ないことに気がつく。「インターネットアカウント を読み込めませんでした」というエラーが出る。
Apple Support Discussion で見かけた Unable to load iCloud and Internet...: Apple Support Communities を参考に ~/Library/Caches/com.apple.iCloudHelper
を消して com.apple.iCloudHelper を kill してログアウト -> ログインを試すもダメ。 iCloud 関連で用いるファイルにロックがかかっている状況で OS が突然停止して iCloud 死んだぽかった。
英語の Apple Support Discussion の情報を一通り眺めて試してみたけど Messages.app とインターネットアカウント設定は復活せず、あきらめて TimeMachine のバックアップデータから復元することにした。 33 時間かかって復元は終わった。 Messages.app は無事起動するようになったが万事元通りとはならず、アドビ系のソフトが全滅した。
まえ MacBook の HDD を SSD に変えたときに TimeMachine のバックアップから復元したら同じように Adobe CS4 のライセンシングが機能しなくなって Photoshop とか使えなくなった。前回はハードドライブが変わったからそうなったのかと思っていて、同じ SSD に復元するのであればこういうことは起こらないのではないかと勝手な期待を抱いて復元してみたら、案の定ライセンシングが機能しなくて起動しなくなった。
前回はディスクケースに取り出した古い HDD を入れてディスクから Mac を起動してアドビ系のライセンス認証を解除して回ることで Photoshop とか起動できるようになった。今回はディスクの換装ではないので古いドライブが存在しているわけではなく消去して上書きインストールされているので、旧データの OS を起動してライセンス認証を解除するということもできない。 Adobe が CS4 向けに提供しているライセンス修復ツールは PowerPC アプリケーションというクソっぷりで、 Intel CPU の Mavericks で起動するわけもなく。どうせ Adobe のサポートとかに電話しても Mavericks で CS4 の動作は保証しておりませんとか言われるだけだろう。つらい。
Adobe のソフト、基本的に異常な操作感だし使いたくないけど、印刷屋に年賀状とかのデータを送るときにどうしても使わないといけないのがだるい。国はアドビ対策基本法とか制定してアドビ倒産に追い込んで欲しい。
TimeMachine のバックアップから復元するときはご面倒さまでも Adobe ソフトのライセンス認証を解除してから行われることをおすすめします。最近の Creative Suite ではこういうことおこんないのかな。マジでクソい。
追記(2014/05/08)
昨夜、一旦ソフトをアンインストールして入れ直したら Photoshop とか使えるようになった。ライセンシングが機能しなくなったらインストールし直せば何とかなるようです。ディスクが何枚にも分かれてるので時間かかるけどな。