21년 회고록
21년의 워낙 이것저것 다사다난한 일이 많아서 사실 어떻게 정리해야될지 잘 모르겠다.
개인적으로 느끼기에는 살면서 가장 바쁘게 지냈고 정말 빠르게 지난 느낌이 든다. 그와 대비해서 내 개발자로서의 실력이 얼마나 상승했나라고 하면 갸우뚱거게 되는 느낌도 동시에 든다.
21년 초는 11월즘에 2년간의 사회복무 생활을 마치고 복학 전까지 가장 시간이 많이 남았을 시기였다.
boj
12월부터 백준을 미친듯이 풀었다. 한 한달정도를 일어나있는 시간동안 문제만 푼 것 같다.
solved.ac란 사이트를 알게되었는데 여기서 나오는 단계별 풀기를 싹다 풀었다 4class 까지 모두 풀었다. 양치기 느낌으로 풀었는데 이때 한 100문제풀었나. 딱 class 달성하고 다 풀고나서는 그대로 관심 끊음..
pintos
2월 넘어가서는 pintos를 시작했다. repo
지인이 pintos를 혼자 만지고있길래 나도 따라서 같이 만졌다. 사실 OS 공부를 따로 한적이 없었지만 그냥 코드읽으면서 하면 되겠지
란 마인드로 잡기 시작했다.
년 중에 제일 재밌게 한거같기도하고..
생각해보면 나는 소과제 하나만 겨우 진행 했다.
thread 스케줄링을 구현했다. posting
ready queue에 들어가있는 thread 들이 우선순위에 따라 스케줄링이 되게 구현을 했다.(실제로는 추가적인 요구사항이 더있다.)
꽤 어려웠지만 그래도 재밌게했다. cpu 스케줄링 과제는 넘기고 userprogram인 과제 2 진입도 못하고 입구컷 당한 상태였어서 이것저것하다가 아직까지 결국에 못 돌렸는데, 3월 넘어가서 둘이서하던 중 같이 하던사람이 군대를 가고, 나도 피신을 하기위해 서울로 올라가게되면서 자연스레 멈췄다.
너무 좋은 과제라 해야지해야지 생각하지만 좀처럼 지금까지도 여유가 생기지않아 손을 못대고 있다.
계획
12월 끝에 포큐 블로그에서 42seoul이란곳을 알게되었다. posting
사실 이때까지 할인 퍼센트를 따로 모르고 그냥 들을 수 있게 해주는 줄 알았다 -_-;
그렇게 알게 된 42seoul을 이것저것 뒤져본결과 생각보다 괜찮은 내용들을 과제로서 하고있다는것을 보고, 42seoul 자체적으로도 상당히 괜찮은 곳이라고 생각했다.
지원금으로 지방사람이 아예 올라가서 생활하는데에 부담이 적었고, 과제가없는 우리 학과 수업이 나는 대체로 맘에 들지않았기에 언제나 CS공부를 따로 해야한다는 강박관념이 있었고, 이곳이 이 문제를 어느정도 해소해 줄 수 있을거라 생각했다. 그리고 비대면이라 원격으로 한다는걸 듣고 이거면 그래도 어떻게 해볼만 하겠다 싶어서 던진 도박 수였다.
그렇게 세가지 루트를 세웠는데, 다음과 같다.
- 소마
- 42seoul
- 둘다 떨어지면 집에서 있으면서 다른 공부 리눅스마스터 2급, jlpt랑 pintos를 본격적으로 만져 볼 생각이 었다.
일단 모든걸 챙기되 되는걸 하자. 모든 것이 되면 42seoul을 고른다.
소마랑 42seoul 모두 일정이 빡빡했다. 이때 모든 일정에 관한 경우의 수를 생각하느라 꽤 머리가 아팠다. 아무튼 이런저런 모든 일정을 생각하면서 했는데, 결과
- 소마 : 코테 광탈
- 4기 1차 선착순 광탈.
일단 코테 광탈요인은 너무 명확했다. 난이도가 생각한것보다 어렵게 나올지 몰랐던것도 있지만 이 동안 코딩 테스트
대비를 안했다.
시간제한을 두고 문제를 푸는건 처음이었다
잠깐 반짝하면서 백준 문제 풀던걸 한달넘게 손놨던 상태였고, 유형을 아는 상태에서 풀었다. 이렇게 푸니까 완전 백지, 시간제한이 있는 상태에서 문제를 푼적이 없었다. 그러다보니 한두달 반짝 풀고 정작 실제 테스트에선 전혀 손도 못댄거라고 생각한다.
1차 선착순이 광탈당하고, 차선책으로서 학업 병행을 해야하는 (그리고 끝에 중간고사 기간과 겹치는) 2차 선착순도 대기번호 후순위였다. 이거는 일주일 뒤 마감날까지 빠지지않았고 마감날 저녁에 확정이 났다. 사실 좋아해야할지 포기해야할지 좀 고민했다. 피신 시작이 단 일주일 남은 상태에 당장에 울산에서 서울까지 짐싸서 올라가서 생활해야하는 상황이라 꽤 고민이 됐다.
그냥 지르기로 결정.
etc
그 외 복학전까지 한 짜잘한 것
biginteger 구현
biginteger를 C++ class로 만들어보자는 생각해서 시작했다. 20년부터 조금씩 코드를 짰었으며, 내부를 char배열 형식으로 짰었다. 테스트는 백준 문제로 테스트를했다.
그 중 큰 수 곱셈에서 시간초과를 계속 겪는데, 브론즈 5로 python으로 풀면 한줄로 끝나지만 C, C++에서는 biginteger를 직접 구현해야하는 상태에서 단순 곱셈형식으로 계산을 하면 \(O(n^2)\)으로 시간초과가 되어있게 문제가 설계되어있었다.
이걸 해결하기 위해 FFT를 공부했었고 코드 이해를 시작했다. posting
이렇게 겨우겨우 완성하고 조금더 성능적인 효율을 위해서 int32 배열에 4비트씩 자릿수를 할당해서 코드를 짰는데 어디선가 문제가있는지 계속 문제통과를 하지못하고있다. 현재 이 상태 그대로 멈춘 상태이다.
이걸 짜면서 아직까지 해결못한 문제점들이 있는데 다음과 같다.
- FFT를 이용한 것이 곱셉을 한번만 할때는 잘 작동하지만 두번이상하게되면 그 뒤로부터 메모리쪽 문제로 아예 뻗어버리는 문제를 겪는다. 아직까지도 정확한 원인을 못찾겠다.
- move constructor 구현 : 이쪽도 꽤나 애먹었다. 뭔가 쉽게쉽게 짜질것같지만 이쪽 코드를 건든 순간부터 다른 모든 부분에서 에러가 뜨면서 처리를 잘 못하겠다. 결국에 포기하고 모두 주석처리했다.
이걸 다시 만져보는 날이 올까?
rust 공부
언어가 좋다고 그렇게 극찬받은 언어 도대체 뭔가 궁금해서 공부해봤다. 그냥 쿡북느낌으로 쭉 따라하기만 하다가 결국에 치웠다.
- 언어 자체의 컨셉이 나에겐 너무 어려웠고
- 이걸 언어를 익혀서는 rust라는 언어를 썼을때 이득이있는 것을 만들어야 의미가 있다고 생각했기 때문이다.
당시 뭔가를 만들어야겠다는 생각이 없기에 그대로 드랍했다. 지금은 hello world도 출력할 줄 모른다. 추후에 프로젝트로서 뭔갈 해야겠다는 생각이 든다면 다시 익히는걸 고려할 생각이다.
온센 다운로더
년초에 온센 다운로더를 만들었다. 원래 주기적으로 다운로드를 하고있었는데 근 1년을 손수 하다가 도저히 불편해서 이걸 좀 쉽게 못할까? 란 생각에 명령어 치는걸 자동으로 만들수 있겠다 싶어서 만들게 된것.
하루만에 만든 30줄짜리 정말 간단한 프로그램이지만, 나에게는 처음으로 사용자가 있는 프로그램이었다. 그걸 1년 가까이 전혀 몰랐다가 온센 홈페이지 개편으로 프로그램이 돌아가지 않을때 바로 연락이 들어왔다. 이때 많이 기뻤었다.
복학
2학년으로 복학. 이번 봄학기 동안 단 한번도 학교를 가지않았다. 예상했지만 학교는 여전히 비대면으로 굴러가고 있었다. 덕분에 나는 피신 병행을 할 수 있었다.
피신 (3 ~ 4)
한달간 피신을 했다. 일주일동안 짐싸고 고시원 구하고 바로 올라갔다.
피신기간동안 격일로 하루는 학과 수업을 하루는 클러스터에서 보냈다.
한달간 미친듯이 굴렀다. 처음 서울로 올라와 강남 한복판에 생활했고, 많은 사람을 만나고 대화도 정말 많이했다. 좋은 사람들이 많이 있었다. 끝에가서는 스트레스도 정말 많이 받고 많이 힘들었지만 다신 못해볼 경험이라 굉장히 인상 깊었다.
본과정 합격
전입신고 (6월)
방학을 하면서 바로 서울에 원룸 계약하고 전입신고와 동시에 올라왔다. 방학기간에 완전히 42seoul에만 몰입할 생각이었는데, 단 3주만에 코로나 4단계 격상으로 클러스터가 완전히 닫혀서 다시 본가로 내려왔다. 😭
알고리즘 스터디 (7~8)
방학기간동안 하게된 스터디가 하나있는데 42seoul 슬랙방에서 알고리즘 스터디를 할 사람을 모집했었다. 그때 소마 코테의 기억이 있었어서 이 기회에 코테 준비도 좀 제대로 해보자 라는 생각으로 지원했었는데 갈수록 생각한 알고리즘 스터디가아닌 완전히 탈 코테용 내용을 익혀서 학습하게되었다.
어?어?하다가 그냥 나도 거기에 편승해 나도 완전히 폭주해서 다신 더 공부안하기로한 CLRS 책을 다시 집어들었다. 뒤로 갈수록 스터디는 세그먼트 트리, 밀러라빈 소수 판별법, 컨벡스 헐, 플로우 네트워크 등 지적유희의 끝판왕을 달렸다. 이젠 진짜 코테 준비하겠지? 😂
리버싱 스터디 (9~11)
방학부터 2학기에는 계속 이 스터디를 해봐야지하고 생각했다. 리버싱 엔지니어링을 따로 해본적은 없다고 생각했었는데 작년에 bomb lab을 했었는데 그게 리버싱 엔지니어링이란 것은 스터디를 시작하고 나서 알았다. 내가 스터디장으로서 학교 동아리에 공개적으로 모집을 했었고, 최종적으로 1학년 두명을 데리고 시작했다.
진행은 온라인으로 모였고 dreamhack의 리버싱 강의를 따라가는 식으로 진행했다.
짧게 만나서 끝냈다. 그닥 친목질이나 소통은 없었지만 스터디원들이 각자 맡은것을 다 해왔다는 것만으로도 큰 점수를 부여 할만했다. 1학년때 나는 어셈은커녕 C언어도 못만졌었는데 어셈을 공부해서 해온다는게 너무 대견했다. 그래도 초반부에 그냥 글만 읽어서는 이해가 어렵다보니 최대한 이해를 돕기위해서 서포트하려고 노력했다. 이 동아리에서 스터디를 하면서 가장 잘 굴러간 스터디라고 생각한다. 같이 팀으로서 뭔갈 한다면 효율적으로 잘 굴러갈 것 같다는 생각이 든다.
사실 하고싶었던 특정한 것이 있었고 그걸 위해서 리버싱 엔지니어링을 공부해야겠다는 생각에 study를 시작했는데 어쩌다보니 CTF 문제를 조금씩 불게 되는 형식이 되었다. 그걸 만져보는 날이 올까?
동아리 홈페이지 만들기 (9~12)
내가 들어가있는 학교 동아리에서 동아리 운영으로 쓸 홈페이지를 개발하고 있었다. 년초부터 했었는데 하고싶었지만 당시에는 pintos에 정신이 팔렸기도했고, 뒤에 계획이 있었으니 여기에 신경쓸 겨를이 없어서 포기했었다.(실제로 피신기간때를 생각하면 전혀 신경 못 쓸 수준이었다.)
나 3년간 시간많을때 안하다가 이제서야 하는거야ㅠ
가을 학기가 열리면서 이 인원들을 추가인원 모집을 하게 되었다.
사실 이 모집때만 했어도 여전히 42과제가 있었고 학과도 꽤 바쁠 것으로 예상했기에 에이 그런데 쏟을 시간은 없어. 라고 생각했지만,
언제 8월인가 9월경 우연히 게더타운에서
kalee
님을 만났는데 이래저래 얘기하다가 프로젝트 경험이 단 한번도 없었다는 얘길 했다가 제발 프로젝트 좀 해라고 꾸중을 들었었는데(예전에 kalee님이 하시고계시는 go 프로젝트도 하실생각없냐고 물어봤었는데 참여안했음), 이때 아 이제는 진짜 뭐라도 프로젝트라고 부를만한 것을 좀 해야하지 않겠나는 생각을 하게 되면서 결국에 질렀다.
웹을 완전히 모르는 상태에서 생활코딩으로 nodejs, express 같은걸 들으면서 프로젝트 들어가서 코드를 짜고있다. 아직까지도 프론트단 코드를 이해를 잘 못해서, 아직도 프론트는 남이 짠 코드에서 응용해서 짜는 정도 밖에 안된다.
처음하는 웹 개발이라 힘들어서 실제 처음 기능구현을 맡았을때는 며칠을 여기에만 퍼부었을 정도로 꽤나 빡센 작업이었다. 그럼에도 원래부터 작업하시던 사람들에게 도움을 많이 받으면서 했다.
여기에 완전히 몰입하면서 학과를 완전히 팽개쳐놨었는데 11월 중순 넘어가서부터 해커톤하면서 끝의 한달간 이쪽 개발도 팽개쳐놨다. 그뒤로는 12월로 팽개치며 스노우볼 굴러간 학과쪽 처리를 했고..
처음한 다인 프로젝트 였고 깃 작업의 필요를 느꼈다. 이 프로젝트는 아직도 개발, 설계면에서 많은 고민이 있고, 일단 22년에도 계속 할 생각이다.
11월 경 본가에서 계속 공부하면서 코드짜다가 아 도저히 안되겠다 좀 더 집중해야겠다, 아예 서울로 올라가서 클러스터에서 과제도 밀고 스터디도하고 시험공부도 여기서 하자 싶어서 올라왔다. 정작 학과 공부는 커녕 서울에 올라가자마자 해커톤에 참여하면서 모든걸 팽개치게됐다.
해커톤 (11월 중순 ~ 말)
딱 서울로 올라올 생각을 하던 찰나 해커톤 모집을 했다. 프로젝트 경험이 없으니 당연히 외부 해커톤은 참여를 할 깜냥이 안됐다고 생각했지만, 교내 대회다보니 상대적으로 부담감이 덜 했고 이제는 nodejs 만져는 봤고 컨셉정돈 안다 코드몽키정도는 할 수 있겠다 싶어서 지원하게 됐다. 딴거보다 이거도 안하면 평생 해커톤 신청못하겠다는 생각이 들었다.
그렇게 당일날 처음 만나서 팀을 짠 5명이서 10일간 프로젝트를 진행했다. 깃헙의 기능이랑 프로세스를 이것저것 시도해보는 좋은 경험이었다. 좋은 사람들을 만나서 재미있게 보냈다. 상은 못받았지만 큰 문제없이 무사히 마쳤다.
21년
딱 한마디로 정리가 가능하다.
정말 많은 사람을 만났고, 정말 많은 말을 했다.
이번 1년간 내가 만난 사람수와 대화량은 그간 3년간 만난 사람수와 대화량을 모두 합쳐도 많았다.