LINUX.ORG.RU

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


0

2

Предлагаю познакомиться с текущими наработками системы. Целью написания данного поста является поиск заинтересованных лиц и единомышленников с которыми представится возможность вместе заниматься дальнейшей разработкой данной системы :) Ниже расписаны некоторые моменты, конечно это далеко не всё, по этому предлагаю задавать вопросы, буду стараться на все достаточно подробно ответить, хотя некоторые вещи в какой-то степени расписаны в вики http://smart-core.org/wiki/.

Предназначение движка.

- Создание веб-сайтов различной сложности и направленности, например: блоги, новостные сайты, интернет-магазины, просто визитки и т.д. :) - Сайты созданные на движке обладают лаконичным и удобным интерфейсом управления т.е. их сайты можно смело и спокойно передавать клиенту, который не является профессионалом в ИТ :) - В будущем система будет включать возможности для распределённых проектов.

Преимущества.

- Движок разрабатывается из рассчета на низкое потребления ресурсов сервера, сейчас можно оценить потребление памяти и скорость выполнения скриптов. - Достаточно лёгкое написание модулей. - Также достаточно лёгкое внедрение тем оформления. - Использование современных технологий, хотя пока и поддерживается PHP линейки 5.2, но в будущем будет только 5.3+. Также планируется внедрение поддержки PostgreSQL, SQLite, MongoDB, Memcache, Redis и т.д.

Текущий статус.

На данные момент уже заложены в архитектуру системы и реализованы следующие вещи: - Система шаблонизации. - Управление базовыми сущностями системы: папки, ноды, контейнеры и т.д. - Мультисайтовость — возможность на одной инсталляции системы обеспечить работу нескольких независимых сайтов. - Концептуальные наработки по фонт-енд админке. - Кэширование страниц целиком для гостей. - Система прав доступа для папок и нод. - Подсистема почтовых рассылок.. - Система запуска задач по расписанию. - Некоторые базовые функциональные модули: авторизации и регистрации юзеров, текстовын блоки, простая фотогалерея, новости и каталог на компоненте «юникат», веб-формы... - Особая особенность в движке, это компонент «юникат», весьма гибкая и мощная система управления каталогизированных данных. Юникат в целом уже весьма рабочий, но еще в разработке и требует доработки для работы с некоторыми типами данных и внедрения кеширования. - Возможность применение единой базы пользователей для разных сайтов, в том числе расположенных на разных серверах.

Для коллективной разработки подняты вики, форум и планировщик задач (так же изместный, как баг трекер), основной репозиторий Git насположен на http://sourceforge.net/projects/smart-core-cmf/.

Планы на развитие.

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

Кому проект скорее всего будет НЕ интересен ;)

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

Где взять

Скачать архив с демо-версией можно отсюда https://sourceforge.net/projects/smart-core-cmf/files/, здесь архив подготовленный для простого разворачивания на хосте, включающий все таблицы и демо-данные для 2-х сайтов привязанным к доменам loc и loc2.

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


Кошмар

Почему config.ini, а не config.php как везде, да и к тому же с windows-like путями?
Почему эта CMF прибита (по видимому намертво) к Zend Framework?
Почему используются jquery (двух версий), prototype (и scriptaculous) одновременно? Больше ведь не значит лучше.
Почему мне так и не удалось запустить index.php хотя я даже создал вручную базу данных аж из 116 таблиц, выполнив инструкции из 2011-12-20-sc_base.sql ? Обещанных двух демо-сайтов также не получилось найти.
Но по видимому я все-таки приобщился к чему-то , поскольку папка system (собственно код) занимает аж 1.4 Мб

anonymous
()
Ответ на: Кошмар от anonymous

1) можете переименовать config.ini в config.php, только поправьте название файла в index.php, а вообще комментрии надо почитать в config.example.ini

2) win пути допустимы к использованию, потому что РНР бывает не только пол линух :)

3) на http://smart-core.org/wiki/ написано, что «От ZendFramework используютя только некоторые классы, например Yaml, Tag, OpenId... » или вопрос про ZendFramework имел какой-то другой смысл?

4) про JS скрипты долго рассказывать, по позже в вики опишу как-нить как устроена библиотека скриптов.

5) расскажите как именно вам не удалось запустить проект? имя домена какое?

6) обещанные 2 демосайта подвязаны к доменам http://loc/ и http://loc2/, если у вас другие то пропишите в таблице engine_sites_domains

ЗЫ: в архиве была ошибочка ;) там каталоги и новости ломились в другую бд, сейчас архив обновил.

ЗЫЫ: смотреть надо не на то какие либы используются, а на архитектуру проекта, т.е. концепцию «папок», «нод», «модулей» и «контейнеров».

digi
() автор топика
Ответ на: комментарий от digi

Во-первых не соглашусь с допустимостью win-путей в конфигурации по умолчанию, поскольку согласно этой статистике 88 процентов всех php-сайтов работает работает на linux.

Во-вторых, процесс установки слишком сложный. Надо ковырять конфиг-файл, но непонятно, какие параметры обязательно изменять, а какие нет. Нет графического инсталлятора. И какого я должен ковыряться в базе данных? Почему просто не работает http://localhost/smartengine/loc?

anonymous
()
Ответ на: комментарий от anonymous

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

CMF != CMS. Фреймворк — не готовый продукт, а средство написания продуктов.

...

По сабжу же, мне пока мой http://bors.balancer.ru/ дороже ;)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

1) укажите где именно win пути по умолчанию? т.е. не закомментированные и не в example файле. я поправлю, чтобы людей не смущать.

2) графический инсталлятор есть, он в гите, но я пока предлагаю юзать именно готовый архивчик с демо данными... с инсталлером есть нюансы.

3) файл config.example.ini содержит комментарии, по ним можно разобраться, также пара слов есть в http://smart-core.org/wiki/Конфигурирование

4) в http://localhost/smartengine/loc/ заработает, если вы пропишите в конфиге http_root = /smartengine/loc/

digi
() автор топика
Ответ на: комментарий от KRoN73

И тем не менее продукт топикстартера не готов даже для оценки.
Ни как cms (index.php не работает, install.php отсутствует).
Ни как cmf (нету папки с demo-приложениями, в документации описано все что угодно, но нет ничего похожего на scaffolding, как yiic или django-admin)

anonymous
()
Ответ на: комментарий от anonymous

ээм... инструкция по установке:

1) создать БД и импортнуть туда 2011-12-20-sc_base.sql

2) распаковать архив в домен localhost (или loc, test, test.loc), можно в корень, а можно в папку, если в папку, то в параметре http_root в конфиге надо указать эту самую папку, например в архиве проект находится в папке SmartCore-2011-12-20-beta, вот её тоже можно юзать, тогда надо в конфиге указать: http_root = /SmartCore-2011-12-20-beta/

3) в конфиге настроить значния доступа к вашей БД, параметры: db_name = some_db_name db_user = some_db_user db_pass = some_db_pass

4) запустить в браузере проект, по адресу: http://localhost/SmartCore-2011-12-20-beta/ в случае если вы распаковали в папку SmartCore-2011-12-20-beta

всё :)

digi
() автор топика

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

о боже, дальше читать не смог.

ktk ★★★★
()

Filemanager.tpl:

                               <div class="clear"></div>
        <?php
        foreach ($data['file_list'] as $key => $value) {
                echo "\t<div class=\"filemanager_file_entry\" onclick=\"OpenFile('$value[uri]');return false;\">\n\t<div class=\"filemanager_file_thumb\">";
                echo "\t<img src=\"$value[thumb]\" alt=\"\" title=\"Дата загрузки: $value[upload_datetime], Размер $value[size]\" />\n";
                echo "\t</div><div class=\"filemanager_file_name\">$value[original_filename]</div></div>\n";
        }
        ?>
</div>
                                                     

Развидьте меня этого!

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

GateKeeper ★★
()
Ответ на: комментарий от GateKeeper

«развидьнули» :) дальше что? :)

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

а вот на счет DIRECTORY_SEPARATOR с одной стороны согласен, что лучше юзать его, но по факту не обнаружил проблемм... когда линуксовый слеш применяется, то в линухе конечноже всё ок, а винде вообще пофик на то какой слеш... по этому и решил не заморачиваться и просто юзать линуховые слеши... может быть особно альтернативно одарённые выпендрёжники соизволят обяъснить в каких случаях возможны пробщеммы, если вместо DIRECTORY_SEPARATOR использовать просто '/'.

кстати, альтернативно одарённые уже вникли в концепцию движка? ;) что такое «папки», «ноды», «модули» и «контейнеры» :) или пока научились только в шаблоны недописанных модулей смотреть и по ним делать выводы об архитектуре всей системы ;)

digi
() автор топика
Ответ на: комментарий от digi

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

Ок. Вот теперь концепция стала понятна. Быдлокод во всей красе. «Знаю, как надо, но не буду, т.к. пока что не рухнуло».

GateKeeper ★★
()
Ответ на: комментарий от GateKeeper

объясните в каких случаях '/' приведет к проблеммам?

если везде '/' заменить на DIRECTORY_SEPARATOR, то особо одарённые попробуют в архитектуру вникунуть? ;) т.е. не в ООП архитектуру, а самой системы :)

digi
() автор топика
Ответ на: комментарий от GateKeeper

Ок. Вот теперь концепция стала понятна. Быдлокод во всей красе.

Windows прекрасно понимает прямые слеши ещё с прошлого века. На MacOS, насколько я понимаю, итак используется прямой слеш. Какие ещё есть варианты, где прямой слеш не будет понятен? :)

Я понимаю, там, PHP_EOL, PATH_SEPARATOR — это жизненно необходимо. Но DIRECTORY_SEPARATOR? Нафейхоа?

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

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

digi
() автор топика
Ответ на: комментарий от KRoN73

На случай, если придется бить на составляющие, например.

http://ru2.php.net/manual/en/function.dirname.php - вот тут в комментариях даже относительно DIRECTORY_SEPARATOR куча костылей рассказана, что уж говорить про случай, когда погромист тупо забил...

GateKeeper ★★
()
Ответ на: комментарий от GateKeeper

On Windows, both slash (/) and backslash (\) are used as directory separator character. In other environments, it is the forward slash (/).

И?

Я пока не увидел от тебя примера, где постоянное использование прямого слеша вместо громоздкого и не встраиваемого в строки DIRECTORY_SEPARATOR приведёт к ошибке.

KRoN73 ★★★★★
()
Ответ на: комментарий от GateKeeper

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

а еще как это относится к архитектуре системы (не ООП и программный код)?

digi
() автор топика
Ответ на: комментарий от KRoN73

А, понял. Ты намекаешь на то, что dirname() возвращает не исходное состояние слешей, а платформенное и в случае windows конкатенация с '/' приведёт к каше из слешей? Нужно проверить, но насколько я понимаю, PHP под Windows такую кашу переваривает спокойно.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

$path = «C:\Windows\System32\blabla.dll»; var_dump(explode('/', realpath($path)));

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

Громоздкий: define('DS', DIRECTORY_SEPARATOR); //Один! раз! в коде

Не встраиваемый в строки: $GLOBALS['DSEP'] = DIRECTORY_SEPARATOR; // Один! раз! в коде

Еще какие отмазки будут, лишь бы не писать действительно переносимый код?

GateKeeper ★★
()
Ответ на: комментарий от GateKeeper

Поверил, да, как и полагал, всё работает:

<?php

echo date('r', filemtime('C:\\bin/putty.exe'));
Mon, 28 Nov 2011 12:23:13 +0400

var_dump(explode('/', realpath($path)));

Нахрена мне нужно такое извращение?

Громоздкий: define('DS', DIRECTORY_SEPARATOR); //Один! раз! в коде

Угу. И вместо $base = 'data/fs/xml'; писать $base = 'data'.DS.'fs'.DS.'xml'?

А если кто-то определит потом макрос DS в используемой совместно с твоей системе? :)

$GLOBALS['DSEP']

А потом что, global $DSEP в каждой функции?

Еще какие отмазки будут, лишь бы не писать действительно переносимый код?

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

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

- документация по realpath весьма доходчиво объясняет, зачем оно нужно. Прочти ее, наконец. Если при этом пользоваться правильными сепараторами, то можно не писать костыли вида http://forums.devshed.com/php-development-5/find-out-if-unix-or-windows-28762... и не писать свою finallyabsolutelyrealrealpath()

- А если кто-то определит потом макрос DS в системе: а) ты не написал документацию, б) он мудак и не прочитал документацию. Пиши так: implode(DS, array('data', 'fs', 'xml')); и можешь не беспокоиться о превышении 80 символьного стилевого барьера на строку.

- Ты же не написал документацию, поленился, поэтому да, global $DSEP или {$GLOBALS['DSEP']}

GateKeeper ★★
()
Ответ на: Кошмар от anonymous

Почему config.ini, а не config.php как везде

дальше твое сообщение не читал, скорее всего, там тоже глупости

stevejobs ★★★★☆
()

Получать css и js инклуды с базы как минимум оригинально. Где искейпы строк?

$sql = "SELECT * 
          FROM engine_scripts AS s
          LEFT JOIN engine_scripts_data AS d ON s.current_version = d.version
          WHERE name = '$name'
          AND s.default_profile = d.profile
          ORDER BY d.pos";

RR
()
Ответ на: комментарий от RR

по первых код, который вы выложили, скорее всего можно взять в мастер ветке в гите, но на http://smart-core.org/wiki/ есть заметка, что изучать слудует ветку develop! в мастере код крайне устаревший...

проще скачать архив, там полный и рабочий комплект со всеми библиотеками.

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

digi
() автор топика
Ответ на: комментарий от anonymous

«оригинального» вообще много ;)) вы до архитектуры системы дошли? (не код и ООП). вот она вообще оригинальная, но по коду её не понять, идею надо в вики чиатать, например некоторые наброски описаны тут: http://smart-core.org/wiki/Архитектура http://smart-core.org/wiki/Алгоритм http://smart-core.org/wiki/Общие_принципы

digi
() автор топика
Ответ на: комментарий от RR

с верстальщиками в планах возможность поддержки разных шаблонных движков, а пока только РНР.

digi
() автор топика

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

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

digi
() автор топика
Ответ на: комментарий от digi

концепция хорошая и правильная. Есть реализация на питоне, cms Plone. Успехов в реализации на php

mantar
()

По замечаниям с форумов проведен некоторый рефакторинг кода, теперь стало больше «магии» ;) имхо стало красивее, да и на скорость не повлияло. Также из новых функций добавлена возможность кеширования нод, как фрагменты 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/ оттуда же можно и скачать и выйти на вики и форум.

digi
() автор топика

Чем представленная платформа отличается в лучшую сторону от существующих на рынке? Тезисно, по пунктам «решение А > решение B»

wxw ★★★★★
()
Ответ на: комментарий от wxw

Вкратце вот тут выписываю преимущества: http://smart-core.org/wiki/Введение

также выложу список сюда: Основные преимущества и особенности

* Интуитивно-понятная структура сайтов. * Гибкая система прав на основе групповых политик. * Настраиваемые возможности управления сайтом для разных групп пользователей. * Высокая скорость создания сайта, при использовании стандартных модулей. * Высокая скорость вхождения как для разработчиков, так и для конечных пользователей сайтов на движке. * Мультиязычность, мультидоменность, мультисайтовость. * Современные элементы управления, наподобии тех, что применяются в Юми, Битрикс и Неткат. * Гибкое, многоуровневое кеширование. * Полное разделение данных и представления. * SEO дружественные URL-адреса. * Тонкая настройка meta данных. * Поднятие сессии только для авторизованных пользователей. * Изменение структуры сайта без изменения исходного кода. * Возможность использования единой базы пользователей для разных сайтов, в том числе размещенных на разных серверах.

digi
() автор топика
Ответ на: комментарий от digi

только уже получилось :)

что получилось-то? говнокод один. и не я один так считаю, смотри сколько тут комментариев по этому поводу

heisenberg ★★
()

Проведен крупный рефакторинг кода, теперь более явно прорисовывается паттерн MVC, но в данном движке, в связи с особенностями архитектуры — HMVC :) функциональных изменений нет, на данный момент даже может быть наоборот, что-то может еще неработать из того, что работало раньше ;) в общем огрехов еще много, но сейчас код стал проще, чем был ;)

Скачать как обычно можно отсюда http://smart-core.org/. Код смотреть удобнее тут https://github.com/d1gi/Smart-Core-CMF.

Конструктивные комментарии привествуются! :)

digi
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.