...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

メンバ初期化子

youxkei D言語はメンバーの初期化子が使えないのかぁ、まあ確かに使えたら初期化の順番とかが曖昧になるけどね。けど冗長な気がしてならない http://twitter.com/youxkei/status/13793155517 import std.stdio; class A { this(int i) { } } class B : A { t…

仮想関数のディスパッチ

import std.stdio; interface I { void f(); void g(); } class A : I { class B { void f() { writeln("hello"); } void g() { writeln("world"); } } private B b; this() { b = new B; } auto opDispatch(string name)() { mixin("b." ~ name ~ "();"); }…

dmd2.045

そろそろD2.xの開発が終わりに近づいていますね. 以前はunittest内で1つのassertに失敗するとそこで実行が止まってしまいました. 現在では,既に,すべてのunittestを検査してくれるようになりました. これで,これまでよりもさらに開発に使いやすくなり…

BBQ2010どーん

今日は久しぶりだったりそうでもなかったりの総勢70人オーバーが集まりBBQでした. 俺はあれか?燻製か! って感じでいぶされてました. 研究室に帰ってからもみんなで残りの食材で作ってもらった晩ご飯を食べてました. トリックおもろいわあ. M1がちゃん…

クラス設計

ううむ.同じことを書く.AがBを,BがCをメンバに持っていて,利用側はAからBを,BからCを取得する.こうなっていると,メンバ関数の呼び出しをフックできないんだよなあ.とはいえAでBとCを隠蔽すると,BとCの操作があるべきレイヤーはAではないのでモデル…

Twitter

@Rayerd Twitterしてるとほんと書くことなくなるよねー.

劇場版・涼宮ハルヒの消失

何はともあれ杉田乙!と言わざるを得ない.

Visual Studio に Focus+Context が欲しい!

コンセプトが伝わればいいレベルの簡単な絵を描いてみた. スクロールを始めると(あるいはスクロールバーの上にマウスオーバーすると),上のように全体の構成とスクロールバーの位置関係が表示される. 研究分野ではよく見る手法だけど,何で実用化されて…

なんでC#ネゲータ自作せなあかんのん?

public class Negater<T> : System.Collections.Generic.IComparer<T> { private IComparer<T> comparer; public Negater(IComparer<T> comparer) { this.comparer = comparer; } public int Compare(T x, T y) { return this.comparer.Compare(y, x); // 反転する } } L</t></t></t></t>…

はてなダイアリーでの[]の書き方

http://d.hatena.ne.jp/haru-s/20100125/1264450260 で愚痴っていた,タイトルや普通の本文にを書く方法がわかった.と[]の間に挟まれた部分は自動リンクされないようになるので, [][][]と書けばよい.文章のソースがカオスになるなあw

Listのシャッフル(2)

List&lt;T&gt;のシャッフル - ...ing logging 3.0 のコメントを受けて. そういえば,static class ListExtensions { ... } ができなかったから, ジェネリックな拡張メソッドはできないのかと諦めたんだけど, static class ListExtensions { static void M…

Listのシャッフル

List をシャッフルしたかった. 配列のシャッフル - 雑記 - otherwise を参考に拡張メソッドを作ってみたが,これだと別の T に対して List を作った時にいちいちコピペしなきゃならん. public class ListShuffler<T> { public void Shuffle(List<T> list) { Rand</t></t>…

shared static this モジュールコンストラクタ - dmd2.040

Added shared static constructors/destructors, regular static constructors/destructors now deal with TLS import std.stdio; import core.thread; class X { int v; } static X a; static this() { a = new X; a.v = 1; } shared static X b; shared st…

@disable - dmd2.040

Add @disable attribute import std.stdio; struct A { @disable this(this) {} // コピー禁止 } void main() { A a, b; a = b; // error } C++ではコピー禁止にするためにコピーコンストラクタやoperator=をprivateメンバにする方法がありましたが,D言語で…

interfaceにstatic/finalメンバ関数 - dmd 2.040

added static/final function implementations to interfaces import std.stdio; interface I { static int f() { return 1; } } class A : I {} void main() { I i = new A; writeln(i.f()); } staticメンバー関数を配置するために,IとAの間にそのためのク…

D基礎文法最速マスター

というタイトルではないですが, Perl基礎文法最速マスター Ruby基礎文法最速マスター というのが流行っているようなのでD言語をいじってみたい人はどうぞw http://rayerd.plala.jp/pukiwiki/ingwiki/index.php?C%2FC%2B%2B%E3%81%AB%E7%96%B2%E3%82%8C%E3%…

inout(type) or inout(type)?

http://www.digitalmars.com/d/2.0/function.html inout(int)[] foo(inout(int)[] a, int x, int y) { return a[x .. y]; } ふむ. import std.stdio; inout(int)[] f(inout(int)[] a, int x, int y) { return a[x .. y]; } void main() { auto b = f([1,2,3…

mixi outer blog

これくらいのスクリプトならいちいちextensionにしなくてもいいようになったらいいなあ. ダウンロード https://chrome.google.com/extensions/detail/jggmmjlffpmbnphndafobkjkdmhngdcb/ 説明 mixiで外部ブログを日記として設定している人のページを開いた…

enumに対するforeach (2)

import std.stdio; import std.typecons; import std.typetuple; template OddElements(T...) // 省略 template EvenElements(T...) // 省略 alias TypeTuple!( //要素定義 / 表示用テキスト "Read", "読み込みモード", "Write", "書き込みモード", "Append"…

enumに対するforeach

import std.stdio; import std.typecons; import std.typetuple; alias TypeTuple!( "Read", "Write", "Append" ) FileOpenModeDefinition; mixin(defineEnum!("FileOpenMode", FileOpenModeDefinition)); void main() { foreach (string element; FileOpenM…

OddElements!(T) / EvenElements!(T)

import std.typetuple; template OddElements(T...) { static if (T.length == 0) { alias TypeTuple!() OddElements; } else static if (T.length <= 2) { alias TypeTuple!(T[0]) OddElements; } else { alias TypeTuple!(T[0], OddElements!(T[2..$])) Od…

alias thisのフック

via. http://twitter.com/repeatedly/status/8021227522 import std.stdio; class A { B v; B get() { writeln("hook"); return v; } alias get this; } class B {} void main() { auto a = new A; a.v = new B; B b = a; // !!!! writeln(b); } hook a.Bこ…

type ident = void; と alias this による初期化遅延実験

import std.stdio; struct Int { private: int v; bool assigned; public: this(int i) { write(" [init] "); v = i; assigned = true; } int get() { if (!assigned) { write(" [init] "); v = 1; assigned = true; } return v; } void get(int i) { write(…

大きいマルチタップを買ってきて配線がスッキリした

7つのコンセントを持ったでかいのを買ってきた! 冬になり各自が別々に暖房を付けるようになった結果,頻繁にブレーカーが飛ぶようになった. これを避けるために配線を変更したため,最近のPC周りはひどいたこ足配線になっていた. そこで,マルチタップを…

bind的な何か

var tmp = { var url = document.location.href; window.addEventListener("load", function(){print(url);}, false); }; function print(url) { document.open(); document.write("url: " + url); document.close(); } printが引数を要求しているので addEv…

@property - dmd2.039

import std.stdio; class A{ @property int f() { return 0; } int g() { return 0; } } void main(){ A a = new A; writeln(a.f()); writeln(a.f); writeln(a.g()); writeln(a.g); } あれえー? @propertyなくても () を省略できてしまうぞ.

Re: C++ におけるコードレビューの重要性と活用

それD言語でできるよ! って言いたかったので考えてみた. より現実的な問題は,const_cast や mutable のような不穏なキーワードを伴わず,かつドキュメントと実際の動作が異なる場合です. #include <iostream> class LargeObj; LargeObj* g_obj; class LargeObj { p</iostream>…

What is Der?

http://twitter.com/Rayerd/status/7712309633 struct D{ D opBinary(string s)(D o){ static if(s==" ")return o; } D opDispatch(string n)(){ return this; } } void main(){ D hentai; D der = hentai programmer; } 何言語でもありませんよ. 何言語で…

mixi reply helper

サクッと移植したので公開します. ダウンロード https://chrome.google.com/extensions/detail/ghfmallohcpkjmplpiogpmgjkjmmoehk/ 説明 返信時のコメント欄に「>○○さん」と表示します. Firefox用のGreasemonkeyスクリプトmixi Name Quoterをchromeにexte…

フリーの写真が欲しい

やっぱり,ブログには写真が欲しいですね. フリーの写真を公開しているところを探してみようかな. でもファンヒーターはないか・・・・・.