Քայլեք այն ամենի միջով, ինչ կցանկանայիք անել ձեր գլխում: Պատկերացրեք աշխատանքային կայքը, պատկերացրեք, որ ձեր վեբ հավելվածն աշխատում է նախքան սկսելը: Այսպիսով, ձեր օգտատերը մուտք է գործում (կառավարվում է autlogic-ով) և տեսնում է «Ի՞նչ եք անում հիմա»: Օգտագործողը լրացնում է կարգավիճակի հաղորդագրությունը և սեղմում «տեղադրել»: Կարգավիճակի հաղորդագրությունը հայտնվում է նրանց նախկինում տեղադրված հաղորդագրությունների վերևում:
Սկսեք հեշտ մասից: Ստեղծեք դաս, որը տեղադրում է երկու ծառայություններ: Օգտագործեք twitter gem-ը և rfacebook-ը՝ արդեն սահմանված երկու ծառայություններում գրառումներ անելու համար: Ապագայում դուք կցանկանաք թույլ տալ, որ օգտատերը կապի ծառայություններն իր հաշվին, և դուք կկրկնեք համապատասխան ծառայությունների միջոցով և կուղարկեք հաղորդագրությունը յուրաքանչյուրին: Այս գործառույթն աշխատելուց հետո կարող եք մի փոքր վերափոխել կամ փայլեցնել միջերեսը՝ այս հատկությունը լրացնելու համար: Ես անձամբ մինչև վերջ կանեի «սոցիալական մեդիայի հաշիվ ավելացնել իմ պրոֆիլին» գործառույթը:
Ավելի դժվար է տվյալների ընթերցումը (տարօրինակ կերպով), քանի որ դուք ստիպված կլինեք պարզել, թե ինչպես դրանք պահել: Դուք ոչինչ չեք կարող պահել, բայց ես կասկածում եմ, որ դուք կբախվեք API-ի սահմանափակումների մեջ, պարզապես անընդհատ որոնելով (կարող է նախագծվել դրա շուրջ): Ես կպահեի գրառումների մի փոքր քեշ՝ կապված օգտատիրոջ սոցիալական մեդիայի հաշվի հետ: Այս կերպ տվյալների մոդելը կունենա հետևյալ տեսքը.
A user has many social media accounts.
A social media account has many posts. (cache)
Իհարկե, այժմ պետք է պլանավորել գրառումների քեշավորումը։ Սա կարող է կատարվել ձեռքով, հիմնվելով իրադարձության վրա (օրինակ, երբ նրանք մուտք են գործում) կամ ժամանակի վրա հիմնված: Այսպիսով, երբ թարմացումը տեղի ունենա, դուք բեռնում եք գրառումները սոցիալական մեդիայի այդ հաշվի համար, և օգտվողը կտեսնի գրառումները հաջորդ անգամ, երբ նրանք կհայտնվեն էջին: Հաճախորդի զննարկիչին իրական ժամանակում սեղմելու համար, մինչ նրանք նայում են էկրանին, օգտագործեք faye (ոչ տրիվիալ) և ajax՝ նոր գրառումները տեղափոխելու սոցիալական մեդիայի հոսքի տեսքի վերև:
Ժամանակի վրա հիմնված տարբերակը բարդ է, քանի որ դուք կամ պետք է աշխատեք, կամ ռելսերը կարգավորեն այդ ամենը ժամացույցի մեխանիզմի նման գոհարով: Բայց հետո դուք պետք է հեռանաք ռելսերից: Ես նաև լուծել եմ դա՝ դասը /lib-ում ունենալով ամբողջ աշխատանքը, և պարզ վեբ զանգը սկսում է թարմացումը: Բայց դա բազմաֆունկցիոնալ օգտագործման դեպքում չէր: Այնպես որ, դա կարող է չաշխատել: Ամեն դեպքում, դուք կցանկանաք այս խնդիրների համար ունենալ մի քանի գեղեցիկ կոդ, քանի որ թարմացման հարցումները կարող են լինել տարբեր աղբյուրներից:
Դուք նաև ստիպված կլինեք գործ ունենալ API-ի սահմանափակումների հետ: Թվիթերից բովանդակությունը հանելիս ամեն ինչ չեք ստանա: Դա պարզապես պետք է իմանա օգտագործողի կողմից, կամ դուք պետք է ինչ-որ կերպ նշեք «ժամանակի ընդմիջում»:
UI-ը պետք է լինի բավականին հեշտ (միևնույն է, ֆունկցիոնալ առումով), քանի որ դուք գիտեք, թե որ աղբյուրից է ստացվում գրառումը/բովանդակությունը: Հեշտ կլինի գրառման կողքին մի փոքրիկ պատկերակ գցել՝ ցույց տալու համար, թե որ սոցիալական մեդիայից է այն:
Ամեն դեպքում, հաջողություն, հնչում է որպես զվարճալի նախագիծ:
19.10.2011