|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 32494. Ответов 421
Метки вопросы наследования (Все метки)
начало было положено в ветке - Считать текстовые файлы из папки - там и возник вопрос об Архитектуре...
собрала... осталось отображение создать (типа I_tbl_Show) и пронаследовать ? в разные классы пункта назначения (или на консоль, или в файл, или в БД, или допустим ещё в форму)... N.B. классы (пункты-назначения) делать не надо - эти View уже реализованы разработчиками того ПО, на котором сейчас идёт работа... а) пока что можно просто прописать функции-члены класса; и по месту использовать, что надо при разработке - в файл или на консоль; б) в перспективе для Release - реализовать и откомпилировать и выгрузку и в файл, и выгрузку в БД, и отражение в DataGrid... === !! Т.Е. если в Release захочется и выгрузку в текст, и в БД, и допустим ещё в форму (например с разных кнопок сделать) - тут уж лучше и писать, как положено, наследование??... -- к слову из прошлой ветки о: === Обоснование выбора уровня Абстракции (I_tbl_Show со всеми виртуальными функциями): чтобы не дублировать код-сбора-для-выгрузки -- сделать class Table - и класс-интерфейс I_tbl_Show, в котором обозначить virtual-функции выгрузки... эти функции определить в др. классах - типа Interface (IwriteCSV, IwriteDB, IwriteDataGrid)... p.s. классы консоль, файл, бд, DataGrid - не создаём, т.к. эти пункты назначения уже присутствуют... p.p.s. вывести конечные интерфейсы с определёнными методами записи на кнопки... === ИЛИ то, что подчёркнуто чуть выше, стоит реализовать в одном классе Table, и здесь же задать все virtual функции ?? === на скрине: синие - классы, зелёные - интерфейсы (в с++ по сути тоже классы) птицами отмечены уже кое-как реализованные классы (2 птицы) курсивные стрелки - отсутствие наследования ![]() Добавлено через 7 минут вобщем вопрос: class Table и класс I_Tbl_Show - объединить или нет? Добавлено через 10 минут p.p.s. чтобы избежать проблем Ромба и такого: Неоднозначность при множественном наследовании
0
|
||||
| 11.03.2020, 10:51 | |
|
Ответы с готовыми решениями:
421
Проверка двух текстовиков
Сделать скрипт для вывода текстов из текстовиков |
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 17.03.2020, 13:11 | ||
|
JeyCi, Это разные проекты.
Добавлено через 3 минуты То, что у MS есть похожий продукт - означает только то, что у MS есть похожий продукт.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 17.03.2020, 14:55 [ТС] | |
|
ок, приму на заметку... просто уже пробовала на MS SQL Server Express мигрировать... только до толку ещё всё не довела... в 2016й версии есть функции для json разбора... ранее не было...
а что SQLite легко работает с json? === в любом случае спасибо за C++ - нравится мне, что он компилируемый - только разобраться ещё надо с ним... кстати, наверно, поняла, что вы указали про указатели и ссылки в С++... - действительно, часто ведь все нужные они уже толкОво обработаны в классе контейнера... а в чистом виде указатели и ссылки в яз С надо уметь использовать, думаю так... === ?? может, ещё про Деструктор Table что-нибудь посоветуете - надо ли его Table очищать в деструкторе и как? (если этот класс по сути Композиция, а не Агрегация).. хотя в принципе, когда выходим из зоны видимости, т.е. из main'а, насколько понимаю, он сам уже не функционален... имхо
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 17.03.2020, 15:12 | ||
|
JeyCi, если храните объекты внутри Table в векторе по значению, как было показано выше, то деструктор вектора сам все корректно удалит. Т.е. вам ничего писать не надо. Тоже самое касается других контейнеров, если вы храните в них данные по значению.
Добавлено через 3 минуты Добавлено через 1 минуту Если вам нужно "ехать", а не "шашечки", то это решение будет лучше во всех отношениях.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 17.03.2020, 16:29 [ТС] | |||
|
я в Borland'e через ADO выгружала (c MS SQL Server Express), но INSERT INTO из какого контейнера делать не знаю?.. только если поштучно прописывать каждый record в sql-запросе -не уверена, что string-переменная переживёт это... DataGrid пока по сути не нужен, т.к. выгрузка потом из бд текстом для использования в др. софте... или вы про API в самом SQLite? Добавлено через 4 минуты я MS SQL Server Express через Visual Studio ковыряла - всё равно он какой-то тяжеловесный этот VS... Если IDE для работы с SQLite полегче - то стоит посмотреть, вероятно... но если эта бд в памяти работает, то у меня всего-то 2гб озу...
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 17.03.2020, 16:41 | ||||
|
Добавлено через 2 минуты А SQLite и с диском работает нормально.
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||||||
| 17.03.2020, 20:13 [ТС] | ||||||||||
![]() надо пудумать - не люблю на новый софт переходить... ![]() Добавлено через 55 минут в принципе, даже в Ultimate++ есть (см. справку) Using SqlExp
Добавлено через 1 час 48 минут std::vector< boost::variant< T1, T2, T3> > vec; Добавлено через 15 минут здесь
всё-таки ещё 54 способа стоит почитать...
0
|
||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 18.03.2020, 09:44 [ТС] | ||
|
благодаря DrOffset восстановлен в памяти ещё один кирпичик:
надо разделить задачи для выполнения на front-end'e и back-end'e !... (тогда и проектировать front-end будет проще - точнее выделить его задачи) === SQLite3, в качестве back-end'a so-so, т.к. в придачу к тому, что работает в памяти, ещё и:
Администрирование и управление базами данных в библиотеки SQLite === и только после выбора back-end'a и его задач появляется вопрос об Архитектуре front-end'a и предпочтительных Паттернах для дизайна архитектуры Клиента... в зависимости от целей существования проекта... иногда хочется по-проще, но в некоторых местах стОит учитывать - возможно в будущем понадобиться расширение классав и масшатбирование приложения разрабатываемого... === поэтому всё-таки ещё поумаю, а не на скорую руку тупо припаивать паттерны... хотя паттерн Bridge и паттерн Template Method - очень понравились... возможно, для загрузки в обработку разных типов json-структур из текстовиков
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 18.03.2020, 10:38 | ||||
|
Читайте информацию в официальных источниках: https://www.sqlite.org/lang_altertable.html Пойнт в том, что подобная специфика может быть достоинством в некоторых ситуациях. Также хочу напомнить, что начали вы вообще с вектора. Добавлено через 2 минуты
1
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 18.03.2020, 10:58 [ТС] | ||
|
для Output - #2 для Input - задумалась о паттернах - последую вашему совету, изучу паттерны, ручками на бумажке изложу формализованную логику ![]() по JOIN входящих из unordered map или из vector'ов распарсенного - верю, что лучше может быть на back-end'e и без векторов и без словарей... НО например, в excel vba я могу создать пустой Recordset с нужными полями И уже туда через rs.Find склеивать из 3-х файлов по ключам что надо - правда всё-равно придётся бегать циклом по распарсенному... ВОПРОС: есть ли библиотека в С++ для работы подобной с recordset?.. - какой-нибудь подобный контейнер - чтобы его потом сразу RS.Update... ??
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 18.03.2020, 11:09 | ||
|
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 19.03.2020, 13:58 [ТС] | ||
|
и JSON_parse SQLite Sample Databases C-language Interface Specification for SQLite ... и в памяти можно JOIN сделать в SQLite, насколько поняла... вобщем достаточно удобный back-end... правда для real-time ещё обкатать надо... А почему все жалуются, что SQLite — тормозит?
Две причины. Первая — настройки по умолчанию. Они работают на надежность, а не на производительность. Вторая — непонимание механизма фиксации транзакций. По умолчанию после любой команды SQlite будет фиксировать транзакцию (то есть ожидать пока БД окажется в целостном состоянии для отключения питания). В зависимости от режима паранойи SQLite потратит на это от 50 до 300 мс (ожидая окончания записи данных на диск). стоит потестить
Допустимо открывать множество подключений к одной и тоже БД (через имя файла) в одном или разных приложениях.
Система использует механизмы блокировки доступа к файлу на уровне ОС, чтобы это все работало (эти механизмы обычно плохо работают на сетевых дисках, так что не рекомендуется использовать SQlite с файлом на сети). Изначально SQlite работал по принципу «многие читают — один пишет». P.S. можно и на Python - но Архитектура для front-end'a тоже важна будет...
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 23.03.2020, 08:36 [ТС] | |
|
по Архитектуре -
более прикладной блог (e.g. Абстрактная фабрика), нежели просто теоретический с персонажами из страшилок (как в предпоследнем линке поста#57)... как впрочем во многих книжках по языку
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 24.03.2020, 19:44 [ТС] | |
|
bedvit, спасибо, что не забываете...
вот переехала на win10 - а PQ load url стал выдавать какую-то error "Не могу создать безопасное соединение SSL\TLS"... а PQ ведь вроде берёт корни из NET-библиотек... вобщем задумалась я о переезде - надоели эти неожиданности с чужими библиотеками... надо осваивать компилируемый язык... только там тако!й парсинг для составления линков был, что вот теперь вспоминаю ваши работы ... но в любом случае потом эти данные надо в БД направлять... а они разношёрстные (и парсинг их и количество полей на выходе) и Input пока не вырисовывается... кроме как подрядить Шаблонный паттерн и, может, что-нибудь из структурных паттернов... но это потом... === а пока мечтаю на досуге создавать Class c null в тех данных, которые из др. файлов... а потом их дописывать из др. файлов в unordered map отыскивая по ключу (всё-таки мощь индексированного словаря интересна, хоть и коллизии там бывают)... НО это если БД оставлять в Access... но тут уж придётся new задавать для инициализации каждого объекта класса, а не так, как в 30... ой мучают сомнения по скорости при таком подходе (штамповать все new)... === а если переезжать на какое серверное решение бесповоротно и окончательно - то конечно же, JOIN и там можно делать... вобщем пока на распутье... и на SQLite Studio посматриваю - люблю компактные IDE... действительно, входящий поток данных надо соорудить как-то красиво... а вообще в С++ много красивых библиотек ![]() (надо только логику формализовать - а у меня мозг пока забит переделками прежнего)
0
|
|
|
|
|
| 25.03.2020, 12:18 | |
|
Свой велик всегда хорошо, когда есть время и хочется понять механизм, самому собрать инструментарий, прокачать свой уровень. Когда пришло понимание, что и как работает, а времени свободного не стало, уже можно не изобретать свой велосипед, а воспользоваться зарекомендовавшими себя библиотеками, инструментами. Вариант с SQLite, предложенный DrOffset, я бы рассмотрел как альтернативу своему велосипеду, ну или как дополнение к нему.
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 25.03.2020, 19:13 [ТС] | ||
|
p.s. а SQLite посматриваю...
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 28.03.2020, 10:59 [ТС] | |
|
offtop:
часто задавалась вопросом - для чего .rc files - ответом по линку в статье "Building Win32 GUI Appl with MinGW" ... но это уже о дизайне GUI... Добавлено через 1 час 37 минут сборки MinGW - есть сразу с BOOST-библиотеками - правда, вроде все/многие x64-native собрать свою - здесь Добавлено через 3 часа 37 минут MSYS2 with pacman - тоже имеет достаточно пакетов для разработки (filesystem, pcre, curl etc.)... но в отличие от boost нет библы для json (в boost - это Property Tree [ptree.hpp] и json_parser.hpp)
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||||||||
| 28.03.2020, 15:06 | ||||||||||||
|
boost в MSYS2 можно поставить.
boost - это набор библиотек объединенных общим названием и стилем. MSYS2 - это среда, окружение. Улавливаете?
0
|
||||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||
| 28.03.2020, 17:19 [ТС] | ||
|
p.s. пытаюсь покопаться в связке IDE+GCC+Libs... чтобы найти/уметь устанавливать/настраивать для себя удобную среду разработки (Development Environment)... Добавлено через 31 минуту а вообще http+jsons+sqlite в Ultimate++ уже покрутила - по-частям работают библы ок... про Архитектуру всего в целом ещё думаю...и думаю, какой GUI рисовать по-быстрому... или на др. IDE?... [чтобы общую архитектуру всего проекта заранее прикинуть для себя] вот либы и компиляторы обычно подключить можно... но GUI (хоть это тоже либы), пока вижу только привязкой к возможностям конкретной IDE ...хотя в принципе в Ultimate++ сделать форму с календарём и кнопкой проблем быть не должно... но вдруг потом чего масштабировать захочется... - чтобы код не пришлось адаптировать под др. IDE - наверно, GUI всё равно придётся подправлять, если в др. IDE... как-то универсальности шаблонов не наблюдается, а по сути,, так весь GUI - это сплошной C, отрисовывающий пиксели, мне так кажется, всегда... имхо Добавлено через 18 минут Windows Forms и WPF не предлагать - в Visual Studio пока не хочу - тяжёлая она... Code:Blocks симпатичный, как и Ultimate++... но в нём вроде нет родного json.h... только если boost'овский Propety Tree брать (ptree.h и json_parse.h)
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 28.03.2020, 17:40 | |
|
IDE QtCreator отдельно + из MSYS2: компилятор (mingw или clang), Qt для GUI, и остальное. Как вариант.
1
|
|
| 28.03.2020, 17:40 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|