OK TO SHOP
Daudzviet Rietumu pasaulē populāra ir melnā piektdiena, kad, tirgotāju piedāvāto atlaižu uzrunāti, pircēji pie veikaliem veido iespaidīgas rindas, lai tikai pirmie tiktu iekšā, taču, jāteic, Latvijā situācija ir krietni labāka — mums ir «gaidāmā sestdiena», kurā ļoti liela nācijas daļa ir gatava pavadīt stundām rindā (kā «dzīvajā», tā internetā), lai tiktu nevis pie jaunākā IPhone, bet gan pie Dziesmu svētku biļetēm.
Diemžēl pie biļetēm tikt ne visiem izdevās, un tas skaidrojams galvenokārt ar to, ka tiek ignorēti elementāri tirgus principi, proti, cenas salāgojamība ar pieprasījumu. Taču šis aspekts mani šoreiz interesē maz, tāpēc parunāšu par pašu biļešu tirdzniecību.
Šī uzdevuma veikšanai Kultūras ministrija izsludināja konkursu, kurā uzvarēja «Biļešu paradīze» (BP). Konkursa nosacījumi paredz, ka BP nedrīkst piemērot komisijas maksu par biļešu tirdzniecību, toties tā saņem 0,75% no iekasētās summas. Kopumā svētku rīkotāji no visiem pasākumiem biļetēs cer iekasēt pat 4 miljonus eiro, kas rezultētos 30 tūkstošu eiro BP ieņēmumos, taču BP nav parasts uzņēmums, tāpēc tas izmanto vadošo juridisko pieeju «māja-kuģis» un paziņo, ka iekasētā maksa ir interneta veikala lietošanas maksa, nevis komisijas maksa. Šeit mēs vēl varēsim izbaudīt gana skaistu šovu.
Diemžēl ar to likstas nav galā. Nopietnas problēmas bija sastopamas arī pašā biļešu tirdzniecības procesā. Visu tirdzniecību varētu sadalīt divās daļās — tirdzniecība kasēs un tirdzniecība internetā.
Jāsaprot, ka tirdzniecība kasēs tāpat notiek caur internetu ar speciālu tirgotājam pielāgotu programmu, tāpēc, ja biļetes beidzās, tad tās beidzās visās kasēs reizē. Galvenā programmas priekšrocība ir, ka tirgotājam nav jāgaida rindā. Taču, neskatoties uz to, daudzās tirdzniecības vietās rinda uz priekšu virzījās ļoti lēni. Kā jomas flagmanis izceļama kase Zinātņu akadēmijā, kuras darba laiks beidzās pulksten 15:00 un kuras caurlaidība bija 1 klients 25 minūtēs.
Taču tīri profesionāli mani visvairāk piesaistīja problēmas ar publisko tirdzniecību internetā. Vienkārši, ja kādreiz nāksies ko tādu izstrādāt, negribētos pieļaut tās pašas kļūdas. Un problēmas bija.
Lai novērstu sistēmas pilnīgu atkāršanos, tika ieviests rindas princips un ierobežots vienlaikus portālam pieslēgušos lietotāju skaits. Kad tas bija sasniedzis kādu konkrētu vērtību, visi atlikušie tika ievietoti rindā un gaidīja, kad kāds beigs savu darbu portālā.
Lai nodrošinātu rindu, uz katra gaidītāja datora, ja atskaita citu funkciju nodrošināšanai nepieciešamos sīkfailus (cookies), tika izvietots arī sīkfails «queue_uid», kurš saturēja unikālu kodu. Pārlūks reizi 30 sekundēs vērsās pie servera, lai informētu serveri par to, ka klients vēl turpina gaidīt (nav aizvēris pārlūku), un noskaidrotu, vai rinda jau nav pienākusi. Servera pusē pēc šī koda tika skatīts, cik kodu ir priekšā, kuri izveidoti agrāk nekā manējais. Tā vismaz tam vajadzētu strādāt, bet, tā kā servera pusi es neredzu, varu arī kļūdīties.
Jau uzreiz ir skaidrs, ka pie šāda mehānisma rindā var iestāties no vairākām iekārtām un vairākiem pārlūkiem. Piemēram, uz mana portatīvā datora ir Google Chrome, Mozilla Firefox, Opera un Internet Explorer. Zinot, ka sīkfaili tiek glabāti katram pārlūkam atsevišķi, es no sava datora varu ieņemt četras vietas rindā. Ja man ir vairāk datoru, tad attiecīgi arī vairāk vietu.
Tālāk sākas pats interesantākais — brīdī, kad rinda tiek izstāvēta, pie klienta tiek novietots sīkfails «ok_to_shop», kura saturs ir viens vienīgs vieninieks. IT jomas pārstāvji lieliski zina, ka daudzos gadījumos nulle tiek interpretēta kā «False», bet jebkas, kas lielāks par nulli, un parasti tas ir vieninieks, tiek interpretēts kā «True». Tātad tiek novietots sīkfails «ok_to_shop» = 1, un tieši šī sīkfaila esamība nosaka to, vai rinda jau izstāvēta vai arī lietotājam jāturpina gaidīt.
Sīkfailu īpatnība ir tā, ka tie glabājas uz lietotāja datora, tāpēc tehniski nav šķēršļu tos izdzēst, modificēt vai pievienot jaunus. Tāpēc nolēmu pārbaudīt, vai tiešām piekļuve tiek kontrolēta caur brīvi modificējamu sīkfailu.
Darbības, kuras veicu:
1) izdzēsu visus sīkfailus, kas attiecas uz BP mājaslapu;
2) iegāju https://www.bilesuparadize.lv, notika pārvirzīšana (redirekts) uz www2.bilesuparadize.lv, kur tad arī, pēc visa spriežot, tika kontrolēta rinda;
3) «patvaļīgi» pievienoju iztrūkstošo sīkfailu;
4) no jauna devos uz https://www.bilesuparadize.lv, un — jūs neticēsiet, ko es tur ieraudzīju! Ieraudzīju iespēju iegādāties biļetes. Iegādāties, nestāvot rindu.
Visa šī izpēte man aizņēma aptuveni 1 stundu un 15 minūtes. Savukārt sīkfaila uzstādīšanu, ja zinu, kas jāuzstāda, es varu veikt mazāk nekā vienā minūtē.
Bija jau arī tradicionāli ierastās problēmas:
1) DDoS uzbrukums, kas varbūt nemaz nebija uzbrukums, jo slodze bija dabīgi liela, bet varbūt arī bija, to nu grūti pateikt.
2) Veca un caurumaina webservera versija, un tur nu uzņēmums pats ir vainīgs, ka neseko līdzi lapas drošībai.
Šķiet, radušos situāciju visprecīzāk raksturoja Krišs Rauhvargers: ««Nākotnes tehnoloģijas» nejēgu izpildījumā nodrošina to, ka attiecīgo tehnoloģiju pārzināšana dod priekšroku pār pārējiem. Tas nav labi.»
Priecīgus svētkus visiem, un, Dievs, sargi dzimteni!
Pilno versiju par maksu ir iespējams aplūkot adresē www.news.lv