Puvodni prispevek:
viewtopic.php?f=26&t=13351&start=30#p318159sidlo píše:belgarat píše:sidlo píše:Zvládne to každý.
Tuhle vetu myslis v kontextu uverejneneho obrazku _vazne_ ?
Kliknu Přidat
Kliknu Položka - Ovladač
Kliknu Adresa - Položka - Analogová hodnota - zadám DCC adresa lokomotivy
Kliknu Rychlost - Položka - Analogová hodnota - zadám rychlost - interval 0 - 1
Kliknu Směr - Jiný - Vždy pravda - to znamená Vpřed
Kliknu Funkce - Položka - Analogová hodnota - zadám číslo funkce - nepovinný parametr
Kliknu FunkceZapVyp - Jiný - Vždy pravda - to znamená zapnou
...
Bylo by trapné na něco takového dělat video. Ten kdo zvládne změnit CV v dekodéru tak s
JMRI LogixNG nakliká i skript.
Na vyse uvedem prispevku od Sidla je dobre demonstrovat, co je brutalne na JMRI spatne - jak fakticky, tak "vyrobnim procesem" - a z toho plyne proc rozhodne JMRI "nedokaze kazdy" ovladat. Text vznikl v prubehu nekolika dni uvahami nad zaznamem "prace v JMRI" (dale v textu) - to bylo vychodisko.
Strucne shrnuti je, ze terminologie je zmatecna, ovladaci prvky spatne navrzene, castecne nefunkcni a uzivatelske chyby jsou malokdy osetrene. Nekonzistence / zcela odlisne zpracovani toho sameho ukonu v ruznych mistech JMRI jsou vsude. At uz se pridrzim standardu navrhu aplikaci ve Windows, Linuxu nebo MacOS, i Web aplikaci - JMRI je uplne mimo vsechny zvyklosti. Je to spis 'JMRI standard' nez chyba, a i vyvojovy tym reagoval na pripominky stylem "co chces, vzdyt to funguje, a takhle to MY delame". Oficialni zduvodneni je, ze JMRI ma sve vlastni postupy - ale z pohledu uzivatele jakehokoliv z podporovanych OS jsou uplne mimonske, takze JMRI nezapada ani do jednoho z "podporovanych" grafickych rozhrani.
Pro uzivatele, kteri zvazuji JMRI jsem zaznamenal 'poruchy', na ktere jsem narazil pri pouhem provedeni Sidlova postupu pro naklikani - reknem takovy vhled do toho, co se da od JMRI cekat pri bezne konfiguraci. Vse je resitelne (nejak), kazdy muze zhodnotit nakolik se citi zdatny hledat cesticky kolem nejruznejsich prekazek, ktere JMRI vytvari - protoze je to nejlepe nastavitelny / prizpusobitelny software pro rizeni kolejiste co jsem mel moznost zkouset. Jen to provedeni je na "tecku" nebo i dve. Je dulezite si uvedomit, ze vsechny narky se tykaji nastavovani, konfigurace, vytvareni - ne tak uz samotneho "jezdeni", i kdyz JMRI ma i provozni chyby, je jich vyrazne mene.
Chapu ze 'za scenou' (napr. v tomto pripade LogixNG) je obecny mechanismus (u LogicNG podminek a akci) ... ale streva se na na 'bezneho uzivatele' nevytahuji, protoze se v nich zamota ? Je ocividne, ze Sidlo ten pristup povazuje za normalni a prirozeny, jako dost technicky zalozenych lidi -- a ani nechci (nikoho) presvedcit, ze normalni to neni (protoze treba pro nej ano). Ale neni. Ja jsem fungoval podobne nekdy kolem roku 2000-2003, od te doby se na ruznych projektech stale presvedcuji, ze dobry software musi "mluvit uzivatelskym jazykem", byt pripraveny na blbosti co uzivatel dokaze natropit, uzivatele vest od jednoduchych a dulezitych veci, a pripadne slozitosti si schovat do zalozky "Pokrocile". Pro uzivatele, ktery tape, uci se - a predevsim jde za svym cilem, kterym NENI nastavovani JMRI, ale jezdeni, je vsechno z toho prekazka - a nekonzistence, nedotazenost, chyby jsou velka prekazka. Jakmile se software chova "technicky" nebo ma dokonce chyby, stava se sam soucasti problemu: uzivatel musi zapasit krome vlastniho ukolu jeste s podivnostmi vybraneho nastroje. V tomhle smeru exceluje Train Controller - a i proto je IMHO, pres svou silenou cenu, nejrozsirenejsi.
Pro mne na tom prekvapive to, ze - implementacne - museli autori JMRI jit temer od pocatku (nejmin od roku 98) docela tvrde proti filosofii a architekture pouzitych grafickych knihoven, a designovat v primem rozporu s doporucenimi vyrobcu OS, jit proti dostupnym tutorialum a grafickym i interakcnim schematum, coz obnasi skutecne hodne prace. V prubehu casu, kdy vznikaly kontejnery pro komunikaci a integraci komponent jako treba Spring nebo CDI, nebo aplikacni knihovny typu Eclipse / NetBeans muselo byt jasne, ze kdysi mozna prukopnicke, ale neumele / nekonsistentni jadro zaostava - presto vsak nebyla vyvinuta snaha adaptovat se s pouzitim bud knihoven, nebo alespon myslenek, ktere vycizeloval nekdo citelne lepsi nez autori JMRI. Vysledkem je v podstate vzrustajici znehodnoceni te skutecne cenne casti, tedy strojku co komunikuje s kolejistem a ridi jej.
Na okraj - pro "bezneho cloveka" je velmi obtizne stvorit slozenou podminku v takovem rozhodovacim strome jako LogixNG, a kdyz se NAHODOU clovek splete a potreboval by pod-podminku z jedne vetve presunout jinam, zadny "presun" neexistuje. Pekne smazat a vytvorit na novem miste znova. Teorie o tom, ze strukturovane podminky "dokaze udelat kazdy" muze rozvijet jen clovek, s tunelovym videnim - neplatilo to pred 20 lety dokonce ani na matfyzu (zhruba do 3. rocniku, pak uz slabe kusy odpadly), natoz v bezne populaci. Za poslednich 25 let jsem takovych "vyrazovych editoru" psal mnoho, prvni cca v roce 96 jako soucast rocnikoveho projektu. A vzdy se stejnym vysledkem: pro lidi, kteri vedi "jak na to" jsou tezkopadne, protoze formalni textovy zapis zvladnou rychleji, presneji, a jeste v nem funguje naseptavac, zvyraznovani syntaxe a chyb. A pro ty, kteri nedokazi formalni logiku vyrazu zvladnout a vizualni asistent by jim MEL (teoreticky) pomoci, takova komplexni struktura prakticky presahuje "mentalni kapacitu" a i v editoru nevykazujicim skolacke chyby (viz nize) se bezmocne "placaji".
------
A ted k
detailnimu pruchodu akcemi, ktere Sidlo doporucil.
Ona divnost zacina uz primo v tabulce LogixyNG:
- tabulka vypada normalne, radky, sloupce, v kazdem radku jedna definice, v jednotlivych sloupcich rozepsane (vyznacne) vlastnosti definice
- cast akci je v kontextovem menu (prejmenovat, komentar, vymazat), ale NE upravit. Proc tam neni ?
- zadne ovladaci prvky pod tabulkou nebo vedle tabulky (upravit, vymazat) - jen Pridat, ale nic pro vybrany radek
- zadne akce v hlavnim menu okna, obvykle menu "Upravy" zcela chybi (proc ? Jak na Macu tak na Windows je to v doporucenich od apple / microsoft a vsichni to dodrzuji - az na JMRI)
- akce nad radkem se vybira v jedne z BUNEK radku z rozbalovaci nabidky - pouhyb vyberem a uzavrenim rozbalovaci nabidky se akce spusti. Ale nektere akce zde chybi - jsou JEN v kontextovem menu. Nektere zase JEN v rozbalovaci nabidce. Tento pristup jsem je pomerne unikatni... a ze jsem tech aplikaci prosel hodne.
- tedy clovek si MUSI pamatovat co je v kontext menu (pravy klik mysi) a co je v rozbalovatku ... a nebo hledat. Klik klik. Zadna konzistence.
- a samozrejme JINE tabulky, napriklad tabulka jednotlivych podminek LogixNG funguje jinak: na kazdem radku jsou akcni tlacitka, ne rozbalovatko. A cely LogicNG psal jeden clovek, ani na teto urovni se o 'jednotnost' nejevi zajem.
Vytvorili jsme LogixNG s "Uzivatelskym nazvem" AA. Nyni provedu opet Pridat - a nabidne se mi predvyplnene jmeno "AA", to jiz pouzite. Kdyz jej bez premysleni odklepnu, tak mne JMRI serve ze jmeno jiz existuje. Proc nenabizi unikatni jmeno - napriklad pridat ciselnou koncovku ? Bezne se to dela ... ale NE v JMRI. Ano, uzivatel proste musi vedet co dela, neni prece blbec. OK, dame jiny nazev, treba "BB", Vytvorit. Hura, dalsi radek tabulky.
Nyni vyvolame z rozbalovaci nabidky "Upravit" pro LogixNG "AA" - otevre se okno. Pozor, neni modalni (neblokuje zbytek aplikace, da se prepinat mezi okny), muzeme dale pracovat s tabulkou. Co se stane, pokud provedeme "Upravit" na radku "BB" ? Ano, JMRI pristup: ackoliv okno s upravami "AA" neni blokujici, nesmime mit otevrena dve okna (AA, BB) - vyleti chyba; . Asi aby nebylo mozne porovnavat nebo se ridit "sablonou" pri vytvareni obdobneho LogixNG ... a akce "kopirovani" samozrejme chybi - v nabidce rozbalovatka u tabulky je, ale "Copy is not implemented yet".
Vsimate si, ze okno "Upravit podminku" ma menu, ale v nem neni zadne "Upravy", ba dokonce ani horke klavesy, takze ac je okno aktivni tak kombinace Alt-S (Soubor) nebo Alt-O (Okno) nefunguji ? Nikomu to nevadi, ac design JMRI je zameren i na uzivatele s ruznym postizenim (proto take tak uchylne barvy v DecoderPro, musi byt kontrastni a odlisitelne).
Pises "Kliknu Položka - Ovladač"
- proc ne "Lokomotiva", "vozidlo" ?
- ovladacem se bezne mysli napr. FRED (ano, muze byt kodovany na konkretni vozidlo), multimys. Ale do "Adresy" se zadava DCC adresa vozidla ...
- v JMRI se "Ovladacem" (viz menu Nastroje > Ovladace > ...) mysli OKNO ovladace navazane na urcite vozidlo; to okno umoznuje menit trochu layout. Ale TENHLE "ovladac" - okno se do Adresy fakt nezadava, jde skutecne o adresu lokomotivy ... proc tam tedy neni napsano "lokomotiva" ?
- tedy blby preklad a/nebo nekonzistentni terminologie
- a co asi tak muze delat pro udaj "Adresa" napriklad takovy prvek "Zobrazeni" ? Hm ... ? Spravne: nic, druhe vybiratko je prazdne.
pri "Pridat" je v prvnim vybiratku volba "Polozka" a pak jeste dalsi ... ale (u mne) cast z tech "druhu prvku" nema v druhem vybiratku zadne moznosti, proc vubec JMRI zobrazuje neplatne / nepouzitelne volby ? Tak schvalne ... u Rychlost > Pridat zvolim "Zobrazeni" a druhe vybiratko necham prazdne. Zkusim zmacknout "vytvorit".
- tlacitko neni vypnute, fakt jde zmacknout !
- zadna chyba se nevypise
- dialog se zavre "Pridat" se zavre
- sakra mejdlo, okno "Upravit podminku" mi najednou prestalo fungovat - rika 'Radek polozky mistni nabidky je uzamcen, pokud je otevrene dialogove okno'. Ale to mi prave zmizelo
) Holt dalsi neosetrena chyba uzivatelskeho vstupu, nekde se neco zborilo a nedokoncilo ... tak zavrit cele okno s podminkami (to jde krizkem nebo Soubor > Zavrit okno, klik kamkoliv do plochy okna zpusobi chybu), a znovu Upravit.
Pises " Položka - Analogová hodnota - zadám DCC adresa lokomotivy"
- zadam cislo, nefunguje ENTER, tlacitko "Vytvorit" nema podtrzeni "spousteciho" pismenka a ani nema prirazenou horkou klavesu, musim potvrdit mysi. Opruz, vyskytuje se v JMRI vsude. Naprost tragicke pro starsi co hur ovladaji krysu.
- zadny vyber z Evidence, podle NAZVU lokomotivy, musim si pamatovat prirazeni adresy. No co ... dohledam, ale je to nepohodlne, zlaty TC, kde se vse vybira. Ale je divne, ze treba u JMRI Ovladace adresa pomoci nazvu - zaznamu v Evidenci - vybirat jde, evidentnte tedy jde jen o blbost / nedomyslenost programatora LogixNG, ne principialni problem ...
- proc je v okne "Funkce vzorce" s napovedou, kdyz se ma zadat konstanta, NE vzorec ?
- muzu zadat cislo dokonce i 11.5
schvalne zkusim - a jde to. Jen nevim co to ve skutecnosti bude delat...
- kdyz nahodou zadam cele cislo (treba 3), a ZNOVU otevru "analogovou hodnotu" pro upravy, tak se mi zobrazi "3,00" ... tak mam psat cele cislo, nebo desetinne ?
- proc mi to pise "Ziskat analogovou konstantu" - nemelo by to byt spis "pouzit" nebo "precist" ? Nic se neziskava (treba od uzivatele, ze senzoru), konstanta je primo uvedena. Blby preklad (Sidlo) nebo uchylny puvodni text ? V originalu je "get", takze oboji: slovesu "ziskat" odpovida spis "obtain", "acquire" nebo "gain", zatimco puvodni "get" je "programatorismus" z konvence (implementacni !) pro nazev metod get/set = cteni / zapis, ale pro uzivatelsky vyznam se ani v anglictine nehodi...
v menu "Adresy" je Pridat ... ale smi se pridat jen jedna polozka, proc je tam pridat/odstranit a ne nastavit / vymazat ? Ale to je detail ... v podstate to funguje jak ma.
Pises Kliknu Směr - Jiný - Vždy pravda - to znamená Vpřed
- jak mam "vedet", ze u Smeru se pouziva prave "Jiny" a ne "Polozka" ?
- proc je zrovna u Smeru, ktery ma 2 hodnoty, tolik na vyber pro vybiratko "Polozka" ? Tady se zastavim: brano z pohledu technika vim, je to interne logicka dvoustavova hodnota, takze vlastne cokoliv, co se da vyhodnotit jako pravda/nepravda - ale smer je (pro uzivatele) vpred/vzad, ze ?
- Proc ma "Smer" hodnoty "vzdy pravda" a "vzdy nepravda" je programatorovi jasne, je to boolean, logicka promenna. Ale to je IMPLEMENTACNI detail; pro UZIVATELE je dulezite prave vpred a vzad. Presto si musi pamatovat pro KAZDOU vlastnost specificke prirazeni obecnych hodnot. Tady se napriklad hodi 'myslet za uzivatele' a nabidnout mu volbu jako "Vpred kdyz plati" a "Vzad kdyz plati" - a tu navaznost "pravda = vpred" pred nim schovat. Pro pocitac je to zbytecne, pro uzivatele to vsak schova to nepreberne mnozstvi kombinaci - az dokud je nebude potrebovat. Podobne jako (protoze smer je INTERNE) logicka hodnota, tak na uzivatele v kategorii "Obecne" vykoukne A zaroven / Nebo / Negace.
tohle jen ukazuje, ze KAZDY prvek a KAZDOU volbu v JMRI se musi uzivatel naucit doslova jako basnickou, zadnou koncepcni jednotnou logiku to nema. A to ani v ramci jedne JMRI aplikace - cely LogicNG psal jeden clovek.
---
Zaverecny povzdechAno, da se zvyknout a natvrdo se naucit ke kazdemu jednomu mistu jak se ovlada, jake ma chyby, ze nekde funguje ESC a nekde se musi pouzit krizek. Ze nekde se pri preklepu (treba , namisto cisla) vypise chyba a je mozne opravit, ale jinde se UPLNE zavre zadavaci okno a az PAK se vypise chyba a je nutne upravy znovu vyvolat a vsechno napsat znova .... Podobne nedodelky, nekonzistence a divne chovani je skrz naskrz cele JMRI.
... ale Sidlo, takhle nevypada program pro uzivatele. Tvoje tutorialy jsou genialni a pis je dal, protoze ukazuji ten spravny pruchod JMRI pro dosazeni konkretniho cile. Ale jakmile clovek "vybehne" jinam, nebo nedej Boze udela z nepozornosti chybu, nasleduji problemy a pady. V horsim pripade zniceni panel.xml - nastesti se zalohuje. Je to koncepcne uplne spatny zpusob jak vyrabet program pro uzivatele: ten totiz VZDY dela chyby, blbosti, snazi se pouzit nastroj i na situace pro ktere nebyl urceny a v hranicnich podminkach. A v tom pripade JMRI selhava a neni na nej spolehnuti, stava se z nej "zrout casu" namisto pomocnika.
Pres to vsechno, protoze je to v zasade jediny takto flexibilni program, jej lide pouzivaji - protoze umi to, co TC rozhodne ne, a RR taky moc ne. A fakt, ze jej lide (pres vsechny nedodelky viz vyse) pouzivaji vyklada vyvojovy tym jako oduvodneni, ze vlastne vsechno funguje a uzivatele jsou spokojeni
takze vlastne neni treba nic opravovat.