Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Vingrad CMS > Проект умер?


Автор: ImamMahdi 15.2.2008, 19:00
Я так понимаю, проект умер? Уж больно много времени прошло с момента заморозки разработки...
Может продолжим? Хотя бы обсуждение. Я почитал темы и нашел много пищи для размышлений, но также нашел один большой изъян - практически ни одна тема не имеет логического заверщения :(

Автор: Medved 16.2.2008, 00:29
продолжай

Автор: Wowa 16.2.2008, 10:28
Продолжать можно. Если разработка снова начнется, то я поддержку.

Автор: Wowa 17.2.2008, 12:28
Я поместил новость о разработке на http://devnews.ru

Автор: EsAlexey 17.2.2008, 13:24
Я сейчас занимаюсь созданием платформы для сайтов на PHP. Могу внести сюда некоторые свои идеи и помочь с разработкой. Моя система основана на описании данных, моделей и отображений с помощью XML. Функциональность подключается с помощью процедур и классов PHP. Главными идеями являются: устранение лишнего PHP-кода, поддержка шаблонов для верстки и облегчение работы с базой данных. Сейчас я веду разработку платформы на основе потребностей при создании интернет-форума.

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

Пример слоя данных (простая таблица в MySQL):
Код

<table name="Forums" plugin="MySqlTable" userinfo="Таблица форумов">
    <field name="id" type="usmallint" primary="autoincrement" userinfo="Идентификатор форума" />
    <field name="idCategory" type="usmallint" userinfo="Идентификатор категории-владельца" />
    <field name="Number" type="utinyint" null="true" userinfo="Номер для сортировки" />
    <field name="Name" type="uvarchar:30" userinfo="Название форума" />
    <field name="Info" type="uvarchar:250" null="true" userinfo="Описание форума" />
    <field name="Visits" type="uint" default="0" userinfo="Сумма посещаемости по всем темам" />
    <index type="unique">
        <field name="idCategory" />
        <field name="Number" />
    </index>
</table>


Пример слоя отображения (главный шаблон сайта):
Код

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:dlv="http://works.esalexey.ru/dlv">
<head><title><dlv:block name="Title" /></title></head>
<body>
<dlv:if cond="Session.Member != null">
    <div id="MemberInfoBlock">
    <p>Здравствуйте <dlv:print source="~{Session.Member.Name}" />!</p>
    <p><a href="~{Views.MemberInfo.Url}">Профиль</a> <a href="~{Views.PrivateMessages.Url}">Личные сообщения</a></p>
    </div>
</dlv:if>
<dlv:if cond="Session.Member == null">
    <div id="LoginBlock">
    <form action="~{Commands.Login.Url}" method="post">
    <p><label for="LoginBlock_Name">Имя:</label><br />
    <input name="Name" id="LoginBlock_Name" type="text" /></p>
    <p><label for="LoginBlock_Pass">Пароль:</label><br />
    <input name="Pass" id="LoginBlock_Pass" type="password" /></p>
    <p><label for="LoginBlock_Auto">Автовход:</label><br />
    <input name="Auto" id="LoginBlock_Auto" type="checkbox" /></p>
    <p><button name="Submit" type="submit" value="Submit">Вход</button></p>
    </form>
    </div>
</dlv:if>
<div id="Body">
<dlv:def-block name="Body" />
</div>
</body>
</html>


Пример слоя отображения (дерево форумов по категориям):
Код

<?xml version="1.0" encoding="UTF-8" ?>
<dlv-view xmlns="http://www.w3.org/1999/xhtml" xmlns:dlv="http://works.esalexey.ru/dlv"
    dlv:use-template="Main" dlv:logic="Forums">
<head></head>
<body>
<dlv:use-block name="Title" value="Дерево форумов" />
<dlv:use-block name="Body">
    <table>
        <thead>
            <tr>
                <td>Название</td>
                <td>Тем</td>
                <td>Сообщений</td>
                <td>Посещений</td>
                <td>Последнее</td>
            </tr>
        </thead>
        <tbody>
            <dlv:for-each list="Categories" as="$Category">
                <tr>
                    <td><img dlv:if="$Category.ImageFile != null" src="~{Images[$Category.ImageFile].Url}" /> <dlv:print
                        source="$Category.Name" /></td>
                    <td><dlv:print source="$Category.Topics" /></td>
                    <td><dlv:print source="$Category.Posts" /></td>
                    <td><dlv:print source="$Category.Visits" /></td>
                    <td></td>
                </tr>
                <dlv:recurse sub-list="$Category.SubCategories" />
                <dlv:for-each list="$Category.Forums" as="$Forum">
                    <tr>
                        <td><a href="~{Views.Topics($Forum.id).Url}"><img dlv:if="$Forum.ImageFile != null"
                            src="~{Images[$Forum.ImageFile].Url}" /><dlv:print source="$Forum.Name" /></a></td>
                        <td><dlv:print source="$Forum.Topics" /></td>
                        <td><dlv:print source="$Forum.Posts" /></td>
                        <td><dlv:print source="$Forum.Visits" /></td>
                        <td><a href="~{Views.Topic($Forum.Last.idTopic, $Forum.Last.idPost).Url}"><dlv:print
                            source="$Forum.Last.Name" /></a></td>
                    </tr>
                </dlv:for-each>
            </dlv:for-each>
        </tbody>
    </table>
</dlv:use-block>
</body>
</html>


В итоге программисты будут разрабатывать слои логики и данных. А дизайнеры будут верстать слой отображения без необходимости в умении программировать, при этом имея полный контроль над XHTML-кодом. Слой отображения чем-то похож на XSLT, но является более мощным средством формирования вывода, а также поддерживает списки, деревья и рекурсию данных.

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

Автор: Wowa 17.2.2008, 17:12
Цитата(EsAlexey @  17.2.2008,  12:24 Найти цитируемый пост)
Пример слоя данных (простая таблица в MySQL):

такой вид принимают все данные, которые ты достаешь из таблицы? Т.е. данные выбранные из таблиц ты перегоняешь в XML?

Добавлено через 1 минуту и 51 секунду
Цитата(EsAlexey @  17.2.2008,  12:24 Найти цитируемый пост)
Пример слоя отображения (главный шаблон сайта):

Цитата(EsAlexey @  17.2.2008,  12:24 Найти цитируемый пост)
<dlv:if cond="Session.Member == null">

где инициализируется Session.Member ?

Автор: EsAlexey 17.2.2008, 18:02
Я пока привел только часть примеров XML-описаний, остальное находится в стадии разработки. Слой логики я еще не продумал.

Цитата(Wowa @  17.2.2008,  17:12 Найти цитируемый пост)
такой вид принимают все данные, которые ты достаешь из таблицы? Т.е. данные выбранные из таблиц ты перегоняешь в XML?
Это описание таблицы, а не ее содержание. Данное описание необходимо для повышения удобства проектирования базы данных и усиления контроля за структурой данных. Данные из таблиц будут запрашиваться из БД и читаться по одной записи. В случае деревьев - сразу все дерево будет формироваться в памяти PHP в виде массивов и объектов.

Цитата(Wowa @  17.2.2008,  17:12 Найти цитируемый пост)
где инициализируется Session.Member ? 
Пока не знаю где происходит инициализация, но "Session" это глобальный объект (или ассоциативный массив), а "Member" - объект задаваемый с помощью слоя логики. В итоге эта запись позволяет узнать: есть ли объект "Участник" в текущей сессии пользователя.

Запись "~{Images[$Forum.ImageFile].Url}" расшифровывается так:
1. Images - глобальный ассоциативный массив, где ключом являются имена файлов изображений, а значением является объект класса "Изображение".
2. $Forum - переменная из <dlv:for-each />, она описывается и создается в слое логики.
3. ImageFile - поле объекта $Forum, типа string, содержит путь к файлу изображения относительно корневой директории сайта.
4. Класс "Изображение" предоставляет доступ к гиперссылке на файл, которую генерирует относительно корня сайта (в форме "/images/test.png").

Тег "<dlv:recurse sub-list="$Category.SubCategories" />" позволяет рекурсивно повторить содержимое тега "<dlv:for-each list="Categories" as="$Category">", подставив ему массив $Category.SubCategories. Структуру этого дерева удобнее описать на языке C#:
Код

class Category
{
    public string Name;
    public string ImageFile;
    public int Topics;
    public int Posts;
    public int Visits;
    public Category[] SubCategories;
    public Forum[] Forums;
}

class Forum
{
    public int id;
    public string Name;
    public string ImageFile;
    public int Topics;
    public int Posts;
    public int Visits;
    public LastTopic Last;
}

class LastTopic
{
    public int idTopic; // ключ темы
    public int idPost;  // ключ последнего сообщения темы
    public string Name; // название темы
}

Автор: Mekras 18.2.2008, 10:50
А где можно ознакомиться с текущим состоянием проекта?

Автор: Wowa 18.2.2008, 12:32
Цитата(Mekras @  18.2.2008,  09:50 Найти цитируемый пост)
А где можно ознакомиться с текущим состоянием проекта? 

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

Автор: ImamMahdi 18.2.2008, 13:52
Wowa, я так понимаю, ты руководитель проекта?
Списки участников и обязаностей я видел, но боюсь что они давно невалидны smile

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

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

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

Что думаете по поводу сказанного мною?

Автор: Wowa 18.2.2008, 14:01
Цитата(ImamMahdi @  18.2.2008,  12:52 Найти цитируемый пост)
Wowa, я так понимаю, ты руководитель проекта?

ну, типа, больше вроде некому :(


Цитата(ImamMahdi @  18.2.2008,  12:52 Найти цитируемый пост)
Списки участников и обязаностей я видел, но боюсь что они давно невалидны smile

да, это старые  списки. Невалидные уже.


Цитата(ImamMahdi @  18.2.2008,  12:52 Найти цитируемый пост)
Если к работе подключается новый человек, то для него большая проблема влиться в работу, так как он ничего не знает о проекте или знает очень мало. 

Так и есть.. Но работа пока никакая не ведется, а лишь обсуждаем, что и как делать.



Цитата(ImamMahdi @  18.2.2008,  12:52 Найти цитируемый пост)
Вот и в этой теме сразу напостили листингов, хотя по-моему так никто и не определился, будет ли работа над проектом продолжаться. 

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


Цитата(ImamMahdi @  18.2.2008,  12:52 Найти цитируемый пост)
Времени прошло много и кто знает, актуальны ли былые наработки.

актуальны. Ничего толком не изменилось в мире. А когда мы пару лет назад начинали, то как раз задумывали всё и XML, и AJAX и прочее...


Автор: ImamMahdi 19.2.2008, 15:54
Так может давайте для начала создадим некоторую базу знаний по проекту. Опишем что есть, что в реализации, что только планируется. Сформируем какой-то план утвержденных работ. В общем, нужно подобие ТЗ.

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

Как вы смотрите на это?

Автор: Sardar 19.2.2008, 17:34
Одной ветки достаточно, топики можно закреплять (по важности) и плюсовать в рейтинг.

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

Автор: ImamMahdi 19.2.2008, 18:10
Цитата

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

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

Автор: solenko 21.2.2008, 15:44
Действительно очень интерестно было бы оживиь тему. Абсолютно согласенс ImamMahdi в том, что нужно форировать ТЗ. Судя по теме http://forum.vingrad.ru/forum/topic-56921.html небыло даже определенности что пишется. Вроде говорили о фремверке, а начали писать набор билиотек.

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

Автор: Sardar 21.2.2008, 17:59
Коротко: да нужно ТЗ.


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

Опираясь на это уже можно выделить такие общие понятия как блог (короткий пост, коментарии, оценки), новости (удобное управление и публикация, RSS, интеграция с subscribe.ru etc), статика (набивка статьи в wysiwyg, интеграция в главное меню etc), бухучёт. Отсюда общие библиотеки и сервисный код. Отсюда конкретные задачи и потребноти в коде, которые и решаются программистами.

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

Автор: solenko 21.2.2008, 20:23
Sardar, ну тогда уже взять 10, 20...N таких ТЗ, выделить из них сущности, которые повторялись в каком-то проценте и ограничится этим.

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

Добавлено через 4 минуты и 13 секунд
Пользователю прийдется сталкиваться с конечным продуктом, а программистам с API сисемы, потому на первом этапе стоит оглядываться как раз на них. Ведь CMS без коммунити разработчиков ничто, а если под систему будет неприятно писать, то оно, скорее всего, и не появиться.

Автор: Medved 21.2.2008, 22:36
Цитата(Sardar @  21.2.2008,  20:59 Найти цитируемый пост)
Опираясь на это уже можно выделить такие общие понятия как блог (короткий пост, коментарии, оценки), новости (удобное управление и публикация, RSS, интеграция с subscribe.ru etc), статика (набивка статьи в wysiwyg, интеграция в главное меню etc), бухучёт. Отсюда общие библиотеки и сервисный код. Отсюда конкретные задачи и потребноти в коде, которые и решаются программистами.


Вот с этого можно и начинать. 

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

user posted image

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

Жизненный цикл выпуска версии разбивается на пять стадий (фаз):
1. Выработка концепции - утверждается структура и состав рабочей группы. Этой группой вырабатывается общее видение будущего продукта (ничем не ограниченное представление о целях и задачах которые должен реализовывать продукт). 
Контрольные точки (результаты выполнения стадии): 
  • Утверждена структура и состав рабочей группы (ядро).
  • Утверждена общая концепция продукта (черновой вариант).
2. Планирование (проектирование)  - подготовка функциональной спецификации, разработка дизайнов, подготовка рабочих планов, оценка проектных затрат и сроков разработки различных составляющих проекта. По своей сути, эта стадия является стадией проектирования будущего решения. Результатом этой стадии является готовый продукт, но реализованный пока только на бумаге (в виде соответствующих топиков). Четко определяется функционал, который будет реализован. Этот функционал распределяется на модули (библиотеки и компоненты), которые в свою очередь  разбиваются на классы. В классах определяются свойства и методы и дается их описание.
Контрольные точки:
  • Определены технологии и средства разработки.
  • Создана базовая версия функциональной спецификации (техническое задани).
  • Создан предварительный план реализации проекта и календарный график.
  • Среды разработки и тестирования развернуты.
3. Разработка - на этой стадии происходит реализация проекта в виде кода по ранее разработанным на втором этапе спецификациям, а также предварительное тестирование готовых модулей и компонентов.
Контрольные точки:
  • Работоспособный билд.
4. Стабилизация - фаза тестирования и документирования готового решения.
Контрольные точки:
  • Пилотное внедрение проекта.
  • Золотой релиз (окончательный продукт)
5. Внедрение - окончательное внедрение и стабилизация готового решения, ввод в эксплуатацию.
  • Созданы информационные системы эксплуатации и поддержки, базы знаний и окончательные версии всех проектных документов.
Дополнительные сслыки.
http://ru.wikipedia.org/wiki/Microsoft_Solutions_Framework
http://www.citforum.ru/SE/project/msf/

Автор: Medved 21.2.2008, 22:59
На данный момент как я понимаю, проект находится в процессе выпуска первой версии, на первой стадии. Которая реализована на 50%, так как первая контрольная точка пройдена, т.е. состав и структура группы (частично) определена (другое дело что список этот устарел и не точен).

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

Параллельно с этим можно разрабатывать общую концепцию будущей CMS. 

Документ по рабочей группе находится здесь - http://forum.vingrad.ru/forum/topic-80728.html
Общую концепцию предлагаю обсуждать здесь - http://forum.vingrad.ru/forum/topic-197424.html


Автор: ImamMahdi 22.2.2008, 13:15
Прежде чем преступить к чему-либо, настоятельно реккомендую прочитать вот этот блог http://vingrad.ru/blogs/ida
!Прочить полностью!

P.S: порадовало появление схем. Вот это можно считать началом

Автор: awers 22.2.2008, 15:42
С огромным удовольствием принял бы участие в разработке. 
PHP, MySQL, Oracle, CSS, HTML, XSL, XML .... 

Автор: Medved 25.2.2008, 06:26
Цитата(ImamMahdi @  22.2.2008,  16:15 Найти цитируемый пост)
Прежде чем преступить к чему-либо, настоятельно реккомендую прочитать вот этот блог http://vingrad.ru/blogs/ida
!Прочить полностью!

P.S: порадовало появление схем. Вот это можно считать началом


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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)