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

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

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

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

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

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
В общем как и рекомендует ИБМ начал разгружать часть подформ, а именно переводить кнопки на простенькую собачку вызывающую агента в котором уже полноценный тяжелый скрипт.
Старт:
- подформа
- 4 экшена(LS Script)
- встроенный вид
Итого 25Кб

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

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

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

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

nvyush

Заметил ещё одну фИБМчу — если создавать форму копированием и потом удалять с неё лишние поля, то в документе формы остаются поля с именами удалённых полей. Находящиеся же на форме поля перечислены в служебном поле $Fields. Одним словом, если в дизайнере в окне списка форм открыть свойства документа формы, изучить список полей, поле $Fields, а также сравнить со списком полей, имеющихся на форме, то можно обнаружить "лишние" поля. Ещё одна возможность "похудеть" форму.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
А если поставить Optimize document table map и скомпактить базу?
 
O

Omh

Проглядіваю свойство подформі и нахожу 4 поля $SCRIPTOBJ_0. $SCRIPTOBJ_1, $SCRIPTOBJ_2, $SCRIPTOBJ_3 - ну явно откомпиленній код моих бівших кнопок LS
Я для этого написал небольшой экшн в своей адмнской базе: бежит по всем дизайн-документам и выпиливает поля типа LSOBJECT (20).
Потом парочка-тройка RALS'ов (в зависимости от сложности базы) и всё в порядке, как у меня (провожу рукой по животу)

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

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

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
Итого имеем глюк - кнопки, экшены, хотспоты и т.д. которые первоночально были LS после перевода их в собаки оставляют от себя откомпиленный код, который НИКОГДА ничем не затирается
Это было на всех версиях дизайнера, что я помню.

Я для этого написал небольшой экшн в своей адмнской базе: бежит по всем дизайн-документам и выпиливает поля типа LSOBJECT (20).
Потом парочка-тройка RALS'ов (в зависимости от сложности базы) и всё в порядке, как у меня (провожу рукой по животу)
+1
У меня точно также :)


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

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
P.S. Есть ещё одна хитрость )) Иногда некоторые формы (в основном старые, с прошлых версий) при RALS дают ошибку, но если зайти на форму и вручную перекомпилить код событий и кнопок (вставить пробел, убрать пробел + Ctrl+S), то ошибка при RALS всё равно остаётся. Еплипсовый Build таких ошибок не видит.. Помогает только полная перекомпиляция формы, которая инициируется только при переименовании формы в окошке Show Properties + сохранение формы. Лишние айтемы LSOBJECT при этом не удаляются.
Раз уж пошли о хитростях есть еще один мега глюк
Если RALS указывает ошибку на форму/подформу, то глюк скорее всего в шаредэкшене! - так уж получилось, что какой бы код вы не сохраняли в шареде он не фиксится компилятором на ошибку, чтобы просечь где там ошибка надо весь код снести в какую нить тестовую библиотеку и лишь тогда при сейве вы поёмете что же там не так.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
Если RALS указывает ошибку на форму/подформу, то глюк скорее всего в шаредэкшене!
Скорее всего. Но в моём случае (т.е. когда все Shared Actions 100% работали) несколько раз это был код в событиях RT-полей, пару раз код в событиях Shared Fields, несколько раз это был код несуществующих айтемов LSOBJECT, вероятно, "конфликтовавщих" с существующими.

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

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


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

Darker

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

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Товарищи скорость чего именно увеличивается при переносе кода в агент? Документ быстро открывается или же действие в кнопке?
Я проводил эксперимент, что агенты отрабатываются немного медленнее... Поэтому код с кнопок перекидывал в библиотеки
увеличивается скорость открытия документа за счёт уменьшения размера форм/подформ
а так да агент отрабатывает обычно с полсекундной задержкой

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

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
вот задумался а если удалить из форм/подформ поле $Fields
чисто теоритически это вообще хоть чем-то грозит?

Добавлено:
ToxaRat, может тему как-то более подобающе переименовать?
в "Спроси меня как похудеть?" :sorry:
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
Товарищи скорость чего именно увеличивается при переносе кода в агент?
- Увеличивается скорость открытия документов (значительно, особенно если ещё учитывать ).
- Увеличивается скорость репликации элементов дизайна из-за того, что нет скомпиленых айтемов, и из-за "модульного" принципа организации кода - некоторые формы/виды/код может не меняться с предыдущего обновления дизайна (при диалапах было очень актуально).
- Снижается скорость отработки агентов, на время, необходимое на их инициализацию/запуск (незначительно).
- Увеличивается потребление памяти, т.к. агент ничего не знает о переменных-объектах, уже инициализированных на форме/виде (в зависимости от "жирнючести" и количества используемых на форме объектов).
- Увеличивается стабильность работы по той же причине, что память разная (значительно).

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


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

K-Fire

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

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

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