Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/131: Рейтинг темы: голосов - 131, средняя оценка - 4.52
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554

Архитектура: парсинг и выгрузка текстовиков

11.03.2020, 10:51. Показов 34588. Ответов 421

Студворк — интернет-сервис помощи студентам
начало было положено в ветке - Считать текстовые файлы из папки - там и возник вопрос об Архитектуре...
Цитата Сообщение от JeyCi Посмотреть сообщение
так и не собрала эти все объекты этого класса в group class...
вроде уже собрала...
осталось отображение создать (типа I_tbl_Show) и пронаследовать ? в разные классы пункта назначения (или на консоль, или в файл, или в БД, или допустим ещё в форму)... N.B. классы (пункты-назначения) делать не надо - эти View уже реализованы разработчиками того ПО, на котором сейчас идёт работа...
а) пока что можно просто прописать функции-члены класса; и по месту использовать, что надо при разработке - в файл или на консоль;
б) в перспективе для Release - реализовать и откомпилировать и выгрузку и в файл, и выгрузку в БД, и отражение в DataGrid...
===
!! Т.Е. если в Release захочется и выгрузку в текст, и в БД, и допустим ещё в форму (например с разных кнопок сделать) - тут уж лучше и писать, как положено, наследование??... -- к слову из прошлой ветки о:
Цитата Сообщение от JeyCi Посмотреть сообщение
полагаю тут Наследования никакого не пригодится?
... или как раз тут (при выборе направления выгрузки) его (наследование) делать??
===
Обоснование выбора уровня Абстракции (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.
чтобы избежать проблем Ромба и такого:
Неоднозначность при множественном наследовании
Цитата Сообщение от DrOffset Посмотреть сообщение
Тут нужно виртуальное наследование.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.03.2020, 10:51
Ответы с готовыми решениями:

Проверка двух текстовиков
Написать прогу на языке Си, проверяющую, совпадают ли тексты в двух файлах #include <stdio.h> #include <stdlib.h> ...

Access модуль объединения текстовиков
Добрый день. Очень нужен модуль access который будет объединять текстовые файлы с предложенной папки (каждый раз разные названия и...

Сделать скрипт для вывода текстов из текстовиков
Здравствуйте! Не могли бы помочь сделать скрипт для вывода текстов песен из текстовиков в папке. Расскажу подробней: есть папка с...

421
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
12.04.2020, 20:35  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от bedvit Посмотреть сообщение
Ищите .lib, а лучше используйте исходники.
посмотрю, спасибо...
видела здесь упоминание про amalgamation... при билдинге в MSVS...
U++ пока осваиваю...
#177 и #179 - всё-таки возможности чтения json'ов SQLite'ом - не всегда пользуются спросом - может, действительно, само чтение неструктурированных данных json - удобнее на стороне кода C++... это не вопрос, а предупреждение посетителям ветки - на SQLite читать json интересно, но проще с нормальной библиотекой на ООП читать много-уровневую по количеству вложенностей строку... имхо
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
14.04.2020, 06:20  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
возможности чтения json'ов SQLite'ом - не всегда пользуются спросом
но в принципе считать можно - главное в свои запасы know-how внести пару рабочих моментов: по fullkey parse Array, parse Object условно... и finalQ.rowid для красоты... и можно разгребать через точку с запятой (как в полноценных бд, не Access)
P.S.
regexp built0in function даёт только true or false... но можно и свою function сделать...
P.P.S.
С++ Выбор контейнера
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
14.04.2020, 17:33  [ТС]
и наконец - online-SQLFiddler
- задаём DDL Create table... и по кнопке Browser - видим привычную глазу UML- диаграмму таблицы... потом можно снова вернуться в DDL Editor... - иногда удобнее 1 раз увидеть, чем 100 раз прочитать свой Create Table код...
e.g.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE dogs (
    TYPE       TEXT,
    color TEXT
);
 
INSERT INTO dogs(TYPE, color) 
VALUES('Hunting','Black'), ('Guard','Brown');
CREATE TABLE cats (
    TYPE       TEXT,
    color TEXT
);
 
INSERT INTO cats(TYPE,color) 
VALUES('Indoor','White'), 
      ('Outdoor','Black');

P.S.
самое интересное - то, что это по сути чистая Структура (или Класс), только последнему можно задать свои методы... а не быть зажатыми в рамки SQL-языка, функционального по своей природе...
т.е. по сути на Клиенте мы можем расширить функционал Сервера, что есть очень удобно... да и такая прямая связь между схемой таблицы БД и классом ООП (например, на С++) - УПРОЩАЕТ как понимание правил нормализации БД через Декомпозицию, где надо, так и способы вытягивания из БД инфо во View из Model(бизнес-логики) и написание Controller'a на любом удобном языке... Выбор языка - Py vs C++ vs Java (для Клиента) ...
Этот Вывод ветки мне понравился больше всего -
- теперь не надо будет всегда лазить в бд с оглядкой на SQL, не надо увлекаться писаниной по массивам, словарям, коллекциям vba, а просто создать нужные (или даже по сути уже имеющиеся классы даже иногда по аналогии с диаграммой бд) и можно расширить их своими методами... в Абсолютно любом направлении... на любом, предпочитаемом для тех или иных задач, языке....
P.P.S.
После всей полученной инфо при знакомстве с языком - думаю, я даже смогу ПО-НОВОМУ посмотреть на Правила Нормализации БД !!! (хоть они и умалчивают о наследовании и пропагандируют связи - но для целей разумной Декомпозиции - лучше знать и то и другое - чтобы малыми затратами состыковать Сервер с Клиентом)... имхо
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
15.04.2020, 05:47  [ТС]
LearnCpp - полная подборка для начинающих
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
24.04.2020, 13:23  [ТС]
Цитата Сообщение от bedvit Посмотреть сообщение
конечную цель: Написать свою СУБД на С++
на это пока не претендую,
а вот проверить корректность имеющейся схемы БД - не помешает...Технологии организации, хранения и обработки данных - начало по проектированию БД - быстро и легко написано... - более подробно о выстраивании Функциональных Зависимостей - Рудикова Л.В. Проектирование Баз Данных
p.s.
всё равно, жаль, что в SQLite нет Хранимых процедур - в этом плане MS SQL Server Express удобнее...
0
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
24.04.2020, 21:23
Цитата Сообщение от JeyCi Посмотреть сообщение
всё равно, жаль, что в SQLite нет Хранимых процедур
В SQLite другая парадигма. Нельзя так сравнивать.

В SQLite вы можете расширить функциональность любой собственной функцией. В некотором смысле такую функцию можно назвать хранимкой.
https://stackoverflow.com/ques... -in-sqlite
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
25.04.2020, 04:15  [ТС]
Цитата Сообщение от ablex Посмотреть сообщение
расширить функциональность любой собственной функцией.
да пока не думала об этом... не об этом речь была...
а о том, что в Хранимой Процедуре можно хранить набор SQL-инструкций, которые запускаются все под одним общим именем... - просто удобно... но в SQLite - это невозможно, надо прописывать все SQL-запросы на Клиенте... а на сервере можно повыбрасывать несколько VIEWs друг на основании друга - НО общий итог, что-то не вытягивается на клиент, только если на клиенте заново пройти цепочку SQL-инструкций...
а SQL-запросы (которые имею) иногда бывают длииинные или со множеством подзапросов вложенных др. в др. ... а легче было бы их написать для выполнения и читабельности просто последовательно др. за др. - и под одним общим именем... но похоже придётся писать длинно и закрученно (вкладывая др в др подзапросы)
0
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
25.04.2020, 17:03
Цитата Сообщение от JeyCi Посмотреть сообщение
но в SQLite - это невозможно, надо прописывать все SQL-запросы на Клиенте...
У SQLite нет понятий сервер и клиент. Это встраиваемая БД.

JeyCi, Вы меня не слышите. Еще раз: вы можете описать любые функции, расширяющие функциональность в нужном вам направлении на С или С++, добавить их для использования в запросах. Таким образом все сложные подзапросы могут быть спрятаны в эти функции.
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
26.04.2020, 16:03  [ТС]
Цитата Сообщение от ablex Посмотреть сообщение
расширяющие функциональность в нужном вам направлении на С или С++,
а я хочу всё на SQL через точку с зпятой... в принципе нашла какой-то WITH t AS (SELECT) - хоть так... в принципе, и BEGIN... COMMIT присобачить можно... в принципе, и через временные таблицы можно, потом их удаление - если небольшие, то может быть рабочий вариант - только для скорости обязательно явно задавать транзакции, ну и ещё в настройках покопаться, чтобы быстродействие придать...
Цитата Сообщение от ablex Посмотреть сообщение
на С или С++, добавить их для использования в запросах. Таким образом все сложные подзапросы могут быть спрятаны в эти функции.
спасибо над этим тоже подумаю...
если у вас есть какой простенький пример чего угодно под рукой (чтобы SQL+C++), отражающий ваш совет - может, приложите в ветке?.. для примера... (если нет, то и ладно, - сама поищу)... в любом случае спасибо за совет - Клиент ведь всё равно буду делать на С/С++

Добавлено через 4 минуты
P.S.
2.1. The PARTITION BY Clause - тоже радуют

Добавлено через 3 минуты
да и вообще мнооого интересного
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
28.04.2020, 06:20  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
пример чего угодно под рукой (чтобы SQL+C++),
кстати имеется в сети - здесь

Добавлено через 2 минуты
и на of-сайте - Create Or Redefine SQL Functions
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
28.04.2020, 14:16  [ТС]
Adding Stored Procedures to SQLite
да и вообще на любом языке
- и простенький пример на SQL Server - для сравнения
p.s.
в принципе и те же самые Loadable Extension (regex) (dll/so) можно подрядить... (как и др либы)

Добавлено через 45 минут
p.p.s.
user-defined function in SQLite
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
29.04.2020, 09:36  [ТС]
и вот интересная статья вырисовывается:
Принцип разделения ответственности и ORM
-- всё-таки Model.Context и View.Context смешать в принципе не получится - если между ними Controller.Context... но некоторые умудряются из View нагадить в Model... - и такое случается, когда MVC ContextS выбираются не спецом по предметной области, а IT'шником, завёрнутом на своих баранах... и оба не услышали др. др.
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
30.04.2020, 20:32  [ТС]
ORM выступает медиатором между кодом доменной модели и базой данных.
- ещё одно доказательство того, что многие архитектурные решения уже реализованы в соответствующих библиотеках - just use it...
p.p.s.
Entity Framework даёт связку appl. и DB через ORM (Object Relational Mapping) и ADO.NET -- правда на C#.NET... и этим значительно сокращает количество кода... - главное - правильно задать binding...
- следует подумать об архитектуре проекта, как о возможности уходить от чистого кодинга к реально удобной и быстрой разработке уже имеющимися инструментами... - теперь понимаю силу правильно выбранных библиотек - они убирают проблему выбора архитектурных решений - уже в себе содержа эти выгодные архитектурные решения - и этим упрощая жизнь разработчику... но такой Edge уже скорее не к чистым либам относится, а к Framework'ам...
на имеющихся же в С++ библиотеках - многое, действительно, ещё придётся писать самим...
-- хотя по линку от DrOffset по ветке ранее - и для C++ ORM доступны...

Добавлено через 2 минуты
или здесь - Новая SQLite ORM для C++

================

Цитата Сообщение от ablex Посмотреть сообщение
У SQLite нет понятий сервер и клиент. Это встраиваемая БД.
спасибо, за правку - автоматически так выражаюсь - имея ввиду код С++, как клиент, и SQLite Tables, как сервер... а, вообще, конечно, встраивается - если build Static All... да и dll'ем встраивается - динамически
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
06.05.2020, 15:10  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
многие архитектурные решения уже реализованы в соответствующих библиотеках
это лучшие достижения на мой view:
C++17 Parallel Algorithms of the Standard Template Library
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
23.05.2020, 09:42  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
это лучшие достижения на мой view:
правда при использовании их всё равно надо самому продумывать и реализовывать thread-safety... полагаю, можно стандартно mutex'ами (пример, на соседней ветке, вероятно)
============

Добавлено через 1 минуту
кстати, паттерны на форуме тоже встречаются:
цепочка обязанностей
--- если разные файлы придётся запускать по разным шагам обработки... имхо (по ТЗ из #1)

Добавлено через 13 минут
=======
Цитата Сообщение от bedvit Посмотреть сообщение
3.Если вы хотите перейти на С++, потому что это быстрее - это не очевидный результат. Возможно стоит поспрашивать у спецов, так ли это и взлетит ли данный подход
Цитата Сообщение от JeyCi Посмотреть сообщение
а на Python - честно говоря, подгрузка взлетает с использованием асинхронности
действительно... там ещё и корутины, похоже, - чтобы взлетело... т.е. async-await...
-- в C++20 хоть корутины и вводят и можно использовать co-await, но async к нему всё равно делать придётся самой... -- это пока уровень выше моего в с++ (да и компилятор gcc_9_3 c корутинами из boost пока не справился -- или созрею на компилятор Microsoft из VS или установлю библиотеки std c++20 когда разгребусь с тем, с чем разбираюсь сейчас)
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
24.05.2020, 06:46  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
кстати, паттерны на форуме тоже встречаются:
цепочка обязанностей
кстати и в IDE могут встречаться уже встроенные реализации некоторых паттернов
Цитата Сообщение от DrOffset Посмотреть сообщение
паттерн прототип. Есть хорошая новость, Qt его поддерживает для QStandardItem
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
27.05.2020, 19:39  [ТС]
м-да... и т.к. файлов на входе будет ~500 шт (разношёрстных) - то всё-таки на Потоки с++ я ещё посмотрю...
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
В реализациях - всегда блокируешь мьютекс m_mx, потом изменяешь или выводишь на экран строку
... например, каждую подгруженную из сети... наконец вырисовываются Input этого тз:
в отдельном от GUI потоке брать String с каждого http и направлять её в WriteFile() [м. наподобие ReadFile() overlapped mode] -- каждую строку в свою [свой поток] асинхронную запись в свой файл... ~500 потоков запустить за раз... ускорится ли? есть ли смысл?
(но, конечно, для такого тз - файлы из сети - всё-таки скорость internet-connection тоже важна, чтобы ускоряться)
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
27.05.2020, 19:57
Цитата Сообщение от JeyCi Посмотреть сообщение
в отдельном от GUI потоке брать String с каждого http и направлять её в WriteFile() [м. наподобие ReadFile() overlapped mode] -- каждую строку в свою [свой поток] асинхронную запись в свой файл... ~500 потоков запустить за раз... ускорится ли? есть ли смысл?
Конечно нет, надо пул потоков использовать.
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
27.05.2020, 20:21  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
надо пул потоков использовать.
да вы правы - это получше... (!спасибо, что расставляете приоритеты, а то на пустой теории я ещё долго буду подбирать соотв. инструменты - когда слово помню, а поможет или что-то др поможет ещё не тестила)...
сама-то я его (thread pool) пока не напишу, наверно... но в Ultimate++ есть
class AsyncWork
Represents a job that can be executed in another thread and can return a value. It is similar to future/promise pattern, but it allows cancelation and is based on U++ thread pool shared with CoWork.
причём coWork это у них multithreading (по количеству ядер, вроде автоопределяется само)...
... вот и застопорилась, как возможностями этой ide, да и языка в целом, соорудить бы такое ещё очень расплывчатое понятие - ускорить (асинхронно и многопоточно)... и не попасть в race condition, если в этой ide родная AsyncWork заявляется, как, видимо, MT... или эту часть кода на std лучше реализовать?.. тогда, может, направите по какому линку?
===
хотя вроде Loop по линкам синхронизации, наверно не потребует?.. - каждый loop вроде не share data?? (для такого тз)

Добавлено через 7 минут
и что использовать - futures/promises (которые пинимают итог) - в той ide это AsyncWork - или variable condition (которые прослушивают постоянно) ? (последнее мне для запросов GET наверно не надо, это наверно для socket'ов)
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
27.05.2020, 20:27
Цитата Сообщение от JeyCi Посмотреть сообщение
сама-то я его (thread pool) пока не напишу, наверно... но в Ultimate++ есть
Воспользуйся std::async(std::launch::async
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2020, 20:27

В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу
Добрый день. При запуске программы выскакивает вот такая вот ошибка. В чем может быть проблема и как ее исправить?

архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников
сабж. кто чем может помочь юному,непонемающему в этой области человеку.желательно книгами.спасибо.

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

Архитектура бд
Я начинающий php-разраб. Пишу свой проект для своего города. Но встал вопрос о архитектуре. Пользователь создает свою страницу с...

Архитектура БД
Доброго времени суток.Задание написать АИС Учёт абонентов телефонной сети предприятия. Краткое описание предметной области: В состав...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru