|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 32394. Ответов 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
Проверка двух текстовиков
Сделать скрипт для вывода текстов из текстовиков |
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 03.07.2020, 19:01 [ТС] | |
|
и U++ Semaphore - если понадобиться
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 05.07.2020, 08:32 [ТС] | |
|
код #222 от GoshaM работает на U++ v.13068 от 2019-05-01 (2019.1 ) -- upp-win-13068.7z -- theide32.exe...
Build_Method настройки приложила к посту... Path, Include и Lib настраивала к msys2 c mingw_9_3... надеюсь со временем они поправят свой CoWork и для более новых версий Фреймворка u++
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 05.07.2020, 15:39 [ТС] | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 07.07.2020, 21:06 [ТС] | |||
|
и тем не мененее
в любом случае для перегруженных коллбэками app'ов можно посмотреть:
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 07.07.2020, 21:47 | ||
|
Помимо сигналов-слотов, в Qt также доступны Events.
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||||||||
| 08.07.2020, 10:18 [ТС] | ||||||||||||
|
1) сделала WorkerThread членом класса (=> Call, который унаследован от родного для U++ Ctrl, - перестал быть undeclared) 2) воспользовалась родным свойством U++ потоков IsShutdownThread (сделала по-человечески) 3) проверку IsShutdownThread переместила до локирования Gui для его обновления (иначе снова попадала в deadlock) .h
.cpp
p.s. а с callback'ами всё ещё проще при подстановке их в код вместо GuiLock + Call p.p.s. а закрыться по крестику - это банально Деструктор
0
|
||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 08.07.2020, 10:22 | |
|
JeyCi, в деструктор еще можно добавить Wait, если вы запустили поток, а потом решили закрыть приложение.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 08.07.2020, 10:45 [ТС] | ||||
|
спасибо Добавлено через 3 минуты Добавлено через 15 минут
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 08.07.2020, 12:32 | |||
|
Во многих реализациях системных потоков вы должны обязательно делать join всякому потоку, который был запущен не в режиме detach. Так что вы потенциально оставляете программу в состоянии UB, если не будете делать Wait.
1
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||||
| 08.07.2020, 14:59 [ТС] | ||||||||
0
|
||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 08.07.2020, 16:59 | ||
|
Добавлено через 1 минуту JeyCi, Грубо говоря, попросили занятого друга присоединиться к вашей компании, а потом удивляемся, что он всех задерживает ) Пусть сначала доделает свои дела, а потом приглашайте
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 08.07.2020, 20:29 [ТС] | |||
|
Добавлено через 56 секунд хотя, действительно, тут, наверно, ещё в процессе... ещё не приглашали? ещё не присоединяли после завершения поток? т.е. он ещё живой?
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 09.07.2020, 00:08 | |||
|
Они там ждут завершения в цикле, разбавляя это sleep`ами. У нас бы такой код ревью не прошел. При том, что дождавшись, они все ранво должны вызвать join, если в их системе под капотом потока, например, pthread. А они этого не делают. Добавлено через 9 минут Например, joinable потоки, для которых не вызван join становятся потоками-зомби в unix. Отсюда собственно все вышесказанное мной. https://man7.org/linux/man-pag... oin.3.html
1
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 09.07.2020, 09:54 | |
|
...
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 10.07.2020, 08:30 [ТС] | ||||
|
вобщем оттестила httpRequestЫ в CoWork'ах
![]()
и совет делать с клиента WebSocket::Connection - не вижу смысла, т.к. async_read в U++ с одного сокета только если писать свой класс... и этот зверь всё-таки, видимо, для вывода в html_browser, а не мои текстовики... === а самого родителя request'ов - TCPConnection класс - подрядить иначе, чем 2 указанных варианта - не вижу... да и зачем connection (если sendall по stream с сокета, как в Python в u++ не нашла)... всё свои классы писать надо... да и наверно, действительно, connection - слишком жирно, когда нужны просто ответы на запросы, для сохранения их в БД... имхо - придётся по вопросу файлов с i'net (чужого сервера) остаться на одном потоке ![]() в любом случае - всем спасибо за разбор полётов ![]() Добавлено через 6 минут возможности Qt - (Qnetworkrequest и Websocketserver, по последнему картинки здесь)
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 10.07.2020, 08:41 | ||
|
Это статус, в соответствии с которым программист должен выполнить асинхронное ожидание завершения операции на сокете.
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 10.07.2020, 08:43 [ТС] | |
|
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 10.07.2020, 08:48 | |||
|
https://docs.microsoft.com/en-... or-codes-2
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||
| 10.07.2020, 20:45 [ТС] | |||||||
|
=== честно говоря, тема, видимо, не нова... и в U++ имеется (даже без select'ов)
направьте на путь истинный, please, чтобы уже со спокойной душой ушла в др. ветку... а то как-то поток логической мысли по потокам остановить не возможно... === боюсь, что вы посоветуете async-await, а для него нужен MSVC компилятор... ----- или boost может помочь? ----- хорошее описание асинхронности vs. параллелизма здесь... хоть библиотека и под Node.js рассматривается, но она на C и некоторые умудряются рассмотреть её и для С++ для работы с resumable functions (хотя тоже компилируется MSVC - всё дело в этом переключателе контекстов, который в boost context.h под mingw никак)
![]() Добавлено через 2 часа 1 минуту P.S. нет, всё-таки, наверно, банально как-то надо обработать эту ошибку через метод IsSocketError() класса HttpRequest : public TcpSocket ... и как-то это сделать в асинхронном режиме?Добавлено через 48 минут Добавлено через 1 час 38 минут ВОБЩЕМ инструменты имеются в U++ Кликните здесь для просмотра всего текста
0
|
|||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||
| 10.07.2020, 21:24 | |||||
|
Добавлено через 1 минуту Добавлено через 3 минуты В целом, должно здорово помочь общее представление о программировании сетей, например по книге У.Р.Стивенса. Если классы в U++ - это тонкие обертки над системными сокетами, то различий будет крайне мало, в основном в сторону упрощения. Добавлено через 5 минут Скорее всего это происходит потому, что вы пытаетесь слать данные в неблокирующий сокет без какого-либо контроля, да еще и из разных потоков. Я бы сказал, что это плохая практика. Сделайте очередь запросов к сокету, в нее будете добавлять из произвольного потока, разматывайте очередь через select\poll\etc в каком-то одном потоке. Или верните блокирующий режим, тогда операция будет ждать завершения, но в целом это хуже для вычислений в текущем потоке. Лучше сделайте по первому варианту.
1
|
|||||
| 10.07.2020, 21:24 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 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 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|