Парсер для rxdata, rvdata, rvdata2 файлов сохранений
15 000 руб. за проект
Необходимо доработать библиотеку ruby marshal https://github.com/d9pouces/RubyMarshal
чтобы получить возможность распаковывать/запаковывать .rxdata, rvdata и rvdata2 файлы, которые предоставляют собой дамп маршалинга языка руби.
Важно - в проекте есть ряд явных проблем (в руби хешом может выступать любой объект, в питоне только хешируемые => питонячьи дикты иногда разламываются), так и неявных как
- точность флоата для питона и руби разнятся (поправить мантиссу несложно, но важно делать это всегда консистентно)
- для пользовательских или других классов, а также линок (указатель на саму себя) нужно делать бектрекинг, иначе при запаковке файл ломается
- поддерживаются все типы и нет никаких заглушек
Примеры файлов https://disk.yandex.by/d/Gsm8lxGzw7ngFw.
Требования к решению:
- файл подается в виде открытого стрима (BytesIO), во время всех процедур никаких кеши/файлы не пишутся, результат операции - собранные питонячьи структуры
- Полученные структуры отправляются на запаковку и получаем результат опять в виде BytesIO и его содержимое полностью идентично исходному (не допускается отклонений в точности, ссылок или типах записанных данных).
- Конечное решение это поправленная или переделанная библиотека, с полезными комментариями и тестами, доказывающие работоспособность и возможность найти ошибки/неточности
- Язык решения - предпочтительно питон, допустим руби но тогда придется запилить решение в виде лямбда-функции, которая принимает ссылку на с3 (залитый файл), процессит, заливает результат в виде файла на другой бакет с3 и отдает на него ссылку в ответе. Для питона достаточно готовой библиотеки с интерфейсом
Очень желателен - опыт или желание разобраться в работе опкодов, руби и умение выстраивать конечное решение.
Полезные ссылки:
- float prec ⇒ mant dig https://docs.python.org/3/library/sys.html
- реализация маршалинга в руби https://github.com/ruby/ruby/blob/master/marshal.c
- реализация маршалинга в опале https://github.com/opal/opal/blob/f79df3a6a4a751839f7dc353699a72a2b49c2530/opal/corelib/marshal/read_buffer.rb
- а так же ссылка на игровой фреймворк, который генерит эти файлы https://www.rpgmakerweb.com/products/rpg-maker-vx
В процессе выполнения окажу всю посильную помощь, снабжу дополнительными файлами для более точечного тестирования.
Кандидату необходимо ознакомиться с файлами, его содержимым и рассказать мне закономерность необходимая для распаковки, которая существуют в этих файлах но практически никогда не встретишь в руби дампе.
чтобы получить возможность распаковывать/запаковывать .rxdata, rvdata и rvdata2 файлы, которые предоставляют собой дамп маршалинга языка руби.
Важно - в проекте есть ряд явных проблем (в руби хешом может выступать любой объект, в питоне только хешируемые => питонячьи дикты иногда разламываются), так и неявных как
- точность флоата для питона и руби разнятся (поправить мантиссу несложно, но важно делать это всегда консистентно)
- для пользовательских или других классов, а также линок (указатель на саму себя) нужно делать бектрекинг, иначе при запаковке файл ломается
- поддерживаются все типы и нет никаких заглушек
Примеры файлов https://disk.yandex.by/d/Gsm8lxGzw7ngFw.
Требования к решению:
- файл подается в виде открытого стрима (BytesIO), во время всех процедур никаких кеши/файлы не пишутся, результат операции - собранные питонячьи структуры
- Полученные структуры отправляются на запаковку и получаем результат опять в виде BytesIO и его содержимое полностью идентично исходному (не допускается отклонений в точности, ссылок или типах записанных данных).
- Конечное решение это поправленная или переделанная библиотека, с полезными комментариями и тестами, доказывающие работоспособность и возможность найти ошибки/неточности
- Язык решения - предпочтительно питон, допустим руби но тогда придется запилить решение в виде лямбда-функции, которая принимает ссылку на с3 (залитый файл), процессит, заливает результат в виде файла на другой бакет с3 и отдает на него ссылку в ответе. Для питона достаточно готовой библиотеки с интерфейсом
Очень желателен - опыт или желание разобраться в работе опкодов, руби и умение выстраивать конечное решение.
Полезные ссылки:
- float prec ⇒ mant dig https://docs.python.org/3/library/sys.html
- реализация маршалинга в руби https://github.com/ruby/ruby/blob/master/marshal.c
- реализация маршалинга в опале https://github.com/opal/opal/blob/f79df3a6a4a751839f7dc353699a72a2b49c2530/opal/corelib/marshal/read_buffer.rb
- а так же ссылка на игровой фреймворк, который генерит эти файлы https://www.rpgmakerweb.com/products/rpg-maker-vx
В процессе выполнения окажу всю посильную помощь, снабжу дополнительными файлами для более точечного тестирования.
Кандидату необходимо ознакомиться с файлами, его содержимым и рассказать мне закономерность необходимая для распаковки, которая существуют в этих файлах но практически никогда не встретишь в руби дампе.
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.