それしてもコンパイルは通ったように見えるけど、実際は何も生成されない。
何も生成されない、というか空文字列として扱われてるみたい。
>-J. これがなんかの絵文字かなやんだおれは 修行がたりない
>:-J.
|| -J. | - ノ
|||| -J o/
やってることが暇人すぎてわろた
何か建設的な話題はないのか
2010年にD++が出る
D#とDavaとDoberonも出るよ
DaskellとかDCamlとかDispに期待。
DOBOLだな
最近はバグ取れてきた? そろそろ本格的に使ってみようかと思うんだが(趣味でだけど) JavaとRubyに慣れた身にはC++は苦痛・・・・・・代替言語が欲しい
javaに慣れてるならライブラリが薄いこと以外はスーパーセット的に使えるだろ rubyみたくクラスに機能をインジェクションしようと考えてテンプレートをいじる遊びもできるし
>>386 バグは普通に使う分にはすでにあまり問題ないレベルであるように感じる。
趣味で追いかける分にはD言語は愉快な言語だと思う。
struct Matrix(T, int M, int N) { const Matrix!(typeof(T + U), M, N) opAdd(U)(Matrix!(U, M, N) that); } こんな感じでテンプレートの引数として使われてるテンプレート引数って推論できないものかなあ。
390 :
386 :2008/06/07(土) 15:23:42
質問。 template hoge(int hage) { void hogefunc() { ... } } void func(int arg) { mixin hoge!(arg); hogefunc(); } って、どう展開されるんですか?
argはコンパイル時定数じゃないからテンプレートに渡すことはできない。
でもコンパイルとおっちゃうんですよねー・・・。 不定値になるのかな?
バグでしょ。
CTFEが働いているとかはないのか
typedefで初期値を変えても0が渡されてるからint.initですら無いようだねぇ。
>>395 CTFEにしても、関数はランタイムでも実行できないとだめだから、
コンパイルが通るのがおかしい。
既出のバグなのかな? あの大量のリストを全部確認するのはつらいよなあ… 1000近くあるし英語だし… というかこれも結構重複とかしてるんだろうなぁ…
連想配列をイテレートする便利クラスってなかったっけ? キーの大きい順にとか、値の小さい順にとかやりたいんだけども。
しっかりしたライブラリなら、 dsss build --doc でドキュメントが生成できるのな。知らなかったぜ。 dsss net install は未だに成功した試しがないんだがw
dmdとcandydocで作るのと一緒のやつだっけ? そういえばdmd -doc使ってないなあ プロファイラとコードカバレッジとユニットテストが dmdでできるのは重宝しているが
>>400 foreach (v; aa.keys.sort) {...} とかじゃ不足?
404 :
403 :2008/06/09(月) 10:48:26
微妙に間違えた。 キーで回すんだから foreach (k; aa.keys.sort) と書かなきゃ。
値でソートしたり、値が一致したときにキーにフォールバックしたりしたいの。
>>404 まだ微妙じゃないのか?
foreach (v, k; aa.keys.sort) じゃね?
>>405 >フォールバック
ちくしょう、おいらにゃ意味がわかんねぇ
>>406 書くならこうだろう。
foreach (i, k; aa.keys.sort)
今無性にimport文でワイルドカード使いたい。Javaみたいに。ニュースグループではそんな無駄な 機能いらねぇよ派が多数だったみたいだけどな。Tango のライブラリとか細かすぎていちいち 書くの面倒になっちゃうよ。DFL みたいに all.d みたいなファイルを用意しておけば、まぁ 似たようなことはできそうなんだけど。
Tangoにもまとめてimportする用のモジュールあるじゃん。
410 :
408 :2008/06/10(火) 03:40:56
…あ。tango.group なんてあるのね。
>>409 のお陰で得した気分だ、ありがとう
処理速度ってC++より早いのか?
412 :
デフォルトの名無しさん :2008/06/11(水) 08:37:58
また馬鹿げた質問を 単純ループのベンチマークでもとって比べるか?w
処理速度気にするなら単純なコードでコンパイルして逆汗して比較汁 コンパイラの出来も同時に判る 組み込みやってた知り合いはそれやってたらできたてのコンパイラのバグみつけた
string s = Format!("Arg %s = %s", "foo", 27); を実行しようとすると、 cannot implicitly convert expression ("Arg %s = %sfoo27") of type const(char[]) to invariant(char)[] て怒られた。 なんでstringで受けられないの? ってことと、あと文字列が連結されてるだけで置換されてない……。 公式のサンプル通りなんだけど、ドキュメント古くなってる? 俺がなんか変なことしてるのかな。
metastringsのソース見れば分かるけど返ってくるのはconst char[]なので, stringでは受けられないんじゃないかなぁ(実際はconst(const(char[]))かな). 使うときはいつもautoなので気にしてなかった. それと,Formatの中ではchar[]で分岐してるので, ここをconst char[]に修正しないとまともにフォーマットされない.
Formatはconst/invariant導入されてから壊れっぱなしだな。 めったに使わないから不自由はしてないけど
trunkにあるから書き換えてくれていいよ!
D言語楽しい!
さいきんBill Baxterさんが本家メイリングリストに出てこないなぁ。 お忙しいのか?
>>418 The old collection package will be deprecated prior to Tango 1.0.
こういうところがだろ?wwわかります。
D言語使いには勇者が多いw
linux版のThreadクラスって、処理が終わってもリソース開放しないのな Threadクラスはガベコレが見てるから、別クラスを作るわけにもいかないし phobos書き換えないと使えないってどんだけ std.fileもなんかおかしいし linux版ってもしかしてだれも使ってない? windowsから移ってきてみたら、びっくりだ
たまにはソースとか読んでみようと思ったのに、 コンパイラにくっついてるのってひょっとしてフロントエンドの部分だけ? コード生成とか最適化とかの部分はどっか別のところにある?
>>424 その辺はdmcと共有してて非公開だったと思う
426 :
デフォルトの名無しさん :2008/06/13(金) 16:24:39
>>424 フロントエンド部分だけがGDC用に公開されてる。
dsource.org の鯖はあんまり栄養状態が良くないよな。鯖そのもの だけじゃなく、プロジェクトも abandoned なのが多いし。
windows やら unix やらばかりじゃなくて、 組み込みとかにも目を向けて欲しいんだが。
組み込みでGCやなんやはオーバースペックじゃないか? まあ、最近は組み込みっていってもWindows動いてたりするけどさ。
最近の言語では一番組み込みに適用できそうな予感 ある程度のスペックのあるターゲットになるだろうけど
>>429 終わってるプロジェクトとそうでないものを区別して欲しいな
最終更新日時でソートするだけでもいいけど
tango、現trunkにて、tango.util.logパッケージでも破壊的な変更が… いいぞ、もっとやれ(笑)
うぉるたんからして破壊的な変更大好きだし。
D好きはマゾですか
破壊的な仕様変更は普及してない時期にしかできないw
つまりDはいつまでも破壊的に変更できるわけですね!
プロトタイプは一旦作ってソースを捨てるのが 正しい方法らしいからいいんじゃねw
>>439 金と時間に余裕がなきゃできないけどなw
一度やってみたいよ。
TangoがDの命名規則に従う伏線とか…
tango.text.Regex の正規表現のコンパイルの遅さに萌え
gdc on MinGWのビルドがうまくいかん。 2.x系が使いたいんだが、 最近のバイナリってどっかにないかな?
をるたんそろそろ更新をあたえてくれ〜
tango.text.Regexがdebugビルド不可なのは、何の意図なのだろうか
debugなんてのは臆病者のやることだ。
臆病者と馬鹿者のどっちになるかってことだな。
うぉるたんやプロパティの+=はまだかいの
さっき食べたでしょ
C++のstd::vectorぽいことをしたいのですが 動的配列+phobosのalgorithmで頑張る? →push_backしたい。 →remove_if等が存在しないような? tangoのcollectionを使う? →sortやremove_ifをしたい場合、toArrayで配列にしないと無理? →stable_sortが存在しないような? いまいちこれだという方法が無い気がするのです。 なにか良いライブラリ等ありますでしょうか。
→push_backしたい。
int[] a;
a ~= other;
→remove_if等が存在しないような?
2.x系なら
ttp://www.digitalmars.com/d/2.0/phobos/std_algorithm.html#inPlace int[] arr = [ 1, 2, 3, 4, 5 ];
// eliminate even elements
auto r = eliminate!("(a & 1) == 0")(arr);
assert(r == [ 1, 3, 5 ]);
assert(arr == [ 1, 3, 5, 4, 5 ]);
で無理かな?
Version D 2.015 Jun 17, 2008 PICマイコン対応…と夢想しかけた。
* Function templates can now deduce the return type if they are declared with auto. 戻り値型推論キター * Added Constraints to templates. どうせならconceptまで実装してくれよ。
(1) auto func(T)(){ return 1; } (2) auto func(){ return 1; } (1)は通るのに(2)は通らない。けち臭いなあ
auto func()(){ return 1; } でおk
ああ、テンプレートはパラメータなしでもよかったのか。 でも、ばっちいお…
戻り値の型推論!! でもなんで無名関数とテンプレートだけなんだ * Added Constraints to templates. これは何かすげーなw
テンプレートの型推論のルーチンを 使い回すのが難しいコードになってるとか邪推。
無名関数の戻り型推論って結構まえからできなかったっけ?
そだね 今回できるようになったと言ってるわけじゃないんだわ
auto f()(){ typeof(return) a; return a; } void main() { f(); } コンパイラしんじゃうよー
Constraintにキーワードifつかっちゃったのか。 なんか気持ち悪いな
予約語はできるだけ増やさない、みたいな方針があるのかな。 前から結構使いまわしてるよね。
DからDirectXってそんなに面倒そうでもなさそうなんだがな・・・・・? Cとのインターフェースはあるんだから
>>470 なんという勇者w
DirectXなんてほとんど使ったことないが、
面白そうだからちょっといじってみるか
>>468 まったく人がいなくて吹いた。
SDL+OpenGLのほうがポーティング揃ってるし、DirectX使うより楽だとおも。
たしかゲーム用にラップしたライブラリあったし。
あとフリーゲームの『去人たち』って、エロじゃないけどノベルゲで、D言語で作ってたはず。
ただシステム糞重くてうわーって感じだったけど。
>>465 呼び出す側で古代C言語みたいにvoid型でキャストしよう。
DのIDLコンパイラとか誰か作ってないのかなあ
>>469 DirectXはCOMオブジェクトだから、ポーティングの仕方がCライブラリとはちょっとだけ違う。
ここまで型を書かなくてよくなったら もういっそのこと無名関数テンプレートが欲しくなったんだがw auto dg = (T,U)(T t, U u){ return t+u; }; するとこうなって auto dg = (auto t, auto u){ return t+u; }; 最終的にはこうか?w auto dg = (t, u){ return t+u; }; これなんてマクロ?
つーか、macroキーワードが使える日が早く来ればそれでいいんだよ…
無名関数テンプレートが欲しいのは分かるが、できるとしても alias (T,U)(T t, U u){ return t+u; } dg; が精一杯。
>>477 どうぞ。
auto dg = new class {
auto opCall(T, U)(T t, U u) {
return t + u;
}
};
writeln(typeid(typeof((int i){}))); 2.015でデリゲート型の引数が表示されないんだけど、前からだっけ?
なんでBufferedFileはデストラクタでcloseしないんだ とおもってソース見てみたら、そもそもデストラクタなかった。 どうなってんだよ。
> これはつまり、 デストラクタからはメンバオブジェクトを参照できないことを意味しています。 これがなければデストラクタも使い物になるというものの…
とりあえず必要だと思うのは、scopeメンバ変数だな。 コンストラクタで一回だけ初期化できて、オブジェクトがdeleteされるときに道ずれにdeleteするの。
Tango導入しようかなあ… phobosは統一性なさすぎて辛い…
>>485 ファイルハンドルのような開放しなければならないメモリはガベコレの外にあるのだから、デストラクタに開放処理を書いても問題ないと思うけどね。
IDisposable的なhackが必要になるってことか。
>>485 これって、メンバオブジェクトをdeleteすることも認められないのかな?
あーもー英語使わなくてもphobosのtrunkにコミットできたい
staticメンバにリストを作って管理とか無理かな
>>486 そんなのイラネwwww
って思ったけど、必要だな・・・
>>488 たしか、デストラクタって呼ばれる保証はないんじゃなかったっけ?
だとしたら確実に行われなければならない処理をデストラクタに書くことはできないと思うのだけど。
デストラクタからcloseとかの後始末関数を呼べばいいよ。 scope変数に入れたときは、必ずスコープアウトするときにデストラクタ呼ばれるから。
496 :
デフォルトの名無しさん :2008/06/21(土) 23:15:25
C++で言うところの純粋仮想関数のように、 抽象クラス側のメンバ関数定義において 派生クラスで必ず上書きをする事を明示する修飾子ってありますか?
abstract
abstract属性
auto outfile = new FileConduit("output.txt", FileConduit.WriteCreate); auto file = new FileConduit("hogehoge.txt"); auto buf = new BufferInput(file); while (buf.fill(buf) != IConduit.Eof) { auto str = buf.slice(buf.readable); Cout.output.write(str); outfile.write(str); } Tango なんだけど、Conduit から入力したものを複数の Conduit(?) に出力したいとき、 こういう風に一回バッファを介すしかないの?なんだか妙に生ぐさいやり方で気持ち悪いんだけど、 もっと良い方法ない?Conduit, Buffer, Input/OutputStream のあたりの仕組みが全く理解できない
std.algorithmって今のところ配列にしか使えない? 自作のコンテナでも、イテレータ定義すれば使えるのかなと思ったんだが、そもそもイテレータの作り方がよくわからん。 opStarAssignとかないし。
>>502 それ、以前調べたけどまだ無理だと思う。
std.algorithm の中でイテレータに対して foreach range 文を使ってるんだけど
現状では foreach range 文をカスタマイズできないから、独自イテレータを定義できない。
504 :
500 :2008/06/22(日) 13:27:30
>>501 おお、わざわざdクス。その方向でいってみるよ、ありがとう。
505 :
500 :2008/06/22(日) 17:02:06
ConduitとStreamってどう違うの?
IConduitはInputStreamかつOutputStreamなのだから、同じなんじゃないかと。 ただ、どうやらConduitがベースになってて、他の便利なストリームに突っ込んで使うのがいい感じらしい。 Conduitは「入出力先」、Streamは「使い方」みたいな使い分けなんじゃないかと思う。 あと、InputStreamとOutputStreamはほかのStreamとは若干違って、Conduitの役割をInputとOutputで分割したようなものだと思って使ってる。
>>503 なる。どうもありがとう。
……がっかりだーorz
はぁ?手軽に最高速がDの売りなんじゃないですかぁ? バカなの? ぶっちゃけC++のほうが100万倍マシ
ええ全く、ウォルタンに言ってやってくださいよー
>>509 元ネタはRubyだったのに何でC++に変えたの?
複数ファイルを一度にimportする方法ってありますか? // ファイル a.d module a; // ファイル b.d module b; とかあった場合に // ファイル include.d module include; import a; import b; とかして import include; でaとbをimportみたいにしたいのですが。
public import a, b; とかかな。 調べずに発言
文字配列の連想配列の配列の配列の長さを変えるにはどうしたらいいのでしょうか int main(){ char[][char[]][] list; list.length = 100; return 0; } とすると途中で止まってしまいます。 どのようにしたら止まらせずにlistの長さを伸ばしたり縮めたりできるのでしょうか
515 :
514 :2008/06/23(月) 14:46:04
すみません既出のバグなんですね… >264試してみます
516 :
514 :2008/06/23(月) 15:04:03
すみません、やっぱり分からないです nullで埋めるというのも分かりません list[0] = null; とやっても使えないですし 連想配列を含む配列は使わない方がいいのでしょうか
別にそれ自体として使わないほうがいいってことはないだろうが、 バグがあるんだから使わないほうがいいだろう。実際に使えないわけだし。
連投失礼 しばらくしたら消えるみたいだし、一応貼っておく -- int main(){ typedef char[][char[]] Map = null; Map[] list; list.length = 100; writef(list.length); return 0; } -- 100
しばらくといっても結構長いみたいだね
>>20 のもまだ消えてないみたいだし
>>20 template Res(int N, O)
{
res!(N) << O.toString();
in { assert(O >> N); }
invariant O = N;
enum O = N;
throw new O(">>" ~ N.toString());
}
mixin Res(1, 乙);
はっちゃえ
foreach( i, v, vs) { if( v.noneed ) { vs.remove(i); } } これが、2.0.15でできなくなった・・・ しかたないか
foreach( i, v; vs) { じゃなくて?
あ、それそれ ごめん
>>518 ありがとうございますm(_ _)m
不思議だ…
何でtypedefかませると動くんだろう
もう構造体かクラスかで囲ってそれを配列化しようかとか思ったけど
凄い人はやっぱりいるもんだなぁ
既出だろうけどモジュールと同じ名前のディレクトリがあるとldで躓いてコンパイル失敗するね
>519を動かそうと思ってn.dってファイル作ってdmd nさせたら
nってディレクトリがあるもんだから失敗した\(^o^)/
ttp://dsource.org/forums/viewtopic.php?t=3279 このやたらハイテンションな中国人によると、Entice Designer で日本語が入力できない問題は、
同梱の Scintilla のバージョンが古いせいらしい。このポストのとおり、SciTE のバイナリを
落としてきて、SciLexer.dll -> enticelex.dll にリネームして上書きすれば日本語が通ったよ。
Entice、補完はいまいちだけど Descent より軽いので、漏れはコードエディタとして重宝してる。
連想配列のlengthは読み取り専用だから
>>261 は動かなくて当然だけど、
>>514 は連想配列か普通の配列かの判断が甘いから起こるのかな。
typedefすれば確実に普通の配列だとわかるからlengthに値をセットできる、と。
>>528 その理屈はおかしい、
>>261 のaは連想配列ではなくて動的配列だし、
typedefすることによって型の曖昧さが減るということもありえない。
実行環境がLinuxだからとかではなくて?
531 :
518 :2008/06/24(火) 08:01:25
一応説明すると、 配列のところ読んだら連想配列も動的配列も長さ0で初期化されるとあったから ふとtypedefするときに初期値を新しく指定できるっていうのを思い出して試しただけだったり (最初は適当な配列で初期化しようとしたけど、連想配列リテラルがよく分からないからnullにしたら動いた) 試しにtypedefの = null を削るとcodepadでもTimeoutする 何で初期値指定すると動くのかとかはよく分からんが
>513 できました!ありがとうございます。
>>531 本来、nullと長さ零の配列は同じ扱いのはずなんだけどねえ
全く同じわけではないらしい void main() { int[] a = null; int[] b = [1,2,3]; b.length = 0; assert(a == b); // success assert(a is b); // fail }
>>533 最初の頃はそういってたけど、いつの間にか仕様が変わったらしい。
下記のように場合に、インナークラスから自身が持つフィールドと同名の 親階層のフィールドにアクセスしたい場合の方法ってありますか? superは継承の場合だし、CTest.Value_はコンパイルエラーに。 class CTest { int Value_; CInner Inner_; class CInner { int Value_; void Function(){ // 自身のValue_を表示 writefln("%d",Value_); // 親階層のValue_を表示する場合は?? writefln("%d",???); } } this(){ Value_ = 1; Inner_ = new CInner(); Inner_.Value_ = 2; } void Function(){ Inner_.Function(); } }
>>537 ありがとうございます。
this.outer.Value_ でいけました。
そういえば outer ってキーワードなのな
conceptまだー?
何やらブラクラ危険と専ブラが教えてくれるのだが
>>542 心霊写真と見せかけてしばらく見てると白粉野郎がアップになるやつ。
しばらくってほど時間が経過しないのがなんだかな じーーっくりと見させてからやった方がダメージ大きいのに
専ブラによってはアニgifのサムネイルが最後の1枚になってたりして効果ない びびったけど
546 :
デフォルトの名無しさん :2008/06/28(土) 02:31:24
>>541 びびった。だがD関係ねーや。
あるいはこれがまだ見ぬヲルタンの素顔なのか?
ウォルたんにヒゲはあるのだろうか
テンプレートって計算完備?
折りたたむだけ
hoge hige hage
朝起きたら枕元に美少女死神が立ってて鎌で殺してくんねえかなあ…はぁ…
Constraintsって何か意味あるんですか? static ifで同じことができる気がするんですが
>>552 分けてかけることに意味があるんじゃない?
よくわからんけど。
>>553 うーん、わざわざ構文拡張してまでやることなのかな…
まあよく考えたら将来的な理由かもしれないし、
あんまりこだわらないことにします
スクリプト言語ひとつ覚えたんで、次は念願のコンパイル型言語を――と思って Dを狙ってるんですが、このスレ見る限りやめたほうがいいような気がしてきました。 この言語将来性あるんでしょうか? こんなに利用者にコケにされてる言語はじめてみた。
このスレは信者だらけだから、少なくともコケにはされてないだろ。
……コケにされてるか? むしろこのスレでは愛されてると思うんだがな。 まあそれはさておき、バイナリ吐く言語使いたいなら素直ににC/C++やった方がいいと思うんだ
>555 初のコンパイラ方式をDにするのはやめたほうがいいのではないかと。 CかJavaかC#が良いと思う Dは、ある程度以上の実力者が戯れるのには最適な言語だと思う
いろいろできたのう // 特殊化 template factorial(int n) { enum factorial = n * factorial!(n - 1); } template factorial(int n : 1) { enum factorial = 1; } // constraints template factorial(int n) if(n != 1) { enum factorial = n * factorial!(n - 1); } template factorial(int n) if(n == 1) { enum factorial = 1; } // static if template factorial(int n) { static if(n != 1) enum factorial = n * factorial!(n - 1); else enum factorial = 1; } // CTFE int factorial(int n) { if(n != 1) return n * factorial(n - 1); else return 1; }
Java出身者にはテンプレートが魔法に見えるから困る これだけでチューリング完全とかw
なんというか、There's more than one way to do itって感じになってきたな…
もともとそういう志向はなきにしもだったからな でもテンプレート周りとかconst周りはmore than one wayだけでもないぜ。 コンパイル時に決定可能かどうかという重大な違いがある
563 :
555 :2008/06/29(日) 00:48:50
色々ありがとうございます。 言語仕様や標準ライブラリにいろいろけちつけるのは愛の鞭だったんですね。 初のコンパイラ型言語ってわけでもないので(Cを一通り。MinGWのWindows SDKにあちこち不備があるのが鬱陶しくなってやめた) 忠告を聞かずにDの世界に飛び込んでみます。
>不備があるのが鬱陶しくなってやめた ここがひっかかるw Dはそんなのの塊のような気がす
ゲーム作るのでなければwxDを使えばいくらか幸せになるかと
>>564 > >不備があるのが鬱陶しくなってやめた
> ここがひっかかるw
w
まああの頃とは一味違うつもりなんで……不備は自分でどうにかできる、といいな。
>>565 GUIツールキットってメモリ喰いであまりいいイメージないんですよね。
せっかくWindows API結構覚えてるんで生で頑張ります。
と、ここまで書いてちょっと調べてみたらwxWidgetsって普通のGUIツールキットとはちょっと違うんですね。これは素敵かも。
メモリの配置を覚えるためにもやっぱC/C++あたりを使うのがいいだろうな CはやることやったらすぐC→C++でもいいと思うし
C++は時間の無駄だと思ってるからやっぱりDで
Dこそ時間の無駄で終わらなければよいが…って思ってる いつか仕事で使える日が来ることを期待してるが
仕事で使わせてくれる会社に入ればいい
Hoge hoge = new Hoge(); SetWindowsLong(win, GWL_USER_DATA, &hoge); ってかんじでウィンドウにインスタンスをひも付けさせたら しばらくは使えるんだけど、そのうちインスタンスが まともにとれなくなるのはやっぱりGCのせい?
>>571 yes.
どこかに参照を残しておかないとなくなる。
カーネルオブジェクトの中にある参照をGCが見つけられるわけがない
DのGCって、再配置型?
>>571 そもそもDのクラスは参照型なので、やるとしても
Hoge hoge = new Hoge();
SetWindowsLong(win, GWL_USER_DATA, cast(void*)hoge);
こうじゃないか?
&hogeだとhogeの寿命が来た時点でダメになる気がする。
>>575 GreenPadのソースみながらウィンドウプロシジャ周り(0x042444c7の)をDでやろうとした時に引っかかったw
冷静になって考えれば簡単なミスなんだが。結構考え込んだ気がする。
GWL_USER_DATAでぐぐったらこのスレが出た。 9時間弱しか経ってないのにgoogleすごいな
最近のゴッゴル先生とか凄いよな… 足りない情報を探そうと思ったら〜というのを探してますっていう昨日の自分の書き込みがヒットしたり…
2chで質問して反応がないので、後日検索すると 自分の質問が検索結果のTOPにでる悲しさ
最近のゴッコル先生は2chのクローリング頻度をやたら上げてるからな 2chで質問してから2時間くらいで自分の質問が引っかかったことがある しかし自分のブログは一切かからない
更新頻度でクロール頻度も変えてたりするのかね
switch〜case で break 書かなきゃ下に降りちゃうの? こんなとこまでCを真似なくていいのに
caseで複数条件に対して一つの処理にしたいときにできないと困るじゃない
>>541 見て心臓が痛くなったんだけど訴えたら勝てるかな
すぐ下でびっくり系のブラクラって説明されてるのにクリックするなよ
2ちゃんねる鉄の掟. 出されたご飯は残さず食べる。 転んでも泣かない。 おいら(ひろゆき)のギャグには大爆笑する。
>>583 switch(n) {
case 1: ...
case 2,3: ...
case 4,5,6: ...
}
でいい
そんなことよりもほかの言語との整合性が取れなくなって余計なヒューマンエラーが発生することのほうが問題。 って我らがうぉるたーたんのお達しだ。諦めておけ。
まぁ、違う仕様にするならキーワードを case じゃなくて when にするとか しないと混乱するしな。
個人的にはswitch_breakみたいな名前でも欲しい でも、無くてもそんなに困らないし、 そんなことよりライブラリをどうにか…
case 0..10とかできないのかな。VBみたいだけど。
いよいよ ... がほしくなる
vbといったらcase is
MPDさんのウィンドウは閉じないww
誤爆すまぬ
>584 はbreak; って書かれても fall thru しちゃういけない子
switch (url) { case ブラクラ: if (res!=584) throw new bad_res; } こうですか?わかりま(ry
res = 584;goto case ブラクラ;
nullオブジェクトにアクセスしたときにAccess Violationになりますが、 このときにうまくスタックトレースを取る方法がありますでしょうか。 flectionedを使うと例外の場合のスタックトレースは取れたのですが……
そこはddbgじゃねーかな
関数内で定義したローカル変数のポインタを返しても大丈夫ですか? int* Func(){ int Num = 10; return &Num; } みたいにした場合にスコープを抜けてもアドレスは有効なのでしょうか。
603 :
601 :2008/07/02(水) 17:45:01
自己解決。 良いわけないですね。コンパイルエラーになりました。
東京でやってくれるなら喋りに行くのに。
ネタがないっす
英語ミリ
>>602 え?どうせ行くつもりなかったけどいつ募集してたの?
>>608 普通にずっとNGで募集してたと思うが。
更新まだー?
おまいらNGって何で読んでる?
俺はfirefox
thunderbirdで読んでる
D2.0とphobosでeliminateなどで使用する叙述関数に 任意の引数を渡したいのですが、可能でしょうか? void main(){ const int Value = 3; int[] Nums = [1,2,3,4,5]; Nums = eliminate!("a < Value")(Nums); } とか void main(){ const int Value = 10; int[] Nums = [1,2,3,4,5]; static bool Func(int Src, int Value){ return Src < Value; } Nums = eliminate!(Func(Value))(Nums); } のような事をやりたいのですが。
D2.0のstd.streamって使えないんですかね FileのreadLineをstringに渡そうと思ったら Error: cannot implicitly convert expression (input.readLine()) of ty pe char[] to invariant(char)[] とかエラーがでるから困る 標準ストリームはdin,doutでいいんだけど CFileを使うのは気が引ける。fopenとかいまさら使いたくないし
時間ないから簡単に 前者はmixinで文字列生成 後者は static bool Func(int Value)(int Src){return Src < Value;} eliminate!(Func!(10))(Nums) とか? 試してないから間違ってたらごめん
ええい mutable typeからinvariant typeへは明示的な変換が必要だからidup string s = stream_.readLine().idup;
618 :
615 :2008/07/04(金) 17:45:28
>>617 っていうか標準ライブラリなんだからinvariant仕様に直しとけと言いたい
Fileをカプセル化した自前クラスで美味しくいただけそうです
std.stringは全部をconst(char)[]にしてもらいたい 更新まだかなぁ・・・
>>614 とりあえず成功する例
かっこ悪いのでbindとか関数リテラルがどのくらい効くのか教えていただけると助かります
const int Value = 3;
static bool func(int a) { return (a < Value); }
void main(){
int[] Nums = [1,2,3,4,5];
Nums = eliminate!(func)(Nums);
writefln(Nums);
}
>>616 後者は動きました。
>614のコードにはめると
eliminate!(Func!(Value))(Nums)
で動きますね
Valueを用意する必要がないのでは? あえて定数に名前を付けたいのなら enum Value = 3; をおすすめ
あと std.bind はずっとぶっこわれ中
lazyな引数を関数外部に持っていく方法あったら教えてくれ〜
void delegate() dg; void func(lazy void a) { dg={return a;}; } これでいけると思うんだがコンパイラが死ぬな。 void func(void delegate()[] a...); でも使っとくといいと思う。
626 :
614 :2008/07/06(日) 01:30:55
すいません、説明不足でした。 というか提示した例が悪かったです。 比較したいValueは動的な値です。 const int Value = 3; を int Value = 3; に置き換えた場合で考えて頂けますでしょうか。 C++でboost::lambdaを使った場合の int Value = 3; remove_if(Nums.begin(), Nums.end(), _1 < Value); のようなことがやりたいのです。
謎さんとこのstd.expressionとか。
phobosのstd.algorithmはコンパイル時に決定してる関数しか受け付けないから不便だな。 とっとと、static引数導入してオーバーロードで関数ポインタとかも取れるように整理してほしいわ
自分で書くしかなくね? import std.stdio; T[] removeIf(alias cond, T)(T[] arr) { T[] ret; foreach (i; arr) if (cond(i)) ret ~= i; return ret; } void main() { auto less3 = (int i){return i < 3;}; static bool greator3(int i){return i > 3;}; int[] arr = [1,2,3,4,5]; writefln(removeIf!((int i){return i<4;})(arr)); writefln(removeIf!(less3)(arr)); writefln(removeIf!(greator3)(arr)); }
closureあるから int j = 3; auto less = (int i){return i<j;}; これできるよ
名前が付いてないとダメだってのは使い勝手が悪いな
俺もそう思ってたが実は無名関数でもいけてる件
>>629 のこれのことなのだが
writefln(removeIf!((int i){return i<4;})(arr));
もしかしてphobosの話だろうか
こないだのアップデートからリテラルのaliasも取れるようになったんだっけか。
ああそれでか
連想配列の clear ってどうやるですか?
新しいのと取り替えればいいんじゃない?
これでよくなかったっけ int[int] a = [1:1]; writefln(a); a = null; writefln(a);
それは空のと取り替えただけでクリアしたと言えるかは疑問だな。 もとのaの参照をどこかで持ってれば、そっちはクリアされないわけだし。
foreach (key; aa.keys) aa.remove(key); じゃダメ?
2.016まだかよー
>629 やりたかったのはまさにこれです。 ばっちりです。ありがとうございました。
D言語の配列は参照型だとあるのですが、引数で渡す場合は確かにrefを つけなくても参照で渡されているのですが、返値で返した場合って.dup されたものが返されてしまうのでしょうか? class CTest{ int[] Nums; this(){ Nums ~= 1; Nums ~= 2; Nums ~= 3; } int[] GetNums(){return Nums;} } void main(){ CTest Test = new CTest; int[] Nums = Test.GetNums(); Nums ~= 4; } でTest.Numsに4を追加したいのですが。 配列に限らずD言語で参照返しする場合ってどうやるのでしょうか。
>>644 Nums ~= 4; の直前と直後の配列のポインタを見てみるとわかるけど、インスタンスが変わっちゃってる。
# ということは、 ~= の演算子は配列のインスタンスに対する捜査ではなくて、配列のインスタンスを保存している変数に対する操作っていうこと…かな?
classの場合は普通に返せる。配列だけは操作するときにインスタンスが同じものになるかどうか注意しなきゃいけない。
# 配列の要素を増やす時は違うインスタンスになる場合があって、配列の要素を減らす場合にはインスタンスは変わらない。
tangoのArrayBagみたいなクラスでラップすると幸せになれるかもしれない。
Core2DuoE6600の環境なんだけどstd.cpuid.amd64がtrue 笑っちゃった。俺の環境がおかしいのか?
>646 試してみましたが自分の環境では ~= の前後ではアドレスは変わらなかったです。 そして引数で渡したときはアドレスが変わらず、返値で返した場合はアドレスが 変わっていました。 class CTest{ int[] Nums; this(){ Nums ~= 1; Nums ~= 2; Nums ~= 3; } int[]* GetpNums(){return &Nums;} } void main(){ CTest Test = new CTest; int[]* pNums = Test.GetNums(); *pNums ~= 4; } と配列のポインタを返すようにしたらできました。 ただ、これだとGCがちゃんと返した配列のポインタを追ってくれるのかが不安だったり。 うーん、いまいち配列の扱いがわからない。 やはりクラスでラップするのが安全なのかなぁ。
たぶん勘違いしてる、というか俺の伝え方が悪かった。すまん。
配列のポインタは Nums.ptr これで得られる。
http://codepad.org/tvVXZGEx ↑を参考にするとわかると思う。
# ちなみに、容量をリザーブしておくとインスタンスが変わらない。
# コメントアウトをはずすと同じポインタになる。
>>648 codepadの環境では、前後でアドレスは変わった。
http://codepad.org/Mxf3ifJm > Test.Nums: [401C3FB0]
> main.Nums(before): [401C3FB0]
> main.Nums(after): [401C2F80]
一応、仕様では「配列の連結は、 片方が長さ 0 の配列であっても必ずコピーを伴います」
だそうなので、Nums ~= 4; でローカルのNumsアドレスが新しい配列のものになるのが正常だと思う。
(つまり、参照先の配列インスタンス自体を連結演算によって変更するのは無理ってこと)
一個のメンバ変数を対象として変更する場合はメンバ変数への参照(ポインタ)を返してやればいいけど、
それだとTest.Numsの指す配列が他の変数によって参照されてたりするとやっかいな問題になると思う。
>>647 AMD64とEM64Tってほぼ互換じゃなかったっけ
>>649 > # ちなみに、容量をリザーブしておくとインスタンスが変わらない。
> # コメントアウトをはずすと同じポインタになる。
ホントだ。
Nums ~= 4; を Nums = Nums~4; とすると、アドレスが変わるようになる。
http://codepad.org/WetmPBdy アドレスが変わらない場合も、Test.Numsの長さが自動的に延びるわけじゃなくて、
スライスみたいなことになってるみたいだ。(Test.Numsには4は追加されない)
http://codepad.org/cWJnruXE こういう仕様なのかバグなのか。実装を考えればこの挙動は自然だけど……
lengthを増やすとアドレスが変わってしまいますね。
そしてリザーブしてもアドレスは変わらないが、追加されたメンバが
更新されないと……
http://codepad.org/Kg0yzNfz みたいに引数にリファレンスで渡した場合は追加されるので、それと
同じ事が返値でもできればいいのですが。
C++のように返値のリファレンス指定でできないんですねぇ。
std.xml、マニュアルにあるサンプルプログラムちゃんと動く? どうしてもうまく動かない・・・ 2.0.15です
前に誰かがstd.xmlが動かなくなったって言ってたような・・・ trunk版でも無理なのだろうか
>>654 >C++のように返値のリファレンス指定
俺もこれほしいかも
というか、参照とかポインタとかはC++のほうがわかりやすくて好きだ…
(関数ポインタを除く)
>>645 linux環境だと、Theadクラス使うと落ちまくってとても使えたものじゃないのだが、
いつになったら直るのだろうか・・・
>>645 ん、まさか tnago に DBI でもマージするつもりなのか…
アレの SQLite バインディングは動かないコードのまま trunk に放置されてるからなぁ…
>>661 >tango.io: The use of FilePath and PathView in FileConduit is deprecated in favour of char[] paths
>tango.text.xml.XmlPrinter: Deprecated in favor of DocPrinter
>tango.group: Deprecation period expired, so will be removed.
ここら辺はかなり厳しそうだな。
phobosのtrunkが大量に更新されてる件
暴走するのはPhobosだけにしてくれよ…
これはDコミュニティの文化だよ
PhobosとTangoがなかよくなりますように・・・
2.016もきた
- re-implemented internal.monitor in D. Rationalized internal.object
- Bugzilla 288: changed return type of opEquals from int to bool. ***This necessitates doing a grep for opEquals and changing all the return values.***
- Added .__vptr and .__monitor properties for class objects for use in the internal runtime library.
- Made rdmd's source available through svn, see
http://dsource.org/projects/phobos/browser/trunk/tools/rdmd.d - Simplified std.algorithm by fusing together higher-order functions taking an alias and their counterparts taking a string
-Added module std.array containing array operations: insert, erase, and replace
-Changed the enforce's implementation to generate smaller code per call
-Changed std.functional.binaryFun to work with strings and function aliases alike
-In std.getopt, added optChar, assignChar, and endOfOptions, per popular demand :o|
-In std.math, replaced a bunch of consts with enums
-In std.numeric, added Don Clugston as author and operated minor documentation fixes
-Improved std.stdio.chunks to take an iteration tally in addition to the chunk
また、すごい変更がw
大して大きくないような。.__vptrと.__monitorは今まで無かったのが(ry それより修正して欲しかったバグの修正ktkr
よくわからん・・・誰か要点を・・・
>>671 opEqualsの戻り値型が変わったことぐらいだろ。
stringzとかいう型出来ないかな 文字列が入ると最後に'\0'を埋めてくれて writeflnなどD用の時は'\0'を無視、 C用の時は'\0'を使えるという感じに もしくはC用の関数内では最後に'\0'が付加されるというような toStringzで事足りるんだけどな
>>673 リンケージによって文字列の内部構造が変化するのは便利かもだけど怖い
opEqualsとうとうboolになったのか。 パフォーマンスが云々うぉるたんが抵抗してたのは解決したんかな。 しかしTangoはどうあってもモジュール名のUpperCamelを止める気はないのだろうか。
>>675 いまさら変えられても混乱するしこのままでいいかなって最近思ってきた。
opAssign定義した構造体の連想配列に新しく要素を格納しようとすると落ちるのは何でなんだぜ?
独り言だけど、Win32 とのやり取りが面倒なので、 普通にマルチバイト文字が使えるようにして欲しい。 const char *track_name[] = [mbs"日本語",mbs"日本語"]; みたいな。
今更A関数なんて使わないっしょ。W関数で十分っしょ。とか言われてたなあ。
>>678 それはコンパイル時に文字コードが決まるの?それとも実行時?
CTFE-ableな変換関数をですね… const achar* track_name[] = [astring("日本語"), astring("日本語")];
もうShift-JISはやめようぜ
今更A関数なんて使わないっしょ。W関数で十分っしょ。
いまどきデフォルトエンコードがUFT-8じゃないOSが糞ということ
主要なソフトがsjisにも対応していればいいだけの話で 過去との互換性を気にするならば 最低限のテキストエディタのメモ帳ぐらいが対応すればいい話 win用で人気のあるテキストエディタはutf8とか対応してるしな
はやくstdoutにフィルターをかぶせられるようにしてほしい。
クラスに単純な値コピーをさせる方法ってありましたっけ
>>688 ああそういうことができるんだね
でもできないんだね
>>689 あったっけ?なかったような
中文やらハングルやらが扱えないようにおれは A のAPIでやってるぜ。
692 :
デフォルトの名無しさん :2008/07/12(土) 01:28:36
だいぶ前に出てて挫折してた
「dsource.orgのWin32Api Bindingsをdmd2.0でコンパイルすると出るエラー」
が、いつの間にかなくなってるッ!!
>>340 (いつからなおってたんだー!?)
やっと2.0系に復帰できるワァ
>>692 半年前には大丈夫っだった気がするが、
使ってるAPIの差かもしれん
>>692 半年前には直ってたものを壊れた瞬間に知るとかw
型なのに型として認識してくれなくてやってた苦肉のtypeof(型)ができなくなってるね 元々の問題が修正されたのならいいのだけど
DMD 2.017 リリース
699 :
デフォルトの名無しさん :2008/07/12(土) 15:04:08
Webから画像ダウンロードできたりしますか
できる。
>>678 だからUTF-8でない文字列をchar*に入れるなとあれほど…
mbsはubyte*にするべきだったりするの?
charはutf-8って規格で決まってるからな−。 それ以外が入ってるのは気持ち悪いというか、間違っているという話。
もうstd.encodingがあるしやるならその上に作るべきでは
>>705 wstring toUTF16(in mbchar[] s, in uint codePage=0)
{
mbstring sz = (s ~ cast(mbchar)'\0').idup;
wstring result;
result.length = MultiByteToWideChar(codePage, 0, cast(char*)(sz), sz.length, null, 0);
MultiByteToWideChar(codePage, 0, cast(char*)sz, sz.length, cast(wchar*)result, result.length);
return result;
}
invariantであるresultに書き込もうとしてるのはおかしいな。
キャストしてしまってるから本来検出されるはずなのエラーがでなくなってる。
MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
でコンパイル通るように直したほうがいい。
708 :
デフォルトの名無しさん :2008/07/13(日) 01:23:06
Dで外部アプリの実行とかってどうやればできますか。
>>707 ノ
>>708 import std.process;
std.process.system("dir");
>>706 正直申し上げますと、あれインターフェイスが糞すぎる
>>709 あ・・・ありがとう。
CreateProcess使ってできてやったーとか思ったらそんな簡単に・・・
std::basic_stringの仕組みを丸ごと移植したらどうかと思うのだが
>>707 > MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
> でコンパイル通るように直したほうがいい。
え・・・そんなんできんの・・・
OpenGLのポーティング、D2.0でもデフォのまま使えるようになったのね さっき最新取ってきて直そうと思ったら、既に修正済・・・感動した
Linux系でD言語やろうと思ったらここ見ればいいってHPないですかね。
>>716 MultiByteToWideChar(codePage, 0, sz.ptr, sz.length, result.ptr, result.length);
キャストなしのこれをコンパイルエラー出さずに書くやり方があるのかなと
もうperlみたいにしてしまえ
tangoのProcessってサンプル使ってもうごかないんすけど。
よくあること
Executeしないと動かなくなってた><
HttpClientのGetResponseが爆発してて自分の手に負えません。 だれか画像ゲットのやりかた教えてください。
1年ぶりに着たけどやっぱ仕事では使えなさそう。 俺と同じ。知ってた。
>>720 本当に良くあるから困る
stdioのwriteflnの時は俺がラリった
ioを自分で作成して出力せにゃいかんのかと思ったり
725 :
722 :2008/07/13(日) 09:29:22
Descentが教えてくれる関数一覧を信じすぎました。 事故解決。
だから安定版ならD1.0があると(ry
D1.0系列って本当に安定してるの?
仕様は安定してるよ。
>>726-728 わらた
このままバージョンが変わらないでいてくれたら
D-1とかD-2とかいう扱いでコードの配布が安定できて嬉しいな
D2.0が安定化するころにはD3.0が登場してて阿鼻叫喚になってると予想してみる
メジャーバージョンアップ=仕様の確定=完全な互換性の断ち切り
phobos vs tango d1.0 vs d2.0 で組み合わせが四通りあるから困る d1.0+phobosで開発してきたが、tangoのFiber使いたい俺としては せめてphobosとtangoが共存してくれれば...
DだとFizzBuzzを最小何文字で作れるんかな ちなみに俺は140文字だった
>>730 それは
>>731 から本望 QED
>>732 tangoがphobos準拠じゃないのが悪いんだよ
なんで自作ライブラリごときが標準ライブラリと共存できないんだってことだよw
tangobosは?
>>737 tangoはGCや配列キャストなどの言語の基幹部分も独自に持っていて、
phobosを置き換えるのが目的で作られてるから、共存できなくて当然。
>>736 切り詰めて87文字
しかも数字が表示できない、中括弧使うと文字増えるしなぁー
import std.stdio;void main(){int i;while(i++<100)writef(i%3?"":"Fizz",i%3?"":"Buzz");}
>>740 printf使えばもっと短くできるんじゃない?
>>739 じゃあphobosが言語の基幹とライブラリの機能分担に失敗してる?
>>741 これで99文字
void main(){for(int i;i++<100;)printf("%.*s%d",(i%3?"":"Fizz")~(i%5?"":"Buzz"),!(i%3&&i%5)?0:(i));}
こっちが別案(100文字ジャスト)
void main(){int i;char[]s;while(i++<100)printf("%.*s%d",s=(i%3?"":"Fizz")~(i%5?"":"Buzz"),s?0:(i));}
どっちもゴミが入るし83文字なんて…
>>732 D言語研究室にファイバあった。
前に試したけど、ファイバの部分だけならコンパイル通るようにするのはそれほど難しくない。
d で windows アプリケーションを作るときに XP のビジュアルスタイルを当てる方法をおしえてください
マニフェスト作ればいいんじゃないの。 詳しくしらんが。
%03dとかやれる関数ってないっすか。
std.string.format
std.c.stdio.sprintfでおk
tangobos で tango と phobos を同時に使うと、無駄に富豪的な気分がするぜ
tangoではないんでしょうか。 char[] format(char[] format, ...) { Sprint!(char) sp = new Sprint!(char); return sp.format(format, _arguments, _argptr); } とかやっても%がそのまま出力されちゃうんですが。
>>751 tangoのフォーマットはC#と同じなのでそのようにやると良い。
>>750 同時につかえるやつなんだ!しらんかった
両ライブラリの最新に対応してるのかなぁ
てかObjectクラスが違うはずなのに大丈夫なのかな
tangoの方のオブジェクトが使われるはず。 問題が出たとしても、そういうことの解決をやるのがtangobosっていう擦り合わせのプロジェクトですよ。
やっぱ、tangobosって方向性として間違ってるよなw
>>745 main.exeが実行ファイルだとしたら、以下の内容をmain.exe.manifestとして保存して実行ファイルと同じフォルダに入れておけば、どんな言語で作ってもXPビジュアルスタイルになる。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="main"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>main</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
>>752 そうだったんですか。
ありがとうございました。
760 :
デフォルトの名無しさん :2008/07/15(火) 05:11:03
ディレクトリ系の例外拾うと、システムの日本語が入ってるせいか文字化けするんですが、 誰か治し方しりませんか。
連投ですいません。
auto http = new HttpClient( HttpClient.Get, "
http://localhost/test.jpg " );
http.open();
HogeClass _this = this;
DataOutput stream = new DataOutput(new FileOutput( this.current.toString()~"hoge.jpg" ));
if( http.isResponseOK )
{
int len = http.getResponseHeaders.getInt( HttpHeader.ContentLength, int.max );
http.read( (void[] data)
{
stream.write(data); //○
_this.addPicture(data);//X
_this.last = data;//X
}, len );
}
stream.flush();
stream.close();
http.close();
Dlした画像のデータをvoid[][]dataで保存しておきたいのですが、
無名関数を出たとたんにDLしたデータが壊れてしまってるようです。
何が駄目なんでしょうか?
dataをdupしたら解決しそうな気がする
だめですた・・・・・
voidはどうすればキャストとかできるんでしょうか。 中身をのぞいてみようと思ったんですが、何にもキャストができません。 あと、 無名関数内の引数dataのlengthは1716でlenは4323でした。
Voidはキャスト可能でした><
>>764 無名関数が複数回呼ばれることを理解してない、ということかな?
無名関数内の引数dataは実際のデータが小分けになっている。
複数回呼ばれたときのdataを全部連結すると、お望みのデータになるよ。
>>767 おおおおう。
できました。
ありがとうございました。
>769 std.string.toString() 使えば、toStr 要らなくね?
配列の末端から取り出すのって皆さんどうやってますか?
リバースして、ふぉーいーちにかけるか、ふぉーで配列の要素数-1から逆順でとる。 それ以外ってあるかなぁ。
foreach_reverseがあるのに,なんでわざわざreverseするのん?
/home/d/dsss/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../libDG-tango-io.a(tango.io.Conduit.o): In function `_D5tango2io7Conduit7Conduit5errorMFAaZv': Conduit.d:(.text+0x134): undefined reference to `_D5tango4core9Exception11IOException7__ClassZ' Conduit.d:(.text+0x151): undefined reference to `_D5tango4core9Exception11IOException5_ctorMFAaZC5tango4core9Exception11IOException' /home/d/dsss/lib/gcc/i686-pc-linux-gnu/4.1.2/../../../libDG-tango-io.a(tango.io.Buffer.o): In function `_D5tango2io6Buffer6Buffer5errorMFAaZv': Buffer.d:(.text+0x1580): undefined reference to `_D5tango4core9Exception11IOException7__ClassZ' Buffer.d:(.text+0x159d): undefined reference to `_D5tango4core9Exception11IOException5_ctorMFAaZC5tango4core9Exception11IOException' collect2: ld はステータス 1 で終了しました Command /home/d/dsss/bin/rebuild returned with code 65280, aborting. Error: Command failed, aborting. これはいったい何をぐぐったらわかるんでしょうか。
>>775 ldの引数で、-lDG-tango-ioの右側に-lDG-tango-coreが書いてない、ということだな、そのエラーメッセージは。
ldはライブラリの依存関係に沿って引数を書かないとリンクエラーになる。
>>778 777じゃないが俺が代弁しよう。きっとこういいたかったに違いない。
while (v.length)
{
func(v[$-1]);
v.length = v.length-1;
}
781 :
777 :2008/07/18(金) 13:13:09
>>778 ごめん、末端から「順に」取り出すのね。
勘違いしてました
>>779 エスパーすぐる!
フォローまでしていただいて・・・
782 :
773 :2008/07/18(金) 16:54:03
foreach_reverseって実装されてたのか。 ROMってるだけだと疎くなっちゃうね。正直すまんかった。
かなり昔からある気がするが…
>>776 使ってるのはdsssなんですが、直すにはどの辺り調べるといいんでしょうか
785 :
776 :2008/07/19(土) 00:21:44
>>784 dsssは使ってないから、正確なところはわからない。
もし、読み込んでいるdsss.confにbuildflags=-llDG-tango-core -llDG-tango-io ... のような記述があるなら、書いてあるライブラリの順番が問題なので、それを依存関係に沿って(左のライブラリが右のに依存するように)並び替えればよいのだけど……。
Cと比べてどっちが速いの?
>>786 ・両方ネイティブコード吐くし、どっちがあらゆる面で速いとは言えない。
・メモリ周りはGCある言語のほうが現実的に速くなるよ、と公式では主張されている
・コンパイル速度はDのほうが遙かに速い
・VC++なんかの商用コンパイラのほうが最適化は賢い(んじゃね?
・最適化部は同じだろうし、dmdならdmcと、gdcならgccと同じようなパフォーマンスになる(んじゃね?
下二つは適当。
>>786 向き不向きがあるけど、開発速度はDのほうが圧倒的に早い…
という比較があった気がした。
ある課題をいろんな言語で解くコンテストがあって、それでDがGCと契約のおかげでいい成績出したって内容だった気がする
実行速度はライブラリの差が大きいだろうな 複雑な数値計算とかなると、もう
>>789 C++でどうしても生産性があげれなかったヘタレな俺
現状どうみても D>>C++ です。 本当にありがとうございます。
IDE欲しくてDescentに挑戦したけど、どうにもコンパイルできなかった。 143あたりの手順も試してみたけどダメだった。結局makeに逆戻りしちゃった。 なんか導入しやすいIDEないかな?2.0系使えるやつ
Poseidon
gdc(mingw)0.24でgc_initを呼ぶと即座に落ちる。 _minitもundefinedと言われるし・・・ Win32 のサンプルが動かないとか心が折れそう。
>>794 WinMainを使わずにmainを使えばいい。
インスタンスハンドルが欲しければGetModuleHandleで得られるし。
796 :
794 :2008/07/22(火) 00:15:22
>>795 本当はDLLを作りたいんだけど、DllMainのgc_initでこけてたので、
前段階としてWinMainで実験してみて、うまくいってないという話。
DLL以外ならmainでいいんだけどね。
紛らわしくてスマソ。
> Ignore all the people who tell you it can't be done. > Telling you it can't be done means you're on the right track. らしいですよ。
799 :
794 :2008/07/22(火) 20:06:30
自己解決。 スレ汚し失礼しました。
自己解決したらちゃんと解決方法も書きなさい
801 :
794 :2008/07/22(火) 21:21:15
うお、まだ配布されてなかった すまn
804 :
デフォルトの名無しさん :2008/07/23(水) 19:58:27
>>797 そういえばウォルタンの顔を見たことがなかったという衝撃
805 :
デフォルトの名無しさん :2008/07/23(水) 21:59:17
髭がないのがD言語普及の妨げになってるんだよな。
やはりここはウォルたんにも髭を・・・・・
ハゲると言語仕様が複雑に・・
ウォルたんの頭髪大ピンチ!
髭を剃ることを暗に明に強制されるような環境で、 好きに言語を設計するような仕事はできないという点では明察なんだよな。 その意味でウォルたんは好きに言語を設計してると思うから問題ない
いくらなんでもこじつけだろと思ったが三行目で吹いた。 確かに好きに設計してるなwwww
をるたん・ぶらいと
うぉるたんって60才ぐらい?
永遠の17歳
caltechを1979に卒業と書いてあるので、 だいたい50〜55くらいの範囲だな
仲いいなお前らwww
この一連の流れを/.本家へ投稿してみたいところだな
バージョンアップがこなさすぎる… 最後にリリースされたのいつだよ…
一連の流れから分かったこと ・D言語に足りないのは髭
じゃあ今度からD言語ではhogeの代わりにhigeを使えばいい、というわけか。 module walter.hige; int hige(){ return 0; }
じゃあDのマスコットキャラに髭つけようぜ
かっけーじゃん
髭の長さ=Dのバージョン
Visual studio並のIDE欲しい・・・
IDEがあればD言語かつる っていうか今や普及にIDEは必須だぜ・・・
struct type { typeof(this) opAssign(type other) { return this; } } int main() { type[string] map; type hoge; map["name"] = hoge;//Error :ArrayBoundsError return 0; } 何でエラーになるの?教えてエロい人!
=演算子が関数呼び出しにハイジャックされてるからじゃねーの?
>>821 この間2.017がでたところじゃないか
VSのプラグインみたいなのでどこまでできるの? 前にインテリセンスをがんばってた人がいたけれど.
IDEなんて不要。何の役にも立たない。 そんなのにリソース割かれてコンパイラの完成遅れられたら困る。
完成・・・だと・・・ッ!?
>>830 map["name"] = hoge;
は
map["name"].opAssign(hoge);
と解釈される。
map["name"]でエラー
>>835 そもそも完成なんて概念は存在しないというのは言ってはいけないのかもしれんが言っちゃった
>>835 >>797 より
>Do you still consider D to be a language "under development"?
> A language that is not under development is a language that is not being used.
> D is under development, and will stay that way as long as people use it.
> C++, Java, Python, PERL, etc., are also widely used and are still under development.
「IDE? もうあるじゃん」的な発言からも分かるように、なんとなく、
うぉるタンにはDをみんなに広めてやろうっていう野心が足りないんだな。
生粋の技術屋なんだな
うぉるたんには髭の生えた参謀役が必要なんだな
Tango 0.99.7 Dominik released
Dらしいboost::tupleを作ったはいいけど、コード補完のメンバ一覧が出たとたんIDEが落ちるw
このスレよりもD言語について盛んに議論されてる場所ってある? 少なくともうぉるたんについてはこのスレが一番だと思うが。
日本にはないと思う
D1.028 phobos の std.cover の setDestDir(char[]) 関数なんだけど、 void setDestDir(char[] pathname) { srcpath = pathname; } になってるんだけど、 dstpath = pathname; だとおもうんだ。 みんなの環境はどう?
>846 2.017のPhobosでも同様になってる。 よく見つけた。Bugzillaへ行っとけ!
>847 アカウント無いし、作りたくないから頼んだ。 dstpath を修正しても何の効果もないからなんとかしろーってのもいっといてplz
めんどくさ std.coverなんて使ってないしどうでもいい
ながれにWWWW
最近、D言語を勉強しようかなーと悩んでるんだが D言語ラブな人にD言語の魅力を語ってほしい ちなみに今までは、基本的にスクリプト言語(Ruby)でいろいろやってました C言語は大学の演習のみ、C++やC#は未経験
>>851 Rubyで間に合ってたならそっち使ってた方がいいと思う
D言語の凄まじさはC++をある程度やってないとわかりにくいんじゃないかな?
API叩きたいとかでも色々ポーティングしなきゃならない状況だからね〜
ruby使ったこと無いから具体的に比べてはワカンネ(実際のところスクリプトメインに使ってて不満がないならrubyと比べてのメリットは少ないんじゃね? という気はする) 一般的な部分では、スタンドアロンの実行ファイルとか、ネイティブ吐く故の速度とかか。必要ないなら必要ないかなあ。 でも個人的に最大の魅力は更新待ちのwktk感。 既存のコード通らなくなる変更躊躇わないからなうぉるたん。標準ライブラリが壊れたりするんだぜ? (ちなみに当方ややM)(でもこのスレに仲間は多いと思ってる)
Ruby使いこなせてるなら、Rubyで十分。 スクリプト言語以外をそんなに触ってないなら、静的型付けとかの不自由さを感じるかも。 Dの良いところはスクリプト言語でもないのに、いろんな機能を使えるところ。他の言語に比べて多機能だと思う。
>>851 俺の場合、WindowsとLinuxの両方で使うというのがあったから、Dという選択になった。
Windows環境だけというのなら、C#の方がライブラリその他安定していて、いいと思う。
散々言われていた起動の遅さも、いつの間にか気にならないくらい速くなってるし。
ただ、LinuxのmonoはD以上に地雷が多すぎなんで、マルチプラットホームならDかなと。
C++はコンパイル速度が速ければ使うんだが、Dの速さに慣れちゃうとその遅さに耐えきれなくなってしまう。
まあ、上記はC並に速く実行する言語が使いたいという前提あっての話だから、多少遅くてもいいというのであれば、Javaでもいいのかもしれない。
Dの欠点は標準ライブラリが信用できないこと。
標準ライブラリを自力で何とかできないとDを扱うのは難しい。
>>853 > でも個人的に最大の魅力は更新待ちのwktk感。
ナカーマ
通らなくなったコードを逐一直してまったくもううぉるたんたらおちゃめなんだからぁ的なアレ
仕事仲間には絶対したくないけどねっ
参照型をサポートする タプルを関数から返せるようにする opCastをまともにする うぉるたん頼むからこのへん実装してくれ><
int& a; みたいなやつじゃね
<俺:妄想> int a; ref(int) b = a; // 型コンストラクタ ref(int) func(ref int p) { // 参照渡し・参照戻し return p; } auto c = func(a); // is(typeof(c) == ref(int)) </俺:妄想>
htodをもう少しどうにかしてほしいな。 手直し箇所が多すぎて、気軽にCのライブラリを使いたいと思えない。
Tangoユーザの方0.99.7はどうよ?
>865 まかせた
>>864 とりあえずなんかMemory.diでエラーが出る。
ちょっとソースのぞいてみたらなんか明らかにおかしいところがあった
130: enum BlkAttr; : uint
131: {
まったくDの開発陣は・・・テスト自動化しろよな せっかく言語がunittestとかDbCとか用意してるのに全然活用してないじゃん うぉるたんがたまにテスト通さないのは破壊的な変更しまくるからだろうけど
869 :
851 :2008/07/27(日) 12:55:38
いろいろな意見ありがとうございます とりあえず、更新を待ってwktkする言語だというのは伝わってきた 面白そうなので少し触ってみようと思います
もし、うぉるたんが死んだり、引退したりしたら、Dも終わるのか? うぉるたんの跡を継ごうっていう人は出てくるのだろうか。
きっとD++がでるよ。
>>868 激しく同意。単体テスト用意しれと思うなぁ。
復帰テストはしているようだけど膨大だからかなりの時間かかってそうだし。
単体テスト以前にコンパイルしてないんじゃ…
>>862 それは
static int a;や
int* a;と似たような宣言で
ref int b; がスマートな気がする
その場合は
a == c って事でいいのかな
ポインタを使わないようにした代わりにこれがあればポインタの代用がかなり効きそうだな
GC周りに矛盾が生じないなら入れてほしいな
>>874 int* a;
はどっちかっていうと、
const int a; // constは変数を修飾
よりは
const(int) a; // constは型を修飾
に近いんじゃない?
それで、refは変数の情報な気がするから、ref(T)はいらないと思う。
876 :
デフォルトの名無しさん :2008/07/27(日) 19:58:19
dmd2.017 + dsource.org->Win32api Bindings で、ウィンドウプロシジャの中から例外を投げて、 main関数に書いたcatchで拾おうとすると失敗するんだけど、こういうもんだっけ?
>>876 そういうもん。
コードの流れは、
メッセージループ -> | user32 | -> ウィンドウプロシージャ
なんで、例外は戻ってこれない。
878 :
876 :2008/07/27(日) 20:17:30
>>877 即レス感謝。
前いけてた気がしたのは漏れの気のせいでした。
べんきょんなったす。
えぇぇ、メッセージループの外のcatchで例外とれてるんだけどこれは何?
writeflnとかで自動的にtoString()が呼び出されると、メンバのアドレスが変っちゃうんだけどなぜ? 明示的に呼び出せば、そんなことにはならなかった アラインメントの問題?GCの問題?
882 :
880 :2008/07/27(日) 21:34:07
値渡しされてるだけだったorz 正直すまんかった
>>881 ちなみに双方向リンクリスト、つまりSTLのlistみたいなやつ
Dの頭のままC#でdelegate使おうとしたら いちいち宣言しなきゃいけないって面倒だなとおもた
C#3.0からFunc<,>とか使えるんじゃなかったっけ。
GTK On Dって名前にすれば GOD ってライブラリ名にできるのにそういう風にしないのは やはり向こうは日本と神の感覚が違うから気軽に使えないのかな
こういう場合onっていう言い方は正しいのか? あんまり聞かない気がする。
じゃ featuring だ
overとか
ならopponだ … oppon 〜は「…を〜と組み合わせて」という意味になる今作った単語
oppai なんでもできる証拠なの〜
GTK of D
Tango の 0.99.7 でバックスラッシュを含んだパスが蹴られるようになったけど、さすがに面倒だぜ。 import tango.io.Console; import tango.io.FileSystem; import Path = tango.io.Path; void main(char[][] args) { auto dir = Path.parse(FileSystem.toAbsolute(Path.standard(args[0]))).path; Cout(dir).newline; } 自分の実行ファイルのディレクトリのフルパスが欲しいとき、もうちょと短く書けないかな。
std.openrjって、どうしてあるの?誰が使ってるの? というか、動かないんだけど
もうなくなるor/andなくなったんじゃなかったのか
>893 記述が長ったらしい代わりにバイナリが小さくなるのがTangoの芸風でしょ。 ちなみにPhobosなら import path; して dirname(rel2abs(args[0])) だ。
1.0 と 2.0 の違いって何? C# の 1.0 と 2.0 ぐらいちがったりするの?
dmd1 致命的なバグが無い限り更新されない dmd2 前進的で素晴らしい変更によってソースを書き直す必要が出来る このスレを読む限りMは2を使った方がいいらしいぞ
最近はライブラリも2に対応してるし、1を使う理由ってあんまない気がするなあ。 安定性求めるなら他の言語を当たったほうがいいだろうし。
DMDScriptが使いたいだけで1使ってます
>>900 喧嘩売られてるような気がするのは俺の気のせいだろうな
移行しない理由が聞きたいんだよな
何が言いたいのかさっぱり理解できない
gdc(mingw)をうまくビルドできるならば 2.0に乗り換えてみたいところだがね。 エラーが回避できなくてあきらめた。
>>902 popenだけはdmd1にも入れてほしい
ところでお前ら typeof(*this)って使ってるかな? クラス名とどっちがいい?
ジェネリックコードじゃなければクラス名の方がいい 時期尚早な過最適化は悪 by Effective C++ ?
TangoやDWTが1にしか対応してないから2使えない、って人もいるんじゃね。 >909 "premature optimization is the root of all evil." なら、出典はKnuth様 (1974年)。
先進的な変更で言語がよくなってそれと同時に自分のコードがかっこよくなる この喜びが毎月のように得られるのはDくらい それが私がDを使う理由・・・信じて
static foreachまだなのかなあ。 そんな複雑な変更でもない気がするんだけど、 うぉるたんは他にやりたいことあるんだろうか。
DMDってテンプレート再帰でタプル作るとホントすごいメモリ喰うな…
D言語はアセンブリの夢を見るか
gc切って、delegateぶん回したらすんごいメモリをくう・・・ あたりまえかもしれんが、scopeとかで回避できんから すんごい困った
あ、これ俺も遊んだwww 結構楽しいんだよなこれ
PC初期に近いの面白さだよね。
俺の1時間を奪う憎い奴だ
template Hoge(){ if(true){} } void f(){ mixin Hoge!() } なんでif使えないの〜泣
template mixin は宣言しか書けないのね
Lisper C++er Der なんちゃって、えへへ
>923 PythonistaにならってDistaはどう? すくなくとも発音はしやすいよw
typeof(*this) opDot() { return *this; }
痔主多? やDなぁそんなの
D Langer
1Der 2Der
3ダー!!
猪木?
>>928 むしろグローバル変数いらなくね?
あと例えばプロパティはsynchronized付きになるとか(俺には善し悪しがよくわからんけど)
これからのマルチコアの世界に向けて最適化していった方がいいのかも
locklessがもてはやされる時代に標準でsynchronized付きとか狂気の沙汰としか。
そういうもんか マルチスレッドプログラミングの安全性ももっとコンパイル時に保証できないのかな
各スレッドが触る変数を確定できるかどうかが勝負という感じかなあ。 pureなら触る変数はプロシージャからのスタックの積み方で決まるから、 そのへんはもう少し楽になる気がする
Martianじゃないか?いろんな意味で。
static typeof(this) opCall(T...)(T args) { return new typeof(this)(args); } newすら書くのが面倒。そんなあなたに
pure判定が通るなら原則として大丈夫だと思う。副作用がないということだし。 もうすこし緩めるとスレッドローカル変数しか触らなければ安全だと思うが、これは未実装。
>937 ああ、そっちの方が全然いいですね。 ところでGtkDのRC1が8月1日リリース予定なわけだがwktk
こうか
template Constructor{
>>938 }
class A{
mixin Constructor;
}
void main(){ A x = A(); }
そういえばstructとclassをコンパチブルにできるのかなー
構造体のコンストラクタってまだないの?
>>942 ずっと無いと思うよ?
「構造体はPODであるべき」って頑なになってるから。
static opCallで代用するしかないんじゃね
バグかなバグかな? --- main.d --- import func; void main(){ line(); } --- fund.d --- void line(uint lineNum = __LINE__){ } $ dmd main.d func.d __LINE__ Internal error: e2ir.c 612
いけね、ファイルを分けなくても再現した。 void line(uint lineNum = __LINE__){} void main(){ line(); }
2007年のカンファレンスで構造体にコンストラクタつけるとかなんとか言ってなかったか? 俺の記憶違いかな?
リテラルあるしなあ……。
gdcのsvnで手に入る一番新しいやつ。 std/c/windows/com.d interface IUnknown { HRESULT QueryInterface(IID* riid, void** pvObject); ULONG AddRef(); ULONG Release(); } ではなくて、 interface IUnknown { static HRESULT QueryInterface(IID* riid, void** pvObject); static ULONG AddRef(); static ULONG Release(); } が正しいような気がする。 後者じゃないとビルドできないし。
>>948 何で前者でエラーになるのか知らないけど、staticは無いと断言できる。
大体staticで何をカウントしてるんだ
comが何なのか良く知らないので、 エラー回避のためにstaticにしたんだが、 やっぱりおかしいのか。 libphobos/std/c/windows/com.d:240: error: '*LTHUNK0' aliased to undefined symbol '_D3std1c7windows3com9ComObject14QueryInterfaceMWPS3std1c7windows3com4GUIDPPvZi' libphobos/std/c/windows/com.d:240: error: '*LTHUNK1' aliased to undefined symbol '_D3std1c7windows3com9ComObject6AddRefMWZk' libphobos/std/c/windows/com.d:240: error: '*LTHUNK2' aliased to undefined symbol '_D3std1c7windows3com9ComObject7ReleaseMWZk' みたいなエラーがでるんだが、 LTHUNK0なんてソースのどこにも出てこないし謎。 試しにいろいろいじって、たまたまstaticにしたらうまくいったという話。 まあ、comプログラミングなんかしないから、 別に通ればなんでもいいのだが。
953 :
デフォルトの名無しさん :2008/08/03(日) 13:39:36
さっきちょっと思いついたんだけど変数の変更を一時的に禁止する様な機能ある? const(hoge, fuga) { // hoge, fugaは変更禁止 } // 変更OK
void main() { int hage = 42; (const typeof(hage) hage = hage) { writeln(hage); // 42 hage++; // error }(); } dirtyすぎる…
最近ここで晒されるソースを見ても何がなんだかです。
>>953 pureとか予約語になってるんだし,要望したら入れてくれるんじゃね?
957 :
953 :2008/08/03(日) 14:41:00
>>954 バグ回避目的なのに手段が真逆に向かっている様なw
ああ、bugzillaに投稿とかのほうがよかったんだろうなぁとか 思ったけど、いいや。やる気ないので、スマヌです。
これじゃ、何かいてるかわからないな。 >846 >847 >848 ここらへんの話です。 暑くて駄目だwww
一時変数の名前はhigeを使ってください
>>953 既出みたいなもんだけど関数のconst引数じゃダメなの?
class A{const void pp(){}}
void f(const A a){
a.pp;
}
void main(){
A a = new A;
f(a);
}
値型でもこう int i=1; g(i); void g(const ref int i){ i++; // error }
sakuraiさんが久しぶりにDの話題してるの見たw
>>965 D1.0のデリゲートもレキシカルクロージャじゃないだけで、ちゃんとしたクロージャだよ。
もっとも、環境を持ち運ばないから変数aの寿命が来た時点でクロージャは無効になる。
967 :
966 :2008/08/03(日) 19:40:15
ちなみに補足しとくと、一個目のコードは「たまたま動いてるだけ」のケース。 aのスコープは終わってるので本来は無効。
968 :
965 :2008/08/03(日) 19:45:50
>>966 さんくす。よくわかった。
>「たまたま動いてるだけ」のケース。
こういうのがバグの温床になるんだよな…
この前すっげー下らないスレをマ板に誤爆したから立てられない、スマン GCをマイクロ秒指定で動作させられるといいな 例えばだが genCollect(1000); で最大で1秒間GCに処理を渡す 戻り値はGCにかかった時間、失敗したら0とか-1だとか 重いけど合間を縫ってGC動かしたい という時に便利 ↓次スレよろ
ERROR:新このホストでは、しばらくスレッドが立てられません。 またの機会にどうぞ。。。 デフォルトの名無しさん (1) しょぼーん ↓次スレよろ
名前つき引数って採用できないのかなあ…
構造体リテラル使ってお茶を濁すとか
構造体リテラルは普通の関数呼び出しの構文だから名前つけれないよ… 名前かけるのは構造体イニシャライザか連想配列リテラル… 構造体リテラルと構造体イニシャライザの構文合わせて欲しかったんだけど、もうむりなのかなあ。
ああ構造体イニシャライザか間違えた D言語に不可能という文字はない(破壊的変更に関しては) 売り込めばあるいは
this(typeof(this) other) { this.tupleof = other.tupleof; } typeof(this) dup() { return new typeof(this)(this); } 埋め支援
978 :
デフォルトの名無しさん :2008/08/06(水) 13:41:55
979 :
デフォルトの名無しさん :2008/08/06(水) 14:03:36
980 :
デフォルトの名無しさん :2008/08/06(水) 14:05:27
981 :
デフォルトの名無しさん :2008/08/06(水) 14:05:40
982 :
デフォルトの名無しさん :2008/08/06(水) 14:07:59
983 :
デフォルトの名無しさん :2008/08/06(水) 14:07:59
984 :
デフォルトの名無しさん :2008/08/06(水) 14:07:59
985 :
デフォルトの名無しさん :2008/08/06(水) 14:07:59
986 :
デフォルトの名無しさん :2008/08/06(水) 14:07:59
987 :
デフォルトの名無しさん :2008/08/06(水) 14:08:00
988 :
デフォルトの名無しさん :2008/08/06(水) 14:08:00
989 :
デフォルトの名無しさん :2008/08/06(水) 14:08:00
990 :
デフォルトの名無しさん :2008/08/06(水) 14:08:00
991 :
デフォルトの名無しさん :2008/08/06(水) 14:08:00
992 :
デフォルトの名無しさん :2008/08/06(水) 14:08:01
993 :
デフォルトの名無しさん :2008/08/06(水) 14:08:00
994 :
デフォルトの名無しさん :2008/08/06(水) 14:08:01
995 :
デフォルトの名無しさん :2008/08/06(水) 14:08:02
996 :
デフォルトの名無しさん :2008/08/06(水) 14:08:02
997 :
デフォルトの名無しさん :2008/08/06(水) 14:08:02
998 :
デフォルトの名無しさん :2008/08/06(水) 14:08:02
999 :
デフォルトの名無しさん :2008/08/06(水) 14:08:02
1000 :
デフォルトの名無しさん :2008/08/06(水) 14:08:02
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。