D言語 Part34©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
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を試してみます。 >>929のDLang Tourっての見たらVibe.dの事も普通に載ってるのな
興味はあったけど今まで拾い読みする程度の情報くらいしか知らなかったけど
これを機にやってみようかな >>937
32bitプロセスならプロセスが使える仮想メモリの上限は2GBだからね
これはOSの制限なので、しょうがない コンパイラを変えるんじゃなくてビルドモードを変えるんやで ( -m64 )
デフォルトの GC はゴミだが 64bit ならまぁまぁ使えると言ってるんやで インストール版でインストールしたdmd2.083で適当なコードをビルドすると"Access Violation"とだけエラーが出て、
ビルドが完了しないんですが、原因は何なんでしょうか?
上記のエラーはDebugモードの時のみで、Releaseモードの時は正常にビルドできます。
またこのコードはdmd2.071ではDebug、Releaseともに正常にビルドできました。 >>944
import std.stdio;
void main()
{
writeln("Hello World!");
}
これをビルドすると例のエラーになります。
>>945
win10です。
IDEはVS2013を使いました。 >>947
厳しいですね。
https://qiita.com/sfujita/items/55dfd9203dffe05598c6
一番下のsc.iniで上書きして、hello.dとBuild.batをコピペして、
Build.batを実行したら、正常に動作しました。
VSの方で何か問題があるのかもしれないです。 去年くらいから VS のインストール情報を検索してリンカやSDKを自動選択する機能がついた
VS2013 は古すぎてマズイ気がする VS2017のインストールとdmd2.083インストーラ版のインストールを行い、Hello World!をビルドしてみましたが、
hoge.pdb: cannot add symbols to module, probably msobj140.dll missing
というエラーが出ました。
$(VCINSTALLDIR)binと$(VSINSTALLDIR)Common7\IDEをエクスプローラで確認してみましたが、
どちらともmsobj140.dllはありました。
なぜエラーが出るのか全く分かりません。 私の環境では、Program Files (x86)\Microsoft Visual Studio 14.0にはありましたが、
Program Files\Microsoft Visual Studio 14.0にはありませんでした(全部で64KB程度しかない)。
sc.iniはProgram Files (x86)の方を参照するようになっていますが、32bit版のVSじゃ使えないんでしょうか? >>948のサイトの手順をやり直したら解決しました。
VSのインストール時に、VisualC++に関するオプションをいじった(5GBぐらい大きくなった)のが影響したのかなぁ。 つーか>>948の記事が古い
2.079以降は64bit版ビルドするのにVC++もWindowsSDKも不要になってる llvm のツールチェーンが使えるようになったんだっけ
でも本格的にやるにはデバッガがあったほうがいい 12月1日のQita Advent Calendarが何かしらの参考になるかもしれないね
まだ内容は当然わからないけど 無事1日が終わりました
本当にありがとうございました Linuxでvibe.dやるならコンパイラどれ使ったらいい? 2.085 で Precise GC の試験実装が始まったのにお前らときたら
>>958
公式でいいんじゃね
ldc の追随も凄まじいけど std.conv.toから投げられた例外をThrowableでcatchしてtoStringとwritelnでエラーメッセージを書き出すと、
関数呼び出しの経路とかソース上の行番号が表示されますよね。
それが、いろいろ改修してるうちに途中で途切れたようなエラーメッセージしかでなくなってしまいました。
原因わかる方いますか? ascii以外の字が混ざってないか
multibyteの不正な文字(1byte目だけあって2byte目が現れずに次のascii文字が並ぶとか) >>961
main関数の中でto!uint("a")とやってみましたが、同じように途切れたエラーメッセージになりました。
std.conv.ConvException@***\src\phobos\std\conv.d(2267): Unexpected 'a' when converting from type string to type uint
----------------
0x00007FF77B85E400 in std.string.representation!(immutable(char)).representation at ***\src\phobos\std\conv.d(2271)
0x00000207C32A3000 レス数が950を超えています。1000を超えると書き込みができなくなります。