ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ.
Π
ΠΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ.
ΠΡΠ΅ ΡΠ°Π· Π½Π°ΠΏΠΎΠΌΠ½Ρ, ΡΡΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΠΈ ΡΠ΅ΠΉΡΠΈΠ½Π³ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠ°ΠΉΠ΄Π΅ΡΡΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΎ Ρ Π³Π΄Π΅-ΡΠΎ Π½Π΅ ΠΎΡΠΈΠ±ΡΡ ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΠΏΡΠΎΠΏΡΡΡΠΈΠ». ΠΠΎ Π²ΡΠ΅ ΠΆΠ΅, Π΄ΡΠΌΠ°Ρ, ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ. ΠΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΡΠ½Π°ΡΠ°Π»Π° ΠΊ ΠΊΠΎΠ΄Ρ, ΠΊΠΎΠΌΡ ΡΡΠΎ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ, ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ.
Π‘Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ° ΡΡΠΈΡΡΠ²Π°Π»ΠΈΡΡ Π»ΠΈΡΡ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ², ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΈ ΡΠ΅ΠΉΡΠΈΠ½Π³ ΡΡΠ°ΡΠ΅ΠΉ. ΠΡΠΎ ΡΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ. ΠΠΎΡΠ° ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ ΡΠ°ΠΉΡΠ°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π΄Π΅Π»Π°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΌΠ΅Π½ΡΠ»Π°ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π° Β«Π‘++Β» Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ.
ΠΠ°ΡΡΠ΅Ρ ΡΡΠ°ΡΠ΅ΠΉ Π±ΡΠ» ΡΠ»ΡΡΡΠ΅Π½, ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Ρ Π°Π±Ρ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΡΡΠ°ΡΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½ΠΈΠΊ Π°Π²ΡΠΎΡΠ° ΠΈ Π΅Π³ΠΎ ΡΠ΅ΠΉΡΠΈΠ½Π³ (ΡΡΡ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΡΡΠΎ ΠΏΠΎΡΠΎΠΌ). ΠΠ°Π½Π½ΡΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π² 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 ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π½ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΊΠ°ΠΊ dictionary. Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠΆΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΌ.
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Β» + Β«ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡΒ» + Β«Π‘++Β»). ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«profileΒ» Ρ Π²ΡΠ΄Π΅Π»ΠΈΠ» ΠΏΡΠΎΡΠΈΠ»ΡΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ ΡΠ°ΠΉΡΠ°, Ρ
ΠΎΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½ profile Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΡΠΉ.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π»ΠΈ ΠΏΡΠΎ Β«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()
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ° ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅, ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΏΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°ΠΌ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Ρ
Π°Π± Β«ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΒ», ΡΠ°ΠΊΠΆΠ΅ Π² ΡΠΎΠΏ-5 Π»ΠΈΠ΄Π΅ΡΠΎΠ² Π²Ρ
ΠΎΠ΄ΡΡ Β«ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β» ΠΈ Β«Popular scienceΒ».
ΠΠ½ΡΠΈΡΠΎΠΏ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Gtk ΠΈ Cocoa.
Π‘ΠΊΠ°ΠΆΡ ΠΏΠΎ ΡΠ΅ΠΊΡΠ΅ΡΡ, ΡΠΎΠΏ Ρ
Π°Π±ΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈ
Π Π΅ΠΉΡΠΈΠ½Π³
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΎΠ±Π΅ΡΠ°Π½Π½ΡΠΉ ΡΠ΅ΠΉΡΠΈΠ½Π³. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° Ρ Π°Π±ΠΎΠ², ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ°ΠΌΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ ΠΏΠΎ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ Ρ Π°Π±Π°ΠΌ Π·Π° ΡΡΠΎΡ 2019 Π³ΠΎΠ΄.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
ΠΠ°ΠΊ Ρ Π³ΠΎΠ΄ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π» Π² Π‘Π±Π΅ΡΠ±Π°Π½ΠΊΠ΅ 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‘ΠΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ’ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ, Π±Π΅Π· ΡΠΌΡ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΡΠ΅Π½Π½ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡ ΠΠ΅Π³Π°ΡΠΎΠ½Π° 114000 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ², 478 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠ΅ΠΉΡΠΈΠ½Π³ +488.0/-8.0Π‘ΠΊΠ°Π½Π΅Ρ ΠΏΠΎΡΡΠΎΠ² Π² Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅ Π ΠΎΡΡΠ΅Π»Π΅ΠΊΠΎΠΌΠ° 111000 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ², 194 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠ΅ΠΉΡΠΈΠ½Π³ +300.0/-8.0
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ½Ρ 167000 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ², 249 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠ΅ΠΉΡΠΈΠ½Π³ +239.0/-33.0Π§Π΅ΠΌ Π±ΡΡΡΡΠ΅Π΅ Π²Ρ Π·Π°Π±ΡΠ΄Π΅ΡΠ΅ ΠΠΠ, ΡΠ΅ΠΌ Π»ΡΡΡΠ΅ Π΄Π»Ρ Π²Π°Ρ ΠΈ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ 129000 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ², 1271 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΡΠ΅ΠΉΡΠΈΠ½Π³ +131.0/-63.0ΠΠΎΡΠ΅ΠΌΡ Senior Developer’Ρ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΡΡΡΠΎΠΈΡΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ 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 Π² ΠΠΠ 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.012-Π»Π΅ΡΠ½ΠΈΠΉ ΠΏΠΎΠ΄ΡΠΎΡΡΠΎΠΊ ΠΏΡΠΎΠ²ΡΠ» ΡΠ΅Π°ΠΊΡΠΈΡ ΡΠ΄Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ΅Π·Π° Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ 145000 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ², 280 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠ΅ΠΉΡΠΈΠ½Π³ +126.0/-29.0Π‘ΠΊΠ°Π· ΠΎ ΡΠΏΠ»Π°Π²Π΅ Π ΠΎΠ·Π΅ ΠΈ ΠΎΡΠ²Π°Π»ΠΈΠ²ΡΠ΅ΠΉΡΡ ΠΠ ΠΠΠΊΠ΅ 134000 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ², 244 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠ΅ΠΉΡΠΈΠ½Π³ +217.0/-1.0Π£Π²Π΅Π»ΠΈΡΡ ΡΡΠΎ! Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ 134000 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ², 235 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠ΅ΠΉΡΠΈΠ½Π³ +377.0/-1.0Π‘ΠΎΡΡ Π΄Π»Ρ Boeing-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.0I ruin developers’ lives with my code reviews and I’m sorry 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ΠΠΎΡΠ΅ΠΌΡ Senior Developer’Ρ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΡΡΡΠΎΠΈΡΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ 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‘ΠΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ’ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ, Π±Π΅Π· ΡΠΌΡ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΡΠ΅Π½Π½ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡ ΠΠ΅Π³Π°ΡΠΎΠ½Π° 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ΠΠΈΠ½ΠΊΠΎΠΌΡΠ²ΡΠ·ΠΈ ΠΎΠ΄ΠΎΠ±ΡΠΈΠ»ΠΎ Π·Π°ΠΊΠΎΠ½ΠΎΠΏΡΠΎΠ΅ΠΊΡ ΠΎΠ± ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΡΠ½Π΅ΡΠ° 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ΠΠ·ΡΡΠ°Π΅ΠΌ Docker, ΡΠ°ΡΡΡ 1: ΠΎΡΠ½ΠΎΠ²Ρ 91300 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ², 24 ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠ΅ΠΉΡΠΈΠ½Π³ +52.0/-10.0ΠΡΡΡ Π»Π΅ΠΊΡΠΈΠΉ ΠΏΠΎ JavaScript ΠΈ Node.js Π² ΠΠΠ 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
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΡΠ΅ΠΌ ΠΏΡΠΈΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com