Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Шинэ жилийн Оливье дуусахад би хийх зүйлгүй байсан тул би Хабрахабраас (болон холбогдох платформууд) бүх нийтлэлийг компьютер дээрээ татаж аваад судлахаар шийдсэн.

Хэд хэдэн сонирхолтой түүхүүд байсан. Үүний эхнийх нь сайтын оршин тогтнох 12 жилийн хугацаанд нийтлэлийн хэлбэр, сэдвийг боловсруулах явдал юм. Жишээлбэл, зарим сэдвүүдийн динамик нь нэлээд үзүүлэлт юм. Үргэлжлэл - зүслэгийн доор.

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Шинжилгээний үйл явц

Хабр хэрхэн хөгжсөнийг ойлгохын тулд түүний бүх нийтлэлийг судалж, тэдгээрээс мета-мэдээлэл (жишээлбэл, огноо) гаргаж авах шаардлагатай байв. Бүх нийтлэлийн холбоосууд нь "habrahabr.ru/post/337722/" шиг харагдах бөгөөд тоонуудыг дарааллаар нь нарийн зааж өгсөн тул тойрч гарахад хялбар байсан. Сүүлчийн нийтлэл 350 мянгаас бага тоотой байгааг мэдээд би бүх боломжит баримт бичгийн id-г нэг давталтаар шалгасан (Python код):

import numpy as np
from multiprocessing import Pool
with Pool(100) as p:
    docs = p.map(download_document, np.arange(350000))

үйл ажиллагаа download_document харгалзах id бүхий хуудсыг ачаалахыг оролдож, html бүтцээс утга учиртай мэдээллийг гаргаж авахыг оролддог.

import requests
from bs4 import BeautifulSoup

def download_document(pid):
    """ Download and process a Habr document and its comments """
    # выгрузка документа
    r = requests.get('https://habrahabr.ru/post/' +str(pid) + '/')
    # парсинг документа
    soup = BeautifulSoup(r.text, 'html5lib') # instead of html.parser
    doc = {}
    doc['id'] = pid
    if not soup.find("span", {"class": "post__title-text"}):
        # такое бывает, если статья не существовала или удалена
        doc['status'] = 'title_not_found'
    else:
        doc['status'] = 'ok'
        doc['title'] = soup.find("span", {"class": "post__title-text"}).text
        doc['text'] = soup.find("div", {"class": "post__text"}).text
        doc['time'] = soup.find("span", {"class": "post__time"}).text
        # create other fields: hubs, tags, views, comments, votes, etc.
        # ...
    # сохранение результата в отдельный файл
    fname = r'files/' + str(pid) + '.pkl'
    with open(fname, 'wb') as f:
        pickle.dump(doc, f)

Шинжилгээ хийх явцад би хэд хэдэн шинэ зүйлийг олж мэдсэн.

Нэгдүгээрт, процессор дахь цөмөөс илүү олон процесс үүсгэх нь ашиггүй гэж тэд хэлдэг. Гэхдээ миний хувьд хязгаарлах нөөц бол процессор биш, харин сүлжээ бөгөөд 100 процесс нь 4 эсвэл 20-оос илүү хурдан ажилладаг болох нь тогтоогдсон.

Хоёрдугаарт, зарим нийтлэлд тусгай тэмдэгтүүдийн хослолууд байсан - жишээлбэл, "%&#@" гэх мэт эвфемизмууд. Энэ нь тодорхой болсон html.parser, миний хамгийн түрүүнд ашигласан нь хослолд хариу үйлдэл үзүүлдэг &# Энэ нь html нэгжийн эхлэл гэж үзвэл маш хэцүү. Би аль хэдийн хар ид шид хийх гэж байсан, гэхдээ форум танд зөвхөн задлан шинжлэгчийг сольж болно гэж санал болгосон.

Гуравдугаарт, би гурваас бусад бүх хэвлэлийг буулгаж чадсан. 65927, 162075, 275987 дугаартай бичиг баримтуудыг вирусны эсрэг программ маань шууд устгасан. Эдгээр нь хортой pdf файлыг татаж авдаг JavaScript сүлжээ, вэб хөтчийн залгаасууд хэлбэрээр SMS ransomware болон iPhone-ыг дахин ачаалахад илгээдэг CrashSafari.com сайтын тухай нийтлэлүүд юм. Антивирус нь дараа нь системийг сканнердах явцад өөр нэг нийтлэлийг олж нээсэн: криптовалют олборлоход хэрэглэгчийн процессор ашигладаг скриптүүдийн тухай 338586 дугаарыг гэрийн тэжээмэл амьтны дэлгүүрийн вэбсайтад нийтэл. Тиймээс бид антивирусын ажлыг хангалттай гэж үзэж болно.

"Шууд" нийтлэлүүд нь боломжит дээд хэмжээний ердөө тал хувь нь буюу 166307 ширхэг болж хувирав. Үлдсэн зүйлийн талаар Хабр "хуудас хуучирсан, устгагдсан эсвэл огт байхгүй" гэсэн сонголтыг өгдөг. За юу ч тохиолдож болно.

Нийтлэлүүдийг байршуулсны дараа техникийн ажил хийсэн: жишээлбэл, хэвлэгдсэн огноог "21 оны 2006-р сарын 10-ний өглөөний 47:XNUMX" форматаас стандарт руу хөрвүүлэх шаардлагатай байв. datetime, мөн "12,8k" үзэлт - 12800. Энэ үе шатанд дахиад хэд хэдэн тохиолдол гарсан. Хамгийн инээдтэй нь саналын тоо болон өгөгдлийн төрлүүдтэй холбоотой: зарим хуучин нийтлэлүүд нь int overflow байсан бөгөөд тус бүр 65535 санал авсан.

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Үүний үр дүнд нийтлэлийн текстүүд (зураггүй) надад 1.5 гигабайт, мета мэдээлэл бүхий тайлбар - өөр 3, зуу орчим мегабайт - нийтлэлийн талаархи мета мэдээлэл авсан. Үүнийг RAM-д бүрэн хадгалах боломжтой бөгөөд энэ нь миний хувьд гэнэтийн бэлэг байлаа.

Би нийтлэлийн дүн шинжилгээг текстээс биш, харин мета мэдээллээс эхлүүлсэн: огноо, шошго, төв, үзэл бодол, таалагдсан. Тэр маш их зүйлийг хэлж чадах нь тодорхой болсон.

Хабрахабрын хөгжлийн чиг хандлага

Сайт дээрх нийтлэлүүд 2006 оноос хойш нийтлэгдсэн; хамгийн эрчимтэй - 2008-2016 онд.

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Эдгээр нийтлэлийг өөр өөр цаг үед хэр идэвхтэй уншсаныг үнэлэхэд тийм ч хялбар биш юм. 2012 болон түүнээс доош насны текстүүд илүү олон сэтгэгдэл, үнэлгээ авсан боловч шинэ текстүүд илүү олон үзэлт, хавчуургатай байдаг. Эдгээр хэмжүүрүүд 2015 онд зөвхөн нэг удаа ижилхэн (хагас буурсан) ажилласан. Магадгүй, эдийн засаг, улс төрийн хямралын үед уншигчдын анхаарал мэдээллийн технологийн блогоос илүү зовлонтой асуудлууд руу шилжсэн байх.

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Нийтлэлүүдээс гадна би тэдэнд илүү олон сэтгэгдлийг татаж авсан. 6 сая сэтгэгдэл байсан боловч тэдгээрийн 240 мянга нь хориглогдсон байна ("нисдэг нисдэг биет ниссэн бөгөөд энэ бичээсийг энд нийтэлсэн"). Сэтгэгдлийн ашигтай шинж чанар нь цаг хугацааны тамгатай байдаг. Сэтгэгдэл бичих цагийг судалснаар та нийтлэлийг хэзээ уншиж байгааг ойлгох боломжтой.

Ихэнх нийтлэлүүд нь өглөөний 10 цагаас оройн 20 цаг хүртэл хаа нэгтээ бичиж, сэтгэгдэл бичсэн байдаг. Москвагийн ердийн ажлын өдөр. Энэ нь Хабрыг мэргэжлийн зорилгоор уншдаг гэсэн үг бөгөөд энэ нь ажил дээрээ хойшлуулах сайн арга юм. Дашрамд хэлэхэд, өдрийн цагийн энэхүү хуваарилалт нь Хабр үүссэн цагаас өнөөг хүртэл тогтвортой байна.

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Гэсэн хэдий ч сэтгэгдэл бичих цагийн тэмдгийн гол давуу тал нь өдрийн цаг биш, харин нийтлэлийн "идэвхтэй амьдрал" үргэлжлэх хугацаа юм. Нийтлэлийг нийтлэхээс эхлээд тайлбар өгөх хүртэлх хугацааг хэрхэн хуваарилдагийг би тооцоолсон. Одоо дундаж тайлбар (ногоон шугам) ойролцоогоор 20 цагийн дараа ирдэг болох нь тогтоогдсон. Нийтлэгдсэнээс хойшхи эхний өдөр дунджаар нийтлэлийн нийт сэтгэгдлүүдийн талаас илүү хувь нь үлдсэн байна. Хоёр өдрийн дотор тэд нийт сэтгэгдлүүдийн 75% -ийг үлдээдэг. Үүний зэрэгцээ өмнөх нийтлэлүүдийг илүү хурдан уншдаг байсан - жишээлбэл, 2010 онд сэтгэгдлийн тал хувь нь эхний 6 цагийн дотор ирсэн.

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Сэтгэгдэл уртассан нь миний хувьд гэнэтийн зүйл байлаа: Хабрын амьдралын туршид сэтгэгдэл дэх тэмдэгтүүдийн дундаж тоо бараг хоёр дахин нэмэгдсэн байна!

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Санал өгөхөөс илүү хялбар санал хүсэлт. Бусад олон эх сурвалжаас ялгаатай нь Habré дээр та зөвхөн давуу талыг төдийгүй бас хасах зүйлийг тавьж болно. Гэсэн хэдий ч уншигчид сүүлийн боломжийг тийм ч их ашигладаггүй: дургүйцсэн хүмүүсийн одоогийн эзлэх хувь нийт санал өгсөн хүмүүсийн 15 орчим хувийг эзэлж байна. Өмнө нь олон байсан ч цаг хугацаа өнгөрөх тусам уншигчид илүү эелдэг болсон.

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Текстүүд өөрсдөө цаг хугацааны явцад өөрчлөгдсөн. Жишээлбэл, текстийн ердийн урт нь хямралыг үл харгалзан сайтыг ажиллуулснаас хойш тогтвортой өсөхөө больдоггүй. Арван жилийн дотор текст бараг арав дахин урт болсон!

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Текстүүдийн хэв маяг (анхны ойролцоо) мөн өөрчлөгдсөн. Жишээлбэл, Хабр оршин тогтнох эхний жилүүдэд текст дэх код, тоонуудын эзлэх хувь нэмэгджээ.

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Сайтын ерөнхий динамикийг ойлгосны дараа би янз бүрийн сэдвүүдийн алдар нэр хэрхэн өөрчлөгдсөнийг хэмжихээр шийдсэн. Сэдвүүдийг текстээс автоматаар сонгох боломжтой боловч эхлэгчдэд дугуйг дахин зохион бүтээх боломжгүй, харин нийтлэл бүрийн зохиогчдын наасан бэлэн шошгыг ашиглана уу. Би график дээр дөрвөн ердийн чиг хандлагыг зурсан. "Google" сэдэв нь эхэндээ давамгайлж байсан (магадгүй голчлон SEO-тэй холбоотой), гэхдээ олон жилийн турш жингээ хассаар байна. Javascript нь түгээмэл сэдэв байсан бөгөөд аажмаар өссөөр байгаа боловч машин сурах нь сүүлийн жилүүдэд хурдацтай дэлгэрч эхэлсэн. Нөгөө талаар Линукс нь арван жилийн турш ижил хамааралтай хэвээр байна.

Би Хабрыг хэрхэн задлан шинжилсэн бэ, 1-р хэсэг: чиг хандлага

Мэдээж ямар сэдвүүд уншигчдын идэвхийг илүү татдагийг сонирхож эхэлсэн. Би сэдэв бүрийн үзэлт, санал, сэтгэгдлийн дундаж тоог тооцоолсон. Юу болсныг энд харуулав.

  • Хамгийн их үзсэн сэдвүүд: arduino, вэб дизайн, вэб хөгжүүлэлт, дайджест, холбоосууд, css, html, html5, nginx, алгоритмууд.
  • Хамгийн их "таалагдсан" сэдвүүд: vkontakte, хошигнол, jquery, opera, c, html, вэб хөгжүүлэлт, html5, css, вэб дизайн.
  • Хамгийн их яригддаг сэдвүүд: опера, скайп, бие даасан, vkontakte, ubuntu, ажил, nokia, nginx, arduino, firefox.

Дашрамд хэлэхэд, би сэдвүүдийг харьцуулж байгаа тул та тэдгээрийг давтамжаар нь эрэмбэлэх боломжтой (мөн үр дүнг нь 2013 оны ижил төстэй нийтлэл).

  • Хабр оршин тогтносон бүх жилийн туршид хамгийн алдартай шошго (буурах дарааллаар) нь google, android, javascript, microsoft, linux, php, apple, java, python, програмчлал, стартапууд, хөгжүүлэлт, ios, стартап, нийгмийн сүлжээнүүд юм.
  • 2017 онд хамгийн алдартай нь javascript, python, java, android, development, linux, c++, програмчлал, php, c#, ios, machine learning, мэдээллийн аюулгүй байдал, microsoft, react юм.

Эдгээр үнэлгээг харьцуулахдаа, жишээлбэл, Python-ийн ялалтын марш ба php устах, эсвэл эхлүүлэх сэдвүүдийн "нар жаргах" болон машин сургалтын өсөлт зэрэгт анхаарлаа хандуулж болно.

Хабре дээрх бүх шошгонд ийм тод сэдэвчилсэн өнгө байдаггүй. Жишээлбэл, энд зөвхөн нэг удаа уулзсан, гэхдээ надад инээдтэй санагдаж байсан хэдэн арван шошго байна. Тэгэхээр: "санаа бол дэвшлийн хөдөлгөгч хүч", "уян зурагнаас ачаалах", "Айова муж", "жүжиг", "супералеш", "уурын машин", "Бямба гаригт хийх зүйлс", "Надад байгаа мах бутлуурын үнэг", "энэ нь урьдын адил болсон", "бид инээдтэй шошго гаргаж чадаагүй". Ийм нийтлэлийн сэдвийг тодорхойлохын тулд шошго хангалттай биш - та нийтлэлийн текст дээр сэдэвчилсэн загварчлал хийх шаардлагатай болно.

Өгүүллийн агуулгын талаар илүү нарийвчилсан дүн шинжилгээг дараагийн бичлэгт оруулах болно. Эхлээд би нийтлэлийн агуулгад тулгуурлан тухайн нийтлэлийн хуудасны хандалтын тоог урьдчилан таамаглах загварыг бүтээх гэж байна. Хоёрдугаарт, би мэдрэлийн сүлжээнд Хабрын зохиогчидтой ижил хэв маягаар текст үүсгэхийг заахыг хүсч байна. Тиймээс бүртгүүлээрэй 🙂

Жич Эндээс дуугарч байна өгөгдлийн багц.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх