நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

புத்தாண்டு ஒலிவியர் முடிந்ததும், நான் ஒன்றும் செய்யவில்லை, மேலும் ஹப்ராஹப்ரிலிருந்து (மற்றும் தொடர்புடைய தளங்கள்) அனைத்து கட்டுரைகளையும் எனது கணினியில் பதிவிறக்கம் செய்து ஆராய முடிவு செய்தேன்.

பல சுவாரஸ்யமான கதைகள் இருந்தன. அவற்றில் முதலாவது தளத்தின் 12 ஆண்டுகளில் கட்டுரைகளின் வடிவம் மற்றும் தலைப்புகளின் வளர்ச்சி ஆகும். எடுத்துக்காட்டாக, சில தலைப்புகளின் இயக்கவியல் மிகவும் சுட்டிக்காட்டுகிறது. தொடர்ச்சி - வெட்டு கீழ்.

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

பாகுபடுத்தும் செயல்முறை

ஹப்ர் எவ்வாறு வளர்ந்தார் என்பதைப் புரிந்து கொள்ள, அவருடைய எல்லா கட்டுரைகளையும் சென்று அவற்றிலிருந்து மெட்டா தகவல்களைப் பிரித்தெடுக்க வேண்டியது அவசியம் (எடுத்துக்காட்டாக, தேதிகள்). பைபாஸ் எளிதானது, ஏனென்றால் எல்லா கட்டுரைகளுக்கான இணைப்புகளும் "habrahabr.ru/post/337722/" போல் இருக்கும், மேலும் எண்கள் கண்டிப்பாக வரிசையில் கொடுக்கப்பட்டுள்ளன. கடைசி இடுகையில் 350 ஆயிரத்துக்கும் குறைவான எண் இருப்பதை அறிந்த நான், சாத்தியமான அனைத்து ஆவண ஐடியையும் ஒரு லூப்பில் (பைதான் குறியீடு) பார்த்தேன்:

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

செயல்பாடு download_document தொடர்புடைய ஐடியுடன் பக்கத்தை ஏற்ற முயற்சிக்கிறது மற்றும் 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ஐப் பதிவிறக்கும் ஜாவாஸ்கிரிப்ட் சங்கிலி, உலாவிச் செருகுநிரல்களின் தொகுப்பின் வடிவத்தில் SMS ransomware மற்றும் ஐபோன்களை மறுதொடக்கத்திற்கு அனுப்பும் CrashSafari.com தளம் பற்றிய கட்டுரைகள். ஆண்டிவைரஸ் மற்றொரு கட்டுரையை, சிஸ்டம் ஸ்கேன் செய்யும் போது கண்டுபிடித்தது: கிரிப்டோகரன்சியை சுரங்கப்படுத்த பயனரின் செயலியைப் பயன்படுத்தும் பெட் ஸ்டோர் இணையதளத்தில் உள்ள ஸ்கிரிப்ட்களைப் பற்றிய இடுகை 338586. எனவே வைரஸ் தடுப்பு வேலை மிகவும் போதுமானது என்று நாம் கருதலாம்.

"நேரடி" கட்டுரைகள் சாத்தியமான அதிகபட்சத்தில் பாதி மட்டுமே - 166307 துண்டுகள். மீதமுள்ளவற்றைப் பற்றி, ஹப்ர் "பக்கம் காலாவதியானது, நீக்கப்பட்டது அல்லது இல்லை" என்ற விருப்பங்களை வழங்குகிறது. சரி, எதுவும் நடக்கலாம்.

கட்டுரைகளின் பதிவேற்றத்தைத் தொடர்ந்து தொழில்நுட்பப் பணிகள் மேற்கொள்ளப்பட்டன: எடுத்துக்காட்டாக, வெளியீட்டுத் தேதிகள் "'21 டிசம்பர் 2006 காலை 10:47 மணிக்கு" என்ற வடிவமைப்பிலிருந்து தரநிலைக்கு மாற்றப்பட வேண்டும். datetime, மற்றும் "12,8k" பார்வைகள் - 12800 இல். இந்த நிலையில், மேலும் சில சம்பவங்கள் வெளிவந்தன. வேடிக்கையான ஒன்று வாக்கு எண்ணிக்கை மற்றும் தரவு வகைகளுடன் தொடர்புடையது: சில பழைய இடுகைகள் முழு எண்ணாக இருந்தது மற்றும் ஒவ்வொன்றும் 65535 வாக்குகளைப் பெற்றன.

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

இதன் விளைவாக, கட்டுரைகளின் உரைகள் (படங்கள் இல்லாமல்) எனக்கு 1.5 ஜிகாபைட்கள், மெட்டா தகவலுடன் கூடிய கருத்துகள் - மற்றொரு 3, மற்றும் சுமார் நூறு மெகாபைட்கள் - கட்டுரைகள் பற்றிய மெட்டா தகவல். இதை முழுமையாக ரேமில் வைத்துக்கொள்ளலாம், இது எனக்கு இன்ப அதிர்ச்சியாக இருந்தது.

கட்டுரைகளின் பகுப்பாய்வை நான் உரைகளிலிருந்து அல்ல, ஆனால் மெட்டா தகவல்களிலிருந்து தொடங்கினேன்: தேதிகள், குறிச்சொற்கள், மையங்கள், பார்வைகள் மற்றும் விருப்பங்கள். அவளால் நிறைய சொல்ல முடியும் என்று மாறியது.

ஹப்ராஹபர் வளர்ச்சிப் போக்குகள்

தளத்தில் கட்டுரைகள் 2006 முதல் வெளியிடப்பட்டன; மிகவும் தீவிரமாக - 2008-2016 இல்.

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

இந்தக் கட்டுரைகள் வெவ்வேறு சமயங்களில் எவ்வளவு சுறுசுறுப்பாக வாசிக்கப்பட்டன என்பதை மதிப்பிடுவது அவ்வளவு எளிதல்ல. 2012 மற்றும் இளையவர்களுக்கான உரைகள் அதிக கருத்துகளையும் மதிப்பீடுகளையும் பெற்றன, ஆனால் புதிய உரைகள் அதிக பார்வைகளையும் புக்மார்க்குகளையும் பெற்றுள்ளன. இந்த அளவீடுகள் 2015 இல் ஒரே ஒரு முறை ஒரே மாதிரியாக (பாதியாகக் குறைக்கப்பட்டன). ஒருவேளை, பொருளாதார மற்றும் அரசியல் நெருக்கடியின் சூழ்நிலையில், வாசகர்களின் கவனம் IT வலைப்பதிவுகளிலிருந்து மிகவும் வேதனையான பிரச்சினைகளுக்கு மாறியுள்ளது.

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

கட்டுரைகளைத் தவிர, அவர்களுக்கு அதிகமான கருத்துகளைப் பதிவிறக்கம் செய்தேன். 6 மில்லியன் கருத்துகள் இருந்தன, இருப்பினும், அவற்றில் 240 ஆயிரம் தடை செய்யப்பட்டன ("ஒரு யுஎஃப்ஒ பறந்து வந்து இந்த கல்வெட்டை இங்கே வெளியிட்டது"). கருத்துகளின் பயனுள்ள பண்பு என்னவென்றால், அவற்றில் நேர முத்திரை உள்ளது. கருத்துகளின் நேரத்தைப் படிப்பதன் மூலம், கட்டுரைகள் எப்போது படிக்கப்படுகின்றன என்பதை நீங்கள் தோராயமாகப் புரிந்து கொள்ளலாம்.

பெரும்பாலான கட்டுரைகள் காலை 10 மணி முதல் இரவு 20 மணி வரை எங்காவது எழுதப்பட்டவை மற்றும் கருத்து தெரிவிக்கப்படுகின்றன, அதாவது. ஒரு வழக்கமான மாஸ்கோ வேலை நாளில். ஹப்ர் தொழில்முறை நோக்கங்களுக்காகப் படிக்கப்பட்டது என்றும், வேலையைத் தள்ளிப் போட இது ஒரு நல்ல வழி என்றும் இது குறிக்கலாம். மூலம், நாள் நேரத்தின் இந்த விநியோகம் ஹப்ரின் அடித்தளத்திலிருந்து இன்றுவரை நிலையானது.

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

இருப்பினும், கருத்து நேர முத்திரையின் முக்கிய நன்மை நாளின் நேரம் அல்ல, ஆனால் கட்டுரையின் "சுறுசுறுப்பான வாழ்க்கை" காலம். கட்டுரையின் வெளியீடு முதல் அதன் கருத்து வரை நேரம் எவ்வாறு விநியோகிக்கப்படுகிறது என்பதைக் கணக்கிட்டேன். இப்போது சராசரி கருத்து (பச்சைக் கோடு) சுமார் 20 மணிநேரத்தில் வருகிறது, அதாவது. வெளியீட்டிற்குப் பிறகு முதல் நாளில், சராசரியாக, கட்டுரையின் அனைத்து கருத்துக்களிலும் பாதிக்கும் மேலானவை. இரண்டு நாட்களில் அவர்கள் 75% கருத்துகளை விட்டுவிடுகிறார்கள். அதே நேரத்தில், முந்தைய கட்டுரைகள் இன்னும் வேகமாக படிக்கப்பட்டன - உதாரணமாக, 2010 இல், முதல் 6 மணி நேரத்தில் பாதி கருத்துகள் வந்தன.

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

கருத்துகள் நீளமாக இருப்பது எனக்கு ஆச்சரியமாக இருந்தது: ஹப்ரின் வாழ்நாளில் ஒரு கருத்தில் உள்ள எழுத்துக்களின் சராசரி எண்ணிக்கை கிட்டத்தட்ட இருமடங்காகிவிட்டது!

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

கருத்துகளை விட எளிதான கருத்து வாக்குகள். பல ஆதாரங்களைப் போலல்லாமல், ஹப்ரேயில் நீங்கள் பிளஸ்களை மட்டுமல்ல, மைனஸையும் வைக்கலாம். இருப்பினும், வாசகர்கள் கடைசி வாய்ப்பை அடிக்கடி பயன்படுத்துவதில்லை: தற்போதைய விருப்பமின்மைகளின் பங்கு மொத்த வாக்குகளில் 15% ஆகும். அதிகமாக இருந்தது, ஆனால் காலப்போக்கில், வாசகர்கள் கனிவாகிவிட்டனர்.

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

நூல்களே காலப்போக்கில் மாறிவிட்டன. எடுத்துக்காட்டாக, நெருக்கடிகள் இருந்தபோதிலும், தளத்தின் தொடக்கத்திலிருந்தே உரையின் வழக்கமான நீளம் சீராக வளர்வதை நிறுத்தாது. ஒரு தசாப்தத்தில், நூல்கள் கிட்டத்தட்ட பத்து மடங்கு நீளமாகிவிட்டன!

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

நூல்களின் பாணியும் (முதல் தோராயமாக) மாறியது. ஹப்ரின் முதல் ஆண்டுகளில், எடுத்துக்காட்டாக, நூல்களில் குறியீடு மற்றும் எண்களின் பங்கு அதிகரித்தது:

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

தளத்தின் ஒட்டுமொத்த இயக்கவியலைப் புரிந்துகொண்ட பிறகு, பல்வேறு தலைப்புகளின் புகழ் எவ்வாறு மாறியது என்பதை அளவிட முடிவு செய்தேன். தலைப்புகள் உரைகளிலிருந்து தானாகவே தேர்ந்தெடுக்கப்படலாம், ஆனால் தொடக்கத்தில், நீங்கள் சக்கரத்தை மீண்டும் கண்டுபிடிக்க முடியாது, ஆனால் ஒவ்வொரு கட்டுரையின் ஆசிரியர்களால் ஒட்டப்பட்ட ஆயத்த குறிச்சொற்களைப் பயன்படுத்தவும். அட்டவணையில் நான்கு பொதுவான போக்குகளை வரைந்துள்ளேன். "Google" தீம் ஆரம்பத்தில் ஆதிக்கம் செலுத்தியது (ஒருவேளை முக்கியமாக SEO காரணமாக இருக்கலாம்), ஆனால் பல ஆண்டுகளாக எடை குறைந்து வருகிறது. ஜாவாஸ்கிரிப்ட் ஒரு பிரபலமான தலைப்பு மற்றும் மெதுவாக வளர்ந்து வருகிறது, ஆனால் இயந்திர கற்றல் சமீபத்திய ஆண்டுகளில் மட்டுமே வேகமாக பிரபலமடையத் தொடங்கியது. லினக்ஸ், மறுபுறம், தசாப்தம் முழுவதும் சமமாக தொடர்புடையது.

நான் ஹப்ரை எவ்வாறு அலசினேன், பகுதி 1: போக்குகள்

நிச்சயமாக, எந்த தலைப்புகள் வாசகர்களை அதிகம் ஈர்க்கின்றன என்பதில் நான் ஆர்வமாக இருந்தேன். ஒவ்வொரு தலைப்பிலும் உள்ள பார்வைகள், வாக்குகள் மற்றும் கருத்துகளின் சராசரி எண்ணிக்கையைக் கணக்கிட்டேன். என்ன நடந்தது என்பது இங்கே:

  • அதிகம் பார்க்கப்பட்ட தலைப்புகள்: arduino, web design, web development, digest, links, css, html, html5, nginx, algorithms.
  • மிகவும் "பிடித்த" தலைப்புகள்: vkontakte, humor, jquery, opera, c, html, web development, html5, css, web design.
  • அதிகம் விவாதிக்கப்பட்ட தலைப்புகள்: ஓபரா, ஸ்கைப், ஃப்ரீலான்ஸ், vkontakte, ubuntu, work, nokia, nginx, arduino, firefox.

சொல்லப்போனால், நான் தலைப்புகளை ஒப்பிட்டுப் பார்ப்பதால், நீங்கள் அவற்றை அதிர்வெண் மூலம் தரவரிசைப்படுத்தலாம் (மேலும் முடிவுகளை ஒப்பிடவும் 2013 இல் இருந்து இதே போன்ற கட்டுரை).

  • ஹப்ரின் எல்லா வருடங்களிலும், மிகவும் பிரபலமான குறிச்சொற்கள் (இறங்கு வரிசையில்) google, Android, javascript, microsoft, linux, php, apple, java, python, programming, startups, development, ios, startup, social networks
  • 2017 ஆம் ஆண்டில், ஜாவாஸ்கிரிப்ட், பைதான், ஜாவா, ஆண்ட்ராய்டு, டெவலப்மென்ட், லினக்ஸ், சி++, புரோகிராமிங், பிஎச்பி, சி#, ஐஓஎஸ், மெஷின் லேர்னிங், தகவல் பாதுகாப்பு, மைக்ரோசாஃப்ட், ரியாக்ட் ஆகியவை மிகவும் பிரபலமானவை.

இந்த மதிப்பீடுகளை ஒப்பிடும் போது, ​​எடுத்துக்காட்டாக, பைத்தானின் வெற்றிகரமான அணிவகுப்பு மற்றும் php இன் அழிவு அல்லது தொடக்க தலைப்புகளின் "சூரிய அஸ்தமனம்" மற்றும் இயந்திர கற்றலின் எழுச்சி ஆகியவற்றில் ஒருவர் கவனம் செலுத்தலாம்.

Habré இல் உள்ள அனைத்து குறிச்சொற்களும் அத்தகைய வெளிப்படையான கருப்பொருள் வண்ணத்தைக் கொண்டிருக்கவில்லை. எடுத்துக்காட்டாக, ஒருமுறை மட்டுமே சந்தித்த ஒரு டஜன் குறிச்சொற்கள் இங்கே உள்ளன, ஆனால் எனக்கு வேடிக்கையாகத் தோன்றியது. எனவே: "யோசனை என்பது முன்னேற்றத்தின் உந்து சக்தி", "ஒரு நெகிழ் வட்டு படத்திலிருந்து துவக்க", "அயோவா மாநிலம்", "நாடகம்", "சூப்பரலேஷ்", "நீராவி இயந்திரம்", "சனிக்கிழமை செய்ய வேண்டியவை", "என்னிடம் உள்ளது இறைச்சி சாணையில் ஒரு நரி", "அது எப்போதும் போல் மாறியது", "எங்களால் வேடிக்கையான குறிச்சொற்களைக் கொண்டு வர முடியவில்லை". அத்தகைய கட்டுரைகளின் பொருளைத் தீர்மானிக்க, குறிச்சொற்கள் போதாது - நீங்கள் கட்டுரைகளின் உரைகளில் கருப்பொருள் மாதிரியை மேற்கொள்ள வேண்டும்.

கட்டுரைகளின் உள்ளடக்கம் பற்றிய விரிவான பகுப்பாய்வு அடுத்த இடுகையில் இருக்கும். முதலில், ஒரு கட்டுரையின் உள்ளடக்கத்தின் அடிப்படையில் அதன் பக்கக் காட்சிகளின் எண்ணிக்கையைக் கணிக்கும் மாதிரியை உருவாக்கப் போகிறேன். இரண்டாவதாக, ஹப்ரின் ஆசிரியர்களின் அதே பாணியில் நூல்களை உருவாக்க நரம்பியல் வலையமைப்பிற்கு கற்பிக்க விரும்புகிறேன். எனவே குழுசேரவும் 🙂

PS மற்றும் இதோ பீப் ஒலி தரவுத்தொகுப்பு.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்