問題タブ [io]

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

file - Luaでテキストファイルの最後の行だけを読む方法は?

最大 20 メッツのサイズのテキスト フィールドを生成するプログラムがあります。ファイルの最後の行だけを気にすることがありますが、残りのファイルを読んでメモリを浪費することなく、その行だけを読む方法はありますか?

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

java - Java - System.err.println のキャプチャまたは PrintStream のキャプチャ

Java初心者の質問:

サードパーティのコンポーネントによって printStream に書き込まれるテキストをキャプチャする必要があります。

PrintStream のデフォルトは System.err ですが、別の PrintStream に変更できます。

ドキュメントを調べたところ、PrintStream の内容を文字列ライター/バッファーに転送する簡単な方法が見つかりませんでした。

誰か助けてくれませんか?

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

vb.net - IO.Stream インタラクションのテスト

GUI でファイルをアップロードするユーザーから来るストリームを受け入れるビジネス ロジック層にメソッドがあり、メソッドがこのストリームを適切に使用して決定を下すことをテストする適切な方法に興味があります。

テスト目的で、モックされたストリームをこのメソッドに DI したいと思いますが、ストリームを操作するたびに、抽象化がぎこちなく不足していることに気付きます。

直感的に、ストリーム ラッパーを作成して、ラッパーのインターフェイスを DI して、ロジックとストリーム ワッパーとの相互作用をテストできるようにする必要があることがわかります。

続行するための最良の方法は何ですか?

0 投票する
6 に答える
4288 参照

performance - 複数のスレッドによるファイル コピーの最適化

マルチスレッドでファイルのコピーを高速化できますか?

編集: 明確にするために、CopyFile(src, tgt) を実装しているとします。特定の状況下では、複数のスレッドを使用して高速化できることは論理的に思えます。

編集いくつかの考え:

当然、問題のハードウェア/ストレージによって異なります。

たとえば、あるディスクから別のディスクにコピーする場合、2 つのスレッドを使用して同時に読み取り/書き込みを実行できることは明らかです。したがって、2 つのうち最速のスレッド (通常は読み取り) のパフォーマンス コストを節約できます。ただし、並行して読み取り/書き込みを行うために複数のスレッドは実際には必要ありません。非同期 IO だけです。

しかし、異なるディスクからの読み取り/書き込み時に async-IO が実際に高速化 (最大 2 倍) できるのであれば、なぜこれが CopyFile のデフォルトの実装ではないのでしょうか? (またはそれは?)

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

c# - C# ファイルの宛先が有効であることを確認する

指定したディレクトリが有効であることを確認する標準機能はありますか?

私が尋ねる理由は、ユーザーから絶対ディレクトリ文字列とファイル名を受け取っており、その場所が有効であることを確認するために健全性をチェックしたいからです。

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

python - スタックレス python ネットワークのパフォーマンスは時間の経過とともに低下しますか?

だから私はスタックレスの python をいじって、マイクロスレッド/タスクレットを使ったプログラミングを独学するために非常に単純なウェブサーバーを書いています。しかし、今私の問題に、ab -n 100000 -c 50 http://192.168.0.192/Apache ベンチで (100k リクエスト、50 同時実行) のようなものを実行すると、6k req/s のようなものが得られ、2 回目には 5.5k、3 回目は 5k、4 回目は 4.5k になりますなど、100req/s か何かまでずっと。

ただし、Python スクリプトを再起動すると問題はなくなります。

今私の質問はなぜですか?タスクレットの削除を忘れていませんか? stackless.getrunco​​unt() を確認しました (そして、何らかの理由で常に 1 を返すようです)。完了したすべてのタスクレットで .kill() を呼び出してみましたが、役に立ちませんでした。私はこれを理解することはできません。

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

wcf - ASMXまたはWCFプロキシクライアントはIO完了ポートを使用しますか?

私はプロジェクトのクリティカルセクションのパフォーマンステストを行っている最中です。WaitOrTimerCallback操作を実行するために大量の余分なスレッドが使用されていることに気づきました。

代替テキストhttp://lh4.ggpht.com/_p7-jVU64mGg/SZuWgUvTD7I/AAAAAAAAAEk/PUFrXrYvZh0/threads_thumb%5B1%5D.jpg?imgmax=800

よく調べてみると、これらはリモートサーバーでの操作のためにASMXクライアントプロキシクラスによって生成されていることがわかります。

私は、これらが他のすべての非同期IO呼び出しと同様にIO完了ポートを使用しているという印象を受けました。

ASMXまたはWCFプロキシクライアントにIO完了ポートを使用させることは可能ですか?そうでない場合-本当にポイントは何ですか?

[更新]プロジェクトはASMXプロキシクライアントを使用していました。WaitOrTimerCallbackを登録するために、通常のスレッドプールを使用しているようです。現在、WCFプロキシクライアントを使用しています。これらは余分なスレッドを生成していないため、目的のIO完了ポートを使用していると想定することしかできません。

ASMXプロキシクラスは、Visual Studio2008を使用して作成されました。プロジェクトファイルに次の行を追加しました。「WebReference_EnableLegacyEventingModel>true」ASMXクライアントの現在のフレーバーでは、デフォルトで非同期が有効になっていないためです。

0 投票する
9 に答える
683 参照

testing - 動作の悪い I/O でアプリケーションの信頼性をテストする方法

ほとんどすべてのアプリケーションは、ディスクまたはネットワークを介して I/O 操作を実行します。

私のアプリケーションは開発時の環境で正常に動作するため、インターネット接続が低速または不安定な場合、またはユーザーが書き込みが不十分な CD からデータを読み取ろうとした場合でも動作することを確認したいと考えています。

シミュレートするためにどのツールをお勧めしますか:

  • 遅い I/O (ファイルを開く、ファイルを閉じる、読み取りと書き込み、ディレクトリ項目の列挙)
  • 時折の入出力エラー
  • 時折の「アクセス拒否」応答
  • TCP/IP でのパケット損失
  • 等...

編集:

Windows:
説明されている作業を実行するための最も近いソリューションは、holodeck、商用ソフトウェア (>900 ドル) のようです。

Linux:
オープン ソリューションは今のところ見つかりませんでしたが、smcameron と krosenvold で指定されているのと同じ効果が得られます。


デコレータ パターンは良い考えです。I/O クラスをラップする必要がありますが、テスト フレームワークになります。テストされていない唯一のコードは、サードパーティのライブラリにあります。

しかし、私はこの方法をとらず、コードをそのままにして、外部からの i/o エラーをシミュレートすることにしました。


私が必要としているのは「フォールトインジェクション」と呼ばれるものであることがわかりました。知らなかったソリューションがたくさんある一般的な生産ラインの部品だと思いました。(ちなみに、もう 1 つの同様の良いアイデアは、「ファズ テスト」です。Lennart のおかげです)

私の考えでは、この問題はまだ 900 ドルの価値はありません。フックに基づいて独自のオープンソース ツールを実装します (win32 を対象としています)。作業が完了したら、この投稿を更新します。3~4週間くらいで戻ってきて…