2011-01-01から1年間の記事一覧

Arch 構築メモ

絶対これ忘れるので、今のうちにできるだけ書いておく インストール $ km i386/qwerty/jp106.map.gz を選択 フォントはスキップ$ /arch/setup 1 Select source testing系以外は選択 3 Set clock 時間はAsia/Tokyo ntp設定する 4 Prepare hard drive(s) FSは…

C++03 の仕様から変更のあったライブラリ

C++

この記事は C++11 Advent Calendar 13 日目の記事です。 C++03 で用意されていた標準ライブラリは基本的にそのまま残っていたり deprecate されていたりとかぐらいしかありませんが、それでも少し仕様が変更されていたりとかしています。 後方互換性を維持す…

Boost.Context について調べた

この記事は Boost Advent Calendar 13 日目の記事です。 Boost.Context は、跋扈するコンテキスト切り替えの利用を統一するべく颯爽と現れた救世主です(大げさ)。 そもそもコンテキスト切り替えって何ぞや?という場合は、適当にググるか、自分の Boost.Co…

Data.Enumeratorとの戦いの記録

これは Haskell Advent Calendar 2011 3日目の記事です。 Data.Enumerator はいろいろすごいらしいです。 どれぐらいすごいのかは 2010-08-24 Enumerator Package – Yet Another Iteratee Tutorial | Preferred Research 使ってみよう Enumerator - あどけな…

vector の話

C++

vector は vector に対して特殊化されていて、領域を無駄にしないように、ビット単位で格納されるようになっています。 これは使用する領域が少なくなる反面、 &v[0]+i == &v[i] であるという、vector としての特徴の一つを満たさなくなってしまいます。 他…

ポイントフリースタイル入門

Haskell にはポイントフリースタイルというのがあります。 例えば foo x = f (g x) という中の x というのが「ポイント」と言うらしいです(型を明示していないから x の型が a->b だったりする可能性もあるけどその可能性は置いといて)。要するに値のこと…

モナドとモナド変換子のイメージを描いてみた

最初に言っておくと、モナドって何なの?っていう答えは一切ないです。 自分にとってモナドは「とりあえず型さえ合わせておけば何かいろいろしてくれる奴」程度としか認識できていないので、そんな説明できないです。 で、そんな自分が脳内でどういう風にイ…

Data.Aeson が便利すぎる件

JSON を扱うライブラリで一番簡単に見つかるのは Text.JSON ですが、しばらく使ってると、あまりの使いにくさに発狂しそうでした。 ということで他のを探した結果、Data.Aeson というのがかなりよさげだったので、これを使うことにしました。 しばらく使って…

第4回 ZABBIX-JP勉強会に行ってきた

2011/10/22_第4回 ZABBIX-JP勉強会( #zabbix_jp ) - Togetter 今日は全力でログ取ってみました。 ラトビアの生活と Zabbix 2.0 ラトビアで生活 半年ぶりに帰ってきた 質問:ラトビア行ったことある人 会場にいない ラトビア:ロシアを挟んで隣の隣。近いですね…

昔読めなかった Haskell のコードを解読してみた

968 デフォルトの名無しさん [sage] 2011/03/02(水) 20:59:11.07 ID: Be: 先生宿題のクイックソートができました q[]=[] q(x:xs)=arr (List.partition(<x))>>>first q >>> second q>>>arr((((((((((((((app .).).(&&&))(((app .).).(&&&)) (const id)).).).).)((f</x))>…

FibBuzz を Control.Arrow で解いてみた

何か FizzBuzz 問題をちょっとだけパワーアップさせたものに FibBuzz とかいうのがあるそうで、0 から 100 までの整数を FizzBuzz する代わりにフィボナッチ数の各項に対して FizzBuzz する問題なようです。 面白そうなので久々に Control.Arrow を引っ張り…

foldr のすごさを体験してみた

Real World Haskell にはこんなコードが載ってます。 myFoldl :: (a -> b -> a) -> a -> [b] -> a myFoldl f z xs = foldr step id xs z where step x g a = g (f a x) Real World Haskell p100 4.6.8 右からの畳み込み foldl は foldr を使って書けるという…

GCJJ 予選に参加してみた

x86/64 最適化勉強会中に、iPad からリモートで家の PC に接続して、そこでやってました。 GCJJ に集中しすぎて勉強会の方を全然聞けなかったっていう・・・ほんとすみません。 ということで A と C が解けました。 B は満足度優先で探してたのですが、それだけ…

Nagios のパフォーマンスデータを Parsec で解析してみた

Nagios にはチェックデータを取得した際に、パフォーマンスデータを一緒に付け加えてくれるという機能があり、以下のページにあるツールはこのパフォーマンスデータを使って CPU 使用率やディスク空き容量をグラフ化したりといったことをしています。 PerfPa…

最近使ったモジュールとか

Data.ConfigFile 設定ファイル読み込み用のパッケージ。 こんな感じでよく使ってる。 printUsage = print "..." main = do args <- getArgs case args of [] -> pringUsage (configFile:_) -> do val <- readfile emptyCP{optionxform = id} configFile let …

C++03 と C++11 の互換性

C++

C++03 と C++11 ってどれぐらい互換性があるのかなーと気になっていたんだけど、仕様書の §C.2 を見てみたらずばりなものが載っていたので、一通り読んでみた。 C++03 のコードを C++11 として動かそうとしたときにコンパイルエラーやランタイムエラーが発生…

標準でどのヘッダがどのヘッダを include しているかを調べてみた

C++

std::endl って、どのヘッダで定義されているか知っていますか? と思った人はハズレです。実は std::endl は で定義されてます。 これって を include するだけだと標準に準拠した動作にならないんじゃね?とか思ったのですけど、どうやら は も include す…

JSON から BSON に変換する関数を作ってみた

Haskell には Text.JSON という JSON パッケージと、Data.Bson という BSON パッケージがあるのだけど、Text.JSON から Data.Bson へ変換する方法は探しても見つからなかったので作ってみた。 module JtoB ( J.Result(J.Ok, J.Error), jsonStringToBson, jso…

Nagios Event Broker を使ってみた

C++

Nagios Event Broker (NEB) は Nagios からイベントを受け取るためのモジュール。 Nagios からの通知に対して特殊な操作を行いたいときに使う。 NEB のドキュメント Nagios: Developer Information から取得できる。バージョンが古いけれども、基本的な部分…

モナドを触ってみた

で、こんな風に考えることにしました。 モナドは箱 モナドは単に値をくるんでるだけであると。 a をモナド化すれば m a。 でもってこうするための関数が return。単に m を付けるだけ。 モナドから値を取り出す なぜか知らないのですが、m a -> a なる関数は…

CSS3 のベジエ曲線のアニメーションを実装してみたい

C++

CSS3 の ease-in や ease-out は結構綺麗なので、あの動きを実装してみようかなーと思ったわけです。 CSS3 のベジエ曲線は3次曲線なので4点が必要ですが、最初の点と最後の点は固定値なので、指定するのは2番目と3番目の位置だけです。 Ceaser - CSS Eas…

リロケータブルなメモリを作ってみた

C++

コンシューマとかのゲーム開発で画像(というよりは大きいリソース)を扱っていると、メモリの断片化が起こって悲しいことになることがよくあります。 対策としてメモリアロケータを変えたり、一括でメモリを確保したりといった方法で何とかすることがありま…

関西ゲームプログラミング勉強会

に行って、Squirrel 言語について発表してきました。 Squirrel View more presentations from melpon 動画はこちら あといくつか補足しておきます。 Squirrel の発音について window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)…

TrivialClock

C++0x の最新の仕様では、Chrono ライブラリに TrivialClock の要件が追加されています。 今までの Clock の要件に加えて、TrivialClock はほとんどの操作で例外を投げてはいけないという要件が追加されています(他にもいくつか追加されている要件がありま…

ゲームエンジン作ってる人と話してきた

C++

自作するよりそこら辺にあるゲームエンジン使った方がいいんじゃない? という質問をしたところ、こんな感じの答えが返ってきました*1。 いくつかのゲームエンジンを使ったことあるが、あれをまともに使いこなすには数年掛かる。そしてそこから中身がどうな…

char8_t 欲しい

C++0x からは UTF16 の文字列リテラル(u"...")とその型(char16_t)、UTF32 の文字列リテラル(U"...")とその型(char32_t)が入ります。 そして UTF8 の文字列リテラル(u8"...")も入ります。しかし UTF8 を表す型は入りません。u8"..." は char の配列…

の残念なところ

C++

最近はサボり気味ですが、ちょっと前まで C++0x の仕様書のアルゴリズム部分を読んで cpprefjp の <algorithm> を編集していました。 そこで、読んでておかしいと思ったところや、サンプルを書こうとして残念な気分になった部分があったので紹介しておきます。 まず fin</algorithm>…

コメント戦争

C++

最近「『//コンストラクタ』というコメントは不要だ」という話を見かけたので、ちょっと書いてみました。 まずこのコードを読んでください。 class hoge { public: //コンストラクタ hoge(); }; これを読んで、おそらく多くの人が「このコメントは必要ない」…

JavaScript の落とし穴

ここ2週間ほど JavaScript を使ってるわけですが、いくつか嵌った部分があったのでメモ。 変数の宣言 var s = 'Hello, world'; (function() { print(s); var s = 'Hello, function'; print(s); })(); 結果 undefined Hello, functionこれはサイ本の例。実際…

Vim をしばらく使ってみた感想

vim

去年の 11/13 あたりからしばらく Vim を使っていたのですが、ようやく普通に使えるようになってきました。 で、短期間しか使っていませんが、Vim を使っていていくつか便利だと思ったことを書いていきます。 単語単位の移動 w, b で単語単位の移動ができま…