Portál AbcLinuxu, 30. dubna 2025 16:53
Rozprávanie o tom ako sa tvorilo GUI jedného databázového programu, alebo o tom ako vznikajú rozprávky ktorými sa strašia malé deti.
Kde bolo tam bolo, za sedmero firewallmi a sedmero NATmi, žil starý dosovský účtovný program. Bol to úplne normálny databázový program, väčšinu tvorili rôzne formuláre do ktorých používatelia veselo ďatlovali dvoje dáta. Typické jesenné dopoludnie na ich obrazovkách vyzeralo nejak takto:
I jedného dňa rozhodol sa mocný vladár že portuje celú aplikáciu na Windows aby sa používatelia mohli vytešovať nad ikonkami. Keby sme žili v nejakej normálnej krajinke, dopadlo by to nejak takto:
A všetci mohli žiť štastne až kým by nesegfaultovali. Bohužiaľ, žijeme v rozprávkovej krajinke a tak sa dostavili problémy.
Upozornenie: Nasledujúce riadky nemôžu obsahovať ani stopy logiky ani zdravého rozumu, chyba nie je vo vašom prijímači.
Mocný vladár si vzápätí uvedomil že nový systém umožní používateľom spustiť 2 aplikácie naraz, na čo systém nebol nijak raz pripravený! Tomu trebalo promptne zabrániť a tak použil riešenie ktoré by prisam bohu nikomu normálnemu nemohlo napadnúť. Povolal do zbroje čiernokňažníka a ten na pozadí aplikácie otvoril veľké čierne strašideľné fullscreen okno ktoré temnotou prekrilo všetko ostatné, a tak používatelia nemohli spúštať druhú aplikáciu.
Mocný vladár kraľoval možno dosu, ale zrejme nikdy nepočul o tom, že by existovalo niečo také ako ComboBox alebo CheckBox, a tak paušálne všetky komponenty nahradil editom v duchu hesla "One edit to rule them all". Samozrejme aby používatelia vedeli odlíšiť či je to edit alebo edit s číselníkom, rozlíšil ich podľa farby labelu.
Dlho sa však vladár neradoval. Zaraz si uvedomil že je čosi v neporiadku. Okno umožnuje ukončenie až 3 spôsobmi. Stlačením tlačidla koniec, stlačením krížika v hornej lište alebo stlačením Alt-F4. Klávesovu skratku Alt+F4 zakázal na systémovej úrovni hookovaním kláves, ale čo s hornou lištou? Nuž zakázal aj tú v každom okne zvlášť. Škoda že mocný vladár nikdy nepočul o udalosti OnClose.
Používatelia síce prišli o možnosť maximalizovať či posúvať okno, ale to im bolo aj tak na nič lebo mohli mať spustené len 1 okno naraz. Ó aký mudry bol vladár keď zaviedol čierne pozadie. Spolu s lištou sa stratil aj nadpis okna. Pridal sa teda nový nadpis vo forme modrého panelu.
Aby to nevyzeralo až tak odlišne, pridal sa modrý gradient. Žiaľ, farbu gradientu sa nepodarilo úplne presne uhádnuť. Zavedením horného panelu s nadpisom sa však objavil nový problém. Horné menu. To sa zobrazuje vždy na vrchu okna bez ohľadu na komponenty. Lenže teraz bol panel pod ním. Trebalo to urgentne nejak poriešiť. Mocný vladár to vyriešil tak, že vyhodil horné menu a nahradil ho toolbarom pod horným panelom. Toolbar však nie je horné menu ku ktorému existuje špeciálny nástroj na vytváranie položiek menu. Toolbaru treba každú položku pridať zvlášt ako popupmenu a zložito a neprehľadne ho priradzovať.
Po nejakom čase sa ukázalo že ovečky predsa len raz za čas potrebujú spustiť inú aplikáciu (napr. textový editor s poznámkami alebo nedaj bože excel). Ale nemohli. Nuž teda náš vladár spravil posledný ústupok a pridal na horný panel tlačítko minimalizácie.
Dielo bolo hotové. A tak všetci spolu žili až kým programátorov čo prišli po nich z toho nejeblo, alebo až kým nepomreli.
Tiskni
Sdílej:
A kruci, taky jsem byl předběhnut.. a dvakrát! :)
Mocný vladár si vzápätí uvedomil že nový systém umožní používateľom spustiť 2 aplikácie naraz, na čo systém nebol nijak raz pripravený!Myslim, ze tohle je onen "zakopany pes", vsechno ostani jsou uz vedlejsi nasledky. Kdyby totiz aplikaci neportovali tim zpusobem, ze "dosackou" metodu (nejspis z Turbovision) nahradi "windowsackou" metodou (z Delphi nevo VisualCehosi), ale poradne se zamysleli nad koncepci programu, nebylo by problem s vice instancemi nutne resit (navic takto silene uchylnym zpusobem). Dodnes se setkavam s aplikacemi, ktere ac nativni windowsovke programy, porad pracuji "dosovskym" zpusobem - pouzivaji namisto databazoveho serveru databazi v sdilenych souborech, takze klienti musi mit pristup k souborum na serveru, dokonce v jednom pripade musel i server pristupovat k souborum klienta. Tvurci tohoto softwaru nejspis "ustrnuli" v dobe, kdy technologii dne byla novellovska sit po tenkem koaxu
ale poradne se zamysleli nad koncepci programu, nebylo by problem s vice instancemi nutne resit (navic takto silene uchylnym zpusobem).IMHO by byl jednoduchy a 100% lepsi i pouze test pri spusteni, zda stejna aplikace jiz jednou bezi (pripadne udelat nejakej lock soubor). Tohle je fakt bastleni na Ntou. To snad musel psat nejakej truhlik z gymplu, kterej se prave naucil udelat okno ve Windows a hned toho vyuzil a prepsal svoji super aplikaci z dosu do Windows:)
To nestačí, uživatel může aplikaci spustit z různých počítačů, případně aplikaci spustí více uživatelů. → Aplikace musí být připravená na více uživatelský přístup, musí umět řešit současné požadavky, konkurenční. Tohle je dobré nechat na databázi (transakce) a v aplikaci jen vhodně ošetřit dead-locky.
SingleApplication se dá použít jen jako pomůcka pro uživatele, aby si omylem nespustil aplikaci dvakrát, ale aby mu při dalším kliknutí vyskočilo původní okno. Ale není to řešení problému se současným přístupem z více míst.
To ne, tohle overenovani jde mnohem a mnohem krkolemeji
sakra, co jsem to napsal? a to jsem nic nepil, krom cernyho caje a horecku z chripku uz taky nemam omg
A takovy to tu byval slusny server
Kdyby totiz aplikaci neportovali tim zpusobem, ze "dosackou" metodu (nejspis z Turbovision) nahradi "windowsackou" metodou (z Delphi nevo VisualCehosi), ale poradne se zamysleli nad koncepci programu, nebylo by problem s vice instancemi nutne resitTo nie je len tak. Ja som bol svedkom nasledovného: veľká strojárska firma v amerike má podnikový informačný systém na mainframe napísaný inhouse v ObjectStar-e.(To je tak obskurný jazyk, že ani nedokážem vygoogliť nejaké ukážky.) A pretože mainframe je drahý, ObjectStar už skoro nikto neovláda, ľudia čo to napísali už sú fuč a teraz letí Microsoft, rozhodla sa firma preportovať tento systém na MS platformu - webová aplikácia s ActiveX komponentami napísanými vo VB.NET, bežiaca na SharePoint-e a MS SQL serveri. No a kde by na to našli tých nešťastníkov, čo to spravia? Predsa na Slovensku! Tí boli postavený pred takýto problém. A mali na výber dve možnosti. Buď naštudujú čo ten povodný systém robí, napíšu špecifikáciu, nechajú si ju odobriť a potom podľa nej napíšu nový systém. Alebo to prepíšu jedna k jednej. Ja som ako správny programátor začal tou prvou možnosťou. A do týždňa som nemal nič. Potom ma šéfstvo dokopalo k tomu robiť to 1:1. A ono to fungovalo. Nemám šajnu čo ten kód robil. Ale keď si človek osvojil pravidlá toho, ako prepisovať v princípe paralelný kód mainframe-u do VB.NET, tak produkoval kód ako ďábel. Desiatky až stovky riadkov kódu denne. Už tam nerobím.
Desiatky až stovky riadkov kódu denne.
To není moc.
Už tam nerobím.
On je rozdíl, jestli (jako dodavatel) chceš něco nabastlit, shrábnout prachy a za rok ať se to klidně zhroutí, nebo jestli jsi v týmu, kterému ten software zůstane na krku roky → to tě pak nutí dělat věci aspoň trochu pořádně, protože jinak ty sračky jen valíš před sebou a chyby, které jsi zametl pod koberec se ti ošklivě vrátí.
To jste vsichni sebevrazi nebo se nemate radi nebo co? Kdo to kdy videl psat aplikaci hned napotreti spravne (pouzitelne)?!
Nejvetsi sranda je, ze pridanim tlacitka pro minimalizaci slo k sakru cele usili, protoze neni problem si program spustit znovu. Dokonce bych rekl, ze je snazsi prehlednout program shozeny v liste snaze nez kdyz je normalne otevreny, cili sance, ze nejaky tulpas ten program spusti 2x naopak roste.
To je idiocie na tom svete. Aneb, je tezke byti blbcem, kdyz konkurence je tak velka.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.