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๋ ์๋ธ๋ฃจํด์ด ๋๋ ๊ฑฐ๋ค. - ์ด๋ฐ์์..
์์ ์ํผ์ ๊ฐ์ ์ ๋ฆฌํ OSI ๋ชจ๋ธ๊ณผ TCP/IP ์ ๋ฆฌ๋ MQTT๋ฅผ ์ํจ์ด์๋ค. 1. MQTT(๋ฉ์์ง ํ์ ํ
๋ ๋ฉํธ๋ฆฌ ํธ๋์คํฌํธ, Message Queuing Telemetry Transport)๋? - ์ฐ์ , Telemetry Transport์ ๋ํด ์์๋ณด์๋ฉด, ์ ์ก์ ์ ์ก์ธ๋ฐ.. ํ
๋ ๋ฉํธ๋ฆฌ ์ด๊ฒ ํฉ์ฑ์ด์ด๋ค. - ์๊ฒฉ์ ์๋ฏธํ๋ 'Tele'์ ์ธก์ ์ ์๋ฏธํ๋ 'Metry'์ ํฉ์ฑ์ด๋ก ์๊ฒฉ์ง์ ์ํ๋ฅผ ๊ฐ์ ๋ฐ ์ ์ดํ๊ธฐ ์ํด ๊ธฐ๊ณ๊ฐ ๊ฐ์ข
๋ฐ์ดํฐ๋ฅผ ๋์งํธ ์ ํธ๋ก ๋ฐ๊ฟ์ ์๊ฒฉ์ผ๋ก ์ก์์ ํ๋ ๊ฒ์ ๋งํ๋ค. - ์ฆ, ์ ์ด์ M2M(Machine-to-Machine)์ ์ํ ํ๋กํ ์ฝ์ธ ์
์ด๋ค. ๋ํ, ์์ฆ์ ์ฌ๋ฌผ์ธํฐ๋ท์๋ ์ฐ์ด๋ ๊ฒฝ๋ ๋ฉ์ธ์ง ์ ์ก ํ๋กํ ์ฝ์ด๋ค. - ์ํคํผ๋์๋ฅผ ๋ณด๋ฉด MQTT๋ฅผ 7๊ณ์ธต์ 7๋ฒ์งธ์ธ ..
ํ๋ก๊ทธ๋๋ฐ์์ ์ ์ผ ์ค์ํ ๊ฒ์ด '์ค๊ณ'์ด๋ค. ์ค๊ณ๋ฅผ ํํํ๊ฒ ํด์ผ ๋
ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ๋ฉ์ด ์๋ ์ฝ๋ฉ์ด ๊ฐ๋ฅํด์ง๋ค. ๋ผ๊ณ ๋ฐฐ์ ๋ค. (ใ
ใ
) ์ฌํผ ์์ง ๋ด ์ง์์ผ๋ก๋ ์ค๊ณ๋ฅผ ํ๊ธฐ์๋ ๋ฌด๋ฆฌ์ด์ง๋ง, ์ค๊ณ๋ฅผ ์ํ ๋ฐฐ๊ฒฝ์ง์์ผ๋ก ๊ผญ ํ์ํ OSI 7Layer ์ TCP/IP ํ๋กํ ์ฝ์ ๋ํด ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ณ ์ ํ๋ค. 1. OSI model ์ด๋? - Open Systems Interconnection Reference Model ์ ์ค์๋ง๋ก ๊ตญ์ ํ์คํ๊ธฐ๊ตฌ์์ ๊ฐ๋ฐํ ๋ชจ๋ธ์ด๋ฉฐ, ํธํ์ฑ์ ๊ด์ ์์ 'ํ์ค' ์ด๋ผ๋ ๋จ์ด๋ ๊ต์ฅํ ์ค์ํ๋ค. ๋ฐ๋ผ์, ๊ฑฐ์ ๋๋ถ๋ถ์ ์ค๊ณ๊ฐ ์ด ๋ชจ๋ธ์ ๋ฐํ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. 2. WHY? - ํฐ ํ์์ ์ด ๋ชจ๋ธ์ ์ฐธ์กฐํ๋ ์ด์ ๋ ํธํ์ฑ๊ณผ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ํ๊ธฐ ์ํจ์ด๋ค. - ์ ํด์ง ๊ธฐ์ค์ด ์์ผ๋ฉด Aํ์ฌ..
์ ์
์ด๊ธด ํ์ง๋ง 6๊ฐ์์ ๊ฒฝ๋ ฅ์ ๊ฐ๊ณ ์๋ค๊ณ ๊ผด์ ์๋งํ๋๋ณด๋คใ
logging ์์คํ
์ ๋ํด ๋๋ฌด ์์ผํ๋ ๊ฑฐ ๊ฐ๋น ๊ทธ๋ํ ๋์๊ฒ log๋ ์ธ๋ถ์ถ๋ ฅํ๋ ๊ฒ์ผ๋ก์ ๋๋ฒ๊ทธํ ๋ ๋ฐ๋ก๋ฐ๋ก ๋ณผ ์ ์๋ ๊ทธ๋ฐ ๊ทธ ์ด์๋ ์ดํ๋ ์๋์๋๋ฐ ์น ๋ฐฑ์๋๋ฅผ ํ๋ค์์ ๊ทธ๋ ๋ค๊ณ ์๊ฐํด๋ณด๊ณ ์ถ๋ค.. ์ฌํผ ํ๋ก๊ทธ๋จ์ ์ค์ํ์ง ์์ ๊ฒ ์๋จ ๊ฒ์ ๊นจ๋ฌ์๋ค. 3๋
ํ์ธ ์ง๊ธ ์ด ๊ธ์ ์ฝ์ผ๋๊น ๋๋ฌด ์ฐฝํผํ๋ค ํํ^^.. ๋ก๊ทธ๋ ๊ต์ฅํ ์ค์ํ๋ฏ๋ก ๋ชฐ๋๋ ๋ด ์์ ์ด ์๋ชป๋ ๊ฒ์ด๋ค ํ์ด์ฌ์์ ์ฝ์ ์ถ๋ ฅ๋ฐฉ๋ฒ์ print() ์ด๋ ๊ฒ ์ฐ๋ฉด๋๋๋ฐ, ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ logging ์ ์ฐ๋ฉด ๋ก๊ทธ๋ก์จ ๊ด๋ฆฌ๊ฐ ๋๋ค. logging.error("์๋ฌ๋ฉ์ธ์ง") ์ด๋ฐ์์ผ๋ก ์ฐ๋ฉด ๋๋ค. ๋ก๊น
๋ ๋ฒจ ๋ก๊น
์๋ print()์๋ ๋ฌ๋ฆฌ ๋ก๊ทธ์ ๋ ๋ฒจ์ด ์๋ค. D..
โป๋ชจ๋ ์ถ์ฒ๋งํฌ๋ ๋๋ณด๊ธฐ๋ฅผ ์ด์ฉํ์ธ์. 1. TTA ์ธ์ฆ : ํ๊ตญ์ ๋ณดํต์ ๊ธฐ์ ํํ(TTA)์์ ์ํํ๋ ์ํ์ ํตํํ๋ฉด ์ฃผ๋ ์ธ์ฆ, ๊ตญ๋ด ์ ์ผ ์ ๋ณดํต์ ๋จ์ฒดํ์ค ์ ์ ๊ธฐ๊ด์ด๋ฉฐ ํ์ค์ ํ์ ์ํ์ธ์ฆ์ ์ํด ๋ง๋ค์ด์ง ๊ธฐ๊ด์. ์ฃผ๋ก ์์๋ณด์์์คํ
๊ด๋ จ์ธ ๊ฒ ๊ฐ๋ค. 2. PJSIP : PJSIP๋ ํ์ค ํ๋กํ ์ฝ์ธ SIP, SDP, RTP, STUN, TURN ๋ฐ ICE๋ฅผ ๊ตฌํํ ๋ฉํฐ๋ฏธ๋์ด ํต์ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ฌ์ฉ์ ๋ฐ์ํ๋ ๋ฒํผ์ค๋ฒํ๋ก์ฐ ํ์์ด ๊ถ๊ธํ๋ค๋ฉด ์ถ์ฒ ๋งํฌ๋ก ๊ฐ๋ฉด ๋๋ค. ๋๋ณด๊ธฐ ์ถ์ฒ: https://engineering.linecorp.com/ko/blog/buffer-overflow-in-pjsip-a-voip-open-source-library/ 3. SNMP (๊ฐ์ด ๋ง ๊ด๋ฆฌ ํ๋กํ ์ฝ, Sim..