๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด๋ณด๊ธฐ144

[AI ์›Œํฌํ”Œ๋กœ์šฐ ํ”Œ๋žซํผ] n8n์˜ ๋ชจ๋“  ๊ฒƒ n8n์ด๋ž€n8n(์˜์–ด๋กœ๋Š” n-eight-n์ด๋ผ ๋ถ€๋ฆ„)์€ ๋…ธ๋“œ ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ์šฐ ์ž๋™ํ™” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ฝ”๋”ฉ ์—†์ด GUI๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฐ๊ฒฐํ•˜์—ฌ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Zapier, Make.com(๊ตฌ Integromat) ๊ฐ™์€ "๋…ธ์ฝ”๋“œ ์ž๋™ํ™” ๋„๊ตฌ"์˜ ์˜คํ”ˆ์†Œ์Šค ๋ฒ„์ „์ด๋ฉฐ, ๊ธฐ์—… ๋‚ด๋ถ€ ์‹œ์Šคํ…œ์—๋„ ์ž์œ ๋กญ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ ์ด ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ํŠน์ง•Self hosting ์ง€์›์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ์ง์ ‘ ์„ค์น˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(Node.js ๊ธฐ๋ฐ˜). ์—„์ฒญ๋‚œ ์žฅ์ ์ด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์€ ์…€ํ”„ ํ˜ธ์ŠคํŒ…์œผ๋กœ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์„œ๋ฒ„ ํ˜ธ์ŠคํŒ…๋„ ์ปดํ“จํŒ… ์„œ๋ฒ„๋งŒ ์žˆ๋‹ค๋ฉด ์…€ํ”„ ํ˜ธ์ŠคํŒ…์œผ๋กœ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ์‹ถ๋„ค์š”.Node ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ์—ฌ๊ธฐ์„œ์˜ Node๋Š” Node.js๊ฐ€ ์•„๋‹ˆ๋ผ nod.. 2025. 12. 3.
[AI] AI ์—์ด์ „ํŠธ(AI Agent)์˜ ๋ชจ๋“  ๊ฒƒ ๋“ค์–ด๊ฐ€๋ฉฐAI ์‹œ๋Œ€์—์„œ ์ตœ๊ทผ ์—์ด์ „ํŠธ ์ด์•ผ๊ธฐ๊ฐ€ ๋งŽ์ด ๋“ค๋ ค์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. AI ๋ชจ๋ธ์ด ์–ผ๋งˆ๋‚˜ ๋˜‘๋˜‘ํ•œ๊ฐ€์— ์ง‘์ค‘ํ–ˆ์—ˆ๋‹ค๋ฉด ์ด์ œ๋Š” AI ๋ชจ๋ธ์„ ํ†ตํ•ด ์–ด๋–ค ๊ฒƒ์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์„๊นŒ์— ํฌ์ปค์Šค๊ฐ€ ๋งž์ถฐ์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์‹ฌ์— ์žˆ๋Š” AI Agent์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. AI Agent๋ž€๋‹จ์ผ AI์™€๋Š” ๋‹ฌ๋ฆฌ ํŠน์ • ๋ชฉํ‘œ๋ฅผ ์œ„ํ•ด ์‚ฌ๋žŒ์ฒ˜๋Ÿผ ์ž์œจ์ ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ํ–‰๋™ํ•˜๋ฉฐ ์ฃผ์–ด์ง„ ํ™˜๊ฒฝ์— ์ ์‘ํ•ด์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋˜‘๋˜‘ํ•œ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ AI์™€ ๋‹ค๋ฅธ ์ ์€ ์ž์œจ์„ฑ๊ณผ ํ™˜๊ฒฝ ์ ์‘์ด๋‹ค. ์ผ๋ฐ˜ AI๋Š” ์ˆ˜๋™์ ์œผ๋กœ ๋ฌผ์–ด๋ณด๋Š” ์งˆ๋ฌธ์— ๋‹ตํ•˜๋Š” ๋ฐ˜๋ฉด์— ์—์ด์ „ํŠธ๋Š” ํ™˜๊ฒฝ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ์ž์œ ๋กญ๊ฒŒ ํŒ๋‹จํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์˜ IT๋ถ€์„œ๋Š” AI ์—์ด์ „ํŠธ๋ฅผ ์ฑ„์šฉํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ธ์‚ฌ๋ถ€์„œ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.-์  ์Šจํ™ฉ- ์™œ AI Agent๋ฅผ .. 2025. 12. 1.
RTSP(์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์ œ์–ด ํ”„๋กœํ† ์ฝœ)์ด๋ž€? ๋“ค์–ด๊ฐ€๋ฉฐ์‹ค์‹œ๊ฐ„ ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋“ฑ์žฅํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด ๋ฐ”๋กœ RTSP(Real Time Streaming Protocol)์ž…๋‹ˆ๋‹ค.๋ณด์•ˆ ์นด๋ฉ”๋ผ, CCTV ๊ด€์ œ, ๋”ฅ๋Ÿฌ๋‹ ์˜์ƒ ๋ถ„์„, ๋ฐฉ์†ก ์‹œ์Šคํ…œ ๋“ฑ ๋Œ€๋ถ€๋ถ„์˜ ์‹ค์‹œ๊ฐ„ ์˜์ƒ ์ธํ”„๋ผ์—์„œ ํ‘œ์ค€์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฆ„๊ณผ ๋‹ฌ๋ฆฌ RTSP๋Š” “์˜์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ”์ด ์•„๋‹™๋‹ˆ๋‹ค. RTSP์˜ ๋ณธ์งˆ์€ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ œ์–ดํ•˜๋Š” ์—ญํ• ์— ์žˆ์Šต๋‹ˆ๋‹ค. 1. RTSP๋ž€ ๋ฌด์—‡์ธ๊ฐ€?RTSP(Real Time Streaming Protocol)๋Š” ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆผ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์›น์—์„œ HTTP๊ฐ€ ๋ฌธ์„œ ์š”์ฒญ๊ณผ ์ „์†ก์„ ์ œ์–ดํ•˜๋“ฏ, RTSP๋Š” ์˜์ƒ·์Œ์„ฑ ์ŠคํŠธ๋ฆผ์„ ์š”์ฒญํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” “๋ฆฌ๋ชจ์ปจ ์—ญํ• ”์„ ํ•ฉ๋‹ˆ๋‹ค.RTSP๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ.. 2025. 11. 16.
[Go] enum ์‚ฌ์šฉํ•˜๊ธฐ ๋“ค์–ด๊ฐ€๋ฉฐGo๋Š” ๊ณต์‹์ ์œผ๋กœ enum ํ‚ค์›Œ๋“œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์€ ์‰ฌ์šฐ๋‹ˆ ๋ช‡๊ฐœ ์†Œ๊ฐœํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ const + iota๋ฅผ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜ ํƒ€์ž… ์ •์˜(type alias)๋กœ ์—ด๊ฑฐํ˜•๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ iota๋ฅผ ์ด์šฉํ•œ Enumpackage mainimport "fmt"// Weekday ํƒ€์ž… ์ •์˜type Weekday int// iota๋ฅผ ์ด์šฉํ•œ ์—ด๊ฑฐํ˜• ์ƒ์ˆ˜ ์„ ์–ธconst ( Sunday Weekday = iota Monday Tuesday Wednesday Thursday Friday Saturday)func main() { fmt.Println(Sunday, Monday, Tuesday) // 0 1 2 fm.. 2025. 11. 10.
[Go] ์‹ค๋ฌด ํ™˜๊ฒฝ์—์„œ ๋กœ๊ทธ ์ œ๋Œ€๋กœ ๋‚จ๊ธฐ๊ธฐ(Logging) ๋“ค์–ด๊ฐ€๋ฉฐ24์‹œ๊ฐ„ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•˜๋Š” ์‹ค๋ฌดํ™˜๊ฒฝ์—์„œ๋Š” ์–ธ์ œ ์–ด๋–ค ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ• ์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ด๋ฏธ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํƒœ์—์„œ ๊ธฐ์ˆ ์ž๋“ค์ด ์ œ์ผ ๋จผ์ € ํ™•์ธํ•˜๋Š” ๊ฒƒ๋“ค์€ "๋กœ๊ทธ"์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์‹œ์Šคํ…œ์—๋Š” ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ ๋กœ๊ทธ๋ฅผ ์ฐ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ ํ™˜๊ฒฝ์ด ๋ฐ”๋€Œ๋”๋ผ๋„ ๋ณด๊ธฐ ํŽธํ•˜๊ฒŒ ๋กœ๊ทธ ํ™˜๊ฒฝ ์„ค์ •๋ถ€ํ„ฐ ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. lorusgo์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ logํŒจํ‚ค์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ† ์ดํ”„๋กœ์ ํŠธ์—์„œ๋Š” logํŒจํ‚ค์ง€๋งŒ ์‚ฌ์šฉํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์‹ค๋ฌดํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ธˆ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ์„œ๋“œํŒŒํ‹ฐ ํŒจํ‚ค์ง€๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. logrus๋Š” go์˜ log ํŒจํ‚ค์ง€์™€ ํ˜ธํ™˜๋˜๋ฉด์„œ ์ƒ์œ„ ์ง‘ํ•ฉ์ฒด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(๊ณต์‹ ๋งํฌ)go get -u github.com/sirupsen/logrus์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ.. 2025. 11. 10.
[Go] ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ์Šค์ผ€์ค„๋Ÿฌ ๋™์ž‘ํ•˜๊ธฐ(Ticker) . time.Ticker ๋˜๋Š” time.AfterFunc, time.Sleep ๋“ฑ์„ ์ด์šฉํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์•„๋ž˜์—์„œ๋Š” ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” n์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฐ˜๋ณต ์‹คํ–‰๋˜๋Š” ์ž‘์—… ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๊ธฐ๋ณธ์ ์ธ time.Ticker ์‚ฌ์šฉ ์˜ˆ์‹œpackage mainimport ( "fmt" "time")func main() { ticker := time.NewTicker(5 * time.Second) // 5์ดˆ๋งˆ๋‹ค ๋ฐ˜๋ณต defer ticker.Stop() for { select { case t := ํ•ต์‹ฌ ํฌ์ธํŠธtime.NewTicker(d)๋Š” ์ผ์ • ์ฃผ๊ธฐ๋กœ ์ฑ„๋„์— ์ด๋ฒคํŠธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.for + select ๊ตฌ๋ฌธ์œผ๋กœ .. 2025. 11. 7.