Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

CTPAX-X _ Программы _ CheckSum

Автор: -=CHE@TER=- Jul 14 2008, 07:25

If you wanna job done right - you gonna do it yourself ©

Как я уже говорил, заколебало каждый раз лезть в Total Commander чтобы проверить контрольную сумму. Для FAR плагины были, но они не устраивали, т.к. тоже криво были сделаны.
В конце концов сделали свой плагин, называется CheckSum.
Его достоинства по сравнениию с существующими (ради чего создавался):
1) Возможность создавать как .SFV (CRC32), так и .MD5 (MD5) файлы с контрольными суммами
2) Возможность проверять CRC32 по имени!!! - больше не нужно считать сумму в файл и, затем, смореть его, а потом удалять! Работает только на файлах такого вида:
Some.File.Name[12FACCB4].avi
т.е. маска: *?########?.*
Просто офигенно удобно!
3) Возможность начать проверку просто нажав ENTER на .SFV / .MD5 файле (в некоторых плагинах есть).
4) Возможность сравнить контрольную сумму файла с той, что находится в буфере обмена (появилась с версии 0.21)

Короче, там ещё много всякого - см. checksum.pas.

Файлы на TeamFTP


checksum - собственно плагин и исходники к нему
crc-samples - примеры нормальных .SFV / .MD5
far170dp - кусок из FAR170ManagerDevPack - содержит заголовочные файлы для языков диалекта Pascal, справку по FARAPI на русском и пример HelloWorld.


Для работы поместить .DLL файл в каталог:
C:\Program Files\Far\Plugins\CheckSum\checksum.dll
после чего перезапустить FAR.

ToDo List
CODE

Not implemented yet
~~~~~~~~~~~~~~~~~~~
- Dialogbox with to input filename for checksum file (now this is CheckSum.[sfv/md5])!
  Get file name with .sfv/.md5 extension if one file selected or folder name if there is
  more than one file and, finally, "CheckSum" name when CheckSum performed in the root folder.
- Allow user to manually select files from checksum file in dialog which he want to check
- Progress bar (current %, file X of Y / total % of Y files)
  Progress bar --> http://forum.farmanager.com/viewtopic.php?f=8&t=2622
  Merge CRC32 and MD5 modules
- Statistics (X files OK, Y files fails, Z files not found) with filelist
  For users who don't want to hit ENTER every time on error and just watch overall statistic
- Write help
- Add more checksum algorithms (SHA-1, ED2K, Tiger, etc...) or just create CheckSum plugin (.fmt) routine?..

Автор: Siberian GRemlin Jul 14 2008, 10:10

QUOTE(-=CHE@TER=- @ Jul 14 2008, 15:25) *
I you wanna job done right - you gonna do it yourself ©

"If..."?

Автор: -=CHE@TER=- Jul 14 2008, 10:32

QUOTE(Siberian GRemlin @ Jul 14 2008, 10:10) *
"If..."?
That's right!

Кстати, поговорил сейчас с товарищем, который тот нестандартный CRC32 файл дал - оказывается он сам его сделал перечислив имена и CRC от какой-то встроенной в иксы тулзы, так что добавление в to do:
- Check TAB with SPACE chars in non standard CheckSum files.
Т.к. товарищ логично заметил, что там могут быть не только пробелы, но и символы табуляции.

Автор: Grom PE Jul 14 2008, 16:34

Спасибо за плагин, пригодится.

Заодно поиздевался над исходниками:

— перенес/заменил Initialization у всех модулей;
— добавил asm..end в checksum.pas;
— заменил md5.pas своим, быстрым (очень заметно) и маленьким;

Теперь компилится с dcc7hack, и даже работает.
Для совместимости с обычным компилятором оставил старый код в {$IFDEF}.

Залито на TeamFTP.

Автор: -=CHE@TER=- Jul 14 2008, 20:35

Grom PE!
Во, спасибо большое!
Практически в два раза похудело.

P.S. Пора, пора бы уже заняться написанием раздела CTPAX-X Soft для сайта...

Автор: -=CHE@TER=- Aug 29 2008, 09:32

Товарищи!
В связи с тем, что комментарии к http://www.ctpax-x.org/index.php?goto=cxsoft&show=37 уже ни в какие ворота не лезут есть предложение разместить тему на форуме, дабы там обсуждать непосредственно вместе с теми, кто программу использует.

Автор: Siberian GRemlin Aug 30 2008, 07:12

Если ты хочешь чтобы обсуждали программы с сайта на форуме, то я думаю, что это будет удобно.

Автор: Капитан Фокин Sep 3 2008, 05:34

QUOTE(-=CHE@TER=- @ Aug 29 2008, 13:32) *

Товарищи!
В связи с тем, что комментарии к http://www.ctpax-x.org/index.php?goto=cxsoft&show=37 уже ни в какие ворота не лезут есть предложение разместить тему на форуме, дабы там обсуждать непосредственно вместе с теми, кто программу использует.


Хочу повторить основные тезисы из каментов:

1. При создании чек-суммы для текущего файла, по-моему, лучше делать так:
Example.exe
Example.exe.md5
это просто визуально выделяет файл суммы при браузинге.

2. Нашел глючок - встаем на директорию, жмем "Вычислить сумму", получаем сообщение "Выделенные элементы ...", жмем "Ок" - и получаем _выделение_ директории. Есть разница между "оставить выделение" (в случае невозможности обработать, ошибки и проч.) и "установить выделение". Я считаю, что если элемент не был выделен, то его не надо выделять принудительно.

3. Проверить, является ли файл файлом суммы очень просто (во всяком случае, сразу отсеять заведомые "подставки" типа .exe, .avi и т.п.). Набор символов в представлении суммы MD5 и именах файлов ограничен. И если мы встречаем "запрещенный" символ - значит это явно не файл чек-суммы.

Автор: -=CHE@TER=- Sep 3 2008, 13:55

Во, вот тут можно нормально отвечать уже с предпросмотром ответа и т.д.
По поводу вопросов:

1. Делается с полпинка.
2. Делается с пинка.
3. Тут надо подумать, прежде чем пинать, но, в общем, тоже сделать можно.

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

А затруднение с пунктом 3 возникает в силу того, что в CRC32, например, могут быть комментарии (строчки начинающиеся на ";") да и в CRC32/MD5 могут быть просто пустые строки. В общем уже одна идея появилась - фильтр запрещённых символов (например, если в файле есть символ с кодом меньше 32 (пробел) и это не 13 (возврат каретки) и не 10 (перевод строки) и не 9 (табуляция)) - то это бинарный файл, а не файл суммы и, соответственно, проверять его не надо.

Автор: Капитан Фокин Sep 4 2008, 05:38

С нетерпением жду обновленных версий!

Кстати, долго думал над Вашей фразой про "многопоточность при копировании файлов FAR-ом"... Есть вопрос. Расчет чек-суммы идет в разы дольше, чем простое копирование (а HDD является одним из медленных устройств в системе). Следовательно, либо:

1. Процесс является "процессороёмким" и, значит, есть смысл подумать над многопоточностью;
2. Насколько оптимально идет чтение файла, для которого считаем сумму ? Не хочу показаться грубым, но не идет ли чтение побайтно ?

Автор: -=CHE@TER=- Sep 4 2008, 15:22

QUOTE(Капитан Фокин @ Sep 4 2008, 05:38) *
С нетерпением жду обновленных версий!
П.п. 1, 2, из предыдущего поста, сделаны, сейчас над 3 думаем.

QUOTE(Капитан Фокин @ Sep 4 2008, 05:38) *
Кстати, долго думал над Вашей фразой про "многопоточность при копировании файлов FAR-ом"... Есть вопрос. Расчет чек-суммы идет в разы дольше, чем простое копирование (а HDD является одним из медленных устройств в системе). Следовательно, либо:
1. Процесс является "процессороёмким" и, значит, есть смысл подумать над многопоточностью;
2. Насколько оптимально идет чтение файла, для которого считаем сумму ? Не хочу показаться грубым, но не идет ли чтение побайтно ?
Ну, по порядку:
1. Контрольная сумма, таки да, является вычислением со всякими арифметическими операциями, так что быстрее она будет или медленнее копирования зависит от скорости работы жёсткого диска и скорости работы процессора. Если тормозной винт, но крутой процессор - копирование будет дольше, чем высчитывание контрольной суммы, т.к. копирование есть чтение (тормозно) и запись (тормозно) = тормозно*2, в то время как подсчёт контрольно суммы есть только чтение (тормозно) и некоторые арифметические операции (быстро). И наоборот - в случае тормозного проца и быстрого бердана, копирование будет быстрее и т.д. Так что дать какой-то конкретный ответ сложно.
Оговорюсь, что алгоритм MD5 Grom PE переделал и он при подсчёте развивает просто адскую скорость по сравнению с тем, что было в версии 0.1 (не релизилась в открытом доступе).
CRC32 уже в 0.1 был переделан с классов на WinAPI, но тем не менее код там не идеальный и его можно улучшить, правда дикого прироста производительности это вряд ли даст, но выжать кое что всё же можно.
2. Чтение файла идёт через FileMapping (пока только в MD5 - CRC32, как уже сказал, надо переделывать) - если это о чём-то говорит, т.е. винда сама мапит (буфферизует частями) файл в оперативную память по мере чтения - считается, что она делает это наиболее оптимальным способом. Ставить тесты и выяснять так ли это желания нет, тем более, что, наверняка, можно выжать производительности самим занявшись буфферизацией, но её придётся подгонять под каждый компьютер при помощи таких параметров как размер буфера и т.д. - и, по моему мнению, овчинка выделенки стоить не будет.

Автор: Капитан Фокин Sep 16 2008, 05:27

Наблюдал интересную ситуацию или "битва титанов".

CPU: C2D 8400
MEM: 2Gb
HDD: SATA 250Gb (16Mb)

Запускаем запись в Nero 8.х нескольких файлов ~4Gb на скорости 4х (DVD-RW). После того, как процесс достиг отметки 50% запускаем в Far проверку MD5 нескольких файлов (5шт). На проверке 3-го файла началось - ультра-буфер в Nero опустошился, лазер выключился, Nero начал лихорадочно заполнять ультра-буфер (который в памяти) со скоростью 1 "кубик" прогресс-бара в секунду. При этом процесс в Far проверки MD5 "замер"... После прим. 30 сек. увлеченного наблюдения за "битвой титанов" процесс Far был принудительно завершен. Nero ожил мгновенно и продолжил запись...

Автор: -=CHE@TER=- Sep 16 2008, 12:00

QUOTE(Капитан Фокин @ Sep 16 2008, 05:27) *
Наблюдал интересную ситуацию или "битва титанов".
Ну, дык, а чтож ты хочешь? (*улыбается*) Весь проц на считывание файла и подсчёт контрольно суммы сожрался, так что на запись диска ресурсов уже не было.
Конечно, можно как-нибудь извернуться, чтобы процесс проверки/создания суммы работал, когда ресурсы есть, но смысла думаю особого нет - лучше не нагружать систему одновременно такими действиями. Никто же не прошивает BIOS из Windows, а сам в это время в Quake III: Arena режется?
Это хорошо иллюстрирует анекдот:
- Пап, а пап! Покажи многозадачность в Windows?
- Погоди, сынок, сейчас дискетка доформатируется...

Добвалено:
Вышла версия 0.22.
Все изменения описаны в соответствующем текстовом файле.

Автор: Капитан Фокин Sep 16 2008, 13:39

QUOTE(-=CHE@TER=- @ Sep 16 2008, 16:00) *

Добвалено:
Вышла версия 0.22.
Все изменения описаны в соответствующем текстовом файле.


Спасибо! Замеченные ранее "шероховатости" сглажены. Ищем новые глюки :-)

Каким образом реализовали проверку "валидности" файла суммы, если не секрет ?

P.S. Глюк уже нашел. Причем премерзкий. Захожу в директорию, где уже есть файл CheckSum.md5, выделяю несколько файлов, выбираю "Вычислить сумму" - получаю красное окно ошибки с сообщением "Плагин будет выгружен". Теперь при попытке вычислить сумму в любом месте на любом наборе файлов получаю все то же красное окно с адресом 0х25512551 и выгрузкой плагина. Пришлось откатиться к предыдущей версии...

Автор: -=CHE@TER=- Sep 16 2008, 16:41

QUOTE(Капитан Фокин @ Sep 16 2008, 13:39) *
P.S. Глюк уже нашел. Причем премерзкий. Захожу в директорию, где уже есть файл CheckSum.md5, выделяю несколько файлов, выбираю "Вычислить сумму" - получаю красное окно ошибки с сообщением "Плагин будет выгружен". Теперь при попытке вычислить сумму в любом месте на любом наборе файлов получаю все то же красное окно с адресом 0х25512551 и выгрузкой плагина. Пришлось откатиться к предыдущей версии...
Опа... Спасибо большое. Этот баг возник в связке с DCC32Hack.
Почему-то в FAR глючит AdvControl()... заголовочный файл для Delphi/Pascal кривой (plugin.pas). Осталось только понять где.
А пока что код отвечающий за получение цвета убран, ибо адрес AdvControl либо NULL, либо (в связке с DCC32Hack) там мусор.
Версия 0.23 на сайте.
Приносим извинения за причинённые неудобства.

Автор: Капитан Фокин Sep 17 2008, 05:50

QUOTE(-=CHE@TER=- @ Sep 16 2008, 20:41) *

Версия 0.23 на сайте.


Спасибо за оперативность! Проверил версию 0.23 - пока все четко, ошибка выгрузки плагина пофиксена. В целом, если не "всплывут" дополнительные глюки, плагин можно считать вполне законченным (ну, или таки добавить SH1 :-)

P.S. Задним числом прочел ToDo - подсчет суммы для 4Гб файлов смысл имеет. Образы ДВД-дисков, например

Автор: -=CHE@TER=- Sep 17 2008, 09:20

QUOTE(Капитан Фокин @ Sep 17 2008, 05:50) *
Спасибо за оперативность!
Оперативность - наше всё. (*улыбается*)

QUOTE(Капитан Фокин @ Sep 17 2008, 05:50) *
ну, или таки добавить SH1 :-)
Всё можно, но сначало хотелось бы довести до ума то что есть.

QUOTE(Капитан Фокин @ Sep 17 2008, 05:50) *
P.S. Задним числом прочел ToDo - подсчет суммы для 4Гб файлов смысл имеет. Образы ДВД-дисков, например
Там вопрос стоял немного по другому - проверить правильно ли считает. Т.е. оно считает, нужно только проверить правильно или нет. Просто файлов под рукой таких больших не было, поэтому, кстати, и предупреждение на сайте висит, что плагин полностью не оттестирован.

Кстати, а что насчёт остальных пунктов из ToDo? На всякий случай переведу на русский:
QUOTE

- Диалог для возможности ввода имени файла для контрольно суммы (сейчас оно создаётся в CheckSum.[sfv/md5])
По умолчанию там будет имя файла с .sfv/.md5 расширением, если один файл выделен или имя каталога где находятся выделенные файлы, если их больше одного, наконец имя "CheckSum", если выделенные файлы находятся в корне диска. Если устраивает текущее имя - просто нажимаем ENTER, если нет - меняем.
- Реализовать возможность пользователю вручную выбрать те файлы, которые он хочет проверить из файла контрольной суммы через диалог (по умолчанию будут выделены все - и можно будет просто ENTER нажать для продолжения, если ничего менять не нужно).
//ИМХО, думаю удобно, особенно если нужно проверить один-два файла, чтобы не обрабатывать все.
- Сделать прогресс-бар при проверке (текущий файл % / файл 3 из 10 / завершено на %)
// Пример: Текущий файл: 10% обработано / файл 3 из 10 / завершено на 32%)
- Сделать Callback-функцию для CRC32/MD5 алгоритмов, чтобы их можно было прервать по ESC во время проверки файла, не дожидаясь пока файл проверится до конца (если очень большой).
- В конце проверки диалог со статистикой по файлам (X файлов OK, Y файлов не совпала сумма, Z файлов не найдено)
Чтобы не жать ENTER для каждого повреждённого файла, а запустить проверку, пойти чай попить, вернуться и прочитать отчёт сразу по всем. Хотелось бы туда ещё всунуть две кнопки: ОК и СОХРАНИТЬ - в случае нажатия на первую отчёт закрывается (она будет по умолчанию подсвечена, так что ничего по сравнения с текущей версией не изменится - нажал ENTER и всё), а в случае нажатия на вторую - его можно будет сохранить в файл (если было очень много ошибок и все их не запомнишь), чтобы потом отдельно уже разобраться что к чему.
- Написать-таки, справку к плагину (он же help).


QUOTE(Капитан Фокин @ Sep 16 2008, 13:39) *
Каким образом реализовали проверку "валидности" файла суммы, если не секрет ?
Ну, если в прочитанной строке есть левые символы или она не удовлетворяет формату (у контрольных сумм всегда только цифры и буквы от A до F) - то строка считается битой и проверка дальше не идёт. Ещё отсев строк-комментариев для CRC32, и т.д.

Автор: Капитан Фокин Sep 17 2008, 10:26

QUOTE(-=CHE@TER=- @ Sep 17 2008, 13:20) *

Кстати, а что насчёт остальных пунктов из ToDo? На всякий случай переведу на русский:


Попробую высказать свои соображения:

QUOTE

- Диалог для возможности ввода имени файла для контрольно суммы


Это потребует создания .ini (.cfg) файла или записи реестра для сохранения введенного имени (это логично). А оно надо ? Лично я не уверен. В конце концов не трудно и руками переименовать для особо экзотических случаев.

QUOTE

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


Вы себе отчетливо представляете ситуацию, когда нужно проверить именно 5 файлов из 20-ти ? А для проверки выборочного файла уже реализована проверка из буфера обмена.

QUOTE

- Сделать прогресс-бар при проверке (текущий файл % / файл 3 из 10 / завершено на %)
- Сделать Callback-функцию для CRC32/MD5 алгоритмов, чтобы их можно было прервать по ESC во время проверки файла, не дожидаясь пока файл проверится до конца (если очень большой).


Это желательно, если не сильно "утяжелит" плагин.

QUOTE

- В конце проверки диалог со статистикой по файлам (X файлов OK, Y файлов не совпала сумма, Z файлов не найдено)
Чтобы не жать ENTER для каждого повреждённого файла, а запустить проверку, пойти чай попить, вернуться и прочитать отчёт сразу по всем. Хотелось бы туда ещё всунуть две кнопки: ОК и СОХРАНИТЬ - в случае нажатия на первую отчёт закрывается (она будет по умолчанию подсвечена, так что ничего по сравнения с текущей версией не изменится - нажал ENTER и всё), а в случае нажатия на вторую - его можно будет сохранить в файл (если было очень много ошибок и все их не запомнишь), чтобы потом отдельно уже разобраться что к чему.


Потоковая проверка без "спотыкания" на каждом несовпадении - хорошая идея. В целом поддерживаю, но не "Сохранить", а "Выделить непрошедшие проверку" (в смысле - цветом в Far-е, как по "Insert") .

Автор: -=CHE@TER=- Sep 17 2008, 11:50

QUOTE(Капитан Фокин @ Sep 17 2008, 10:26) *
Это потребует создания .ini (.cfg) файла или записи реестра для сохранения введенного имени (это логично). А оно надо ? Лично я не уверен. В конце концов не трудно и руками переименовать для особо экзотических случаев.
Ну, создание каких-либо записей это не потребует - ещё раз перечитайте как будет формироваться имя файла в этом диалоге. В любом случае - это ToDo, так что никто на той или иной возможности не настаивает - просто подумалось, что было бы удобно.

QUOTE(Капитан Фокин @ Sep 17 2008, 10:26) *
Вы себе отчетливо представляете ситуацию, когда нужно проверить именно 5 файлов из 20-ти ? А для проверки выборочного файла уже реализована проверка из буфера обмена.
Мало ли - может кому понадобится, хотя с другой стороны - да, один раз проверят всё, затем битые файлы можно и отдельно проверить.
Убедительно. (*улыбается*)

QUOTE(Капитан Фокин @ Sep 17 2008, 10:26) *
Это желательно, если не сильно "утяжелит" плагин.
Если и утяжелит, то совсем не сильно - писанины правда много будет.

QUOTE(Капитан Фокин @ Sep 17 2008, 10:26) *
Потоковая проверка без "спотыкания" на каждом несовпадении - хорошая идея. В целом поддерживаю, но не "Сохранить", а "Выделить непрошедшие проверку" (в смысле - цветом в Far-е, как по "Insert") .
А как быть с теми файлами, которые отсутствовали?
Диалог, который предлагается сделать, должен выглядеть как-нибудь так:
CODE

|------------------------------------|
|             Отчёт                  |
|------------------------|-----------|
| Имя файла              |   Статус  |
|------------------------|-----------|
| filename1.ext          |     ОК    |
| filename2.ext          |   Ошибка  |
| filename2.ext          |Нет доступа|
| filename3.ext          | Не найден |
|------------------------|-----------|
| OK:  1, Ошибок:  2,  Не найдено:  1|
|------------------------------------|
|       [ОК]       [Сохранить]       |
|------------------------------------|

При большом количестве файлов список можно будет листать стрелками вверх/вниз, PgUp/PgDn, Home/End. А влево/вправо - выбор кнопки.
Не знаю, на сколько реально такое сделать, но хотелось бы.

Автор: Капитан Фокин Sep 17 2008, 12:29

К вопросу об обработке больших файлов - не работает! Взял файл размером ~25Гб, запустил вычисление чек-суммы. Прим. через 18 сек был готов результат. Это абсолютно невозможно, потому что файл только читается гораздо дольше.

С чем сравнивал:
Плагин: http://plugring.farmanager.com/downld/files/md5plug140.zip (исходники в комплекте)
Машина: AMD x2 4200+
Расчет чек-суммы занял ~12,5 минут (причем, WinSrv2k3 худо-бедно пытается параллелить процесс между ядрами)


Относительно улучшений - не стоит тратить силы на условно-нужные "фичи". Прогресс-бар не стоит недели работы :-) А статистика - потенциальная "черная дыра" для всевозможных мелких глючков, доработок и придирок. Но это, разумеется, ИМХО.

QUOTE

А как быть с теми файлами, которые отсутствовали?


Они уже отсутствуют - нечего проверять :-))))))

Автор: -=CHE@TER=- Sep 17 2008, 15:39

QUOTE(Капитан Фокин @ Sep 17 2008, 12:29) *
К вопросу об обработке больших файлов - не работает!
Ага - это только у MD5. CRC32 - правильно считает.
Поправим.

Автор: Капитан Фокин Sep 24 2008, 13:34

QUOTE(-=CHE@TER=- @ Sep 17 2008, 19:39) *

Ага - это только у MD5. CRC32 - правильно считает.
Поправим.


Неделя прошла - ждем! wink.gif

Автор: -=CHE@TER=- Sep 26 2008, 15:09

QUOTE(Капитан Фокин @ Sep 24 2008, 13:34) *
Неделя прошла - ждем! wink.gif
Ну, типа, если бы мы ничего не делали кроме этого плагина - замечание было бы справедливо.

Версия 0.24 на сайте - MD5 поправили (остальные изменения - в history.??.txt).
Т.к. поторопили - то выложили неоптимизированную версию MD5 - она работает правильно, но очень медленно по сравнению со старой. Сейчас просто некогда ошибку искать.

Автор: Капитан Фокин Sep 30 2008, 05:07

QUOTE(-=CHE@TER=- @ Sep 26 2008, 19:09) *

Т.к. поторопили - то выложили неоптимизированную версию MD5 - она работает правильно, но очень медленно по сравнению со старой. Сейчас просто некогда ошибку искать.


Да, неоптимизированная версия в 3 раза медленнее. Печально...

Кстати, не отрабатываются комментарии в MD5 файлах, созданных другими утилитами. То есть строка вида:
; Generated by MD5plug © Wesha, 2003
воспринимается как ошибка.

Автор: -=CHE@TER=- Sep 30 2008, 12:12

QUOTE(Капитан Фокин @ Sep 30 2008, 05:07) *
Кстати, не отрабатываются комментарии в MD5 файлах, созданных другими утилитами. То есть строка вида:
; Generated by MD5plug © Wesha, 2003
воспринимается как ошибка.
.MD5 файлы не поддерживают комментарии. Так что это - отсебятина. Насчёт других утилит - ни одна мне известная комментарии в .MD5 файлы не пихает.

Если эту строчку генерирует программа на Си - найдите её и поставьте вместо первого символа ноль (символ с ASCII кодом ноль) - тогда она в выходной файл записываться не будет. Если не поможет - забейти её пробелами. Пустые строчки и строчки не содержащие ничего кроме пробелов - игнорируются.

Автор: Капитан Фокин Oct 1 2008, 05:40

QUOTE(-=CHE@TER=- @ Sep 30 2008, 16:12) *

.MD5 файлы не поддерживают комментарии. Так что это - отсебятина. Насчёт других утилит - ни одна мне известная комментарии в .MD5 файлы не пихает.


Эту строчку "пихает" известный, видимо, только мне плагин для Far (ссылка см. пост #20). Но если это "отсебятина", тогда, конечно, придется руками править "самостийные" файлы чек-сумм.

Автор: -=CHE@TER=- Oct 1 2008, 07:41

QUOTE(Капитан Фокин @ Oct 1 2008, 05:40) *
Эту строчку "пихает" известный, видимо, только мне плагин для Far (ссылка см. пост #20). Но если это "отсебятина", тогда, конечно, придется руками править "самостийные" файлы чек-сумм.
Если есть возможность - в файле MD5plug.dll по смещению 0x94BC замените ';' на 0 - тогда строчка не должна появляться (не проверял, но по идее должно работать).

Автор: Капитан Фокин Oct 1 2008, 13:00

QUOTE(-=CHE@TER=- @ Oct 1 2008, 11:41) *

Если есть возможность - в файле MD5plug.dll по смещению 0x94BC замените ';' на 0 - тогда строчка не должна появляться (не проверял, но по идее должно работать).


Ээ... парни, я не это имел ввиду :-) Неужели сложно вставить проверку на комментарии ? Впрочем, все это суета - жду нормальную версию с обработкой >4Gb !!!

Автор: Капитан Фокин Oct 20 2008, 12:53

Проект заброшен ?

Автор: -=CHE@TER=- Oct 20 2008, 13:15

Скорее времени нет - работа и прочие мирские дела. Вместе с летом пора отпусков закончилась и резко навалилось работы, так что руки до чего-то ещё не доходят.
А, что, собственно не так-то?
Насчёт скорости MD5 - это Grom PE обещал посмотреть - как разберётся, где ошибка, так выложим убыстренную версию. Сейчас, видимо, ему не до этого.
Или что ещё требуется-то?

Как бы сразу объясню позицию: проект этот делался для внутреннего использования (как и многое из того, что лежит в CTPAX-X Soft). Мы просто решили поделиться им с общественностью - авось тоже кому-нибудь пригодится.

Автор: Капитан Фокин Oct 21 2008, 11:58

QUOTE(-=CHE@TER=- @ Oct 20 2008, 17:15) *

Как бы сразу объясню позицию: проект этот делался для внутреннего использования (как и многое из того, что лежит в CTPAX-X Soft). Мы просто решили поделиться им с общественностью - авось тоже кому-нибудь пригодится.


Разумеется, не могу предъявлять никаких претензий smile.gif Просто... Получалась очень неплохая вещь, осталось нанести буквально последний штрих - и амба!

Собственно: добить скоростную обработку больших файлов и я все же настоял бы на обработке комментариев в чек-суммах MD5 (последнее - чистое ИМХО, но, например, проект http://www.slavasoft.com/fsum/ "балуется" комментированием)

Автор: -=CHE@TER=- Nov 3 2008, 18:42

Из экстренных вещей, которые надо сделать в новом релизе:
1. Разобраться с MD5-ASM, чтобы он работал без ошибок и заменить им тот, что используется сейчас (правильный, но тормозной).
2. Добавить обработку ";"-комментариев в файлах с контрольными суммами от MD5, для тупых программ, которые их туда пихают в обход стандарта.
3. Добавить флаг FILE_SHARE_READ при открытии файлов. В данный момент наблюдается следующий баг: если файл открыт какой-то программой в режиме чтение+запись, то его содержимое можно просмотреть по F3 в FAR, но CheckSum, при попытке его проверить, говорит что нет доступа.
4. Попробовать ещё немного разогнать CRC32 через FileMapping?..

Автор: Xplorer Nov 6 2008, 08:03

-=CHE@TER=-
Выложи последние исходники на FTP. Я догадываюсь в чём проблема при подсчете MD5 для больших файлов.

Автор: -=CHE@TER=- Nov 6 2008, 12:14

QUOTE(Xplorer @ Nov 6 2008, 08:03) *
-=CHE@TER=-
Выложи последние исходники на FTP. Я догадываюсь в чём проблема при подсчете MD5 для больших файлов.
Спасибо! И правда всё забываю исходные коды выложить...
Выложил - 0.24. Последняя версия MD5-ASM от Grom PE там в корне будет "_MD5.PAS".
В /test/md5_check/ - тестовый стенд с дампами хэшей при подсчёте 4 Гб куска обычного и ASM MD5 алгоритмов.
До 4 Гб оба алгоритма показывают одинаковую итоговую сумму.

Автор: Xplorer Nov 6 2008, 15:38

Залил на FTP исправленный файл. Изменил MD5Update и MD5Final.
Если будешь использовать File Mapping, то возьми за основу тот вариант, где используется Int64.

P.S. Зачем изобретать колесо (т.е. I64S)? В Windows.pas есть типы LARGE_INTEGER и ULARGE_INTEGER.

Автор: -=CHE@TER=- Nov 7 2008, 15:24

QUOTE(Xplorer @ Nov 6 2008, 15:38) *
Залил на FTP исправленный файл. Изменил MD5Update и MD5Final.
Спасибо большое!!! В самое ближайшее время прикручу к плугену и пофикшу остальные пункты из todo!


QUOTE(Xplorer @ Nov 6 2008, 15:38) *
Если будешь использовать File Mapping, то возьми за основу тот вариант, где используется Int64.
Понял. Это, видимо, из /test/md5large/md5.pas


QUOTE(Xplorer @ Nov 6 2008, 15:38) *
P.S. Зачем изобретать колесо (т.е. I64S)? В Windows.pas есть типы LARGE_INTEGER и ULARGE_INTEGER.
Спасибо большое - не знал.

P.S. А вообще - это колесо изобретал не я, т.к. у меня изначально маппинга и надобности в этом типе не было. (*улыбается*)


Добавлено:
Версия 0.25 на FTP - всё из экстренного ToDo сделано.
Если ни у кого больше замечаний нет - то выложу релиз на сайт в выходные - вместе с оставшимися программами от jTommy и новым ToWav.

Автор: Капитан Фокин Nov 11 2008, 06:14

QUOTE(-=CHE@TER=- @ Nov 7 2008, 19:24) *

Добавлено:
Версия 0.25 на FTP - всё из экстренного ToDo сделано.


А где, собственно ? blink.gif

Автор: -=CHE@TER=- Nov 11 2008, 17:04

QUOTE(Капитан Фокин @ Nov 11 2008, 06:14) *
А где, собственно ? blink.gif
Это только для команды.
Версия 0.25 на сайте.
История изменений - где и обычно.
Тестируйте, ждём отчёта.

Автор: Капитан Фокин Nov 12 2008, 08:28

QUOTE(-=CHE@TER=- @ Nov 11 2008, 21:04) *

Версия 0.25 на сайте.
Тестируйте, ждём отчёта.


Обработка больших файлов проходит быстро и корректно, комменты в чек-суммах отрабатываются - спасибо! (как обычно, проверяю только MD5 алгоритм). Надеюсь, старые баги проверять не надо ? biggrin.gif (а новые сами о себе заявят, если что).

Теперь если только "бегущие проценты" добавить, да прерывание по Esc... Кстати, а насколько сложно "перенести" отображение процесса из левого угла в информационное окно в центре ? Поясню - когда обрабатывается туча мелких файлов и процесс идет быстро, то не успеваешь "забыть", что происходит. А когда калькулируются большие файлы, то подчас "не отвечающее" окно FAR-а шокирует (потом только "вспоминаешь", что чек-суммы считаем и смотришь в левый угол smile.gif ). А так - окно в центре, процесс идет, "не надо делать резких движений, господа" biggrin.gif

Автор: -=CHE@TER=- Nov 12 2008, 11:14

QUOTE(Капитан Фокин @ Nov 12 2008, 08:28) *
Теперь если только "бегущие проценты" добавить, да прерывание по Esc... Кстати, а насколько сложно "перенести" отображение процесса из левого угла в информационное окно в центре ?
Это надо для диалогов AdvControl() запинывать. Она криво объявлена в Pascal-модулях, даже размер структуры с сишным заголовочным файлом не совпадает. Короче, чтобы что-то сделать нужно сначала исправить косяк самого FAR Plugin SDK для Pascal.
А ESC и % сделать не особенно сложно (надо CallBack-процедуру прикрутить).
Но, конечно, для того чтобы что-то сделать нужно свободное время.
Так что "when it's done" ©.

Автор: -=CHE@TER=- Sep 11 2009, 22:56

QUOTE(-=CHE@TER=- @ Nov 12 2008, 11:14) *
Это надо для диалогов AdvControl() запинывать. Она криво объявлена в Pascal-модулях, даже размер структуры с сишным заголовочным файлом не совпадает. Короче, чтобы что-то сделать нужно сначала исправить косяк самого FAR Plugin SDK для Pascal.

Нашёл где ошибка - тому кто переводил сишный модуль на Pascal надо руки оторвать.

Сишное объявление структуры:
CODE

struct PluginStartupInfo
{
...
  FARSTANDARDFUNCTIONS  *FSF;
...
};


Оно же в Pascal:

CODE
type
TPluginStartupInfo = packed record
...
  FSF : TFarStandardFunctions;
...
end;


А должно было быть PFarStandardFunctions - там же указатель!
Из-за этого косяка все структуры, естественно, уехали непойми куда. И размеры:
sizeof(struct PluginStartupInfo) = 372 bytes
sizeof(TPluginStartupInfo) = 596 bytes
После замены T на P размер структур совпался.

Сделал вывод текущего обрабатываемого файла в окне для проверки / создания контрольной суммы, а не строчкой в углу. Самое смешное, что для этого AdvControl() и не нужен был - можно было через Message() с параметром 0 для кнопок. Так что ClrIdx выбросил - цвет фона нам не понадобится.

Думаю, как бы аккуратно прикрутить прерывание по ESC в любой момент и проценты для текущего файла.

Автор: -=CHE@TER=- Sep 13 2009, 17:28

Вышла версия 0.26:
- вывод диалогового окна при создании или проверке контрольной суммы с именем обрабатываемого файла (вместо строчки где-то в углу) и процентами, вот так: filename.ext - 25%
- возможность прервать создание и проверку контрольной суммы клавишей ESC в любой момент (а не только в перерывах между файлами как раньше)

Выражаю благодарность товарищу Grom PE за сборку мелкой версии плагина!

Добавлено:
Исходные коды где и обычно.

Добавлено позже:
"Поэтому мы и живем в мире патчей и хотфиксов." © Xplorer

Так, поторопился немного. При создании / проверке суммы для файла менее 100 байт получаем деление 0 на 0.
Сейчас 0.26 убрал с сайта, благо её никто скачать не успел. В ближайшее время постараюсь выложить 0.26 уже исправленную.

Автор: -=CHE@TER=- Sep 16 2009, 14:01

Так, упустил ещё одну важную вещь из виду - если имя файла очень длинное, то FAR его обрезает, чтобы оно влезло в окно на экране. Как следствие проценты тоже обрезаются и смысл в них пропадает. Перенёс вывод процентов в заголовок окна, чтобы их всегда было видно. Больше, вроде бы, косяков не наблюдается...

Grom PE!
Можешь пересобрать эту версию? Исходные коды где и обычно. Заранее спасибо. Версию менять не надо - 0.26.

Автор: Grom PE Sep 18 2009, 00:31

-=CHE@TER=-, хорошо. Скомпилировал и залил на FTP .

Автор: -=CHE@TER=- Sep 18 2009, 15:18

Спасибо большое! Всё, выложил на сайт.

Автор: Капитан Фокин Oct 1 2009, 12:14

QUOTE(-=CHE@TER=- @ Sep 18 2009, 19:18) *

Спасибо большое! Всё, выложил на сайт.


Огромное спасибо! Случайно зашел по старой памяти, а тут - сюрприз biggrin.gif

Теперь есть новый каприз - хочу уникодную версию под Far 2.0 wink.gif

И вообще, парни, про ваш плагин никто не знает! Все пользуются каким-то убогими поделками или комманд-лайн утилитами... Залейте на плаг-ринг, пусть страна знает своих героев! laugh.gif

Автор: -=CHE@TER=- Oct 1 2009, 13:08

QUOTE(Капитан Фокин @ Oct 1 2009, 12:14) *
Огромное спасибо! Случайно зашел по старой памяти, а тут - сюрприз biggrin.gif
А я письмо отправлял, что новая версия вышла - не пришло что-ли?..

QUOTE(Капитан Фокин @ Oct 1 2009, 12:14) *
Теперь есть новый каприз - хочу уникодную версию под Far 2.0 wink.gif
Да, есть такая фигня. Недавно как раз столкнулся: файлы, в имени которых есть нестандартные символы проверить из FAR нельзя - т.к. он файл найти не может.

QUOTE(Капитан Фокин @ Oct 1 2009, 12:14) *
И вообще, парни, про ваш плагин никто не знает! Все пользуются каким-то убогими поделками или комманд-лайн утилитами... Залейте на плаг-ринг, пусть страна знает своих героев! laugh.gif
Попытался - мне сказали "Temporary down." и мыльный адрес, куда слать вручную. Мде... Ну, попробуем.

Автор: Капитан Фокин Oct 1 2009, 13:28

QUOTE(-=CHE@TER=- @ Oct 1 2009, 17:08) *

А я письмо отправлял, что новая версия вышла - не пришло что-ли?..


Черт! Пришло, оказывается... Я то мыло давно что-то не проверял... Да не важно. Важно, что новую версию я все равно заимел smile.gif Теперь с "процентиками" и ESC-ом вообще сказка!

QUOTE(-=CHE@TER=- @ Oct 1 2009, 17:08) *

Да, есть такая фигня. Недавно как раз столкнулся: файлы, в имени которых есть нестандартные символы проверить из FAR нельзя - т.к. он файл найти не может.


Итак ? Ждем уникод ? wink.gif

QUOTE(-=CHE@TER=- @ Oct 1 2009, 17:08) *

Попытался - мне сказали "Temporary down." и мыльный адрес, куда слать вручную. Мде... Ну, попробуем.


Либо слать всяким сборщикам пак-ов ссылу сюда. При случае, разумеется smile.gif

В плане мелких придирок (куда ж без этого!), может имеет смысл изменить финальный экран "Завершено" на что-то вроде "Завершено с ошибкой(-ми)!" в случае завершения операции вычисления/проверки с ошибкой(-ми) ?

Автор: -=CHE@TER=- Oct 1 2009, 16:26

QUOTE(Капитан Фокин @ Oct 1 2009, 13:28) *
Черт! Пришло, оказывается... Я то мыло давно что-то не проверял...
В профиле пользователя можно email указанный при регистрации поменять, на тот что чаще проверяется, если что...

QUOTE(Капитан Фокин @ Oct 1 2009, 13:28) *
Итак ? Ждем уникод ? wink.gif
Ждём-то ждём, а когда будет непонятно (поэтому про email и написал). Во-первых, надо понять как его прикрутить, а во-вторых, хотелось бы при этом, чтобы и старые версии FAR, которые Unicode не понимают, продолжали с плагином работать. И, кстати, тут надо аккуратно, так как можно резко потерять поддержку Windows 9x. Как вариант, конечно, можно и два плагина сделать, но как-то... Хм.

QUOTE(Капитан Фокин @ Oct 1 2009, 13:28) *
Либо слать всяким сборщикам пак-ов ссылу сюда. При случае, разумеется smile.gif
Не, времени этим заниматься нет. Если есть желание помочь - будем только рады.

QUOTE(Капитан Фокин @ Oct 1 2009, 13:28) *
В плане мелких придирок (куда ж без этого!), может имеет смысл изменить финальный экран "Завершено" на что-то вроде "Завершено с ошибкой(-ми)!" в случае завершения операции вычисления/проверки с ошибкой(-ми) ?
Я это ещё в прошлом году говорил: там надо, по хорошему, молча всё проверять, а в конце выдать список файлов, которые проверку не прошли - см. предыдущую страницу обсуждений. Пока что Unicode приоритетнее.

Автор: Капитан Фокин Oct 2 2009, 05:16

QUOTE(-=CHE@TER=- @ Oct 1 2009, 20:26) *

Ждём-то ждём, а когда будет непонятно (поэтому про email и написал). Во-первых, надо понять как его прикрутить, а во-вторых, хотелось бы при этом, чтобы и старые версии FAR, которые Unicode не понимают, продолжали с плагином работать. И, кстати, тут надо аккуратно, так как можно резко потерять поддержку Windows 9x. Как вариант, конечно, можно и два плагина сделать, но как-то... Хм.

Насколько я понимаю, решение - только два плагина. Ни старые версии FAR-а, ни Win9x не понимают уникод (хотя, я не программер, могу и ошибаться). Ну, или что-то вроде проверки при старте под каким FAR-ом работаем и соотв. задействовать ANSI или Unicode функции ("коня и трепетную лань", так сказать, запрячь в одну повозку smile.gif

QUOTE(-=CHE@TER=- @ Oct 1 2009, 20:26) *

Не, времени этим заниматься нет. Если есть желание помочь - будем только рады.

При случае - не премину smile.gif

QUOTE(-=CHE@TER=- @ Oct 1 2009, 20:26) *

Я это ещё в прошлом году говорил: там надо, по хорошему, молча всё проверять, а в конце выдать список файлов, которые проверку не прошли - см. предыдущую страницу обсуждений. Пока что Unicode приоритетнее.

Можно так:
1. Завершено удачно - выдается окно, которое сейчас;
2. Завершено неудачно - выдается окно "завершено с ошибкой!" и две кнопки - Ок и Log. При нажатии Log открывать редактор по-умолчанию (Notepad или что-там у юзера в реестре прописано) и в него заливать список (смысл сего действия прост - если список огромный, то пусть Notepad сам разбирается как грамотно отобразить длинные имена, скроллить, куда и под каким именем сохранять и т.п.). Как вариант, Log можно открывать во встроенном редакторе FAR.

Автор: -=CHE@TER=- Oct 14 2009, 01:04

QUOTE(-=CHE@TER=- @ Oct 1 2009, 13:08) *
Попытался - мне сказали "Temporary down." и мыльный адрес, куда слать вручную. Мде... Ну, попробуем.
Не прошло и сто лет, как пришёл ответ:
QUOTE
Пока плагринг в разработке, пиши на форум.
Т.е. мне предложили зарегиться у них на форуме, создать тему, написать, прикрепить файлы... Не, так не пойдёт. А плагринг, кстати, в перманентной разработке похоже. Короче - всё это дохлый номер.

Добавлено:
Ещё мысли:
1) Нужно ли делать поддержку CRC16? У них такая шутка в имени файла: file[CRC 01DA].ext
2) Сделать так, чтобы если выделенно несколько файлов, у которых в имени CRC32, то чтобы они все проверялись, а не только тот, на котором сейчас курсор установлен.
3) Починить проценты - сейчас они криво считаются и иногда может отображаться 101%.

Ещё добавлено:
CODE
;MD5 sums generated by MD5 Checksum Verifier
;Please download the latest version from http://www.flashplayerpro.com/MD5Checksum/
;2010-04-28 23:48:11

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

Автор: -=CHE@TER=- Jul 30 2012, 08:00

Минорные изменения для совместимости с FAR 3 - там после проверки файла с контрольной суммой на панели (если на нём ENTER нажать), выскакивало сообщение об ошибке.

Grom PE!
Версия 0.27 на FTP - можешь её пересобрать?
И ещё файл history.en.txt - я в буржуйском не силён, а в русском написал, что изменил.

Из справки по OpenFilePlugin:

QUOTE
If the plugin will process the passed file, the return value must be new plugin handle.
If this file type is not supported, the return value must be INVALID_HANDLE_VALUE.
If operation is interrupted by the user, the value -2 (cast to the HANDLE type) should be returned.

Ладно, не вопрос - возвращаю THandle(число > 0), в FAR 3 всё работает, в FAR 1.70 курсор скачет после обработки файла на самый верх - на "..".
Пришлось возвращать -2 чтобы курсор не скакал и сообщений об ошибках не было.
А если тип файлов не поддерживается то INVALID_HANDLE_VALUE.

Автор: Grom PE Jul 30 2012, 16:37

QUOTE
Grom PE!Версия 0.27 на FTP - можешь её пересобрать?И ещё файл history.en.txt - я в буржуйском не силён, а в русском написал, что изменил.

Скомпилил, английскую историю дописал, все дела на FTP.

Автор: -=CHE@TER=- Jul 30 2012, 19:07

Спасибо большое!
При ближайшем обновлении добавлю на сайт.

Автор: -=CHE@TER=- Sep 9 2012, 12:52

Совсем забыл при обновлении. Исправлено.
Чтобы не писать ещё одну новость, добавил в начало старой.