PSファイルの描画サイズを保ったままPDFにする

ps2pdf -dEPSCrop hoge.ps hoge.pdf
これでPSファイルのBoundingBoxのサイズに合わせたサイズのPDFが作成される。
PSファイルのBoundingBoxのサイズをgrepして確認し、ps2pdfに-gWxH(W,H共にBoundingBoxの10倍の値が良い)を渡して手動設定も出来るけど2手間増えて面倒くさい。

GeneXus

南米発のツールがIT業界に与えるインパクト | 日経 xTECH(クロステック)
某所経由でこんな記事を発見した。


世界はRADな流れだし、いいんじゃないの?
どの程度応用性があるか次第やね。その辺が期待できなさそうだけど。

qtHaskellのインストール

buildスクリプトを使ったインストールだとcabal --globalでインストールしようとする。
従ってHOpenGLとParallelが同じ条件でインストールされていないとうまくいかない。
ユーザーローカルにインストールしようとすると面倒くさそうなので、システムにインストールしてしまう方向で妥協した。

Monad Laws

日本語訳何て言うの。


何やらMonadを扱う関数は下記の3つのルールを守れという事だそうな。

  • return a >>= f が f a と同義。
  • f >>= return が f と同義。
  • f >>= (\x -> g x >>= h) が (f >>= g) >>= h と同義。合成の優先順位が変わっても問題ないように、という意味。

でもこのルールから外れるようなパターンってあるのか?
引数取らないでMonadで返すとかか・・・。


2010/9/14 追記
getLineとかは引数取らないわけだけど、どうなんだろうかね。
あくまでなるべく守ろうとかそんなんなのかな。

do notation

基本的には、(>>)::(Monad m) => m a -> m b -> m bの連鎖のシンタックスシュガー。
※以下に現れるfsは処理の集まりを表す。

  • do{f}→f
  • do{f; fs}→f>>do{fs}

ただし以下の特殊な動作になる場合が存在する。

  • do{let decls; fs}→let decls in do{fs}
  • do{x <- f; fs}→let g x = do{fs}; g _ = fail "..." in f >>= g