Stateless klasa i array

Mislim da bi tako trebalo.
Btw. vidi kako (npr u Laravelu) funkcioniše event/listener par a isto tako queues. To je isto primjer stateless-a. Stateless je u principu kad ne zavisi od session-a.

1 Like

Haleluja, aleluja i Alahu akbar u isto vrijeme!!!
Napokon da shvatim što je to. Brz sam ko Forest Gumb.
Sad je lakše, dalje nije frka :slight_smile:

Ne spamuj. Ima tema.

1 Like

Ustvari i mislim (sad kad se zamislim :smiley: ) da možeš smatrati stateless procesom onaj koji možeš da strpaš u queue (recimo da ga server odradi poslije). Ne kažem da mora biti delay u odradjivanju niti da to treba biti patern. Ali ako je priroda koda takva da možeš da ga staviš na čekanje da bi se odradio, mog’o bi se smatrati za stateless.

Ako tako gledamo, onda ovakav kod sa ovakvom klasom možemo strpat u queue bez problema.
Obzirom da je stless, smije li ona vratiti (stanje) true ili false, ili explicitno ne smije vratiti ništa?
Ovo je čisto pitanje iz znatiželje.

Ako uzmemo nešto iz queue-a (recimo slanje mejla), izgledalo bi ovako nekako:

if (false === $this->mailSent()) {
   \Log::error("Some notice. " . time());
}

Mada više volim raditi sa \Exceptions, try catch blokom i throw. Nekako mi zgodnije i čitljivije a i lakše.

try {
    true === $this->mailSent();
} catch (\Exception $e) {
    // write log about it
}

Ako je u queue-u, nema kome vratiti.
Zato i kažem, ako je za queue stateless je.

1 Like

@krcmar @creatifcode slažete li se sa zaključkom “što je stateless klasa” ili imate što za dodati, napomenuti, ispraviti nas?

A stateless/immutable class is said to be stateless when it doesn’t have any mutators

Mislim da je pravo pitanje “zašto tako izvesti”, umjesto “kako to izvesti”.

Na pitanje “kako?”
U tvom slučaju ne vidim problem da unutar sort metode kreiraš lokalnu varijablu koja će ti poslužiti za sortiranje.
Također ne vidim problem da metoda stateless klase vraća output.

Na pitanje zašto?
Nisam baš našao jasne odgovore, ali koliko vidim tu se čak spominje problematika optimizacijske prirode. Ako imaš stateless/none-mutabile klasu, onda je engine u pozadini rasterećeniji…i nas obične smrtnike boli k* za to, ali nekome su ti djeca i brine o svakom taktu procesora :smiley: :smiley:

Druga stvar, ako nije stateless…i ako netko baš traljavo rješi stvar…onda bi moglo biti i thread-none-safe.
Recimo, tvoj file koji mijenjaš bi se mogao tretirati kao state…i onda recimo da udare dva paralelna poziva, a ti da hendlaš samo jedan file…mogla bi se stvar skršiti.

Možda sam sve ovk bubnuo ko padobranac :smiley: …ali ovo malo što pročitah o statelessu, dobio sam ovakav dojam.

1 Like

Dobro je što si uletio :slight_smile:
Dakle, klasa bi trebala biti ili singleton, ili napraviti ovakvo rješenje:

  1. new SortirajFajl (inputfile.txt, outputfile.txt)
  2. (u klasi):
  • provjeri postoji li file _inputfile.txt

  • ako ne postoji napravi _inputfile.txt koji je kopija inputfile.txt

  • ako postoji, provjeri koliko je star, ako je stariji od (recimo) 2 sekunde, obriši ga i napravi novi _inputfile.txt koji je kopija inputfile.txt

  • ako je noviji od 2 sekunde baci exception da je file in use i prekini

  • napravi sort

  • spremi sort u outputfile.txt

  • obriši _inputfile.txt

To bi (po mome) riješilo problem kojeg si DOBRO primjetio, klasa bi ostala stateless, a ne bih morao koristiti singleton.
Mišljenja?

Ja iz ovog ne vidim ništa tu šta si sad naveo.
Je li moguće da postaviš kompletan zadatak?
Pa i ako ne želiš rješenje, da tek znamo šta je zahtjev.
Meni misli lutaju lijevo desno svakim novim postom u situaciji kad ne znam šta je zahtjev.
:unamused:

Ne slazem se. Web je sam po sebi statless, dakle opalis request i nemas vise pojma sto se dogadja. Statless je sve sto nesprema trenutni status i gdje ne mozes pratiti state(status) svoje aplikacije. Zato su dobri ljudi izmislili Sessions, cookies, cache itd.

Moglo bi se u kratkim i jednostavnim crtama reci da je na webu sve sto ne koristi nekakav session storage stateless.

Ono sto mi se u ovom zadatku cini da ti moras u raditi je API Endpoint koji ce primiti jedan parametar i vratiti resultat.

Ne.

Zaprimi request, obradi request i vrati response, nema provjere dali postoji to nesto vec jer onda vise nije stateless.

Ovdje se radi 99% posto o APIju

1 Like

Jel cilj rješiti nekakav zadatak po specifikaciji …ili imaš konkretan problem?
Čini mi se da je ovo prvo? Jer ako je konkretan problem, sumnjam da bi sam sebe ganjao u eksplicitni teoretski stateless?

Ja sam se ubacio samo da dam svoje mišljenje o svrsi stateless patterna.
A zaboravio sam reći ono valjda najglavnije…ako je klasa stateless, onda je output/input = const.
Čim klasa ima neku unutarnju promjenu/mutaciju …to se vjerovatno nekako preslikava i na output/input.

Kako se spomenula web stranica da bi bila stateless modul kad nebi imala coockie niti sessione…valja dodat da nebi smjela imati ni bazu podataka niti ikakvo trajno spremanje u bilo kakvu memoriju…da bi se ponašala stateless.
I ako ćemo o teoriji, u tome moguće leži kvaka. Bitno različito bi bilo testirati module koji su stateless i koji nisu…

1 Like

A u praksi se uvijek sudarimo s činjenicom da je jedina konstanta promjena :smiley:

1 Like