問題タブ [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.
c# - 元に戻す機能を実装するには?
私のアプリケーションでは、ユーザーに小さな元に戻す機能を提供したいと考えています。ユーザーが元に戻すことができるアクションは多くありません。特にアクションは次のとおりです。
- オブジェクトにメモを追加する
- オブジェクトに色を付ける
- 文字列でオブジェクトにタグを付ける
今、私はこれを実装する方法を考えました。最初に考えたのは、ユーザーが実行できる 3 つの異なるアクションの抽象基本クラスであるアクション クラスです。ユーザーがこれらのアクションを実行するたびに、この抽象 Action クラスのサブクラスの新しい適切なインスタンスが作成され、すべてのアクションを含むリストに挿入されます。
ユーザーが何かを元に戻したいときはいつでも、リストがユーザーに表示され、ユーザーは元に戻すアクションを選択できます。
今、私はそのようなアクションオブジェクトに何を格納する必要があるかを考えていました:
- アクション前のオブジェクトの状態
- 実行された実際のアクション (例: オブジェクトのメモに追加された文字列)
これで十分かどうかはわかりません。時系列順のようなものも考えましたが、リストを時系列的に正しく維持できるので、これは必要なはずです。
他に考慮すべきことはありますか?
embedded - 組み込みシステム設計: リソースの分割
セルラー接続 (高速ダウンロード/アップロードおよびテレフォニー用の HSDPA/HSUPA) と負荷の高いマルチメディア アプリケーション (高解像度のストリーミング ビデオの再生、セルラー接続を介したストリーミングなど) の両方をサポートするデバイスを設計したいと考えています。 .
検討中のハードウェア プラットフォームには OMAP 4430 があり (少なくとも議論のために)、それに接続されたセルラー モデムと素敵なモールディング ディスプレイがあるとしましょう。組み込み Linux を実行します。
システムのソフトウェア リソースとハードウェア リソースを分割して、どちらの要件もリソース不足にならないようにする方法がわかりません。また、携帯電話のスループットを維持しながら、ストリーミング再生の品質の問題を回避するにはどうすればよいですか?
後でこのデバイスにさらにアプリケーションを追加する場合、この要件を念頭に置いてこのシステムをどのように設計しますか?
ありがとう、-Mno
database-design - データ構造とシステム設計に関する質問
「これこれのシステムを設計してください」とか「これこれのデータ構造はなんですか?」と聞かれたら、リレーショナルデータベースのシステム設計でいいのでしょうか?テーブル、エンティティ、それらの間の関係、外部キーと主キーなどを完成させますか? これは、データベース システムを使用した経験が豊富で、データ構造を使用したプロジェクトの経験がない場合でも問題ありませんか? 私が知っているのは、リンク リスト、バイナリ ツリー、バイナリ サーチ ツリー、スタック、およびキューだけです。次のインターン面接に向けて緊張しています。何かアドバイス?
linux - バーコードを読み取り、HTTP経由でphpスクリプトに送信するデーモン
完全にヘッドレスで実行され、ユーザーの操作なしで実行されるプロトタイプを作成することを楽しみにしています。システムはバーコードリーダーを起動し、インターネット経由でfile.php?code =var...としてphpに送信できる必要があります。
これを行う最も簡単な方法はどれですか?
私は考えています:
- windows-コンソールアプリ、ある種のping ...
- linux-console app、ある種のwgetまたはそのようなもの
誰かがより良いアプローチを持っていますか?
システムは完全に自律的で、プラグインし、バーコードをスキャンし、コードを送信し、繰り返す必要があります...
php - ローカルプログラミングコンテストシステム用のクライアントサーバーアプリケーションの構築
サーバーがユーザーのコードを受け取り、それをコンパイルして結果をユーザーに返すことができるクライアントサーバーシステムを構築することを考えています。このシステムは、私の大学でのローカルオンラインプログラミングコンテストに使用されます。
したがって、基本的に、ユーザーはいくつかのコード(PHP / C ++ / Javaなど)を記述し、フロントエンド(Webアプリケーション)からコードを送信できます。[送信]をクリックすると、このコードをサーバーに送信する必要があります。その後、サーバーはコードをコンパイルして、結果をユーザーに返します。サーバーが複数の言語コード(C ++、C、Java、PHP、Pythonなど)をコンパイルできるようにするための最良の方法は何ですか?
このシステムを設計する際のベストプラクティスは何ですか?ユーザーコードを別のサービスに渡すためにWebサービスを使用する必要がありますか(c ++コードを受信してコンパイルするための1つのサービス、Javaコードを受信してコンパイルするための1つのサービス、Python用の1つなど)?
あなたのアイデアとこれに関する経験を共有してください。
architecture - Google ドキュメントなどのリアルタイムの Web ベースのコラボレーション ツールをどのように作成しますか?
私は本当に興味があります
Google ドキュメントなどのコラボレーション ツールを作成するにはどうすればよいでしょうか。
私が考えることができる最も近いものは、チャットのようなメッセージング システムを作成し、メッセージをやり取りして、各クライアントが自分自身を更新することです。
このような小さなツールをプログラムするチュートリアル/デモを知っていますか?
この種のアプリを実行するために、彼らはどのようなツールを使用していますか?
あなたが提供できるポインタのTIA。
spell-checking - タイプミスや提案を検出するシステムの設計
これはインタビューで尋ねられました。
答えは、すべての有効な単語のトライを作成することで実行できると思います。その後、正しくないものとして指定された可能性のある有効なパスに基づいて提案を行うことができます。
ユーザーがapfleと入力すると、システムはapの後に有効なパスがappであることを検出し、それがAppleを満足させると言います。
これよりも良い解決策はありますか?おそらく、スペルチェッカーによって実装されたものです。
javascript - 大規模な JavaScript アプリケーションを開発するためのベスト プラクティス
Java/C++ の経験が豊富なため、品質を落とさずに多少大きな JavaScript アプリケーションを開発できるのではないかと考えています。
以下に関するヒントをいただければ幸いです。
- 開発環境
- デバッグ手法
- 単体テスト
- プロファイリング
- 計装
- システムデザイン
- インターフェイス設計
- コード設計
また、 JavaScript PC EmulatorやJavaScript Game Engineなどのプロジェクトがこれらの問題をどのように処理したかにも興味があります。
c++ - BOOST ASIO multi-io_service RPC フレームワーク設計 RFC
私は RPC フレームワークに取り組んでいます。マルチ io_service 設計を使用してio_objects
、IO (フロントエンド) を実行するスレッドを RPC 作業 (バックエンド) を実行するスレッドから分離したいと考えています。
フロントエンドはシングル スレッドで、バックエンドにはスレッド プールが必要です。条件変数を使用してフロントエンドとバックエンドを同期させる設計を検討していました。ただし、混同していないようです。つまり、条件変数のboost::thread
サポートは利用できないようです。この件については、ここで質問があります。 boost::asio
async_wait
2 つのio_serviceio_service::post()
オブジェクトを同期するために使用される可能性があることに気付きました。以下に図を添付しました。メカニズムを正しく理解しているかどうかを知りたいだけですpost
。これは賢明な実装です。
architecture - ユースケース分析でアクターを使用してこれらの役割をモデル化する
私は、(特に) 次のタイプの役割を持つシステムをモデル化しています。
- 個々のプレーヤー
- グループプレーヤー
ここにいくつかの追加の事実があります:
- 個々のプレーヤーには一連の機能要件があります
- グループ プレイヤーにはいくつかのタイプがあります (例: マークスマン、ナビゲーター、エンジニアなど)。
- グループ プレーヤーの選択 (つまり、タイプ) は、プレーヤーが利用できる機能に影響します。
- グループ プレーヤーの機能は、(a) 個々のプレーヤーが実行できることのサブセット (b) (オプション)、役割に基づくいくつかの追加要件 (白兵戦など) の結合です。
一般的な Player の特殊化としてアクターを抽象化できますが、システムの「正式な分析」の一部として「すべてを組み合わせる」方法がよくわかりません。
誰でも助けることができますか?