• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Как работает наследование шаблонов?

  • Автор темы NeoSimvolist
  • Дата начала
N

NeoSimvolist

Галочка в свойствах "Inherit design from master template".
И когда вообще обновляется шаблон базы из мастер шаблона?
Принцип подскажите)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
принцып просто
за это отвечает задаче Design
принудительно обновить в консоли сервера
load design
шедулерно по дефоулту настроено в 2 часа ночи
глядите переменную
servertasksat2=
 
A

Akupaka

эта... я малость вмешаюсь...
1) наследование может быть указано как для всей базы, так и для отдельных элементов дизайна;
2) настройка наследования отдельных элементов дизайна имеет приоритет перед настройкой наследования БД; т.е. если элемент имеет собственный шаблон в отличном от базы шаблоне, то он будет оттуда обновляться, а не из шаблона для БД;
3) обновление дизайна может быть проведено в ручной форме, и автоматической, если включена задача Design (об этом было выше);
чтобы обновить руками (еще есть ффункция замены дизайна) необходимо выполнить действие "Refresh design" из меню (File/)Database (pre R8), (File/)Application (R8). при выполнении этого действия будет отображен диалог выбора сервера, на котором лежит мастер-шаблон для выбранной БД.
чтобы заменить дизайн необходимо выполнить действие "Replace design" из того же меню.
при выполнении этого действия будет отображен диалог выбора шаблона, в котором отображаются как мастер-шаблоны, так и обычные.
чтобы база была мастер шаблоном она должна иметь установленное свойство "Database file is a master template", в виде строки. при этом, на сколько мне помнится, расширение (NSF/NTF) не имеет значения. но, в диалоге выбора шаблона отображаются только NTF!
автоматическим обновлением занимается задача дизайн (выше).
4) каждый элемент дизайна имеет две доп. опции, которые влияют на обновление дизайна:
- "prohibit design refresh or replace to modify" - если на элементе эта опция включена, то при обновлении дизайна этот элемент не будет обновлен или изменен;
полезная опция, если правки ведутся прямо в базе, но при этом база наследует дизайн из шаблона;
- "propagate this prohibition of design change" - если в шаблоне включена первая галка и эта, то элемент дизайна в базе, которой обновляют дизайн, получит первую галку;
довольно скользкая вещь, я стараюсь не использовать, т.к. иногда можем сами запретить обновление, а потом долго думать, почему ничего не меняется при обновлении дизайна.

пакафсе
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Akupaka
да че уж там, давай ему и пример на вин апи дадим сразу :)
Код:
Declare Private Function W32_NSFDbOpen Lib "nnotes" Alias "NSFDbOpen" (Byval PathName As Lmbcs String, hDB As Long) As Integer
Declare Private Function W32_DesignRefresh Lib "nnotes" Alias "DesignRefresh" (Byval ServerName As Lmbcs String, Byval hDB As Long, Byval dwFlags As Long, Byval abortCheck As Integer, Byval messageProc As Integer) As Integer
Declare Private Function W32_NSFDbClose Lib "nnotes" Alias "NSFDbClose" (Byval hDB As Long) As Integer

Sub RefreshDesign(destPath As String)
Dim rc As Integer, hDb As Long
Call AddLog("Оновлення на сервері: " & destPath & " ...")	
rc = W32_NSFDbOpen(destPath, hDb) ' Open the db in the API and get a handle to the open db
If rc <> 0 Then
Call AddLog("Не удаётся открыть БД - Error Code " & Cstr(rc))
Else
rc = W32_DesignRefresh("", hDb, 0, 0, 0)
If rc <> 0 Then
Call AddLog("Не удалось обновить БД - Error Code " & Cstr(rc))
End If
Call W32_NSFDbClose(hDb)
End If
End Sub
че-то настроение странное ;)
 
N

NeoSimvolist

Очень помогло для понимания принципа. Благодарю, парни! Тема закрыта )
 
T

TIA

Declare Private Function W32_DesignRefresh Lib "nnotes" Alias "DesignRefresh" (Byval ServerName As Lmbcs String, Byval hDB As Long, Byval dwFlags As Long, Byval abortCheck As Integer, Byval messageProc As Integer) As Integer

И как, не падает? Дело в том, что Integer в LS имеет размер 2 байта. А параметры abortCheck и messageProc являются указателями на callback-функции. Т.е. указателями на адрес памяти. Указатели под W32 имеют размер 4 байта.

Голову отрубишь себе за такие советы? :)
 
H

hosm

Для платформы Win32 abortCheck и messageProc нужно описать As Long. Только для DesignRefresh фактическими параметрами abortCheck и messageProc нужно передавать 0. Т.к. это callback-функции.
[topic="33068"]пример из CodeBase[/topic]
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!