728x90
728x90
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #10] tree 명령어로 디렉터리 구조 한눈에 보기: 재귀 동작 원리와 실전 옵션2025-05-28 20:12:18TL;DR — 3줄 핵심 요약• 문제: 파일이 수십 개만 넘어도 ls 출력만으로는 폴더 안에 무엇이 어떤 순서로 들어 있는지 파악하기 어렵다.• 기술/원인: tree는 opendir/readdir로 디렉터리를 열어 항목을 읽고, lstat로 종류를 확인한 뒤, 하위 디렉터리마다 같은 함수를 다시 호출한다(재귀). 출력할 때 현재 항목이 마지막인지에 따라 ├── 와 └── 를 고른다.• 해결/인사이트: -L로 깊이를 제한하고, -a로 숨김 파일을, -I로 제외 패턴을, -P로 포함 패턴을 지정한다. README에 구조를 넣을 때는 tree -L 2 -I node_modules 정도가 가장 실용적이다.tree가 출력하는 것ls는 한 디렉터리의 항목을 나열한다. tree는 현재 디렉터리부터 하위 전체를 재귀적..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #9] tldr로 리눅스 명령어 예제 빠르게 찾기: man·explainshell과의 역할 분담2025-05-27 22:40:58TL;DR — 3줄 핵심 요약• 문제: man 페이지는 옵션 전체를 나열하지만 "내가 지금 하려는 일을 어떻게 쓰는지"는 몇 줄 안에 없다. 그 예를 찾느라 매번 검색하게 된다.• 기술/원인: tldr-pages는 명령어마다 Markdown 파일 하나를 두고 설명 한 줄과 예제 5~8개만 적는다. 클라이언트는 전체 페이지 묶음(zip)을 내려받아 ~/.cache/tldr에 저장하고, 조회할 때는 로컬 파일을 읽는다.• 해결/인사이트: man은 정확한 전체 사양, tldr은 자주 쓰는 사용 예를 담당한다. 처음 배울 때는 tldr로 예제를 따라 해 보고, 옵션 조합이 헷갈리면 man과 explainshell로 확인하는 순서가 효율적이다.tldr이 하는 일$ tldr tartarArchiving utilit..
[ 시스템 & 인프라/Linux & DevOps ]리눅스 한 학기 살기 - 8주차2025-05-01 01:22:37TL;DR — 3줄 핵심 요약• 문제: curl이나 docker를 설치할 때 ca-certificates가 함께 설치되는데, 이 패키지가 무엇을 하는지 모르면 "인증서 오류"가 났을 때 원인을 찾을 수 없다.• 기술/원인: HTTPS 통신은 서버가 보낸 인증서의 서명을 확인하는 것에서 시작한다. 그 서명을 검증하려면 "이 기관은 믿어도 된다"는 루트 인증서 목록이 필요한데, ca-certificates가 그 목록을 /usr/share/ca-certificates에 넣고 /etc/ssl/certs/ca-certificates.crt 하나로 묶어 준다.• 해결/인사이트: 사내 CA처럼 직접 만든 인증서는 /usr/local/share/ca-certificates에 .crt로 넣고 update-ca-certi..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #7] Vim 입문 가이드: Ubuntu 24.04 패키지 선택부터 모드·저장·매크로까지2025-04-23 22:25:14TL;DR — 3줄 핵심 요약• 문제: Vim을 열면 키를 눌러도 글자가 안 써지고, 저장하려다 파일을 잃는다. 원인은 Vim이 "모드"로 동작하기 때문이다.• 기술/원인: 같은 키가 모드에 따라 다른 일을 한다. 일반 모드에서 i는 입력 시작, a는 커서 뒤에서 입력, d는 삭제 명령의 시작이다. 명령행 모드(:)에서 w는 저장, q는 종료이고, 변경이 남아 있으면 q는 거부된다.• 해결/인사이트: 손이 기억해야 하는 것은 세 가지다. Esc로 항상 일반 모드로 돌아오기, :w로 자주 저장하기, :x로 저장하고 나가기. 여기에 이동(hjkl, w, gg, G)과 매크로(qa … q, @a)를 더하면 반복 작업이 사라진다.모드가 왜 필요한가일반 편집기는 키 입력이 항상 글자다. Vim은 키 입력이 "명령..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #6] Docker로 Jenkins 띄우기: CI/CD 개념부터 컨테이너 실행·초기 설정까지2025-04-22 22:35:43TL;DR — 3줄 핵심 요약• 문제: 서버에 Jenkins를 직접 설치하면 8080 포트가 이미 쓰이거나, JDK 버전이 꼬이거나, 지울 때 남는 파일이 생긴다. 이런 충돌을 없애려고 컨테이너에 넣어 실행한다.• 기술/원인: Docker 컨테이너는 이미지에 들어 있는 파일 시스템과 프로세스만 따로 띄우고, 바깥과는 포트 매핑(-p)과 볼륨(-v)으로만 연결한다. Jenkins의 설정과 작업 데이터는 /var/jenkins_home에 있으므로 이 디렉터리를 볼륨으로 빼 두면 컨테이너를 지워도 남는다.• 해결/인사이트: docker run 한 줄에 이름·포트·볼륨·재시작 정책을 모두 넣는다. 초기 비밀번호는 docker exec로 initialAdminPassword 파일을 읽어 얻고, 플러그인은 추천 세..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #5] 라즈베리파이5(ARM64) Ubuntu 24.04에 Docker Engine 공식 저장소로 설치하기2025-04-13 11:08:44TL;DR — 3줄 핵심 요약• 문제: 라즈베리파이 5는 CPU가 ARM64(aarch64)다. x86용으로 만든 설치 안내나 패키지를 그대로 쓰면 설치가 실패하거나 동작하지 않는다.• 기술/원인: apt는 sources.list에 적힌 저장소 주소와 아키텍처를 보고 패키지를 받는다. 아키텍처를 명시하지 않으면 엉뚱한 바이너리를 받을 수 있어, 공식 저장소를 추가할 때 arch=arm64로 고정한다.• 해결/인사이트: GPG 키를 /etc/apt/keyrings에 따로 저장하고 signed-by로 그 키만 신뢰하도록 지정한다. 설치 후에는 hello-world 컨테이너로 데몬·이미지 받기·실행이 모두 되는지 한 번에 확인한다.환경부터 확인한다lsb_release -a # Ubuntu 24.04,..
[ 시스템 & 인프라/PintOS & CS ][게임 인프라] 게임 산업의 주요 운영체제(OS) 비교: 콘솔(PS4·Xbox·Switch), PC(Windows·SteamOS), 모바일(Android·iOS) 아키텍처 분석2025-04-13 03:13:47들어가며운영 체제(OS)는 컴퓨터 시스템의 하드웨어 자원(CPU, GPU, 메모리, 저장 장치 등)을 관리하고, 응용 소프트웨어(게임 포함)가 하드웨어와 상호 작용할 수 있도록 인터페이스를 제공하는 필수적인 시스템 소프트웨어이다. 특히 게임 환경에서는 OS의 역할이 더욱 중요해진다. 게임은 실시간 상호작용, 높은 그래픽 처리 요구 사항, 낮은 지연 시간 등 극도로 까다로운 성능 조건을 요구하기 때문이다. OS는 이러한 요구 사항을 충족시키기 위해 자원 할당, 프로세스 스케줄링, 하드웨어 추상화, 보안 등의 기능을 효율적으로 수행해야 하며, 이는 게임의 성능, 안정성, 그리고 궁극적으로 사용자 경험에 직접적인 영향을 미친다. 게임 산업에서 사용되는 OS는 매우 다양하다. 특정 하드웨어에 맞춰 고도로 최적화..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #4] 라즈베리파이 VPN 구축: Tailscale vs WireGuard(PiVPN) 비교와 ufw 삽질기2025-04-09 16:30:10TL;DR — 3줄 핵심 요약• 문제: 집 안의 라즈베리파이에 밖에서 접속하려고 SSH(22)·RDP(3389) 포트를 공유기에 열어 두면, 전 세계의 자동 스캔 프로그램이 그 포트를 계속 두드린다.• 기술/원인: VPN은 두 기기 사이에 암호화된 가상 인터페이스(wg0, tailscale0)를 만들고, 그 인터페이스를 지나는 패킷만 암호화해 상대에게 보낸다. 그래서 바깥에는 VPN 포트 하나만 열려 있으면 되고, SSH·RDP는 터널 안쪽 주소로만 접근한다.• 해결/인사이트: 포트포워딩은 VPN 포트만 남기고 삭제한다. ufw는 기본 정책을 deny incoming으로 두고 VPN 인터페이스에서 들어오는 트래픽만 허용한다. 원격 작업 중 ufw를 잘못 만지면 접속이 끊기므로 콘솔 접근 수단을 먼저 확보..
728x90
728x90