問題タブ [bzip2]

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

gem - MacPorts MacOS への ruby​​ 2.0 bz2 gem のインストール

MacPorts 環境に ruby​​-2.0 用の bzip2-ruby をインストールする方法について、誰かがガイダンスを提供してくれますか?

インストールすると、version.h が見つからないというエラーが表示されました。version.h から ruby​​-2.0.0/version.h へのシンボリック リンクを作成すると、次のようになりました。

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

c# - Protobuf-net ディセーブル シーク

ネットワーク クライアント/サーバー アプリケーションで protobuf-net を使用しています。データの各パケットは、メッセージを圧縮するために BZip2Input/Output ストリームで圧縮されます。これは数週間うまくいきましたが、最近サーバーのオブジェクトを変更したところ、BZip2Input ストリームがシークをサポートしていないという例外が発生しています (これはサポートしていません)。これは、protobuf が一部のフィールドをスキップできることを検出し、適切にスキップしようとするためだと思います。

この動作を無効にし、データを読み取って protobuf-net にフィールドをスキップさせる方法はありますか? (求めていない)。

更新: 以下に完全なスタック トレースを追加しました。あなたのコメントに基づいて、ストリームには CanSeek コールバックにバグがあるはずです。どう思いますか?


SharpZipLib バグを回避するために、このクラスを作成しました。

0 投票する
0 に答える
423 参照

scala - ダウンロードと解凍 - クライアントコードの簡素化

私はまたあなたの助けが必要なようです :/

次のコードが与えられた場合:

これは、本質的には、URL からリモート ファイルをダウンロードして解凍することです。このコードをよりエレガントで副作用のない方法で書く適切な方法はありますか?

ありがとうございました。

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

linux - 行が繰り返される csv ファイルの最適な圧縮

何百万もの行が繰り返されたり、順番に複製されたりする csv ファイルを圧縮する最適な方法があるかどうかを知りたかったのです。各行には 4 ~ 5 個の要素があります。一意の行は数百しかありませんが、各行が何度も出現するため、ファイル全体のサイズが大きくなります。

gzip や bzip2 などのツールで使われている細かいアルゴリズムについては詳しくありませんが、gzip や bzip2 にこのパターンを指示する方法はないかと考えていました。たとえば、a、b、c、d、e の行が 100 万行ある場合、これは内部的に abcde のエントリとして最適に表すことができ、回数が繰り返される場合はその数のカウントになります (たとえば、abcde が 2 M 回繰り返される場合)。 )。これは、圧縮アルゴリズムが abcdeabcdabcde... を圧縮しようとするため、言うよりも最適です。データがソートされた表形式であり、重複した行/タプルが含まれている場合など、ケースを最適化するための汎用的な方法を探しています。

前もって感謝します。

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

javascript - ストリームを使用してnode.jsで.tar.bz2を抽出するには?

node.js でいくつかの .tar.bz2 ファイルを抽出しようとしています。私はここで、npm、github、および google でこれを検索していますが、すぐに解決できる解決策はありません。

私のファイルはそれぞれ約 25 MB であるため、モジュールを使用してパイプ ストリームを使用するのが最善の方法だと思いtarます (.tar.gz 用の node.js の組み込み ZLib ライブラリから Gunzip を使用する方法と同様です)。このようにして、 を使用して、パイプされた http から直接抽出することもできますrequest

https://github.com/Woodya/node-gzbz2を見つけました (そして、 のように多くの名前が変更されたフォークですgzbz) が、node-gyp. 私が構築しているモジュールは、Python などの外部ライブラリに依存せずに、npm だけを使用して Linux、Mac、および Windows で問題なく動作する必要があるため、これらを使用したくありません。

または、https://github.com/cscott/seek-bzip (およびそのソース) を見て、それが純粋な JavaScript であるのが好きですが、バッファーのみをデコードします。

ここに行く道について誰かアドバイスしてくれませんか?

編集: の作成者はseek-bzip、同期ストリームを非同期ストリームに変換するラッパーを親切に作成しましたが、この修正は、私の場合は望ましくないものnode-fibersを再度使用するかどうかによって異なります。https://github.com/cscott/seek-bzip/issues/1node-gypを参照してください

edit2: 私はまだクロスプラットフォーム ソリューションを探していますが、CLI コマンドを使用してこれを行う簡単な方法を次に示します。

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

bash - bzip された mysqldump ファイルが空かサイズがゼロかどうかを判断する方法は?

mysqldumpコマンドが成功したかどうかをテストする bash 関数を作成したいと考えています。これまでに試したことは、次のように、ダンプ ファイルのサイズがゼロかどうかをテストすることです。

mysqldumpデフォルトのmysqlサーバーがダウンしているときにmysqldumpコマンドを実行すると次のエラーが発生するため、コマンドの終了ステータスをテストするのではなく、この方法でテストすることにしました。

mysqldump: エラーが発生しました: 2002: 接続しようとすると、ソケット '/tmp/mysql.sock' (2) を介してローカル MySQL サーバーに接続できません

このエラーが発生しても、0 バイトの .mssql ファイルが生成されます。また、終了ステータスは何があっても0です。mysqldumpダンプが失敗した場合、スクリプトは終了する必要があり、別のバイナリを指定するか、サーバーをアクティブにする必要があることをユーザーに伝える必要があります。

上記のコードは正常に動作します。mysqldumpただし、圧縮されていないダンプ ファイルを生成したくありません。次のように、bzipしたい:

問題は、[-s]生成される .bz2 ファイルが 14 バイトであるため、これが私の bash テストを中断することです。したがって、圧縮されていない .mssql ファイルのサイズがゼロであっても、同等のアーカイブのサイズはゼロではありません。

それで、これを解決する最善の方法は何ですか?圧縮されていないダンプ ファイルを生成し、テストしてから bzip するだけで済みます。ただし、これを行うにはもっとスマートな方法があると思います。

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

block - Bzip2 ブロックヘッダー: 1AY&SY

これは bzip2アーカイブ形式に関する質問です。Bzip2 アーカイブは、ファイル ヘッダー、1 つ以上のブロック、およびテール構造で構成されます。すべてのブロックは、Pi 番号 0x314159265359 の 6 バイトの BCD エンコード数字である「1AY&SY」で始まる必要があります。bzip2 のソースによると:

問題は、すべての bzip2 アーカイブに、開始位置がバイト境界に揃えられたブロックがあるというのは本当ですか? つまり、bzip2-1.0.5+ ユーティリティである bzip2 の参照実装によって作成されたすべてのアーカイブです。

bzip2 は、ストリームをバイト ストリームではなくビット ストリームとして解析する可能性があると思います (ブロック自体はハフマンによってエンコードされており、設計上バイト アラインされていません)。

言い換えればgrep -c 1AY&SY、ファイル内の bzip2 ブロックの数より大きい場合 (huffman はブロック内で 1AY&SY を生成する可能性がある) または等しい場合は?