แฐแแ แฐแแแ .
ะ
แแแกแแช แแแแขแแ แแกแแแก แ แ แแแฎแแ, แแแแ แซแแแแแ แญแ แแก แฅแแแจแแ.
แแแแแ แแ แแฎแแ แจแแแแฎแกแแแแแ, แ แแ แกแขแแขแแกแขแแแ แแ แ แแแขแแแแ แแ แแ แแก แแคแแชแแแแฃแ แ, แแ แแ แแแฅแแก แ แแแแ แแแกแแแแแ แฃแแ แแแคแแ แแแชแแ. แแกแแแ แแ แแ แแก แแแ แแแขแแ แแแฃแแ, แ แแ แกแแแแ แจแแชแแแแ แแ แแแแแจแแแ แแ แ แแแ แแแแแแ แฉแ. แแแแ แแ แแแแแช, แแคแแฅแ แแ, แกแแแแขแแ แแกแ แแแแแแแแ. แฏแแ แแแแแ แแแแแฌแงแแแ, แแแกแแช แแก แแ แแแแขแแ แแกแแแก, แจแแฃแซแแแแ แแแแแขแแแแ แแแ แแแแ แแแแงแแคแแแแแแแ.
แแแแแชแแแแ แจแแแ แแแแแ
แแแ แกแแ แแก แแแ แแแ แแแ แกแแแจแ แแแแแแแแกแฌแแแแแฃแแ แแงแ แแฎแแแแ แแแฎแแแแแก, แแแแแแขแแ แแแแก แแ แกแขแแขแแแแแก แ แแแขแแแแแแแก แ แแแแแแแแ. แแก แฃแแแ แแแ แแแ, แแแแ แแ แฃแคแ แ แ แแฃแแ แแแแฎแแแแแแแก แแแกแแแก แกแแจแฃแแแแแแก แแ แแแซแแแแ. แแ แแ แแแแแแแแแแแแ แกแแแขแแก แแแแแขแฃแ แ แกแแฅแชแแแแ; แแก แกแแจแฃแแแแแแก แแแแชแแแ แแแแแแแแ แกแแแแแแ แกแแแแขแแ แแกแ แแแแแแ, แแแแแแแแแ, แแแฎแแ แ แแแแ แจแแแชแแแแ "C++" แแแแงแแคแแแแแแก แแแแฃแแแ แแแ แ แแแแแแแแ แฌแแแก แแแแแแแแแแแจแ.
แแแฃแแฏแแแแกแแแฃแแแ แกแขแแขแแแก แแแ แกแแ แ, แแฎแแ แแแ แฃแแแแก แฐแแแแแก, แ แแแแแแกแแช แแแฃแแแแแก แกแขแแขแแ, แแกแแแ แแแขแแ แแก แแแขแกแแฎแแแก แแ แแแก แ แแแขแแแแก (แแฅแแช แแแแ แ แกแแแแขแแ แแกแ แ แแแแก แแแแแแแแ แจแแแซแแแแ, แแแแ แแ แแก แแแแแแแแแแแ แแฅแแแแ). แแแแแชแแแแแ แแแแฎแแแ csv แคแแแแจแ, แ แแแแแแช แแกแ แแแแแแงแฃแ แแแ:
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'}
แจแแแแ แแแแกแแแแก, geektimes แกแแฅแชแแแแ แฃแคแ แ แแแแ แซแแแแแฃแแแ แแแแแแงแฃแ แแแ:
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'}
แแแ แฉแแแแแ แฐแแแแแ แแแแแ แแแแ แแงแ แแแชแฃแแ. แแฎแแ แแแแแแแ แแแฌแแ แ แคแฃแแฅแชแแ, แ แแแแแแช แแแ แฃแแแแก แจแแแแแก, แแฅแแแแ แแก แกแขแแขแแ geektimes-แก แแฃ แแ แแคแแแแก แฐแแแก.
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-แแก แแแแแงแแแแแแ:
แแ แแแแงแแแ แกแขแแขแแแแ โgeektimesโ แแ โgeektimes onlyโ แฉแแ แขแจแ, แ แแแแแ แกแขแแขแแ แจแแแซแแแแ แแแฃแแแแแแแก แแ แแแ แแแแงแแคแแแแแแก แแ แแแ แแฃแแแ (แแแแแแแแแ, โDIYโ + โแแแแ แแแแแขแ แแแแ แแแโ + โC++โ). แแ แแแแแแแงแแแ แแฆแแแจแแแ "แแ แแคแแแ" แกแแแขแแ แแ แแคแแแแก แกแขแแขแแแแแก แฎแแแแแกแแกแแแแแ, แแฃแแชแ แจแแกแแซแแแ แแแแแแกแฃแ แ แขแแ แแแแ แแ แแคแแแ แแ แแงแแก แแแแแ แกแฌแแ แ.
แฌแแแ แแแฌแแแจแ แฉแแแ แแแแแแฎแแ โgeektimes แแคแแฅแขแแกโ แจแแกแแฎแแ, แ แแแแแแช แแแแแแจแแ แแแฃแแแ แแ แแแคแฎแฃแแแแแ แแแฌแงแแแฃแแ geektimes แกแขแแขแแแแแกแแแแก แแแแแฎแแแก แฌแแกแแแแก แชแแแแแแแแกแแแ. แแแแแ แแแแแแแฉแแแแ geektimes-แแก แกแขแแขแแแแ แชแแแแ:
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()
แจแแแแแ แกแแแแขแแ แแกแแ. geektimes-แแก แกแขแแขแแแแแก แแแฎแแแแแก แกแแแแ แแฃแแ แแแแแคแแ แแแแ แฏแแแแแ แแ แแก แกแแแฆแแช 1:5. แแแแ แแ แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแแฎแแแแแก แกแแแ แแ แ แแแแแแแแ แจแแกแแแฉแแแแแ แแแ แงแแแแแ, "แแแกแแ แแแแ" แกแขแแขแแแแแก แงแฃแ แแแ แแแแฎแแแแแแ แแแแแ แแแแแแ แแแ แฉแ.
แแฅแแแ แแกแแแ แจแแแแซแแแแ แจแแแแฉแแแแ, แ แแ "geektimes" แแแแงแแคแแแแแแจแ แกแขแแขแแแแแก แแแฎแแแแแก แกแแแ แแ แ แแแแแแแแ แแแแแ แจแแแชแแ แแ แฌแแกแแแแก แจแแชแแแแก แจแแแแแ, แแแแ แแ "แแแแแแแแ", แแแแแแแ แแแแจแแแแแแแแแแก แแ แแฃแแแขแแก 5%-แแ.
แกแแแแขแแ แแกแแ แกแขแแขแแแก แแแฎแแแแแก แกแแจแฃแแแ แ แแแแแแแแ:
โแแแกแแ แแแแโ แกแขแแขแแแแแกแแแแก แแก แกแแจแฃแแแแแ แแแแฎแแแแแแ 40%-แแ แแแขแแ. แแก แแแแแ แแแกแแแแแ แ แแ แแ แแก. แแแ แแแแก แแแกแแฌแงแแกแจแ แแแ แชแฎแ แฉแแแแแแก แแแฃแแแแแ แแ, แแฅแแแ แแกแแช แแแฎแแ, แแ แแก แแ แแก แ แแฆแแช แแแแแแแแแแก แจแแชแแแแ, แแ แจแแกแแซแแแ geektimes-แแก แแ แ-แแ แแ แแแขแแ แ แจแแแแฃแแแแแจแ แฌแแแแแ ;).
แกแฎแแแแ แจแแ แแก, แแ แแคแแแแ แแแฉแแแแแแแ แกแขแแขแแแแแก แแแฎแแแแแก แ แแแแแแแแแก แแแแแ แแ แ โโแจแแกแแแฉแแแแ แแแแ - แกแแแฎแแแฌแแ แแ แแแแกแแก แแ แแแแแแแแ.
แฐแแแแแ
แแแแแแแแแ แฐแแแแแแก แแแแแ แแแฃแ แแแแแแแแ. แแแแแ แฉแแแแแแแแแแ แขแแ 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()
แจแแแแแ:
แแแกแแแแแ แแ, แ แแ แแแฎแแแแแก แแแแแกแแแ แแกแแ แงแแแแแแ แแแแฃแแแ แฃแแ แแแ แ แแงแ โแแแคแแ แแแชแแฃแแ แฃแกแแคแ แแฎแแแแโ, แแแแแ แแ แฎแฃแแแฃแแจแ แแกแแแ แแแฎแแแแแ โแแ แแแ แแแแ แแแโ แแ โแแแแฃแแแ แฃแแ แแแชแแแแ แแแโ.
แแแขแแขแแแ แแแแแแแก แแขแแก แแ แแแแแแก.
แกแแแแฃแแแแก แแแขแงแแแ, แขแแ แฐแแแแแแช แฉแแแก
แ แแแขแแแแ
แแ แแแแแก, แแแแแ แแแฃแแ แ แแแขแแแแ. แฐแแแแแแก แแแแแแแแก แแแแแชแแแแแแก แแแแแงแแแแแแ, แฉแแแ แจแแแแแซแแแ แแแแแแแฉแแแแ แงแแแแแแ แแแแฃแแแ แฃแแ แกแขแแขแแแแ แงแแแแแแ แแแแฃแแแ แฃแแ แฐแแแแแแกแแแแก แแ 2019 แฌแแแกแแแแก.
แฒแแคแแ แแแชแแแก แแแชแแ
แ แแแแ แแ แแแฃแจแแแแแ แกแแแ แแแแแจแ แแ แแ แฌแแแ 304000 แแแฎแแ, 599 แแแแแแขแแ แ, แจแแคแแกแแแ +457.0/-14.0แแแแแแแแแฃแแ แญแแแแแแ แแแแฃแ แแแ แแแ แแแ แแแคแแ แแแชแแแก แฆแแ แแแฃแแ แฌแงแแ แแ 232000 แแแฎแแ, 147 แแแแแแขแแ แ, แจแแคแแกแแแ +75.0/-11.0แแแฆแแแแแแ แแ แชแแคแ แฃแแ แฎแแแแแฌแแ แแแ - แงแแแแแคแแ แ แซแแแแแ แชแฃแแแ 176000 แแแฎแแ, 778 แแแแแแขแแ แ, แจแแคแแกแแแ +356.0/-0.0แ แแแแ แแแแฌแแ แแแแแคแแแ แแแแแแฃแ แแแแแฌแแ แแแแ 166000 แแแฎแแ, 676 แแแแแแขแแ แ, แจแแคแแกแแแ +624.0/-2.0VK-แแก แแแขแแฎแแ, แแ แคแแฅแขแแ แแแแ แแแแแแขแแคแแแแชแแ แแ แแแแแแแแก 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-แแก แแ แ แแแแกแขแ แแชแแแก แแแ แแจแ. แแแฆแแแแแแแก แแแขแแแแแ แแแแแคแแแแกแแแ 114000 แแแฎแแ, 478 แแแแแแขแแ แ, แจแแคแแกแแแ +488.0/-8.0แแแ แขแแก แกแแแแแ แ แแฅแแแแก แ แแกแขแแแแแแแแก แแแ แแ แแแแแ แแจแแ 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แแแฅแชแแแแแก แแฃแ แกแ JavaScript-แกแ แแ 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.012 แฌแแแก แแแแแ แแแ แแแ แแแฃแแ แจแแ แฌแงแแแก แ แแแฅแชแแ แกแแแฃแแแ แกแแฎแแจแ แแแแแ แแขแแ แแแจแ แฉแแแขแแ แ. 145000 แแแฎแแ, 280 แแแแแแขแแ แ, แจแแคแแกแแแ +126.0/-29.0แแฆแแแแ แ แจแแแแแแแแแก แแแ แแแแแก แแ แแแชแแแฃแแ แแ แแแแแก แจแแกแแฎแแ 134000 แแแฎแแ, 244 แแแแแแขแแ แ, แ แแแขแแแแ +217.0/-1.0แแแฎแแแ แฃแคแ แ แแแแ! แแแแแแแแ แแแ แแแคแแ แแแแแ 134000 แแแฎแแ, 235 แแแแแแขแแ แ, แจแแคแแกแแแ +377.0/-1.0Boeing 737 Max-แแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ แแแฌแแ แแแแ แจแแแแแแแแแแก แแแแ , แ แแแแแแแช แกแแแแจแ 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
แแแแแแแแแแแแแ IT-แจแ
แแแฆแแแแแแ แแ แชแแคแ แฃแแ แฎแแแแแฌแแ แแแ - แงแแแแแคแแ แ แซแแแแแ แชแฃแแแ 176000 แแแฎแแ, 778 แแแแแแขแแ แ, แจแแคแแกแแแ +356.0/-0.0แ แแแแ แแแแฌแแ แแแแแคแแแ แแแแแแฃแ แแแแแฌแแ แแแแ 166000 แแแฎแแ, 676 แแแแแแขแแ แ, แจแแคแแกแแแ +624.0/-2.0แแแแแแชแแ แ แฃแกแฃแแแ 128000 แแแฎแแ, 612 แแแแแแขแแ แ, แจแแคแแกแแแ +480.0/-33.0โแแแแแแฃแ แ แแแแขแแแขแโ แฃแคแแกแแ, SMS-แแก แแ แ แแแแกแขแ แแชแแแก แแแ แแจแ. แแแฆแแแแแแแก แแแขแแแแแ แแแแแคแแแแกแแแ 114000 แแแฎแแ, 478 แแแแแแขแแ แ, แจแแคแแกแแแ +488.0/-8.0แ แแแแ แชแแแแแแก แงแแแแฎแแแแก แฎแแแแกแฃแคแแแแ แแแคแแ แแก แกแแ แแแคแแแแขแแก แแแแแ แแแ 111000 แแแฎแแ, 77 แแแแแแขแแ แ, แจแแคแแกแแแ +122.0/-14.0แ แแแแ แแแแแแแแ Protonmail แ แฃแกแแแจแ 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แแแฅแชแแแแแก แแฃแ แกแ JavaScript-แกแ แแ Node.js-แแ KPI-แแ 80300 แแแฎแแ, 14 แแแแแแขแแ แ, แจแแคแแกแแแ +34.0/-2.0แกแขแแแแแ แ แแแกแแ แแ แแแกแ แแกแขแแ แแแแ API-แแก แแแแแขแแแชแแแก แจแแกแแฎแแ 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
GTK
แแ แแแแแก, แ แแ แแ แแแแก แแฌแงแแแแก, แแแแชแแ แงแแแแแแ แแแแแแแแ แแแแแฎแฃแแแแฃแ แฐแแแก "gtk"-แแก แ แแแขแแแแก. แแ แ แฌแแแแฌแแแจแ แแแแแแชแ แแ แ-แแ แแ แกแขแแขแแ, แ แแแแแแช แแกแแแ โแแแขแแแแขแฃแ แแโ แแแแแแแก แ แแแขแแแแแก แแแ แแแ แฎแแแก.
GtkApplication-แแก แแแแแงแแแแแแ. librsvg แ แแแแแ แแก แแแฎแแกแแแแแแแแแ 1700 แแแฎแแ, 9 แแแแแแขแแ แ, แจแแคแแกแแแ +9.0/-1.0
แแแกแแแแ
แแแกแแแแ แแ แแฅแแแแ. แแแแแชแแแ แงแแแแแก แแแแฎแแแก.
แฌแงแแ แ: www.habr.com