Szybki sposób do light-weight aplikacji desktopowej

Szybki sposób do light-weight aplikacji desktopowej
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
1

Witam wszystkich.

Przymierzam się do napisania aplikacji desktopowej, którym głównym targetem będzie Windows. Jeśli da się prosto zrobić żeby nie dużym kosztem chodziła też na Unixach to spoko.

Języki w jakich posługuje się płynnie to: Java, C#, Python, JavaScript, PHP, Kotlin, Ruby, Clojure, Web (html/css); gorzej znam Haskell, C++, Pascal/Delphi, Go, i pewnie kilka innych o których nie pamiętam.

Wiem że całkiem spoko można robić apki desktopowe w XAML (c#) albo FXML (Java), ale może znacie jeszcze jakieś inne spoko technologie?

Nie chcialbym spędzić nad tą apką dłużej niż 3 tygodnie; więc chciałbym jakąś techonologię która pozwoli zrobić pół normalną desktopową apkę w pół miesiąca. Polecacie jakąś taką technologię?

.andy
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 3 lata
  • Postów:1524
3

Electron :D

A tak serio, wydaje mi się że chyba JavaFX by był dobrym podejściem, bo zerowym kosztem uzyskasz aplikację na różne systemy. Co ta aplikacja ma konkretnie robić?


Software is like sex: it's better when it's free.
- Linus Torvalds
edytowany 2x, ostatnio: .andy
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
.andy napisał(a):

Co ta aplikacja ma konkretnie robić?

A jakie to ma znaczenie?

edytowany 1x, ostatnio: Riddle
99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:2420
0

Przymierzam się do napisania aplikacji desktopowej, którym głównym targetem będzie Windows

WinForms, zerowy próg wejścia przeciągasz guziki na formatkę i już, działa. Dużo darmowych kontrolek. W WPF trzeba się trochę namęczyć żeby ogarnąć stylowanie i inny crap.
JavaFX jest niedorobiona, mało kontrolek, trzeba się męczyć z modułami. Używaj tylko jeżeli ma być cross-platform lub na raspberry PI.

Elektron to wcale nie taki głupi pomysł.

No i ostatnia opcja zrób weba zamiast Desktopa...


Holy sh*t, with every month serenityos.org gets better & better...
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
0xmarcin napisał(a):

No i ostatnia opcja zrób weba zamiast Desktopa...

Nie, to musi być desktop.

99xmarcin
No to winforms... WinForms czasami udaje się na Mono odpalić np. tak działa GitExtensions na LInuxie...
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Poznań
  • Postów:8753
2

Języki w jakich posługuje się to [...] Pascal/Delphi

Skoro kojarzysz Delphi to instalujesz Lazarusa.

da się prosto zrobić żeby niedużym kosztem chodziła też na Unixach (*)

Ten sam projekt kompilujesz na Windows/Linux/Mac. Jest to całkowicie darmowe i otwartoźródłowe środowisko, a do tego masz prawo tak stworzoną aplikację puszczać dalej w świat odpłatnie, nic Cię nie ogranicza.

Tak samo, jak @0xmarcin napisał o WinForms - WinForms, zerowy próg wejścia przeciągasz guziki na formatkę i już, działa :D

__
(*) Co do kompatybilności - zakładam, że chcesz zwykłą aplikację okienkową, czyli korzystasz z LCL - Lazarusowego odpowiednika VCL z Delphi. Bo jeśli będziesz się bawić w jakieś niskopoziomowe działania, będziesz operować bezpośrednio na komunikatach albo korzystać z wywołań WinAPI, to mogą się pojawić lekkie kłopoty podczas przenosin. Ale jeśli się ograniczysz do obiektów oferowanych przez środowisko - czyli TForm, TButton, TImage, TTimer itp. to nie powinno być żadnych problemów. Sam parę razy tworzyłem apkę, którą działała na Windows i Linux. Na swoich kompach mam głównie Linuksa, ale na wirtualkach mam Windowsy. Udostępniałem Windowsom katalog z projektem pisanym pod Linuksa i bez kłopotu ten sam kod się kompilował i odpalał na Windows. Jakby co to mamy forumowego eksperta od Lazarusa - @furious programming więc masz skąd uzyskać wsparcie ;)


edytowany 4x, ostatnio: cerrato
.andy
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 3 lata
  • Postów:1524
1

@0xmarcin:

JavaFX jest niedorobiona, mało kontrolek, trzeba się męczyć z modułami. Używaj tylko jeżeli ma być cross-platform lub na raspberry PI.

Nie twierdzę, że jest mega dużo ale jak się wejdzie chociażby na dół tej strony i poklika, to jednak trochę tego jest.
No i dlaczego jest niedorobiona?

WinForms, zerowy próg wejścia przeciągasz guziki na formatkę i już, działa.

SceneBuilder i masz podobnie, wrzucasz kontrolki na forma, potem podpinasz pod kontroler i gotowe.

Co ta aplikacja ma konkretnie robić?
A jakie to ma znaczenie?

Pytam głównie z ciekawości ale i dlatego aby stwierdzić czy się dana technologia nada. Gdybyś jednak chciał iść w stronę Javy, to zerknij na ten tutorial http://tutorials.jenkov.com/javafx/index.html


Software is like sex: it's better when it's free.
- Linus Torvalds
edytowany 1x, ostatnio: .andy
99xmarcin
Spróbuj się do tray'a dodać JavaFX, to się okaże że JWT potrzebne... Standardowe kontrolki bardzo ubogie, zwłaszcza grid. Długo mógłbym na ten temat pisać trochę do JavaFX przysiadłem...
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
cerrato napisał(a):

Języki w jakich posługuje się to [...] Pascal/Delphi

Skoro kojarzysz Delphi to instalujesz Lazarusa.

Sorry, ale mam wrażenie że Lazarus jest takim "topornym" rozwiązaniem, nie specjalnie widzę to jak mógłbym szybko zrobił w tym pełnoprawną aplikację w ciągu dwóch tygodni. Poza tym, kiedyś jak próbowałem odpalić na tym testy jednostkowe to myślałem że mnie strzeli.

(*) Co do kompatybilności - zakładam, że chcesz zwykłą aplikację okienkową, czyli korzystasz z LCL - Lazarusowego odpowiednika VCL z Delphi. Bo jeśli będziesz się bawić w jakieś niskopoziomowe działania, będziesz operować bezpośrednio na komunikatach albo korzystać z wywołań WinAPI, to mogą się pojawić lekkie kłopoty podczas przenosin. Ale jeśli się ograniczysz do obiektów oferowanych przez środowisko - czyli TForm, TButton, TImage, TTimer itp. to nie powinno być żadnych problemów. Sam parę razy tworzyłem apkę, którą działała na Windows i Linux. Na swoich kompach mam głównie Linuksa, ale na wirtualkach mam Windowsy. Udostępniałem Windowsom katalog z projektem pisanym pod Linuksa i bez kłopotu ten sam kod się kompilował i odpalał na Windows. Jakby co to mamy forumowego eksperta od Lazarusa - @furious programming więc masz skąd uzyskać wsparcie ;)

Nie, nic niskopoziomowego, bo potrzebuję to dewelopować najszybciej jak się da.

Potrzebuję tylko kilka przycisków, text fieldów, reakcji na skróty klawiszowe i to wszystko.

edytowany 1x, ostatnio: Riddle
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Poznań
  • Postów:8753
0

Owszem, Lazarus jest toporniejszy w obsłudze niż Delphi, przesiadka z czegoś typu AndroidStudio czy VSCode to taka trochę podróż w czasie, ale po pierwszym szoku szybko zaczniesz w tym pisać.

W ogóle - dobrze by było, jakbyś napisał coś więcej o tej apliakcji - co to ma robić, jak bardzo skomplikowana itp. W każdym razie - to co mówisz, czyli jedno okienko z kilkoma przyciskami i Editami to naprawdę obsłużysz. I nawet nie wiem, po co chcesz do czegoś takiego pisać testy, trochę to wygląda jak przysłowiowa armata na komara :P

jak mógłbym szybko zrobił w tym pełnoprawną aplikację w ciągu dwóch tygodni

No ja też tego nie widzę. Okienko z paroma elementami to jest robota na 2-3 godziny a nie 2 tygodnie :P


edytowany 1x, ostatnio: cerrato
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
cerrato napisał(a):

Owszem, Lazarus jest toporniejszy w obsłudze niż Delphi, przesiadka z czegoś typu AndroidStudio czy VSCode to taka trochę podróż w czasie, ale po pierwszym szoku szybko zaczniesz w tym pisać.

No, właśnie nie chcę takiej podróży w czasie :D

W ogóle - dobrze by było, jakbyś napisał coś więcej o tej apliakcji - co to ma robić, jak bardzo skomplikowana itp. W każdym razie - to co mówisz, czyli jedno okienko z kilkoma przyciskami i Editami to naprawdę obsłużysz.

Ale serio, jakie to ma znaczenie co ona będzie robić? :D

I nawet nie wiem, po co chcesz do czegoś takiego pisać testy, trochę to wygląda jak przysłowiowa armata na komara :P

Eee, co?

Z TDD znacznie szybciej i lepiej się wytwarza aplikacje. Wręcz bym powiedział że wolniej by mi poszło bez testów.

cerrato napisał(a):

No ja też tego nie widzę. Okienko z paroma elementami to jest robota na 2-3 godziny a nie 2 tygodnie :P

No way

edytowany 1x, ostatnio: cerrato
cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Poznań
  • Postów:8753
2

No, właśnie nie chcę takiej podróży w czasie

No to już Twoja decyzja - chcesz mieć śliczne IDE, czy po prostu zrobioną robotę.

Ale serio, jakie to ma znaczenie co ona będzie robić? :D

Takie, że mając więcej wiedzy o tym, co chcesz robić, jak to ma wyglądać, na ile skomplikowana będzie itp, łatwiej jest coś doradzić.

Wręcz bym powiedział że wolniej by mi poszło bez testów.

No ja jestem innego zdania, ale nie idźmy w tą stronę, bo i tak nikt nikogo nie przekona, za to temat wątku się rozmyje. W Każdym razie - trochę dajesz sprzeczne sygnały. Najpierw piszesz o czymś prostym, parę przycisków i editów, a potem chcesz wprowadzić korpo-zasady w stylu TDD czy testy. Można, ale to jest - jak pisałem - pójście z armatą na komara. Albo apka prościutka i light-weight, albo robimy korpokombajn.

Okienko z paroma elementami to jest robota na 2-3 godziny a nie 2 tygodnie :P
[...]
No way

Chyba musimy rozdzielić dwie rzeczy - stworzenie UI oraz logiki. Bo może i te 2 miesiące będziesz sobie pisać to, co ta aplikacja będzie mielić, ale samo wyklikanie okienka (czyli de facto tego, o co pytasz - stworzenie aplikacji desktopowej) to jest chwila. A same algorytmy możesz sobie napisać w totalnym oderwaniu od UI, pobierające chociażby input z konsoli albo pliku tekstowego.


edytowany 3x, ostatnio: cerrato
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
cerrato napisał(a):

No, właśnie nie chcę takiej podróży w czasie

No to już Twoja decyzja - chcesz mieć śliczne IDE, czy po prostu zrobioną robotę.

Nie chodzi o to czy śliczne czy nie śliczne, tylko czy użyteczne.

Ale serio, jakie to ma znaczenie co ona będzie robić? :D

Takie, że mając więcej wiedzy o tym, co chcesz robić, jak to ma wyglądać, na ile skomplikowana będzie itp, łatwiej jest coś doradzić.

Mówiłem już. Od warswty użytkownika oczekuję tylko kilku przycisków, pól do wpisywania oraz skrótów klawiszowych.

Wręcz bym powiedział że wolniej by mi poszło bez testów.

No ja jestem innego zdania, ale nie idźmy w tą stronę, bo i tak nikt nikogo nie przekona, za to temat wątku się rozmyje. W Każdym razie - trochę dajesz sprzeczne sygnały. Najpierw piszesz o czymś prostym, parę przycisków i editów, a potem chcesz wprowadzić korpo-zasady w stylu TDD czy testy. Można, ale to jest - jak pisałem - pójście z armatą na komara. Albo apka prościutka i light-weight, albo robimy korpokombajn.

Ale jak korpozasady? Ja autentycznie jak piszę swoje prywatne aplikacje to zaczynam od testów, bo tak się szybciej i lepiej tworzy aplikację. Tak jest wygodniej, dla mnie przynajmniej.

Okienko z paroma elementami to jest robota na 2-3 godziny a nie 2 tygodnie :P
[...]
No way

Chyba musimy rozdzielić dwie rzeczy - stworzenie UI oraz logiki. Bo może i te 2 miesiące będziesz sobie pisać to, co ta aplikacja będzie mielić, ale samo wyklikanie okienka (czyli de facto tego, o co pytasz - stworzenie aplikacji desktopowej) to jest chwila. A same algorytmy możesz sobie napisać w totalnym oderwaniu od UI, pobierające chociażby input z konsoli albo pliku tekstowego.

No taki mam plan. Dlatego na UI nie chcę tracić dużo czasu, dlatego pytam o technologię.

cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Poznań
  • Postów:8753
0

Od warswty użytkownika oczekuję tylko kilku przycisków, pól do wpisywania oraz skrótów klawiszowych.
[...]
na UI nie chcę tracić dużo czasu, dlatego pytam o technologię

No to wydaje mi się (napiszę to po raz ostatni, bo nie ma sensu w kółko klepać tego samego), że Lazarus będzie idealną opcją w Twoim przypadku. Zresztą, skoro UI to jest sprawa trywialna i wtórna, to możesz sobie to pisać w darmowej Delphi Community, a potem przenieść to Lazarusa i wtedy budować na Linuksa i Windowsa. Jeśli zapakujesz swoją logikę do osobnego modułu, to potem wszystko sprowadzi się do dodania tego modułu do uses Twojego projektu oraz podpięcia wywołań funkcji z tego modułu w reakcji na wciśnięcia przycisków przez użytkownika.


S9
  • Rejestracja:około 4 lata
  • Ostatnio:około 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
3

Jeżeli taka aplikacja nie ma nic hardcorowego zrobić to może QT? C++ nie jest łatwy, ale jak coś umiesz z C++ to QT takie coś szybko zakodzisz.


Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
0

Tak naprawdę szybko to chyba nadal góruje nad wszystkim WinForms, ale oczywiście siłą rzeczy target to Windows.

Jeśli chcesz wykorzystać zwinność i uniwersalność HTML/CSS to wspomniany już Electron lub podobne rozwiązania.

Warto też sprawdzić .Net MAUI, Zarówno wszystkie zalety (i wady) C# i .Net, jak i multi-platform. Dodatkowo nie jest to przestarzała technologia jak WinForms czy Java Swing/FX, a wręcz przeciwnie.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
JU
Ale MAUI nie jest jeszcze dostępne dla produkcyjnych rozwiązań.
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:5 minut
0

Parę dni temu robiłem research w jaki sposób można zrobić apkę w C#, biorąc pod uwagę Windows App SDK (WinUI3 / dawniej Project reunion), MAUI (korzysta z winappsdk), Uno (korzysta z WinUI2, da się teoretycznie pogodzić z WinAppSDK) i stare WPF / WinForms.
W nowym MAUI masz template żeby osadzić po prostu stronę blazora w aplikacji. Możesz się z nią łatwo komunikować i łączyć z natywnymi wywołaniami systemowymi. Czyli tak naprawdę masz aplikacje webową osadzoną w aplikacji, ale można to zrobić 3 kliknięciami i masz ogarnięte wszystko od maca, przez androida, iphona i na windowsie kończąc. No właśnie kończąc - bo obsługi linuksa oficjalnej nie ma, została zostawiona społeczności i trzeba się dodatkowo napracować, a obsługa windows też jest połowiczna bo zrobienie zwykłej aplikacji unpackaged jest jeszcze niemożliwe w wersji stabilnej; teoretycznie możliwe w wersji preview, ale mi się nie udało tego ze sobą pogodzić. W preview nie ma jeszcze obsługi designera (ale w sumie nie jest potrzebna bo hot reload). Nie ma obsługi trimmed ani self contained application, ogólnie wszystko jest rozkopane i w powijakach.

Moje wnioski są takie że obecnie najlepiej użyć starych technologii WPF do windowsa i osobno apkę w Uno dla reszty lub MAUI jeśli nie przeszkadza Ci pakowanie appki w msix, zmniejszone uprawnienia i duży rozmiar (minimum 100MB). Albo poczekać na kolejne releasy MAUI / Uno / Windows APP Sdk żeby mieć wszystko w jednym.
WinForms bym odpuścił bo ciężej przenieść na inne platformy.
Na bieżącą chwilę do "zwykłej" appki która nie musi być super wydajna, nie przetwarza dużej ilości danych i nie musi się jakoś specjalnie odnosić do systemowych api wybrałbym electron.
Przykładem dobrej aplikacji w electron jest visual studio code, ale każdy chyba zauważy że nie jest zbyt szybki a pliki o wadze 3 MB uznaje za ogromne i pyta czy na pewno chcemy je otworzyć.

TomRiddle napisał(a):

Ale serio, jakie to ma znaczenie co ona będzie robić? :D

ma bardzo duże. Do większości zastosowań electron jest idealnym rozwiązaniem, ale na program do obróbki grafiki / muzyki / video, klient poczty, czy komunikator się średnio nadaje. To w zasadzie kolejny odpalony google chrome. parę takich apek i po ramie


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 3x, ostatnio: obscurity
Ktos
BTW, jest jeszcze Avalonia - chyba popularniejsza niż Uno. Jest na Linuksa ;)
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
TomRiddle napisał(a):

Ale serio, jakie to ma znaczenie co ona będzie robić? :D

ma bardzo duże. Do większości zastosowań electron jest idealnym rozwiązaniem, ale na program do obróbki grafiki / muzyki / video, klient poczty, czy komunikator się średnio nadaje. To w zasadzie kolejny odpalony google chrome. parę takich apek i po ramie

Nie, nie wydaje mi się.

Odpowiednie zarządzanie ładowaniem zasobów i nie powinno być problemem.

Myślę że ludzie pytają co będzie robić apka albo z ciekawości, albo żeby dopasować pomysł pod technologię którą zaproponowaliśmy, a ja już pisałem kryteria na jakich mi zależy.

Szybki początkowy development, prostu UI, buttony, text fieldy i skróty klawiszowy, aplikacja na desktopa na Windows, jak się da małym kosztem to też może być na linux/unix.

To są jedyne kryteria jakie wchodzą w grę, inne, jak perofrmance, albo apka mobilna nie ma żadnego znaczenia dla mnie.

obscurity
ale to nadal javascript. Uważasz że w javascript można napisać aplikację tak samo wydajną jak w c++?
Riddle
@obscurity mówiłem że performance nie ma znaczenia dla mnie
Riddle
@obscurity odpowiadając na pytanie, oczywiście że nie.
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
0xmarcin napisał(a):

Przymierzam się do napisania aplikacji desktopowej, którym głównym targetem będzie Windows

WinForms, zerowy próg wejścia przeciągasz guziki na formatkę i już, działa. Dużo darmowych kontrolek. W WPF trzeba się trochę namęczyć żeby ogarnąć stylowanie i inny crap.

No nie wiem, a jak jest z responsywnością tych kontrolek?

Czy to nie będzie tak że jak je położę, a potem zmienię rozmiar okna to się albo rozjadą albo zostaną tak jak były?

TT
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 5 godzin
  • Postów:8
1

Polecam Python + PyQT5 / PySide2 lub nawet PySimpleGUI ;)

Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
tom_tom napisał(a):

Polecam Python + PyQT5 / PySide2 lub nawet PySimpleGUI ;)

A da się pod to jakoś łądnie dobrać kolory i style? Tak żebym mógł zmienić łatwo wyglądy kontrolek?

edytowany 1x, ostatnio: Riddle
AL
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 3 lata
  • Postów:1493
1

+1 dla QT, czy to w Pythonie czy w C++. Jak chcesz żeby to było graficznie bardzo ładne to jeszcze obczaj QML z tej samej stajni.

Wielkich potrzeb edycji stylu nie miałem ale imho jest znośnie, obczaj: https://doc.qt.io/qt-5/stylesheet-examples.html

Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
alagner napisał(a):

+1 dla QT, czy to w Pythonie czy w C++. Jak chcesz żeby to było graficznie bardzo ładne to jeszcze obczaj QML z tej samej stajni.

Wielkich potrzeb edycji stylu nie miałem ale imho jest znośnie, obczaj: https://doc.qt.io/qt-5/stylesheet-examples.html

Dzięki za pomysł, obczaję.

edytowany 1x, ostatnio: Riddle
several
  • Rejestracja:ponad 15 lat
  • Ostatnio:około godziny
3

To ja polecę coś bardziej egzotycznego, ale tylko dlatego, że OP zamieścil pytanie

ale może znacie jeszcze jakieś inne spoko technologie?

Jeśli C++ Ci nie straszny to DearImgui. Leciutka binarka i ładny efekt końcowy, przykład https://github.com/dfeneyrou/palanteer. Z mniej oczywistych plusów - gotowe przykłady kompilacji do WASMa https://floooh.github.io/sokol-html5/imgui-highdpi-sapp.html

Minusy

  • C++
  • Żadnego WYSIWYG - cały wygląd trzeba skodzić w C/C++
  • Inny paradygmat tworzenia GUI - immediate mode

edytowany 1x, ostatnio: several
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
several napisał(a):

To ja polecę coś bardziej egzotycznego, ale tylko dlatego, że OP zamieścil pytanie
ale może znacie jeszcze jakieś inne spoko technologie?

Jeśli C++ Ci nie straszny to DearImgui. Leciutka binarka i ładny efekt końcowy, przykład https://github.com/dfeneyrou/palanteer. Z mniej oczywistych plusów - gotowe przykłady kompilacji do WASMa https://floooh.github.io/sokol-html5/imgui-highdpi-sapp.html

Minusy

  • C++
  • Żadnego WYSIWYG - cały wygląd trzeba skodzić w C/C++
  • Inny paradygmat tworzenia GUI - immediate mode

No, dzieki za pomysł, ale raczej nie sądzę żeby C++ się wpisywał w schemat "rapid development", a na tym mi zależy jednak.

edytowany 1x, ostatnio: Riddle
LU
  • Rejestracja:około 15 lat
  • Ostatnio:5 miesięcy
1

Progressive Web App.

Zasada działania jest identyczna jak Electron z pewnymi dużymi zaletami, np. zamiast pakowania całego runtime NodeJS i headless chrome używasz runtime przeglądarki.

Do dyspozycji masz wszystkie dostępne frameworki JSowe typu Vue, React, Angular czyli cały Virtual DOM. Skalowanie aplikacji w zależności od rozmiaru monitora, stylowanie w SCSS lub każdym dowolnym innym supersecie CSS. Ogromne zasoby pakietów NPMa.
Możesz dorzucić TypeScript a przy użyciu Web Assembly masz dostęp do niskopoziomowych funkcjonalności i renderu grafiki. Daje to też możliwość napisania strony w połowie w Golangu, inną w C++ a jeszcze inną w C# - tak długo jak dany język wspiera kompilację do modułu WASM.
Apka może działać zarówno w trybie desktopowym - instalowana z web, być wyświetlana jako strona WWW oraz na systemie mobilnym - iOS/Android gdzie działa Chrome.

edytowany 6x, ostatnio: Lucassith
obscurity
czyli odpala się w przeglądarce? czym to się różni od zwykłej apki webowej postawionej lokalnie?
LU
@obscurity: a czym różni się apka Electronowa od zwykłej webowej postawionej lokalnie? :) PWA nie różni się niczym od Electrona oprócz tego, że mając 3 apki Electronowe i 3 PWA w przypadku tego pierwszego instalujesz sobie 3x headless Chrome, każda po 200MB. W przypadku PWA uruchamiając aplikację desktopowe odpalasz to w kontekście jednej systemowej przeglądarki. Przy instalacji apki PWA pobierasz wszystkie niezbędne zasoby do działania w trybie offline. Polecam -> https://xkcd.com/1367/
Xarviel
Nowe wersje Firefoxa nie mają chyba wsparcia dla PWA
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:5 minut
1

Taki mały update - wczoraj po południu premierę miała stabilna wersja WindowsAppSDK (dawniej project reunion - UWP + Win32) 1.0 gotowa na używanie na produkcji. Główną zmianą było skupienie się na apkach unpackaged czyli natywnych (nie UWP) z dostępem do pełnego api windowsa.

Jeszcze są małe zgrzyty, ale udało mi się to pogodzić z Uno i w kilkanaście minut sklecić hello world ze wspólnym kodem działające na android, linux, windows (unpackaged), windows (uwp), webassembly i teoretycznie na mac i iphone (nie sprawdzę bo trzeba mieć maca i chyba konto deweloperskie).
Jedyny minus jaki obecnie widzę - nie ma jeszcze obsługi trimmingu - aplikacja hello world zajmuje 98MB + oprócz tego wymaga zainstalowania 50MB windowsapp runtime redist = 150MB! Trimming będzie na początku przyszłego roku więc jest szansa że zanim ukończysz aplikację będzie można go użyć, ale runtime się raczej nie zmniejszy.
Drugi minus - zajęło mi to kilkanaście minut tylko dlatego że przy ostatnim researchu już trochę ogarnąłem co z czym się je - uruchomienie tego od zera w trybie unpackaged nie ma jeszcze gotowej templatki i można natrafić po drodze na sporo nic nie mówiących błędów


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 1x, ostatnio: obscurity
marcio
  • Rejestracja:ponad 17 lat
  • Ostatnio:39 minut
2

Jeśli aplikacja nie jest jakaś skomplikowana i nie potrzebuje API do jakiś zasobów typu usb/wifi/bl czy jakieś inne rzeczy to tez bym ci radził electron choć sam w nim nigdy nic nie robiłem ale skoro znasz web-owe technologie powinno być szybko jeśli chodzi o prototypowanie a finalny produkt tez nie powinien być zły.

Jeśli jest to coś bardziej wymagającego to mogę ci polecić https://wails.io sam robię w tym aplikacje i pracuje się dobrze.

Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
marcio napisał(a):

Jeśli jest to coś bardziej wymagającego to mogę ci polecić https://wails.io sam robię w tym aplikacje i pracuje się dobrze.

Opowiesz coś więcej o tym, wrażenia, problemy, etc?

marcio
  • Rejestracja:ponad 17 lat
  • Ostatnio:39 minut
1

Póki co wrażenia ok, jeśli chodzi o jakieś problemy to mialem problem z performance z wails v1 bo używał starych wersji Webview + słaby support dla różnych api których mi brakowało (nie pamietam dokładnie czego).
Więc praktycznie od razu przepisałem wszystko tak żeby działało z v2-alpha bo interesował mnie na samym poczatku osx. Od wersji v2-beta jest support dla windows/osx jednak brakuje mu kilku rzeczy w tym momencie które były w v2-alpha np: system tray.
Więc czekam aż wszystkie features z alpha-73 będę dostępne w becie dla windows i osx-a żeby zrobić upgrade jeśli da radę.
Jak masz jakieś bardziej precyzyjne pytania postaram ci odpowiedziec jeśli jestes ciekawy to dodam cię do repo na GitHub póki co jest prywatne.

Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:36 minut
  • Lokalizacja:Laska, z Polski
  • Postów:10045
0
marcio napisał(a):

Jak masz jakieś bardziej precyzyjne pytania postaram ci odpowiedziec

No, jestem ciekaw np czy łatwo się pisze testy pod takie aplikacje, czy API jest w miare proste, czy łatwo można dodawać proste rzeczy. Typu czy dodam przycisk/pole do wpisywania w kilka sekund, czy raczję trzeba robić całą biurokrację dookoła? Również eventy.

Noi czy łatwo się załatwia zmianę ułożenia i rozmiarów elementów dla zmiennych szerokości okna.

jeśli jestes ciekawy to dodam cię do repo na GitHub póki co jest prywatne.

No, to byłoby super

marcio
ok dodałem cię, projekt nie jest skończony więc na niektóre rzeczy nie zwracaj uwagi, jutro jak dam radę będzie naspteny update
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)