Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » WinRAR (часть 3)

Модерирует : gyra, Maz

Maz (27-08-2020 19:31): WinRAR (часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

gyra

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По вопросам лечения (кряки, патчи и т.д.), а также разблокировки архивов, обращаемся в «Варезник».
Отдельная тема по сборкам WinRAR
Предыдущие части темы: Часть 1 | Часть 2



Официальный русский сайт: win-rar.ru
Официальный e-mail разработчика WinRAR (писать на русском): dev@rarlab.com
 
Финальная английская версия: 5.91 x86 | x64 (29.06.2020)
Финальная русская версия:  5.91 x86 | x64 (29.06.2020)
 
Список изменений на английском языке
(на родном – смотрите файл WhatsNew.txt в дистрибутиве на вашем языке)
Скачать RAR для macOS, FreeBSD, Linux, Android можно здесь.

 
Скачать ранее вышедшие версии также можно с официального сайта.

Версия 3.62 (ru) с подарочным ключом (респект камраду elmorte)

Коллекция всех ранее выходивших версий WinRAR (1995-2020): скачать (253 МБ) [обновлено 30.03.2020]

вместо F.A.Q. || альтернативные архиваторы

Почему опять задерживается русская версия? А при русском разработчике на языке XXX уже давно есть. Не захламляйте тему подобными вопросами.

Кому не нравится новая тема оформления - скачайте с официального сайта rarlab.com (из раздела Themes) и установите себе WinRAR Classic theme by Francesco Indrio: Стандартная (48x36). Мелкие кнопки (24x24)

В теме активно отвечает на вопросы автор архиватора Евгений Рошал! Ситуация уникальная, прошу пользоваться. :)

Всего записей: 7932 | Зарегистр. 18-02-2006 | Отправлено: 12:00 14-12-2016 | Исправлено: Domin0, 13:37 26-08-2020
Aleks78



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Benchmark
Вот только старый рар с новыми архивами не работает

----------
Кешбек на Али до 15%
Digma — лауреат премии pc magazine.

Всего записей: 19197 | Зарегистр. 18-12-2004 | Отправлено: 16:13 06-04-2017
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bulat_Ziganshin
Да я пока и не планирую поддержку XP убирать. Это люди так, для профилактики в очередной раз пугаются, чтобы не передумал Я и Win9x, и NT4, и 2000 убирал, только когда под ними оставались малые доли процента пользователей. Года 2 - 3 XP до такого состояния точно протянет, может и дольше.
 
Ну а просто пообсуждать такую тему, это можно Особенно с учетом, что очередную версию я пока не хочу выкладывать, так как надеюсь дождаться новых иконок от дизайнера.
 
Добавлено:
Skif_off

Цитата:
Собственно, мой пост касался этого и уточнения ниже.

Ссылки в вашем посте интересные, спасибо. Любопытна разница в скорости проникновения Win10 на массовый и корпоративный рынок. Впрочем, то что корпоративный консервативнее, это ожидаемо.
 
Что касается моих уточнений по критериям отказа от поддержки XP, это все достаточно  приблизительно, а не так, что я жду ровно два года или ровно двух процентов пользователей. Может так, может на год-другой дольше или на процент-другой меньше Пока что я отказываться от XP не планирую.

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 16:47 06-04-2017
Bulat_Ziganshin

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal
у меня есть такой большой вопрос. добавление ecc информации к архиву - это отдельное большое искусство. ну т.е. так чтобы не было более уязвимых мест. к примеру multipar кладёт в ecc-файл штук 5 копий крошечной мастер-записи, если все они потерялись - можно выкидывать ecc-файл к чертям.
 
в принципе в rar самая главная проблема отсутствует - каталог распределён по архиву, так что весь его точечным попаданием не убьёшь. но помимо этого есть куча других тонкостей. ты можешь рассказать о том как всё хитро в rar устроено? что сделано хорошо, а что можно было сделать ещё лучше. если конечно это не мешает твоим коммерческим интересам
 
ну и насчёт ldpc - с помощью библиотеки wirehair я сделал свою утилитку которая защищает только один файл. сделано идеально именно в плане неубиваемости - собственно потому и интересно померяться и скорость там сотни мег на десятках тыщ блоков - даже быстрее rsc32. но как обычно забросил, когда стало ясно что всё будет работать )
 
куда интеерсней то, что я разобрадся в математике rsc32. осваиваешь деление многочленов с помощью dft в GF, а дальше всё просто если б это ещё было marketable...

Всего записей: 3408 | Зарегистр. 13-08-2007 | Отправлено: 17:15 06-04-2017
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
metatrop

Цитата:
Или это могут быть просто грамотные пользователи, которые хорошо понимают, что им нужно, а что нет. Вообще не ставлю никаких обновлений сверх 2003 SP2 / XP SP3, без антивируса

Вот из личного опыта. В свое время WinRAR'у досталось за попытку загрузить dll из собственного каталога:
https://archive.cert.uni-stuttgart.de/bugtraq/2016/02/msg00054.html
https://packetstormsecurity.com/files/135665/WinRAR-5.30-DLL-Hijacking.html
Не только WinRAR'у, тогда речь шла про многие инсталляторы и SFX архивы. Сложность в том, что загружать dll из exe каталога пытается даже не обязательно само приложение. Достаточно вызывать какое-нибудь безобидное системное API типа MessageBox, а уже откуда-то изнутри Windows шли попытки загрузки различных dll без указания пути. Чтобы это победить, надо вызвать SetDefaultDllDirectories с LOAD_LIBRARY_SEARCH_SYSTEM32. В XP этой функции нет. В Win7 она есть только после установки KB2533623, но, насколько я помню, пресекает не все попытки загрузки системой dll из exe каталога. И только с Win8 она работает, как и должна. Но пользователя это не волнует, и если WinRAR SFX подгрузит какую-то левую dll из своего каталога, виноватым в понимании пользователя будет WinRAR. Для XP на этот случай приходится городить какие-то костыли в коде, проверять на все возможные dll в exe каталоге, но все равно это менее надежно, чем корректно работающая SetDefaultDllDirectories.

Цитата:
Нет никакого оправдания, если консольная программа не работает на всех системах (кстати, RAR 3.x/4.x работал в Win9x + KernelEx

На всех это на каких? Радио-86РК, CP/M, MS DOS, WinNT 3.1, Win95? Все равно старое в какой-то момент приходится отбрасывать, вопрос только в критерии. Цена поддержки единиц пользователей на слишком старой системе становится слишком высока. Если они перейдут на что-то другое, так тому и быть. Конечно, если речь идет про единицы, а не то, что у XP сейчас.

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 17:36 06-04-2017
Aleks78



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal

Цитата:
Цена поддержки единиц пользователей на слишком старой системе становится слишком высока.  

А какая цена ? Просто не убирать кусок кода который отвечает за работу XP, это так сложно ? Система давно не обновляется, менять/добавлять ничего не надо, просто не убирать

----------
Кешбек на Али до 15%
Digma — лауреат премии pc magazine.

Всего записей: 19197 | Зарегистр. 18-12-2004 | Отправлено: 17:42 06-04-2017
Bulat_Ziganshin

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleks78
а если скопировать этот волшебный кусок кода во все остальные программы, то и они на win95 заработают?
 
ты как-то неправильно это представляешь. вот добавляется или меняется какая-то функциональность. она может неправильно работать на тех или иных конфигах. вот для совместимости с новыми конфигами разработчик должен приложить усилия, а для совместимости со старыми - невыгодно
 
Добавлено:

Цитата:
Радио-86РК

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

Всего записей: 3408 | Зарегистр. 13-08-2007 | Отправлено: 17:51 06-04-2017
Aleks78



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bulat_Ziganshin
Ну с добавлением чего то нового это понятно. Хорошо хоть каждую версию нет таких обновлений Всё равно 80% функционала будет пилится под новую систему а в старой можно просто оставить поддержку только новых архивов например если они изменяться.

----------
Кешбек на Али до 15%
Digma — лауреат премии pc magazine.

Всего записей: 19197 | Зарегистр. 18-12-2004 | Отправлено: 18:05 06-04-2017
Benchmark



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleks78

Цитата:
Всё равно 80% функционала будет пилится под новую систему а в старой можно просто оставить поддержку только новых архивов например если они изменяться.

 
Не всегда достижимо (по крайней мере разумным количеством протраченных времени и усилий). С учётом незначительного (+ постоянно уменьшающегося) количества юзеров старых систем овчинка не стоит выделки.

Всего записей: 6923 | Зарегистр. 01-10-2002 | Отправлено: 18:13 06-04-2017
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bulat_Ziganshin

Цитата:
ты можешь рассказать о том как всё хитро в rar устроено? что сделано хорошо, а что можно было сделать ещё лучше. если конечно это не мешает твоим коммерческим интересам

Коммерческим не мешает. Я просто за 4 года с реализации много забыл. Сейчас попробую вспомнить. Все сказанное ниже это про RAR5, не RAR29.
 
Вся recovery record (RR) хранится в конце архива. В начале архива записано смещение до нее, для быстрого поиска, но если она не нашлась по смещению, RAR будет искать ее по всему архиву по сигнатуре. Как ты сам знаешь, там используются 16-битные коды Рида-Соломона по схеме RS(200+n,n), то есть, для 5% RR на 200 блоков данных будет 10 блоков RS кода. Архив делится на эти 200 (или меньше, если архив маленький) блоков целиком, от начала, и до самой RR. Но дальше каждый из этих 10 (рассмотрим 5% RR) блоков RS кода делится на блоки меньшего размера, насколько я помню, 64кб каждый. Каждый такой 64 кб блок имеет свою сигнатуру, защищен своей CRC и хранит в себе CRC остальных 200 64 килобайтных блоков данных и 9 блоков кода из одной линейки с ним. RAR умеет работать с такими отдельными 64кб блоками, которые, по сути, маленькая самостоятельная RR. Можно убить основную сигнатуру RR, можно повредить другие 64 кб блоки в одном из 10 больших блоков кода, RAR все равно попытается найти целые 64 кб блоки и использовать их. Хранить 200 с лишним CRC, причем, по-моему, CRC64, а не CRC32, в каждом 64кб блоке, это, конечно, накладно, но зато убить такую RR сложнее, любой выживший маленький блок идет в дело. Я посчитал такую избыточность приемлемой. При желании можно было хранить 10 копий CRC по одной на большой блок кода. Меньше, чем 10, по-моему вообще нельзя. Тогда стойкость к множественным повреждениям уже будет определяться не RS(210,10), а числом копий CRC. Теряется смысл 10 блоков кода. По мне, лучше как сейчас в RAR.
То что контрольной суммой должен быть rolling hash, тот же CRC или другой, ты лучше меня знаешь. Это ускоряет поиск сдвинутых данных.
Сейчас подумаю, что еще написать

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 18:16 06-04-2017
Bulat_Ziganshin

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleks78
ну так если тебе достаточно старого фугнкционала, то ты можешь просто пользоваться старой версией верно? суть ведь именно в том, что тебе нужно исправление ощибок, новые фичи
 
кроме того, ты так представляешь, как будто программа идеально модульна, можно один кусочек старого кода выполнить, один кусочек нового. а это не так - иногда получается что изменение в одном модуле приводит к глубокой переделке других. так что в общем случае чтобы реализовать твою схему - придётся просто маинтейнить по одной версии сорцов для каждой ОС
 
опять же чтоб было понятней, наглядный пример - скажем в оглавлении архива у меня хранились имена каталогов без слеша, просто списком типа "C:", "Base", "Compiler" и т.д. и при использовании они сливались со слешем между ними "C:\Base\Compiler". и тут я увидел что это не подходит для UNC, и надо в каждом имени каталога явно запоминать слеш в конце. а это означает переделку везде - в модуле где ищем файлы, где упаковываем, где распаковываем, затем ещё то же самое в sfx, затем то же самое в gui и т.д. как ты думаешь, стоит мне две версии этого кода сохранять повсюду и продолжать маинтейнить или как-нибудь обойтись одной новой?
 
к ОС это отношения не имеет, просто под руку пример попался чтобы ты идею понял.

Всего записей: 3408 | Зарегистр. 13-08-2007 | Отправлено: 18:34 06-04-2017
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bulat_Ziganshin

Цитата:
а что можно было сделать ещё лучше.

Теоретически можно было бы распределить RR частями внутри архива, чтобы она не сидела целиком в конце. Но практически это очень серьезные заморочки с реализацией. Нам ведь не надо, чтобы каждый такой кусочек RR защищал только предшествующий ему кусок архива. Это бы снизило размер максимального восстановимого непрерывного повреждения. Нам надо, чтобы вся RR защищала весь архив. И размер архива мы не знаем, пока он не создан. То есть, пришлось бы сначала создать архив, потом для него посчитать RR, а потом переписывать это дело в новый файл слоями. И при работе с архивом такие куски RR обходить. Муторно, да и не факт, что реально сильно полезно. Если нынешнюю RR в конце архива оторвало целиком, ну, значит, она уже пожертвовала собой ради спасения данных Все равно, больше, чем свой размер, она восстановить не сможет. А к мелким повреждениям в своей структуре она достаточно устойчива, как я описал выше.
 
Так что, что можно было сделать лучше, я с ходу и не скажу.

Цитата:
куда интеерсней то, что я разобрадся в математике rsc32. осваиваешь деление многочленов с помощью dft в GF, а дальше всё просто

Это реально вызывает уважение Я на освоение матричных операций с RS16 тогда где-то месяц потратил, и это еще до оптимизации с SSE.

Цитата:
если б это ещё было marketable...

Про marketable согласен. Пользователю еще интересно, есть ли в принципе в утилите функция восстановления данных. Но в детали реализации вдаваться мало кто будет. Я тогда был реально горд за новую RR в RAR5, на порядок более устойчивую к множественным повреждениям, чем основанная на XOR в RAR4. Но маркетинговое значение этого изменения для большинства пользователей было небольшим. Была RR, осталась RR, размер непрерывного повреждения для обеих одинаков, а старая, так даже быстрее работала

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 18:36 06-04-2017
Bulat_Ziganshin

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal
ты только пиши в один пост и по возможности понятно для пользователей. будет ещё один пункт в фак, иначе бы я мог и по почте спросить

Всего записей: 3408 | Зарегистр. 13-08-2007 | Отправлено: 18:37 06-04-2017
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleks78
Хотя бы то, что для вызова новых функций API приходится использовать GetModuleHandle и GetProcAddress вместо того, чтобы просто вызвать такую функцию по имени, уже отнимает время. То есть, поддержка старых ОС делает написание нового кода в этой ситуации более трудоемким, и код получается менее читаемым. Плюс проверки версии ОС его тоже не украшают.
 
Добавлено:
Bulat_Ziganshin
Вроде написал, только в два поста получилось. Если что забыл, спрашивай.

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 18:43 06-04-2017
Aleks78



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bulat_Ziganshin

Цитата:
ну так если тебе достаточно старого фугнкционала, то ты можешь просто пользоваться старой версией верно? суть ведь именно в том, что тебе нужно исправление ощибок, новые фичи  

Ещё раз напишу если в первый раз никто не заметил. Новый функционал не интересен как и фичи. Как было недавно что архивы созданные в 5-й версии 4-я уже не открывает. Народ кстати до сих пор на форуме на этом обламывается Вот в чем дело а не в том что можно пользоваться старой версией, спасибо а то не догадался бы никогда

----------
Кешбек на Али до 15%
Digma — лауреат премии pc magazine.

Всего записей: 19197 | Зарегистр. 18-12-2004 | Отправлено: 18:54 06-04-2017
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bulat_Ziganshin
Если интересно, сигнатура каждого 64кб блока RS кода состоит из 4 байт: {RB}
Причем, каждый такой блок хранит и номер своей большой секции (одной из 10 в нашем примере), и позицию первого блока данных, для того чтобы искать другие блоки кода из этого же набора в поврежденном архиве.  
 
Добавлено:
Aleks78
Кстати, еще один момент, новые версии компиляторов в какой-то момент перестают поддерживать работу полученных с их помощью exe под старыми версиями Windows. У MSVC2008 не было поддержки Win9x, у MSVC2015  - Win2000. Не обновлять можно, но это опять героически преодолевать трудности. То же SEE[n] проще использовать на новых компиляторах, со встроенной поддержкой соответствующих команд. То есть, опять повышенные трудозатраты на поддержку старых систем.

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 19:12 06-04-2017
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Про поддержку старых программ и обратную совместимость...
вот тут http://www.dostips.com/forum/viewtopic.php?f=3&t=7791 хохмы ради на Windows 10 в файле директивы для стандартной виндовой iexpress.exe написали тип компрессии "quantum". Она уже больше двадцати лет не поддерживается в cab-архивах, только LZX и MSZIP. Iexpress запросил diamond.exe образца 1996-го года(предыдущее название makecab.exe) и, получив желаемое - упаковал в quantum! Это на десятке то, в 2017-м году... Майкрософт крут(когда не надо) ))

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 19:53 06-04-2017 | Исправлено: igor_andreev, 19:57 06-04-2017
Aleks78



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal

Цитата:
Кстати, еще один момент, новые версии компиляторов в какой-то момент перестают поддерживать работу полученных с их помощью exe под старыми версиями Windows.  

Ну вот это достаточно весомо.  

Цитата:
То есть, опять повышенные трудозатраты на поддержку старых систем.

Ну дальше видно будет, в конце концов не будет поддержки - будет другой архиватор как максимум.

----------
Кешбек на Али до 15%
Digma — лауреат премии pc magazine.

Всего записей: 19197 | Зарегистр. 18-12-2004 | Отправлено: 20:13 06-04-2017
Embos

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal
Вы наверно не занимаетесь коммерческой составляющей Winrar, но никогда не было мыслей у Вас или "издателей" сделать лайт-версию? (например, только для распаковки архивов)
Или хотя бы региональную цену для России?
Цена кусается...

Всего записей: 68 | Зарегистр. 10-10-2010 | Отправлено: 20:56 06-04-2017
lvqcl

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aleks78

Цитата:
Ещё раз напишу если в первый раз никто не заметил. Новый функционал не интересен как и фичи. Как было недавно что архивы созданные в 5-й версии 4-я уже не открывает.

 
Я не понял - так нужен новый функционал (поддержка RAR5) или не нужен?

Всего записей: 1226 | Зарегистр. 03-02-2007 | Отправлено: 21:01 06-04-2017
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Embos
Ну бесплатный лайт всегда доступен. Только он в виде консольной утилиты unrar.exe

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 21:03 06-04-2017
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

Компьютерный форум Ru.Board » Компьютеры » Программы » WinRAR (часть 3)
Maz (27-08-2020 19:31): WinRAR (часть 4)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru