問題タブ [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 に答える
453 参照

tcp - tcp/ip にすでにチェックサムがある場合でも、アプリケーション プロトコルにチェックサムが必要ですか?

アプリケーション プロトコルを設計していますが、tcp/ip には既にチェックサムがあるため、プロトコルにチェックサムを含める必要があるかどうか疑問に思っています。あなたの意見は何ですか?

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

code-generation - 堅牢なコード フレームワーク?

私は自分のソフトウェアをより強固なものにするコードを書くのが嫌いです。これは、フレームワークが行うべきことです。では、コードを強化するコード「拡張」ユーティリティを知っている人はいますか?

このようなものを自分で作成する必要がある場合は、次のように機能します。デバッグ フラグを使用してコードをコンパイルすると、各メソッドに「固定化」コードが自動的に追加されます。

try-catch でコードをワープし、キャッチに Debug.Assert(true) を配置します (例外が元の場所でキャッチされるように)。

各メソッドのエントリをログに記録し、引数の "ToString()" 値を出力して、何が起こっているのかを追跡できるようにします。

各引数の null を確認します。

「IsValid」フレームワークを使用して、オブジェクト自体と各引数をチェックします。ここで、IsValid() は、その期待が真であることをオブジェクトが宣言する方法です (たとえば、私が TableOfContentsEntry の場合、IsValid である Book に常にあることを期待します)。 () であり、IsValid() である Page を指します。

では、なぜですか?

0 投票する
8 に答える
747 参照

performance - フェイル ファスト vs. 堅牢性

当社の製品は分散システムです。私が取り組んでいるモジュールはかなり新しく、非常に厳密で、よくテストされています。これらは、最近のベスト プラクティスを念頭に置いて開発されました。その他のモジュールは、レガシー ソフトウェアと見なすことができます。

私は自分が担当しているモジュール内で発生するすべてのことに注意を払っていますが、他のモジュールから送信された不良データを処理するというプレッシャーに常にさらされています。本質的に、私は「フェイル ファスト」原則の開発者であり、その結果、問題が発生した場合、通常はモジュールのエラーの可能性を排除することができます。責めるということではなく、間違った場所でバグを追跡する無駄な労力を節約するだけです。

しかし、私が常に反対している議論は、「このようなものを本番環境で失敗させることはできません。顧客はこれが機能することを期待しています。この問題を回避してみませんか」というものです。そして、これは頑強さの議論になります。受け入れるものにはリベラルであり、送信するものには保守的であることです。

また、これらはほとんど断続的な問題であることにも注意してください。それらは統合テストで見られますが、再現するのは困難です。タイミングと並行性が関係しています。

2 つの原則のバランスをとるのに苦労しています。その理由の 1 つは、例外的なデータを許可して伝播し始めると、問題が発生し、自分のシステムにあまり自信が持てなくなるのではないかという心配です。しかし、他のモジュールが間違ったデータを送信している場合でも、システムを動作させ続けることに反対することはできません。他のモジュールが修正されていない理由は、それらが複雑すぎて壊れやすいためですが、私のモジュールはまだ明確で安全に見えます. しかし、私がプレッシャーに抵抗しなければ、私のモジュールは、私が今まで拒否してきたのと同じ問題をゆっくりと抱え込むことになります.

システムが本番環境で「クラッシュ」することはありませんが、モジュールが単にエラーをオペレータに表示し、サポートに連絡するように依頼する場合があります。クラッシュは大きな問題ですが、エラーを明確に報告しているのであれば、これは正しいことではないでしょうか? 私の同僚は、顧客に問題を見せたくないだけだと思います。しかし、私のモジュールは、顧客の入力ではなく、製品内の他のモジュールからのデータを拒否しています。ですから、私たちは問題に取り組んでいないだけのように思えます。

では、私はもっと現実的になる必要がありますか、それとも自分の立場を維持する必要がありますか?

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

.net - .NET でのアトミック ファイル コピー

System.IO.File.Copy(...) 関数を使用してファイルをコピーするサーバー アプリを構築しています。私のファイルはかなり大きくなる可能性があるため、マシンがクラッシュした場合、コピー中にクラッシュする可能性がかなりあります。

サービスを再起動した後、コピー タスクを取得して続行できるはずです。コピーが正常に完了したか、サーバー クラッシュによって中断されたかを検出するにはどうすればよいですか?

私の現在の計画は、ファイルを一時的な名前にコピーし、コピーが完了したら、ファイルの名前を最終的な名前に変更することです。このようにして、ファイルの命名により、クラッシュの状態情報を引き継ぐことができます。

良い/より良い提案はありますか?

編集: ターゲット OS は Win2003 であるため、トランザクション NTFS は利用できません

0 投票する
5 に答える
6934 参照

java - 堅牢性を測定する方法は?

私は製品の品​​質を測定することについての論文に取り組んでいます。この場合の製品はウェブサイトです。私はいくつかの品質属性と測定技術を特定しました。

1つの品質属性は「堅牢性」です。どういうわけかそれを測定したいのですが、客観的にこれを行う方法についての有用な情報を見つけることができません。

堅牢性を測定できる静的または動的なメトリックはありますか?つまり、ユニットテストカバレッジのように、そのような堅牢性を測定する方法はありますか?もしそうなら、そのようなことを行うことができる(無料の)ツールはありますか?

誰かがそのようなツールの経験がありますか?

大事なことを言い忘れましたが、私がすべての耳であるという考えがあれば、おそらく他の方法で堅牢性を判断することができます。

よろしくお願いします。

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

emacs - どのバージョンの emacs が関数を導入したかを調べるにはどうすればよいですか?

メインラインの emacs 機能をできるだけ多く使用し、以前のバージョンで実行したときに正常にフォールバックする .emacs を作成したいと考えています。たとえば、emacs 22 には存在しなかったが、emacs 22 でドットファイルを実行することになったというまれな機会に、emacs 23 に存在するいくつかの機能を試行錯誤で見つけました。しかし、私はこれに対してより積極的なアプローチを取り、バージョン >= <some-threshold>(たとえば) の場合にのみ有効になるドットファイルのサブセットを作成したいと考えています。私が今注目している機能は ですscroll-bar-modeが、一般的な解決策が欲しいです。

この情報の一貫したソースを見たことがありません。gnu.org オンライン ドキュメント、関数コード自体を確認しましたが、これまでのところ何も確認していません。サポートしたい emacs のすべてのバージョンを保持せずに、どうすればこれを判断できますか?

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

.net - キャッチされた IOException が別のプロセスによって使用されているファイルによって引き起こされているかどうかを、例外の Message プロパティの解析に頼らずに確認する方法

ファイルを開くときに、別のプロセスで使用されているかどうかを知りたいので、特別な処理を実行できます。その他の IOException はバブルアップします。IOException の Message プロパティには、「別のプロセスによって使用されているため、プロセスはファイル 'foo' にアクセスできません。」が含まれていますが、これはプログラムによる検出には適していません。別のプロセスで使用されているファイルを検出する最も安全で堅牢な方法は何ですか?

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

c# - 兄弟のキーと値のペアに対する堅牢なLINQtoXMLクエリ

(最初の投稿、優しくしてください!)

私は、LINQ to XMLの栄光と弱さをすべて学び、自分がやりたいことを実行するためにそれをハックしようとしています。

このようなXMLファイルが与えられた場合-

既知の「必要なキー」のセットの値を堅牢な方法で抽出したい。つまり、SECOND_WANTED_KEY2回表示された場合は、だけが必要SECOND_WANTED_VALUEであり、は必要ないUNWANTED_VALUE。さらに、THIRD_WANTED_KEY表示される場合と表示されない場合があるため、クエリはそれも処理できる必要があります。それは他のキーの前に表示されると想定FIRST_WANTED_KEYできますが、他のキーの順序については何も想定できません。キーが2回表示される場合、その値は重要ではなく、最初のキーのみが必要です。文字列で構成される匿名データ型で問題ありません。

私の試みは、これらの線に沿った何かを中心にしています。

私の質問はそれがどうあるべきかという...ことです。たとえば、私は試しました(醜い、私は知っています)

.NextNodeこれにより、キーがどこにでも存在するか、存在しないようになるはずですが、nullでは機能しないように見えるため、うまくいきXElementませんでした。

私も追加しようとしました

whereの後に節がありますが、それも機能していません。

私は提案、(建設的な)批判、リンク、参照、またはGoogleへのフレーズの提案などを受け入れます。私はグーグルとSOの周りをチェックすることをかなりの割合で行ったので、助けていただければ幸いです。

ありがとう!

編集: これに複雑さの層を追加しましょう-そもそもこれを含めるべきでした。XMLドキュメントが次のようになっているとしましょう。

そして、これらのキーと値のペアの複数のセットを抽出したいと思います。質問/注意:SECOND_WANTED_KEY最初の<list>要素には表示されないが、2番目の要素には表示される場合、誤って2番目のリスト要素を取得したくありませんSECOND_WANTED_KEY

編集#2:

別のアイデアとして、私HashSetが探しているキーをいくつか作成して、これを実行してみました。

これにより、すべてのキーと値のペアが取得されますが、ペアを親の`'要素に適切に「関連付ける」ことが保証されるかどうかはわかりません。これら2つのアプローチの考えや比較は役に立ちます。

ステータスアップデート2010年4月9日

今のところ、私はまだハッシュセットアプローチが最も好ましいと考えています。.NETによって実行されるXML処理のほとんどは、ドキュメントの順序で実行されるようです。これまでのところ、すべてのテストケースが機能しています。

報奨金や賛成の回答を提供しますが、そのための十分な担当者ポイントがありません。今日は答えを決めますので、どうぞ!ありがとう。

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

winforms - 堅牢なWinFormアプリケーションの機能

[この質問を最初に投稿したときからの以下の強いコメント(2010年4月7日と8日付け)に基づいて、私は自分が書いたものをよく見て、「え?私は本当にここから何をしたの?」と自問しました。私は抜本的な行動が求められていると判断しました。元のテキストを破棄し、質問をより単純でわかりやすくし、私が本当にそれから抜け出したいことに集中します。これが2010年5月3日の新しい質問のバージョンです]

誰もが、クリーンで堅牢で使いやすいWinFormアプリケーションの構成要素を「知っています」。しかし、正確には何ですかこれが私のスターターリストです。あなたはこれらすべてに同意しないかもしれません(例えば、一部の人々は、その日のヒントを本当に嫌います)、それは問題ありませんが、それはあなたに一般的な考えを与えます。

  • 「バージョン情報」ダイアログ
  • ツールチップ
  • スプラッシュ画面
  • 今日のヒント
  • アップデートの確認
  • 呼び出し間で設定を永続化する
  • 長時間の操作の進行状況インジケーター

他に何を含めますか?

0 投票する
7 に答える
273 参照

c# - Null 値と空白値

変数の null と空白をチェックできるように堅牢なコードを作成する最良の方法は何ですか?

例えば