1. K-Lab
웹 링크: https://k-lab.co.id
제작 기간
2022.12 ~ 2023.01
활동 및 기여
LX International과 진행한 외주 프로젝트입니다. 인도네시아에서 사용할 환자 검사 관리 및 검사 현황 확인 플랫폼을 만들었으며, 이 과정에서 CIS라는 SaaS 업체와 협업을 진행했습니다. 웹과 어플리케이션 모두 배포되어 있으며, 플레이스토어 및 앱스토어에서 확인할 수 있습니다.
•
데이터베이스 스키마 설계 및 ERD 문서화
•
GraphQL API 설계 및 문서화
•
백엔드 개발팀 리드
•
백엔드 기능 개발 및 배포 담당
•
Twilio SMS, WhatsApp Messaging, Ottopay Payment와 같은 SaaS 분석 및 연동
이용 기술 스택
Spring, Spring Boot, Spring Data, JPA, QueryDSL, GraphQL, PostgreSQL, AWS EC2, AWS S3, Docker, Docker Compose
2. Dr.Haru
제작 기간
2022.07~2022.08
활동 및 기여
초록테크와 진행한 외주 프로젝트입니다. 반려 동물의 증상을 AI 이미지 및 챗봇으로 진단할 수 있는 플랫폼을 만들었으며, 이 과정에서 숙명여대 AI 개발팀과 협업을 진행했습니다. 배포된 어플리케이션은 플레이스토어 및 앱스토어에서 확인할 수 있습니다.
•
데이터베이스 스키마 설계 및 ERD 문서화
•
Restful API 설계 및 Swagger 문서화
•
백엔드 기능 개발 및 배포 담당
•
AI 개발팀에서 필요한 Web Hook API 설계
이용 기술 스택
Golang, Gin-Gonic, MySQL, AWS EC2, AWS S3, AWS RDS, Docker, Docker Compose
3. Oopy Tech Blog
링크 : bigpel66.oopy.io
제작 기간
2020.10 ~ Ongoing
활동 및 기여
제가 필요할 때 찾아볼 수 있도록 작성해두던 글에서, 동료를 위한 글쓰기를 지향하면서 시작한 블로그입니다. 단순히 '무엇'을 '어떻게'와 같은 정보 제공 보다는 어떤 작업을 수행할 때 '왜'를 찾아나가길 바라는 마음으로 작성했습니다. 특히 대화 뿐만 아니라 글도 커뮤니케이션의 일부이기 때문에, 알아보기 쉽고 정확하게 기술하는 것을 목표로 작업했습니다.
4. 42 Reference
제작 기간
2020.12 ~ 2022.09
활동 및 기여
•
42 Seoul 대외 활동을 진행하면서, 동료들의 학습을 돕기 위해 참고서를 작성
•
블로그로 정보를 제공하면서 서울 캠퍼스와 글로벌 캠퍼스의 많은 동료들의 학습에 기여
•
PBL (Project Base Learning) 진행 시 요구되는 컴퓨터 사이언스 및 Unix의 내용을 정리 및 제공
5. Piscine Golang
제작 기간
2021.10.25 ~ 2021.11.07
활동 및 기여
Piscine은 프랑스어로 수영장을 뜻합니다. 수영장에 빠져서 헤엄을 마구 쳐보면서 수영을 배운다는 의미를 확장하여, 아주 몰입하여 학습하는 경험을 의미합니다. 42에 입학하기 위해 Cadet (학우)들은 C 언어를 주제로 Piscine을 적어도 한 번 거치게 됩니다. 42 내에서 진행된 Piscine 제작 해커톤에서, Cadet들 중 Golang을 배우고 싶은 사람들을 위해 Piscine을 만들어 Golang을 보다 쉽고 재밌게 배울 수 있도록 구성해보았습니다.
•
Day00 (기본 문법, Package 관리, 테스트 코드 작성 방법, 내장 패키지 이용) 문제 구성
•
Day05 (Map, API, HTTP) 문제 구성
•
Day00 및 Day05 테스트 코드 작성
•
7일 간의 Piscine 기간에서 사용되는 자료들의 모든 문서화
•
쿠버네티스 구성 설계 및 도커 파일 작성
이용 기술 스택
Go (Gorilla), discord-go, Kubernetes, Docker, Git, GitHub, mongoDB, Google Drive, Notion
발표 자료
발표 영상 (05:00:08 Go? Ahead! min-jo yongckim jseo)
후기
6. Thread Pool
제작 기간
학습 : 2020.06.07 ~ 2020.07.08
구현 : 2020.07.09 ~ 2020.07.21
이용 기술 스택
C++
활동 및 기여
Node.js의 내부 동작 과정에서 처음으로 접한 쓰레드 풀을 이해하기 위해 직접 구현해보았습니다. 쓰레드들을 미리 생성해두어 유지하고, 실행하려는 함수를 미리 생성해둔 쓰레드에 전달하여 작업시키는 일련의 과정을 구현하기 위해서 C++을 학습하여 진행했습니다. 아래의 그림과 같이 임의의 task 함수를 만들어 이를 기존에 생성해둔 별도의 쓰레드에서 처리할 수 있도록 쓰레드 풀의 enque 함수를 이용하여 처리할 수 있습니다.
•
실행하려는 함수를 std::future 객체에 바로 연결 지을 수 있도록 std::packaged_task를 사용
•
인자가 담긴 함수를 std::packaged_task가 이용할 수 있도록 std::bind를 사용
•
std::bind로 함수를 묶어낼 때, 함수와 인자의 완벽한 전달이 가능하도록 std::forward 사용
•
std::packaged_task의 Dangling을 방지하기 위해 std::shared_ptr로 구성
•
임의의 함수와 임의 타입의 반환 값을 만들어 낼 수 있도록, 보편 참조와 파라미터 팩을 사용
•
쓰레드에게 할당된 작업이 없는 동안 Busy Waiting을 하지 않도록 std::condition_variable과 std::unique_lock을 사용하여 Sleep 상태 지원