www.romver.ru
/ Полный список статей / Проектирование БД, поиск, юзабилити.

Как заказать сайт


АБРАКАДАБРА (Тоже самое но в читаемом виде)

Segodna a rasskaju vam pro moy internet-magazin. Kak a re6il ego sdelat' i potom peredelival. Kak a mu4alsa nad arxitekturoy i organizaciey logiki. Kak a riskal po seti v poiskax podxoda6ix uzabiliti re6eniy, i 4to v itoge pridumal. Pod katom dovol'no mnogo interesnix texni4eskix i ne o4en' podrobnostey.
4ego eto a vdrugNa4nu s togo, 4to jivu a v slavnom gorode surovix mujikov — v 4elabinske. I vot, odnajdi ve4erom (okolo goda nazad), a podumal, 4to o4en' xo4u pol'zovat'sa internet-magazinom produktov s dostavkoy na dom. Prosto v xolodil'nike vnezapno vsё kon4ilos', a koding 6ёl v polnuu silu — s dimom ot klaviaturi, i otrivat'sa ne xotelos'.
A v gorode u nas, mejdu tem, net predstavitel'stva ni odnoy firmi, zanimau6eysa 4em-to podobnim (tipa A6ana ili Utkonosa). Slujbi dostavki s zakazom po telefonu ne rassmatrivau kak neser'ёznie. Pri4ini takogo polojenia ne asni. To li oni ne vidat perspektiv, to li dalekovato do nas, to li a sli6kom naiven i u mena vsё ruxnet i net nikakix 6ansov, a oni uje vsё eto pros4itali i poetomu ne lezut =). Koro4e, kto ne riskuet — tot ne p'ёt 6ampanskogo. Poetomu budem kodit'.

Perviy blinObdumav etu ideu, otdal eё mlad6emu bratu. Skazal vibrat' prostuu besplatnuu sistemu, razobrat'sa, postavit', nastroit' i zapustit'. Prosto besplatnoy sistemoy okazalas' OSCommerce. A kak bi i ran'6e sli6al, 4to sia sistema ne to 4tobi o4en'. Odnako j sredi drugix al'ternativ ona kazalas' bolee-menee dostupnoy, ponatnoy i ras6iraemoy. Boje, kak a o6ibalsa…
Koro4e brat vozilsa s etim !#$^@% neskol'ko mesacev, posle 4ego sayt mi vsё-taki zapustili. Eto bilo ujasno. Vsё skripelo i tormozilo, razvalivalos' i voob6e ne poddavalos' kakomu bi to ni bilo ras6ireniu i ulu46eniu dla uderjania posetiteley. Koro4e atas. Porabotav v takom vide paru mesacev, bilo re6eno snesti vsё nafig i na4at' s nula.

My first loveVzglad kak-to srazu upal na CakePHP, nesmotra na stat'i na xabre, vosxvalau6ie Code Ignighter (kotorogo a poka tak i ne posmotrel).
Mne trudno opisat' slovami tot vostorg, kotoriy a ispitival sozdavaa po dokumentacii 4to-to tipa bloga. Eto bilo prosto vol6ebno. Vstroennie komponenti, automagic, obrabotka form… A vozmojnosti svazey tablic — eto prosto ekstaz! Zdes' vsё uje napisano i razruleno do nas — nujno prosto sest' i figa4it'.
Koro4e, vi ponali. Otdel'no stoit zametit', 4to v etot raz kodit' mi seli vdvoёm.

Baza dannixItak, magazin produktov. Opustim, pojaluy, takie trivial'nie ve6i kak pol'zovateli, korzini, kategorii i t.d. 4to deystvitel'no interesno — tak eto organizacia produktov.
V OSCommerce vsё bilo prosto i ponatno. Odna tablica, tupo spisok.
id#name#price

Takim obrazom, tablica bila zapolnena 4em-to vrode etogo:
4ipsi 90g bekon
4ipsi 120g bekon
4ipsi 90g sir
4ipsi 120g sir
4ipsi 240g sir


Gde krasota, gde racional'nost'? Nado kak-to eto ulu46it'. Samoe prostoe — vse varicii zasunut' v atributi, i pridumat' mexanizm ix obrabotki.

Neuda4niy variant
tablica products:
id#name#image#base_price

tablica attributes:
id#product_id#attr_type#name#price_change

//price_change predpolagalos' ukazivat' kak izmenenie ceni otnositel'no bazovoy, naprimer 1.0 ili 2.2


attr_type — eto tip atributa, naprimer ves ili vkus.

Po4emu neuda4niy? Potomu 4to zdes' ne u4teni vozmojnosti gruppirovki atributov. Naprimer, est' v tablice
vkus: Bekon
vkus: Sir
ves: 120g
ves: 240g


I kak nam ukazat', 4to est' tovar «Bekon 120g», a «Bekon 240g» net? Zna4it nujno ukazivat' pravila gruppirovki atributov. Razvitie etoy misli privelo k sleduu6emu re6eniu.

Genial'niy variant
mould (angl.) — 6ablon, forma dla lit'a.
tablica moulds:
id#name#image
//obratite vnimanie — zdes' net ceni

tablica attributes:
id#attr_type#name
//bol'6e net product_id i price_change

tablica products:
id#mould_id#price

tablica products_to_attributes
id#product_id#attribute_id


Teper' tovar formiruetsa o4en' gibko. Na4ёm s tablici attributes. Ona zapolnena u mena 4em-to vrode etogo:
1#ves#100g
2#ves#120g
3#ves#150g
4#ves#240g
5#ves#1kg
6#ob&ёm#0,33l
7#ob&ёm#0,5l
8#ob&ёm#1l
9#vkus#bekon
10#vkus#sir
11#vkus#klubnika


Ponatno, 4to attr_type soderjit tol'ko identifikator, kotoriy ukazivaet na tablicu imёn atributov — prosto zdes' vines dla asnosti.

Primer zapisi v moulds
1#4ipsi Lays#lays.jpg

A teper' sledite za rukami! Who wants to see some magic?
Zapisi v products
1#1#12
2#1#12
3#1#24


Zapisi v products_to_attributes
1#1#2
2#1#9
3#2#2
4#2#10
5#3#4
6#3#10


Ob&asnau. Mi sozdaёm tri produkta v sootvetstvuu6ey tablice, ukazivaa mould, kotoriy oni nasleduut, i cenu. I tut je nazna4aem atributi. Produkt #1, naprimer, polu4aet ves 120g i vkus bekona, a produkt #3 imeet ves 240g i vkus sira.
V takoy sisteme mojno opisat' absolutno luboy tovar, s lubim 4islom variaciy. Mojno daje sdelat' mould «Cola», i ot nego sozdat' produkti so vkusami «Mirinda» ili «Sprite».

PoiskPoisk zanimaet osoboe mesto v uzabiliti moego resursa (ob etom nije), poetomu k realizacii ego nujno podoyti so vsey ser'ёznost'u. V na4ale a re6il poizu4at' storonnie proekti. Poradoval sphinx, no okazalos' 4to ego nujno stavit' na ma6inu, a u mena poka tol'ko virt. xosting. Potom smotrel na Zend Lucene (otdel'noe spasibo xabrauzeru , kotoriy na6ёl vrema vislat' mne sobstvennuu standalone sborku etoy 6tuki). Smotrel, proboval, tikal, stavil, no zapustit' normal'no ne smog. Potom takje razvlekalsa s fulltext poiskom samoy mysql, odnako toje bezuspe6no. Pri6los' pisat' samomu.

Tut ni4ego, kak mne kajetsa, osobo genial'nogo net, no eto vsё sdelano mnoy li4no, a ne po 4'im-to umnim stat'am. Poetomu rasskaju, pojaluy.
Dla organizacii poiska delaem dve tablici:
searchindex:
id#stem

searchcont:
id#stem_id#modelname#field#model_id#position


Ob6iy princip raboti vpolne o4eviden. Pri indeksacii ukazivautsa modeli i pola, kotorie nujno obrabotat'. Zatem v cikle vibirautsa tekstovie pola i razbivautsa po slovam. U kajdogo slova evristi4eski izvlekaem koren' (stemming), i smotrim — est' li uje takoy je koren' v baze. Dopisivaem v searchcont naydenniy stem, model', pole, identifikator rada i poziciu, na kotoroy naxoditsa slovo (eto nam ponadobitsa dla sortirovki po relevantnosti).

Pri poiske zapro6ennaa stroka razbivaetsa na slova, u kajdoy i6utsa sovpadenia. Zatem, esli neskol'ko slov naydeni v odnoy zapisi modeli, s4itaem relevantnost'. Pomnite pro pole position? Nu tak vot, a re6il prosto pos4itat' dispersiu nabora zna4eniy. Grubo govora, eto razlёt zna4eniy ot srednego. To est' 4em ku4nee naxodatsa sovpav6ie slova v zapisi, tem sama zapis' relevantnee. S4itaetsa po formule

— eto srednee arifmeti4eskoe vsex zna4eniy.

Da, soglasen, metod dovol'no grubiy. No u mena poiskovaa fraza v osnovnom sostoit iz odnogo-dvux, maksimum trёx slov, tak 4to takaa ocenka vpolne priemlema.

UzabilitiV processe proektirovania izlazil ku4u saytov — iskal soveti, varianti, gotovie re6enia. Na6ёl mnogo vsego poleznogo i ne o4en'. Mnogoe vnedril, a koe-4to tol'ko planiruu. To, 4to uje rabotaet (zdes' ne tol'ko klassi4eskie uzabiliti fi6ki, no e6ё i nekotorie idei po organizacii raboti s magazinom):
  • Poskol'ku katalog u mena dovol'no ob&ёmniy (odnix tol'ko kategoriy bol'6e 200) bilo re6eno sdelat' upor ne na brauzing po katalogu, a na ispol'zovanie formi poiska, kotoraa videlena. Plus k etomu v saydbare predstavleni ne vse vozmojnie kategorii, a tol'ko popularnie.
  • Vozmojnost' sover6enia pokupki bez registracii
  • Pomo6' na meste u kajdogo punkta
  • Interfeys s uporom na funkcional. Iz grafiki tol'ko logotip, gradientik na zadnem plane i ikonki.
  • Svaz' s operatorom pramo iz brauzera na osnove vidjeta ot google talk
  • Aaksovaa korzina
  • Istoria pokupok s vozmojnost'u 4asti4no ili polnost'u dobavit' stariy zakaz v novuu korzinu
  • Nali4ie su6nosti «paketov tovarov». Grubo govora, eto zaranee sobrannaa korzina, imeu6aa label (nazvanie, 4tob ne poterat'sa). Eё toje mojno dobavit' v teku6uu formiruemuu libo celikom, libo po 4astam. Zaregistrirovannie pol'zovateli mogut sami sozdavat' paketi tovarov.
  • Mnojestvo tonkostey, nedostoynix otdel'nix punktov: udobnaa forma registracii, linki na prosmotr korzini i oformlenie zakaza so vsex stranic (esli pol'zovatel' imeet korzinu v statuse formirovania), vse kontakti krupno v 6apke, knopka «Kupit'» u kajdogo produkta pri lubom predstavlenii spiska tovarov (vnutri kategorii, rezul'tati poiska)

To, 4to planiruetsa:
  • Pol'zovateli, kotorie kupili etot tovar, takje vibrali...
  • Napisat' FAQ i instrukciu «Kak kupit'».
  • Est' idea «lubimix tovarov». Xota, vozmojno, eto li6nee.
  • 4to sey4as na sayte. Kto i 4to pokupaet.
  • Nado vidumat' kakuu-to e6ё sistemu vzaimodeystvia pol'zovateley.

V realizacii 4ego a ne uveren:
  • Tovari predstavleni «plitkoy», po dva v radu. Teku6ee predstavlenie soderjimogo plitki ne o4en' nravitsa.
  • Nad li4noy panel'u mojno (nujno?) rabotat' o4en' mnogo.
  • ?

Sobstvenno ssilka: ku
Nadeus', xabrasoob6estvom eto ne budet voprinato kak reklama. A vsego-li6' xvastaus' svoim tvoreniem, kak razrabot4ik.
Kak dumaete, mojet etot magazin stat' ideal'nim? A imeu vvidu kak primer realizacii internet-magazina.
habrahabr.ru/blogs/webdev/44338/
3
Создание эксклюзивных сайтов, юзибилити анализ и бесплатный анализ под запросы основных поисковых машин
Контактная информация :
тел. +7(98I) 7608865

Написать письмо на e-mail
icq 415547094  romverрейтинг на mail.ru сайта romverinbox.ru
© 1997 - 2024 romver.ru

Полная карта сайта Display Pagerank