๐ Note (43) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ VSCODE * JDK SE ์ฌ๋ฌ๊ฐ์ง ๋ฒ์ ์ฌ์ฉ์ ์ธ์ํ ์ ์๋๋ก ์ค์ ! VSCODE์์ Java๊ด๋ จ ํ์ฅํ๋ก๊ทธ๋จ์ ์ค์นํ๋ฉด Language Support for Java(TM) by Red Hat์ ์ค์นํ๊ฒ ๋๋ค. ์ด ์น๊ตฌ๊ฐ ๋ฒ์ 0.65.0๋ถํฐ ์ต์ JDK๋ฅผ 11๋ก ๋ณ๊ฒฝํด๋ฒ๋ ธ๋ค๊ณ ํ๋ค. ๊ทธ๋ผ ๋ค๋ฅธ ๋ฒ์ ์ ์ฐ๋ ์ฌ์ฉ์๋ VSCODE๋ฅผ ๋ชป ์ฐ๋ ๊ฒ์ธ๊ฐ!! ๊ทธ๋ด๋ฆฌ๊ฐ ์๋ค. runtime ํ๊ฒฝ ๋์์ ์ํด setting.json์ java.configuration.runtimes์ด ์ถ๊ฐ๋์๋ค. setting.json์ ๋ด์ฉ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ ๊ฒ ์ด๋ค! ์ด๋ป๊ฒ? ์๋์ ๊ฐ์ด ๐! ๊ฐ. ์ข์ธก ์๋จ File > Preference > Setting ์ ๋๋ฅด๊ฑฐ๋ Ctrl + , ๋ก ์ค์ ์ฐฝ์ ์ด์ด์ค๋ค. ๋. ๊ฒ์์ฐฝ์ java home์ ๊ฒ์ ํ java:Home ์ด์ฉ๊ตฌ ๋ฐ๋ก ์๋ Edit.. VSCODE * Extensions. ํ๊ตญ์ด ์ค์ vscode UI๋ฅผ ํ๊ธํ ์์ผ์ค๋ค. ์ค์น ํ locale์์ ์ค์ ๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค. ์์ด๋ก ์ตํ์๋ ๋ง์ ๊ฐ์ง์ ์์ง๋ง ๊ทธ๋๋ ํน์ ๋ชจ๋ฅด๋ ๋ฒ์ญํด์ฃผ์ ๋ถ๋ค๊ป ๊ฐ์ฌ๋ฅผ ๋๋ฆฌ๋ฉฐ ๋ค์ด๋ก๋ํ์ฌ ๋๋๋ค ๐!! VSCODE * Template04. GitHub Theme ์ค์น๋ ์ ํ๋๋ฐ ์ ์ง ์๊พธ ๋์ด ๊ฐ๋ ํ ๋ง. ํน์๋ผ๋ ๋์ค์ ์ฐพ๊ณ ์ถ์์ง ๋ชจ๋ฅด๋๊น ์ผ๋จ ๋ชจ์ ๋๊ธฐ๋ก ํ๋ค. VSCODE * Template03. Horizon Theme ์์์ด ์ง๋ ๋ฏํ ๋๋์ด๋ฉด์ ํํฌํํฌํ๋ค. ์์ฃผ ๊ฐ๋ ์ด๋ฐ ํํฌํํฌํ ์ฐฝ์ ์ํ ๋๊ฐ ์์ด์ ๋ค์ด ๋ฐ์๋ค. Dark ๋ชจ๋๊ฐ ์๊ธด ํ์ง๋ง ์์๋๋์ด ์ ํ ์ ๋๊ธฐ๋ ํ๊ณ ํํฌ์ ๊ธฐ์ด๋ ์์ด Bright๋ง ์ธ ๊ฒ ๊ฐ๊ธด ํ๋ค. VSCODE * Template02. Ayu ์์๋ค..!! ๋ญ๊ฐ ์๊ธฐ์๊ธฐํ ๊ฒ ๊ฐ์ผ๋ฉด์๋... ๊น๋ํ! ๊ธ์จ๊ฐ ๊ฐ๋ก๋ก ์ข ๋ ๋์์ผ๋ฉด ํ๋ ๋ฐ๋์ด ์๊ธด ํ์ง๋ง.. ํฌ๊ฒ Light ๋ฒ์ ๊ณผ Mirage, Dark 3๊ฐ์ง ๋ฒ์ ์ด ์๊ณ , ์ฝ๋ฉ์ฐฝ ๋ฉ๋ด์ฐฝ์ ์์ ๊ตฌ๋ถํ๋ ๋ฒ์ ์ด ํฌํจ๋์ด ์๋ค. Light ๋ฒ์ ์ด ์ ์ผ ์๋ป๋ณด์ธ๋ค. VSCODE * Template01. Noctis ์์๊ณ ์๊ธฐ์๊ธฐํด ๋ณด์ด๋ ํ ํ๋ฆฟ์ด๋ค. ์ด๋์ด ์๋ค ๋ณด๋ค๋ ๋ฐ์ ์์ ์ ์ฉํ์ ๋ ๋ ์๋ป๋ณด์ธ๋ค. ์๋ ์ ์ฉ ์ด๋ฏธ์ง๋ฅผ ์ฒจ๋ถํด๋์๋ค. ์ด๋ฏธ์ง๋ง ๋ณด๊ณ ์๊ฐํ์ ๋ ์ฃผ์๊ณผ ์๋ฃํ ๊ทธ๋ฆฌ๊ณ ๋ช๋ช ์์ฝ์ด๋ค์ ์ฌ์ฉ๋์ง ์์๋์ถ๋ค. ์์๊ธดํ๋ฐ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ํ ๋๋ ๋ค๋ฅธ ํ ๋ง๋ก ๋ฐ๊ฟ์ฃผ์ด์ผ ํ ๊ฒ ๊ฐ๋ค๐คฃ.. Notion * ๋ฌด๋ฃ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฐ? ๊ธฐ๋ณธ์ ์ผ๋ก Free ๋ฒ์ ์ ๋น์ฐํ ๋ชจ๋๊ฐ ๋ฌด๋ฃ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋จ, 1000 Block์ ์ ํ์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ์ค ์ ๊ธฐ๋กํ ์ ์๋ ๊ฒ์ด ๋ง์ง๋ ์๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด ์๋๊ฐ??? ํ์ฌ(2020/03/10)๋ก์จ๋ ํ๋์ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ๋ก, Notion for Education ๊ต์ก ๊ณ์ (๋ํ๊ต, ๋ํ์)์ ์ด์ฉํ๋ ๊ฒ์ด๋ค. ๊ต์ก ๊ณ์ ? .ac ๋๋ .edu ๋ฑ ๊ต์ก ๊ด๋ จ ๋๋ฉ์ธ์ด ํฌํจ๋ ์ด๋ฉ์ผ ๊ณ์ ์ ์ด์ผ๊ธฐ ํ๋ค! ๊ต์ก ๊ณ์ ์ ์ฌ์ฉํ์ฌ ์ด๋ฉ์ผ ์ธ์ฆ์ ํ๋ฉด Personal ์๊ธ์ ๋ฅผ 0์์ ๋ฌด์ ํ ์ฌ์ฉํ ์ ์๋ค! ๊ตญ๋ด์์ ํ์์ด ์ฌ์ฉํ๋ ์ด๋ฉ์ผ ๋๋ฉ์ธ์ ๊ต์ก ๊ธฐ๊ด์ด ์ฌ์ฉํ๋ ๋๋ฉ์ธ์ธ .ac.kr ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ค์ ์์ผ๋ฏ๋ก, ๊ต์ก ๊ธฐ๊ด์์ ๋ฐ๊ธ๋ฐ์ ์น ๋ฉ์ผ์ด๋ผ๋ฉด ์๋ํด.. Monkey Patch (๋ฉํค ํจ์น) A monkey patch is a way for a program to extend or modify supporting system software locally (affecting only the running instance of the program). ํ๋ก๊ทธ๋จ์ ํ์ฅํ๊ฑฐ๋, ๋ก์ปฌ ์์คํ ์ํํธ์จ์ด๋ฅผ ์ง์ํ๊ณ ์์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค(์ค์ง ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค์ ์ํฅ์ ๋ฏธ์น๋ค). ๐ Monkeypatching the Standard Library ๋ฐํ์์์์ ํจ์, ๋ฉ์๋, ์์ฑ์ ๋ฐ๊พธ๋ ๊ฒ์ ์ด์ผ๊ธฐํ๋ค. ์์ค์ฝ๋๊ฐ ์๋ ์๋ํํฐ ์ ํ์ ์ฌ์ฉํ๋ ์ค ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ํ์ฅ์ ์ํด ์ฌ์ฉํ๋ค. ๋ฐํ์ ์คํ์ค ๋ฉ๋ชจ๋ฆฌ์์ ์ค๋ธ์ ํธ์ ์ ์ฉ๋๋ค. ๊ฐ๋ฅํ ์ธ์ด๋ก๋ Javascript, Python, PHP,.. SSL(TLS)์ ๋ํ์ฌ, ๊ฐ๋จํ ์์๋ณด๋ ๋์นญํค/๊ณต๊ฐํค python genvet module์ ์ดํด๋ณด๋ค๊ฐ SSL์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์ ํ์๋ ๊ฒ์ ๋ณด์๋ค. ๋์ฒด SSL์ด ๋ฌด์์ผ๊น ์ถ์ด์ ๊ณต๋ถ๋ฅผ ์์ํ๋ค. ์ผ๋จ SSL์ ๋ํด ์์๋ณด๊ธฐ์ ์ HTTP์ HTTPS์ ์ฐจ์ด์ ์ ๋ณด์๋ฉด, HTTP๋ Hypertext Transfer Protocol๋ก ํต์ ๊ท์ฝ์ค์ ํ๋๋ค. HTTPS๋ HTTP์์ S๊ฐ ์ถ๊ฐ๋ ํํ๋ก ๋ณด์์ด ๊ฐํ ๋ HTTP์ธ๋ฐ, S๋ Over Secure Socket Layer์ ์ฝ์์ด๋ค. ๊ฐ๋ HTTPS์ SSL์ ๊ฐ์ ๊ฒ ์ฒ๋ผ ์๊ธฐํ๋ ์ฌ๋๋ค์ด ์๋๋ฐ, ์๋ฐํ ๋งํด์ ๋ค๋ฅธ ๊ฒ์ด๋ค. ์์ ์ฌ์ง์์ ์ฒ๋ผ, SSL์ด ์ ์ฉ๋ ์์๋ Application Layer๋ค์ HTTP, FTP, Telnet ๋ฑ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๊ณ ๊ทธ ์ค์์ HTTP์ ์ ์ฉํ์ฌ ์ฌ์ฉํ.. Pycharm * ์ฌ์ฉ์ ๋ฐ์ค, ๋ฌผ๊ฒฐ ํ์ ๋ค๋ฅธ ์๋ํฐ์์ ์ฝ๋ฉํ ๋ด์ฉ์ Pycharm์ผ๋ก ์ฎ๊ฒผ๋๋ฐ ์ฝ๋ ์ ์ฒด์ ๋ฌผ๊ฒฐ์ด ์๊ธฐ๋ ๊ฒ์ด ์๋๊ฐ.. ์์๋ณด๋ Pycharm์๋ PBP(Python Enhance Proposal)8์ด๋ผ๋ ์ฝ๋ฉ ์คํ์ผ ๊ฐ์ด๋๊ฐ ์ค์น๋์ด์๋ค. ๋ฐ๋ผ์, ํด๋น ๋ฐ์ค์ ์ด ๊ฐ์ด๋์ ๋ง์ด ์๋ค๊ณ ์๋ ค์ฃผ๋ ๋ด์ฉ์ด๋ค. ์ด ์ฝ๋ฉ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ํด์งํ ์๋ ์๊ณ , ๋ฐ๋ผ์ ์ฝ๋ฉํ ์๋ ์๋ค. ํด์ง๋ฅผ ์ํ ๊ฒฝ์ฐ ์๋ ์ฐธ์กฐ๋ด์ฉ์์ ํค์ฝค๋ฐฑ์ ๊ฐ๋ฐ ์ด์ผ๊ธฐ๋ฅผ Clickํ๋ฉด ๋๋ค. PBP8 -- Style Guide for Python Code ๊ฐ์ด๋๋ฅผ ์์๋ณด๊ณ ์ถ๋ค๋ฉด ์ฐ์ PBP8์ Clickํ๋ฉฐ ๋๋ค. Thanks for ๐ ํค์ฝค๋ฐฑ์ ๊ฐ๋ฐ ์ด์ผ๊ธฐ Codecov? ๋ญ๋ ๋.. ์ฝ๋.. ์ปค๋ฒ๋ฆฌ์ง...๋ ๋...OTL PyPI์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ํ๊ณ ์๋๋ฐ ์ด๋ฐ ํ์๋ฅผ ๋ณด์๋ค. ์ฝ๋๊ฐ ์์ฑ๋์ง ์์๋ค๋ ๋ป์ธ๊ฐ ํ๊ณ ์๊ฐํ๋ ๋ฌด์งํ ๋๋..๐ Codecov๊ฐ ๋ฌด์์ธ์ง ์ฐพ์๋ณด์๊ณ ์ ์ํ๋๋ฌด ์ ํ์๊ฐ ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ์ธก์ ํด์ฃผ๋ ๋๊ตฌ๋ค ์ค ํ๋์ธ ๊ฒ์ ์์๋ค. PyPI์์ ์ ํ์๋ฅผ ๋๋ฅด๋ฉด ํด๋น ์ฌ์ดํธ๋ก ์ด๋ํ๋๋ฐ ์ฌ์ดํธ ์ด๋ฆ๋ Codecov์ด๋ค. ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง( Code Coverage )๋? ์ํํธ์จ์ด์ ํ ์คํธ๊ฐ ์ผ๋ง๋ ์ฝ๋๋ฅผ ์ ์ปค๋ฒํ๊ณ ์๋ ๊ฐ๋ฅผ ๋ํ๋ด๋ ์งํ ์ค ํ๋, ์ํํธ์จ์ด์ ํ ์คํธ๋ฅผ ๋ ผํ ๋ ์ผ๋ง๋ ํ ์คํธ๊ฐ ์ถฉ๋ถํ ๋์๋์ง๋ฅผ ๋ํ๋ด๋ ์งํ ์ค ํ๋๋ผ๊ณ ํ๋ค. . . .๐;; ์ฝ๊ฒ ๋งํด์ ์ํํธ์จ์ด ํ ์คํธ๋ฅผ ์งํํ์ ๋ ์ฝ๋ ์์ฒด๊ฐ ์ผ๋ง๋ ์คํ๋์๋๋ ๊ฒ์ ๋ํ๋ด๋ ๊ฒ ์ด๋ค! = ์์ค ์ฝ๋๊ฐ ํ ์คํธ๋ ์ ๋.. ์ฝ๋ฃจํด vs ์ค๋ ๋ Python network modules๋ฅผ ๊ฒ์ํ๋ค ๋ณด๋, ๊ฐ ๊ฐ์ network module๋ค์ด coroutine์ ์ด์ฉํด์ ๋ง๋ค์๋ค๋ ๋ฌธ์ฅ์ ์์ฃผ ๋ณด๊ฒ ๋์๋ค. ๋๋ถ์ด Coroutine์ด Thread์ ๋น์ทํ๊ฒ ์คํ์ค๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ๋์์ด ๋ค๋ฅด๋ค๋ ๊ฒ๋, ๊ทธ๋์ ๋ ๊ฐ์ง์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ์์๋ณด๊ธฐ๋ก ํ๋ค. ๋ ๊ฐ์ง์ ์ฐจ์ด์ ์ ์๊ธฐ์ ์ ์์๋ฌ์ผํ๋ ๊ฒ์ผ๋ก ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ๋ํ ๋ด์ฉ์ด ์๋ค. >> 2020/03/05 - [๐ Note] - ๋์์ฑ vs ๋ณ๋ ฌ์ฑ ( Concurrency vs Parallelism ) At stackoverflow Coroutines are a form of sequential processing: only one is executing at any given time.. ์ด์ 1 2 3 4 ๋ค์