powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Идентифицировать класс Cache
16 сообщений из 16, страница 1 из 1
Идентифицировать класс Cache
    #38556815
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, уважаемые форумчане.
Вот мне необходимо идентифицировать класс 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 = ""
}
}
То правильно ли это будет?
Я заметил, что комментарии класса </// Комментарий например>
Таким способом не отслеживается.
Кто что скажет по этому поводу?
Может не туда я полез в своих поисках?

Заранее благодарен.
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556829
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB,

Это наверно не совсем верный способ, если вы хотите чтобы изменялся хеш класса, если он в любом месте изменился.
Лучше воспользоваться экспортом в поток, а потом, считать хеш на поток
т.е. что-то типа
Код: plaintext
$system.OBJ.ExportToStream("Test.Class.CLS",.stream,"/diffexport")

/diffexport - нужен чтобы не попала дата последней компиляции
можно еще поставить
/exportversion=2010.2 - чтобы не менялась версия в заголовке, если проверка под разными версиями, доступно с 2012.2
<Export generator="Cache" version="24">

после всего этого можно и хеш посчитать
w $system.Encryption.SHAHashStream(256,stream)
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556865
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,
Спасибо!
Я вот в начале и думал так, мол экспортнуть в поток, или файл, а там уже и считать.
Но вот смутило меня, что есть уже такое свойство <Hash>, которое содержит контрольную сумму. Потыкал, вроде отслеживает изменения, но оказалось, что не все.
А где узнать про квалификатор <qspec>, про его возможные комбинации?

Для меня это не праздный вопрос - у нас существует такое понятие, как "метрологическая аттестация программного обеспечения". Все ПО должно быть разделено на "метрологически значимое ПО" и "метрологически не значимое ПО". Первое должно быть защищено контрольной суммлой и на него должен быть получен некий "сертификат".
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556876
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы тоже сертифицируем наше ПО. Но в нашем случае правда мы контрольные суммы считали на OBJ код, в том числе и для классов. Делается это в процессе сборки нашей версии.

Код: plaintext
d $system.OBJ.ShowQualifiers()
Там очень длинный вывод, так что лучше его перенаправить в файл.
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556887
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,
Фу ты елки - Семен, Семеныч...
Знал же про это...
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556895
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,
Спасибо Вам большое и долгих лет жизни в нашем сообществе!!!
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556897
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKBDAiMor,
Спасибо Вам большое и долгих лет жизни в нашем сообществе!!!Спасибо
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556907
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нас в своё время заставили купить сертифицированную программу подсчёта контрольных сумм - ФИКС-2 (кажется). Т.е. считать CRC самостоятельно не всегда легитимно, зависит от требований.
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556911
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,
Мда-а, ценное замечание...(((
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556924
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovНас в своё время заставили купить сертифицированную программу подсчёта контрольных сумм - ФИКС-2 (кажется). Т.е. считать CRC самостоятельно не всегда легитимно, зависит от требований.Нас вроде не заставляли, покупать саму программу, приезжал парень, из конторы которая нам помогает сертифицироваться, и с тоже этой программой, ФИКС 2.0.2. Эта программулина у нас не запустилась на машине где сборка версии делается.
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556942
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже не помню, чтобы мы её пытались запускать. Для сертификатора достаточно было факта покупки :)
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38556945
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovДаже не помню, чтобы мы её пытались запускать. Для сертификатора достаточно было факта покупки :)А мы вытаскивали все наши исходники в папочку, натравливали эту программу на папку, получался, лог с контрольными суммами, его они забирали и все. Исходники мы не даем.
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38557009
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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: полный хеш учитывает и комментарии.
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38557043
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorА мы вытаскивали все наши исходники в папочку, натравливали эту программу на папку...Конечно, мы тоже один раз эту процедуру проделали - при подготовке документов к сертификации. Но внедрять проверку CRC в промэксплуатацию, конечно же, не стали, иначе бы ничего никогда не внедрили :) К счастью, заказчик на фиксации исходников не настаивал.
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38557061
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Особой проверки у нас нет, есть только сбор контрольных сумм при сборке версии
после этого на рабочей системе, админ может запустить контроль контрольных сумм, который выведет расхождения. Но проверка только по OBJ коду.

Основная проблем была, это безопасность сохраняемых данных
Типа если у нас пользователь сохранил файл, и потом удалил из системы, он должен реально быть удален.
Файлы хранятся в БД у нас. и делали забивание нулями стрима а потом удаление из бд.
...
Рейтинг: 0 / 0
Идентифицировать класс Cache
    #38557086
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorФайлы хранятся в БД у нас. и делали забивание нулями стрима а потом удаление из бд.Красивый ход! Ещё один довод в пользу хранения стримов в БД. Хранись они в файловой системе, вы по-простому бы не выкрутились...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Идентифицировать класс Cache
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]