はてブにおひっこし
今までdel.icio.usでコソッコソコソッとブックマーク収集してたけど、思うところあってはてなブックマークをメインに使うことに決めた。
いちおうここ
日本でソーシャルにコメント書いてブクマするならはてブかなーと思い。
まあ大してコメント書かないと思いますけどね・・・とりあえずコソッコソッとしないようにね。
けど、張り切ってdel.icio.usから引っ越そうと思ったらはてブってインポート機能が無いのね。。エクスポートの文字を疑った。
ちょうど同じ時期に同じことに躓いた方がいたようなので、参考にさせてもらって同じくこのサイトからソーシャルブックマーク管理ツールをダウンロードして便利に使わせてもらいました。
エクスポートがあってインポートが無いってかなり歪に感じるけど、リリース時に間に合わなくて後回しにしてるうちにメンテモードに入っちゃったんだろうなー。作ってるひとも歯がゆいだろうね。
Haskellでプログラムを書くための下準備1 - Darcsをインストール
今のところHaskellのプログラムは書き捨てのバッチ系しか作ったこと無いんだけど、やはり仕事のメインのツールとして使うつもりなら正式なパッケージ管理の仕方を学ぶ必要がある。PerlでいうCPANモジュールみたいなやつね。
調べてみると、Haskellでは以下のサイトで紹介されているような流儀でプログラムを作成していくようだ。
Cabalという形式でパッケージ自身のメタ情報やパッケージ間の依存関係を定義してビルドに必要な情報を管理して、Hackageというデータベース上で世界中の開発者が作成したパッケージを一元管理しているみたい。
そしてソースコードのバージョン管理には、他のプログラミング言語で一般的に利用されているSubversionではなく、分散リポジトリ型バージョン管理というパラダイムで設計されたDarcsというソフトウェアで行うのがHaskell流。
分散リポジトリについては別のソフトウェア向けだけどこのページが参考になる。
ちょうど単一のリポジトリでバージョン管理を行うSubversionのことをリーナス・トーバルズがディスってたこともあるし、近未来のトレンドと予測して分散リポジトリ型のバージョン管理システムを勉強しておいてもいいかもしれない。Darcsが普及するかは別として。
というわけで、今後Haskellのアプリケーションやモジュールを使っていくことになるので、ひとまずあまり深く考えずにまずはDarcsを手元の環境にインストールする。
GHCと同じくFedora6のyumでは最新バージョンまでメンテされてないかなーと思ったけど、現時点で最新stableの1.0.9が登録されていたので素直にそれをインストールすることにする。ちなみに各プラットフォーム向けにビルドされたバイナリが用意されているので、他の環境でもインストールは難しくないと思われる。
$ sudo yum install -y darcs
テストで適当なアプリケーション(ここではlambdabotというHaskellで実装されたIRCボット)をDarcsを使って取得する。
% darcs get http://code.haskell.org/lambdabot Copying patch 1610 of 1610... done. Applying patch 1610 of 1610... done. Finished getting. % ls lambdabot AUTHORS COPYING IRCBase.hs Lib Modules.hs Plugin.hs Shared.hs build ghci online.rc Boot.hs Config.hs LBState.hs Main.hs Modules.hs-boot README State config.h.in lambdabot.cabal online2.rc COMMANDS DMain.hs LMain.hs Makefile NickEq.hs STYLE TODO configure lambdabot.cabal.ghc-6.4 scripts COMMENTARY DynModules.hs Lambdabot.hs Message.hs Plugin Setup.hs _darcs configure.ac lambdabot.cabal.plugins testsuite
"Copying path xxx of xxxx..." みたいに表示されてなかなか時間がかかる。単に最新バージョンのソースを取得するだけじゃなくて、過去にコミットされたパッチをすべて集積してリポジトリを丸ごとコピーしているからだろうか?それによるありがたみは追々学ぶことにして、とりあえず動作したので良しとする。
しかし、パッケージシステムは大体どの言語も自前で持ってるもんだけど、バージョン管理まで独自の(あんまHaskell界隈以外では使われてない)ソフトウェアを使うなんて、どこまでなやつなんだHaskell!
Fedora6にGHCをインストール
Webアプリ周辺といいつつ、いきなり外縁付近に鎮座しているHaskellの話題。
1年くらい前と比べると、HaskellにもxmonadやHAppSなどキラーアプリがチラホラ出てきてますね。
Windows上で勉強がてらいくつか小物ツールを作ったことはあるけども、ちょいとここらで仕事のメインのツールとして使えるくらいまで本格的に習得したくなったので、Haskell関連のエントリーをしばらく書くことにする。
というわけでまずは処理系のインストール。Haskellのほぼデファクトの処理系であるGHCをインストールします。
yumを使ってインストールしたいところだけど、僕の作業環境であるFedora6のパッケージではGHCのバージョンは6.6.1で止まっているので、配布元から現時点で最新のバージョンである6.8.2のバイナリパッケージを落としてきてインストールする。Fedora以外のディストリでも多分同じ手順で大丈夫。
$ wget http://www.haskell.org/ghc/dist/6.8.2/ghc-6.8.2-i386-unknown-linux.tar.bz2 $ tar xvfj ghc-6.8.2-i386-unknown-linux.tar.bz2 $ cd ghc-6.8.2 $ ./configure $ sudo make install
これでOK。
make install終わった時に
======================================================================= Installation of ghc-6.8.2 was successful. To use, add /usr/local/bin to your PATH. Warning: this binary distribution does NOT contain documentation! =======================================================================
と表示されるように、/usr/local/bin配下にコマンド類がインストールされる。
付属のインタプリタghciで軽くテスト。
$ ghci GHCi, version 6.8.2: http://www.haskell.org/ghc/ :? for help Loading package base ... linking ... done. Prelude> putStrLn "Hello, my girl." Hello, my girl. Prelude> :q Leaving GHCi. $
Windowsにもちゃんと専用のインストーラを用意してるし、関数型言語の中ではもちろん、軽量言語と比較しても導入までの敷居は低い部類だと思う。そこら辺もっと評価されてもいいと思うなー。Haskell。