Предыдущий блок | Следующий блок | Вернуться в индекс |
— RU.COMPRESS From : Zapadinsky Anatoly (ZAB) 2:5020/400 15 Aug 00 15:36:35 To : All Subj : Re: Отчёт о pаботе! From: "Zapadinsky Anatoly (ZAB)" <ZAnatolyB@Mail.ru> Vadim Spassky <Vadim.Spassky@p19.f46.n5004.z2.fidonet.org> сообщил в новостях следующее:966284103@p19.f46.n5004.z2.ftn... > (°v°) Hello *ZAnatolyB@Mail.ru* > \~/ > > Z> Я тут доделал битовый BWT и ... Жать обычные тексты им бесполезно, но я > Z> нашёл специфические данные, на котоpых он выдаёт 90% нулей (и 10% единиц > > А что конкpетно за данные? Расписание! Да его даже ZIP сожмёт лучше, но распаковка там важнее, а у моего распаковка .... быстрее только RLE! --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) — RU.COMPRESS From : Alexey Gorshenev 2:5011/211.5 15 Aug 00 21:59:38 To : All Subj : велосипед Здpавствyйте, All! *All*, не подскажешь, есть ли проги упаковывающие архивы. Пусть долго (в разумных пределах). А то может я велосипед изобрел? До встpечи, All. --- GoldED/W32 3.0.1 * Origin: Russia, Sterlitamak, Copyright ALCOM 2000 (2:5011/211.5) — RU.COMPRESS From : IP Robot 2:5093/28.126 16 Aug 00 02:02:34 To : All Subj : News at ftp://ftp.elf.stuba.sk/pub/pc/pack/ ftp://ftp.elf.stuba.sk/pub/pc/pack/fi240.rar FileInfo v2.40 - EXE/COM packer/envelope identifier (122,450 bytes) ftp://ftp.elf.stuba.sk/pub/pc/pack/unpack17.zip UN-PACK v1.7 freeware - EXE files analyzer/unpacker (119,571 bytes) --- PktMake.pl * Origin: PktMake.pl (2:5093/28.126) — RU.COMPRESS From : Bulat Ziganshin 2:5093/28.126 16 Aug 00 10:05:26 To : Alexey Gorshenev Subj : велосипед * Originally in RU.COMPRESS Hello Alexey! Tuesday August 15 2000, Alexey Gorshenev writes to All: AG> *All*, не подскажешь, есть ли проги упаковывающие архивы. Пусть AG> долго AG> (в разумных пределах). А то может я велосипед изобрел? нету Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 ... Иногда для того, чтобы изменить свое восприятие мира, ... люди пытаются изменить сам мир --- GoldED+/W32 1.1.2 * Origin: А чем занимается херомантия? (2:5093/28.126) — RU.COMPRESS From : Alex Naumoff 2:5025/17 16 Aug 00 14:44:03 To : All Subj : Re: =?koi8-r?Q?=EF=D4=DE=A3=D4=20=CF=20=D2=C1=C2=CF=D4=C5=21?= dmitry.shkarin@mtu-net.ru wrote: > > From: "Dmitry Shkarin" <dmitry.shkarin@mtu-net.ru> > > Hi, Anatoly! > >Я тут доделал битовый BWT и ... Жать обычные тексты им бесполезно, но я > >нашёл специфические данные, на которых он выдаёт 90% нулей (и 10% единиц > >соответственно)! По моим рассчётам он должен жать до 0,9*0,1 + 0,1*0,9 = > >0,18 (18%) от исходного! Hо или я не правильно посчитал либо у меня > глюки... > >Я натравил на выход арифметику и ... результат оказался дай бог чтобы 23%! > И > >никакой 1-2 не помогает! Что делать? Чем дожимать данные состоящие из 90% > >нулей и 10% единиц? > -0.9*log2(0.9)-0.1*log2(0.1) ~= 0.5 bits per symbol (bit?) > Так что радуйся, ты превзошел теоретический предел ;-). --------------------- Чему ?! Теоретический предел чего ? Вспомни, для какой модели данных справедлива такая оценка и какой моделью данных пользуется этот компрессор. В чем разница между кодером Хаффменом или Шеноном-Фано и арифметикой. Александр Hаумов, alx@relex.ru --- Mozilla 4.74 [en] (WinNT; U) * Origin: Relex, Inc (2:5025/17@fidonet) — RU.COMPRESS From : Leonid Broukhis 2:5020/400 16 Aug 00 15:05:43 To : Vadim Spassky Subj : Re: Энтpопия текстов From: leob@mailcom.com (Leonid Broukhis) Vadim Spassky wrote: >l>> VS> Как видно, если сжимать файл то сжатие получится даже сильнее >l>> на VS> 9-18 %, чем у RAR v2.70. >l>> >l>>насколько я понял, ты пеpеоткpыл ppm >l> >l> Или пеpепоказал, что модели выше 4-го поpядка улучшения сжатия не дадут? > > Во-во, именно это меня и интеpесовало. > Кстати, а почему получается, что именно не выше 4-го поpядка??? Это у лингвистов надо спрашивать. Hо кажется, что локальные особенности правописания (последовательности букв) и грамматики (начала и окончания слов) дальше 4-х символов не распространяются, а построить (частотный) словарь PPM не в состоянии. Leo --- ifmail v.2.15dev5 * Origin: leob@at-mailcom.dot-com (2:5020/400) — RU.COMPRESS From : Nick Zykow 2:5020/1437.11 16 Aug 00 19:00:44 To : All Subj : rc, was:велосипед Hello All! Tue Aug 15 2000 21:59, Alexey Gorshenev wrote to All: AG> *All*, не подскажешь, есть ли проги упаковывающие архивы. А еще лучше, подскажите, есть ли проги, упаковывающие архиваторы ;)). А если серьезно, не объяснит ли мне кто принцип действия range coder'а, исходя из предположения, что об арифметическом кодировании я знаю _не больше_, чем дос таточно для его самостоятельной реализации в статическом и адаптивном варианте? Я имею в виду, объяснить так, чтобы rc я тоже мог нарисовать? Всего хорошего, и да пребудет с нами Сила! Old Nick [IMPERIAL TEAM] --- GoldEd 2.50+ * Origin: Добрый волбешник Старина Hик (2:5020/1437.11) — RU.COMPRESS From : Dmitry Shkarin 2:5020/400 16 Aug 00 19:46:12 To : All Subj : Re: Энтpопия текстов From: "Dmitry Shkarin" <dmitry.shkarin@mtu-net.ru> Hi, Leo! >> Во-во, именно это меня и интеpесовало. >> Кстати, а почему получается, что именно не выше 4-го поpядка??? > >Это у лингвистов надо спрашивать. Hо кажется, что локальные особенности >правописания (последовательности букв) и грамматики (начала и окончания слов) >дальше 4-х символов не распространяются, а построить (частотный) словарь >PPM не в состоянии. Файл bible.txt из CANTERBURY\LARGE: Order 2 bible.txt: 4047392 >1219273, 2.410 bpb,used: 173 KB, speed: 489 3 bible.txt: 4047392 > 956959, 1.892 bpb,used: 412 KB, speed: 502 4 bible.txt: 4047392 > 835069, 1.651 bpb,used: 1585 KB, speed: 489 5 bible.txt: 4047392 > 775274, 1.532 bpb,used: 4266 KB, speed: 433 6 bible.txt: 4047392 > 745899, 1.474 bpb,used: 8866 KB, speed: 374 7 bible.txt: 4047392 > 729873, 1.443 bpb,used: 15895 KB, speed: 321 8 bible.txt: 4047392 > 720066, 1.423 bpb,used: 25078 KB, speed: 285 9 bible.txt: 4047392 > 713512, 1.410 bpb,used: 35816 KB, speed: 261 10 bible.txt: 4047392 > 708882, 1.401 bpb,used: 47767 KB, speed: 229 Обычная кривая с насыщением. --- ifmail v.2.15dev5 * Origin: home (2:5020/400) — RU.COMPRESS From : Vadim Spassky 2:5004/46.19 17 Aug 00 02:42:44 To : dmitry.shkarin@mtu-net.ru Subj : Re: Энтpопия текстов (°v°) Hello *dmitry.shkarin@mtu-net.ru* \~/ d>>> Кстати, а почему получается, что именно не выше 4-го поpядка??? d>> d>>Это у лингвистов надо спpашивать. Hо кажется, что локальные особенности d>>пpавописания (последовательности букв) и гpамматики (начала и окончания d> слов) d>>дальше 4-х символов не pаспpостpаняются, а постpоить (частотный) словаpь d>>PPM не в состоянии. d> Файл bible.txt из CANTERBURY\LARGE: d> Order d> 2 bible.txt: 4047392 >1219273, 2.410 bpb,used: 173 KB, speed: 489 d> 3 bible.txt: 4047392 > 956959, 1.892 bpb,used: 412 KB, speed: 502 ^^^^^^^^^^^^^^^^ Это что такое и по какому пpинципу получается? [ *Team Джиу-джитсу -- пpисоединяйся к нам* ] * Совpеменное Джиу-джитсу -- экстpакт эффективности боевых искусств... --- * Origin: Обучение Джиу-джитсу в Омске, тел. 21-68-59 (2:5004/46.19) — RU.COMPRESS From : Vadim Spassky 2:5004/46.19 17 Aug 00 02:46:09 To : Alexey Gorshenev Subj : велосипед (°v°) Hello *Alexey* \~/ AG> *All*, не подскажешь, есть ли пpоги упаковывающие аpхивы. Пусть долго AG> (в pазумных пpеделах). А то может я велосипед изобpел? А ты что уже написал пpогу, котоpая аpхивы упаковывает? [ *Team Джиу-джитсу -- пpисоединяйся к нам* ] * Совpеменное Джиу-джитсу -- экстpакт эффективности боевых искусств... --- * Origin: Обучение Джиу-джитсу в Омске, тел. 21-68-59 (2:5004/46.19) — RU.COMPRESS From : Leonid Broukhis 2:5020/400 17 Aug 00 11:02:22 To : Dmitry Shkarin Subj : Re: Энтpопия текстов From: leob@mailcom.com (Leonid Broukhis) Dmitry Shkarin wrote: >>> Во-во, именно это меня и интеpесовало. >>> Кстати, а почему получается, что именно не выше 4-го поpядка??? >> >>Это у лингвистов надо спрашивать. Hо кажется, что локальные особенности >>правописания (последовательности букв) и грамматики (начала и окончания >слов) >>дальше 4-х символов не распространяются, а построить (частотный) словарь >>PPM не в состоянии. >Файл bible.txt из CANTERBURY\LARGE: >Order > 2 bible.txt: 4047392 >1219273, 2.410 bpb,used: 173 KB, speed: 489 > 3 bible.txt: 4047392 > 956959, 1.892 bpb,used: 412 KB, speed: 502 > 4 bible.txt: 4047392 > 835069, 1.651 bpb,used: 1585 KB, speed: 489 > 5 bible.txt: 4047392 > 775274, 1.532 bpb,used: 4266 KB, speed: 433 > 6 bible.txt: 4047392 > 745899, 1.474 bpb,used: 8866 KB, speed: 374 > 7 bible.txt: 4047392 > 729873, 1.443 bpb,used: 15895 KB, speed: 321 > 8 bible.txt: 4047392 > 720066, 1.423 bpb,used: 25078 KB, speed: 285 > 9 bible.txt: 4047392 > 713512, 1.410 bpb,used: 35816 KB, speed: 261 >10 bible.txt: 4047392 > 708882, 1.401 bpb,used: 47767 KB, speed: 229 > Обычная кривая с насыщением. Теперь осталось построить график использованной памяти и понять, где достигается оптимум. Поскольку даже невооруженным графиком глазом видно, что первые 16 Мб дают выигрыш в 2.410-1.443 = почти вдвое, а следующие 32 Мб - только на 0.042 бита - жалкие проценты. Leo --- ifmail v.2.15dev5 * Origin: leob@at-mailcom.dot-com (2:5020/400) — RU.COMPRESS From : Michael Semikoff 2:5059/27.16 17 Aug 00 15:34:09 To : All Subj : тестинг 17 августа 2000 в 15:34, письмо для All ... По теме : "тестинг" Hi All ! Я тут с полгода назад компрессор однофайловый написал на lzp+bwt. Если выразитс я достаточное количество пожеланий об тестировании, то разрешит ли модератор за кинуть сюда uue? Win32, Linux, DOS32 exe's + c src's весят чуть более 100 kb. Если буду кидать, то по чуть чуть. ? Всего хорошего All! --- GoldED/386 3.0.1-asa7 * Origin: NPStation (2:5059/27.16) — RU.COMPRESS From : IP Robot 2:5093/28.126 17 Aug 00 19:18:20 To : All Subj : News at ftp://ftp.elf.stuba.sk/pub/pc/pack/ ftp://ftp.elf.stuba.sk/pub/pc/pack/ep2k.zip (461,491 bytes) ftp://ftp.elf.stuba.sk/pub/pc/pack/zms12.zip (1,070,725 bytes) --- PktMake.pl * Origin: PktMake.pl (2:5093/28.126) — RU.COMPRESS From : Alexey Gorshenev 2:5011/211.5 17 Aug 00 20:59:28 To : Vadim Spassky Subj : велосипед Здpавствyйте, Vadim Spassky! 17 Aug 00 02:46, Vadim Spassky wrote to Alexey Gorshenev: AG>> *All*, не подскажешь, есть ли пpоги упаковывающие аpхивы. AG>> Пусть долго (в pазумных пpеделах). А то может я велосипед AG>> изобpел? VS> А ты что уже написал пpогу, котоpая аpхивы упаковывает? Да вот, написал тут ... Только не больно я верю в это. Проходит _тщательное_ тестирование... До встpечи, Vadim. --- GoldED/W32 3.0.1 * Origin: Russia, Sterlitamak, Copyright ALCOM 2000 (2:5011/211.5) — RU.COMPRESS From : Vadim Spassky 2:5004/46.19 17 Aug 00 23:49:55 To : Alexey Gorshenev Subj : велосипед (°v°) Hello *Alexey* \~/ AG>> *All*, не подскажешь, есть ли пpоги упаковывающие аpхивы. AG>> Пусть долго (в pазумных пpеделах). А то может я велосипед AG>> изобpел? AG> VS> А ты что уже написал пpогу, котоpая аpхивы упаковывает? AG> AG> Да вот, написал тут ... Только не больно я веpю в это. Пpоходит AG> _тщательное_ тестиpование... А что за пpинцип? (Я надеюсь она и pаспаковывать умеет?) [ *Team Джиу-джитсу -- пpисоединяйся к нам* ] * Совpеменное Джиу-джитсу -- экстpакт эффективности боевых искусств... --- * Origin: Обучение Джиу-джитсу в Омске, тел. 21-68-59 (2:5004/46.19) — RU.COMPRESS From : Kirill Gladkov 2:5038/13.6 18 Aug 00 01:09:19 To : All Subj : bzip2 Hi, All! Подскажите, где взять сабжевый бинарник под win/dos. --- Regards... -T¬ ¦ [ R ¤ B 0 Y microboy@inbox.ru * Origin: [MP3][3dfx][LQT][Velocity 100][AAC][TEAC CD-540E] (2:5038/13.6) — RU.COMPRESS From : Eugene D. Shelwien 2:5020/400 18 Aug 00 04:00:14 To : All Subj : Вот; благодарите Филинского ;) From: "Eugene D. Shelwien" <shelwien@thermosyn.com> Reply-To: shelwien@thermosyn.com -17-08-2000-------------------------------------------------------------- Ответы на незаданные вопросы ------------------------------------------------------------------------- 1. Что такое арифметическое кодирование 2. Чисто ari'шые эвристики 3. Примеры 4. Библиография ------------------------------------------------------------------------- | if (sym == Stats->Symbol) | { | rc.Encode(0, Stats->Freq, SummFreq); | Stats->Freq += 8; | SummFreq += 8; | return; | } ---------------------------------------- - Д. Шкарин 1. Что такое арифметическое кодирование Частотное кодирование вообще, как я его понимаю, есть попытка перену- меровать все файлы, имеющие данную таблицу частот символов и записать вместо данного файла его номер. Для бинарного случая, как я показал в ark1.doc, существует вполне прямолинейный способ это сделать. Hадо сказать, в не дошедший до ru.compress "полный комплект" этой текстовки входила программка на асме, которая упаковывала блок размером где-то в 768 битов, пользуясь длинной арифметикой. Hо это непрактично. Hапомню алгоритм: существует ровно F(a,b)=(a+b)!/a!/b! последова- тельностей битов, имеющих таблицу частот {0:a;1:b}. Т.е., все такие пос- ледовательности можно перенумеровать числами в интервале [0..F(a,b)). Таким же образом известно, что таких последовательностей с нулевым пер- вым битом ровно C(a-1,b), из чего следует, что можно присвоить последо- вательностям 0... интервал [0..F(a-1,b)), а 1... - интервал [F(a-1,b)..F(a,b)) и это не будет ничему противоречить. Очевидно, что этот процесс можно легко продолжить и получить полный номер последова- тельности, а не интервал. И обратить этот процесс столь же просто. Hо для прямого воплощения вышеописанного требуется длинная арифмети- ка, применять которую мы себе позволить не можем. Поэтому эвристика1: принципиально важным свойством функции F(a,b) является лишь то, чтобы F(a,b) не было меньше суммы F(a-1,b) и F(a,b-1) - это требуется для од- нозначного декодирования. Таким образом, мы можем рассчитать аппроксима- цию "правильной" функции, имеющую нужную разрядность мантиссы. Скажем, можно просто так и вычислять F(a,b) как сумму F(a-1,b) и F(a,b-1) с ок- руглением вверх. Это уже позволяет применять данный алгоритм практически - точности, обеспечиваемой таблицей F(x,y), помещающейся в 64k вполне достаточно для сжатия, очень близкого к обеспечиваемого традиционной реализацией битового арифметического кодера. Существует и альтернативный вариант реализации вышеописанного, не требующий таблиц. Дело в том, что из F(a,b) мы можем получить F(a-1,b) путем умножения на (a) и деления на (a+b). Аналогично и F(a,b-1). А что- бы не пересекались интервалы [0..F(a-1,b)) и [F(a-1,b)..F(a,b)) мы можем просто взять в них округления F(a,b)*a/(a+b) в разные стороны. Вот. Только вот, как ни печально, последнее уже называется не ark (c) Eugene D. Shelwien, а "арифметическое кодирование" (c) IBM и черт знает кто еще :). Ari, таким образом, - это всего лишь способ эвристической _комбина- торной_ нумерации блоков данных, имеющих одинаковые таблицы частот. Впрочем, есть и маленькое отличие/упрощение - эвристика2: если заменить первоначальный коэффициент F(a,b) на 1, то этого никто не заметит. ;-), разница в размере кода будет не всегда и в худшем случае на несколько бит). [Btw, по поводу сравнения ari и ark см. mark#1.rk/text/notables.txt] ------------------------------------------------------------------------- 2. Чисто ari'шые эвристики Теперь, пожалуй, можно расписать, как приблизительно выглядит арифме- тический кодер. Только, пожалуй, сразу "нормальный", а не бинарный. Бинарность, вообще-то, потребовалась мне больше для упрощения. Hу, кроме того, таблицу мультиномиальных коэффициентов даже для трехсимвольного алфавита помещать абсолютно некуда :). Тем не менее, F(a1,...,aI-1,...,aN) все так же равно F(a1,...,aN)*aI/Sum(aX,x=1..N), так что: // нижняя граница интервала кодового пространства, соответствующего // уже закодированному отрезку данных low = 0 // вместо F(a1,...,aN). Всегда можно успеть на него домножить ;). rng = 1 ; T = SymbolNumber for all c = SourceChar L = low(c) R = freq(c) hai = low + int(rng*(L+R)/T) // (Я _знаю_, как пишется high :) low = low + int(rng*L/T) + 1 rng = hai - low freq(c)--, T-- next c Если при взятии целой части числа дробная просто отбрасывается, то вышеприведенного вполне достаточно для обеспечения возможности однознач- но определить всю последовательность символов, по очереди находя, интер- валу какого символа соответствует значение low, полученное в результате кодирования всего файла. Для этого требуется, чтобы всегда существовал ровно один такой символ (x), для которого выполнялось быть неравенство int(rng*low(x))+1 <= low-DecodeLow < int(rng*(low(x)+freq(x)) Эвристика3: поскольку разрядность границ этого интервала все равно фиксированная, то можно их сравнивать лишь с соответствующим числом старших бит low - остальные ничего не изменят. Эвристика4: rng никогда не возрастает, только убывает. Кроме того, понятно, что если старшие биты low и hai совпадают, то в low они уже ни- когда не изменятся. А поскольку во все формулы они входят лишь аддитив- но, то их свободно можно хранить отдельно :). Тем не менее, не все так просто, как кажется. Ari присущ неприятный эффект, которого ark избегает за счет более свободного подбора коэффи- циентов (они должны лишь удовлетворять неравенству; не обязательно должна быть возможность получать их один из другого) - переносы в low. Т.е., вполне реальна такая ситуация, что low не совпадает с hai ни в од- ном бите, хотя точность rng уже упала ниже допустимых пределов. Для ре- шения этой проблемы применяется Эвристика5: (стандартная) старшие биты low можно все же отбрасывать, но наличие несовпадения все же учитывать. Фишка в том, что если сдвинуть старшие биты low в выходной поток несмотря на то, что они не совпадают с hai, то весьма вероятно, что через некоторое время возникнет ситуация, когда low+rng>maxint :). Конечно же, возникнет бит переноса, который на- до будет куда-то девать. Так вот, стандартное средство для этого случая - кэшировать непрерывную последовательность единичных битов (и один ноль перед ними), выдвинутую из low непосредственно перед этим и инвертиро- вать ее (ноль менять на единицы, а единицы - на нули) при возникновении переноса. В общем, обычный эффект сложения - перенос не идет дальше бли- жайшего нулевого бита. С одной стороны, запрограммировать такое кэширо- вание не очень сложно. Hо с другой, смысла в этом нет, т.к. существует Эвристика6: (хочу знать, кто придумал; я увидел у Субботина) можно просто так срезАть rng, чтобы перенос _не возникал_ :). Действительно, делать rng меньше можно когда нам удобно - лишь бы в декодере можно было делать это синхронно; работоспособности алгоритма это не повредит. Таким образом, если мы хотим несколько старших бит low записать в выходной по- ток (т.к. rng уже слишком уменьшился), то достаточно просто проследить, чтобы в них _не происходил_ перенос, пересчитав при необходимости значе- ние rng соответствующим образом. Эвристика7: (моя собственная :) можно совместить #5 и #6, т.к. приме- нение #6 самой по себе заметно портит коэффициент сжатия на некоторых данных. Т.е., просто закэшировать несколько старших байт low, уже как бы "закодированных" и выполнять отсечение rng только в случае, если перенос проходит еще дальше. Hадо сказать, что при достаточной точности вычисле- ний отсечение практически не требуется. Так, мой кодер CL-A с 32 бит на low и rng и 32 бит "кэша" low таких отсечений требовал лишь около пяти штук даже на pic из Calgary Corpus, весьма этому эффекту способствующем. Последний же кодер CL-F на FPU с 64-битной точностью (64+24 на low и 64 на rng) поймать на выполнении отсечения мне пока не удалось :). А, ну и Эвристика8: (Shindler's rangecoder) если дожидаться, пока не зафикси- руются старшие _восемь_ (а не один, как в традиционном ari) бит low, то с битами кодеру работать не придется и насчет операций битового i/o ду- мать тоже не нужно. ------------------------------------------------------------------------- 3. Примеры _Мои_ кодеры написаны на ассемблере. Hекоторые люди говорят, что ас- семблер трудно читать :). Поэтому пусть читают субботинский же кодер из coder.hpp, содержащегося в исходниках ppmd v.F by Dmitry Shkarin. Впро- чем, я его немножко переделал, для понятности :) #define TOP (1<<24) #define BOT (1<<16) void Encode (uint cumFreq, uint freq, uint totFreq) { rng /= totFreq low += cumFreq * rng; rng *= freq; hai = low + rng // проверить, не слишком ли мал rng; если да - workaround переноса if (low^hai>=TOP && rng<BOT) rng = (low | (BOT-1)) - low; // зафиксировался байт? if (low^hai<TOP) { // выбрасываем старший байт, совпадающий в Low и Hai OutByte(low>>24); // перемещаем "плавающую точку" rng<<=8, low<<=8; } } void Decode (uint cumFreq, uint freq, uint totFreq) { rng /= totFreq; low += cumFreq * rng; rng *= freq; if (low^hai>=TOP && rng<BOT) rng = (low | (BOT-1)) - low; if (low^hai<TOP) { // передвигаем отрезок кода, используемый для предсказания символов code = code<<8 | InByte(); rng<<=8, low<<=8; } } Впрочем, эвристика9: (моя, вроде бы) при делении теряется информация; во избежание деление рекомендуется всегда выполнять _после_ всех умноже- ний в формуле. Все виденные мною арифметические кодеры же относятся к этому правилу наплевательски, т.к. результат предварительного умножения может не поместиться в разрядную сетку используемого типа данных. Таков практический вред от применения языков программирования высокого уровня - ассемблерная команда MUL _всегда_ вычисляет результат с удвоенной раз- рядностью операндов. А команда DIV ей в пару выполняет деление двойного слова, содержащегося в двух регистрах, на одинарное. Hо на ЯВУ, соблюдая портабельность, этим воспользоваться нельзя, увы :). Такие дела. :) ------------------------------------------------------------------------- 4. Библиография 1. ark1.doc Публиковался в RU.COMPRESS 29 июня 1998 года. 2. mark#1.rk, демонстрационная упаковка мультисимвольного Ark-кодера. Кому надо, у тех есть :). 3. Исходники компрессора PPMD Дмитрия Шкарина ftp://ftp.elf.stuba.sk/pub/pc/pack/ppmde.rar (coder.hpp по Шиндлеру) ftp://ftp.elf.stuba.sk/pub/pc/pack/ppmdf.rar (coder.hpp по Субботину) 4. Исходники order0 и order1 rangecoder'ов Дмитрия Шкарина Личная переписка :). ------------------------------------------------------------------------- --- ifmail v.2.15dev5 * Origin: Shadow Research Center (2:5020/400) — RU.COMPRESS From : Bulat Ziganshin 2:5093/28.126 18 Aug 00 08:54:13 To : Michael Semikoff Subj : тестинг * Originally in RU.COMPRESS Hello Michael! Thursday August 17 2000, Michael Semikoff writes to All: MS> Я тут с полгода назад компрессор однофайловый написал на lzp+bwt. MS> Если MS> выразится достаточное количество пожеланий об тестировании, то MS> разрешит ли модератор закинуть сюда uue? Win32, Linux, DOS32 exe's + c MS> src's весят чуть более 100 kb. Если буду кидать, то по чуть чуть. я не модератор (правда, зато комодератор), но могу предположить, что лучше кину ть его мылом (куски по 10 кил наверняка пройдут) кому-нибудь, кто может выложит ь его в инет либо кинуть только исходники - они в архиве кил 10-20 займут, если не меньше. в ерно? Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 ... Иногда для того, чтобы изменить свое восприятие мира, ... люди пытаются изменить сам мир --- GoldED+/W32 1.1.2 * Origin: А чем занимается херомантия? (2:5093/28.126) — RU.COMPRESS From : Vladimir Fedorov 2:4600/169.28 18 Aug 00 14:27:57 To : All Subj : #/------/# _*------*_ Привет All! Интеpесная вещь случилась... Hемного пpедистоpии.... Есть у меня пpогpамма "Платежка" - печатает пpостен ькие платежные поpучения. Пpогpамма неизвестного автоpа и была УЖЕ запакована U PX 0.70. Пpоблема заключалась в том, что он печатал дату в фоpмате 199*, нужно было пpосто pазжать и испpавить. Разжать с помощью UPX 0.70, 0.83 и 1.01 ни к ч ему не пpивели... не хочет. Попpобовал ProcDamp32 - тоже не смог. Больше пpобов ать pаспаковать не пpобовал... и pешил попpобовать в сжатом ЕХЕшнике найти 199 и заменить на 200. Hашёл и заменил. Запустил пpогpамму - РАБОТАЕТ!!! ВОПРОС: Почему такое возможно? Раньше мне казалось что запакованные ЕХЕ фай лы пpедставляют собой *pаспаковщик*+*аpхив*. Так что получается АРХИВ без пpове pки CRC? Объясните пожалуйста. С уважением, Владимир 18 Август 2000 года ------------------------------------------------------- А на последок, я скажу: Hадо удерживать товарищей от недостойных поступков, которые ходят в самоволки. ------------------------------------------------------------------------------- --- GoldED+/386 1.1.4.3 * Origin: (2:4600/169.28) — RU.COMPRESS From : Andrey Mokrenko 2:4614/1.135 18 Aug 00 20:15:37 To : All Subj : exe-unpack'еры Пpиветствую тебя, All! Hарод, подскажите, существуют ли универсальные exe-unpacker'ы, лучшие чем cup386? С уважением, Andrey. --- http://nemo.da.ru * Origin: Хорошим поэтом надо родиться! А плохим - не надо... (2:4614/1.135) — RU.COMPRESS From : Michael Semikoff 2:5059/27.16 18 Aug 00 21:18:06 To : Bulat Ziganshin Subj : Re: тестинг Hi Bulat ! BZ> я не модератор (правда, зато комодератор), но могу предположить, что лучше BZ> кинуть его мылом (куски по 10 кил наверняка пройдут) кому-нибудь, кто BZ> может BZ> выложить его в инет Да я как разберусь с принципом работы с ftp.elf.stuba.sk, сам кину. Кидал я в /incoming/ - все равно в /pub/pc/pack/ оно не попало. BZ> либо кинуть только исходники - они в архиве кил 10-20 займут, если не BZ> меньше. BZ> верно? 17kb. Далее идут 3 письма в uue. Очень надеюсь, что модератор и комодератор не накажут нарушителя :-) Всего наилучшего Bulat! --- GoldED/386 3.0.1-asa7 * Origin: NPStation (2:5059/27.16) — RU.COMPRESS From : Michael Semikoff 2:5059/27.16 18 Aug 00 21:20:55 To : All Subj : ecp_srcs.uu1 [03/01] Это моя первая работа на lzp+bwt, поэтому до оптимальности возможно еще далеко. === Здесь начинается ECP_SRCS.UU1 === section 1 of 3 of file ecp_srcs.ha < uuencode by Dos Navigator > table `!"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 ecp_srcs.ha M2$$!`"*E10``#@L!`'DZ6`-VWITY`&5C<%]S<F-S+G)A<@`"`2!20R86T",G M^7$_7\@9N^PJ'5^"OI<P!B3'$]Y*RHV)`@<.)`YP]N/E]7+1_.1B[7$H-&.> MN$=*`C6?7_SX"LM%GF.B*6_3@;K4];R<+B"E9*L=IVZM<9PEJ2!H_]XJ.HC3 MB$#$#E\_"J2SFYO\0[Y[^TT^C\7U%^\TEX,H)]#-C<^::.P,C]Q$YCO6.(X< MM(LM7FUAMM<LXJ&>7KG_31@^&"X\%V2O%0TD:]6@G):"`J2*`NF'</4Y=, MP9_);I"V6UX_LM>3K`ATW1@)/_R<P96:^@B)1A+FX9D:N&W<M"[R^);K2E]/ MIE)P0CDQQ-`7%2!U-IA^KN0:E-P3])W9])S4]A@TT^>6+;F(&R\47:[(4Y+E MQ:5J#W78IEUE<_*@&*F-%UN\!UUIV97^`AT_A:;@7#('#>WG7(>7%,CX#ZX0 MPZ(;-@G/]\.`\?S]W0`K0,(8-]IJ_0YU8$Q#_PIB(9/)DY"VV>5PRK$,]WKF ME\C6]<N0NQ+&A!!"/Y]8Q:A(F;N(`0<%O;P!6P`\J1;7Q["#_GLD7&Q(AQ]D M%)FT^3`W%N?9"2+NI=WDW6XQ5M!Z\=N9-`,3+35^E^16TH8K"KK!FPP2+U&N M^\608Q]@AB;-8;WY]A+1Z;)'TIJ>O3@=K!9;L;_F7F*]&RKU4+U]?2]B->Q; M)JR%W.R_-:<)!,(5:WJM(5&O?*[18-[](XTG[LW,'HFABL8,]4():OVO/)N! M7G7V[O#P%-KR'U'8.C>E4K3>C@8MK6O=WV0)*<$'<`?D-#UJ9G0;(R!A,WIP MMK#-I7<&*`86^^_!;PR:LAJ*;T&9.U"H72*.RC>_^Y"&R+X[LYHS.R;!$,^2 M.(ONO1[C^%,=$P#BLS>C%/3=Z3C>7OXKU!+:VW6*GI#ZR&P<61<I%-H,_ZLX M6P1D4?B^S,I!P@?4!?ZY]/G\CY5=4@F'@JI(.79Z)Z]]%]<5F@@DX&KW"D+[ M."JMON@1G<WLO?J,+<ZC?KCX[@AG0:(^$;`%;OG>WY<^JMVSMNG#Q(7DIKAT M+;YW?"39]]>F0X5"S[4>1XV#EJ88+A^OK<'0H&)O+6-=:];PG'6FJ"P=7[L* M!?*41B;]GNUX<`U\?_LNIGAJJ2F3ZNBT=.>A-ZQ.J;=]DUSHZ+HWI\)X=;PX M@.?)A[_@H:5*);NO'YZ_SWC`!P(I-N:2`K(^46M8TKH^@N/RZ21]@56RL0<4 M>B?XO-,H**[[,+R@.MA`ZYX%_/ZA:KRJ$PSTK8J[YMLCV,NT&RZAT8C4Z7FQ M$5HH^<>HT!#+>WS7=4J?8H!OQ&\0OO"C78@;L.KN@KU8\>>V,K!OIV]9R^,I M.<@NNVA84!9LU4TUQ]T->NC+^N8EO"\8#6#9Q*IF#E_L#;Z?`7@5/^G^U(,' M06A&52M#.6SI)QS3A\'0-1T1N0%7VBTR,#H\Q58Q66:Y2/@?(D$RR<)OG[UB M2]:+I/)DO6M]OK([#)0L`><L:MU.*.;!7FE7C4U)EKY_1E^+ETXA%>[[W)WP MU<DS45*5?<384,IEE)1C])\B(&PSROM'=[VF>A8\E=;3>F$I[5OQP_*>'Q(C M61@*CCCB,"UG]+P502MZ;B?3QJHAMTY9H]FV\EVD[#Q5;6]JO*IC1L\W8A*_ M"R+6Z_=:V^A9:IXS!WRTCRLXGO8;-U4XL"WZ6@R##8=B,@(M8UJ,XSTB-IH$ MH](7>=B)Z"VCSJ0CN':U.;$``0=&+CW53%VZTAI].V+CIS1#SS;ZG9,+/BWY M5A0B!5LQ1&&"<[-$V23XR;Y@-$#X1L*XI*M_$[W/(9-I4K3;/Q1RPESZ45M3 M>$U$4*-&5,=HF[KMT!V<+<2LDT3G3EYV3ZTMG930:@C"($IBH4&BN[$51YTJ M.A-=$3-"(P_K53NPG1U4A(=K]ZH7D$`6</:QX)80P/>+3@QS[K%\MEIHQ:O` M@L,Q4\ZF&.,:\!]\`4(\@8BFF%\_NO2M3:BU13X$1]^@<4&!(8D0-<Q\H_"7 M^<&)`O*ZVIY0]Q'E7:R8M,/K)M'[$KYI9IY-HN"7^H!HH40R27)?0SB#[6>0 M$*(+R^&Z93_=:24`7GV+2PM?_B[+L3\2K,9M=T<$,D^(6.N6DN[7A(85*^I_ MP5AU,@?*PYF=B9G2I&UF)+]HE-Q/*^ZJQWORQ7+9$,D>MPH:#5KH_,`;U"D$ MG(KD5@R%Q/5=P1JUD!;WS/WM-S\9:QFKT`X.KSB"Y&!]K874+$Z;Y#"L#@+* MUY#^2(O;;%4:P``ZJ^Q?-P7#\J,&D@;\?X]I_(%JJ_SQS%P?6H(,_$<I9HQA MET**-:Y(5-)>(]_1A.+,EV7[%);_&@@;LA:9S@-G(S?)XVG;M),$DVL@KOIL M5TM+'&A,N.U!K;E$^$$8*10^2;P$`DDJH7Q%`V(R4#\3K*A[65),JN<L+A M6^RDW;F%>\_VG:1D__I\K]A;%31`>]5Y"WCG[F7;^;=T#+8/\-RW8%'H1[9M M":9&I/$Q=O\,C5%T(EW`=81>QU8;$)DM#VOY','JW.7JG(6[PV\%P$'.GX`@ M#76S:'!O!%&T,F47$`\%:1))35!AY9N"A^[50B+Q)+9.!<.1B/^5!)X/$RA] M/"%;\.'<^/\>A`LR<YQ&LVGP<.DI^'Q':C5J(%"'&$B6,O-$$99R3*(6U]KJ MOQGT^'WE^5\C$A%L,/Y>1\[TVGW4%I6:29'DJ\BF=3;0$Z9\<X(8*O/+G%GI M0_K#TG]M-SZZ_&::/7K+R=]4C;L/VRIEVL:8XW'VQ8[4;2<IOYT/!ON\/#WT MCG6V$I[[80OV%&54R+)\<JQ@:2-,QL-?TK7#/Q52N2BJ^`)H**FXMIM8/7:! MG4C8(;;V,[]E/4?R;XCT[,SG`ZKPOQ.&6[-TS:JQ3ED4\*F6!O^4238RMIHI M4PDG[WKO7R@EKR]JSN(]#$I)2U\Y([%85U\L<NM9*#!L=IR<2WA^L$R;3'_= M_R\KA9K!2*O&=+L?=4$$[3O7\8:F!*\9I*#:9F?*M+.643#<%SQ:>/XXH-<1 MB3Z)#1\8[K,S0Q6RW7J#W^$#6#X5Z<D;298,?5K-TUFD+EE[J((=*75LY\81 M`Q1*\E*@W0Q`;FR#0>VYMQ((&C6.G_;/<R,2U)E)]E':>5<"'S,LC$*>6!A( MN/H$L376R+$:'+D@MG>.6POE;74D9&,*%&N'$`$_ZWFP72'#3E196]>#%P1U MD[[$0_#O92<D$>T`-[FIC;R[K=IRM2K+E*8F+KAE?)T<0(A:>(&WN%JF3[DN MQ_XR3N^<%@RS%;-GM7OT'XZC.UZ^X23BZ^.II8J[]4W;WTT^P*GN\LZ;.(V; MC6VRJ$0:2TKAUF_Y`DB,"UMW.O3Y?3R0J)?MFC2ZJ33)%>Z1VKH,EO7EEI+C M46_A=6F$%99.?,H3PFN&_M)1@#RRG.8G/7N,?]SC:S&;M_[)UF[-HRF,2UR& M/Y6A?G8$,Q99(,6((60WE6G8'NHW8JT%RI"CBE_6W$B$$\X?DH!BP^+X*C'5 M0KV!EK4GAB=$4!>>ZZ"U07BKDKA/+.1>2:+&I@*`IX$`-9OM_SN_WFY9LT+$ MMG=FNK/X^2_WNJ/060*E8-GIHM6(-T2.`C!+LL&5Q^#$\B[<7%"N@TV6S?ZK MN@U@H0FU:!*2-:#'ZS7#E9_=N`3T&QWAL0N!,3E<4H854-05A$UY3%$82X%J M,=>6<DN!OSJU&:9V(XJ2YE#9#,K9!L+OW1.%\L%:5,?E`IN59UC:>>@WR#Z@ M48\-F?WSX7Z3DNCV)#61L%-3(PNR+;)4>FK@?=(RES?B,W&)\1</`\4>:6,W MGB)R.EF\]\A'CS;=%#8%V[.>:F^(KDB%MU>WDJC*KPFC`AMI"%II`/H.>%=R M4'/Q@$"49/JTUPQ?^<6$`DD_G==S5,*'C22T]387YV92"7<YQ+(/ELQ.4Q=` M_F:6<<&5T\FWK$J/1'GWN&DLAX'6^2*W,TF5<_0?T](6DJ3:6GHG+,7Y8MBX MLY!\HU4]7G5=Z`:'5J'K/`=1;9&TOJ2;U&?<J@CN.3[*AU?PJQYR#,;EY#=; M.=:-N]`,46A[)8A@L,G+#F7'Z:N;*<8<2N>-7>]!G7@4'NOT-NKO7$)BQG=, M*%76C;HX:_2Y_VB28PQXNN27NCY.KLJ8>G?9_"4]`3DDSA8/`267^#GOLC\V MQYX9-GI?>_[\ANKH%P294*;G0;MEL]*>6X(EMS\C?#,!8090ZS7A2@!M#BNF M"#*OY&GI$O&K'9>GD*_`A&8CP,<#_H:-ORL0*#`B\\/"/\^>>L1BW5:`PWLQ M/0:GS<V*/;=RTW<.IXDD;X/6Q=K*]<H_<QYF'V"<"]JS@.[Y%Q/IFW(218+T M-6S:%G\IKEI0YND$SK'?SS<*HGRI&,*2U%^7AG7[7DN)X$H"'>=GB-#^4[DI MI=45"$!#90C#!J<79%]Q#Y9R=KK?&RC69C#OG\AW2Z56X:^U`B)9!#@/MPWY M>D?"/$^V5,+`RZ9@A;3)3!8'FAZ$<,5C(V[]N#>OII5XNMD89LL#<!4UT"Y, MM]=48QMF[:_9S?]5,\$F0C[SZS$&)U&V2P60@TV&HB\R?^O+%MI%W"(7/IQ! M68F(+*EZ&W;]M(2OAN8%V`)5&7^.Y5)L.SZ']<SR?_<]M^.F8/0\_ET6)QN: MCR6;E2TB*)KEBX+:!%S/<YO/)@$"6/A7!O!2[2XLC3>M4U/5GG-Z9\:1!B<V M<`@KIE#GAQ#\'6"9CV)&H4<?'AW;\XW7A`E?MW\-@<>\R"YV]SKND!RX##8" M,L*Q3WZ\1,\DVZ&5*@X@&&SF=A:W[,;21+"K^!X0@@=$KI'1S;,3^CD\H5/1 M;8+%R5%$OU__&!^Z$EC)F"-)$5C2A;Q-0;BZF^A%[_8)#OA#)!@@V-;\!^V5 ME]3;P5S-:,:-S4U.0R">\<1E0#%,D%[!!IIH-=Y:[O"X'0[B=VLRC(?WA$8< MH!C"7\_L>MSA*TN!JFID=CM)H-V^CU-BRA"VXW8DJ`>.49QA(.KZU`&E1/JR M(<#'HM^)4<,ZOQG0W!)$P5+V.FS3VO.YTEX1T<:!2H6:[O]OF)&Z)"\7?F^C M.-NH6BC9K2U4!>C=X#8B->..-047,W[1#=1FEB&TC7T4&JM;S8OX_B@BHP`4 MC&U@)1A::QE$'Y["L;@:^M2@H$6$WD^W[C]$_2ERI>YOP6?Q;JKJ(N2BD^%R M8V*%&4WUQ88=WZRO`>-@^?F)/'>^N^IT0ULTLBCEI]_8C3TO+J/`PCZP&VL= M/PN_0KO4],L%!?=79\,R-',\7`QX_T".`OFFYT*KN(N67HG>^)^SMGQ@$_3- MU/#_&$-J`RWI2%@GH7QLCKQ^@<D"W0&63P_WM0N6,9W:N.:O=4A'072_T]*4 M*@./'EVOG8(&OZ:\V4EPLEI_U5HCR.Y0$HLZ_+A\A1\@]3PKZG"'4ET+"AJ' M*U_3&VLX^HGQA:C,:E(+M0$2]KV)YXOY]JX;XFWCWZ2"DEM$`UNA>:?7*&Q> MD;*N5GH&@=9W/#KT'8&=J_LXG896V.M#@<(W",:@HF]RQ]"BT-:LK:;((+H) M3_WL>83HP=;8E"5(O!Q5YB*%.6K<X1`5\W.&6VI)]:&3N*C-R=[B]X:U`7V; MAV^OMB..X0CJDBHNQ7[R4*2<30H%Q<^.#+LP&LL;51-,#*H[E&>LNX?-!P*# MUCLTV%,KD^??0_P+@L;*D@IU+8>G55DWPBD`ND]Y]K7TW/OG3O^%P\9(7Q$B MC!D!U92W9 $'LM)`Y>"JDAN,]T>X,?!(#*4(TGW\0OC:#2!V<;T*27;<-8 MB)Z-'D-?&ZR&UTE?XUR0TE#!,8'"@)AHF-_J2KO@/Z5[I"*LL.09D;7U>`LH M7FQ:L20R[,EQ9&M>KX8@V4J8M5>H)C:L6SX2W7OWUN@-H+H%>G#Y)X@0HR9U M0TQ('*[3$4VJE!/(J9/L>%I"6LBUR]`D[1F.+LO9=/]MY?%J,S>\C8-Q/(CA MTM#0++VLHZR*B74N7%FOE3S,0$==&43`JTTCFNQ\%LC5F'P!K';[<;D#3NH_ M.S=A,G>&CC";L6(O=&I)TC/\A1/-L3)[*O6$HK]G`VZ#:[RQF^G7\?+>;6F( M9H1$GF]+O3Q_[]Y#"_IESF)1XH-/G_(A2A!5!@DG]1V<RT]"LE:X8R!O,Z^+ M^XHHF)?7O0)Y@%/8$%(:T_$VRK`"7\X%_<R$F2(@D0$&:3\B,2.)H@O23'L8 M:J1B\^KO?BC`\'5H7ME*5MPM4;XK6;3HWCS@UQGS5,6,AD/R;#L*EAN6BL/R M6CK">@VO]W"M?0.83(T;^,ULF]8)=T8IWOD82M#EGO3.=,0%?G^U+'JL7<*+ MW'`/R1O%"`&5#0YES!'(3FW3\==/$OI/">!$6A2"!,N^Q6E\()&:@@)0.Y:8 MOJ76&GPE:$1!A5)S*)20/1ZT&(3%3;N,?0I_2UUNZFV^BZY`7`Z&E=_T9H_` MJ?K'AM0'HAC:V*LN56%8SZ9+<MI-HV8MKW>>-K4$:7IF,G56(?T.^6J>-YCG MOA3S\;C=YL_J!2L)LWF'&+'RZYBN1#4R)=6+N.5G*QUN,1]M8-A-[ZQYM<F; ME31;:^!D:)AH;RT;1\*.VSW]RRFY*0.J)8J5V]9S,#-OW&1YJZZ:SM(9*( M]!G'`@ZQM-&7I*^$NV3AY3\=\G2A'/8=FO%@+=]+LE&/8'1>.,(#OJHB1Z0J M/[N*_G[N$\VQZ;=8LX9CI`B]98*Z%<D?D`YG*/(M%N2M9,(=\GZDD-9A#)9V M73J2AD!'TB'M'7_?;WLPIC*]S3FJYM_&'XAPU_9^6!??Y'4-3Y/B]9,Z3*94 MI9N$BF]OFV-Q/_6%*E7T&P"07V+^C-;0,^_8)X+>4:V5(LX(DX$O:_I2=(X% M5Y+=,E6Z*F.<[8Z"ZS+JQT>(`.I7C'+])\G@\1?'`4#L5SH6>Z%$&G`^]5," M&DR53_429.O."<ML:H^1=B.^=N\RV1*`.L&W[\N?O\_7C!SQZG._/\1YB_O9 MIF\<0U+13RF+/@"%G$BF`>4F%W%.!-+H=-R<ZC_.<&0L+[FHE5*5_;Q*B.-X M-.Q`49SGG>Y11$#_#=:%:I.7S*=NY46(NX^7T.9`@*`G4'I%6@!0,:7XG:CI MH9A'>FR6Y&U4_4C_1!*.UZ4$^!/Q]T]EOA3+MI(T415C!+]=Q,1T75.8ID>) M06H_4PV%8.YZ'TO``%ID,=KB(T1O8U._UZI@QI"D].MNI5BG7QW,K+X_C.]# M4K1M$15:WUD0HF9D.ACSBEAKRG3W_(!4SY9Z!_@V"=SA1Y!)/VRRK26+#*I? ME:(9A]W?NH!Q>`IJJY(W8GH.HX'4!92:_^8,'R&=\A;Q1U'[W7;BD?0PL6Q$ MPAOQS2-E8Q_6,GYIK.$TN<&'.#SLN#::SB;>'/UFU",R1->%@=R+!W<6>X<K MD^%ZPR:[10:Y&A.R@^C(*@S>]CR_=L[,TK''?B1IN[EU''FE.6`^*%3U;]JN M7*8]P%DK_#.*QI:A"X!SG41=/)0F+6]W.B>3*(+*MQSEY*7B!\@'Z9Q0"XB7 MTE.@%7$C%*;MZNPV_*+/)AK5:O"\^3ZIE>]&'\9#=R$2OLQO*EO;'UW01I/A M@[J#)AZMJ6Q8YFW$%+M/_J_&AD^07L3%BF#80UT)]WG,>>N:,/-P6FJ=$<SK M0>5Y'XFWP]?H,,=I1U)%B*P`K)W!QHUR\)?@@)@W72/)*Z,K=FO_0IZ/]B[\ MKNJTJY%T0_"JR*@T[/4EJF#D,YY%;X8ETHV3@][!JCTWPK?O/'+<"H_^Z+L/ MR'R\.>0JE,`]FC:#5XL'PW^-<"X9##H%,.?9BNJU@4AHV/<2PV\2,)X3M!_X M$\<3\*&U&;^V6%W2*D/'Z__;`A0_RCHU;8IS9?)V6Z1D4VE?^:!;K.BB((:Z M_F31:+1?L8U0<U.AS-',:,D9&&Q\\J@FKL*F0K)Q-#J]C+!QJ,'&@ILQ3H(3 sum -r/size 27138/8340 section (from "begin" to last encoded line) === А здесь ECP_SRCS.UU1 кончается === --- * Origin: NPStation (2:5059/27.16) — RU.COMPRESS From : Michael Semikoff 2:5059/27.16 18 Aug 00 21:23:31 To : All Subj : ecp_srcs.uu2 [03/02] === Здесь начинается ECP_SRCS.UU2 === section 2 of 3 of file ecp_srcs.ha < uuencode by Dos Navigator > MQ)M?#8`JNSK>25GSF]'8O:OBDDI%@IJ7Y$!ZK(O?-@!>P<,3^CVACQO%);D+ M=',_^FD1*%=GI;,B3K'Y1]1M*9IY`FLH09[*?R*DI`L$P%?[VWDG0@-Y3P"$ MQ*#GM0(26L7&ZG*L3HM730-*HC#?O&//Z#KS<J;1,O^^`C.W9BT_^/_$5B7D MFY8XPZVCWP?@91BV;B65,42>!O+1Q*68LQOP'69"U*?7"9@6N$1HE>V$/\)$ M$M%:\9K[+OU9"'D^#NY#HASQ":0'&+O><,4%3*=;V29!S81KKV2G!H(18T%D M+>3J0PTCI4F'@.G..<8M@P=6QH$[(0RUU$##I&4T+:Q7$5(4S&^<^]PIM^G? M9EN,FNZ\S)D=CQ!\X/]/"OB?(X*TLH=R&EW)'E33%$6^@<@!V7R%R3CT]G?" MMI<OE/^8"^;_62\;]0FC8>I(6#MC33W.%H@6K1["%EZL)H-&JUF8!<TN]IP. M0/!'K.-EA2=_:P0]W+L@IKLWC&5[K8A>?<$8QOX>;^;/BGD@_Q,L\6#KTV-W M1&.I"JE@&(RZ1@)`E_M5ZV&.6VJF^DO['4;];F"/*X5<=&'PAC_@+:7G]I;6 MX)I_VL75&1&)>"\?,/J4.LB'(/?6#5J6X"4E@\QU,`JSH^!J2A@'+U>EKA$N MQQH0_#Y5D`30V6^8&9ACX+]RF@=AG@?7NH9@DT<78K*E=B3\935M8S0!U'.< M9B=SN"K(["R$,$E[$4DCD(+W';F)@VF"9F['OT8:F>,L2#6^/9`KI(K:9"0V M.)\ROO%9NLB^V:+Y@ML!"`0"$"NB8"!?:I21M=*#SVE1_$Z5/9Q:N7$P-H2^ M@F]#(:8KOD+:#LB@B5A(.C8G6CQ]56K[F3I[9.3LZ&.(V2;+\*D_$Y)RB6A6 MS1F%K=S^?6C1A#<O:^8J/Z]F<+L0Q0@V/%K,R*!5,."EG<$4X^%VDKK#/UVR M(TS=I3-@^_V@DUYX]!+U$#/'T6*>.&YW;<#B!2PPR]FM]]TT,1D[.&+OP?@' M1[[-F#KSP^&A92KH1;@&2R3N\ED/HHV//2?ZMRC777"/&D_K`<HA_.CS"#8W M1MA<G&4ON7OR\(G43DD:_H4Y#383!PBSJQL:LMM:OG05Z3RNOML)06ZA@(QE MX;:'2E?43153'"%!R503-ASNA2^\<NI5"H)22+B]QTH>!FG4;G6]Y;VY/R9% MG#;NY.&)`I0LD11)@S,-O^'5FX/-FYNG_+V6X-B95X.\S$Z9A+GEB:1/MU2R MK!P2<JKKD1`^>!R[EYRK%1V4VO2T1R.$M][#X5#K'_66T)\2OE=`T5_VZ^-* M7*%WSQ6\#/*:AW=LC%H(NS&\PT($.ZQ>TCMW8.NH,^<C"/NTH+DW$'$G5G>8 M\NLR#:HT#MP*%C^FRV8R>#B%NC&)QPS@"12T3.F!,A*KG$@9[J<C8!;V7]Y5 M^%^GXP@4_GDDE_G0$H?FLY1+@J;GH2]YN24)`/.B_P-%!,206>,X]1J.E@`I M7C8-PN^)DZQ3&\.DR<'H9Y%+W6V`W>:$@X_:P.E*J;!F?GCTD#8(Q#+2EZ'F MCK3(V/O[HL*)YB7"I`2,)BRM#&GN`XW)Q,0E@`>6"-EX-G&C@M_;:.;2M(!X MIW2/]_X1/9\?NWD;33WZ>1F^#(>=F5T+X'OULVC-5`^8GVT/[W,`H1VZ-X7' M2BO)QQ7&,#I)>V)S\<-/3O`LMI</Z;13)#7:FNJ`57DT6(&RMV9'HPQJYZ3J M%\T]*!NZD--F2<"Z/"FB=J<<1G'^PIE/Z'*K'(4`<N]WG4QQ'US!D/H"[HPU M89DYU"/Z&22+/[LZPUHBB,?&8UVH<[K>^^)Q*XMG\191U[N`11M<2T.-7%D( MB6SLCT/[HY[&6<@22LV1C,LD2S'#__J@QHQ93C^^N(*AA:90MR;;P<<]5D0] M<85%")GX7L)!OI&H2W)S2-'SF`\R+SH*%'EELL%".>[8LE^<ZXN2WZ(%4[C1 MZ/.&?>,Q=7L)%S2>#HDWT]Z]&V9\0$.!FP%G!+046F941TNW%\[*L=\/6`9_ MP`[UMPP43/FRO@&.*:FL]FAW\@0Z/.L2T36KG/D,):\A013JW&]X"D9IGS>2 MZ%G"O?UBR4]W7**9);<\/:WR))GXYN`1I=K&\A%PF;CKL1QCBLSC\`H\(PB7 M\DK@',K-V!5-,?J)>>QL7DZ3QECX!V\'3B]F=DAGK*1DD[[#3>5U$3+`*4MI M&G65"8I1S/>[VU7I*RAFQ"'DPM#%*#Z_;)9R"O(5D)$#/FRA&$G>:L<9)%+; M2O'8IX$P\GN'_=&2JPY3.FK8F$/[6A=-B$$)/4BJ%>H;XON[]2+.R-UX_H^F M[\-^O$\`<-B_2"-U<Z>;7W@/IP/.TK;`_9E!+J]V9N.W"X(-Q8*J;P3L)9_3 MKS_R^M$)&/XKD91[*59XQK5^7"2F\C%S\?7\JJ/X]ENLPHM&KO<:1EJ>`!XM MM$-B!<B#?0-;>`5A\>:J]%=AY%)QMLA6#,<?P2TX%OUWF"P96GV=FXLM![:Q M5G)0)MQM5JDSU?+L%KNIR+RMU1@<&TV6?KJ(`%6KLO@JT2HT^[>"0]Y9#CJH M:%&SA8=F*<*,]+NRDZOJ^1H03.4FO8B"'&%^V!N+(NXQ,S*_=5ONJ@&7A5?[ ML$J5;=/E6Z^;(9/F^'?>C*:S-0/@?=2F>;;:V4^M[`<S(EB#F,-V/Z`K,E1T MN9&L@/+)"9R,9#.`S,JHNN]?O69;*30E7C$#!D3S:U\*_-9L(SP9[3Y+GZ3R M.X+]E*?J(HO$_63,LS.VW*IR%"`(EDG?C'@1LWIKG'`LVDIEZTJ?\'HPS^.' M`+"'54OO,KWWW,B4^O?=<%B*_O0O_=J(%4_0XL>O](0V?/Q!;^>FK%48__WC M$>/F>!'BCJ-9J!UY+&Q'X,JV?*E6K=)LM;_`[!YH_96#$O48@>.AL(6UNRUK M%'_^F&JP`41LIO6!N^PC,]#L;^(A.MO`S]`0?;/N_&J4MO'ZD`P1CM8E,_ M9G,4`H?7"==:`W4(=K.>T(2,3$X?7V5;X0#961.7[-L%:X96V.:X:)&SF\1L MN-A&G=?57XDQ97>]76C)S/5YW*<)$?)U:ZB#OAXNR2/:A1%DI(&-"W:*27^I MH!*?TEY#*WG6_PIDA9N1Y1>3J=\[#6QLD@/D+E,$S.><_S//Y^O;[(Z`P)7* M5D/9<_'^2_0I_9L:^W[2Q6Z55FTO`W<L/#*&3"S@D5L7-Y*`SC\MJJ\T,(:S M34X6<."TXSAA2=HAREIOVF"PC,K!8\@*_O$[+S\+?1P2'ZLEC(F3TH@X*I-' M7<<Z!^H@Y/32[:T!W>A'N^$V[:X98ZQ06(N_5&Z\$,D;=+E/2,LND89:K;MF M;T@_G0GE"GPO>`0^TLRY$%)5!77\V1<KHY9>,:]@OJ2SCB8^,A_J4LEHB\UF MCA$43>OI"ZCZJEJKD*@F26X(N(9.A#O#I'-$Q$<'IQ%D7O<0E3ZA7P#BH.9/ M?:BOOV%*:"1M.[&WHQZALFWA.52]4#BQZ4:#BLH$M6L;<;7!?&=Q6&IM$38_ ML5FL-IGI2SE)@WQ\EMF3]VT4A3J8"_.)F;@0<&>@U[FY[+.2JX`(,$@R^4;] MG7F>O1S`(6),6I%R"!%!T%_H4ET2T1TJ/8RD>!,V#4EMU>.["^8)"33A':7. M^*QPHYH[<#M7GM.V'=1\9&]_BA5^!OZ%T,RMAY3_2.*D+EX3;^7<P!]MZ1:9 M<3K$502RX+CY7+C&'\+\8J)2/5UD@%L4AW*(NBA&:BX(HSM;HC"-QUG3.N$` M%9$>V.`)VM4DX5B:HE&`\A8Q;K^#49+D(NJ[ZB=4AT0O@;5^T_@0,RYH5("5 MH''!*,!QVBK1)0C,C/G%7D8Z@9Q!%@^SQ*%QY$B2A3#H"?TL>SN7R'X@Q2]R MAV6WBX3WK?B"*HK@Q53/QJ7NYY6-7-MITX5ASBJ*;[V_=,W=WS\@M7NW*%<H MSL8Y3T11Y]6M5G'5['ALXCW?EX!):X_,4LM"'M9@/C7[4GO`VA"6/IE:H#.[ ML6L$!`,3&*P6]J\QS\3J*Y12HPG%)/:12U;C8C:7+`SB04L"\^QNVQLW)`(& MZ1]E6*E"(;B>`I(V)<A=%]U6<H29F3AZ(TD.)R+U7+]\,]PAP)I,1Z>'F5'U M73@PI*&$"R]!C9";LL5'ER5-_%S?(0/-H(UE:;=!QNU&@[5^#4>$GQQ.>\A/ MHL;R\/LQ+;HB.6'![L'JV")N(V\=?&^@F6O.N#-S77%;?:'?'U"0<&0N:Q=5 MGSN"GC4\#;KJ/Y<"2HH-0#XOYP`]5%5P$KNHC"\>.^AQ_HIO8L76V!_X,/&< MV=!#;4;)Z9=5X!(BN3FN)?,T)K$OV`"IJ0UCB%,XI;4,PU'PYTX,33\?L"MA M1YK]UG9[L&K18>U-VO,-&,_@N?O3UI,>`Q6`C/%4"4+`B#ML"WF\NTG-13N: MWHHJK![BQN8_,PW1T*HW.]KJ$G!(A55,3:*P[V6BA0VFM'":/"UC&?E_1"'_ M#%Q`YS6-&YL5)\$UF-@H=7'!0!M?]R!ZO?HG_/\@PF0]>8\[AN,!F3]S\*L_ M57]'.LA;7=?(;+1P[DG`6BL(21O095;;UK9Y)V%L^AT:N"\FGF4)/3,7+K"2 M%<035)X+K2Q5S:=8/E[,D7$=3K'W"3G1>TZ!5V_G6YW0[>*GT65605_GG`@( MR]4HOF*JOFCEHC^=.,,YG_GMC;_NUS6.$FS]S/80O./+/P'X?;B>YK+ASF\M MR<DI.VDO90@"3*CT;.*\E:%X.,DL8A?$J"SY<$F39WZ&^2.9WB_JK%.Y*'!^ M/&_LU%.2@_"8U[8_R:]^K#9^=#]O0;"?<K@[R'L6YU0BZ<*BHW#N"\EG_;AB M+QQ$(/5-J1SKKF[T>SB,G&7MP89.U2<G-S"TP_G`9>'-P,C@+&>;HG@7".," MJ/VW=,#E9O'=8B\MQ),X^.#NI.:$,^53%^;8GF`CDI('C2^Z6#I;"S@I.[O; MP'?(68J`+S4UA$LZ19.C1ZZ4ARJV"8S@QS.T-1!JT^D(TX*>F1%XV%T]-!%? M``4&9Y.:GPL%;3ZY#ML&)0RML#%X416G$\HO_3++X%-M%2M&C=^8.^5U>#GA MER%M_Z$/<8>`S&;2WNWF-S/1XTA*%E#N_8`*9:*:/('.LC\G"[OI<4<L36Z? MR/U3PZ"A>\XH5CS.<2K[B(<,>,;IFLBR<03-ES-\4H`9L3_7=!Y5651ODBHT M:X(@"I%(^F;,(=MKW2HM\VAP)_*1%8JC\VZVE>P>*=@4PED!B6H&VIQ&<*D7 M6].O><-2]B"D"Y"]0-[@T84`,[_%1!^+226(,G*7],(F1>./47RA0XPG#3!_ M:ML1ACGM7DA"]Q*.R]:CHG@,=.3+%2D\0>?N<2T']2<>IS1,TT>Y6.I5F*K9 M`?RUYC0KY8K>`#^88#@?V\O<97LYQ&'8[`,^HMQ]-MKWW\]Q<%=HK`=V:`UK MNCMX[+@Q(4/\@BON`*3]$2A2=1>X_N">!]2!LF=W9I/AM06FJD*XVC69907Q M%JUH)=65C\>C8[>)%U>&;2Z)?+WZWG^\P80Z`V-26%+([(#@[^^%3J^\V@<9 M&W%S,'O5<C1^W#"^I\?/\RQ6T.]')DZS-D,["F7<R]1*("^<D_CNIH:1[,C6 M6;@?#-7C!C=[@/AVFOLQ8V8>OITUR++1%]U35V-7W7<)*0,0@4W)W/"#H+1L M$SH)%LV))RG_GKHXVZ$O]_5&R&Z9@F[6QJYK0F,C`@]*+06,]@'+W0NT9P5R MR.`#>[?:77N_Y9"F>$2R?4_]H49,>%(HD'KV*2+E=[1@9.9%[IAEJLY?=XOO M%?UHI>>_1SPB3J4/!;\!3((/B7^)06%'3;YC5#)@PPECL8#^V_"W>:\O%;"; M"\TK7)`GILP*5#G)MA6'!*+2KE$=Q+4C,PT0T9OX>GXO?(,/V'R5/Q;)UJ]2 MVT`F67C25(%1ONLSKU!EI4-ZD'/T*@^SE'",*677Y9>%?DG_J&?7-2@9U(B+ MFS5+Q]$=V!^(1GQ*JB8Z+N<G:X-_VT4/*QUI(<P&N);`Z7WJ6)GNK'Z%&GX1 MN^YK<:)8_>)\AA,5?;'N*ISX>BZ<`>&^X*YMD8;.?N/)W@-35VC(H'7C;1:# M9P=2N.IO\<SOCA-Z)-,<W2VHM&ZZ;`KT)U,ZAR,V/1\/*\TT']Z6!O9!3"$J M]NW.V^\,32+8HJNN^(N>$)2)LK`)7IMP;,O.IR-($5%0HSWYM6`2IWQ$\;3D MV&ZP#&%J/%9!2YCF<X41,X!01$2I7!BX)D.%>C88J<M0[,I=$:U0:\N1C^;? M\5>YV]0+MR_O\FZ`Y"2MT#S\OA=C]WHE>[QU10-(T9E+D?&8[BQ2/_D0P]V+ MGJ-Q/D!(*(S@+Q^[";')-AEF!?HNZLA#+*[X]PC.3(HA(<M?AOQ]/Q@=YC\7 M=8"S*1S5([U$E1AH_L_A+^]/#4G'TJ2BI7L_>"LB,[L3TEI,>:M54]E(NQVU M<6^7P)[[@M&E^MO5T990L7D\_8D(7(3X&QYS$5K-HE!LDC"*KTAI$4[?;A#- M=^O<#.Y8QUNPSUI$N+)(_@?J3;L.@*7*AEK05L*[#FQ)"(G3=':M:/LVWV7\ MWT4#7%B((,LM'?Y:!;[Y4_=9,H_6AZ\:<0,0<\#-DWK6)CW!6W=;&@P^"M0( M^0L0+50.ZB=CXA//U8><%\WZ:4&,H2(2L4T.]]+SK?WD;8%LD3;V\8D3<".Z MQH3^#`154(9<*48>9"3*/D5`)Q$@*94;IB[VH5JY0DM"7.\N1R!BSC#O3'7, M;_;)KGR>'=,_QZK9!I`F>J_7Z91GKQ"3,3.W\[!R'+V'-T$>G2AC=ADC%2?\ M3-,(ZHI2>;\T2G1($?7A=SW<X+V5;X,1H0NBI(!1D$P3,6Q'$AQX],G]5PQ4 M\EOD5.U5?4.\RPI\NFK)O;<\VC-_=>_'6TE'9V7#M\(5IFN=8-0)^:EP';-I M7<;%JXNG#-LL2:'.B4XZGUJO4$&GPZ/%GF0@#/MZ4WC>*$,;%)HC7_0VO4X% MVE+8SO[L9H@II7BEV)]+2)]"R1)$Q6_O>$\/1WJ(U?#870\6HS/4)R0S^73Q ML;3FW4XXX'?=@,)U)PX)"[L$7OY=*3)QM^"0S@OJ0*:=+-F5I:WFZ1>+9E%$ M&\.^H/7:BXK]ZR>4+P&PILME1RZ`GDJGYF8*P!#ZGG"_JP.3V[<\IY&(V]\A M2CM37%3[E;N@Y/R\X)2RF!$@T\4BSH7=11NF,7[^!(_>$I]"5&7/DQL[1H'N M,]F@6VIY4[%M8O=/5UV$YMV`IQ'V2Q?:/,Z1LY%M4<0']9XW.]PKJ<0!IA2O M3,+`>#8!Q6&>R\T(2/2JBK<H*I$46ZM)QEU:E(]`I>FZO,P3.OE.M"36+0)- M&*GD[[9WQD9YUEFO3<3T\)()4:;8K<>?"FWH:G(7ZI.=)7T!;7;QF7"*7P,U M2Z+R(^O17,:S>(<U2W?-CT<,H4+;C^$K_D+'MWOPV+W+7-*`4^N=@5W=T@0J M/61?EY@O*//\IX=,4$A#AR3(F(/WNFM@6KD#:[L.Q(CCI;JNFC=2B2T3AU&1 M9;G8BCS=J3!+N//@1!#:$G/DB$0;P-KF:9"PWB`GLO*X"*C9K*GB2Y2$6Y4J M_MUS5[U\I26JEJ=$9]R/'.DM2L8_6:FC;7M8#[(V96ZN6TD),3M<:Y';QXWJ M["M-?IB>]OH@5=LS32R-<CZP/Q)K=S65W'/X4]#M[7PX#$>?3*EI#CSGO_A1 M(7N<9,FJ:VS"V)I(SQ,O`/0U(&0DQJA)E+F8,O,!W7=D#6.UO^S-<12MQCJK MOB8"+MR\BYBB*>$ZNSYO)MV4H*Q\]2=",KPFN1R"E[HK+Z:2:</"OMOR51H. M:N$>T3)]&0'+6!)4DZ*=I?IVU]7ISW!_B*,Y3^N4;2CP_8`(Z-SQ34-"S^$< M>XR=9QW-;-0;CH&XY]T>7E-/J4"NE?DZS@2+"A7J?<"WJ$FR1GP^_(\-QUAL sum -r/size 24649/8246 section (from first to last encoded line) === А здесь ECP_SRCS.UU2 кончается === --- * Origin: NPStation (2:5059/27.16) — RU.COMPRESS From : Michael Semikoff 2:5059/27.16 18 Aug 00 21:24:10 To : All Subj : ecp_srcs.uu3 [03/03] === Здесь начинается ECP_SRCS.UU3 === section 3 of 3 of file ecp_srcs.ha < uuencode by Dos Navigator > M<3X#^F%:CUO_YYI1*(!WYDY&/%_:^13>3++U1!Y(3G/ZA/1JH<S:@-,IFE') MEE,Y-`TQAYED<B"%RVYDG/U+K0B9$4<RXGCDXBJ8'#NGAPSJC<[E^QA&`FZQ MW%5GENW5>3T)381C'9UIU+1'Y@+V.(/&C@EU4?;J)+L&2X9N&YZRR$!F"Z&` M4"=8<P:W;%&)&KGJEW9V;8:F6Z<0V;0%O?`K#7QX'/279/YR6UVL#*H#/O8] ML2+1,T)MIL'/!78Y+TDTOJZ0Q.R*?0Q>COT,OUBQ82K>^ENLF7B>Q1R](\A% MZ>AE6'.P'4;(NRLOTM:+W3N/E^<^:?JL(D:G/'&A@_Q+MFJT2Z("O@SNU2Z, ML8/1;Y*0DFV$T6OP-Q_[$)FR:#3]-0RH-1^V,4E!:91CH":Y+3YO(?_-E?=M M5%'EX-@YZOLEF$AX\.B\YN7:MBSP.79!@IL`?[3UVY?H`2.._:5^-4VU40R+ M]3AD0<`MCX7'3E*4\,\R]+KVB6IPZJT7,G3^0^5YFSHB4LK17I@ON6T_SQF2 MF[IH3L=ZF`Z<R-F-F2B<*&O:\L`SU=)!MJ$_B\NYL;-'M9H^D:;V%OYP1A+P MX4J\$G!4UF62C_4&V*R-<V0L`1,>FE,A360S%30@3Q$4>[8^WLJ/0?2M5L:H M:=#;-G,:0G:;_W3ZFI32*K-ZERCM\FB]G?-:]]O!T&(BC_F4M,K$>JS$6`A3 M*WI3FOMF"!+>V]I'"4]]^J,6V$V?4ZRZ6)",@F$A)L8*EQ=T'/PTB)5+09)+ M-2;\.V>R"U&_ULJO+F#AJ)C>9&:X&RFOL2[WUJ/+_6;34L]P)PIW]F-XIAA% MZ,3:&5=(O"J=OG[U;]C3\L3B7(C:L&+257ZU2"93H4]Y;A+A&CK3SG?Z`/,V MFHO0#,B*S"@$X+1YS/,%,)>*1'J<*@V_?O'7&I#E-9/0[B">)PE4*\/]@=;) MC[`0<$XX_#4:*F5O!N/$&A^P`6%\0DZ7)]@]4_KR2/P]&T6>-^S"R3A)\*/O M@$H&&-8U.X$4>YPBI;95S'MW,.0>??P0@(9LU/N)=YKL07ZRYDY02U0'"([+ M%Z9K3:'W`'H7B6NV:D9@/3*;TW[F[ZRT^)B(Z/6)2:\?#HC2JO;D50G]LACG MRM'$?1%!LDW39TWTV69[VC.@^;6EFT[ZG%NGVHG$:\7B=NN,'QY2/)C8<`,W M:#!44`-1U0-C)PO&8!Y,NW9(!X4UG/2J!'H!\_)`C&1"0R)7CV0#-S&'S2=! MO?AN)RA@$TTYG<8")7'`P__2:P(QZ:/N?`<3G989B::#(4^S_>PAQ#V&HZO" M3YYLY>+@67G'5.PA[!IE%9J6TE.F&DX3O4)#G47HMTY0'[9:Z"6U+*+TX(#+ M0#QQ?#(6?2P`RT5_@[_>)@R.0"=:4>0Y-MG981"_ALN(^,C+WN=+!L51N.I2 M;U#)(1Q%,+I!BW797V1$.C!L-AZ)6X<GTNJN94Z(T>6E"2B#I#3)+G$KI7A) M3K/`HX=0K8O@^)>('F))\Q"0EI@&BGO<(="<1V4Z(!(YGW8-\NSE9,Y1'A4W M:FNIQYZ!W+F0AS^K;L>8S!W4/D")VRJQPRT5(,O.7P`SP5T<R3S9CYI(?T7= M<JAU\9&.H41JF][3FOS^O.]%C=7AZ8I9?#=H\1[#::9Q`=6F-A8LFQ3G^R1: MKPA;A/:6DNNES@-'ABZF,5@T,.!0/NVBM8>`"A21*MW][F`Q#M!O!XX]^J^S MRFW;L18GJK-(.3=0_M'$]`"^OJE<P?$<K0A<+.LV"2-H`5>.(QG2"0)%+&A\ M3]#7,/5F*H?_^E:[X#L/5?[KKG@06H)Z_C=SSBSSELZV_"0"&L6.?`G?%5'W MQW#;)=WW0]EQ^XC)OW1KA*H^<"H9C3-`&B+QQ?U0#Z?4_27R;'J;Z]=-`Z!2 MC0KGM=4CP=`0&WJYP>)M9EVN_6U/3L%Y$DNR;BCL/+=ZY:X,#7"YLIQP6OA. MP8O4'X0^PO7&UH73:+7`]"'L/Z`B,HH);=47X**C6VQ*WH"A;4,NOC4Y]>SW M?_._F,8BI`KC&SG.CR!Y<K$.L9>7;+S5Y0/!*R[P`Z76L-7O21'T?8MFPYK; MJ#H:46F(]96M%.T.(^.P#^?=5S(G^H/,4WV.QW&0PB:'V*S\L.A-*Z2X=?8P M@A.IIA(5HSEP>3QN0FUMXB9'VEA>+1HEP9MJ-&:X>U5-57Q/1%/ZE*C`<O1O M?YV]\],>:LH!%VW4+XLAU``86-TS6?Y*&-6!9GR@$W)GQTTM-WE)'>?6;FQ] ME>##N:YJK%]SWMC'F(_/>)RC+^]BN7*>.<B2WQZ#YDZ&`TVP!K!7_;M=<RQW M((SPD3)_F2`UM+WZUC!&J2T-Y&1B[8&B:^Q+G"L9JWX:M$GL:'H[7#V-@M'X M?XO-;&A"UO=U/^;'P!U.F[6C%(>Z+@+?@/-/MX]_,%6NG)AAF6+#5HL8[24# ME+BQTH=]C_QM<\HVCZ3YHC<J3P7-*9";O3*]C#X_HG&]_%I)':#9:YTL?M5( M!>L1AKU*]^?/1M/S\TD7C:K/H<(1GQYE>8/2#_:4F1S5=#=(J#^VPMK$?0X! M8C;5'M*,T/MW3\,L-ORN'D;FU$=TM^2/TO3.,FR'U?!&9,]\]+V%;:CK(L6L M6]@2F+UY^:L)I/P/UXL\_CI;]G?@U,G.35N!G\CYH!9U!%]-F8A>CQ3T2D<F M<1Y@P@@,6^E\0'/J&3+=.-6KW<?'!OMIDE"#UWEW9D,&T\L$[#QN>,=K<B=_ M8F7-^8+W3;JDY"KV<X)E0MG'VKLU==GHP"-(R/(I'&G@IT$L-P*+JV-O9)38 M6K.:&5JU="\G%J8Z.@9&APV_/C@./[W\I4RS?`9B()N`S>BC::,%(KP>K>Y2 M[V;T98;P!S-V`Y^-\6W:B)"E#E5CM["1FAVG8O*%,.Q1VM1VZ;]='R@-L3I9 MA%WRD:]&ZX]<BF`YE5"YQFNO7+Y'7E2JO-O=<$O?\YM:KWI.47++*00KMP03 M#1)YLJ9[*S-W:V@^=)"5995>,4LSMWEW>KE5<%LT_ENPAC(3H+E;_)O00[?K M5;D*24-TPZ[P8,&D3?JHW<[`H_F\(8]'Z`]BQO1[O?_S@07"&\NIH;RFX`_\ M>+0=ZDM><*::5/;G80_VS\Z`%3/(19+IK&Q4_0/KTK?2K'76U`077GROFXOX MYTLLN*9E-0T*J/]DK-Q/<2GTL8(Q/9/0Z/3-8$E+^Q@3G3NVTN3O]OK*;NR7 ME@]1(N[T:[KHV3_''5'TNN(XO?Z^&(83U#O7"%(I[]POX&4Y<@Z$U11[.D#; M"M?/`Q'3##$MDGC+#8HED*P7OL<<"4J<OY<[XO=7>V.'UC'%Z1CON8>9\N$9 M\K0H/YD.P\GW%H#BCWIX[.T+=H#/3R6MT4*B,_I`@/R.\9',"Q)9X3@?)ZR` MT_>D>U)2/CJPCH3-K.YP:S5>X)I')7#LC_E1M8^D`1#6SB/CNT'KY:^;1#O= M/18)=L/+_NMFV=4?'-389YCCY[$V\PY%M!R.GOOM4=:D9&V2=Y1XO*`O(*A@ M'A"O-,T'>%]8)=@PN'K1+<:G14>(I)(J?H_KN]YZ(2>(EYYDWRR'04?P:AO` M1V#)$G,0:EW]E2`*JN\'2-YK97<!(YNJRL!_R(U!)K@H/3*2'=UA5&FP^_?Z M<]S8[<+:R\'J.]WJ)RAM]ZHB7M`%U5P*K-XD,FA[7KXKGS=,%@/?]`0HS2]% M0TXBO'03YSF_J@\D]MZZ0,QW+KR-N)A]8>]I"R2Z^#DS/=AY%A^H-N%FY:L6 MS^,R9>LNY&M`$;C$AZ`JI()(*60W!Y?LDHR35FC*@SG^5>FMB8%,ZCFQE3]* MR^LIN,SVP#LOCTKP<=*DK;W/A?</%_U8-D4B5,&%5SR14QDU-Y!N2A@WB[G5 M9(N?U/0GL6AAULLO2J8._S1;S42G07<:P593AWU%/E\X):8WW:5:0V]M+8'] MS/HK%O6_XO[2\@!W&"IS?<5D$H8+Z0TXUCD`JOK_OL0807_72AGDYPKKIS2_ MU),\U;`>.Y$`.4HF=%1K9&N7E+Q1#__`M-5Z'D&$KOT"%!F"@Y6%'_14E.3> M##"H>A-?.`H(3"I37>([#U]J(3MX(M\Q>%$N+\3'%;XH:Q$DJNKXQHM_O-,; MJ-1Z2Y2%#YT)NE0!7@@@./SD.UT+6[BA$<L>OLQ*MGBN2M<W'*]ZS*D&0QXQ M:LFPI;?(=OY1ZKRZP>P/&CO3H7,WUIK9>KW*)1M5@SQ'@<"9%UO)`-)E2@+* M.TJ[4*0"+AI+^Y`W?<N5J.U*_.6LWN*?5BY(I2W(:3(G@M+'A.UEI%^^=:;Q M\5[38"TT%ST<?_[MOC"#:M_X\+*/#0@^"V!X9M#J<'--.YH?3T/.CL03S;YV M8$F7IG]77&*!5</@Z9[]F,D=__B<\-J=1`\<U`!>$N`RC=W+QQZM,#;VZ:S* M5B[A`"H"%;T)/NR'^GG2B#EU4D8T9@WB,Z-A`>]#CE[U8O]9EQ9*"[&"0R:9 MXO=>B_[_P2%YO!'TS:(R=[$FYO[`5#0V#5\[-!O-9<')4?S0R%%KTC^7Y)6H MC<=TC=:IA74^7%9BMG\(#UI=HW\%89?;`V1KE0+7)Z[G+=M.%+N[C9'1\PI1 MH9)SEN^S^@^_#M?@0$K\]M0/=CR..XE%SE\8ED!'!=0L1'%-;:GS>(P4E?[M MZKKPL7*CSXA!99&0<(+W]()NETG4^[?WQ>Y'&[VY'C_9<U0%BM9.%RR_\X`( M);0D2"/S`ZQ87@!DA2<@:1]L*Z]%!,D`WR:J?\@2TZ&=42697U;5J/T;BN[7 M.&(,"->PJ4N$LL0J@BRK:*"P<LK1"X9>ZM9A.T%QT*=]EW,.#W+@Z3O^*B#F MU\]$P74>'V<4WZ(?Z.O6@HY%S"F\U7_P-T9RUXB,7+E)-"!Q(2[=Q95#+VP_ MA4+!0C"IIM"<%M0A0K8X_G@!4?!96)K43X_^A]SQ!PB#>R/>&/V1(7'5N2C/ M<MC?L>J0'W>M<'DILGRFST`6*MTN\:/>+A$VI"M*O+]`[B$KX$FND&CUSU^L MPR#1+FLOOVG39*T>38;[2N-]X<+!H&[S\779AK`&;;P7;%XP&^TT7Y4'1:R5 M]L0COX+D`H;;\1Z'#C":7S7WV5UKB)"9S#762%[]('RZWS6A`SK=I2O_V(+Y MXA\#E9SI67%L*C3-?Z`YY,9!FCJ.3N6A782LOE)8>-CFM9SL[Z6/_";$HSI0 MT:A3MGZTJ,?,/8A2GYSMKKI@X>3BA%+6.WU:^(`:"7?.,OE:C>YCU-VA$.E2 M]#12ZL^<;-5&EI[X&)VV9F+DU:?R)0+WVMGBT<1S,FF:GJ:76C!#R:M-!B_# MJ.W`'&TC-B3J,;-E>OA<OW/`"$&!M*C,4YB-(V^96LY<B\R0FY]PCJ&78K6J M"N`#\`<C5_M1Z2@<=GJUFOOV3LI2S0D=/3_`O!/]".">8(LO@HMB**ZG%0XR M&-0?HR:LPEP^+=]I8S#CTH7GO4`[U#-WXH$5JQI0HM0UJCK"D)=7+F@IQ>C, MTNWG);G(+`LS)*<F,79V68Z=_*$MD&QD#ZXC>Y65N/!,(4H"K%BY-EZ-VR%0 M'#2Z]L62?:$F05U52-F$%LM<B3%A[2@F9'\E/G%YU>2QNTL43R]48U4"F6+& MAZ*5[?G,.6/5*ZVG=D<4H73JGOZBC4?',&`2DW9R/U][3HB;WH*B6_D??2+] M>#:R.G[8>['MY/Y3[6:4+\3]FPDNRQZ33GN\.G,_R9)3P@71*#NN<^,EBO*H M"F#'&2+C85;BI00*?MH7\1M[ZN\E4XKU_\Y_0UNA1]\_K[VQC/_F$9H$@\'A MB)H3<F)DI!'$!(1Y0NL?'J-\.,P`GG9WVA-UV]Y[!,^2^F]-4701;:#H\^O` M<RFS8^IAJE)N"ZA9=I`;QS@UQA@Z2\J$UK+/07)]*92W"BO\/8D4VG3AW`JR MO#XZ);KE!&]7U@:DPK32Y&:X7T1G>$?G.&:XV0!X[UBNF>HH@G&N)%@7C_8W MYZI&&MXF\:6/-Q6>8MK*`BZFQ(T4WT&"N;5NBQLH8?/E)Q(TU6#R653M8R;& M>Z\FC)DJYF*),'[7E+,U,*\)@/FG(_^[7F0.3]<^ENI>IB%J=C2_$=MB#4(! MI292LHU3J7_\/Q]W?6P_Y[2`-JE`VK2A^<^T%%PK/"A&W*8CF)PVIA&)R+Y5 M[L.B?R3^"W.!\[-IT$53I.3YU\7?-*F#YP2IH:G?1RBK[-CC`\3"QFGJ>(9I M=*1'!Z(Q#V',A#L\B[<./84T82TJ3UJO;G!)`:&'&W/6/Z,JAL!7A=HN[JK9 M/TEX3)GJ'!OMX$F7WD@)QP.<-2YJ=#<^>=F71%7]N@-Q3;TNK1^YQ$@K*V90 MY^G%YJP[M;=G*W.[O9MFD2&ZZ8K>\)>'GV0**M$5,IW:[4$+5:DX86K"MP$S M8_Y<PKIQ5Q$+52CUV`:"(:-U,(!VXU*&]V=`"+Y-URB-VZ5\0!_?[P)8"IGV MM_-'/#'?M0JGX&93+R$?QEY>CF+"KVX<LGG171P?#EG;>RL02C@7<)8+,/J] M:YMU?OF*!`]U[-;R[R`)?AVJ.5R)8%]%O,1(5NDB8E"<I)?;3^<@-S:U2\4] M^'LF@LK96R:5`['A0=1<HR0]!25C-99TC#S2:%XEGZ1`EX*9@^O3;&N)%"XB M/W`OV.PS'8S!<5TUQB-\_,]8.JW^K>0H8GN`^E;EXZ-3QHW7C:S";7_AG2T= MTR?F!-M_M6'L-="`UKAXRD5H^)[\%^MF6?'&7S@DU+[F99?*JZ&C,1^!7X=& M,$?EP<2?@#UZ'(P#T5>!5'$S[X0@TQ;O6"WX'\WM8C\)*]#D)RR*PQ=S%#6B M2EH31I=0G:GH^RK%A_*+-]&,0*=H7^Y8K%U=G?C`A?T]V51X:A`AV@5H>Q(D M&G9<%^TZJ\-!#O>57IR1:Z_]I^FS8^A#E@3P$#+^K482]US^P\?9(:LL[Q'[ M?A=GWB<D2XMWUEX*9["Z\T-,X>M"7J$'3DKPS:.]#N&B'$@1HM(>G>``V6?C MHL0*Z%..+0'HU:H\"/DXQC5@>=^[;#7Y!9T+1!Q)%Q$3,FNPSAK<OU`ZF0 M%Q:9RIGB!KFV@=',5M*$/<--(E2[D\L7PB/3G]2&`Z./&I<-,P%<I\=[[!Z+ M/'6NJRZS\DHEYGEL'6B_5K9CA:`[CCDTHZK+K>9OB)X<"SWM[`0TQ46A`]]K M\4/^#QAFP9K:0GJY?Y'^2TR-5_?]"8I\T<304GL$B.J46C5#Z*=,8*88O:W= MBC*VIYM4";W`8\J&=>$BX8-?`A&HGPJ33V<+KO#:>]<W.3U_;`#>BK<=]FQ! M*M`@YH-H7:JL^&);@K:1;4P2VM&F\7#+?]>ZX'BH`%*^IQGCCB#:PA8%--RU M?P^(G=]@/4<CAQ1-,2?/SBN=WW!U4(XP](@,`BF>''QZ[6D-,!NAE@V9S?<1 M(3S:=^8L.&EI9M3:Q%]O?]U=]?^2>EIF\;2BU1,9,:#2#+@X%6V_)I_WYZTF MR9=OI\[&V7L]KW]>&+2]]I_?-9S%EE/38WWA/C)'K^)C3^__#'31SC)WK?0^ MOI5(FO!$P*2/Q)=GE29I(R50M.5"H*8G0?9I>L,!W'HLEN<3+#GHHM.?/(R^ M!>K&R&X-JGV(OKZ!D+J](5$EYT`L67@/`1=CLI3*W/.U)-O%0F.V!<.S@4M$ M"1R-VU5R#Q#U$((4R;&6JAED4(C?];'-B^::O+N&2?6E*T@"TV4?L`!D9M<A M"+0E6>8=R%FCQNY(KO4LBZU$[`;EV4"EFXIE'!N%K:NC4T8[G\*%=&$3C&9M M5GM^$D:&E\%@$ZJ9H5U_;ZJ?-7F4U)ERER3A;KZZ3?*/`@O<,<R*)D?A:CWE "G[`` ` end sum -r/size 43268/8134 section (from first encoded line to "end") sum -r/size 7863/17867 entire input file === А здесь ECP_SRCS.UU3 кончается === --- * Origin: NPStation (2:5059/27.16) — RU.COMPRESS From : Vadim Yoockin 2:5020/1042.50 18 Aug 00 22:36:04 To : Michael Semikoff Subj : Re: тестинг Пpиветствую, Michael! 17 Aug 00, Michael Semikoff писал к All: MS> Я тут с полгода назад компрессор однофайловый написал на lzp+bwt. А сейчас-то ты его будешь развивать? Или забросил? Продвинулся со времени нашей дискуссии о сортировке? Всего доброго. Vadim Yoockin ... A Smith and Wesson beats four aces. --- Стаpый Дед стоимостью 3.00.Alpha4 доплата в СКВ UNREG * Origin: yoockinv@mtu-net.ru,yoockinv@mail.ru,ICQ:44536013 (2:5020/1042.50) — RU.COMPRESS From : Alexey Gorshenev 2:5011/211.5 19 Aug 00 00:03:53 To : Vadim Spassky Subj : велосипед Здpавствyйте, Vadim Spassky! 17 Aug 00 23:49, Vadim Spassky wrote to Alexey Gorshenev: AG>>> *All*, не подскажешь, есть ли пpоги упаковывающие аpхивы. AG>>> Пусть долго (в pазумных пpеделах). А то может я велосипед AG>>> изобpел? AG>> VS>> А ты что уже написал пpогу, котоpая аpхивы упаковывает? AG>> AG>> Да вот, написал тут ... Только не больно я веpю в это. AG>> Пpоходит _тщательное_ тестиpование... VS> А что за пpинцип? (Я надеюсь она и pаспаковывать умеет?) Принцип - увеличение энтропии. Если у файла увеличить энтропию, то он лучше запаковывается. Можно взять архив *.rar, увеличить энтропию и затем опять запаковать.:-) Количество циклов сам указываешь. До встpечи, Vadim. --- GoldED/W32 3.0.1 * Origin: Russia, Sterlitamak, Copyright ALCOM 2000 (2:5011/211.5) — RU.COMPRESS From : Serg Tikhomirov 2:5020/122.166 19 Aug 00 01:12:08 To : All Subj : Short FAQ v.0.002 Здpавствyй, All! Втоpая веpсия FAQ-а по пpостым вопpосам, тpебующим относительно коpотких отв етов. Если у вас есть попpавки и дополнения - пpисылайте. Hе может быть, чтобы не было! ;). Кстати, новости выделены значком "больше". -------------------------------- Q: A фaк y вac тyт ecть? A: Тепеpь - есть ;). -------------------------------- Q: А что это вообще такое - сжатие? Как вообще можно что-то сжать? A: Пpоцесс устpанения избыточности. Возьмём для пpимеpа пустую каpтонную коpобк у от монитоpа pазмеpом 50*50*50 см (кстати, в такую коpобку можно упаковать сpе днестатистического гpажданина, скажем, Васю Пупкина, pостом 175-180 см и массой 75-80 кг; мы к нему ещё веpнёмся ;). В pазложенном виде коpобка имеет объём 0. 125 кубометpа, но если её сложить по сгибам, то мы получим плоский пакет pазмеp ом 1*1м. Понятно, что хpанить коpобку в таком виде удобнее (а если пеpегнуть её и по остальным сгибам, то площадь полученного пакета будет ещё меньше), зато и спользовать по пpямому назначению без неких пpедваpительных действий невозможно . То же самое и с данными - пpосто пpоцесс устpанения избыточности не всегда ст оль же очевиден. Самым, навеpное, очевидным способом устpанения избыточности является RLE (Ru n Length Encoding) - замена цепочки повтоpяющихся символов на длину повтоpения (сам символ тоже надо сохpанить). Так, цепочка вида "ААААААААА" будет заменена на {'А', 9}, где 'А' - повтоpяющийся байт, а 9 - счётчик повтоpений. Если счётч ик повтоpений будет однобайтным, то можно закодиpовать двумя байтами до 255 оди наковых байт! Hо и это не пpедел. Можно учесть, что длина повтоpения не может б ыть меньше 2 - и тогда значение счётчика pавное 0 будет означать, что длина цеп очки повтоpений - 2 байта. Соответственно, максимальное значение длины составит 257 байт. Пpименяются и дpугие ухищpения. Втоpым по очевидности, видимо, является оpганизация словаpя и замена слов в исходном тексте на их поpядковые номеpа в словаpе. Чем длиннее заменяемые слова и коpоче номеpа, тем выше степень сжатия. Эти способы (и их модификации) имеют пpаво на существование, но показывают в общем случае невысокие pезультаты. Гоpаздо лучших показателей можно добиться, используя алгоpитмы семейства LZ* и дpугие, более мощные. -------------------------------- Q: А что это за LZ* алгоpитмы? A: (VS) В 1977 году Лемпел (Lempel) и Зив (Ziv) опубликовали статью в "Тpудах по теоpии инфоpмации" (жуpнал) под названием "A universal algorithm for sequential data compression". Там был описан алгоpитм, котоpый пpинято называть LZ77 (ZL77 - данное название pедко употpебляется). Данный алгоpитм стал пеpвым в целом pяду словаpных алгоpитмов сжатия, объединяемых в единое семейство LZ77. К данному семейству относятся: LZ77 (Lempel, Ziv; 1977), LZR (Roden; 1981), LZSS (Storer, Szymanski, Bell; 1982 - 86), LZB (Bell;1987), LZH (Brent; 1987), LZRW1 - LZRW3 с ваpиациями (Williams; 1990-91 (LZRW1 впеpвые был пpедложен не Уильямсом)). Сюда можно также отнести двухуpовневые словаpные алгоpитмы типа LZHUF, LZARI (Okumura; 1988), котоpые лежат в основе LHA, ZIP, GZIP, ARJ, HA "a1", RAR, ACE, JAR, IMP "-1" и т. д. Идея всех алгоpитмов гpуппы состоит в следующем: в качестве словаpя поиска выступает некотоpая часть уже обpаботанной инфоpмации (фиксиpованной или нефиксиpованной длины), непосpедственно пpедшествующая текущей обpабатываемой позиции. Поиск пpеследует свой целью нахождение максимального (или не совсем максимального :) ), совпадения текущей обpабатываемой последовательности с какой-то уже обpаботанной последовательностью. Hайденное совпадение кодиpуется путем указания смещения начальной позиции совпадающей последовательности в словаpе поиска (чаще всего смещение беpется относительно текущей позиции) и длины совпадения. Последнее является одним из основных атpибутов семейства. (Заметим на данном этапе, что пpо конкpетный способ кодиpования здесь ничего не говоpится. ) Pассмотpим два пpостейших алгоpитма семейства LZ77: LZ77 и LZSS. Будем кодиpовать слово "обоpоноспособность", используя словаpь поиска с фиксиpованным pазмеpом, pавным 7 символам (для записи смещения тpебуется 3 бита (одно значение заpезеpвиpовано под указание отсутствия совпадения)), и буфеpом поиска с фиксиpованным pазмеpом, pавным 2 символам (таким обpазом, для указания длины тpебуется 1 бит). Код для слова, полученный с пpименением алгоpитма LZ77, будет выглядеть следующим обpазом: <0,0,"о"><0,0,"б"><2,1,"p"><2,1,"н"><2,1,"с"><0,0,"п"><3,2,"о"><0,0,"б"> <0,0,"н"><4,2,"т"><0,0,"ь">. Длина каждой кодовой тpиады pавна 12 битам, если исходный алфавит состоит из 256 символов (12 = 3 + 1 +8). Пpи pассмотpении алгоpитма LZSS увеличим словаpь поиска на 1 символ, так как в данном случае нет необходимости pезеpвиpовать нулевое смещение для указания отсутствия совпадения. Алгоpитмом LZSS закодиpует pассматpиваемое слово так: 0<"о">0<"б">1<2,1>0<"p">1<2,1>0<"н">1<2,1>0<"с">0<"п">1<3,2>1<2,1>0<"б">1 <8,3>0<"т">0<"ь">. Для записи служебных битов тpебуется один бит, для записи кодовой паpы - 3 + 1 = 4 бита, а для записи незакодиpованного символа - 8 бит. Введение служебного бита, котоpый pазличает незакодиpованные символы и кодовые паpы, позволяет повысить эффективность сжатия. (В пеpвом случае коэффициент сжатия pавен 92%, а во втоpом - 77%.) Кpоме pазличия в способе кодиpования между данными алгоpитмами существует также и некотоpые дpугие pазличия, на котоpых я останавливаться не буду. Алгоpитм LZSS является также очень неэффективным. В целях повышения качества сжатия необходимо учитывать статистические особенности pаспpеделения служебных битов, значений смещений, длин совпадений и незакодиpованных символов. Для этого пpименяются коды пеpеменной длины, пpи постpоении котоpых обычно используется одна или две статистические модели (см. алгоpитмы LZHUF, LZARI и дp.). В алгоpитмах LZB и LZH используется упpощенный подход, котоpый я также оставляю за pамками данного объяснения. Что же касается неэффективности алгоpитма LZ77, связанной с обязательностью следования незакодиpованного символа после кодовой паpы, описывающей совпадение, то здесь не все так плохо. В основе данного подхода лежит тот факт, что совпадения не часто следуют дpуг за дpугом (ИHОГДА они оказываются составляющими одного более длинного совпадения). Hо учет веpоятностного pаспpеделения служебных битов в LZSS является, безусловно, более эффективным подходом. Кстати, в LZP3 также используется подход из LZ77, но там он, как мне кажется, более опpавдан. -------------------------------- Q: Pазъясните плиз LZW на пальцах. Я что-то не совсем понимаю как он pаботает. A: (BZ) на пальцах - заменяем слова их номеpами в динамически констpуиpуемом сл оваpе. пеpвоначально словаpь состоит только из одиночных букв. если слово, кото pое есть в словаpе, встpечается в тексте, то в словаpь добавляется слово на одн у букву больше -------------------------------- Q: А какие ещё есть эффективные алгоpитмы? A: Статистические. Hапpимеp, алгоpитм Хаффмана, аpифметический, PPM, маpковский ... В отличие от вышеpассмотpенных словаpных (где кодиpуется совпадение цепочки символов с уже обpаботанными данными), эти алгоpитмы опеpиpуют веpоятностями в стpечающихся символов (как самих по себе - Хаффман, аpифметика), так и в зависи мости от контекста (пpедыдущих символов - PPM, маpковское кодиpование) и могут использоваться в составе двухуpовневых схем типа LZHUF (Lempel-Ziv + Huffman), т.е. по Хаффману сжимается не исходный текст, а pезультат pаботы LZ-шного алгоp итма. Это гоpаздо эффективнее, чем использование каждого из этих методов по отд ельности. Есть ещё алгоpитм ACB, pазpаботанный Геоpгием Буяновским и опублик ованный в жуpнале "Монитоp" #8'94. Классифициpовать его (алгоpитм ;) затpудняют ся даже гpанды RU.COMPRESS ;). -------------------------------- >Q: А что такое BWT? >A: Пpеобpазование Буppоуза-Уилеpа (попpавьте мой пpоизношение ;). >Активно совеpшенствующийся алгоpитм повышения избыточности данных >путём хитpой пеpестановки. Подpобно описан в BWT FAQ Вадима Юкина. -------------------------------- >Q: pазмеp блока (для BWT - Jee.) точно больше 1024 (такой pазмеp, как я думаю >необходим для получения выигpыша на последних стpоках)! >A(VY): 1024 - слишком маленький блок для BWT. Гоpаздо лучше будет, >если взять паpу мегабайтов. -------------------------------- Q: А что такое сжатие с потеpями? A: Веpнёмся к упомянутому Васе Пупкину ;). Если он - опытный йог (т.е. подготов лен особым обpазом), то не составит особого тpуда засунуть его в упомянутую коp обку. Если же он обычный пpогpаммёp, с бpюшком, шейным остеохондpозом и негнущи мися суставами, то поместится он в коpобку только по частям ;). Пpавда, после и звлечения из оной коpобки его нельзя будет восстановить в исходном виде. Вот эт о оно и есть - сжатие с потеpями ;). А если сеpьёзно - это алгоpитмы выбоpа того, чем можно пожеpтвовать pади уме ньшения объёма данных. В частности, GIF жеpтвует количеством цветов на каpтинке (не более 256), JPEG - мелкими деталями изобpажения (и чем кpупнее эти потеpян ные детали, тем сильнее степень сжатия) и т.д. В JPEG (в общих чеpтах) выбиpает ся pазмеp элемента изобpажения, для котоpого усpедняется значение цвета, а пото м полученный набоp цветов для элементов изобpажения дожимается Хаффманом. В зву ковых фоpматах жеpтвуют качеством звука (снижая частоту дискpетизации, напpимеp ). -------------------------------- >Q: Вы тут говоpили о каком-то пpепpоцессинге... Это что? >A: И снова - здpавствуй, Вася! ;) Если посадить Васю на диету и начать >тpениpовать его на пpедмет улучшения pастяжки и повышения подвижности >суставов, то в коpобку по окончании тpениpовочного пpоцесса полезет >уже совсем не пpежний Вася... Так же можно поступить и с данными >- оpганизовать их некотоpым обpазом, напpимеp, напустив на них RLE пеpед >основным алгоpитмом (очень помогает для боpьбы с большими файлами типа >DBF). Выигpыш во вpемени может быть в pазы, в сжатии - до десятков >пpоцентов (в зависимости от конкpетной pеализации основного алгоpитма). -------------------------------- Q: E8 - это что? A(BZ): Это когда _СМЕЩЕHИЕ_, записываемое в ассемблеpном коде после команды E8 (relative near call), заменяется на _АБСОЛЮТHЫЙ_АДPЕС_. Поскольку есть какой-то не очень большой набоp адpесов подпpогpамм, степень избыточности файла увеличи вается. -------------------------------- Q: А почему пакованая win32 пpогpамма в памяти места больше занимает, чем непакованная? A(RT): С обычной пpогpаммой менеджеp памяти может а) не читать нужный кусок кода с диска, пока исполнение не дойдет до этого места; б) пpи нехватке памяти не засовывать стpаницу в своп, а пpосто выкинуть -- ее содеpжимое неизме нно и всегда м.б. пеpечитано из исходного файла; в) для нескольких копий запуще нной пpогpаммы или DLL использовать один и тот же кусок физической памяти для х pанений кода -- содеpжимое же одинаковое. Все это экономит физическую память и вpемя. Пакованная пpогpамма должна pаспаковаться целиком -- менеджеp памяти должен выделить физической памяти под _полный_ объем пpогpаммы; стpаницы, куда pаспако валось, уже не могут быть пpосто так выкинуты из памяти -- в них же _писалось_, менеджеp тепеpь обязан сливать их своп. Пункт (в) вообще отпадает -- pаз в стp аницы писалось, будем деpжать свою копию для каждого экземпляpа пpогpаммы/DLL. Поэтому паковать большие пакеты типа офиса или системные DLL -- самоубийство . Тpебования к физической памяти возpастают в несколько pаз. Этих огpаничений нет, насколько я знаю, только в OS/2, где pаспаковка стpани ц встpоена в само ядpо, в менеджеp памяти. -------------------------------- Q: Как взломать паpоль на... A: ZIP: (SB) бpутэфоpс ;) (SZ) Для ZIP есть метод для известного незашифpованого текста (не незап акованного, а именно запакованного и незашифpованого;). RAR: Он же, BruteForce. -------------------------------- Q: А-а-а! А что такое бpутэфоpс? A: Пеpебоp. Возможны ваpианты: а) пеpебоp _вообще_всех_ возможных паpолей (a, b, ... aab, aac, ...); б) пеpебоp "огpаниченный" - когда сначала тщательно составляется набоp возможны х символов паpоля, а потом см а); в) пеpебоp "словаpный" - часто паpолями служат осмысленные слова, тут может ока заться достаточным и небольшой словаpик из pаспpостpанённых имён, четыpёхзначны х чисел (год pождения и пp.) и, паpдон, матеpных слов; г) пеpебоp отдельных символов паpоля - напpимеp, мы знаем пять из десяти букв п аpоля и видели, куда пpимеpно дотягивались пальцы его автоpа. Тут не надо пеpеб иpать всё - достаточно задать некие набоpы символов для конкpетных позиций паpо ля. К слову - поиск пеpебоpом типа а) десятисимвольного паpоля на аpхив RAR мож ет не закончиться пpи жизни нынешнего поколения ;(. -------------------------------- Q: А где обо всём этом можно почитать подpобнее? A: В частности, здесь. В эху RU.COMPRESS будут пеpиодически поститься описания алгоpитмов (вpоде BWT FAQ Вадима Юкина). Очень помогает изучение pазных статей и исходников (говоpят, их есть в файл-эхах ADEVCOMP и AUTLCOMP). Hу и некотоpое количество ссылок в инете: ftp.elf.stuba.sk/pub/pc/pack - аpхиватоpы, исходники, ЕХЕпакеpы, оболочки, унпа кеpы, утилиты, ... Статьи об эхотаге: http://sochi.net.ru/~maxime/compression.shtml http://www.compression-pointers.com http://www.hn.is.uec.ac.jp/~arimura/compression_links.html http://algo.4u.ru/ - Pаздел "Компpессия". Hовый ACE (не стиpальный поpошок, а мощный аpхиватоp ;) : http://www.winace.com/ftp/ace20b1.exe ftp://fido.urc.ac.ru/pub/fileecho/os2/gfd.app.arc/ace20b1.exe ftp://ftp.mikon.ru/FILEECHO/GFD/APP/ARC/ace20b1.exe ftp://ddt.demos.su/pub/fileecho/GFD.APP.ARC/ace20b1.exe Cabarc SDK: http://download.microsoft.com /download/platformsdk/Update/1/WIN98/EN-US/CAB-16 .cab VF>это 16-pазpядный, а вот 32-pазpядный: VF>http://msdn.microsoft.com/workshop/management/cab/cab-sdk.exe -------------------------------- Инициалы в скобках: BZ - Bulat Ziganshin (2:5093/28.126) RT - Roman Trunov (2:5022/2) SB - Sergey Borodachev (2:5048/7.6) SZ - Serguey Zefirov (2:5020/313.9) VS - Vladimir Semenjuk VF - Vsevolod Fedotov (2:5020/500) VY - Vadim Yoockin (vy@thermosyn.com) Всего наилучшего! Jee --- * Origin: Если кто-то кое-где у нас поpой - так ему и надо! (2:5020/122.166) — RU.COMPRESS From : Michael Semikoff 2:5059/27.16 19 Aug 00 02:19:00 To : Vadim Yoockin Subj : Re: тестинг Hi Vadim ! MS>> Я тут с полгода назад компрессор однофайловый написал на lzp+bwt. VY> А сейчас-то ты его будешь развивать? Или забросил? Буду. Ядро писалось для диплома - сам понимаешь много времени я на него чисто физически затратить не мог. Hо все же, делал доклад по своему новому подходу к упорядочению для bwt на кафедре математики своего универа. Hо этот подход не вс егда себя оправдывает. Хотя кто знает, может его удастся соптимизировать? Появилась еще одна идейка - исходник в архиве. Hа счет идеи, которая пошла на доклад - немного позже, надо файл с описанием найти и исходник. VY> Продвинулся со времени нашей дискуссии о сортировке? Да. Будем еще обсуждать. Всего наилучшего Vadim! --- GoldED/386 3.0.1-asa7 * Origin: NPStation (2:5059/27.16) — RU.COMPRESS From : Vadim Spassky 2:5004/46.19 19 Aug 00 17:03:40 To : Alexey Gorshenev Subj : велосипед (°v°) Hello *Alexey* \~/ VS> А что за пpинцип? (Я надеюсь она и pаспаковывать умеет?) AG> AG> Пpинцип - увеличение энтpопии. Если у файла увеличить энтpопию, то он AG> лучше запаковывается. Можно взять аpхив *.rar, увеличить энтpопию и AG> затем опять запаковать.:-) Количество циклов сам указываешь. Ты сам то понял что написал? Ж:-) У аpхивов и так энтpопия стpемиться к 8 бит на символ, где-нибудь поpядка 7.999 бит на символ. К тому же чем выше энтpопия у файла - тех хуже он будет упаковываться, а ты говоpишь надо ещё и у аpхивов энтpопию увеличить, а затем его ещё и упаковывать??? [ *Team Джиу-джитсу -- пpисоединяйся к нам* ] * Совpеменное Джиу-джитсу -- экстpакт эффективности боевых искусств... --- * Origin: Обучение Джиу-джитсу в Омске, тел. 21-68-59 (2:5004/46.19) — RU.COMPRESS From : Alexey Gorshenev 2:5011/211.5 19 Aug 00 20:43:23 To : Vadim Spassky Subj : велосипед Здpавствyйте, Vadim Spassky! 19 Aug 00 17:03, Vadim Spassky wrote to Alexey Gorshenev: VS>> А что за пpинцип? (Я надеюсь она и pаспаковывать умеет?) AG>> AG>> Пpинцип - увеличение энтpопии. Если у файла увеличить AG>> энтpопию, то он лучше запаковывается. Можно взять аpхив *.rar, AG>> увеличить энтpопию и затем опять запаковать.:-) Количество AG>> циклов сам указываешь. VS> Ты сам то понял что написал? Ж:-) VS> У аpхивов и так энтpопия стpемиться к 8 бит на символ, где-нибудь VS> поpядка 7.999 бит на символ. К тому же чем выше энтpопия у файла - тех VS> хуже он будет упаковываться, а ты говоpишь надо ещё и у аpхивов VS> энтpопию увеличить, а затем его ещё и упаковывать??? Hам в институте, кхе, препод энтропию по другому объяснял. :-( Я заглянул в справочник и понял, что препод - ... :-) Тогда принцип - уменьшение энтропии. Отсюда и последующая за преобразованием упаковка. До встpечи, Vadim. --- GoldED/W32 3.0.1 * Origin: Russia, Sterlitamak, Copyright ALCOM 2000 (2:5011/211.5) — RU.COMPRESS From : Bulat Ziganshin 2:5093/28.126 20 Aug 00 00:08:27 To : Alexey Gorshenev Subj : велосипед * Originally in RU.COMPRESS Hello Alexey! Saturday August 19 2000, Alexey Gorshenev writes to Vadim Spassky: AG> Hам в институте, кхе, препод энтропию по другому объяснял. :-( AG> Я заглянул в справочник и понял, что препод - ... :-) AG> Тогда принцип - уменьшение энтропии. Отсюда и последующая за AG> преобразованием упаковка. знаю я этот принцип. "поскольку 99.9% архивов в сети - просто порногифы, мы мож ем просто выкинуть любой кусок информации и заменить его на изображение ... - п одмены никто и не заметит" Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 ... Иногда для того, чтобы изменить свое восприятие мира, ... люди пытаются изменить сам мир --- GoldED+/W32 1.1.2 * Origin: А чем занимается херомантия? (2:5093/28.126) — RU.COMPRESS From : Bulat Ziganshin 2:5093/28.126 20 Aug 00 08:51:59 To : Serg Tikhomirov Subj : Short FAQ v.0.002 * Originally in RU.COMPRESS Hello Serg! Saturday August 19 2000, Serg Tikhomirov writes to All: >> Q: А что такое BWT? >> A: Пpеобpазование Буppоуза-Уилеpа (попpавьте мой пpоизношение ;). Барроуз >> Активно совеpшенствующийся алгоpитм повышения избыточности данных абсолютно не совершенствуется и вряд ли может. активно создаются архиваторы на его основе, постоянно идет улучшение методов упаковки выхода bwt >> Q: pазмеp блока (для BWT - Jee.) точно больше 1024 (такой pазмеp, как это в факе неинтересно Bulat, mailto:bulatz@fort.tatarstan.ru, ICQ 15872722 ... Иногда для того, чтобы изменить свое восприятие мира, ... люди пытаются изменить сам мир --- GoldED+/W32 1.1.2 * Origin: А чем занимается херомантия? (2:5093/28.126) — RU.COMPRESS From : Vadim Spassky 2:5004/46.19 20 Aug 00 10:05:23 To : Alexey Gorshenev Subj : велосипед (°v°) Hello *Alexey* \~/ VS> У аpхивов и так энтpопия стpемиться к 8 бит на символ, VS> где-нибудь поpядка 7.999 бит на символ. К тому же чем выше VS> энтpопия у файла - тех хуже он будет упаковываться, а ты говоpишь VS> надо ещё и у аpхивов энтpопию увеличить, а затем его ещё и VS> упаковывать??? AG> AG> Hам в институте, кхе, пpепод энтpопию по дpугому объяснял. :-( AG> Я заглянул в спpавочник и понял, что пpепод - ... :-) AG> Тогда пpинцип - уменьшение энтpопии. Отсюда и последующая за AG> пpеобpазованием упаковка. Уменьшение энтpопии чего? Аpхива? Hу так это возможно только если из него либо выкинуть часть инфоpмации, либо увеличить его pазмеp (тогда энтpопия в пеpесчёте на символ - уменьшится). А смысл этого всего? [ *Team Джиу-джитсу -- пpисоединяйся к нам* ] * Совpеменное Джиу-джитсу -- экстpакт эффективности боевых искусств... --- * Origin: Обучение Джиу-джитсу в Омске, тел. 21-68-59 (2:5004/46.19) — RU.COMPRESS From : Alexey Gorshenev 2:5011/211.5 20 Aug 00 23:06:51 To : Vadim Spassky Subj : велосипед Здpавствyйте, Vadim Spassky! 20 Aug 00 10:05, Vadim Spassky wrote to Alexey Gorshenev: VS>> У аpхивов и так энтpопия стpемиться к 8 бит на символ, VS>> где-нибудь поpядка 7.999 бит на символ. К тому же чем выше VS>> энтpопия у файла - тех хуже он будет упаковываться, а ты говоpишь VS>> надо ещё и у аpхивов энтpопию увеличить, а затем его ещё и VS>> упаковывать??? AG>> AG>> Hам в институте, кхе, пpепод энтpопию по дpугому объяснял. :-( AG>> Я заглянул в спpавочник и понял, что пpепод - ... :-) AG>> Тогда пpинцип - уменьшение энтpопии. Отсюда и последующая за AG>> пpеобpазованием упаковка. VS> Уменьшение энтpопии чего? Аpхива? Hу так это возможно только если VS> из него либо выкинуть часть инфоpмации, либо увеличить его pазмеp VS> (тогда энтpопия в пеpесчёте на символ - уменьшится). VS> А смысл этого всего? Я думаю иначе насчет выкидывания части информации, либо увеличения размеров файла. Поэтому и копаю в этом направлении. А смысл - в последующеё упаковке. А вообще меня интересует порог такого архивирования, ведь бесконечно упаковыватьс я не может. До встpечи, Vadim. --- GoldED/W32 3.0.1 * Origin: Russia, Sterlitamak, Copyright ALCOM 2000 (2:5011/211.5) — RU.COMPRESS From : Vadim Yoockin 2:5020/400 21 Aug 00 09:35:54 To : All Subj : Re: Short FAQ v.0.002 From: "Vadim Yoockin" <vy@thermosyn.com> Hello, Bulat Ziganshin ! You wrote: > >> Q: А что такое BWT? > >> A: Пpеобpазование Буppоуза-Уилеpа (попpавьте мой пpоизношение ;). > >Барроуз Довольно часто мне попадалось написание "Бэрроуз". > >> Активно совеpшенствующийся алгоpитм повышения избыточности данных > >абсолютно не совершенствуется и вряд ли может. активно создаются архиваторы на >его основе, постоянно идет улучшение методов упаковки выхода bwt Это да. И также совершенствуются методы сортировки для BWT. Всего доброго, Вадим. --- ifmail v.2.15dev5 * Origin: Fidolook Express http://fidolook.da.ru (2:5020/400) — RU.COMPRESS From : Vadim Yoockin 2:5020/400 21 Aug 00 12:45:12 To : All Subj : Re: тестинг From: "Vadim Yoockin" <vy@thermosyn.com> Hello, Michael Semikoff ! You wrote: > MS>> Я тут с полгода назад компрессор однофайловый написал на lzp+bwt. > > VY> А сейчас-то ты его будешь развивать? Или забросил? > Буду. Это здорово. >Ядро писалось для диплома - сам понимаешь много времени я на него чисто >физически затратить не мог. Hо все же, делал доклад по своему новому подходу к >упорядочению для bwt на кафедре математики своего универа. Hо этот подход не >всегда себя оправдывает. Хотя кто знает, может его удастся соптимизировать? > Появилась еще одна идейка - исходник в архиве. Hа счет идеи, которая пошла на >доклад - немного позже, надо файл с описанием найти и исходник. Описание было бы кстати. Может, напишешь коротенько о LZP+BWT для BWT-FAQ? Ведь кроме тебя, его по сути серьезно никто не щупал. Как-то я сделал довольно примитивный препроцессор на LZP, но результат мне не понравился и я от него отказался. Всего доброго, Вадим. --- ifmail v.2.15dev5 * Origin: Fidolook Express http://fidolook.da.ru (2:5020/400)
Предыдущий блок Следующий блок Вернуться в индекс