ãããããã«ã
Ð
äœãèµ·ãã£ãã®ãèå³ããã人ã®ããã«ãç¶ãã¯ã«ããã®äžã«ãããŸãã
çµ±èšãšæ Œä»ãã¯å
¬åŒã®ãã®ã§ã¯ãªãããšãããäžåºŠæãåºãããŠãã ãããç§ã¯ãããªãã€ã³ãµã€ããŒæ
å ±ãæã£ãŠããŸããã ãŸããã©ããã§ééããç¯ããããäœããèŠéãããããŠããªããšããä¿èšŒããããŸããã ã§ããããã§ãé¢çœããªã£ããšæããŸãã ãŸãã³ãŒãããå§ããŸãããããã«èå³ããªã人ã¯æåã®ã»ã¯ã·ã§ã³ãé£ã°ããŠãã ããã
ããŒã¿åé
ããŒãµãŒã®æåã®ããŒãžã§ã³ã§ã¯ãé²èŠ§æ°ãã³ã¡ã³ããèšäºã®è©äŸ¡ã®ã¿ãèæ ®ãããŠããŸããã ããã¯ãã§ã«åé¡ãããŸããããããè€éãªã¯ãšãªãäœæããããšã¯ã§ããŸããã ãµã€ãã®ããŒãå¥ã»ã¯ã·ã§ã³ãåæããŸããããã«ãããããšãã°ãã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 ã¯ã©ã¹ã¯ XNUMX ã€ã®ã¿ã°éã®æååãéžæããŸããç§ã¯ãããã䜿çšããŸãã
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'}
æ¯èŒã®ããã«ãgeektime ã»ã¯ã·ã§ã³ã¯ããæ§ããã«èŠããŸãã
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 ã®ã¿ãã«åããŠè¡šã«ããŸããã èšäºã¯åæã«äž¡æ¹ã®ã»ã¯ã·ã§ã³ã«å±ããããšãã§ããŸã (ããšãã°ãã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% äžåã£ãŠããŸãã ããã¯ããããé©ãã¹ãããšã§ã¯ãããŸããã XNUMX æåãã®å€±æã¯ç§ã«ã¯ããããããŸãããããããããããèµ·ãã£ãã®ããããçš®ã®è§£æãšã©ãŒãªã®ãããããã¯ãªã¿ã¯ã¿ã€ã ã®èè
ã® XNUMX 人ãäŒæãåã£ãã®ãããããŸãã ;)ã
ãšããã§ããã®ã°ã©ãã§ã¯ãèšäºã®é²èŠ§æ°ã®ããŒã¯ãããã«é¡è㪠XNUMX ã€ã®ããŒã¯ãã€ãŸã幎æ«å¹Žå§ãš XNUMX æã®äŒæã瀺ããŠããŸãã
ãã
ãçŽæã®ããã®åæã«ç§»ããŸãããã ãã¥ãŒæ°å¥ã«äžäœ 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 ã€ã®ãªãŒããŒã«ã¯ãããã°ã©ãã³ã°ããšãããã¥ã©ãŒãµã€ãšã³ã¹ããå«ãŸããŠããŸããã
Antitop 㯠Gtk ãš Cocoa ãå æããŸãã
ç§å¯ãæããŸããããããããèŠããŸã
è©äŸ¡
ãããŠæåŸã«ãçŽæãããè©äŸ¡ã§ãã ããåæããŒã¿ã䜿çšããŠã2019 幎ã«æã人æ°ã®ããããã®æã人æ°ã®ããèšäºã衚瀺ã§ããŸãã
æ å ±ã»ãã¥ãªãã£
ç§ããºãã«ãã³ã¯ã§XNUMX幎éåããªãã£ãçµç·¯ é²èŠ§æ° 304000ãã³ã¡ã³ãæ° 599ãè©äŸ¡ +457.0/-14.0å»æ£ãããã¹ããŒãé»çã¯è²Žéãªå人æ å ±æºã§ã é²èŠ§æ° 232000ãã³ã¡ã³ãæ° 147ãè©äŸ¡ +75.0/-11.0è©æ¬ºåž«ãšããžã¿ã«çœ²å â ãã¹ãŠãéåžžã«æªã é²èŠ§æ° 176000ãã³ã¡ã³ãæ° 778ãè©äŸ¡ +356.0/-0.0Megafon ãã¢ãã€ã« ãµãã¹ã¯ãªãã·ã§ã³ã§çãå°œããçµç·¯ é²èŠ§æ° 166000ãã³ã¡ã³ãæ° 676ãè©äŸ¡ +624.0/-2.0VKããããã³ã°ãããšäºèŠçŽ èªèšŒãä¿åãããªã é²èŠ§æ° 148000ãã³ã¡ã³ãæ° 332ãè©äŸ¡ +124.0/-17.0ãã©ãŠã¶ãåå¿å°äœã«ã©ã®ããã«åœ¹ç«ã€ã é²èŠ§æ° 132000ãã³ã¡ã³ãæ° 321ãè©äŸ¡ +246.0/-19.0å²äžæ倧ã®ãã³ã: 2,7 åã¢ã«ãŠã³ãããã®ãã¡ 773 å XNUMX äžãåºæã®ã¢ã«ãŠã³ã é²èŠ§æ° 123000ãã³ã¡ã³ãæ° 154ãè©äŸ¡ +86.0/-5.0ãããŒãç§ãã¡ã¯ã€ã³ã¿ãŒãããã殺ãããšããŠããŸã é²èŠ§æ° 121000ãã³ã¡ã³ãæ° 933ãè©äŸ¡ +392.0/-83.0ãã¢ãã€ã« ã³ã³ãã³ããã¯ç¡æã§ãSMS ãç»é²ãå¿ èŠãããŸããã Megafon ã«ããè©æ¬ºã®è©³çŽ° é²èŠ§æ° 114000ãã³ã¡ã³ãæ° 478ãè©äŸ¡ +488.0/-8.0Rostelecom å人ã¢ã«ãŠã³ãã®ããŒã ã¹ãã£ã㌠é²èŠ§æ° 111000ãã³ã¡ã³ãæ° 194ãè©äŸ¡ +300.0/-8.0
ããã°ã©ãã³ã°
ããç·ã«ã€ã㊠é²èŠ§æ° 167000ãã³ã¡ã³ãæ° 249ãè©äŸ¡ +239.0/-33.0OOP ãå¿ããã®ãæ©ããã°æ©ãã»ã©ãããªããšããªãã®ããã°ã©ã ã«ãšã£ãŠè¯ãããšã«ãªããŸã é²èŠ§æ° 129000ãã³ã¡ã³ãæ° 1271ãè©äŸ¡ +131.0/-63.0äžçŽéçºè ãä»äºã«å°±ããªãçç± é²èŠ§æ° 119000ãã³ã¡ã³ãæ° 901ãè©äŸ¡ +151.0/-14.0ããã¯è人ã®å± å Žæã§ã¯ãªãã®ãïŒ XNUMXæ³ä»¥éã®ããã°ã©ãã³ã° é²èŠ§æ° 116000ãã³ã¡ã³ãæ° 649ãè©äŸ¡ +222.0/-16.0æ°ããããã°ã©ãã³ã°èšèªã¯ãç§ãã¡ã®çŸå®ãšã®ã€ãªãããéãã«æ®ºãã€ã€ãã é²èŠ§æ° 106000ãã³ã¡ã³ãæ° 764ãè©äŸ¡ +164.0/-52.0ç§ãèŠåŽããŠåŠãã ããšïŒ30 幎以äžã®ãœãããŠã§ã¢éçºçµéšïŒ é²èŠ§æ° 101000ãã³ã¡ã³ãæ° 128ãè©äŸ¡ +178.0/-9.0æãåžå°ã§æãé«äŸ¡ãªããã°ã©ãã³ã°èšèª é²èŠ§æ° 82900ãã³ã¡ã³ãæ° 119ãè©äŸ¡ +38.0/-10.0KPIã§ã®JavaScriptãšNode.jsã®è¬çŸ© é²èŠ§æ° 80300ãã³ã¡ã³ãæ° 14ãè©äŸ¡ +34.0/-2.0ãžã£ã¬ã€ã¢ã®æ œå¹éçšãäŸã«ããITçšèª é²èŠ§æ° 78000ãã³ã¡ã³ãæ° 86ãè©äŸ¡ +84.0/-14.0256 è¡ã®ã㢠C++: æ°æéã§ã¬ã€ ãã¬ãŒãµãŒãæåããäœæ é²èŠ§æ° 77600ãã³ã¡ã³ãæ° 124ãè©äŸ¡ +241.0/-0.0
ããã¥ã©ãŒãµã€ãšã³ã¹
ãã¶ã€ããŒãåžã£ããã®ïŒçããéåš é²èŠ§æ° 236000ãã³ã¡ã³ãæ° 123ãè©äŸ¡ +119.0/-9.0ç§åŠè ãã¡ã¯å°çäžã§çŸåããæå€ã®èæ€åç©ãçºèŠãã é²èŠ§æ° 234000ãã³ã¡ã³ãæ° 212ãè©äŸ¡ +82.0/-14.0TV ã·ãªãŒãºããã§ã«ããã€ãªã: èŠãŠèããŠãã ãã é²èŠ§æ° 173000ãã³ã¡ã³ãæ° 803ãè©äŸ¡ +164.0/-25.012 æ³ã®å°å¹Žãèªå® ã®ç 究宀ã§æ žèååå¿ãå®è¡ããŸããã é²èŠ§æ° 145000ãã³ã¡ã³ãæ° 280ãè©äŸ¡ +126.0/-29.0åéã®èèãšå èœããã¯ã¬ã³ã«ã®ç©èª é²èŠ§æ° 134000ãã³ã¡ã³ãæ° 244ãè©äŸ¡ +217.0/-1.0ãã£ãšå€§ããããŠãïŒ ææ°ã®è§£å床åäž é²èŠ§æ° 134000ãã³ã¡ã³ãæ° 235ãè©äŸ¡ +377.0/-1.0ããŒã€ã³ã° 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
ãã£ãªã¢
ç§ããºãã«ãã³ã¯ã§XNUMX幎éåããªãã£ãçµç·¯ é²èŠ§æ° 304000ãã³ã¡ã³ãæ° 599ãè©äŸ¡ +457.0/-14.0ç§ã®ã³ãŒãã¬ãã¥ãŒã§éçºè ã®äººçãå°ç¡ãã«ããŠããŸããŸãããããããªãã é²èŠ§æ° 187000ãã³ã¡ã³ãæ° 21ãè©äŸ¡ +37.0/-3.0éçºã®çæ§ é²èŠ§æ° 179000ãã³ã¡ã³ãæ° 668ãè©äŸ¡ +315.0/-60.0ããç·ã«ã€ã㊠é²èŠ§æ° 167000ãã³ã¡ã³ãæ° 249ãè©äŸ¡ +239.0/-33.022æ³ã§åŒé é²èŠ§æ° 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ããã¯è人ã®å± å Žæã§ã¯ãªãã®ãïŒ XNUMXæ³ä»¥éã®ããã°ã©ãã³ã° é²èŠ§æ° 116000ãã³ã¡ã³ãæ° 649ãè©äŸ¡ +222.0/-16.0
IT åéã®æ³èŠå¶
è©æ¬ºåž«ãšããžã¿ã«çœ²å â ãã¹ãŠãéåžžã«æªã é²èŠ§æ° 176000ãã³ã¡ã³ãæ° 778ãè©äŸ¡ +356.0/-0.0Megafon ãã¢ãã€ã« ãµãã¹ã¯ãªãã·ã§ã³ã§çãå°œããçµç·¯ é²èŠ§æ° 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.0Protonmail ããã·ã¢ã§ãããã¯ãããä»çµã¿ é²èŠ§æ° 102000ãã³ã¡ã³ãæ° 398ãè©äŸ¡ +418.0/-7.0ã«ãããã®éé¢æ³ã¯åœå®¶é¢ã«ãã£ãŠXNUMXåã®èªäŒã§æ¡æããã é²èŠ§æ° 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
ãŠã§ãéçº
ããã¯è人ã®å± å Žæã§ã¯ãªãã®ãïŒ XNUMXæ³ä»¥éã®ããã°ã©ãã³ã° é²èŠ§æ° 116000ãã³ã¡ã³ãæ° 649ãè©äŸ¡ +222.0/-16.02019幎ã®Webãµã€ãã®äœãæ¹ é²èŠ§æ° 110000ãã³ã¡ã³ãæ° 278ãè©äŸ¡ +233.0/-11.0Docker ã®åŠç¿ããŒã 1: åºæ¬ é²èŠ§æ° 91300ãã³ã¡ã³ãæ° 24ãè©äŸ¡ +52.0/-10.0KPIã§ã®JavaScriptãšNode.jsã®è¬çŸ© é²èŠ§æ° 80300ãã³ã¡ã³ãæ° 14ãè©äŸ¡ +34.0/-2.0ç ä¿®çã® Vasya ãš API åªçæ§ã«é¢ãã圌ã®è©± é²èŠ§æ° 68900ãã³ã¡ã³ãæ° 160ãè©äŸ¡ +216.0/-3.0çµåã®ç解ã厩ããŠããŸãã æ£çŽèšã£ãŠããã¯åã®äº€å·®ç¹ã§ã¯ãããŸãã é²èŠ§æ° 65900ãã³ã¡ã³ãæ° 223ãè©äŸ¡ +138.0/-41.0ããããªããŒãã® Web ãµã€ãã®äœæã«æéãç¡é§ã«ãã¹ãã§ã¯ãªãçç± é²èŠ§æ° 62700ãã³ã¡ã³ãæ° 243ãè©äŸ¡ +179.0/-13.0ææ°ã® Web ã¢ããªã±ãŒã·ã§ã³ããŒãããäœæãã é²èŠ§æ° 62200ãã³ã¡ã³ãæ° 122ãè©äŸ¡ +56.0/-8.0Vue.js ã«ãšã£ãŠæãæ¥ é²èŠ§æ° 60800ãã³ã¡ã³ãæ° 133ãè©äŸ¡ +77.0/-6.0ææ°ã® Web éçºã¯ãªãããã»ã©è€éãªã®ã§ãããã? ããŒã1 é²èŠ§æ° 57700ãã³ã¡ã³ãæ° 319ãè©äŸ¡ +101.0/-6.0
GTK
æåŸã«ã誰ãæ°åã害ããªãããã«ãæã蚪åè ã®å°ãªããããgtkãã®è©äŸ¡ãä»ããŠãããŸãã XNUMX幎以å ã«åºçãããŸãã äž ãã®èšäºããèªåçã«ãè©äŸ¡ã®æåã®è¡ãå ããŸãã
GtkApplication ã䜿çšããŸãã librsvg ã¬ã³ããªã³ã°æ©èœ é²èŠ§æ° 1700ãã³ã¡ã³ãæ° 9ãè©äŸ¡ +9.0/-1.0
ãŸãšã
çµè«ã¯åºãªãã§ãããã çããã楜ããèªãã§ãã ããã
åºæïŒ habr.com