|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 34569. Ответов 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
Проверка двух текстовиков
Сделать скрипт для вывода текстов из текстовиков |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 05.06.2020, 20:04 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||||||||
| 05.06.2020, 21:24 [ТС] | ||||||||||||
|
ок спасибо, хоть лямбда запускается!... надо см. тело лямбды и/или accumulate... Добавлено через 1 час 2 минуты в принципе без accumulate - по вашему коду работает
0
|
||||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 05.06.2020, 21:24 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 05.06.2020, 21:27 [ТС] | ||
я ещё пока разбираюсь с <atomic> -- ещё сама себе не верю по этому вопросу... но, надеюсь, библиотека async в её header'e -- уже учла все нюансы... хотя этот int sum к ней не имеет, вроде, никакого отношения...
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 05.06.2020, 21:30 | |
|
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 05.06.2020, 21:56 [ТС] | ||
|
стр.20 этой pdf - буду стремиться к этому... спасибо, вами уже положено начало моего пути... Добавлено через 13 минут p.s. ошибки многопоточности (точнее способов её применения)
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||||||||
| 06.06.2020, 20:07 [ТС] | |||||||||
может future (как результат promise) на этапе fut.get() в C++ как раз и есть тот самый async await в Python или C# ?? ведь помню, что запускала на Py и хороший выигрыш во времени получала (по сравнению с vba)... может есть какое-то подобие этого await в C++ ? а сам future так похож на функциональность await в Py, C#... ![]() Техника написания аналога await/async из C# для C++ p.s. не говорю, что сам async - плох, просто ещё не переделала всё тз на с++... но интересны корни и подобие с async await из др. языков Добавлено через 16 минут p.s. или всё-таки их await - это может быть наш std::this_thread::yield() ?
0
|
|||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 06.06.2020, 20:24 | ||
|
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||||
| 06.06.2020, 22:10 [ТС] | ||||||||
|
Добавлено через 1 час 26 минут === Python link: пример по линку ниже
threads for Cores
в python
0
|
||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
| 07.06.2020, 07:43 [ТС] | ||||
|
Using Fibers (пример работает). Глава 12. Волокна
User-Mode Scheduling
Async / await with fibers Добавлено через 1 минуту C++ Windows / POSIX Fiber Library - lib example Добавлено через 22 минуты вобщем новая Задача (для саморазвития): переключать контексты не на уровне ядра... ![]() как переключаютя контексты на уровне ядра oleg-m1973 отразил в своём блоге (параллельно)...
0
|
||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 07.06.2020, 16:20 [ТС] | |||
|
но работает здесь на кибере Fibers offer much better performance than threads wiki Fiber:
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 07.06.2020, 22:43 [ТС] | |
|
ВЫВОД по Concurrency:
Конкурентность выполняется std::async ... Concurrent queue – C++11 Concurrent object wrapper – C++11 – Part I Concurrent object wrapper – C++11 – Part II никакой экзотики мне пока не надо... разве что c++v20, вероятно, Using C++ Coroutines with Boost C++ Libraries... ----- писать удобные Wrappers - чтобы сделать код reusable... >>> уже послужит пользой нормальной Архитектуре!.. и, полагаю, полезной целью на начальном этапе знакомства с языком... имхо... и дальнейшей читабельности и сопровождаемости (!!) кода... === там же есть пример Simple observer pattern – C++11... если всё-таки потокам (в многопоточности) когда-нибудь понадобиться уведомлять др др о каком-либо событии -- можно (?) попробовать рассмотреть этот вариант...
0
|
|
| 07.06.2020, 22:45 | |
|
Не по теме: JeyCi, тебе не надоело?
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||||||||||||||||
| 09.06.2020, 19:16 [ТС] | ||||||||||||||||||
Win Runtime - очень простенький, асинхи только если на уровне языка реализовать... однажды новый Compiler дал возможность делать нормальные await'ы -- что и даёт теперь возможность писать нормальные корутины на C++ (благодаря появлению так называемых возобновляемых функций (resumable functions). - насколько поняла ), а не синтаксический сахар на C#... НО раньше это добрО тоже как-то разрабатывалось ручками...... и без слова await (для которого нужен VS compiler - точнее его MASM [ml.exe], отвечающий за ассемблер)... в Boost в принципе есть !! lock-free queues неблокирующей природы - для реализации producer'a и consumer'a, полагаю, как вариант (чтобы не сооружать atomic), но будут ли эти producer и consumer неблокирующими на этапе равнозначном future.get() по смыслу, -- ещё надо подумать?? (ведь писали же люди как-то раньше без нового VS компилятора?) Добавлено через 3 минуты P.S. Корутины - по сути кооперативная многозадачность... =========== Добавлено через 57 минут ? а можно и по-старинке - на callback'ах... (видела где-то на stackoverflow) Использование коллбеков
Использование сопрограмм
хотя в одном из предыдущих линков:
чтобы чётко определиться с тз... а Архитектуру - лучше классами -- потом чуть что рефакторить проще... (ещё полистать, как компилятор обрабатывает наследование) Добавлено через 36 минут надо блокировать - чтобы вернуть значение окончания подгрузки... но т.к. оно мне по сути не надо (т.к. записывается в файл(ы)) - то просто счётчик handler'ов на promices организовать - и т.к. сами txt/json файлы небольшие 1-100кб -- то уже на этапе promise последний +1 в принципе = окончание подгрузки... хм, хотя - окончание будет, когда окончит асинхронно грузится самый большой в пуле потоков?!.. всё равно ведь 1-100кб - немного...но вопрос с какого шага вытаскивать handler остаётся -- с шага promise или лучше с шага fut.get ?).. p.s. вобщем на файлах из сети это похоже бессмысленный вопрос - т.к. connection 1 ? а файлы с HDD - по 1-100кб и так быстро прочитаются - даже в количестве ~ 20000...
0
|
||||||||||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||
| 10.06.2020, 07:59 [ТС] | ||
![]() Перенаправление вывода при запуске процесса всем спасибо!... пошла изучать язык
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 11.06.2020, 19:23 [ТС] | |
|
хоть Pipes и работают с, например, файлами... CoPipe :: Ultimate++...
но идея с handlers в общем и целом ничего... можно по Событию закрытия файла - сбрасывать handlersCount -1... (пока не дойдём до нуля открытых для записи файлов)... чтобы блокировать только счётчик, а не сам future .get()... при подгрузке из сети... хотя блокировать на этапе SaveToFile тоже, наверно, придётся - т.к. hdd-пространство общее... имхо... ок, будем как-то выкручиваться?
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 13.06.2020, 14:59 [ТС] | |
|
очень помогает книга — Стивен С. Дьюхерст, C++. Священные знания...
началА с главы 23 - чтобы нормально вписаться в either std or upp namespace
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 16.06.2020, 09:47 [ТС] | |||
|
...жаль, что на win32API - он мне пока не нравится... здесь много инфо (даже упражнения в конце)) Добавлено через 12 минут и лист функций - -( включая •WriteFile)
P.S. WinAPI IOCP Programming: Scalable File I/O
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 18.06.2020, 22:31 [ТС] | |||
|
Последний вопрос, который остался, видимо:
если в main() я запускаю app.Run где App app, a App:TopWindow... т.е. по сути - мой app - это наследник от базового класса моей IDE (который в свою очередь даёт возможность запустить мой GUI)... свой класс App я закодила, как мне удобно (кнопочки, листбокс etc)... НО мне в нём надо использовать экземпляры другого(!) класса - возможно ли это или я должна что-то от чего-то наследовать в таком случае?.. мне думается, что по примеру отсюда - это возможно (без ненужного наследования)............. P.S. и опять останется только вопрос потоков - если GUI (мой класс App) в своём потоке, отдельном от main()... а Download мне надо отдельным потоком от GUI, в последний только уведомить об окончании подгрузки... ну или отдельным потоком ПрогрессБар отражать... то тут и надо, наверно, коллбэками настроить общение между потоками одного приложения - пример... и не путать с потоками для Loop (в U++ за это отвечает CoWork родной класс)... вобщем Multithreading бывает разной - как минимум, эти два случая уметь реализовать: - взаимодействие др. потоков с GUI; - синхронизация и intercommunication (если надо) потоков в рамках распараллеливания алгоритма или мультизадачности... в Ultimate++ примере по линку есть коммент в IDE reference:
вопрос, наверно, звучит, как: "если есть класс GUI и класс Downloader - Можно ли 2 этих класса прогонять в своих потоках - и что для этого надо?"... sorry что такой расплывчатый вопрос -- но в примерах такую многогранную архитектуру обычно не отражают (чтобы и GUI и Dowloader и класс формирования линков и классы для Output от абстрактного условно GetResult)...спрашиваю, чтобы не написать себе сразу в коде проблем... какие подводные камни в такой многопоточности могут появиться ?.. помимо уже озвученной важности синхронизации и не-попадания в deadlocks и race-conditions... вобщем, как обеспечить взаимодействие main() и класса GUI- где какой код делать?.. - наверно, тоже вопрос архитектуры для меня, как человека знакомого только с vba, и незнакомого с ООП и с разработкой графического интерфейса программы... Добавлено через 11 минут вообще кажется, что в main'e можно только app.Run и больше ничего... а всю суть работы засунуть в методы этого класса App:TopWindow (который и есть GUI) ??.. а из него вызывать др. классы или пользоваться их экземплярами... имхо... а то уже в процедурной манере набросала код - работает , пока GUI зависает -- надо разбросать по классам и обеспечить использование классов друг в друге? (т.е. всё переделать... но пока хоть так работает на библиотеках C++ - то, что на vba сломалось для win10)
0
|
|||
|
390 / 335 / 66
Регистрация: 14.10.2014
Сообщений: 1,521
|
|
| 18.06.2020, 23:16 | |
|
JeyCi, вопрос тупой конечно же, но всё же - а где всё это делается? Я имею ввиду - какие библиотеки используются. В Qt, к примеру, всё это (не могу с абсолютной уверенностью утверждать, потому как ничего подобного не делал) делается без особых проблем, да и примеры найти не проблема.
0
|
|
| 18.06.2020, 23:16 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|