물론 더 많이 읽었지만 가장 기억에 남는 두 개를 뽑았다.
주 개발 기간은 위와 같지만 계속 유지 및 보수를 하고 있다.
https://github.com/ha4219/keepincoin
서버 프로젝트로 이미지를 Client 에서 받아 Coin 으로 생성하는 방법이다. 사실 핵심 기술인 coinGenerator 부분은 교수님 코드를 받아서 이를 linux 서버에서 사용할 수 있게 .so 파일로 변환하고 서버에 올려 아래와 같은 sequential한(?) 로직을 수행한다. 개인적으로 배운 내용은 Docker라고 생각한다. (ASGI 때문에 fastapi를 선택했지만 찾아보니 Flask도 지원 했기에 여기에 쓰지 않았다)
처음 프로젝트를 친구와 함께 Flask로 진행했다. 하지만 지속적인 수정과 배포로 진짜 머리가 아팠다. 환경이 안 맞춰져 있어서 개발 환경에서 개발을 못하고 서버에서 vi로 코드를 수정하고 돌리고 에러 뜨면 될 때까지 수정하고 돌리는 작업을 반복했다. 그래서 교수님 카톡이 오면 좀 무서웠다.
따라서 위와 같은 이유로 1학기가 끝나자마자 Docker로 배포해야 겠다는 생각으로 새로 repo를 파서 진행했다. 메인 앱을 Docker로 publish하고 서버에서 최신 이미지를 hub에서 받아와 nginx와 함께 Docker-compose로 배포했다. 덕분에 공부도 많이 됐고 지금은 쉽게쉽게 배포하고 있다.
https://github.com/cgai-lab/cgai-lab.github.io
교수님 연구실 사이트가 없어서 계속 만들어야지 생각하고 있다가 2학기 개강 직전에 빠르게 만들었다. 하나의 문제가 있다면 SEO 부분이다. 디자인이 없어서 다른 연구실 사이트들을 참고하면서 개발했다. 그래서 피드백을 받고 있는 중인데 교수님이 바쁘셔서 아직도 수정할 부분이 많지만 정지 상태이다. 겨울 방학 때 마무리 짓고 싶다. 배운 내용으로는 CI/CD 이다. Gatsby 특성상 필요조건이라고 생각한다. 이전에 Docker를 배운 것이 매우 큰 도움이 됐다. 처음에는 github actions을 썼는데 CMS 때문에 circleci로 변경했다.
개인적으로 깔끔하지 못한 부분이 하나 있는데 학교 도메인을 달기 위해 ftp로 특정 주소에 파일을 올려야 하는데 학교 주소가 아니면 접근이 불가했다. 그래서 공인 아이피로 된 랩 서버에 trigger를 두긴 했는데 이를 해결 할 방법이 분명히 있을 것 같다. SEO 부분을 하면서 수정할 계획이다.
https://github.com/SE-Team6/SE_Project_Tetris_Java_Swing
학교 친구들이랑 같이 진행한 팀 프로젝트로 수업 시간에 배운 내용을 이용해 테트리스를 구현하는 프로젝트였다. 기능적으로는 아이템전, 멀티모드, 설정에서 색약과 화면 크기 등 실제 게임을 배포한다는 생각으로 프로젝트를 진행했다. 개인적으로 어려웠던 부분은 배포와 문자열 부분이다. 먼저 배포는 팀원들도 공감할 것이 하루만에 될 거라고 생각했는데 생각보다 잘 안돼서 중간 발표 전날에 밤을 샐 뻔 했다. 다행히 다른 잘 하는 친구가 찾아서 해줬지만 생각보다 어려웠다. 처음에는 맥으로 배포하려고 했지만 모험인 것 같아서 윈도우로 변경했다. (다른 .pkg 파일에 대해 감사함을 느낀다) 문자열은 위 데모 사진을 보면 블록들 위치가 예쁘게 맞아 떨어진다. 해당 화면은 문자열로 채워져 있다. 그래서 문자열 크기가 안맞아서 모양이 뒤틀린 것처럼 보이고 그랬다. 처음 맥에서는 예쁘게 잘 나왔는데 또 윈도우 넘어가니까 화면이 뒤틀렸다. ㅋㅋㅋㅋ. 어찌저찌 맞는 문자를 찾아서 해결했다…
https://github.com/ha4219/emogenius
개인적으로 애정을 갖고 했던 프로젝트로 한국어 문장의 기분을 분류해 이에 맞는 emoji를 추천하는 프로젝트다. 프로젝트 주제를 고민하고 있을 때 다른 친구가 이 주제를 던져줬고 이를 낼름 받아먹서 혼자 진행했다. 실제 chrome-extension에 배포도 해서 잘 사용했지만 서버 요금 때문에 내렸다.(torch를 사용하기 위해 프리티어를 사용할 수 없었다) 이 때까지만 해도 내가 NLP를 공부할 지 몰랐다.
교수님이 칭찬을 많이 해주셨다. 감사합니다~
2학기 때 시간이 많이 남아 공들인 프로젝트이다. MBTI 검사가 자가보고형이기 때문에 신뢰가 없다는 글을 읽고 이 프로젝트를 생각했다. Front-End를 맡았고 cra 로 react 프로젝트를 만들어 다크 모드, 반응형 웹, 무한 스크롤 등 하고 싶은 것을 다 해봤다. 내 생각에는 실제 배포해도 큰 문제가 없지만 서버하는 친구가 DB와 웹서버를 분리하지 않아서 AWS 무료 버전에서 안돌아 가는 것 같다. 그래서 지금은 내린 상태이지만 그래도 같이 고생했기에 진짜 고마웠다.(기획이 없기도 했지만 내가 의사소통에 문제가 있는 것 같다) 결과는 당연히 좋았다!
진짜 잘하는 형이랑 진행한 프로젝트 여기서도 Front-End를 맡았으며 같이 하는 형 한 분이 있었다. AWS의 EKS 을 다루는 Dashboard를 만드는 다시 생각해봐도 실제 어려운 부분은 백엔드 로직이였던 것 같다. 기능적인 부분은 Drag&Drop, IAM 암호화 등이 있었던 것 같다. 개인적으로 hook과 context로 유저 관리 같은 부분을 많이 공부했다.
위 사진에서는 내가 없는데 학회 일정이랑 겹쳐서 교수님 따라 학회가서 맛있는 거 먹었다.
맨날 해야지 생각하지만 게을러서 못하는 운동을 친구랑 같이 헬스장에 등록하면서 시작했다. 당연히 개초보여서 자극은 잡지도 못하고 보이는 기구 반복만 했다. 그러다가 2학기 중간 끝나고 PT를 끊었는데 확실히 몇 개 배운 것 같다. 최근에 다 끝났는데 이제 배운 것만 반복하려고 한다. 그리고 생각보다 근육이 붙는다는 것이 신기하다. 지금까지 gpu 4개 달아놨는데 single gpu로 학습 돌린 것 같다.
원래 책을 읽으면 거의 지식이 필요해서 전공 책만 읽었는데 친구가 추천해준 화신귀환을 읽으면서 다른 책들도 많이 찾아보고 있다. (근데 화산귀환 해남 가기 전까지는 재밌긴 하다) 처음에 밀리로 읽다가 지금은 책을 빌리거나 전자 도서관에서 빌리는 데 확실히 구매보다는 더 좋은 것 같다.
개인적으로 연초에 인프런이나 유튜브 이런 강의들을 몇 개 봤었는데 udemy에 정말 좋은 강의들이 많은 것 같다. 특히 FE에서 test code 작성을 어떻게 해야하는 지 이게 정말 고민이 많았고 의문이였는데 강의를 보고 이해할 수 있었다. 새로 블로그를 개설하는데 잘은 못하더라도 조금씩 적용해 보고 있다.
사실 금방 그만둘 줄 알았는데 지금까지 계속하고 있다. 딱 21년에 인턴 끝나고 했는데 벌써 1년이다. 별로 일을 안시켜서 위에 책을 근로 시간에 읽고 있다… 그냥 맨날 지각해서 선생님들께 죄송할 따름이다…
글을 쓰면서 1년을 되짚어보면 학기중에는 수업 아니면 근로로 학교 6시까지 시간을 보내고 6시 이후에는 연구실에서 코딩을 했고 여름 방학 때는 '화산귀환'|'coding' 이였던 것 같다. 이번 블로그를 개설하면서 처음으로 회고록을 써보는 데 생각보다 1년을 되돌아 본다는 점이 매우 좋은 것 같다.
그렇다고 “내가 더 잘해졌다?”는 아닌 것 같다. 최근 면접을 보고 와서 느낀 생각이 아직도 되새기고 있다. 간단히 말하면 docs를 읽는 것은 모두가 할 수 있는 능력이라고 생각한다. 프로젝트를 진행하면서 많은 docs를 읽어가며 세팅하고 개발하고 어떻게 보면 누군가가 만들어둔 module을 내가 쓴 거에 지나지 않는다. (react, nextjs, fastapi, docker 등) 그게 큰 의미가 있을까? 3학년 때 이것을 깨닫게 된게 매 우 후회스럽지만 일단 많은 에러를 경험하면서 배웠기에 이를 활용할 수 있다는 장점 뿐인 것 같다. 그래서 그 이후 모던 자바스크립트 Deep Dive 를 읽고 있는데 생각보다 모르는 부분이 많았다.(언어의 원초적인 매력을 배울 수 있었고 이 내용 또한 블로그에 따로 작성할 계획이다)
22년에는 알고리즘이 빠졌는데 이거는 내가 게을러서 그렇다… 23년에는 잡아야겠다.