MessagePack for Dの近況

それなりに整えたので,そろそろアナウンスして公式リポジトリにmergeしたい所.で,MessagePack自体はJSONライクなんだけど,せっかく書いたのにstd.jsonに負けてたら悲しいので簡単な比較してみた(ソースはこれ).pack/unpackはstd.jsonのtoJSON/parseJSON…

MessagePack for D

http://www.bitbucket.org/repeatedly/msgpack4d/src バイナリベースのシリアライゼーションライブラリであるMessagePackのD言語実装を書きました(バインディングでなくPureな実装.他の言語色々あるのにD言語にないのがちょっと虚しかったので).といっても…

enumのネストの需要ってどんな感じなんだろう?

enumってネスト出来たらグルーピングが出来て便利だと思うんだけど enum Spec { enum A { a, b, c } enum B { a, b, c } } みたいな感じで.まぁ今でも現状 class Spec { enum A { a, b, c } enum B { a, b, c } } でそれっぽいこと出来るけどclassが微妙だ…

Google Summer of Code 2010

Sakaiのアイディアリスト うーむ.自分が使わないであろうシステムの開発をするのもなぁ.しかしこれやっとくと後々メリットになりそうな気もしている.

オープンセミナー@岡山が今年もやるらしい

http://kokucheese.com/event/index/1834/ 交通手段が見つかったので参加登録した.Matzの話もあるし楽しみ.

第1回関西Emacs勉強会参加してました

http://d.hatena.ne.jp/peccu/20100303/kansaiemacs 初ということだったんだけど,まぁのんびりと出来たんじゃないかなと.最初のポジションペーパーでの自己紹介で結構時間を使ったので,その分上手く行った気がする(俺の自己紹介はスーパーgdgdでした…

Ruby Best Practice

http://blog.rubybestpractices.com/posts/gregory/022-rbp-now-open.html 販売された本を持ってないので内容に変化があるのかどうか分からないけど,どうやら公開されたっぽい.DLはしたので時間が出来たら読む.

rack 1.1.0

Ramazeのアプリ試していて気付いたのだけど,rackupの-D(daemonizeオプション)ってまともに動かないような(Debian 5とMac OS X 10.5で試した)?rack 1.0.1なら1.8/1.9関係なく動くのだけど,1.1.0だと動かない.options[:pid] = fでfのexpand_pathを忘れてい…

dmdのtrunkを自動でビルドする(Mac編)

以下のRakefileを使えば出来ます!PLATFORMとか作ってるけど他の環境全然意識してません(Windows以外は動くかも?).せっかく作ったし,D言語友の会にでも後で貼っておくか. 汚いのは勘弁して下さい. パッチ 今のtrunkはspell checkerが入ってwin32.makし…

dmdのスペルチェック

http://www.dsource.org/projects/dmd/changeset/408 こういう変更があったので,trunkから落としてコンパイルして試してみたら こんな感じで間違っていると指摘してくれる(一文字くらいかな?).こういうのってIDEの仕事っぽいけど「それいいね!」と言って…

Emacs勉強会@関西

http://d.hatena.ne.jp/peccu/20100303/kansaiemacs 俺がネタ振りをした気がしないでもない勉強会がついに開催されるので,Emacsを使っている人も使われている人も参加したらいいと思います.この午前にはVim勉強会もあるらしく,第一次関西Emacs vs Vim大戦…

GC本の詳細ががが

http://d.hatena.ne.jp/authorNari/20100303/1267609871 Amazonはまだのようだけど,情報公開のOKが出たということで記事が上がりました.表紙は知らなかったんだけど,何かかなり格好よく仕上がっていて驚き(nariさんの自作絵になるんじゃないかとずっと思…

unittestで最後まで

こういう意見があったので,こんな感じでどうでしょうか! // Written in the D programming language. module testhelper; import std.stdio : write, writeln; private uint failures; static this() { write("Unittest started..."); } static ~this() { …

QuickSilverのあれ

どんなもんかと実装してみた.といってもObjective-Cよく分からなかったので,Ruby版のをベースに.実際速さを求めるなら,本家のようにNSRangeみたいな軽量な構造体使ったり,単一関数の再帰の方が速いかも. なんにせよ,これだけ短いやつであんな探索出来…

タグディスパッチ

タグディスパッチというのがTwitterで出てきたので調べてたら説明が見つかった.ソース見てて何であれでコンパイル通るのかと思ったら「使われない仮引数の名前は省略可能」というのがC++にはあるらしい.で,D言語でも試したら出来た. import std.stdio; v…

ぼくのかんがえたさいきょうすたいる(Dげんごへん)

http://www.digitalmars.com/d/2.0/dstyle.html 基本これに準拠するのだけど違うところだけ. White Space インデントは空白4文字だけ,タブなどいらぬ! Comments 最近 /* This is comment! */ でもいいかなぁと思ってたのだけど,やっぱり /* * This is co…

ベンチマークなモジュール

D言語で気軽に時間測定がしたい 昔書いたコードを引っ張りだしてきた. // Written in the D programming language /** * This module provides a simple benchmark utility. * * Author: $(WEB profile.livedoor.com/repeatedly/, tama) */ module benchmar…

R.I.P foreach_reverse

foreach_reverseが消える.で,通常のRangeはretroで反転できるので何の問題もないけど,opApplyはどうすればいいのん?という. auto myretro(Range)(Range range) { static if (__traits(compiles, range.opApplyReverse)) return &range.opApplyReverse; …

D2本の表紙候補

こんなこと書いておいて,まだ書き始めてませんが(というかまたD2に色々変更が来そう),表紙だけ作ってみました. 夏コミだとこれでも良さそうだけど,電子出版でやろうとするとアウトになりそうですね!

C++には敵わない

http://d.hatena.ne.jp/faith_and_brave/20100205/1265357617 import std.stdio; class Hogeable { Hoge this_; this(ref Hoge hoge) { this_ = hoge; } void opDispatch(string name, T...)(T args) const { writeln("entry : " ~ name ~ "function"); mixi…

Tangoが0.99.9になったらしい

次のバージョンが0.100.0になるかどうかは今後に期待するとして http://www.dsource.org/projects/tango/changeset/5298 ゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴゴ…

D言語基礎文法最速マスター

注意! ふるいので書き直しました.https://gist.github.com/2470712 にある新しい方をごらんください! 以降古い版 他の言語をある程度知っている人はこれを読めばD言語の基礎をマスターでき,D言語の氷山の一角くらいは知ることができると思います.対象バ…

D言語とPerlとC++にしかできないような気がするアノ機能

http://d.hatena.ne.jp/qnighy/20100124/1264342447 import std.stdio, std.c.stdlib, std.c.time; void main() { uint a, b; srand(time(null)); foreach (i ; 0..1000) { (rand & 16 ? a : b)++; } writeln(a, ", ", b); }

Erlangの軽量プロセスとマルチコア

Erlangの軽量プロセスはいわゆるグリーンスレッドなのだけど,それだとCPU数が増えても恩恵受けれないんじゃね?という疑問があって,それに対するTwitterでのまとめ. 軽量プロセスをどんどん生成しても問題ないのは,Rubyなどとは違い保持しているデータが…

D2本のための章立てを考える

今更だけど難しさを知る.TDPLも考慮して,初期段階だけどこんな感じで D言語について データ型,式,文 配列,連想配列 関数,デリゲート クラス そのほかの型 型システム テンプレート エラー処理 契約プログラミング その他の機能 リソース管理 Phobos 並…

std.variantをimportするだけでコンパイルエラー

要素が構造体の連想配列が作れない? 原因はstd.variantが内部で使っているAssociativeArrayと既存のAssociativeArrayとのコンフリクトが原因と思われる(renameすれば起きない).見つかったのは結構最近のようだけど,Donが既にパッチを書いてくれているで,…

CT Brainf*ck

ふと思い立ったので書いてみた.D言語のCTFEは優秀なのですっきり書けたのは書けたけど,何かちょっと嵌まった.以下嵌まった所. 配列のlength arr ~= 0; // OK arr.length = 10; // Error : cannot be evaluated at compile time 時間があったらrt以下を読…

データフロー変数とSTM

Ozなどのデータフロー変数が「ある非バインド状態の変数がスレッド内で見つかった時,その変数を他のスレッドがバインドするまで処理を遅らせる」というのは分かるのだけど,この変数への変更処理はやっぱりアトミックな領域にしてやらないと行けない気がし…

D言語でErlangベースのメッセージパッシングの受信側

ってどうやるの?と.Erlangがあのシンタックスで便利なのは,動的型付けとパターンマッチのコンビネーションだからだと勝手に思っているのだけど(プログラミングErlang買うべきか?).Erlangの場合,spawnとか使ってプロセス生成時に渡す関数にはこれと言っ…

STM

並行処理するための技術の一つだけど,何か面白そう.今のところ使われてるのはHaskellとClojureくらいしか知らないのだけど,いろいろやりようがあるっぽい.D言語はメッセージパッシングの方でConcurrency APIは進んでるけど,これならライブラリレベルで…