ืืขืื, ืืืืจ.
ะ
ืคืืจ ืื ืืืืก ืืขื ืขื ืคืืจืืื ืืขืจืขืกืืจื ืืื ืืขื ืืืืก ืืื ืืขืฉืขื, ืืื ืืขืจ ืืืฉื ืืื ืืขืจ ืื ืฉื ืื.
ืืึธืื ืืืจ ืืขืจืืึธื ืขื ืืืจ ืึทืืึธื ืืืืืขืจ ืึทื ืื ืกืืึทืืืกืืืง ืืื ืจืืืืื ืื ืืขื ืขื ื ืืฉื ืืึทืึทืืืขืจ, ืืื ืืึธื ื ืื ืืึธืื ืงืืื ืื ืกืืืืขืจ ืืื ืคึฟืึธืจืืึทืฆืืข. ืขืก ืืื ืืืื ื ืืฉื ืืขืจืึทื ืืื ืึทื ืืื ืืื ื ืืฉื ืืึทืื ืึท ืืจืืึทื ืขืจืืขืฅ ืึธืืขืจ ืืืกื ืขืคึผืขืก. ืึธืืขืจ ื ืึธื, ืืื ืืจืึทืืื ืขืก ืืื ืืขืืืขื ืืฉืืงืึทืืืข. ืืืจ ืืืขืื ืึธื ืืืืื ืืื ืื ืงืึธื ืขืจืฉืืขืจ; ืื ืืืืก ืืขื ืขื ื ืืฉื ืืื ืืขืจืขืกืืจื ืืื ืืขื ืงืขื ืขื ืืึธืคึผืงืขื ืื ืขืจืฉืืขืจ ืกืขืงืฉืึทื ื.
ืืึทืืึท ืืึทืืืื ื
ืืื ืืขืจ ืขืจืฉืืขืจ ืืืขืจืกืืข ืคืื โโืื ืคึผืึทืจืกืขืจ, ืืืืื ืื ื ืืืขืจ ืคืื ืงืืงื, ืืึทืืขืจืงืื ืืขื ืืื ืึทืจืืืงื ืจืืืืื ืื ืืขื ืขื ืืขื ืืืขื ืืื ืืฉืืื. ืืึธืก ืืื ืฉืืื ืืื, ืึธืืขืจ ืขืก ืงืขื ื ืืฉื ืืึธืื ืืืจ ืืึทืื ืืขืจ ืงืึธืืคึผืืืฆืืจื ืคึฟืจืืื. ืขืก ืืื ืฆืืื ืฆื ืคืื ืึทื ืืขืจืงืืืึทืื ืื ืืืืึทืืืง ืกืขืงืฉืึทื ื ืคืื ืืขื ืคึผืืึทืฅ; ืืึธืก ืืืขื ืืึธืื ืืืจ ืฆื ืืึธื ืืึทื ืฅ ืืฉืืงืึทืืืข ืคืึธืจืฉืื ื, ืืืฉื, ืืขื ืืื ืื ืคึผืึธืคึผืืืึทืจืืืขื ืคืื ืื "C ++" ืึธืคึผืืืืืื ื ืืื ืืขืืืื ืืืืขืจ ืขืืืขืืข ืืึธืจื.
ืืขืจ ืึทืจืืืงื ืคึผืึทืจืกืขืจ ืืื ืืืคึผืจืืืื, ืืืฆื ืขืก ืงืขืจื ืื ืืึทืื ืฆื ืืืึธืก ืืขืจ ืึทืจืืืงื ืืขืืขืจื, ืืื ืืืื ืืขื ืืืืจ 'ืก ื ืืงืงื ืึทืืข ืืื ืืืื ืจืึทื ื (ืึท ืคึผืืึทืฅ ืคืื ืืฉืืงืึทืืืข ืืืื ืงืขื ืขื ืืืื ืืขืืื ืืึธ ืืืื, ืึธืืขืจ ืืึธืก ืืืขื ืงืืืขื ืฉืคึผืขืืขืจ). ืื ืืึทืื ืืขื ืขื ืืขืจืืืขืืืขื ืืื ืึท ืงืกืื ืืขืงืข ืืืึธืก ืงืืงื ืขืคึผืขืก ืืื ืืึธืก:
2018-12-18T12:43Z,https://habr.com/ru/post/433550/,"ะะตััะตะฝะดะถะตั Slack โ ะฟัะธัะธะฝั ะฒัะฑะพัะฐ, ะบะพััะบะธ ะฟัะธ ะฒะฝะตะดัะตะฝะธะธ ะธ ะพัะพะฑะตะฝะฝะพััะธ ัะตัะฒะธัะฐ, ะพะฑะปะตะณัะฐััะธะต ะถะธะทะฝั",votes:7,votesplus:8,votesmin:1,bookmarks:32,
views:8300,comments:10,user:ReDisque,karma:5,subscribers:2,hubs:productpm+soft
...
ืืืจ ืืืขืื ืืึทืงืืืขื ืึท ืจืฉืืื ืคืื ืื ืืืืคึผื ืืืืึทืืืง ืืึทืื ืคืื ืืขื ืคึผืืึทืฅ.
def get_as_str(link: str) -> Str:
try:
r = requests.get(link)
return Str(r.text)
except Exception as e:
return Str("")
def get_hubs():
hubs = []
for p in range(1, 12):
page_html = get_as_str("https://habr.com/ru/hubs/page%d/" % p)
# page_html = get_as_str("https://habr.com/ru/hubs/geektimes/page%d/" % p) # Geektimes
# page_html = get_as_str("https://habr.com/ru/hubs/develop/page%d/" % p) # Develop
# page_html = get_as_str("https://habr.com/ru/hubs/admin/page%d" % p) # Admin
for hub in page_html.split("media-obj media-obj_hub"):
info = Str(hub).find_between('"https://habr.com/ru/hub', 'list-snippet__tags')
if "*</span>" in info:
hub_name = info.find_between('/', '/"')
if len(hub_name) > 0 and len(hub_name) < 32:
hubs.append(hub_name)
print(hubs)
ืื find_between ืคึฟืื ืงืฆืืข ืืื ืื Str ืงืืึทืก ืกืขืืขืงืืืจื ืึท ืฉืืจืืงื ืฆืืืืฉื ืฆืืืื ืืึทืืก, ืืื ืืขืืืืื ื ืืื
ืืขืจ ืจืขืืืืืึทื ืคืื ืื get_hubs ืคึฟืื ืงืฆืืข ืืื ืึท ืืึทื ืฅ ืืืคึผืจืขืกืืื ืจืฉืืื, ืืืึธืก ืืืจ ืจืึทืืขืืืขื ืืื ืึท ืืืขืจืืขืจืืื. ืืื ืืื ืกืคึผืึทืกืืคืืงืื ืคึผืจืืืขื ืืื ื ืื ืจืฉืืื ืืื ืืืึทื ืืึทื ืฅ ืึทืืื ืึทื ืืืจ ืงืขื ืขื ืึธืคึผืฉืึทืฆื ืืืึทื ืืึทื ื.
hubs_profile = {'infosecurity', 'programming', 'webdev', 'python', 'sys_admin', 'it-infrastructure', 'devops', 'javascript', 'open_source', 'network_technologies', 'gamedev', 'cpp', 'machine_learning', 'pm', 'hr_management', 'linux', 'analysis_design', 'ui', 'net', 'hi', 'maths', 'mobile_dev', 'productpm', 'win_dev', 'it_testing', 'dev_management', 'algorithms', 'go', 'php', 'csharp', 'nix', 'data_visualization', 'web_testing', 's_admin', 'crazydev', 'data_mining', 'bigdata', 'c', 'java', 'usability', 'instant_messaging', 'gtd', 'system_programming', 'ios_dev', 'oop', 'nginx', 'kubernetes', 'sql', '3d_graphics', 'css', 'geo', 'image_processing', 'controllers', 'game_design', 'html5', 'community_management', 'electronics', 'android_dev', 'crypto', 'netdev', 'cisconetworks', 'db_admins', 'funcprog', 'wireless', 'dwh', 'linux_dev', 'assembler', 'reactjs', 'sales', 'microservices', 'search_technologies', 'compilers', 'virtualization', 'client_side_optimization', 'distributed_systems', 'api', 'media_management', 'complete_code', 'typescript', 'postgresql', 'rust', 'agile', 'refactoring', 'parallel_programming', 'mssql', 'game_promotion', 'robo_dev', 'reverse-engineering', 'web_analytics', 'unity', 'symfony', 'build_automation', 'swift', 'raspberrypi', 'web_design', 'kotlin', 'debug', 'pay_system', 'apps_design', 'git', 'shells', 'laravel', 'mobile_testing', 'openstreetmap', 'lua', 'vs', 'yii', 'sport_programming', 'service_desk', 'itstandarts', 'nodejs', 'data_warehouse', 'ctf', 'erp', 'video', 'mobileanalytics', 'ipv6', 'virus', 'crm', 'backup', 'mesh_networking', 'cad_cam', 'patents', 'cloud_computing', 'growthhacking', 'iot_dev', 'server_side_optimization', 'latex', 'natural_language_processing', 'scala', 'unreal_engine', 'mongodb', 'delphi', 'industrial_control_system', 'r', 'fpga', 'oracle', 'arduino', 'magento', 'ruby', 'nosql', 'flutter', 'xml', 'apache', 'sveltejs', 'devmail', 'ecommerce_development', 'opendata', 'Hadoop', 'yandex_api', 'game_monetization', 'ror', 'graph_design', 'scada', 'mobile_monetization', 'sqlite', 'accessibility', 'saas', 'helpdesk', 'matlab', 'julia', 'aws', 'data_recovery', 'erlang', 'angular', 'osx_dev', 'dns', 'dart', 'vector_graphics', 'asp', 'domains', 'cvs', 'asterisk', 'iis', 'it_monetization', 'localization', 'objectivec', 'IPFS', 'jquery', 'lisp', 'arvrdev', 'powershell', 'd', 'conversion', 'animation', 'webgl', 'wordpress', 'elm', 'qt_software', 'google_api', 'groovy_grails', 'Sailfish_dev', 'Atlassian', 'desktop_environment', 'game_testing', 'mysql', 'ecm', 'cms', 'Xamarin', 'haskell', 'prototyping', 'sw', 'django', 'gradle', 'billing', 'tdd', 'openshift', 'canvas', 'map_api', 'vuejs', 'data_compression', 'tizen_dev', 'iptv', 'mono', 'labview', 'perl', 'AJAX', 'ms_access', 'gpgpu', 'infolust', 'microformats', 'facebook_api', 'vba', 'twitter_api', 'twisted', 'phalcon', 'joomla', 'action_script', 'flex', 'gtk', 'meteorjs', 'iconoskaz', 'cobol', 'cocoa', 'fortran', 'uml', 'codeigniter', 'prolog', 'mercurial', 'drupal', 'wp_dev', 'smallbasic', 'webassembly', 'cubrid', 'fido', 'bada_dev', 'cgi', 'extjs', 'zend_framework', 'typography', 'UEFI', 'geo_systems', 'vim', 'creative_commons', 'modx', 'derbyjs', 'xcode', 'greasemonkey', 'i2p', 'flash_platform', 'coffeescript', 'fsharp', 'clojure', 'puppet', 'forth', 'processing_lang', 'firebird', 'javame_dev', 'cakephp', 'google_cloud_vision_api', 'kohanaphp', 'elixirphoenix', 'eclipse', 'xslt', 'smalltalk', 'googlecloud', 'gae', 'mootools', 'emacs', 'flask', 'gwt', 'web_monetization', 'circuit-design', 'office365dev', 'haxe', 'doctrine', 'typo3', 'regex', 'solidity', 'brainfuck', 'sphinx', 'san', 'vk_api', 'ecommerce'}
ืคึฟืึทืจ ืคืึทืจืืืืึทื, ืื ืืขืขืงืืืื ืกืขืงืฉืึทื ื ืงืืงื ืืขืจ ืืึทืฉืืืื:
hubs_gt = {'popular_science', 'history', 'soft', 'lifehacks', 'health', 'finance', 'artificial_intelligence', 'itcompanies', 'DIY', 'energy', 'transport', 'gadgets', 'social_networks', 'space', 'futurenow', 'it_bigraphy', 'antikvariat', 'games', 'hardware', 'learning_languages', 'urban', 'brain', 'internet_of_things', 'easyelectronics', 'cellular', 'physics', 'cryptocurrency', 'interviews', 'biotech', 'network_hardware', 'autogadgets', 'lasers', 'sound', 'home_automation', 'smartphones', 'statistics', 'robot', 'cpu', 'video_tech', 'Ecology', 'presentation', 'desktops', 'wearable_electronics', 'quantum', 'notebooks', 'cyberpunk', 'Peripheral', 'demoscene', 'copyright', 'astronomy', 'arvr', 'medgadgets', '3d-printers', 'Chemistry', 'storages', 'sci-fi', 'logic_games', 'office', 'tablets', 'displays', 'video_conferencing', 'videocards', 'photo', 'multicopters', 'supercomputers', 'telemedicine', 'cybersport', 'nano', 'crowdsourcing', 'infographics'}
ื ื ืืืืขืจืืง ืข ืืืืข ื ืืฒื ืข ื ืืขืฐืข ื ืืคืืขืืื ื ืืื ืฃ ืืข ืจ ืืขืืืข ืจ ืืืคื . ืืืฆื ืขืก ืืื ืืจืื ื ืฆื ืฉืจืืึทืื ืึท ืคืื ืงืฆืืข ืืืึธืก ืงืขืจื ืื ืจืขืืืืืึทื ืฆื ืืขืจ ืึทืจืืืงื ืืขืืขืจื ืฆื ืืขืขืงืืืืขืก ืึธืืขืจ ืึท ืคึผืจืึธืคืื ืืึทื.
def is_geektimes(hubs: List) -> bool:
return len(set(hubs) & hubs_gt) > 0
def is_geektimes_only(hubs: List) -> bool:
return is_geektimes(hubs) is True and is_profile(hubs) is False
def is_profile(hubs: List) -> bool:
return len(set(hubs) & hubs_profile) > 0
ืขื ืืขืืข ืคืึทื ืืงืฉืึทื ื ืืขื ืขื ืืขืืืื ืคึฟืึทืจ ืื ืืขืจืข ืกืขืงืฉืึทื ื ("ืึทื ืืืืืงืืื ื", "ืึทืืืื ืืกืืจืึทืฆืืข", ืืื"ื ื).
ืคึผืจืึทืกืขืกืื ื
ืขืก ืืื ืฆืืื ืฆื ืึธื ืืืืื ืึทื ืึทืืืืืื ื. ืืืจ ืืึธืื ืื ืืึทืืึทืกืขื ืืื ืคึผืจืึธืฆืขืก ืื ืืึทื ืืึทืื.
def to_list(s: str) -> List[str]:
# "user:popular_science+astronomy" => [popular_science, astronomy]
return s.split(':')[1].split('+')
def to_date(dt: datetime) -> datetime.date:
return dt.date()
df = pd.read_csv("habr_2019.csv", sep=',', encoding='utf-8', error_bad_lines=True, quotechar='"', comment='#')
dates = pd.to_datetime(df['datetime'], format='%Y-%m-%dT%H:%MZ')
dates += datetime.timedelta(hours=3)
df['date'] = dates.map(to_date, na_action=None)
hubs = df["hubs"].map(to_list, na_action=None)
df['hubs'] = hubs
df['is_profile'] = hubs.map(is_profile, na_action=None)
df['is_geektimes'] = hubs.map(is_geektimes, na_action=None)
df['is_geektimes_only'] = hubs.map(is_geektimes_only, na_action=None)
df['is_admin'] = hubs.map(is_admin, na_action=None)
df['is_develop'] = hubs.map(is_develop, na_action=None)
ืืืฆื ืืืจ ืงืขื ืขื ืืจืืคึผืข ืื ืืึทืื ืืืจื ืืึธื ืืื ืืืืึทืื ืื ื ืืืขืจ ืคืื ืืืืกืืืืขืก ืคึฟืึทืจ ืคืึทืจืฉืืืขื ืข ืืึทืื.
g = df.groupby(['date'])
days_count = g.size().reset_index(name='counts')
year_days = days_count['date'].values
grouped = g.sum().reset_index()
profile_per_day_avg = grouped['is_profile'].rolling(window=20, min_periods=1).mean()
geektimes_per_day_avg = grouped['is_geektimes'].rolling(window=20, min_periods=1).mean()
geektimesonly_per_day_avg = grouped['is_geektimes_only'].rolling(window=20, min_periods=1).mean()
admin_per_day_avg = grouped['is_admin'].rolling(window=20, min_periods=1).mean()
develop_per_day_avg = grouped['is_develop'].rolling(window=20, min_periods=1).mean()
ืืืจ ืืืืึทืื ืื ื ืืืขืจ ืคืื ืืจืืืก ืึทืจืืืงืืขื ื ืืฆื Matplotlib:
ืืื ืฆืขืืืืื ืื ืึทืจืืืงืืขื "ืืขืขืงืืืืขืก" ืืื "ืืขืขืงืืืืขืก ืืืืื" ืืื ืื ืืฉืึทืจื, ืืืืึทื ืึทื ืึทืจืืืงื ืงืขื ืขื ืืขืืขืจื ืฆื ืืืืืข ืกืขืงืฉืึทื ื ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื (ืืืฉื, "DIY" + "ืืืงืจืึธืงืึธื ืืจืึธืืืขืจืก" + "C ++"). ืืื ืืขืืืืื ื ืื ืืึทืฆืืืืขื ืื ื "ืคึผืจืึธืคืื" ืฆื ืืืืืคึผืื ืงื ืคึผืจืึธืคืื ืึทืจืืืงืืขื ืืืืฃ ืืขื ืคึผืืึทืฅ, ืืึธืืฉ ืืึธืืขืจ ืื ืขื ืืืืฉ ืืขืจืืื ืคึผืจืึธืคืื ืคึฟืึทืจ ืืขื ืืื ื ืืฉื ืืขืืึทืืจืข ืจืืืืืง.
ืืื ืื ืคืจืืขืจืืืงืข ืืืื ืืืจ ืืขืคืจืขืื ืืืขืื ืื "ืืขืขืงืืืืข ืืืืจืงืื ื" ืคึฟืึทืจืืื ืื ืืื ืื ืขื ืืขืจืื ื ืืื ืื ืฆืึธืืื ื ืึผืืืื ืคึฟืึทืจ ืึทืจืืืงืืขื ืคึฟืึทืจ ืืขืขืงืืืืขืก ืกืืึทืจืืื ื ืืขื ืืืืขืจ. ืืึธืืืจ ืืืืึทืื ืื ืืขืขืงืืืื ืึทืจืืืงืืขื ืกืขืคึผืขืจืึทืืื:
df_gt = df[(df['is_geektimes_only'] == True)]
group_gt = df_gt.groupby(['date'])
days_count_gt = group_gt.size().reset_index(name='counts')
grouped = group_gt.sum().reset_index()
year_days_gt = days_count_gt['date'].values
view_gt_per_day_avg = grouped['views'].rolling(window=20, min_periods=1).mean()
ืืขืจ ืจืขืืืืืึทื ืืื ืืฉืืงืึทืืืข. ืื ืืขืจื ืขื ืืขืจื ืคืึทืจืืขืืืขื ืืฉ ืคืื ืงืืงื ืคืื ืืขืขืงืืืื ืึทืจืืืงืืขื ืฆื ืื ืืึทื ืฅ ืืื ืขืจืืขืฅ ืึทืจืื 1:5. ืึธืืขืจ ืืึธืืฉ ืื ืืึทื ืฅ ื ืืืขืจ ืคืื ืงืืงื ืคืืึทืงืืฉืืืืืื ืืืืขืจืงื, ืื ืืืืืื ื ืคืื "ืคืึทืจืืืืึทืืื ื" ืึทืจืืืงืืขื ืคืืจืืืืื ืืื ืืขืขืจืขื ืืขืจ ืืขืืืืงืขืจ ืืืจืื.
ืืืจ ืงืขื ื ืืืื ืืึทืืขืจืงื ืึทื ืื ืืึทื ืฅ ื ืืืขืจ ืคืื ืงืืงื ืคืื ืึทืจืืืงืืขื ืืื ืื "ืืขืขืงืืืืขืก" ืึธืคึผืืืืืื ื ื ืึธื ืืขืคืืื ื ืึธื ืืฉืึทื ืืื ื ืื ืึผืืืื, ืึธืืขืจ "ืืืจื ืืืื", ืืื ื ืื ืืขืจ ืืื 5% ืคืื ืื ืืึทื ืฅ ืืืึทืืืขืก.
ืขืก ืืื ืืฉืืงืึทืืืข ืฆื ืงืืงื ืืื ืื ืืืจืืฉื ืืืืขื ื ืืืขืจ ืคืื ืงืืงื ืคึผืขืจ ืึทืจืืืงื:
ืคึฟืึทืจ "ืคึฟืึทืจืืืืึทืืื ื" ืึทืจืืืงืืขื ืขืก ืืื ืืืขืื 40% ืืขืืขืจ ืืืจืืฉื ืืืืขื. ืืึธืก ืืื ืืืกืืึธืืข ื ืืฉื ืืืืืฉ. ืืขืจ ืืืจืืคืึทื ืืื ืื ืึธื ืืืื ืคืื ืืคืจืื ืืื ืืืงืืึธืจ ืฆื ืืืจ, ืืคึฟืฉืจ ืืึธืก ืืื ืืืึธืก ืืขืืจืืคื, ืึธืืขืจ ืขืก ืืื ืึท ืืื ืคืื ืคึผืึทืจืกืื ื ืืขืืช, ืึธืืขืจ ืืคึฟืฉืจ ืืืื ืขืจ ืคืื ืื ืืืืจืื ืคืื ืืขืขืงืืืืข ืืื ืืขืืื ืืขื ืืืืฃ ืืืึทืงืึทืฆืืข;).
ืืืจื ืืขื ืืืขื, ืื ืืจืึทืคืืง ืืืืืื ืฆืืืื ืืขืจ ืืืืขืจืงื ืคึผืืงืก ืืื ืื ื ืืืขืจ ืคืื ืงืืงื ืคืื ืึทืจืืืงืืขื - ืื ื ืื ืืึธืจ ืืื ืืืึท ืืึธืืืืืึทืก.
Hubs
ืืื ืก ืืึทื ืืืืฃ ืฆื ืื ืฆืืืขืืืื ืึทื ืึทืืืกืืก ืคืื ืืึทืื. ืืื ืก ืจืฉืืื ืื ืฉืคึผืืฅ 20 ืืึทืื ืืืื ื ืืืขืจ ืคืื ืงืืงื:
hubs_info = []
for hub_name in hubs_all:
mask = df['hubs'].apply(lambda x: hub_name in x)
df_hub = df[mask]
count, views = df_hub.shape[0], df_hub['views'].sum()
hubs_info.append((hub_name, count, views))
# Draw hubs
hubs_top = sorted(hubs_info, key=lambda v: v[2], reverse=True)[:20]
top_views = list(map(lambda x: x[2], hubs_top))
top_names = list(map(lambda x: x[0], hubs_top))
plt.rcParams["figure.figsize"] = (8, 6)
plt.bar(range(0, len(top_views)), top_views)
plt.xticks(range(0, len(top_names)), top_names, rotation=90)
plt.ticklabel_format(style='plain', axis='y')
plt.tight_layout()
plt.show()
ืืขืจ ืจืขืืืืืึทื:
ืกืึทืคึผืจืืืืื ืืื, ืื ืืขืจืกื ืคืึธืืงืก ืืึทื ืืื ืืขืจืืื ืขื ืคืื ืงืืงื ืืื "ืืื ืคึฟืึธืจืืึทืฆืืข ืืืืขืจืืืื"; ืื ืฉืคึผืืฅ 5 ืคืืจืขืจ ืืืื ืึทืจืืึทื ืืขืจืขืื ื "ืคึผืจืึธืืจืึทืืืื ื" ืืื "ืคืึธืืงืก ืืืืกื ืฉืึทืคึฟื".
ืึทื ืืืืึธืคึผ ืึทืงืืึทืคึผืืื ืืืง ืืื ืงืึทืงืึทืึธ.
ืืื ืืืขื ืืึธืื ืืืจ ืึท ืกืื, ืื ืฉืคึผืืฅ ืืึทืื ืงืขื ืขื ืืืื ืืืื ืืขืืขื
ืฉืึทืฅ
ืืื ืืขืกืึธืฃ, ืื ืฆืืืขืืืื ืจืึทื ื. ืืื ืืึทื ืึทื ืึทืืืกืืก ืืึทืื, ืืืจ ืงืขื ืขื ืืืืึทืื ืื ืืขืจืกื ืคืึธืืงืก ืึทืจืืืงืืขื ืคึฟืึทืจ ืื ืืขืจืกื ืคืึธืืงืก ืืึทืื ืคึฟืึทืจ ืืขื ืืึธืจ 2019.
ืืื ืคึฟืึธืจืืึทืฆืืข ืืืืขืจืืืื
ืืื ืึทืืื ืืึธื ืืื ืึท ืืึธืจ ื ืืฉื ืืขืึทืจืืขื ืืื ืกืืขืจืืึทื ืง 304000 ืงืืงื, 599 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +457.0/-14.0ืคืืจืืืืจืคื ืงืืื ืืืื ืืึทืืื ืืขื ืขื ืึท ืืืขืจืืคืื ืืงืืจ ืคืื ืคึผืขืจืืขื ืืขื ืืื ืคึฟืึธืจืืึทืฆืืข 232000 ืงืืงื, 147 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +75.0/-11.0ืคืจืึทืืืกืืขืจืก ืืื ืืืืืืึทื ืกืืื ืึทืืฉืขืจื - ืึทืืฅ ืืื ืืืืขืจ ืฉืืขืื 176000 ืงืืงื, 778 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +356.0/-0.0ืืื Megafon ืคืืจืืจืขื ื ืืืืฃ ืจืืจืขืืืืืง ืกืึทืืกืงืจืืคึผืฉืึทื ื 166000 ืงืืงื, 676 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +624.0/-2.0ืืึทืงืื ื VK, ืฆืืืื-ืคืึทืงืืึธืจ ืึธืืขื ืืึทืงืืืฉืึทื ืืืขื ื ืืฉื ืจืึทืืขืืืขื 148000 ืงืืงื, 332 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +124.0/-17.0ืืื ืืขืจ ืืืขืืขืจืขืจ ืืขืืคึผืก ืืืจ ืืืืคึผื 132000 ืงืืงื, 321 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +246.0/-19.0ืืจืขืกืื ืืึทืืคึผ ืืื ืืขืฉืืืืข: 2,7 ืืืืืึธื ืึทืงืึทืื ืฅ, ืคืื ืืืึธืก 773 ืืืืืึธื ืืขื ืขื ืืื ืฆืืง. 123000 ืงืืงื, 154 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +86.0/-5.0ืืึธื ืืง, ืืืจ 'ืจืข ืืึธืจื ืื ืืื ืืขืจื ืขื 121000 ืงืืงื, 933 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +392.0/-83.0'ืืึธืืื ืืื ืืึทืื' ืืื ืคืจืื, ืึธื SMS ืึธืืขืจ ืจืขืืืกืืจืึทืฆืืข. ืืขืืึทืืืก ืคืื ืฉืืืื ืื ืคืื Megafon 114000 ืงืืงื, 478 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +488.0/-8.0ืคึผืึธืจื ืกืงืึทื ื ืขืจ ืืื ืืืื Rostelecom ืคึผืขืจืืขื ืืขื ืืฉืืื 111000 ืงืืงื, 194 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +300.0/-8.0
ืคึผืจืึธืืจืึทืืืื ื
ืืืขืื ืืืื ืืืืจ 167000 ืงืืงื, 249 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +239.0/-33.0ืื ืืืืขืจ ืืืจ ืคืึทืจืืขืกื OOP, ืื ืืขืกืขืจ ืคึฟืึทืจ ืืืจ ืืื ืืืื ืืืืื 129000 ืงืืงื, 1271 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +131.0/-63.0ืคืืจืืืืก ืขืืืขืจ ืืขืืืขืืึธืคึผืขืจืก ืงืขื ืขื ื ืืฉื ืืึทืงืืืขื ืึท ืึทืจืืขื 119000 ืงืืงื, 901 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +151.0/-14.0ืืื ืืึธืก ื ืื ืงืืื ืึธืจื ืคึฟืึทืจ ืึทืื ืืขื ืืฉื? ืคึผืจืึธืืจืึทืืืื ื ื ืึธื ืคืื ืฃ ืืื ืืจืืืกืืง 116000 ืงืืงื, 649 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +222.0/-16.0ื ืื ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทืื ืืขื ืขื ืฉืืื ืืึธืจื ืืื ืืืขืจ ืงืฉืจ ืืื ืคืึทืงื 106000 ืงืืงื, 764 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +164.0/-52.0ืืืึธืก ืืื ืืขืืขืจื ื ืื ืฉืืืขืจ ืืืขื (ืืืืขืจ 30 ืืึธืจ ืืื ืืืืืืืืืจื ืึทื ืืืืืงืืื ื) 101000 ืงืืงื, 128 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +178.0/-9.0ืื ืจืึทืจืึทืกื ืืื ืืขืจืกื ืืืึทืขืจ ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทืื 82900 ืงืืงื, 119 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +38.0/-10.0ืืืืฃ ืคืื ืจืขืคึฟืขืจืึทืื ืืืืฃ ืืืฉืึทืืืึทืกืงืจืืคึผื ืืื Node.js ืืื KPI 80300 ืงืืงื, 14 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +34.0/-2.0IT ืืขืจืืื ืขื ื ืืฆื ืืขื ืืืึทืฉืคึผืื ืคืื ืืขื ืคึผืจืึธืฆืขืก ืคืื ืืจืึธืืื ื ืคึผืึทืืืืืึธืื 78000 ืงืืงื, 86 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +84.0/-14.0256 ืฉืืจืืช ืคืื ื ืึทืงืขื C ++: ืฉืจืืืื ืึท ืฉืืจืึทื ืืจืืืกืขืจ ืคึฟืื ืงืจืึทืฆื ืืื ืึท ืืืกื ืฉืขื 77600 ืงืืงื, 124 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +241.0/-0.0
ืคืึธืืงืก ืืืืกื ืฉืึทืคึฟื
ืืืึธืก ืื ืืืืืื ืขืจ ืกืืึธืืงื: ืืืืขืืืืื ืืืขื ืคืืืขืจืึทืจืื 236000 ืงืืงื, 123 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +119.0/-9.0ืกืกืืขื ืืืกืฅ ืืึธืื ืืขืคึฟืื ืขื ืื ืึธืืืืึทืกื ืืขืืขืืืง ืืืขืจืืจืึทื ืืืืฃ ืืขืจ ืขืจื 234000 ืงืืงื, 212 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +82.0/-14.0ืืขืืขืืืืืืข ืกืขืจืืข 'ืืฉืขืจื ืึธืืื': ืืืื ืืื ืืจืึทืืื 173000 ืงืืงื, 803 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +164.0/-25.0ื 12-ืืึธืจ-ืึทืื ืืื ืืืืืฉืขืจ ืืื ืืืจืืืขืงืึธืื ืึท ืืึธืืขืจ ืคืืกืืึธื ืจืขืึทืงืฆืืข ืืื ืืืื ืืืื ืืึทืืึธืจืึทืืึธืจืืข. 145000 ืงืืงื, 280 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +126.0/-29.0ืื ืืขืฉื ืคืื ืืขืจ ืฆืืืืฉ ืจืืื ืืื ืื ืืขืคืืืขื ืข ืงืจืขื ืงื 134000 ืงืืงื, 244 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +217.0/-1.0ืืึทืื ืขืก ืืืืขืจ! ืืึธืืขืจื ืืึทืืืึธืืข ืขื ืืึทื ืกืืึทื ื 134000 ืงืืงื, 235 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +377.0/-1.0ืื ืืืืืืืืืจื ืคึฟืึทืจ ืื ืืึธืขืื ื 737 ืืึทืงืก ืืื ืืขืืืขื ืืขืฉืจืืื ืืืจื ืึทืืฆืึธืจืกืขืจืก ืืืึธืก ืคืึทืจืืื ืขื $ 9 ืคึผืขืจ ืฉืขื. 126000 ืงืืงื, 560 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +153.0/-6.0ืื ืืืืกื ื ืืฉื ืืืื ื ืขืจืืืขื, ืืึธื ื ืื ืงืึทืืืฉ, ืืึธื ื ืื ืืืขืจืจืืึทืกื: ืื ืืขืฉืืืืข ืคืื โโโโืึท ืืจืึทืืขืืืข 121000 ืงืืงื, 384 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +242.0/-4.0ืืึทืืืขืืึทืืืฉืึทื ื ืืึธืื ืืืกืงืึทืืืขืจื ืื ืฉืืืืืขืกืืืง ืืืขื ืฆื ืืขืจื ื ืืืขืจื 108000 ืงืืงื, 222 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +173.0/-10.0ื ืื ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทืื ืืขื ืขื ืฉืืื ืืึธืจื ืืื ืืืขืจ ืงืฉืจ ืืื ืคืึทืงื 106000 ืงืืงื, 764 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +164.0/-52.0
ืงืึทืจืืขืจืข
ืืื ืึทืืื ืืึธื ืืื ืึท ืืึธืจ ื ืืฉื ืืขืึทืจืืขื ืืื ืกืืขืจืืึทื ืง 304000 ืงืืงื, 599 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +457.0/-14.0ืืื ืฆืขืฉืืขืจื ืืขืืืขืืึธืคึผืขืจืก 'ืืขืื ืืื ืืืื ืงืึธื ืืืจืืืื ืืื ืืื ืืื ื ืขืืขืืืืง 187000 ืงืืงื, 21 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +37.0/-3.0ืืื ืคืื ืึทื ืืืืืงืืื ื 179000 ืงืืงื, 668 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +315.0/-60.0ืืืขืื ืืืื ืืืืจ 167000 ืงืืงื, 249 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +239.0/-33.0ืฆืืจืืงืฆืืขื ืืื ืืื 22 158000 ืงืืงื, 927 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +259.0/-100.0ืืื ืฆื ืืืืฉื ืึท ืืืื ืฆืืืขืืข ืืื ืืืื ืืืขืจืงืคึผืืืืก ืึธื ืคืืืขืจื? 139000 ืงืืงื, 762 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +200.0/-20.0ืืืืขืฉ ืืื ืจืืกืืฉ 128000 ืงืืงื, 612 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +480.0/-33.0ืคืืจืืืืก ืขืืืขืจ ืืขืืืขืืึธืคึผืขืจืก ืงืขื ืขื ื ืืฉื ืืึทืงืืืขื ืึท ืึทืจืืขื 119000 ืงืืงื, 901 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +151.0/-14.0'ืืจืขื ื' ืขืืคึผืืืืื: ืืื ืขืก ืึท ืืืขื ืืืืก? 117000 ืงืืงื, 398 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +210.0/-14.0ืืื ืืึธืก ื ืื ืงืืื ืึธืจื ืคึฟืึทืจ ืึทืื ืืขื ืืฉื? ืคึผืจืึธืืจืึทืืืื ื ื ืึธื ืคืื ืฃ ืืื ืืจืืืกืืง 116000 ืงืืงื, 649 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +222.0/-16.0
ืืขืกืขืฆ - ืืขืืื ื ืืื ืขืก
ืคืจืึทืืืกืืขืจืก ืืื ืืืืืืึทื ืกืืื ืึทืืฉืขืจื - ืึทืืฅ ืืื ืืืืขืจ ืฉืืขืื 176000 ืงืืงื, 778 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +356.0/-0.0ืืื Megafon ืคืืจืืจืขื ื ืืืืฃ ืจืืจืขืืืืืง ืกืึทืืกืงืจืืคึผืฉืึทื ื 166000 ืงืืงื, 676 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +624.0/-2.0ืืืืขืฉ ืืื ืจืืกืืฉ 128000 ืงืืงื, 612 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +480.0/-33.0'ืืึธืืื ืืื ืืึทืื' ืืื ืคืจืื, ืึธื SMS ืึธืืขืจ ืจืขืืืกืืจืึทืฆืืข. ืืขืืึทืืืก ืคืื ืฉืืืื ืื ืคืื Megafon 114000 ืงืืงื, 478 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +488.0/-8.0ืืื ืื ืงืึทืืึทื ืืืืืืจืืืขืื ืืขื ืขื ืืจืืื ื ืฆื ืคืึทืจืืขืงื ืืืืขืจ ืืืจืืคืึทื ืฆื ืื ืกืืจืืืขื ื ืื ืืึทืืืืึทืื 111000 ืงืืงื, 77 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +122.0/-14.0ืืื ืคึผืจืึธืืึธื ืืึทืื ืืื ืืคืืขืฉืืขืื ืืื ืจืืกืืึทื ื 102000 ืงืืงื, 398 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +418.0/-7.0ืื ืืขืืขืฅ ืืืืฃ ืืคืืขืืื ืืขืจืืงืืื ืคืื ืื ืจืื ืขื ืืื ืื ืืขื ืืืขื ืืืจื ืื ืฉืืึทื ืืืืึท ืืื ืืจืื ืจืืืื ืื 88200 ืงืืงื, 878 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +73.0/-18.0ืืื ืึท ืคึผืจืึธืืจืึทืืืกื ืืืืกืืขืจืืืืืื ืึท ืืึทื ืง ืืื ืืืืขื ืขื ืงืึทื ืืจืึทืงืฅ 87200 ืงืืงื, 611 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +166.0/-9.0ืืขืจ ืืื ืืกืืขืจืืื ืคืื ืืขืืขืงืึธื ืืื ืืึทืกืข ืงืึธืืื ืืงืึทืฆืืข ืืืืืืืืงื ืื ืจืขืืขื ืื ื ืืืืฃ ืืืึธืืืจื ืื RuNet 83600 ืงืืงื, 364 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +79.0/-9.0ื ืืืืืืื ืขื ืืคืขืจ ืฆื ืืขื ืืึทืืขืจืงืื ื, ืืื ืืขืืื ื ืืื ืึท ืืืกื ืืืขืื ืื ืืขืื ืคืื ืคึผืจืึทืืืืืืขืจื ืืื ืื ืจืืกืืฉืข ืคืขืืขืจืืืฉืึทื 74700 ืงืืงื, 389 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +290.0/-1.0
ืืืขื ืึทื ืืืืืงืืื ื
ืืื ืืึธืก ื ืื ืงืืื ืึธืจื ืคึฟืึทืจ ืึทืื ืืขื ืืฉื? ืคึผืจืึธืืจืึทืืืื ื ื ืึธื ืคืื ืฃ ืืื ืืจืืืกืืง 116000 ืงืืงื, 649 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +222.0/-16.0ืืื ืฆื ืืึทืื ืืืขืืกืืืขืก ืืื 2019 110000 ืงืืงื, 278 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +233.0/-11.0ืืขืจื ืขื ืืึธืงืงืขืจ ืืืื 1: ืืึทืกืืงืก 91300 ืงืืงื, 24 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +52.0/-10.0ืืืืฃ ืคืื ืจืขืคึฟืขืจืึทืื ืืืืฃ ืืืฉืึทืืืึทืกืงืจืืคึผื ืืื Node.js ืืื KPI 80300 ืงืืงื, 14 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +34.0/-2.0ืืจืึทืื ื ืืืึทืกืืึท ืืื ืืืื ืืขืจืฆืืืืื ืืขื ืืืขืื ืึทืคึผื ืืืืขืืคึผืึธืืขื ืกื 68900 ืงืืงื, 160 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +216.0/-3.0ืคืืจืฉืืื ื ืคืื ืืืฉืืื ืฅ ืืื ืฆืขืืจืืื. ืืืก ืืื ืืืฉืืืื ื ืืฉื ืึท ืื ืืขืจืกืขืงืฉืึทื ืคืื ืงืจืืืื, ืืึธื ืขืกืืื 65900 ืงืืงื, 223 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +138.0/-41.0ืคืืจืืืืก ืืืจ ืืึธื ื ืืฉื ืืืืกื ืืืื ืฆืืื ืฆื ืฉืึทืคึฟื ื ืืฉืข ืืืืึทืืืง ืืืขืืกืืืขืก 62700 ืงืืงื, 243 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +179.0/-13.0ืืึทืื ืึท ืืึธืืขืจื ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ืคึฟืื ืงืจืึทืฆื 62200 ืงืืงื, 122 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +56.0/-8.0ืืื ืงื ืืึธื ืคึฟืึทืจ Vue.js 60800 ืงืืงื, 133 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +77.0/-6.0ืคืืจืืืืก ืืื ืืึธืืขืจื ืืืขื ืึทื ืืืืืงืืื ื ืึทืืื ืงืึธืืคึผืืืฆืืจื? ืืืื 1 57700 ืงืืงื, 319 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +101.0/-6.0
ืืืง
ืืื ืฆืื ืกืืฃ, ืึผืื ืงืืื ืขืจ ืืึธื ื ืืฉื ืืึทืืืืืืงื, ืืืขื ืืื ืืขืื ืื ืจืึทื ื ืคืื ืืขืจ ืงืืขื ืกืืขืจ ืืืืืื ืืึทื "ืืืง". ืื ืึท ืืึธืจ ืขืก ืืื ืืจืืืก ืืืื ืขืจ ืืขืจ ืึทืจืืืงื, ืืืึธืก ืืืื "ืืืืืืืืืืฉ" ืึทืงืืึทืคึผืืื ืื ืขืจืฉืืขืจ ืฉืืจื ืคืื ืื ืจืึทื ื.
ื ืืฆื GtkApplication. librsvg ืจืขื ืืขืจืื ื ืคึฟืขืึดืงืืืื 1700 ืงืืงื, 9 ืืึทืืขืจืงืื ืืขื, ืฉืึทืฅ +9.0/-1.0
ืกืึธืฃ
ืขืก ืืืขื ืืืื ืงืืื ืืกืงื ื. ืืื ืืืืขื ืขื ืึทืืขืืขื.
ืืงืืจ: www.habr.com