C++相談室 part153
at TECH
[前50を表示]
400:デフォルトの名無しさん
20/10/24 15:35:14.21 LXBNuCv6.net
printf()はスレッドセーフ
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイルI/Oやからなあれ
もちろんこれは、printf(("ABC")とprintf("CDE")をそれぞれ別スレッドで呼んだ場合、
ABC、CDEという表示になるという保障にはならないが
実際にはたいていのケースで行単位で分かれてくれるからデバッグには困らない
行が頻繁に混じってしまってデバッグにならないようなら初めて行単位の排他の追加を検討する
みたいな
401:デフォルトの名無しさん
20/10/24 15:37:01.80 LXBNuCv6.net
ただしもちろん割り込みルーチンからprintf()を呼ぼうとするような猛者は知らん
火の粉がこっちに降りかからない限り
放っておいて差し上げなさい
402:デフォルトの名無しさん
20/10/24 15:38:11.89 cYR5fjBG.net
保障にはならないが〜
実際にはたいていのケースで〜
こういうの一番困る
403:デフォルトの名無しさん
20/10/24 17:06:18.74 ZbhxKyMw.net
printf使ってヘンになってるならまだ許せるが自前のクソloggerが全般的にクソ動作してると排除したくなる
404:デフォルトの名無しさん
20/10/24 17:47:23.40 H3Ix9ZgH.net
非同期シグナル安全な関数のリストにprintfがない・・・
URLリンク(docs.oracle.com)
405:デフォルトの名無しさん
20/10/24 17:57:44.41 lGAQOfIr.net
自前でロックすりゃいいだろ
406:デフォルトの名無しさん
20/10/24 18:01:02.56 H3Ix9ZgH.net
printf実行中に割り込みが発生して、なおかつそのhandlerでprintf使ってると
デッドロックが発生する(?)
※printfは内部でmallocを使ってるので、>>389に書いてあるようにheapの
操作時にロックを取得しようとするため
という感じかな?
407:デフォルトの名無しさん
20/10/24 18:10:47.63 lGAQOfIr.net
なら自前のprintf作ればいいだろ
標準に頼りきるバカが
408:
20/10/24 18:13:44.58 sM3RwuUT.net
>>402
>自前のprintf作ればいい
こういう台詞は、その能力の欠けたものが得てして言いがちなことだよなあ‥‥と
409:デフォルトの名無しさん
20/10/24 18:32:15.74 lGAQOfIr.net
己の道は己で切り開くものだ
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな
410:デフォルトの名無しさん
20/10/24 18:55:26.18 W2/6It6m.net
>>404
ワイらがジャップだとしたら
お前はいったい何なんだよ
411:デフォルトの名無しさん
20/10/24 19:34:38.35 kvu4j0jg.net
>>404
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw
412:デフォルトの名無しさん
20/10/24 19:40:13.77 LXBNuCv6.net
割り込みルーチンの中からprintfを読んだら危
413:ッなのは 一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ; OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、 それとは非同期に起きたOSのあずかり知らない割り込みで OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
414:デフォルトの名無しさん
20/10/24 19:44:20.88 LXBNuCv6.net
割り込みルーチンから呼んでも安全なprintf()を自力で実装するとしたら
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート
415:384
20/10/25 08:15:28.48 B8Qi0Gue.net
聞くんじゃなかった
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・
416:デフォルトの名無しさん
20/10/25 08:36:53.97 fEg6VUML.net
stdoutが静的記憶だとして(大概のOSではIOBで管理しておりそうなっているはずだが
printf()をユーザー定義な割り込みルーチンから呼ぶと
それの排他を安全に行える人がだれも居なくなる、
417:デフォルトの名無しさん
20/10/25 10:46:14.61 zd7LSfWt.net
printfデバッグでダメならputデバッグでいいじゃん
418:デフォルトの名無しさん
20/10/25 11:40:46.63 luVqTFHx.net
printfごときでいちいちケチつけやがって陰気なヤロウどもだぜ
419:デフォルトの名無しさん
20/10/27 20:01:20.88 9N87g439.net
こいつらは屁理屈言いたいだけでデバッグする気なんて少しもない。
420:デフォルトの名無しさん
20/10/27 23:03:02.20 1nczmGPR.net
お金払われればやるよ
421:デフォルトの名無しさん
20/10/27 23:23:32.01 2LDrYrw3.net
金もらわないとデバッグしないの?
つまらない人生だね
422:デフォルトの名無しさん
20/10/27 23:25:33.33 IA9V1GzZ.net
そんなに楽しい事ならお前がやれば?
423:デフォルトの名無しさん
20/10/28 13:38:51.49 6icraQaZ.net
やらないならクソみたいなこと言ってないで黙ってりゃいいのに
424:デフォルトの名無しさん
20/10/28 14:00:21.64 a3TqMSUE.net
普通は成果物に対して報酬を得るよね
バグを出したら潰すのは当たり前
お金払わなきゃデバッグしないとか言ってる人は客先常駐のような労働時間に対して賃金を得る労務提供型なんだろうか
労働者から脱却しないとソフトウェア開発の本当の楽しさを知ることはできない
425:デフォルトの名無しさん
20/10/28 14:20:56.34 XBU5yUok.net
1レスの中で矛盾していくスタイル嫌いじゃない
成果に対して報酬があるならお金のためにバグ潰す
時間給なら貰えるお金は変わらないから「バグ潰すのは当たり前」と洗脳したり脅したりしないとバグは潰されない
426:デフォルトの名無しさん
20/10/28 14:50:59.10 K+lW0Fsg.net
いや、いるんだよ
他人が書いたコードを有料で引き継ぐ人
414がそうとは見えないけどね
427:デフォルトの名無しさん
20/10/28 21:57:28.94 bY6aZzj9.net
つーか普通に仕事してたらちょいちょい
前任者が逃げた、とか潰れた、とか逮捕された、とかで
クソみたいなゴミクソウンコのコードをわたされて
これ保守してねー、みたいなクソみたいな仕事
おしつけられることなんてまれによくあることだろ
そんでなぜかそいつのクソゴミコードのバグを
まるでおれが出したかのように責められる、までがセット
428:デフォルトの名無しさん
20/10/28 22:56:44.64 a3TqMSUE.net
ここってサラリーマンが多いのね
429:デフォルトの名無しさん
20/10/28 23:22:28.00 58wSuA1P.net
そんなん公然と拒否するか
0から作り直すかの二択だろ
430:デフォルトの名無しさん
20/10/29 05:18:26.87 A02IsQiB.net
>>421
そういう状況はママあるけど
> お金払われればやるよ
って言う状況とは違うだろ
431:デフォルトの名無しさん
20/10/29 08:31:38.61 VBEUGOAK.net
>>421
担当を引き受けたのなら、過去の潜在バグであってもお前の責務だろ
432:デフォルトの名無しさん
20/10/29 15:25:24.71 wtO1e/xm.net
>>423
こういう人間はソフトウェアなんかやらんでコンビニバイトでもやってた方が向いてるよ。
433:デフォルトの名無しさん
20/10/30 00:03:30.35 Wx+7ZgRN.net
C++でもPythonの内包表記みたいにVectorの要素舐めていって
全ての要素に特定の処理をしたものを別のVectorに代入することってできますか?
434:デフォルトの名無しさん
20/10/30 00:17:54.24 V+g0QAOl.net
まずPython処理系を書きます
435:デフォルトの名無しさん
20/10/30 00:26:39.96 XbvTe/rK.net
内包表記に近いことは無理じゃない?
initialize listでもしかして?って思ったけどうまくできそうにない
436:デフォルトの名無しさん
20/10/30 08:18:43.66 ooe1U4VR.net
つtransform & lambda
437:デフォルトの名無しさん
20/10/30 09:52:48.93 5giIBuWJ.net
std::transform(s.begin(), s.end(), t.begin(), [](int e) -> int { return e * 2 });
きっとforのほうが読みやすくて速いと思う
438:デフォルトの名無しさん
20/10/30 10:04:53.11 73xlUHi2.net
あとはvalarrayとかな
439:デフォルトの名無しさん
20/10/30 10:06:43.70 uffCAw9U.net
表現上はあたかもラムダ式使った華麗なことやってるように見えるけど
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね
むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの
440:デフォルトの名無しさん
20/10/30 10:22:13.62 73xlUHi2.net
インタープリターよりは速いよ
441:デフォルトの名無しさん
20/10/30 11:34:39.85 7MkyV1Cp.net
URLリンク(cpprefjp.github.io)
442:デフォルトの名無しさん
20/10/30 11:37:53.83 7MkyV1Cp.net
URLリンク(www.fluentcpp.com)
443:デフォルトの名無しさん
20/10/30 11:41:09.18 7MkyV1Cp.net
>>433
ループ分解されて要素分コード増えてる可能性もあるな
444:デフォルトの名無しさん
20/10/30 13:24:53.40 Z0VCec0D.net
forよりも関数的に書いた方が順序は気にせんでいいってメッセージを込めることはできるわけだが、
まあそういう風にかける場合って大抵forで書いても可読性下がらんほど簡易な内容のことが多い。
445:デフォルトの名無しさん
20/10/31 00:26:11.33 T4Ek6w2r.net
ヒエッ…、、OpenMPし放題…!
446:デフォルトの名無しさん
20/11/01 15:21:18.11 iuijWT2g.net
競プロで使いたいのですが
if i = 0 then return 0
elif i > 0 then return i - 1
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?
447:デフォルトの名無しさん
20/11/01 15:26:15.37 Ncbqgsya.net
>>440
それの速度が競プロで問題になることなんてないだろう。
そんなこと気にするよりアルゴリズムの計算量のオーダーを小さくするとか枝刈りをしっかりするとか有意義な方に頭を使った方がいい。
448:デフォルトの名無しさん
20/11/01 15:26:18.66 BdB3gM+x.net
unsignedですか?
449:デフォルトの名無しさん
20/11/01 15:36:25.10 f5GbRfBo.net
simdの比較使えば結果がビットマスクで取得できるのでそれを使うのが定石
両方計算してビット演算で選択
c++関係ない
450:デフォルトの名無しさん
20/11/01 15:38:18.92 Lkejt9vc.net
>>440
数値のビット数が解っているなら高速化できる
451:デフォルトの名無しさん
20/11/01 15:49:40.49 Lkejt9vc.net
>>440
ていうか比較は一回でいいだろコレ
なんで2回も余計に比較してんだ?
return i>1?i-1:0;
452:デフォルトの名無しさん
20/11/01 15:50:59.41 Lkejt9vc.net
>>440
ていうか比較は一回でいいだろコレ
なんで2回も余計に比較してんだ?
ちょっと間違えた
return i>0?i-1:0;
453:デフォルトの名無しさん
20/11/01 16:00:31.30 Lkejt9vc.net
>>440
elifのあとはなにを返すんだや?
モロに中途半端やないかいワレ
454:デフォルトの名無しさん
20/11/01 17:02:44.45 h5xlMYDq.net
つか>>440はelseが何かわからんが、
iがi≧0でやってくるのならデクリメントの飽和演算に見える件について:
455:デフォルトの名無しさん
20/11/01 17:10:40.93 h5xlMYDq.net
SIMD使うと飽和演算は楽勝かもしれんが、4個とか同時に並列に計算するんでなければ
かえって遅いんじゃ…
456:デフォルトの名無しさん
20/11/01 19:21:41.23 PTqWSgE4.net
>>440
アセンブラだったら、
sub eax,1
jnb lab1
xor eax,eax
lab1:
ret
でおしまい。最大で4クロック。
jmp命令は1つだけ。同じことをCで書くなら、
if (--i < 0) {
i = 0;
}
return i;
とか。
457:デフォルトの名無しさん
20/11/01 21:20:20.31 f5GbRfBo.net
クロック数は蛇足でしょ
458:デフォルトの名無しさん
20/11/01 23:07:30.49 gRIt+Ld+.net
減算が必ず実行されるのはもったいない
... and eax,eax
... jz f@
... dec eax
@@:
... ret
459:デフォルトの名無しさん
20/11/01 23:12:12.57 gRIt+Ld+.net
test ってあったかな...
460:デフォルトの名無しさん
20/11/01 23:32:16.35 h5xlMYDq.net
and eax,eaxも同じようなものなのでは…
どっちも多分パイプライン1段消費
ていうか投機的実行から戻す際のペナルティーは
常にデクリメントする>450の方が小さい可能性が微レ存
知らんけど
461:デフォルトの名無しさん
20/11/02 00:26:45.06 dW4oDZpY.net
そっかー
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら
462:デフォルトの名無しさん
20/11/02 01:48:22.41 U5Xnw0i6.net
sub eax,1
adc eax,0
でなんとかなんないの?
463:デフォルトの名無しさん
20/11/02 14:18:33.78 WhiKrslV.net
>>450
一瞬でも < 0 になったらまずい環境なら
if(--i < 0) はダメ
464:デフォルトの名無しさん
20/11/02 15:41:23.80 OFRBeKTl.net
>>452
減算を行う場合の方が頻度が高いと予想されるので、>>450の方がその場合に
命令数が少なくなるので平均速度は速い。
465:デフォルトの名無しさん
20/11/02 15:44:36.12 OFRBeKTl.net
>>456
そのコードは凄い。
466:デフォルトの名無しさん
20/11/02 16:02:50.72 sYYC+nm2.net
>>456
キャリーちゃんか
467:デフォルトの名無しさん
20/11/04 00:22:15.96 eR5jspY1.net
Macで環境構築どうすればいいですか
適当に記事あさればいいですか
468:デフォルトの名無しさん
20/11/04 00:32:44.91 pJnXfGcc.net
yes
469:デフォルトの名無しさん
20/11/04 08:22:43.71 3PEz6xa2.net
>>461
新し目のC++使うならhomebrewでg++-9でも入れるのがベターかも。
たとえばstd::filesystemとかcatalinaのXCode(clang++)でも対応したんだが、
バイナリを古いmacに持ってったら予想通り動かんかった。
470:デフォルトの名無しさん
20/11/04 20:11:40.32 X2fHUOCE.net
自クラスの終了時のコールバックメソッドで…delete this;すると…うまく消えるんだけど…。
コールバックメソッドは…boolを返す…delete this;した後も…メソッドは動き続けて…るんだよ…。
std::coutも反応してる…メインスレッドとかで…処理されているからですか?何故かが…解らない…。
471:デフォルトの名無しさん
20/11/04 20:26:01.44 X2fHUOCE.net
464です…。いろいろ調べたら…できるみたいですが…なんでできるのかは…解りません…。
472:蟻人間
20/11/04 20:30:16.22 tdZ4i2Gl.net
thisインスタンスに影響しない関数のコードは多分、C言語の関数みたいに生成される。
関数のコードは不変な実
473:フだと思う。
474:デフォルトの名無しさん
20/11/04 20:50:15.92 H9SHlq4g.net
難しく考えすぎ
extern "C" void the_call_back(struct obj_ptr* This)
{
free(This);
}
こうなってるだけだよ
*Thisを殺しても関数から戻るためのスタック情報はどうもせんだろ
475:デフォルトの名無しさん
20/11/04 21:35:20.66 rY/M/1xY.net
struct S1;
using V1 = std::variant<S1>;
struct S1
{
std::vector<V1> m_v;
};
これ合法?
476:デフォルトの名無しさん
20/11/04 21:39:36.00 occL3fQ7.net
ダメ
477:デフォルトの名無しさん
20/11/04 21:44:35.56 rY/M/1xY.net
主要3コンパイラでコンパイル出来るうえ
URLリンク(python5.com)
紹介してる人が居る。
478:デフォルトの名無しさん
20/11/04 22:56:42.61 rY/M/1xY.net
駄目な根拠わかりませんか?
479:デフォルトの名無しさん
20/11/05 00:49:04.74 WV05kVNu.net
>>468
URLリンク(timsong-cpp.github.io)
> In particular, the effects are undefined in the following cases:
> ...
> - if an incomplete type is used as a template argument when instantiating a template component, unless specifically allowed for that component.
480:デフォルトの名無しさん
20/11/05 01:14:10.93 E+L4EB1M.net
C++17以降、std::vectorは不完全型を許容していて、std::variantは
using V1 = std::variant<S1>;
の時点でインスタン化されていない。
これはどう解釈すればいいのかな?
481:デフォルトの名無しさん
20/11/05 01:20:36.91 E+L4EB1M.net
これが合法なら良かったんだけど、どうも無理っぽいな。
482:デフォルトの名無しさん
20/11/05 01:46:23.37 E+L4EB1M.net
using V1 = std::variant<S1>;
の時点では、テンプレートの明示的なインスタンス化はしていないし、使用していないので暗黙的なインスタンス化もされていない。
ってことでいいよね?
483:デフォルトの名無しさん
20/11/05 01:54:08.91 E+L4EB1M.net
boost::make_recursive_variantやstd::anyを知らないわけじゃないんだけど、オブジェクトが必要になるたびにnewするならC#やJavaで十分なわけで、C++のうまみ成分はこういうところにあると思うんですよね。
何とかなりませんかね?
484:デフォルトの名無しさん
20/11/05 02:27:49.98 tM7hzUED.net
>>463
ありがとうございます。
Mojaveあたりです。
485:デフォルトの名無しさん
20/11/06 16:04:48.24 cCU0l/b0.net
コンストラクタの引数と初期化リスト上のメンバー変数が同じ名前でも、ビルドが通って意図どおりに動いちゃうのだけど、これって仕様通りの動作?
こんなん
: apple(apple)
486:はちみつ餃子
20/11/06 16:58:12.08 O5a96eYY.net
>>478
仕様通り。 問題ないし、むしろ名前を一致させるスタイルを好む人もいる。
487:デフォルトの名無しさん
20/11/07 17:39:09.77 gsFmAuV5.net
Foo::Foo(const Fruit& apple)
: apple(apple),
banana(apple),
orange(this.apple) // できない
{
}
が問題無いのか左様か、
いや待てFoo::appleが実はFruitクラスでなくてFruit2クラスで、
orangeにFruit2クラスを受け取るコンストラクタしか持たずかつconstメンバだったらどうすんじゃ…
…
488:デフォルトの名無しさん
20/11/07 17:53:59.86 gsFmAuV5.net
Foo::apple、Foo::banana、Foo::orangeではなくて
Foo::m_apple、Foo::m_banana、Foo::m_orangeとしておけば悩む必要は無い
ヘッダファイルでもこの順で宣言したとして、
Foo::Foo(const Fruit& apple)
: m_apple(apple),
m_banana(apple),
m_orange(m_apple) // できる
{
}
でおk
489:はちみつ餃子
20/11/07 17:56:49.27 24XfCTPm.net
>>480
普通に出来るやで。 this->apple の間違いじゃろ。
メンバの初期化順は (初期化リストの順序と関係なく) クラス定義内でデータメンバを書いた順序なので気を付けてな。
490:デフォルトの名無しさん
20/11/07 17:57:34.44 CPm1qeuk.net
this
javascriptのやりすぎで脳が壊れたか
491:はちみつ餃子
20/11/07 18:00:03.51 24XfCTPm.net
>>481
名前を同じにしてもうたらまずいケースがあるやないけということを >>480 は言ってるので、
名前変えればいいよってのは的外れ。
492:デフォルトの名無しさん
20/11/07 18:13:54.67 gsFmAuV5.net
>orange(this->apple)
ホンマやΣ(゚д゚;)!いけたわ、
警告をいつもエラー扱いにしているからてっきりエラーかとオモテタ、(言い訳
493:デフォルトの名無しさん
20/11/07 18:30:43.14 2NiwF/8v.net
みなさまthx
classのときはメンバ変数に何らかのprefixなりsuffixなり付けてるから名前が被ることはなかったのだけど、構造体は何も付けないことが多くて、あれ、これってOKなんだっけ、って今更ながら気になってしまいました。
メンバ定義順に初期化ってのも知らんかった…
494:デフォルトの名無しさん
20/11/07 20:28:30.69 CTlV0YTN.net
>>485
いや、エラーだろ
495:デフォルトの名無しさん
20/11/07 22:09:33.18 gsFmAuV5.net
warning C4355: 'this' : ベース メンバー初期化子リストで使用されました。
やもーん
496:デフォルトの名無しさん
20/11/07 22:24:32.33 CdQvP3Xl.net
みんなC++でなにしてるの
497:デフォルトの名無しさん
20/11/07 22:24:57.26 9rEAH6th.net
polymorphic_allocator対応ですね。
498:デフォルトの名無しさん
20/11/07 22:55:56.65 8rmSPqJO.net
>>489
c++仕様のお勉強。マウントかますためだけにお勉強。
499:デフォルトの名無しさん
20/11/07 23:11:57.20 yroa9NTK.net
ジョークに聞こえるがまじでそういうやつがいるからな
500:はちみつ餃子
20/11/07 23:39:31.38 24XfCTPm.net
>>485
念のため規格の当該箇所を探してみたら this についてわざわざ脚注で書いてあったわ。
URLリンク(timsong-cpp.github.io)
初期化順序はくれぐれも気を付けんとあかんけど、this が駄目ということはないのは間違いない。
501:デフォルトの名無しさん
20/11/07 23:42:39.92 9rEAH6th.net
おせーな。
5分で探して来い。
502:デフォルトの名無しさん
20/11/14 18:09:43.36 FszncLid.net
VC++って今でも最先端のシステムでも使われていますか?
503:
20/11/14 18:57:11.05 ovQs8svh.net
>>495
うちの会社では 2008年くらいからは C++ ではアプリは作っていなくて、もうすっかり C# に移行してしまっているようです…
いや、私は施設管理をやっているので、会社の深いところはさっぱりわからないんですけど
504:
20/11/14 18:58:45.49 ovQs8svh.net
mfc42.dll
の内部バージョン違いに、ほとほと懲りたらしいです……
505:デフォルトの名無しさん
20/11/14 19:03:42.05 liKT9ZZB.net
あれはひどかったな
506:デフォルトの名無しさん
20/11/14 19:21:56.26 IHUe5vhA.net
>あれはひどかったな
ちょっなんで??
DLLにstd::vector<T>やstd::string<T>とか渡そうとした???
507:デフォルトの名無しさん
20/11/14 19:23:33.64 liKT9ZZB.net
仕様が違うものを同じファイル名にするなって話
ISO/IEC14882のライブラリは全く無関係
508:デフォルトの名無しさん
20/11/14 19:25:17.74 IHUe5vhA.net
手製DLLへのデータ渡しににはchar[]とか基本型onlyとして
CRTをスタティックリンクしたらランタイムのインストールすら不要
で完全解決…!
全要素手製でコントロールできればの話ではある
が
509:デフォルトの名無しさん
20/11/14 19:37:00.66 liKT9ZZB.net
なんか話になってないな
つまらんからやめる
510:デフォルトの名無しさん
20/11/14 19:41:20.95 wQlu6eHI.net
std::string<T>て
511:デフォルトの名無しさん
20/11/14 19:56:02.78 IHUe5vhA.net
CRTではなくてこの場合MFCをスタティックリンクしたらやったスマンコ、
512:デフォルトの名無しさん
20/11/15 12:36:52.05 YXN+C+qx.net
>>496
ありがとうございます
513:デフォルトの名無しさん
20/11/15 12:45:20.15 z250o8Kw.net
VC++ってことはプラットフォームはWindows固定か
Windows前提ならC++使い続ける理由は特にないね
514:デフォルトの名無しさん
20/11/15 14:27:41.73 1NoBqfO6.net
MFCなんか使うからだろ
自己責任
515:デフォルトの名無しさん
20/11/15 15:39:12.99 ZF6xjL9s.net
webサイトぐらいしか作った事無いド素人なのですが
cheatengineのようなツールはどうやって作るのですか?
516:デフォルトの名無しさん
20/11/15 16:01:31.41 fUqPXTtq.net
ツールはReactかVueですね。
517:デフォルトの名無しさん
20/11/15 16:32:14.80 U+/Dwi3J.net
マルチ禁止
518:
20/11/15 21:02:27.25 XnBy/n8J.net
>>510
そのマルチポスト禁止っていうのは fj の時代ならまだしも、2ch に当てはまるのですか?
マルチポストとクロスポストの違いはなんですか?
519:デフォルトの名無しさん
20/11/15 21:29:20.86 UQYtdYHl.net
自分の頭で考えることを放棄したマニュアル人間
520:デフォルトの名無しさん
20/11/15 21:57:12.59 9LlY7wvz.net
いまは2chは無いんだよおっさん
521:デフォルトの名無しさん
20/11/15 22:32:36.77 UQYtdYHl.net
くだらねえ突っ込みだな
それで誰かはっとする奴がいるとでも思っているなら
どうしようもねえバカ野郎だ
522:デフォルトの名無しさん
20/11/15 23:02:36.34 QB7zB470.net
なんにせよスレチなんで
523:デフォルトの名無しさん
20/11/15 23:22:10.25 AQ/HY5jp.net
>>511
せっかくちょい調べて回答したのに他スレで一時間前に回答が出てたらイラッとするのは当然だろ
524:
20/11/15 23:35:29.19 XnBy/n8J.net
>>516
確かにその感情は理解できます
525:デフォルトの名無しさん
20/11/16 00:15:05.39 tkpwZn9D.net
>>508
windowsだけで動けば満足ならメモリ読み書き関連はwinapi
デバッガ、逆アセ関連は pythonによるバイナリ解析技法 とかそれに似たような本読めば少しは載っていると思います。
526:デフォルトの名無しさん
20/11/16 04:42:45.86 tkpwZn9D.net
スレを全く読まないで反射で答えてしまいました。
今気付きました、すみませんでした。
527:デフォルトの名無しさん
20/11/16 06:44:11.49 OL16ghBV.net
>>516
心が狭い、というかてめーの都合だろそれ
勝手にイラついてろよ、こっちにゃ関係ねえわ
528:デフォルトの名無しさん
20/11/16 07:50:58.47 u3jXok4q.net
>>520
マルチするのはお前の都合だろ。人の時間を無駄に使わすな
529:デフォルトの名無しさん
20/11/16 07:59:26.89 OL16ghBV.net
互いにてめーの都合だからな
知らん馬の骨に命令すんな
何様のつもりだ
530:デフォルトの名無しさん
20/11/16 08:01:26.23 QRq3yxwv.net
時間を無駄に使うって>>516みたいな話?
他で解決済みだったら無駄になるって意味がよくわからん。回答したらちゃんと感謝してほしいとか?
531:デフォルトの名無しさん
20/11/16 08:05:45.08 OL16ghBV.net
ここは技術板なのに
クロスポストできるシステムを作ろうともしない
フリーライダーが吠えてるだけだ
532:デフォルトの名無しさん
20/11/16 08:26:08.12 GdRLcc7O.net
bool GoToHell(bool gotoTravel, bool gotoEat)
{
return (gotoTravel || gotoEat);
}
533:デフォルトの名無しさん
20/11/16 09:04:54.68 T8j9su4c.net
>>522
お前は自分のことを馬の骨だと思ってんのか。自覚はあるんだなw
534:デフォルトの名無しさん
20/11/16 10:24:06.29 OL16ghBV.net
>>526
だからどうした?
ぐうの音も出なくてそんなくだらんことぬかしたか?
535:デフォルトの名無しさん
20/11/16 11:03:12.40 2ijHHLJY.net
ぐう😪
536:デフォルトの名無しさん
20/11/16 11:23:44.07 hTDmnJOp.net
腹ペコかよ
537:デフォルトの名無しさん
20/11/16 11:36:22.45 OL16ghBV.net
勝負あったな
これからもマルチであろうが何であろうが
どこにどんな投稿をしようが口出しは無用だ
収穫ゼロでご苦労だったな
538:デフォルトの名無しさん
20/11/16 12:57:31.91 sF1WJXNT.net
仮に百歩万歩譲ってクロスポストの機能が無いからマルチを許すとしても
マルチ投稿にはオリジナルのスレとレス番へのリンクの同時投稿を義務付けるべき
539:デフォルトの名無しさん
20/11/16 13:00:20.03 OL16ghBV.net
義務違反したらどうなるんだ?
実効性のない俺ルールを勝手に吠えてろセンズリこき野郎
540:デフォルトの名無しさん
20/11/16 13:07:05.30 BvdXplQc.net
義務ではないよ
答えの付かない質問だけが残ってるのって寂しくない?
質問に答えが付かないって認識が定着しちゃうとコミュニティの衰弱にも繋がる
悲しいね
541:デフォルトの名無しさん
20/11/16 15:15:24.81 OL16ghBV.net
どう書けば回答が付きやすいかなんて
みんなそれぞれ考えてることだ
俺様が考えたベストな方法なんて誰も興味ねえんだよ
コミュニティの衰弱に繋がるキリッだっておバンバン
俺様が自分の頭で考えてるのはまだマシなほうで、
fj時代で頭の更新が止まったままの化石か
古代遺跡から発掘した碑文に洗脳されたバ…若者か知らんが
おおかたそういう手合いのマニュアル人間だろどーせ
542:デフォルトの名無しさん
20/11/16 16:33:15.96 MWCEXPaa.net
誰か教えてほしい。データベースの基本中の基本だと思うけどよくわからんです
数万の部品の名前があるとして簡単にa,b,c,d,eとする
すでに、c,b,a,eと登録されているところに新たにdを登録するとき、順番も大事で、
d,c,b,a,eとなります
ここで、cを削除したいとき、この順番だけで並んでいると数万のデータをひとつずつ一致確認していかなくてはいけないので
めちゃくちゃ時間がかかる。よってソートして順番もひもづけした
a4,b3,c2,d1,e5というのを作っておいて、cを削除するときはここから2分探索でcは2番目というのがわかるのでd,c,b,a,eの2番目のcを
削除するのと同時に、a4,b3,c2,d1,e5のc2も削除するとこちらはa4,b3,d1,e5となってしまう。でもこちらで欲しいのは
a3,b2,d1,e4で、つまり、2以上の数字は全部マイナス1して回らないといけなくなって、ここにまた時間もかかってしまう
これは新しいデータを登録するときも同じ原理でプラス1しないといけないです
もっとスマートないい方法はないでしょか
543:デフォルトの名無しさん
20/11/16 17:09:54.39 OL16ghBV.net
a4,b3,c2,d1,e5
↓わざわざこんなことしなくていいと思う
a3,b2,d1,e4
a4,b3,c0,d1,e5 さらには
43015 でいいじゃないか
544:デフォルトの名無しさん
20/11/16 17:40:46.63 hTDmnJOp.net
データベースは空き時間にデータをソートするからな
登録したてのデータはライトバックデフォだろ
で、参照数の多いデータを頭に持ってくる
木というかハッシュを何個かに分けて参照数の差で管理すればやり易い
545:デフォルトの名無しさん
20/11/16 18:17:01.54 uQizIpoB.net
そもそも既製RDBを使う話?それともデータベース的なものを自分で作る話?
そこハッキリしないと平行線だぞ
546:デフォルトの名無しさん
20/11/16 18:43:02.87 MWCEXPaa.net
>>536
では、
d,NULL,b,a,e
a4,b3,c0,d1,e5
としたあとに、新しいデータda(dとeの間)が来たとき、順番は
da,d,NULL,b,a,e
となりますが、ソートの方は
a4,b3,c0,d1,da??,e5
はどうなりますか?逆順にすればいいという話もありますがもっと本質的にいい方法はないかと
>>538
自分でプログラミングする話です
C++なので、アドレス参照の*x や**x みたいのを上手に使って出来ないかなあって
547:デフォルトの名無しさん
20/11/16 19:00:52.03 uQizIpoB.net
単に順序の管理用と名前検索用の赤黒木かなんかを作っとけばいいだけの話じゃないの?
違うの?
548:デフォルトの名無しさん
20/11/16 19:00:58.93 Jgt25IWR.net
例えば
map<id,parts> master; // パーツマスター
list<id> seq; // パーツの並び
map<id, list<id>::iterator> lookup// 各パーツのseq中の位置の参照テーブル
ってしておいて、seqに突っ込んだ要素はlookupに参照用の登録をする。
549:デフォルトの名無しさん
20/11/16 19:32:53.88 Z6yFFWiy.net
>>540
そう言うことやね
そもそも配列で要素削除したら詰める処理にめっちゃ時間かかるし
550:デフォルトの名無しさん
20/11/16 19:36:29.66 oSwqK6E+.net
>>535
「間に入れる」という操作が少ないのなら、ソート用のシリアル番号を項目に用意する。
頻繁に挿入操作するとしてもシリアル番号を有理数化して調整すればいい。
551:
20/11/16 20:21:10.58 K6OrqUDY.net
>>537
RDBS はデフォではソートなんかしないし、ソートされたデータが欲しかったら INSERT/UPDATE/DELETE 時にすでにインデックスを張っておくように、あらかじめわざわざ指定するものだと思いますが
空き時間にバックグラウンドでソートする DB なんて聞いた事がないですね
よろしかったら、そういう DBS が何か教えていただけませんか?
552:デフォルトの名無しさん
20/11/16 20:33:56.43 hTDmnJOp.net
ソートじやねぇ
デフラグだ
553:デフォルトの名無しさん
20/11/16 21:12:03.78 BvdXplQc.net
>>544
ソートという言い方はちょっとおかしいけどそれに近いことをRDBはしてるよ
インデックスが探索しやすいようにディスク上でも物理的に並べ替えて配置される
クラスタ化インデックスならレコード自体が並べ替えられると言えるね
といっても隙間なくギッチリ詰めて並べ替えてしまうと中間挿入が発生するたびにソートが必要になってしまうので
通常はある程度の余白を持たせて中間挿入や削除に耐えられる
ように配置される
これを充填率やフィルファクターという
そして定期的にインデックスを再構成・再構築することで充填率が高くなり過ぎないようにする
これはバックグラウンドで行われるよ
554:
20/11/16 21:16:37.23 K6OrqUDY.net
>>546
コメントありがとうございます!
でも「インデックスを再配置する」タイミングは、やっぱり update/insert/delete のタイミングなんじゃないでしょうか?
555:デフォルトの名無しさん
20/11/16 21:25:44.06 BvdXplQc.net
充填率100%ならトランザクション中にリアルタイムで再配置するしかないけど
充填率100%未満ならその場でインデックスを再構築したりはしない
最近のRDBは行バージョンに対応してるからトランザクションログさえ書ければガンガンいくよ
実データファイルの書き換えは後回しにしても整合性保てるので
556:デフォルトの名無しさん
20/11/16 21:33:03.21 hTDmnJOp.net
だからそれがライトバックだろバカもんが
557:デフォルトの名無しさん
20/11/16 21:34:06.52 OL16ghBV.net
>>539
フルスペルからエントリ番号を引ける辞書か数学関数があればいいだろ
558:デフォルトの名無しさん
20/11/16 22:10:00.49 2ijHHLJY.net
エネルギー充填率120%!!
559:デフォルトの名無しさん
20/11/17 00:16:25.08 UNFUL2Kr.net
主キーでB-treeを構成する
PostgreSQLは明示的にバキュームする(B-treeの調整だけではないが
ところでB-treeってなんですか(・∀・)?
560:デフォルトの名無しさん
20/11/17 12:40:30.03 PuHDpULa.net
二分木、binary tree
b-tree, b+tree とか色々な種類がある。
データベースは、b+treeが多い
561:はちみつ餃子
20/11/17 12:52:49.72 lifPo1s+.net
B木 (B-tree) は二分とは限らないよ。
ところでこのBはバランスのBかと思ってたんだけど
考案者とか関連会社の頭文字という説もあるみたいだね。
562:デフォルトの名無しさん
20/11/17 13:16:51.60 XfP96roT.net
BinaryかBalanceかどっち?
563:デフォルトの名無しさん
20/11/17 13:40:13.56 LFLSoNm5.net
binaryじゃ二分になっちまうから違うな
564:デフォルトの名無しさん
20/11/17 13:40:16.49 KFJ2cj0W.net
発祥はわからんけど今となってはBalanced/Balancing Treeだろうな
日本語訳も平衡木だしね
565:デフォルトの名無しさん
20/11/17 17:31:51.25 gGBQNTu8.net
定期的に最小完全ハッシュ関数を求めて置き換える。
566:デフォルトの名無しさん
20/11/17 19:20:00.69 Tiv5/dm/.net
B-Treeが平衡木に分類されることはあってもイコールじゃない。
平衡木というと代表的なのはAVL-Treeとかじゃね。
B-Treeの語源というと俺は broad を推したいが。
Bayer and McCreight never explained what, if anything, the B stands for: Boeing, balanced, broad, bushy, and Bayer have been suggested.
567:デフォルトの名無しさん
20/11/17 21:21:24.35 LFLSoNm5.net
完全ハッシュって、衝突が起こりえないってこと?
ハッシュの使い方の基本がわかってねえやつが考えることの典型だが
568:デフォルトの名無しさん
20/11/17 23:48:10.65 UNFUL2Kr.net
PostgreSQLのハッシュは衝突したら線形リストに収める的なやつだったはず…
569:デフォルトの名無しさん
20/11/18 10:04:24.66 fvU2iODC.net
完全ハッシュ関数は簡単に作れる。
auto hash(auto a) { return a; }
最小であることが重要。
570:デフォルトの名無しさん
20/11/18 10:11:34.00 fvU2iODC.net
constexprでコンパイル時に最小ハッシュ関数が静的に解決される。
これぞ神言語。
571:デフォルトの名無しさん
20/11/18 10:11:37.19 hkPPdx4I.net
まあIdentityも定義には嵌まるかな
572:デフォルトの名無しさん
20/11/18 10:57:38.49 +eOywhWF.net
>>562
ぷw
573:デフォルトの名無しさん
20/11/18 13:28:57.32 oGkGNlvA.net
確か、ハッシュが衝突した所を、h-tree に納めるものもあったような
Ruby のハッシュでは、データ数と共に、バケット数を増やしていく。
バケット数は、2 の累乗の次に現れる素数。
2^n + a, 2 <= n <= 30
8 + 3 = 11
16 + 3 = 19
32 + 5 = 37
64 + 3 = 67
128 + 3 = 131
256 + 27 = 283
512 + 9 = 521
データ数が、バケット数の5倍を超えると、ハッシュが再構成される。
再構成時には、極端に遅くなる
例えば、11 * 5 = 55 だから、データ数が56 個になると、バケット数が19 になる。
19 * 5 = 95 だから、データ数が96 個になると、バケット数が37 になる
574:デフォルトの名無しさん
20/11/18 16:06:44.89 fvU2iODC.net
C++も結構風呂敷広げる系言語だけど、Haskellには負けてしまうなあ。
575:デフォルトの名無しさん
20/11/18 20:57:21.43 v8HWKopj.net
ハッシュ関数とハッシュテーブルの話がごっちゃになってる
576:デフォルトの名無しさん
20/11/18 21:45:14.61 m5UtHFcK.net
わてほんまによー言わんわ♪
577:デフォルトの名無しさん
20/11/18 21:47:58.74 fvU2iODC.net
上げ。
578:デフォルトの名無しさん
20/11/18 21:51:25.76 fvU2iODC.net
完全最小ハッシュ関数は、Nginxで使われてたんじゃなかったかな。
前に調査した時見たと思うわ。
579:デフォルトの名無しさん
20/11/20 16:43:55.07 WhXHGWda.net
Windows環境のVC++2010でマクロプログラムを作ってます。
CapsLock状態をプログラム上から直接変更する手段はありますか?
最悪仮想キーコードでシフト押下、Caps押下、離す、離すの4手で実現はできるのかなとは思いますが
580:デフォルトの名無しさん
20/11/20 16:49:03.01 JmNduuKf.net
URLリンク(docs.microsoft.com)
581:デフォルトの名無しさん
20/11/20 17:05:17.17 KM6YfWXc.net
>>572
できなかったと思う
できたとしてもやるべきではない
CapsLock状態かどうかを調べることはできる
プログラムでAを入力するときCapsLock状態ならaを送る
CapsLock状態でないならShift+aを送る
なんてことをやったことある
582:デフォルトの名無しさん
20/11/20 17:48:13.50 2Xtms9kk.net
質問するときくらい、あげていきましょうや。
583:はちみつ餃子
20/11/20 18:07:40.81 QATBBV0x.net
専用ブラウザでお気に入りスレを巡回するし、
スレ一覧を見るときもタイトルで検索かけるから
上がってるか下がってるかなんて見てないな。
見てる人ってそんなにいる?
584:デフォルトの名無しさん
20/11/20 18:39:27.79 2Xtms9kk.net
専ブラってなんすか?
585:デフォルトの名無しさん
20/11/20 20:09:54.73 8HnFa960.net
むかし2chが検索からガンガン流入してた時代は意味あったけど
もはや検索からははみごにされ廃れきってネット老人サロンと化した
今の5chではほとんど意味ない文化だなage/sage
586:デフォルトの名無しさん
20/11/20 23:20:16.49 2Xtms9kk.net
だったら、上げていきましょうや。
587:デフォルトの名無しさん
20/11/20 23:36:24.04 tRQ7sQvu.net
だが断る
588:デフォルトの名無しさん
20/11/21 08:35:59.33 beyH0yOT.net
LINEで既読スルーがどうたらと一喜一憂してるバ…若者をうらやましいと思ったことは只の一度もない
やたら何たら離れしまくり四六時中ゲームしかしなくなる廃人化傾向は嘆かわしい限りだ
老害で結構だ、言わせておくさ てめーらより人生楽しいぜ
589:デフォルトの名無しさん
20/11/21 09:06:30.33 gA6oFLIj.net
べつに老害とかいうてませんがな
たんじゅんに皆年寄なりましたな、いうてるだけで
590:デフォルトの名無しさん
20/11/21 09:09:50.16 beyH0yOT.net
ワード1つに噛みつく以外に言うことが何もねえってことか
少しくらいあれよ、これ以上絶望させてくれるな
591:デフォルトの名無しさん
20/11/21 09:12:51.55 kTU0dCRJ.net
おじいちゃん、こんなクソスレで何をそんなに息巻いてるのよ
お体に障りますよ
592:デフォルトの名無しさん
20/11/21 09:14:58.42 R3A7NkyC.net
>>581
マ板の40代スレに変なポエム書いてる奴がいたが、同じ臭いがする
593:デフォルトの名無しさん
20/11/21 09:18:51.83 beyH0yOT.net
ゴミばっか
ここム板だぜ
らしい話しろよ
594:デフォルトの名無しさん
20/11/21 13:02:47.48 t4UXk0gp.net
したがって、上げていきましょうや。
595:デフォルトの名無しさん
20/11/22 01:10:01.54 mIY2Yy/p.net
>>573-574
ありがとうございます。
ゲーム側の仕様で歩く/走るの切り替えがCapsLock状態なので、そこを制御したかったんですよね。
Shift押しっぱなしでも切り替わるは切り替わるんでそれをメインに考えてみます
596:デフォルトの名無しさん
20/11/22 14:11:14.57 3aKbbyVM.net
RTTIってどんな原理で実装されてるんですか?
597:デフォルトの名無しさん
20/11/22 14:26:33.97 KUPbiAdd.net
>>589
仮想関数と同じように、クラスごとにコンパイラがデータ生成して個々のオブジェクトから辿れるように埋め込む。
598:デフォルトの名無しさん
20/11/22 14:33:39.46 gdEBKvV8.net
どんな高度なことをやってるように見えてても結局はC言語で実装してんの?
599:デフォルトの名無しさん
20/11/22 15:03:04.61 h+lYxto0.net
>>591
CPUが直接理解できるのはマシン語のみ。
そのマシン語に一対一に近い対応関係があるのはC言語。
だからどんな高度なことをやっているように見えてもほとんど全ての場合が
C言語で書ける。
600:デフォルトの名無しさん
20/11/22 15:51:20.82 o/Js7Lov.net
>>590
RTTI有効にしたらパフォーマンス落ちるっていうのをみたことあるけど
ただデータ(プログラム領域?)が増えるだけなら落ちなくない?
601:デフォルトの名無しさん
20/11/22 17:19:17.03 LCd15qeF.net
仮想関数テーブルのアドレスがクラスのIDの役割を果たす
からRTTIするには仮想関数が1個以上あれば良く、
それさえクリアしたら追加の空間コストはない
602:デフォルトの名無しさん
20/11/22 17:29:03.52 2nm5SjZ0.net
多態するならデストラクタが仮想のはずだから事実上は追加コストないんだよね
603:デフォルトの名無しさん
20/11/22 20:02:41.94 L/uQBHM9.net
ダイナミックにやりたいヤツ用
604:デフォルトの名無しさん
20/11/22 20:07:55.27 BvpndlWI.net
>>593
ほとんど落ちないはずだが、RTTIとは別意に一般論として仮想関数を1つでも
定義することによって、非常に僅かながら落ちる。
オブジェクトを new した時、オブジェクトの隠れたメンバに、仮想テーブル
のアドレスを書き込む必要があるので、new一回当たり 1 クロックだけ遅くなる。
また、オブジェクトにアドレスを1個格納するのに必要な領域が増やす必要がある。
これは、32BITモードの場合、4バイト、64BITモードの場合、8バイト。
605:デフォルトの名無しさん
20/11/22 23:24:02.57 LCd15qeF.net
RTTIするからといって多態性設計とは限らないんじゃ…
古き良きenum定数によるswitchの代替という使い方も有り得る
606:デフォルトの名無しさん
20/11/23 06:50:21.21 SrPyOTC6.net
nested_exceptionで普通に使う
607:デフォルトの名無しさん
20/11/23 06:52:19.04 SrPyOTC6.net
単純にexceptionで捕獲した例外をsystem_errorとかで場合分けとかね
catchをオーバーロードするよりこっちのほうが融通が利く
608:デフォルトの名無しさん
20/11/23 21:12:23.11 gAkTmGSN.net
そんなコストを気にするほどランタイム速度要求の厳しいソフトなんかお前ら書かんだろ
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
289日前に更新/258 KB
担当:undef