🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Szyk Cech Fri, 20 Sep 2019 18:44
Bazodanowy program konsolowy pod wrapery w Qt i NCurses - jak?!?
#309934
Author: Szyk Cech
Date: Fri, 20 Sep 2019 18:44
58 lines
3883 bytes
Cześć!

Mam problemy filozoficzne... Chcę:
1. Łączyć rozwój, ciekawe projekty i biznes.
2. Chcę programować nowoczesne aplikacje w C++ (na pohybel Java w wersji 
Script!!!).
2.1 Chcę programować modułowo.

By to wszystko osiągnąć mam zamiar stworzyć apkę edukacyjną (na 
wszystkie główne platformy czyli Android, Linux i WinDos).
Ta aplikacja nie ma być radosną twórczością nastolatka, tylko 
przemyślaną i zaprojektowaną apką w stylu aplikacji unix-owych. Jej 
architektura ma być następująca (numeruję poziomy logiczne):
1: [Moja biblioteka narzędziowa] oraz: [Biblioteka bazy danych]
2: [Biblioteka funkcji bazodanowych i klas zachowalnych]
3: [Program konsolowy]
4: [Nakładka w Qt] oraz: [Nakładka w NCurses]

Tu ważne jest że warstwą biznesową aplikacji ma być program konsolowy, 
natomiast okienka (ang. forntend) mają być zrobione zupełnie 
niezależnie. Ma to walory takie, że będę miał czysty silnik apki, bez 
żadnego syfu oraz skryptami w Bash-u czy Python-ie będę mógł dokładnie 
go przetestować.

Pierwotnie chciałem się nieco uniezależnić od Qt. Bo do momentu 
opublikowania tego dokumentu:
https://www.qt.io/blog/2019/08/07/technical-vision-qt-6
coraz dalej się oddalali od korzeni (opętała ich mania własnego języka 
Java w wersji Script). Ten dokument daje nadzieje że odświeżą warsztat 
C++ i to znacznie. Jest to o tyle ciekawe, że wcześniej zdawało się że 
niczego znaczącego w sferze C++ nie będzie.

Jednak cały problem polega na tym, że ta apka konsolowa nie może 
pracować bez pętli zdarzeń (której czysty C++ nie oferuje). Wynika to z 
tego, że muszę zapewnić jednoczesną (lub prawie jednoczesną) obsługę 
wysyłania danych pobieranych w wątkach z bazy danych i obsługę wiersza 
poleceń - chodzi o to, że wciąganie danych z bazy nie powinno blokować 
przyjmowania nowych rozkazów (w sumie martwi mnie też to, że wszystko 
będę pchał do GUI/TUI przez stdout, co prawie na 100% będzie powodowało 
lagi w aplikacji). To w Qt jest bez problemowe w pewnym sensie, bo 
zapewnia pętlę zdarzeń w QCoreApplication. Problem jaki obecnie ma Qt 
jest taki, że wątki nie mogą startować dowolnych funkcji typu 
std::function<>. Inny problem jest taki, że trzeba dociągać rdzeń 
bibliotek Qt do projektu.

Pytanie finałowe:

Jak Wy tworzycie aplikacje konsolowe (ew. demony) w C++ wymagające 
czegoś w stylu pętli zdarzeń?

Jeśli ktoś by powiedział, że powinienem stworzyć demona internetowego 
zamiast programu konsolowego, to powiem, że to było by strzelaniem z 
armaty do wróbla. Bo ma to być bardzo prosty programik konsolowy z nieco 
bardziej wyszukaną obsługą bazy danych (bo w tym kierunku również się 
rozwijam).

Z góry dzięki i pozdro!
Szyk Cech
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads