Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Wakati Olivier ya Mwaka Mpya ilipokamilika, sikuwa na chochote cha kufanya, na niliamua kupakua makala yote kutoka kwa Habrahabr (na majukwaa yanayohusiana) kwenye kompyuta yangu na kuchunguza.

Kulikuwa na hadithi kadhaa za kuvutia. Ya kwanza ni ukuzaji wa muundo na mada ya vifungu kwa zaidi ya miaka 12 ya uwepo wa wavuti. Kwa mfano, mienendo ya baadhi ya mada ni dalili kabisa. Kuendelea - chini ya kukata.

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Mchakato wa kuchanganua

Ili kuelewa jinsi Habr alivyokua, ilihitajika kupitia nakala zake zote na kutoa habari ya meta kutoka kwao (kwa mfano, tarehe). Njia ya kupita ilikuwa rahisi, kwa sababu viungo vya vifungu vyote vinaonekana kama "habrahabr.ru/post/337722/", na nambari zinatolewa kwa mpangilio madhubuti. Kujua kuwa chapisho la mwisho lina nambari chini ya elfu 350, nilipitia tu kitambulisho cha hati kinachowezekana kwenye kitanzi (msimbo wa Python):

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

Kazi download_document inajaribu kupakia ukurasa na kitambulisho sambamba na inajaribu kutoa taarifa muhimu kutoka kwa muundo wa 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)

Katika mchakato wa kuchanganua, niligundua mambo kadhaa mapya.

Kwanza, wanasema kwamba kuunda michakato zaidi kuliko kuna cores katika processor haina maana. Lakini kwa upande wangu, iliibuka kuwa rasilimali inayopunguza sio processor, lakini mtandao, na michakato 100 hufanya kazi haraka kuliko 4 au, sema, 20.

Pili, katika baadhi ya machapisho kulikuwa na michanganyiko ya herufi maalum - kwa mfano, maneno ya udhalilishaji kama "%&#@". Ikawa hivyo html.parser, ambayo nilitumia kwanza, humenyuka kwa mchanganyiko &# kwa uchungu, ukizingatia kuwa ni mwanzo wa chombo cha html. Nilikuwa tayari kufanya uchawi mweusi, lakini jukwaa lilipendekeza kuwa unaweza kubadilisha kichanganuzi.

Tatu, niliweza kupakua vichapo vyote, isipokuwa vitatu. Hati zilizo na nambari 65927, 162075, na 275987 zilifutwa mara moja na antivirus yangu. Haya ni makala, mtawalia, kuhusu msururu wa javascript ambao unapakua pdf hasidi, SMS ransomware katika mfumo wa seti ya programu jalizi za kivinjari, na tovuti ya CrashSafari.com ambayo hutuma iPhones kuwashwa upya. Antivirus iligundua makala nyingine baadaye, wakati wa kuchanganua mfumo: chapisha 338586 kuhusu hati kwenye tovuti ya duka la wanyama vipenzi ambayo hutumia kichakataji cha mtumiaji kuchimba cryptocurrency. Kwa hiyo tunaweza kuzingatia kazi ya antivirus ni ya kutosha kabisa.

Nakala za "Live" ziligeuka kuwa nusu tu ya kiwango cha juu - vipande 166307. Kuhusu wengine, Habr anatoa chaguzi "ukurasa umepitwa na wakati, umefutwa au haukuwepo kabisa." Naam, chochote kinaweza kutokea.

Upakiaji wa makala ulifuatiwa na kazi ya kiufundi: kwa mfano, ilibidi tarehe za uchapishaji zibadilishwe kutoka umbizo la "'21 Desemba 2006 saa 10:47 asubuhi" hadi kawaida. datetime, na "12,8k" maoni - mwaka 12800. Katika hatua hii, matukio machache zaidi yalitoka. La kuchekesha zaidi linahusiana na hesabu za kura na aina za data: baadhi ya machapisho ya zamani yalikuwa na utiririshaji wa ndani na yalipata kura 65535 kila moja.

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Matokeo yake, maandiko ya makala (bila picha) yalinichukua gigabytes 1.5, maoni na meta-habari - nyingine 3, na kuhusu megabytes mia moja - meta-habari kuhusu makala. Hii inaweza kuhifadhiwa kabisa kwenye RAM, ambayo ilikuwa mshangao mzuri kwangu.

Nilianza uchanganuzi wa nakala sio kutoka kwa maandishi yenyewe, lakini kutoka kwa habari ya meta: tarehe, vitambulisho, vitovu, maoni na kupenda. Ilibainika kuwa angeweza kusema mengi.

Mitindo ya Maendeleo ya Habrahabr

Makala kwenye tovuti yamechapishwa tangu 2006; kwa bidii zaidi - mnamo 2008-2016.

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Jinsi nakala hizi zilivyosomwa kwa nyakati tofauti sio rahisi sana kutathmini. Maandishi ya 2012 na vijana yalipokea maoni na ukadiriaji zaidi, lakini maandishi mapya yana maoni na alamisho zaidi. Vipimo hivi vilitenda kwa njia sawa (nusu) mara moja tu, mnamo 2015. Pengine, katika hali ya mgogoro wa kiuchumi na kisiasa, tahadhari ya wasomaji imehama kutoka kwa blogu za IT hadi masuala yenye uchungu zaidi.

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Mbali na makala zenyewe, nilipakua maoni zaidi kwao. Kulikuwa na maoni milioni 6, hata hivyo, elfu 240 kati yao yalipigwa marufuku ("UFO iliruka na kuchapisha maandishi haya hapa"). Sifa muhimu ya maoni ni kwamba yana muhuri wa wakati. Kwa kusoma wakati wa maoni, unaweza kuelewa takriban wakati nakala zinasomwa kabisa.

Ilibadilika kuwa makala nyingi zimeandikwa na kutoa maoni mahali fulani kutoka 10 asubuhi hadi 20 jioni, i.e. kwa siku ya kawaida ya kazi ya Moscow. Hii inaweza kumaanisha kwamba Habr anasomwa kwa madhumuni ya kitaaluma, na kwamba hii ni njia nzuri ya kuahirisha kazini. Kwa njia, mgawanyo huu wa wakati wa siku ni thabiti kutoka msingi wa Habr hadi leo.

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Hata hivyo, manufaa kuu ya muhuri wa muda wa maoni si wakati wa siku, lakini muda wa "maisha amilifu" ya makala. Nilihesabu jinsi wakati unavyosambazwa kutoka kwa uchapishaji wa kifungu hadi maoni yake. Ilibadilika kuwa sasa maoni ya wastani (mstari wa kijani) inakuja karibu masaa 20, i.e. katika siku ya kwanza baada ya kuchapishwa, kwa wastani, zaidi ya nusu ya maoni yote kwenye makala yameachwa. Na katika siku mbili wanaacha 75% ya maoni yote. Wakati huo huo, nakala za mapema zilisomwa haraka zaidi - kwa mfano, mnamo 2010, nusu ya maoni yalikuja katika masaa 6 ya kwanza.

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Ilinishangaza kwamba maoni yamerefushwa: wastani wa idadi ya wahusika katika maoni imekaribia mara mbili katika maisha ya Habr!

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Maoni rahisi kuliko maoni ni kura. Tofauti na rasilimali nyingine nyingi, kwenye Habre unaweza kuweka sio tu pluses, lakini pia minuses. Hata hivyo, wasomaji hawatumii fursa ya mwisho mara kwa mara: sehemu ya sasa ya kutopendwa ni takriban 15% ya kura zote zilizopigwa. Kulikuwa na zaidi, lakini baada ya muda, wasomaji wamekuwa wapole.

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Maandishi yenyewe yamebadilika kwa wakati. Kwa mfano, urefu wa kawaida wa maandishi hauachi kukua kwa kasi kutoka kwa uzinduzi wa tovuti, licha ya migogoro. Katika muongo mmoja, maandishi yamekuwa karibu mara kumi zaidi!

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Mtindo wa maandishi (kwa makadirio ya kwanza) pia ulibadilika. Katika miaka ya kwanza ya uwepo wa Habr, kwa mfano, sehemu ya nambari na nambari katika maandishi iliongezeka:

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Baada ya kuelewa mienendo ya jumla ya tovuti, niliamua kupima jinsi umaarufu wa mada mbalimbali ulibadilika. Mada zinaweza kuchaguliwa kiotomatiki kutoka kwa maandishi, lakini kwa wanaoanza, huwezi kuunda tena gurudumu, lakini tumia vitambulisho vilivyotengenezwa tayari vilivyowekwa na waandishi wa kila nakala. Nimechora mitindo minne ya kawaida kwenye chati. Mandhari ya "Google" awali yalitawala (labda hasa kutokana na SEO), lakini imekuwa ikipungua uzito kwa miaka mingi. Javascript imekuwa mada maarufu na inaendelea kukua polepole, lakini kujifunza kwa mashine kumeanza kupata umaarufu haraka katika miaka ya hivi karibuni. Linux, kwa upande mwingine, imebakia sawa katika muongo mzima.

Jinsi nilivyochanganua Habr, sehemu ya 1: mitindo

Kwa kweli, nilipendezwa na mada gani huvutia shughuli za wasomaji zaidi. Nilihesabu idadi ya wastani ya maoni, kura na maoni katika kila mada. Hiki ndicho kilichotokea:

  • Mada zilizotazamwa zaidi: arduino, muundo wa wavuti, ukuzaji wa wavuti, digest, viungo, css, html, html5, nginx, algoriti.
  • Mada "zilizopendwa" zaidi: vkontakte, ucheshi, jQuery, opera, c, html, ukuzaji wa wavuti, HTML5, css, muundo wa wavuti.
  • Mada zilizojadiliwa zaidi: opera, skype, kujitegemea, vkontakte, ubuntu, kazi, nokia, nginx, arduino, firefox.

Kwa njia, kwa kuwa ninalinganisha mada, unaweza kuziweka kwa mzunguko (na kulinganisha matokeo na nakala kama hiyo kutoka 2013).

  • Kwa miaka yote ya kuwepo kwa Habr, vitambulisho maarufu zaidi (katika mpangilio wa kushuka) ni google, android, javascript, microsoft, linux, php, apple, java, python, programu, startups, maendeleo, ios, startup, mitandao ya kijamii.
  • Mnamo 2017, maarufu zaidi zilikuwa javascript, python, java, android, development, linux, c++, programu, php, c#, ios, kujifunza kwa mashine, usalama wa habari, microsoft, react

Wakati wa kulinganisha makadirio haya, mtu anaweza kuzingatia, kwa mfano, kwa maandamano ya ushindi ya Python na kutoweka kwa php, au "machweo" ya mada za kuanza na kuongezeka kwa kujifunza kwa mashine.

Sio vitambulisho vyote kwenye Habre vilivyo na rangi ya mada dhahiri kama hii. Kwa mfano, hapa kuna vitambulisho kadhaa ambavyo vilikutana mara moja tu, lakini vilionekana kuwa vya kuchekesha kwangu. Kwa hivyo: "wazo ndio nguvu ya maendeleo", "boot kutoka kwa picha ya diski ya floppy", "Jimbo la Iowa", "drama", "superalesh", "injini ya mvuke", "mambo ya kufanya Jumamosi", "Nina mbweha kwenye grinder ya nyama", "ilikua kama kawaida", "hatukuweza kupata vitambulisho vya kuchekesha". Kuamua mada ya vifungu kama hivyo, vitambulisho haitoshi - itabidi utekeleze modeli ya mada kwenye maandishi ya vifungu.

Mchanganuo wa kina zaidi wa yaliyomo kwenye vifungu utakuwa katika chapisho linalofuata. Kwanza, nitaunda mfano ambao unatabiri idadi ya maoni ya ukurasa kwa nakala kulingana na yaliyomo. Pili, ninataka kufundisha mtandao wa neural kutoa maandishi kwa mtindo sawa na waandishi wa Habr. Kwa hivyo jiandikishe 🙂

PS Na hapa ni beeped seti ya data.

Chanzo: mapenzi.com

Kuongeza maoni