blah/Mini-Journal (13) 썸네일형 리스트형 컴파일러야 부탁해 C++을 공부하고 있다. 그놈의 객체지향이 뭔지 좀 느껴보려고. Django를 하면서 상속은 받아봤지만, JavaScript에서 prototype을 대충 써봤지만, Java를 깔짝대면서 맛은 보긴 했지만. 역시 모자라다. Java, C#, TypeScript… 여러 선택지가 있지만 C++을 골랐다. 이유는 내가 지금 하고 있는 게 C라서. 앞으로 어떤 커리어 패스를 밟아나가야 할지 감이 없으니 좀 더 진입장벽이 낮은 걸 하기로 했다. C도 더 이해할 겸해서. 보면서 감탄했던 지점이 한두 가지가 아니다. 초창기 C언어에서 고통 받았던 지점에 대한 해소와 새로운 트렌드의 도입을 어떻게든 해냈달까. 제일 재밌었던 건 참조형과 캐스팅이었다. 런타임의 속도는 늦추지 않으면서 보다 휴먼 에러를 줄여줄 수 있는 디자.. 능력 부족과 성장 바빴다. 각자에게 각자의 일정이 있으니만큼 안 그런 사람이 어딨을까마는, 바빴다. 적어도 나는 내가 바빴다고 생각한다. 물리적으로 바쁜 구간이 있었고, 마음이 크게 흔들리는 구간이 있었다. 지금은 둘 다다. 못난 부분이 눈에 띈다. 띈다뿐인가, 만천하에 공개하고 있는 느낌이다. 어떻게든 구르고 있지만 쉽지 않다. 누구나 그런가? 그럴지도. 그렇지만 다들 자신의 지옥이 뜨겁게 느껴지는 법이다. 나도 그렇다. 내게 무엇이 부족한가? 좋은 코드, 프로그래밍의 규칙, C언어, SQL, RDBMS, 일머리, 질문하는 방법, 정리하는 방법, 경험, 어쩌면 모든 것… 너무 나갔나? 표현이 과격할 뿐이지 틀린 말은 없다고 생각한다. 뭐가 부족하고 부족하지 않은지 판단이 안 서는 순간이 있다. 아직 전체상이 그려지지 않.. 2024 상반기를 되돌아보기 작년 10월 즈음 해서 프로그래밍을 공부해야겠다고 생각했다. 이유야 여럿 있는데 중요하진 않다. 나는 적절한 교육장을 골랐고, 올 상반기에는 해당 교육장에서 프로그래밍을 공부했다. - 교육장에서는 기본적인 자료구조와 알고리즘, Python, Django, HTML, CSS, JavaScript, Vue.js를 배웠다.- Java와 Spring을 따로 공부했는데 시원찮았다.- OOP와 DDD에 대해 약간 갈피를 잡았다.- Ollama와 KoboldCPP를 조금 가지고 놀았다. 알고리즘 문제는 대략 12001100개 정도 푼 것 같다. 교육장에서 알고리즘 문제만 풀도록 하는 기간이 있었어서 그때 많이 풀어뒀다. 한 500개는 굉장히 기초적인 문제들이고. 실력은 글쎄, 딱 백준 플레티넘5에 어울리는 정도 같다.. AI의 한계에 대해 생각하기 AI에 대해서는 오래 전부터 들어왔다. 중력파의 노이즈를 AI로 제거한다느니, 주가 데이터를 학습시킨 모델로 투자를 한다느니. 그러한 변화 중 제일 놀랐던 건 Stable Diffusion이었다. 그림을 생성하는 생성형 AI. 당시의 나는 "감상 시간이 짧은 예술일수록 빨리 정복당하겠구나"라고 생각했었다. 지금도 그 생각은 여전하다. 많은 것들이 AI에게 정복 당할 듯하다. 우리가 할 수 있는 건 현재 주어진 가능성에서 가장 덜 영향을 받는 역량을 기르고 그러한 분야로 방향을 트는 것 정도라고 생각한다. 더 나아가서는 AI를 잘 활용해야겠지. 그러기 위해서는 AI의 한계에 대해 이해해야 할 것이다. 물론 이 알량한 게시글이 그 한계를 잘 파악할지는 모르겠지만ㅎㅎㅎ 기본적으로는 두 가지에 대해 알아야 할 .. 성장의 문제 나는 의도적 훈련(deliberate practice)을 믿는다. 그러니까 요즘 논문이 뭐라고 하든 간에, 특정 기능을 "체계적"으로 훈련한다면 기존보다 더 나아질 수 있다고 생각한다는 뜻이다. 이건 기계적인 해석의 결과다. 나는 아주 많은 종류의 퍼포먼스가 변인의 세밀한 통제에서 비롯한다고 생각한다. 따라서 변인과 성과 사이의 연관성을 이해한다면, 사실 이해까지 가지 않더라도 단순한 가설 사고와 실험을 반복한다면 더 나아지리라고 믿는다. 이 믿음이 누구나가 노력하면 성공할 수 있다는 말과 동치는 아니다. 세상에는 역치가 있다. 그 역치 미만의 존재들은 절삭되곤 한다. 설령 내가 어제의 나보다 나아졌다고 한들 역치를 넘지 못한다면 의미를 발생시키지 못할 수도 있는 것이다. 그럼에도 불구하고 성장에는 가치.. 땜빵의 문제 Django REST framework에서 Seriailzer는 데이터를 직렬화(serialize)하거나 역직렬화하고, 더 나아가서는 유효성을 검사하거나 데이터를 조작할 때 쓰이는 기능이다. 당연히 많은 옵션이 내장되어 있고, 특정 순간에 적절한 옵션을 사용해야 한다. serializer에는 partial=True라는 옵션이 있다. 클라이언트 측에서 기존의 데이터를 업데이트하려고 할 때, 모든 필드의 데이터를 입력할 수도 있고 아닐 수도 있다. 이럴 때 partial=True 옵션을 입력해두면 입력된 필드값만 수정되도록 유연한 처리가 가능해진다. 제목과 지금까지의 내용으로 보면 뻔하지만, 나는 사실 partial=True의 존재를 몰랐다. 그래서 HTTP 요청을 수용하는 단에서 조건문을 사용해가며 직접 .. 예측의 문제 나비 효과(butterfly effect)란 카오스 이론에서 다루는 대상이 초기 조건의 미세한 차이에 따라 최종적인 결과가 굉장히 크게 달라지는 현상을 가리키는 단어다. 재밌게도 그러한 일이 발생하는 시스템을 구성하는 논리 자체는 간단할 수 있다. 로렌츠 어트랙터(Lorenz's attractor)의 기이한 궤적은 굉장히 짧은 수식으로부터 나타난다. 그러니까, 우리가 규칙을 이해하고 있더라도, 그 규칙이 간단하더라도 그 규칙의 끝에서 맞이하게 될 결과를 정확히 예측하는 것은 어려운 일이다. 심지어 우리가 규칙을 정확하게 파악하고 있지 않다면 더더욱. 결국에는 제약조건과 경험법칙을 덧대어 대상을 예측하게 된다. 오늘 푼 문제는 DSLR이었는데, 간단한 BFS로 보였지만 바로 통과하지는 못했다. 처음에는 방.. (Semi-)Completeness of Tools 수학에는 완비성(completeness)이라는 개념이 있다. 대상이 빈틈없이 메워져 있는지의 여부를 논하는 개념인데, 선형대수학의 맥락에서는 '주어진 벡터들로 주어진 공간을 모두 메울 수 있는가'의 여부를 가리킨다. 뒤집어 말하자면 주어진 공간에서 임의의 벡터를 주어진 벡터들로 표현할 수 있느냐. 그러니까 이런 것이다. 친구 집을 찾아가려고 한다. 지도를 보면 전후로 얼마나 걸어야 하는지 좌우로 얼마나 걸어야 하는지를 알 수 있다. 그러나 도착한 곳이 아파트라면 전후/좌우 2가지의 정보만으로는 부족하다. 몇 층에 사는지인 상하의 정보 또한 필요한 것이다. 이렇게 상하/전후/좌우 3가지의 정보가 전부 있어야만 친구의 집을 특정할 수 있고, 이것이 일종의 완비성이 된다 - 상하/전후/좌우 3가지 정보로 (우.. 이전 1 2 다음 목록 더보기