42seoul

42seoul/projects

[C++] Orthodox Canonical Form

ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ์ง€์ผœ์•ผํ•˜๋Š” ์ •ํ†ต ํด๋ž˜์Šค ํ˜•์‹์„ ์ด์•ผ๊ธฐํ•œ๋‹ค. ๋””ํดํŠธ ์ƒ์„ฑ์ž(Default constructor) ๋ณต์‚ฌ ์ƒ์„ฑ์ž(Copy constructor) ํ• ๋‹น ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ(Copy assignment operator) ์†Œ๋ฉธ์ž(Destructor) ์ƒ์„ฑ์ž (Constructor) ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์ธ์Šคํ„ด์Šคํ™”๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํŠน์ˆ˜ํ•œ ์ข…๋ฅ˜์˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ class Zombie { private: std::string name; public: // ์ƒ์„ฑ์ž. Zombie(std::string _name = "no_name") { name = _name; } // ์†Œ๋ฉธ์ž. ~Zombie() { std::cout

42seoul/projects

[Philosophers] ๊ฐœ๋…์ •๋ฆฌ

์šฉ์–ด ์ •๋ฆฌ ์Šค๋ ˆ๋“œ(Thread) ์ฒ ํ•™์ž. ํ๋ฆ„์˜ ๋‹จ์œ„. ๋™์ž‘์„ ํ•˜๋Š” ๊ฒƒ. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ(multithread) ์—ฌ๋Ÿฌ ๋ช…์˜ ์ฒ ํ•™์ž. ํ”„๋กœ์„ธ์Šค์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ, ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ. ์–ธ์–ด์— ๋”ฐ๋ผ ํŠน์„ฑ์— ์ฐจ์ด๊ฐ€ ์žˆ์ง€๋งŒ ์˜ˆ์ธก์ด ์–ด๋ ค์›Œ์„œ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค. ๋ฎคํ…์Šค(Mutex) ํฌํฌ. ํ•œ์ •๋˜์–ด์žˆ๋Š” ๊ณต์œ ์ž์›์„ ์–ด๋–ป๊ฒŒ ๋ฐฐ๋ถ„ํ•ด์„œ ์‚ฌ์šฉ์„ ํ•  ๊ฒƒ์ธ์ง€, ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ. key๊ฐ’์„ ์ค˜์„œ ํ• ๋‹น์‹œํ‚ค๋Š” ๋ฐฉ์‹. ๋จน๊ธฐ ์œ„ํ•ด์„  ๋ฎคํ…์Šค๊ฐ€ 2๊ฐœ๊ฐ€ ํ•„์š”๋กœ ํ•˜๊ณ , ์˜†์ž๋ฆฌ์— ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉด ๋‚˜๋Š” ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ๋ฎคํ…์Šค๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ทธ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰. ํฌํฌ (๋ฎคํ…์Šค)๋ฅผ 2๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ๋งŒ ์ฒ ํ•™์ž๋“ค์€ ๋จน์„ ์ˆ˜ ์žˆ๋‹ค. (์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ž‘๋œ๋‹ค.) ์„ธ๋งˆํฌ์–ด(Semaphore) ๋ฎคํ…์Šค์™€ ๋น„์Šทํ•˜์ง€๋งŒ ..

42seoul/projects

[Philosophers] ์‚ฌ์šฉ ํ•จ์ˆ˜ ์ •๋ฆฌ

memset # include void * memset ( void * ptr, int value, size_t num ); ๋ฉ”๋ชจ๋ฆฌํ•˜๋‚˜๋ฅผ ์›ํ•˜๋Š” value๋กœ ์ „๋ถ€ ์ดˆ๊ธฐํ™”. printf # include int printf(const char* format, ...); ์›ํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ•จ์ˆ˜. malloc # include void * malloc(size_t size); ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น. free # include void free(void *ptr); ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œ. write # include ssize_t write(int fd, const void *buf, size_t nbyte); fd : ํŒŒ์ผ ์ „์†ก์˜์—ญ. *buf : ์ „์†กํ•  ๋ฐ์ดํ„ฐ. nbyte : ์ „์†กํ•  ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ. usleep # i..

42seoul/projects

[ft_services] ๊ฐœ๋… ์ •๋ฆฌ

๊ฐœ๋… ์ •๋ฆฌ METALLB ๊นกํ†ต LoadBalancer์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ๊ฒƒ LoadBalancer ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„๊ฐ€ ์žˆ์„ ๋•Œ ๊ฐ ์„œ๋ฒ„๊ฐ€ ํ•  ์ผ์„ ๋‚˜๋ˆ„์–ด ํ• ๋‹นํ•ด์ฃผ๋Š” ๊ฒƒ Nginx ์›น์„œ๋ฒ„ port : 80/443/22 22 port๋Š” ํ˜„์žฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์„œ 80 port(http)๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ 443 port(https)์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์›นํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์— ์žˆ์–ด์„œ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์—ญํ• . ํ”„๋ก ํŠธ ์—”๋“œ. MySQL ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค (RDB) port : data ์›นํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ •๋ณด๋“ค์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• . ๋ฐฑ์—”๋“œ PhpMyAdmin MySQL์„ ๊ด€๋ฆฌํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ. prot : 5000 MySQL์˜ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ. MySQL์— ๋‹ด๊ธด ์ •๋ณด๋“ค..

42seoul/projects

[cub3D] ๊ตฌํ˜„ ๊ณผ์ •์„ ์ •๋ฆฌ

cub3d ๊ตฌํ˜„ ๊ณผ์ •์„ ์ •๋ฆฌ. github GitHub - moaoh/cub3D Contribute to moaoh/cub3D development by creating an account on GitHub. github.com ์ž…๋ ฅ๊ฐ’์— ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ง„ํ–‰ํ•˜๊ธฐ. mlx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งต์„ ํ‘œํ˜„ ํ•ด๋ณด๊ธฐ. mlx๋ฅผ ํฌํ•จํ•˜์—ฌ ์ปดํŒŒ์ผํ•˜๊ธฐ [ 2021. 01. 23 ] 1. img ํŒŒ์ผ์„ ๋ฐ›์•„์„œ ๋งต์— ํ‘œํ˜„ํ•˜๊ธฐ. 2. ๋™์„œ๋‚จ๋ถ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ฐ’๋“ค์„ ์ค˜๋ณด๊ธฐ. [ 1. img ํŒŒ์ผ์„ ๋ฐ›์•„์„œ ๋งต์— ํ‘œํ˜„ํ•˜๊ธฐ. ] void *mlx_png_file_to_image(void *xvar, char *file, int *width, int *height) void *mlx_xpm_file_to_image(void *xvar,char *f..

moaoh
'42seoul' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก