Bash에서 구분자로 문자열 나누기 — IFS read, readarray, 파라미터 확장 실측 비교

CSV 한 줄, PATH 같은 콜론 목록, 설정 파일의 key=v1;v2;v3처럼 구분자로 이어진 문자열을 배열로 나누는 일은 셸 스크립트에서 매일 나온다. 그런데 흔히 쓰는 방법들은 공백이 든 필드, * 같은 glob…

Continue ReadingBash에서 구분자로 문자열 나누기 — IFS read, readarray, 파라미터 확장 실측 비교

Python 중첩 리스트 평탄화(flatten) — 6가지 방법 성능 실측과 함정

API 응답을 페이지별로 모은 리스트, 파일마다 읽은 줄 목록처럼 리스트의 리스트를 한 줄로 펴야 하는 경우는 흔하다. 방법은 list comprehension, itertools.chain, sum(xss, []) 등 여럿인데, 어느 것이 빠른지에 대한 통념과…

Continue ReadingPython 중첩 리스트 평탄화(flatten) — 6가지 방법 성능 실측과 함정

C/C++ 비트 set·clear·toggle 정리 — 시프트 UB와 타입 폭 함정 실측

레지스터 플래그, 권한 비트, 상태 마스크처럼 정수 하나의 특정 비트만 켜고 끄는 코드는 드라이버부터 일반 애플리케이션까지 어디에나 있다. 연산 자체는 |, &, ^ 한 줄이지만, 시프트할 리터럴의 타입을 잘못 고르면…

Continue ReadingC/C++ 비트 set·clear·toggle 정리 — 시프트 UB와 타입 폭 함정 실측

Git에서 이미 추적 중인 파일을 .gitignore에 반영하기 — rm –cached, skip-worktree, assume-unchanged 실측

빌드 산출물이나 .env 같은 파일을 실수로 커밋한 뒤 뒤늦게 .gitignore에 추가해도, git은 그 파일을 계속 추적하고 변경을 M으로 보여준다. .gitignore는 아직 추적하지 않는(untracked) 파일에만 적용되기 때문이다. 흔히 쓰는 git rm…

Continue ReadingGit에서 이미 추적 중인 파일을 .gitignore에 반영하기 — rm –cached, skip-worktree, assume-unchanged 실측

Bash 스크립트가 있는 디렉터리 경로 구하기 — dirname, BASH_SOURCE, readlink -f 실측 비교

설정 파일이나 같은 저장소의 다른 스크립트를 읽으려면 스크립트 자신이 있는 디렉터리를 알아야 한다. pwd는 호출한 쪽의 작업 디렉터리일 뿐이라 쓸 수 없고, dirname $0은 실행 방식에 따라 결과가 달라진다. 흔히…

Continue ReadingBash 스크립트가 있는 디렉터리 경로 구하기 — dirname, BASH_SOURCE, readlink -f 실측 비교

Git 사용법 기초 — 커밋, 되돌리기, 브랜치, 원격 저장소

작업하던 파일을 main_final.py, main_final2.py로 복사해 두다 보면 어느 것이 최신인지 금방 헷갈린다. 며칠 전 동작하던 코드로 돌아가고 싶은데 그 시점의 사본이 없기도 하다. Git은 이 문제를 파일 사본이 아니라 "변경…

Continue ReadingGit 사용법 기초 — 커밋, 되돌리기, 브랜치, 원격 저장소

Yocto 빌드에서 특정 패키지를 포함/제외하는 방법

Yocto로 이미지를 만들다 보면 패키지 하나를 넣거나 빼야 할 일이 계속 생긴다. 그런데 local.conf에 IMAGE_INSTALL += "strace"라고 적어도 이미지에 strace가 들어가지 않는다. 이미지 레시피가 IMAGE_INSTALL을 다시 할당해버리기 때문인데, 이처럼 변수마다…

Continue ReadingYocto 빌드에서 특정 패키지를 포함/제외하는 방법

EROFS 이미지 다루기 — 생성·검사·추출과 재현 가능한 빌드

읽기 전용 이미지 포맷으로 EROFS를 쓰기로 정하고 나면 그다음 벽은 도구다. SquashFS가 mksquashfs/unsquashfs 두 개로 끝나는 것과 달리 EROFS는 생성·조회·검사·마운트가 네 개 명령으로 나뉘어 있고, 그중 하나는 아예 별도 패키지다.…

Continue ReadingEROFS 이미지 다루기 — 생성·검사·추출과 재현 가능한 빌드

EROFS와 SquashFS 비교 — 압축률과 랜덤 읽기 I/O 증폭 실측

읽기 전용 루트 이미지나 컨테이너 베이스 레이어를 만들 때는 관성적으로 mksquashfs를 쓰게 되는데, 안드로이드와 컨테이너 런타임 쪽에서는 이미 EROFS로 넘어간 지 오래다. 그런데 막상 같은 디렉터리로 두 이미지를 만들어보면 EROFS…

Continue ReadingEROFS와 SquashFS 비교 — 압축률과 랜덤 읽기 I/O 증폭 실측