머신러닝 입문 (2) — 선형회귀를 밑바닥부터 구현하기

1편에서 np.linalg.lstsq가 내놓은 직선 ratio = 0.1936 * entropy - 0.6163이 무엇을 계산한 것인지는 건너뛰었다. 이 글에서는 손실을 미분해 정규방정식을 직접 풀고 lstsq와 같은 답이 나오는지 확인한 뒤, 설계행렬에 열을…

Continue Reading머신러닝 입문 (2) — 선형회귀를 밑바닥부터 구현하기

머신러닝 입문 (1) — 규칙 기반 코드와 학습 기반 코드의 차이

리눅스에서 개발하다 보면 대부분의 문제를 조건과 분기로 푼다. 그런데 이 파일을 gzip으로 압축하면 얼마나 줄어들까 같은 문제는 확장자로 if를 짜봐도 확장자 없는 실행 파일이나 이미 압축된 .gz에서 막히고, 머신러닝은 규칙을…

Continue Reading머신러닝 입문 (1) — 규칙 기반 코드와 학습 기반 코드의 차이

PLT 와 GOT – 리눅스 동적 링킹과 지연 바인딩

공유 라이브러리는 프로세스마다 다른 주소에 올라간다. ASLR이 켜져 있으면 같은 libc.so.6도 실행할 때마다 위치가 바뀐다. 그런데 .text는 읽기 전용으로 매핑되어 여러 프로세스가 물리 페이지를 공유하므로, call printf의 피연산자에 실제 주소를…

Continue ReadingPLT 와 GOT – 리눅스 동적 링킹과 지연 바인딩

LWN Weekly Report: 2026년 9월 10일 주요 뉴스

이번 주 LWN.net 위클리 에디션(9월 10일자) 주요 내용이다. 2년 넘게 끌어온 Rust never 타입(!) 안정화가 3,300개 크레이트를 흔드는 호환성 문제를 넘어 1.99에 들어가게 됐고, CERN은 컴파일러 플래그 하나 때문에 가속기…

Continue ReadingLWN Weekly Report: 2026년 9월 10일 주요 뉴스

리눅스 커널 spinlock·mutex 오용 디버깅 — DEBUG_SPINLOCK, DEBUG_MUTEXES, lockdep 실측 비교

스핀락(spinlock)과 뮤텍스(mutex)를 잘못 쓴 커널 코드는 대부분 조용히 지나간다. 초기화하지 않은 스핀락은 0으로 채워진 메모리라 x86에서는 그냥 동작하고, 스핀락 안에서 호출한 kmalloc(GFP_KERNEL)은 메모리가 넉넉하면 잠들지 않으니 아무 일도 없다. 그러다…

Continue Reading리눅스 커널 spinlock·mutex 오용 디버깅 — DEBUG_SPINLOCK, DEBUG_MUTEXES, lockdep 실측 비교

리눅스 커널 7.3-rc2, kmalloc() 호출을 kmalloc_obj()로 추가 전환 — Coccinelle이 놓친 scoped_guard 함수들

9월 6일 공개된 리눅스 커널 7.3-rc2에는 기능 추가 없이 코드 모양만 바꾸는 대형 패치가 하나 들어갔습니다. 키스 쿡(Kees Cook)이 보낸 kmalloc_obj() 전환 풀 리퀘스트입니다. 304개 파일에서 637줄이 추가되고 726줄이 삭제됐습니다.…

Continue Reading리눅스 커널 7.3-rc2, kmalloc() 호출을 kmalloc_obj()로 추가 전환 — Coccinelle이 놓친 scoped_guard 함수들

Podman으로 rootless 컨테이너 운영하기 — UID 매핑, 볼륨 권한, Pod, Quadlet

Docker는 root 권한으로 도는 dockerd 데몬에 명령을 보내는 구조라서, docker 그룹에 사용자를 넣는 순간 그 사용자는 사실상 root가 된다. docker run -v /:/host로 호스트 파일시스템 전체를 마운트할 수 있기 때문이다.…

Continue ReadingPodman으로 rootless 컨테이너 운영하기 — UID 매핑, 볼륨 권한, Pod, Quadlet

LD_PRELOAD로 라이브러리 함수 가로채 디버깅하기 — 호출 추적, malloc 집계, 시간 조작, 장애 주입

장애 상황을 재현하려고 보면 소스가 없는 바이너리이거나, 디스크를 실제로 가득 채우거나 시스템 시계를 바꿔야 하는 경우가 많다. 코드를 고치지 않고 "이 프로그램이 어떤 파일을 여는지", "디스크가 꽉 차면 에러 처리를…

Continue ReadingLD_PRELOAD로 라이브러리 함수 가로채 디버깅하기 — 호출 추적, malloc 집계, 시간 조작, 장애 주입

Bash 파라미터 확장(Parameter Expansion) 정리 — 기본값, 패턴 제거, 치환, 대소문자 변환

셸 스크립트에서 파일 이름의 확장자를 떼거나 경로에서 디렉터리만 뽑을 때 습관적으로 basename, dirname, sed, tr을 호출하곤 한다. 한두 번이면 문제없지만 수천 개 파일을 도는 루프 안에서는 명령마다 프로세스가 새로 뜨면서…

Continue ReadingBash 파라미터 확장(Parameter Expansion) 정리 — 기본값, 패턴 제거, 치환, 대소문자 변환

C언어 전처리기 매크로 제대로 쓰기 — 괄호, do-while(0), #과 ##, X-macro, _Generic

매크로(macro)는 함수 호출 비용 없이 코드를 재사용하고, 타입에 상관없이 동작하는 코드를 만들 수 있어 C에서 자주 쓰인다. 문제는 전처리기가 문법을 이해하지 않고 토큰을 그대로 치환한다는 점이다. SQUARE(1 + 2)가 5가…

Continue ReadingC언어 전처리기 매크로 제대로 쓰기 — 괄호, do-while(0), #과 ##, X-macro, _Generic