240805 - 240811 금주의 놀라운 사실들
240805
이 날은 비즈니스 매너라는 개념에 대해서 배웠지만 여전히 잘 모르겠다. 주변에 이 이야기를 꺼내며 영업직은 못하겠다고 했더니 "고란 씨는 고객이 빡치게 하면 팜플렛으로 머리 깰 듯ㅋㅋ"이라는 말을 들었다. 비즈니스 매너는 그 자체로 놀라운 지식이었지만 글쎄, 잘 따를 수 있을 것 같진 않다.
240806
이 날은 멍청한 실수로 고통 받았다. 추상적인 사고와 구체적인 구현 사이의 간극을 줄여나가야만 한다.
240807
1) race condition이나 deadlock에 대해서는 개념만 조금 들고 있는 상태였는데, lock와 deadlock에 대해 이야기를 들으면서 정말 dead라는 표현이 잘 맞아들어간다는 느낌이었다. lock을 살아 있는 존재라고 생각하자. 살아 있다는 것은 상태의 변화를 갖는다는 뜻이다. deadlock은 상태의 변화가 이루어지지 않는 lock이다. 두 개 이상의 프로세스나 스레드가 서로가 보유한(=lock한) 자원을 기다리며 계속하여 대기함으로써 lock은 "죽는" 것이다. 물론 복구할 수 있다는 점에서 완전히 죽은 건 아니긴 한데.
240808
1) 내가 RDB의 join 연산에 대해서 잘 아는 건 아니긴 한데, semi join이나 anti join이라는 개념은 이 날 처음 알았다. semi join의 경우 inner join과 유사하지만 약간 다르다. " A SEMI JOIN B ON A.c_a = B.c_b"가 있다고 할 때, 이 결과에는 B의 명시적인 정보(column)가 없다. B.c_b의 부분 집합인 A.c_a에 대하여 A를 selection 하는 것이다. anit join은 반대다. B.c_b에 겹치지 않는 A.c_a에 대하여 A를 selection한다. 간단한 예시로는 '팔로우하는 사람의 게시글만 보려고 할 때' semi join이 쓰이고, '차단한 사람의 게시글은 내보내지 않을 때' anti join이 쓰인다고 할 만할 것이다. 물론 팔로우한 사람과 차단한 사람이 다른 테이블에서 관리될 때의 이야기다.
240809
1) C언어에서는 매크로(macro)라고 해서 #define 따위로 정의되는 문법이 있다. C언어의 전처리기(preprocessor)가 컴파일 직전에 코드 내의 텍스트를 치환하는 방식으로 동작한다. 다음의 코드를 보자.
#include <stdio.h>
#define PI 3.141592
int main() {
double API = 2.0;
printf("API: %f\n", API); // 출력: API: 2.000000
printf("PI: %f\n", PI); // 출력: PI: 3.141592
return 0;
}
위의 코드에서 "#define PI 3.141592" 부분이 매크로다. #define {identifier} {token-string}이라는 구조를 갖는데, 코드 내에서 identifier를 찾아서 token-string으로 치환한다. 물론 한계는 있다. 재밌게도 위의 코드에선 변수 'API'와 문자열 내부의 PI는 치환되지 않는다.
Microsoft 공식 문서에 따르면 identifier는 token일 때에만 치환된다고 한다. token이란 무엇일까? 이 또한 MS 공식 문서를 참조하자면, 컴파일러 수준에서 의미 있는 요소 중 가장 작은 것이라고 한다. 보통 white space나 연산자 따위로 구분되는 녀석들은 다 token이란다.(identifier를 설명하는 페이지도 따로 있다)
그러니까 위의 코드에서는 PI라는 token을 찾아서 3,141592로 바꾸는 건데, API나 "API: %f\n", "PI: %f\n"은 각각이 별개의 token이라서 매크로가 작동하지 않은 것이다.
240810
이 날은 내 8년 된 인텔 6세대 i5 노트북을 놓아주기 위해 열심히 노트북에 대해 검색했다. 내가 원하는 스펙과 가격대는 재고 떨이 특가에서나 발견할 수 있는 거였던 모양이다. 혹은 그런 특가를 기준으로 검색을 했던 걸 수도 있고. 결국 중고 노트북을 한 대 사기로 했는데 아쉬운 와중의 최선이었던 거 같다.
윈도우11이 설치된 노트북을 구매하는 거라 'WSL과 가상화'를 놀라운 사실로써 다룰 야심찬 계획이 있었는데 거래자분이 월요일로 거래를 늦추셔서 그냥 하루 종일 노트북에 대해서만 생각한 사람이 되었다. 이런 날도 있을 수 있지.
240811
이 코너에서 할 말이 있는 날은 journal이 되고 할 말이 없는 날은 diary가 되는 것 같다. 당연히 오늘은 diary다.
노트북 구매 결정으로 물욕이 자극됐는지 6년 된 갤럭시 노트9도 바꾸고 싶어졌다. 배터리 소모도 좀 빠르고 많이 느려졌다는 핑계가 있긴 했다. 3시간 동안 이리저리 찾아보다 간신히 참아냈다. 비슷하게 모니터를 한 대 중고로 살까 싶어서 이것저것 찾아봤는데 내가 원하는 수준의 매물은 보이지 않았다.
가진 자원으로만 해낼 줄 알아야 한다. 확실한 개선이 보장되었을 때에만 도구를 새로 갖추어야 한다. 그렇지만 사고 싶어질 때가 있어~~~