• 検索結果がありません。

Îäíèì èç íàèáîëåå ðàñïðîñòðàíåííûõ âèäîâ îïòèìèçàöèè ðàáîòû âåá

ïðèëîæåíèé ÿâëÿåòñÿ êýøèðîâàíèå, ñóòü êîòîðîãî çàêëþ÷àåòñÿ â ñëåäó

þùåì. Çà÷àñòóþ ïðèëîæåíèþ ïðèõîäèòñÿ ðåøàòü ïî çàïðîñó ïîëüçîâà

òåëÿ îäíó è òó æå çàäà÷ó. Åñëè äëÿ ýòîãî íåîáõîäèìî ìíîãî âðåìåíè, òî ïðîèñõîäèò çíà÷èòåëüíîå óìåíüøåíèå ïðîèçâîäèòåëüíîñòè. ×òîáû èçáå

æàòü ðåøåíèÿ îäíîé è òîé æå çàäà÷è ìíîãî ðàç èñïîëüçóþò êýøèðîâà

íèå. Âìåñòî ìíîãîêðàòíîãî âûïîëíåíèÿ ïðîöåäóðû ïîëó÷åíèÿ äàííûõ èõ ïîëó÷àþò îäèí ðàç, à çàòåì ïðîñòî ñîõðàíÿþò. Òàêèì îáðàçîì, ïðè íåîáõîäèìîñòè ïîâòîðíîãî ðåøåíèÿ îäíîé è òîæå çàäà÷è íåîáõîäèìî ïðî

ñòî ïåðåäàòü ðåçóëüòàò, êîòîðûé áûë ñîõðàíåí ïðè ïåðâîì çàïðîñå ðåøå

íèÿ.  Ruby on Rails íàèáîëåå àêòèâíî èñïîëüçóþòñÿ ÷åòûðå âèäà êý

øèðîâàíèÿ: êýøèðîâàíèå îáúåêòîâ, êýøèðîâàíèå ñòðàíèö, êýøèðîâàíèå äåéñòâèé è êýøèðîâàíèå ôðàãìåíòîâ. Ðàññìîòðèì ïîäðîáíåå êàæäûé èç íèõ.

Êýøèðîâàíèå îáúåêòîâ

Íàèáîëåå î÷åâèäíûì âèäîì êýøèðîâàíèÿ ÿâëÿåòñÿ êýøèðîâàíèå îáúåê

òîâ, êîòîðîå ïîçâîëÿåò ïîìåùàòü ÷àñòî èñïîëüçóåìûå îáúåêòû âî âíåø

íåå õðàíèëèùå, äîñòóï ê êîòîðîìó ðåàëèçîâàí ýôôåêòèâíåå, ÷åì ïîëó÷å

íèå è ôîðìèðîâàíèå îáúåêòà âíóòðè ïðèëîæåíèÿ. Â äàííîé ðàáîòå ýòîò âèä êýøèðîâàíèÿ íå èñïîëüçóåòñÿ, ïîñêîëüêó, äðóãèå âèäû êýøèðîâàíèÿ â äàííîé ñèòóàöèè ÿâëÿþòñÿ áîëåå ïðåäïî÷òèòåëüíûìè â ñèëó òîãî, ÷òî

â ðàçðàáàòûâàåìîé ñèñòåìå áîëåå ïðèãîäíîé äëÿ êýøèðîâàíèÿ ÿâëÿåòñÿ íå ñàì îáúåêò, à åãî ïðåäñòàâëåíèå èëè ïðåäñòàâëåíèå íàáîðà ïîäîáíûõ îáúåêòîâ.

Êýøèðîâàíèå ñòðàíèö

Êýøèðîâàíèå ñòðàíèö íàèáîëåå ïðîñòàÿ è ýôôåêòèâíàÿ ôîðìà êýøè

ðîâàíèÿ ïðåäñòàâëåíèÿ äàííûõ, èìåþùàÿñÿ â Rails. Êîãäà ïîëüçîâàòåëè ïîñûëàþò ïåðâîíà÷àëüíûé çàïðîñ ïî êîíêðåòíîìó URL, ïðèëîæåíèå âû

ïîëíÿåò íåîáõîäèìûå äåéñòâèÿ è ñîçäàåò HTML-ñòðàíèöó. Ñîäåðæèìîå ýòîé ñòðàíèöû ñîõðàíÿåòñÿ â êýøå. Ïðè íåîáõîäèìîñòè ïîâòîðíîé îáðà

áîòêè çàïðîñà ñ òåì æå URL, HTML-êîä ýòîé ñòðàíèöû îòïðàâëÿåòñÿ ïðÿìî èç êýøà. Ïðè ýòîì ôàêòè÷åñêè ïðèëîæåíèå íå âñòóïàåò â ðàáîòó, âñþ ðàáîòó â ïîñëåäíåì ñëó÷àå âûïîëíÿåò âåá-ñåðâåð. Òàêèì îáðàçîì, îáðàáîòêà ïîäîáíûõ çàïðîñîâ çàíèìàåò ìèíèìàëüíî âîçìîæíîå âðåìÿ, êîòîðîå çàâèñèò îò ñêîðîñòè ðàáîòû âåá-ñåðâåðà.

Íåñìîòðÿ íà ïðîñòîòó, ïîäîáíûé ïîäõîä ê êýøèðîâàíèþ îêàçûâàåòñÿ íå ïðèãîäíûì â ðàìêàõ ñîçäàâàåìîãî ïðèëîæåíèÿ. Ïîñêîëüêó ïðè çàïðî

ñå ñòðàíèöû èç êýøà ïðèëîæåíèå íå çàäåéñòâóåòñÿ, òî ëþáîé ïîëüçîâà

òåëü ìîæåò ïîëó÷èòü ëþáóþ ñòðàíèöó, ñîõðàíåííóþ â êýøå.  ïðîåêòå æå èñïîëüçóåòñÿ ñòðîãàÿ äèôôåðåíöèàöèÿ ïðè ïîêàçå ñîäåðæèìîãî ðàç

ëè÷íûì ïîëüçîâàòåëÿì. Âî-ïåðâûõ, íåàâòîðèçîâàííûå ïîëüçîâàòåëè íå äîëæíû èìåòü âîçìîæíîñòü ïîëó÷àòü äîñòóï ê ñèñòåìå. Âî-âòîðûõ, èìå

åòñÿ çàâèñèìîñòü ìåæäó ðîëÿìè ïîëüçîâàòåëÿ è óðîâíåì äîñòóïíîñòè èíôîðìàöèè. Êàê ñëåäñòâèå ýòîìó, ïî îäíîìó è òîìó æå URL ðàçëè÷

íûå ïîëüçîâàòåëè áóäóò ïîëó÷àòü ðàçëè÷íûå HTML-ôàéëû.

Êýøèðîâàíèå äåéñòâèé

Äëÿ òîãî, ÷òîáû èìåòü âîçìîæíîñòü êýøèðîâàíèÿ ñòðàíèö, äîñòóï ê êî

òîðûì èìåþò ëèøü îãðàíè÷åííûå êàòåãîðèè ïðèâèëåãèðîâàííûõ ïîëüçî

âàòåëåé, èñïîëüçóåòñÿ êýøèðîâàíèå äåéñòâèé. Åãî öåëüþ òàêæå ÿâëÿåòñÿ êýøèðîâàíèå ñîäåðæèìîãî âñåé ñòðàíèöû öåëèêîì, îäíàêî îíî äàåò âîç

ìîæíîñòü ôèëüòðàöèè ïîëüçîâàòåëåé, êîòîðûì äîñòóïåí ïðîñìîòð ñòðà

íèöû. Îíî ïîçâîëÿåò ïåðåä ïåðåäà÷åé ñîäåðæèìîãî ïðèíÿòü ðåøåíèå î âîçìîæíîñòè ïðåäîñòàâëåíèÿ ïîëüçîâàòåëþ äîñòóïà ê çàïðàøèâàåìîìó èì äåéñòâèþ. Òàêîé ïîäõîä ïîçâîëÿåò èçáåæàòü ïðîáëåìû íåîãðàíè÷åí

íîãî äîñòóïà ê ñîäåðæèìîìó, îäíàêî íå ðåøàåò ïðîáëåìû ðàçëè÷èÿ ïå

ðåäàâàåìûõ HTML-ñòðàíèö îò ðîëè ïîëüçîâàòåëÿ.

 ðàçðàáîòàííîì ïðèëîæåíèè äàííûé âèä êýøèðîâàíèÿ òàêæå íå èñ

ïîëüçóåòñÿ, ïîòîìó ÷òî íà êàæäîé ñòðàíèöå èíôîðìàöèîííîé ñèñòåìû ïîëüçîâàòåëþ îòîáðàæàåòñÿ ìåíþ, êîòîðîå çàâèñèò îò ïðèâèëåãèé êîí

êðåòíîãî ïîëüçîâàòåëÿ.

Êýøèðîâàíèå ôðàãìåíòîâ

Êàê áûëî ïîêàçàíî ðàíåå, ïðè ñîçäàíèè äèíàìè÷åñêèõ âåá-ïðèëîæåíèé êýøèðîâàíèå ñòðàíèöû öåëèêîì îêàçûâàåòñÿ âîçìîæíûì òîëüêî â î÷åíü ðåäêèõ ñëó÷àÿõ, ïîñêîëüêó ðàçëè÷íûå ôðàãìåíòû ñòðàíèöû ñòàíîâÿòñÿ èíäèâèäóàëüíûìè äëÿ êàæäîãî ïîëüçîâàòåëÿ. Êýøèðîâàíèå îòäåëüíûõ ôðàãìåíòîâ ñòðàíèöû ñïîñîáíî ðàçðåøèòü ýòó ïðîáëåìó. Îíî ïîçâîëÿåò õðàíèòü â êýøå íå ñòðàíèöó öåëèêîì, à ëèøü íåêîòîðóþ åå ÷àñòü. Ïðè ýòîì îòñóòñòâóåò îãðàíè÷åíèå íà êîëè÷åñòâî êýøèðóåìûõ ôðàãìåíòîâ íà ñòðàíèöå. Ïîñêîëüêó â ýòîì ñëó÷àå ðåçêî óâåëè÷èâàåòñÿ îáúåì õðàíè

ìîé èíôîðìàöèè äëÿ êàæäîé ñòðàíèöû, òî âñòàåò âîïðîñ îá ýôôåêòèâ

íîì ñðåäñòâå äëÿ õðàíåíèÿ êýøà. Ruby on Rails ïðåäîñòàâëÿåò íåñêîëüêî ñòðàòåãèé õðàíåíèÿ: â ïàìÿòè, â îòäåëüíîì êàòàëîãå, íà îòäåëüíîì ñåð

âåðå è äð. Íàèáîëåå ðàöèîíàëüíûì ñðåäñòâîì äëÿ êýøèðîâàíèå ôðàã

ìåíòîâ íà ñåãîäíÿøíèé äåíü ÿâëÿåòñÿ memcached [48]. Memcached âûñîêîïðîèçâîäèòåëüíàÿ ðàñïðåäåëåííàÿ ñèñòåìà êýøèðîâàíèÿ. Ïî ñóòè êýøèðîâàíèå ñ ïîìîùüþ memcached ïðåäñòàâëÿåò ñîáîé íåêîå ïîäîáèå ãëîáàëüíîãî àññîöèàòèâíîãî ìàññèâà, â êîòîðîì êàæäîìó êëþ÷ó ñîîòâåò

ñòâóåò îïðåäåëåííîå çíà÷åíèå (ôðàãìåíò) [49].

Êýøèðîâàíèå ôðàãìåíòîâ ÿâëÿåòñÿ î÷åíü ãèáêèì èíñòðóìåíòîì è ïîç

âîëÿåò áåç îñîáûõ çàòðóäíåíèé ñîõðàíÿòü ðàçëè÷íûå ÷àñòè ñòðàíèöû, òåì ñàìûì çíà÷èòåëüíî óñêîðÿÿ ðàáîòó ïðèëîæåíèÿ. Ïðè ýòîì îáëàñòü ïðèìåíåíèÿ êýøèðîâàíèÿ ôðàãìåíòîâ ïðàêòè÷åñêè íå îãðàíè÷åíà. Îä

íàêî ýòîò âèä êýøèðîâàíèÿ ìåíåå ýôôåêòèâåí ïî ñðàâíåíèþ ñ êýøèðî

âàíèåì äåéñòâèé.

 êà÷åñòâå ïðèìåðà ìîæíî ïðèâåñòè êýøèðîâàíèå ôðàãìåíòà ñòðà

íèöû c æóðíàëîì íà÷èñëåíèÿ ðåéòèíãîâûõ áàëëîâ ïî äèñöèïëèíå, íà êîòîðîé ñîäåðæèòñÿ òàáëèöà ñ ðàñïðåäåëåíèåì âñåõ ðåéòèíãîâûõ áàëëîâ ñòóäåíòîâ ïî äíÿì (ðèñ. 6). Ïðè îòñóòñòâèè êýøèðîâàíèÿ ïðèâåäåííûé ôðàãìåíò ãåíåðèëñÿ, â ñðåäíåì, çà 3,58 c. Ïîñëå äîáàâëåíèÿ êýøèðîâàíèÿ îïåðàöèÿ ïî ïîëó÷åíèþ ôðàãìåíòà èç êýøà è åãî îáðàáîòêå ñòàëà çàíè

ìàòü, â ñðåäíåì, 0,08 c. Òàêèì îáðàçîì, áûëî ïîëó÷åíî ïî÷òè 45-êðàòíîå óñêîðåíèå . Ñòîèò îòìåòèòü, ÷òî â äåéñòâèòåëüíîñòè èíòåãðàëüíûé ðîñò

ïðîèçâîäèòåëüíîñòè áóäåò íåñêîëüêî ìåíüøå â ñèëó òîãî, ÷òî íà÷èñëå

íèå ðåéòèíãîâûõ áàëëîâ ïî ëþáîìó âèäó ðàáîòû ïðèâåäåò ê ïîòåðå àê

òóàëüíîñòè äàííîé òàáëèöû öåëèêîì è, êàê ñëåäñòâèå, íåîáõîäèìîñòè åå ïîâòîðíîé ãåíåðàöèè ïðè ïîïûòêå ïðîñìîòðà. Äëÿ ïðîâåðêè àêòóàëü

íîñòè ôðàãìåíòà èñïîëüçóåòñÿ ñïåöèàëüíàÿ ñèñòåìà êëþ÷åé êýøèðîâà

íèÿ, îñíîâàííàÿ íà âðåìåííûõ øòàìïàõ è èçëîæåííàÿ íà êîíôåðåíöèè RailsClub [50].

Ðèñ.6.Ôðàãìåíòñòðàíèöû¾Æóðíàëíà÷èñëåíèÿ ðåéòèíãîâûõáàëëîâïîäèñöèïëèíå¿

Çàêëþ÷åíèå

 ðåçóëüòàòå ïðîäåëàííîé ðàáîòû ïîëó÷åíà ïðîñòàÿ, ãèáêàÿ è ñîâðåìåí

íàÿ èíôîðìàöèîííàÿ ñèñòåìà, îñíîâàííàÿ íà îòêðûòûõ òåõíîëîãèÿõ è ïðîäóêòàõ, ïðåäíàçíà÷åííàÿ äëÿ îðãàíèçàöèè ó÷åáíîãî ïðîöåññà ñòóäåí

òîâ âûñøèõ ó÷åáíûõ çàâåäåíèé. Èñïîëüçîâàííûå ïðè ðàçðàáîòêå ñèñòå

ìû ïðèíöèïû äàþò âîçìîæíîñòü åå èñïîëüçîâàíèÿ äëÿ ëþáûõ ôîðì è íàïðàâëåíèé îáó÷åíèÿ.

Ñîçäàííîå âåá-ïðèëîæåíèå èñïîëüçóåòñÿ â ÃÎÓ ÌÃÈÓ äëÿ îðãàíèçà

öèè ó÷åáíîãî ïðîöåññà ñòóäåíòîâ, îáó÷àþùèõñÿ ïî íàïðàâëåíèþ ¾Èíôîð

ìàòèêà è âû÷èñëèòåëüíàÿ òåõíèêà¿ è ñïåöèàëüíîñòè ¾Ìàòåìàòè÷åñêîå îáåñïå÷åíèå è àäìèíèñòðèðîâàíèå èíôîðìàöèîííûõ ñèñòåì¿. Çà 3,5 ìå

ñÿöà îñåííåãî ñåìåñòðà 20102011 ó÷åáíîãî ãîäà ïîëüçîâàòåëè ñèñòåìû ñîâåðøèëè áîëåå 23 000 âõîäîâ â ñèñòåìó è ïîñåòèëè ðàçëè÷íûå ñòðà

íèöû ïîðòàëà áîëåå 65 000 ðàç. Îáùåå âðåìÿ èõ íåïðåðûâíîé ðàáîòû ïðåâûñèëî 750 ÷àñîâ. Çà ýòîò ïåðèîä ïîëüçîâàòåëÿìè áûëî çàãðóæåíî áîëåå 750 ôàéëîâ, à ïðåïîäàâàòåëè âûñòàâèëè ñòóäåíòàì 7000 îöåíîê.

Èñïîëüçîâàíèå èíôîðìàöèîííîé ñèñòåìû ïîçâîëèëî ïîâûñèòü ýôôåê

òèâíîñòü îáðàçîâàòåëüíîãî ïðîöåññà, çíà÷èòåëüíî óâåëè÷èòü êîëè÷åñòâî îáúåêòèâíûõ ñòàòèñòè÷åñêèõ ïîêàçàòåëåé, õàðàêòåðèçóþùèõ ðàáîòó ñòó

äåíòîâ è ïðåïîäàâàòåëåé, ñîçäàòü íîâûå ìåõàíèçìû óïðàâëåíèÿ.

 áëèæàéøåì áóäóùåì ïëàíèðóåòñÿ äàëüíåéøåå ðàçâèòèå ñèñòåìû:

ïåðåõîä íà íîâóþ âåðñèþ ñðåäû Ruby on Rails 3.0 (òåêóùàÿ âåðñèÿ 2.3.8), èñïîëüçîâàíèå ÿçûêà ðàçìåòêè HTML 5 è ñòàíäàðòà CSS 3. Ïëàíè

ðóåòñÿ òàêæå ðàçðàáîòêà ñïåöèàëüíîé âåðñèè âåá-ñàéòà äëÿ ìîáèëüíûõ óñòðîéñòâ (âêëþ÷àÿ óñòðîéñòâà ðàáîòàþùèå ïîä óïðàâëåíèåì ìîáèëü

íûõ îïåðàöèîííûõ ñèñòåì Windows Phone, Android, iOS).

Ïðèëîæåíèå A

Ïîëíàÿ ñõåìà äàííûõ ñèñòåìû

ActiveRecord::Schema.define(:version => 20101205183604) do

create_table "audits", :force => true do |t|

t.integer "auditable_id"

t.string "auditable_type"

t.integer "user_id"

t.string "user_type"

t.string "username"

t.string "action"

t.text "changes"

t.integer "version", :default => 0 t.string "comment"

t.datetime "created_at"

end

create_table "clicks", :force => true do |t|

t.integer "user_id"

t.integer "page_id"

t.integer "quantity"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "contents", :force => true do |t|

t.text "body"

t.integer "ctype"

t.integer "page_id"

t.integer "position"

t.datetime "visible_at"

t.boolean "visible", :default => true t.integer "user_id"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "courses", :force => true do |t|

t.string "name"

t.string "fullname"

t.integer "position"

t.integer "study_year_id"

t.string "external_id"

t.integer "ctype"

t.integer "marks_status", :default => 0 t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "courses_groups", :id => false, :force => true do |t|

t.integer "course_id"

t.integer "group_id"

end

create_table "courses_users", :id => false, :force => true do |t|

t.integer "course_id"

t.integer "user_id"

end

create_table "delayed_jobs", :force => true do |t|

t.integer "priority", :default => 0 t.integer "attempts", :default => 0 t.text "handler"

t.text "last_error"

t.datetime "run_at"

t.datetime "locked_at"

t.datetime "failed_at"

t.string "locked_by"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "emails", :force => true do |t|

t.string "email"

t.string "activation_code"

t.integer "user_id"

t.integer "mode", :default => 0 t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "groups", :force => true do |t|

t.string "name"

t.integer "study_year_id"

t.datetime "start"

t.datetime "finish"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "groups_users", :id => false, :force => true do |t|

t.integer "group_id"

t.integer "user_id"

end

create_table "items", :force => true do |t|

t.string "name"

t.string "fullname"

t.integer "course_id"

t.integer "position"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "lofiles", :force => true do |t|

t.string "filename"

t.string "content_type"

t.integer "loid"

t.string "filesize"

t.integer "message_id"

t.integer "visibility", :default => 0 t.datetime "visible_at"

t.string "dirname"

t.string "comment"

t.integer "user_id"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "mark_names", :force => true do |t|

t.integer "course_id"

t.string "name"

t.integer "min_value"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "marks", :force => true do |t|

t.integer "user_id"

t.integer "ritem_id"

t.integer "value"

t.string "comment"

t.integer "quiz_id"

t.integer "operator_id"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "messages", :force => true do |t|

t.string "theme"

t.text "body"

t.integer "sender_id"

t.datetime "send_at"

t.datetime "created_at"

t.datetime "updated_at"

t.integer "parent_id"

end

create_table "pages", :force => true do |t|

t.integer "position"

t.integer "item_id"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "quizzes", :force => true do |t|

t.string "name"

t.integer "ritem_id"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "readings", :force => true do |t|

t.integer "user_id"

t.integer "message_id"

t.datetime "read_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "relationships", :force => true do |t|

t.integer "user_id"

t.integer "parent_id"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "rights", :force => true do |t|

t.string "name"

t.string "description"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "rights_roles", :id => false, :force => true do |t|

t.integer "right_id"

t.integer "role_id"

t.datetime "deleted_at"

end

create_table "ritems", :force => true do |t|

t.string "name"

t.string "fullname"

t.integer "max_value"

t.integer "position"

t.integer "course_id"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "roles", :force => true do |t|

t.string "name"

t.string "fullname"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "roles_users", :id => false, :force => true do |t|

t.integer "role_id"

t.integer "user_id"

end

create_table "study_years", :force => true do |t|

t.string "name"

t.string "fullname"

t.boolean "current"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "subscribes", :force => true do |t|

t.integer "user_id"

t.integer "item_id"

t.integer "stype"

t.datetime "last_mailed_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "users", :force => true do |t|

t.string "login"

t.string "name"

t.integer "external_id"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end

create_table "visits", :force => true do |t|

t.string "ip"

t.integer "user_id"

t.integer "study_year_id"

t.datetime "deleted_at"

t.datetime "created_at"

t.datetime "updated_at"

end end

Ëèòåðàòóðà è ãèïåðññûëêè

[1] Ä. Òîìàñ, Ä. Õ. Õýíññîí ¾Ãèáêàÿ ðàçðàáîòêà âåá-ïðèëîæåíèé â ñðåäå Rails¿ ÑÏá.: Ïèòåð, 2008 716ñ.: èë.

[2] Ôóëòîí Õ. ¾Ïðîãðàììèðîâàíèå íà ÿçûêå Ruby¿ Ì.: ÄÌÊ Ïðåññ, 2007. 688ñ.: èë.

[3] Ñòàòüÿ î ñèñòåìàõ ýëåêòðîííîãî îáó÷åíèÿ.

URL: http://ru.wikipedia.org/wiki/E-learning (äàòà îá

ðàùåíèÿ: 11.12.2010).

[4] Èíòåðíåò óíèâåðñèòåò èíôîðìàöèîííûõ òåõíîëîãèé.

URL: http://www.intuit.ru (äàòà îáðàùåíèÿ: 09.12.2010).

[5] Èíôîðìàöèîííî-îáðàçîâàòåëüíûé ïîðòàë ÃÎÓ ÂÏÎ ¾Òþìåíñêèé ãîñóäàðñòâåííûé óíèâåðñèòåò¿. URL: http://www.distance.ru (äàòà îáðàùåíèÿ: 18.11.2010).

[6] Îáðàçîâàòåëüíûé ïîðòàë Öåíòðà äèñòàíöèîííîãî îáó÷åíèÿ Ìîñ

êîâñêîãî ãîñóäàðñòâåííîãî èíñòèòóòà ýëåêòðîíèêè è ìàòå

ìàòèêè. URL: http://dlc.miem.edu.ru (äàòà îáðàùåíèÿ:

18.11.2010).

[7] Ñèñòåìà äèñòàíöèîííîãî îáðàçîâàíèÿ Ìîñêîâñêîãî ãîñóäàðñòâåí

íîãî èíäóñòðèàëüíîãî óíèâåðñèòåòà. URL: http://sde.ru (äàòà îáðàùåíèÿ: 16.11.2010).

[8] Moodle learning management system.

URL: http://www.moodle.org (äàòà îáðàùåíèÿ: 15.11.2010).

[9] Còàòèñòèêà èñïîëüçîâàíèÿ Moodle â Ðîññèè.

URL: http://moodle.org/sites/index.php?country=RU (äà

òà îáðàùåíèÿ: 09.12.2010).

[10] Sakai learning management system.

URL: http://www.sakaiproject.org/portal (äàòà îáðàùåíèÿ:

07.12.2010).

[11] Ruby programming language. URL: http://www.ruby-lang.org (äàòà îáðàùåíèÿ: 07.12.2010).

[12] Ñòàòüÿ î ÿçûêå ïðîãðàììèðîâàíèÿ Ruby.

URL: http://ru.wikipedia.org/wiki/Ruby (äàòà îáðàùåíèÿ:

07.12.2010).

[13] Ñòàòüÿ î ñðåäå Ruby on Rails.

URL: http://ru.wikipedia.org/wiki/Ruby_on_Rails (äàòà îáðàùåíèÿ: 07.12.2010).

[14] Ruby on Rails framework. URL: http://www.rubyonrails.org (äàòà îáðàùåíèÿ: 07.12.2010).

[15] PostgreSQL database. URL: http://www.postgresql.org (äàòà îáðàùåíèÿ: 07.12.2010).

[16] Ðåçóëüòàòû ñåðòèôèêàöèè êà÷åñòâà PostgreSQL.

URL: http://www.postgresql.org/about/news.363 (äàòà îá

ðàùåíèÿ: 08.12.2010).

[17] Mongrel web-server repository. URL: http://github.com/

fauna/mongrel (äàòà îáðàùåíèÿ: 08.12.2010).

[18] Unicorn HTTP server. URL: http://unicorn.bogomips.org (äà

òà îáðàùåíèÿ: 08.12.2010).

[19] Phusion Passenger. URL: http://www.modrails.com (äàòà îáðà

ùåíèÿ: 08.12.2010).

[20] The Apache Software Foundation. URL: http://www.apache.org (äàòà îáðàùåíèÿ: 08.12.2010).

[21] Netcraft Web Server Survey. URL: http://news.netcraft.com/

archives/2010/12/01/december-2010-web-server-survey.html (äàòà îáðàùåíèÿ: 09.12.2010).

[22] Ñòàòüÿ î òåõíîëîãèè Adobe Flash.

URL: http://ru.wikipedia.org/wiki/Adobe_Flash (äàòà îá

ðàùåíèÿ: 09.12.2010).

[23] Ñòàòüÿ î ÿçûêå ïðîãðàììèðîâàíèÿ JavaScript.

URL: http://ru.wikipedia.org/wiki/JavaScript (äàòà îá

ðàùåíèÿ: 09.12.2010).

[24] Ñòàòüÿ î ñòðàòåãèè AJAX. URL: http://ru.wikipedia.org/

wiki/AJAX (äàòà îáðàùåíèÿ: 09.12.2010).

[25] jQuery JavaScript library. URL: http://jquery.com (äàòà îáðà

ùåíèÿ: 09.12.2010).

[26] Git Version Control System. URL: http://git-scm.com (äàòà îá

ðàùåíèÿ: 09.12.2010).

[27] Capistrano utility. URL: http://github.com/capistrano/

capistrano (äàòà îáðàùåíèÿ: 09.12.2010).

[28] Capistrano: óäàëåííîå ðàçâåðòûâàíèå ïðèëîæåíèé.

URL: http://habrahabr.ru/blogs/webdev/49127 (äàòà îáðà

ùåíèÿ: 09.12.2010).

[29] IDC Russia. URL: http://www.idcrussia.com (äàòà îáðàùåíèÿ:

09.12.2010).

[30] Sphinx Search Server. URL: http://sphinxsearch.com (äàòà îá

ðàùåíèÿ: 10.12.2010).

[31] Textile Markup language. URL: http://textile.

thresholdstate.com (äàòà îáðàùåíèÿ: 08.12.2010).

[32] RedCloth module. URL: http://redcloth.org (äàòà îáðàùåíèÿ:

08.12.2010).

[33] Ñèñòåìà ó÷åòà ïîñåùàåìîñòè çàíÿòèé ÃÎÓ ÌÃÈÓ.

URL: http://absences.msiu.ru (äàòà îáðàùåíèÿ: 10.12.2010).

[34] Ñîöèàëüíàÿ ñåòü Facebook. URL: http://facebook.com (äàòà îáðàùåíèÿ: 08.12.2010).

[35] Âñòðàèâàåìûé ìîäóëü äëÿ ôîíîâîãî âûïîëíåíèÿ çàäàíèé.

URL: https://github.com/tobi/delayed_job (äàòà îáðàùåíèÿ:

08.12.2010).

[36] Rake utility. URL: http://rake.rubyforge.org (äàòà îáðàùå

íèÿ: 3.12.2010).

[37] Ïëàíèðîâùèê çàäà÷ Cron. URL: http://crontab.org (äàòà îá

ðàùåíèÿ: 25.11.2010).

[38] Âåá-ñåðâèñ ýëåêòðîííîé ïî÷òû GMail. URL: http://gmail.com (äàòà îáðàùåíèÿ: 12.12.2010).

[39] Âñòðàèâàåìûé ìîäóëü àóäèòà èçìåíå

íèé äëÿ ñðåäû Ruby on Rails.

URL: https://github.com/collectiveidea/acts_as_audited (äàòà îáðàùåíèÿ: 29.11.2010).

[40] Âñòðàèâàåìûé ìîäóëü áåçîïàñíîãî óäàëå

íèÿ îáúåêòîâ äëÿ ñðåäû Ruby on Rails.

URL: https://github.com/technoweenie/acts_as_paranoid (äàòà îáðàùåíèÿ: 29.11.2010).

[41] Thinking Sphinx library. URL: http://freelancing-god.

github.com/ts/en (äàòà îáðàùåíèÿ: 11.12.2010).

[42] jHtmlArea WYSIWYG-editor. URL: http://jhtmlarea.

codeplex.com (äàòà îáðàùåíèÿ: 09.12.2010).

[43] WYSIWYG-ñïîñîá ðåäàêòèðîâàíèÿ.

URL: http://ru.wikipedia.org/wiki/WYSIWYG (äàòà îáðàùå

íèÿ: 09.12.2010).

[44] Ïðîôèëèðîâàíèå Rails-ïðèëîæåíèÿ.

URL: http://rubybrothers.ru/2008/4/8/

simple-rails-profiling-and-benchmarking (äàòà îáðàùåíèÿ:

11.12.2010).

[45] Ñòàòüÿ î íîðìàëèçàöèè ðåëÿöèîííûõ áàç äàííûõ.

URL: http://ru.wikipedia.org/wiki/Íîðìàëüíàÿ_ôîðìà (äàòà îáðàùåíèÿ: 11.12.2010).

[46] Áðþñ Òýéò ¾Ïðàêòè÷åñêîå èñïîëüçîâàíèå

Rails: ×àñòü 3. Îïòèìèçàöèÿ ActiveRecord¿

URL: http://www.ibm.com/developerworks

/web/library/wa-rails3/ (äàòà îáðàùåíèÿ: 11.12.2010).

[47] Ñòàòüÿ îá èíäåêñàõ â ðåëÿöèîííûõ áàçàõ äàííûõ.

URL: http://ru.wikipedia.org/wiki/Èíäåêñ_(áàçû_äàííûõ) (äàòà îáðàùåíèÿ: 12.12.2010).

[48] Memcached caching system. URL: http://www.memcached.org (äàòà îáðàùåíèÿ: 12.12.2010).

[49] Ñòàòüÿ î ñèñòåìå êýøèðîâàíèÿ Memcached.

URL: http://www.insight-it.ru/unix-way/obzor-memcached (äàòà îáðàùåíèÿ: 12.12.2010).

[50] ¾Óìíîå¿ êýøèðîâàíèÿ â Rails.

URL: http://univerty.ru/video/informatika/

programmirovanie/ruby_on_rails_moscow/

umnoe_keshirovanie_v_rails (äàòà îáðàùåíèÿ: 12.12.2010).

関連したドキュメント