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

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

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

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

Использование библиотеки из другой БД

  • Автор темы SkinGreek
  • Дата начала
S

SkinGreek

Всем привет.

Попытался найти способ в поиске, но как то не очень получилось. В общем хотелось бы вызывать код библиотеки из другой БД.
Вообще основная задача состоит в уже не раз поднятой темой нумерации документов 1,2,3... Начитавшись топиков по данной теме решил сделать отдельную БД, в которой была библиотека для генерации ID. В этом функционале собираюсь создавать документы по форме имеющую поля "имя счетсчика" "значение". Для каждого счетчика свой документ.
Все вроде ясно и просто, только замялся на том чтобы вызывать функции библиотеки из другой БД:(

Или этот подход не верен и библиотека с функционалом должна лежать в БД из которой она вызывается?

Заранее спасибо за помощь.
 
O

Omh

библиотека с функционалом должна лежать в БД из которой она вызывается?
Именно!

Но можно шмальнуть агента из нужной базы, который заюзает библиотеку.
Или настроить наследование библиотек что бы меньше гемора было...
 
S

SkinGreek

ех как же все сложно;)

Но можно шмальнуть агента из нужной базы, который заюзает библиотеку.
Агента "шмальнуть" не могу, ибо надо передавать параметр "имя каунтера" - он динамический.
Я конечно делал передачу параметров в агент через документ, и даже библиотечка завалялась, но это слишком много телодвижений будет для обычного инкремента с локированием счетчика:(

Или настроить наследование библиотек что бы меньше гемора было...
Это имеется ввиду сделать рутовский шаблон, от которого будут наследовать другие БД. Как я понимаю иерархию наследования можно делать.
Ладно вопрос про наследование в принципе просто для расширения кругозора. Хотелось просто сделать по-модульней. Если советуют создать для каунтера отдельную БД, то и было бы логичней туда скинуть функционал. Иначе я не мог объяснить необходимость создания отдельной БД для этого функционала. Доков там не так уж много получается. На каждый каунтер - док. От силы было бы 100 доков.

Ну раз нельзя, так нельзя. Обидно конечно.

Пасиб за помощь.
 
O

Omh

Дэк это...
Можешь проверять, есть ли док для данного каунтера, если нет, то создать и шмальнуть агента с NoteID именно этого дока.
А если такой док уже есть, то опять-таки запустить агента с NoteID найденого дока.
Не будет лишних промежуточных документов.
Типа того...
 
S

SkinGreek

просто не ясно тогда для чего это, все равно пользующая БД будет очень много знать о каунтере.
а именно
что каунтер ведется в документах типа Counter и у него есть поле с которого надо брать значения.
Вся суть инкапсуляции метода нумерации и способа хранения таким образом теряется. Если б я мог просто вызывать библиотеку базы каунтера, то пользовательская БД толком ничегоб и не знала что там да как, просто тупо вызывала бы методы и получала бы значения.
А так получится и кода дофигища писать в клиентской БД который будет много знать о реализации каунтера. в общем и целом просто смысла тогда не вижу. может я просто прищюрин?:))
 
O

Omh

Так как ты хочешь, не получится, кмк.
 
S

SkinGreek

да я уже это понял, поэтому плюнул и решил что для данной задачи достаточно сделать библиотеку в клиентской БД.
Обыдно конечно, но стерпеть можно)
Пасиб огромное за помощь и быстрый ответ.

Немного офтопну...
Сейчас немного приболдел от кода в хелпе.
Код:
	Do While True
If Codelock(LockID) Then
Exit Do		' We finally have a lock, exiting Loop
End If
Loop
это типа "ожидание" когда конкурирующий процесс раслочит док.
Сорри, но не удержался... "И эти люди нам запрещают ковыряться в носу?!"(с)
 
A

Akupaka

ничего супер плохого не вижу :) для каждой задачи есть своя реализация, не будут же они приводить супер пример, который будет ждать какое-то время, потом спрашивать у юзера что делать, ну и т.п. :)
 
S

SkinGreek

Akupaka
ИМХО какая бы задача не была, насиловать проц + рисковать зацикливания, если по каким бы то нибыло причинам лотус не снял лок с ресурса, нельзя
Сделать слип на 1,3,5 или 10 секунд не затруднит. Для процессора это уйма времени, а для человека мнгновение, да и нечто подобное таймауту. тоже не проблема сделать. А уж клиенский код путь как хочет так и обрабатывает неудачу.
Например можно простейшую защиту сделать.
Код:
Do While Not Codelock(lockId) And attemptsCount < MAX_ATTEMPS_COUNT
Sleep(SLEEP_TIME)
attemptsCount = attemptsCount + 1
Loop
If attemptsCount => MAX_ATTEMPS_COUNT Then
LockCounter = False
Exit Function
End If
 
A

Akupaka

Вы меня не поняли :)
я с Вами абсолютно согласен на счет проверок, циклов и т.п.
но, суть кода в том, чтобы показать как пользоваться методом, а не в том, что нужно использовать именно указанный пример для реализации своих потребностей :)
 
S

SkinGreek

Спасиб за обсуждение этого вопроса. Не бум спорить, главное чтоб не сильно ошибиться при использовании подобных опасных методов)
 
P

PaKo

Если не ошибаюсь, то на курсах "повышения" квалификации в IBA нам говорили что можно в качестве библиотеки использовать txt файл залитый на сервер и приинклюденный к БД. теоритически если несколько БД юзают одну библиотеку то просто надо указать в Option - Use "путь\имя к файлу"
 
Мы в соцсетях:

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