Most Viewed Blog Posts¶
Following is a list of most viewed 20 posts, sorted by number of visited unique users.
ALDS 2. Some Bad CP Code Practices¶
Migrated
This article is migrated from which I wrote on another website.
ICPC 2020 Seoul Regional에서 수상하고 CF Round 633을 주최한 이후, 저는 알고리즘 문제를 거의 풀지 않게 되었습니다. 이후로 퀀트업계에 종사하면서 이런저런 코딩을 많이 하게 되었는데, 그 과정에서 이런저런 개발을 하게 되었습니다. 이번에는 알고리즘 대회나 코딩테스트 등에서 나타나는 안 좋은 코드 습관들에 대해 얘기해보고자 합니다. 그 전에, 이 글이 타겟팅하는 독자는 다음과 같습니다.
- 개발을 직업으로 하고 싶은 사람
- 알고리즘 문제풀이와 개발 사이에서 코드 스타일이나 컨벤션, 마인드셋 등을 크게 바꾸고 싶지 않은 사람
당신이 알고리즘 문제를 푸는데 작성하는 코드가 더러워진다고 상관없다고 생각하는 사람이라면, 저는 그 생각에 별로 관여하고 싶지 않으며 그 생각을 존중합니다. 당신이 그런 코딩 스타일을 실제 현업에서 똑같이 해도 문제가 없다고 생각하지만 않는다면요.
그럼 이제 본격적으로 알아봅시다.
References
이 글은 nor의 덧글을 통해 내용이 보강되었습니다.
RUST 1. Rust's Disadvantages in My Opinion¶
안녕하세요. 이번 시리즈에서는 Rust에 관한 이것저것을 다루고자 합니다. 시리즈의 첫 글로는 좀 민망한 주제일 수 있지만, 제가 생각하는 러스트의 단점에 대해 얘기해보고자 합니다.
Rust 관련 커뮤니티를 돌아다니다보면 Rust가 모든 방면에서 만능인 언어라고 생각하는 사람이 많습니다. 어떤 국내 카톡방에서는 Rust가 대한민국에서 개발자 취업을 하는 빠른 길이라고 주장하시는 분도 계셨고.. 최근 회사에서는 회사의 모든 스택들.. Rust가 생산성이 좋기 때문에 심지어 프론트엔드까지 Rust로 만들어야 한다고 주장하는 인턴분도 계셨습니다.
정작 그런 분들하고 자세히 Rust를 얘기하다보면 Rust로 개발하는 과정에서 나타나는 병목들을 잘 모르시더군요. 저라고 뭐 만능 프로그래머는 아니지만, Rust로 개발하다가 불편함이 느껴진 부분이 종종 있었습니다. 이 글에서는 그런 부분들에 대해서 소개하고자 합니다.
Warning
미래에 가끔 또 생각나는 단점들이 있으면 글을 업데이트할 수 있습니다.
THO 10. Importance of Quality of Hiring Process¶
제가 구직 기간 동안 여러 회사들의 채용 프로세스를 거치면서 느낀 점이 하나 있습니다. 어떤 조직이 사람을 채용하는 프로세스의 퀄리티와 그 조직 자체의 퀄리티 사이에는 양의 상관관계가 있다는 것입니다.
이번 글에서는 이에 대해서 자세히 얘기해보고자 합니다.
THO 4. 20 Years of Time Attack¶
연말 송년회 기념으로 친한 친구들과 제 자취방에서 고기파티를 했습니다. 그때 대화주제 중에 나온 게 몇 가지 있었는데, 관련해서 쓸 거리가 몇 가지 생각나서 글을 써보고자 합니다.
Disclaimer
미리 말씀드리지만, 저는 좌/우 정치적 이념 중 어느 쪽이 맞다 틀리다를 가릴 생각이 없습니다. 어느 쪽이 집권하든 뭐가 되었든 간에, 일반인 입장에서 어떻게 살아남아야 하는가에 대한 것들이 이 글의 주요 컨텐츠입니다.
글의 내용을 두 문장으로 요약하면 이렇습니다.
Abstract
젊은 세대에게 주어진 시간이 얼마 남지 않았다. 열심히 대비하자.
정말 힘든 시대입니다. 취업시장은 바늘구멍이 되었고, 돈을 미리 준비하지 못한 사람들은 과도한 인플레이션과 부동산 상승으로 인해 상대적인 기회손실을 크게 보았습니다. 그럼에도 불구하고 우리는 살 길을 계속해서 찾아야 합니다. 왜냐하면 앞으로 제대로 대비하지 못한다면 더욱 고통스러운 나날들이 우리를 기다리고 있기 때문입니다.
THO 12. The Benefits of Good Universities¶
최근에 디스코드에서 알게 된 게임 인맥들과 자주 음성 통화를 했었는데, 그 사람들과 인생에 관한 이런저런 이야기를 하다가 좋은 대학을 가면 얻는 장점들에 대해서 글을 써보고 싶어졌습니다.
Disclaimer
무조건 좋은 대학을 향해야 한다는 것이 아닙니다. 좋은 대학을 나왔다고 해서 그 사람이 무조건 능력자라는 것도 아닙니다.
좋은 학벌을 얻는 것과 성공하는 것에는 양의 상관관계가 있을 지 몰라도, 그것이 무조건적으로 정비례하지는 않습니다. 본인이 생각하는 다른 좋은 진로 설계가 있다면 그걸 따라가도 됩니다. 애초에 저는 당신의 인생의 방향을 강요할 권한이 없습니다.
그리고 저는 이런 학벌주의 현상이 바람직하다고 말하는 것도 아닙니다. 그냥 현실이 그렇다는 겁니다. 호랑이가 아프리카 평원에 조난된 사람들을 잡아먹는 것이 바람직하지 않은 불쾌한 이야기로 들릴 수 있지만, 그런 현상이 가능하다는 것을 말하는 것 자체는 완전히 별개인 것과 같은 맥락입니다.
대한민국에서 학벌 얘기는 아주 민감한 주제이기에 이 경고문을 서두에 써둡니다. 학벌에 관련해서 뭔가 이야기를 하는 것 자체가 불쾌하시다면, 그냥 뒤로가기를 눌러주세요.
기왕이면 왜 네임밸류가 좋은 대학에 가는 것이 좋을까요? 제가 생각하기에 그 이유는 정말 너무 많습니다. 지금부터 알아봅시다.
PY 2. Some Frequently Used Python Tools by Me¶
안녕하세요. 이번 글에서는 제가 Python 언어를 사용하는 개발 프로젝트를 만들 때 자주 사용하는 툴 및 라이브러리들을 소개합니다.
Info
아래 라이브러리들의 목록은 언제든지 수정될 수 있습니다.
PY 3. API Rate Limiter¶
안녕하세요. 이번 글에서는 API Limiter에 대해서 다뤄보려고 합니다. Python에 특화된 주제는 아닌데, 그냥 구현을 Python으로 하다보니 Python 시리즈에 글을 쓰게 되었습니다. 만약 나중에 이 글을 넣기 적합한 다른 시리즈가 나온다면 그쪽으로 글을 옮길 수도 있습니다.
THO 5. About Coding Assessment Problems¶
Migrated
This article is migrated from which I wrote on another website.
안녕하세요. 알려드릴 수 없는 어떤 회사에서 코딩테스트 문제를 직업으로써 만들어본 경험을 한번 풀어보고 싶어서 글을 쓰게 되었습니다.
Disclaimer
저는 해당 회사를 퇴사한 지 한참 지났고, 내부의 상황이 지금과는 다를 것이기 때문에 문제가 되지 않는 선에서 제가 여러 가지를 익명으로 풀어보고자 합니다. 경우에 따라 조금 불쾌하다고 느껴지는 표현이 있을 수도 있는데, 비하의 의도는 전혀 없습니다.
저는 첫 번째 회사를 퇴사할 당시 다른 여러 회사를 알아보게 되었고 그 중 우연히 코딩테스트 문제 관련된 직종에 지원할 기회가 생겼습니다. 당시 저는 그 전 회사에서 업무적인 측면이나 여러 가지 방면에서 실패를 해서 자존감을 채우고 싶었고, 마침 알고리즘쪽은 나름 자신이 어느 정도 있는 편이었기에 해당 회사에 지원하여 바로 합격해서 출제 업무를 시작하게 되었습니다.
RUST 2. Type Hints for Async Closures¶
최근에 자동매매 프로그램을 Rust로 코딩해보면서 몇몇 점들에 부딪혔었는데, 그 삽질 과정을 블로그에 남겨보고자 합니다. 바로 직전에 잠깐 있었던 회사에서 Rust로 코딩했을 때도 있었던 문제였으며(그 회사는 당시 legacy platform에서 이 문제를 피하기 위해 naive한 디자인을 선택했습니다), 굳이 퀀트가 아니더라도 Rust로 서로 다른 네트워킹 프로토콜을 한 컨테이너에 보유하는 것을 런타임에 가능하게 하고자 하는 모든 분들이 아마 어떤 식으로든 마주했을 문제라고 생각합니다.
Info
지금 자동매매 프로그램을 짜는 것은 진지하게 트레이딩을 해보자는 것보다는 개발에 대한 감을 잃지 않고 유지하고자 하는 것에 더 가깝습니다. 만약 자동매매 프로그램을 계속 오랫동안 짜게 될 경우, 이러한 글들을 위한 "QUANT" 시리즈를 따로 만들고 그런 글들을 해당 시리즈에 넣을 가능성이 있습니다.
THO 2. About Game Development¶
Migrated
This article is migrated from which I wrote on another website.
저는 어떤 컨텐츠를 만드는 것을 좋아하는 사람입니다. 사람들이 제가 만든 시스템 안에서 어떤 문제를 해결해나가는 과정을 지켜보는 것은 정말 재밌습니다. 그래서 마인크래프트 안에서 미니게임을 만드는 일을 많이 해왔습니다. 제가 만든 마인크래프트 맵들 중 하나인 "Highliner"는 모장의 렐름 공식 미니게임에 등록되기도 했었습니다.
그래서 저는 게임 인맥이 유투버 등 유명인들만큼은 아니지만, 국내외로 어느 정도는 있는 편입니다. 실제로 위 맵을 렐름에 올리는 과정에서 해외의 유명한 맵 제작자들 혹은 모장 직원들이랑 소통하기도 했습니다. 그런데 아예 컨텐츠로 먹고 살 정도까지는 아닌 일반적인 게임 인맥들 중에서는 게임 개발자에 대한 로망과 환상을 가진 사람들이 많습니다. 오늘은 게임 개발에 대한 제 생각을 쓰고자 합니다. 그런 환상을 가진 사람들이 나쁘다고 말하려는 것은 아닙니다. 하지만, 현실은 직면해야 한다고 생각합니다.
ALDS 4. My Codeforces Problemsetting Experiences¶
Migrated
This article is migrated from which I wrote on another website.
안녕하세요. 이 시리즈에서는 저의 생각과 관련된 글을 적어보고자 합니다. 이번 글은 Codeforces라는 프로그래밍 대회 플랫폼에서 대회 출제를 몇 번 해본 경험을 소개하고자 합니다.
POKER 2. How Poker Works in Korea¶
Migrated
This article is migrated from which I wrote on another website.
안녕하세요. 이번 글에서는 국내에서 포커가 어떤 식으로 돌아가는지 서술해보고자 합니다. 원래 모든 생각은 다 Thoughts 시리즈에 넣으려고 했다가, 그냥 특정 주제에 관련된 생각은 다른 시리즈에다가 포함시키기로 결정했고, 이 글은 Poker 시리즈의 2번째 글이 되었습니다.
Disclaimer
저는 단 1번도 미승인/불법 업장에 출입한 적이 없고, 그 어떤 홀덤 관련 회사와도 이해관계가 없습니다. 이 글은 익명의 주변 인맥으로부터 듣고, 실제로 온라인 상에서 홀덤 주최 운영 세력이 어떤 식으로 홀덤을 운영하는 지를 보고 느낀 점을 쓰는 글입니다. 또한, 이 글은 특정 인물 혹은 단체를 비하하고자 작성된 글이 아닙니다.
ALDS 5. Relationship between Algorithm and Dev Career¶
Migrated
This article is migrated from which I wrote on another website.
안녕하세요. 이번에 쓸 글의 주제는, "알고리즘과 취업의 상관관계" 입니다.
THO 8. Protecting Myself¶
저는 올해 들어서 법적/제도적 싸움을 상당히 많이 진행하였습니다.
- 업비트에서 정지된 계정을 해제하기 위한 분쟁
- 조립 컴퓨터 판매 업체를 상대로 소비자원에서 진행중인 분쟁
- 돈을 안 갚는 사람을 상대로 진행중인 소액소송
- 디스코드를 개인정보 관련 국가기관에 신고해서 압박을 넣은 사건
어릴 때부터 느낀 점이지만, 학교/직장/사회는 결국 동물의 왕국의 연장선일 뿐이라는 생각입니다. 가만히 있으면 만만히 보고 공격하거나, 어떤 식으로든 돈을 뺏어가려는 사람들이 세상에 넘쳐납니다. 유독 올해, 가만히 있으면 받았을 큰 피해들을 상대로 공격적으로 대응을 많이 했던 것 같습니다. 이번 게시글에서는 아직 공개가 가능한 범위에서 여러 썰들을 풀어보고자 합니다.
Disclaimer
저는 특정 사람이나 단체를 비방할 목적으로 글을 작성하지 않았습니다.
Warning
조립 컴퓨터 판매 업체와의 분쟁은 현재진행형으로, 해당 분쟁은 결론이 나기 전까지 관련 내용을 본문에 서술하지 않을 것입니다.
THO 6. What Every Korean Should Know About Military¶
제 주변의 한국 남성들은 저를 포함한 거의 대부분이 군대 문제를 해결했습니다. 제가 군대를 아직 다녀오지 않은 사람들하고 대화할 때 자주 하는 말들을, 문제가 되지 않는 선에서 적당히 필터링하여 이 글에도 쓰고자 합니다.
글의 제목은 What Every Programmer Should Know About Memory의 패러디입니다. 정작 이 글은 별로 많은 정보를 담고 있지는 않네요..
CPP 4. My Recent CPP Interviews¶
Migrated
This article is migrated from which I wrote on another website.
이번에는 조금 실무적인 글을 써볼까 합니다. C++, 로우레벨 CS지식에 관련한 티키타카 목록입니다. 어차피 불합격해서 물건너간 회사들이고, 회사 여러 군데에서 테크니컬 인터뷰를 보고 받은 질문들을 기억나는대로 일부 선정해서 최대한 문제가 안 되는 선에서 무작위로 섞어서(=회사 범위 희석) 써보고자 합니다.
ALDS 1. Sparse Table¶
Migrated
This article is migrated from which I wrote on another website.
안녕하세요. 이번 시리즈에서는 유용한 알고리즘과 자료구조를 몇 가지 다루어보고자 합니다. 이 시리즈의 첫 번째 타겟으로는 Sparse Table을 다뤄보겠습니다.
이 포스팅은 cp-algorithms를 참고하였음을 알려드립니다.
THO 11. The World Administrator¶
인류가 생겨난 이래, 인류의 집단의 규모와 그 우두머리가 가지는 힘의 크기는 서서히 증가해왔습니다.
과거에는 마을 사람들 몇 십명 정도가 합심하면 부족장을 몰아내고 새로운 우두머리를 추출해낼 수 있었고, 중세 ~ 근대 시대에 물리적인 다툼으로 권력자를 끌어내리는 일은 굉장히 어려운 일이었습니다. 그런 게 실제로 일어난 프랑스 혁명은 매우 이례적인 일이었고, 역사에 크게 기록되었습니다. 현대 시대에 평화적인 비폭력 시위 이외의 방법으로 시민이 권력자를 교체시키는 것은 사실상 불가능합니다.
저는 미래에는 이러한 경향성이 더욱 심해질 것이라 생각합니다. 이번 게시글에서는 이러한 내용에 관하여 작성해보려고 합니다.
CPP 1. Type of Expressions and References¶
Migrated
This article is migrated from which I wrote on another website.
안녕하세요. 이번 시리즈에서는 C++에 관한 이것저것을 다루고자 합니다. 대부분의 경우 C++17 (gcc 기준)을 타겟팅하여 다룰 예정입니다. 거의 모든 시리즈가 1~2편밖에 안 나오는 것 같네요.. 사실 Linear Algebra 2편을 만들다가 회사에서의 일들, 이직 등 때문에 많은 플로우가 끊겼는데, 나머지 시리즈들도 시간이 남을 때 만들어보도록 하겠습니다.
이 시리즈 또한 기초적인 내용(for, if문 사용법 등등..)은 제외하고, 제가 다루고 싶은 주제들을 하나하나 다루어보고자 합니다. 이번 포스팅에서는 C++의 expression type에 관하여 소개하고자 합니다.
PY 1. Type Hints¶
Migrated
This article is migrated from which I wrote on another website.
안녕하세요. 이번 시리즈에서는 파이썬에 관한 이것저것을 다루고자 합니다. 아주 기초적인 내용은 제외하고, 난이도 등등에 상관없이 다루고 싶은 주제들부터 다루고자 합니다! 이번 포스팅에서는 Python의 유용한 기능 중 하나인 type hint에 관하여 소개하고자 합니다. PEP 484의 내용을 주로 커버하는 포스팅이라고 생각하셔도 됩니다.
버젼은 3.10을 메인으로 하고 있는데.. 부분적으로 outdated된 내용이 있을 수 있습니다. 또한 Python의 typing 모듈이 커버하고 있는 범위가 매우 넓기 때문에, 저는 이 포스팅에서 가능하면 자잘한 것들(Abstract base class 목록이라던가.. 등등)에 대해서는 커버하지 않고자 합니다. 굵직한 것들 위주로 해보려고 담아봤는데도 내용이 상당히 길어졌네요..