Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Idris

Stran: 1 ... 35 36 [37] 38 39 ... 153
541
Vývoj / Re:Ruby v roku 2022 (je mrtve?)
« kdy: 24. 01. 2022, 05:07:35 »
P.S. nakoniec som teda vybral naozaj to Go, nestazoval sa na to nikdo.
:) ;) :D ;D To uz si v Go aj napisal ten program aj v pohode vsade bezi a vsetci su spokojni ?
Vzdaj to, nebudem to pisat v niecom co potrebuje JVM. :) Co mas proti Go?
Taky by to šlo napsat v Go a pak transpilovat do Javy ;)
https://github.com/elazarl/go-java ?
Jo, to dává smysl :) Ještě chybí Rust nad JVM a transpiler Agdy do Cobolu. Transpiler Ruby do Fortranu už máme…

542
Vývoj / Re:Jak validovat DTO v dynamicky typovaném jazyce?
« kdy: 24. 01. 2022, 05:02:30 »
Každopádně uznávám, že problematice jak typy zlepší efektivitu překladu jsem se nikdy moc nevěnoval.
To je škoda, je to zajímavé a aktuální téma. Proč je asi v průměru Julia rychlejší než Rust (nápověda: multidispatch)?
Typová bezpečnost u dynamického jazyka znamená co konkrétně?
To samé jako u staticky typovaného, že kód jde otypovat tak (ručně nebo inferencí), že v době běhu není nutné zkoumat typy objektů pro hladký běh. V teorii překladačů se pracuje v souvislosti s typy s několika pojmy, kód může být typově stabilní (to pomáhá optimalizaci, ale nezajišťuje bezpečnost) nebo typově ukotvený (to zajištuje bezpečnost). Ovšem čím silnější typový systém, tím horší vyčíslitelnost (u hodně silných typových systémů z principu nefunguje inference typů, ale i v Haskellu stačí napsat jednoduchou polymorfní rekurzi a překladači jebne). Je to něco za něco, já třeba osobně taky upřednostňuju silný typový systém se zevrubnou kontrolou v době překladu, ale dobře se mi psalo i v ObjC (tom starém, předswiftím). Navíc od určité síly typového systému se už nedá v kódu přesně rozlišovat mezi dobou překladu a běhu, protože na typové úrovni můžu pracovat s hodnotami při překladu a na úrovni exekuce kódu s typy. Přidej GADT a je z toho dokonalý guláš, kde typová kontrola není o přiřazování/ověřování typů, ale převedení celého programu do formální logiky a prozkoumání, zda je v teorii spor (proto taky jdou vracet z funkcí instance typu Vect n T vytvořené za běhu na základě nekonstantní hodnoty n).
Je-li jazyk staticky typovaný, přináší to jasné a měřitelné bezpečnostní výhody.
Jasně, výhoda je, že se více chyb odhalí již při překladu. Proto ostatně vznikly Typescript nebo Dart, ty jsou sice v jádru dynamické, ale typy při překladu umí kontrolovat.

543
Vývoj / Re:Jak validovat DTO v dynamicky typovaném jazyce?
« kdy: 24. 01. 2022, 02:59:55 »
Vycházím z, možná nesprávného předpokladu, že když budu mít následující dvě proměnné:
Kód: [Vybrat]
a = "string"
b = 42
test(x) {
  print("typ: {x.type}")
}
test(a) // typ: string
test(b) // typ: number

Tak se budou chovat stejně bez ohledu na to zda je jazyk silně nebo slabě typovaný.
Jenže typeof je jen v silných typových systémech. To je právě ten problém. Ale to jsme dost odbočili, jen jsem chtěl říct, že dynamičnost a síla typového systému jsou dvě různé dimenze, které slouží dvěma nezávislým cílům, zajistit typovou bezpečnost a efektivní překlad či interpretaci. Pokud je jazyk staticky nebo silně typovaný, je obojího dosaženo, i když splňuje jen jednu z těch podmínek. 

544
Vývoj / Re:Jak validovat DTO v dynamicky typovaném jazyce?
« kdy: 24. 01. 2022, 02:54:02 »
K čemu by byly dobré, u nějakého dynamicky typovaného jazyka, závislostní typy? Jaký by měli přínos?
Přínosem je, že když překladač (AOT nebo JIT) zná typy, generuje mnohem efektivnější kód. Když mám třeba funkci readVect vracející instanci n ** Vect n Integer (tj. tzv. zobecněný součtový typ), můžu v dynamickém jazyce pomocí typové anotace zajistit, že příslušná funkce vrací jen objekty tohoto typu (třeba v Julii je ten zápis Vect{N,Int64} where N).

545
Vývoj / Re:Jak validovat DTO v dynamicky typovaném jazyce?
« kdy: 24. 01. 2022, 01:16:22 »
Statické jazyky, zvláště takové debilní jako je Java nebo C# […] Jsem fanatický příznivce a zastánce staticky typovaných jazyků a nenávidím dynamicky typované.
To zní dost drsně. A ani to moc nechápu, není mnohem zásadnějším rozdílem silné vs. slabé typování?
To jsme tu už rozebírali.
Silné vs slabé typování je defakto banalita, nestojící za polemiku. Skutečnost, že se mi Javascript snaží automaticky konvertovat cokoliv podobného číslu na číslo má sice vliv na programátorský prožitek, ale že by z toho musela být extra kategorie si nemyslím. Takže má odpověď zní - ne, vůbec. V praxi silné typování nic zásadního nepřináší.
Silné typování nijak zvlášť nesouvisí s JS. Ostatně i dynamicky typovaný jazyk může mít například záv. typy.

546
Vývoj / Re:Jak validovat DTO v dynamicky typovaném jazyce?
« kdy: 23. 01. 2022, 23:52:04 »
Statické jazyky, zvláště takové debilní jako je Java nebo C# […] Jsem fanatický příznivce a zastánce staticky typovaných jazyků a nenávidím dynamicky typované.
To zní dost drsně. A ani to moc nechápu, není mnohem zásadnějším rozdílem silné vs. slabé typování?

547
Vývoj / Re:Jak validovat DTO v dynamicky typovanem jazyce?
« kdy: 23. 01. 2022, 17:28:12 »
A jinak teda i staticky typované jazyky mohou být zrádné, třeba Java trpí na type erasure u generických kolekcí. Sice v kódu je List<String>, ale runtime se tam dá podstrčit třeba Number a projde to.
To je ovšem chyba Javy, ne statického typování.

548
Vývoj / Re:Jak validovat DTO v dynamicky typovanem jazyce?
« kdy: 23. 01. 2022, 14:32:19 »
Hele a neexistuje nejaky zpusob jak zabezpecit, ze requesty do API budu dostavat vzdycky jen z moji webove stranky? Jako vyrobit nejakou md5 sumu zdrojoveho kodu webovky, nebo co ja vim.
To asi nejde z principu, proto se vždy vše validuje (někdy duplicitně) na serveru.
Nejake veci udelat jdou:

https://stackoverflow.com/questions/13895679/how-do-i-secure-rest-api-calls

Napr. mit mapu ip + headers z weboveho prohlizece, kterym jsem poslal webovku, a jen jim dovolit delat requesty. Obejit to lze, ale na domaci pouziti by to mohl byt dostatecny stupen ochrany.
Jasně, jde to ztížit, ale je třeba vycházet z toho, co tam nakonec píšou: “I consider it impossible to make it completely impossible for an abuser to consume your service.”

IMHO pro většinu webových aplikací stačí běžná míra zabezpečení (timeouty, omezení velikost přenášených dat, API klíče/OAuth2 podle charakteru služby), nejlépe přes nějakou osvědčenou reverse proxy.

549
Vývoj / Re:Jak validovat DTO v dynamicky typovanem jazyce?
« kdy: 23. 01. 2022, 14:06:41 »
Hele a neexistuje nejaky zpusob jak zabezpecit, ze requesty do API budu dostavat vzdycky jen z moji webove stranky? Jako vyrobit nejakou md5 sumu zdrojoveho kodu webovky, nebo co ja vim.
To asi nejde z principu, proto se vždy vše validuje (někdy duplicitně) na serveru.

550
Vývoj / Re:Jak validovat DTO v dynamicky typovanem jazyce?
« kdy: 23. 01. 2022, 12:40:37 »
Opravte me jestli se mylim, ale ja budu muset zvalidovat pritomnost a delku kazdeho jednoho fieldu
BTW tu přítomnost a nekonzistence může řešit deserializace (bez ohledu na charakter typového systému). Typicky se dělá validace před odesláním, po přijetí požadavku a případně ještě v databázi (tam by ale už vše mělo být košer), otázka spíš je, jak si tu validaci to nejvíc ulehčit (právě pomocí nějakého schématu nebo anotací v kódu).

551
Vývoj / Re:Jak validovat DTO v dynamicky typovanem jazyce?
« kdy: 23. 01. 2022, 12:30:48 »
Ted sem treba videl java projekt kde se pouziva json schema a z neho se genruji ty dto...
Vyhoda je v tom, ze schema muzu sdilet mezi vice projekty v ruznych jazycich
To zní jako Protobuf.

552
Vývoj / Re:Ruby v roku 2022 (je mrtve?)
« kdy: 23. 01. 2022, 12:07:49 »
P.S. nakoniec som teda vybral naozaj to Go, nestazoval sa na to nikdo.
:) ;) :D ;D To uz si v Go aj napisal ten program aj v pohode vsade bezi a vsetci su spokojni ?
Vzdaj to, nebudem to pisat v niecom co potrebuje JVM. :) Co mas proti Go?
Taky by to šlo napsat v Go a pak transpilovat do Javy ;)

553
Vývoj / Re:Jak validovat DTO v dynamicky typovanem jazyce?
« kdy: 23. 01. 2022, 12:01:05 »
dokumentova databaze ma smysl, pokud chcete ukladat data tak jak prichazi, napriklad z nejakeho API, nasledne je analyzovat.
V otázce je explicitně “order”, takže je celkem jasné, o jaký typ dat se jedná.

554
Vývoj / Re:Jak validovat DTO v dynamicky typovanem jazyce?
« kdy: 23. 01. 2022, 11:23:42 »
Takze kdyz jsem si chtel na zacatku ulehcit praci a pouzit dynamicky typovany jazyk a MongoDB, tak nakonec budu muset stejne delat to, co by pro me delal staticky typovany jazyk a Relacni databaze k tomu.
Ano, přesně takto to je. Dynamicky typovaný jazyk je vhodný tak akorát pro nějaké menší prototypy, jinak je osinou víme kde. A k té databázi, IMHO není důvod nepoužít relační, pokud se nenarazí na nějaké limity (zpracování gigabajtů příchozích dat v reálném čase apod.).

555
Vývoj / Re:Ruby v roku 2022 (je mrtve?)
« kdy: 22. 01. 2022, 10:55:24 »
Skriptovací (lépe snad interpretované) jazyky mají výhodu v tom, že je možno program zkoumat a modifikovat na místě.
A k čemu to je? Zkoumat a modifikovat se dá i makrem při překladu (Rust, Julia), proč bych to měl dělat za běhu?
Na ostrých serverech tohle přes SSH dělám běžně. Mám v Pythonu nějaký skript pro rychlou analýzu  nějakých dat nebo logů a chci si skript rychle upravit a vidět pozměněný výsledek. Tohle bych fakt v Rustu nedělal. Podobných situací jsem zažil dost a mít zdroják a případně REPL je k nezaplacení.
OK, jakmile je ve hře REPL, tak to smysl dává.

Stran: 1 ... 35 36 [37] 38 39 ... 153