椿の日記

たぶんプログラムの話をします

Parsec覚書

Parsecを使えば簡単にパーサかけるし余裕余裕、 と思ってたら結局手間取ってしまったので、ポイントだけ抑えておきます。 サボらずにLexerからのParserという流れで作る Lexerの出力であるトークンには位置情報を仕込んで生成する 位置情報は字句解析の後の…

OpenGL

を、唐突に使い始めました。 今までOpenGLを使ったことが無かったので資料漁るところから…。 とりあえず、ウィンドウ開いて画面クリアするまでは、glutを使ったら超簡単でした。 雑多なデモを作ったりするときは重宝しそう。

花鳥諷詠

http://satpon.sakura.ne.jp/kachou/top.html ものすっごい前に買った本なんですが、知り合いと東方小説の話題で盛り上がったときにこの本よかったな、と思いだしたので、自宅に帰ってから久々に読み返していました。自分は春の話が特にお気に入りです。パチ…

boost::variantと関数型

C++で書いてると、色んな型に変化するようなオブジェクトを扱うときに基底クラス作って派生させて…みたいなこと考えるのが凄い嫌だったんですがboost::variantを使うと関数型のような感じで書けるということに気づいたC++で書くツールなら確実に使えるなあ。…

キーボードが壊れた

愛用のRealforceが壊れてしまいました。しかし準備が良い私はスペアのRealforceを持ってます。これくらいなんてこと無いぜ。…と安心していたのもつかの間、これまたUキーが調子悪くて、押した後もとに戻ってこなくて困る。てなわけでこの文章も非常に苦労し…

wxHaskellでカスタムコントロールを作ってみた

作り方が分かると凄く簡単でした。IOだの状態だの使いまくったためHaskellっぽくない気もするのですが、そこらへんの部分をカスタムコントロールで吸収しきれば幸せな人生が待ってる、と信じることにしたので作るのは苦行にはなりませんでした。作ったのはヘ…

wxHaskellのカスタムコントロールの作り方

Viewのコードを再利用したくなって、こりゃカスタムコントロールを作らなきゃならんなぁ…と思ったものの、wxHaskellでのカスタムコントロールの作り方がわからんちん。特に、カスタム属性の保存とか取得って一体どうやってやるの? と思ってたのですがこんな…

Hackageのドキュメントが新しくなってた

前のほうが見やすかったような。

wxHaskellのListCtrl

デフォルトの状態でListCtrlを構築してクリックするとWindowsのサウンドで設定されているエラー音が何故か鳴ったり、 カーソルをアイテムの上に載せて右クリックを続けるとon clickRightイベントとon listEvent+ListItemRightClickイベントが交互に呼ばれた…

ToRyan-Seの音階

暫く東方アレンジは委託メインで買うことが多くて、幅広く買ってなかったのですがようやく夏コミでA-OneのCDを全部買うことが出来たので一気に聞いてます。で、早速ToRyan-Seをカラオケで歌ってきたんですけど、音階がフリーダムすぎて全然だめだったwそも…

wxHaskellでマウスの位置取得

こんな初歩的なことでもドキュメントを漁らないとならん(笑)美しく書けるのは嬉しいんだけど、大半の関数が知らない関数なので、何をするにもまずドキュメント、という感じになってしまいます。wxHaskellでマウスの位置を取得するには大雑把に2通りの方法が…

haskellの変数に付けるコーディング規約とか

実際にHaskellでアプリを書いていて気になりはじめたんだけど、色んなものの命名規則を決めておかないとコード書くたびに悩んでしまって駄目ですね。Haskellはxだのxsだの短い変数をつけるのが慣習みたいですが自分はそういう命名が嫌いなので長い名前を付け…

wxHaskellのイベントハンドラと、アプリケーションの状態の記憶

wxHaskellでは、ウィンドウでのイベントをIOモナドの関数で処理するための仕組みがあります。 例えば「ファイル→終了」のメニューアイテムに「close f」というウィンドウfを閉じる処理を割り当てるなら次のようなIOモナドによってイベントハンドラを設定しま…

wxHaskellがIOモナドだらけ

ドキュメントを見れば見るほど、やたらとIOモナドが目に付いてしまう。関数型言語でGUIを使えるようにした結果がこれでは、がっかりにもほどがあります…。IOモナド汚染から逃れるために、外側でIOの"殻"を外してしまえばいいのだろうけど、そもそも、楽にプ…

ビットマップの部分描画

wxHaskellでBitmapを部分描画しようとおもったんだけど、関数が見つからない。Data.BitmapにcopySubImageという関数がある。これを使ったらいけるだろうか、と思ったら、Data.BitmapとwxHaskellのBitmapは型的に別物だったり。検索してみたら同様のことで悩…

wxHaskellを再インストールするときは

wxWidgetsの設定を少し変えてwxHaskellを再インストールするときは、次のようにwxcoreを忘れず更新します。 $ cabal install wxcore --reinstall $ cabal install wx --reinstall おそらく、wxcoreがC側とのやり取りをしてるので、こっちだけでいいのかもし…

wxHaskellインストール手順

こちらを参考にして進めます。 http://d.hatena.ne.jp/sirocco/20100620/1276999507 wxWidgetsのインストール ここからwxWidgetsの最新(現時点で2.8.11)をダウンロードして、適当なところで展開します。 http://www.wxwidgets.org/downloads/ MSYS環境で、展…

WPFのGridSplitterが他のコントロールバーと重なる

GridSplitterを中央に配置して、左側にマップ画面、右側にチップ画面という感じで配置しようとしたけどGridSplitter自体が他のコントロールに重なってうまくいきません。 専用の枠を作って、そこにGridSplitterを入れる、ということをするらしいです。 http:…

WPFはじめました

世間の波にのって、私もWPFを勉強し始めました。 WPFが今までと何が違うのか、というのを理解するには経験が足りなすぎるので、ひとまずアプリを作ってみます。 とりあえず、ヘックスのマップエディタが欲しかったということにして、作ってみましょう。

Akinatorとアジャイル開発

「あなたの欲しかったシステムは○○ですか?」 「あなたの欲しかったシステムは△△ですか?」 「あなたの欲しかったシステムは□□ですか?」 「あなたの欲しかったシステムはこれですね?」→No 以下、無限ループ。

長岡花火

Ustreamの放送を見ようと思って、帰宅したら、何故か23:00を回ってたんですよ。 まさに遅刻。なんでかなぁ。 来年こそは見るぞ…

続・長岡花火

なんかUstreamで放映してたらしいですね。 そして今日もやるらしい。折角だから、自分も今日は見るとしよう。

長岡花火

昨日、母親から電話がきて、なんだろな、と思ったら「長岡花火だったよ」とのこと。そういえば今年もそんな時期でしたね…。長岡花火は、自称日本一とか言うだけあって、やっぱ凄いと思う。特にフェニックス花火のスケールの大きさがおかしい。他の花火と違っ…

生活習慣改善計画

日々の生活習慣を少しは改善しようかと思って、ちょっとした計画を立てました。 ○○時起床から始まって○○時就寝、というアレです。 スケジュール自体は無謀なものではないのだが、守れるかどうかというと、なぜか無謀な気がしてくるんだよなあ。

Akinatorの仕組みが気になる

何を言ってるんだか分からなかったからこっそり修正...http://jp.akinator.com/これは面白いですね。内部的な実装はどうなってるのでしょうか…キャラクタの全集合を、出来るだけ素早く、かつ確実に削っていける質問を選択しているから最初に「女性か」「男性…

Vista入れた

いまどきVistaを入れるのもどうかと思うのだけれど、XP 64bitのドライバが見つからないし、かといってWin7を買うのも金かかるし…ということで、だいぶ前に買ったものの、結局放置していたVistaを仕方なく入れることにしました。まあ、Win7は見送ってWin8とか…

けいおんライブDVD

BDじゃなくて、DVD買いました。 だって売り切れるなんて思ってなかったんだ。 見て感動して、でもやっぱりライブ行けば良かった、とちょっと後悔もしました。こういう作品のDVDとか買ったのは初めてな気がします。実はアニメってほとんど見ないんですけど、…

部屋の片付け

部屋の片付けを開始。 しかし漫画の片付けとかはじめると、読み始めて全然進まないんですよね… で、らきすた読んでたらまさに俺が出てきて目が覚めるわけです。

std::stringbufでNULL文字

stringstreamでNULL文字を扱うときの挙動はどうなるんだろう? と不安に駆られてテストしてみたのですが、終端文字としては扱われないようで、安心しました。 void main() { std::stringstream s; const char text[] = "\0asdf"; s.write( text, sizeof(text…

std::stringbufの長さの伸び方

std::stringstreamを使う用事が出てきたのですが、メモリの確保の仕方はどうなってんのかなー、 と思ってソースを追っかけたら、std::basic_stringbuf::overflowの中がこんな感じになっていました。 (環境はVC2005です) size_t _Inc = _Newsize / 2 < _MINSI…