[О блоге] [наверх] [пред] [2021-10-19 14:54:56+03:00] [cace83e27a1acafe57f32cc5eee4bb1078f20e74]
Темы: [web]

Улучшения WARC-а в tofuproxy

https://iipc.github.io/warc-specifications/specifications/warc-zstd/
Прежде сжатые WARC-и в tofuproxy поддерживались, но никакого
оптимального индексирования и перемещения по ним (по сегментам gzip или
frame-ам zstd) не было. Теперь во время парсинга WARC-а все эти смещения
учитываются и кладутся в индекс.

С gzip-ом проблем не возникало, а вот с Zstandard все Go-шные библиотеки
меня не устраивают: никто не предоставляет возможности остановится после
чтения frame-а (кто-то предоставлял, но не работал по факту, падал).
Залез в исходный код, но узнать при этом точное смещение начало/конца
кадров как-то геморройно. В итоге написал на Си утилиту: zstd идёт в
stdin, декомпрессия в stdout, в 3-ий файловый дескриптор TSV таблица
смещений кадров и декомпрессированных данных.

Взялся писать zstd компрессор который бы делал multi-frame компрессию
WARC-ов, как это описано в черновике .warc.zst "стандарта", но он упорно
не хотел заполнять размер кадров корректно (это опциональное поле), чего
требовал стандарт. В итоге написал другую Си утилиту для этого, в
которой без проблем всё формирую.

.warc.zst оказывается вовсю уже делаются не первый год в Internet
Archive. Более того, они делают сжатие с встроенным словарём, который
тоже у меня поддерживается. Например:
https://archive.org/details/archiveteam_yahooanswers_20210422220546_c4fac540

    [оставить комментарий]