
Contact.
Email. [email protected]
Phone. 010-8634-4491
Channel.
Blog. https://seonggoc.tistory.com/
GitHub. https://github.com/jmsmg
Dacon. https://dacon.io/myprofile/430701
Introduce.
- 실제 사용중인 dotfiles입니다.
- 성실함을 믿고 공부한 내용을 블로그에 정리해나가고 있습니다.
- 42서울에서 자기주도학습 및 동료학습을 통해 배워 새로운 기술 습득이 빠릅니다.
Project.
Webserv (2024.06.02~2024.8.17)
- C++ Kqueue를 통해 구현한 간단한 HTTP 서버 구현
- siege 99.7% 가용률
- 🖐 Main role : Response, Sender 기능 구현
- Configuration file Parsing
- Response 전송 기능 구현
- C++의 fork 함수를 활용하여 멀티 프로세싱 CGI 구현
- 🔥 Troubleshooting
- I/O Multiplexing을 위한 함수 결정 단계에서 select vs Kqueue
- select 함수는 이식성이 좋았으나, 맥을 사용하는 만큼 간편하게 구현을 위한 Kqueue 사용 결정
- txt, pdf 등 일반적인 자료들은 잘 저장이 되지만, image File은 제대로 저장 되지않는 현상
- Image File은 binary 형태로 전송이 되는데, 이때 수많은 0을 포함하게되어 std::string에서는 처리할 수 없어, std::vector<char> 형태로 전송하여 해결
C++ # HTTP # Socket Programming # I/O Multiplexing
Minishell (2023.08.05 ~ 2023.10.17)
- Bash를 모방한 나만의 Shell 프로그램 제작
- echo, cd, pwd, export, unset, set, exit 빌트인 함수까지 가능
- 🖐 Main role : 예외처리 및 Parsing
- 짝이 맞지않는 quote와 같이 입력 값이 맞지않을 경우 error처리
- 프로그램에 들어오는 모든 입력 값을 명령어, 옵션으로 나누고, pipe를 기준잡아 Linked-List로 연결
- Redirection, Input, Output은 Linked-List 내부에 다른 Linked-List로 재연결
- 🔥 Troubleshooting
- single quote가 안에 있을 경우와 double quote가 안에 있을 경우 다르게 작동함
- 모든 quote를 기준으로 chunk라는 하나의 묶음으로 관리하고, quote를 기준으로 된 chunk가 아니면, 공백을 기준으로 chunk를 나누어 Linked-List에 보관함
- Parsing할 때 환경변수를 처리하지않고 기능부에서 export 기능 구현시 다시 Parsing을 하게되는 문제 발생
- Parsing때 단독 pipe, 에러 문구처리 및 환경변수까지 변환하여 Linked-List에 삽입