問題タブ [robustness]

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 投票する
3 に答える
8539 参照

c# - System.Net.Sockets.TcpClientを閉じると、同じIPアドレスにある他のTCPClientの接続が切断されます

明確にするために、ここで参照しているすべてのTCPClientは、私自身のクラスのインスタンスではなく、Monoの.NET4.0の実装からのSystem.Net.Sockets.TcpClientのインスタンスです。

サーバーと同じように、クライアント接続をリッスンしているサーバーがあります。新しいクライアントを取得するたびに、新しいスレッドで接続を処理するための新しいTCPClientを作成します。私は辞書ですべての接続とスレッドを追跡しています。クライアントが切断すると、サーバーに切断メッセージが送信され、TCPClientが閉じられ、ディクショナリエントリが削除され、スレッドが自然に停止します。大騒ぎも大騒ぎもありません。サーバーは複数のクライアントを問題なく処理できます。

ただし、クライアントが切断され、切断メッセージを送信してから再接続した場合に何が起こるかをシミュレートしています。クライアントがユーザー名システムに再接続したかどうかを検出しています(テストが完了すると、より安全になります)。新しいTCPClientを作成し、古いTCPClientを実行したままにすると、システムは正常に機能しますが、スペースを占有して何もしない無用なスレッドがたくさんあります。怠け者。

そのため、古い接続に関連付けられているTCPClientを閉じようとします。これを行うと、新しいTCPClientも停止し、クライアントプログラムは次のエラーをスローします。

そして、サーバーはこのエラーをスローします:

したがって、次のようなリモートエンドポイントで古いTCPClientを閉じます。192.168.1.10:50001

また、次のようなリモートエンドポイントで新しいTCPClientを中断します。192.168.1.10:50002

したがって、2つのTCPClientオブジェクトのリモートエンドポイントIPアドレスは同じですが、リモートエンドポイントポートは異なります。しかし、一方を閉じると、もう一方が機能しなくなるようです。新しいTCPClientを閉じずに、古いTCPClientを閉じてクリーンアップを実行できるようにしたい。

これは、TCPClientが低レベルのソケットでどのように機能するかと関係があると思いますが、それを実際に理解していないため、修正する立場にありません。

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

client-side - Ember.jsを使用して開発された大きなウェブサイト

Ember.jsを使用して新しいWebサイトを開発することを検討しています。

コミュニティが大きなプロジェクトにどれだけ安定してどれだけ使用しているかはわかりません。

  1. 使用をお勧めしますか?
  2. あなたはそれを使用している大きなウェブサイトを知っていますか?

ありがとう、リオール

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

python - Python UDP サーバーを強化する

私はPython(2.6/2.7)の初心者で、既存のPythonアプリへのネットワークサービスを作成するために深いところに投げ込まれました。

私はUDPサーバーを稼働させていますが、これはうまく機能していますが、もう少し防弾にするための助けを求めています.

これが私が書いた基本コードであり、通常の標準ボイラープレートです。

まず、ソケットはある意味で常に利用可能であり、リッスンする必要がないため、失敗することはなく、再接続する必要があることを理解しています。これは正しいです?

2 つ目は、recvfrom から返されるデータの問題です。有効かどうかを確認するのは単純な 「if data : then」ですか?

第三に、そして最後に、スレッドです。スレッドは爆破できますか? それを再起動する最良の方法は何ですか?

他のヒントは大歓迎です。

(注:ツイストなどの外部ライブラリは使用できません。)

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

c# - GetInvocationList を使用したイベント ハンドラーの登録解除

IDisposable または Finalizer 内に次のパターンを適用したい基本クラスにいくつかのイベントがあります。

イベントごとに 1 回、このコードを繰り返します。

これは、イベントからのサブスクライブ解除を処理してメモリ リークを防ぐ合理的で堅牢な方法ですか?

0 投票する
3 に答える
2582 参照

linux - より堅牢にするために、スクリプトで cp または mv を使用する必要がありますか?

bash スクリプト (Scientific Linux) があります。スクリプトはファイルを操作する必要があります。「file.dat」(約 1 GB のサイズ) としましょう。しばらくすると、スクリプトが再起動され、次のように実行されます。

ファイルのバックアップを取得します。その後、プロセスが開始され、「file.dat」が上書きされます

最も安全な側にいるために(電気のシャットダウンまたは予期しない何か)。最良の選択肢は何でしょう: cp または mv ? ありがとう。

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

android - Androidアプリのメモリに配列リストを保存する(堅牢な方法で)

私はアンドロイドアプリに取り組んでいます(古いアンドロイドと新しいアンドロイドで動作するため、3.0のトリックはありません)。送信データをアプリのarrayListに保存し、ビュー間で共有できるようにしたいと思います。データは最初にオブジェクトにインスタンス化されて格納され、次に arrayList になります。ビュー全体にアクセスしたいのですが (sharedPref かな?)、アプリがクラッシュした場合に残りのデータが消去されないようにする必要もあります。

助言がありますか?

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

java - SQLプラットフォーム間の違いをカプセル化するための戦略?

私はここでいくつかの遅い操作を加速することに取り組んでいます、そして1つのケースはテーブルの親子関係のツリーです。現在、システムはSQLServerで実行されており、調査の結果、一般的なテーブル式を使用すると、複数のクエリを1つにまとめることができることがわかりました。

これまでのところ良いですが、構文はSQLServerに固有であり、(たとえば)Oracleで同じことを行うには、完全に異なる構文が必要になります。

他のRDBMSへの将来の適応を可能にするためにシステムを構築するために何ができるでしょうか?ここでの私の主な関心事は次のとおりです。

  • SQLステートメントはコード上に散らばっていて、あるRDBMSの1つのステートメントで可能なことは、別のRDBMSで複数のステートメントを必要とする場合があるため、プログラムロジックでさえ変更が必要になる場合があります。
  • 1つのRDBMSにうまくカプセル化できるもの(私は保存された関数を使用してDBの複雑さの一部を隠しています)でさえ、異なるDBに沿って微妙な違いがあるか、まったく利用できません。

これまでのところ、最も単純なSQLステートメントを超えるものはすべて、常にベンダー固有の拡張機能を必要としているように思われるため、いくつかのクラス/格納されたSQLで違いをきちんと隠しておくことは不可能です(抽象化はすでに組み込まれています。しかし、それはDBのより便利な機能の多くも除外します)。

少なくともベンダーの違いによる苦痛を和らげるために、どのような戦略を使用できますか?これは非常に幅広い質問であり、すべてを解決することはできません。しかし、DBがアプリケーションに与える影響を軽減するためのいくつかのポインターとパターンを期待しています。

編集:実装言語はJavaであり、単にORM(Hibernateなど)を使用することは私が探しているものではありません(多かれ少なかれコードベースの約50%を書き直す必要があります)。

EDIT2:私は主に、可能な限り一般的に互換性のある方法でデータベースに詳細をプッシュする可能性を探しています。理想的には、Java部分で使用されるSQLをすべてのプラットフォームで同じにする必要があります(または非常に必要なだけです)構文の違いによるわずかな変更)。私が提供したCTEの例では、移植が必要になったときに機能を関数でも再現できることを期待して、現在それをストアド関数にプッシュしています。

EDIT3:現在、他のRDBMをサポートする差し迫った必要はありません。SQLServerでのみ機能する場合、誰も私を責めることはありません。しかし、可能であれば、Javaコードを特定のDBベンダーに必要以上に結び付けることは避けたいと思います。

EDIT4:いくつかの背景-現在の作業は、システムに機能を追加することです-それが設​​計も計画もされていなかった機能。要件は、ビジネスマンから少しずつ細かくなり、事前に計画するのは困難です。それぞれの要件自体を解決するのはそれほど難しいことではありませんが、すべてのクエリを詳細に調べないと移植できないものにタグ付けされたものの大きな混乱が蓄積されるのではないかと心配しています。SQLServer自体も、メジャーな新しいリリースごとにさまざまな非互換性を導入しているため、新しいSQLServerに切り替えることでさえ、将来的に大きな障害になる可能性があるのではないかと心配しています(過去に、2005年から2008年にそのようなアップグレードを1回行いました。私が維持しているものについてはスムーズですが、それはすでに私たちのサプライヤーの1つに多くの問題を引き起こしました)。

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

php - ユーザー作成のincludes()でのクラッシュの防止

次のコードを検討してください。

ファイルmalformedFile.phpが有効なPHPコードであるか、クラッシュしないか、die()を呼び出さないことを確認する方法がありません。malformedFile.phpが停止またはクラッシュした場合でも、どうすればキャッチを続行できますか?私の興味は、ユーザーがインクルードを介して独自のプラグインを実装できるようにしながら、アプリケーションを可能な限り堅牢にすることです。

ありがとう。

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

android - アプリがクラッシュするときの良い習慣

私のアプリは現在クラッシュしていませんが、非常に堅牢にしようとしています.1つのことは、ユーザーが手動で停止するまで「何らかのイベント」の時間を追跡することです.

私の意図した実装

これが私がこれを実装することを計画していた方法です。彼らが最初の「イベント」を送信すると、タイミングが開始され、SQLite データベースで最初の時間と残りのイベントが開始されるようにするつもりでした。次に、イベントのタイミングを停止するためのボタンが同じ送信画面に表示されます。イベントの正確な時間を追跡したいと考えています。進行中のイベントと、その一意の ID を持つ別の設定があることを示すために、設定にフラグを設定します。

懸念

だから私の懸念は次のとおりです。アプリがクラッシュしたり、何か悪いことが起こったりした場合、イベントの終了時間を変更するオプションをユーザーに提供したいと考えています。私はこれを2つの方法のいずれかで行うつもりでした. 次に、編集するためのこのオプションを彼らに与えます。2. 存在する場合は、onTerminate メソッドまたはAndroid がクラッシュした場合に EVEN を閉じるときに使用するものを呼び出します。繰り返しますが、これが存在するかどうかはわかりません。

助言がありますか?

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

php - テストが中断した場合、Web アプリケーションの機能を無効にするにはどうすればよいですか?

クラス用のスクレイパーを作成する必要があり、実際に機能することを確認するためにテストを行いたいと考えていました。

私がスクレイピングしている Web サイトが Web サイトに変更を加えた場合、スクレーパーを更新するまで、Web サイトが失敗し、機能が無効になることを望みます。

単体テストを使用してスクレイパーをテストすると仮定すると、X 分ごとにテストを実行し、Y 機能を無効にする前にテストが壊れているかどうかを確認するツールはありますか?

私が求めているのは、スクレーパーが壊れた場合にユーザーが奇妙なメッセージを表示しないように、アプリケーションをより堅牢にするために利用できるツールは何ですか?