Robotas

Kadangi programuoju elektroninę parduotuvę, tai be abejo mano tikslas yra užtikrinti kuo didesnę apyvartą. Vienas įdomiausių ir mistiškiausių būdų yra svetainės interaktyvumo sukūrimas - kaip priversti svetainę reaguoti į vartotojo pomėgius ir siūlyti jam tik tai, kas jam tikėtina, kad patinka? į šį klausimą atsakyti nėra lengva ir tai vis dar labai retai naudojama technologija ypač Lietuvoje, tačiau aš jums pabandysiu papasakoti kaip aš esu suplanavęs vartotojų sekimą (jis dar nėra padarytas, kol kas jį brandinu teoriniame lygmenyje) ir kaip jį gali pabandyti pasidaryti kiekvienas. Šį straipsnį suskaidžiau į keletą dalių, nes vienu ypu viską aprėpti gana sudėtinga - viename įraše apžvelgsiu vis kitą aspektą, kol paskutiniame straipsnyje prieisiu prie konkrečių veikiančių pavyzdžių.

Kas yra vartotojų sekimas? Labai plati frazė, tačiau paprasčiausiai tai suvokti kaip procesą, kurio metu visi vartotojo veiksmai yra išsaugomi ir pagal juos daromos išvados, bei siekiama įtikti vartotojui. Vartotojų seklį pavadinkime robotu, tai leis aiškiau suvokti jo paskirtį - nepastebimai sekti vartotoją ir daryti išvadas vadovaujantis kompiuterio protu. Nors robotas gali skambėti šiek tiek atgrasančiai, tačiau juk pats sekimas ir yra toks procesas - gana iškrypėliškas noras stebėti žmones jiems apie tai nežinant.Be to, robotai tam netgi labiau tinka, nes žmonės jaučiasi laisviau, kai juos stebi ne žmonės - juk prieš kompiuterį žmonės daro viską be jokių kompleksų net nežinodami, kad jie tikrai yra stebimi.

Pirmiausia reikia suvokti, kad mūsų robotas turi veikti visiškai atskirai nuo bet kokios svetainės - jis neturi būti įprogramuotas į svetainę ar elektroninę parduotuvę, nes roboto veikla turi priklausyti tik nuo vartotojo naršymo kitimų ir jo atliekamų veiksmų. Tuo labiau šie dalykai negali dalintis viena duomenų baze, nes ne vien skirtingųjų dalių apkrova bus labai skirtinga, bet ir bus prarandama loginė tvarka. Paprasčiausia tai suvokti kaip du atskirus serverius iš kurių vienas atsakingas už svetainės turinio generavimą, o kitas - už vartotojo veiksmų sekimą. Bet koks roboto tiesioginis surišimas su svetaine nebus naudingas - robotas neturi veikti priklausomai nuo svetainės vidinės struktūros, o sprendimai neturi būti priimami pagal vidinę struktūra - visas procesas turi vykti tik bendraujant tarpusavyje.

Kadangi tokiose kalbose kaip PHP nėra tokio dalyko kaip nuolatos veikiantys serveriai, todėl robotas tebūnie būna servisas. Servisas apibūdins robotą kaip loginį daiktą, kuris pasiekiamas specialiu adresu ir bendrauja jo nustatytomis taisyklėmis. Bendravimui aš rinkčiausi vieną iš XML pagrindų veikiančių protokolų (XMLRPC, SOAP ar pan.), nes jų užklausas ir atsakymus galima labai lengvai apdoroti bet kurioje kalboje ir aplinkoje, be to jie yra lengvai tvarkomi, nes siunčiami pranešimai yra suprantami net žmogui. Plačiau bendravimo nenagrinėsiu nes tai kol kas nėra lemiamas dalykas. Pasiruošimo darbai beveik baigti - dabar atėjo laikas pasižiūrėti kaip patogiai ir gerai dirbti su duomenis.

Jei svetainė suprogramuota teisingai tai ji naudoja Front Controller komponentą, kuris apdoroja visas vartotojo užklausas. Centralizuotas užklausų apdorojimas leidžia lengviau dirbti su vartotojo sekimu, nes darbą su robotu užtenka apsirašyti vos vienoje vietoje ir jis gali būti lengviau kontroliuojamas. Kaip sekti vartotojo veiksmus internete? Išsaugant vartotojo įvedamus duomenis GET ir POST tipuose. Tai galima padaryti labai įvairiais būdais, tačiau ne visi jie yra tinkami. Čia iškart galiu perspėti, kad tokių būdų galima surasti labai įvairių, tačiau aprašysiu tuos, kuriuos mano manymu yra labiausiai tikėtina ir naudinga pasirinkti.

Paprasčiausias būdas yra tiesiog saugoti vartotojo ID, aplankytą nuorodą ir aplankymo datą. Deja, bet tai yra gana prastas sprendimas, nes norint iš išsaugotų duomenų ištraukti bent šiek tiek informacijos juos reikės gana ilgai analizuoti - nuoroda nėra informacijos objektas, nes ją dar reikia paversti į informacijos atitikmenį. Tarkime turime nuorodą http://www.manoparduotuve.lt/index.php?action=category&cat_id=41242, kuri iš pirmo žvilgsnio atrodo aiški, tačiau yra visiškai netinkama analizei, nes neišskaidžius jos į atitinkamus komponentus (['action' => category, 'category_id' => 41242] bus neįmanoma padaryti išvadas apie vartotojo poreikius.

Žymiai geresnis būdas yra saugoti konkretų svetainės vietos atitikmenį arba tiesiog svetainės objekto aprašymą. Duomenų struktūra automatiškai tampa sudėtingesnė, tačiau darbas su jais be galo supaprastėja. Tarkime turime tą pačią nuorodą, kurią minėjau anksčiau, tačiau vietoje jos išsaugome informaciją “Pliušinių meškiukų kategorija” (programiškai tai be abejo būtų aprašyta kaip kažkokia duomenų struktūra ar pan.). Dabar jau net nebereikia analizuoti išsaugotų duomenų - juos apdoroti galime tiesiogiai. Pačios duomenų struktūros irgi dar neaprašinėsiu nes be pilno programos kodo ji būtų bevertė, tačiau galite įsivaizduoti, kad saugoma ne nuoroda, o kompiuteriui suprantamu stiliumi aprašytas svetainės vietos aprašymas.

Šį kartą nusistatėme pradines ribas - loginis roboto atskyrimas nuo svetainės ir duomenų saugojimo būdai. Nors tai dar tik labai mažai informacijos, tačiau to turėtų užtekti susidaryti pradinei nuomonei apie sekimo procesą - tai nėra vien programavimas, o ir teorinis užduoties supratimas. Kaip jau minėjau - pats dar nespėjau visko iki galo įgyvendinti, bet tikriausiai jau kelių mėnesių bėgyje spėsiu išbandyti tokį dalyką realiai ir įsitikinti jo žadama nauda. O jūs ar neišsigandote, kai sužinojote jog internete jus stebi ne tik Google, bet ir kita galybė svetainių?

RSS Patiko ką perskaitei? Užsiprenumeruok RSS srautą ir visada gauk mano naujausius įrašus pats pirmas! Tai ne tik, kad yra be galo patogu, tačiau ir leis tau nepraleisti nei vieno mano įrašo. Jei kiltų problemų - rašyk.

--!>