From 05d92ceef3e6d2861eaa3328af47159f7d72bbae Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 07:13:58 +0900 Subject: [PATCH 01/11] =?UTF-8?q?=EC=95=84=EC=A7=81=EA=B9=8C=EC=A7=80=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=EB=90=9C=20=EA=B8=B0=EC=97=85=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=EB=A5=BC=20JSON=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=ED=98=95=ED=83=9C=EB=A1=9C=20=EA=B0=80=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/github.json | 234 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 src/github.json diff --git a/src/github.json b/src/github.json new file mode 100644 index 0000000..dbf0843 --- /dev/null +++ b/src/github.json @@ -0,0 +1,234 @@ +[ + { + "name": "티맥스클라우드", + "organizations": ["tmax-cloud"] + }, + { + "name": "네이버", + "organizations": ["naver"] + }, + { + "name": "인베슘", + "organizations": ["hamonikr"] + }, + { + "name": "삼성전자", + "organizations": ["Samsung"] + }, + { + "name": "센드버드", + "organizations": ["sendbird"] + }, + { + "name": "데브시스터즈", + "organizations": ["devsisters"] + }, + { + "name": "리디", + "organizations": ["ridi"] + }, + { + "name": "라인", + "organizations": ["line"] + }, + { + "name": "당근마켓", + "organizations": ["daangn"] + }, + { + "name": "NHN", + "organizations": ["nhn"] + }, + { + "name": "래블업", + "organizations": ["lablup"] + }, + { + "name": "하이퍼커넥트", + "organizations": ["hyperconnect"] + }, + { + "name": "삼성SDS", + "organizations": ["samsung-cnct", "SDSACT", "samsungsds-rnd"] + }, + { + "name": "뤼이드", + "organizations": ["riiid"] + }, + { + "name": "버즈빌", + "organizations": ["Buzzvil"] + }, + { + "name": "카카오", + "organizations": ["kakao"] + }, + { + "name": "네이버클라우드", + "organizations": ["NaverCloudPlatform"] + }, + { + "name": "카카오브레인", + "organizations": ["kakaobrain"] + }, + { + "name": "그린랩스", + "organizations": ["green-labs"] + }, + { + "name": "직방", + "organizations": ["zigbang"] + }, + { + "name": "우아한형제들", + "organizations": ["woowabros"] + }, + { + "name": "쏘카", + "organizations": ["socar-inc"] + }, + { + "name": "한글과컴퓨터", + "organizations": ["hancom-io"] + }, + { + "name": "엔씨소프트", + "organizations": ["ncsoft"] + }, + { + "name": "버켓플레이스", + "organizations": ["bucketplace"] + }, + { + "name": "비바리퍼블리카", + "organizations": ["toss"] + }, + { + "name": "마이리얼트립", + "organizations": ["myrealtrip"] + }, + { + "name": "쿠팡", + "organizations": ["coupang"] + }, + { + "name": "LG전자", + "organizations": ["LGE-OSS"] + }, + { + "name": "드라마앤컴퍼니", + "organizations": ["dramancompany"] + }, + { + "name": "야놀자", + "organizations": ["yanolja"] + }, + { + "name": "VCNC", + "organizations": ["VCNC"] + }, + { + "name": "다나와", + "organizations": ["danawalab"] + }, + { + "name": "뱅크샐러드", + "organizations": ["banksalad"] + }, + { + "name": "카카오엔터프라이즈", + "organizations": ["kakaoenterprise"] + }, + { + "name": "딜리셔스", + "organizations": ["dealicious-inc"] + }, + { + "name": "몰로코", + "organizations": ["moloco"] + }, + { + "name": "네이버제트", + "organizations": ["naverz"] + }, + { + "name": "SK텔레콤", + "organizations": ["sktelecom"] + }, + { + "name": "컬리", + "organizations": ["thefarmersfront"] + }, + { + "name": "티몬", + "organizations": ["tmoncorp"] + }, + { + "name": "메가존클라우드", + "organizations": ["megazone-devops"] + }, + { + "name": "현대자동차", + "organizations": ["hkmc-airlab", "42dot"] + }, + { + "name": "포스코ICT", + "organizations": ["poscoict-glueframework"] + }, + { + "name": "요기요", + "organizations": ["yogiyo"] + }, + { + "name": "가비아", + "organizations": ["gabia"] + }, + { + "name": "힐링페이퍼", + "organizations": ["healingpaper"] + }, + { + "name": "11번가", + "organizations": ["11st-corp"] + }, + { + "name": "줌인터넷", + "organizations": ["zuminternet"] + }, + { + "name": "네이버랩스", + "organizations": ["naverlabs"] + }, + { + "name": "무신사", + "organizations": ["musinsa"] + }, + { + "name": "SK", + "organizations": ["SK-HOLDINGS-CC", "cloudsvcdev"] + }, + { + "name": "카카오페이", + "organizations": ["kakaopay"] + }, + { + "name": "신한은행", + "organizations": ["Shinhan-Bank"] + }, + { + "name": "크레프톤", + "organizations": ["Krafton"] + }, + { + "name": "카카오뱅크", + "organizations": ["kakaobank"] + }, + { + "name": "카카오헤어샵", + "organizations": ["kakaohairshop"] + }, + { + "name": "플라네타리움", + "organizations": ["planetarium"] + } +] From a9625a1a97b8709f7b9cc41d54be177e3c3fcc8f Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:14:39 +0900 Subject: [PATCH 02/11] =?UTF-8?q?GitHub=20API=EB=A5=BC=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=B4=20JSON=20=ED=8C=8C=EC=9D=BC=EC=9D=84=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/github.json | 484 +++++++++++++++++++++++++++++++++++++++------ src/update-json.py | 54 +++++ 2 files changed, 480 insertions(+), 58 deletions(-) create mode 100644 src/update-json.py diff --git a/src/github.json b/src/github.json index dbf0843..c63e46f 100644 --- a/src/github.json +++ b/src/github.json @@ -1,234 +1,602 @@ [ { "name": "티맥스클라우드", - "organizations": ["tmax-cloud"] + "organizations": [ + [ + "tmax-cloud", + 245, + 17 + ] + ] }, { "name": "네이버", - "organizations": ["naver"] + "organizations": [ + [ + "naver", + 214, + 463 + ] + ] }, { "name": "인베슘", - "organizations": ["hamonikr"] + "organizations": [ + [ + "hamonikr", + 163, + 12 + ] + ] }, { "name": "삼성전자", - "organizations": ["Samsung"] + "organizations": [ + [ + "Samsung", + 155, + 278 + ] + ] }, { "name": "센드버드", - "organizations": ["sendbird"] + "organizations": [ + [ + "sendbird", + 155, + 68 + ] + ] }, { "name": "데브시스터즈", - "organizations": ["devsisters"] + "organizations": [ + [ + "devsisters", + 150, + 69 + ] + ] }, { "name": "리디", - "organizations": ["ridi"] + "organizations": [ + [ + "ridi", + 123, + 29 + ] + ] }, { "name": "라인", - "organizations": ["line"] + "organizations": [ + [ + "line", + 109, + 306 + ] + ] }, { "name": "당근마켓", - "organizations": ["daangn"] + "organizations": [ + [ + "daangn", + 103, + 281 + ] + ] }, { "name": "NHN", - "organizations": ["nhn"] + "organizations": [ + [ + "nhn", + 103, + 224 + ] + ] }, { "name": "래블업", - "organizations": ["lablup"] + "organizations": [ + [ + "lablup", + 102, + 22 + ] + ] }, { "name": "하이퍼커넥트", - "organizations": ["hyperconnect"] + "organizations": [ + [ + "hyperconnect", + 99, + 17 + ] + ] }, { "name": "삼성SDS", - "organizations": ["samsung-cnct", "SDSACT", "samsungsds-rnd"] + "organizations": [ + [ + "samsung-cnct", + 70, + 4 + ], + [ + "SDSACT", + 7, + 2 + ], + [ + "samsungsds-rnd", + 7, + 2 + ] + ] }, { "name": "뤼이드", - "organizations": ["riiid"] + "organizations": [ + [ + "riiid", + 53, + 22 + ] + ] }, { "name": "버즈빌", - "organizations": ["Buzzvil"] + "organizations": [ + [ + "Buzzvil", + 53, + 8 + ] + ] }, { "name": "카카오", - "organizations": ["kakao"] + "organizations": [ + [ + "kakao", + 50, + 158 + ] + ] }, { "name": "네이버클라우드", - "organizations": ["NaverCloudPlatform"] + "organizations": [ + [ + "NaverCloudPlatform", + 40, + 22 + ] + ] }, { "name": "카카오브레인", - "organizations": ["kakaobrain"] + "organizations": [ + [ + "kakaobrain", + 29, + 219 + ] + ] }, { "name": "그린랩스", - "organizations": ["green-labs"] + "organizations": [ + [ + "green-labs", + 28, + 38 + ] + ] }, { "name": "직방", - "organizations": ["zigbang"] + "organizations": [ + [ + "zigbang", + 26, + 21 + ] + ] }, { "name": "우아한형제들", - "organizations": ["woowabros"] + "organizations": [ + [ + "woowabros", + 25, + 44 + ] + ] }, { "name": "쏘카", - "organizations": ["socar-inc"] + "organizations": [ + [ + "socar-inc", + 25, + 24 + ] + ] }, { "name": "한글과컴퓨터", - "organizations": ["hancom-io"] + "organizations": [ + [ + "hancom-io", + 24, + 4 + ] + ] }, { "name": "엔씨소프트", - "organizations": ["ncsoft"] + "organizations": [ + [ + "ncsoft", + 24, + 27 + ] + ] }, { "name": "버켓플레이스", - "organizations": ["bucketplace"] + "organizations": [ + [ + "bucketplace", + 23, + 34 + ] + ] }, { "name": "비바리퍼블리카", - "organizations": ["toss"] + "organizations": [ + [ + "toss", + 22, + 200 + ] + ] }, { "name": "마이리얼트립", - "organizations": ["myrealtrip"] + "organizations": [ + [ + "myrealtrip", + 19, + 13 + ] + ] }, { "name": "쿠팡", - "organizations": ["coupang"] + "organizations": [ + [ + "coupang", + 18, + 12 + ] + ] }, { "name": "LG전자", - "organizations": ["LGE-OSS"] + "organizations": [ + [ + "LGE-OSS", + 17, + 22 + ] + ] }, { "name": "드라마앤컴퍼니", - "organizations": ["dramancompany"] + "organizations": [ + [ + "dramancompany", + 17, + 11 + ] + ] }, { "name": "야놀자", - "organizations": ["yanolja"] + "organizations": [ + [ + "yanolja", + 16, + 4 + ] + ] }, { "name": "VCNC", - "organizations": ["VCNC"] + "organizations": [ + [ + "VCNC", + 14, + 7 + ] + ] }, { "name": "다나와", - "organizations": ["danawalab"] + "organizations": [ + [ + "danawalab", + 16, + 4 + ] + ] }, { "name": "뱅크샐러드", - "organizations": ["banksalad"] + "organizations": [ + [ + "banksalad", + 14, + 51 + ] + ] }, { "name": "카카오엔터프라이즈", - "organizations": ["kakaoenterprise"] + "organizations": [ + [ + "kakaoenterprise", + 12, + 37 + ] + ] }, { "name": "딜리셔스", - "organizations": ["dealicious-inc"] + "organizations": [ + [ + "dealicious-inc", + 12, + 18 + ] + ] }, { "name": "몰로코", - "organizations": ["moloco"] + "organizations": [ + [ + "moloco", + 11, + 36 + ] + ] }, { "name": "네이버제트", - "organizations": ["naverz"] + "organizations": [ + [ + "naverz", + 10, + 31 + ] + ] }, { "name": "SK텔레콤", - "organizations": ["sktelecom"] + "organizations": [ + [ + "sktelecom", + 4, + 8 + ] + ] }, { "name": "컬리", - "organizations": ["thefarmersfront"] + "organizations": [ + [ + "thefarmersfront", + 8, + 31 + ] + ] }, { "name": "티몬", - "organizations": ["tmoncorp"] + "organizations": [ + [ + "tmoncorp", + 8, + 0 + ] + ] }, { "name": "메가존클라우드", - "organizations": ["megazone-devops"] + "organizations": [ + [ + "megazone-devops", + 8, + 0 + ] + ] }, { "name": "현대자동차", - "organizations": ["hkmc-airlab", "42dot"] + "organizations": [ + [ + "hkmc-airlab", + 4, + 22 + ], + [ + "42dot", + 2, + 6 + ] + ] }, { "name": "포스코ICT", - "organizations": ["poscoict-glueframework"] + "organizations": [ + [ + "poscoict-glueframework", + 9, + 2 + ] + ] }, { "name": "요기요", - "organizations": ["yogiyo"] + "organizations": [ + [ + "yogiyo", + 6, + 32 + ] + ] }, { "name": "가비아", - "organizations": ["gabia"] + "organizations": [ + [ + "gabia", + 5, + 0 + ] + ] }, { "name": "힐링페이퍼", - "organizations": ["healingpaper"] + "organizations": [ + [ + "healingpaper", + 4, + 0 + ] + ] }, { "name": "11번가", - "organizations": ["11st-corp"] + "organizations": [ + [ + "11st-corp", + 4, + 6 + ] + ] }, { "name": "줌인터넷", - "organizations": ["zuminternet"] + "organizations": [ + [ + "zuminternet", + 4, + 5 + ] + ] }, { "name": "네이버랩스", - "organizations": ["naverlabs"] + "organizations": [ + [ + "naverlabs", + 3, + 5 + ] + ] }, { "name": "무신사", - "organizations": ["musinsa"] + "organizations": [ + [ + "musinsa", + 3, + 6 + ] + ] }, { "name": "SK", - "organizations": ["SK-HOLDINGS-CC", "cloudsvcdev"] + "organizations": [ + [ + "SK-HOLDINGS-CC", + 0, + 0 + ], + [ + "cloudsvcdev", + 3, + 0 + ] + ] }, { "name": "카카오페이", - "organizations": ["kakaopay"] + "organizations": [ + [ + "kakaopay", + 1, + 3 + ] + ] }, { "name": "신한은행", - "organizations": ["Shinhan-Bank"] + "organizations": [ + [ + "Shinhan-Bank", + 1, + 2 + ] + ] }, { "name": "크레프톤", - "organizations": ["Krafton"] + "organizations": [ + [ + "Krafton", + 0, + 1 + ] + ] }, { "name": "카카오뱅크", - "organizations": ["kakaobank"] + "organizations": [ + [ + "kakaobank", + 0, + 3 + ] + ] }, { "name": "카카오헤어샵", - "organizations": ["kakaohairshop"] + "organizations": [ + [ + "kakaohairshop", + 12, + 4 + ] + ] }, { "name": "플라네타리움", - "organizations": ["planetarium"] + "organizations": [ + [ + "planetarium", + 91, + 56 + ] + ] } ] diff --git a/src/update-json.py b/src/update-json.py new file mode 100644 index 0000000..bf41ff0 --- /dev/null +++ b/src/update-json.py @@ -0,0 +1,54 @@ +# load json + +import json +import asyncio +import aiohttp +import os.path + +TOKEN = '' +dir_path = os.path.dirname(os.path.realpath(__file__)) + +async def fetchStat(organization, session): + url = f'https://api.github.com/orgs/{organization}' + print(url) + + async with session.get(url) as response: + data = await response.text() + info = json.loads(data) + + try: + return [organization, info['public_repos'], info['followers']] + except: + print(info) + return [organization] + +async def main(): + file_path = os.path.join(dir_path, './github.json') + + with open(file_path, 'r') as file: + companies = json.load(file) + + items = [] + async with aiohttp.ClientSession(headers={ +'Authorization': f'Bearer {TOKEN}' + }) as session: + for company in companies: + await asyncio.sleep(0.3) + stats = await asyncio.gather(*[fetchStat(item[0], session) for item in company['organizations']]) + print(stats) + + for idx, stat in enumerate(stats): + if len(stat) == 1: + for org in company['organizations']: + if org[0] == stat[0]: + stats[idx] = org + + items.append({ 'name': company['name'], 'organizations': stats }) + + with open(file_path, 'w') as file: + json.dump(items, file, ensure_ascii=False, indent=2, sort_keys=True) + + # add newline to eof + file.write('\n') + +asyncio.run(main()) From 53999cfcab970609a161f866ca6bea566c9e22b7 Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:19:39 +0900 Subject: [PATCH 03/11] =?UTF-8?q?=EB=A7=88=ED=81=AC=EB=8B=A4=EC=9A=B4=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=EC=9C=BC=EB=A1=9C=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=ED=95=98=EB=8A=94=20=EC=8A=A4=ED=81=AC?= =?UTF-8?q?=EB=A6=BD=ED=8A=B8=20=EC=9E=91=EC=84=B1=20(https://github.com/j?= =?UTF-8?q?unhoyeo/NIKE-THE-DRAW-Calendar=20=EC=82=AC=EC=9A=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 26 +++++++----- github.md | 96 +++++++++++++++++++++--------------------- src/update-markdown.py | 78 ++++++++++++++++++++++++++++++++++ 3 files changed, 142 insertions(+), 58 deletions(-) create mode 100644 src/update-markdown.py diff --git a/README.md b/README.md index 8774a10..f90a6f6 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,21 @@ # 국내 IT 기업 소프트웨어 개발 문화 -본 레포지터리는 국내 IT 기업의 소프트웨어 개발 문화에 대한 다양한 자료를 정리하고 있습니다. +본 레포지터리는 국내 IT 기업의 소프트웨어 개발 문화에 대한 다양한 자료를 정리하고 있습니다. ## 상위 10개 IT 기업 Github 레포지터리 (숫자 기준) + + | **회사명** | **레포지터리 수** | **팔로워 수** | **Github 주소** | |:---|---:|---:|:---| -| 티맥스클라우드 | 245 | 15 | https://github.com/tmax-cloud | -| 네이버 | 214 | 445 | https://github.com/naver | -| 삼성전자 | 155 | - | https://github.com/Samsung | -| 센드버드 | 155 | 62 | https://github.com/sendbird | -| 데브시스터즈 | 150 | 61 | https://github.com/devsisters | -| 리디 | 123 | 27 | https://github.com/ridi | -| 라인 | 109 | 297 | https://github.com/line | -| 당근마켓 | 103 | 271 | https://github.com/daangn | -| NHN | 103 | 216 | https://github.com/nhn | -| 래블업 | 101 | 18 | https://github.com/lablup | +| 티맥스클라우드 | 245 | 17 | https://github.com/tmax-cloud | +| 네이버 | 214 | 463 | https://github.com/naver | +| 인베슘 | 163 | 12 | https://github.com/hamonikr | +| 삼성전자 | 155 | 278 | https://github.com/Samsung | +| 센드버드 | 155 | 68 | https://github.com/sendbird | +| 데브시스터즈 | 150 | 69 | https://github.com/devsisters | +| 리디 | 123 | 29 | https://github.com/ridi | +| 라인 | 109 | 306 | https://github.com/line | +| 당근마켓 | 103 | 281 | https://github.com/daangn | +| NHN | 103 | 224 | https://github.com/nhn | + + diff --git a/github.md b/github.md index 3f70af9..e38ef72 100644 --- a/github.md +++ b/github.md @@ -1,65 +1,67 @@ # 국내 IT 기업 Github 레포지터리 목록 국내 주요 IT 기업의 Github Org 계정의 레포지터리 주소와 총 공개 레포지터리 숫자 및 팔로워를 모았습니다. 이러한 숫자가 절대적인 기준이 될 수는 없겠지만, 얼마나 오픈 소스 활동 및 투명한 정보 공개를 하고 있는지 알 수 있을 것입니다. -※ 혹시 여러분의 회사가 빠져 있거나, 데이터 수정이 필요한 경우 Pull Request 올려 주시기 바랍니다. + | **회사명** | **레포지터리 수** | **팔로워 수** | **Github 주소** | |:---|---:|---:|:---| -| 티맥스클라우드 | 245 | 15 | https://github.com/tmax-cloud | -| 네이버 | 214 | 445 | https://github.com/naver | -| 인베슘 | 163 | 11 | https://github.com/hamonikr | -| 삼성전자 | 155 | - | https://github.com/Samsung | -| 센드버드 | 155 | 62 | https://github.com/sendbird | -| 데브시스터즈 | 150 | 61 | https://github.com/devsisters | -| 리디 | 123 | 27 | https://github.com/ridi | -| 라인 | 109 | 297 | https://github.com/line | -| 당근마켓 | 103 | 271 | https://github.com/daangn | -| NHN | 103 | 216 | https://github.com/nhn | -| 래블업 | 101 | 18 | https://github.com/lablup | -| 하이퍼커넥트 | 99 | 14 | https://github.com/hyperconnect | -| 삼성SDS | 84 | 4 | https://github.com/samsung-cnct (70)
https://github.com/SDSACT
(7)https://github.com/samsungsds-rnd (7) | -| 뤼이드 | 53 | 21 | https://github.com/riiid | -| 버즈빌 | 53 | 6 | https://github.com/Buzzvil | -| 카카오 | 50 | 157 | https://github.com/kakao | -| 네이버클라우드 | 40 | 20 | https://github.com/NaverCloudPlatform | -| 카카오브레인 | 27 | 216 | https://github.com/kakaobrain | -| 그린랩스 | 27 | 37 | https://github.com/green-labs | -| 직방 | 26 | 20 | https://github.com/zigbang | -| 우아한형제들 | 25 | 42 | https://github.com/woowabros | -| 쏘카 | 25 | 21 | https://github.com/socar-inc | +| 티맥스클라우드 | 245 | 17 | https://github.com/tmax-cloud | +| 네이버 | 214 | 463 | https://github.com/naver | +| 인베슘 | 163 | 12 | https://github.com/hamonikr | +| 삼성전자 | 155 | 278 | https://github.com/Samsung | +| 센드버드 | 155 | 68 | https://github.com/sendbird | +| 데브시스터즈 | 150 | 69 | https://github.com/devsisters | +| 리디 | 123 | 29 | https://github.com/ridi | +| 라인 | 109 | 306 | https://github.com/line | +| 당근마켓 | 103 | 281 | https://github.com/daangn | +| NHN | 103 | 224 | https://github.com/nhn | +| 래블업 | 102 | 22 | https://github.com/lablup | +| 하이퍼커넥트 | 99 | 17 | https://github.com/hyperconnect | +| 삼성SDS | 84 | 8 | https://github.com/samsung-cnct (70)
https://github.com/SDSACT (7)
https://github.com/samsungsds-rnd (7) | +| 뤼이드 | 53 | 22 | https://github.com/riiid | +| 버즈빌 | 53 | 8 | https://github.com/Buzzvil | +| 카카오 | 50 | 158 | https://github.com/kakao | +| 네이버클라우드 | 40 | 22 | https://github.com/NaverCloudPlatform | +| 카카오브레인 | 29 | 219 | https://github.com/kakaobrain | +| 그린랩스 | 28 | 38 | https://github.com/green-labs | +| 직방 | 26 | 21 | https://github.com/zigbang | +| 우아한형제들 | 25 | 44 | https://github.com/woowabros | +| 쏘카 | 25 | 24 | https://github.com/socar-inc | | 한글과컴퓨터 | 24 | 4 | https://github.com/hancom-io | -| 엔씨소프트 | 23 | 27 | https://github.com/ncsoft | -| 버켓플레이스 | 23 | - | https://github.com/bucketplace | -| 비바리퍼블리카 | 22 | 195 | https://github.com/toss | -| 마이리얼트립 | 20 | 13 | https://github.com/myrealtrip | -| 쿠팡 | 18 | 11 | https://github.com/coupang | +| 엔씨소프트 | 24 | 27 | https://github.com/ncsoft | +| 버켓플레이스 | 23 | 34 | https://github.com/bucketplace | +| 비바리퍼블리카 | 22 | 200 | https://github.com/toss | +| 마이리얼트립 | 19 | 13 | https://github.com/myrealtrip | +| 쿠팡 | 18 | 12 | https://github.com/coupang | | LG전자 | 17 | 22 | https://github.com/LGE-OSS | -| 드라마앤컴퍼니 | 16 | 11 | https://github.com/dramancompany | +| 드라마앤컴퍼니 | 17 | 11 | https://github.com/dramancompany | | 야놀자 | 16 | 4 | https://github.com/yanolja | -| VCNC | 16 | 6 | https://github.com/VCNC | +| VCNC | 14 | 7 | https://github.com/VCNC | | 다나와 | 16 | 4 | https://github.com/danawalab | -| 뱅크샐러드 | 14 | 49 | https://github.com/banksalad | -| 카카오엔터프라이즈 | 12 | 36 | https://github.com/kakaoenterprise | -| 딜리셔스 | 12 | - | https://github.com/dealicious-inc | -| 몰로코 | 11 | 35 | https://github.com/moloco | -| 네이버제트 | 10 | - | https://github.com/naverz | -| SK텔레콤 | 8 | 4 | https://github.com/sktelecom | +| 뱅크샐러드 | 14 | 51 | https://github.com/banksalad | +| 카카오엔터프라이즈 | 12 | 37 | https://github.com/kakaoenterprise | +| 딜리셔스 | 12 | 18 | https://github.com/dealicious-inc | +| 몰로코 | 11 | 36 | https://github.com/moloco | +| 네이버제트 | 10 | 31 | https://github.com/naverz | +| SK텔레콤 | 4 | 8 | https://github.com/sktelecom | | 컬리 | 8 | 31 | https://github.com/thefarmersfront | -| 티몬 | 8 | - | https://github.com/tmoncorp | -| 메가존클라우드 | 8 | - | https://github.com/megazone-devops | -| 현대자동차 | 6 | 6 | https://github.com/hkmc-airlab
(4)https://github.com/42dot (2) | -| 포스코ICT | 6 | 1 | https://github.com/poscoict-glueframework | -| 요기요 | 6 | - | https://github.com/yogiyo | -| 가비아 | 5 | - | https://github.com/gabia | -| 힐링페이퍼 | 5 | - | https://github.com/healingpaper | +| 티몬 | 8 | 0 | https://github.com/tmoncorp | +| 메가존클라우드 | 8 | 0 | https://github.com/megazone-devops | +| 현대자동차 | 6 | 28 | https://github.com/hkmc-airlab (4)
https://github.com/42dot (2) | +| 포스코ICT | 9 | 2 | https://github.com/poscoict-glueframework | +| 요기요 | 6 | 32 | https://github.com/yogiyo | +| 가비아 | 5 | 0 | https://github.com/gabia | +| 힐링페이퍼 | 4 | 0 | https://github.com/healingpaper | | 11번가 | 4 | 6 | https://github.com/11st-corp | -| 줌인터넷 | 4 | 4 | https://github.com/zuminternet | +| 줌인터넷 | 4 | 5 | https://github.com/zuminternet | | 네이버랩스 | 3 | 5 | https://github.com/naverlabs | -| 무신사 | 3 | 1 | https://github.com/musinsa | -| SK C&C | 3 | - | https://github.com/SK-HOLDINGS-CC
https://github.com/cloudsvcdev (3) | +| 무신사 | 3 | 6 | https://github.com/musinsa | +| SK | 3 | 0 | https://github.com/SK-HOLDINGS-CC (0)
https://github.com/cloudsvcdev (3) | | 카카오페이 | 1 | 3 | https://github.com/kakaopay | -| 신한은행 | 1 | 1 | https://github.com/Shinhan-Bank | +| 신한은행 | 1 | 2 | https://github.com/Shinhan-Bank | | 크레프톤 | 0 | 1 | https://github.com/Krafton | | 카카오뱅크 | 0 | 3 | https://github.com/kakaobank | | 카카오헤어샵 | 12 | 4 | https://github.com/kakaohairshop | | 플라네타리움 | 91 | 56 | https://github.com/planetarium | + + diff --git a/src/update-markdown.py b/src/update-markdown.py new file mode 100644 index 0000000..c6c8002 --- /dev/null +++ b/src/update-markdown.py @@ -0,0 +1,78 @@ +import os.path +import json + +def render_table_header(): + return '''| **회사명** | **레포지터리 수** | **팔로워 수** | **Github 주소** | +|:---|---:|---:|:---| +''' + +def render_table_row(company): + print(company) + markdown = '|' + markdown += f" {company['name']} |" + + total_public_repos = 0 + total_followers = 0 + + stats = company['organizations'] + for stat in stats: + total_public_repos += stat[1] + total_followers += stat[2] + + markdown += f" {total_public_repos} |" + markdown += f" {total_followers} |" + + if len(stats) == 1: + markdown += f" https://github.com/{stats[0][0]} |" + else: + markdown += " " + for idx, stat in enumerate(stats): + markdown += f"https://github.com/{stat[0]} ({stat[1]})" + if idx != len(stats) - 1: + markdown += '
' + markdown += " |" + + markdown += "\n" + return markdown + +START_TAG = '\n' +END_TAG = '\n' + +def inject_result_to_readme(readme_path, injected_content): + with open(readme_path) as readme: + readme_content = readme.read() + start_index = readme_content.find(START_TAG) + end_index = readme_content.find(END_TAG) + + updated_content = (readme_content[0:start_index] + + START_TAG + '\n' + + injected_content + + readme_content[end_index:]) + + with open(readme_path, 'w') as readme: + readme.write(updated_content) + +dir_path = os.path.dirname(os.path.realpath(__file__)) +file_path = os.path.join(dir_path, './github.json') + +with open(file_path, 'r') as file: + companies = json.load(file) + +# all companies +readme_path = os.path.join(dir_path, '../github.md') +markdown = render_table_header() + +for company in companies: + markdown += render_table_row(company) + +inject_result_to_readme(readme_path, markdown) + +# top 10 companies +readme_path = os.path.join(dir_path, '../README.md') +markdown = render_table_header() + +top_10_companies = sorted(companies, key = lambda item: sum(org[1] for org in item['organizations']), reverse=True)[:10] +for company in top_10_companies: + markdown += render_table_row(company) + +inject_result_to_readme(readme_path, markdown) From 2896b3350afb1d00473cba2126fbb7af18dc36f1 Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:25:40 +0900 Subject: [PATCH 04/11] =?UTF-8?q?JSON=20=ED=8C=8C=EC=9D=BC=EC=9D=98=20?= =?UTF-8?q?=EA=B0=92=EC=9D=B4=20=EC=9E=98=EB=AA=BB=EB=90=98=EC=97=88?= =?UTF-8?q?=EC=9D=84=20=EB=A7=8C=EC=9D=BC=EC=9D=98=20=EA=B2=BD=EC=9A=B0?= =?UTF-8?q?=EB=A5=BC=20=EB=8C=80=EB=B9=84=ED=95=B4=20fallback=20=EB=8C=80?= =?UTF-8?q?=EC=9D=91=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/update-json.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/update-json.py b/src/update-json.py index bf41ff0..2eae68c 100644 --- a/src/update-json.py +++ b/src/update-json.py @@ -41,7 +41,10 @@ async def main(): if len(stat) == 1: for org in company['organizations']: if org[0] == stat[0]: - stats[idx] = org + if len(org) != 3: + stats[idx] = [org[0], 0, 0] + else: + stats[idx] = org items.append({ 'name': company['name'], 'organizations': stats }) From 13059a2c2c95c2ccb51fe087886a73ff992c73da Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:27:14 +0900 Subject: [PATCH 05/11] =?UTF-8?q?GitHub=20Workflow=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/update.yaml | 33 +++++++++++++++++++++++++++++++++ src/update-json.py | 4 +++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/update.yaml diff --git a/.github/workflows/update.yaml b/.github/workflows/update.yaml new file mode 100644 index 0000000..e02656f --- /dev/null +++ b/.github/workflows/update.yaml @@ -0,0 +1,33 @@ +name: update-companies +on: + workflow_dispatch: + +jobs: + update: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.10] + steps: + - uses: actions/checkout@master + with: + persist-credentials: false + fetch-depth: 0 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + - name: Run script + run: | + python3 ./src/update-json.py ${{ secrets.GITHUB_TOKEN }} + python3 ./src/update-markdown.py + + - name: Commit & Push changes + uses: Andro999b/push@patch-1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: main + message: > + 🎉 chore: update draws for ${{ env.DATE }} diff --git a/src/update-json.py b/src/update-json.py index 2eae68c..55621ac 100644 --- a/src/update-json.py +++ b/src/update-json.py @@ -4,8 +4,10 @@ import asyncio import aiohttp import os.path +import sys + +TOKEN = sys.argv[1] -TOKEN = '' dir_path = os.path.dirname(os.path.realpath(__file__)) async def fetchStat(organization, session): From efd803dda756781848dd5c54535bf64be99d10bc Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:29:46 +0900 Subject: [PATCH 06/11] =?UTF-8?q?=ED=8C=8C=EC=9D=B4=EC=8D=AC=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=EB=AA=85=EC=8B=9C=20=EC=8B=9C=EC=97=90=20=EB=AC=B8?= =?UTF-8?q?=EC=9E=90=EC=97=B4=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/actions/setup-python/issues/160#issuecomment-724485470 --- .github/workflows/update.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update.yaml b/.github/workflows/update.yaml index e02656f..acad971 100644 --- a/.github/workflows/update.yaml +++ b/.github/workflows/update.yaml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.10] + python-version: ['3.10'] steps: - uses: actions/checkout@master with: From e62907ca2dfe1e6f73f811e04def46c60d3e5bbe Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:31:33 +0900 Subject: [PATCH 07/11] =?UTF-8?q?`aiohttp`=20=EC=9D=98=EC=A1=B4=EC=84=B1?= =?UTF-8?q?=EC=9D=84=20=EC=84=A4=EC=B9=98=ED=95=98=EB=8A=94=20=EA=B3=BC?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/update.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/update.yaml b/.github/workflows/update.yaml index acad971..0d70ce3 100644 --- a/.github/workflows/update.yaml +++ b/.github/workflows/update.yaml @@ -19,6 +19,11 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Install dependencies (`aiohttp`) + run: | + python -m pip install --upgrade pip + pip install aiohttp + - name: Run script run: | python3 ./src/update-json.py ${{ secrets.GITHUB_TOKEN }} From 9912790066ffec69a3f3655427d96363dc8b775b Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:35:17 +0900 Subject: [PATCH 08/11] =?UTF-8?q?=EB=A7=A4=EC=9D=BC=20=EC=98=A4=ED=9B=84?= =?UTF-8?q?=201=EC=8B=9C=EB=A7=88=EB=8B=A4=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=EB=90=98=EB=8F=84=EB=A1=9D=20=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/update.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/update.yaml b/.github/workflows/update.yaml index 0d70ce3..3fb52a4 100644 --- a/.github/workflows/update.yaml +++ b/.github/workflows/update.yaml @@ -1,5 +1,8 @@ name: update-companies on: + schedule: + # 하루에 한 번, 04:00 UTC => 13:00 (GMT+9)에 업데이트 + - cron: '0 4 * * *' workflow_dispatch: jobs: From 55dc0b566c9a8a1e59d5d5ae8c40c57f277360ef Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:35:39 +0900 Subject: [PATCH 09/11] =?UTF-8?q?`main`=20=EB=B8=8C=EB=9E=9C=EC=B9=98?= =?UTF-8?q?=EC=97=90=20=EC=83=88=EB=A1=9C=EC=9A=B4=20=ED=91=B8=EC=8B=9C?= =?UTF-8?q?=EA=B0=80=20=EB=B0=9C=EC=83=9D=ED=96=88=EC=9D=84=20=EB=95=8C?= =?UTF-8?q?=EB=A7=88=EB=8B=A4=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/update.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/update.yaml b/.github/workflows/update.yaml index 3fb52a4..499f887 100644 --- a/.github/workflows/update.yaml +++ b/.github/workflows/update.yaml @@ -3,6 +3,9 @@ on: schedule: # 하루에 한 번, 04:00 UTC => 13:00 (GMT+9)에 업데이트 - cron: '0 4 * * *' + push: + branches: + - main workflow_dispatch: jobs: From 36d3a4ddd79c0618a13b2b50466f35ed886d0cd6 Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:40:15 +0900 Subject: [PATCH 10/11] =?UTF-8?q?`.github.json`=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=9D=84=20`src`=20=ED=8F=B4=EB=8D=94=20=EB=B0=94=EA=B9=A5?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/github.json => github.json | 0 src/update-json.py | 4 ++-- src/update-markdown.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename src/github.json => github.json (100%) diff --git a/src/github.json b/github.json similarity index 100% rename from src/github.json rename to github.json diff --git a/src/update-json.py b/src/update-json.py index 55621ac..a2fbdf8 100644 --- a/src/update-json.py +++ b/src/update-json.py @@ -25,14 +25,14 @@ async def fetchStat(organization, session): return [organization] async def main(): - file_path = os.path.join(dir_path, './github.json') + file_path = os.path.join(dir_path, '../github.json') with open(file_path, 'r') as file: companies = json.load(file) items = [] async with aiohttp.ClientSession(headers={ -'Authorization': f'Bearer {TOKEN}' + 'Authorization': f'Bearer {TOKEN}' }) as session: for company in companies: await asyncio.sleep(0.3) diff --git a/src/update-markdown.py b/src/update-markdown.py index c6c8002..d47a351 100644 --- a/src/update-markdown.py +++ b/src/update-markdown.py @@ -53,7 +53,7 @@ def inject_result_to_readme(readme_path, injected_content): readme.write(updated_content) dir_path = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(dir_path, './github.json') +file_path = os.path.join(dir_path, '../github.json') with open(file_path, 'r') as file: companies = json.load(file) From 6901bfc970bbd0b31eeb8e63aaf68f5a05051f7d Mon Sep 17 00:00:00 2001 From: Junho Yeo Date: Fri, 25 Nov 2022 08:51:00 +0900 Subject: [PATCH 11/11] =?UTF-8?q?README.md=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index f90a6f6..225cb5a 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,12 @@ ## 상위 10개 IT 기업 Github 레포지터리 (숫자 기준) +- 데이터는 매일 오후 1시에 자동으로 업데이트됩니다. `main` 브랜치에 새로운 커밋이 추가되었을 때도 업데이트가 시도됩니다. +- 전체 목록은 [여기](./github.json)에서 확인하실 수 있습니다. + +> **Note**
+> 새로운 회사를 추가하고 싶거나, 오가니제이션 정보 수정이 필요한 경우 [`github.json`](./github.json) 파일을 변경한 뒤에, Pull Request를 올려 주세요. + | **회사명** | **레포지터리 수** | **팔로워 수** | **Github 주소** |