AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Контрольная сумма выделения
Goto page Previous  1, 2, 3, 4  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
akkorn



Joined: 08 Feb 2013
Posts: 39

PostPosted: Sun Feb 17, 2013 3:57 pm    Post subject: Reply with quote

Пришла мысль в голову: А размер командной строки для файла не будет ли системой ограничен?

Узнал. По поводу предыдущей ошибки нужно было установить плагин Scripts (спасибо KDJ).

На счет максимального кол-ва переданных символов: Их не может быть более 32684.

Утилитку подлатал (теперь выводится кол-во преданных ей символов- полезно для анализа). http://webfile.ru/6382309


Будем дальше мучить эту идею. Можно конечно передавать вместо текста ссылку (путь) к файлу, и узнавать его сумму. Но в этом случае вначале нужно сохранять выделенный текст в файле.... Нинаю пока куда копать..

Идеи есть у кого? Smile


Last edited by akkorn on Mon Feb 18, 2013 5:39 am; edited 1 time in total
Back to top
View user's profile Send private message
akkorn



Joined: 08 Feb 2013
Posts: 39

PostPosted: Sun Feb 17, 2013 7:43 pm    Post subject: Reply with quote

В общем и целом, встав сегодня утром, я понял, что ни кто за меня не сделает чего хочет моя душа.
Потому сделал я сам Cool

Короче так:
а) Нужен установленный плагин Scripts
б) В папку с плагином (...\AkelFiles\Plugs\Scripts\) копируем файл отседова (распакуйте):
http://webfile.ru/6382600

Из плагина ToolBar запуск такой:
Code:
"Узнать CRC32 выделенного текста" Call("Scripts::Main", 1, "CRC32txt.vbs", "0") Icon(38)


Так оно и мне проще (чо хотел- работает), да и вам всем мозх не выношу.

За сим откланиваюсь. Всем спасибки, все молодцы! Wink

pp.s. Ессно, можно было заморочиться с dll, вызывать у нее ф-цию, передавать параметр, принимать и т.д. и т.д. Да ну ее!!! Здесь все наглядно, вирусов нет, бояться нечего, а значитЪ пользоваться хоть кто-то да буит.

ppp.s. Максимальное количество символов ограничивайте здравым рассудком: чем больше- тем дольше. 100 000 символов обсчитываются все-же не мгновенно (сек 3-4). Так что думать моно и нуно, а так то все работает + сохраняется контр.сумма- для сравнения с предыдущим вариантом.

На сим действительно усе )))


Last edited by akkorn on Tue Mar 12, 2013 9:51 am; edited 1 time in total
Back to top
View user's profile Send private message
akkorn



Joined: 08 Feb 2013
Posts: 39

PostPosted: Mon Feb 18, 2013 5:26 am    Post subject: Reply with quote

У меня уже есть небольшие доработочки... В частности у меня там был косячок с форматом новой строки- мануал по Scripts помог.
Так же все же может не закрывать пока тему- мож другие баги выловятся?

Далее. С утра, пока шел на работу, пришла мысль, что большой объем текста может обрабатываться долго. Я могу засечь время для обработки, скажем 100символов (мСек) и пересчитать нужное время (приблизительно) для обработки заданного пользователем текста. И если оно более, скажем 1-2сек, то выводить вопрос, типа "Считать все равно?".
Опять же это усложнение, и надо ли оно в реалиях наших дней??

Вопросов много, и все они требуют вашего участия, друзья Smile

В общем, жду весточек.

p.s. И отпишитесь пожалуйста, работает ли ОНО? Wink
pp.s. Проверить очень просто: создайте текстовый файл, включающий только тестируемые символы. И заархивируйте (WinRar, 7-zip). В этих архиваторах можно посмотреть CRC32- контрольную сумму файла. А в нашем случае, если файл текстовый- то контрольная сумма всего файла будет = контрольной сумме текста в таком файле.

Учачки! Smile


Last edited by akkorn on Mon Feb 18, 2013 11:17 am; edited 1 time in total
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2596
Location: Киев, Русь

PostPosted: Mon Feb 18, 2013 9:31 am    Post subject: Reply with quote

akkorn
У нас есть тема "Коллекция скриптов", где каждый выкладывает свои скрипты. Если будете обновлять скрипт, то обновите его на странице; смысла разводить тут канитель нету.
Back to top
View user's profile Send private message Visit poster's website
akkorn



Joined: 08 Feb 2013
Posts: 39

PostPosted: Mon Feb 18, 2013 11:08 am    Post subject: Reply with quote

VladSh wrote:
akkorn
У нас есть тема "Коллекция скриптов", где каждый выкладывает свои скрипты. Если будете обновлять скрипт, то обновите его на странице; смысла разводить тут канитель нету.


Ок, исправился. Ссылка на пост:
http://akelpad.sourceforge.net/forum/viewtopic.php?p=21273#21273

Баги поправлены.
Back to top
View user's profile Send private message
FeyFre



Joined: 07 Aug 2007
Posts: 2033
Location: Vinnitsa, Ukraine

PostPosted: Mon Feb 18, 2013 3:35 pm    Post subject: Reply with quote

Quote:
Пришла мысль в голову: А размер командной строки для файла не будет ли системой ограничен?

1. Если уж так захотелось написать самостоятельно, то Вы сделали правильно с точностью до наоборот. Командная строка для передачи блобов не годится(как минимум потому что это текст который будет преобразован раза 2 минимум). Если программе нужно скормить блоб, то это делается так:
а) ложим в файл, и говорим откуда брать(параметром командной стрик);
б) использование IPC:
б1) ложим в память, разделяемую память между процессами, и опять таки говорим как её найти(параметрами командной строки);
б2) создаем IPC-канал(именованный или не именованный пайп), и опять таки говорим как к нему достучаться/найти(параметрами командной строки);
в) запускаем процесс и блоб запихиваем ему в STDIN.

Метод в) очень популярный в юникс-подобных системах(и у нас это делается при помощи плагина Log), б) чаще используется в Windows, например именно так оболочка архиватора 7z 7ZFM передается собственно процессу архивирования все параметры операции. Метод а) - можно считать так: 99% реализаций в) поддерживают и а).(в общем его какраз никто не стесняется)

2. Если для вас важно просто посчитать контрольную сумму, не обязательно CRC32 то можно воспользоваться утилитами md5sum, sha1sum,sha*sum из пакета coreutils GNUWin32. Если нет, то полезно будет посмотреть как они сделаны.


Last edited by FeyFre on Mon Feb 18, 2013 11:15 pm; edited 1 time in total
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
akkorn



Joined: 08 Feb 2013
Posts: 39

PostPosted: Mon Feb 18, 2013 6:49 pm    Post subject: Reply with quote

FeyFre wrote:
Quote:
Пришла мысль в голову: А размер командной строки для файла не будет ли системой ограничен?

1. Если уж так захотелось написать самостоятельно, то Вы правильно с точностью до наоборот. Командная строка для передачи блобов не годится(как минимум потому что это текст который будет преобразован раза 2 минимум). Если программе нужно скормить блоб, то это делается так:
а) ложим в файл, и говорим откуда брать(параметром командной стрик);
б) использование IPC:
б1) ложим в память, разделяемую память между процессами, и опять таки говорим как её найти(параметрами командной строки);
б2) создаем IPC-канал(именованный или не именованный пайп), и опять таки говорим как к нему достучаться найти(параметрами командной строки);
в) запускаем процесс и блоб запихиваем ему в STDIN.

Метод в) очень популярный в юникс-подобных системах(и у нас делается при помощи плагина Log), б) чаще используется в Windows, например именно так оболочка архиватора 7z 7ZFM передается собственно процессу архивирования все параметры операции. Метод а) - можно считать так: 99% реализаций в) поддерживают и а).(в общем его какраз никто не стесняется)

2. Если для вас важно просто посчитать контрольную сумму, не обязательно CRC32 то можно воспользоваться утилитами md5sum, sha1sum,sha*sum из пакета coreutils GNUWin32. Если нет, то полезно будет посмотреть как они сделаны.


Пасяпп, полезная инфа. Не все понял, но мне понравилось)))
Back to top
View user's profile Send private message
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Tue Feb 19, 2013 6:34 am    Post subject: Reply with quote

Кстати, в общем случае CRC текста != CRC файла с текстом.
Back to top
View user's profile Send private message
akkorn



Joined: 08 Feb 2013
Posts: 39

PostPosted: Tue Feb 19, 2013 8:00 am    Post subject: Reply with quote

Fr0sT wrote:
Кстати, в общем случае CRC текста != CRC файла с текстом.


Не равно??? Подразумевался файл, тело которого аналогично текстоому файлу (не бинарники..).
Если не трудно, можно примерчик? Smile
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 829
Location: Kyiv, Ukraine

PostPosted: Tue Feb 19, 2013 8:29 am    Post subject: Reply with quote

Лёгко. Внутри AkelPad (конкретнее, в элементе управления AkelEdit, который отвечает за хранение и отображение текста) весь текст хранится в формате Юникод UTF-16 LE. А в файле текст может быть в кодировке ANSI/OEM, UTF-8, UTF-16 LE, UTF-16 BE и т.д. Не говоря уже о символах перевода строки, которые в файлах могут быть "\r\n", "\r", "\n" - а внутри AkelEdit хранятся как "\r".
Back to top
View user's profile Send private message
akkorn



Joined: 08 Feb 2013
Posts: 39

PostPosted: Tue Feb 19, 2013 8:56 am    Post subject: Reply with quote

DV wrote:
Лёгко. Внутри AkelPad (конкретнее, в элементе управления AkelEdit, который отвечает за хранение и отображение текста) весь текст хранится в формате Юникод UTF-16 LE. А в файле текст может быть в кодировке ANSI/OEM, UTF-8, UTF-16 LE, UTF-16 BE и т.д. Не говоря уже о символах перевода строки, которые в файлах могут быть "\r\n", "\r", "\n" - а внутри AkelEdit хранятся как "\r".


Здравствуйте.
Походу- будет не легко:
Первое- мы сравниваем текст. В той кодировке, как он в окне редактора AkelPad.
Второе- символы перевода строки (формат Win, Unix, Mac) так же учитываются.

Может, я чего-либо не до-понимаю. Однако, сколько бы я не эксперементировал- результат всего текста всегда у меня равен контрольной сумме файла. Попробуйте.
Пример тут: http://www.image123.net/s5k79y3jv0gipic.html
Пример спецом привел бинарника, а не текстового файла. Все равно все правильно.


Если у Вас получилось другое, то пришлите (выложите) такой файлик (в архиве желательно).
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 829
Location: Kyiv, Ukraine

PostPosted: Tue Feb 19, 2013 10:08 am    Post subject: Reply with quote

Создаём новый файл с любым русским текстом - например, со строкой "Жопа метр на метр". Сохраняем как UTF-8. Независимо от того, выбрали мы сохранение с BOM или без него, в обоих случаях мы получим разные контрольные суммы для файла и для текста.
Back to top
View user's profile Send private message
akkorn



Joined: 08 Feb 2013
Posts: 39

PostPosted: Tue Feb 19, 2013 1:44 pm    Post subject: Reply with quote

DV wrote:
Создаём новый файл с любым русским текстом - например, со строкой "Жопа метр на метр". Сохраняем как UTF-8. Независимо от того, выбрали мы сохранение с BOM или без него, в обоих случаях мы получим разные контрольные суммы для файла и для текста.


Да, верно (чешет репу) Rolling Eyes
Но все же основную задачу выполняет (сравнение двух текстов на идентичность). А CRC считает не всегда корректно- это правда.

Вопрос: Нужно ли рыть землю или и так пойдет?
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 829
Location: Kyiv, Ukraine

PostPosted: Tue Feb 19, 2013 2:29 pm    Post subject: Reply with quote

В пределах темы - Контрольная сумма выделения - всё работает. Если бы вопрос ставился как "посчитать контрольную сумму выделенных символов в оригинальной кодировке файла", тогда пришлось бы копать глубже (сначала преобразовать выделенный текст в массив символов в исходной кодировке файла, а потом уже для полученного массива считать контрольную сумму).
Back to top
View user's profile Send private message
akkorn



Joined: 08 Feb 2013
Posts: 39

PostPosted: Tue Feb 19, 2013 4:55 pm    Post subject: Reply with quote

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


Верно. Сумма CRC32 была выбрана именно из-за небольшого кол-ва символов, "характеризующих" уникальность набора символов. Проще сравнить 8 символов, нежели 25, к примеру.

p.s. Еще раз привожу ссылку на свой посто в разделе "Коллекция скриптов":
http://akelpad.sourceforge.net/forum/viewtopic.php?p=21273#21273
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page Previous  1, 2, 3, 4  Next
Page 2 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group