スレ立てるまでもない質問はここで 155匹目

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/11/27(金) 10:07:17.73ID:d9w49I3I
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。
【前スレ】
スレ立てるまでもない質問はここで 154匹目
http://mevius.5ch.net/test/read.cgi/tech/1599472611/l50
2021/02/04(木) 06:30:38.18ID:8ASdjdRY
・検索候補ファイルのリスト
・検索対象フォルダのリスト

変数名ちょうど英単語の名前ありますか?
2021/02/04(木) 06:30:58.02ID:8ASdjdRY
変数名にあうちょうどいい英単語ありますか?
719デフォルトの名無しさん
垢版 |
2021/02/04(木) 07:57:26.67ID:ooZBaTlj
searchCandidateList(searchCandidates
searchTargetFolderList(searchTargetFolders
e.g.
for (var searchCandidate in searchCandidates) {
・・・
}
2021/02/04(木) 07:57:47.04ID:HQJvUn+U
センスが問われるとこだけど
俺だったらtargetsとdomain位にしとくかな
721デフォルトの名無しさん
垢版 |
2021/02/04(木) 08:00:47.20ID:ooZBaTlj
>>720
domainとか、それは違う気がするわ〜
2021/02/04(木) 08:48:00.02ID:LVz73NE1
名前に普通にFileとFolderは含めてほしい
あと名付けは専用スレあるのでスレチ
723719
垢版 |
2021/02/04(木) 15:20:22.52ID:ooZBaTlj
>>722
そう思ったけど候補がフォルダーのケースも想定した。
2021/02/04(木) 15:45:39.46ID:FvfAnmc9
なんにせよ誘導入ったのでこれ以上スレチ
2021/02/04(木) 23:28:41.54ID:nyXXKciT
すいません、sha-256が危殆化してないのは総当たりテーブル(いわゆるレインボーテーブル)が巨大すぎて作成できないから?
2021/02/05(金) 07:33:57.94ID:8GKLmgiB
>>725
レインボー攻撃は関係ない
レインボー攻撃に使われる原文リストは決まっているので、ハッシュ化したテーブルのサイズ(個数)も他と変わらないから
そもそもがレインボー攻撃はソルトとストレッチが漏洩している(もしくは、手抜きされてる)場合でしか実施は難しい
2021/02/05(金) 07:42:52.76ID:8GKLmgiB
>>725
なんか間違ってるかとWikipedia見たら、レインボーテーブルの項目で書いてあったわ
MD5の頃はソルトを使わなかったんで有効だった

あれ、ストレッチっていらんのかな?
2021/02/05(金) 07:50:07.89ID:jZlc8jzK
>>722
名づけスレはかなり下がってて見つけにくい
リンクくらい貼ったらどうか

クラス名・変数名に迷ったら書き込むスレ。
https://mevius.5ch.net/test/read.cgi/tech/1494147712
2021/02/05(金) 07:59:02.92ID:9WD3kXNu
すまほを起動するとアンドロイドの画面がでてそこからうごかない
電源OFFにしてもすぐにまた勝手に立ち上がる

電源+音量ボタンを押すとアンドロイド設定画面?みたいなのがでる
そこから電源オフをするときることはできる。リカバリーとかも選択可能

すまほとPCはつないだことがなく許可のやつは押してない
ルート化するとできるとかなんとか

こういう状態の時はスマホからでーたはもうとれないですか?
2021/02/05(金) 08:03:48.18ID:8GKLmgiB
>>725
ハッシュ関数の危殆化はMD5の項目にあるように、衝突耐性に脆弱性が見つかること
原文が分からなくてもそのハッシュ値となるデータを逆に作れてしまうMD5はそのため廃れた
731デフォルトの名無しさん
垢版 |
2021/02/05(金) 16:22:01.86ID:Jaou1sNo
全くの素人ですが独学でプログラミングの勉強しようと思ってるんですがmacのほうがいいんですか?
検索するとWindowsも使えるmacがいいという意見のほうが多いです
キーボードの配列以外で何かデメリットありますか?
2021/02/05(金) 16:32:17.75ID:yFP4HgSW
>>731
Macはハードウェア、パソコンです。
WindowsはOS、ソフトウェアです。

Windowsはどのパソコンでも使えます。
だからMacでも使えるということです。
「Windowsも」使えるmacというのは結局の所
Windowsも使うということです。

Windowsしか使えないのと、WindowsとmacOSの両方を使えるのであれば
両方使えるほうがいいのは当たり前です。
デメリットはWindowsを別途買わなくてはいけないので値段が高くなる所です。
つまり高くなったとしてもmacOSを使える方がいいかどうかで決めればよいでしょう。
2021/02/05(金) 17:28:17.53ID:7kBPI4G7
勝又健太の最新版、Web系エンジニアを目指す手順書

KENTA、2021/02/01

Web系エンジニアを目指す人のためのプログラミング学習ロードマップ
https://www.youtube.com/watch?v=0TABrlhci5M

Ruby on Rails, VSCode

初心者でRubyは、すべての学校で、Mac が絶対。
最近は、仮想マシン上のLinux で、Docker も使うから、
メモリは16〜32GB とか最大まで拡張すること!
2021/02/05(金) 17:29:20.09ID:k9/SK0Or
>>731
勉強する目的が分からないのに何がいいって誰もわからない
iOSのアプリを開発するのならMacしか選択肢は無いし新しく出たARMのMacでWindowsは使えない
趣味でしかないのなら自分で調べられない程度だと止めた方がいいし就職が目的ならプログラマ板で聞くべき
2021/02/05(金) 17:31:10.92ID:74c1z4Av
Rubyガイジは採用しないから安心しろ
2021/02/05(金) 17:37:32.25ID:+3DA/7eT
Rubyガイジって無職ぽいな
2021/02/05(金) 17:51:00.15ID:JqQJ/dMo
こんなのが職場にいたら関わってるうちの何人かはストレスでメンタルやられるだろう
5chがクソレスで荒らされるだけですんでるのなら、まだ軽微な損害と言えるのかもしれない
2021/02/05(金) 18:07:54.98ID:kLBnptrq
>>732
嘘つけ
2021/02/05(金) 18:11:20.36ID:lfh7cUd2
ARM版Macでも一応Windows動くらしいな
まあそのWindowsもARM版だから動いたとしても特に意味は無いけど
2021/02/05(金) 18:24:51.61ID:yFP4HgSW
>>739
仮想マシン使えばいいよ。
性能は落ちるけど高い機種を買えば問題ない
2021/02/05(金) 20:04:46.32ID:xFGF0wOf
板違い
742デフォルトの名無しさん
垢版 |
2021/02/06(土) 17:02:34.55ID:PxbGK26v
すみません、本来はjavascript関連のスレッドで質問すべきですが、あまりレスがないのでこちらで質問させていただきます。
*javascriptで配列500個の変数あり
*その配列はTrue,Falseの値を持つ
*処理は1秒ごとに発生し(SetTimer使ってます)、配列の値を読み書きする。
*配列はobject型でなくboolean型にした方が処理は早くなるか?
よろしくお願いいたします。
2021/02/06(土) 17:14:58.09ID:t1aa4BmW
>>742
人に聞くより自分で比較する方が早いんじゃね
2021/02/06(土) 17:16:07.65ID:6eQmSTNr
JavaScript の質問は、web制作管理板の方へ書き込んでください!

この板のスレは、web制作管理板が荒らされた時に、緊急避難用に立てただけだから
2021/02/06(土) 17:21:11.13ID:eJ93gyKU
自分はいつでもどこでもスレチなRubyの話をし出すくせに他人のJavaScriptの話には絶対イタチがどうとかレスするよねこの人
2021/02/06(土) 17:24:50.67ID:xuEfQm7n
真性のキチガイだから、知能で判断して行動してるのではなくボットみたいに定型的な行動を繰り返すだけの壊れた機械なんだろう
2021/02/06(土) 17:41:25.62ID:gG6zzvvp
>>742

(function(){
let ary = [];
ary.length = 10000000;
for (let i = 0; i < ary.length; ++i) {
ary[i] = false; // null or false
}
let count = 5, sum = 0;
for (let k = 0; k < count; ++k) {
let time0 = Date.now();
for (let i = 0; i < ary.length; ++i) {
ary[i] = (Math.random() > 0.5);
}
for (let i = 0; i < ary.length; ++i) {
ary[i] = (Math.random() > 0.5);
}
let time1 = Date.now();
sum += time1 - time0;
}
alert(sum * 1.0 / count);
})();

【結果】
null: 738.8
false: 594
2021/02/06(土) 18:24:05.39ID:gG6zzvvp
Microsoft Edgeで表示中のウェブページの画像全部ダウンロードできる、凶悪なJavaScriptプログラム配布中。。。
https://github.com/katahiromz/download-all-images.js
試してみてね。
749デフォルトの名無しさん
垢版 |
2021/02/06(土) 18:31:30.57ID:pJAT2BWO
またWindowsか・・
2021/02/06(土) 19:04:02.65ID:do+3t/u8
>>742
True/Falseの値を持つのにbool型じゃなくobject型にしたい理由って?

配列500個というのが1つの配列の要素数が500という意味なら
1回の処理で何度も何度も回さない限り処理速度を気にするようなものじゃないと思うんだが
751742
垢版 |
2021/02/06(土) 19:35:20.76ID:PxbGK26v
>>747

ありがとうございます!

>>750

間違ってたら、すみませんが、
var arr = new Array(1000);
の宣言だとobject型になりますよね。
これをboolean型で宣言する方法が難しかったので、聞いてみました。
2021/02/06(土) 20:05:40.24ID:gs+WDl+6
>>751
要素入ってないから型もなにもないでしょ
何をもってobject型だと判断したの?
2021/02/06(土) 22:30:40.68ID:IIwiGG/p
JavaScriptでは要素の型は宣言できないよ
入れた値によって動的に決まるので考えなくていい
型付き配列といって配列に似たInt8Arrayのようなオブジェクトもある
性能は実装に依るので速くなったり遅くなったりするらしい
754742
垢版 |
2021/02/07(日) 02:10:03.75ID:Z3KLeyYV
レスありがとうございます。
そうだったんですね。
2021/02/07(日) 12:11:36.54ID:3yLZFTJu
Swiftですが、例えばアプリ画面に配列の要素数に対応した値を表示させるとした場合、それぞれの要素数ごとに条件分岐させないとダメなのでしょうか?
2021/02/07(日) 13:48:54.86ID:hwDwbBnD
> 要素数に対応した値
ここが要素数に依存する出力なら条件分岐しなくてもかける
757デフォルトの名無しさん
垢版 |
2021/02/07(日) 15:30:25.27ID:AkpxQPsh
e.lastとか
2021/02/08(月) 03:39:57.39ID:eAvRwRpe
大学生です
遠隔授業のため現在授業の出席確認がGoogleFormで行われております。(urlから番号と名前を入力する形式)

来年以降もおそらくその流れが続きそうなのでそれを自動化したいなと考えています。

今考えているのは以下の流れです。
ラインなどでurl送信→それを感知してurl開き、番号と名前入力、出席送信 

どの言語を学べばよいでしょうか?
軽く調べたところソフトウェアとかになるのでpythonとかかなと思ったのですが、いかがでしょうか?
759(u_・y)
垢版 |
2021/02/08(月) 03:59:21.30ID:tUszODGz
(u_・y)文系乙
2021/02/08(月) 05:07:19.48ID:S+J/M93m
質問に答えられない土方コーダー「文系乙」
2021/02/08(月) 06:33:50.01ID:4iOoIICx
>>758
んだね
python フォーム 自動入力
で検索
2021/02/08(月) 07:32:33.23ID:VfivF5wM
>>758
素直に単位落として留年しとけ
2021/02/08(月) 15:22:53.20ID:TxCBSk9L
>>758
>ラインなどでurl送信

これは誰がどこにURLを送信する話?
2021/02/08(月) 15:25:22.40ID:XA5gECfn
url送信を感知…センサーでもつける気か
765デフォルトの名無しさん
垢版 |
2021/02/08(月) 16:04:37.88ID:mAwBmzXL
IntelliJ で go で開発してるんですが、デバッグ実行しようとすると
コンパイルエラーがあっても以前の成功ビルドが勝手に起動するようになってしまいました。
プロジェクトをリポジトリから clone しなおしてみたり、個人設定(%APPDATA%\JetBrains\IntelliJIdea2020.3)を消して
やり直してみたりしましたが変わりません。
どこかに設定があるのでしょうか?ご存じの方いらっしゃいましたら宜しくお願い致します。

バージョンは IntelliJ IDEA 2020.3.1 Build #IU-203.6682.168, built on December 29, 2020 です。
2021/02/08(月) 18:21:00.01ID:lF6Wq/Jt
>>761
ありがとうございます!出てきたやつをアレンジしていけば比較的楽に作れそうですね

>>763
>>764
学年のラインにurl共有されるのでそこでの新規メッセージの通知が来るのをトリガーとかにできないかなぁと考えてました 
2021/02/08(月) 18:23:46.69ID:0fSH6U0R
NHK Eテレに出てる、Ruby の女神・池澤あやかは、
慶応大学生時代に、そういうツールを作って自動化していた

例えば、Ruby, selenium-webdriver で、yahoo へ自動ログインする。
ひょっとしたら、wget, curl コマンドでも、フォーム送信できるかも

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 10 # default timeout

driver.navigate.to "https://login.yahoo.co.jp/config/login_verify2?.src=ym";

element = driver.find_element(:id => "username")
element.send_key "ユーザー名"

driver.find_element(:id => "btnNext").click # ボタンをクリック

element = driver.find_element(:id => "passwd")
element.send_key "パスワード"

driver.find_element(:id => "btnSubmit").click # ボタンをクリック
768765
垢版 |
2021/02/08(月) 18:36:03.43ID:mAwBmzXL
自己解決しました。勘違いでした。
ウェブのロジックを書いてたんですが、対象のファイルを router に書いてなかったから
プロジェクトの依存関係に含まれてなかったみたい。

go のプロジェクトの概念だと、追って行って繋がらない物はそもそも依存関係に含まれないんですね。
2021/02/08(月) 18:45:39.37ID:L1DIPYtE
IEの時代はRubyも何も入れないでWSHで無双できた
戻りたいか?と言われたら否と答えるが
2021/02/08(月) 19:51:53.33ID:kDZG9/tB
今はWSLがあるからシェルスクリプトで無双できるしね
Windowsはすごく良くなったよ
2021/02/08(月) 21:19:17.75ID:TxCBSk9L
>>766
LINEでメッセージを受信したのを自動で検知するということだと
LINE Botを作って運用するかIFTTTみたいツールで連携する話になるので若干ハードル高め

手動でリンクを開いたり自作のアプリに渡したりするのでよければハードル低いけど
スマホ前提ならPCみたいに自由にはできないので要注意

手動でリンクを開いてブックマークレット(JavaScript)をワンタップして処理するか
iOSならpythonistaにURLスキームで渡すか
素直にOSのAutofill機能を使って手動で数タップするか
2021/02/09(火) 00:37:24.87ID:n4fLaJzx
LINE Botを作るのが最強っぽいけど、ここは健全に、自前アプリを作ってリンクを踏んだときに開くように紐付けようぜ
ブラウザでは開かず、フォームが毎回同じなら回答先アドレスにHTTP POSTかGETでいきなり回答を送る
違うならHTMLを裏でパースしてから同じように送る
gasが便利に使えそうなら使う
そしてほどほど便利な健全アプリができたら100円くらいでみんなに売ろう
広告アプリでもいい
AndroidならKotlin、iPhoneならSwiftで
2021/02/09(火) 01:53:52.16ID:n9olesbz
そのうち講義を受けてないと答えられない質問が
ランダムに5問くらいずつ出されるようになる
2021/02/09(火) 23:46:10.21ID:jGeSSrjn
>>767
ありがとうございます まだ勉強が浅いため学んだ後に参考にさせていただきます

>>771,772
PCでの動作を考えていました linebot ちょっと勉強してみます
今のところまだ全然用語についていけていないので春休み中に頑張って作ってみたいと思います
2021/02/10(水) 16:48:55.15ID:ljUb2Upc
=や式を詰めて書いてましたけど左右に空白を入れた方がいいんですかね?
あと , の後ろの空白一文字も必要ですか?
var=5+ary[3,4]
↓変更
var = 5 + ary[3, 4]
2021/02/10(水) 17:00:28.53ID:DKgAl10f
好み
2021/02/10(水) 18:51:12.65ID:WeU5fM2j
良くあるルールは演算子の間にスペース入れる
カンマの後にスペース入れる(前には入れない)
2021/02/10(水) 18:59:13.40ID:ApG6WxXu
もう全部linterに任せてる
2021/02/10(水) 21:56:59.24ID:kDXEbzyj
どっちでもいい(どうでもいい)ことはlinterに任せるのが正解
趣味ならともかくそんな所に時間を費やする意味はない
どっちでもいいものは、どうせ意見が分かれる
マジどうでもいい
2021/02/10(水) 22:10:17.86ID:UvJeGuAM
イベントソーシングがわからん
メリットで任意の時点のエンティティを復元可能と言ってる奴が多いんだが…
任意の時点に戻すためにはエンティティのクラス定義も過去の全バージョン残さないと出来ないよね?
2021/02/11(木) 00:23:33.91ID:MYnJXR31
>>780
データベースの更新データみたいなものだよ
スナップショットを溜め込むのではなく、更新操作を蓄積する
排他処理によって更新操作の時系列を保証するのは容易
そして必要に応じてロールフォワードすれば任意の時刻の状態を復元できる
整合性を高めたい場合に使う
2021/02/11(木) 00:23:51.33ID:lj0aoxL+
>>775
スペースがほどよく入ったフォーマットの方がいいだろうね
仕様変更やバグ修正を積み重ねるような機会があると、ソースは書きやすいことよりも読みやすいことの方が重要だと痛感する
hoge_piyo-foo_bar(4,300) よりは
hoge_piyo - foo_bar(4, 3000) のほうが視覚→脳がミスなく高速処理しやすい
細則に拘らずオートフォーマッターに任せるべきというのは同感
2021/02/11(木) 00:31:47.91ID:MYnJXR31
>>780
現実生活じゃ普通に行ってるやり方でもある
例えば帳簿ね
入金とか出金といった項目を時系列に付けることで、最終的に資産を矛盾なく把握できるように管理している
2021/02/11(木) 00:55:49.99ID:S0hZMzMn
イベントソーシングは概念はわかるけど実装方法がわからん
時刻=t、ID=idのHogeのエンティティを取得するメソッドのシグネチャはどうなる?

Hoge getHoge(id, t)

Hogeはシステムの保守拡張で型定義が変わっていく
けどこの定義じゃ最新版のHogeしか取れない
任意のtに対してこれを実装したかったら過去のバージョンのHogeもコードに残さないといけない

Object getHoge(id, t)

var h = getHoge(id, t)
if (h is Hoge_V1) ...
if (h is Hoge_V2) ...
...
2021/02/11(木) 01:05:43.36ID:MYnJXR31
>>780
また、デザインパターンでのコマンドパターンにも近しい
コマンドパターンは例えばテキストエディタでのアンドゥリドゥの実現に使われる
記録してある操作を逆再生することで、任意の時点のテキストを復元する機能にお世話にならない人は少なかろう
これなんかは経験からイメージしやすいのではないか?
2021/02/11(木) 01:11:01.49ID:MYnJXR31
>>784
それは無茶苦茶
それはイベントソーシングでない場合なら可能か?
テーブル定義が変わっても、その前後で一貫性のあるシステムにしたい
そんなのと同じ夢を見ている
2021/02/11(木) 01:19:29.62ID:MYnJXR31
>>784
むしろイベントソーシングならばこそ可能になりそうな気もする
オブジェクトのメタ情報に対する更新にアクセスする方法もイベントとして記録出来ればいい
データベースならばDDLの実行もイベントとして記録して、テーブルの構成が変わった時点よりも巻き戻す場合にはDDLも巻き戻す

そんな阿呆なシステムを考えるやつは居ないが
2021/02/11(木) 01:24:17.17ID:PvN170ep
>>784
データベースにカラムを追加する時どうするのか考えればわかるやろ

既存のアプリと互換性のある方法で拡張するか
既存のアプリとは互換性のない方法で拡張するか

後者を選んだら互換性のない過去データはそのまま読めないので
過去データ専用のロジックを残すか過去データを新しい形式に変換するか
2021/02/11(木) 12:59:51.92ID:b5KexMPk
ようするにシステムを任意の時点に戻せるって嘘だったのか?
2021/02/11(木) 14:06:06.77ID:MYnJXR31
>>789
それを嘘と言うのは、鉱石まで戻せないから嘘だと言うのと、程度の差以外どう違うのか分からないな
そういう意味で言うならば、嘘だよ
2021/02/11(木) 14:54:07.70ID:5Dfgfpv3
過去のプログラムがコンテナイメージとかで完全に保全されている前提で
↓みたいにひたすらシステムバージョンアップとイベント再生を繰り返す

foreach e in getAllEvents()
 updateSystem(e.SystemVersion)
 waitSystemReady()
 sendEvent(e)

これで任意の時点にもどせるってことなのかな?
イベントソーシングだけじゃなく完全なIasC化、インフラ構成ファイルの全バージョンの保全まで考えないと任意の時点に復旧はできなそうだね
2021/02/11(木) 15:00:43.14ID:5Dfgfpv3
ここまで頑張ってようやっと過去にもどせたとしても
過去に戻せるメリットが正直、微妙だ
デバッグの再現性?

過去のイベントを分析してマーケティングに活かせる、だとか
そういったメリットなら価値がありそうだけど
、戻せたからっていったい何になるんだろ?

イベントソーシングってほんとに現場で役に立ってるのか?
足かせになってない?
2021/02/11(木) 17:01:22.40ID:PvN170ep
>>789
イベントソーシングを採用してるシステムは
そのシステムを任意の時点に戻せると聞いたならそれが間違ってる

対象はあくまでアプリケーションが管理してる状態(≒データ)で
任意の時点の状態を再現可能というだけ
DBのトランザクションログと同じ

システム構成やコードをデータとして管理して
任意の時点の状態を再現可能するのはバージョン管理システムの役割
Gitみたいなバージョン管理システムもイベントソーシングと共通した考え方
2021/02/11(木) 17:04:31.69ID:MYnJXR31
お前、ちょっと会社の経理部に行って
「帳簿付けなんて無意味じゃないの?役に立ってるの?」
とか言ってこい
2021/02/11(木) 17:15:58.93ID:kEYHl+PL
>>793
その任意の時点の状態の再現ってのが、言われてるよりずっと難しいんじゃないのか?
難しい割にメリットが少ないんじゃないか?
というのが俺の疑問ね

イベントストリームだけ残ってても、イベントを再生するプログラムがなければ、状態を再現なんてできない
過去の全てのプログラムやインフラ構成までバージョン管理しないと、タイムマシンにならない
2021/02/11(木) 17:19:58.14ID:kEYHl+PL
>>794
それは詭弁
データにビジネス上の価値があるのは当たり前
問題にしてるのは、イベントソーシングによるタイムマシン機能が実現の困難さ以上の価値を開発にもたらすかどうか
2021/02/11(木) 17:27:20.06ID:MYnJXR31
>>796
タイムマシン機能なんて副次的な特殊効果に過ぎない
本来の目的は整合性の確保

最初に >>781 で言ってるだろが
2021/02/11(木) 17:40:01.39ID:MYnJXR31
現実でも(帳簿などで)実績のあるやり方を、俺の目的には合わないから無意味な方法じゃないかとか何様よ
2021/02/11(木) 17:56:17.77ID:kEYHl+PL
>>797
ではなぜイベントソーシングを紹介する人は任意の時点に戻せることを決り文句のように言うのだろう?

>>798
さっきも言ったとおり
会計やその他のビジネスで役に立つからと言って開発でも必ず役に立つとは限らない
何事も実装コストと得られるメリット次第だろ?
2021/02/11(木) 18:06:26.39ID:lj0aoxL+
メリットデメリットがあるのは当然
フィットするユースケースもあればそうでない場合もある
今回は中途半端な理解に基づいて
おかしなユースケースと紐付けて的外れな分析をした上で
イベントソーシングはきっとデメリットのほうが多いので微妙と思い込んでるのだから独り善がりが過ぎる
これもう先入観によって導かれた結論ありきの思考回路だから、掲示板で皆が説明しても到底伝わらないやつ
2021/02/11(木) 18:19:22.98ID:UlgLgEFI
そもそもの発端は>>780あたりでメリットデメリット以前の問題としてエンティティを任意の時点に巻き戻す処理の実装が難しすぎるという事だった
これに対する実現性と保守性の高い実装方法に関する回答は今のところ1つも無い
実装できないもののメリットを語っても虚しいだけだ
2021/02/11(木) 18:26:01.93ID:MYnJXR31
>>801
>>785 ………
2021/02/11(木) 18:33:45.62ID:UlgLgEFI
>>802
>>780で言ってるのは
システムのバージョンアップによる型定義の変更等々を超えて任意の時点のエンティティを再現するにはどうすればいいのかという意味合い
同じプロセス内の文字列という安定的な型に対する履歴管理とは別次元の問題だがわからん?
2021/02/11(木) 18:41:56.01ID:MYnJXR31
>>803
>>786 ……
2021/02/11(木) 18:46:31.54ID:lj0aoxL+
エンティティの型定義が変わるようなケースではイベントソーシングは汎用的な処方箋じゃない
それはそれで問題ない
実際に仕様変更があったとしても個別対応はどうとでもなる
アプリ側はいつだってジャーナルを元に再計算できるんだから、バージョンアップ時に普通に新規フィールドを追加するなりすればいい
古い形式のイベントデータを受け取ったら追加フィールドにはデフォルト値をセットするだけ

クラウドとの親和性と更新トランザクションの高スループットといったスケーラビリティを確保しつつ履歴方向への機能性を高くできるのが売り
RDBMSを使った既存のオンプレミスな開発等が楽になることは主眼としてないし、変なところに無理矢理当てはめて開発者たちが苦労を強いられてるなんてのは妄想
2021/02/11(木) 19:03:07.50ID:UlgLgEFI
>>804
つまりできないと?
2021/02/11(木) 19:08:07.56ID:00tB7xH9
できるって書いてるのにできないことにしたいらしいw
2021/02/11(木) 19:10:01.59ID:UlgLgEFI
>>805
定義(プログラム)を変えて再計算では、任意の時点を再現しているとは言えないかな
それは似て非なるものでしょう

更新のスループットとかなら、わかりやすいメリットなんだけどね
任意の時点を再現可能ってのはイベントソーシングを説明するとき、言わないほうがいいんじゃないかと思う
2021/02/11(木) 19:10:32.49ID:UlgLgEFI
>>807
サンプル実装書いてみて、どうぞ
2021/02/11(木) 19:21:36.47ID:MYnJXR31
>>806
>>787 ……

あほらしい
もう相手するのはやめるわ
2021/02/11(木) 19:28:00.09ID:UlgLgEFI
>>810
これがメンテナンスしやすいとは全く思えないんだけど
実装するコストとメリットって見合う?
2021/02/11(木) 19:41:44.39ID:lj0aoxL+
>>808
任意の時点を再現って誰がどういう文脈で言ったんだろう
少なくとも俺はそういうこと言ってないよ
任意の時点の預金残高を再現するといったことは可能だと思う
たとえば操作や出来事を全部イベントで記録したレースゲームを作ったら、自由に停止やシークができるリプレイ機能を用意できる
バージョンアップでブースト操作や亀の甲らを投げる機能が増えたとしても、前バージョンのリプレイが再生できなくなるとは限らない
そういうのを見て「任意の時点を再現する機能がある」という人がいても不思議だとは思わないな
2021/02/11(木) 19:50:48.91ID:UlgLgEFI
>>812
ググって見つけたイベントソーシングについて説明してる記事ではタイムマシン機能をメリットの1つとして挙げてることが少なくない
どの記事もこの点はサラッと流してあまり深く掘り下げてないけど「なのでデバッグも簡単」まで言っちゃってるサイトがたまにある
当たり前だけどプログラムの内部的な構造までその当時まで巻き戻せないとデバッグはできない
なので自分はそういうのを実現するためのフレームワークやデザインパターンでもあるのかなと思って質問に来た
2021/02/11(木) 21:27:20.82ID:0qiJ42Ry
>>813
イベントソーシングはあくまでデータモデリングのパターンなんで、現在の状態は過去の全イベントデータから導出される単純なビューであることが大前提
プログラムのロジックは無関係
2021/02/11(木) 21:29:49.04ID:kEYHl+PL
>>814
でもデバッグって言ってるから
そこ解決したら終わりでいいんだけど
2021/02/11(木) 21:33:43.91ID:PvN170ep
>>814
イベントデータから導出するロジックが
プログラムのロジックだから関係あるよ
2021/02/11(木) 21:36:56.57ID:0qiJ42Ry
>>815
デバッグにも色々あるでしょ
何もプログラムを動かしながら観察することだけがデバッグじゃない
>>816 違う、イベントを発行するのがプログラムのロジックだ
だからイベントの時系列を追っていけば、どこで誤りがあったかはわかる
■ このスレッドは過去ログ倉庫に格納されています