프로세스 생성 비용은 메모리가 아니라 페이지 테이블에서 나온다
리눅스의 fork는 부모 프로세스의 메모리를 복사하지 않는다. 코드 영역도 데이터 영역도 힙도 복사하지 않고, 부모와 자식이 같은 물리 페이지를 함께 가리키게 해 둔 다음 누군가 쓰기를 시도할 때 그 페이지만 복사한다. Copy-on-Write다 그렇다면 512MiB를 쥐고 있는 프로세스를 fork하는 비용과 아무것도…
리눅스의 fork는 부모 프로세스의 메모리를 복사하지 않는다. 코드 영역도 데이터 영역도 힙도 복사하지 않고, 부모와 자식이 같은 물리 페이지를 함께 가리키게 해 둔 다음 누군가 쓰기를 시도할 때 그 페이지만 복사한다. Copy-on-Write다 그렇다면 512MiB를 쥐고 있는 프로세스를 fork하는 비용과 아무것도…
전원 버튼을 누르면 ROM에 저장된 BIOS가 실행되고, 하드웨어를 점검한 뒤 하드디스크 첫 섹터의 마스터 부트 레코드에서 부트로더를 읽어 메모리로 올린다. 나도 이 순서로 외웠고 면접에서도 이렇게 답했다. 그런데 지금 팔리는 PC에는 이 경로가 없다 Intel은 2020년까지 클라이언트와 데이터센터 플랫폼에서 레거시…
수강 신청 DTO의 두 필드에 @NotNull을 걸고, 애플리케이션 서비스에는 @Validated를 달아 두었다. 그런데 리뷰에서 나는 그 사이에 있어야 할 @Valid가 빠져 있는 것을 발견했다. 그 상태에서는 DTO에 제약을 몇 개 걸어 두어도 Bean Validation 검사가 시작되지 않는다 같은 자리에 함정이…
어떤 프로퍼티 조합이 고유하고 그 값으로 엔티티 하나를 특정할 수 있으면 자연 키 후보로 본다. 회원의 이메일이 그랬고, 강의의 강사와 제목 조합도 그랬다. 그런데 두 경우에 서로 다른 결정이 나왔다. 이메일에는 @NaturalId를 붙였고, 강사와 제목에는 유니크 제약만 걸었다. Hibernate에서 @NaturalId를…
오후 1시 16분, 스토어 등록 폼을 열어 놓고 개인정보처리방침 URL 칸에서 멈췄다. 넣을 주소가 없었다. 페이지가 아직 안 만들어진 게 아니라, 그 페이지를 담을 코드조차 없었다 우리가 나간 공모전은 제출물이 파일이 아니라 「스토어에 등록 완료된 링크」다. APK를 내는 게 아니라…
2026년 8월 23일, CI 잡이 3초 만에 빨간불이 됐다. 로그를 열었더니 실패한 스텝이 없었다. 스텝 자체가 없었다. 계정의 GitHub Actions 무료 분 소진이었다 — 2,000분을 22일에 다 써서, 잡이 실패한 게 아니라 시작을 못 한 것이었다 하루 전에 나는 같은…
입력 값 검증을 애플리케이션 서비스 메서드 안에 직접 넣으면 첫 번째 오류를 만나는 순간 예외를 던지게 된다. 입력 항목이 열 개고 그중 다섯 개가 잘못됐다면 사용자는 다섯 번 제출하고 다섯 번 오류 메시지를 본다. 두 번째 제출에서야 두 번째 오류를…
상태를 가진 도메인을 개발할 때 가장 흔한 구조는 엔티티에 status 컬럼을 두고, 서비스 코드에서 if (course.getStatus() == DRAFT) 같은 조건문으로 전이를 검사하는 방식이다. 처음에는 잘 동작한다. 문제는 그 강의를 다루는 코드가 두 곳, 세 곳으로 늘어날 때다. 어느 상태에서 어느…
금요일 낮 12시쯤에 카톡이 왔다. 기 개발사로부터 파일을 인계받아 이관한 고객사 사이트 두 곳에서 블로그·고객후기 등 전부 사라졌다는 신고였다. 화면은 그대로라고 했다 (혹시) DB가 날아간 걸 먼저 의심했다. 그게 아니었다. 원인은 25일 전에 만료된 SSL 인증서였고 데이터는 한 건도 유실되지…
아키텍처 규칙은 대부분 문서에만 있다. “슬라이스 사이에는 순환 의존을 두지 않는다”고 적어 놓고, 코드 리뷰에서 걸러 내기를 기대한다. 그런데 리뷰어가 놓치면 그대로 들어가고, 한 번 들어간 순환 의존은 시간이 지날수록 걷어 내기 어려워진다 결론부터 말하면 이런 규칙은 테스트 코드로 강제할…