crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Программа для сценаристов, Обсуждение программы и кода
DOGG
  опции профиля:
сообщение 29.10.2014, 16:49
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


Всем привет.

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

А мне было бы интересно ваше мнение - как код? Не претендую на полномасштабный ревью, но может всё-таки взглянете хотя бы на способ взаимодействия слоя бизнес логики со слоем хранения данных? или может быть вас заинтересует постраничный редактор а-ля ворд на основе QTextEdit'а?;)

Вобщем, кому не лень, или наоборот нечего делать - милости просим! Вот ссылка на гитхаб - https://github.com/dimkanovikov/Scenarist, там в ридми есть ссылка на сайт самого проекта, если вдруг понадобится более подробная информация о нём. Или пишите прямо сюда, я с удовольствием готов обсудить любые вопросы!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Flex Ferrum
  опции профиля:
сообщение 5.11.2014, 16:28
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 26.11.2007
Пользователь №: 26

Спасибо сказали: 0 раз(а)




Репутация:   0  


А чем принципиально отличается от Scrivener или FinalDraft?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DOGG
  опции профиля:
сообщение 5.11.2014, 16:38
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


Flex Ferrum, здравствуйте. Принципиально тем, что опенсорс.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DOGG
  опции профиля:
сообщение 26.1.2015, 13:13
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


Как бы тему-то развеселить? Может быть вам было бы интересно узнать какие-то технические моменты?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 26.1.2015, 15:43
Сообщение #5


Профессионал
*****

Группа: Модератор
Сообщений: 1547
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 210 раз(а)




Репутация:   12  


думаю, что такие вещи лучше рекламировать на профильных сайтах. там, где сценаристы тусуются, например. а программисту такой софт вряд ли пригодится. у нас тут в основном вопросы программирования обсуждают и темы смежного софта, который нужен в программировании и отладке.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DOGG
  опции профиля:
сообщение 27.1.2015, 11:57
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


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

В общем решено, попробую писать небольшие обзорные статьи по внутреннему устройству программы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DOGG
  опции профиля:
сообщение 18.3.2015, 14:24
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


Всем привет.

Сегодня хочу рассказать об архитектуре проекта в общих чертах.

Итак, вся система разбита на шесть слоёв:


Вверху на картинке показаны два общедоступных слоя (т.е. знать о них разрешено любой функции/классу из любого другого слоя):
1. Модель предметной области
Фактически представляет собой отображение схемы базы данных в объекты.
2. Вспомогательные элементы
Здесь находятся все универсальные решения, а так же все сторонние решения, обнаруженные в интернете. В основном это виджеты и делегаты, но так же есть несколько вспомогательных классов, которые используются повсеместно в проекте.

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

Дальше чуть более подробно о каждом из них:
3. Слой хранения и обработки данных
Скрывает в себе три подслоя, которые в свою очередь предоставляют: а) интерфейс доступа к базе данных; б) загрузку данных из базы и преобразование их в модель предметной области; в) собственно доступ к загруженным объектам.
4. Слой бизнес логики
Сосредотачивает в себе все тонкости работы с киносценарием: подсчёт хронометража, построение структуры сценария, импорт/экспорт сценария из/в документы различных форматов и т.д.
5. Слой пользовательского интерфейса
Мне нравится, когда интерфейс тупой, просто отправляет сигналы в нужный момент и загружает предоставляемые ему данные в заданные поля. Но в данном проекте есть одно большое исключение - это собственно сам редактор сценария (ScenarioTextEdit). Он вместе с группой зависимых классов является, как представителем слоя пользовательского интерфейса, так и входит в управленческий слой. Сделано это потому, что сам редактор довольно специфичный и разделение его на два независимых класса принесло бы больше проблем/сложностей/трудозатрат, чем их объединение.
6. Управленческий слой
Как и говорилось раньше, этот слой берёт на себя ответственность за координацию взаимодействия между всеми слоями приложения, от первого пункта меню, до вопроса о сохранении редактируемого проекта при закрытии программы.

Вот так выглядит самый верхний срез устройства программы.

Постепенно я буду выкладывать всё более детальные подробности, если вас что-то заинтересовало, вы хотите что-нибудь покритиковать, или уточнить - УРА! :) Пишите, мне очень интересно ваше мнение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DOGG
  опции профиля:
сообщение 22.4.2015, 13:04
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


Приветствую, коллеги.

Продолжим наше знакомство и сегодня поговорим о слое Модель предметной области.

Модель предметной области предназначена для сокрытия базы данных от верхних слоёв приложения, т.е. в приложении мы работаем с объектами (сценарием, персонажами, локациями и т.п.), а не с записями из базы.

Что внутри? Устройство слоя.

Давайте рассмотрим, как устроена логика работы слоя.


DomainObject - базовый класс для всех объектов модели предметной области. Т.к. объекты являются отражениями данных из базы, то они содержат поле идентификации (Identifier - обёртка над идентификатором записи из базы данных), методы для работы с ним, а так же вспомогательный функционал для отслеживания изменений объекта.

DomainObjectsItemModel - базовый класс для списков объектов. Наследуется от родной модели Qt, реализуя основной функционал и немного расширяет её. Это позволяет использовать преимущества, как самой модели предметной области, так и техники Qt Model/View Programming.

ConcreteObject и ConcreteObjectsItemModel здесь - это реальные представители модели предметной области.

Что внутри? Классы.

А вот и диаграмма со всеми представителями слоя.


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

Вот примерно так и организована модель предметной области в моём приложении.

Как обычно, если у вас нашлись вопросы или замечания, буду очень рад обсудить их!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DOGG
  опции профиля:
сообщение 21.5.2017, 17:59
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


Привет, коллеги! Решил освежить ветку - вдруг кому будет интересна дальнейшая судьба проекта!:)

Количество установок программы уже давно перевалило за 20 тысяч! В прошлом году ко мне присоединился ещё один разработчик - студент МГУ, который в своё свободное время тоже участвует в разработке. За прошедший год мы основательно улучшили облачный сервис, значительно развили модули разработки, редактора сценария и статистики, сделали кучу небольших, но полезных улучшений, всякие автоматические обновления и т.п. вещи, добавили модуль карточек, а потом полностью его переделали!:D Программа была переведена ещё на 4 языка (немецкий, казахский, португальский и украинский), в работе переводы на китайский, японский и фарси.

Вот, даже сделали небольшое видео об основных возможностях: https://www.youtube.com/watch?v=zg-BLExGWzE

Короче жизнь кипит!:)

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

Весёлого дня, ребята!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.10.2017, 15:14