Ki jan nou kolekte done sou kanpay piblisite nan sit sou entènèt (chemen ki pikan nan pwodwi a)

Li sanble ke jaden an nan piblisite sou entènèt yo ta dwe kòm teknoloji avanse ak otomatik ke posib. Natirèlman, paske gran sa yo ak ekspè nan domèn yo tankou Yandex, Mail.Ru, Google ak Facebook travay la. Men, kòm li te tounen soti, pa gen okenn limit nan pèfeksyon epi toujou gen yon bagay yo otomatize.

Ki jan nou kolekte done sou kanpay piblisite nan sit sou entènèt (chemen ki pikan nan pwodwi a)
Sous

Gwoup kominikasyon Dentsu Aegis Rezo Larisi se pi gwo jwè nan mache piblisite dijital la epi li ap aktivman envesti nan teknoloji, ap eseye optimize ak otomatize pwosesis biznis li yo. Youn nan pwoblèm yo ki pako rezoud nan mache piblisite sou entènèt la te vin travay la nan kolekte estatistik sou kanpay piblisite ki soti nan diferan tribin entènèt. Solisyon an nan pwoblèm sa a finalman a nan kreyasyon an nan yon pwodwi D1.Digital (li kòm DiVan), devlopman nan ki nou vle pale sou.

Poukisa?

1. Nan moman an nan kòmansman pwojè a, pa te gen yon sèl pwodwi pare-fè sou mache a ki rezoud pwoblèm nan nan automatisation koleksyon an nan estatistik sou kanpay piblisite. Sa vle di ke pèsonn eksepte tèt nou p ap satisfè bezwen nou yo.

Sèvis tankou Improvado, Roistat, Supermetrics, SegmentStream ofri entegrasyon ak platfòm, rezo sosyal ak Google Analitycs, epi tou li fè li posib yo bati tablodbò analyse pou analiz pratik ak kontwòl nan kanpay piblisite. Anvan nou te kòmanse devlope pwodwi nou an, nou te eseye sèvi ak kèk nan sistèm sa yo kolekte done ki soti nan sit, men, malerezman, yo pa t 'kapab rezoud pwoblèm nou yo.

Pwoblèm prensipal la te ke pwodwi yo teste yo te baze sou sous done, montre estatistik plasman pa sit, epi yo pa bay kapasite nan estatistik total sou kanpay piblisite. Apwòch sa a pa t 'pèmèt nou wè estatistik ki soti nan diferan sit nan yon sèl kote ak analize eta a nan kanpay la an jeneral.

Yon lòt faktè te ke nan premye etap yo pwodwi yo te vize sou mache Lwès la epi yo pa t sipòte entegrasyon ak sit Ris. Ak pou sit sa yo ak entegrasyon yo te aplike, tout mezi ki nesesè yo pa te toujou telechaje ak detay ase, ak entegrasyon an pa t 'toujou pratik ak transparan, espesyalman lè li te nesesè yo ka resevwa yon bagay ki pa nan koòdone sistèm nan.
An jeneral, nou deside pa adapte yo ak pwodwi twazyèm pati, men yo te kòmanse devlope pwòp pa nou...

2. Mache piblisite sou entènèt la ap grandi de ane an ane, ak nan 2018, an tèm de bidjè piblisite, li depase tradisyonèlman pi gwo mache piblisite televizyon an. Se konsa, gen yon echèl.

3. Kontrèman ak mache piblisite televizyon an, kote vant piblisite komèsyal monopolize, gen yon anpil nan pwopriyetè endividyèl nan envantè piblisite nan divès gwosè opere sou entènèt la ak pwòp kont piblisite yo. Depi yon kanpay piblisite, kòm yon règ, kouri sou plizyè sit nan yon fwa, yo konprann eta a nan kanpay piblisite a, li nesesè kolekte rapò ki soti nan tout sit ak konbine yo nan yon sèl rapò gwo ki pral montre foto an antye. Sa vle di gen potansyèl pou optimize.

4. Li te sanble nou ke mèt pwopriyete yo nan envantè piblisite sou entènèt la deja gen enfrastrikti pou kolekte estatistik ak montre yo nan kont piblisite, epi yo pral kapab bay yon API pou done sa yo. Sa vle di ke teknikman posib pou aplike li. Ann di touswit ke li te tounen soti yo pa tèlman senp.

An jeneral, tout kondisyon yo pou aplikasyon pwojè a te evidan pou nou, epi nou kouri pote pwojè a nan lavi...

Grand plan

Pou kòmanse, nou te fòme yon vizyon nan yon sistèm ideyal:

  • Kanpay piblisite ki soti nan sistèm antrepriz 1C la ta dwe otomatikman chaje nan li ak non yo, peryòd, bidjè ak plasman sou plizyè platfòm.
  • Pou chak plasman nan yon kanpay piblisite, tout estatistik posib yo ta dwe otomatikman telechaje sou sit kote plasman an ap fèt, tankou kantite enpresyon, klik, opinyon, elatriye.
  • Gen kèk kanpay piblisite yo swiv lè l sèvi avèk siveyans twazyèm pati pa sa yo rele sistèm adserving tankou Driver, Weborama, DCM, elatriye. Genyen tou yon mèt entènèt endistriyèl nan Larisi - konpayi an Mediascope. Dapre plan nou an, done ki soti nan siveyans endepandan ak endistriyèl yo ta dwe tou otomatikman chaje nan kanpay piblisite korespondan yo.
  • Pifò kanpay piblisite sou Entènèt la vize a sèten aksyon sib (achte, rele, enskri pou yon kondwi tès, elatriye), ki swiv lè l sèvi avèk Google Analytics, ak estatistik pou ki enpòtan tou pou konprann estati kanpay la ak ta dwe chaje nan zouti nou an.

Premye bagay la modi se boul

Etandone angajman nou nan prensip fleksib nan devlopman lojisyèl (ajil, tout bagay), nou deside premye devlope yon MVP ak Lè sa a, avanse pou objektif la gen entansyon iteratif.
Nou deside bati MVP ki baze sou pwodwi nou an DANBo (Dentsu Aegis Network Board), ki se yon aplikasyon entènèt ki gen enfòmasyon jeneral sou kanpay piblisite kliyan nou yo.

Pou MVP, pwojè a te senplifye otank posib an tèm de aplikasyon. Nou te chwazi yon lis limite platfòm pou entegrasyon. Sa yo te tribin prensipal yo, tankou Yandex.Direct, Yandex.Display, RB.Mail, MyTarget, Adwords, DBM, VK, FB, ak sistèm prensipal adserving Adriver ak Weborama.

Pou jwenn aksè nan estatistik sou sit atravè API a, nou itilize yon sèl kont. Yon manadjè gwoup kliyan ki te vle sèvi ak koleksyon otomatik nan estatistik sou yon kanpay piblisite te dwe premye delege aksè nan kanpay piblisite ki nesesè yo sou sit nan kont platfòm la.

Next se itilizatè sistèm lan DANBo te oblije telechaje yon fichye nan yon fòma sèten nan sistèm Excel la, ki te genyen tout enfòmasyon sou plasman an (kanpay piblisite, platfòm, fòma, peryòd plasman, endikatè planifye, bidjè, elatriye) ak idantifyan nan kanpay piblisite korespondan yo sou la. sit ak kontwa nan sistèm adserving.

Li te parèt, franchman, tèt chaje:

Ki jan nou kolekte done sou kanpay piblisite nan sit sou entènèt (chemen ki pikan nan pwodwi a)

Done telechaje yo te sove nan yon baz done, ak Lè sa a, sèvis separe kolekte idantifyan kanpay sou sit nan men yo epi telechaje estatistik sou yo.

Pou chak sit, yo te ekri yon sèvis Windows separe, ki te ale anba yon sèl kont sèvis nan API sit la yon fwa pa jou epi telechaje estatistik pou idantite kanpay espesifye yo. Menm bagay la te pase ak sistèm adserving.

Done telechaje yo te parèt sou koòdone nan fòm yon ti tablodbò koutim:

Ki jan nou kolekte done sou kanpay piblisite nan sit sou entènèt (chemen ki pikan nan pwodwi a)

San atann pou nou, MVP te kòmanse travay e li te kòmanse telechaje estatistik aktyèl sou kanpay piblisite sou entènèt la. Nou te aplike sistèm nan sou plizyè kliyan, men lè nou t ap eseye echèl, nou te rankontre pwoblèm grav:

  • Pwoblèm prensipal la te konpleksite nan prepare done pou chaje nan sistèm lan. Epitou, done plasman yo te dwe konvèti nan yon fòma estrikteman fiks anvan chaje. Li te nesesè yo enkli idantifyan antite ki soti nan diferan sit nan dosye a telechaje. Nou fè fas ak lefèt ke li trè difisil pou itilizatè ki pa gen fòmasyon teknik yo eksplike ki kote yo jwenn idantifyan sa yo sou sit la ak ki kote nan dosye a yo bezwen antre. Lè nou konsidere kantite anplwaye nan depatman yo k ap fè kanpay sou sit yo ak woulman an, sa te lakòz yon gwo kantite sipò bò kote nou, ki nou pa t kontan nèt.
  • Yon lòt pwoblèm se te ke se pa tout platfòm piblisite te gen mekanis pou delege aksè nan kanpay piblisite nan lòt kont. Men, menm si yon mekanis delegasyon te disponib, se pa tout piblisite yo te vle akòde aksè nan kanpay yo nan kont twazyèm pati.
  • Yon faktè enpòtan se te endiyasyon ki te eksite nan mitan itilizatè pa lefèt ke tout endikatè yo te planifye ak detay plasman ke yo te deja antre nan sistèm kontablite 1C nou an, yo dwe re-antre nan. DANBo.

Sa a te ban nou lide ke sous prensipal enfòmasyon sou plasman yo ta dwe sistèm 1C nou an, kote tout done yo antre avèk presizyon ak alè (pwen isit la se ke fakti yo pwodwi ki baze sou done 1C, kidonk antre kòrèk done nan 1C). se yon priyorite pou tout moun KPI). Men ki jan yon nouvo konsèp nan sistèm nan parèt...

Konsèp

Premye bagay nou te deside fè se separe sistèm nan pou kolekte estatistik sou kanpay piblisite sou entènèt la nan yon pwodwi separe - D1.Digital.

Nan nouvo konsèp la, nou deside chaje nan D1.Digital enfòmasyon sou kanpay piblisite ak plasman nan yo soti nan 1C, ak Lè sa a, rale moute estatistik soti nan sit ak sistèm AdServing nan plasman sa yo. Sa a te sipoze siyifikativman senplifye lavi pou itilizatè yo (epi, kòm dabitid, ajoute plis travay nan devlopè) epi redwi kantite sipò.

Premye pwoblèm nou te rankontre se te yon nati òganizasyonèl e li te gen rapò ak lefèt ke nou pa t 'kapab jwenn yon kle oswa siy pa ki nou te ka konpare antite ki soti nan diferan sistèm ak kanpay ak plasman soti nan 1C. Reyalite a se ke pwosesis la nan konpayi nou an fèt nan yon fason ke kanpay piblisite yo antre nan diferan sistèm pa diferan moun (planifikatè medya, achte, elatriye).

Pou rezoud pwoblèm sa a, nou te oblije envante yon kle inik hashed, DANBoID, ki ta konekte antite nan diferan sistèm ansanm, epi ki ta ka jistis fasil epi inikman idantifye nan seri done telechaje. Idantifyan sa a pwodwi nan sistèm entèn 1C pou chak plasman endividyèl epi yo transfere nan kanpay, plasman ak kontwa sou tout sit ak nan tout sistèm AdServing. Aplike pratik mete DANBoID nan tout plasman yo te pran kèk tan, men nou te rive fè li :)

Lè sa a, nou te jwenn ke se pa tout sit ki gen yon API pou otomatikman kolekte estatistik, e menm moun ki gen yon API, li pa retounen tout done ki nesesè yo.

Nan etap sa a, nou deside siyifikativman redwi lis platfòm pou entegrasyon ak konsantre sou platfòm prensipal yo ki enplike nan vas majorite nan kanpay piblisite. Lis sa a gen ladann tout pi gwo jwè yo nan mache piblisite (Google, Yandex, Mail.ru), rezo sosyal (VK, Facebook, Twitter), gwo AdServing ak sistèm analiz (DCM, Driver, Weborama, Google Analytics) ak lòt platfòm.

Majorite sit nou te chwazi yo te gen yon API ki te bay mezi nou bezwen yo. Nan ka kote pa te gen okenn API oswa li pa t gen done ki nesesè yo, nou te itilize rapò ki te voye chak jou nan imèl biwo nou an pou chaje done (nan kèk sistèm li posib pou konfigirasyon rapò sa yo, nan lòt moun nou te dakò sou devlopman rapò sa yo. pou nou).

Lè nou analize done ki soti nan diferan sit, nou te jwenn ke yerachi antite se pa menm bagay la nan diferan sistèm. Anplis, enfòmasyon yo bezwen telechaje nan diferan detay nan diferan sistèm.

Pou rezoud pwoblèm sa a, yo te devlope konsèp SubDANBoID. Lide a nan SubDANBoID se byen senp, nou make antite prensipal la nan kanpay la sou sit la ak DANBoID la jenere, epi nou telechaje tout antite enbrike ak idantifyan sit inik ak fòme SubDANBoID dapre prensip la DANBoID + idantifyan nan premye nivo a. antite enbrike + idantifyan nan antite enbrike dezyèm nivo a +... Apwòch sa a pèmèt nou konekte kanpay piblisite nan diferan sistèm ak telechaje estatistik detaye sou yo.

Nou te oblije rezoud pwoblèm aksè nan kanpay sou diferan platfòm tou. Kòm nou te ekri pi wo a, mekanis pou delege aksè nan yon kanpay nan yon kont teknik separe pa toujou aplikab. Se poutèt sa, nou te oblije devlope yon enfrastrikti pou otorizasyon otomatik atravè OAuth lè l sèvi avèk marqueur ak mekanis pou mete ajou marqueur sa yo.

Pita nan atik la nou pral eseye dekri an plis detay achitekti solisyon an ak detay teknik aplikasyon an.

Achitekti solisyon 1.0

Lè yo te kòmanse aplikasyon yon nouvo pwodwi, nou te konprann ke nou imedyatman bezwen bay pou posibilite pou konekte nouvo sit, se konsa nou deside swiv chemen an nan achitekti mikwosèvis.

Lè w ap desine achitekti a, nou separe konektè nan tout sistèm ekstèn - 1C, platfòm piblisite ak sistèm adserving - nan sèvis separe.
Lide prensipal la se ke tout konektè nan sit yo gen menm API a epi yo se adaptè ki pote API sit la nan yon koòdone ki bon pou nou.

Nan sant la nan pwodwi nou an se yon aplikasyon entènèt, ki se yon monolith ki fèt nan yon fason ke li ka fasilman demonte nan sèvis yo. Aplikasyon sa a responsab pou trete done telechaje yo, rasanble estatistik ki soti nan diferan sistèm epi prezante yo bay itilizatè sistèm yo.

Pou kominike ant konektè yo ak aplikasyon entènèt la, nou te oblije kreye yon sèvis adisyonèl, ke nou rele Connector Proxy. Li fè fonksyon dekouvèt sèvis ak pwogramasyon travay. Sèvis sa a kouri travay koleksyon done pou chak konektè chak swa. Ekri yon kouch sèvis te pi fasil pase konekte yon koutye mesaj, e pou nou li te enpòtan pou jwenn rezilta a pi vit posib.

Pou senplisite ak vitès devlopman, nou deside tou ke tout sèvis yo pral API Web. Sa te fè li posib pou rasanble byen vit yon prèv konsèp epi verifye ke tout konsepsyon an ap travay.

Ki jan nou kolekte done sou kanpay piblisite nan sit sou entènèt (chemen ki pikan nan pwodwi a)

Yon travay separe, olye konplèks te mete kanpe aksè nan kolekte done ki soti nan kont diferan, ki, jan nou deside, yo ta dwe te pote soti pa itilizatè yo atravè koòdone entènèt la. Li konsiste de de etap separe: premye, itilizatè a ajoute yon siy pou jwenn aksè nan kont la atravè OAuth, ak Lè sa a, configured koleksyon done pou kliyan an soti nan yon kont espesifik. Jwenn yon siy atravè OAuth nesesè paske, jan nou te deja ekri, li pa toujou posib pou delege aksè nan kont ou vle sou sit la.

Pou kreye yon mekanis inivèsèl pou chwazi yon kont nan sit, nou te oblije ajoute yon metòd nan API konektè ki retounen JSON Schema, ki rann nan yon fòm lè l sèvi avèk yon eleman JSONEditor modifye. Nan fason sa a, itilizatè yo te kapab chwazi kont ki soti nan ki telechaje done yo.

Pou respekte limit demann ki egziste sou sit yo, nou konbine demann pou anviwònman nan yon sèl siy, men nou ka trete diferan siy an paralèl.

Nou te chwazi MongoDB kòm yon depo pou done chaje pou tou de aplikasyon entènèt la ak konektè, ki te pèmèt nou pa enkyete twòp sou estrikti done a nan premye etap yo nan devlopman, lè modèl objè a nan aplikasyon an chanje chak jou.

Byento nou te dekouvri ke se pa tout done anfòm byen nan MongoDB epi, pou egzanp, li pi pratik pou estoke estatistik chak jou nan yon baz done relasyon. Se poutèt sa, pou konektè ki gen estrikti done pi apwopriye pou yon baz done relasyon, nou te kòmanse itilize PostgreSQL oswa MS SQL sèvè kòm depo.

Achitekti ak teknoloji yo chwazi yo te pèmèt nou bati ak lanse pwodwi D1.Digital relativman byen vit. Plis pase de ane nan devlopman pwodwi, nou devlope 23 konektè nan sit, te vin gen anpil valè eksperyans k ap travay ak API twazyèm pati, te aprann pou fè pou evite enkonvenyans yo nan sit diferan, ki chak te gen pwòp yo, kontribye nan devlopman nan API a nan omwen 3. sit, otomatikman telechaje enfòmasyon sou prèske 15 kanpay ak pou plis pase 000 plasman, kolekte yon anpil nan fidbak nan men itilizatè yo sou operasyon pwodwi a ak jere yo chanje pwosesis prensipal la nan pwodwi a plizyè fwa, ki baze sou sa a fidbak.

Achitekti solisyon 2.0

De ane te pase depi kòmansman devlopman D1.Digital. Ogmantasyon konstan nan chaj sou sistèm nan ak aparisyon pi plis ak plis nouvo sous done piti piti devwale pwoblèm nan achitekti solisyon ki deja egziste.

Premye pwoblèm nan gen rapò ak kantite done telechaje nan sit yo. Nou te fè fas ak lefèt ke kolekte ak mete ajou tout done ki nesesè nan sit yo pi gwo yo te kòmanse pran twòp tan. Pou egzanp, kolekte done ki soti nan sistèm adserving AdRiver, ak ki nou swiv estatistik pou pifò plasman, pran apeprè 12 èdtan.

Pou rezoud pwoblèm sa a, nou te kòmanse sèvi ak tout kalite rapò telechaje done ki soti nan sit, nou ap eseye devlope API yo ansanm ak sit yo pou vitès la nan operasyon li satisfè bezwen nou yo, ak paralelize download done yo otank posib.

Yon lòt pwoblèm gen rapò ak pwosesis la nan done telechaje. Kounye a, lè nouvo estatistik plasman yo rive, yon pwosesis milti-etap pou rekalkile mezi yo lanse, ki gen ladann chaje done anvan tout koreksyon, kalkile mezi total pou chak sit, konpare done ki soti nan diferan sous youn ak lòt, ak kalkile rezime mezi pou kanpay la. Sa lakòz anpil chaj sou aplikasyon entènèt la ki fè tout kalkil yo. Plizyè fwa, pandan pwosesis rekalkil la, aplikasyon an boule tout memwa sou sèvè a, apeprè 10-15 GB, ki te gen efè ki pi prejidis sou travay itilizatè yo ak sistèm nan.

Pwoblèm yo idantifye ak plan anbisye pou plis devlopman nan pwodwi a te mennen nou nan bezwen nan rekonsidere achitekti aplikasyon an.

Nou te kòmanse ak konektè.
Nou remake ke tout konektè travay dapre menm modèl la, kidonk nou bati yon fondasyon tiyo nan ki kreye yon konektè ou te sèlman pwograme lojik la nan etap yo, rès la te inivèsèl. Si kèk konektè mande pou amelyorasyon, Lè sa a, nou imedyatman transfere li nan yon nouvo fondasyon an menm tan an kòm konektè a ap amelyore.

An menm tan an, nou te kòmanse deplwaye konektè nan Docker ak Kubernetes.
Nou te planifye deplase nan Kubernetes pou yon bon bout tan, te fè eksperyans ak anviwònman CI/CD, men te kòmanse deplase sèlman lè yon sèl konektè, akòz yon erè, te kòmanse manje plis pase 20 GB memwa sou sèvè a, pratikman touye lòt pwosesis. . Pandan envestigasyon an, konektè a te deplase nan yon gwoup Kubernetes, kote li te finalman rete, menm apre erè a te fikse.

Byen vit nou reyalize ke Kubernetes te pratik, ak nan sis mwa nou transfere 7 konektè ak Connectors Proxy, ki konsome plis resous yo, nan gwoup pwodiksyon an.

Apre konektè yo, nou deside chanje achitekti rès aplikasyon an.
Pwoblèm prensipal la te ke done soti nan konektè nan proxy nan pakèt gwo, ak Lè sa a, frape DANBoID la epi yo voye nan aplikasyon sit entènèt santral la pou trete. Akòz gwo kantite rekalkil mezi, gen yon gwo chaj sou aplikasyon an.

Li te pwouve tou trè difisil pou kontwole estati travay koleksyon done endividyèl yo epi rapòte erè ki fèt nan konektè nan yon aplikasyon entènèt santral pou itilizatè yo ka wè sa k ap pase ak poukisa done yo pa t ap kolekte.

Pou rezoud pwoblèm sa yo, nou devlope achitekti 2.0.

Diferans prensipal ki genyen ant nouvo vèsyon achitekti a se ke olye pou API Web la, nou itilize RabbitMQ ak bibliyotèk MassTransit pou fè echanj mesaj ant sèvis yo. Pou fè sa, nou te oblije prèske konplètman reekri Connectors Proxy, ki fè li Connectors Hub. Non an te chanje paske wòl prensipal la nan sèvis la se pa nan voye demann nan konektè ak tounen lakay ou, men nan jere koleksyon an nan mezi soti nan konektè.

Soti nan aplikasyon sit entènèt santral la, nou separe enfòmasyon sou plasman ak estatistik ki soti nan sit yo nan sèvis separe, ki te fè li posib yo debarase m de rekalkil nesesè epi estoke sèlman estatistik deja kalkile ak total nan nivo plasman an. Nou menm tou nou reekri ak optimize lojik la pou kalkile estatistik debaz ki baze sou done anvan tout koreksyon.

An menm tan, n ap migre tout sèvis ak aplikasyon pou Docker ak Kubernetes pou rann solisyon an pi fasil pou echèl ak pi fasil pou jere.

Ki jan nou kolekte done sou kanpay piblisite nan sit sou entènèt (chemen ki pikan nan pwodwi a)

Ki kote nou ye kounye a

Prèv-of-konsèp achitekti 2.0 pwodwi D1.Digital pare ak travay nan yon anviwònman tès ak yon seri limite nan konektè. Tout sa ki rete pou fè se reekri yon lòt 20 konektè nan yon nouvo platfòm, teste ke done yo chaje kòrèkteman ak tout mezi yo kalkile kòrèkteman, epi woule konsepsyon an antye nan pwodiksyon an.

An reyalite, pwosesis sa a pral rive piti piti epi nou pral oblije kite konpatibilite bak ak ansyen API pou kenbe tout bagay ap travay.

Plan imedya nou yo gen ladan devlopman nouvo konektè, entegrasyon ak nouvo sistèm ak ajoute mezi adisyonèl nan seri done ki telechaje nan sit konekte ak sistèm adserving.

Nou planifye tou pou transfere tout aplikasyon yo, ki gen ladan aplikasyon sit entènèt santral la, nan Docker ak Kubernetes. Konbine ak nouvo achitekti a, sa pral siyifikativman senplifye deplwaman, siveyans ak kontwòl resous konsome yo.

Yon lòt lide se fè eksperyans ak chwa nan baz done pou estoke estatistik, ki se kounye a ki estoke nan MongoDB. Nou te deja transfere plizyè konektè nouvo nan baz done SQL, men gen diferans lan se prèske inapèsi, ak pou estatistik total pa jou, ki ka mande pou yon peryòd abitrè, benefis la ka byen grav.

An jeneral, plan yo grandi, ann kontinye :)

Otè atik R&D Dentsu Aegis Network Lawisi: Georgy Ostapenko (shmiigaa), Mikhail Kotsik (hitexx)

Sous: www.habr.com

Add nouvo kòmantè