|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
Добрый день, уважаемые форумчане. Вот мне необходимо идентифицировать класс Cache, который хранится в памяти на диске. Т.е. посчитать его контрольную сумму и сравнить с той, что где-то на бумажке. Если я буду использовать следующий методClass Test.ClassCRC [ Abstract ] { /// do ##class(Test.ClassCRC).GetCRC() ClassMethod GetCRC() { Write !! Set obj=##class(%Dictionary.CompiledClass).%OpenId("Kernel.BaseAlgorithm") Write !, "CRC = ",obj.Hash Set obj = "" } } То правильно ли это будет? Я заметил, что комментарии класса </// Комментарий например> Таким способом не отслеживается. Кто что скажет по этому поводу? Может не туда я полез в своих поисках? Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 11:44 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
AlexKB, Это наверно не совсем верный способ, если вы хотите чтобы изменялся хеш класса, если он в любом месте изменился. Лучше воспользоваться экспортом в поток, а потом, считать хеш на поток т.е. что-то типа Код: plaintext
/diffexport - нужен чтобы не попала дата последней компиляции можно еще поставить /exportversion=2010.2 - чтобы не менялась версия в заголовке, если проверка под разными версиями, доступно с 2012.2 <Export generator="Cache" version="24"> после всего этого можно и хеш посчитать w $system.Encryption.SHAHashStream(256,stream) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 11:59 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
DAiMor, Спасибо! Я вот в начале и думал так, мол экспортнуть в поток, или файл, а там уже и считать. Но вот смутило меня, что есть уже такое свойство <Hash>, которое содержит контрольную сумму. Потыкал, вроде отслеживает изменения, но оказалось, что не все. А где узнать про квалификатор <qspec>, про его возможные комбинации? Для меня это не праздный вопрос - у нас существует такое понятие, как "метрологическая аттестация программного обеспечения". Все ПО должно быть разделено на "метрологически значимое ПО" и "метрологически не значимое ПО". Первое должно быть защищено контрольной суммлой и на него должен быть получен некий "сертификат". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:15 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
Мы тоже сертифицируем наше ПО. Но в нашем случае правда мы контрольные суммы считали на OBJ код, в том числе и для классов. Делается это в процессе сборки нашей версии. Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:22 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
DAiMor, Фу ты елки - Семен, Семеныч... Знал же про это... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:30 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
DAiMor, Спасибо Вам большое и долгих лет жизни в нашем сообществе!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:35 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
AlexKBDAiMor, Спасибо Вам большое и долгих лет жизни в нашем сообществе!!!Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:37 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
Нас в своё время заставили купить сертифицированную программу подсчёта контрольных сумм - ФИКС-2 (кажется). Т.е. считать CRC самостоятельно не всегда легитимно, зависит от требований. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:42 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
Alexey Maslov, Мда-а, ценное замечание...((( ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:43 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
Alexey MaslovНас в своё время заставили купить сертифицированную программу подсчёта контрольных сумм - ФИКС-2 (кажется). Т.е. считать CRC самостоятельно не всегда легитимно, зависит от требований.Нас вроде не заставляли, покупать саму программу, приезжал парень, из конторы которая нам помогает сертифицироваться, и с тоже этой программой, ФИКС 2.0.2. Эта программулина у нас не запустилась на машине где сборка версии делается. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:46 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
Даже не помню, чтобы мы её пытались запускать. Для сертификатора достаточно было факта покупки :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:53 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
Alexey MaslovДаже не помню, чтобы мы её пытались запускать. Для сертификатора достаточно было факта покупки :)А мы вытаскивали все наши исходники в папочку, натравливали эту программу на папку, получался, лог с контрольными суммами, его они забирали и все. Исходники мы не даем. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 12:56 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
AlexKBЯ заметил, что комментарии класса </// Комментарий например> Таким способом не отслеживается. Кто что скажет по этому поводу?Class Test.ClassCRC [ Abstract ] { /// do ##class(Test.ClassCRC).GetCRC() ClassMethod GetCRC() { s hash=$$GetClassHash^%R("Kernel.BaseAlgorithm",,$$$NO) s hashFull=$$GetClassHash^%R("Kernel.BaseAlgorithm",,$$$YES) w "hash = ",$lts(hash),!,"hashFull = ",$lts(hashFull),! } } $$GetClassHash возвращает хеш в формате $LB(Hash1,Hash2), по аналогии с хранимой процедурой call %Dictionary.ClassDefinitionQuery_ClassIndex() PS: полный хеш учитывает и комментарии. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 13:24 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
DAiMorА мы вытаскивали все наши исходники в папочку, натравливали эту программу на папку...Конечно, мы тоже один раз эту процедуру проделали - при подготовке документов к сертификации. Но внедрять проверку CRC в промэксплуатацию, конечно же, не стали, иначе бы ничего никогда не внедрили :) К счастью, заказчик на фиксации исходников не настаивал. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 13:46 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
Особой проверки у нас нет, есть только сбор контрольных сумм при сборке версии после этого на рабочей системе, админ может запустить контроль контрольных сумм, который выведет расхождения. Но проверка только по OBJ коду. Основная проблем была, это безопасность сохраняемых данных Типа если у нас пользователь сохранил файл, и потом удалил из системы, он должен реально быть удален. Файлы хранятся в БД у нас. и делали забивание нулями стрима а потом удаление из бд. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 13:52 |
|
Идентифицировать класс Cache
|
|||
---|---|---|---|
#18+
DAiMorФайлы хранятся в БД у нас. и делали забивание нулями стрима а потом удаление из бд.Красивый ход! Ещё один довод в пользу хранения стримов в БД. Хранись они в файловой системе, вы по-простому бы не выкрутились... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2014, 14:03 |
|
|
start [/forum/topic.php?fid=39&fpage=22&tid=1556958]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 398ms |
0 / 0 |