Обновить
28
0
sirus @sirus

Пользователь

Отправить сообщение
суть в том чтобы сделать Optimizer нормальный, а заглушки разработчик сам определит.
очень интересный подход. реально асинхронность достаточно сильно ускоряет первоначальное отображение.

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

предлагаю примерно следующий вариант решения
var Optimizer = function(ops){
  var scope = ops.scope ? ops.scope : window;
  scope[ops.name] = function(arg){
    if (scope[ops.name].once) return;
    scope[ops.name].once = true;
    var text = null;
    dax({url:ops.script, id:ops.script, destroy:true, async:false, callback: function(resp){
      text = resp.responseText;
    }})
    SRAX.evalScript(text);
  }
}
new Optimizer({scope:Ext, name:'NorthLayoutRegion', script:'/scripts/ext/separate/layoutregion.js'})
new Optimizer({scope:Ext, name:'ContentPanel', script:'/scripts/ext/separate/contentpanel.js'})
new Optimizer({scope:Ext.dd, name:'StatusProxy', script:'/scripts/ext/separate/statusproxy.js'})
new Optimizer({scope:Ext.dd, name:'DragSource', script:'/scripts/ext/separate/ddzone.js'})
new Optimizer({scope:Ext.dd, name:'DropTarget', script:'/scripts/ext/separate/ddzone.js'})


* This source code was highlighted with Source Code Highlighter.

это примеры из реального проекта, правда относительно давно писалось, во времена extjs v1.

Суть в следующем:
Optimizer — это так называемый proxy — создает заглушки классов, методов. Он знает в каком файле лежит нужный метод. При первом вызове метода вызывается его заглушка, которая догружает фал с асинхронном/синхронном режиме, выполняет загруженый скрипт (тут происходит перезапись заглушки на реальный метод, класс), выполняет повторно вызванный метод.
При повторных вызовах методов, классов — вызываются уже не заглушки, а реальные методы, классы.

P.S.: Код Optimizer примерный, чтобы понять принцип.
я а может багу нашел, тестовая страница отвечает обычно так
ClientSide is loaded
Counter is loaded
но иногда и так
ClientSide is loaded
ClientSide is loaded
ClientSide is loaded
ClientSide is loaded
Counter is loaded
это нормально?
да, с приходом аннотаций программировать стало гораздо приятнее, много черновой работы убирается. Мне раньше не очень нравился Spring, но когда узнал как работают аннотации в версии 2.5 — любовь на веки.

Вот примерчик моего рабочего кода
  @RequestMapping(value = "/compset_analysis", params = {"action=hotel-etalons"})
public ModelAndView getApprovedMarket(@RequestParam(required = false) String market, @Qualifier HotelEtalonsCompSetAnalysisView etalonsView){
...
}


* This source code was highlighted with Source Code Highlighter.


обратите внимание как передается параметр @Qualifier HotelEtalonsCompSetAnalysisView etalonsView

автору, спасибо.
идем дальше? сможете осветить тему про Lazy, @Transaction, OpenSessionInViewInterceptor, OpenSessionInViewFilter

ждемс, если можно с описанием параметров аннотаций
спасибо за статью, ждем статейку про Lazy, Transaction and Session и желательно на примере реализации с помощью Аннотаций :)
как всегда в лучших традициях — интересно и полезно. спасибо!
непонятно все же ваша цель, какой результат важнее? 1) эксперимент? 2) шоу? 3) результат работы?
если важен 1 или 2 тогда все понятно, если 3 — непонятно, у вас ограниченно время? прям такие сроки сжатые? вы уверены что при таком подходе получите максимальный выхлоп?
предлагаю еще добавить номинацию последний герой — тот кто дольше всех в последний день будет работать не выходя на воздух, не принимая пищу и не засыпая.

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

удачи вам и терпения друг к другу
точно, просто в глаза сразу бросилась «пулеметная лента», вот и отписал, а варианты не заметил :)
стоит код
var word_array = new Array(26);
word_array[0] = '_';
word_array[1] = 'a';

word_array[25] = 'y';
word_array[26] = 'z';

преобразовать к виду
var word_array = ['_', 'a', ..., 'y', 'z'];


ниже еще ответ
обрезало ответ, продолжаю —

а в conditional comments идет разделение с ЖС и без ЖС
если нету ЖС = мы не можем определить ОС, соответственно можем нарваться на Vista IE, поэтому если нет ЖС подключаем сразу стиль со стандартными background-image
> не, это понятно, я чуть другое спрашиваю — почему mhtml-background для ie подключать через js, а не через conditional comments для IE?

гляньте внимательнее, подключается через conditional comments
ИЕ останавливает рендеринг страницы (она как бы замерзает) пока ИЕ докачивает файл стилей (addon) с background-image если подключать через <link>, поэтому изначально мы подключаем динамически через скрипт — это устраняетcя замерзание, ну а если скрипты запрещены — тогда уже через <link>
да ну, просто плюсуют только те кто шарит :), реально народу понравилось, и уже активно юзают
вам еще плюс :)
по вашей инициативе уже доработано media, + сделаю копирование стилей в условных комментариях для ИЕ
думаю конкретно в генерации HTML кода на сервере нет ничего плохого, по сути это тот же XML, все зависит от выполняемой задачи

по сути необходимо разделить представление данных от самих данных

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

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность