( nagylzs | 2019. 10. 30., sze - 19:54 )

Nos, még mindig nincs megoldva a probléma. A szerver oldalt megírtam, ha valakit érdekel:

https://github.com/nagylzs/dropzone-backup-server

Teljesen jól működik. A kliens még mindig nem jó. A C# verziót végül sikerült lefordítani, de egyáltalán nem tetszik az, hogy géptől függően az egész .NET keretrendszert le kell hozzá tölteni. Ez nagyon távol áll az eredeti elvárástól. ("Kis méretű portable program".) A Lazarus verziót is sikerült befejeznem és http -re tök jól működött. De amikor https -t próbáltam akkor kiderült hogy TLS 1.0 fölött nem működik semmivel. Valószínűleg az az oka, hogy az Indy 10 komponensek nem friss OpenSSL verzióval lettek fordítva. Sajnos a freepascal fórumon napok óta senki nem tud erre írni semmit ( https://forum.lazarus.freepascal.org/index.php/topic,47221.0.html ), az pedig szerintem teljesen egyértelmű, hogy egy ilyen program nagyjából semmilyen web szerverrel nem működik együtt (vagy ha van amivel igen az még csak rosszabb).

Azt még el tudtam fogadni, hogy nincsen készen letölthető program ami ennyire pofonegyszerű. De hogy egy normális nyelvet nem találok amivel ilyet lehetne írni viszonylag magas szinten, az már elég idegesítő. Ne kelljen kézzel buffert allokálnom meg pointereket használnom és window message handler függvényeket írnom. A lefordított program ne legyen egy 30MB-os szörny mindenféle dependency-vel, hanem egy egyszerű kis programocska ami win32 API-t használ, esetleg mondjuk olyan DLL-t ami minden Windows-os gépen alapból rajta van (pl. WinHTTP). Szerintem ez nem egy túl nagy elvárás így 2019-ben.

Mondom miket próbáltam:

* Lazarus/FreePascal - nem jó mert elavult, nem kezeli a TLS 1.2-őt (vagy legalábbis senki nem tudja megmondani hogy hogyan)
* C# VBScript és társai - nem jó mert .NET keretrendszer kell hozzá, nekem natív win32 program kellene
* Go - nincs hozzá natív GUI (vagy talán valaki már beleerőszakolt egyet, de akkor sem ez a megfelelő eszköz)
*Java - felejtős, JVM kell hozzá, nem éppen "kicsi és portable"
* Python - sajnos mellékelni kell hozzá egy teljes portable python disztribúciót, baromira nem a megfelelő eszköz (egyébként ez a kedvenc nyelvem, de akkor se erre való)
* AutoIt, AutoHotKey - ezek natív windows programot fordítanak, és van is bennük http API. Elég magas szintű nyelvek, és van benne natív win32 gui is. Ez már majdnem teljesen jó! Sajnos az belőlük elérhető API-k közül egyik sem alkalmas arra, hogy file-ból stream-ként POST-oljak adatokat multipart/form-data -val.
* Rust- ez már elég low level. Még talán épp el tudnám fogadni, de ehhez se létezik natív win32 alapú UI toolkit ( lásd : https://www.reddit.com/r/rust/comments/af43dy/rust_windows_gui/ )
* C++ sima GDI-vel - na ha valamiben akkor ebben egészen biztosan meg lehet csinálni. De nehogy már 2019-ben pointerekkel meg malloc() hívásokkal kelljen bajlódnia annak, aki el akar küldeni egy file-t egy URL-re??? Régen (kb. 15 éve) már programoztam ilyen low level gui-t. Azóta elfelejtettem, és nagyon nem szeretnék újra minimum egy héten keresztül GDI-t tanulni csak azért, hogy ezt meg tudjam valósítani. Nyilván meg lehetne tenni, de a befektetendő munka nagyon nem áll arányban a feladat bonyolultságával. Valami ésszerűbb megoldás kellene.

De milyen opciók vannak még? Kitépem a hajam.

Bárki tud még bármilyen nyelvet amivel érdemes lenne próbálkoznom?