Страница 8 из 68

Добавлено: Пт дек 03, 2010 21:03
MVV
Первая же причина, по которой паковаться может не вся папка, а только её часть - список исключений. Я выше об этом писал. Если у тебя в списке исключений есть строки, фильтрующие часть файлов папки, добавляемой в архив, тотал просто не перечислит эти файлы в списке, передаваемом архиватору. И в таком случае паковать всю папку - неправильно. Все плагины должны вести себя одинаковым образом, а не так, что один - так, другой - эдак.

А 60000 строк или одна - это лишь сваливание работы по перечислению файлов с тотала на внешний архиватор. В любом случае кому-то придется перечислять файлы.

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

Добавлено: Пт дек 03, 2010 22:08
Reflector
MVV писал(а): Первая же причина, по которой паковаться может не вся папка, а только её часть - список исключений. Я выше об этом писал. Если у тебя в списке исключений есть строки, фильтрующие часть файлов папки, добавляемой в архив, тотал просто не перечислит эти файлы в списке, передаваемом архиватору. И в таком случае паковать всю папку - неправильно. Все плагины должны вести себя одинаковым образом, а не так, что один - так, другой - эдак.
Я же просил привести пример того, что именно можно безопасно хранить в списке исключений. Ничего там нельзя хранить, иначе при упаковке можно потерять часть данных. Тотал фильтрует список только для zip, архиваторные плагины всегда получают полный список(только что проверил), в том числе архиваторы которые получаю список напрямую, например, если прописать в тотале внешний rar. Глупая идея приводящая к потере данных(я сам до сегодняшнего дня был уверен, что список просто файлы скрывает), так еще и с разными архиваторами работающая по-разному.
А 60000 строк или одна - это лишь сваливание работы по перечислению файлов с тотала на внешний архиватор. В любом случае кому-то придется перечислять файлы.
60000 строк или одна, 40 сек или 6 - это все не имеет значения? А вспомни с чего все началось... Скорее всего я нажал во время упаковки отмену, затем дал паковать второй раз, через 2 сек после этого появился 7zG запущенный во время первой паковки, потому что он уже пол минуты невидимо висел в процессах и обрабатывал список, о чем я, конечно, не знал. Это нормальное поведение? :) Зачем давать делать архиватору то, что он делает очень медленно...
В конце концов, если кому-то хочется передавать в списке лишь объекты верхнего уровня - парой страниц раньше я приводил код кнопки, которая именно это и делает - вызывает 7zG с отображением диалога параметров сжатия, при этом передавая список выделенных в панели объектов. И не надо вызывать диалог упаковки, выбирать архиватор...
Это костыль, такой же как и упаковка внешним архиватором.

Добавлено: Пт дек 03, 2010 22:18
Total7zip
кстати, господа, я попробовал ту же версию плагина на Win XP.
точно так же выбрал каталог Windows.
и там произошло следующее - сначала тормозил тотал, составляя полный список файлов, а потом почти мгновенно запустился 7zG.
Так что возможно есть в нем какой-то глюк, который проявляется под семеркой.

Даже несмотря на то что в XP папка в несколько раз меньше, меня удивило, что тормоза в тотале остались, а в 7zG исчезли...


и еще - по поводу перекладывания работы на архиватор - это существенно ускоряет процес, так как в этом случае архиватор не думает, что ему дали 60 000 масок. он просто строит список файлов сам.

это так, для размышления.
=)

Добавлено: Пт дек 03, 2010 23:29
MVV
Масок или нет - ему думать и не надо. Вызвать FindFirstFile, а затем вызывать FindNextFile, пока не отбой.

Проверил сейчас на Total7zip - какие файлы отображались в панели, такие и упаковались. Игнорируемые файлы в архив не попали. Это к вопросу о том, можно ли заменять список файлов верхней папкой.

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

Мои тесты были на XP, но с папкой Windows от семерки.

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

Добавлено: Вс дек 05, 2010 13:57
Reflector
MVV писал(а): Проверил сейчас на Total7zip - какие файлы отображались в панели, такие и упаковались. Игнорируемые файлы в архив не попали.
Значит я проверил на своей версии плагина :)
Это к вопросу о том, можно ли заменять список файлов верхней папкой.
Снова пакуем Win7, но на этот раз одной из сборок, где в список исключений внесены recycler, desktop.ini и т.д., просто потому, что авторы думают будто всего лишь спрятали файлы, т.к. в описании написано "исключить(не показывать)". Уверен, большинство пользователей очень удивятся когда десяток desktop.ini из самой папки Windows в архив не попадет, а если почитать статьи в которых чего только не предлагают добавлять в список исключений, то становится понятно насколько потенциально деструктивно игнорирование списка при файловых операциях.

Добавлено: Вс дек 05, 2010 16:47
MVV
Это уже пусть голова болит у тех, кто использует список исключений и сборки (насчет последнего со мной согласится большая часть форумчан).

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

Добавлено: Вс дек 05, 2010 17:09
Avada
Reflector писал(а):я сам до сегодняшнего дня был уверен, что список просто файлы скрывает
Reflector писал(а):становится понятно насколько потенциально деструктивно игнорирование списка при файловых операциях
Справка TС писал(а):Настройка исключения заданных файлов/каталогов: они не будут отображаться в списке и участвовать в файловых операциях. Эта функция работает только с обычными файлами/каталогами. Файлы на FTP-серверах, внутри архивов и виртуальных папок (таких как Рабочий стол) не могут быть объектами исключения.
Это преамбула соответствующего диалога настроек. Если кто-то храбро использует функцию исключения, игнорируя вышеприведённую информацию — последствия за его счёт. Но, в конце-то концов, кнопка для временного включения/отключения этой функции создаётся за полминуты... А встроенный ZIP-архиватор действительно список учитывает. В отличие от всего остального.

Добавлено: Вс дек 05, 2010 20:08
Reflector
Avada писал(а): Это преамбула соответствующего диалога настроек. Если кто-то храбро использует функцию исключения, игнорируя вышеприведённую информацию — последствия за его счёт. Но, в конце-то концов, кнопка для временного включения/отключения этой функции создаётся за полминуты... А встроенный ZIP-архиватор действительно список учитывает. В отличие от всего остального.
Для того, чтобы храбро использовать список исключений нужно знать чем рискуешь, а знают об этом единицы, потому и советуют добавлять в него все что угодно. Вот найди мне в дистрибутиве тотала информацию о том, что файлы присутствующие в списке исключений игнорируются при копировании или упаковке...

Добавлено: Вс дек 05, 2010 20:56
Reflector
MVV писал(а): Лучше знать, что файлы могут не попасть в архив из-за списка исключений, чем не знать этого и когда-нибудь на это напороться. А когда половина плагинов действует по списку исключений, а другая - нет, шанс напороться несоизмеримо выше.
Как я говорил, люди не знают, что файлы могут не попасть в архив, а если бы знали, то списком исключений вообще мало кто бы пользовался, а это значит, что в любом случае польза от него минимальна. Стоит ли ради сомнительной выгоды жертвовать надежностью хранения данных? Да, Гислер уже реализовал данную функциональность, но продвигать ее только потому, что она уже есть и делать крайним рядового пользователя чьей-то сборки... Я считаю, что список исключений в существующем виде приносит больше проблем, потому напротив нужно добиваться исключения его самого. Пользователя не должны волновать чьи-то безумные идеи, он ожидает получить на выходе нормальный архив и уж тем более он не должен каждый раз перед упаковкой нажимать какие-то кнопки создаваемые за пол минуты...

Добавлено: Вс дек 05, 2010 21:12
Avada
Reflector писал(а):Вот найди мне в дистрибутиве тотала информацию о том, что файлы присутствующие в списке исключений игнорируются при копировании или упаковке
Я привёл выше цитату из справки, выделив значимый фрагмент. Это не информация? Если её кто-то не желает читать и понимать — виноват разработчик?
Reflector писал(а):Я считаю, что список исключений в существующем виде приносит больше проблем, потому напротив нужно добиваться исключения его самого.
Это здесь не по адресу. К авторам сборок, пожалуйста.

Добавлено: Вс дек 05, 2010 21:59
MVV
ИМХО, если список исключений используется для фильтрации чего-то нужного юзеру в архиве, это точно его проблемы. А если в архив не попадет папка Recycler, пара файлов desktop.ini, папка .svn или еще что-то подобное, ничего страшного не произойдет - эти файлы в большинстве своем не модифицируются конечным пользователем. Главное - чтобы все модули программы, выполняющие схожие функции, работали идентичным образом, а не абы как.

Добавлено: Пн дек 06, 2010 13:13
Total7zip
нужна помощь!

делаю настройки - чтоб можно было вызвать диалог, настроить один раз настройки компрессии и не лицезреть этот диалог каждый раз.

возник такой вопрос. 7zip хранит настройки в реестре

Код: Выделить всё

[HKEY_CURRENT_USER\Software\7-Zip\Compression\Options\7z]
"Level"=dword:00000009
"Dictionary"=dword:02000000
"Order"=dword:00000040
"BlockSize"=dword:00000020
"NumThreads"=dword:00000002
"Method"="LZMA"
"Level", "Dictionary", "NumThreads" и "Method"
я научился передавать через параметры командной строки, а кто поможет с "Order" и "BlockSize"?
"Order" - соответствует настройке "размер слова" в диалоге,
а "BlockSize" - 20, 21, 22.... увеличивается на 1 для каждого следующего значения в диалоге.

Добавлено: Пн дек 06, 2010 14:09
Reflector
Total7zip писал(а): "Order" - соответствует настройке "размер слова" в диалоге,
Размер слова - это fast bytes, fb={N}.
а "BlockSize" - 20, 21, 22.... увеличивается на 1 для каждого следующего значения в диалоге.
Отними 20 и получишь индекс для списка в 7zG. Дальше размер передается, например, так: s=4g. Это все описано в документации(ключ -m).

Добавлено: Пн дек 06, 2010 14:33
gora
Total7zip писал(а):а "BlockSize" - 20, 21, 22.... увеличивается на 1 для каждого следующего значения в диалоге.
Это размер solid блока=2^N (байт)
где N - число, упомянутое в цитате (сохраненное в реестре).

Добавлено: Пн дек 06, 2010 14:48
Reflector
gora писал(а): Это размер solid блока=2^N (байт)
Да, выходит что так...