問題タブ [system-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4842 参照

c# - これらの動作を容易にする設計パターン (監査証跡の動作と元に戻す)

これらの動作を示す必要があるシステムに取り組んでいます。

  1. 監査証跡
  2. 元に戻す / 特定のバージョンに戻す (このようなアクション自体が監査ログに記録されます)

ここで少し似た質問を見ましたが、私がやろうとしていることの一部しか扱っていません。さらに、オブジェクトのライフサイクル全体 (つまり CRUD) をキャプチャしたいと考えています。

これを実装する方法は次のとおりです。

  1. オブザーバー パターンに基づく ChangeManager クラスを用意する
  2. コマンド パターンの変更を「まとめる」ベース オブジェクトからオブジェクトを派生させる
  3. いずれかの CRUD イベントでコマンド オブジェクトを使用して ChangeManager に通知する

注: 「変更」コマンドは次のもので構成されます。

  • フィールドの変更を詳述する 2 タプルの (順序付けられた) コレクション (prev、new)
  • 変更を行ったユーザーの ID
  • 変更のタイムスタンプ

これは単なる「思いつき」であり、私が取ろうと考えているアプローチには穴があるかもしれません。以前にこの種の動作を実装したことがある人からの助けと、一般的なアドバイス、長所、および上で概説したアプローチの短所-または、より良い/代替アプローチかもしれません。正しい方向に私を向けるためのスニペットまたは2つも大歓迎です!.

実装言語として C# を使用します。

0 投票する
2 に答える
659 参照

java - プラグインベースのJavaアプリケーションを設計する

プラグインベースのアプリケーションを作成しようとしています。つまり、基本的なフレームワークに加えて、プラグインスタイルで他の機能を追加する必要があります。

このようなシステムの大きな問題は、実行時に新しいプラグインをロードする方法だと思います。新しいプラグインがインストールされたときにプロジェクト全体を再コンパイルしたくありません。Eclipseと同様に、プラグインを新しくインストールした後、ユーザーはプラグインを再起動するだけで済みます。したがって、それについての私の最初のアイデアは、実行時にクラスをロードするためにJavaリフレクションを使用することです。いくつかのプラグイン構成ファイルがある可能性があり、システムはそれらを読み取り、リフレクションを使用してプラグインクラスをロードします。制御の反転が私の要求にぴったり合っているので、Springフレームワークも使用できるかもしれません。

私が調査しているもう1つのアイデアは、ejbコンテナーを使用することです。プラグインがejbsの場合、それらをjarにパックし、ejbコンテナーにデプロイしてから、jndiを使用してプラグインにアクセスできます。ただし、プラグインがejbsの場合にのみ機能します。

とにかく、私はシステム設計の新人です。だから私はこのトピックを投稿し、あなたの意見を聞きたいです。ところで。推奨したいシステム設計についての良い本はありますか?

よろしくお願いします!

0 投票する
0 に答える
527 参照

firmware - Atmel UC3 プラットフォームでのファームウェア開発用のシステム設計ドキュメント テンプレート

Atmel UC3 プラットフォーム用のファームウェア開発プロジェクトのシステム設計ドキュメントのテンプレートを入手できるサイトを持っている、または知っている人はいますか?

0 投票する
1 に答える
406 参照

wpf - MVVMアプリケーションの設計

私はここで私のアプリケーションの設計に非常に懐疑的です.....

これが私のアプリケーションの図です

私のアプリケーションの図

これは正しいですか ??何かを変更する必要があります...

ダイアグラムを詳しく説明します....:

共通ライブラリ:クラスErrorCodes、Utility Classesなどが含まれています
ロガー:ロギングフレームワーク
例外処理:例外を処理するためのフレームワーク

ビュー:含まれています:UserControls、Windows、Popupsなどのビューのすべての異なるXAML

ViewModel:さまざまなビューのViewModelが含まれています。

モデル:含まれています...ビジネス層、データアクセス層などのさまざまな層を保持します

エンティティレイヤー:従業員、会社などのエンティティオブジェクトが含まれています。

ファイルボックス:ファイル/データベースからの読み取り/書き込みを指定します...。

0 投票する
4 に答える
8658 参照

c++ - Lua vsEmbeddedLispおよびその他の潜在的な候補。セットベースのデータ処理用

現在の選択: lua-jit。印象的なベンチマーク、私は構文に慣れています。高性能のABIを作成するには、C++をどのように構成するかを慎重に検討する必要があります。

その他の興味のある質問

  1. 埋め込み可能な言語としてのGambit-CとGuile
  2. Luaパフォーマンスのヒント(コレクターを無効にして実行するオプションがあり、処理実行の最後にコレクターを呼び出すことは常にオプションです)。

バックグラウンド

私はリアルタイムの大容量(複合)イベント処理システムに取り組んでいます。ソースでのイベント構造のスキーマ、ストレージ形式、特定のドメイン固有の構造、内部イベントの発生(汎用処理を構造化および駆動するため)、および常に発生​​する特定の処理ステップのエンコードを表すDSLがあります。

DSLはSQLに非常によく似ています。実際、私はイベントの長期保存にberkeley db(sqlite3インターフェイス経由)を使用しています。ここで重要なのは、イベントの処理がSQLのようにセットベースで行われることです。しかし、DSLに汎用処理ロジックを追加するのではなく、luaまたはlispを埋め込んでこれを処理する必要があるという結論に達しました。

処理コアはboost::asioを中心に構築されており、マルチスレッドであり、rpcはプロトコルバッファを介して実行され、イベントはプロトコルバッファIOライブラリを使用してエンコードされます。つまり、イベントはプロトコルバッファオブジェクトを使用して構造化されておらず、同じエンコーディングを使用します。 /decodingライブラリ。データベースエンジンがメモリセットに格納する方法と非常によく似た、行を含むデータセットオブジェクトを作成します。DSLの処理ステップは最初に処理され、次に汎用処理ロジックに提示されます。

使用する埋め込み可能なスクリプト環境に関係なく、処理コアの各スレッドには、おそらく独自の埋め込み言語環境が必要です(つまり、少なくともマルチスレッド作業を行う場合は、luaがそれを必要とします)。

質問)

現時点での選択は、lispECLとluaのどちらかです。パフォーマンスとスループットが強力な要件であることを念頭に置いて、これはメモリ割り当てを最小限に抑えることが非常に望ましいことを意味します。

  1. もしあなたが私の立場にあったら、あなたはどの言語を選びますか?

  2. 検討すべき代替案はありますか(埋め込み可能な実装がない言語を提案しないでください)。Javascript v8はおそらく?

  3. lispはドメインによりよく適合しますか?luaとlispは、提供するものに関してそれほど異なるとは思いません。私を呼んでください:D

  4. 私が考えるべき他のプロパティ(以下のような)はありますか?

  5. あらゆる形式の組み込みデータベースIO(コンテキストについては以下のDSLの例を参照)は、スクリプト言語の呼び出しを桁違いに小さくし、どちらを選択しても、全体的なスループットに大きなオーバーヘッドは追加されないと断言します。私は正しい方向に進んでいますか?:D

必要なプロパティ

  1. データセットをlispリストまたはluaテーブルにマッピングしたいのですが、冗長なデータコピーを最小限に抑えたいと思います。たとえば、あるデータセットから別のデータセットに行を追加する場合、両方のテーブルの形状が同じである場合は、参照セマンティクスを使用する必要があります。

  2. lua / lisp呼び出しを行っている間、入力として渡されるデータセットが変更されないことを保証できます。luaとlispに、可能であればデータセットも変更しないように強制したいと思います。

  3. 埋め込まれたコールエンドのデータセットを破棄した後、作成された参照をコピーに置き換える必要があります(私は推測します)。

DSLの例

私はあなたの視聴の喜びのためにDSLを添付しますので、あなたは私が何を達成しようとしているのかを知ることができます。注:DSLは汎用処理を示していません。

このプロジェクトは博士課程の研究プロジェクトの構成要素であり、自由ソフトウェアです。このプロジェクトで私と一緒に仕事をする(または貢献する)ことに興味がある場合は、コメントを残してください:D

0 投票する
1 に答える
2846 参照

oop - 駐車場、OOPデザイン-カスタムデザイン

私は駐車場の例に取り組んでおり、設計時にいくつかの仮定をしました。

アイテム/オブジェクトに属性を割り当てる際にいくつか質問があります。

1)parkingSpaceがシステムによって割り当てられていない場合、つまりユーザーがLotにいる場合は、適切な場所(車/自転車/トラック/障害者)を見つけて、自分の車を駐車します。

ParkingSpaceオブジェクトは必要ないと思いますが、代わりに、category_of_parking_spaceごとにno_of_free_placesのカウントを保持できます。

駐車スペースが大きいので、3つの変数を維持するだけです。

  • no_of_free_slots_Car
  • no_of_free_slots_Bike
  • no_free_slots_Truck
  • no_free_slots_Handicapped

車両が到着すると、上記の値の1つを減らし(つまり、利用可能なXの場所のうち、ユーザーが1つを選択してそこに駐車します)、車両が出ると、対応する値を増やします。(要するに、駐車場は誰にも割り当てられておらず、車両はそこにある適格な場所と公園の1つに行くだけです)

2)グローバルパーキングメーターが1つあると仮定します。
-> start_time / end_timeはVehicleの属性である必要がありますか?
または
->Vehicle_id、start_time、end_timeはParkingMeterの一部です。

3)parkingSpaceオブジェクトの必要性を想定して、4_wheeler、2_wheeler、障害者は列挙型、または完全に別のクラスである必要があります。
その列挙型の場合、findEmptySlot(parkingSpace_type);を使用できます。
それらが完全に別個のクラスであり、ParkingLotにメソッドfindEmptySlot()がある場合。
適切なスロットを取得するにはどうすればよいですか?

パーキングメーターは、車両の開始時刻と終了時刻を設定する責任がありますか?

複数の金額がある場合、1時間-20ドル、2時間-30ドル、3時間-40ドル、5時間-50ドル
は、ParkingMeterクラスのこれらの部分を使用するか、別のクラス「ParkingPrice」に含めるのが適切です。

0 投票する
1 に答える
462 参照

architecture - 在庫アプリケーションの設計に関するガイダンスが必要

現在、私は在庫管理アプリケーションに取り組んでいます (後でこれは会計アプリケーションと統合することもできます)。次の重要なシステム設計関連の決定の 1 つを決定する際にあなたの助けが必要です:

要件:

  1. 工場には複数の会計事務所(会社)があり、それら複数の会計事務所から商品が出入りしますが、物理的には一つの工場で消費され、すべての生産は単一の製造単位として管理されています。物理的な在庫または会計事務所に基づく生産品目の分離はありません。しかし、再び販売された商品は別の会計事務所からのものです。
  2. 在庫データ、販売と購入は会社ごとに提供されます
  3. 生産関連の記録は別に管理されていません
  4. 全社(会計事務所)の在庫・生産データを一つのアプリケーションで一元管理し、確実に在庫・在庫を把握

では、具体的に次のことを提案してほしい。

  1. すべての会社ごとのデータを互いに異なる個別のデータベースとして保持するかどうか、あなたは何を提案しますか
  2. または、会社の個別の識別子を使用して単一のデータベースに保存し、個別のレポートで同時にすべてのデータにアクセスできる単一のアプリケーションを使用します。ユーザーごとのアクセスを設定できますか?

あなたは何を提案し、正しいアプローチは何ですか?

0 投票する
1 に答える
5567 参照

uml - ユーザー入力をシーケンス図で表す

ユーザー入力 (たとえば、新しいアカウントを作成するために必要な情報) をシーケンス図で表すにはどうすればよいですか?

0 投票する
1 に答える
88 参照

software-design - 1つの異なる狭い要件仕様から異なるソフトウェア設計を作成する

私は友人のコースワークを手伝っています。基本的に、プロジェクトの要件は、楽器を販売する楽器店をコンピュータ化するためのソフトウェアシステムを作成することです。本質は、いくつかのレポートと売上獲得コンポーネントを備えたCRUDシステムにすぎません。ただし、開発する設計仕様を選択する3つの異なる設計仕様を文書化する必要があります。彼は彼が進めたいデザインを持っていますが、私たちは2つの代替デザインを作成するのに苦労しています。

私の難しさは、要件の範囲が非常に狭いため、単なる重複を作成しないように十分に変更することが課題であるということです。

アドバイスをいただければ幸いです。

0 投票する
2 に答える
193 参照

architecture - アーキテクチャ: ノードの耐障害性を備えた分散データ処理

頻繁に繰り返される処理が必要なデータ/ジョブが多数 (数万) あります。処理されるジョブは、SQL Server 2012 (Web Ed) データベースに保存され、新しいジョブで頻繁に更新されたり、ジョブが削除される可能性があります。

サンプル:

私の目標は、パフォーマンス上の理由と、ノードに障害が発生した場合でもジョブが確実に処理されるように、ジョブ処理を複数のノードに分散することです。

2 つの考慮事項:

  • すべてのジョブが最終的に何らかのノードによって実行されるようにする必要があります。また、ジョブがデータベース駆動型キューに追加されると、これが継続的に実行されるようにする必要があります。
  • すべてのノードに何らかの作業をさせ、単一のノードがほとんどの作業をフェッチしないようにしたいので、ある種のラウンドロビンを実装することは理にかなっているようです。

システム全体がノードの障害に耐えられる必要があるため、何が起きていて何が起きていないのかわからないため、作業をノードに実際に「割り当てる」ことはできません。これを回避するための最初の考えは、各ノードがデータベースから 1 つ以上のジョブを「フェッチ」し、それらを処理してから、データを SQL データベースに返すことでした。ただし、次のような問題があります。

  • ノードは、他のノードがすでに処理しているものを認識する必要があるため、ジョブが誤って 2 回処理されることはありません。これは、ジョブを処理中としてマークする必要があることを意味します。
  • これらのジョブの多くは非常に小さいですが、非常に頻繁に (おそらく 10 ~ 30 秒ごとに) 実行する必要があります。誰がジョブを処理しているかを絶えず更新し、ジョブを解放してから再度処理することは、データベースの大きなオーバーヘッドのように思えます。
  • ノードが処理中に停止した場合はどうなりますか? これから回復する方法はありますか?

この問題を解決する最も効率的な方法は何ですか? ありがとうございました!