áá ááĽáá˘
Đ
áá°áá á¨á ááá ááááľ ááá¸á á°áá˝, ááŁáááą á ááŤáŠ áľá áá.
áľáłáľá˛ááľ áĽá á°á¨á á á°áŁáĄ áá áĽááłááá á áľáá ááľáłááľá
ááá á áááľ á¨ááľáĽ á áá áá¨á á¨áááᢠáĽáá˛áá á¨áá áŚáł áá áľá
á°áľ áĽááłáá°áŤá ááá á¨áá ááá áľááŁá ááľáľá á¨áááᢠáá á ááá ᣠá áľá°áłá˝ áá á°áááˇá áĽáŹ á áľáŁááᢠá ááááŞáŤ á áŽáą áĽááááŤáá, ááá
ááááľ á¨ááá¸á á¨ááááŞáŤáášá áááá˝ áááá áá˝áá.
á¨ááἠáá°áĽá°áĽ
á á°ááłá á¨ááááŞáŤ áľáŞáľ ááľáĽ á¨áĽááłáὠᣠá¨á áľá°áŤá¨áśá˝ áĽá á¨á˝áá á°á¨ááá˝ áĽááľ áĽáť áááľ ááľáĽ ááĽáˇáᢠáá ááľááá áĽáŠ áá, ááá áá á¨á áá ááľáĽáľáĽ áĽáŤááá˝á áĽáá˛áŤá°áá á ááá áľáááľá. á¨áášá ááĽáĽ áááá˝ ááá°áá°á ááá á áá áá ᣠáá á áŁá á áľá°áłá˝ áááá áĽáá˛áŤá°áá ááá áľáááłá ᣠáááłá ᣠâ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)
á á°ááŁáŠ áĽá á 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
áááá˝ áááá˝ ("áááľ", "á áľá°áłá°á", ááá°) á°ááłáłá á°ááŁáŤáľ á°á áá°áá.
á ááľáŤáľ áá
áá°áá°á ááááá ááá á áá ááᢠá¨ááἠáľáĽáľáĽá áĽáááááá áĽá ᨠhub áááĽá áĽááľáŹáłááá˘
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â + âmicrocontrollersâ + â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 á áŤáŁá˘ ááᢠááá áá á á ááá á¨áĽááłáá˝ áĽááľ á ááŤáľá°áá áááł á˛ááááĽáŁ âá¨ááááâ ááŁáĽáá˝ áĽááł á á°ááłáłá á°á¨á áá áááˇáá˘
áĽáá˛áá á âgeektimesâ ááá ááľáĽ áŤááľ á¨á˝ááá˝ á á ááá áĽááłáá˝ á ááá á°ááŚášá á¨áá¨áŠ á áá áĽáá°áá°á áἠáá á ᣠáá âá áááâ ᣠá¨á á
ááá áĽá´áśá˝ ᨠ5% áŤáá áá á˘
á áĽáŤááłááą ááŁáĽá á ááŤá á¨áĽááłáá˝ áĽááľ áááá¨áą á áľá°áłá˝ ááá˘
á "áááá" ááŁáĽáá˝ á¨á ááŤá á 40% áá°á áá. áá
ááááŁáľ á áŤáľáááá. á á¤ááŞá ááááŞáŤ áá áŤáá ááľááľ ááĽá ááá
á áá°áá ᣠááááŁáľ á¨ááá ፠áá ᣠááá á¨áá á¨áá°áá°á áľá
á°áľ áá ᣠááá ááááŁáľ á¨ááŞáłáááľ á°áŤá˛áá˝ á ááą ááĽá¨ááľ ááś ááá áá˝áá ;)
á áááŤá˝á áá ááŤá á á ááážá˝ áĽááłáá˝ áĽááľ ááľáĽ áááľ á°á¨á᪠ááá áŤáá˝á áŤáłáŤá - á¨á á˛áľ áááľ áĽá á¨áááŚáľ á áááľá˘
ááá¨ááľ
áá° á°áľáá á¨ááá¨áá˝ áľáá°á áĽáááľá˘ ááἠ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áą áá ááŞáá˝á âááŽááŤáááâ áĽá âáłáá áłáááľâá áŤáŤáľáłáá˘
á áá˛áśá Gtk áĽá Cocoa á ááááá˘
á ááľ ááľáĽá áĽáááááłáá, á¨áá°áááš ááá¨áá˝á ááłáŠ áá˝áá
á°á¨á á á°áŁáĽ
áĽá á áá¨á¨áťá, áá á¨á°ááŁá á°á¨á. ᨠhub áľááłá áá¨áá á áá áá á áá á ááľ 2019 á áŁá á°ááłá ááááľ ááá¨áá˝ á áŁá áłáá á¨áááľá á˝ááá˝ ááłá¨áľ áĽáá˝áááá˘
á¨áá¨á á°á áááľ
á Sberbank ááľáĽ áá ááľ á ááľ áĽáá´áľ áĽááłáá°áŤá 304000 áĽááłáá˝áŁ 599 á áľá°áŤá¨áśá˝áŁ á°á¨á +457.0/-14.0á¨á°áŁá áľáááľ á áááá˝ á áá á¨áá áá¨á ááá áá¸áᢠ232000 áĽááłáá˝áŁ 147 á áľá°áŤá¨áśá˝áŁ á°á¨á +75.0/-11.0á áá ááŁáŞáá˝ áĽá á˛ááłá ááááá˝ - ááá ááá á áŁá ááĽá áá 176000 áĽááłáá˝áŁ 778 á áľá°áŤá¨áśá˝áŁ á°á¨á +356.0/-0.0áááá á ááŁáá ááááŁáá˝ áá áĽáá´áľ áĽáá°á°áá á 166000 áĽááłáá˝áŁ 676 á áľá°áŤá¨áśá˝áŁ á°á¨á +624.0/-2.0áŞáŹá ááĽááᣠáŁá áááľ á°á¨á áá¨áá፠á áŤáľááᢠ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.0OOPá á áśá á˛á¨áąáŁ ááĽááľá áĽá áááŽááŤáá˝á á¨á°áťá ááááᢠ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.0á¨áľáá˝ áááľá áá°áľ ááłá á áá áá á¨á áᲠááá˝ 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
áĽáŤ
á Sberbank ááľáĽ áá ááľ á ááľ áĽáá´áľ áĽááłáá°áŤá 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 ááá áááᣠáá ááᢠᨠ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á¨á´ááŽá áĽá á¨áááá áĽááá áááľá´á áŠááľá ááá á áá áŤááá á¨áá á á˝áľáá 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 idempotency áłáŞáŽáš 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â á°á¨áá áĽá°áŁááᢠá á ááľ áááľ ááľáĽ áłáľáá Одна á¨á°á¨á á á°áŁáĄá á¨ááááŞáŤ ááľáá âá áŤáľ-á°áâ á¨áááá á˝ááá˘
GtkApplication á áá ááᢠlibrsvg á á°á¨ááá áŁá áŞáá˝ 1700 áĽááłáá˝áŁ 9 á áľá°áŤá¨áśá˝áŁ á°á¨á +9.0/-1.0
áá°áá°ááŤ
ááá áá°áá°á፠á áááá. áááŤá ááŁáĽ ááááá˘
ááá: hab.com