๐ฐ42์์ธ (22) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [CPP_Module] Orthodox Canonical Form : ๊ธฐ๋ณธ์์ฑ์, ๋ณต์ฌ์์ฑ์, ํ ๋น์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ, ์๋ฉธ์ Orthodox Canonical Form ๊ธฐ๋ณธ ์์ฑ์ ๊ธฐ๋ณธ ์๋ฉธ์ ๋ณต์ฌ ์์ฑ์ ํ ๋น ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ class A { A(); ~A(); A(const A &a); A &operator= (const A &a); };๋ณต์ฌ์์ฑ์ ๋ฐ๋ก ์ ์ํด์ฃผ์ง ์์๋ default ๋ณต์ฌ์์ฑ์ ์กด์ฌํจ ๊ทธ๋ฐ๋ฐ deep copy๊ฐ ์๋ shallow copyํจ #include class A { private: int *n; public: A() { n = new int(0); } int getN(){ return *n; } void setN(int num) { *n = num; } }; int main(void) { A a; A b(a); std::cout CPP_Module_01 ๊ฐ์ฒด ๋ฐฐ์ด ์์ฑ, ํฌ์ธํฐ์ ๋ ํผ๋ฐ์ค ํ์ , ํจ์ํฌ์ธํฐ, fstream CPP module 01 ex00 zombie ๊ฐ์ฒด๋ฅผ ๋๊ฐ์ง ๋ฐฉ์์ผ๋ก ์์ฑ. ์คํ์ zombie ๊ฐ์ฒด ์์ฑ (randomChump()) ํ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ณด๊ธฐ(newZombie()) heap์ ๋ง๋ค๊ธฐ : new ํค์๋๋ฅผ ์ฌ์ฉํ๋ค. ์๋์ผ๋ก ์๋ฉธ๋์ง ์์ผ๋ฏ๋ก ๋ค ์ฐ๋ฉด delete๋ฅผ ํด์ฃผ์ด์ผํจ ex01 ๊ฐ์ฒด ๋ฐฐ์ด ์์ฑํ๊ธฐ๋ ํ ๋น ํด์ ํ๊ธฐ //zombie ๊ฐ์ฒด n๊ฐ๋ฅผ ๋ฅผ ํ๋ฒ์ ํ ๋น Zombie *z = new Zombie[N]; delete [] z; ex02 pointer ์ reference ํ์ ์ ์ฐจ์ด ์ดํดํ๊ธฐ int n = 0; int *ptr = &n; int &ref = n; ptr ์์๋ n์ด ์ ์ฅ๋์ด์๋ ๊ณณ์ ์ฃผ์๊ฐ์ด ์์. ptr์ ํตํด n์ ์ ๊ทผํ ์ ์์ ๋ฟ ptr๊ณผ n์ ์ ํ ๋ค๋ฅธ ๋ณ์.. CPP_Module_00 CPP module 00 ex00 cpp์ ์ ์ถ๋ ฅ์ iostream ์ ์ฌ์ฉํ๋ค! ๊ฐ์ฒด์งํฅ์ธ cpp๋ stdio ๋ณด๋ค ๊ฐ์ฒด์งํฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ iostream์ ์ฌ์ฉํ๋ ๊ฒ์ด ํธํ๋ค. ์ ๋์ ํ ์ ์๋ ํ์ ์ด ๋ ๋ค์ํ๊ธฐ ๋๋ฌธ! ๊ฐ์ฒด๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์ถ๋ ฅํ ๋ ๋ ํธํ ๊ฒ์ด๋น๋น~ Makefile์ CC CFLAGS๊ฐ ์๋ CXX CXXFLAGS๋ฅผ ์ฌ์ฉํ๋ ์ด์ Makefile์ OBJS์์ .c:.o์ ๊ท์น์ ๋ฐ๋ก ์ ํ์ง ์๊ณ OBJS = $(SRCS:.cpp=.o) ๋ก ํ์ ๋ ! ์ปดํ์ผ ์ต์ ์ด ์๋์ผ๋ก ๋ค์ด๊ฐ์ง์ง ์์!!! NAME = phonebook SRCS = main.cpp Contact.cpp PhoneBook.cpp OBJS = $(SRCS:.cpp=.o) CXXFLAGS = -Wall -Wextr.. [42seoul] philosophers Philosophers Overview ๊ณผ์ ๋ฅผ ํ๊ธฐ ์ ์์์ผ ํ ๊ฒ! : ํ๋ ์ด์์ ์ฒ ํ์๊ฐ ๋ฅ๊ทผ ํ ์ด๋ธ์ ์์ ๊ฐ์ด๋ฐ ์๋ ์คํ๊ฒํฐ๋ฅผ ๋จน์ ์ฒ ํ์๋ eat, think, sleep ์ค ํ๋์ ์ํ๋ฅผ ์ทจํ๊ณ ์์ ์ฒ ํ์์ ์ ๋งํผ ํฌํฌ๊ฐ ์์. ๊ผญ ์์์ผ๋ก ํฌํฌ ๋๊ฐ๋ฅผ ์ก๊ณ ๋จน์ด์ผ ํ๋… ์ฒ ํ์๊ฐ eating์ ๋๋ด๋ฉด sleeping ์์, ์ผ์ด๋๋ฉด thinking ํจ. ์ด ์๋ฎฌ๋ ์ด์ ์ ์ฒ ํ์๊ฐ ๊ตถ์ด ์ฃฝ์ผ๋ฉด ์ข ๋ฃ ๋ชจ๋ ์ฒ ํ์๋ ๋จน์ด์ผ ํ๊ณ ๊ตถ์ผ๋ฉด ์๋ผ! ์ฒ ํ์๋ ์๋ก ์๊ธฐํ์ง ์์, ์๋ก ์ฃฝ์ ์๊ธฐ์ ์๋ค๋ ๊ฒ๋ ๋ชจ๋ฆ ์ฒ ํ์๊ฐ ์ฃฝ๋ ๊ฒ์ ํผํ์.. Global rules ์ ์ญ ๋ณ์ ๊ธ์ง ํ๋ก๊ทธ๋จ์ด ์ธ์๋ก ๋ฐ๋ ๊ฒ : number_of_philosophers : ์ฒ ํ์ ์ == ํฌํฌ ๊ฐ์ time_to.. [Born2beroot] born2beroot ๊ฐ๋ โ virtual machine ์ด๋? 1. ํ์ดํผ๋ฐ์ด์ type1 (native ํน์ bare-metal์ด๋ผ๊ณ ๋ ํจ) : ์ด๋ค ์ํํธ์จ์ด๋ ๋ด๊ฒจ์์ง ์์ ํ๋์จ์ด ์์ ํ์ดํผ๋ฐ์ด์ , host os๊ฐ ์์. ํ์ดํผ๋ฐ์ด์ ๊ฐ os์ ์ข ์๋์ง ์๊ณ ๋ค์์ os๋ฅผ ๊ด๋ฆฌ 2. ํ์ดํผ๋ฐ์ด์ type2 (ํธ์คํธํ๊ฐ์ํ, ์ด๊ฒ ์ฐ๋ฆฌ๊ฐ ์ฐ๋ virtualBox) : ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์. host os์์ ํ์ดํผ๋ฐ์ด์ ๊ทธ ์์ guest os๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ์ https://pearlluck.tistory.com/121 https://gmldbd94.tistory.com/117 โ debian vs centOS 1. debian - ๋ฐฐํฌ๋ ๋๋ฆฌ์ง๋ง ์์ ์ฑ ๋์ - ์จ๋ผ์ธ ์ปค๋ฎค๋ํฐ์์ ๊ฐ๋ฐํ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ - ๊ฐ์ธ ๋ฐ.. [Born2beroot] ๋ฆฌ๋ ์ค sudo ์ค์น ๋ฐ ์ค์ ํ๊ธฐ, secure path ์ค์ ํ๊ธฐ, ๊ทธ๋ฃน ์ถ๊ฐํ๊ธฐ โ sudo ์ค์น ๋ฐ ์ค์ 1. ๋ฃจํธ๊ณ์ ์ผ๋ก ์ ํ su 2. sudo ํจํค์ง ์ค์น apt install sudo 3. id๊ฐ user์ธ ์ฌ์ฉ์ ์ถ๊ฐ adduser user 4. id๊ฐ user์ธ ๊ธฐ์กด ์ฌ์ฉ์๋ฅผ sudo ๊ทธ๋ฃน์ ์ถ๊ฐ adduser user sudo 5. ์ฌ์ฉ์ ์ ธ์ ๋ก๊ทธ์ธ ํ ๋ค์ ๋ช ๋ น์ผ๋ก ์ฌ์ฉ์์๊ฒ ๊ถํ ๋ถ์ฌ๋์๋ ํ์ธ sudo -vโ https://documentation.arcserve.com/Arcserve-UDP/available/7.0/KOR/Bookshelf_Files/HTML/UDPLUG/Content/AgentforLinuxUserGuide/udpl_config_sudo_debian.htm โ /etc/sudoers ํ์ผ ์ค์ sudo๋ ์ ์ ๋ค๋ฅธ ๊ณ์ ์ ๊ถํ์ ๋น๋ ค์ด. v.. [libft] ft_atoi.c ๊ตฌํ ๐atoi โ๏ธ ํจ์ ํ๋กํ ํ์ intatoi(const char *str); โ๏ธ ํจ์์ ์ญํ : str์ intํ์ผ๋ก ๋ฐํํ๋ค. โ๏ธํจ์ ๋ฐํ๊ฐ โ๏ธ ๋ฌธ์์ด์ ์ ์๋ก ๋ฐ๊พธ์ด ๋ฆฌํด ๐์ถ๊ฐ ์ค๋ช ๐ โฟ๋งจ ์์ ๊ณต๋ฐฑ๋ฌธ์๋ ์คํตํจ, ๋ถํธ๋ ํ๋๋ง ์์ด์ผํจ. ์ค๊ฐ์ '0' ~ '9' ์ธ์ ๋ฌธ์๊ฐ ์์ผ๋ฉด ๋ฉ์ถค. โฟatoi์ ๋ฐํ๊ฐ์ (int)strtol(str, (char **)NULL, 10); ์ ๊ฐ๋ค. --> long ๋ฒ์์์ intํ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฒฝ์ฐ, ์ค๋ฒํ๋ก๋ ๊ฐ์ ๊ทธ๋๋ก ๋ฆฌํด --> long ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฒฝ์ฐ, ์์์ผ ๋ 0 ์์์ผ ๋ -1์ ๋ฆฌํดํจ. (โ๏ธ๋งฅ์์๋ long๋ฒ์์ longlong์ ๋ฒ์๊ฐ ๊ฐ๋ค.) โ๏ธ๊ตฌํ #include "libft.h" #include static unsig.. [libft] ft_memcpy, ft_memmove ๊ตฌํ ๐memcpy โ๏ธ ํจ์ ํ๋กํ ํ์ void*memcpy(void *restrict dst, const void *restrict src, size_t n); โ๏ธ ํจ์์ ์ญํ : ๋ฉ๋ชจ๋ฆฌ์์ญ src๋ก๋ถํฐ n ๋ฐ์ดํธ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ญ dst์ ๋ณต์ฌํ๋ค. โ๏ธํจ์ ๋ฐํ๊ฐ โ๏ธ dst ๐์ถ๊ฐ ์ค๋ช ๐ โฟ dst์ src์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๊ฒน์ณ์ ธ์๋ ๊ฒฝ์ฐ๋ undefined behavior์ด๋ค. (๊ฒน์ณ์ ธ ์๋ ๊ฒฝ์ฐ๋ memmove()๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.) โ๏ธ๊ตฌํ #include "libft.h" void*ft_memcpy(void *dst, const void *src, size_t n) { size_ti; i = 0; if (dst == 0 && src == 0) return (NULL); if (n == 0) .. ์ด์ 1 2 3 ๋ค์