1 名前:デフォルトの名無しさん [2020/11/27(金) 10:07:17.73 ID:d9w49I3I.net] この板はプログラムを作る人のための板です。 あらゆる質問はまず スレ立てるまでもない質問はここで スレにしてください。 【前スレ】 スレ立てるまでもない質問はここで 154匹目 mevius.5ch.net/test/read.cgi/tech/1599472611/l50
705 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 12:01:12.47 ID:k7IgbNVa.net] Javaを新規、レガシー問わず設計開発、インフラ構築、サービスの保守運用監視、なぜか自社システムのお守りまで全部やらされて毎月20万の僕
706 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 12:22:20.92 ID:6NGb1IEj.net] 転職するかフリーになればいいのにその会社にしがみつく意味あんのか フリーなら70万いけるぞそれ
707 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 12:53:20.61 ID:k7IgbNVa.net] コミュ障なので面接で落ちる 社会はコミュ障に厳しい
708 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 13:02:28.58 ID:d8pVBcF1.net] 要件理解して設計に落とせるだけの能力が本当にあるんならコミュ力は十分だろう たぶん話しててわかるほど明らかに頭が悪いんだろうな
709 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 13:06:23.70 ID:mt8Oyq8V.net] メール、チャット、エクセルでなら意思疎通できるけど、対面でしゃべると緊張してジブリのカオナシみたいになる
710 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 13:21:25.60 ID:DSsEiwGU.net] ちゃんと技術力があるやつなら聞かれたことに普通に答えてれば通るよ コミュ力あっても技術系の質問であうあうしてるやつの方が落ちる
711 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 13:27:24.08 ID:SKXvNazb.net] >>710 技術系の質問てどういうの? 試しに3問出してみて
712 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 15:48:31.95 ID:BvAjTIO8.net] 今までこれはすごいと思ったコードはなんですか?
713 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 18:15:04.30 ID:7nEk6Pun.net] >>712 ひどいコードはあってもすごいコードは無いなぁ アプリやシステムとしてすごいとかAPI設計が優れてるとかなら分かるが、そういうのも実装コードがすごいわけじゃないからなぁ
714 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 18:20:33.39 ID:p4yTsJby.net] aタグにnoopenerやらnoreferrerを付与した場合、アクセス先ではアナリティクス等で確認しても流入元が分からなくなるのでしょうか?
715 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 00:01:25.22 ID:ENCoJtr5.net] プログラマーがSEを兼任する悪い慣習をやめれば良いんじゃないかな
716 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 02:29:13.44 ID:iU9rGTIE.net] >>715 単価がプログラマとSEとで違うからってだけで実際は設計とかしなくてもSEで行くことが多いからじゃ?
717 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 06:30:38.18 ID:8ASdjdRY.net] ・検索候補ファイルのリスト ・検索対象フォルダのリスト 変数名ちょうど英単語の名前ありますか?
718 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 06:30:58.02 ID:8ASdjdRY.net] 変数名にあうちょうどいい英単語ありますか?
719 名前:デフォルトの名無しさん [2021/02/04(木) 07:57:26.67 ID:ooZBaTlj.net] searchCandidateList(searchCandidates searchTargetFolderList(searchTargetFolders e.g. for (var searchCandidate in searchCandidates) { ・・・ }
720 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 07:57:47.04 ID:HQJvUn+U.net] センスが問われるとこだけど 俺だったらtargetsとdomain位にしとくかな
721 名前:デフォルトの名無しさん [2021/02/04(木) 08:00:47.20 ID:ooZBaTlj.net] >>720 domainとか、それは違う気がするわ〜
722 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 08:48:00.02 ID:LVz73NE1.net] 名前に普通にFileとFolderは含めてほしい あと名付けは専用スレあるのでスレチ
723 名前:719 [2021/02/04(木) 15:20:22.52 ID:ooZBaTlj.net] >>722 そう思ったけど候補がフォルダーのケースも想定した。
724 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 15:45:39.46 ID:FvfAnmc9.net] なんにせよ誘導入ったのでこれ以上スレチ
725 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 23:28:41.54 ID:nyXXKciT.net] すいません、sha-256が危殆化してないのは総当たりテーブル(いわゆるレインボーテーブル)が巨大すぎて作成できないから?
726 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 07:33:57.94 ID:8GKLmgiB.net] >>725 レインボー攻撃は関係ない レインボー攻撃に使われる原文リストは決まっているので、ハッシュ化したテーブルのサイズ(個数)も他と変わらないから そもそもがレインボー攻撃はソルトとストレッチが漏洩している(もしくは、手抜きされてる)場合でしか実施は難しい
727 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 07:42:52.76 ID:8GKLmgiB.net] >>725 なんか間違ってるかとWikipedia見たら、レインボーテーブルの項目で書いてあったわ MD5の頃はソルトを使わなかったんで有効だった あれ、ストレッチっていらんのかな?
728 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 07:50:07.89 ID:jZlc8jzK.net] >>722 名づけスレはかなり下がってて見つけにくい リンクくらい貼ったらどうか クラス名・変数名に迷ったら書き込むスレ。 https://mevius.5ch.net/test/read.cgi/tech/1494147712
729 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 07:59:02.92 ID:9WD3kXNu.net] すまほを起動するとアンドロイドの画面がでてそこからうごかない 電源OFFにしてもすぐにまた勝手に立ち上がる 電源+音量ボタンを押すとアンドロイド設定画面?みたいなのがでる そこから電源オフをするときることはできる。リカバリーとかも選択可能 すまほとPCはつないだことがなく許可のやつは押してない ルート化するとできるとかなんとか こういう状態の時はスマホからでーたはもうとれないですか?
730 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 08:03:48.18 ID:8GKLmgiB.net] >>725 ハッシュ関数の危殆化はMD5の項目にあるように、衝突耐性に脆弱性が見つかること 原文が分からなくてもそのハッシュ値となるデータを逆に作れてしまうMD5はそのため廃れた
731 名前:デフォルトの名無しさん [2021/02/05(金) 16:22:01.86 ID:Jaou1sNo.net] 全くの素人ですが独学でプログラミングの勉強しようと思ってるんですがmacのほうがいいんですか? 検索するとWindowsも使えるmacがいいという意見のほうが多いです キーボードの配列以外で何かデメリットありますか?
732 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 16:32:17.75 ID:yFP4HgSW.net] >>731 Macはハードウェア、パソコンです。 WindowsはOS、ソフトウェアです。 Windowsはどのパソコンでも使えます。 だからMacでも使えるということです。 「Windowsも」使えるmacというのは結局の所 Windowsも使うということです。 Windowsしか使えないのと、WindowsとmacOSの両方を使えるのであれば 両方使えるほうがいいのは当たり前です。 デメリットはWindowsを別途買わなくてはいけないので値段が高くなる所です。 つまり高くなったとしてもmacOSを使える方がいいかどうかで決めればよいでしょう。
733 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 17:28:17.53 ID:7kBPI4G7.net] 勝又健太の最新版、Web系エンジニアを目指す手順書 KENTA、2021/02/01 Web系エンジニアを目指す人のためのプログラミング学習ロードマップ https://www.youtube.com/watch?v=0TABrlhci5M Ruby on Rails, VSCode 初心者でRubyは、すべての学校で、Mac が絶対。 最近は、仮想マシン上のLinux で、Docker も使うから、 メモリは16〜32GB とか最大まで拡張すること!
734 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 17:29:20.09 ID:k9/SK0Or.net] >>731 勉強する目的が分からないのに何がいいって誰もわからない iOSのアプリを開発するのならMacしか選択肢は無いし新しく出たARMのMacでWindowsは使えない 趣味でしかないのなら自分で調べられない程度だと止めた方がいいし就職が目的ならプログラマ板で聞くべき
735 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 17:31:10.92 ID:74c1z4Av.net] Rubyガイジは採用しないから安心しろ
736 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 17:37:32.25 ID:+3DA/7eT.net] Rubyガイジって無職ぽいな
737 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 17:51:00.15 ID:JqQJ/dMo.net] こんなのが職場にいたら関わってるうちの何人かはストレスでメンタルやられるだろう 5chがクソレスで荒らされるだけですんでるのなら、まだ軽微な損害と言えるのかもしれない
738 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 18:07:54.98 ID:kLBnptrq.net] >>732 嘘つけ
739 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 18:11:20.36 ID:lfh7cUd2.net] ARM版Macでも一応Windows動くらしいな まあそのWindowsもARM版だから動いたとしても特に意味は無いけど
740 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 18:24:51.61 ID:yFP4HgSW.net] >>739 仮想マシン使えばいいよ。 性能は落ちるけど高い機種を買えば問題ない
741 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 20:04:46.32 ID:xFGF0wOf.net] 板違い
742 名前:デフォルトの名無しさん [2021/02/06(土) 17:02:34.55 ID:PxbGK26v.net] すみません、本来はjavascript関連のスレッドで質問すべきですが、あまりレスがないのでこちらで質問させていただきます。 *javascriptで配列500個の変数あり *その配列はTrue,Falseの値を持つ *処理は1秒ごとに発生し(SetTimer使ってます)、配列の値を読み書きする。 *配列はobject型でなくboolean型にした方が処理は早くなるか? よろしくお願いいたします。
743 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:14:58.09 ID:t1aa4BmW.net] >>742 人に聞くより自分で比較する方が早いんじゃね
744 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:16:07.65 ID:6eQmSTNr.net] JavaScript の質問は、web制作管理板の方へ書き込んでください! この板のスレは、web制作管理板が荒らされた時に、緊急避難用に立てただけだから
745 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:21:11.13 ID:eJ93gyKU.net] 自分はいつでもどこでもスレチなRubyの話をし出すくせに他人のJavaScriptの話には絶対イタチがどうとかレスするよねこの人
746 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:24:50.67 ID:xuEfQm7n.net] 真性のキチガイだから、知能で判断して行動してるのではなくボットみたいに定型的な行動を繰り返すだけの壊れた機械なんだろう
747 名前:蟻人間 mailto:sage [2021/02/06(土) 17:41:25.62 ID:gG6zzvvp.net] >>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
748 名前:蟻人間 mailto:sage [2021/02/06(土) 18:24:05.39 ID:gG6zzvvp.net] Microsoft Edgeで表示中のウェブページの画像全部ダウンロードできる、凶悪なJavaScriptプログラム配布中。。。 https://github.com/katahiromz/download-all-images.js 試してみてね。
749 名前:デフォルトの名無しさん [2021/02/06(土) 18:31:30.57 ID:pJAT2BWO.net] またWindowsか・・
750 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 19:04:02.65 ID:do+3t/u8.net] >>742 True/Falseの値を持つのにbool型じゃなくobject型にしたい理由って? 配列500個というのが1つの配列の要素数が500という意味なら 1回の処理で何度も何度も回さない限り処理速度を気にするようなものじゃないと思うんだが
751 名前:742 mailto:sage [2021/02/06(土) 19:35:20.76 ID:PxbGK26v.net] >>747 ありがとうございます! >>750 間違ってたら、すみませんが、 var arr = new Array(1000); の宣言だとobject型になりますよね。 これをboolean型で宣言する方法が難しかったので、聞いてみました。
752 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 20:05:40.24 ID:gs+WDl+6.net] >>751 要素入ってないから型もなにもないでしょ 何をもってobject型だと判断したの?
753 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 22:30:40.68 ID:IIwiGG/p.net] JavaScriptでは要素の型は宣言できないよ 入れた値によって動的に決まるので考えなくていい 型付き配列といって配列に似たInt8Arrayのようなオブジェクトもある 性能は実装に依るので速くなったり遅くなったりするらしい
754 名前:742 mailto:sage [2021/02/07(日) 02:10:03.75 ID:Z3KLeyYV.net] レスありがとうございます。 そうだったんですね。
755 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 12:11:36.54 ID:3yLZFTJu.net] Swiftですが、例えばアプリ画面に配列の要素数に対応した値を表示させるとした場合、それぞれの要素数ごとに条件分岐させないとダメなのでしょうか?
756 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 13:48:54.86 ID:hwDwbBnD.net] > 要素数に対応した値 ここが要素数に依存する出力なら条件分岐しなくてもかける
757 名前:デフォルトの名無しさん [2021/02/07(日) 15:30:25.27 ID:AkpxQPsh.net] e.lastとか
758 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 03:39:57.39 ID:eAvRwRpe.net] 大学生です 遠隔授業のため現在授業の出席確認がGoogleFormで行われております。(urlから番号と名前を入力する形式) 来年以降もおそらくその流れが続きそうなのでそれを自動化したいなと考えています。 今考えているのは以下の流れです。 ラインなどでurl送信→それを感知してurl開き、番号と名前入力、出席送信 どの言語を学べばよいでしょうか? 軽く調べたところソフトウェアとかになるのでpythonとかかなと思ったのですが、いかがでしょうか?
759 名前:(u_・y) mailto:sage [2021/02/08(月) 03:59:21.30 ID:tUszODGz.net] (u_・y)文系乙
760 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 05:07:19.48 ID:S+J/M93m.net] 質問に答えられない土方コーダー「文系乙」
761 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 06:33:50.01 ID:4iOoIICx.net] >>758 んだね python フォーム 自動入力 で検索
762 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 07:32:33.23 ID:VfivF5wM.net] >>758 素直に単位落として留年しとけ
763 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 15:22:53.20 ID:TxCBSk9L.net] >>758 >ラインなどでurl送信 これは誰がどこにURLを送信する話?
764 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 15:25:22.40 ID:XA5gECfn.net] url送信を感知…センサーでもつける気か
765 名前:デフォルトの名無しさん [2021/02/08(月) 16:04:37.88 ID:mAwBmzXL.net] IntelliJ で go で開発してるんですが、デバッグ実行しようとすると コンパイルエラーがあっても以前の成功ビルドが勝手に起動するようになってしまいました。 プロジェクトをリポジトリから clone しなおしてみたり、個人設定(%APPDATA%\JetBrains\IntelliJIdea2020.3)を消して やり直してみたりしましたが変わりません。 どこかに設定があるのでしょうか?ご存じの方いらっしゃいましたら宜しくお願い致します。 バージョンは IntelliJ IDEA 2020.3.1 Build #IU-203.6682.168, built on December 29, 2020 です。
766 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:21:00.01 ID:lF6Wq/Jt.net] >>761 ありがとうございます!出てきたやつをアレンジしていけば比較的楽に作れそうですね >>763 >>764 学年のラインにurl共有されるのでそこでの新規メッセージの通知が来るのをトリガーとかにできないかなぁと考えてました
767 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:23:46.69 ID:0fSH6U0R.net] 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 # ボタンをクリック
768 名前:765 mailto:sage [2021/02/08(月) 18:36:03.43 ID:mAwBmzXL.net] 自己解決しました。勘違いでした。 ウェブのロジックを書いてたんですが、対象のファイルを router に書いてなかったから プロジェクトの依存関係に含まれてなかったみたい。 go のプロジェクトの概念だと、追って行って繋がらない物はそもそも依存関係に含まれないんですね。
769 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:45:39.37 ID:L1DIPYtE.net] IEの時代はRubyも何も入れないでWSHで無双できた 戻りたいか?と言われたら否と答えるが
770 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 19:51:53.33 ID:kDZG9/tB.net] 今はWSLがあるからシェルスクリプトで無双できるしね Windowsはすごく良くなったよ
771 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:19:17.75 ID:TxCBSk9L.net] >>766 LINEでメッセージを受信したのを自動で検知するということだと LINE Botを作って運用するかIFTTTみたいツールで連携する話になるので若干ハードル高め 手動でリンクを開いたり自作のアプリに渡したりするのでよければハードル低いけど スマホ前提ならPCみたいに自由にはできないので要注意 手動でリンクを開いてブックマークレット(JavaScript)をワンタップして処理するか iOSならpythonistaにURLスキームで渡すか 素直にOSのAutofill機能を使って手動で数タップするか
772 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 00:37:24.87 ID:n4fLaJzx.net] LINE Botを作るのが最強っぽいけど、ここは健全に、自前アプリを作ってリンクを踏んだときに開くように紐付けようぜ ブラウザでは開かず、フォームが毎回同じなら回答先アドレスにHTTP POSTかGETでいきなり回答を送る 違うならHTMLを裏でパースしてから同じように送る gasが便利に使えそうなら使う そしてほどほど便利な健全アプリができたら100円くらいでみんなに売ろう 広告アプリでもいい AndroidならKotlin、iPhoneならSwiftで
773 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 01:53:52.16 ID:n9olesbz.net] そのうち講義を受けてないと答えられない質問が ランダムに5問くらいずつ出されるようになる
774 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 23:46:10.21 ID:jGeSSrjn.net] >>767 ありがとうございます まだ勉強が浅いため学んだ後に参考にさせていただきます >>771 ,772 PCでの動作を考えていました linebot ちょっと勉強してみます 今のところまだ全然用語についていけていないので春休み中に頑張って作ってみたいと思います
775 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 16:48:55.15 ID:ljUb2Upc.net] =や式を詰めて書いてましたけど左右に空白を入れた方がいいんですかね? あと , の後ろの空白一文字も必要ですか? var=5+ary[3,4] ↓変更 var = 5 + ary[3, 4]
776 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 17:00:28.53 ID:DKgAl10f.net] 好み
777 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:51:12.65 ID:WeU5fM2j.net] 良くあるルールは演算子の間にスペース入れる カンマの後にスペース入れる(前には入れない)
778 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:59:13.40 ID:ApG6WxXu.net] もう全部linterに任せてる
779 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:56:59.24 ID:kDXEbzyj.net] どっちでもいい(どうでもいい)ことはlinterに任せるのが正解 趣味ならともかくそんな所に時間を費やする意味はない どっちでもいいものは、どうせ意見が分かれる マジどうでもいい
780 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:10:17.86 ID:UvJeGuAM.net] イベントソーシングがわからん メリットで任意の時点のエンティティを復元可能と言ってる奴が多いんだが… 任意の時点に戻すためにはエンティティのクラス定義も過去の全バージョン残さないと出来ないよね?
781 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 00:23:33.91 ID:MYnJXR31.net] >>780 データベースの更新データみたいなものだよ スナップショットを溜め込むのではなく、更新操作を蓄積する 排他処理によって更新操作の時系列を保証するのは容易 そして必要に応じてロールフォワードすれば任意の時刻の状態を復元できる 整合性を高めたい場合に使う
782 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 00:23:51.33 ID:lj0aoxL+.net] >>775 スペースがほどよく入ったフォーマットの方がいいだろうね 仕様変更やバグ修正を積み重ねるような機会があると、ソースは書きやすいことよりも読みやすいことの方が重要だと痛感する hoge_piyo-foo_bar(4,300) よりは hoge_piyo - foo_bar(4, 3000) のほうが視覚→脳がミスなく高速処理しやすい 細則に拘らずオートフォーマッターに任せるべきというのは同感
783 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 00:31:47.91 ID:MYnJXR31.net] >>780 現実生活じゃ普通に行ってるやり方でもある 例えば帳簿ね 入金とか出金といった項目を時系列に付けることで、最終的に資産を矛盾なく把握できるように管理している
784 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 00:55:49.99 ID:S0hZMzMn.net] イベントソーシングは概念はわかるけど実装方法がわからん 時刻=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) ... ...
785 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 01:05:43.36 ID:MYnJXR31.net] >>780 また、デザインパターンでのコマンドパターンにも近しい コマンドパターンは例えばテキストエディタでのアンドゥリドゥの実現に使われる 記録してある操作を逆再生することで、任意の時点のテキストを復元する機能にお世話にならない人は少なかろう これなんかは経験からイメージしやすいのではないか?
786 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 01:11:01.49 ID:MYnJXR31.net] >>784 それは無茶苦茶 それはイベントソーシングでない場合なら可能か? テーブル定義が変わっても、その前後で一貫性のあるシステムにしたい そんなのと同じ夢を見ている
787 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 01:19:29.62 ID:MYnJXR31.net] >>784 むしろイベントソーシングならばこそ可能になりそうな気もする オブジェクトのメタ情報に対する更新にアクセスする方法もイベントとして記録出来ればいい データベースならばDDLの実行もイベントとして記録して、テーブルの構成が変わった時点よりも巻き戻す場合にはDDLも巻き戻す そんな阿呆なシステムを考えるやつは居ないが
788 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 01:24:17.17 ID:PvN170ep.net] >>784 データベースにカラムを追加する時どうするのか考えればわかるやろ 既存のアプリと互換性のある方法で拡張するか 既存のアプリとは互換性のない方法で拡張するか 後者を選んだら互換性のない過去データはそのまま読めないので 過去データ専用のロジックを残すか過去データを新しい形式に変換するか
789 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 12:59:51.92 ID:b5KexMPk.net] ようするにシステムを任意の時点に戻せるって嘘だったのか?
790 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 14:06:06.77 ID:MYnJXR31.net] >>789 それを嘘と言うのは、鉱石まで戻せないから嘘だと言うのと、程度の差以外どう違うのか分からないな そういう意味で言うならば、嘘だよ
791 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 14:54:07.70 ID:5Dfgfpv3.net] 過去のプログラムがコンテナイメージとかで完全に保全されている前提で ↓みたいにひたすらシステムバージョンアップとイベント再生を繰り返す foreach e in getAllEvents() updateSystem(e.SystemVersion) waitSystemReady() sendEvent(e) これで任意の時点にもどせるってことなのかな? イベントソーシングだけじゃなく完全なIasC化、インフラ構成ファイルの全バージョンの保全まで考えないと任意の時点に復旧はできなそうだね
792 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 15:00:43.14 ID:5Dfgfpv3.net] ここまで頑張ってようやっと過去にもどせたとしても 過去に戻せるメリットが正直、微妙だ デバッグの再現性? 過去のイベントを分析してマーケティングに活かせる、だとか そういったメリットなら価値がありそうだけど 、戻せたからっていったい何になるんだろ? イベントソーシングってほんとに現場で役に立ってるのか? 足かせになってない?
793 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:01:22.40 ID:PvN170ep.net] >>789 イベントソーシングを採用してるシステムは そのシステムを任意の時点に戻せると聞いたならそれが間違ってる 対象はあくまでアプリケーションが管理してる状態(≒データ)で 任意の時点の状態を再現可能というだけ DBのトランザクションログと同じ システム構成やコードをデータとして管理して 任意の時点の状態を再現可能するのはバージョン管理システムの役割 Gitみたいなバージョン管理システムもイベントソーシングと共通した考え方
794 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:04:31.69 ID:MYnJXR31.net] お前、ちょっと会社の経理部に行って 「帳簿付けなんて無意味じゃないの?役に立ってるの?」 とか言ってこい
795 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:15:58.93 ID:kEYHl+PL.net] >>793 その任意の時点の状態の再現ってのが、言われてるよりずっと難しいんじゃないのか? 難しい割にメリットが少ないんじゃないか? というのが俺の疑問ね イベントストリームだけ残ってても、イベントを再生するプログラムがなければ、状態を再現なんてできない 過去の全てのプログラムやインフラ構成までバージョン管理しないと、タイムマシンにならない
796 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:19:58.14 ID:kEYHl+PL.net] >>794 それは詭弁 データにビジネス上の価値があるのは当たり前 問題にしてるのは、イベントソーシングによるタイムマシン機能が実現の困難さ以上の価値を開発にもたらすかどうか
797 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:27:20.06 ID:MYnJXR31.net] >>796 タイムマシン機能なんて副次的な特殊効果に過ぎない 本来の目的は整合性の確保 最初に >>781 で言ってるだろが
798 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:40:01.39 ID:MYnJXR31.net] 現実でも(帳簿などで)実績のあるやり方を、俺の目的には合わないから無意味な方法じゃないかとか何様よ
799 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:56:17.77 ID:kEYHl+PL.net] >>797 ではなぜイベントソーシングを紹介する人は任意の時点に戻せることを決り文句のように言うのだろう? >>798 さっきも言ったとおり 会計やその他のビジネスで役に立つからと言って開発でも必ず役に立つとは限らない 何事も実装コストと得られるメリット次第だろ?
800 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:06:26.39 ID:lj0aoxL+.net] メリットデメリットがあるのは当然 フィットするユースケースもあればそうでない場合もある 今回は中途半端な理解に基づいて おかしなユースケースと紐付けて的外れな分析をした上で イベントソーシングはきっとデメリットのほうが多いので微妙と思い込んでるのだから独り善がりが過ぎる これもう先入観によって導かれた結論ありきの思考回路だから、掲示板で皆が説明しても到底伝わらないやつ
801 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:19:22.98 ID:UlgLgEFI.net] そもそもの発端は>>780 あたりでメリットデメリット以前の問題としてエンティティを任意の時点に巻き戻す処理の実装が難しすぎるという事だった これに対する実現性と保守性の高い実装方法に関する回答は今のところ1つも無い 実装できないもののメリットを語っても虚しいだけだ
802 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:26:01.93 ID:MYnJXR31.net] >>801 >>785 ………
803 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:33:45.62 ID:UlgLgEFI.net] >>802 >>780 で言ってるのは システムのバージョンアップによる型定義の変更等々を超えて任意の時点のエンティティを再現するにはどうすればいいのかという意味合い 同じプロセス内の文字列という安定的な型に対する履歴管理とは別次元の問題だがわからん?
804 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:41:56.01 ID:MYnJXR31.net] >>803 >>786 ……
805 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:46:31.54 ID:lj0aoxL+.net] エンティティの型定義が変わるようなケースではイベントソーシングは汎用的な処方箋じゃない それはそれで問題ない 実際に仕様変更があったとしても個別対応はどうとでもなる アプリ側はいつだってジャーナルを元に再計算できるんだから、バージョンアップ時に普通に新規フィールドを追加するなりすればいい 古い形式のイベントデータを受け取ったら追加フィールドにはデフォルト値をセットするだけ クラウドとの親和性と更新トランザクションの高スループットといったスケーラビリティを確保しつつ履歴方向への機能性を高くできるのが売り RDBMSを使った既存のオンプレミスな開発等が楽になることは主眼としてないし、変なところに無理矢理当てはめて開発者たちが苦労を強いられてるなんてのは妄想