- ๐ Libft
- ใฐ๏ธ get_next_line
- ๐จ๏ธ ft_printf
- ๐ฅ๏ธ born2beroot
- ๐ฃ๏ธ minitalk
- ๐ so_long
- ๐ฅ push_swap
- ๐ minishell
- ๐ค philosopher
- ๐ฒ cub3d
- ๐ฑ cpp_module
- ๐ธ๏ธ webserv
- ๐ inception
- ๐ ft_transcendence
Libft ๐
๋ค์ํ C์ธ์ด ๋ด์ฅ ํจ์๋ค์ ์ง์ ๊ตฌํํด๋ณด๋ ํ๋ก์ ํธ, ๋๋ง์ ํจ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ง๋ค๊ธฐ
ํ์ฉ๋ ํจ์ : malloc, write, free
- ์ต์ํ์ ์์คํ ์ฝ ํจ์๋ก ๋๋ง์ C library ๋ง๋ค๊ธฐ
- ํ์ค library์ ์๋ ํจ์ ์ํ์ ๋ณด๋ฉด์ ๊ฐ ํจ์์ ๋ชฉ์ ์ ๋ฌด์์ด๊ณ , ์ด๋ป๊ฒ ๊ตฌํํด์ผํ ์ง ํ์ ํ๊ธฐ
- ๊ณต์ Reference๋ฅผ ์ฐพ์๋ณด๊ณ ๊ตฌํํ๋ ์ญ๋ ๊ธฐ๋ฅด๊ธฐ
- C์ธ์ด์ ๋ ์น์ํด์ง๊ธฐ (const, sizt_t, ์ฐ๊ฒฐ๋ฆฌ์คํธ, ํจ์ํฌ์ธํฐ)
- Makefile ํ์ฉํ๊ธฐ
get_next_line ใฐ๏ธ
fd๋ฅผ ์ฝ์ผ๋ฉด์ ๊ฐํ(\n) ๋จ์๋ก char *๋ก ๋ฆฌํดํด์ฃผ๋ ํจ์ ๋ง๋ค๊ธฐ
ํ์ผ์ ๋ฌธ์๋ฅผ ์ฝ์ ๋ ํ๋ฒ์ ์ฝ์ด์ค์ง ์์ผ๋ฉฐ, ํจ์๋ฅผ ์ฌ๋ฌ๋ฒ ํธ์ถํด๋ ์์ด๋ฒ๋ฆฌ๋ ๋ฌธ์๊ฐ ์์ด์ผ ํ๊ณ , ์ฌ๋ฌ fd๋ฅผ ๋ฒ๊ฐ์ ์ฝ์ด๋ ์์ด๋ฒ๋ฆฌ๋ ๋ฌธ์๊ฐ ์์ด์ผ ํจ
ํ์ฉ๋ ํจ์ : read, malloc, free
์ ์ญ๋ณ์ ์ฌ์ฉ ๊ธ์ง, static ๋ณ์ 1๊ฐ ์ฌ์ฉ ๊ฐ๋ฅ
- ํ์ผ๋์คํฌ๋ฆฝํฐ(fd) ์ดํด ๋ฐ ์ฌ์ฉ
- readํจ์ ์ฌ์ฉ
- ์ฐ๊ฒฐ๋ฆฌ์คํธ ํ์ฉ
- lldb๋ฅผ ์ฌ์ฉํ ๋๋ฒ๊น
- C ์ปดํ์ผ ์ต์ -g3 -fasnitize=address๋ฅผ ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ์ค๋ฅ ๊ฒ์ฌ
- ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๊ฐ๋
์ ํ์คํ ์ตํ๊ณ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋จ (2์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํจ)
ft_printf ๐จ๏ธ
<stdio.h> ์ ์๋ printf ํจ์ ๊ตฌํํ๊ธฐ
๊ธฐ๋ณธ ๊ตฌํ : c s p d i u x X o O % ์ ํ์์ ๋ํด ๊ตฌํํ๊ธฐ
ํ์ฉํจ์ : malloc, free, write, va_start, va_arg, va_copy, va_end
- ๊ฐ๋ณ์ธ์๊ฐ ๋ฌด์์ด๊ณ , ๋ฉ๋ชจ๋ฆฌ์์์ ์ด๋ป๊ฒ ๊ฐ์ ์ฝ๋ ๊ฒ์ธ์ง
- ๊ฒฝ์ฐ๋ฅผ ๋ฐ์ ธ๊ฐ๋ฉฐ ํ๋ก๊ทธ๋๋ฐํ๊ธฐ(flag์ ์์์ ๋ง๊ฒ ์ถ๋ ฅํ๊ธฐ)
born2beroot ๐ฅ๏ธ
VM ์ฌ์ฉํด๋ณด๊ธฐ (virtual Box)
VM ์ด์์ฒด์ ์ค์นํด๋ณด๊ณ ๊ฐ์ข
์ค์ ํด๋ณด๊ธฐ
- VM(virtual machine)์ด๋?
- debian, centOS ์ด์์ฒด์ ํน์ฑ ํ์ ๋ฐ vm์ CLI ๋ฒ์ ์ค์นํด๋ณด๊ธฐ (+ ์ด์์ฒด์ ๋? ๋ฆฌ๋ ์ค๋? ์ปค๋์ด๋?)
- LVM(Logical Volume Manager) ๊ฐ๋ ์๊ณ ์ด๊ฒ์ผ๋ก vm ์ค์นํ๊ธฐ
- ํจํค์ง ๊ด๋ฆฌ ์์คํ ์ฌ์ฉํด๋ณด๊ณ ํจํค๊ธฐ ์ค์นํด๋ณด๊ธฐ
- AppAmor(debian) ์ค์น ๋ฐ ์คํํด๋ณด๊ธฐ
- sudo๊ฐ ๋ฌด์์ธ์ง ์๊ณ ์ค์น ๋ฐ ์ฌ์ฉํด๋ณด๊ธฐ
- debian์ ์ฌ์ฉ์ ๋ฐ ๊ทธ๋ฃน ์ค์ ํ๊ธฐ, ๋น๋ฐ๋ฒํธ ์ ์ฑ ์ค์
- SSH ์ค์น ๋ฐ ์๊ฒฉ ์ ์ ํด๋ณด๊ธฐ(ssh, port forwarding)
- UFW ํจํค์ง ์ค์น ๋ฐ ์ค์ (๋ฐฉํ๋ฒฝ, ๋ฐฉํ๋ฒฝ ์ค์ ํจํค์ง)
- CRON ์ฌ์ฉํ์ฌ ์ปดํจํฐ ์์คํ ์ํฉ ๋์ฐ๊ธฐ
minitalk ๐ฃ๏ธ
UNIX signal (์์ผํต์ )์ ํ์ฉํ ์๋ฒ-ํด๋ผ์ด์ธํธ ๋ฉ์ธ์ง ๋ณด๋ด๊ธฐ
SIGUSR1, SIGUSR2 ์ ๋๊ฐ์ง ์ ํธ๋ฅผ ํตํด์ ๋ฉ์ธ์ง ๋ณด๋ด๊ณ ๋ฐ๋ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
๋ณด๋์คํํธ : ์ ๋์ฝ๋ ์ง์, ์๋ฒ์์ ๋ฐ์ signal๊ฐ์ ํ์ธํ๋ ์์
์ถ๊ฐ
ํ์ฉํจ์ : write, signal, sigemptyset, sigaddset, sigaction, kill, getpid, malloc, free, pause, sleep, usleep, exit
- UNIX signal์ ํตํ ํต์ , ์ปค๋(์์คํ ์ฝ)์ ํตํด ํ๋ก์ธ์ค๊ฐ ํต์
- signal ๊ด๋ จ ํจ์
- PID, ์ ๋์ฝ๋, UTF-8 ์ธ์ฝ๋ฉ ํ์
- Process์ ๋ํ ๊ฐ๋
- signal์ ๋ค๋ฃจ๋ ํจ์๋ค์ ๋ํ ์ดํด
- UFT-8 ํ์์ ๋ํ ์ดํด. writeํจ์๋ก ์ถ๋ ฅ์ํด๋น ๋ฐ์ดํฌ ๋จ์๋ก ์ถ๋ ฅํ์ง ์์๋, ํฐ๋ฏธ๋์ด UTF-8 ํ์์ด๋ผ๋ฉด ์์์ ๋ฐ์ดํธ๋จ์๋ก ๋ฌถ์ด์ ์ถ๋ ฅํด์ค
so_long ๐
mlx ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค์ด๋ณด๋ ๊ฐ๋จํ 2D ๊ฒ์
- ๊ฐ๋จํ WSAD ๋ฐฉํฅํค๋ก ์งํํ ์ ์๋ ๊ฐ๋จํ 2D ๊ฒ์ ์ ๊ณต
push swap ๐ฅ
ํ๋ก๊ทธ๋จ์ ๋ค์ด์ค๋ ์ธ์๋ฅผ ์คํ์ ์๊ณ , ๋น ์คํ ํ๋๋ฅผ ์ด์ฉํ์ฌ ์ ๋ ฌํ๊ธฐ
์คํ์์์ ์์๋ค์ ์ฎ๊ธฐ๋ ๋ช
๋ น์ด๊ฐ ์ฃผ์ด์ง๊ณ , ๋ช
๋ น์ด ์ต์์ฌ์ฉ์ผ๋ก ์ ๋ ฌํ๊ธฐ
๋ณด๋์คํํธ : checker program ๋ง๋ค๊ธฐ(์ ๋ ฌ ์ฌ๋ถ ํ์ธ)
ํ์ฉํจ์ : read, write, malloc, free, exit
- ์คํ์ ์๋ฏธ, ์คํ ๊ตฌํ ๋ฐฉ๋ฒ(๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ)
- ๋ค์ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ฅธ ์๊ฐ ๋ณต์ก๋
- ์๊ฐ ๋ณต์ก๋(big-O)๋ฅผ ๋ฐ์ง๋ ๋ฐฉ๋ฒ
- ํ์ดํ๋ผ์ธ ์ฌ์ฉ์ ์ ํ๋ก๊ทธ๋จ์ fd 1์ด ๋ท ํ๋ก๊ทธ๋จ์ fd 0์ผ๋ก ์ด์ด์ง
minishell ๐
bash shell ๋ง๋ค๊ธฐ (bash manual)
๋ช๋ช ๋ช
๋ น์ด๋ built-in ํจ์๋ก ๋ง๋ค๊ณ , ๋๋จธ์ง๋ execve๋ก ์คํ
ํ๊ฒฝ๋ณ์๋ ์ธํ
ํด์ค ์ ์์ด์ผ ํจ
- ๋ถ๋ชจ-์์ process
- pipe ํต์
- tree ๊ตฌ์กฐ ์ฌ๊ทํํฅํ์ฑ
- ์ค๊ณ์ ์ค์์ฑ...
philosopher ๐ค
๋ค์ต์คํธ๋ผ์ ์์ฌํ๋ ์ฒ ํ์ ๋ฌธ์
์ฒ ํ์์๊ฒ ์ฃผ์ด์ง fork๊ฐ ๊ณต์ ์์์ด๊ธฐ์, ๊ณต์ ์์ ์ ๊ทผ์ ๋ํด data race๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํด์ผ ํจ
์ฒ ํ์๋ฅผ ๋ฉํฐ ์ฐ๋ ๋๋ก ๊ตฌํํ๊ณ , ๊ณต์ ์์์ mutex ์ ์ดํ๊ธฐ
์ฒ ํ์๋ฅผ ๋ฉํฐ ํ๋ก์ธ์ค๋ก ๊ตฌํํ๊ณ , ๊ณต์ ์์์ semaphore๋ก ์ ์ดํ๊ธฐ(๋ณด๋์ค)
์ด๋ค ์ข
๋ฅ์ data race๋ ๋ฐ์ํ์ง ์์์ผ ํจ
- ๋ชจ๋ data race ์ ๋ํด ์ ์ดํด์ฃผ๊ธฐ
- ์ฒ ํ์๊ฐ ์ฃฝ์๋์ง๋ ์๊ธฐ ์์ ์ด ํ๋จํ ์ ์์. ๋ชจ๋ํฐ ์ฐ๋ ๋๊ฐ ์ฒ ํ์์ ์ฃฝ์ ์ ๋ฌด ํ์ธํ๊ธฐ
- thread leak ์ฒดํฌํ๊ธฐ
- ํ ์ฐ๋ ๋๋ ๊ณต์ ์์ญ์ ์ฝ๊ธฐ๋งํ๊ณ , ํ ์ฐ๋ ๋๋ ๊ณต์ ์์ญ์ ์ฝ๊ณ /์ฐ๊ธฐ๋ฅผ ํ๋ ๊ฒ๋ data race์ด๋ฉฐ ์ ์ดํด์ค์ผํจ.
- ์ฒ ํ์๋ ์ค์ค๋ก ์ฃฝ์์ง ํ๋จํ ์ ์์ผ๋ฉฐ, ๋ชจ๋ํฐ ์ฐ๋ ๋๊ฐ ์ฒ ํ์์ ์ฃฝ์์ ํ๋จํด์ผ ํจ
cub3d ๐ฒ
2D์ ๋งตํ์ผ์ ์ฝ๊ณ ํ์ฑํ์ฌ 3D ๊ฒ์ ๊ตฌํํ๊ธฐ mlx graphic library๋ฅผ ์ฌ์ฉํ์ฌ raycasting ํ๊ธฐ
- ๋งต ํ์ฑ
- ๋ฒฝ ์ถฉ๋ ๊ฐ์ง
- mouse, key ์ ๋ ฅ ๋ฐ์์ ์ฒ๋ฆฌํ๊ธฐ
- ray casting
cpp_module(s) ๐ฑ
C++์ ํตํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
Module Number | Key Word |
---|---|
CPP Module 00 | C++ Style, Class, Method, I/O, Static, Const, Basic ... |
CPP Module 01 | Memory Allocation, Pointer, Reference, Switch |
CPP Module 02 | Orthodox Canonical Form, Operator Overloading, Fixed point |
CPP Module 03 | Inheritance, Overide, Diamond Inheritance |
CPP Module 04 | Polymorphism, Abstract Class, Interface |
CPP Module 05 | Exception, try-catch, Repetition |
CPP Module 06 | C++ cast(static_, dynamic_, reinterpret_) |
CPP Module 07 | C++ Template, .tpp |
CPP Module 08 | Tmplated containers, iterator, algorithm |
CPP Module 09 | STL(containers, iterator) |
- ์ ์ฒด์ ์ธ C++ ์ด๋ก ์ ์๊ตฌ์ฌํญ ๊ตฌํ์ ํตํด ํ์ต
webserv ๐ธ๏ธ
C++์ ํตํด ๊ตฌํํ๋ ์น์๋ฒ
http web server ๊ตฌํ (like NGINX)
socket programming(w/kqueue)
I/O multi plexing
event-driven I/O (Non-block)
cookie & session
CGI(Common Gateway Interface)
- RFC7230, 7231 MUST๋ฅผ ์ค์ํ๋ ์น์๋ฒ๋ฅผ C++๋ก ๊ตฌํํ๊ธฐ
inception ๐
- Docker ์์์ MySQL, Nginx, Wordpress๋ฅผ ์์ฉ์ด๋ฏธ์ง๊ฐ ์๋ ์ปค์คํ
์ด๋ฏธ์ง๋ก ์ฌ๋ฆฌ๊ธฐ
NestJS, TypeScript, PostgreSQL ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์์ผํต์ ์ ๊ธฐ๋ฅ์ ํตํฉํ Pong ๊ฒ์์ฉ ์ข
ํฉ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐ
- OAuth ์ฌ์ฉ์ ์ธ์ฆ, ์ฑํ
์์คํ
, ๋ผ์ด๋ธ ๊ฒ์ ์คํธ๋ฆฌ๋ฐ, ๋ณด์ ์ฌ์ฉ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ
This project is MIT licensed.