問題タブ [vfs]
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.
java - ファイルI/Oを高速化するためにjvm内にtarをキャッシュしますか?
私は、リクエストに応じてアーティファクトを構築するために何千もの小さなファイルを使用するJavaWebアプリケーションに取り組んでいます。これらのファイルをディスク全体で実行して常に見つけるのではなく、これらのファイルをメモリにマップできれば、システムのパフォーマンスが向上すると思います。
Linuxでmmapについて聞いたことがありますが、その概念の基本的な理解は、ファイルがディスクから読み取られると、ファイルの内容がメモリのどこかにキャッシュされ、その後のアクセスが速くなるということです。私が考えていることはその考えに似ていますが、私のWebアプリが最小限の要求時間応答のために初期化しているので、mmap可能なファイルのセット全体をメモリに読み込みたいという点が異なります。
ここでの私の思考訓練の1つの側面は、ファイルがすべてタール化され、何らかの方法で仮想ファイルシステムとしてJVMにマウントされた場合、ファイルをjvmメモリにすばやく取り込むことができるということです。現状では、現在の実装がソースファイルのセットを調べて、ディスク上にあるものをすべて把握するのに数分かかる場合があります。これは、基本的に300,000を超えるファイルのファイル統計を実行しているためです。
tarファイルから情報を読み取ることができるapacheVFSプロジェクトを見つけましたが、「また、tar全体をメモリに読み込んで保持する」などの指定ができるかどうかは、ドキュメントからはわかりません。
ここでは、マルチスレッド環境について話しています。アーティファクトは、通常、300,000以上のソースファイルの完全なセットから約100の異なるファイルをつなぎ合わせて、1つの応答を作成します。したがって、仮想ファイルシステムソリューションが何であれ、スレッドセーフでパフォーマンスが高い必要があります。ここでは、ファイルの読み取りについてのみ説明しており、書き込みについては説明していません。
また、32ギガのRAMを搭載した64ビットOSを実行しており、300,000ファイルは約1.5〜2.5ギガのスペースを占有します。確かに、2.5ギガバイトのファイルを300Kの小さな数キロバイトサイズのファイルよりもはるかに高速にメモリに読み込むことができます。
入力ありがとうございます!
- ジェイソン
c# - 実用的/応用アプリケーションセキュリティ
さて、ここに私の問題があります。私は最終的に多層になるゲームエンジンを使っています。このエンジンを使用すると、ゲームを.Net言語またはLua(組み込みのスクリプトエンジン)で作成できます。ただし、セキュリティのために、これらのファイルを他の人が閲覧できないようにし、もちろん編集できないようにしたいと思います。私の解決策は、暗号化されたヘッダーを使用して仮想ファイルシステムを作成することでした。このようにすると、ゲームデータファイルの内容を見つけるのが難しくなり、誰かが見つけた場合、キーがないと編集できなくなり、無効になります。
現在のゲームのもう1つの問題は、SQLデータに接続して特定のデータを取得することです。これは、DB接続文字列とパスワードがアプリケーション内に保存されていることを意味します。
ただし、.Netアプリケーション内にパスワードを保存する方法を教えてください。私はそれらが逆コンパイルされる可能性があり、読み取り可能な構成ファイル内に秘密鍵を格納することは意味がないという事実を知っていますが、ほとんどの専門家はどのようにそれを行いますか?
powershell - Powershellに他のファイルシステムで仮想ファイルシステムを提供する方法はありますか?
カスタムPSDriveのサポートを作成できることを知っています。しかし、それらは常にファイルシステムのルートです。Set-Location
アーカイブファイルを入力してフォルダのように使用するなど、ファイルシステムの任意のノードでVFSを開始できるようにする方法があれば便利です。(FarのようなKindaがこれを行います)。
これを達成する方法はありますか?私はそれを正しくそして機能させるためにいくらかの仕事があることを知っています、しかし今のところ私はそれがまったく可能であるかどうかもっと興味があります。
ETA:私が望んでいないのは、入力するすべてのアーカイブ用の新しいPSDriveであるため、実際には次のものは私が求めているものではありません。
むしろ
sql-server - SQL Server データベース オブジェクトをファイル システム内のファイルとして公開する
複数のファイルシステムがあります
ほとんどのバージョン管理ツールは、ローカル ディスク ファイル システムで動作します。
オブジェクトを識別するテキスト名があり、この名前を使用して作成スクリプトを取得または少なくとも生成できる限り、ほとんどのリレーショナル データベース システムのデータベース オブジェクトはファイル システムに存在します。
しかし、これはローカル ディスク ファイル システムではないため、ローカル ディスク ファイル システムで厳密に動作する CVS や SVN などのツールからは見えません。
SVN をデータベース オブジェクトに適用するには、オブジェクトをローカル ディスク ファイル システムに複製し、ローカル ディスク ファイル システムへの変更をデータベースに複製する必要があります。
さまざまな使用モード
各開発者がプライベートな作業コピーを保持するソース コードとは異なり、開発者は、ネットワーク上のどこかにあるサーバー上の共有データベースで作業する傾向があります。Visual Studio はマウント オン デマンドのプロジェクト ローカル データベースのコピーを直接サポートしていますが、変更をマージするための便利で信頼できる方法がないため、開発者はこの機能を避けてきました。
ただし、データベース構造への変更が CVS や SVN などのコピー/マージ バージョン管理システムによって管理されると、伝播とマージはほとんど自動化され (バーの競合)、データベースを共有する理由はなくなります。
オプションとして SCC を除外する
Microsoft SQL Management Studio は、SCC 仕様を実装するすべてのバージョン管理をサポートしています。Microsoft は VSS (blech) のみをリストしていますが、Google は多数のオプションを明らかにしています。ただし、SCC はすべてロックに関するものであり、ダブルブリーチです。
ファイルシステム間の複製
全体の問題は、ファイル システム間のレプリケーションの 1 つに発展します。CodePlex には VS2005/SQL2005 の実装が含まれていますが、VS2008/SQL2008 では機能しません。
この時点で、「これをどのように行うべきか」という根底にある問題は十分に解決されたと思いますが、ポイントを与える方法はわかりません.
関係者の皆様、ご応募ありがとうございました。
いくつかの具体的な疑問が生じますが、主にさまざまなタイプのスキーマ オブジェクトをスクリプト化する方法に関するものです。
- の依存関係順に抽出
create
してalter
スクリプト を作成する方法- テーブル
- 見る
- ストアド プロシージャ
- 関数
- 引き金
- 索引
- 外部キー
- 依存関係の順序でテーブル作成スクリプトを抽出する方法
- スキーマへの変更を効率的に検出する方法 (トリガーがない場合は、
sys.objects
ポーリングが必要になります。これは、高速で安価な方がよいでしょう)
変化の検出
ポリシーを使用してアクションをスキーマの変更にバインドできることに気付きました。依存関係の順序付けと、テーブル作成ステートメントをスクリプト化する方法の問題が残っています
java - VFSを実装するためのアイデア
マルチメディアファイルとそのメタデータをRDBMSに保存しています(実際には、実際のメディアファイルはFSに保存されていますが、これについては詳しく説明しません)。
この情報のファイルシステムビューを表示して、ユーザーがWindowsエクスプローラーやデータベース上の同様のものを使用して作業できるようにしたいと思います。私はこのアクセスを読み取り専用にするつもりです。これにより、物事が大幅に簡素化されると思います。
基本的に、私が達成したいのは次のとおりです。
- さまざまなメタデータ基準を使用してさまざまなビューを作成します(たとえば、/ by_author / {artist} / {record}/{audiofiles}と/by_record/ {record} / {audiofiles}を使用します)。
- メディアファイル(つまり、/ wav / {wavfile}、/ mp3 / 192 / {mp3file)、/ mp3 / 320 / {mp3file}などの透過的な再エンコード(キャッシュされる可能性があります)を使用します。
- さまざまな形式(Excel、さまざまなスキーマのXMLなど)でのメタデータの透過的な生成
ところで、私はこれをJavaで行っています。
ここでの私の問題は両面です:
1)
「モデル」を実装するための良い方法は何ですか?私はいくつかのリポジトリ、アセット、FileAsset、ContainerAssetのインターフェースと実装に手を出しましたが、それらは完全に正しいと感じてしまうわけではありません。
ファイルシステムのさまざまな部分を別々のコードに委任できるようにすることに興味があります(つまり、FSの/ {artist} /{record}と/{record}の部分は異なるコードで実装され、両方とも同じコードに委任します{record} / xxxのものを作成します)。
2)
このモデルを「公開」するための最良の代替手段は何ですか?私が見るように、いくつかの選択肢があります:
- FuseforJavaおよびDokanforJava。2つの異なるラッパーを実装する必要があるので、もう少し作業が必要です...
- AlfrescoのSMB実装を使用し、VFSをSamba共有として公開するだけです
- Milton(サーブレットコンテナ用のWebDAV実装)を使用し、OSの組み込みWebDAVサポートを使用するか、FuseDAVFSなどを使用してFSとして再公開します。
その中で、Fuse/Dokanが最も効果的だと思われます。Alfrescoは非常に見栄えがしますが、機能させるには非常に複雑です。ミルトンはもっと単純に見え、WebDAVのセマンティクスはさらにうまくいくかもしれません...しかし、私は完全にはわかりません。
考え、アイデア?
アレックス
編集:プロジェクトは現在半ば放棄されています(つまり、それを行うのはクールですが、今は時間がありません)。私は自分のVFSをcommons-vfsの拡張として記述し、次にcommons-vfsをMilton、Dokan、Fuseなどに適合させると思います。
linux - 仮想ファイルシステムでのシンボリックリンクの実装
/procのようなディスクベースではない仮想ファイルシステムに取り組んでいます。次に、ext3ファイルシステム上のターゲットへのシンボリックリンクを作成します。これを実現する方法に関する標準的なドキュメントは見つかりませんでした。私がこれまでに推測したことは、に入れる関数を書かなければならないということsymlink
ですstruct inode_operations
。しかし、率直に言って、関数パラメーターを使用しても途方に暮れています。
重要な場合は、LWNに関するこのチュートリアルから始めました:http://lwn.net/Articles/13325/
編集:私は現在FUSEではなくlibfsを使用しています
coldfusion - ColdFusion9仮想ファイルシステムとクラスタリング
VFSはクラスターシナリオで機能しますか?
fuse - 仮想ファイルシステムまたはユーザースペースのファイルシステムとは何ですか?
FUSEのようなユーザースペースでVFSとファイルシステムに出くわしました。
今、私が理解している限り、それはファイルシステムをシミュレートするので、アプリケーションは標準のファイルシステム階層を持つことができます。しかし、私にはわかりません。なぜそのために別のファイルシステムが必要なのですか?通常のフォルダー構造を作成し、アプリで使用されるファイルを配置するだけではいけませんか?
だから、私の質問は次のとおりです。
VFSとは何ですか?
実際の例、VFSが使用されるユースケースをいくつか挙げてください。
VFSを使用する利点は何ですか?
JavaベースのVFSはありますか?
java - DefaultFileMonitorがFTPの場所にあるファイルをループでリストし続けるのはなぜですか?
Javaコードの編集バージョン:
ネットワークトラフィックを監視しましたが、FTPの場所がモニターに追加されると、サーバー上の2つのフォルダーにPORTコマンドとLISTコマンドが送信されるようです。問題は、それが(おそらく、呼び出し元のクライアントポートがなくなるまで)それを実行し続けることです。
FTPネットワークトラフィックの抜粋は次のとおりです。
その一部は、LISTコマンドからの応答です。コマンドは同じフォルダに対して繰り返されますが、ポートは毎回変更されることに注意してください。これらの場所にファイルがない場合、これは発生しません。
この動作の原因と、送信者がリストを1回だけ取得するように変更するにはどうすればよいですか?
編集:問題をFileObjectのgetChildren()メソッドに絞り込みました。
これは私が見つけた唯一のインターネットリファレンスです:http: //mail-archives.apache.org/mod_mbox/commons-user/201005.mbox/%3C4c03ed10.0d01df0a.53c3.059c@mx.google.com%3E