Ruby を使用して画像ファイルを読み取り、それを文字列に保存しました。
partial_image100 = File.read("image.tga")
partial_image99 = File.read("image.tga")
partial_image98 = File.read("image.tga")
...
私は分散システムの一端でそれらの画像を読みました。別のシステムで、Tail 操作を実行したいと考えています。システムは画像だけを受け取ります。
約100枚の部分画像があります。次のように、テール操作を行いたいです。
tail -c +19 image100 >> image99
tail -c +19 image99 >> image98
tail -c +19 image97 >> image96
...
基本的には、部分画像の最初の 18 バイトを削除し、残ったものを次の画像に追加するだけです。
問題は、これが遅いことです。Ruby から 100 個の UNIX コマンドを呼び出すのは遅いです。Rubyの世界でこれが起こるように、これをリファクタリングしたいと思います。ちょうど記憶の中に。ファイルがありません。
Rubyでこれを行うにはどうすればよいですか?
ありがとう
編集:
画像は次のようなハッシュに保存されます。
{"27"=>"\u0000\u0000\u0002\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000E\u0001\xD0\a\xD0\a\u0018 \xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF\u0000\xFF\xFF...
編集:
関連するコードはすべてここにあります: https://gist.github.com/989563
2 つのファイルがあります。ファイル内の json でエンコードされたコードとハッシュ オブジェクト。コードを実行すると、/tmp に 2 つのイメージ ファイルが作成されます。
- /tmp/image-tail-merger.tga – 末尾マージ アルゴリズムからの出力
- /tmp/image-/time/.tga – in-memory-tail アルゴリズムからの出力
現在、生成された画像はピカソであるため、メモリ内アルゴリズムは失敗します。
インメモリ アルゴリズムで末尾マージ アルゴリズムと同じ画像を生成することができれば、成功です。
編集:
やっと当たった!!!
ここにコードがあります https://gist.github.com/989563