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

C++ で Maybe モナド

動機: C++ で Haskell の Either っぽい何かを作ってみた。 - 野良C++erの雑記帳 せっかく Either 作ったんだから Maybe モナドも作ろうぜ、という話。 まず Boost には、既に Maybe に相当する Boost.Optional が存在するので、 そいつをモナドの >>= に対…

Boost.Optional Must Go

boost::optional<int> const x = 42; // boost::optional<double> const y = x; // NG. optional<T> から optional<U> への変換は explicit boost::optional<double> y; y = x; // OK. optional<T> から optional<U> への代入は許されている // boost::optional<double> const z = boost::make_optiona</double></u></t></double></u></t></double></int>…

C++ で Haskell の Either っぽい何かを作ってみた。

動機: boost::optionalだけじゃなくboost::eitherがほしい - Faith and Brave - C++で遊ぼう Boost.Optional は C++ でも屈指の便利ライブラリですが、 「戻り値として使う」場合には、時々「失敗した」という状況の他に、失敗した状況を示すような値が返せ…

第四回 カーネル/VM探検隊 に参加してきました。

第四回 カーネル/VM探検隊 : ATND kernel/vm 勉強会 - Togetter 今日は @syuu1228 さん主催の勉強会/懇親会に参加してきました。 僕はどちらかと言うと C++ という『言語』よりの人間ですが、 C++ という言語の性質上、カーネルやVMといった知識は、他の言…

C++でデストラクタを呼ばなくていい条件

参考: デストラクタを呼ばずに再構築 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ C++ では、動的に確保したメモリ領域にオブジェクトを構築した場合、 確保した領域を解放する前に、デストラクタを呼び出す必要があります: // 何らかの…

非 const の変数を同一スコープ中で const に「凍結」する方法が欲しい

C++

http://d.hatena.ne.jp/nagoya313/20100504/1272943262この、値渡し引数に const をつける、ということに対して。 上に挙げた日記の書いてあることに概ね賛成ですが、 僕個人は値渡しの引数に対しては const は付けない主義です。 無論、付けてもいいと言う…

ぷりちークラスタのオフに参加してきました。

今日は twitter で普段からお世話になってるぷりちークラスタのオフ(というか飲み会)に参加してきました。 みやびちゃんぷりちー!

Boost.Optional と Boost.InPlaceFactory で初期化遅延

boost::optional は「値 T あるいは無効値」を取ることのできるクラスです。 通常このクラスは、「失敗するかもしれない」関数の戻り値として使用されます: #include <boost/optional.hpp> #include <iostream> // 例として std::getline を optional で実装してみる boost::optional<std::string> getl</std::string></iostream></boost/optional.hpp>…

Singleton デザインパターンとかポインタとか

C++

何回かコメントを書かせてもらった、 Singletonクラスにauto_ptrを使うのは案外難しい - (void*)Pないと こちらの話題。 「auto_ptrからFooを破棄されるかもしれないじゃない」とのことですが、 これは一応 std::unique_ptr を使うことで回避できます(要 C+…

と思ったけど

明らかな異常系以外で例外に頼らなければいけない状況は変だ、と思い直した。 気軽にぽんぽん例外を投げるような設計は、どうなのだろう、と。 その辺は言語の文化も関わってくるけれど、例えばC++だと、例外は基本的に「例外的な事情」がある時しか投げない…

Lua に例外処理が欲しい

Lua

とても欲しい。 pcall と error で似たようなことはできるけど、やはり不十分だし。

BarrageLL の目指すべき場所とか

ひきこもりにっき。@はてだらからご意見を頂きました。ありがたい事です。 とりあえず前回の記事ではいろいろと足りない点が多かったので、頂いた意見にコメントする形で補足してみようと思います。 スクリプトフォーマットはコア部分にするとのことだけど…

ダブルスポイラー買いました。

ひきこもってプレイちう。 現在、あとスペカ二枚でExtra解禁ってところです。

留年しました。

タイトル通りです。どうやら留年してしまったようです。 これで4回目の留年ということで、もう後がなくなった訳ですが、 さて、どうしましょうかね。 とりあえず自己紹介を更新しないと。

弾幕記述フレームワーク BarrageLL 開発開始

東方弾幕風の不満点、およびその解決策 - 野良C++erの雑記帳 で発表したプロジェクトを、そろそろ本格的に動かしたいです。 というわけで、とりあえず、開発場所だけでも確保してみました。 http://github.com/gintenlabo/BarrageLL 名前は BulletML をリス…

初心者向けの記事というのは、もっとあっていい。

http://d.hatena.ne.jp/nagoya313/20100314/1268536979 というわけで、超期待。 僕の Lua 弾幕プロジェクトも、そろそろ具体的に動き出すべきですね。

変数のスコープとか条件演算子とか辞書とか

Pythonにおける局所変数のスコープは、ブロックレベルではなく関数レベルで管理されます: x = 0 def f( cond ): if cond: x = 1 # これは f に変数 x を作っている。上の x とは無関係。 else: x = 2 return x # f の x が返される。 print( f(True) ) # 1 …

東方弾幕風の不満点、およびその解決策

東方のファンをやっていると、時々「こんな弾幕が有ったら面白くね?」と思ったりします。 そんな時、 東方弾幕風 を使うと気軽に弾幕を製作できて便利なのですが、不満点が幾つか。 この東方弾幕風、スクリプトで使われている言語が、弾幕風オリジナルの言…

immutable な string クラスを作りたい(4)

前回 の続き。 作った immutable_string に文字列結合を追加し、簡単なベンチマークを行ってみます。 さて文字列を結合する方法ですが、今回は単純に immutable_string_buffer を拡張します。 namespace gintenlib { // 本題 class immutable_string_buffer …

immutable な string クラスを作りたい(3)

前回 の続き。 作った immutable_string_impl を用いて基本的な部分を実装してみます。 と、その前に、 immutable_string_impl の設計を、少し見直します。 せっかく immutable なので、ハッシュ値を予め計算しておくことで、比較の高速化を図りたいのです。…

ほにったー勉強会に行ってきました

ほにったー:IT勉強会参加者募集 ほにったー:勉強会当日! 今日は @honiho さん主催の ほにったー勉強会 に行ってきました。 まぁ ほにったー勉強会 というのは僕が勝手に呼んでるだけの名前で、本当の名前は単に IT勉強会 だったのですけど、 正直、「IT勉強…

immutable な string クラスを作りたい(2)

前回 の続き。 用意した可変長バッファに、参照カウントを仕込みます。 しかし、単純に参照カウントを組み込むだけではつまらないので、一工夫。 参照カウントの部分を、それ以外の部分とは独立した部品として切り出してみます。 そうすれば、以降に参照カウ…

immutable な string クラスを作りたい(1)

C++標準のstd::stringは非常に優秀な文字列ライブラリですが、少しばかりオーバースペックに感じる時があります。 現行の std::strinig は copy-on-write 方式を採用出来るように設計されているのですが、そもそも文字列を書き換えたい場合って少ないので、 …

酔いどれエロゲ語りオフ 〜チョコレートはみやびちゃんからもらうんだ!〜 感想とか

久々にオフ会というものに行ってきました。Tweetvite :: 酔いどれエロゲ語りオフ ~チョコレートはみやびちゃんからもらうんだ!~ 無題じゃダメなのか… 酔いどれエロゲ語りオフ ~チョコレートはみやびちゃんからもらうんだ!~ 初めてオフ会というものに参…

Skype とやらを始めてみました

id: gintensubaru なんかすごく今更感がありますが、興味有ったらコンタクトしてください。以上

Google Wave はじめてみました

Google Wave 自体は ついったー で「便利らしい」と聞いていたものの 招待が必要とか何とかで、今までなんとなくスルーしてきた訳ですが、 http://cpplover.blogspot.com/2010/02/google-wave.html この記事を読んで、なるほど改めて便利そうだと思い、招待…

Boost 1.42.0 がリリースされましたね

http://www.boost.org/users/news/version_1_42_0 新規ライブラリは Boost.Uuid http://www.boost.org/doc/libs/1_42_0/libs/uuid/uuid.htmlということです。 実のところUUIDってあまり知らなかったので、折角の機会ですし、少し調べてみたいと思います。と…

世の優秀な中高生達に告ぐ

「中学生/高校生だからって馬鹿にするな」って発言をすると馬鹿にされるので注意。「所詮は中学生/高校生、まだまだ未熟者です」って発言をしてみましょう。一目置かれますよ。 個人的に、この手の技法は、いろいろと広く応用出来るので便利だと思っていま…

C++/Boost 基礎文法最速マスター

参考: http://d.hatena.ne.jp/faith_and_brave/20100201/1264997004 「C++0xになると、C++03 でごちゃごちゃした部分がだいぶすっきり書けるようになる」 らしいですが、C++0xを待たなくてもBoostを使えばだいぶすっきり書けるので、 BoostでのC++入門はこ…

並カンに行ってきました

http://atnd.org/events/2092凄く参考になりました。発表者方、ありがとうございました。 並列処理は簡単な仕事ではないですが、手間をかけるだけの価値があると思います。これからのプログラミングライフで、今日学んだことを活かしていければいいなぁと思…