За последние 24 часа нас посетили 18099 программистов и 1676 роботов. Сейчас ищут 1055 программистов ...

Dakota CMS = CodeIgniter + Doctrine

Тема в разделе "Решения, алгоритмы", создана пользователем lev savranskiy, 15 окт 2010.

  1. lev savranskiy

    lev savranskiy Активный пользователь

    С нами с:
    9 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    Мой проект Dakota CMS дорос уже до версии 0.4, так что я осмелился пригласить вас к его использованию и обсуждению.

    Основа: CodeIgniter - легкий фреймворк. Это отличает Dakota CMS от большинства CMS, которые требуют значительно больше ресурсов.

    Одна из ведущих современных ORM - Doctrine позволяет работать с данными в базе как с реально существующими обьектами и загружать данные из YAML файлов, что и реализовано при установке Dakota CMS.


    Для каких целей подходит Dakota CMS?

    * Презентационный сайт компании
    * Личный блог
    * Сообщество с форумом и загрузками

    Текущая версия:

    * Регистрация пользователей (уровень Юзер и Модератор)
    * Подтверждение регистрации по email
    * Запрет регистрации на сайте
    * Временная деактивация аккаунта (бан)
    * Лента новостей с комментариями и RSS
    * HTML редактор страниц
    * 3 шаблона как основа для дизайна
    * Форум
    * Фотогалерея с автоматическим слайд-шоу
    * Файловое хранилище с авторубрикатором
    * Публикация видео с популярных хостингов в один клик
    * Использование Vkontakte, Twitter, Facebook API
    * Быстрый инструмент работы с БД - SQL Buddy
    * Собственная статистика - AudiStat
    * i18n (русский и английский интерфейс в поставке, кол-во доп. языков неограничено)


    Новая версия Dakota CMS доступна в демо-панели и для скачивания

    Демо (рус.) http://demo.dakota-cms.com/
    Demo (eng) http://demo.dakota-cms.com/en/


    Основное нововведение — i18n. Теперь проект живет а англ. и русской версии, и количество возможных локализаций неограничено

    Весь changelog — http://dakota-cms.com/changelog.txt

    Скачать Dakota CMS 0.4 http://dakota-cms.com/
     
  2. lev savranskiy

    lev savranskiy Активный пользователь

    С нами с:
    9 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    Прошу воздержаться от холиворов и вопросов типа "Чем Дакота лучше Joomla или Битрикс?"

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

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

    Конкретные вопросы и пожелания приветствуются
     
  3. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    кодигнитер - старье, которое не развивается. Неудачно выбран фреймворк
     
  4. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    lev savranskiy
    Очень надеюсь, что ВСЕМ... хуже этих двух уродств быть просто невозможно...

    Сейчас качаю вашу систему (5.7 Мб в архиве - не радует, если честно... сколько ж там файлов? 10 тыщ? какой же это "легкий фреймворк"?), что-либо конкретное сказать по поводу разработки смогу не раньше, чем установлю у себя и потестирую...
     
  5. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Даг, ты который раз читаешь мои мысли.
    Я думал написать, а потом плюнул и забил...
     
  6. pohapecoder

    pohapecoder Активный пользователь

    С нами с:
    16 окт 2010
    Сообщения:
    63
    Симпатии:
    0
    Это зря так про Joomla. Сначала конечно кажется что монструозное УГ. но потом, освоившись и проникнувшись
    етой системой, написанием нескольких компонентов под нее - понимаешь что это одна из вполне годных бесплатных CMS.

    по сабжу - странный выбор кодигнайтер который задумывался для php4 и doctrine ORM, которой нужна php5
     
  7. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    pohapecoder
    Я тебе могу сказать абсолютно уверенно - Joomla - ебанутая срань.
    Мне в наследство достались проекты от бывшего прогера...
    Я пишу и плачу, плачу и пишу....
    Про структуру админки я вообще говорить не буду, меня трясет уже от её глюков и багов.
    Справедливости ради замечу, что маны и описание API хорошее.
    С другой стороны, у cakePHP тоже ничего так.

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

    По теме:
    Что за зверь такой codeIgniter?
    Стоит его смотреть, или он уже безнадежно устарел?
     
  8. pohapecoder

    pohapecoder Активный пользователь

    С нами с:
    16 окт 2010
    Сообщения:
    63
    Симпатии:
    0
    А я тбе скажу по своему опыту - что Joomla 1.5 от Joomla 1.0 сильно отличается.
    Joomla 1.5 - можно назвать неплохим mvc фреймворком даже. Другое дело что не совсем удачно сделано.
    Используются немного устаревшие способы - видимо это для совместимости с php4.
    В админке и ядре ниразу не встречал глюков и багов, если делать по стандартам и читать ихние доки.
    Возможно просто сторонние компоненты и модули - м.б. херовые но само ядро более мене нормальное. Это с учетом того что есть много готовых расширений под нее.
    Конечно если б это был голый фреймворк как CI, его бы никто и не использовал
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    cms это конечно хорошо. но считай, ты пишешь её для себя, поэтому может стоит лучше писать её с ноля?
    мне кажется так от ней будет больше толку, хотя всё зависит от стоящей задачи.
     
  10. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Устарел. Но посмотреть стоит. Лишним ведь не будет. :)
     
  11. pohapecoder

    pohapecoder Активный пользователь

    С нами с:
    16 окт 2010
    Сообщения:
    63
    Симпатии:
    0
    Ну если свежесть когда - главное свойство фреймворка для вас - то не стоит смотреть.
    Если цель же - зарабатывание денег, то стоит посмотреть. Простые сайты возможно быстро клепать на нем.
     
  12. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    1.0 не видел.
    и не хочу.
    хватает секса с 1.5

    Спасибо, поинтересуюсь :)
     
  13. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    pohapecoder
    Это называется "привычка". ЦМСка остается монструозным УГ, но ты, "освоившись и проникнувшись", этого уже не замечаешь.
     
  14. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Обещанный отзыв по Дакоте, скорее всего, будет коротким. Ребят, вы меня знаете, я обычно не ругаю самостоятельные разработки, наоборот, они мне нравятся за идеи, за творчество, и я стараюсь говорить об этом. Но эта система мне не понравилась :( Во-первых, жуткий франкенштейн. CodeIgniter - это и впрямь очень легкая и гибкая система, пусть функций у нее маловато, но она хоть работает быстро. А Доктрина - это ORM-классомонстр. Какой смысл их соединять вместе в одной цмске, не понимаю... получилась та самая помесь гуся с носорогом. Во-вторых, система тормозит так, что только за смертью ее посылать, а функционала особенного я и не заметил. Как получилось, что в архиве 1600+ файлов, а система умеет, по сути, только поддерживать табличку пользователей, да и то по минимуму? Всякие виджеты и реклама вконтакта не в счет - это скопированные джаваскрипты, которые запускаются у клиента, к серверным технологиям и таким понятиям, как CMF/CMS, это не имеет отношения. Прошу автора не обижаться на мои слова, видимо все позитивные стороны этой разработки как-то прошли мимо моих глаз (хотя изучил вроде на совесть).

    Ну а если по мелочам, то:

    - Хорошо, что система идет вместе с доками к CI и к Дакоте (русские доки неплохие, кстати).
    - Для такого небольшого количества реализованных функций объем исходников убивает.
    - Плохо, что автор требует от всех сайтов ставить ссылки на себя. Никто не станет пользоваться на таких условиях.
    - Непонятно, зачем требовать от пользователя обязательную поддержку InnoDB таблиц, если у вас все равно AR и ORM, да и никаких связей между таблицами я в коде не обнаружил.
    - Фраза про "сообщество", потыренная с документации по CI, с заменой чужого форума своим, жутко покоробила :(
    - Разберитесь с лицензиями. В одном месте написано GPL, в другом BSD. Вместо GPL советую LGPL.

    Как мне кажется, идея создавать ЦМСку на основе двух чужих разработок, не самая лучшая.

    Выше сказали умную вещь: если система пишется для себя (а я не верю, что такой уже пользуется много человек, да еще для "зарабатывания денег"), лучше уж написать ее самостоятельно. От начала и до конца. И система получится лучше на порядок, и собственный уровень поднимется.
     
  15. lev savranskiy

    lev savranskiy Активный пользователь

    С нами с:
    9 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    Спасибо, Dagdamor

    Наконецто внятный обзор без джумлы.

    про кол-фо файлов - их менее 1500

    application -492 файла (дакота + Doctrine)
    system -159 файлов (это CI)
    не думаю что это много

    возможно при самом первом запуске ORM тормозить, кэширует что то ил и еще как.
    у меня все летате и локально и в веб
    http://demo.dakota-cms.com/login/


    по сути ORM - в CI нет своей ORM
    НО увидев как CI бегает с Doctrine я был очрован и к INSERT WHERE более не вернусь.

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

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

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

    а в новой 2.0 и не будет поддержки пхп 4.
    и с удовольствием сделаю дакоту на нем.

    всем спасибо
     
  16. lev savranskiy

    lev savranskiy Активный пользователь

    С нами с:
    9 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    кстати - джумла и прочие не требуют ссылку на себя в проектах?
    я не в курсе
     
  17. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    гагага. А новый когда будет? и будет ли вообще?
     
  18. lev savranskiy

    lev savranskiy Активный пользователь

    С нами с:
    9 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    Если речь идет про codeigniter, то EAP уже давно доступна


    http://bitbucket.org/ellislab/codeigniter/downloads

    на даынный момент чего то все выдает 404, но это временно

    Гыгыгы
     
  19. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  20. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    lev savranskiy
    Кто заставляет вас писать полный текст SQL-запроса каждый раз снова и снова?
    Да, мне тоже не нравится писать одно и тоже много раз. Поэтому я написал свой собственный интерфейс для удобной работы с БД. И нет необходимости откатываться к низкому уровню SQL, но также и нет необходимости использовать кошмарные надстройки типа Доктрины.

    А толку от такой модели? Модель - это всего лишь набор полей, обернутый в класс. Это вещь в себе, сама собой она управлять не способна. Все равно надо писать пользовательский интерфейс, который будет этой моделью манипулировать. А это за пять минут уже не делается.

    Да нет таких. Все ORM - уродливые тормозные классомонстры. Просто потому, что они по самой природе своей вынуждены производить кучу никому не нужных действий. Вот пример графоманства на Доктрине:

    PHP:
    1. <?php
    2.  
    3. $articles = Doctrine_Query::create()
    4.   ->select('*')
    5.   ->from('Article')
    6.   ->limit($limit)
    7.   ->offset($offset)
    8.   ->execute();
    Вот объясните мне, чем это проще и понятнее честного SELECT * FROM article LIMIT ... OFFSET ...?

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

    Если вам так не нравится "голый" SQL - напишите свою собственную обертку над SQL, только не делайте ее так, как это сделано во всех ORM - кучей глупых методов-оберток над каждым SQL keyword - а продумайте хорошо ее интерфейс, оттолкнитесь от своих собственных потребностей, и напишите так, как будто никакого SQL нет вовсе. К примеру, та же самая выборка в моем PHPC выглядит так:

    PHP:
    1. <?php
    2.  
    3. $articles=$database->getLinesRange("article",$offset,$limit);
    И все. Намного проще, достаточный уровень независимости от SQL и от СУБД достигнут, и летает все со скоростью света, потому что нет необходимости плодить мильен классов на простейшую операцию.

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

    PHP:
    1. <?php
    2.  
    3. $u = Doctrine::getTable('Note')->findAll();
    4. $u->delete();
    Это очистка "записной книжки" в админке.

    Задача примитивна, требуется полностью очистить таблицу "note", и ORM-запись выглядит "красиво" (на любителя впрочем, для меня она по-прежнему уродлива), но что же конкретно она делает?

    А делает она следующее: выбирает все записи из таблицы, после чего для каждой записи выполняет свой индивидуальный DELETE по первичному ключу. Если в таблице 1000 записей - будет выполнен 1001 SQL-запрос. Это ли не геморрой? И когда люди пользуются ORM, такие вещи вылезают регулярно, даже если есть опыт. Единственный способ застраховать себя от таких ляпов - это не пользоваться ORM вообще.
     
  21. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    байтдроч
     
  22. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Koc, вы как в детском саду, в самом деле.
    Хоть бы дочитали мессагу до конца, в последнем абзаце русским по белому объясняется, какой это "байтдроч".
    Или уж не отвечали бы вообще, если не осилили, в конце концов, не для вас писано, а для автора...
     
  23. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    до последнего абзаца не дочитал тогда. Сейчас дочитал. Что мешает использовать DQL?

    http://www.doctrine-project.org/project ... te-queries

    то, что кто-то неправильно использует орм еще не значит, что все орм гавно. Точно также можно и про пых говорить: похапэ гавно, так как много говнокода на нем писано.
     
  24. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Koc
    Мешает здравый смысл? Зачем мне этот доморощенный "DQL", если есть SQL?
    Имхо - костыль в чистом виде, лишь подчеркивающий уродливость данной ORM.
     
  25. VItalijs

    VItalijs Активный пользователь

    С нами с:
    17 дек 2008
    Сообщения:
    244
    Симпатии:
    0
    Адрес:
    Рига, Латвия
    CodeIgniter + Doctrine = Yii судя по всему. Yii framework(да да, жуткий пиар yii на php.ru) имеет очень гут AR + быстрый как CI(на хабре был перевод статьи о сравнении frameworkов).
    хотя, честно, я CMS эту не смотрел вообще.