Банально, но ;) пишу CMF и предлагаю познакомиться и ищу единомышленников для дальшейшей разработки.

d1gi

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

2) тут надо по буквоедничать: "разрабатывается из рассчета на низкое потребления ресурсов сервера" не одно и тоже, что заявка "всё быстрое и легкое". т.е. я пометил, что имеется именно рассчет на то чтобы движок был более менее умеренный по ресурасам. на данный момент даже каталог потребляет меньше памяти в 4 раза, чем демо блога на симфони, для меня это показатель важный :) тем более, что скоро начну активно вкручивать всестороннее кеширование.

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

4) к обсуждению проекта готов на все 100% :) про тесты я пояснил, других конструктивных вопросов небыло, были обсиралки аля "писать свою цмс это утопия"...


в данный момент архитектура системы важнее кода, по этмоу лучше обсудить именно архитектуру, а потому уже отполировать код до совершенства :)
 

Фанат

oncle terrible
Команда форума
Пока, из того что я увидел - понравилась функция quote в драйвере БД.
Хотя, конечно, плейсхолдеры были бы лучше.
В любом случае, применяется она почему-то очень редко и бессистемно.

Но отсуствие функций-хелперов, СРАЗУ возвращающих требуемый результат, просто убивает.
То есть, снова в коде мы видим стада унылых $sql = ;$result =;while ($row = ...
Неужели не напрягает?
Неужели ни разу не возникло желание переписать код с 4 строчек
PHP:
			$result = $this->DB->query($sql);
			$row = $result->fetchObject();
			$this->output_data['album']['title'] = $row->title;
			$this->output_data['album']['descr'] = $row->descr;
на одну
PHP:
			$this->output_data['album'] = $this->DB->getRow($sql);
?

Откуда вообще такая тяга к получению недообъектов из бд?
чтобы потом писать бессмысленные строки вида
PHP:
					'descr' => $row->descr,
					'create_datetime' => $row->create_datetime,
которые попросту не были бы нужны, если бы мы сразу запрашивали массив?

Вот лично я бы работать над этим проектом не стал.
просто из-за чудовищного количества однообразного повторяющегося кода.
почему нельзя сделать функцию createAlbum() в одну строчку, а не в 10 - для меня загадка.
почему надо снова дублировать все тот же унылый код в функции updateAlbum() - опять загадка.

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

Фанат

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

d1gi

Новичок
1) на самом деле quote это обычный метод PDO, а в Simple драйверах, просто его эмуляция... сам я юзаю только PDO.

2) плейсхолдеры можно соврешенно спокойно юзать т.к. объект $this->DB по умолчанию является PDO.

3) конструкцию вида $this->DB->getRow($sql); которая будет возвращать массив, действительно удобно будет юзать в некоторых случаях, благодарю за подсказку :)

4) методы типа createAlbum() действительно можно сделать намного короче, но мне важнее также и читаемость кода, по этому мне больше нравится сначала выполнить $title = $this->DB->quote($pd['title']); , а затем $title применить в формировании запроса... в прицнипе после того как система будет уже отлаженно работать, можно будет пройтись по коду и сделать его короче, но на мой взгляд он немного будет менее читаемым...

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

6) я думаю всёже кеширование экономит... т.к. для сборки страницы надо и скриптов больше выполнить и больший объём данных обработать, а если данные берутся из кеша, то память используется только на результат взятый из кеша. я говорю толкьо про потребление самим РНР. разумеется сами данные кеша едят память, тем более в случае мемкеша.


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

ЗЫ: развернутые запросы писать мне не лень т.к. юзаю шаблоны кода в редакторе :)) пара кнопок и у меня болванка $sql = ;$result =;while ($row = ... в которую остаётся только дописать таблицы, поля и вперед :)
 

Adelf

Administrator
Команда форума
Если можно, пару копеек от человека, который не смотрел код.

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

"развернутые запросы писать мне не лень" Это примерно тоже самое, что и копипаст. Ведь совсем не лень сделать Ctrl-C, Ctrl-V! Емкие конструкции чаще делают код читабельнее, чем наоборот.

После комментов Фаната код смотреть не особо хочется :)
 

d1gi

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

С.

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

Фанат

oncle terrible
Команда форума
Если речь об этом, http://smart-core.org/wiki/Архитектура
то "архитектура" нормальная, но банальная.
по сути, это архитектура шаблонизатора, но никак не проекта в целом.

больше ничего об "архитектуре" навскидку узнать не удаётся. Прочитывать всю документацию желания особого нет, тем более, что сам автор делиться какой-либо информацией желания не изъявил.

Хотя лично мне было бы интересно узнать, в каком порядке выполняются все эти модули.
Если в порядке, указанном в шаблоне, что что происходит, если при формировании контента случилась фатальная (но перехватываемая) ошибка, типа отсутствующего подключения к БД
 

weregod

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

d1gi

Новичок
Описание концепции архитектуры выложил в вики, вот по этому адресу:
http://smart-core.org/wiki/Основы_архитектуры

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

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

d1gi

Новичок
По замечаниям с форумов проведен некоторый рефакторинг кода, теперь стало больше «магии» ;) имхо стало красивее, да и на скорость не повлияло. Также из новых функций добавлена возможность кеширования нод, как фрагменты html кода. Пока настройка кеширования нод выполняется ручками через свойства ноды в формате yaml, а также надо включить флаг в файле _temporary.php, дальше будет реализована более првильная админка ;)

Провел первые тесты на выносливость и скорость. Пока тестировал только apache bench с параметрами -c500 -t60 -k -H "Accept-Encoding: gzip", а также -с1. При одном юзере при включенном кеше страниц для гостей показатель очень вкусный, обычно страница отдаётся примерно за 0.002 сек т.е. быстренько выпуливается из кеша :) а без кеша страницы отдаются в среднем за 0.03-0.07 сек, что в прицнипе хорошо.

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

На всякий случай еще раз напомню ссылку на страничку проекта: http://smart-core.org/ оттуда же можно и скачать и выйти на вики и форум.
 

AmdY

Пью пиво
Команда форума
сделай демку, я пытался прошлую версию поставить, после десяти минут забил и забыл.
 

Ragazzo

TDD interested
AmdY
так кстати всегда, если за 5-10 минут не получается развернуть какой-либо очередной супер уникальный фрейм, то проще забить (многие Yii,ZF разворачиваются быстро, да)
 

d1gi

Новичок
да, небольшую демку поднял тут: http://digi.tw1.ru/ :)

инструкция по установке описана тут: https://github.com/d1gi/Smart-Core-CMF/blob/master/docs/install.txt

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

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

AmdY

Пью пиво
Команда форума
d1gi
а как залогиниться в админку? логично это бы было писать прямо в форме логина на демке, помнится я в вики находил с трудом, но больше искать не хочется.
 

wadim

Новичок
что то не заводиться(дохнет в рекурсии), какие модули нужны для работы?

p.s. большое фи за использование eval
 
Сверху