2013年2月に読んだ本

ペンギンもクジラも秒速2メートルで泳ぐ

海洋生物の観察が困難を極めることは想像に難くないでしょう。場所が南極であるなら尚更のこと。
その苦労をものともしない彼の知的興奮に対する飽くなき執念には感服するばかりです。

「求む男女、ケータイ圏外。わずかな報酬。極貧。失敗の日々。耐えざるプレッシャー。就職の保証なし。ただし、成功の暁には、知的興奮を得る」

難壁の先には、乗り越えものにしか分からない知的興奮があるようです。
実際に体験した著者のそれに比べれば微々たるものですが、本書を読んだ人しか得ることの出来ない知的興奮があるのもまた事実です。
あなたに向けて書かれた知的興奮への招待状を受け取らない手はありません。

ペンギンもクジラも秒速2メートルで泳ぐ―ハイテク海洋動物学への招待 (光文社新書)

ペンギンもクジラも秒速2メートルで泳ぐ―ハイテク海洋動物学への招待 (光文社新書)


ファウンデーション

ネタバレがあります
昨年の誕生日に頂いた本にも関わらず、読了が遅れてしまって申し訳ありません。
SF的なものを読んだことはあっても、SF小説は読んだことがなかったので、最初に何を読むべきか大変迷いましたが、結果的にこれを最初に読むことが出来て幸運でした。(星新一がSF作家だという指摘は全面的に正しいのですが、僕の中に限って言えば彼はSF作家というよりSS作家です)
SF小説で、近未来で、宇宙で、国家で、となると戦争を真っ先に思い浮かべ、まだかまだかと戦いの描写を待ちわびてしまいましたが、この本で繰り広げられる争いは舌戦のみです。
本書の内容の濃さが交渉や論争といった政治に由来しているという点が面白いですね。

唯一難点だったのは、登場人物の名前が覚え辛いことです。元々、小説に登場する人名を覚えるのが苦手なのですが、1人あたりの登場時間が極めて短いので、名前を覚えた頃には次の章に話が進んでしまいます。そして次章では登場人物が総入れ替え...という流れには少々苦労しました。
ただ、その難点は話の構成上仕方の無いものですし、何百年というスケールの大きな時代の変遷を鳥瞰出来る楽しみに比べれば取るに足らないものでした。
時代を越えて意志が引き継がれていく様はサガフロンティア2を彷彿とさせ、僕の心を熱くさせてくれたので早く続きが読みたいです。


ファウンデーション ―銀河帝国興亡史〈1〉 (ハヤカワ文庫SF)

ファウンデーション ―銀河帝国興亡史〈1〉 (ハヤカワ文庫SF)


きまぐれロボット

星新一作品の書評の仕方が分からない...

きまぐれロボット (角川文庫)

きまぐれロボット (角川文庫)


ビジネスで失敗する人の10の法則

弾氏の書評と本を照らし合わせた自分の経験によると

「絶賛オススメである」
「内容、特に本文への言及が少ない」

の2点が並立するため、”この本はハズレ”と推定します。

もし立ち読みしてみて良かったらまた書きます。

http://blog.livedoor.jp/dankogai/archives/51202423.html

何も言うまい

ビジネスで失敗する人の10の法則

ビジネスで失敗する人の10の法則


以下、書評はまだですが読み終えた本


スキゾエヴァンゲリオン

庵野秀明 スキゾ・エヴァンゲリオン (\800本 (9))

庵野秀明 スキゾ・エヴァンゲリオン (\800本 (9))

勝ち続ける意志力

勝ち続ける意志力 (小学館101新書)

勝ち続ける意志力 (小学館101新書)

gemがシステム内にあるにも関わらずbundle installが失敗する理由

前回の記事に関する指摘を@さんから頂いたので、こちらに書きます。

bundlerでインストール出来るのはrubygemsやGitHubに存在するgemだけで、それ以外の場所にあるgemは基本的に扱えません。
前回、bundle installの時にエラーが返っていたのはmecab-rubyというgemがrubygemsにもGitHubにも存在しないからです。

pathを指定しない場合のbundle installでは、まず最初にシステム内にgemがあるかを確認した後に、システム内にはないgemをrubygemsやGitHubからインストールします。
pathを指定しなかった時にbundlerのエラーが返ってこなかったのはそのせいです。

本来、Gemfileにはbundlerで扱える、rubygemsとGitHubに存在するgemのみ書くべきだそうです。
mecab-rubyのような未登録gemはbundlerを介さず、gemを利用したいファイルでrequireするそうです。
うーむ、知りませんでした......。

mecab-rubyのinstallという沼にはまった

何十記事読んだか覚えていませんが、最終的に動きました。

MeCab および MeCab-Ruby をインストールする 詳細版 - CasualConc J
ここが詳細に書いてくれていて助かるのですが、情報量が多すぎるので要約します。
(省いている手順もあるので、下記の手順でだめならさきのリンクを参照して下さい)

ダウンロードリンク
からmecab-ruby-0.994.tar.gzファイルをダウンロードしたら、次はそのディレクトリに移動します。( wgetを使えばもっと簡単にダウンロード出来ます。僕も使えば良かった)

$ cd mecab-ruby-0.994
$ make install
$ ruby test.rb

ここまででmecab-ruby-0.994ディレクトリにあるtest.rbを形態素解析することには成功しました。

ただ、mecab-rubyをgemとして使うにはまだステップが必要です。
その手順はこちらを参考にしました。
albatro/README.org at master · akicho8/albatro · GitHub
ディレクトリはmecab-ruby-0.994のままでgemをbuildすると......

$ gem build mecab-ruby.gemspec
Successfully built RubyGem
Name: mecab-ruby
Version: 0.99
File: mecab-ruby-0.99.gem

versionが0.99のgemが生成されました。

$ sudo gem install mecab-ruby-0.99.gem

でgemのinstallが出来ました。長かったですね。

意気揚々と自分のアプリ開発を進めようとGemfileに

gem 'mecab-ruby'

と書いてbundle installすると...

Could not find gem 'mecab-ruby-0.99 (>= 0) ruby' in the gems available on this machine.

どうやらmecab-rubyを使うアプリではbundle installの際にpathを指定してはいけないようです。
pathをデフォルトに戻す方法が分からなかったので、アプリを作り直しました。

作り直してbundle installすると

Using mecab-ruby (0.99) 
Your bundle is complete! 

出来ました。辛かったです

追記
Bundlerに関する記述が間違っていたのでgemがシステム内にあるにも関わらずbundle installが失敗する理由 - nekovaの日記を読んで下さい

gitでbranchを切ってみたら

覚えることが増えました。

一昨日からソーシャルコーディングとやらを始めたんですが、大変ですね。
branchを切ってissueを解決したら

git add -u
git commit -v
git rebase
git push origin branch_name

この時点でbranchではなくmasterで作業をしていたことが発覚したので、masterをbranchにmergeしなくてはいけません

git checkout branch_name
git merge master 

pushし直したのは良いのですが、commit messageに誤りがあったのでそれを強引にpushし直します。

git commit --amend
git push -f origin branch_name

という手順でpull requestまでこぎ着けました。



branchを切ってからpull requestをするまでに読んだ記事を紹介します

git add- uの再確認
git add -A と git add . と git add -u の違い - nekovaの日記

作業しているbranchを確認
Gitブランチ名を__git_ps1でbashプロンプトに表示 - 130単位

pull requestまでの全体の流れを把握
GitHubへpull requestする際のベストプラクティス - hnwの日記

rebaseが何をしてくれているか
git rebase -i はやっぱりイケてる件【git】【rebase 】【iオプション】 - DRYな備忘録

間違えてpushしてしまった時
反則技 git push -f #git #AdventCalendar #deploy - Qiita

Rubyで形態素解析

以前から興味のあったMeCabに手を出しました。

$ brew install mecab
$ brew install mecab-ipadic

でインストールは完了です。mecab-ipadicは辞書だと思います。

試しに「お腹空いた。そろそろご飯食べたい」という文章を形態素解析してみました。

$ mecab
お腹空いた。そろそろご飯食べたい
お腹	名詞,一般,*,*,*,*,お腹,オナカ,オナカ
空い	動詞,自立,*,*,五段・カ行イ音便,連用タ接続,空く,アイ,アイ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。	記号,句点,*,*,*,*,。,。,。
そろそろ	副詞,助詞類接続,*,*,*,*,そろそろ,ソロソロ,ソロソロ
ご飯	名詞,一般,*,*,*,*,ご飯,ゴハン,ゴハン
食べ	動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
たい	助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ

おおお...。
「助動詞」で「たい」の単語がある場合、その一つ前の単語(さきの文章でいう「食べ」)を変数に代入......なんてことは可能なんですかね?
明日やってみよう

余談
YAHOOの形態素解析APIが優秀らしいと聞いたので機会があれば使ってみたいです

QuickTime PlayerとGIFBreweryでGIFを作ろう

QuickTime Playerの画面収録機能を使えば、デスクトップの動画を簡単に撮ることが出来ます。
保存したmp4ファイルをGIFBreweryを使ってGIFに変換すれば簡単に動画からGIFが作れます

f:id:nekova:20130220215225g:plain

git add -A と git add . と git add -u の違い

stack overflowに僕の知りたかったことが書かれていたので要約します。
結論から言えば、git add -Agit add . git add -u を足したものです。


git add . はワーキングツリーに新規作成された、もしくは変更されたファイルをaddします。つまり、rmコマンドなどで削除されたファイルはaddされません。

git add -u は一つ前と最新のステージを比較して、変更があった部分のみをaddします。つまり、新しく作られたファイルはaddされません。

最初にも述べたように、git add -Agit add . git add -u を足したものですから、新規作成、修正、削除といった全てのファイルをaddします。

分かり易い例がさきのリンクに記述されているので読んでみてください。


追記
git add -uはupdateのu, git add -Aはallのaだと最近気付きました......。

追記 2015/06/09

ಠ_ಠ $ git add -A
warning: The behavior of 'git add --all (or -A)' with no path argument from a
subdirectory of the tree will change in Git 2.0 and should not be used anymore.
To add content for the whole tree, run:

  git add --all :/
  (or git add -A :/)

To restrict the command to the current directory, run:

  git add --all .
  (or git add -A .)

With the current Git version, the command is restricted to the current directory.

Git 2.0から git add --all もとい git add -A の仕様が変わりました
git add -A . では 指定したdirectory( . だとcurrent directory) のfileをすべてaddします
これまで通りの git add -Aとして使いたい場合は git add -A :/として使ってください