Kiwamu Okabe
fontNameP: "mikachan"
fontNameM: "mikachan"
- twitter: http://twitter/master_q
- 職業: コピペプログラマ
- CとRubyなら使えますが。。。
- Haskellは本腰入れて勉強しはじめて半年
うちの会社の近辺では。。。
- 何がいいの?
- Haskellで何ができるの?
- 実用になるの?
- 製品に使えるの?
やる気になれば!
- ゲームとか作れば釣れる?
- とにかくGUIで、なんか。。。
- じゃープレゼンツール作りましょう!
- http://rabbit-shockers.org みたいなの!
- 。。。できました!
https://gitorious.org/carettah ← コレ
↓みたいなテキストファイルを作って
# CairoでほっかりGUIプログラミング
![background](start_haskell.png)
Kiwamu Okabe
# 自己紹介
![background](enjoy.png)
* twitter: http://twitter/master_q
* 職業: コピペプログラマ
ファイル名sample.mdで保存。
さっき書いたテキストを食わせるだけ
$ pwd
/home/hogehoge/src/carettah
$ carettah sample.md
すればプレゼン開始。
「Real World Haskell」を買ってください!
window <- windowNew
canvas <- drawingAreaNew
widgetSetSizeRequest window 640 480
onExpose canvas $ const 描画関数
_ <- window `on` keyPressEvent $ tryEvent $ do
keyName <- G.eventKeyName
liftIO $ case keyName of
"j" -> nextPage >> G.widgetQueueDraw canvas
set window [G.containerChild G.:= canvas]
mainGUI
PostScriptみたいな感じです。
renderHoge :: Render ()
renderHoge = do
save
(surface, w, h) <- pngSurfaceSize "hoge.png"
setSourceSurface surface 0 0
paintWithAlpha 0.5
restore
- 画面再描画する場合はExposeイベントで
- ↑すればダブルバッファリングは自動実行
- Renderモナド内ではPSっぽい状態がある
- ↑の状態はcanvasで保存してるんじゃない
- utf8文字列を送るときはtoUTF関数を通す
readMarkdown :: ParserState -> String -> Pandoc
って関数にmarkdownなテキストを食わせる
ghci> readMarkdown defaultParserState "# title\n* item"
Pandoc (Meta {docTitle = [], docAuthors = [], docDate = []})
[Header 1 [Str "title"],
BulletList [[Plain [Str "item"]]]]
後はPandoc側を好きな具象に落せばOK
- Haskell関連パッケージが充実
- apt-cache search libghc- | wc -l #>872
- gtk2hsやcairoもcabal不要ですぐ使えます
- yesodもパッケージになってるよ!
- レベル: "プログラミングHaskell"読了した人
- 日時: 隔週日曜日13時開始
- 場所: 大森 (ニフティさん場所貸して!)
- 内容1: 宿題答えあわせ
- 内容2: 持ち回りでLT
- 2011年8月下旬から再開予定