Программа для сценаристов, Обсуждение программы и кода |
Здравствуйте, гость ( Вход | Регистрация )
Программа для сценаристов, Обсуждение программы и кода |
DOGG |
29.10.2014, 16:49
Сообщение
#1
|
Студент Группа: Участник Сообщений: 44 Регистрация: 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
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
Flex Ferrum, здравствуйте. Принципиально тем, что опенсорс.
|
|
|
DOGG |
26.1.2015, 13:13
Сообщение
#4
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
Как бы тему-то развеселить? Может быть вам было бы интересно узнать какие-то технические моменты?
|
|
|
Iron Bug |
26.1.2015, 15:43
Сообщение
#5
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
думаю, что такие вещи лучше рекламировать на профильных сайтах. там, где сценаристы тусуются, например. а программисту такой софт вряд ли пригодится. у нас тут в основном вопросы программирования обсуждают и темы смежного софта, который нужен в программировании и отладке.
|
|
|
DOGG |
27.1.2015, 11:57
Сообщение
#6
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
Iron Bug, спасибо за совет, но я и не хотел её рекламировать Дело в том, что в программе ведь есть и техническая сторона - код. Вот мне и хотелось бы себя показать, может быть те решения, которые применены в этом проекте будут кому-то полезны, или может быть кто-нибудь даст дельный совет, как что-то можно улучшить. А со сценаристами мы уже давно и плотно работаем.
В общем решено, попробую писать небольшие обзорные статьи по внутреннему устройству программы. |
|
|
DOGG |
18.3.2015, 14:24
Сообщение
#7
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
Всем привет.
Сегодня хочу рассказать об архитектуре проекта в общих чертах. Итак, вся система разбита на шесть слоёв: Вверху на картинке показаны два общедоступных слоя (т.е. знать о них разрешено любой функции/классу из любого другого слоя): 1. Модель предметной области Фактически представляет собой отображение схемы базы данных в объекты. 2. Вспомогательные элементы Здесь находятся все универсальные решения, а так же все сторонние решения, обнаруженные в интернете. В основном это виджеты и делегаты, но так же есть несколько вспомогательных классов, которые используются повсеместно в проекте. Далее идут слои, являющиеся пожалуй, основными составляющими программы. Слева идут три слоя, которые замыкаются на себе, т.е. им разрешено знать о сущностях находящихся в собственном слое, а так же о сущностях общедоступных слоёв. Управленческий же слой берёт на себя обязанность по координации взаимодействия между всеми слоями приложения. Это моя своеобразная интерпретация паттерна модель-представление-контроллер. Т.к. слои независимы, они легко разносятся, что облегчает создание новых систем на основе имеющейся. Дальше чуть более подробно о каждом из них: 3. Слой хранения и обработки данных Скрывает в себе три подслоя, которые в свою очередь предоставляют: а) интерфейс доступа к базе данных; б) загрузку данных из базы и преобразование их в модель предметной области; в) собственно доступ к загруженным объектам. 4. Слой бизнес логики Сосредотачивает в себе все тонкости работы с киносценарием: подсчёт хронометража, построение структуры сценария, импорт/экспорт сценария из/в документы различных форматов и т.д. 5. Слой пользовательского интерфейса Мне нравится, когда интерфейс тупой, просто отправляет сигналы в нужный момент и загружает предоставляемые ему данные в заданные поля. Но в данном проекте есть одно большое исключение - это собственно сам редактор сценария (ScenarioTextEdit). Он вместе с группой зависимых классов является, как представителем слоя пользовательского интерфейса, так и входит в управленческий слой. Сделано это потому, что сам редактор довольно специфичный и разделение его на два независимых класса принесло бы больше проблем/сложностей/трудозатрат, чем их объединение. 6. Управленческий слой Как и говорилось раньше, этот слой берёт на себя ответственность за координацию взаимодействия между всеми слоями приложения, от первого пункта меню, до вопроса о сохранении редактируемого проекта при закрытии программы. Вот так выглядит самый верхний срез устройства программы. Постепенно я буду выкладывать всё более детальные подробности, если вас что-то заинтересовало, вы хотите что-нибудь покритиковать, или уточнить - УРА! Пишите, мне очень интересно ваше мнение. |
|
|
DOGG |
22.4.2015, 13:04
Сообщение
#8
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
Приветствую, коллеги.
Продолжим наше знакомство и сегодня поговорим о слое Модель предметной области. Модель предметной области предназначена для сокрытия базы данных от верхних слоёв приложения, т.е. в приложении мы работаем с объектами (сценарием, персонажами, локациями и т.п.), а не с записями из базы. Что внутри? Устройство слоя. Давайте рассмотрим, как устроена логика работы слоя. DomainObject - базовый класс для всех объектов модели предметной области. Т.к. объекты являются отражениями данных из базы, то они содержат поле идентификации (Identifier - обёртка над идентификатором записи из базы данных), методы для работы с ним, а так же вспомогательный функционал для отслеживания изменений объекта. DomainObjectsItemModel - базовый класс для списков объектов. Наследуется от родной модели Qt, реализуя основной функционал и немного расширяет её. Это позволяет использовать преимущества, как самой модели предметной области, так и техники Qt Model/View Programming. ConcreteObject и ConcreteObjectsItemModel здесь - это реальные представители модели предметной области. Что внутри? Классы. А вот и диаграмма со всеми представителями слоя. Каждый из девяти объектов хранит всю необходимую информацию о себе, а так же имеет вспомогательные функции для работы со своими данными. Вот примерно так и организована модель предметной области в моём приложении. Как обычно, если у вас нашлись вопросы или замечания, буду очень рад обсудить их! |
|
|
DOGG |
21.5.2017, 17:59
Сообщение
#9
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
Привет, коллеги! Решил освежить ветку - вдруг кому будет интересна дальнейшая судьба проекта!:)
Количество установок программы уже давно перевалило за 20 тысяч! В прошлом году ко мне присоединился ещё один разработчик - студент МГУ, который в своё свободное время тоже участвует в разработке. За прошедший год мы основательно улучшили облачный сервис, значительно развили модули разработки, редактора сценария и статистики, сделали кучу небольших, но полезных улучшений, всякие автоматические обновления и т.п. вещи, добавили модуль карточек, а потом полностью его переделали!:D Программа была переведена ещё на 4 языка (немецкий, казахский, португальский и украинский), в работе переводы на китайский, японский и фарси. Вот, даже сделали небольшое видео об основных возможностях: https://www.youtube.com/watch?v=zg-BLExGWzE Короче жизнь кипит!:) Если вам будет интересно узнать что-нибудь о проекте в подробностях, то с удовольствием расскажу! Ну а если вы вдруг захотите стать соучастником, то добро пожаловать! А если решите скачать и попробовать - не удивляйтесь, в программе серьёзно доработан интерфейс в сравнении с версией на видео! Весёлого дня, ребята! |
|
|
DOGG |
25.1.2018, 10:04
Сообщение
#10
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
Ребята, всем привет!
А мы всё также развиваем наш Open Source проект. Некоторые говорят, что он уже стал на российском рынке стандартом, другие с этим не согласны, но мы тем не менее не отступаем и сейчас активно будем выходить на европейский рынок. В связи с чем, вновь объявляется поиск разработчиков для участия в проекте! Мне интересны ребята, которые умеют решать задачи. Если у вас нет большого опыта, то это ничего, я помогу во всём разобраться + постоянно делаю ревью, подсказываю в каких-то моментах. Главное, чтобы вам самим было интересно в этом поучаствовать и вы умели добиться результата. Ну а если есть большой опыт и вы хотите стать частью нашего проекта - круто! Есть очень много разноплановых задач. Куча задач по доработке самого приложения: тут и вещи связанные с GUI (чисто интерфейсные задачи, типа сделать фильтрацию в дереве, разработки графических редакторов [редактор схем, таймлайн], и другие [сейчас например есть желаение сделать диф-тулзу для сравнения версий сценариев]) и оптимизации/переработки некоторых алгоритмов, парсеры, есть задачки связанные с сетевым взаимодействием приложения и облачным сервисом; на бэкэнде нашего облачного сервиса тоже есть куда идей для развития. В общем не заскучаешь! Технологии, которые сейчас используем: desktop & mobile - Qt (GUI на QtWidgets), web - php (если вы захотите переписать сервис на go или node js - да пожалуйста, тут полная свобода). На всякий случай продублирую ссылку на исходники https://github.com/dimkanovikov/KITScenarist P.S. Студент, который вместе со мной развивает проект, устроился на стажировку в компанию мечты! Не то, чтобы я в этом виноват, но как приятно быть причастным!:) |
|
|
Текстовая версия | Сейчас: 21.11.2024, 20:37 |