- 1 名前:デフォルトの名無しさん [2020/09/07(月) 18:56:51.64 ID:4fn7uU/g.net]
- スレ立てるまでもない質問はここで 154匹目
- 387 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 00:22:29.39 ID:511kcisg.net]
- >>385
53bitの範囲ですか…?
- 388 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 00:26:34.47 ID:5ZG2Vz6Q.net]
- >>387
仮数部53bit(52bit+符号1bit)だな その意味はわかってるか? 53bitで正確に表せる範囲であれば正確に表せる つまりあんたは意味がないことを聞いてるんだよ 正しく表せる数字は正しく表せますか?と言ってる 正確に表せる範囲であれば正確に表せるよw
- 389 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 01:28:46.90 ID:theiHz1p.net]
- 浮動小数点は誤差を含むから、a == b みたいに比較しない
誤差の範囲内で、OK とする。 b - 誤差 <= a <= b + 誤差 a == b を使いたいなら、整数型へ変換して比較すべき
- 390 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 05:42:25.73 ID:/D1HJJ3Q.net]
- >>383
ブランチ管理してくれるならバックアップでもいいかな あとリストアも自動で BunBackupでそこまでの機能ってあったっけ?
- 391 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 07:57:28.84 ID:8lHIA6al.net]
- >>384
IEEE754の規定では、9.0/3.0なら正確に3.0を返さなければならないはず。
- 392 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 13:06:08.35 ID:Fo5IxMM2.net]
- 名前空間で分類してるからクラス名を積極的に短くする
vs かぶらないに越したことはないのでクラス名は長く書く どちらが正解なのでしょうか? //shared code namespace Domain { Foo FooDetail Bar IFooRepository IBarRepository IFooService IBarService }
- 393 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 13:06:41.82 ID:Fo5IxMM2.net]
- //長い名前派
TooLongName.cshtml namespace UI { TooLongNameViewModel TooLongNameFooViewModel TooLongNameFooDetailViewModel TooLongNameBarViewModel TooLongNameModelMapper TooLongNameController TooLongNameFacade TooLongNameOther } //短い名前派 TooLongName.cshtml namespace UI { TooLongNameController // 設定より規約パターンのために短くできない namespace TooLongNameDetail { namespace ViewModels { Foo FooDetail Bar } ModelMapper Facade Other }}
- 394 名前:デフォルトの名無しさん [2020/10/01(木) 13:15:51.37 ID:OaA9a4hN.net]
- この手のものに正解は無いので
名前空間の方が好みだし、名前は短い方がいい
- 395 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 13:43:58.49 ID:w51Lc0nW.net]
- 名前空間使って短くするほうが圧倒的に良いと思うけど切り方が微妙
- 396 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 13:51:05.30 ID:Fo5IxMM2.net]
- >>395
参考までにあなたならどのように切りますか?
- 397 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 14:35:38.69 ID:hOjhiI7q.net]
- 条件式と条件文って同じ意味ですか?
- 398 名前:蟻人間 mailto:sage [2020/10/01(木) 14:46:07.74 ID:7hENrO7v.net]
- >>397
多分、条件式の方が正しいと思うが、 250個以上のプログラム言語があるから、 条件文も正しいかも知れない。
- 399 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 15:42:41.06 ID:bVq+7g5F.net]
- 値を返さないものが文、返すものが式って感じじゃね
- 400 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 18:18:17.46 ID:mFu9oEu2.net]
- まあ確かに言語によるかもしれんけど
条件文とは例えばif文とかの全体を言っていて if(ここ) に入れるのが条件式と言ってるとかじゃないかね?
- 401 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 18:29:37.75 ID:Njtwj5ZN.net]
- >>400
よく使われている常識的な言語だとそうだろうね。 独特の用語の使い方をする言語もあるから責任は持てないけれど。
- 402 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 18:40:24.68 ID:w51Lc0nW.net]
- >>396
オーソドックスにやるならView/ViewModel/Controllerは Presentation Layerの中に並列に切る WebUI.Views WebUI.ViewModels WebUI.Controllers アーキテクチャ次第だから絶対にこうすべきという物があるわけではないけど とりあえずメジャーなサンプルプロジェクトを参考にしてみては? https://github.com/dotnet-architecture/eShopOnWeb https://github.com/jasontaylordev/NorthwindTraders
- 403 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 22:50:18.59 ID:theiHz1p.net]
- >>392
Ruby on Rails では、1単語が多い bookmark, comment, todo とか、皆が使う
- 404 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 02:12:32.96 ID:nnGmkCD2.net]
- 認証ありのSPAをSpringBoot2とReactで実現したくて勉強をしています
いろんなサンプルプロジェクトを落としてきて見ているのですがどれも認証トークンをローカルストレージに保存する手法で作ってます こちらの記事ではそういう大事な情報をローカルストレージに入れるのはマズいと書かれていました https://techracho.bpsinc.jp/hachi8833/2019_10_09/80851 個人的には記事の内容の通りだと思うのですが多数のプロジェクトで使用されているからには何か対策があるからなのでしょうか またローカルストレージを使用しない手法を使用したプロジェクトをご存知であれば教えていただきたいです
- 405 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 06:04:35.69 ID:gfOt11Rw.net]
- >>404
その記事でcookie使えと書いてあるじゃないか
- 406 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 13:31:20.50 ID:aQA5qaSB.net]
- MVCフレームワークならいつもと同じようにCookie認証すればOK
すると通常リクエストにもAJAXリクエストにも自動的に認証Cookieが乗っかる 後はCSRF対策用のヘッダーだけ載せ忘れないようにAJAXリクエストを共通コードでラップしておけば完璧
- 407 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 17:28:18.61 ID:IzIkeFXj.net]
- ありがとうございます
Cookie認証で実装しているプロジェクトを探してみます
- 408 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 18:00:19.42 ID:J9beoHbU.net]
- これでも結局はクッキーで送られたIDでAPIをアクセスするんやろ?
一緒やんと思うんやけど何故これでセキュアと言い切れるのか
- 409 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 18:25:31.43 ID:SqfSpP9U.net]
- XSS対策 http only Cookie
盗聴対策 secure Cookie CSRF対策 アンチフォージェリトークン 弱点は、ないッ!
- 410 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 18:38:47.74 ID:gfOt11Rw.net]
- >>408
雑に説明するなら、http only cookie はスクリプトからアクセスできないから とりあえずCSRF周りの記事を読み漁るといい
- 411 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 18:44:34.78 ID:gfOt11Rw.net]
- >>409
強引に難しいルートとしてだけど攻略不可能でもないと思う DNSポイズニングで偽証明局掴まされて、中間者攻撃でTLSを中継されたらどうしようもない
- 412 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 18:50:42.09 ID:1uQRz/LD.net]
- XSSされたらCookie取られなくても即死じゃね?
正規のエンドポイントに不正リクエスト送られてアウト
- 413 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 19:59:33.86 ID:J9beoHbU.net]
- >>410
そんなのコードだけの話でパケットみたら丸わかりやん・・・ こういうのでセキュアってなんか違うんじゃね? CSRFってこれもトークンなんだし結局は一緒かと
- 414 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 20:53:53.02 ID:gfOt11Rw.net]
- >>413
えーと、ド素人乙
- 415 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 06:38:15.58 ID:shIcxUBj.net]
- 自分で作ったWebAPI(Lambda)からデータをGETするだけのサイトを作りたいのですが、フロントも自分で作った方がセキュリティ的に安全なのでしょうか?
もしセキュリティ的に問題無いのでしたらlivedoorブログとかで代用したいです
- 416 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 07:41:49.30 ID:Kf2+e+3P.net]
- >>415
問題ない GETは普通のHTTP GETだから
- 417 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:12:33.85 ID:GRmzBiTi.net]
- パスワード再設定のためにワンタイムパスワードをメールで送るパターンを採用してるシステムがよくあるけど
このメールって盗聴されたりしないんですか?
- 418 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:21:50.46 ID:rJVT04kJ.net]
- >>417
starttls
- 419 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:25:18.27 ID:wMNyZfVn.net]
- >>418
これってクライアントから直近のSMTPサーバーまでの暗号化を強いるだけじゃないんですか? SMTPリレー中のサーバーが1つでも非対応の場合は盗聴されてしまうのでは
- 420 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:51:42.71 ID:rJVT04kJ.net]
- >>419
そうだけど、それはそのサイトの問題じゃないよね 変なメールプロバイダ使ってる人の問題 それに実際の話、サイトのOTPだとバレたとしても何か問題ある? アカウントと紐付いて初めて問題になるから
- 421 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:54:54.15 ID:rJVT04kJ.net]
- >>420
あ、いや問題はあるか 問題のあるプロバイダ使ってる人のアカウントを特定できるなら、パスワード再設定して盗聴したOTPでログインとか
- 422 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:58:51.68 ID:rJVT04kJ.net]
- >>419
まあ、大体がメールのリレーに割り込むこと自体のハードルがかなり高いし
- 423 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 11:31:38.26 ID:wMNyZfVn.net]
- やっぱりメールだとセキュアではないですよね…
なんでこんな脆弱なプロトコルがスタンダードのまま野放しになってるんだろう
- 424 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 11:46:14.18 ID:TFoea3MP.net]
- メール送信先と、OTPの発行されたシステムのアカウントの紐付けはどうやるんだろう
メールにアカウントのIDが書いてあったり下手なURLが書いてあったとしたら設計側の問題だよな
- 425 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:14:10.63 ID:iCV76+ee.net]
- セキュリティを気にするのだったらメールで認証するなということだな
昔の技術にただ乗りしているのだからメールシステムに問題があるんじゃなくて 採用する側が問題
- 426 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:38:01.90 ID:FL3eMRUo.net]
- セキュリティに「これしとけば完璧」なんてないのよ、いたちごっこだから
した方がしないよりはマシ 複数からの同時ログインを特別扱いしとけば横取りされたらすぐわかる、わからないよりはマシ OTPは時限だし
- 427 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:42:02.51 ID:ZslaW4c9.net]
- 1. ランダムトークン、メールアドレス、パスワード、タイムスタンプ、IP、セッションIDなど仮登録
2. 検証URLのクエリパラメータにランダムトークンのみを付けてメール送信 3. 検証URLにアクセスが来たらランダムトークン、有効期限、IP、セッションIDなど検証してメールアドレス、パスワードを本登録 メールはどう頑張っても盗聴される可能性がある 検証を厳しくすると、登録はPCだけどメール確認はスマホ、のパターンに対応できなくなる 検証を厳しくしても、メール盗聴者によるなりすましは防げない 検証を厳しくすると、うっかりクリック狙いのなりすましを防げる 初期登録の場合、メール盗聴されても個人情報、機密情報が抜かれることはないが、勝手に本登録されてしまうことはある パスワード強制リセットの場合、ランダムパスワードをメール通知するか、メール認証の後で再入力を促すしか方法がないので、メール盗聴されるとアウト リセット後、可能な限り速やかに、WEB画面からパスワード変更すべし こんなところですかね セキュリティ難しすぎて辛い
- 428 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:51:33.85 ID:1IyBCfpu.net]
- 復号化するキーを画面上で発行してメールの中身を暗号化したり
ワンタイムパスワードをセッションID使って暗号化しておいて 同じセッションじゃないと使えないようにしたりすれば メールアドレス == アカウントでもだいぶセキュアになるかも でもパスワード忘れるような人にとってそういうのは異常にハードル高くて サポートコストが増大するから特別なサイト以外はやらない 利便性とセキュリティのほどほどのバランス
- 429 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 13:03:48.16 ID:EzoVu8Do.net]
- >>428
盗聴者がセッション開始することもできるからそれでは防げないかと 盗聴者:盗聴対象メールアドレスを入力、パスワード再設定セッション開始 盗聴者:パスワード再設定メールを盗聴、ワンタイムパスワード取得 盗聴者:ワンタイムパスワードを入力、パスワード再設定 盗聴者:パスワード再設定セッション終了 〜〜〜〜 正規ユーザー:身に覚えのないパスワード再設定メールを受信(この時点で手遅れ) メールだとパスワード再設定が脆弱すぎる パスワード再設定はメールじゃなく電話、SMSを必須にしたほうがいいのかも
- 430 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 13:14:51.58 ID:rJVT04kJ.net]
- >>429
https://blog.kaspersky.co.jp/hacking-cellular-networks/9681/ これ5Gでも問題になってる 豆な
- 431 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 13:24:35.60 ID:Y8AbULhw.net]
- 不正アクセスに関しましては全て被害届を提出します
過去に実績もあります って書いてればビビリからは攻撃受けないだろ まぁ自動化して攻撃してるだろうから意味は無いかもしれんが
- 432 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 14:17:48.67 ID:1IyBCfpu.net]
- >>429
標的のメールが常に盗聴可能な状態でパスワード再設定に必要な情報も持ってるって前提ならね セキュリティに100%はないから どういう種類の攻撃に対してどの程度の防御ができてるのかと その攻撃が実現しうるリスクの程度で評価しないと
- 433 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 14:23:06.46 ID:TFoea3MP.net]
- なるほどメールアドレスがそのままアカウントIDになってるサービスでは盗聴に弱いのか
ならパスワード強制リセットのページにも別のワンタイムトークンを表示しておけば……いやそんなことしなくてもWeb側のセッションIDとメールの認証キーを内部で照合すれば、セッション固定攻撃と組み合わせない限りは安全なのでは?
- 434 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 14:25:13.05 ID:TFoea3MP.net]
- って428が書いてたわ
すまん見落としてた
- 435 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 14:45:21.88 ID:TFoea3MP.net]
- メール受信による認証は盗聴に弱いから、多要素認証の一部として効果を発揮するのであって、単独でパスワードリセットができるのは安全性が低い
せめて生年月日とか電話番号とかを合わせて聞くようなリセット方式にしないと心許ないってところかな
- 436 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 15:23:35.99 ID:iCV76+ee.net]
- セキュリティに100%はない
しかしマスコミをそれを知ってか知らずか 破られると猛烈にたたく システムを作る側としては解がないわ
- 437 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 15:35:47.09 ID:iXmRISfh.net]
- 参考にAmazonのパスワードリセットのワークフローを調べた
1. メールアドレス入力、サブミット 2. ワンタイムパスワードメール受信 3. ワンタイムパスワード入力、サブミット 4. 新パスワード入力、サブミット 盗聴者が攻撃しようとしたらこれで攻撃できちゃうのでは? 1. 攻撃対象メールアドレス入力、サブミット 2. ワンタイムパスワードメール盗聴 3. ワンタイムパスワード入力、サブミット 4. 新パスワード入力、サブミット Amazonが採用してるぐらいだからメール盗聴のリスクは考えなくてもいいのかな? もう、わかんねえなこれ
- 438 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 15:38:28.30 ID:iXmRISfh.net]
- >>435
あー、なるほど、そのための秘密の3つの質問か アレ、なんのためにあるのか謎だったけど必要な物だったんだな
- 439 名前:397 mailto:sage [2020/10/03(土) 17:03:59.82 ID:WbMrpwtO.net]
- >>398-401
レスありがとうございます そもそもプログラムの世界でいう「式」って、何なんですか? 「文」は理解できたけれど、「式」がいまいちピント来ません。 (どうしても算数の「式」のイメージが強くて抜けない) 文を構成する要素を「式」だと考えればよいですか?
- 440 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 17:17:01.79 ID:QafhOYYm.net]
- 式は評価できるもの
評価すると値やオブジェクトを得る 式は式や文の構成要素となる
- 441 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 17:22:58.65 ID:QafhOYYm.net]
- 式は式、項、因子から構成される
式は因子の構成要素にもなる
- 442 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 17:31:44.75 ID:xp+vOEo3.net]
- Javaのifはif文なので直接変数に代入できない
Kotlinのifはif式なので直接変数に代入できる
- 443 名前:デフォルトの名無しさん [2020/10/03(土) 18:57:42.99 ID:Hog1AJs4.net]
- プログラムなんてレベルじゃないので申し訳ない質問ですが、スプレッドシートで同じシート内の別タブにリンク飛ばしたい場合、PCでは飛べるけどiPhoneのアプリからは、「リンクを取得」を押しても飛べないんですけど、仕様ですか?やり方あったら教えてほしいです。
- 444 名前:デフォルトの名無しさん [2020/10/03(土) 20:41:33.18 ID:5QIBKgVv.net]
- 仕様です
- 445 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 23:15:12.00 ID:/wA+nWqo.net]
- Ruby では、if は文ではなく式なので、戻り値を返す。
Rubyの影響を受けている、Kotlin, Rust, Go など、最近の言語は式重視 p res = if 1 + 2 == 4 "yes" else "no" end res は、no となる
- 446 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 23:29:33.97 ID:jHC6YOpP.net]
- SQLで四則演算させたりするのはあまり良くないのでしょうか?
そういう処理はアプリ側だけにしてSQLは極力シンプルにするのが理想ですか?
- 447 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 23:49:59.22 ID:AAeCyfpr.net]
- そんな質問をする程度のレベルなら極力SQLに寄せた方がいい
プログラミング言語は自由度がとても高いので、酷いコードは本当にどうしようもない底無しのビチグソであり、深刻な技術的負債となる それに比べればSQLは巧拙次第でパフォーマンスの差はあれど、バカでもそこまでソフトウェアの品質に壊滅的影響を与えることは少ない
- 448 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 23:58:47.01 ID:ZEneYrh5.net]
- わかりました。ではこれからSQLを電卓アプリ代わりに使っていきます。
- 449 名前: mailto:sage [2020/10/04(日) 01:10:36.93 ID:47GmJZ02.net]
- >>445
それは C の条件演算子/三項演算子(どちらもダサいネーミングだと思います)とか lisp の cond 特殊構文などの形で過去にありましたね
- 450 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 01:13:51.71 ID:hibiyDxp.net]
- >>446
素人は全部SQLでいいよ
- 451 名前:デフォルトの名無しさん [2020/10/04(日) 01:56:06.09 ID:iw0dJx5p.net]
- Fortranでopenmpやり始めたんですが、遅いので調べてみたら、openmpを呼ばないで(シリアルと同じコード)単にOMP_NUM_THREADS =2とするだけで、OMP_NUM_THREADS =1より遅くなってしまうんですが、どういうことなんでしょうか。
- 452 名前:デフォルトの名無しさん [2020/10/04(日) 06:04:41.57 ID:4IGvE5yV.net]
- >>446
場合による。
- 453 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 06:54:10.83 ID:9mv21uX9.net]
- SQLで頑張らなきゃいけないのは結局テーブル設計がダメってこと
- 454 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 06:55:31.75 ID:l91kU2Gr.net]
- >>453
テーブル設計がいいと、SQLで頑張らなくていい例を 1つでいいからあげてください ないならそのまま逃げて構いません(笑)
- 455 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 08:25:36.50 ID:9mv21uX9.net]
- >>454
クソテーブル設計者さん朝から発狂しちゃった……w
- 456 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 09:17:31.94 ID:t+5MH57F.net]
- >>453
SQLで頑張らなきゃいけない場合と SQLで頑張ることを選択した場合を区別してるなら おおむね同意
- 457 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 09:38:14.88 ID:QfJSems3.net]
- テーブル設計がシステム要求に対して適切じゃなかったからSQLが複雑になったなんてのはあるけれど
逆は必ずしも真じゃないわな。
- 458 名前:デフォルトの名無しさん [2020/10/04(日) 09:50:38.92 ID:1rOiD+nc.net]
- >>445
Haskellの事も忘れないで・・・。 if式も有るけど、パターンマッチでifそのものも作れますよ。 myif True t f = t myif False t f = f 先行評価だと、引数を全部評価しちゃうから、正常に動作しない。 遅延評価だからこそif式を自作出来る。
- 459 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 10:00:31.68 ID:hibiyDxp.net]
- テーブル設計よりアプリケーション設計のほうがSQLへの影響が大きい
リポジトリパターンを採用すればテーブル設計が糞だとしてもそれほど複雑なSQLにはならない スマートUIを採用するとテーブル設計が綺麗でもほぼ確実にSQLが混沌に導かれる
- 460 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 10:11:28.99 ID:wkZyx06T.net]
- >>459
モデル設計の話をDBとごっちゃにしている点で、そのパターン論争は糞だと思うけど
- 461 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 10:45:28.99 ID:8xouqNX0.net]
- ひどい脱線で言い争ってるなあ
最初の質問は >SQLで四則演算させたりするのはあまり良くないのでしょうか? だぞ 質問者そっちのけで言い争って勝って自分の有能さを誇示したいのか?
- 462 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 10:53:41.56 ID:hibiyDxp.net]
- >>460
SQLはDBモデルからAPモデルへの関数(射影)でしかない なのでSQLを考えるときにAPモデルのことを考えないということはありえない そして関数(射影)というものはどちらかというとINよりもOUTの構造が綺麗なほうが綺麗に実装しやすい 複雑なデータを綺麗に整頓するよりもデータを意図的に複雑化するほうが難しいからだ であるからAPモデルが糞(スマートUI)ならDBモデルが糞であろうとなかろうとSQLも糞と化す APモデルが綺麗(DDD, リポジトリパターン)ならDBが多少糞でもSQLはそれほど糞にはならない
- 463 名前:デフォルトの名無しさん [2020/10/04(日) 10:57:56.20 ID:oGeBy4Z3.net]
- >>462
糞はフンと読みますかクソと読みますか?
- 464 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 10:58:26.92 ID:8xouqNX0.net]
- >>446
開発者やチームのスキルが常軌を逸したびちぐそレベルではないと仮定して 四則演算やそれに類するロジックなんてSQLでやらないほうがいいと思う SQLの中のロジックに対してユニットテストが書けない バグがあるときデバッガで途中経過を追えない SQLにロジックを入れるとしたら、インデックスが活きる操作等、性能的な意図があるもの
- 465 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 11:01:28.78 ID:8xouqNX0.net]
- SQLに処理を寄せるとDB間の移植性も落ちる
- 466 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 11:06:48.64 ID:wkZyx06T.net]
- >>462
だからモデル設計のみで考えるべき問題 SQLなんて低レベルのレイヤーの都合を持ち込んで考えるからおかしくなる だから、その論争は糞
- 467 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 11:13:04.36 ID:IHMs+qq2.net]
- SQLに色んな処理を書く人は
PHPとHTMLをごちゃ混ぜにしてるぐらいセンスないね
- 468 名前:デフォルトの名無しさん [2020/10/04(日) 12:23:00.03 ID:oCHjZLK6.net]
- 計算は別のところでやって
DBにはその答えを全部記憶していけばいい 究極のメモ化が完了する
- 469 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 13:06:14.51 ID:hibiyDxp.net]
- まとめ
* 原則的にはSQLにドメインロジックを書かない * パフォーマンスなど理由があるならば原則を破ってよい * 原則を破る場合は積極的にドキュメンテーションすべし 次の方どうぞ
- 470 名前:デフォルトの名無しさん [2020/10/04(日) 13:29:28.01 ID:4IGvE5yV.net]
- >>468
計算した結果が出るViewを作ったりしてな。 マテリアルビューとかでやれば普通の表と似たようなものか。
- 471 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 13:38:21.04 ID:xsUyERPe.net]
- 小学生です。
今九九を自動化するためにDBに1の段のテーブル、2の段のテーブル……と作っています。 例えば8×7の場合は select result from 8_no_dan where kakeru_aite = 7;でresultに56が出てきます。 これって商品化できますか?
- 472 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 13:45:41.53 ID:hibiyDxp.net]
- 売れるかどうかはともかく商品化は可能なのでは?
- 473 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 13:47:45.30 ID:t5q2DIGq.net]
- うん、商品にしても構わんよね
俺は買わんけど
- 474 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 14:20:36.68 ID:ykILSOcJ.net]
- >>455
やっぱり逃げましたね(笑)
- 475 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 14:22:00.56 ID:ykILSOcJ.net]
- >>464
> 四則演算やそれに類するロジックなんてSQLでやらないほうがいいと思う > SQLの中のロジックに対してユニットテストが書けない データベースを入れないでテストしても正しく動作するという保証はできません データベースを入れてテストするならテストはできます
- 476 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 14:39:24.05 ID:t+5MH57F.net]
- >>464
書きやすさやりやすさの違いはあるだろうけど SQL内のロジックに対してもテスト書けるしデバッガも使えるでしょ
- 477 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 14:43:39.75 ID:t+5MH57F.net]
- >>469
>* 原則的にはSQLにドメインロジックを書かない 四則演算はすべてドメインロジック?
- 478 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 15:22:34.07 ID:bGe+XfpJ.net]
- 同じ糞ならSQLのほうがマシ、は真
適切なフレームワークさえあれば、本質的にはコードよりよほどテストは容易
- 479 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 15:25:09.66 ID:h1367H/A.net]
- >>475
それはユニットテストの範囲じゃなくてインテグレーションテストの範囲でしょ
- 480 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 15:26:26.46 ID:h1367H/A.net]
- >>476
SQL内ロジックのデバッグは知らないのでよかったら教えてほしい ストアドファンクションのデバッグなら知ってる
- 481 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 15:27:58.49 ID:bGe+XfpJ.net]
- >>479
SQLは単体テストでしょ 世の中、ORMや典型的なリポジトリパターンだけで作れるような簡単なシステムばかりじゃないよ
- 482 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 15:47:36.28 ID:k2QVBKjJ.net]
- 単体か結合かはあまり気にしなくていい
要点は自動化できるかどうか SQLは自動テストできるがとにかく遅い 規模が大きくなるとその遅さに耐えられなくなる なのでSQLはテストしなくてもいいぐらい単純化する 複雑なビジネスロジックでもインフラが関わらなければ自動テストがすぐに終わる
- 483 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 15:52:46.47 ID:k2QVBKjJ.net]
- デバッグはしなくていい
関数のI/Oだけを見ればいい
- 484 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 16:06:58.13 ID:qG3oE3Yr.net]
- >>479
そうやってテストしないからバグが出る ユニットテストの中でデータベースを使ってるだけに過ぎない ユニットテストの中でファイルを使っていれば、ファイルの読み書き部分は省くのかよw
- 485 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 16:30:23.87 ID:H7RSzWbS.net]
- >>483
てきとーにI/Oだけみて正しいと判断できちゃうような単純な関数しか実装させてもらえない人なのかな?
- 486 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 16:42:49.40 ID:k2QVBKjJ.net]
- >>485
単純に越したことはないがI/Oだけで判断できる純粋な関数はどんなに複雑化しても簡単にテストできる なので経験を積んだ人ほど関数を好む そして純粋な関数とはインフラストラクチャの定形的なコードと切り離された純然たるビジネスロジックそのもの なのでそこを任されるということは実力を信用されているということだよ
- 487 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 17:16:17.84 ID:8xouqNX0.net]
- 互いの言葉尻だけ捉えて持論を垂れ流すレスバトルだな
自尊心を満たした気分になる以外に何のメリットがあるのか
|

|