[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Событийно-ориентированный движок.
redreem
Прелюдия (или ответ на вопрос: "Нафига козе баян?"):

1. полтора года пытался развивать свой движочек, 100 раз проводил рефакторинг и десятки раз полностью переписывал отдельные блоки - поднадоедает, - конца и края не видно, чем дальше в лес - тем больше помидоры.
2. на последних проектиках уже начал замечать, что все разрастается совершенно необоснованно:
- дублируется код;
- избыточность возможных вариантов построения логики контроллеров делает зависимым от настроения ее проработку, а в дальнейшем просто приходится вспоминать что же я там нагородил и как это работает;
- для небольших сайтов с каталожно-постовой основой (новости, статьи, блоги, коменты и прочее) - в общем-то все устраивает, но вот если что-то нестандартное - приходится либо пытаться сопрягать нестандартность с существующими модулями, либо вводить в движок новые структуры данных и контроллеров, а при том, что новые вещи приходится обвязывать как-то и со старыми наработками - все это превращается в те еще телодвижения;
3. конечно постепенно движочек принимает все более универсальную форму, но слишком уж чрезмерными усилиями.
4. ударила как-то некоторое время назад моча идея в голову реализовать некую идейку с событийно-ориентированной основой, вынашиваю я ее, вынашиваю, но все откладываю изз-а того, что понимаю: делать ее на моем движочке - АДЪ.
5. ну и вот, критическая масса свербения в одном месте набралась и я решил попытаться построить движочек на иной концепции, нежели мой, а именно - в основу модели взять линейный поток событий (именно линейный, а не ветвящийся).
6. к слову - особого опыта в ООП не имел до этого, в моем существующем движочке классы использовались в общем-то только для контроля пространства имен, а тут как бэ очевидно, что надо строить ОО-модель.

Предлюдия закончилась.

Суть:

1. Делаю первые наброски-наметки, прорабатываю модель.
2. Собираю потихоньку на каркасе типичные и нетипичные сценарии, смотрю насколько удобно использовать, рефакторю и перерабатываю модель.

Хочется:

1. Чтобы вы посмотрели код ООП, что получается, сторонним взглядом, пока модель еще не обросла большим количеством кода.
2. Попытались вникнуть в модель.
3. Указали на ошибки, недочеты в парадигме модели, неудобства какие-нибудь на ваш взгляд, концептуальные упущения.
4. Может это и велосипед или MVC или еще что-то, могущее вызывать у вас приступ негудувания, так или иначе - пишите все что думайте, за конструктив буду беспредельно благодарен smile.gif

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



Спустя 3 часа, 29 минут, 2 секунды (15.09.2012 - 18:20) redreem написал(а):
ну вот как всегда. как холиварить в зацените мой гавнокод, так 5 простыней накатают. а как поделу спрашивают - все пасс sad.gif

Спустя 42 минуты, 56 секунд (15.09.2012 - 19:03) johniek_comp написал(а):
ты пользовался когда-нибудь фримворками?

Спустя 2 минуты, 11 секунд (15.09.2012 - 19:05) redreem написал(а):
johniek_comp

к чему вопрос? smile.gif сводить тему к холивару желания не имею smile.gif я четко спросил что мне нужно smile.gif

Спустя 10 минут, 48 секунд (15.09.2012 - 19:16) johniek_comp написал(а):
redreem
здесь нечего оценивать...слишком мало всего. где роутинг настроить? где конфиги? где хелперы? ohmy.gif

Спустя 2 минуты, 39 секунд (15.09.2012 - 19:18) Guest написал(а):
UML диаграмму классов и временную в студию. Иначе понимать идею сложно до нельзя.

Спустя 12 секунд (15.09.2012 - 19:18) redreem написал(а):
johniek_comp

оценивать модель построения. формирование цепочки исполнения. это код логики, а не конфиги и хелперы.

Спустя 1 минута, 22 секунды (15.09.2012 - 19:20) redreem написал(а):
Guest

диаграмму еще не сделал. надо бы конечно.

Спустя 1 час, 45 минут, 54 секунды (15.09.2012 - 21:06) AlmazDelDiablo написал(а):
Растерялся. Код без комментариев — это плохо. Попытался понять, как прикрутить свой модуль — не понял.

Конфиги вроде как работают через класс E_Config_Class, но, насколько я понял, их все придется пихать в статический массив $data. Но, если у нас сайт большой, используется несколько десятков модулей и у каждого модуля своя сотня настроек, то у нас $data будет огромен и весь держаться в памяти постоянно, хотя на каждой странице нужно всего-то пару десятков элементов. Это не есть хорошо.

Не понял, как работает консолька и что она полезного выводит. Увидел много-много записей «pass method: prepare_after(Array) IN E_Compile_Tpl_Class», но то оно мне дает — не уловил :(

Дальше ковыряться лень было.

Спустя 7 минут, 6 секунд (15.09.2012 - 21:13) Shkiper написал(а):
Цитата
ну вот как всегда. как холиварить в зацените мой гавнокод, так 5 простыней накатают. а как поделу спрашивают - все пасс

"наглая" ложь. Это все не я. Надо писать говнявый код чтоб его коментили(пиши в ЛС научу его писать, за отдельную плату rolleyes.gif )

Спустя 55 минут, 24 секунды (15.09.2012 - 22:08) redreem написал(а):
AlmazDelDiablo

спс. код не коментил, так как наработка в общем-то вдух дневная, самому понятно, как говорится, и ладно. выкладывать не планировал, так конечно думаю откоментить надо бы. схемки-диаграмки щас вот дорисую только. как прикрутить свое событие - я вкратце описал в мануале в конце. насчет конфигов, как раз фишка в том, что конфиги и должны по сути дробиться на отдельные файлы согласно своим каким-то общим признакам. и подрубаться будут в каждом случае только те конфиги, от которых зависят дальнейшие события. поэтому конфиг сейчас и сделан как класс-событие, для примера. по сути можно сделать config_2, и указывать его при необходимости в списке пре-событий для нужного события. консолька показывает лог построения очереди. не более. по ней я отлаживал корректность построения. нужный порядок. pass prepare - это всего навсего отсутствие данного метода у события.

Спустя 1 минута, 40 секунд (15.09.2012 - 22:10) redreem написал(а):
Shkiper

да это местный тренд. твоя тема просто была из последних примеров smile.gif

Спустя 45 минут, 39 секунд (15.09.2012 - 22:56) Игорь_Vasinsky написал(а):
Свернутый текст
Свернутый текст
мож
пива?

Спустя 7 минут, 52 секунды (15.09.2012 - 23:03) redreem написал(а):
Игорь_Vasinsky

да я ща водки хряпну и пойду кирпичи получать от админов smile.gif

Спустя 47 минут, 16 секунд (15.09.2012 - 23:51) Guest написал(а):
Исходи в первую очередь от того, что классов может быть и 1000. Не так принципиальна их структура, сколько принцип горизонтального масштабирования. Навешивать ты можешь будешь бесконечно. Вот эту проблему и решай.

Спустя 6 минут, 45 секунд (15.09.2012 - 23:57) Игорь_Vasinsky написал(а):
laugh.gif приезжай на выходные) посидииииииииииииим!

http://www.youtube.com/watch?v=qks6aM8GCtA&feature=related

Спустя 5 минут, 56 секунд (16.09.2012 - 00:03) Игорь_Vasinsky написал(а):

Спустя 56 секунд (16.09.2012 - 00:04) redreem написал(а):
Guest

проблема в том, что я пока не вижу проблемы smile.gif она есть?

Спустя 40 секунд (16.09.2012 - 00:05) redreem написал(а):
Игорь_Vasinsky

эхх... надо-надо smile.gif

Спустя 3 минуты, 8 секунд (16.09.2012 - 00:08) Игорь_Vasinsky написал(а):
велком! в тот раз сорвалось, не удобно...

эх.. гуляй Россия, гуляй матушка!!!

Спустя 2 минуты, 7 секунд (16.09.2012 - 00:10) redreem написал(а):
так, уфа, хватит флеймить, серъезная тема тут понимаешь, а вы тут развели разложение общества на алколоиды! smile.gif

Спустя 4 минуты, 44 секунды (16.09.2012 - 00:15) Игорь_Vasinsky написал(а):
laugh.gif лан.. молча по пью...

Спустя 22 минуты, 13 секунд (16.09.2012 - 00:37) Invis1ble написал(а):
Посмотрел по диагонали код (сорри, нет времени особо разбираться) и у меня одна основная мысль - я бы если б начал писать велосипед, то делал бы его как минимум на 5.3

Спустя 2 минуты, 27 секунд (16.09.2012 - 00:40) redreem написал(а):
Invis1ble

ну вот у меня текущий хостинг - 5.2, и думаю достаточно таких... а вообще - что в 5.3 прям таки вышибает?

Спустя 2 минуты, 37 секунд (16.09.2012 - 00:42) Invis1ble написал(а):
redreem
ну 3 основных причины:
1. пространства имен
2. позднее связывание
3. замыкания

Спустя 3 минуты, 40 секунд (16.09.2012 - 00:46) redreem написал(а):
Invis1ble

гляну, спс.

Спустя 39 секунд (16.09.2012 - 00:47) Игорь_Vasinsky написал(а):
Свернутый текст
blink.gif да ну вас[more]... пойду от седа

Спустя 11 часов, 42 минуты, 21 секунда (16.09.2012 - 12:29) Guest написал(а):
AlmazDelDiablo
Цитата
Но, если у нас сайт большой, используется несколько десятков модулей и у каждого модуля своя сотня настроек


Если у модуля сотня настроек значит что то здесь не то с модулем, его дробить надо. А вообще массив с множеством настроек это нормально, YII тот же принцип применяет и ни чего в первых рядах и по производительности smile.gif

Спустя 5 минут, 5 секунд (16.09.2012 - 12:34) Guest написал(а):
Ну судя по диаграмме это всего лишь обычная модель FrontController->PageController->LayerDB. Ничего нового нет, так работает YII smile.gif

Спустя 4 минуты, 44 секунды (16.09.2012 - 12:39) Guest написал(а):
У Вас понятие event событие просто подменяет принятое в ООП паттерн Command или FrontController которые ведут обработку запроса на вычленение командных "слов" в запросе и соотеветственно запускают определённый код. Я так понимаю та же технология запускает PageController который в свою очередь использует отдельный (только в этом и различие от YII) объект для вывода страницы.
Хотя по диаграммам сложно понять что имелось ввиду. Это какой тип?
Хотелось бы увидеть на UML.

Спустя 35 минут, 26 секунд (16.09.2012 - 13:14) redreem написал(а):
Guest

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

насчет Yii незнаю, как-то к фреймворкам равнодушен. вообще сейчас только наметка каркаса, развитие именно событийных фишек пока в общем-то не отработано, надо навешивать соответствующий функционал. спасибо за анализ, карму правда гостю не плюсанешь smile.gif

Спустя 14 минут, 23 секунды (16.09.2012 - 13:29) Guest написал(а):
Посмотрите событийную систему у YII, очень хорошо реализована. Есть как внешние события например: предварительная обработка запроса, после обработки запроса, свои события: отсылка email, клик по кнопке такой то. Так и внутренние событийные схемы beforAction (перед действием), afteraction (после действия) ... - это на уровне контроллеров и на уровне слоя БД: beforSave, beforeFind, beforeUpdate с соотвествующими им противоположным событиям.

Спустя 17 минут, 5 секунд (16.09.2012 - 13:46) redreem написал(а):
посмотрел, да, концепция похожая. даже кое-что потырю оттуда видимо smile.gif

Спустя 4 часа, 52 минуты, 29 секунд (16.09.2012 - 18:38) bodja написал(а):
redreem
Ооооо....
Уууууу...
Такой холивар пропустил biggrin.gif biggrin.gif biggrin.gif
Не велик хороший, правда не ООП это вовсе, так... просто классы,и работают как статические.
Но пространства имен и все такое уже радуют глаз.
Ну событийность в ПХП поборол... можно сказать,
осталось сделать еще две вещи,научить обьекты жить во времени и научить ПХП относиться к НТМЛ как к DOM. biggrin.gif
И тогда можно че нибудь писать на ООП на ПХП. laugh.gif

Ну а если серьезно, то зачем тебе это все ?
Событийность нужна для динамики,а динамику на такой схеме не построеш,ты же сам знаеш.
Ну я понимаю, прогер допустим незнает клиента , и весь функционал тащит на сервер, потому что по другому просто не представляет как можно зделать... А ты? Ты же хорошо знаеш JS...
Что тебе мешает работать, что по событийной ,что по обьектной модели, что с шаблоном, что без него и все напрямую не делая круги через сервак?
Тем более что ООП ты сможеш в полный рост поиметь или на клиенте или на ПП, если так актуально ООП,вот и потренируешся.

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

Извини за холивар ,и если че лишнее ляпнул. rolleyes.gif

Спустя 10 минут, 59 секунд (16.09.2012 - 18:49) redreem написал(а):
bodja

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

Спустя 4 минуты, 56 секунд (16.09.2012 - 18:54) redreem написал(а):
и кстати сильно подумывал сразу делать серверную часть на ноде, но пока не готов морально ворошить его smile.gif отработаю упрощенную модель на пхп, если понравится, то естественно перенесу все на ноду, со всеми вытекающими.

Спустя 10 минут, 53 секунды (16.09.2012 - 19:05) bodja написал(а):
redreem

Хорошо,тогда скажи чем запрос к базе радикально отличается от запроса к серверу,чем ответ базы радикально отличается от ответа сервера, это если в случае если нам нужны данные? wink.gif

Если нам нужен шаблон,может ли клиент с ним справиться самостоятельно, или нам нужно обязательно участие серверной части?

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

Спустя 25 минут, 59 секунд (16.09.2012 - 19:31) redreem написал(а):
bodja

насчет базы - ничем. насчет представлений - догадываюсь что ты фанат динамической генерации представления, но я - пока нет smile.gif динамическая генерация, как развитие уже работающего проекта - может иметь место, но изначально тратить время на эту часть я смысла не вижу большого.

Спустя 1 минута, 54 секунды (16.09.2012 - 19:33) bodja написал(а):
redreem
Неважен какой будет серверный язык и какой будет клиентским,все сводится к тормознутым запросам-ответам и их разборам.
Важно то,точнее беда в том,что веб-программисты очень часто делают переоценку возможностей в сторону серверной части, а все что нужно ,так это дать серверному и клиентскому языку то, с чем они лучше всего справляются,без избыточных перекосов.

Спустя 5 минут, 30 секунд (16.09.2012 - 19:38) Guest написал(а):
Почему бы генерацию шаблона не вывести на клиент получая только данные от сервера. Это в корне меняет архитектуру сервера исключая из вариантов архитектуру MVC как у YII. Мало того вся событийная схема остаётся на клиенте и управляет сервером, то есть сервер является фактически валидатором и хранилищем данных, с соответствующей функцией безопасности.

Спустя 15 секунд (16.09.2012 - 19:39) redreem написал(а):
bodja

я (думаю ты знаешь) давненько и плотненько копал уже по поводу обработки дома JS-ом. и пришел к выводу, что пока браузеры не перепишут ядра JS, увеличив его производительность хотябы раз в 5 - смысла вешать на JS глобальные вещи в плане генерации страниц я не вижу. например в Mail Group последние года увлеклись этими вещами, так их сайты бесят! Заходишь в почту и ждешь, пока они там че-то проинициализируют и страница "разморозится". Представление должно "возникать" и "реагировать" моментально, а не после нескольких секунд вычислений. в этом плане я пока за чистый HTML, а JS - лишь для тех случаев, где HTMLа не хватает для функциональности.

Спустя 4 минуты, 9 секунд (16.09.2012 - 19:43) Guest написал(а):
Цитата
я (думаю ты знаешь) давненько и плотненько копал уже по поводу обработки дома JS-ом. и пришел к выводу, что пока браузеры не перепишут ядра JS, увеличив его производительность хотябы раз в 5 - смысла вешать на JS глобальные вещи в плане генерации страниц я не вижу

Неа smile.gif это и сейчас очень быстро работает, напорядок быстрее чем Вы думаете.
А вот ждать пока они перепишут интерпритатор этого ждать придётся долго, потому как они его уже пишут с какого года, напомните ка smile.gif
А скорость работы при грамотном построении высока на клиенте, поверьте smile.gif

Спустя 24 секунды (16.09.2012 - 19:43) bodja написал(а):
Цитата
фанат динамической генерации представления

Ну можеш меня считать фаном, просто я начинал еще с прикладных программ и к динамике привык,окошки ,формочки ,картинки,таблицы , кнопочки,меню.
И меня всегда в кумар бросала тупость веб-страниц,заходиш - красотища(имею диз бывает красивый) ,а функционал... все стоит колом sad.gif ,а ведь можно делать динамику,если было нельзя,еще другой вопрос.

ЗЫ Ладно,иду домой ,надеюсь мой комп малые не угрохали laugh.gif

Спустя 1 минута, 25 секунд (16.09.2012 - 19:45) Guest написал(а):
Цитата
Заходишь в почту и ждешь, пока они там че-то проинициализируют и страница "разморозится"

Это решается банальным асинхронным запросом, конечно сложнее в реализации с шаблоном, но всё же. Они включают синхронные запросы ajax после чего вешается страница.

Спустя 1 минута, 48 секунд (16.09.2012 - 19:46) Guest написал(а):
Кстати для этого хорошие вещи попридумывали наподобие очередей.
Не хватает конечно нитей в JS, было бы довольно не плохо.

Спустя 1 минута, 30 секунд (16.09.2012 - 19:48) Guest написал(а):
У меня и движок на клиенте уже готов для таких вещей smile.gif
Конечно с YII плохо совмещать его.

Спустя 51 секунда (16.09.2012 - 19:49) redreem написал(а):
Цитата
сейчас очень быстро работает, напорядок быстрее чем Вы думаете.


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

Спустя 3 минуты, 41 секунда (16.09.2012 - 19:52) Guest написал(а):
Это да, своя страна у них, и всё равно у них красиво это работает через ActiveX, при чём очень удачно с апплетами JAVA сочетается, что даёт ещё большую производительность. Правда апплеты во всех работают но ActiveX даёт API к JS которого нет в других браузерах.

Спустя 1 минута, 34 секунды (16.09.2012 - 19:54) sharki написал(а):


Почитал тему, не все конечно, но суть понял, ты хочешь события, и сделать так чтобы всё было шустро, и везде был отклик. На пыхе сложновато как не крути всё это реализовать. Ты используешь паттерн наблюдатель?

Кстати я на node.js такой фрейм разработал, полностью событийный, тоже люблю когда все контролируется событиями. Если интересно https://github.com/gustoase/gustoNode

Спустя 41 секунда (16.09.2012 - 19:55) redreem написал(а):
ну естественно. только микрософту пора подумать о том, что вселенная больше чем их штаб-квартира.

Спустя 1 минута, 43 секунды (16.09.2012 - 19:56) redreem написал(а):
sharki

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

Спустя 31 секунда (16.09.2012 - 19:57) sharki написал(а):
redreem
Кстати тебе бы хорошо подошел другой шаблон MVVM называется

Спустя 2 минуты, 27 секунд (16.09.2012 - 19:59) sharki написал(а):
Хотя не, MVC..

Спустя 13 минут, 53 секунды (16.09.2012 - 20:13) Guest написал(а):
Цитата
Хотя не, MVC..

Как сказать, как сказать ...
Для каждой задачи свой вариант, но для чистой событийной нет смысла городить огород из MVC, хватает FronController->PageController->(Mapper)->LayerDB->View

Спустя 15 часов, 14 минут, 49 секунд (17.09.2012 - 11:28) bodja написал(а):
Guest
Цитата
Почему бы генерацию шаблона не вывести на клиент получая только данные от сервера. Это в корне меняет архитектуру сервера исключая из вариантов архитектуру MVC как у YII. Мало того вся событийная схема остаётся на клиенте и управляет сервером, то есть сервер является фактически валидатором и хранилищем данных, с соответствующей функцией безопасности.

Вот собственно туже мысль я и хотел донести.Тем более ,что на практике это дейсвительно работало.

redreem
Цитата
я (думаю ты знаешь) давненько и плотненько копал уже по поводу обработки дома JS-ом. и пришел к выводу, что пока браузеры не перепишут ядра JS, увеличив его производительность хотябы раз в 5 - смысла вешать на JS глобальные вещи в плане генерации страниц я не вижу.

Ну в корне не согласен,анимация ,да туповато -медленно,хотя с простыми вещами справляется.Но динамика - это не только анимация.Возьми обычные формы,таблицы,окна и т.д.
Если нужна афигеть графика и анимация,тут понятно что выбор только за флешем,кстати комбинировать его с JS не является проблемой.Все достаточно симпотно получалось.
Насчет тупости страниц,ну не трудно сравнить сколько нужно аяксу данных и сколько на перезагрузку всей страницы.Кроме того JS кешируется браузем,если его прописать в ХТМЛ ,
если будем подгружать в динамике,тогда да,будем каждый раз грузить.
На другие страницы не нужно смотреть, поставь один лайк социалки и ты увидиш сколько он тебе загрузит скриптов wink.gif ,там ноги растут немного от другого.

Спустя 52 минуты, 33 секунды (17.09.2012 - 12:21) redreem написал(а):
все это красиво в теории. на практике возникает куча мелочей, отравляющих всю идею.

Спустя 1 час, 13 минут, 38 секунд (17.09.2012 - 13:34) bodja написал(а):
redreem
Ну хорошо,дабы небыло обвинений в голословности, давай нехитрый нтмл шаблончик,
хочеш я его даже программно отверстаю или подгружу так,поставлю статью и повешу на нее коменты по аяксу.Формочки,галерейка,окошки,менюшки - пожайлуста,можем уже держать или подгружать.В принципе неважно какая там динамика,можно какую то другую задачу придумать в рамках возможностей JS.
Дело в том ,что я медленно но уверенно сьезжаю с JS в сторону AS, мне немного тесно в нем.
Поэтому ,мне как бы совсем не жалко делиться своими секретами biggrin.gif ,если хочеш можем собрать двиг под какой то круг задач или просто сделать библиотеку классов ,что бы можно было комбинировать под различный функционал.Единственная условие - это все будет стоять на ООП и в рамках этой парадигмы.То есть "выносов" под другие шаблоны-паттерны-архитектуры программирования не будет.

Спустя 32 минуты, 36 секунд (17.09.2012 - 14:07) redreem написал(а):
bodja

вот смотри, один из неприятных моментов: сейчас цикл производства представления состоит из:
1. эскиза
2. верстки макета
3. внедрения макета в двиг.

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

что будет представлять собой 3-й этап в твоем случае? такое же расчленение и сбор только на JS? и все? если да, то какой выйгрышь в производительности? эти куски так же будут тянуться с сервака. причем на серваке, на этапе генерации страницы задействованы данные, которые и линкуются в шаблон. у тебя получается клиенту придут отдельно данные, отдельно шаблон и все это собертся уже в браузере. выгода только в разгрузке сервака относительно замены шаблонов данными. и все. эта выгода в контексте создаваемых сложностей и неудобств - мала. простой пример - какойнибудь экзотический браузер или смартфон, где js не отработает просто напросто - и клиент все, не видит страницу. или пример с поисковиками - в плане семантического анализа страницы поисковиком - что будет? скорее всего хаос.

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

Спустя 3 часа, 41 минута, 15 секунд (17.09.2012 - 17:48) bodja написал(а):
redreem

Цитата
и вообще мы в теме скатились до обсуждения совсем других вещей

Мы не скатились ,а подошли. biggrin.gif
Скажи ,у программиста прикладныйх программ или флеш девелопера есть верстальщик?
Нет,а почему? Потому что в контексте ООП он выпадает полностью,так как DOM элемент для ООП является обьектом отображения,а не просто строкой или чем то другим сбоку.
В ПП также заместь элементов есть компоненты GUI ,в флеш есть DisplayObject пакета flash.display, но сам принцип работы с ними остается тот же самый - это все обьекты.
У тебя есть выбор, писать по новому (хотя это совсем не новое,просто в ПХП недавно зарисовались некоторые возможности), но не тащить за собой старое, или оставаться там же.
Если ты позиционируеш свою работу в сторону ООП,тогда тебе нужно перейти на это полностью,несмотря на все трудности, и совершенно изменить подход, просто натягиванием через классы традиционных подходов ,которые уже достаточно жестко устоялись - ты ничего не добьешся.
Или лучше сидеть и писать как самому удобно и не впихивать невпихуемое laugh.gif

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

Ок ,я надеюсь мы еще похоливарим по новому движку biggrin.gif

Спустя 32 минуты, 50 секунд (17.09.2012 - 18:21) redreem написал(а):
в 99% у программист прикладных программ просто ставит объекты в визуальном редакторе. какой смысл притягивать за уши технологию построения деск-топ программ, если среда и условия совершенно разные? только потому что так привык? не понял насчет
Цитата
Если ты позиционируеш свою работу в сторону ООП
- это всего лишь инструмент. не понимаю как можно прям так безапелляционно говорить. в двиге могут быть и ООП и процедурно-функциональные куски. все зависит от целесообразности и контекста.

Спустя 29 минут, 14 секунд (17.09.2012 - 18:50) bodja написал(а):
Цитата
в 99% у программист прикладных программ просто ставит объекты в визуальном редакторе. какой смысл притягивать за уши технологию построения деск-топ программ


Скажу более 99% флеш прогеров тоже так делают biggrin.gif ,более того такой же процент ориентируется на событийную модель biggrin.gif .Более того в пакете VStudio была среда называлась WebDev насколько помню,где так же само раставлялись хтмл елементы и строились ASP страницы. biggrin.gif Это еще было бог знает когда.
Еще есть куча других редакторов ,где можно тоже раставлять элементы ,что это меняет?

Я еще раз повторюсь,лучше дать языку ту задачу,с которой он лучше может справиться,это лично мое ИМХО ,если мы хотим получить с этого максимальный эффект.Тащить события в ПХП для управления елементами ,с которыми он не может толком справиться я не вижу никакого смысла.А в целом решать конечно тебе, ты позже к этому сам прийдеш, мне доказывать эффективность здесь не нужно.

Спустя 8 минут, 39 секунд (17.09.2012 - 18:59) redreem написал(а):
Цитата
Тащить события в ПХП для управления елементами ,с которыми он не может толком справиться я не вижу никакого смысла


а что я в него тащу? smile.gif шаблонизацию страниц? так это не я smile.gif до меня уже было притащено. собственно php для этого вообще и придумывался изначально smile.gif

Спустя 15 минут, 7 секунд (17.09.2012 - 19:14) bodja написал(а):
Ну вот сделали новый круг. biggrin.gif
Ладно, давай дружить, а то разговор действительно ушел в какой то тупик.
Пусть ПХП остается простым и хорошим шаблонизатором, и не будем друг другу выносить мозг. rolleyes.gif

Спустя 4 часа, 28 минут (17.09.2012 - 23:42) Guest написал(а):
Цитата
что будет представлять собой 3-й этап в твоем случае? такое же расчленение и сбор только на JS? и все? если да, то какой выйгрышь в производительности? эти куски так же будут тянуться с сервака. причем на серваке, на этапе генерации страницы задействованы данные, которые и линкуются в шаблон. у тебя получается клиенту придут отдельно данные, отдельно шаблон и все это собертся уже в браузере.

Да, да и ещё раз да. Это есть увеличение производительности отклика за счёт уже подгруженного шаблона. Что это даёт - кэширование шаблона на стороне клиента! без подгрузки нового html. При последующих запросах подгружаются только пакеты данных и вставляются в кэшированный html шаблон, который хранится в памяти компьютера самим интерпретатором JS. То есть позже шаблон уже не подтягивается с сервера. Мало того подгрузка данных на клиенте может легко создаваться в виде отложенной, наподобие запросов к БД отложенных, что опять же увеличивает производительность. Эти плючы уже давно своё место нашли, проблема в этом только одна SEO и индексация поисковиками, вот здесь да проблема.

Спустя 3 минуты, 23 секунды (17.09.2012 - 23:45) Guest написал(а):
Это так же как со Smarty но на стороне клиента, что в разы быстрее и удобнее для конечного пользователя.

Спустя 3 часа, 36 минут, 1 секунда (18.09.2012 - 03:21) Invis1ble написал(а):
Цитата
проблема в этом только одна SEO и индексация поисковиками, вот здесь да проблема.

так она решается вроде как отдачей поисковикам ужЕ скомпилированного html. Все гораздо банальней, как мне кажется, - недостаток финансирования для подобных фишек.

Спустя 4 часа, 37 минут, 5 секунд (18.09.2012 - 07:58) Guest написал(а):
Цитата
так она решается вроде как отдачей поисковикам ужЕ скомпилированного html.

Ну и это она из дополнительных нагрузок smile.gif

Спустя 5 минут, 12 секунд (18.09.2012 - 08:04) Guest написал(а):
Цитата
Все гораздо банальней, как мне кажется, - недостаток финансирования для подобных фишек.

Нет, всё таки SEO. Сложно индексировать, только гугл додумался в ботах вставить интерпретатор JS c ajax. Все остальные на тупую рубят только загруженный html.

Спустя 1 минута (18.09.2012 - 08:05) Guest написал(а):
Цитата
недостаток финансирования для подобных фишек.

Ерунда, раз сделал и поддерживай как и всё.

Спустя 41 минута, 42 секунды (18.09.2012 - 08:46) redreem написал(а):
кеширование самого контента на стороне клиента - пункт конечно весомый, только в большинстве случаев сами html-шаблоны весят не много, большая часть - это как раз прочие данные.

Спустя 12 минут, 5 секунд (18.09.2012 - 08:58) Invis1ble написал(а):
Цитата
Сложно индексировать

что сложного в индексации готового html-документа?
Цитата
Ерунда, раз сделал и поддерживай как и всё.

для этого нужно сделать сначала. А идея делать больше работы за те же деньги врядли кому-то понравится.

Спустя 5 часов, 26 минут, 53 секунды (18.09.2012 - 14:25) bodja написал(а):
Я думаю SEO - это отдельная тема,но в целом могу сказать следующее.
Действительно поисковики не индексируют те процессы которые происходят в JS.
Но мы говорили по шаблон, а индексируют ли поисковики шаблон? biggrin.gif
Им нужен контент. А что мешает нам давать им контент? Да ничего.
Делаем так.

Цитата
<html>
<head>
<title>Страница</title>
<script src="template.js"></script>
<script src="power.js"></script>
</head>
<body>
<h1>Страница</h1>
<a href="другая страница">другая страница</a>
Здесь контент
</body>
</html>

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

Теперь про шаблон, почему программный и почему на JS?
Понятно что сейчас все пишут (или верстают) на HTML и при этом эффективность управления им минимальна- это очевидно и даже не обсуждается.
А что мешает шаблон собирать из классов?
Думаю мешает только крутизна собственных яиц. biggrin.gif
redreem же собрал управление шаблоном через классы на сервере.
Что мешает сделать тоже самое на клиенте иметь сразу непосредственное управление ,полный контроль и сборку шаблона на месте?

Простой пример.
Имеем главный класс Page реализующий основной каркас страницы в DOM и который наследует обьекты классов Header, Menu,Content ,Footer реализующие собственные каркасы в DOM и функционал.
Класс Header может наследовать классы лого или банер в шапке или флеш-ролик или слайдер или все сразу и включать\отключать эти обьекты отображения когда это необходимо.
Тоже самое с классом Menu,он может наследовать кнопки ,выезжающие списки и аякс для передачи контента в обьект класса Content.
Здесь мы можем каждой кнопке присвоить свой аякс и тогда переключаясь не дождавшись загрузки контент будет дозагружен в фоне и вернувшись мы получим выдачу моментально,так как обьекты отображения удаляются из списка отображения но остаются жить дальше,поэтому могут быть добавлены с уже содержащимся в ним контентом.
Тоже самое можно сказать и про класс Content который может наследовать
обьекты Article ,Comment,Paginator, AddPost и т.д.
Тоесть выстраивая классы в древовидную иерархию путем наследования , мы можем получить практически любую комбинацию, по принципу точно такому же
как выстраиваются элементы в DOM.
Все что я выше написал является обьектной моделью, тоесть обьекты отображения находятся внизу иерархии классов и их события там же.
Можно строить событийную модель , где обьекты отображения находятся на вершине иерархии и их события управляют другими обьектами. Здесь пути ООПистов расходятся и каждый свой путь выбирает сам.
Могу сказать только одно ,в событийной модели все очень прозрачно и понятно касамое событий и управления другими обьектами, но у этого кода плохая маштабируемость и динамика,то есть на этом подходе универсального солдата кода не построиш , но очень легко заточить под конкретную задачу.
В обьектной все наоборот, отличная маштабируемость,динамика,компактный код , но универсальность заставляет тщательно продумывать абстракцию классов.События внизу иерархии классов не будет давать спокойно жить,
всегда нужно будет думать как мы будем связывать обьекты.

ЗЫ Ну вот ,меня очередной раз "понесло" ,начал с простого примера - закончил философией на пять страниц laugh.gif

Спустя 20 часов, 16 минут, 38 секунд (19.09.2012 - 10:42) redreem написал(а):
UPD: полностью переписал ядро, большая часть информации из топика уже неактуальна. выкладывать наверно не буду уже. кому интересно поковырять и обсудить - могу прислать на почту текущую сборку.

Спустя 9 часов, 30 минут, 12 секунд (19.09.2012 - 20:12) sharki написал(а):
а тесты пишешь под свой движок, и новые классы?

Спустя 12 минут, 30 секунд (19.09.2012 - 20:25) redreem написал(а):
sharki

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

Спустя 21 минута, 53 секунды (19.09.2012 - 20:46) sharki написал(а):
ну вот, пишешь код, пиши тесты, иначе ты забудешь, или хер положишь и все насмарку, код не бывает идеальным IMHO

Спустя 4 минуты, 17 секунд (19.09.2012 - 20:51) redreem написал(а):
sharki

Цитата
код не бывает идеальным


это да.

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

Спустя 24 минуты, 52 секунды (19.09.2012 - 21:16) sharki написал(а):
юнит тесты, функциональные

Спустя 9 минут, 21 секунда (19.09.2012 - 21:25) redreem написал(а):
sharki

все равно не понятно. приведи пару примеров.

Спустя 11 часов, 42 минуты, 42 секунды (20.09.2012 - 09:08) TMake написал(а):
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.