Range: Why Generalists Triumph in a Specialized World

Positiviteaのひなこさん後半の回から。司会者の1人の旦那さん(金融->弁護士->コンサルタント)がお勧めしてた。yancan.fmでも紹介されてたのでNYPLでebook予約した。4月に本を借りられた。

昨今は複雑で明確な答えがでないような問いが世の中に溢れている。このような場合では専門知識を持ちつつ幅広く知見を広げて、同じ構造を持つ問題を見たときに解決方法が浮かぶような思考の柔軟さを持てるようになれるとイノベーションを起こせる。

初めは子育てに役立つものかと思って読み始めたが、後半では大成していない自分の生き方を肯定してくれる本になった。

The cover of Range

Range

Introduction Roger vs. Tiger

タイガーウッズは小さい頃からずっとゴルフばかりやっていた。一方でロジャーフェデラーは色んなスポーツを経験してから自分が進む道を決めた。小さい頃(子供-16歳ぐらいまで)から一つのことをずっとやらせる、打ち込むのりも、"Sample" periodは色んな事を体験させる時期を持たせるのがいい。

1 The Cult of Head Start

早くに始めることは良いことだと思われているが、それはチェスやゴルフのようなシンプルで同じパターンを繰り返すものの場合に限られる。世の中はもっと複雑だ。

2 How the Wicked World is Made

医者の世界でも「金槌を持つと全てが釘に見える」問題があった。心臓外科医の大きな会議がある期間は患者の生存率が大きい。とある危険な手術をやり過ぎているという事だった。

昔の人より今の人の方がIQテストの成績がいい。辺境で暮らす人達は近代国家で暮らす人認識が、目の錯覚レベルですら異なる。優れた学者でも分野を超えた知識を得る人は稀である。

Tiger Mother (Amy Chua; 娘はSophiaとLulu)は小さい頃から一つの楽器(ピアノかバイオリン)を続けるべきと説く。

17世紀のVeniceで音楽がとても発展したその時にとある施設figlie del coroで子供に音楽を教える方法は様々な楽器を触れさせる方法だった。経験を積んでいる人はそのいっぽ手前の人を教えてそのいっぽ手前の人はまたその後の人を教えると言う役割を持っていた。

4 Learning, Fast and Slow

Generation effect. 間違っても良いから回答を出してから答え合わせをすると、答えを覚えるのとでは前者の方が良い効果がある。自信たっぷりで間違えると更に良い。一方で手続きだと思って覚えてしまうとテストの勉強としては効率が良いかもしれないが本質が身につかない。

何かを学ぶ時に間隔を空けて学ぶと良い。とあるスペイン語の学習において、同日にテストをやる群と1ヶ月後にやる群を8年後に比べると後者が良い成績を残した。

早期教育(closed skill、目の前のテストのために簡単に素早く覚えるもの)は他の子に追いつかれてしまう。赤ちゃんに早くから歩く方法を教えてもいつかは皆歩けるのと同じ。大切なのはゆっくりと複雑なことを学ぶこと(open skill, deep learning)。Learning to recognize deep structural commonalities in types of problems. “Far transfer”というのは新しい問題に適用できるような知識が柔軟であること。

5 Thinking outside Experience

16世紀にKeplerは天体の動きを説明するためのさまざまなアナロジーを使った。Dedre Gentnerはアナロジー研究者。

健康な組織を痛めずに腫瘍を殺す方法を考える際に、1つの砦を複数に分けた部隊で同時に攻める作戦や、火事に水を同時にかける話を聞いて思いつけると良い。

Inside view. Daniel KahnemanとAmos Tversky曰く内部事情を知っている程予想が外れてしまう事がある。エキスパートがプロジェクトの終了が2年と予想したら実際は8年掛かった。「自分のプロジェクトは大丈夫」という考え。Dan Lovalloの実験ではreturn on investmentを幾つかのプロジェクトで予想して、private equity firmの人に見て貰ったら自分達のプロジェクトを似た構造のプロジェクトよりもRoIを高く見積もっていた事がわかった。Northwestern universityにはintegrated science programという分野をまたがった領域にアナロジーがあることを探し出す専攻がある。

6 The Trouble with Too much Grit

アメリカの軍隊で我慢してずっと働くというのは人気が減ってきている。数年続けるという約束で現金を上げる策をやったがこれも失敗。キャリアや働く場所のマッチングを向上したら辞める人が減った。
自分に合うものを見つけるまで幾つか試してみるという作戦が良い。ただし「長期的視点を持っていない」と見られる。

7 Flirting with Your Possible Selves

Strength-finderをやるよりも実際に自分をその場に置いて実験してみた方が自分に合っているかどうかわかる。

Instead of working back from a goal, work forward from promising situations. This is what most successful people actually do anyway.

http://www.paulgraham.com/hs.html

今は有名な作家達(Game of Thrones, The Perfect Storm)も書く前は色んな職業に就いていた。

A person don’t know what he can do unless he tryes. Trying things is the answer to find your talent.

8 The Outsider Advantage

Eli Lillyという化学の会社が、会社が解きたい難しい問題をウェブサイトに掲載したらその分野の特許を扱う弁護士など色んな人からアイデアを貰えた。

InnoCentiveという会社を作った。外部からアイデアを見つけ出して報酬を払う仕組みを作る会社。

アラスカの原油流出事故で約20年後にも海に有る油を取り除くアイデアをOil Spill Recovery InstituteがInnoCentiveで募集したら答えが見つかった。コンクリートに振動を与える装置が水と混ざった油にも役に立った。

9 Lateral Thinking of Withered Technology

Lateral: 横方向の. Lateral thinking: 自由な思考.
電車の中で電卓で遊んでいる人を見て任天堂の横井はGame & Watchを作るきっかけになった。当時LCDスクリーンは枯れた技術だがゲームを作っている人はいなかった。これは後のゲームボーイになる。
3MのOuderkirkらが特許を調べるとT型の発明家(polymath)がインパクトのある発明をしていた。スペシャリストよりは1つの分野が浅いが、色んな分野(USPTOには約450の分野がある)に特許がある人が強い。Ouderkirk曰く

if you are working on well-defined and well-understood problems, specialists work very very well. As ambiguity and uncertainty increases , which is the norm with system problems, breadth becomes increasingly important.


10 Fooled By Expertise

内部の知識を持っているせいで予測が外れることが多い。正しい予測をする人は抱えている問題と似た構造を持つものを探してくると良い。例えばギリシャEUを離脱する問題点でも、確かに家を離脱した国は今までなかったか国際協定を離脱したり通貨を強制的に変換するといった過去の事例はあった。

11 Learning to Drop Your Familiar Tools

NBAのクラスでやるCarter Racingというケーススタディ。エンジンが壊れるかも知れないがレースするかしないか。足りないデータは何かを聞くべき。
Challengerの打ち上げ失敗ではNASAとThiokol社の会議でThiokolがO ringに問題があるという話がでたが、Thiokol社のエンジニアが十分なデータを提供出来なかったから打ち上げにGoサインが出されてしまった。NASAのデータ主義のせいで失敗してしまった。
山火事での消防隊の活動も道具を置いて逃げられないので火に巻き込まれてしまう事がある。使い慣れた道具はその人の役割の象徴でもある。いざという時、普段と違う場面なのに使い慣れた物を手放せずに致命的な間違いを犯してしまう。

Conclusion: Expanding Your Range

Don't feel behind.

自分では無い誰かが何か凄いことをしているとしても自分は遅れをとっていると感じる必要は無い。昨日の自分と今日の自分を比べて少しずつ進歩していけばよいのである。

 

ニューヨーク転勤

2011年4月からちょうど3年半働いていた東京オフィスを離れて、2014年10月にアメリカの本社の同じチームに転勤しました。

Untitled

正確にはNew York Cityの隣のJersey Cityというところで働いています。New Yorkと言ったほうがわかりやすいのでNew Yorkに転勤と言っています。

東京のチームは小さかったので、会社内でうちのチームが提供している社内システムのサポートと開発を半々ぐらいにやっていました。うちのチームの東京オフィスはずいぶん特殊で、「広く浅く」業務の端から端まで見渡して、ユーザが困っているところを助けたり、PerlJavaでいろいろなものを実装していました。労働環境は素晴らしく、同僚や同期にも恵まれてとても充実した社会人生活を送っていましたが、より「狭く深く」ソフトウェア開発業務に専念したいという思いがありました。

このことをしばらく前から東京やNew Yorkにいる上司に相談していて、このたび本社のチームの都合がつくとのことで転勤となりました。これまで主に電話でやりとりしていたチームメイトと対面でプロダクトのデザインやトラブルシューティングのことを話すことができ非常に働きやすいです。生活面でもドル建ての銀行口座やクレジットカードを作ったり、レストランの注文が意味不明だったり、部屋を契約したりとずっと日本で生活してきた自分にとって新鮮なことばかりで楽しいです。

この年になりながら日々新しいことに挑戦できるのは幸せなことです。頑張ります。

はてなスターやWishlistでの応援大歓迎です。
Suztomo New York Survival List

2013年目標

ダイエットで健康診断で再検査なしを目指す

ちゃんとKaggleをやる

Kaggleで勝つ

仕事以外でお金儲けする(いいものを作って対価を得る). 考えて実装して、会社の承認など含めてです

Arduinoで飛ぶものを作る

2012年まとめ

特に大したことできませんでした。仕事に慣れてきた(良いことか悪いことかはともかく)こと、ローマとオーストラリアに行けたことぐらいだと思います。

趣味のウェブサービスは公開してないですが動くものを作って自分で使ってみたら面白くなかったです。

clckwrksの続き

今回ようやく上の画像までたどり着けます。

iconvのfile was built for unsupported file format which is not the architecture being linked (i386)のwarningは"+universal"を付けてやればいいぽいので、

sudo port install gd2 +universal                                             
sudo port install file +universal

で気を取り直して

clckwrks/clckwrks-plugin-media $ cabal install
...
Installing library in
/Users/suztomo/Library/Haskell/ghc-7.4.1/lib/clckwrks-plugin-media-0.2.2/lib
Registering clckwrks-plugin-media-0.2.2...
Updating documentation index /Users/suztomo/Library/Haskell/doc/index.html

次はclckwrks-plugin-bugsディレクトリでcabal install

~/Documents/.../clckwrks/clckwrks-plugin-bugs $ cabal install                  
Resolving dependencies...
Linking ./dist/setup/setup ...
Undefined symbols:
  "_iconv_close", referenced from:
      _hs_iconv_close in libHSbase-4.5.0.0.a(iconv.o)
     (maybe you meant: _hs_iconv_close)
  "_iconv", referenced from:
      _hs_iconv in libHSbase-4.5.0.0.a(iconv.o)
     (maybe you meant: _base_GHCziIOziEncodingziIconv_iconvEncoding5_info, _base_GHCziIOziEncodingziIconv_iconvEncoding7_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding6_info , _hs_iconv_open , _base_GHCziIOziEncodingziIconv_iconvEncoding6_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding7_info , _base_GHCziIOziEncodingziIconv_iconvEncoding5_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding4_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding3_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding2_info , _base_GHCziIOziEncodingziIconv_iconvEncoding2_closure , _hs_iconv , _base_GHCziIOziEncodingziIconv_iconvEncoding3_info , _hs_iconv_close )
  "_iconv_open", referenced from:
      _hs_iconv_open in libHSbase-4.5.0.0.a(iconv.o)
     (maybe you meant: _hs_iconv_open)
ld: symbol(s) not found
collect2: ld returned 1 exit status
cabal: Error: some packages failed to install:
clckwrks-plugin-bugs-0.2.4 failed during the configure step. The exception
was:
ExitFailure 1

iconv_openがないようです。GHC 6.12.2 on Mac OS X from GHC-6.12.2-i386.pkg fails with "Undefined symbols: "_iconv_close", referenced from: _hs_iconv_close in libHSbase-4.2.0.1.a(iconv.o)を見るに/usr/libと/opt/local/libにlibiconv.dylibというファイルがあって、後者には_iconv_openというシンボルがないので、LIBRARY_PATHを/usr/libにしてやります。

suztomo@SuzBookPro.local ~/Documents/LanguageStudy/Haskell/clckwrks/clckwrks/clckwrks-plugin-bugs
~/Documents/.../clckwrks/clckwrks-plugin-bugs $ export LIBRARY_PATH=/usr/lib 
suztomo@SuzBookPro.local ~/Documents/LanguageStudy/Haskell/clckwrks/clckwrks/clckwrks-plugin-bugs
~/Documents/.../clckwrks/clckwrks-plugin-bugs $ cabal install               
Resolving dependencies...
Linking ./dist/setup/setup ...
Configuring clckwrks-plugin-bugs-0.2.4...
Building clckwrks-plugin-bugs-0.2.4...
Preprocessing library clckwrks-plugin-bugs-0.2.4...
[ 1 of 14] Compiling Paths_clckwrks_plugin_bugs ( dist/build/autogen/Paths_clckwrks_plugin_bugs.hs, dist/build/Paths_clckwrks_plugin_bugs.o )
[ 2 of 14] Compiling Clckwrks.Bugs.Types ( Clckwrks/Bugs/Types.hs, dist/build/Clckwrks/Bugs/Types.o )
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package magic-1.0.8 ... <command line>: can't load .so/.DLL for: libmagic.dylib (dlopen(libmagic.dylib, 9): image not found)
cabal: Error: some packages failed to install:
clckwrks-plugin-bugs-0.2.4 failed during the building phase. The exception
was:
ExitFailure 1

でもこれだと/opt/local/libにいれたlibmagic.dylibをさがせないので

export LIBRARY_PATH=/usr/lib:/opt/local/lib

してやります。

Documentation created: dist/doc/html/clckwrks-plugin-bugs/index.html
Installing library in
/Users/suztomo/Library/Haskell/ghc-7.4.1/lib/clckwrks-plugin-bugs-0.2.4/lib
Registering clckwrks-plugin-bugs-0.2.4...
Updating documentation index /Users/suztomo/Library/Haskell/doc/index.html

clckworks-plugin-bugsをインストールできました。

次はclckwrks-theme-clckwrksです

~/Documents/.../clckwrks/clckwrks-theme-clckwrks $ cabal install                              
Resolving dependencies...
In order, the following will be installed:
clckwrks-theme-clckwrks-0.1.18 (reinstall)
Warning: Note that reinstalls are always dangerous. Continuing anyway...
[1 of 1] Compiling Main             ( Setup.hs, dist/setup/Main.o )
Linking ./dist/setup/setup ...
Undefined symbols:
  "_iconv_close", referenced from:
      _hs_iconv_close in libHSbase-4.5.0.0.a(iconv.o)
     (maybe you meant: _hs_iconv_close)
  "_locale_charset", referenced from:
      _localeEncoding in libHSbase-4.5.0.0.a(PrelIOUtils.o)
  "_iconv", referenced from:
      _hs_iconv in libHSbase-4.5.0.0.a(iconv.o)
     (maybe you meant: _base_GHCziIOziEncodingziIconv_iconvEncoding5_info, _base_GHCziIOziEncodingziIconv_iconvEncoding7_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding6_info , _hs_iconv_open , _base_GHCziIOziEncodingziIconv_iconvEncoding6_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding7_info , _base_GHCziIOziEncodingziIconv_iconvEncoding5_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding4_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding3_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding2_info , _base_GHCziIOziEncodingziIconv_iconvEncoding2_closure , _hs_iconv , _base_GHCziIOziEncodingziIconv_iconvEncoding3_info , _hs_iconv_close )
  "_iconv_open", referenced from:
      _hs_iconv_open in libHSbase-4.5.0.0.a(iconv.o)
     (maybe you meant: _hs_iconv_open)
ld: symbol(s) not found
collect2: ld returned 1 exit status
cabal: Error: some packages failed to install:
clckwrks-theme-clckwrks-0.1.18 failed during the configure step. The exception
was:
ExitFailure 1

export LIBRARY_PATH=/usr/libしてやると動きました。

~/Documents/.../clckwrks/clckwrks-theme-clckwrks $ cabal install               
Resolving dependencies...
In order, the following will be installed:
clckwrks-theme-clckwrks-0.1.18
Linking ./dist/setup/setup ...
Configuring clckwrks-theme-clckwrks-0.1.18...
Building clckwrks-theme-clckwrks-0.1.18...
Preprocessing library clckwrks-theme-clckwrks-0.1.18...
[1 of 5] Compiling Paths_clckwrks_theme_clckwrks ( dist/build/autogen/Paths_clckwrks_theme_clckwrks.hs, dist/build/Paths_clckwrks_theme_clckwrks.o )
[2 of 5] Compiling Theme.Template   ( Theme/Template.hs, dist/build/Theme/Template.o )
[3 of 5] Compiling Theme.Home       ( Theme/Home.hs, dist/build/Theme/Home.o )
[4 of 5] Compiling Theme.Page       ( Theme/Page.hs, dist/build/Theme/Page.o )
[5 of 5] Compiling Theme.Blog       ( Theme/Blog.hs, dist/build/Theme/Blog.o )
[1 of 5] Compiling Paths_clckwrks_theme_clckwrks ( dist/build/autogen/Paths_clckwrks_theme_clckwrks.hs, dist/build/Paths_clckwrks_theme_clckwrks.p_o )
[2 of 5] Compiling Theme.Template   ( Theme/Template.hs, dist/build/Theme/Template.p_o )
[3 of 5] Compiling Theme.Home       ( Theme/Home.hs, dist/build/Theme/Home.p_o )
[4 of 5] Compiling Theme.Page       ( Theme/Page.hs, dist/build/Theme/Page.p_o )
[5 of 5] Compiling Theme.Blog       ( Theme/Blog.hs, dist/build/Theme/Blog.p_o )
Registering clckwrks-theme-clckwrks-0.1.18...
Running Haddock for clckwrks-theme-clckwrks-0.1.18...
Warning: The documentation for the following packages are not installed. No
links will be generated to these packages: rts-1.0
Preprocessing library clckwrks-theme-clckwrks-0.1.18...
Haddock coverage:
   0% (  0 /  4) in 'Paths_clckwrks_theme_clckwrks'
   0% (  0 /  3) in 'Theme.Template'
   0% (  0 /  3) in 'Theme.Home'
   0% (  0 /  2) in 'Theme.Page'
   0% (  0 /  4) in 'Theme.Blog'
Documentation created: dist/doc/html/clckwrks-theme-clckwrks/index.html
Installing library in
/Users/suztomo/Library/Haskell/ghc-7.4.1/lib/clckwrks-theme-clckwrks-0.1.18/lib
Registering clckwrks-theme-clckwrks-0.1.18...
Updating documentation index /Users/suztomo/Library/Haskell/doc/index.html


このあとやっぱりiconvのエラーがでたので

extra-lib-dirs: /usr/lib /opt/local/lib

という行をgd-3000.7.3とmagic-1.0.8のcabalファイルに追加したあとcabal installを行い、clckwrksのサブディレクトリでももう一度cabal clean; cabal install --force-reinstallsをしたらちゃんと入りました。

clckwrks-dot-com-serverコマンド

このコマンドを実行するとサーバが動くらしい。

 $ clckwrks-dot-com-server --http-port 8000 --jstree-path=./jstree --json2-path=./json2 --jquery-path=./jquery       
Static Server Started.
clckwrks-dot-com-server: user error (Pattern match failure in do expression at Clckwrks/Page/Types.hs:152:8-18)

Page/Types.hsを見てみるとnextUUIDの取得に失敗している様子。

150 initialFeedConfig :: IO FeedConfig
151 initialFeedConfig =
152     do (Just uuid) <- nextUUID
153        return $ FeedConfig { feedUUID       = uuid
154                            , feedTitle      = fromString "Untitled Feed"
155                            , feedLink       = fromString ""
156                            , feedAuthorName = fromString "Anonymous"
157                            }

ためしにghciでやってみると

Prelude Data.UUID.V1> nextUUID
Nothing

やっぱりnextUUIDがnothingを返しています。 どうやらmaccatcherのSystem.Info.MAC.Fetchがifconfigのパースに失敗しているようです。書き換えてやりましょう。

fetchNICs                   ::  IO [(String, MAC)]
fetchNICs                    =  parser <$> i_config

とあるところを

fetchNICs                   ::  IO [(String, MAC)]
fetchNICs                    =  return [("en0", read "00:1f:5b:d7:01:e5") ] -- parser <$> i_config

としましょう。やっつけになってきましたね。cabal installで自分のMacにだけこの設定を反映してmaccatcherをインストールし、clckwrks-dot-comディレクトリもcabal install --force-reinstallsしてやりましょう。

~/Documents/.../clckwrks/clckwrks $ ls
Makefile                _darcs                  clckwrks-dot-com        clckwrks-plugin-media   jquery
README.html             clckwrks                clckwrks-plugin-bugs    clckwrks-theme-basic    json2
README.md               clckwrks-cli            clckwrks-plugin-ircbot  clckwrks-theme-clckwrks jstree
suztomo@SuzBookPro.local ~/Documents/LanguageStudy/Haskell/clckwrks/clckwrks
~/Documents/.../clckwrks/clckwrks $ clckwrks-dot-com-server --http-port 8000 --jstree-path=./jstree --json2-path=./json2 --jquery-path=./jquery
Static Server Started.
Listening on port 8000

動きました!


下にスクロールすると。。

"Invalid PageId 8" と表示されていますが、これはまだこのページが存在しないということです。http://www.clckwrks.com/C/ViewPage/3のページに従ってアカウントを作って、下のコマンドでアカウントを管理者に昇格させてあげましょう。

clckwrks-cli _state/profileData_socket
Just (ProfileData {dataFor = UserId {unUserId = 1}, username = "suztomo", email = Nothing, roles = fromList [Administrator,Visitor], attributes = fromList []})

"clckwrks-cli setAdmin 1"とかじゃないんですね。


そのあとは管理画面からページを8個つくってやれば、上に表示されているInvalid PageIdは消えます。

Haskellで書かれたCMS「clckwrks」を使ってみよう

http://www.clckwrks.com/

"Get started"

Get startedページにいきましょう。

makeでwgetのエラーがでるので"--no-check-certificate"をいれてあげましょう。

~/Documents/.../clckwrks/clckwrks $ cat Makefile

WGET=wget --no-check-certificate
all: json2/json2.js jstree/jquery.jstree.js jquery/jquery.js

json2/json2.js:
	mkdir -p json2
	$(WGET) https://raw.github.com/douglascrockford/JSON-js/master/json2.js -O json2/json2.js

jstree/jquery.jstree.js:
	mkdir -p jstree
	$(WGET) --no-check-certificate http://github.com/downloads/vakata/jstree/jstree_pre1.0_fix_1.zip -O jstree/jstree_pre1.0_fix_1.zip
	cd jstree ; unzip jstree_pre1.0_fix_1.zip

jquery/jquery.js:
	mkdir -p jquery
	$(WGET) http://code.jquery.com/jquery-1.7.2.js -O jquery/jquery.js

README.html: README.md Makefile
	echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"" > $@
	echo "    \"http://www.w3.org/TR/html4/strict.dtd\">" >> $@
	echo "<html><head><title>happstack-lite tutorial</title><link rel='stylesheet' type='text/css' href='hscolour.css' ></head><body>" >> $@
	HsColour -lit -css -partial $< | markdown --html4tags >> $@
	echo "</body></html>">> $@
	validate $@

.PHONY: all

で以下のディレクトリに移ってcabal installを実行しなさいとのこと。

clckwrks
clckwrks-cli
clckwrks-plugin-media
clckwrks-plugin-bugs
clckwrks-theme-clcwrks
clckwrks-dot-com

clckwrksでcabal installをしたらhappstack-authenticateが必要だったのことでcabal install happstack-authenticateをしたらエラーです。

...
cabal: Error: some packages failed to install:
happstack-authenticate-0.9.2 depends on ixset-1.0.4 which failed to install.
ixset-1.0.4 failed during the building phase. The exception was:
ExitFailure 1
suztomo@SuzBookPro.local ~/Documents/LanguageStudy/Haskell/clckwrks/clckwrks/clckwrks
~/Documents/.../clckwrks/clckwrks $ cabal install ixset
Resolving dependencies...
Configuring ixset-1.0.4...
Building ixset-1.0.4...
Preprocessing library ixset-1.0.4...
[1 of 2] Compiling Data.IxSet.Ix    ( src/Data/IxSet/Ix.hs, dist/build/Data/IxSet/Ix.o )
[2 of 2] Compiling Data.IxSet       ( src/Data/IxSet.hs, dist/build/Data/IxSet.o )
ghc: unrecognised flags: - -
Usage: For basic information, try the `--help' option.
cabal: Error: some packages failed to install:
ixset-1.0.4 failed during the building phase. The exception was:
ExitFailure 1

ixset-1.0.4は調子が悪いようです。

suztomo@SuzBookPro.local ~/Documents/LanguageStudy/Haskell/clckwrks/clckwrks/clckwrks
~/Documents/.../clckwrks/clckwrks $ cabal info happstack-authenticate
* happstack-authenticate (library)
    Synopsis:      Happstack Authentication Library
    Versions available: 0.9.2
    Versions installed: [ Not installed ]
    Homepage:      http://src.seereason.com/happstack-authenticate
    Bug reports:   [ Not specified ]
    Description:   A themeable authentication library with support for
                   username+password and OpenId.
    Category:      Web
    License:       BSD3
    Author:        Jeremy Shaw.
    Maintainer:    jeremy@seereason.com
    Source repo:   [ Not specified ]
    Dependencies:  base >4 && <5, acid-state ==0.6.*, aeson >=0.4 && <0.7,
                   authenticate ==1.2.*, blaze-html ==0.5.*, bytestring ==0.9.*,
                   containers ==0.4.*, ixset ==1.0.*,
                   happstack-server >=6.0 && <7.1, http-conduit ==1.4.*,
                   http-types ==0.6.*, fb ==0.9.*, safecopy ==0.6.*, mtl >=2.0,
                   pwstore-purehaskell ==2.1.*, QuickCheck >=2, text ==0.11.*,
                   time >=1.2 && <1.5, reform ==0.1.*, reform-blaze ==0.1.*,
                   reform-happstack ==0.1.*, unordered-containers ==0.2.*,
                   web-routes >=0.26 && <0.28, web-routes-happstack ==0.23.*
    Cached:        No
    Modules:
        Happstack.Auth
        Happstack.Auth.Blaze.Templates
        Happstack.Auth.Core.Auth
        Happstack.Auth.Core.AuthParts
        Happstack.Auth.Core.AuthProfileURL
        Happstack.Auth.Core.AuthURL
        Happstack.Auth.Core.Profile
        Happstack.Auth.Core.ProfileParts
        Happstack.Auth.Core.ProfileURL

ixset ==1.0.*ならいいそうなのでixset-1.0.3を使ってみます。

Installing library in
/Users/suztomo/Library/Haskell/ghc-7.4.1/lib/happstack-authenticate-0.9.2/lib
Registering happstack-authenticate-0.9.2...
Updating documentation index /Users/suztomo/Library/Haskell/doc/index.html

成功です。

気を取り直してclckwrksディレクトリでcabal install。なかなか時間がかかります。

Installing library in
/Users/suztomo/Library/Haskell/ghc-7.4.1/lib/clckwrks-0.8.3/lib
Registering clckwrks-0.8.3...
Updating documentation index /Users/suztomo/Library/Haskell/doc/index.html


clckwrks-plugin-mediaは画像系のCライブラリが必要なようです。

~/Documents/.../clckwrks/clckwrks-plugin-media $ cabal install               
Resolving dependencies...
Downloading gd-3000.7.3...
Configuring gd-3000.7.3...
cabal: Missing dependencies on foreign libraries:
* Missing (or bad) header file: gd.h
* Missing C libraries: gd, png, jpeg, fontconfig, freetype
This problem can usually be solved by installing the system packages that
provide these libraries (you may need the "-dev" versions). If the libraries
are already installed but in a non-standard location then you can use the
flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are.
If the header file does exist, it may contain errors that are caught by the C
compiler at the preprocessing stage. In this case you can re-run configure
with the verbosity flag -v3 to see the error messages.
Downloading magic-1.0.8...
Configuring magic-1.0.8...
cabal: Missing dependency on a foreign library:
* Missing C library: magic
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.
cabal: Error: some packages failed to install:
clckwrks-plugin-media-0.2.2 depends on magic-1.0.8 which failed to install.
gd-3000.7.3 failed during the configure step. The exception was:
ExitFailure 1
magic-1.0.8 failed during the configure step. The exception was:
ExitFailure 1
cabal unpack --verbose=3 gd
export C_INCLUDE_PATH=/opt/local/include
export LIBRARY_PATH=/opt/local/lib
cabal install

Installing library in
/Users/suztomo/Library/Haskell/ghc-7.4.1/lib/gd-3000.7.3/lib
Registering gd-3000.7.3...
Updating documentation index /Users/suztomo/Library/Haskell/doc/index.html
suztomo@SuzBookPro.local ~/Documents/LanguageStudy/Haskell/clckwrks/gd-3000.7.3

gdをインストールできた。

~/Documents/.../clckwrks/clckwrks-plugin-media $ cabal install
Resolving dependencies...
Configuring magic-1.0.8...
cabal: Missing dependency on a foreign library:
* Missing C library: magic
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.
cabal: Error: some packages failed to install:
clckwrks-plugin-media-0.2.2 depends on magic-1.0.8 which failed to install.
magic-1.0.8 failed during the configure step. The exception was:
ExitFailure 1
suztomo@SuzBookPro.local ~/Documents/LanguageStudy/Haskell/clckwrks/clckwrks/clckwrks-plugin-media
~/Documents/.../clckwrks/clckwrks-plugin-media $ cabal install magic-1.0.8
Resolving dependencies...
Configuring magic-1.0.8...
cabal: Missing dependency on a foreign library:
* Missing C library: magic
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.
cabal: Error: some packages failed to install:
magic-1.0.8 failed during the configure step. The exception was:
ExitFailure 1

libmagicが必要。macportではlibmagicはfileに含まれているらしい。

sudo port install file

で/opt/local/libにlibmagicで始まるファイルがインストールされているので、clckwrks-plugin-mediaがインストールできるはず。

suztomo@SuzBookPro.local ~/Documents/LanguageStudy/Haskell/clckwrks/clckwrks/clckwrks-plugin-media
~/Documents/.../clckwrks/clckwrks-plugin-media $ cabal install
Resolving dependencies...
Configuring magic-1.0.8...
Building magic-1.0.8...
Preprocessing library magic-1.0.8...
ld: warning: in /opt/local/lib/libmagic.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /opt/local/lib/libiconv.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /opt/local/lib/libmagic.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /opt/local/lib/libiconv.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /opt/local/lib/libmagic.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /opt/local/lib/libiconv.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /opt/local/lib/libmagic.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /opt/local/lib/libiconv.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /opt/local/lib/libmagic.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /opt/local/lib/libiconv.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
[1 of 7] Compiling Magic.TypesLL    ( Magic/TypesLL.hs, dist/build/Magic/TypesLL.o )
[2 of 7] Compiling Magic.Data       ( dist/build/Magic/Data.hs, dist/build/Magic/Data.o )
[3 of 7] Compiling Magic.Types      ( dist/build/Magic/Types.hs, dist/build/Magic/Types.o )
[4 of 7] Compiling Magic.Utils      ( dist/build/Magic/Utils.hs, dist/build/Magic/Utils.o )
[5 of 7] Compiling Magic.Init       ( dist/build/Magic/Init.hs, dist/build/Magic/Init.o )
[6 of 7] Compiling Magic.Operations ( dist/build/Magic/Operations.hs, dist/build/Magic/Operations.o )
[7 of 7] Compiling Magic            ( Magic.hs, dist/build/Magic.o )
[1 of 7] Compiling Magic.TypesLL    ( Magic/TypesLL.hs, dist/build/Magic/TypesLL.p_o )
[2 of 7] Compiling Magic.Data       ( dist/build/Magic/Data.hs, dist/build/Magic/Data.p_o )
[3 of 7] Compiling Magic.Types      ( dist/build/Magic/Types.hs, dist/build/Magic/Types.p_o )
[4 of 7] Compiling Magic.Utils      ( dist/build/Magic/Utils.hs, dist/build/Magic/Utils.p_o )
[5 of 7] Compiling Magic.Init       ( dist/build/Magic/Init.hs, dist/build/Magic/Init.p_o )
[6 of 7] Compiling Magic.Operations ( dist/build/Magic/Operations.hs, dist/build/Magic/Operations.p_o )
[7 of 7] Compiling Magic            ( Magic.hs, dist/build/Magic.p_o )
Registering magic-1.0.8...
Running Haddock for magic-1.0.8...
Warning: The documentation for the following packages are not installed. No
links will be generated to these packages: rts-1.0
Preprocessing library magic-1.0.8...
Haddock coverage:
  50% (  1 /  2) in 'Magic.TypesLL'
  50% (  1 /  2) in 'Magic.Data'
  67% (  2 /  3) in 'Magic.Types'
  17% (  1 /  6) in 'Magic.Utils'
 100% (  4 /  4) in 'Magic.Init'
 100% (  9 /  9) in 'Magic.Operations'
 100% (  7 /  7) in 'Magic'
Warning: Magic.Types: could not find link destinations for:
    Magic.TypesLL.CMagic
Documentation created: dist/doc/html/magic/index.html
Installing library in
/Users/suztomo/Library/Haskell/ghc-7.4.1/lib/magic-1.0.8/lib
Registering magic-1.0.8...
[1 of 1] Compiling Main             ( Setup.hs, dist/setup/Main.o )
Linking ./dist/setup/setup ...
ld: warning: in /opt/local/lib/libiconv.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
Undefined symbols:
  "_iconv_close", referenced from:
      _hs_iconv_close in libHSbase-4.5.0.0.a(iconv.o)
     (maybe you meant: _hs_iconv_close)
  "_locale_charset", referenced from:
      _localeEncoding in libHSbase-4.5.0.0.a(PrelIOUtils.o)
  "_iconv", referenced from:
      _hs_iconv in libHSbase-4.5.0.0.a(iconv.o)
     (maybe you meant: _base_GHCziIOziEncodingziIconv_iconvEncoding5_info, _base_GHCziIOziEncodingziIconv_iconvEncoding7_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding6_info , _hs_iconv_open , _base_GHCziIOziEncodingziIconv_iconvEncoding6_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding7_info , _base_GHCziIOziEncodingziIconv_iconvEncoding5_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding4_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding3_closure , _base_GHCziIOziEncodingziIconv_iconvEncoding2_info , _base_GHCziIOziEncodingziIconv_iconvEncoding2_closure , _hs_iconv , _base_GHCziIOziEncodingziIconv_iconvEncoding3_info , _hs_iconv_close )
  "_iconv_open", referenced from:
      _hs_iconv_open in libHSbase-4.5.0.0.a(iconv.o)
     (maybe you meant: _hs_iconv_open)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Updating documentation index /Users/suztomo/Library/Haskell/doc/index.html
cabal: Error: some packages failed to install:
clckwrks-plugin-media-0.2.2 failed during the configure step. The exception
was:
ExitFailure 1

\(^o^)/