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

๐Ÿฐ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) ..