cuttlepool ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ pip install cuttlepool ํ๋ฉด ๋๋ค๊ณ ํ๋๋ฐ, ๊ณ์ import ์๋ฌ๊ฐ ๋์ ๋๋ฌด ํ๊ฐ ๋ฌ๋ค. ๋ด๊ฐ ์คํ์ํค๋ py๋ /mnt ๊ฒฝ๋ก ์๋์ ์๊ณ cuttlepool์ /usr ๊ฒฝ๋ก ์๋์ ์ค์น ๋๋ค. pip freeze๋ก ์ค์น๋ ๋ชจ๋๋ ๋ณด๊ณ ํ๋๋ฐ ์ ํ ๋ฌธ์ ๊ฐ ์์ด์ ์ง์ฆ์ด ๋ฌ๋ค. ์ด๊ธ์ ๋์ ๊ฐ์ ์ฌ๋๋ค์ ์ํ ํ์ ๊ธ....โ
์คํ์ํค๊ณ ์ํ๋ py ํ์ผ์์ import sys sys.path.insert(0,'/usr ์ด์ฉ๊ตฌ(๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก)') ํด์ฃผ๋ฉด ๊ทน๋ฝ! ใ
ใ
ใ
๊ฐ์ /mnt ์์ ์๋๊ฒ ์๋๋ผ์ ์ ๋ ๊ฒ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ก ์ถ๊ฐํด์ค์ผ ๊ฐ๊ณ ์ฌ ์ ์๋ค๊ณ ํ๋ค. ํด.. ๊ทธ๋ผ ์ด๋ง.. ์ฆ๊ฑฐ์ด ๊ฐ๋ฐ์ํ ๋์ธ์~
๐ Language/Python
python 3.x ๋ฒ์ ์ ์ฌ์ฉ์ค์ ๊ฐ์๊ธฐ ์ ๋๋ print("์์์๊ฐ :", datetime.datetime.now()) ์ฌ๊ธฐ์ ์๋ฌ๋ฅผ ๋ฑ์๋ค ๊ทธ๋์ ์์นํ ๊ฒฐ๊ณผ ๋งจ ์์ # -*- coding: utf-8 -*- ์ด๊ฑธ ๋ถ์๋๋ฐ ๋ ์์์๊ฐ ์ ๋ถ๋ถ์ด ์ด๋ฐ์์ผ๋ก ๋์ค์ง ์๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ๊ธฐ์กด ์ฝ๋๋ฅผ print("์์์๊ฐ : {}".format(datetime.datetime.now())) ์ด๋ ๊ฒ ๋ฐ๊ฟจ๋๋ ์ ์์ ์ผ๋ก ๋์๋ค. ์ ๊ฐ์๊ธฐ ์ด๋ ๊ฒ ๋๋๊ฑด์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. ์ด์จ๋ ํด๊ฒฐ
1. ์ฑ๊ธํค ํจํด (Singleton Pattern) ์ด๋? - ์ํํธ์จ์ด ๋์์ธ ํจํด์ผ๋ก์, ์ฑ๊ธํด ํจํด(Singleton pattern)์ ๋ฐ๋ฅด๋ ํด๋์ค๋, ์์ฑ์๊ฐ ์ฌ๋ฌ ์ฐจ๋ก ํธ์ถ๋๋๋ผ๋ ์ค์ ๋ก ์์ฑ๋๋ ๊ฐ์ฒด๋ ํ๋์ด๊ณ ์ต์ด ์์ฑ ์ดํ์ ํธ์ถ๋ ์์ฑ์๋ ์ต์ด์ ์์ฑ์๊ฐ ์์ฑํ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค. ์ฃผ๋ก ๊ณตํต๋ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ๊ฐ ์์ฑํด์ ์ฌ์ฉํ๋ DBCP(DataBase Connection Pool)์ ๊ฐ์ ์ํฉ์์ ๋ง์ด ์ฌ์ฉ๋๋ค. ๊ฐ๋จํ ๋งํด์, ํ๋ฒ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ ์ผ๋ก ์ฌ๋ ค๋๊ณ , ์ด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ ์ญ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ฌ์ฃผ๋ ํจํด์ด๋ค. 2. ์ฑ๊ธํค ํจํด ์ฐ๋ ์ด์ (1) ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ๋ค. (2) ๋ค๋ฅธ ํด๋์ค์ ์ธ์คํด์ค๋ค์ด ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ธฐ ์ฝ๋ค. (3) ..
1. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (Object-Oriented Programming, OOP)๋? - ๋จ์ด์ ๋ป๋ถํฐ ์ดํด๋ณด๋ฉด ๊ฐ์ฅ ํต์ฌ ๋จ์ด๋ '๊ฐ์ฒด'์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฒด๋ ๋ฌด์์ผ๊น? ์ด๋ ํ ์ญํ ์ ํ๋ ์ฌ๋ฌผ์ด๋ ์์ง์ด๋ ๊ฒ ๋ชจ๋ ๋ค ๊ฐ์ฒด๊ฐ ๋ ์ ์๋ค. ์ด๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ๊ด์ ์์ ๋ณด๋ฉด, ํน์ ์ญํ ์ ํ๋ ๋ฉ์๋,๋ณ์, ์๋ฃ ๊ตฌ์กฐ ๋ฑ์ด ๋ ์ ์๋ค. ๋ฐ๋ผ์, ์ด๋ฐ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ปค๋ค๋ ํ๋ก ๋ณด๋ฉด, ํน์ ์ญํ ๋ณ๋ก ์~ ๋ฌถ์ด ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ๋ค. ์ด๋ฐ ๊ฒ์ ์ผ๋ํด ๋๊ณ ์ฅ์ , ํน์ง ๊ทธ๋ฆฌ๊ณ ์ค๊ณ ์์น ๋ฑ์ ๋ณด๋ฉด ์ดํด๊ฐ ๋น ๋ฅด๋ค. 2. OOP ์ฅ์ - S/W์ ์ง์ ํฅ์ํ๊ธฐ ์ํด ๊ฐํ ์์ง๋ ฅ(Strong Cohesion)๊ณผ ์ฝํ ๊ฒฐํฉ๋ ฅ(Weak Coupling)์ ์งํฅํด์ผ ํ๋๋ฐ, OOP์ ๊ฒฝ์ฐ ํด๋..
์์ ํ์ํ ๋ฐฐ๊ฒฝ๋ค์ ๋ํด์ ์ด๋์ ๋ ์ดํด๋ณด๊ณ ๋๋ ๊ด๋ จ๋ ์๋ฃ๋ค์ ๋ณด๋๋ฐ ํจ์ฌ ์์ํจ์ ๋๊ผ๋ค. ์ฌ์ค asyncio์ ๋ํด ๊ณต๋ถํ๋ ๊ฒ = ๋ฐฐ๊ฒฝ์ง์ ๊ณต๋ถํ๊ธฐ ์ด๊ฒ์ธ ๊ฒ ๊ฐ๋ค. ์์ง ๋ถ์กฑํ ๊ฐ๋
๋ค์ ์ถํ ํ์ํ ๋ฐฐ๊ฒฝ์ง์ ์๋ฆฌ์ฆ๋ก ์์ฑํด๋ณด๋๋ก ํ ๊ฒ์ด๋ค. 1. Asyncio๋? - ์ผ๋จ Async (๋น๋๊ธฐ) + input/output (์
์ถ๋ ฅ) ์ด๋ผ๋ ๋ป์ด๋ค. - ๋น๋๊ธฐ๋ผ๋ ๊ฒ์ ์ด๋ฏธ์ง๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. - ๋๊ธฐ๋ ์์
1์ด ๋๋๋ ๊ฒ์ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์์
2๋ฅผ ํ๋ ๋ฐ๋ฉด ๋น๋๊ธฐ๋ ์์
1์ด ์งํ๋๋ ๋์ ์์
2๋ ํ ์ ์๋ค. ๊ฐ์์ ์ผ๋ก๋ง ๋ด๋ ์๊ฐ์ด ํ์ ํ ์ ์ฝ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค. - ๊ทธ๋ผ ์ io(์
์ถ๋ ฅ)์ด๋๋ฉด CPU๊ฐ ํ์์ ๋ฉ๋ชจ๋ฆฌ ์ฅ์น๋ค๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์๋ ์ฐจ์ด๋ก ์ธํด CPU์ ์์
..
1. ์ฐ๋ ๋ (Thread)๋? - ํ๋ก๊ทธ๋จ(ํ๋ก์ธ์ค)์ ์คํ ๋จ์์ด๋ฉฐ, ํ๋์ ํ๋ก์ธ์ค๋ ์ฌ๋ฌ๊ฐ์ ์ฐ๋ ๋๋ก ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ๋ค. - ํ๋์ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ฐ๋ ๋๋ค์ ํ๋ก์ธ์ค์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ, ์์ ๋ฑ์ ๊ณต์ ํ๋ค. - ํ๋ก์ธ์ค์ ๊ฐ์ด ์คํ, ์ค๋น, ๋๊ธฐ ๋ฑ์ ์คํ ์ํ๋ฅผ ๊ฐ์ง๋ฉฐ ์คํ ์ํ๊ฐ ๋ณํ ๋๋ง๋ค ์ฐ๋ ๋ ๋ฌธ๋งฅ๊ตํ(context switching)์ ์ํํ๋ค. - ๊ฐ ์ฐ๋ ๋๋ณ๋ก ์์ ๋ง์ ์คํ๊ณผ ๋ ์ง์คํฐ๋ฅผ ๊ฐ์ง๋ค. 2. ํ๋ก์ธ์ค ์ ์ฐ๋ ๋ (1) Process - ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์ด์์ฒด์ ๋ก๋ถํฐ CPU์ ์์คํ
์์์ ํ ๋น ๋ฐ์ ์ ์๋ ๊ฒ์ ๋งํ๋ค. (2) Thread - ์ฐ๋ ๋๋ ํ๋ก์ธ์ค์ ์คํ ๋จ์๋ผ๊ณ ํ ์ ์๋ค. - ํ ํ๋ก์ธ์ค ๋ด์์ ๋์๋๋ ์ฌ๋ฌ ์คํ ํ๋ฆ..
asyncio๋ฅผ ๊ณต๋ถํ๋ ค๋ค๊ฐ ์ ๋ชจ๋ฅด๋ ๋ถ๋ถ์ด ๋ง์์ ๊ทธ๋ฅ ๋ชจ๋ฅด๋ ๋ถ๋ถ๋ถํฐ ๊ณต๋ถํ๊ณ ๋์ด๊ฐ๊ณ ์ ํ๋ค. 1. ์ฝ๋ฃจํด(coroutine) ์ด๋? - cooperative routine์ ์๋ฏธํ๋๋ฐ, ์๋ก ํ๋ ฅํ๋ ๋ฃจํด์ด๋ผ๋ ๋ป์ด๋ค. - ์ฐ์ ๋ฃจํด์ด๋ผ๋ ๊ฐ๋
๋ถํฐ ์ดํด๋ณธ๋ค. def add(a, b): c = a + b # add ํจ์๊ฐ ๋๋๋ฉด ๋ณ์์ ๊ณ์ฐ์์ ์ฌ๋ผ์ง print(c) print('add ํจ์') def calc(): add(1, 2) # add ํจ์๊ฐ ๋๋๋ฉด ๋ค์ calc ํจ์๋ก ๋์์ด print('calc ํจ์') calc() ์ด ์ฝ๋์์ calcํจ์์์ add๋ฅผ ๋ถ๋ ๊ณ , addํจ์๊ฐ ๋๋๋ฉด calc๋ก ๋ค์ ๋์์จ๋ค. ์ด๋, calc๊ฐ ๋ฉ์ธ ๋ฃจํด์ด๊ณ , add๋ ์๋ธ๋ฃจํด์ด ๋๋ ๊ฑฐ๋ค. - ์ด๋ฐ์์..
์ ์
์ด๊ธด ํ์ง๋ง 6๊ฐ์์ ๊ฒฝ๋ ฅ์ ๊ฐ๊ณ ์๋ค๊ณ ๊ผด์ ์๋งํ๋๋ณด๋คใ
logging ์์คํ
์ ๋ํด ๋๋ฌด ์์ผํ๋ ๊ฑฐ ๊ฐ๋น ๊ทธ๋ํ ๋์๊ฒ log๋ ์ธ๋ถ์ถ๋ ฅํ๋ ๊ฒ์ผ๋ก์ ๋๋ฒ๊ทธํ ๋ ๋ฐ๋ก๋ฐ๋ก ๋ณผ ์ ์๋ ๊ทธ๋ฐ ๊ทธ ์ด์๋ ์ดํ๋ ์๋์๋๋ฐ ์น ๋ฐฑ์๋๋ฅผ ํ๋ค์์ ๊ทธ๋ ๋ค๊ณ ์๊ฐํด๋ณด๊ณ ์ถ๋ค.. ์ฌํผ ํ๋ก๊ทธ๋จ์ ์ค์ํ์ง ์์ ๊ฒ ์๋จ ๊ฒ์ ๊นจ๋ฌ์๋ค. 3๋
ํ์ธ ์ง๊ธ ์ด ๊ธ์ ์ฝ์ผ๋๊น ๋๋ฌด ์ฐฝํผํ๋ค ํํ^^.. ๋ก๊ทธ๋ ๊ต์ฅํ ์ค์ํ๋ฏ๋ก ๋ชฐ๋๋ ๋ด ์์ ์ด ์๋ชป๋ ๊ฒ์ด๋ค ํ์ด์ฌ์์ ์ฝ์ ์ถ๋ ฅ๋ฐฉ๋ฒ์ print() ์ด๋ ๊ฒ ์ฐ๋ฉด๋๋๋ฐ, ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ logging ์ ์ฐ๋ฉด ๋ก๊ทธ๋ก์จ ๊ด๋ฆฌ๊ฐ ๋๋ค. logging.error("์๋ฌ๋ฉ์ธ์ง") ์ด๋ฐ์์ผ๋ก ์ฐ๋ฉด ๋๋ค. ๋ก๊น
๋ ๋ฒจ ๋ก๊น
์๋ print()์๋ ๋ฌ๋ฆฌ ๋ก๊ทธ์ ๋ ๋ฒจ์ด ์๋ค. D..