Haskell版virtualenv (virthualenv)

最近Haskellばっかり書いているんだけど、パッケージの依存性に悩まされることが多い。

やっぱサンドボックス化できるほうがいいよねーと探したらPythonのvirtualenvインスパイアなvirthualenvがあった。いまはhsenvって名前が変わって開発されているようだけど、hackageに登録されてないようなのでvirthualenvを入れておく

cabal install virthualenv

使い方はvirtualenvと大体一緒

mkdir /tmp/anydbmTest
cd /tmp/anydbmTest
virthualenv

すると.virthualenvに色々設定されるのでactivateコマンドで仮想環境に入る

source .virthualenv/bin/activate
cabal install anydbm

hakyllとバッティングしていてインストールできなかったanydbm(MissingH)が入るのでPLEAC14章を解けるようになった。

仮想環境はdeactivateで抜けられて、要らなくなったらディレクトリを消せばいいので、ちょっと試したいパッケージを気軽に試せて良い感じ(まさにPythonで開発している気分)。

virthualenvwrapperがあればさらにいいんだけどね。

追記 121223

mkvirthualenvを書いてみたら快適になった。

Delay No More

ヘヴィーなベースラインと耽美というかドープな曲調。ドラムもアーメンみたいにバカスカぶっ叩かないし、僕はSpectraSoulは好きですね。

Shogun Audio Podcast #32に影響を受けたアーティストの紹介やっててLove Cry /Four tetとか挙げてて、そういうのを好きなら気に入るんじゃないですかね

ProductName Delay No More
Spectrasoul
Pid / 2014円 ( 2012-06-26 )


よくわかる非製造業もトヨタ生産方式

生産管理に関して集中的に勉強しております。

トヨタウェイに関しては役に立ったが、タイトルの非製造業での事例はまぁなんというか表面的な説明に終始していて、本質的な問題がなんだったのか?それをどうやって改善したのかという踏み込んだ記述はほとんどなかったように思う。

後から著者を眺めたら、コンサルだったのでまぁそんな感じの本でした。

  • 部下が考えるまでに上司が結果を出してしまっては部下が育たない
  • カイゼンによる生産効率の向上は、能率をあげるために最新鋭の機械設備を導入したりアウトソーシングすることではありません
  • タクトタイムとは作業者が製品1つをどの程度の時間をかけて作業できるか
  • 後工程引き取りシステム
  • 省力化と省人化の違い

ブログのデザイン変えた

Twitter Bootstrapの勉強もしたかったので使ってみた。

便利なところ

  • offsetとgridで大まかなレイアウトがさくっと決められる
  • アイコンセットがついているのとタグのボタンが簡単につくれる
  • pull-rightが楽

困ったところ

  • bootstrap臭さから脱却できない
  • navbar以外でpull-rightした後にclearする(標準の)方法が分からなかった
  • productionではLESSを使わずcssにしておくのがいいのか?(IE8では遅いと思うんだが)

lesscでコンパイルしたcssが170kbyteくらいあってちょっと嫌なんだけど気にならないんだろうか?やっぱり要らない機能を削ってコンパイルをするのが普通なんだろうか?

それからbootstrapを使って効率的にサイトデザインするワークショップみたいなのやってくれないかなぁ。

「ゴーン道場」は面白い

Empathyは重要

ProductName ゴーン道場 (朝日新書)
カルロス・ゴーン
朝日新聞出版 / 735円 ( 2008-11-13 )


  • 上司と部下はコーチと選手のようなもの
  • 革新の大半は異なる領域同士の交流から生まれる
  • ストレスは人生の一部
  • 歴史は常に勝者の視点で書かれている

HaskellのコードをJavascriptにコンパイルするfayが面白い

Fay programming language

インストールは簡単

cabal update
cabal install fay

フィボナッチなコードをjavascriptにコンパイルしてみる。printを自分で定義する必要があってはまった。

fib 0 = 1
fib 1 = 1
fib n = fib (n-2) + fib (n-1)

print :: Foreign a => a -> Fay ()
print = foreignFay "console.log" ""

main = print $ fib 10

コンパイルのときにautorunオプションをつけるとmain関数がよばれるようになる

fay -autorun fib.hs

実行してみる

$ node fib.js 
89

まだバージョンが若いのでこれからに期待な感じだけど、Haskellでクライアントサイドのプログラミングができるようになるのは面白いかもしれない。

ポケモン

チャンピオンリーグまで進んだ。

ProductName ポケットモンスターホワイト2

任天堂 / 3927円 ( 2012-06-23 )


最近、息子がやれやれとせがんでどうしようもないので、夜がポケモンで潰れてる。Haskellとかやりたいのに。

不動産・建築・お金のプロが教える 中古住宅の本当にかしこい買い方

まわりがどんどんマンション買ってるみたいだけど、うちはこのまま持ち家のままでいいのか?という流れになっている。やっぱ賃貸でいいんじゃないのかなーと。

家が資産と呼べるのは土地の価格が上昇し続ける昔の状況だからであって、建物自体は価値がなくなっていくからなぁ。

  • 中古住宅のリスクは契約の後にしかみえてこないものがおおい
  • 宅建の試験問題のうち建物の知識を問われるのは二問くらいしかない
  • 登記簿謄本の地目をチェック
  • 瑕疵担保責任が免債となっているケースは要注意

モナド変換子はボイラープレートの回避というかパターン

モナド変換子という小難しい名前がついていたので、ちょっと中身を見るのを避けていたのだけど、久しぶりにモナドのすべてを読んだら、第三部まですらすら読めて、モナド変換子って単なるパターンじゃないかと思えるようになった。モナドの合成ってめんどくさいのねって思った一方でHaskell楽しいじゃんって思った。

さらに勢いで、RWHの「作って理解するモナド変換子」も今読んだらわかりやすかった。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan
オライリージャパン / 3990円 ( 2009-10-26 )


モナド変換子を使ったプログラミングの強みと弱み

  • 純粋なコードとの干渉
  • 過度の順序付け
  • オーバーヘッド
  • インターフェースが大きすぎ

Haskellのレコード構文

レコード構文の話

data Test = TS {vars::[Int], others::[Int]} deriving Show

既にあるデータに対しても利用できて、もとのデータの値を一部だけ変更した新しいデータが作られる。

*Main> let ts = TS {vars=[], others=[1..10]}
*Main> ts
TS {vars = [], others = [1,2,3,4,5,6,7,8,9,10]}
*Main> ts {vars=[1,2,3]}
TS {vars = [1,2,3], others = [1,2,3,4,5,6,7,8,9,10]}

知らなかった。

それから、データコンストラクタが異なっていれば同じフィールド名を付けられる。

data AnotherTest = TS1 {vars::[Int], others::[Int]} 
                 | TS2 {vars::[Int], others::[Int]} 
                 deriving Show

othersを変更してみる

*Main> let ts1 = TS1{vars=[1..3],others=[]}
*Main> let ts2 = TS2{vars=[1..3],others=[]}
*Main> ts1 {others=[1]}
TS1 {vars = [1,2,3], others = [1]}
*Main> ts2 {others=[2]}
TS2 {vars = [1,2,3], others = [2]}