Ru-Board.club
← Вернуться в раздел «Программы»

» FreeArc: бесплатный open-source архиватор - Часть 3

Автор: Profrager
Дата сообщения: 30.07.2010 22:52
BUU


Цитата:
Bulat_Ziganshin
в августе

Автор: Profrager
Дата сообщения: 31.07.2010 11:29
Bulat_Ziganshin
не подскажешь какие коды ошибок выдает unarc.dll при выходе?
-10 например, как я понял - это отмена операции из callback функции
-1 это кривой входной архив
А есть еще какие коды ошибок?
Автор: Bulat_Ziganshin
Дата сообщения: 01.08.2010 08:02

Цитата:
не подскажешь какие коды ошибок выдает unarc.dll при выходе?

смотрим исходники FreeArcExtract и видим там два return:

if (strequ (ui->what, "quit"))
return ui->n1; // error code of command
и
return command.ok? FREEARC_OK : FREEARC_ERRCODE_GENERAL;

первое отрабатывается при вызове quit(n1). ищем выхождения quit:

char answer = UI->AskOverwrite (...);
switch (answer)
{
...
case 'q': quit(FREEARC_ERRCODE_OPERATION_TERMINATED);
}
...
if (!UI->ProgressFile (...))
quit(FREEARC_ERRCODE_OPERATION_TERMINATED);
...
if (!UI->ProgressWrite (...))
quit(FREEARC_ERRCODE_OPERATION_TERMINATED);
...
if (!UI->ProgressRead (archive_...))
quit(FREEARC_ERRCODE_OPERATION_TERMINATED);
...
char answer = UI->AskPassword (cmd->pwd, PASSWORDBUF_SIZE);
switch (answer)
{
...
case 'q': quit(FREEARC_ERRCODE_OPERATION_TERMINATED);
}

command.ok может быть FALSE насколько я вижу только если в FreeArcExtract были переданы неправильные опции

FREEARC_ERRCODE_GENERAL = -1
FREEARC_ERRCODE_OPERATION_TERMINATED = -10

так что да, всё так как ты сказал



Добавлено:
пропустил ещё один вызов quit:

// Экстренный выход из программы в случае ошибки
void UnarcQuit()
{
CurrentProcess->quit(FREEARC_ERRCODE_GENERAL);
}

он срабатывает при неожиданных ошибках глубоко внутри кода, втч при сбойных архивах. так что верно всё что ты сказал плюс FREEARC_ERRCODE_GENERAL возвращается при неверных аргументаъ переданных в FreeArcExtract, хотя для скрипта это неактуально
Автор: Profrager
Дата сообщения: 01.08.2010 08:22
Bulat_Ziganshin
Спасибо) Если честно, мне лень было в исходники заглядывать Проще спросить у автора
А возможно ли сделать более подробный отчет по возникшей ошибке, ну типа как в arc.exe, там же пишется, что мол ОЗУ не хватает, или еще какая ошибка. Ну и тут тоже бы неплохо придумать побольше кодов ошибок. А то возникают ситуации, когда не понятно в чем дело, а FreeArcExtract возвращает все тот же -1.

Добавлено:
Как по мне было бы замечательно, если бы ошибки "битый архив" и "мало оперативы" были с разными номерами. А то некоторые репаки у некоторых юзеров непонятно из-за чего не хотят ставиться, хотя у остальных все замечательно.
Автор: Bulat_Ziganshin
Дата сообщения: 01.08.2010 08:32
Profrager
добавил http://code.google.com/p/freearc/issues/detail?id=234 - покидай туда какие ещё ситуации нуждаются в своих кодах ошибок
Автор: Profrager
Дата сообщения: 01.08.2010 08:39
Bulat_Ziganshin

Цитата:
Also it would be great to куегкт text erroк messages

видно торопился)
Подумаю, что еще хорошо бы добавить.
Автор: Bulat_Ziganshin
Дата сообщения: 01.08.2010 08:57
думаю, на этой неделе сделаю. более того, там ещё сообщение об ошибке появляется, его тоже буду передавать через отдельный callback. т.е. получится так:

event ("error", -99, 0, "not enough memory for rep:1gb")
затем FreeArcExtract выходит с кодом -99 (нехватка памяти), а ты сообщаешь пользователю что-то типа

Код: Недостаточно памяти. Программа сообщила: not enough memory for rep:1gb
Автор: Profrager
Дата сообщения: 01.08.2010 09:04
Bulat_Ziganshin

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

event ("error", -99, 0, "not enough memory for rep:1gb")
затем FreeArcExtract выходит с кодом -99 (нехватка памяти), а ты сообщаешь пользователю что-то типа

Код:Недостаточно памяти. Программа сообщила: not enough memory for rep:1gb

Вообще будет прекрасно)

Добавлено:
P.S. почитал некоторые issue на гугле. Улыбнул человек, который не хотел юзать версию 0.666 из-за 3 шестерок
Автор: Bulat_Ziganshin
Дата сообщения: 01.08.2010 09:39
я скорректировал Планы дальнейшего развития

я перенёс на 0.75-0.90 реализацию основных, на мой взгляд, ваших требований: многотомность, распаковка архивов с огромными словарями без создания временных файлов, исправление всяческих мелких недоделок и документирование

что скажете?
Автор: Profrager
Дата сообщения: 01.08.2010 09:42
Bulat_Ziganshin

Цитата:
что скажете?

жду 0,75 версию!) Остальное ИМХО не так важно)
Автор: slech
Дата сообщения: 01.08.2010 12:24
жду Версия 1.0 (апрель 2011) - релиз!
Автор: AKRAV
Дата сообщения: 01.08.2010 13:12
Вот это:
- recovery volumes
Действительно нужная вешь. А было бы ещё круче если бы как в раре прям к архиву добавлялось бы информация для восстановления.
Т.е. эта фишка:
- изменение формата архива, в частности размазывание recovery record по всему архиву
Автор: Benchmark
Дата сообщения: 01.08.2010 14:18
Bulat_Ziganshin

Цитата:
что скажете?

Скажу, что начиная с 0.90 freearc станет вполне себе архиватором для регулярного использования. И еще "сохранение опций упаковки внутри архива" наверно есть смысл сделать пораньше.
Автор: DemonAk
Дата сообщения: 01.08.2010 18:20
Ждем 0.75 вот это будет действительно рулеззз
Автор: Bulat_Ziganshin
Дата сообщения: 01.08.2010 20:07
some download counts since October 2009:

FreeArc-0.51-win32.exe 6651

FreeArc-0.60RC-sources.tar.bz2 1487
FreeArc-0.60RC-win32.exe 18740
FreeArc-console-0.60RC-win32.exe 1410
FreeArc-portable-0.60RC-win32.zip 6019
FreeArc-PowerPack-0.60RC.exe 2125

FreeArc-0.60-i386.rpm 1213
FreeArc-0.60-linux-i386.tar.bz2 1730
FreeArc-0.60-sources.tar.bz2 2247
FreeArc-0.60-win32.exe 74222
FreeArc-console-0.60-win32.exe 3033
FreeArc-portable-0.60-win32.zip 17252
FreeArc-PowerPack-0.60.exe 3475

FreeArc-0.666-linux-i386.tar.bz2 1451
FreeArc-0.666-sources.tar.bz2 1629
FreeArc-0.666-win32.exe 65433
FreeArc-console-0.666-win32.exe 2305
FreeArc-portable-0.666-win32.zip 11917
FreeArc-PowerPack-0.666.exe 4260

FreeArc4InnoSetup3_5.zip 4354
Автор: Profrager
Дата сообщения: 01.08.2010 21:52
Bulat_Ziganshin

Цитата:
FreeArc-0.666-sources.tar.bz2 1629

Не хило так народ сорцы качает) больше даже чем линуксоиды)

Цитата:
FreeArc-0.666-win32.exe 65433
FreeArc-portable-0.666-win32.zip 11917

вот если разделить эти числа, то получится реальное соотношение количества "просто юзеров"/"продвинутые юзеры"
Автор: Bulat_Ziganshin
Дата сообщения: 01.08.2010 22:06

Цитата:
Не хило так народ сорцы качает) больше даже чем линуксоиды)

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


Цитата:
вот если разделить эти числа, то получится реальное соотношение количества "просто юзеров"/"продвинутые юзеры"

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

но вообще сейчас выход новой версии почти не вызывает ажиотажа, раза в 2-3 всего больше качать начинают. и это даже несмотря на систему check news. т.е. вывод такой, что большинство посмотрев программу, сразу её стирает. посмотрим - может выход 0.666 с её поддержкой zip или хотя бы 0.7 это изменит

Добавлено:
а по месяцам раскладка в ноябре-июле была примерно такая: 11-10-9-10-25(март)-30-35-30-30

Добавлено:

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

event ("error", -99, 0, "not enough memory for rep:1gb")
затем FreeArcExtract выходит с кодом -99 (нехватка памяти), а ты сообщаешь пользователю что-то типа

Код:Недостаточно памяти. Программа сообщила: not enough memory for rep:1gb


тестируй http://freearc.org/download/testing/unarc-dll.arc

сделал так - при любом коде возврата перед выходом вызывается
event ("quit", errcode, 0, errmsg)

коды ошибок:


Код: #define FREEARC_OK 0 /* ALL RIGHT */
#define FREEARC_ERRCODE_GENERAL (-1) /* Some error when (de)compressing */
#define FREEARC_ERRCODE_INVALID_COMPRESSOR (-2) /* Invalid compression method or parameters */
#define FREEARC_ERRCODE_ONLY_DECOMPRESS (-3) /* Program builded with FREEARC_DECOMPRESS_ONLY, so don't try to use compress */
#define FREEARC_ERRCODE_OUTBLOCK_TOO_SMALL (-4) /* Output block size in (de)compressMem is not enough for all output data */
#define FREEARC_ERRCODE_NOT_ENOUGH_MEMORY (-5) /* Can't allocate memory needed for (de)compression */
#define FREEARC_ERRCODE_READ (-6) /* Error when reading data */
#define FREEARC_ERRCODE_BAD_COMPRESSED_DATA (-7) /* Data can't be decompressed */
#define FREEARC_ERRCODE_NOT_IMPLEMENTED (-8) /* Requested feature isn't supported */
#define FREEARC_ERRCODE_NO_MORE_DATA_REQUIRED (-9) /* Required part of data was already decompressed */
#define FREEARC_ERRCODE_OPERATION_TERMINATED (-10) /* Operation terminated by user */
#define FREEARC_ERRCODE_WRITE (-11) /* Error when writing data */
#define FREEARC_ERRCODE_BAD_CRC (-12) /* File failed CRC check */
#define FREEARC_ERRCODE_BAD_PASSWORD (-13) /* Password/keyfile failed checkcode test */
#define FREEARC_ERRCODE_BAD_HEADERS (-14) /* Archive headers are corrupted */
#define FREEARC_ERRCODE_INTERNAL (-15) /* It should never happen: implementation error. Please report this bug to developers! */
Автор: Benchmark
Дата сообщения: 01.08.2010 23:42

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


Тут три "параметра":

1. Сколько скачало
2. Сколько оставило на диске после первого запуска
3. Сколько из оставивших реально пользуются.

Думаю 1 от 3 отличается примерно на порядок.

Добавлено:
Profrager

Цитата:
вот если разделить эти числа, то получится реальное соотношение количества "просто юзеров"/"продвинутые юзеры"


Не факт. Некоторые сразу качают и обычную, и портабельную версию
Автор: Profrager
Дата сообщения: 02.08.2010 07:30
Bulat_Ziganshin

Цитата:
тестируй http://freearc.org/download/testing/unarc-dll.arc

Спасибо) как с работы приду, поковыряюсь с ней. Кстати ниче так она увеличилась в размере относительно 0.666 версии) И еще. Я в С/С++ не рублю, но почему исходники Freearc.exe/unarc.dll/unarc.exe и т.д. компилятся MinGW, или чем там еще, не помню уже. Ведь наверняка Intel Compiler'ом на много производительнее код можно сгенерить?

Benchmark

Цитата:
Не факт. Некоторые сразу качают и обычную, и портабельную версию

ага и сорцы и линукс-версию за компанию) Все вспоминаю довольно известного горе-репакера Phoenix'а, с его батником на распаковку srep'а) Он не забыл положить рядом с оным и win exe'шник, и линукское приложение, и исходники Срепа
Автор: Bulat_Ziganshin
Дата сообщения: 02.08.2010 07:38

Цитата:
почему исходники Freearc.exe/unarc.dll/unarc.exe и т.д. компилятся MinGW, или чем там еще, не помню уже. Ведь наверняка Intel Compiler'ом на много производительнее код можно сгенерить?

mingw генерит меньшие exe-шники за счёт того что использует rtl-библиотеку VC6, которая идёт в комплекте со всеми виндами начиная от nt. современный vc/icl её не используют так что exe-шники на несколько десятков кил больше

размер dll кстати увеличился за счёт включения всех 4 алгоритмов шифрования. вообще для полной dll/sfx эта экономия не больно важна, можно и icl компилять. разница в скорости будет как от добавления freearc*.dll, т.е. процентов 10-20. кстати, эти dll unarc/sfx тоже прекрасно могут использовать
Автор: Profrager
Дата сообщения: 02.08.2010 08:52
Bulat_Ziganshin
на счет freearc.exe, arc.exe - ладно, можно и freearc*.dll использовать при упаковке, хотя увеличение кода при компиляции icl ну макс на 200кб ничего страшного бы не принесло, зато увеличение скорости приличное (а то я постоянно забываю пакуя консольной версией переписать в пакуемую папку вместе с arc.exe еще и freearc.dll).
А вот unarc.dll, по моему мнению, надо обязательно icl'ом компилить, потому как про freearc*.dll там уже никто и не вспоминает (в том числе и я )..И фиг с ним, пусть дллка будет на пару сотен кб больше, зато распаковка гораздо быстрее.
И еще вопрос: в чем разница в библиотеках freearc*.dll с префиксом mt и без него? Помню когда тестил разницы между ними абсолютно никакой не обнаружил. Это только для интеловских процов?
Автор: Bulat_Ziganshin
Дата сообщения: 02.08.2010 09:05
some user stats:

204.628 downloads last year (since October 2009)
228.852 installations last year

6.589 downloads last week
9.483 new installations last week

19.775 total users last week
5.239 permanent users (using program more than a month)

Добавлено:

Цитата:
на счет freearc.exe, arc.exe

их невозможно откомпилять icl, поскольку ghc совместим только с gcc. я потому и мучался несколько лет, пока не придумал эту схему

unarc/sfx откомпилять можно, просто возиться надо. кстати freearc*.dll подхватываются из того каталога где находится exe-шник, а не unarc.dll


Цитата:
И еще вопрос: в чем разница в библиотеках freearc*.dll с префиксом mt и без него?

в mt находится код для многопоточного ppmd, его невозможно положить в первую dll
Автор: Profrager
Дата сообщения: 02.08.2010 09:34
Bulat_Ziganshin

Цитата:
rcnfnb dll подхватывается из того каталога где находится exe-шник
у меня они постоянно мигрируют)
Цитата:
в mt находится код для многопоточного ppmd
понятно почему у меня разницы не было, я тестил lzma)
Автор: Bulat_Ziganshin
Дата сообщения: 02.08.2010 09:36
Profrager
кстати, ты бы выпустил 0.4.2 прежде чем дальше двигаться. а то уже есть скрипты которые эту версию испольщзуют, а самой её нигде нету

ошибок же больше не нашлось - получится прекрасный стабильный релиз прежде чем ты пойдёшь дальше
Автор: Profrager
Дата сообщения: 02.08.2010 11:37
Bulat_Ziganshin

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

ошибок же больше не нашлось - получится прекрасный стабильный релиз прежде чем ты пойдёшь дальше
да я в субботу чего-то там еще ковырялся с ним, хоть какое-то отображение ошибок unarc.dll сделал, а то просто молча деинсталляция шла при проблемах и все. В 7zip сделал отображение распаковываемых файлов. Снова некоторые свои системные библиотеки присобачил для уменьшения размера.. Так что не факт, что теперь будет стабильный релиз
Автор: Bulat_Ziganshin
Дата сообщения: 02.08.2010 11:42
а версию до этих изменений ты выпустить уже не можешь?

Добавлено:
а с этими ковыряниями - уже 0.5 делай
Автор: Profrager
Дата сообщения: 02.08.2010 12:15
Bulat_Ziganshin
до 0.5 оно явно не тянет) В прошлый раз когда менял стандартные дельфийские системные библиотеки на свои+KOL, 7z не хотел распаковывать архивы больше 4 гигов. Отыскал мелкую багу в KOL,исправил, написал багрепорт автору, так что теперь по идее должно быть все нормально. Поэтому со всеми ковыряниями выпущу какую-нить версию с номером 0.4.2 или 0.4.2.5) А 0.5 версия будет через месяц или 2, как закончу другой проект, там как раз твой freearc 0.75 подоспеет
Автор: Profrager
Дата сообщения: 02.08.2010 19:36
Bulat_Ziganshin
Вот как-то так получилось:




Остальные ошибки спровоцировать не вышло)
Кстати, в этой версии unarc.dll уже исправлен баг с распаковкой 4x4?) А то хотел посмотреть, мож на подобном архиве какую-нить ошибку выдаст.. А нифига - все распаковал на ура)
Автор: Bulat_Ziganshin
Дата сообщения: 03.08.2010 09:29

Цитата:
Остальные ошибки спровоцировать не вышло)

1. упакуй с -m0 и поменяй байт внутри архива - выйдет ошибка crc
2. запакуй с paq и затем распаковывай без unarc.ini - выйдет неизвестный алгоритм
3. упакуй с rep:1.5g+rep:1.5g и распаковывай с -ld- - выйдет нехватка памяти


Цитата:
Кстати, в этой версии unarc.dll уже исправлен баг с распаковкой 4x4?)

нет. вероятно ты на слишком маленьком файле тестировал, поэтому он у тебя не проявился


Цитата:
Нашлась одна ошибочка - вместо вывода сообщения об ошибке unarc.dll иногда вылезает виндовская ошибка, типа не может прочитать какой-то адрес

ты errmsg на NULL проверяешь??

Добавлено:

Цитата:
Вот как-то так получилось:

я бы выводил сообщение в таком примерно виде:

Произошла ошибка при распаковке архива: недостаточно памяти.
Unarc.dll reports: {errmsg}

т.е. первая фраза как бы для юзеров, а вторая для более точной технической локализации ошибки

Добавлено:
ps: понятие "исключение" игроку, который его увидит, соверщенно ни о чём не говорит
Автор: Profrager
Дата сообщения: 03.08.2010 10:42
Bulat_Ziganshin

Цитата:
1. упакуй с -m0 и поменяй байт внутри архива - выйдет ошибка crc
2. запакуй с paq и затем распаковывай без unarc.ini - выйдет неизвестный алгоритм
3. упакуй с rep:1.5g+rep:1.5g и распаковывай с -ld- - выйдет нехватка памяти
логично)

Цитата:
нет. вероятно ты на слишком маленьком файле тестировал, поэтому он у тебя не проявился
150 метров файл был, кажется

Цитата:
ты errmsg на NULL проверяешь??
то, что выкладывал - старый вариант, еще с 0.666 версией unarc.dll. Че-то накосячил с определением свободного места на системном диске и диске назначения) Но это все уже как-бы не требуется, раз unarc.dll теперь сам подробно возвращает код и сообщение ошибки.

Цитата:
Произошла ошибка при распаковке архива: недостаточно памяти.
Unarc.dll reports: {errmsg}
согласен, для простых юзеров такое сообщение более понятное. Наверное так и надо будет сделать.
А errmsg при одном и том же errcode всегда будет одинаковым, или все же еще какую-то инфу несет?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Opera (часть 14)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.