问题标签 [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 这种模式。例如,如果我有 100 万行 a、b、c、d、e,那么在内部这可以最佳地表示为 abcde 的一个条目,如果重复次数(例如 abcde 重复 2 M 次) )。这将比说更优化,因为压缩算法尝试压缩 abcdeabcdeabcde...。我正在寻找一种通用方法来优化案例,因为这些案例中的数据采用排序的表格格式并包含重复的行/元组。

提前致谢。

0 投票
1 回答
2519 浏览

javascript - 如何使用流在 node.js 中提取 .tar.bz2?

我正在尝试在 node.js 中提取一些 .tar.bz2 文件。我在这里,在 npm,github 和谷歌搜索这个,但没有现成的解决方案。

我的文件每个约为 25mb,所以我认为最好的方法是在带有tar模块的管道流中(类似于你如何使用来自 node.js 的内置 ZLib 库的 Gunzip 用于 .tar.gz)。这样我也可以使用request.

我找到了https://github.com/Woodya/node-gzbz2(它有很多重命名的叉子,比如gzbz),但它们需要使用node-gyp. 我不想使用这些,因为我正在构建的模块必须在 linux、mac 和 windows 上使用 npm 并且不依赖于 python 等外部库而无需麻烦地工作。

或者,我查看https://github.com/cscott/seek-bzip(及其来源),我喜欢它是纯 javascript 的方式,但它只解码缓冲区。

有人可以在去这里的路上给我建议吗?

编辑:作者seek-bzip创建了一个包装器,将他的同步流转换为异步流,但这个修复取决于node-fibers哪个再次使用node-gyp哪个在我的情况下是不可取的。见https://github.com/cscott/seek-bzip/issues/1

edit2:我仍在寻找跨平台解决方案,但这是使用 CLI 命令执行此操作的快速方法:

0 投票
1 回答
150 浏览

c++ - ROOT 和 libbz2 的问题

我正在尝试将 libbz2 库与 ROOT 框架一起使用,但我没有取得任何成功。我使用 libbz2 编写了没有 ROOT 的测试应用程序,它工作正常。这是我的代码:

他是我的makefile:

当我尝试将此代码与 ROOT 框架一起使用时,编译失败并显示以下消息:

除了标题之外,我的所有代码都是相同的:

bzlib.h 中的第 275 行包含以下代码:

这是右括号

我该如何解决这个问题?

0 投票
2 回答
491 浏览

bash - 如何确定 bzip 压缩的 mysqldump 文件是否为空/零大小?

我想编写一个 bash 函数来测试mysqldump命令是否成功。到目前为止我尝试的是测试转储文件是否为零大小,如下所示:

我决定用这种方式进行测试,而不是测试mysqldump命令的退出状态,因为当默认的 mysql 服务器关闭时,运行mysqldump命令会出现此错误:

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 尝试连接时

即使它抛出了这个错误,它仍然会生成一个 0 字节的 .mssql 文件。另外,退出状态无论如何都是0。如果转储失败,脚本必须退出,并且需要与用户沟通他们需要指定不同的mysqldump二进制文件或激活他们的服务器。

上面的代码工作正常。但是,我不想mysqldump生成未压缩的转储文件。我想bzip它,像这样:

问题是,这打破了我的[-s]bash 测试,因为它生成的 .bz2 文件是 14 个字节。因此,即使未压缩的 .mssql 文件大小为零,等效存档的大小也不为零。

那么解决这个问题的最佳方法是什么?我可以生成一个未压缩的转储文件,对其进行测试,然后对其进行 bzip 压缩。我怀疑有一种更聪明的方法可以做到这一点。

0 投票
1 回答
2468 浏览

block - Bzip2 块头:1AY&SY

这是关于 bzip2存档格式的问题。任何 Bzip2 存档都由文件头、一个或多个块和尾部结构组成。所有块都应以“1AY&SY”开头,Pi 编号的 6 字节 BCD 编码数字 0x314159265359。根据bzip2 的来源

问题是:所有 bzip2 档案都将具有与字节边界对齐的块,这是真的吗?我的意思是所有由 bzip2 的参考实现创建的档案,bzip2-1.0.5+ 实用程序。

我认为 bzip2 可能不会将流解析为字节流,而是解析为比特流(块本身由 huffman 编码,设计上不是字节对齐的)。

所以,换句话说:如果grep -c 1AY&SY更大(霍夫曼可能会在块内生成 1AY&SY)或等于文件中 bzip2 块的计数?

0 投票
1 回答
656 浏览

c - 如何在 C 中有效地解析大型 bz2 xml 文件

我想做的事:

  • 定期下载 OSM (OpenStreetMap) 数据(或使用差异更新)
  • 解析该数据,这是一个 bzip2 压缩的 xml,并将与我相关的部分存储在我的数据库中,尽可能提高内存 + cpu 效率(运行时并不是什么大问题)

我有的:

  • xxx.osm.bz2文件(bzip2压缩xml),压缩29GB,未压缩约400GB
  • 软件在 debian linux 上运行,没有 vm 或任何涉及的东西

具体问题,详细说明我的问题是什么:

  • 我找到了 c++ 的 bzip2 文件流库,但没有找到如何在 c 中处理这个问题(顺序解压缩数据并同时使用(在我的情况下解析)它),我应该怎么做?
  • libxml2 和所有其他处理 xml 的 c 可用库我发现解析整个 xml,然后让你处理它,但我真的不想在内存中有几个 GB 的 xml 只是为了按顺序过滤它 - 我是吗libxml2 错了,它实际上有这样的功能?或者我可以使用其他库吗?
  • 也许甚至有一个更高级的库来做到这一点,它已经专门用于 OSM 数据?找不到类似的东西,他们提供的工具并没有真正的帮助(我不打算先用 Osmosium 等过滤数据,然后用我的代码再次过滤,我认为这将是非常低效的)

我希望我能够清楚地说明我的问题,如果有人至少可以为我指出正确的方向,我将非常感激。

非常感谢。


更新:发布此消息后,我发现 libxml2 实际上从 2.5.0 版开始提供 xmlTextReader,这部分解决了我的问题 - 但只是部分解决了我的问题,因为我仍然不知道如何将它与顺序 bz2 文件读取结合起来(并且我当然,仍然对完全不同的解决方案持开放态度)。


更新 2:解决方案必须从永久运行的进程中工作,并且应该(如第 2 点所述)内存+cpu 高效,因此除此之外,不应将数据复制数十次(在内存或磁盘上)。

0 投票
2 回答
719 浏览

c++ - 在 iOS 应用程序中解压缩 bzip2

我正在开发一个需要不时下载约 50 MB 数据的 iOS 应用程序。bzip2 给了我最好的压缩率(将大小减小到 8 MB)。

问题是:如何解压app中的数据?

我做了一些研究——我发现的唯一两件事是 Keka(但完整的源代码不是公开的)和 bzip2 命令行工具的 C++ 源代码,这对我来说太长太复杂了,无法对我的在给我的时间内应用程序。

我正在寻找类似http://commons.apache.org/proper/commons-compress/的东西,它被 Android 版本的应用程序使用。

如果您知道如何使用 7zip 而不是 bzip2 来做到这一点,那就可以了——只是效率稍低了一点。