Planiranje i usability Planiranje, legalnost, privatnost, arhitektura, principi |
|
Alati teme | Način prikaza |
20. 05. 2012. | #1 |
mV
Certified
Datum učlanjenja: 22.08.2009
Lokacija: Novi Sad
Poruke: 67
Hvala: 0
16 "Hvala" u 13 poruka
|
Formulari i 'race condition'
Šta se u praksi pokazalo kao najbolje rešenje za sprečavanje 'race condition' situacije kod editovanja formulara ?
Primer: Administrator 1 je otvorio formu stranicu kojom posmatra sadržaj nekog zapisa iz baze, i počinje da ga edituje, jer mu se recimo ne sviđa naslov artikla. Administrator 2 zatim otvara na svom računaru istu tu stranicu i gleda sadržaj istog tog zapisa iz baze, jer recimo želi da cenzuriše psovku iz teksta artikla. Admin 1 je izmenio naslov i pritiska dugme 'Save' i snima nov sadržaj formulara u bazu. Admin 2 završava cenzurisanje teksta i pritiska 'Save'. Time u stvari on pregazi naslov teme originalnim sadržajem i tako slučajno anulira efekat prvog admina. Kako je to rešeno u nekim većim sistemima ? Zaključavanje editovanja zapisa ne dolazi u obzir.
__________________
Quis custodiet ipsos custodies ? |
20. 05. 2012. | #2 |
Ivan Dilber
Sir Write-a-Lot
|
Po meni je najbolje resenje da pamtis last_updated timestamp u samom formularu i onda kod snimanja ako se to ne poklapa sa onim u bazi, treba upozoriti da su podaci u medjuvremenu izmenjeni i pitati da li da ih zgazi ili ne. Ponudis da se u drugom prozoru otvore svezi podaci, pa nek uporede i urade rucni merge.
Ako imas vremena da se zezas, moze se napraviti i da sistem sam uporedi sve podatke redom i da vidi tacno koji su izmenjeni i to odmah pokaze ili cak da uradi automatski merge (nije to tako tesko: ako je polje menjala samo jedna osoba, zadrzi se poslednja izmena.. kao svn sto radi, buni se samo ako su oboje menjali isti podatak). Takodje dobro je i da se pamti ko je sve menjao fajl, hronoloski, pa da osoba A moze da pozove osobu B i konsultuje se oko izmena.
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 20. 05. 2012. u 18:52. |
20. 05. 2012. | #3 |
Super Moderator
Knowledge base
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
|
ili snimis samo deo za koji zakljucis da je izmenjen...
tu bi moglo preko javascripta da se napravi da korisnik prvo klikne misem na pasus koji zeli da izmeni - onda samo taj deo postane edit-abilan - i posle samo njega snimas u bazu. ako neko drugi isti taj pasus menja u tom trenutku - onda upozoris korisnike. s tim sto to podrazumeva da svaki pasus ima svoj ID broj... Poslednja izmena od Peca : 20. 05. 2012. u 20:15. |
20. 05. 2012. | #4 |
Ivan Dilber
Sir Write-a-Lot
|
to je ok za jednostavno editovanje texta, tipa CMS-a, ali zamisli neki sluzbeni formular tipa racunovodstva i radnika koji mora da ceka da ajax proveri svako polje da bi mogao da unese podatak. Ove sto su navikle na Clipper mi se i ovako bune da nije dovoljno brzo u browseru
Da budem iskren, ja se sa tim nikad nisam zezao, naprosto zakljucam editovanje ako je neko drugi otvorio i ispisem poruku tipa: "Pera Peric trenutno edituje ovaj formular, kontaktirajte ga da ga zatvori." i cao.
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 20. 05. 2012. u 22:03. |
21. 05. 2012. | #5 |
Super Moderator
Knowledge base
Datum učlanjenja: 02.10.2006
Lokacija: Niš
Poruke: 1.618
Hvala: 263
275 "Hvala" u 104 poruka
|
ne vidim sto bi se na javascript izgubilo vreme... dok korisnik otkuca prvo slovo on ce u pozadini proveriti lock... a submit ko submit, isto za sekund posaljes i stigne odgovor, kao i svaki HTTP POST...
|
21. 05. 2012. | #6 |
Pukovnik u penziji
Grand Master
|
Izgleda da nisi radio sa ljudima koji su penziju dočekali radeći u Clipper-u i crno-plavom interfejsu...
|
"Hvala" mangia za poruku: |
22. 05. 2012. | #8 |
Knowledge base
Wrote a book
Datum učlanjenja: 07.06.2005
Lokacija: Neđe ođe...
Poruke: 1.197
Hvala: 339
688 "Hvala" u 178 poruka
|
Sasvim dovoljno. Ako imaš veliki broj korisnika koji u svakom trenutku mogu editovati istu stvar onda ti je 'race condition' najmanji problem
__________________
Чак Норис може да си ги врзе врвките на чевлите со стапалата. |
|
|