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

์ „์ฒด ๊ธ€110

[Go] Golang ๊ธฐ๋ณธ ์†Œ๊ฐœ(ํƒ€์ž…, ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ๋ฌธ๋ฒ•) โœ… ํƒ€์ž… go์–ธ์–ด๋Š” ์–ธ์–ด์ฐจ์›์˜ ํ‚ค์›Œ๋“œ๊ฐ€ 25๊ฐœ๋ฐ–์— ์—†๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋น„๊ตํ•˜๋ฉด ํ™•์‹คํžˆ ์ ์€ ๊ฒƒ์„ ์•Œ ์ˆ˜์žˆ๋‹ค. ์ž๋ฃŒํ˜•์€ ์ •์ˆ˜(int, uint), ์‹ค์ˆ˜(float), ๋ฌธ์ž/๋ฌธ์ž์—ด(string), ๋ถˆ๋ฆฌ์–ธ(bool), ๋ฐ”์ดํŠธ(byte), rune(int32์™€ ๊ฐ™์Œ), complex(64, 32)๊ฐ€ ์žˆ๋‹ค. โœ… ๋ณ€์ˆ˜ ๋ณ€์ˆ˜ ์„ ์–ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. var x int = 10 var arr [5]int // ๋ฐฐ์—ด var p *int // ํฌ์ธํ„ฐ const C int = 10 // ์ƒ์ˆ˜ ์„ ์–ธ ๋ณ€์ˆ˜ x๋Š” intํ˜•์ด๋‹ค ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ž. ๐Ÿงจ ์ž๋ฃŒํ˜• ์ถ”๋ก  var i = 10 var p = &i i := 10 p := &i ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋ฃŒ๋ฅผ ์ถ”๋ก ํ•œ๋‹ค. var๋ผ๋Š” ํ‚ค์›Œ๋“œ ์—ญ์‹œ :=์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿงจ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ C ์–ธ์–ด์˜ si.. 2023. 4. 16.
[Linux] deamon๊ณผ fork ์ด์•ผ๊ธฐ โœ… PID์™€ PPID ๋ฆฌ๋ˆ…์Šค์—์„œ ps๋ช…๋ น์–ด๋Š” ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค€๋‹ค. ps -al๋กœ ์ž์„ธํ•œ ๋ชฉ๋ก์„ ๋ณด๋ฉด pid์™€ ppid๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, pid๋Š” process id, ppid๋Š” parent process id๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ps ๋ช…๋ น์–ด ๋˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์–ธ์ œ ์ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ์‹œํ‚ฌ ์ง€ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ ๋Œ€๊ธฐํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ ธ์žˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค๊ฐ€ ๋ถ€ํŠธ๋˜๋ฉด ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด init์ธ๋ฐ, ๋ฆฌ๋ˆ…์Šค์˜ ๋ชจ๋“  ๋ช…๋ น์–ด๋ฅผ ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์œ ๋‹‰์Šค์˜ ๋ชจ๋“  ๋ช…๋ ์–ด ํ”„๋กœ๊ทธ๋žจ์€ init ํ”„๋กœ๊ทธ๋žจ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. init์ด PID๊ฐ€ 1์ž„์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. pid๊ฐ€ ๋น ๋ฅผ ์ˆ˜๋ก ๋จผ์ € ์‹คํ–‰๋œ ํ”„๋กœ์„ธ์Šค์ด๋ฏ€๋กœ ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์‹œ์ž‘๋˜.. 2023. 4. 13.
[C/C++] 7. ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑ(windows/linux) C/C++์€ ์ปดํŒŒ์ผ ์–ธ์–ด์ด๋ฉด์„œ ํ”Œ๋žซํผ ์ข…์†์ ์ธ ํŠน์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜๋ฉด ํ”Œ๋žซํผ์— ์ข…์†๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผํ•ด์„œ ์–ป์€ ์‹คํ–‰ํŒŒ์ผ์ด ๋งŒ์•ฝ ํ”Œ๋žซํผ์ด ๋‹ค๋ฅด๋‹ค๋ฉด ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค. ๋Œ€ํ‘œ์ ์ธ ํ”Œ๋žซํผ์ธ ์œˆ๋„์šฐ์™€ ๋ฆฌ๋ˆ…์Šค์—์„œ ๊ฐ๊ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž. โœ… windows ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ๋Š” Visual Studio๊ฐ€ 90% ์ด์ƒ์˜ ์ ์œ ์œจ์„ ๋ณด์ธ๋‹ค. ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— MS๊ฐ€ ๋งŒ๋“  VS์™€ ํ˜ธํ™˜์ด ์ž˜ ๋˜๊ณ , MSVC ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ž์ฒด์ ์œผ๋กœ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— VS๋งŒ ์„ค์น˜ํ•ด๋„ ๋ณ„๋‹ค๋ฅธ ์ถ”๊ฐ€๋„๊ตฌ๊ฐ€ ํ•„์š” ์—†๋‹ค. ์ปดํŒŒ์ผ, ์‹คํ–‰, ๋ถ„์„๊นŒ์ง€ ํ•œ IDE์—์„œ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•˜๋‹ค. ๋‹ค๋งŒ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๋งŒํผ ์„ค์น˜ ์šฉ๋Ÿ‰์ด ํฌ๊ณ  ๋ฌด๊ฒ๋‹ค. ํ˜„์žฌ๋Š” Visual Studio 2022๊นŒ์ง€ ๋‚˜์™€์žˆ๋‹ค. ์„ค์น˜๋Š” ์•„๋ž˜ .. 2023. 4. 11.
Makefile ๊ธฐ์ดˆ โœ… ๊ธฐ๋ณธ makefile ์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํŒŒ์ผ ํ•˜๊ฒŒ ๋ ๋•Œ๋Š” gcc/g++๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค. gcc -c main.c usa.c kor.c gcc -o app.out main.o usa.o kor.o ์—ฌ๊ธฐ์„œ ๋˜‘๋˜‘ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๋ฆฌ๋ˆ…์Šค๋Š” gcc -o app.out main.c usa.c kor.c ๋ฅผ ํ†ตํ•ด ์œ„ ๋‘๊ณผ์ •์„ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. โœ… Makefile ๋งŒ๋“ค๊ธฐ TARGET : DEPENDENCY command TARGET์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” DEPENDENCY๊ฐ€ ํ•„์š”ํ•˜๋‹ค. command ๋ช…๋ น์„ ํ†ตํ•ด TARGET์„ ๋งŒ๋“ ๋‹ค. โœ”๏ธ ex1) ๊ธฐ๋ณธ์ ์ธ Makefile ์ฒซ ๊ตฌ์„ฑ (main.c kor.c usa.c → app.out) app.out : main.o kor.o usa.o gcc -o app.out m.. 2023. 4. 11.
์ถ”์ƒ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Abstract Singleton) ์ถ”์ƒ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ์ถ”์ƒํ™” ๋˜์–ด ์žˆ๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์ƒ์†๋ฐ›์•„์„œ, ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ 5๊ฐœ๋ผ๋ฉด, 5๊ฐœ ๋ชจ๋‘ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์ ์šฉํ•˜๊ธฐ ๋ณด๋‹จ ์ƒ์†๊ณผ ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•ด์„œ ์ถ”์ƒํ™”๋œ ์‹ฑ๊ธ€ํ†ค์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ˆ๊นŒ ๋”ฐ๋ผํ•ด๋ณด์„ธ์š” :) 1. ์ƒ์† ๋ฐ›์„ ์ถ”์ƒํ™” ํด๋ž˜์Šค๋ฅผ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๊ตฌํ˜„. class SingletonTemplate { public: T* GetInstance() { if ( m_instance == nullptr ) { m_instance = new T(); } return m_instance; } private: SingletonTemplate(); static T* m_instance; } Lasy create๋กœ ๊ตฌํ˜„ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. GetInstance๊ฐ€ ์ฒ˜์Œ ํ˜ธ.. 2023. 3. 20.
vcpkg๋ฅผ ์“ฐ์ž ํ•ญ์ƒ C/C++ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ธํ•ด ๊ณ ํ†ต๋ฐ›์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ์ข…์†์ ์ด๋ฉด์„œ ๋ฌด๊ตฌํ•œ ์—ญ์‚ฌ๋ฅผ ๊ฐ€์ง„ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ์ตœ๊ทผ์— ๋‚˜์˜จ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ์šฉํ•˜๊ธฐ๊ฐ€ ๊นŒ๋‹ค๋กœ์› ์ฃ . node์ง„์˜์˜ npm๊นŒ์ง€๋Š” ์•„๋‹ˆ์ง€๋งŒ C/C++์ง„์˜์—์„œ๋„ MS๊ฐ€ ๋งŒ๋“  vcpkg๋ฅผ ์“ฐ๋Š”๊ฒŒ ๊ทธ๋‚˜๋งˆ ํƒˆ๋ชจ์˜ ์†๋„๋ฅผ ๋Šฆ์ถฐ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. vcpkg์˜ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://vcpkg.io/en/index.html vcpkg - Open source C/C++ dependency manager from Microsoft Easy To Use Download and build popular libraries in a single step. Never worry about upstream dependenc.. 2023. 3. 19.