Ахтунг! Перевод кнопки с Ls -> @

Тема в разделе "Lotus - Программирование", создана пользователем ToxaRat, 19 окт 2010.

  1. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    В общем как и рекомендует ИБМ начал разгружать часть подформ, а именно переводить кнопки на простенькую собачку вызывающую агента в котором уже полноценный тяжелый скрипт.
    Старт:
    - подформа
    - 4 экшена(LS Script)
    - встроенный вид
    Итого 25Кб

    Финиш:
    - подформа
    - 4 экшена(@)
    - встроенный вид
    Итого 17Кб

    Как-то переводя кнопку на собаку замечаю что подформа худет только на 2Кб, маловато однако.

    Проглядіваю свойство подформі и нахожу 4 поля $SCRIPTOBJ_0. $SCRIPTOBJ_1, $SCRIPTOBJ_2, $SCRIPTOBJ_3 - ну явно откомпиленній код моих бівших кнопок LS
    Удаляю эти поля нафиг, пересохраняю на всякий случай подформу - поля не создаются.
    Итого имеем глюк - кнопки, экшены, хотспоты и т.д. которые первоночально были LS после перевода их в собаки оставляют от себя откомпиленный код, который НИКОГДА ничем не затирается - оттого и создание формы с нуля всегда давало куда больше результата и меньшую массу!
    Если вам лень пересоздавать формы/подформы заново, рекомендую удалять весь компиленный код и делать рекомпил.

    Итог подформы: 5Кб - в 3 раза меньше чем если это не делать!
     
  2. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Версия дизайнера какая?
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Заметил ещё одну фИБМчу — если создавать форму копированием и потом удалять с неё лишние поля, то в документе формы остаются поля с именами удалённых полей. Находящиеся же на форме поля перечислены в служебном поле $Fields. Одним словом, если в дизайнере в окне списка форм открыть свойства документа формы, изучить список полей, поле $Fields, а также сравнить со списком полей, имеющихся на форме, то можно обнаружить "лишние" поля. Ещё одна возможность "похудеть" форму.
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    6.5.6
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А если поставить Optimize document table map и скомпактить базу?
     
  6. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Заметил это, работая в дизайнере 8.0.1 (en).
     
  8. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Вру, не убираются)

    Добавлено:
    Optimize document table map - не убирает поля.
     
  9. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Я для этого написал небольшой экшн в своей адмнской базе: бежит по всем дизайн-документам и выпиливает поля типа LSOBJECT (20).
    Потом парочка-тройка RALS'ов (в зависимости от сложности базы) и всё в порядке, как у меня (провожу рукой по животу)

    В таком подходе (вызов агента на собаках) тоже есть недостатки на мой взгляд:
    насколько я эксперементирвал, библиотека инициализируется каждый раз при вызове агента, в отличии от скриптовых кнопок.
    Но открытие формы/подформы происходит быстрее - факт.

    Вообще, я тоже за вызов агентов под кнопками, но без фанатизма.
     
  10. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Это было на всех версиях дизайнера, что я помню.

    +1
    У меня точно также :)


    P.S. Есть ещё одна хитрость )) Иногда некоторые формы (в основном старые, с прошлых версий) при RALS дают ошибку, но если зайти на форму и вручную перекомпилить код событий и кнопок (вставить пробел, убрать пробел + Ctrl+S), то ошибка при RALS всё равно остаётся. Еплипсовый Build таких ошибок не видит.. Помогает только полная перекомпиляция формы, которая инициируется только при переименовании формы в окошке Show Properties + сохранение формы. Лишние айтемы LSOBJECT при этом не удаляются.
     
  11. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    Раз уж пошли о хитростях есть еще один мега глюк
    Если RALS указывает ошибку на форму/подформу, то глюк скорее всего в шаредэкшене! - так уж получилось, что какой бы код вы не сохраняли в шареде он не фиксится компилятором на ошибку, чтобы просечь где там ошибка надо весь код снести в какую нить тестовую библиотеку и лишь тогда при сейве вы поёмете что же там не так.
     
  12. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Скорее всего. Но в моём случае (т.е. когда все Shared Actions 100% работали) несколько раз это был код в событиях RT-полей, пару раз код в событиях Shared Fields, несколько раз это был код несуществующих айтемов LSOBJECT, вероятно, "конфликтовавщих" с существующими.

    Ага, потому что этот элемент дизайна не компилится (поля со скомпиленым кодом не создаются).

    Я сносил в специальную вьюху )) хотя да, в библу лучше - чище получается эксперимент :)


    ToxaRat, может тему как-то более подобающе переименовать?
     
  13. Darker

    Darker Гость

    Товарищи скорость чего именно увеличивается при переносе кода в агент? Документ быстро открывается или же действие в кнопке?
    Я проводил эксперимент, что агенты отрабатываются немного медленнее... Поэтому код с кнопок перекидывал в библиотеки
     
  14. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    увеличивается скорость открытия документа за счёт уменьшения размера форм/подформ
    а так да агент отрабатывает обычно с полсекундной задержкой

    не знаю фанатизм это или нет, но сам ИБМ призывает все тяжелые кнопки выносить в агенты - не помню что за редбук был
     
  15. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    вот задумался а если удалить из форм/подформ поле $Fields
    чисто теоритически это вообще хоть чем-то грозит?

    Добавлено:
    в "Спроси меня как похудеть?" :sorry:
     
  16. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    - Увеличивается скорость открытия документов (значительно, особенно если ещё учитывать это).
    - Увеличивается скорость репликации элементов дизайна из-за того, что нет скомпиленых айтемов, и из-за "модульного" принципа организации кода - некоторые формы/виды/код может не меняться с предыдущего обновления дизайна (при диалапах было очень актуально).
    - Снижается скорость отработки агентов, на время, необходимое на их инициализацию/запуск (незначительно).
    - Увеличивается потребление памяти, т.к. агент ничего не знает о переменных-объектах, уже инициализированных на форме/виде (в зависимости от "жирнючести" и количества используемых на форме объектов).
    - Увеличивается стабильность работы по той же причине, что память разная (значительно).

    Если потом выполнить RALS, то, думаю, что нет, т.к. форма - это обычная нота (дизайна).


    Добавлено:
    Можно во что-нибудь менее пафосное :blush:, например "Тонкости работы с Forms: компиляция и т.д..."
     
  17. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    поглядел часть своих форм, хе поле $Fields в некоторых местах у меня под 3К
     
  18. K-Fire

    K-Fire Гость

    Я когда Босс-Референт пытался оптимизировать, некоторые формы/подформы с 200кб до 80кб ужимались только за счет создания нового элемента дизайна и копирования в него всего содержимого старой.

    Было давно, точно уже не помню, однако опытным путем в 7ке определялось что при открытии формы все либы которые наследуются грузятся с сервера каждый раз, никакого кэширования. Текст некомпилированный тоже грузится с сервера на клиент каждый раз :)
     
Загрузка...

Поделиться этой страницей