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 실측 비교

Ubuntu 서버에서 DNS 설정하기

Ubuntu 서버에서 DNS 서버를 바꾸려고 /etc/resolv.conf를 열면 nameserver 127.0.0.53 한 줄만 보이고, 직접 고쳐도 재부팅하면 원래대로 돌아간다. 18.04부터 이름 해석을 systemd-resolved가 맡고 있기 때문이다. 실제 업스트림 DNS는 Netplan(DHCP 포함)이나 resolved.conf에서…

Continue ReadingUbuntu 서버에서 DNS 설정하기

Ubuntu에 Docker Engine 설치 후 설정

Docker Engine을 설치하고 나면 바로 몇 가지 불편과 위험이 드러난다. 일반 계정으로 docker ps를 치면 권한 오류가 나고, 컨테이너 로그는 기본 설정에서 크기 제한 없이 디스크를 채운다. Docker 데몬을 재시작하면…

Continue ReadingUbuntu에 Docker Engine 설치 후 설정

Ubuntu 24.04 하드 디스크 마운트하기

서버에 데이터용 디스크를 새로 붙이면 lsblk에는 보이지만 파티션도 파일시스템도 없어 바로 쓸 수 없다. 마운트 후 재부팅하면 사라지고, /etc/fstab에 잘못 등록하면 부팅이 멈추기도 한다. 이 글에서는 Ubuntu 24.04에서 새 디스크…

Continue ReadingUbuntu 24.04 하드 디스크 마운트하기

WSL 배포판을 다른 드라이브에 설치하기

wsl --install로 배포판을 설치하면 디스크 이미지(ext4.vhdx)가 C:\Users\<사용자>\AppData\Local\... 아래에 만들어진다. 개발 도구와 Docker 이미지를 쌓다 보면 이 파일이 수십 GB로 불어나 C: 드라이브를 압박한다. 이 글에서는 처음부터 다른 드라이브에 설치하는 --location,…

Continue ReadingWSL 배포판을 다른 드라이브에 설치하기