|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 32410. Ответов 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,549
|
||||||||||||
| 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,549
|
||
| 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,549
|
||
| 05.06.2020, 21:56 [ТС] | ||
|
стр.20 этой pdf - буду стремиться к этому... спасибо, вами уже положено начало моего пути... Добавлено через 13 минут p.s. ошибки многопоточности (точнее способов её применения)
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||||
| 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,549
|
||||||||
| 06.06.2020, 22:10 [ТС] | ||||||||
|
Добавлено через 1 час 26 минут === Python link: пример по линку ниже
threads for Cores
в python
0
|
||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 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,549
|
|||
| 07.06.2020, 16:20 [ТС] | |||
|
но работает здесь на кибере Fibers offer much better performance than threads wiki Fiber:
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 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,549
|
||||||||||||||||||
| 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,549
|
||
| 10.06.2020, 07:59 [ТС] | ||
![]() Перенаправление вывода при запуске процесса всем спасибо!... пошла изучать язык
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 11.06.2020, 19:23 [ТС] | |
|
хоть Pipes и работают с, например, файлами... CoPipe :: Ultimate++...
но идея с handlers в общем и целом ничего... можно по Событию закрытия файла - сбрасывать handlersCount -1... (пока не дойдём до нуля открытых для записи файлов)... чтобы блокировать только счётчик, а не сам future .get()... при подгрузке из сети... хотя блокировать на этапе SaveToFile тоже, наверно, придётся - т.к. hdd-пространство общее... имхо... ок, будем как-то выкручиваться?
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 13.06.2020, 14:59 [ТС] | |
|
очень помогает книга — Стивен С. Дьюхерст, C++. Священные знания...
началА с главы 23 - чтобы нормально вписаться в either std or upp namespace
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 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,549
|
|||
| 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
|
|||
|
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
|
|
| 18.06.2020, 23:16 | |
|
JeyCi, вопрос тупой конечно же, но всё же - а где всё это делается? Я имею ввиду - какие библиотеки используются. В Qt, к примеру, всё это (не могу с абсолютной уверенностью утверждать, потому как ничего подобного не делал) делается без особых проблем, да и примеры найти не проблема.
0
|
|
| 18.06.2020, 23:16 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|