Python - zbožňovaný lidmi?

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #90 kdy: 14. 09. 2017, 20:51:38 »
Demagogii si strč za klobouk, já do takového systému přidávám nové požadavky od obchodu a klientů každý den a ještě spoustu let budu, takže moc dobře vím, co si do něj pustím a čemu se obloukem vyhnu. Rozhodně nedopustím, abychom museli udržovat vedle kočírovatelné javy ještě bokem spoustu balastu v javascriptu.

Možná nejste demagog, ale určitě používáte argumentační klamy. Z faktu, že vy to tak děláte a funguje vám to, neplyne, že to jinak dělat nejde. To, že s tím pracujete roky vaše tvrzení naopak znevěrohodňuje. Za takovou dobu si perfektně osvojíte libovolnou technologii. S technologiemi podobného typu jsem si v době jejich největší slávy užil své. Použitelné jsou možná pro intranetové aplikace s nízkým trafikem sestavené ze standartizovaných komponent u kterých se většinou na testovatelnost a modularitu kašle.


Lemming

Re:Python - zbožňovaný lidmi?
« Odpověď #91 kdy: 15. 09. 2017, 08:56:19 »
(...) Používá je proto, že chce nechce vyvíjet a hlavně dlouhodobě udržovat dva systémy, které spolu nejsou pevně svázané typovaným jazykem.

Tak ono jde třeba psát aplikaci v Typescriptu (čistý Ecmascript je fakt zlo, to souhlasím) a mít v něm SPA i REST API do backendu. A můžu sdílet REST objekty mezi API a konzumující aplikací.

S technologiemi podobného typu jsem si v době jejich největší slávy užil své. Použitelné jsou možná pro intranetové aplikace s nízkým trafikem sestavené ze standartizovaných komponent u kterých se většinou na testovatelnost a modularitu kašle.

Tak teď jsem málem smíchy spadl pod stůl. Dělám bankovní aplikaci, kde jsou na modularitu a testovatelnost pochopitelně velmi vysoké nároky, a teď se mi nějaký jouda na Rootu snaží vysvětlit, že to co dělám už několik let vlastně nejde.  :D  :D  :D

Naopak, Wicket je naopak velmi dobře testovatelný (je možné si nechat vykreslit stránku "do zdi" a pak ve stromu komponent testovat, zda jsou zobrazené, zda mají v modelu co mají mít atp.). A díky Javě je modulární také velmi dobře.

Možná jsi potkal něco jako JSP/JSF, tam bych ten odsudek docela chápal, to je fakt dost humus. Ale Wicket je geniální právě tím, že na to jde z úplně jiné strany.

Aoidhghean

Re:Python - zbožňovaný lidmi?
« Odpověď #92 kdy: 15. 09. 2017, 09:09:25 »
Demagogii si strč za klobouk, já do takového systému přidávám nové požadavky od obchodu a klientů každý den a ještě spoustu let budu, takže moc dobře vím, co si do něj pustím a čemu se obloukem vyhnu. Rozhodně nedopustím, abychom museli udržovat vedle kočírovatelné javy ještě bokem spoustu balastu v javascriptu.

Možná nejste demagog, ale určitě používáte argumentační klamy. Z faktu, že vy to tak děláte a funguje vám to, neplyne, že to jinak dělat nejde. To, že s tím pracujete roky vaše tvrzení naopak znevěrohodňuje. Za takovou dobu si perfektně osvojíte libovolnou technologii. S technologiemi podobného typu jsem si v době jejich největší slávy užil své. Použitelné jsou možná pro intranetové aplikace s nízkým trafikem sestavené ze standartizovaných komponent u kterých se většinou na testovatelnost a modularitu kašle.
Kde se dají sehnat komponenty se standartou?

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #93 kdy: 15. 09. 2017, 09:37:56 »
Tak ono jde třeba psát aplikaci v Typescriptu (čistý Ecmascript je fakt zlo, to souhlasím) a mít v něm SPA i REST API do backendu. A můžu sdílet REST objekty mezi API a konzumující aplikací.

Jasně, ale upřímně - vyměnil bys dobrovolně ve své javovské bankovní aplikaci nativní zcela integrovaný wicket za SPA v Typescriptu?

Lemming

Re:Python - zbožňovaný lidmi?
« Odpověď #94 kdy: 15. 09. 2017, 10:09:24 »
Jasně, ale upřímně - vyměnil bys dobrovolně ve své javovské bankovní aplikaci nativní zcela integrovaný wicket za SPA v Typescriptu?

A čím myslíš, že se v poslední době zabývám? Tím jak tohle udělat co nejméně bolestivě. ;)

Wicket je hrozně super, ale ta architektura má prostě svoje principiální omezení z hlediska interaktivity / odezvy. Dál je dost náročný na server, když chceš cluster, musíš řešit synchronizaci page store mezi nody. U bezestavového REST serveru tenhle problém vůbec není, UI operace se dělají na počítači uživatele (takový velký cloud :) )...

Typescript není Java (hodila by se možnost vypnout typovou inferenci), ale je "close enough". Jak říkám, Microsoft za celá svá desetiletí existence vyprodukoval jen dvě opravdu dobré věci. Typescript a Age of Empires.

A když to postavíš třeba na kombinaci React / Redux, tak se dostaneš tomu, že máš stav aplikace ne rozstrkaný po modelech v jednotlivých komponentách, ale hezky v jednom objektu (stromu objektů), od kterého máš historii "stav 1 => akce 1 => stav 2 => akce 2 => stav 3 ..." a když se ti aplikace dostane do špatného stavu, můžeš z historie rychle zjistit, kde se stala chyba - jestli přišla špatná akce, měla špatná data, nebo se na jejím základě data špatně změnil stav.


noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Python - zbožňovaný lidmi?
« Odpověď #95 kdy: 15. 09. 2017, 10:27:40 »
...
Typescript není Java (hodila by se možnost vypnout typovou inferenci), ale je "close enough".
...

V jazycich jako Haskell mam typovou inferenci hrozne rad. Bohuzel holy TypeScript je dost (typove) slabota. Urcite vypnout implicit any (prepinac tusim noImplicitAny, jsou i dalsi uzitecne) a take doporucuji pouzit TSLint a vynutit napr. explicitni navratove typy, typy u verejnych fieldu atp. IMO to dost zlepsi vyvoj, co se tyce typove kontroly (se to zacina i blizit jazykum jako Java). Samozrejme clovek nesmi byt prase a musi se pouzivat nejvhodnejsi typ - zadne any (to je potreba jen opravdu vyjmecne) na kazdem kroku v podstate vypinajici typovou kontrolu.

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #96 kdy: 15. 09. 2017, 11:06:17 »
Zajímavé, díky za hinty a držím palce. Wicket máme v méně zatížené admin části, takže věřím, že než přijde čas na převážně client-side řešení, bude v tom zase o kus dál a zůstaneme v javě. Dynamické komponenty ve wicketstuff přibývají.  Prostoru k optimalizaci máme pořád spoustu. Nikdo si nechce dobrovolně komplikovat vývoj přepisováním kusů systémů do jiné technologie, když může zdroje věnovat na něco užitečnějšího - samozřejmě pokud stávající technologie splňuje předpokládané požadavky.

Lemming

Re:Python - zbožňovaný lidmi?
« Odpověď #97 kdy: 15. 09. 2017, 13:12:15 »
Wicket máme v méně zatížené admin části, ...

Jasně, na admin systémy je Wicket ideální, zvlášť když není požadována responzivita. Abych osvětlil, co tím myslím, zrovna teď řeším jednu takovou věc:

- Máme formulář se čtyřmi pevnými hodnotami a N hodnotami zadávanými uživatelem
- Ve chvíli kdy uživatel vepíše hodnotu, provede se nad všemi hodnotami výpočet
- Pokud je hodnota výpočtu < 0, má se zobrazit (nemodálni) tooltip, kde uživatel může potvrdit, že to je tak OK, nebo přepíše hodnotu/hodnoty a provede se nový výpočet
- Pokud není hodnota > 0 nebo není potvrzeno, že je to OK, nejde formulář odeslat
- Explicitně dvoufázové řešení, že uživatel vepíše hodnoty, klikne na "odeslat" a až pak se mu zobrazí výsledný hodnota a případně tooltip není přípustné - musí se to zobrazovat co nejdřív, rozhodně bez klikání

Výše uvedené ve Wicketu samozřejmě udělat jde, tak, že se na input pole navěsí JS na keypress a když uživatel delší dobu nepíše, tak se formulář odešle a zobrazí se výsledek a případně tooltip. Jenže tam musí být timeout aby se zjistilo "už nepíše" a pak ještě nějakou dobu trvá, než server vrátí požadavek. A mezitím uživatel začne třeba zase psát... prostě to není ono.

V Reactu tohle může fungovat prakticky on-line.

Samozřejmě se to i ve Wicketu dá napsat za použití JS, jenže pak musíte řešit, že máte business logiku rozdělenou mezi JS a Javu, přicházíte o typovou kontrolu, musíte nějak obcházet případnou potřebu vytváření komponent (ten tooltip tady) atp.

gll

Re:Python - zbožňovaný lidmi?
« Odpověď #98 kdy: 15. 09. 2017, 16:12:55 »
Možná jsi potkal něco jako JSP/JSF, tam bych ten odsudek docela chápal, to je fakt dost humus. Ale Wicket je geniální právě tím, že na to jde z úplně jiné strany.

Wicket neznám, myslel jsem, že je to něco jako JSF nebo WebForms.

A když to postavíš třeba na kombinaci React / Redux, tak se dostaneš tomu, že máš stav aplikace ne rozstrkaný po modelech v jednotlivých komponentách, ale hezky v jednom objektu (stromu objektů), od kterého máš historii "stav 1 => akce 1 => stav 2 => akce 2 => stav 3 ..." a když se ti aplikace dostane do špatného stavu, můžeš z historie rychle zjistit, kde se stala chyba - jestli přišla špatná akce, měla špatná data, nebo se na jejím základě data špatně změnil stav.

přesně to jsem měl na mysli, když jsem psal o testovatelnosti. Používám React / Redux / Flow. Backend v podobě API se také snadno testuje a umožňuje tunit cachování.

Lemming

Re:Python - zbožňovaný lidmi?
« Odpověď #99 kdy: 15. 09. 2017, 18:58:38 »
Wicket neznám, myslel jsem, že je to něco jako JSF nebo WebForms.

No to právě není :) Ve Wicketu píšeš webovou aplikaci spíš jako normální desktopovou aplikaci, stavíš ji z Java komponent, akorát se pak nerenderuje na obrazovku OS, ale do HTML.

přesně to jsem měl na mysli, když jsem psal o testovatelnosti. Používám React / Redux / Flow. Backend v podobě API se také snadno testuje a umožňuje tunit cachování.

Já si pod "testovatelnost" představím spíš "automatickou testovatelnost". A ta je u Javy (a Wicketu) právě výborná. Tedy s tím, že je to UI. Jinak si uvnitř té java aplikace typicky uděláš nějaké vrstvy (UI, servisní, DAO), které jsou vlastně v místě, kde v SPA máš API, a můžeš je testovat úplně stejně.

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #100 kdy: 15. 09. 2017, 19:43:51 »
Cest je vždy více. Mně osobně se víc líbí, když ten timer je přímo součástí komponenty, ...

To mě právě přijde jako hrozná prasárna (no offense), takhle cpát funkcionalitu přímo do třídy. Mnohem lepší mi přijde mít timer jako samostatný objekt s vlastní úlohou/odpovědností (návrhový princip "single responsibility"). A způsob jak to dělá Wicket přes behaviory mi přijde přesně to pravé ořechové.

A není jednodušší a správnější ten timer do instance třídy prostě injektovat?

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #101 kdy: 15. 09. 2017, 19:57:45 »
To, že je něco jednoduché neznamená, že je to správné. Že třída implementuje víc rozhraní, to jistě, to je šikovné a velmi často dává smysl. Ale přidávat tam i implementaci mi připadá spíš jako zneužívání dědičnosti (*), které by bylo čistší vyřešit skládáním. Dokážete hodit nějaké ne-za-vlasy-přitažené příklady, kdy je takovéhle využívání mixinů architektonicky správné?

*) Něco jako když si programátor definuje utility funkci v nadtřídě a využívá ji z podtříd, místo co by ji vyčlenil do utility class.

Utility class ve většině případů nedávají smysl, neboť třída je tím degradována na namespace a z metod se stanou obyčejné funkce.

Mixiny mi také nedávají moc smysl. Asi tak, jako kdyby člověk, který umí skákat, byl současně žábou jenom proto, že žába umí také skákat.

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re:Python - zbožňovaný lidmi?
« Odpověď #102 kdy: 15. 09. 2017, 20:00:50 »
Citace
Mixiny mi také nedávají moc smysl. Asi tak, jako kdyby člověk, který umí skákat, byl současně žábou jenom proto, že žába umí také skákat.

Jako tobě nedává smysl, že člověk i žába je zároveň "skákající živočich"?

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #103 kdy: 15. 09. 2017, 20:13:38 »
Citace
Mixiny mi také nedávají moc smysl. Asi tak, jako kdyby člověk, který umí skákat, byl současně žábou jenom proto, že žába umí také skákat.

Jako tobě nedává smysl, že člověk i žába je zároveň "skákající živočich"?

To by bylo v případě, kdyby třídy člověk a žába dědily ze třídy "skákající živočich". V této podobě by to mohlo být v pořádku.

Mixiny to však říkají naopak, že skákající člověk je současně člověkem i žábou.

Operátor "je" není komutativní. Vlevo je potomek, vpravo je předek.

dustin

Re:Python - zbožňovaný lidmi?
« Odpověď #104 kdy: 15. 09. 2017, 21:25:07 »
- Ve chvíli kdy uživatel vepíše hodnotu, provede se nad všemi hodnotami výpočet
...
 - musí se to zobrazovat co nejdřív, rozhodně bez klikání
...
 Jenže tam musí být timeout aby se zjistilo "už nepíše" a pak ještě nějakou dobu trvá, než server vrátí požadavek. A mezitím uživatel začne třeba zase psát... prostě to není ono.


Co to udělá, když bude babička psát na ntb klávesnici a ťukání čísel jí chvíli trvá? To jí to mezi každou číslicí spočítá a nabídne odeslat nesmysl?

Chápu, že tohle ve wicketu není jednoduché, ale upřímně jsem nějak nepochopil, proč to tak komplikovat. Ale zadání jsi asi od někoho dostal...

Mně se právě možnost vytváření vlastních komponent s troškou JS líbí. Většinou toho JS není tolik, aby byly problémy s typy atd. Ale jasně že se to snadno řekne, ale někdo to musí udělat :-)

Nicméně pokud vedení rozhodlo, že bude SPA, bude SPA. Mám asi výhodu, že mi do výběru technického řešení nikdo nekecá... Držím palce.