![게시글 '2020 회고: 복학을 앞둔 컴퓨터공학과 대학생'의 헤더 이미지](/_astro/eof2020.DzuqL8Vk_Z4qLUm.webp)
2020 회고: 복학을 앞둔 컴퓨터공학과 대학생
군 제대 후 복학을 앞두고 있는 컴퓨터공학과 재학생이 작성한 2020년 회고록으로, 프로그래밍을 처음 접할 때 부터 2020년 까지의 삶을 담았다.
2020년이 모두 지나간 지금, 아직도 우리는 원래의 삶을 되찾지 못한 채 2021년을 맞이하게 되었다. 여전히 혼란스러운 소식으로 가득찬 이 시대에, 복학을 앞두고 있는 나는 그동안 무엇을 했는지 되돌아보는 시간을 가질까 한다.
사실 그동안 특정 분야를 계속 파보는 것이 아닌 여러 기술들을 흥미 위주로 접한 터라, 지금까지 무엇을 했는지 기억이 잘 나지 않는다. 내가 난잡하게 일으킨 일들을 그나마 똑똑하게 기억해주고 있는 내 GitHub 리포지토리의 히스토리를 천천히 보면서, 내 생애 첫 회고록을 작성해본다. 첫 회고록이기에, 2020년 뿐만 아니라 처음 프로그래밍을 접한 순간부터 지금까지의 기억들을 모두 담아내려고 한다. 그래서 글이 좀 난잡하고 개인적인 이야기가 많은, 이른바 “TMI”스러울 수 있다는 점, 양해를 구한다.
앞에서 언급했다시피, 나는 회고록을 적은 경험이 전무하다. 내가 쓴 글 중에서 “회고록”과 성격이 그나마 비슷한 게 초등학교 때 억지로 적은 일기밖에 없다. 사실, 이렇게 글을 자의적으로 적는 것은 이번이 처음인 것 같다. 늦은 감이 있긴 하지만, 그 동안 남긴 리포지토리, 커밋, 그리고 코드 등을 보며 머리 속에 남아있는 기억을 되짚어본다.
2020년 이전의 나
프로그래밍의 시작
중학교 컴퓨터 수업 때 접한 스크래치를 시작으로, 게임 엔진인 유니티를 차례대로 배우면서 게임 프로그래밍에 관심을 가지기 시작했다. 유니티 엔진으로 인해 내 첫 프로그래밍 언어는 자연스래 C#이 되어서, 추후 학교에서 나오는 과제들은 환경이 명시되어 있지 않다면 대부분 C#으로 해결했다.
학교 프로젝트
1학년이였던 2017년, 그때까지만 해도 Git과 GitHub는 나에겐 이름만 들어본 존재였고, GitHub에는 가입도 안 되있었다. 이때는 내가 작성한 코드들은 항상 내 컴퓨터에만 있었고, 온라인에 올리는 것도 기껏해야 OneDrive에 코드를 저장하거나 과제를 학교 사이트에 업로드하는 것뿐이였다. 이후에 GitHub에 가입을 한 계기도 대학 친구로부터 알게된 GitHub Pages를 이용한 웹사이트 호스팅 때문이였는데, 이에 대한 얘기는 전 포스트에서 다룬 적이 있다. 이렇게 본격적인 사용 이전에는 GitHub를 웹사이트 호스팅, 그리고 적은 내용의 코드들을 따로 저장해두는 용도로만 사용했다.
Git/GitHub를 프로젝트 개발에 적극적으로 활용하기 시작한 것은 2학년 2학기에 있던 “소프트웨어분석및설계”, “GUI프로그래밍” 과목 때 주어진 과제를 수행할 때부터이다. 전처럼 간단한 코드가 담긴 파일을 내는 것이 아닌, 전에 만들어 본 적이 없는 완성된 프로그램을 만드는 것이 과제로 나오기 시작한 것이다. 이때 과제로 의해 만든 프로그램은 총 4개다. 하나는 C++ 기반 CLI 프로그램인 RandomWalkBettle이고,(사실 이건 프로그램이라 말하기도 좀 민망하다.) 나머지 3개는 GUI 프로그램인데 뭐였나면,
위의 3개는 모두 C#/WPF 기반으로 만들어졌다. 첫번째 GUI 프로그램인 Sloyd를 만들기 위해 여러 GUI 프레임워크를 알아보면서 처음으로 WPF를 알게 되었고, C#으로 GUI 프로그램을 만들 수 있다는 사실을 알게 되어 곧바로 개발을 시작했다. 지금 생각해보면 꽤나 패기있는 결정이였다고 생각이 드는 것이, 이전에 WPF를 다뤄본 적이 아예 없는 상태에서, 공식 문서고 도움없이, Visual Studio에 있는 버튼들을 마구 눌러보면서, 대부분 감으로 개발을 진행한 점이 지금 생각해도 놀랍다.(물론 구글과 스택 오버플로우의 힘을 많이 빌리기는 했다.) 이후 WPF 사용에 익숙해져 다음 프로젝트인 Mazel도 WPF를 사용했다.
“GUI프로그래밍” 과목 때 나온 과제는 2인 1조로 진행하였는데, 혼자가 아닌 누군가와 같이 개발을 같이 한 적은 이때가 처음이다.(현재 기준으로 마지막이기도 하다.) 어떤 프레임워크로 개발을 진행할지가 첫번째 문제였는데, 수업 시간에 C++/MFC를 배웠지만 현실적으로 너무 어려운 방법이라 다른 프레임워크를 찾는 것이 유일한 방법이였다. 물론 나는 계속 사용해온 WPF의 사용을 상대에게 권했고, 그대로 WPF를 기반으로 한 그림판 프로그램 Pn을 개발하였다. 협업을 하는 것이라 Git/GitHub의 기능이 가장 중요했는데, 둘 다 협업 목적의 Git 사용은 그 때가 처음이였다. 지금 생각해보면 Git을 사용하는 방식이 뭔가 좀 어설펐지만, 어쨌든 과제 제출용으로서의 결과물은 성공적으로 나오긴 했다.
그동안 다른 GUI 도구들을 많이 접했기에, 지금 GUI 프로그램을 만들라고 하면 WPF 대신 다른 방식을 선택할 듯 하다.
총평
2017년부터 2018년, 입대 이전에 보낸 대학 생활 2년. 나름대로 열정을 가지며 열심히 공부하면서, 학점도 꽤나 잘 나왔다.(과 수석을 한 번 해봤다.) 하지만 지금 돌이켜보면, 그때의 나는 너무 나만의 세상에만 있었던 것 같다. 특히 1학년 때 사귄 친구들이 대부분 먼저 군대로 떠나 혼자있는 시간이 더욱 많아져, 시대의 흐름을 읽지 못한 채 좁은 방 안에 갇혀있듯이 지냈다.
그렇게 2018년 학기가 끝나갈 때쯤 군휴학을 신청하고, 2019년 1월 입대했다. 중간에 연휴가 끼어서 더욱 길었던 기초군사훈련(3월에 끝났다)을 마치고 상근예비역으로 복무를 했다. 출퇴근이 가능해 개인 시간이 많았지만 심란한 마음에 코딩은 손에 잡히지 않았고, 하루하루를 의미없이 건조하게 시간을 보내며 살았다.
2020년의 행적
그래도 시간이 지나면서 마음의 짐을 어느 정도 내려놓을 수 있었고, 그와 동시에 다시 코딩을 시작했다. 다만 전역 후에 코딩에 너무 힘을 쏟아 번아웃이 온 시기가 있긴 했지만 말이다.
웹 개발 입문
프론트엔드 개발, Typescript 도입
2019년 후반기에 Jekyll을 우연히 접한 이후 웹 디자인에 흥미가 생겨 한 동안은 웹 디자인을 연습했다. 디자인 툴이 아닌 HTML/CSS의 조합으로 웹을 꾸미는 것이 재미가 있었고, 웹 시장이 계속해서 커진다는 소식을 보고 한동안은 웹 분야에 집중했다.
트위터에서 프론트엔드 관련 기술을 공부할 때 “To Do” 앱을 만들어보라는 글을 발견한 후, 바닐라 JavaScript로 빠르게 ToDo 웹앱을 만들어 본 적이 있다. 추후에 개발 환경을 Typescript로 변경하는 동시에 여러 편의 기능을 추가했고, 데이터의 타입을 명시해주어 개발에 명확성을 높여주는 TS의 매력을 알게 되었다. 특히 가장 친숙하게 다뤄온 언어인 C#과 같은 회사(마이크로소프트)에서 만들어서 그런건지, 친숙한 느낌이 들었고 사용에 어려움은 없었다.
이후, 2학년 때 만든 Sloyd를 웹으로 이식한 버전, SloydJS를 개발하였다. 기존의 개발 환경인 C#/WPF에서 TS/HTML5로 교체하는 과정에서 기존에 날림으로 작성한 코드를 다듬었다. 다만 개발 당시에는 비동기 프로그래밍을 몰랐던 때라, 현재 자동으로 맞추는 기능을 실행하면 웹이 통째로 정지하는 문제가 있어 수정이 필요한 상태다.
Javascript 공부에는 모던 Javascript 튜토리얼 사이트가 큰 도움이 되었다. 또한, 트위터에서 코어 자바스크립트라는 책을 추천하는 글이 보이길래 Javascript를 더 심도있게 공부하고자 구매해 읽었다. 이 책은 난해하고 함정이 숨어있는 JS의 환경을 잘 설명해주면서, 동시에 JS가 얼마나 난해하고 숨어있는 함정이 많은지 밝혀주는 책이여서 지금도 가끔 다시 읽는 편이다.
React와의 만남
ToDo, SloydJS 웹앱을 개발하면서 느낀 점은 순수히 JS로만 수행하는 DOM 조작이 꽤나 번거롭다는 것이다. 한동안 React를 본격적으로 배우길 미룬 이유는 DOM 조작을 아직은 JS로만 수행해도 크게 어려움이 없었기 때문이다. 하지만 개발 중에 불편함을 느꼈다는 것은, 불편함을 해소해 주는 기술을 배워야할 이유가 생긴 것이고, 이는 슬슬 React를 배울 때가 왔다는 의미이다.
노마드 코더에서 React 관련 책인 클론 코딩 영화 평점 웹서비스를 냈길래, 믿고 구매한 것을 시작으로 React를 공부하기 시작했다. 이 책으로 간단한 영화 소개 웹앱 MOVIEW를 만든 이후에, 개념 정리를 위해 React 공식 홈페이지에 있는 주요 개념 가이드를 참고하면서 추가적으로 Hook의 존재를 알게 되었다. 아직은 큰 규모의 웹앱을 개발한 적이 없기에 React의 효능을 확실히 체감하지는 않았지만, 추후 웹 프로젝트를 진행할 필요가 생기면 적극적으로 도입할 예정이다.
React 얘기가 나와서 말인데, 이 블로그에 React 기반의 프레임워크인 Gatsby를 사용하기 위해 간단히 배웠지만 결국 사용하지 않기로 결정하였다. 이에 관련된 이야기는 나중에 다른 글에서 쓸 예정이다.
Node.js, MongoDB, 그리고 Heroku
사실 말하기 조금 부끄러운 사실이 있는데, 대학을 2년동안 다니면서 서버 관련 개발을 해본 적이 없다. 전공과목 중 “웹프로그래밍” 수업에서 약간은 다뤄봤지만 내가 직접 무언가를 만들어보는 기회는 사실상 없었고, 사실 무엇을 배웠는지 지금도 모르겠다. 그래서 대학에서 웹 관련 지식을 배운 적은 사실상 없다고 봐도 된다.
그래도 4년차 개발자인데 서버 개발 경험이 없다는 점이 계속 마음에 거슬려서 예전에 구입하고 그대로 방치한 책인 Node.js 교과서를 다시 펼치게 되었고, 서버 공부를 본격적으로 시작하게 되었다. 다만 이때 만든 앱을 배포하지는 않고 로컬 환경에서만 실행시켰다.
그러다 Heroku를 접하고, 전에 개발한 Node.js 앱을 시험삼아 배포했다. Heroku는 자주보는 유튜브 채널인 노마드 코더에서 그 존재를 알게 되었는데, 이때 Node.js 프로젝트를 무료로 호스팅해주는 플랜이 있다는 사실을 알게 되었다. Heroku 공식 문서고를 최대한 참고하며 간단한 Node.js 앱을 업로드하는 것으로 백엔드에 입문하였고, 그 다음엔 Express 앱을 업로드해보고, 이후 MongoDB 사에서 제공하는 클라우드형 MongoDB의 무료 플랜을 받아 Express 앱과 서로 연결시켜 보기도 했다.
그 후, Express 앱을 더 구조적으로 만들 수 있는 NestJS를 접했다. NestJS 역시 노마드 코더를 통해 알게 된 것이고, 무료 강좌가 있길래 들은 기억이 난다. TS의 기능 중 하나인 데코레이터를 주로 사용한다는 점이 생소했지만, 라우팅을 처리하는 코드가 굉장히 깔끔하게 나와서 감탄했던 기억이 난다. 다만 데코레이터는 아직도 이해가 안 간다.
현재 기준으로, 아직 백엔드 단에서는 내가 처음부터 만든 프로젝트는 없는 상황이다. 다만 추후에 백엔드 개발이 필요한 상황이 올 때, 적어도 두려움은 없이 접근을 할 수는 있겠다. 현재 게임 개발에 집중하고 있어서 아직은 백엔드 파트를 본격적으로 손을 못 대고 있는 상황이다.
새로운 도구, Firebase
유튜브에서 7분만에 채팅 앱을 만드는 영상을 보고, 이에 자극을 받아 몇 시간 내로 영상과 비슷한 채팅 웹앱을 만들었다. 과정 자체가 굉장히 깔끔하고, 계정 인증부터 채팅 기록 동기화가 하나의 환경으로 처리 할 수 있다는 점이 굉장히 좋았다.
뭔가 백엔드 쪽의 장난감이 생긴 기분이다. 아이디어를 빠르게 구현하고 싶을 때 유용하게 사용될 것 같다. 뭔가 해커톤에서 유리하게 사용될 것 같은 느낌. 다만 아직은 어떤 기능들이 있는지 몰라서, 이를 잘 사용하려면 언제 한 번 문서고를 살펴보는 시간을 가져야겠다.
리듬게임 프로젝트
내가 가장 좋아하는 게임은 리듬게임이고, 자연스럽게 만들고 싶은 게임 역시 리듬게임이다. 사실 리듬게임이 나의 진로에 가장 큰 영향을 주었다. 프로그래밍을 시작하게 된 계기가 리듬게임을 만들고 싶어서였으며, 그래픽 디자인을 시작하게 된 계기도 리듬게임이고, 진전이 없긴 하지만 작곡을 시작하게 된 계기도 리듬게임이다.
맨 처음 만든 리듬게임
사실 나도 내 트위터에 남긴 트윗들을 살펴보면서 기억이 난건데, 2019년 9월 쯤에 “RHYACTION LIVE”라는 이름으로 리듬게임을 만든 적이 있었다. 롱노트 구현 중 포기한 걸로 알고 있는데, 이때의 기억을 살려 minirhythm을 개발한 것으로 추정하고 있다. 개인적으로 이름 하나는 잘 지었다고 생각이 든다.
이후에 만든 minirhythm
이후에 기존 프로젝트는 버리고 2020년 1월 즈음에 새로이 만든 프로젝트가 minirhythm이다. 현재는 개발을 중지한 상태.
예전에 작성한 코드를 가끔 참고하며 대충 그럴싸한 형태를 가진 리듬게임을 3일 만에 만들어냈다. 이후에 기능을 하나씩 추가해가면서 규모를 키웠고, 장기적으로 제대로 된 리듬게임을 하나 만드는 것을 목표로 삼았다.
하지만 제대로 된 게임을 개발한 경험이 전무했던 것에 비해 게임에 대한 욕심은 컸던 터라, 넣고 싶은 기능을 분별력 없이 집어넣은 탓에 프로젝트가 점점 꼬이게 되었다. 기능을 하나 추가할 때 마다 코드를 갈아엎게 되고, 점차 개발 의지가 꺾이게 되어 다시는 생각없이 기능을 추가하지 않기로 결심하며 결국 개발을 중단하였다.
솔직히 말하자면 아래에 언급할 microbeat도 상황은 비슷하다. 그나마 구조 자체는 파악이 되는 상태라 개발을 이어나가고 있을 뿐.
이 프로젝트로 인해 배운 건 많았다. 그 중에서 가장 값진 교훈은 “자기 분수를 알라”.
재도전, microbeat
그래서 이번엔 욕심을 줄이고 기능들을 최소화하면서 개발하기 시작한 것이 바로 microbeat이다. 이번에는 기능을 추가하기 전에 전체적인 흐름을 최대한 생각하며 개발을 진행했다.
아니나 다를까, 이 역시 변속을 구현하기 시작하면서 프로젝트가 꼬이기 시작했다. 전과 같은 전철을 밟기 시작한 것인데, 현재 프로젝트의 문제는 크게 두 가지이다. 하나는 게임의 구조 파악이 힘들다는 것, 다른 하나는 클래스가 너무 많이 있는 것.
클래스가 너무 많이 있다는 것이 무슨 의미나면, 데이터를 좀 더 직관적으로 구별하기 위해 용도에 맞게 만든 클래스(내지는 구조체)들이 오히려 코드를 더 읽기 힘들게 만들고 있다는 뜻이다. 게임 내에서 “채보 파일과 음원 파일을 읽은 후에 게임 내부에서 해석하는 역할”의 코드를 읽기 쉽게 작성하기 위해 새로운 클래스들을 무분별하게 만들어낸 것이 화근이 된 것이다. 그 결과 클래스 이름이 서로 비슷해지고, 클래스 이름이 그 클래스의 역할을 제대로 설명하지 못하는데다, 해당 클래스가 무슨 목적으로 만들어졌는지 다시 알아보는 과정이 추가적으로 생기고 말았다. 그나마 다행인 점은 단순히 데이터 가공에 관한 문제라서 클래스의 기능을 확실히 정하고, 불필요한 클래스를 없애는 방향으로 개발을 진행하면 해결이 얼추 될 것 같다는 점이다.
게임 구조에 관한 문제는 최근에 유니티 공식 채널에 올라온 영상이 큰 도움이 되고 있는데, 그 영상은 바로 Game architecture with ScriptableObjects라는 영상이다. 싱글톤 패턴의 남용으로 인해 객체 간의 의존 요소가 많아져 구조 파악이 힘든 상황에 다다른 점이 이번 프로젝트를 꼬이게 만든 결정적인 역할을 했고, 이 영상이 구조 개편에 도움을 주는 방법론을 소개하고 있다. 만약 구조를 성공적으로 교체한다면, 영상에서 나오는 방법론(내지는 디자인 패턴…?)에 대해 자세히 소개하고 어떤 과정을 거쳐서 구조를 바꾸게 되었는지를 자세히 소개하고 싶다.
현재 microbeat는 여전히 개발 중에 있으며, 알파 버전 몇 개를 공개한 상태이다. 현재는 프로젝트를 유지보수하기 쉽고, 확장성 있게 고치는 것에 집중하고 있다. 어느 정도 정리가 되면, 이 블로그에 정식으로 소개하는 글을 남길 것이다. 또한 공식 문서고 제작 및 상용 리듬게임에서 볼 수 있는 여러 기능을 도입하는 것 또한 염두에 두고 있다.
그 외의 게임 개발
microbeat 개발이 지연되면서 점점 의욕이 떨여지고 있을 때, 한 번 이 프로젝트에서 잠시 손을 놓은 뒤, 다른 게임을 개발했는데 그게 바로 microplatform이다. 이름에서 알 수 있듯이 간단한 2D 횡스크롤 플랫포머 게임이고, 최대한 욕심을 줄이면서 개발을 했다. 그래픽과 오디오 리소스는 Unity Asset Store에 있는 무료 에셋을 사용했고, Unity Hub에서 바로 다운로드를 받을 수 있는 Platformer Microgame 프로젝트를 최대한 참고하면서 개발을 진행하였다. “선택과 집중”의 마인드로 개발을 진행했고, 그 결과 빠르게 아웃풋을 낼 수 있었다. 현재 웹 버전(WebGL)과 안드로이드 버전이 있다.
참고로 Platformer Microgame 프로젝트를 살펴보면서, 실제 배포되는 게임의 프로젝트 구조를 대강 파악할 수 있었다. 이 프로젝트는 사실 유니티를 처음 접하는 사람을 대상으로 만들어진건데, 사실 초심자들에게 도움이 있을 것 같진 않고 오히려 내가 프로젝트 분석 용도로 요긴하게 사용하고 있다.
그 외의 잡다한 거
2019년 하반기에 트위터를 본격적으로 시작하였다. SNS의 위험성을 알고는 있지만, 트위터를 통해 최신 IT 트렌드를 알 수 있다는 점이 좋게 다가온다.
요즘은 잘 안 하지만, BOJ에서 알고리즘 연습 겸 문제를 종종 풀어왔다. 알고리즘 관련 책인 알고리즘 트레이닝을 온라인에서 충동적으로 구매한 이후, 한 동안 Problem Solving 분야에 빠진 적이 있다. 현재 solved.ac 기준, 티어는 골드 3이다.
전역을 했다. 다만 일반적인 상황이 아니였고(지금도 아니지만), 게다가 행정직 관련 인물들이 내가 전역한다는 사실을 잊는 바람에 전역식을 못 치뤘다. 그래서 전역증도 추후에 받았다. 원래 전역 후에 갈 여행을 계획해두었지만, 말 하지 않아도 다들 알 수 있는 이유로 무산되었다.
1학년 때 과제로 제작한 파이썬 프로젝트, 그리고 인공지능에 관심이 생겨서 Python과 TensorFlow로 만든 간단한 숫자 필기 인식 프로그램의 소스코드를 잃어버렸다. 백업의 중요성을 다시 한 번 느끼게 되었다.
글을 쓰면서 느낀건데, 충동적으로 구입한 책이 꽤나 있다. 결국 다 보긴 했지만, 최근에 구입한 네트워크 책은 초반부만 살짝 본 후 방치되고 있다. 언제 한 번 날 잡아 읽어봐야겠다.
./2021
대학 생활
올해, 3학년으로 복학한다. 2년만에 다시 가는 대학교. 대학교 홈페이지를 들어가보니 새로운 시설이 생긴 것 같던데 뭐가 어떻게 변한걸까 궁금하다.
이번 학기 교육과정 편성표를 보아하니, 이번 학년부터 배우는 과목들은 과목명만 보아도 심상치 않음이 느껴진다. 아마 많은 노력이 필요할 듯 하다.
공모전이나 대회에 관련된 실적이 아예 없는 상태다. 올해는 좀 관심을 가질 필요가 있음을 느낀다.
아, 그냥 생각이 나서 적는건데 앞으로 에세이 같은 거 만들 때 MS Word말고 마크다운을 적극 사용해보려고 한다. MS Word가 문서 작업하기 편하긴 한데, 수식 넣는게 좀 불편해서.
개인 작품
현재까지 개발하고 있는 microbeat의 최종 목표는 높은 완성도를 가진 제품으로서의 게임, 그리고 다른 성격의 리듬게임을 쉽게 만들 수 있는 재사용성이 높은 게임 구조 및 소스 코드를 배출하는 것이다. 올해 상반기, 적어도 올해 안에는 완성을 계획하고 있다. 다만 게임을 실제로 출시한다는 말은 아니고, GitHub나 Unity Asset Store에 등록하는 것을 목표로 하고 있다.
돌이켜보니, 포트폴리오에 채울만한 프로젝트가 별로 없다는 것을 깨달았다. 그동안 흥미 위주의 코딩을 해왔다면, 올해부터는 완성도 있는 결과물을 만드는 것을 목표로 삼아야겠다.
끝으로
이번 회고록은 밀단 프로그래머로서의 나에 대한 모습만 담아봤다. 디자이너로서의 대한 얘기는 추후에 다루겠다.(추후에 다룰게 많네…)
과거의 부족한 내 모습을 바라볼 때면 후회를 많이 느끼면서도, 지금의 나를 위해 무엇을 배우고, 무엇을 발전시켰는지 생각하게 된다. 이러한 점이 내가 계속해서 겸손해야 하는 이유이면서, 동시에 나 자신이 미래의 나의 모습을 기대하게 해주는 이유를 말해주기도 한다.
이 글을 쓰면서 다른 회고록을 많이 참고하면서 적긴 했는데, 잘 쓴 건지 모르겠다. 이렇게 긴 글을 써본 것은 오랜만이라 감을 잃었다. 회고록을 이렇게 쓰는게 맞는지도 의문이다.(…) 근데 뭐, 여긴 내 블로그니까. 다른 사람들의 글을 보면서, 아직 나는 갈 길이 멀다는 것을 다시 한 번 느끼고 있다.
이제 올해는 계획적으로 살아야 한다는 것을 느낀다. 2020년보다 더.
끝으로, 쓸데없이 길어진 저의 TMI를 읽어주셔서 감사합니다.
부디, 모두 올해는 행복한 일들만 있기를 바랍니다. 아니 적어도 2020년 당시의 비극은 없기를.