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 - BoneFlute

Stran: 1 ... 52 53 [54] 55 56 ... 133
796
Vývoj / Re:Uváznutí v Aktor systému
« kdy: 18. 10. 2019, 00:35:54 »
Naopak. Jsem v okamžiku návrhu. Všechnu je zelené a krásné. Ale ty aktory může (bude moct) napsat kdokoliv.

Hmm, a máš k tomu nějaké zadání? Třeba bychom se nad tím návrhem, vzory co omezí uváznutí atp. mohli zamyslet kolektivně..

Aktory jako služby, poskytující data i poskytující výpočty. Aktor jako klient se bude dotazovat jiných aktorů. Libovolný aktor může poslat dotaz libovolnému jinému. Zpráva vede přes prostředníka, který schraňuje zprávy, a pak je předává adresátům. Aktor dostane zprávu, podle ní vykoná svou úlohu - sám, nebo deleguje na jiného. Prostředník pošle zpět zprávu: zpráva uložena, zpráva vyzvednuta.

Zprávy coby komunikační protokol mám zatím bez pravidel. V dalším kroku bych rád nějaký formální jazyk typu KQML.

Tedy jak vidno, není to nic světoborného. Taky tam v tom zadání nejsou žádná zvláštní omezení. Jakékoliv postřehy vítám.

Pointa je, že jsem teda napsal první prototyp, a hned jsem si ho zacyklil. Tedy nejde mi o to, že by to muselo být vysloveně neprůstřelné jen by to snad nemuselo být tak snadné to rozbít.

797
Vývoj / Re:Uváznutí v Aktor systému
« kdy: 18. 10. 2019, 00:11:49 »
Jediné, co zatím víme, je že se to nebude testovat, páč to je kargokult.

Tímto přístupem se na to možná rovnou vykašli, ne?

798
Vývoj / Re:Uváznutí v Aktor systému
« kdy: 17. 10. 2019, 18:02:46 »
Ale taky se to začíná blížít unit testům, které tu už pár lidí doporučovalo.

Ty unittesty byla evidentně rada z nepochopení. Tu jsem vyškrtl.
Možná by stálo za to rozepsat důvody, proč tady unittesty nepomůžou. Mohlo by to tu diskuzi trochu posunout.

Osobně nevidím nějaký zásadní rozdíl mezi specializovaným hlídačem nějakého protokolu (musí být specializovaný, protože obecně tam může lítat opravdu cokoliv) a specializovaným testem nějakého rozhraní. Oboje kontroluje, jestli ta komunikace odpovídá nějaké předloze, jen to kontrolují jindy.
Jen jsem se chtěl vyhnout uváznutí v cargo-cultu.

Odhlednuto od toho prakticky souhlasím. Teď řeším jak na to. Co a jak můžu zajistit. Jak mohu definovat protokol. Nebo zda validovat vlastní aktor. Co ještě dělat, a co už se nevyplatí.

Zatím uvažuju o tom, že připravím API tak, abych vývojáři dosažení uváznutí co nejvíc zkomplikoval. I zde se mohu ptát, jak.

Nebo jsou ty aktory nějaké zprasené produkty třetí strany bez podpory, zdrojáků a naděje?
Naopak. Jsem v okamžiku návrhu. Všechnu je zelené a krásné. Ale ty aktory může (bude moct) napsat kdokoliv.

799
Vývoj / Re:Uváznutí v Aktor systému
« kdy: 17. 10. 2019, 14:47:46 »
Ale taky se to začíná blížít unit testům, které tu už pár lidí doporučovalo.

Ty unittesty byla evidentně rada z nepochopení. Tu jsem vyškrtl.

800
Vývoj / Re:Uváznutí v Aktor systému
« kdy: 16. 10. 2019, 20:22:20 »
No, nejprve asi musíš definovat uváznutí. Jak poznáš, že nekonečná sekvence zpráv mezi aktory není korektní chování? Vždyť na tom, že si aktory posílají zprávy tam a zpátky není nic neobvyklého. Navíc právě díky tomu mutable stavu uvnitř nikdy nevíš, že je ta série zpráv skutečně nekonečná, můžeš mít uvnitř nějaký counter, který po tisíci iteracích přestane ok posílat, a zas to může být očekávané chování. Takhle asi narazíš buď na vágní definici uváznutí, nebo na Halting problem, jak zmiňoval někdo výše.

No, momentálně jsem ve stavu kdy zjišťuju co se s tím dá dělat. Mnohé věci mi jsou jasné, mnohé ne.

Tak možná by šlo, v případě deterministické funkce tu chybu odvodit podle toho vzoru víše. U nedeterministické funkce jsem samozřejmě v háji.

Také jsem uvažoval, že bych to prostě jen výce vyhranil, aby to nebylo snadné, udělat cyklus. Třeba potvrzenka k tomu svádí. Takže udělat speciální typ zprávy, na kterou se neodpovídá.

A tak.

801
Vývoj / Re:Uváznutí v Aktor systému
« kdy: 16. 10. 2019, 16:45:58 »
I tak ale nevidím problém v tom napsat alespoň test, který spawne dva aktory, nechá jednoho poslat druhému zprávu ok, a zkontroluje, že zpátky přišla právě jedna odpověď ok, pokud je to zamýšlené chování. Bohužel díky tomu skrytému mutable stavu není zaručené, že když to tak dopadlo jednou, dopadne to tak i podruhé.

OK, ale tady se obávám, že neřešíš problém na který se ptám.

Jak otestovat aktor? To bych si snad i poradil.

Já se ale ptám na to, jak zjistit, případně otestovat, že v komunikaci mezi dvěmi aktory, které nemám pod kontrolou, nedojde k uváznutí. Přičemž samozřejmě se může jednat i o různé komunikace. Jednou je to ok -> ok, jindy done -> ok -> ok -> done... etc.

802
Vývoj / Re:Uváznutí v Aktor systému
« kdy: 16. 10. 2019, 16:01:23 »
Ti aktoři jsou špatně napsaní. Když dostane správu "OK" tak na ni odpoví taky "OK". Prostě chyba.

Kacirska myslenka... :-)
Co na to napsat testy?

Úplně nevím, jak by to mohlo pomoct, ale nebráním se tomu. Jak?

803
Vývoj / Re:Uváznutí v Aktor systému
« kdy: 16. 10. 2019, 16:00:13 »
Ti aktoři jsou špatně napsaní. Když dostane správu "OK" tak na ni odpoví taky "OK". Prostě chyba.

No a co si představuješ za řešení?

Že to jakože "odhadne", že je tam chyba v komunikaci, a třeba to zařízne. Něco jako timeout. Nebo jako ta věc v databázi, která detekuje deadlocky.

Nemá-li to řešení, ok. Ale chtěl jsem se zeptat.

Moje aktuální úvaha směřuje k tomu, že budu sledovat komunikaci, a když se tam zopakuje vzor, tak to zaříznu.

Kód: [Vybrat]
Když A řekne "a" a B odpoví "b" a A odpoví "a", tak B vždy odpoví "b" -> konec

804
Vývoj / Re:Uváznutí v Aktor systému
« kdy: 16. 10. 2019, 12:49:12 »
Ti aktoři jsou špatně napsaní. Když dostane správu "OK" tak na ni odpoví taky "OK". Prostě chyba.

805
Vývoj / Re:Použití příkazu GOTO v jazyku C
« kdy: 14. 10. 2019, 21:57:19 »
No to je důvod proč preferuji pure funkce. Protože vím že nemohou ovlivnit okolní stav jinak než je očekáváno (to znamená nijak).
Můžou měnit kontext.
Můžeš to rozvést?

806
Vývoj / Uváznutí v Aktor systému
« kdy: 14. 10. 2019, 19:50:10 »
Zdravím.

Zkouším si jednoduchý Aktor systém. Celkem mi to jakože pěkně funguje, ale trošku jsem se zasekl na uváznutí.

Předpokládejme dva aktory A a B.
A -> B: kolik je hodin
B -> A: 19:41
A -> B: supr, díky
B -> A: není zač
A -> B: ok
B -> A: ok
A -> B: ok
B -> A: ok
A -> B: ok
B -> A: ok
A -> B: ok
...

Mohl by mi tu někodo poradit, jak se něco takového řeší? Třeba v Erlangu, systému Akka, nebo dalších?

Nechce se mi spoléhat na to, že ten aktor bude napsán správně. Rád bych tomu dodal alespoň základní ochranu. V "normálním" kódu se to dá trochu statistickou analízou podchytit. Na druhou stranu mé znalosti problematiky jsou omezené, a tak třeba existuje nějaké jednoduché řešení které dokáže víc.

Předem dík.

807
Odkladiště / Re:Bazoš - kupující nezaplatil, co dál
« kdy: 25. 09. 2019, 13:31:34 »
Vy si to představujete moc jednoduše :D Ale asi jo, někdo musí prošlapat tu neznámou cestu, aby pak mohl říct... "Tudy ne, přátelé".
Před barákem se mi mlátili dva chlápci. Jeden do druhého fakt tvrdě bušil. Otevřel jsem okno, zařval na ně, ať toho nechaj a zavolal policii. Měl jsem bobky až za ušima. Poprvé je to vždycky těžký.

809
A proto jakékoliv ručně psané testy jsou z principu špatně. (Tím nechci říct, že by se neměli psát.) Bylo by mnohem lepší, když budou chyby hledat ti nejzkušenější vývojáři a zadrátuje se to do stroje.
třeba jedno rozšíření Haskellu ověřuje platnost podmínek ohledně (endo)funktorů, které běžný překladač prostě ignoruje.

Měl by si hint?

810
A proto jakékoliv ručně psané testy jsou z principu špatně. (Tím nechci říct, že by se neměli psát.) Bylo by mnohem lepší, když budou chyby hledat ti nejzkušenější vývojáři a zadrátuje se to do stroje.

Kdo bude ty chyby vyrabet, aby meli ti nejzkusenejsi co hledat?
Budou jenom hledat? Nebo budou mit cas i na neco jineho?

Asi jsem se špatně vyjádřil.

Narážel jsem na poznámku, že go-lang dokáže detekovat race condition. A když to dokáže překladač, který napsal zkušený vývojář zaměřující se na problém, tak je to IMHO vždycky lepší, než když si ty chyby a testy na to bude hledat/psát každej koncák sám. Teoreticky by samozřejmě koncák měl mít větší předpoklady pro napsání lepšího testu. Ale v praxi to podle všeho nefunguje.

Stran: 1 ... 52 53 [54] 55 56 ... 133