powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
38 сообщений из 38, показаны все 2 страниц
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099490
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой вопрос, всплывает время от времени, когда я пытаюсь программировать что-то дома "для души".
Вот, допустим, есть паттерны проектирования (у кого само выражение "паттерны проектирования" вызывает рвотный рефлекс - извините, ничем не могу помочь). Исторически, как я понимаю, они появились так. Какие-то чуваки писали-писали софт, заметили, что часто возникают похожие проблемы, придумали для некоторых типовых проблем типовые подходы к решению, назвали их "шаблоны", написали книгу.
ОК. Идем дальше. Допустим, я прочитал 100500 пару книг про паттерны, рефакторинг и всё что-то понял. Теперь надо применять это в реальном проекте.
Я начинаю писать десктопное приложение. Ну, например, я хочу написать свой Excel, потому что ни микрософтовский, ни опеноффис меня не устраивает. Там, конечно, пользователь будет вводить какие-то данные и как-то их обрабатывать, а я должен показывать все это на экране. Ну конечно же, мне пригодится паттерн MVC (какой-нибудь один из семейства). Типичный пример использования паттерна в учебных материалах: какое-нибудь окно, переменная (или иногда простенький объект) с данными. ОК. Теперь мой "эксель". Там куча данных. В простенький объект не впихнешь. Сами пользовательские данные - многоуровневые: один документ содержит несколько листов, каждый лист - много ячеек и иногда других объектов, каждая ячейка имеет данные, форматирование и т. д., а еще есть настройки самого приложения... У каждого куска данных есть какие-то дополнительные окна для редактирования данных, плюс одно большое (основное) окно приложения. Иииии?
Две самые простые мысли, которые приходят в голову.
1. Если модель - многоуровневая, у меня получается дерево объектов, а далее как-то само собой получается, что параллельно выстраивается дерево контроллеров, и еще какое-то количество view.
2. То же самое, что п. 1, только для каждого логического куска приложения создается тройка M-V-C, а дальше вырастает многоуровневое дерево таких "троек", повторяющее логику обрабатываемых данных.
Но ведь 2021-й год на дворе, наверняка про это уже кто-нибудь что-нибудь написал?
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099497
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начало: "Есть у меня простенькая задачка ..."
Середина: "... которая нифига не простенькая ..."
Финал: "Ну почему, в третьем тысячелетии, ещё никто не создал для меня нечто готовое, что можно покрыть лаком, а потом повесить свой шильдик?!".

P.S.
"У верблюда два горба потому, что жизнь - борьба".
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099511
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Финал: "Ну почему, в третьем тысячелетии, ещё никто не создал для меня нечто готовое, что можно покрыть лаком, а потом повесить свой шильдик?!".
Ну вообще-то, это довольно грубое передергивание и демагогия. Я просил не готовое решение, а просто направление, куда копать. Например, приведенный мной п. 2 я тоже не сам придумал. Мне как-то на глаза попадалась статья, где описывалось нечто похожее. Без кода, просто со схемой в виде картинки и объяснения на пальцах в виде "и потом эта штука такая вжух туда, и все готово сломалось". Я только не помню, где эта статья и по каким ключевым словам я ее нагуглил. Даже такого будет достаточно, это уже лучше, чем ничего.

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

P. S. Я тут вспомнил. Когда-то давно натыкался на похожую статью. Вот: http://rsdn.org/article/patterns/patterns.xml Дата публикации - 09.04.2003. Сейчас, правда, мне решение из этой статьи не кажется удачным. Вот примерно такого рода статьи/книги я и ищу.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099514
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C Excel совершенно неудачный пример. До 2007 года там бинарный формат
(можно чокнуться разбираясь с ним - там пласты разных структур с 1995 по 2003 год)...
А потом XML, требующий тоже нехилого парсинга. И опять бинарные куски...

Всё это представить в виде древовидной стрктуры весьма сложно - там не дерево
и даже не чаща - там сплошные джунгли...

И никакие "паттерны" не помогут продираться сквозь них.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099517
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
Ну, например, я хочу написать свой Excel, потому что ни микрософтовский,
ни опеноффис меня не устраивает. Там, конечно, пользователь будет вводить какие-то данные и как-то
их обрабатывать, а я должен показывать все это на экране. Ну конечно же, мне пригодится паттерн MVC


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

Про многоуровенвое дерево "троек" - непонятно. Откуда там их так много? Что является "моделью" для каждой тройки?
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099528
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Про многоуровенвое дерево "троек" - непонятно. Откуда там их так много? Что является "моделью" для каждой тройки?
Да практически любое окно настроек подразумевает под собой какие-то данные. Например:
1. Настройки форматирования ячеек
2. Настройки печати листа
3. Свойства графиков
4. Сами данные в ячейках

И так далее, продолжать можно долго.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099532
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С окнами настроек - это перебор IMHO.

MVC полезен когда у тебя данные (модель) единовременно презентуются на экране в разных видах.
Например столбец цифр. И рядом - поясняющая инфографика по этим цифрам.

А настройки это что? Открыл окошко. Чего-то покорректировал и закрыл. Какая там MVC? Там даже
идентифицировать виды отдельно нельзя. Вобщем... не стоит усложнять на пустом месте.

Excel образца 1.0 был написан без этого шаблона. И возможно даже не на С++ а на чистых сях.
Вобщем имеет смысл начать писать что-то простое. И уж когда точно-точно не хватит возможностей
(ну просто жить нельзя без MVC) - тогда уже и заходить сюда в скруль.

И тогда уж ты будешь бить нас всех по лицу аргументами в пользу MVC...
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099538
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
Теперь мой "эксель". Там куча данных. В простенький объект не впихнешь.

Поэтому первый (и самый сложный) паттерн, требующий освоения это KISS.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099541
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич

4. Сами данные в ячейках

Тут надо подумать. Сами ячейки - это основное "мясо" которое потребляет ресурсы памяти.
И создавать для них ничего не надо. По сути они (ячейки) должны быть частью глобальной
модели (документ Excel) и должны лежать компактненько. В сериализованной форме.

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

IMHO
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099553
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Excel образца 1.0 был написан без этого шаблона. И возможно даже не на С++ а на чистых сях.
Или вообще на паскакале.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099601
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы пишете "для души", то паттерны вам нафиг не нужны. Почти в стихах. Паттерны нужны для совместного программирования кода. Т.е., пришел новый чел, и сразу во всем разобрался. Для души проще и быстрее, поверьте и лучше, обойтись без этого всякого.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099620
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Никанор Кузьмич, сегодня, 12:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1338971&msg=22374952][22374940]
>Есть такой вопрос...
<Как вариант, посмотри здесь .
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099624
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
Если вы пишете "для души", то паттерны вам нафиг не нужны. Почти в стихах. Паттерны нужны для совместного программирования кода. Т.е., пришел новый чел, и сразу во всем разобрался. Для души проще и быстрее, поверьте и лучше, обойтись без этого всякого.

Интересная конечно мысль. Насчет во всем разобраться. Вот исходники OpenOffice https://github.com/apache/openoffice

Сколько времени нам с вами нужно чтобы разобраться есть ли там шаблоны вообще или нет? Используется ли MVC/MVP?
Это кстати синьорный вопрос, я считаю.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099692
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

первая версия:
Multiplan (1982) UCSD Pascal
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099705
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lotus-123 (1983) предположительно на сях с асмом.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099711
ra-001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никанор КузьмичЯ только не помню, где эта статья и по каким ключевым словам я ее нагуглил. Даже такого будет достаточно, это уже лучше, чем ничего.Наверное разработка фреймворк[ов],
посмотри Eclipse, там дядька из go-4 в техническом руководстве был изначально.
Еще системы на Swing-e, там должно быть описание: JetBarain, Oracle - исходники видел.

Никанор Кузьмич1. Если модель - многоуровневая, у меня получается дерево объектов, а далее как-то само собой получается, что параллельно выстраивается дерево контроллеров, и еще какое-то количество view.
2. То же самое, что п. 1, только для каждого логического куска приложения создается тройка M-V-C, а дальше вырастает многоуровневое дерево таких "троек", повторяющее логику обрабатываемых данных.Тут чем недоволен ?
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099735
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
Но ведь 2021-й год на дворе, наверняка про это уже кто-нибудь что-нибудь написал?
Да. Запускаешь Дельфи, кидаешь на форму компонент F1Book - и готовый эксель
Года с 97-го этот компонент появился в поставке на вкладке ActiveX.

Шутка, конечно, но надо либо кататься, либо возить.
Либо своё писать, либо готовое использовать.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099755
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7i
C Excel совершенно неудачный пример. До 2007 года там бинарный формат
(можно чокнуться разбираясь с ним - там пласты разных структур с 1995 по 2003 год)...


Чушь. В Excel используется OleStorage .
Структурированное хранилище с точки зрения программиста выглядит как отдельный диск с папками и файлами, но находится
в все это в отдельном файле. Пользоваться очень удобно, не сложнее чем обычной файловой системой.
Для сохранения сложных иерархических данных в виде дерева ничего лучшего чем OleStorage не придумали в Windows.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099874
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Lotus-123 (1983) предположительно на сях с асмом.

Спроси у Нуралиева. Он
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099876
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Lotus-123 (1983) предположительно на сях с асмом.

Спроси у Нуралиева. Он же 123 стырил и обозвал 1С.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099881
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное он стырил идею. Вряд-ли он мог просто распространять долгие годы IBM-овский продукт
и хорошо себя чувтвовать при этом.

Вот тут бинари

http://old-dos.ru/files/file_1499.html

Есть кто-то в топике спец по реверсу? Не разобрать а хотя-бы посмотреть на чем написано. Обычно ЯВУ оставляют
какие-то свои сигнатуры или магические числа.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099885
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич,
Обычный ексцел - это одна Вселенная
В параллельной Вселенной создаем ексцель-двойник на базе системы InterSystems Cache/Iris.
Они тесно связаны по интернету (интранету) и работают согласованно.

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

Такой "квантовый комп" на порядки усиливает обычный ексцел и придает ему неожиданные возможности.
Есть там и обьекты со свойствами и прочие удобства.
Можем скинуть.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099886
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Раньше 1С так и продавалась. Типа 1С Лотус 123.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099893
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge
mayton,

Раньше 1С так и продавалась. Типа 1С Лотус 123.

Хм... не знал этого.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099896
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7i
C Excel совершенно неудачный пример.
Господа, во-первых, хочу обратить внимание на то, что Excel выбран в качестве примера не потому, что это Excel, а потому, что это программа с очень большим количеством функций и фич. Кому не нравится Excel (не важно, по каким причинам), представьте себе что-нибудь другое на ваш вкус - фотошоп, автокад, ворд, 3D MAX и так далее. Это будет применимо ко всем.

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

mayton
А настройки это что? Открыл окошко. Чего-то покорректировал и закрыл. Какая там MVC? Там даже идентифицировать виды отдельно нельзя. Вобщем... не стоит усложнять на пустом месте.
И тут мы плавно переходим к еще одним настройкам... Ну то есть я сделал какую-то фичу, под нее окно. Не заморачиваясь, накидал какого-то кода. Потом еще фичу, еще окно, еще код. Потом еще десяток. И вот, приехали, здравствуй, бабушка. Куча лапши, все вперемешку. Ровно то, что тут всем форумом ругают уже 20 лет.

Dimitry Sibiryakov
Поэтому первый (и самый сложный) паттерн, требующий освоения это KISS.
Я - чемпион мира по прокрастинации и безделью, KISS прописан у меня прямо в ДНК. С этим проблем нет.

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

ВМоисеев
Как вариант, посмотри здесь .
Спасибо. Посмотрел по диагонали - там все-таки про интерфейсы для баз данных. Близко, но не совсем то. Потом посмотрю повнимательнее.

ra-001
Наверное разработка фреймворк[ов],
посмотри Eclipse
В смысле - исходники Eclipse?

ra-001
Никанор Кузьмич1. Если модель - многоуровневая, у меня получается дерево объектов, а далее как-то само собой получается, что параллельно выстраивается дерево контроллеров, и еще какое-то количество view.
2. То же самое, что п. 1, только для каждого логического куска приложения создается тройка M-V-C, а дальше вырастает многоуровневое дерево таких "троек", повторяющее логику обрабатываемых данных.
Тут чем недоволен ?Да в принципе, на безрыбье - сойдет, просто опасаюсь подвоха...
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099904
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
И тут мы плавно переходим к еще одним настройкам...
Ну то есть я сделал какую-то фичу, под нее окно. Не заморачиваясь, накидал какого-то кода.
Потом еще фичу, еще окно, еще код. Потом еще десяток. И вот, приехали, здравствуй, бабушка.
Куча лапши, все вперемешку. Ровно то, что тут всем форумом ругают уже 20 лет.

Тут всё очень зависит от графического API я так думаю. Эпизодически я кодил на Java/Swing
и там можно было не разделять Model-View-Contr. Просто валишь в 1 объект все три сущности
вместе с логикой. Главное чтоб мультипоточки не было. Swing он ... боится потоков внутри
графических объектов. Вобщем если реакция от бизнес логики быстрая - то можно всё валить
одним кулём. Как будто каждое окошко это актор и бизнес процедура и виджетик для отображения.

Вообще .. мы живем в эпоху упрощений и переосмыслений технологий 20-го века. Мне например
никогда не нравился Win32GDI. Он - очень неудобен для программирования. Хотя на экране
выглядит красиво. Я до сих пор считаю Win95 окошки эталоном аккуратности и минимализма.

MFC конечно сделал надстройку но сущности мира GDI (вот эти хендлы) никуда не делись и "как уши" торчат
отовсюду. Пробовал ради интереса изучать Gnome/GTK. Таже фигня. В каждой функции по 100500
аргументов и половина не используется. Хотя чуть поменьше чем в Win32.

На чём щяс кстати делают UI под Windows Desktop? (Кробе веб приложений конешно)
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099911
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
На чём щяс кстати делают UI под Windows Desktop?
Тоже интересно.
Лично я, если и буду что-то делать, возьму Lazarus

И еще сопутствующий вопрос - кто может дать ссылку на опенсорс репозиторий какого-либо известного продукта, который можно рекомендовать как пример хорошо организованного и документированного кода?

Лет 10 назад я загорелся идеей сделать что-то полезное для Lazarus, скачал исходники, ковырялся неделю, не понял там НИЧЕГО и плюнул. Каментов в коде нет, никакого описания ни в каком виде не нашел. На форуме freepascal.ru был один чувак из Красноярска, который мне обещал ответить на любые вопросы и вообще всестороннюю помощь, но я что-то посмотрел, подумал, что ему придется мне несколько дней лекции читать, прежде чем от меня хоть какой-то толк будет, и решил не мучить зря человека.

И вот сейчас тоже. Решил посмотреть исходники эклипса. На их странице на гитхабе почти 500 репозиториев, какой из них IDE? И еще куча репозиториев на https://git.eclipse.org/, я пока не нашел даже где исходники лежат.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099925
ra-001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никанор КузьмичВ смысле - исходники Eclipse?Не, ежели нет чего-то, что может поднять сорци и хоть как то их систематизировать, то лучше не лезть.Ж-), работа не для хобби.
Именно статьи про фреймворки, в eclipse система плагинов - там можно еще посмотреть,помню они(разрабы)
переписывали их раза два, наверняка давали объяснения. google - в помощь !
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099927
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю ко мне вопрос или нет? ХЗ. Отвечу от себя.

Ссылку на опенсорс репозиторий с правильным структурированным UI приложением дать не могу.
Я - не в теме. Ибо back-end вобщем.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099938
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt

Чушь. В Excel используется OleStorage .

Ну да. В спецификации формата Excel написано:
авторThe Binary Interchange File Format (BIFF) is the file format Microsoft Office Excel
workbooks are saved to (aka *.xls). Microsoft Excel versions 5.0 and later use
compound files (explained later in this document); this is the OLE implementation of the
Structured Storage Model.
У меня есть модуль (с исходниками на С++) работающий напрямую с простыми Excel-файлами .xls версии 4.0
(чтение, запись, отображение, редактирование) согласно BIFF8.
Там можно голову сломать в структурах (модуль писал не я).
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099942
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt
d7i
C Excel совершенно неудачный пример. До 2007 года там бинарный формат
(можно чокнуться разбираясь с ним - там пласты разных структур с 1995 по 2003 год)...


Чушь. В Excel используется OleStorage .
Структурированное хранилище с точки зрения программиста выглядит как отдельный диск с папками и файлами, но находится
в все это в отдельном файле. Пользоваться очень удобно, не сложнее чем обычной файловой системой.
Для сохранения сложных иерархических данных в виде дерева ничего лучшего чем OleStorage не придумали в Windows.
Начиная с Office 2007 это не так, теперь это zip-файл с эксемельками.
P.S. Реализовать свой велосипед типа OleStorage - работа на день. Еще и фичи появятся, которых в виндовом нет.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099944
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7i
Eolt

Чушь. В Excel используется OleStorage .

Ну да. В спецификации формата Excel написано:
авторThe Binary Interchange File Format (BIFF) is the file format Microsoft Office Excel
workbooks are saved to (aka *.xls). Microsoft Excel versions 5.0 and later use
compound files (explained later in this document); this is the OLE implementation of the
Structured Storage Model.

У меня есть модуль (с исходниками на С++) работающий напрямую с простыми Excel-файлами .xls версии 4.0
(чтение, запись, отображение, редактирование) согласно BIFF8.
Там можно голову сломать в структурах (модуль писал не я).Я разбирал структуру xls несколько раз, для клиппера и паскаля писал сохранение.
До 97-го там был один формат, с 97 по 2006(?) - другой (на компаунд файлах, это и есть OleStorage, я так понял). И тот, и тот - бинарный.
2007+ - xml в zip (хотя логическая структура та же).
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099948
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Я разбирал структуру xls несколько раз, для клиппера и паскаля писал сохранение.
До 97-го там был один формат, с 97 по 2006(?) - другой (на компаунд файлах, это и есть OleStorage, я так понял). И тот, и тот - бинарный.
2007+ - xml в zip (хотя логическая структура та же).

До 2007 года (.xls) - BIFF (там куча версий, последняя 8-я). И он совсем не простой,
с наскока там не разберешься...
А после (.xlsx) - XML, с ним немного проще, но тоже нюансов вагон и маленькая тележка.
И не верю, что есть "товарищи с шашками наперевес", которые якобы за пару дней клепают на колене
с нуля свой Excel (с блекджеком и шлюхами).
Это просто нарциссизм какой-то...
Чтобы не быть голословным, прикладываю картинку самописного редактора типа Excel, который умеет читать и сохранять в
формате .xls (версия 4). Используется в одной системе и ныне...
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099971
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7i
И не верю, что есть "товарищи с шашками наперевес", которые якобы за пару дней клепают на колене
с нуля свой Excel (с блекджеком и шлюхами).
Ну я первую версию сохранятора в xlsx написал за пол дня, да. Потом, понятно, дорабатывал, когда форматирование понадобилось, когда что надо.
Но, я ж говорю, у меня большой опыт был в разборе xls-97, а логика хранения не изменилось, и это помогало.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40099994
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
Ну, например, я хочу написать свой Excel

Хотите опыт человека, который действительно написал свой Excel? В своё время передо мной оказалась такая абсолютно реальная и очень актуальная задача. Причина была в следующем: была огромная структура с десятками тысяч пользователей, которые привыкли решать некую задачу приложением в Экселе. Но вот в очередной раз изменилось законодательство - и оказалось, что новых изменений Эксель просто не тянет. Принципиально. Приложение врезается в его лимиты. И большие люди по большой дружбе очень попросили моё высокое начальство помочь.

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

А теперь, собственно, про опыт. Очевидно, что шаблон MVC просто создан для этого дела. И на опыте того проекта я убедился, что те, кто про него пишет - [ладно, опущу свои комментарии].

Если брать то, как обычно описывают MVC, мне всегда хочется задать один вопрос - зачем там контроллер? Ну вот нафига он нужен? Это кусок бессмысленного кода, который занимается исключительно тем, что как дурная прокладка транслирует вызовы из V в M и обратно. Суть контроллера проявляется тогда, когда становится понятно: одному контроллеру соответствуют несколько моделей и несколько представлений. То есть

MMMMMMM <===> C <===> VVV.

Например, в Экселе основное представление - конечно, лист. Но кроме него, есть ещё как минимум два: "список закладок" и "редактор текущей ячейки" (тот, который над ячейками). Моделей - вот их там целая куча. В первую очередь это модель данных (значения ячеек). Во вторую - модель форматирования. В третью - модель выделения (выделенные области). В четвёртую - модель границ (border-ы ячеек). Дальше я просто не помню, их было семь или восемь даже при том, что я реализовал только тривиальную часть экселевского функционала. А при нетривиальной - счёт пошёл бы на десятки.

Каждая модель реализует какой-то аспект функциональности. Всё модульно, чётко, красиво и удобно, очень архитектурно. Но каждая модель должна реагировать на определённые события (например, вызов операции удаления N-й строки). Иногда - похожим образом, иногда - особенным. И контроллер сразу получает свой реальный и конкретный смысл - это концентратор, то место, которое получает событие и переправляет его всем заинтересованным. Именно здесь становится понятно, почему концепции MV недостаточно, и нужно MVC.

И тогда не нужно никаких страшных иерархических структур, всё расписывается наглядно, красиво и просто.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40100016
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Хотите опыт человека, который действительно написал свой Excel?
Ну в общем да, весь топик про это.

softwarer
Если брать то, как обычно описывают MVC, мне всегда хочется задать один вопрос - зачем там контроллер? Ну вот нафига он нужен? Это кусок бессмысленного кода, который занимается исключительно тем, что как дурная прокладка транслирует вызовы из V в M и обратно. Суть контроллера проявляется тогда, когда становится понятно: одному контроллеру соответствуют несколько моделей и несколько представлений. То есть

MMMMMMM <===> C <===> VVV.
О, круто. Интересная мысль, спасибо, возьму на вооружение.
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40100885
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer

А теперь, собственно, про опыт. Очевидно, что шаблон MVC просто создан для этого дела. И на опыте того проекта я убедился, что те, кто про него пишет - [ладно, опущу свои комментарии].

Если брать то, как обычно описывают MVC, мне всегда хочется задать один вопрос - зачем там контроллер? Ну вот нафига он нужен? Это кусок бессмысленного кода, который занимается исключительно тем, что как дурная прокладка транслирует вызовы из V в M и обратно. Суть контроллера проявляется тогда, когда становится понятно: одному контроллеру соответствуют несколько моделей и несколько представлений. То есть

MMMMMMM <===> C <===> VVV.

Хм, интересно.

Я повспоминал, что обычно пишут в ознакомительных статьях про шаблоны MVC/MVP/MVVM - действительно, практически всегда контроллер/презентер/viewmodel использует одну модель и одна вьюху.

Между тем, если взять реальную веб-разработку, там такой фигнёй не страдают. Например, в стандартном шаблоне ASP.NET MVC создаётся контроллер, использующий несколько моделей и вьюх - то, что доктор прописал.

P. S. Если кто ведёт бложик или книгу пишет, - описывайте MV* правильно! Теперь вы знаете, как :)
...
Рейтинг: 0 / 0
Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
    #40101130
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvik,

тынц
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Разработка сложных десктопных приложений (паттерны, приемы проектирования и т. п.)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]