• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Ошибка: Cannot Find External Name

  • Автор темы Автор темы Xalet
  • Дата начала Дата начала
X

Xalet

Есть база с шаблоном библиотеки скриптов. База мастер темплейт из которого библиотека тянется в Н баз, в которых библиотека используется.

После обновления дизайна в базах код не видит функций из шаблонной библиотеки. Вылетает с ошибкой Cannot find external name и имя функции.

Думаю, что рекомпайлом оно вылечится, не пробовал пока, нет доступа.

Вопрос собственно в том: оно всегда так будет ломаться после обновления библиотеки в шаблоне и, если да, то как организовать тогда аналог такого обновления?
 
xalet
оно всегда будет ломаться если вы не умеете правильно править библиотеки - вот так пожалуй коректнее сказать
Чаще всего так происходит когда кто-то правит две библиотеки сразу а одна из них в это время ссылается в другую
 
Чаще всего так происходит когда кто-то правит две библиотеки сразу а одна из них в это время ссылается в другую

Ну да, так и было. И будет постоянно. Но код при этом корректный. Только обе поменялись.

Скажем есть у меня функция в библиотеке А, которая использектся в библиотеке Б. Я поменял библиотеку Б, сохранил. Потом беру библиотеку А и дорисовываю туда еще функцию, сохраняю. Библиотека Б всегда при этом сломается?
 
Yakov разжевывал ситуацию

за линк спасибо. Только там про классы и создание объектов класса. И, судя по рассписанному, в моем случае не должно было сломаться вообще (потому как я просто добавил коммент для тестов в шаблонной библиотеке).
 
Поможет переименовывание библиотеки-источника + сохранение, и затем переименовывание в модуле-использования+сохранение.
После удачного теста, переименовать обратно
 
переименовывание библиотеки-источника
ну не обязательно... при изменениях в библах нижнего уровня надо пересохранить явно (типа +пробел,- пробел сохранить) все библы, которые наследуют нижнюю... это VladSh разжевывал и даже технота есть от IBM - лень искать по форуму....
 
Поможет переименовывание библиотеки-источника + сохранение, и затем переименовывание в модуле-использования+сохранение.
После удачного теста, переименовать обратно

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

может я плохо описал...

скажем
1. есть библиотека в которой все функции для сохранения логов(считывание конфигов, записи и т.д.).
2. есть 10 различных баз со своими библиотеками(для каждой уникальные и в общей куче хранить нет смысла)
3. в библиотека из этих 10ти баз используется библиотека для логов.

теперь проблема:
в одной из 10ти баз не хватает функций из библиотеки для логов и ее надо добавить.

добавляем в этой базе и имеем две версии библиотеки, если не полезим во все 10 и не обновим(а ведь реально не полезим, потому как можем и не знать, что оно там используется).

в результате через какое-то время у нас 10 версий библиотеки для логов, что не есть гут...

Потому хотелось бы как-то эту одну(в реале кучу) тянуть из одного места во всех базах без влезания в них и перекомпиливания...
 
в одной из 10ти баз не хватает функций из библиотеки для логов и ее надо добавить.
а как же п.3???

должно быть так: база наследует дизайн с шаблона, а некоторые эл-ты шаблона (у нас - библ логов) персонально наследует дизайн с шаблона с библом логов.

получаем N баз на одном шаблоне и во всех правильная библа логов.
 
Цитата:

(xalet @ 29:07:2010 - 16:20) *



в одной из 10ти баз не хватает функций из библиотеки для логов и ее надо добавить.



а как же п.3???

не хватает функции в библиотеке логов.

должно быть так: база наследует дизайн с шаблона, а некоторые эл-ты шаблона (у нас - библ логов) персонально наследует дизайн с шаблона с библом логов.

получаем N баз на одном шаблоне и во всех правильная библа логов.

сделано примерно так, за одним исключением, что дизайн в 10ти базах вообще ниоткуда не наследуется. Наследуется дизайн только дизайн библиотеки с логом...

ну и собственно оно и ломается.
 
Блин, столько разговоров... Рекомпиляцию всего скрипта запустил себе и все.
Если не лениво, то надо самому построить дерево использования, пройтись по нему снизу вверх, но перед сохранением надо обязательно внести изменение, и удалить сразу, например, пробел.
Лучше всего изменение делать в разделе с Use, иногда в других местах не проходит.
 
вообще ниоткуда не наследуется
в том и фишка - так бы в мастер-шаблоне пересохранили и всё, а так - 10 раз надо пересохранять...

Добавлено:
Рекомпиляцию всего скрипта запустил себе и все
не всегда поможет :) особенно в 8.Х
 
Блин, столько разговоров... Рекомпиляцию всего скрипта запустил себе и все.
Если не лениво, то надо самому построить дерево использования, пройтись по нему снизу вверх, но перед сохранением надо обязательно внести изменение, и удалить сразу, например, пробел.
Лучше всего изменение делать в разделе с Use, иногда в других местах не проходит.

Так я и не спрашивал, как от ошибки избавиться. Каждый раз во все базы не лазить же с рекомпиляцией.
 
вроде тут ответили на оба вопроса из основного поста....

Вроде да. Всем спасибо.

Попытаюсь обдумать, как такое сорганизовать:

база наследует дизайн с шаблона, а некоторые эл-ты шаблона (у нас - библ логов) персонально наследует дизайн с шаблона с библом логов.

база наследует дизайн с шаблона - а в нем библы логов нет совсем? Или если в базе указать, откуда берется конкретный элемент, то из общего шаблона он не будет обновляться, а только из того шаблона, который прописан. И это точно поможет? =)
 
не всегда поможет smile.gif особенно в 8.Х
Это ж ты писал, что у тебя элементы дизайна лочатся? Може у тебя что с клиентом? :)
Хотя, в 8-ке рекомпиляцией пока не страдал массово. В основном руцями парюсь (зачем? О.о сам не понимаю)

Каждый раз во все базы не лазить же с рекомпиляцией.
Гы, а что мешает? Неплохая практика каждый раз, после обновления рабочей базы, делать рекомпиляцию. Тогда объектный код нормально строится.
 
Серверы клиенты 6.5.х

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

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

А пока да. Н версий всех скриптов и все ручками...
 
что когда работают 10ки прогеров и меняют библы, зачастую не зная всех мест, где они используются, это не вариант
Вообще-то в таком случае Recompile All LScript хитро отрабатывает на ура, если ошибок нет (или я чего не понял). А самому ходить искать дерево и пересохранять - гемор тот еще.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab