Рубрика «zip»

a screenshot of a terminal querying a csv file on the web

Скриншот терминала, запрашивающего файл csv в вебе

Когда был максимальный курс доллара к евро?

Вот небольшая программа, вычисляющая это:

curl -s https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.zip 
| gunzip 
| sqlite3 -csv ':memory:' '.import /dev/stdin stdin' 
  "select Date from stdin order by USD asc limit 1;"

Результат: 2000-10-26. (Можете попробовать запустить её самостоятельно.)

Как это работает:

Читать полностью »

Между человеком и его криптовалютой стояло несколько квинтиллионов вариантов ключей расшифровки

В поисках способа освободить биткоины на сумму $300 000 из старого файла ZIP - 1

В октябре Майкл Стэй получил с LinkedIn странное сообщение. Некий незнакомец потерял доступ к приватным ключам своей криптовалюты и попросил у Стэя помощь в возвращении доступа к его $300 000.

Было не так уж и удивительно, что «Чувак», как называет его Стэй, нашёл бывшего специалиста по безопасности из компании Google. Девятнадцать лет назад Стэй опубликовал работу с детальным описанием технологии взлома зашифрованных ZIP-файлов. Чувак купил в январе 2016 года биткоинов на сумму порядка $10 000, задолго до бума криптовалют. Он зашифровал приватные ключи в ZIP-файле и забыл пароль. И теперь он надеялся, что Стэй может помочь ему взломать его.

На прошедшей недавно конференции Defcon Стэй описал свои эпичные попытки сделать это.
Читать полностью »

В прошлом году я участвовал в соревнованиях JS13K 2019, на которых людям предлагается разрабатывать игры в менее чем 13 КБ кода на JavaScript. Я участвовал с клоном Doom, который назвал… «Ещё один клон Doom» (Yet Another Doom Clone).

Поиграть в него можно здесь. Исходный код выложен сюда.

Зачем создавать клон Doom?

Зачем писать FPS на JavaScript всего в 13 КБ (с учётом сжатия)? По нескольким причинам. Но лучше всего на этот вопрос отвечает раздел FAQ соревнований JS13K «Можно ли использовать WebGL?»:

«Да, но может быть сложно уместить его в 13 килобайта, если вы планируете писать FPS».

Кроме того, в то время я как раз написал 3D-рендерер и хотел поработать над ним ещё. К тому же мне нравится создавать сильно сжатый код. (Например, много лет назад я создал язык и написал компилятор для нового языка, предназначенный специально для использования в код-гольфинге.)

Именно поэтому я выбрал FPS. Остаётся вопрос: «Почему Doom?» На него ответить проще: если вы хотите написать FPS, и чтобы он при этом был небольшим, то Doom — практически самый минималистичный вариант.Читать полностью »

Некоторое время назад, листая форум с материалами по прототипам консолей, наткнулся на фотографии аддона для Dreamcast'а с приводом ZIP.

image

Предполагалось использовать дискеты ёмкостью 100 мегабайт для сохранения сетевых данных, таких как электронная почта и распространения дополнительного контента для игр, например новых карт для Quake III. При этом дискеты были отформатированы так, что не могли быть прочитаны или записаны в обычном приводе для персонального компьютера. Но эта проблема должна была решиться с выпуском специального ПО.

Читать полностью »

Zip-файлы: история, объяснение и реализация - 1

Мне давно было интересно, как сжимаются данные, в том числе в Zip-файлах. Однажды я решил удовлетворить своё любопытство: узнать, как работает сжатие, и написать собственную Zip-программу. Реализация превратилась в захватывающее упражнение в программировании. Получаешь огромное удовольствие от создания отлаженной машины, которая берёт данные, перекладывает их биты в более эффективное представление, а затем собирает обратно. Надеюсь, вам тоже будет интересно об этом читать.

В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Читать полностью »

Продолжение цикла о Zip-архивах и PHP. Предыдущие статьи: Часть 1, Часть 2, Часть 3

Доброго времени суток, дорогие читатели.
На этот раз я хотел бы представить, наверное, заключительную часть цикла о Zip-архивах и PHP.

В этой статье я покажу как прочесть уже существующий архив и для примера мы возьмем photos.zip из прошлой статьи. Чтоб не повторять все процедуры воспользуемся готовым — https://github.com/userqq/images/raw/master/photos.zip.

А теперь давайте на минутку отвлечемся и вспомним, из чего состоит наш архив: сначала идет набор данных упакованных файлов, где каждый упакованный файл предварён структурой Local File Header (LFH), после всех данных у нас идет набор структур Central Directory File Header (CDFH) — это такое оглавление по нашему архиву, в котором перечислены все элементы и позиции их смещения относительно начала файла. А завершает архив End Of Central Directory Record (EOCD) — тут указана позиция начала структур CDFH, их количество и общая длина в байтах. Поэтому архив следует читать с конца, чтоб сначала найти EOCD, потом прочесть структуры CDFH и таким образом получить список файлов в архиве.

FYI: А некоторые форматы, например JPEG, читаются с начала. Поэтому мы можем склеить картинку с архивом, даже банально через cat image.jpeg archive.zip > imagearchive.jpeg, не потеряв функционала. Браузеры и приложения для просмотра картинок будут без каких-либо проблем показывать нам картинку. В то время как любое приложение для чтения zip-архивов, будь то 7z или unzip, сможет преспокойно работать с файлом как с архивом. Например, вот — https://github.com/userqq/images/blob/master/jpegarchive.jpg (Осторожно, эта штука весит около 20мб, поэтому не советую открывать с телефонов или если вам дорог трафик). Таким образом, если вы знаете хостинг картинок, на котором изображения не перекодируются и не обрезаются, вы можете заливать туда не только картинки:) Хотя, мне кажется, сейчас таких уже не найти.
Читать полностью »

Всем привет!

В этой статье я хочу рассказать о том, как выбирал архиватор для сжатия логов нашей фронт-офисной системы.

Подразделение, в котором я работаю, занимается разработкой и сопровождением единой фронт офисной системы Банка. Я отвечаю за ее сопровождение, мониторинг и DevOps.

Наша Система — это высоконагруженное приложение, ежедневно обслуживающее более 5 000 уникальных пользователей. На сегодняшний день — это «монолит» со всеми своими достоинствами и недостатками. Но сейчас активно идет процесс выноса функционала в микросервисы.

Ежедневно наша система генерирует более 130 ГБ «сырых» логов и, несмотря на то, что мы используем ENG стек (Elasticsearch Nxlog Graylog), файловые логи содержат гораздо больше информации (например, stack trace ошибок), поэтому требуют архивирования и хранения.

Так как место хранения ограничено, встаёт вопрос: «А какой архиватор лучше всего справится с этой задачей».

Для решения этого вопроса я написал скрипт на языке PowerShell, который произвел анализ за меня.

Читать полностью »

Продолжение статьи Как выглядит zip-архив и что мы с этим можем сделать.

Предисловие

Доброго времени суток.
И снова в эфире у нас нетрадиционное программирование на PHP.

В прошлой статье уважаемых читателей заинтересовала тема сжатия в ZIP и сохранение потоков в zip. Попробуем сегодня хоть немного раскрыть эту тему.

Читать полностью »

Доброго времени суток, уважаемый Хабр!

За последние пол года кривая дорожка моих пет-проектов завела меня в такие дебри, откуда до сих пор выбраться не представляется возможным. И начиналось то все безобидно — сайт с картинками, но чувство перфекционизма, погоня за халявой, а так же некоторые особенности моего склада ума превратили эту, как изначально планировалось, маленькую прогулку, в настоящее длинное путешествие. Ну и ладно, как говорил один довольно картавый революционер: «Учиться, учиться и еще раз учиться», а мне, волей-неволей, приходится этому напутствию следовать.

Ой, что-то мы отвлеклись от основной темы. Не буду больше вас утомлять пространными речами, а перейду к делу.
Читать полностью »

Идея статьи родилась спонтанно из дискуссии в комментариях к статье «Кое-что об inode».

Хаки при работе с большим числом мелких файлов - 1

Дело в том, что внутренней спецификой работы наших сервисов является хранение огромадного числа мелких файлов. На данный момент у нас порядка сотен терабайт таких данных. И мы натолкнулись на некоторые очевидные и не очень грабельки и успешно по ним прошлись.
Поэтому делюсь нашим опытом, может кому и пригодится.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js