問題タブ [reliability]
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.
facebook - Facebook Connect に頼ることはできますか?
私が構築している新しい Web サイトにFacebook Connectを使用することを検討していますが、Facebook API は少し不安定なようです。
私が使用しているコードは基本的なものですが、サンプル アプリケーションの「therunaround」にも同様の問題があります。
たとえば、友達リストが常に読み込まれるとは限らず、ログインしている Facebook ユーザーが常に検出されるとは限りません。
これらの問題は、私が始めたばかりだからですか?
operating-system - コンピュータシステムの背後にどれだけの信頼を置くことができますか? どうすれば信頼を測定できますか?
Windows を実行している標準的なコンピューターにどの程度の信頼を置くことができますか? 私が書いたように私のコードを実行することをどの程度確実に確信できますか? 「int j = 5;」のようなものを宣言すると、j が常に 5 になることをどのように確認できますか? 標準の x86 コンピューター システムで信頼を測定する方法はありますか? j = 5 であることを確認するために、どのような保護がありますか?
私が考えているのは、1 ビットでもずれることがなく、すべてが記述されたとおりに実行する必要がある重要なシステムです。
embedded - 組み込みシステムで安全なソフトウェア アップグレードを可能にする手法とは
組み込みデバイスのソフトウェアをアップグレードすると、多くの場合、デバイスが「ブリック」する可能性があります。たとえば、ソフトウェアを FLASH に書き込んでいる最中に電源が落ちた場合などです。2 つの質問:
- デバイスが「ブリック」される可能性を最小限に抑えるために、アップグレード メカニズムを実装するためのベスト プラクティスは何ですか?
- FLASH へのソフトウェアのインストール中の電源障害などのイベントから回復できるように、アップグレード プロセスをフェールセーフにするためのベスト プラクティスは何ですか?
comparison - 信頼性を扱うシーケンスID
UDP メッセージの信頼性を処理する簡単な方法を見つけようとしています。それぞれにシーケンス ID を付けて送信し、ID を以前に受信した ID と比較することで、損失を検出できると考えました。私は通常整数を使用しますが、それが無限に増加し続けるという考えは私には合いませんでした。
base64 を使用することもできますが、それは読みやすくするだけで、実際には何も解決しません。
日付スタンプを前に付けることも考えましたが、真夜中頃に受信したメッセージを処理する場合、それはちょっとずさんです。
たとえそれが整数に固執するだけであっても、誰かが提案できるより良い解決策が必要だと思います。
sqlite - SQLite で信頼できるユーザー フィードバックを提供する
GUI フロントエンド (GTK) と SQLite バックエンドを備えたアプリケーションを作成しています。GUI を介して何かが変更された場合、DB で正常に完了した場合にのみ、変更が GUI に表示されるようにします。
sqlite3_step
からのリターン コードを監視するSQLITE_ERROR
だけで、ユーザーに誤ったフィードバックを与えないようにすることができますか?そうでない場合、コールバックやトリガーなど、信頼性を高める他の手順はありますか?
プログラム自体の接続からの変更だけでなく、データベースへのすべての変更を検出して、GUI のコンテンツへの変更を動的に反映できるようにする方法はありますか?
unit-testing - アジャイルを使用して生命に不可欠なシステムを構築する
Build an Aircraft using Agileに関する私の質問のコメントの一般的な傾向を見ると、コスト以外の最大の問題は安全性のようです。
アジャイルを使用して安全なシステムを構築する (または安全であることを証明する) ことはできないと人々は感じていますか? すべての反復テストでこれが軽減されるわけではありませんか? アジャイルを使用して開発されたソフトウェアは、ウォーターフォールなどの対応するソフトウェアほど信頼できない可能性はありますか?
sockets - ソケットは信頼できますか?
ソケットを使用して 2 つのサーバー間でデータを送信するのは良い考えですか、それとも MQ のようなものを使用してデータを移動する必要がありますか。
私の質問: ソケットは信頼できますか? 一度だけ/データの確実な配信が必要な場合は?
他の解決策はありますか?
ありがとう。
.net - .NET ストリーム機能 - CanXXX テストは安全ですか?
クラスの機能をテストするために .NET で使用されるかなり一般的なパターンがあります。ここでは例として Stream クラスを使用しますが、問題はこのパターンを使用するすべてのクラスに当てはまります。
このパターンは、機能 XXX がクラスで使用可能であることを示すために、CanXXX と呼ばれるブール値のプロパティを提供することです。たとえば、Stream クラスには、Read、Write、および Seek メソッドを呼び出すことができることを示す CanRead、CanWrite、および CanSeek プロパティがあります。プロパティの値が false の場合、それぞれのメソッドを呼び出すと、NotSupportedException がスローされます。
ストリーム クラスに関する MSDN ドキュメントから:
基になるデータ ソースまたはリポジトリによっては、ストリームがこれらの機能の一部しかサポートしない場合があります。アプリケーションは、CanRead、CanWrite、および CanSeek プロパティを使用して、ストリームの機能を照会できます。
CanRead プロパティのドキュメント:
派生クラスでオーバーライドされると、現在のストリームが読み取りをサポートしているかどうかを示す値を取得します。
Stream から派生したクラスが読み取りをサポートしていない場合、Read、ReadByte、および BeginRead メソッドを呼び出すと、NotSupportedException がスローされます。
次の行に沿って書かれたコードがたくさんあります。
たとえば、ストリーム オブジェクトを何らかの方法でロックするための同期コードがないことに注意してください。他のスレッドがストリーム オブジェクトまたはそれが参照するオブジェクトにアクセスしている可能性があります。NotSupportedException をキャッチするコードもありません。
MSDN のドキュメントには、プロパティ値が時間の経過とともに変更できないとは記載されていません。実際、ストリームが閉じられると CanSeek プロパティは false に変化し、これらのプロパティの動的な性質を示しています。そのため、上記のコード スニペットの Read() の呼び出しが NotSupportedException をスローしないという契約上の保証はありません。
この潜在的な問題に悩まされているコードがたくさんあると思います。この問題を特定した人たちは、どのように対処したのだろうか。ここで適切な設計パターンは何ですか?
また、このパターン (CanXXX、XXX() のペア) の妥当性についてコメントをいただければ幸いです。私にとって、少なくとも Stream クラスの場合、これは多すぎることをしようとしているクラス/インターフェースを表し、より基本的な部分に分割する必要があります。厳密で文書化された契約がないため、テストが不可能になり、実装がさらに難しくなります!
multithreading - プログラムが失敗した場合にキューの値を保存するための最良の方法
2 つの個別のスレッドと 1 つのキューで構成されるマルチスレッド アプリケーションがあるとします。スレッド 1 は計算を終了し、結果をキューに入れます。一方、スレッド 2 は常にループしており、キューに処理するデータがあるかどうかを確認しています。
何らかの理由でプログラムに障害が発生したり、コンピューターが再起動した場合に備えて、キュー内の値を一時的にディスクに保存するにはどうすればよいですか? 最初のスレッドが終了した後に値を SQLite DB に保存し、スレッド 2 が終了した後に値を削除するのは合理的でしょうか?
SQLiteが実際に最善の解決策である場合、行に処理済みであることを示すフラグを挿入し、30分ごとに別のスレッドを通過させて、フラグが付けられた行を削除するか、その行をすぐに削除する方が速いですか?