D言語 Part34©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
落ちない場合もあったんで最小コードを探ってみたところ
これ↓だと>>837の操作をしても落ちなかった
import core.sys.windows.windows;
import std.stdio;
void main()
{
SetConsoleOutputCP( CP_UTF8 );
while ( true ) writeln( "ほげ" );
}
出力が"hoge"だとSetConsoleOutputCP呼び出しの有無に拘わらず落ちる
SetConsoleOutputCPを呼んでいない場合は出力の内容に拘わらず落ちる
SetConsoleOutputCPを呼んでいる場合は出力が"ほげ"だと落ちないが"ほげhoge"だと落ちる
どうしてそんな事になるのかワケワカメ [[[ ][ ]]]\[[]] [[[]]]],[[[ [][] ] >>837>>839
再現しませんでした
Windows7(32bit)
DMD32 D Compiler v2.074.1
LDC - the LLVM D compiler (1.3.0): based on DMD v2.073.2 and LLVM 3.9.1
試したコンパイルコマンド
dmd -w -m32 main.d
dmd -w -m32 -debug main.d
dmd -w -m32 -O main.d
ldc2 -w -m32 main.d
ldc2 -w -m32 -O main.d
試したコード
import std.stdio;
void main() {
while (true) {
writeln("hoge");
}
} >>842
すまん、こっちの環境はWindows10(64bit) 、DMD32 D Compiler v2.079.1 だわ
でも俺の環境だと2.074.1でコンパイルしても落ちたわ
-g -debugオプション付けて>>842と同様のコードで例の手順やって出るエラーログが以下↓
object.Error@(0): Access Violation
----------------
0x00425935 in write
0x00421A6D in fflush
0x004028A0 in @safe void std.stdio.File.LockingTextWriter.put!(char).put(char) at D:\develop\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(2788)
0x00402263 in @safe void std.stdio.writeln!(immutable(char)[]).writeln(immutable(char)[]) at D:\develop\dmd2\windows\bin\..\..\src\phobos\std\stdio.d(3582)
0x004021EC in _Dmain at D:\library\projects\d\d_error_test\main.d(6)
0x00402C5B in D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFNlZv
0x00402C1F in scope void rt.dmain2._d_run_main(int, char**, extern (C) int function(char[][])*).runAll()
0x00402B20 in _d_run_main
0x00402908 in main at D:\library\projects\d\d_error_test\main.d(7)
0x00420775 in mainCRTStartup
0x75538654 in BaseThreadInitThunk
0x774E4B17 in RtlGetAppContainerNamedObjectPath
0x774E4AE7 in RtlGetAppContainerNamedObjectPath 少々遅くなってもいいなら
writeln() のたびに stdout.flush() してやるのが簡単
以前から終了時のバッファ排出でバグがあったけど
去年くらいに Writer 系内部処理を何度も"改善"してたと思う stdout.flush();で問題は解決しなかったけど
-m64オプション付けてコンパイルしたら落ちないようになった
WOW64を過信し過ぎてたわ [[[ [ "[]" ]]] [] [][[[ [] ]][] Dカンファレンス2018 in ミュンヘンのライブ配信
https://www.youtube.com/watch?v=HvqsUO77FGI
日本電子専門学校で非公式Dカンファレンスやったのがもう10年前か… ポトペタどころか
バージョンアップにしっかり追随して安心して使えるGUIライブラリないよ インスタンス作るまでオーバーライドしてない抽象メソッドがあってもエラーにならないってわけわからん
さっさと教えろよ -betterC が使えるようになってから出来ることが格段に増えたな
組み込み周りはもちろんのこと、DのコードからWebAssembly吐ける日が来るとは思ってなかった D言語も大分落ち着いてきた頃合いだしそろそろ見直される時代が来てもいいのよ?
(なんか最近deleteが非推奨になったような気もするが) 競プロとD言語は相性いいと思うんだけどな
俺も競プロでD言語使ってるし 変数への再代入禁止を意味するfinalがいつの間にか使えなくなっとるやん
コンパイラに促された通りconst付けてもnot callable using a `const` objectって怒られるし
ちゃうねん、Javascriptのconstみたいに事故防止に再代入のみを禁止したいねん
廃止要素に関してはどうも知識のアップデートが追いつかん D言語はもう終わりなんだよ
というか始まってもないというか final変数がいつの間にか廃止してた問題は
scope変数への再代入がいつの間にかコンパイルエラー出るようになってたことで解決したわ
スコープ内限定で再代入禁止でスコープを抜ければ変数の寿命が来る、ってことでscope変数で要件を満たせる >>862
流産というか仕様変えすぎて育つ前に首切ってる感じ aliasがいつの間にか構文変わってたのは知ってたけど
typedefもいつの間にか消えて使えなくなってるのかよ
しかも従来のやり方と比べて代替手段がクソ面倒 MDN並みに日本語ドキュメントが最新に追いついていて
現行仕様、廃止仕様がきちんと整理されていないとツライな
ちょっと離れてるだけで記憶に残ってるD言語とはまるで別言語になってる 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
KUKID change log は見やすくなってるよ
時々重要な変更がすっぽり抜けてるけどな
言語レベルの廃止も一応リスト化されてるよ
https://dlang.org/deprecate.html
今気づいたが2ヶ月毎のリリースって明言されてるな
minor release とかふざけたこと書いてるけど >>871
そのページ初めて見るんだけどどっから飛べるんや… >>871
そして昔確かにあったはずのfinal/const/invariantの
( https://digitalmars.com/d/final-const-invariant.html )
再代入禁止を意味するfinal記憶クラスの仕様は何処へ消えたんや… 文句あるならチミたちがD言語開発に直接関わりなさいな いつの間にか使えなくなってて
しかも廃止仕様リストにも載ってなきゃ
どこに消えたんだってのは普通に抱く感想だよ 少なくとも俺がいじり出した10年くらい前には既にそんな機能なかった 当時穴が開くほど読んだもんだなぁ
https://web.archive.org/web/20071011061638/http://www.kmonos.net/alang/d/final-const-invariant.html 次バージョンから来る契約構文の追加は楽しみだ
int fun(ref int a, int b)
in(a > 0)
in(b >= 0, "b cannot be negative")
out(r; r > 0, "return must be positive")
out(; a != 0)
{
// ...
} Dってnull安全性の機能は今のところ標準では用意されてないカンジ?
template使って実現すること自体は簡単そうだけど std.conv.to!intでstringからintに変換しようと思ったんですけど、
stringで表現される数字が全角でした。
こういう場合、どうすればいいですか? 要素に対し'0'引くだけでint値を得られるし
'0'引いて'0'足せば半角数字の文字コード得られるし
あとは煮るなり焼くなり >>884
なるほど。
文字コードが連続してるからそういう方法あるんですね。 漢数字はテーブル用意するのかそれともi18nされてるのか 意味的に連続する文字の文字コードが連続してる保証ってないって話ではなかったっけ tr関数でASCIIに変換すればいいんじゃね。
と思ったらハイフン'-'が厄介だった。tr(s, "0123456789+−", "0123456789+-"); RustスレでD言語は死に絶えたって言われて何も言い返せなかったわ… むしろ更新が落ち着いた今こそ復権のタイミングじゃないか
というか他の言語だって追加に廃止に非推奨と仕様コロコロ変わってて
Dのこと言えないじゃないか D->LLVM->ネイティブとかさ
アプリのフレームワークで共通の鰌で
Windows,Android,OSX,iOSとかで動くようにならないかな D言語でCGI作る場合POSTデータってどうやったら取れますか? CGIならサーバーの設定次第で勝手にコマンドライン引数なり標準入力なりに入ってくるはずだろ
D側で考えることは特にない むしろPOSTは普通に取れてた
取れないのはGETの方だった
まぁ結局getenv("QUERY_STRING")で取れたけど
DってCみたいにポイントをそのまま配列としては使えないんですね >DってCみたいにポイントをそのまま配列としては使えないんですね
試してみたら普通に配列のように使えたけどどゆこと?
import std.stdio : writeln;
import core.stdc.stdio : putchar;
char[] text = "Hello World".dup;
char* pHello = text.ptr;
char* pWorld = &text[6];
// 添え字アクセス
for ( int i = 0; i < 5; i++ ) putchar( pHello[i] );
// 長さ付与
writeln( pWorld[0..5] );
出力結果:
HelloWorld ようやくDMD2.081.0のリリース版来たやんけ C言語みたいな化石言語使い続けないといけないの早くなんとかしてくれ 1年以上ほったらかしだったがフォーク版なら特に問題なかった https://github.com/JesseKPhillips/dfl
ここが最新メンテナだと思ってたが更新停止を明言されちまったな
DWT が標準GUIとして継続してくれればいいんだが 別にD言語に限った話でもないけど
DelphiやQt DesignerやXcodeのリソースファイルを読み込む部分だけ書けば
どんなGUIライブラリでもポトペタモドキはできると思うんだ
実例は見たことない 今日本で最もアツいD言語コミュニティって何処なん?
15年前はここだったけど 自分もコミケでD同人買って読むまで知らなかったけどDUBっていうD言語のパッケージマネージャあるんだよな
http://code.dlang.org/ vive.d は希望の星やで
DUB もそこが作ってるし ごく最近だよ
gccの公式リポジトリにgdc一式が入った 入るのはだいぶ前に決まってたけど実際に入ったの?
だとしたらめでたい gcjが外れたからgc付き言語が無くなってチャンスではあったのだけれども
goが先に入っちゃって時節を逃した感はどうしても ついに入ったのか
しかしGDCはバージョンアップが遅れに遅れてほとんど相手にされないレベルだったけどどうなったのかしら 風評被害甚だしい
【接客】クレーマーの餌食になる人は「この言葉」に注意 モンスタークレーマーだけでなく「ふつうのお客様」をも怒らせる“D言語”とは
https://rosie.5ch.net/test/read.cgi/editorialplus/1539062055/ でもその「D言語」はマナー屋の造語なんですよ
ですからこのスレとは関係ないんです。だってここのD言語はうぉるたん作ですもの CPUとメモリをたっぷり使うプログラムを書いたんですけど、実行中、下記のエラーが発生してしまうことがあります。
core.exception.OutOfMemoryError@src\core\exception.d(693): Memory allocation failed
タスクマネージャを見ながら実行してみると、多い時でメモリを1700MBぐらい使っていて、上記のエラーが出たときは1100MB程度でした。
PCのメモリは8GB積んでいて、プログラム実行中も2〜3GBぐらいは空いていました。
未使用のメモリがまだ残っているのにアロケーションに失敗するのはどうしてなんでしょうか?
そして、何か回避方法はありますか? 大きな領域を一度に確保しようとして
空き容量には余裕があるけどその領域を確保できる隙間がないから失敗したとか? たぶん 32bit やろ 64 bit でいいならそっちにしたほうが無難
GC も肝心なときにコケる印象
まさか無いとは思うけど仮想メモリ無効にしたりしてないよね D言語のGCってコンパクションやってないんだっけ? >>934
なるほど、そういう可能性もあるんですね。
>>935
32bitのdmdを使っていました。
4GBより大きいメモリを積んでる場合、32bitだと使えない場合があるということですね。
64bitを試してみます。 レス数が900を超えています。1000を超えると表示できなくなるよ。