SONUB
KO English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

알림을 켜는 방법

이 브라우저 또는 주소에서는 알림을 사용할 수 없습니다. 지원되는 브라우저로 보안 연결된 SONUB 사이트에 접속해 주세요.

알림이 차단되어 있으면 브라우저 설정에서 허용해 주세요.

  1. 주소 표시줄 옆의 사이트 설정 또는 브라우저의 사이트 설정을 열고, 이 사이트의 알림을 허용으로 바꾸세요.
  2. 기기 설정에서 브라우저 알림을 허용하고 방해 금지 또는 집중 모드를 확인하세요.
  3. SONUB으로 돌아와 페이지를 새로고침하세요. 알림이 켜지면 벨은 사라집니다.

iPhone 또는 iPad에서는 SONUB을 홈 화면에 추가하고 거기에서 연 뒤 알림을 허용하세요.

관리자 로그인 화면 테마 기본 테마 다크 테마 핑크 테마 채팅 1:1 채팅 그룹 채팅 게시판 공지사항 뉴스 게시판 건의 게시판 자기소개 게시판 주요 메뉴 로그아웃

용어집

SONUB 이 팝업으로 설명하는 어려운 낱말을 모두 한곳에 모아 쉬운 말로 풀었습니다. 바깥 용어집에서 온 용어는 출처를 함께 적었으니, 원문을 열어 전체 정의를 확인해 보세요.

전구가 켜진 채 펼친 책을 읽는 학생이, 스톱워치 옆에서 퀴즈 카드에 답하고, 결과지를 보며 점선 화살표를 따라 다시 책으로 돌아가는 모습. 뒤에는 트로피가 놓인 작은 계단이 있다.

용어 1410개

설명은 원문을 쉬운 말로 짧게 줄인 것입니다. 기준은 원문이니, 다르면 원문을 따르세요.

출처 · Hugging Face

Transformers — Quantization concepts

용어 2개 · 2026-10-24 확인

원문 용어집 열기

양자화

원문 표기 · Quantization

모델의 숫자를 더 적은 비트로 저장하기

양자화는 학습된 숫자를 16·32비트 대신 4·6·8비트처럼 더 적은 비트로 표현하는 방법입니다. 보통 저장한 가중치 파일이 작아지고, 런타임이 압축된 표현을 유지하면 가중치 메모리도 줄지만 품질이 떨어질 수 있습니다. 스케일·메타데이터·혼합 정밀도로 부가 용량이 생깁니다. KV 캐시와 작업 버퍼도 메모리를 쓰므로 전체 메모리와 실행 시간이 같은 비율로 줄지는 않습니다.

더 배우기 가중치·파라미터 자세히 보기

FP16·BF16

원문 표기 · FP16 · BF16

숫자 하나를 16비트(2바이트)로 적는 두 형식

FP16과 BF16은 부동소수점 값 하나를 16비트, 즉 2바이트로 저장합니다. FP16은 더 세밀하지만 표현 범위가 좁고, BF16은 표현 범위가 넓지만 정밀도가 낮습니다. 이 형식으로 공개되는 모델이 많지만 양자화하지 않은 원본은 FP32나 혼합 정밀도일 수도 있습니다. 원본이 항상 16비트라는 뜻은 아닙니다.

더 배우기 가중치·파라미터 자세히 보기

출처 · Hugging Face

Hugging Face Hub — GGUF

용어 2개 · 2026-10-24 확인

원문 용어집 열기

모델

원문 표기 · Model

학습한 숫자와 그 숫자를 사용하는 계산 구조

AI 모델은 계산 구조와 학습으로 얻은 숫자들로 이루어집니다. 파일에는 주로 텐서로 묶인 숫자와 불러오기 정보가 저장되며, 설정과 토크나이저 정보는 함께 또는 따로 담깁니다. 런타임이 파일을 읽고 실제 계산을 수행합니다. 모델은 여러 파일에 나뉠 수 있으며, 보통 실행 프로그램 전체를 포함하지 않습니다.

더 배우기

GGUF

모델의 텐서와 불러오기 정보를 담는 형식

GGUF는 모델의 텐서와 구조 설정·토크나이저 정보 같은 메타데이터를 저장하는 형식입니다. llama.cpp 같은 런타임이 읽어 모델을 실행하며, 런타임 자체는 별도 프로그램입니다. 양자화하지 않은 가중치와 양자화한 가중치를 모두 지원하고, 큰 모델은 여러 GGUF 파일로 나눌 수도 있습니다.

더 배우기 가중치·파라미터 자세히 보기

출처 · Anthropic

Claude Code Docs — Glossary

용어 52개 · 2026-10-19 확인

원문 용어집 열기

AGENTS.md

여러 AI 코딩 에이전트가 함께 읽는 프로젝트 지시 파일

Claude 만이 아니라 AI 코딩 에이전트 모두를 위해 쓰는 프로젝트 지시 마크다운 파일입니다. 저장소에 AGENTS.md 만 있고 CLAUDE.md 가 없으면 클로드 코드는 이 파일을 프로젝트 지시로 읽습니다. CLAUDE.md 도 함께 쓴다면 CLAUDE.md 에서 AGENTS.md 를 불러와 모든 도구가 같은 규칙을 따르게 합니다.

더 배우기

에이전트 팀(Agent teams)

팀 리더 아래에서 함께 일하는 여러 클로드 코드 세션

팀 리더가 조율하는 여러 개의 독립된 클로드 코드 세션입니다. 할 일 목록을 함께 쓰고 팀원끼리 메시지를 주고받습니다. 한 세션 안에서 돌며 부모에게만 보고하는 서브에이전트와 달리, 팀원은 저마다 컨텍스트 창이 있고 누구와든 직접 대화할 수 있습니다. 실험 기능이라 처음에는 꺼져 있습니다.

더 배우기

에이전틱 코딩(Agentic coding)

AI 가 스스로 코드를 읽고 실행하고 고치는 작업 방식

사람이 지켜보거나 방향을 바꾸거나 자리를 비운 사이에 AI 가 스스로 파일을 읽고 명령을 실행하고 코드를 고치는 작업 방식입니다. 채팅 도우미는 글로만 답하고 그 내용은 사람이 직접 옮겨 적용해야 합니다. 클로드 코드는 조언만이 아니라 직접 행동하는 도구가 있어서 에이전틱합니다.

더 배우기

에이전틱 하네스(Agentic harness)

언어 모델을 코딩 에이전트로 만들어 주는 바깥 프로그램

언어 모델을 쓸모 있는 코딩 에이전트로 만들어 주는 도구·컨텍스트 관리·실행 환경을 합친 것입니다. 클로드 코드가 하네스이고 Claude 는 그 안의 모델입니다. 하네스가 파일 읽기·쉘 실행·권한 확인·메모리 불러오기와 행동을 이어 가는 반복을 맡습니다.

더 배우기

에이전틱 루프(Agentic loop)

맥락 모으기 → 행동 → 결과 확인을 되풀이하는 순환

Claude 가 모든 작업에서 거치는 순환입니다. 맥락을 모으고, 행동하고, 결과를 확인하고, 끝날 때까지 되풀이합니다. 도구를 쓸 때마다 돌아온 정보가 다음 걸음을 정하고, 사람은 언제든 끼어들어 방향을 바꿀 수 있습니다. 훅·스킬·MCP 는 이 순환의 특정 단계에 붙습니다.

더 배우기

아티팩트(Artifact)

클로드 코드가 세션에서 만들어 올리는 살아 있는 웹 페이지

클로드 코드가 세션에서 claude.ai 의 비공개 주소로 올리는, 움직이는 웹 페이지입니다. 터미널 글 대신 결과를 눈으로 보거나 남에게 보여 줄 수 있고, 세션이 다시 올리면 그 자리에서 바뀝니다. claude.ai 대화에서 만든 아티팩트와 같은 모음에 보입니다.

더 배우기

자동 메모리(Auto memory)

사람의 지적과 취향을 보고 Claude 가 스스로 적는 메모

사람이 고쳐 준 것과 좋아하는 방식을 보고 Claude 가 스스로 적는 메모로, git 저장소마다 ~/.claude/projects/ 아래에 저장됩니다. 세션을 시작할 때마다 MEMORY.md 목차의 앞부분을 읽어 배운 것을 이어 갑니다. 자동 메모리는 Claude 가 쓰고, CLAUDE.md 는 사람이 씁니다.

더 배우기

자동 모드(Auto mode)

분류 모델이 사람 대신 행동을 허락하는 권한 모드

따로 있는 분류 모델이 사람 대신 클로드 코드의 행동을 검토하는 권한 모드라, 대부분의 행동이 묻지 않고 실행됩니다. 사람이 명시한 ask 규칙에 맞는 행동은 여전히 묻습니다. 분류 모델은 범위 넘기·믿을 수 없는 서버·프롬프트 인젝션을 막고, 도구 결과를 보지 않아 파일 속 악의적인 글에 휘둘리지 않습니다.

더 배우기

베어 모드(Bare mode)

훅·스킬·플러그인·메모리 없이 클로드 코드를 시작하기

--bare 를 붙이면 클로드 코드가 훅·스킬·사용자 명령·서브에이전트·플러그인·MCP 서버·자동 메모리·CLAUDE.md 를 읽지 않고 시작합니다. --add-dir 로 넘긴 폴더의 스킬만 예외입니다. 어느 컴퓨터에서나 같은 결과가 나와야 하는 CI 와 스크립트에 권합니다.

더 배우기

번들 스킬(Bundled skills)

클로드 코드에 처음부터 들어 있는 스킬(/code-review 등)

클로드 코드에 함께 들어 있는 프롬프트 기반 작업 안내서로, /batch·/code-review·/debug·/loop 같은 것입니다. 내장 명령은 정해진 동작을 그대로 실행하지만, 번들 스킬은 Claude 에게 자세한 지시를 주고 일을 스스로 짜게 합니다. 그래서 에이전트를 띄우고 파일을 읽으며 내 코드에 맞춰 움직입니다.

더 배우기

채널(Channel)

바깥 사건을 실행 중인 세션으로 밀어 넣는 MCP 서버

실행 중인 세션으로 사건을 밀어 넣는 MCP 서버입니다. 사람이 터미널을 떠나 있는 동안 생긴 일에 Claude 가 반응할 수 있습니다. 채널은 양방향이 될 수 있어서, Claude 가 들어온 사건을 읽고 같은 채널로 답합니다. 리서치 미리보기에는 Telegram·Discord·iMessage 가 들어 있습니다.

더 배우기

체크포인트(Checkpoint)

프롬프트마다 저장되어 변경을 되돌리는 복원 지점

프롬프트를 보낼 때마다 만들어지는 복원 지점입니다. 클로드 코드는 파일을 고치기 전마다 저장해 두므로, Esc 를 두 번 누르거나 /rewind 를 실행하면 코드·대화·둘 다를 앞 시점으로 되돌립니다. 체크포인트는 git 과 따로이고, 쉘 명령으로 바꾼 것은 추적하지 않습니다.

더 배우기

.claude 폴더(.claude directory)

클로드 코드가 설정을 읽는 폴더

클로드 코드가 설정·훅·스킬·서브에이전트·규칙·자동 메모리를 읽는 폴더입니다. 프로젝트는 루트에 .claude/ 를 두어 그 프로젝트의 설정을 담고, 모든 프로젝트에 쓰는 내 기본값은 홈 폴더의 ~/.claude/ 에 있습니다.

더 배우기

CLAUDE.md

사람이 Claude 에게 쓰는 오래가는 지시 파일

사람이 Claude 에게 쓰는 오래가는 지시를 담은 마크다운 파일로, 세션을 시작할 때마다 읽힙니다. 프로젝트 규칙·구조 설명·"항상 X 를 한다" 같은 규칙을 적습니다. 프로젝트 안, 모든 프로젝트용 ~/.claude/, 조직 정책에 둘 수 있고, 찾은 파일은 넓은 범위부터 좁은 범위 순서로 모두 합쳐집니다. 프로젝트 루트의 파일은 압축 뒤에도 다시 읽힙니다.

더 배우기

클라우드 세션(Cloud session)

내 컴퓨터가 아니라 클라우드에서 도는 클로드 코드 세션

내 컴퓨터가 아니라 클라우드에서 돌기 때문에 노트북을 닫아도 계속 실행되는 클로드 코드 세션입니다. claude.ai/code, Claude 휴대폰 앱, Cloud 를 고른 데스크톱 앱, claude --cloud 로 시작합니다. 내 터미널이나 IDE 의 세션은 로컬 세션입니다.

더 배우기

명령(Command)

/이름 을 입력해 실행하는 재사용 지시

프롬프트에 /이름 을 입력해 부르는 재사용 지시입니다. /clear·/model·/compact 같은 내장 명령이 세션을 다루고, .claude/commands/ 에 파일로 직접 만들거나 플러그인으로 설치할 수도 있습니다. 여러 단계를 묶을 때는 이제 스킬을 권합니다. 옛 이름 "슬래시 명령"도 같은 것입니다.

더 배우기

압축(Compaction)

컨텍스트가 거의 찼을 때 대화를 자동으로 요약하기

컨텍스트 창이 한도에 가까워지면 대화를 자동으로 요약하는 일입니다. 오래된 도구 출력부터 지우고 대화를 요약합니다. 프로젝트 루트의 CLAUDE.md 와 자동 메모리는 그 뒤 디스크에서 다시 읽지만, 대화로만 준 지시는 사라질 수 있습니다. /compact 로 직접 할 수 있습니다(예: /compact focus on the API changes).

더 배우기

커넥터(Connector)

claude.ai 계정에 더해 둔 MCP 서버

클로드 코드에서 설정하지 않고 claude.ai 계정에 더해 둔 MCP 서버입니다. 그 계정으로 클로드 코드에 로그인하면 내가 로컬에 더한 서버 곁에 커넥터가 /mcp 에 보입니다. 조직이 커넥터를 나눠 주고 도구마다 쓸 수 있는지 정할 수도 있습니다.

더 배우기

컨텍스트 창(Context window)

클로드 코드 세션의 작업 기억

세션의 작업 기억입니다. 대화·파일 내용·명령 출력·CLAUDE.md·자동 메모리·불러온 스킬·시스템 지시가 여기에 담깁니다. 일할수록 차오르다가 압축이 요약합니다. /context 를 실행하면 무엇이 자리를 차지하는지 보입니다.

더 배우기

디스패치(Dispatch)

휴대폰에서 데스크톱 앱으로 코딩 작업 보내기

휴대폰에서 시작하는 작업 배달 기능입니다. Claude 휴대폰 앱에서 코딩 작업을 보내면 데스크톱 앱에 클로드 코드 세션이 열리고, 프롬프트가 알맞은 도구로 저절로 갑니다. 일부 유료 요금제에서 쓸 수 있습니다.

더 배우기

노력 수준(Effort level)

모델이 걸음마다 얼마나 생각할지 정하는 설정

모델이 걸음마다 생각할지, 얼마나 생각할지 스스로 정하게 하는 적응형 추론을 다루는 설정입니다. 높이면 생각 토큰을 더 쓰고 더 깊이 따집니다. 낮추면 더 빠르고 쌉니다. 일부 모델만 지원합니다.

더 배우기

확장 사고(Extended thinking)

모델이 답하기 전에 보여 주는 단계별 추론

모델이 답하기 전에 거치는, 눈에 보이는 단계별 추론입니다. 노력 수준으로 조절하고, 생각 예산이 정해진 모델에서는 MAX_THINKING_TOKENS 로 생각 토큰의 상한을 정합니다. 터미널에서는 회색 기울임 글자로 보입니다.

더 배우기

프런트매터(Frontmatter)

마크다운 파일 맨 위의 YAML 설정 덩어리

마크다운 파일 맨 위, 여는 --- 줄과 닫는 --- 줄 사이에 쓰는 YAML 설정 덩어리입니다. 스킬·서브에이전트·출력 스타일·규칙이 여기서 설정을 읽습니다(스킬의 description, 서브에이전트의 tools 등). 닫는 --- 뒤가 지시 본문이고, 여는 --- 는 반드시 파일의 첫 줄이어야 합니다.

더 배우기

훅(Hook)

정해진 순간에 저절로 실행되는 내가 만든 처리기

클로드 코드가 일하는 흐름의 특정 순간에 저절로 실행되는, 사람이 정한 처리기입니다. 도구 실행 전, 파일 수정 뒤, 세션 시작 때 같은 순간입니다. 쉘 명령·HTTP 주소·MCP 도구·LLM 프롬프트·서브에이전트가 처리기가 될 수 있습니다. 훅은 모델이 고르지 않고 그 순간마다 반드시 실행됩니다.

더 배우기

관리 설정(Managed settings)

사용자가 덮어쓸 수 없는 조직 전체 설정

IT·DevOps 담당이 조직 전체에 강제하는 설정입니다. 관리자 콘솔을 통해 Anthropic 서버에서 내려오거나, 기기의 ~/.claude 밖 운영체제 경로에 놓입니다. 사용자·프로젝트 설정으로 덮어쓸 수 없습니다. 보안 정책·규정 준수·모든 컴퓨터의 같은 도구에 씁니다.

더 배우기

MCP(Model Context Protocol)

원문 표기 · MCP (Model Context Protocol)

AI 도구를 바깥 서비스에 잇는 열린 표준

AI 도구를 바깥 데이터와 서비스에 잇는 열린 표준입니다. MCP 서버가 Slack·Jira·데이터베이스·브라우저 등 수백 가지 연결을 Claude 의 새 도구로 줍니다. /mcp 로 연결하거나 .mcp.json 에 더합니다.

더 배우기

MCP 서버(MCP server)

MCP 로 Claude 에게 도구·프롬프트·리소스를 주는 프로그램

MCP 로 Claude 에게 도구·프롬프트·리소스를 주는 프로그램입니다. claude mcp add, .mcp.json, 플러그인, claude.ai 커넥터로 더합니다. 로컬 서버는 설정의 command·args 로 시작하는 프로세스이고, 이 command 는 프롬프트에 입력하는 명령과 상관없습니다.

더 배우기

비대화형 모드(Non-interactive mode)

claude -p 로 프롬프트 하나를 실행하고 끝내기

대화 화면 없이 프롬프트 하나를 실행하고 끝내는 모드로, -p 나 --print 로 시작합니다. CI·스크립트·파이프에 쓰고, 실행 기록은 다시 이어 갈 수 있는 세션으로 저장됩니다. 예전 이름은 헤드리스 모드(headless mode)이고, Python·TypeScript 에서 같은 일을 하는 것이 Agent SDK 입니다.

더 배우기

출력 스타일(Output style)

Claude 가 답하는 방식을 바꾸는 설정

클로드 코드가 Claude 에게 주는 지시를 바꿔 답하는 방식·말투·형식을 정하는 설정입니다. CLAUDE.md 는 기본 지시 곁에 프로젝트 정보를 더합니다. 사용자 출력 스타일은 자기 지시를 더하고, 기본 소프트웨어 개발 지시를 뺄 수도 있습니다.

더 배우기

권한 모드(Permission mode)

클로드 코드가 언제 허락을 구할지 정하는 기본 규칙

세션에서 허락을 구하는 기본 방식입니다. CLI 에서는 Shift+Tab 으로, VS Code·데스크톱·claude.ai 에서는 모드 선택기로 바꿉니다. 모드는 default(화면에는 Manual), acceptEdits, plan, auto, dontAsk, bypassPermissions 입니다.

더 배우기

권한 규칙(Permission rule)

특정 도구 사용을 허락·확인·거절하는 설정

도구 이름과 인자 패턴을 보고 도구 호출을 허락하거나(allow), 묻거나(ask), 거절하는(deny) 설정 항목입니다. deny → ask → allow 순서로 보고 처음 맞는 규칙이 이깁니다. 넓은 권한 모드 위에 얹는 세밀한 조절입니다.

더 배우기

플랜 모드(Plan mode)

고치지 않고 조사해 계획부터 내놓는 모드

Claude 가 소스 파일을 고치지 않고 조사해 바꿀 내용을 제안하는 권한 모드입니다. 읽기·검색·탐색 명령은 실행하고, 무엇이든 손대기 전에 계획을 보여 허락을 받습니다. /plan 을 입력하거나 Shift+Tab 을 눌러 들어갑니다.

더 배우기

플러그인(Plugin)

스킬·훅·서브에이전트·MCP 서버를 한 번에 설치하는 묶음

스킬·훅·서브에이전트·MCP 서버를 한 번에 설치하도록 묶은 꾸러미입니다. 플러그인의 스킬은 plugin-name:skill-name 으로 불러서 여러 플러그인이 함께 있을 수 있습니다. 팀에는 마켓플레이스로 나눠 줍니다.

더 배우기

프로젝트 신뢰(Project trust)

클로드 코드가 설정을 읽기 전에 폴더를 믿는다고 허락하기

클로드 코드가 폴더의 설정을 읽기 전에 그 폴더를 받아들일지 묻는 창입니다. 답은 프로젝트 폴더마다 저장되지만, 홈 폴더는 이번 세션에만 유효합니다. 믿기 전에는 .claude/settings.json 의 allow 규칙처럼 저장소가 주는 것 일부를 쓰지 않습니다.

더 배우기

프롬프트 인젝션(Prompt injection)

AI 를 가로채려고 숨겨 둔 악의적인 지시

파일·웹 페이지·도구 결과에 숨겨, Claude 를 사람이 시키지 않은 행동으로 이끌려는 악의적인 지시입니다. 클로드 코드는 권한 시스템·명령 주입 감지·신뢰 확인으로 막습니다. 자동 모드는 도구 결과를 검사하고, 주입된 글을 보지 않고 행동을 검토하는 분류 모델을 더합니다.

더 배우기

원격 제어(Remote Control)

내 컴퓨터의 세션을 휴대폰·브라우저에서 이어 가기

내 컴퓨터에서 도는 클로드 코드 세션을 claude.ai 를 거쳐 휴대폰이나 브라우저에서 이어 가는 방법입니다. 코드 실행과 파일은 내 컴퓨터에 그대로 있고 화면만 원격입니다. 클라우드 샌드박스에서 도는 클라우드 세션과는 다릅니다.

더 배우기

규칙(Rules)

CLAUDE.md 와 함께 읽히는 .claude/rules/ 의 지시 파일

.claude/rules/ 에 나눠 두고 CLAUDE.md 와 함께 읽히는 지시 파일입니다. 프런트매터의 paths: 로 경로를 정하면, Claude 가 맞는 파일을 읽거나 고칠 때만 읽힙니다. 필요해질 때까지 컨텍스트를 가볍게 둡니다.

더 배우기

샌드박스(Sandboxing)

명령이 닿는 파일·네트워크에 울타리를 치기

Bash 도구에 운영체제 수준으로 파일과 네트워크를 격리하는 것입니다. 명령은 미리 정한 울타리 안에서 돌기 때문에, Claude 는 그 안에서 명령마다 허락을 구하지 않고 마음껏 일합니다. 샌드박스는 권한 규칙과 따로인 층입니다.

더 배우기

세션(Session)

폴더에 묶인, 자기 컨텍스트를 가진 대화 하나

지금 폴더에 묶인 대화로, 따로 떨어진 컨텍스트 창을 가집니다. claude -c 로 이어 가고, --fork-session 으로 갈라 새 세션을 만들고, 여러 터미널에서 나란히 돌릴 수 있습니다. /clear 는 새 세션을 열고, 앞 세션은 저장되어 /resume 으로 다시 엽니다.

더 배우기

설정 층(Settings layers)

클로드 코드가 설정 파일을 합치는 순서

클로드 코드가 설정을 읽는 순서로, 우선순위가 높은 것부터 관리 정책 → --settings 플래그 → .claude/settings.local.json → .claude/settings.json → ~/.claude/settings.json 입니다. 목록 값은 층끼리 합쳐지고, 하나짜리 값은 위층이 아래층을 이깁니다.

더 배우기

스킬(Skill)

Claude 가 도구함에 더하는 지시 파일 SKILL.md

Claude 가 도구함에 더하는 지시·지식·작업 순서를 담은 SKILL.md 파일입니다. 작업에 맞으면 Claude 가 저절로 불러오고, /스킬이름 으로 직접 부를 수도 있습니다. 스킬은 열린 표준 Agent Skills 를 따르고, 옛 사용자 명령(custom commands)을 대신합니다(옛 명령 파일도 그대로 됩니다).

더 배우기

서브에이전트(Subagent)

자기 컨텍스트로 맡은 일 하나를 하는 도우미 AI

자기 컨텍스트 창·시스템 프롬프트·도구·권한을 따로 가지고 도는 전문 도우미 AI 입니다. 맡은 일을 하고 요약만 본 대화에 돌려주므로, 큰 탐색이 내 주 컨텍스트를 채우지 않습니다. 기본 서브에이전트로 Explore·Plan·general-purpose 가 있습니다.

더 배우기

서피스(Surface)

클로드 코드를 쓰는 곳 — CLI·IDE·데스크톱·웹

클로드 코드를 쓰는 모든 곳입니다 — CLI, VS Code, JetBrains, 데스크톱, claude.ai. 모든 서피스가 같은 엔진을 씁니다. 내 컴퓨터의 세션은 로컬 CLAUDE.md·설정·스킬을 읽고, 클라우드 세션은 저장소를 새로 복제해 시작합니다.

더 배우기

시스템 프롬프트(System prompt)

클로드 코드가 대화 앞에 보내는 지시

클로드 코드가 요청마다 대화 앞에 보내는 지시로, 도구 쓰는 법·안전하게 행동하기·답의 형식을 담습니다. --append-system-prompt 로 더하거나 --system-prompt 로 바꿉니다. CLAUDE.md 와 출력 스타일의 지시는 여기 들지 않고 시스템 리마인더로 갑니다.

더 배우기

시스템 리마인더(System reminder)

클로드 코드가 Claude 에게 맥락을 주려고 대화에 더하는 메시지

하네스인 클로드 코드가 Claude 에게 맥락을 주려고 대화에 더하는 메시지입니다. 사람이 직접 보내지 않습니다. CLAUDE.md, 출력 스타일 지시, 훅이 돌려준 글, 스킬 목록, 파일이 바뀌었다는 알림이 모두 이렇게 Claude 에게 갑니다.

더 배우기

텔레포트(Teleport)

/teleport 로 클라우드 세션을 내 터미널로 가져오기

/teleport 명령은 클라우드의 클로드 코드 세션을 내 터미널로 가져옵니다. Claude 가 브랜치를 받고 대화 기록을 불러와 클라우드 세션이 멈춘 곳에서 이어 갑니다. 반대 방향은 --cloud 로, 로컬 작업을 클라우드에 보내 실행합니다.

더 배우기

도구(Tool)

파일 읽기·명령 실행처럼 Claude 가 할 수 있는 행동

Claude 가 할 수 있는 행동입니다 — 파일 읽기, 코드 고치기, 쉘 명령 실행, 웹 검색, 서브에이전트 띄우기. 도구가 있어서 클로드 코드가 에이전틱하고, 도구가 없으면 Claude 는 글로만 답합니다. 도구를 쓸 때마다 돌아온 결과가 에이전틱 루프의 다음 결정을 정합니다.

더 배우기

대화 기록(Transcript)

세션을 파일로 저장한 기록

세션을 저장한 기록입니다. 대화는 사람과 Claude 가 주고받는 것이고, 대화 기록은 그 대화를 파일로 남긴 것으로 기본 위치는 ~/.claude/projects/ 아래입니다. 세션을 이어 갈 때 클로드 코드가 이 파일을 다시 읽어서, 세션이 끝난 뒤에도 대화가 이어집니다.

더 배우기

턴(Turn)

내 메시지부터 Claude 가 답을 마칠 때까지의 한 번

세션 안에서 Claude 가 하는 완전한 응답 한 번입니다. 사람이 메시지를 보내면 시작되고 Claude 가 답을 마치면 끝나며, 그사이 도구 호출은 몇 번이든 됩니다. 세션은 여러 턴으로 이루어지고, Stop 훅은 턴이 끝날 때마다 실행됩니다.

더 배우기

검증 루프(Verification loop)

일이 진짜 통과할 때까지 Claude 가 되풀이할 검사를 주기

그럴듯해 보이는 결과를 받아들이지 않고 일이 정말 끝났는지 아는 방법입니다. 테스트·빌드·스크린샷 비교처럼 Claude 가 돌릴 수 있는 검사를 주면, Claude 는 한 번 하고 멈추지 않고 통과할 때까지 되풀이합니다. 검증 루프가 없으면 "다 됐다"를 판단하는 것은 에이전트 자신뿐입니다.

더 배우기

워크트리 격리(Worktree isolation)

Claude 를 따로 된 git 워크트리에서 돌려 나란한 작업이 부딪히지 않게 하기

.claude/worktrees/ 아래의 따로 된 git 워크트리에서 Claude 를 돌리는 격리 방식으로, -w 플래그나 서브에이전트 설정의 isolation: worktree 로 켭니다. 바뀐 것은 따로 된 폴더의 따로 된 브랜치에 남으므로, 나란히 일하는 에이전트가 저마다 자기 파일 사본을 고칩니다.

더 배우기

출처 · SONUB

SONUB AI Course — Agent and Agentic

용어 1개 · 2026-10-19 확인

원문 용어집 열기

에이전틱(Agentic)

도구를 쓰며 스스로 여러 단계를 밟는 AI 소프트웨어를 꾸미는 말

에이전틱(agentic)은 '에이전트처럼 스스로 단계를 밟는'이라는 뜻의 형용사입니다. 언어 모델이 도구를 쓰며 살펴보고, 정하고, 행동하고, 결과를 보고 다시 하는 반복으로 일하는 소프트웨어·시스템에 붙입니다. 그래서 Agentic tool, Agentic system 이라고 말합니다. Anthropic 은 코드를 읽고 파일을 고치고 명령을 실행하며 스스로 일하는 클로드 코드를 "an agentic coding tool"이라고 부릅니다.

더 배우기

출처 · SONUB

SONUB Build Your Own AI — XSLM

용어 1개 · 2026-10-19 확인

원문 용어집 열기

XSLM(초소형 언어 모델)

원문 표기 · XSLM (Extra Small Language Model)

브라우저 안에서 직접 만드는 초소형 학습용 언어 모델

SONUB 이 직접 만든 용어로, Extra Small Language Model(초소형 언어 모델)의 줄임말입니다. 성능 좋은 대형 모델이 아니라 배우기 위한 모델입니다. 학생이 코드를 직접 타이핑해 토크나이저·작은 GPT·학습·글 생성부터, 모델을 실행하는 Runner 와 그 Runner 와 대화하는 챗봇 XChat 까지 모두 만듭니다. 설치 없이 100% 웹 브라우저 안의 리눅스 터미널에서 완성하고, 미리 학습된 가중치나 외부 AI API 는 쓰지 않습니다.

더 배우기 GPT 자세히 보기 가중치·파라미터 자세히 보기

출처 · SONUB

SONUB — Harness

용어 4개 · 2026-10-26 확인

원문 용어집 열기

하네스(harness)

원문 표기 · Harness

모델을 감싸서 일을 시키는 바깥 프로그램

모델은 글만 만들어요. 파일을 읽고, 명령을 실행하고, 허락을 묻고, 결과를 다시 모델에게 돌려주는 반복은 하네스가 맡아요. Anthropic 의 클로드 코드 공식 용어집은 "클로드 코드는 하네스이고 Claude 는 그 안의 모델"이라고 하고, OpenAI 는 모든 Codex 앱이 같은 Codex 하네스 위에서 돈다고 해요.

더 배우기 GPT 자세히 보기

클로드 코드(Claude Code)

Anthropic 의 에이전틱 코딩 도구 — 엄밀히는 하네스

터미널, 편집기, 데스크톱 앱, 웹에서 쓰는 Anthropic 의 에이전틱 코딩 도구예요. 엄밀히 말하면 하네스예요. Anthropic 공식 용어집은 "클로드 코드는 하네스이고 Claude 는 그 안의 모델"이라고 해요. 이 하네스를 떼어 낸 것이 Claude Agent SDK 예요.

더 배우기

Codex

OpenAI 의 코딩 에이전트 — CLI 는 하네스

터미널(Codex CLI), 편집기, ChatGPT 앱에서 쓰는 OpenAI 의 코딩 에이전트예요. AGENTS.md 를 따라 프로젝트를 읽고, 파일을 고치고, 명령을 실행해요. OpenAI 는 모든 Codex 앱이 같은 Codex 하네스 위에서 돌고, 그 안에 GPT 모델이 있다고 해요.

더 배우기 GPT 자세히 보기

코딩 에이전트(Coding Agent)

원문 표기 · Coding agent

코드를 읽고 고치고 실행하며 개발 일을 해내는 AI 개발 도구

클로드 코드·Codex 같은 AI 개발 도구를 부르는 이름이에요. 모델이 도구를 써서 코드를 읽고, 파일을 고치고, 명령을 실행하며 스스로 일해요. 같은 프로그램을 문맥에 따라 도구·하네스·에이전틱 시스템·에이전트라고도 부르고 모두 맞아요 — 언제 무엇이라 부르는지는 AI 과정 에이전트 챕터에 있어요. LangChain 은 모델과 하네스를 합친 것을 에이전트라고 하니, 모델과 프로그램이 함께 일하는 모습이 코딩 에이전트예요.

더 배우기

출처 · SONUB

SONUB — Tool Master

용어 2개 · 2026-10-26 확인

원문 용어집 열기

툴(Tool)

원문 표기 · Tool (agent coding tool)

사람이 컴퓨터와 AI 를 쓰기 위한 도구 — 클로드 코드·Codex 같은 프로그램

툴은 도구라는 뜻이에요. AI 이야기에서 툴은 사람이 컴퓨터와 AI 를 쓰기 위한 프로그램을 말하고, 클로드 코드와 Codex 가 대표예요. 이런 툴을 에이전트 코딩 툴(Agent Coding Tool)이라고도 불러요 — 클로드 코드 공식 저장소도 자신을 "an agentic coding tool"이라고 소개해요. 요즘은 같은 프로그램을, 모델을 감싼 부분을 볼 때는 하네스, 모델까지 합쳐 일하는 모습을 볼 때는 에이전트라고도 불러요.

더 배우기

Hermes Agent

Nous Research 가 만든 오픈 소스 AI 에이전트(하네스)

Hermes Agent 는 Nous Research 가 MIT 라이선스로 공개한 AI 에이전트예요. 터미널에서 hermes 명령으로 열고, hermes model 로 OpenRouter·OpenAI·Nous Portal 같은 여러 제공자의 모델을 골라 써요. 모델을 바꿔 끼워도 도구·메모리·스킬·예약 작업 같은 나머지는 그대로라, 모델을 뺀 나머지 전부인 하네스가 무엇인지 잘 보여 주는 예예요.

더 배우기

출처 · OpenAI

Harness engineering: leveraging Codex in an agent-first world

용어 1개 · 2026-10-20 확인

원문 용어집 열기

하네스 엔지니어링(Harness engineering)

에이전트가 믿을 만하게 일할 환경을 설계하는 일

OpenAI 가 코드를 손으로 쓰지 않고 Codex 로 제품을 만들며 쓴 말이에요. 사람은 방향을 정하고 에이전트가 실행해요. 엔지니어는 환경을 설계하고, 의도를 밝히고, 피드백 반복을 만들어요. AGENTS.md 는 100줄쯤의 짧은 지도로 두고, 자세한 내용은 docs/ 에, 규칙은 린터와 테스트가 지켜요.

더 배우기

출처 · OpenAI

Codex Docs — Non-interactive mode

용어 2개 · 2026-10-20 확인

원문 용어집 열기

프로젝트 전용 하네스(project harness)

원문 표기 · Project harness

에이전트를 작업자로 부르는 프로젝트 실행기

한 프로젝트를 위해 만든 바깥 실행기예요(예: harness.sh, harness.mjs). 모든 요청을 받아 Codex 나 클로드 코드를 비대화형 작업자로 부르고, 돌려받은 코드를 직접 저장하고, 자기 테스트로 판정하고, 실행 기록과 해시를 증거로 남겨요. 작업자 안에서는 기본 내장 하네스가 그대로 돌아요.

더 배우기

codex exec

대화 화면 없이 Codex 를 한 번 실행

스크립트, CI, 프로젝트 전용 하네스가 쓰는 Codex 명령이에요. 기본은 읽기 전용 샌드박스예요. --json 은 모든 이벤트를 JSON Lines 로 내고, 첫 이벤트 thread.started 에 세션 ID 가 들어 있어요. --output-schema 는 마지막 답을 내가 정한 JSON 모양으로 받게 해요.

더 배우기

출처 · SONUB

SONUB AI Internals — MoE

용어 1개 · 2026-10-24 확인

원문 용어집 열기

MoE

입력마다 전문가 일부만 골라 계산하는 구조

MoE(Mixture of Experts)는 "여러 전문가의 조합"이라는 뜻입니다. 모델 안에 전문가라 부르는 처리 부분을 여러 개 두고, 라우터가 토큰마다 그중 일부만 골라 계산합니다. 그래서 계산량은 줄지만, 어느 전문가가 뽑힐지 모르므로 전체 모델을 담을 메모리(RAM)는 그대로 필요합니다. 예: Qwen3-Coder 30B-A3B.

더 배우기 가중치·파라미터 자세히 보기

출처 · OpenAI

Unrolling the Codex agent loop

용어 1개 · 2026-10-24 확인

원문 용어집 열기

기본 내장 하네스(built-in harness)

원문 표기 · Built-in harness

에이전트 프로그램 안에 처음부터 든 하네스

Codex CLI 나 클로드 코드 안에 처음부터 들어 있는 하네스예요. 요청하면 이 하네스가 파일을 쓰고, 테스트를 돌리고, 끝났는지를 스스로 판단해요. 일하는 것과 확인하는 것이 같은 프로그램이라서, git diff 와 세션 기록을 보고 테스트를 직접 다시 돌려 확인해야 해요.

더 배우기

출처 · OpenRouter

OpenRouter Docs — FAQ

용어 1개 · 2026-10-24 확인

원문 용어집 열기

OpenRouter

여러 회사의 인공지능 모델을 API 하나·키 하나로 부르게 이어 주는 중개 서비스

OpenRouter 는 수백 개 모델을 같은 OpenAI 형식 API 로 부르게 해 줍니다. 토큰 값은 제공자 값을 그대로 받고, 크레딧을 충전할 때 5.5% 수수료를 받습니다. 그래서 "싼 곳"이라기보다 "고르기 쉬운 곳"입니다.

더 배우기

출처 · DeepSeek

DeepSeek API Docs

용어 1개 · 2026-10-24 확인

원문 용어집 열기

DeepSeek

모델 가중치를 공개하고 OpenAI 형식 API 를 싸게 파는 중국 AI 회사

DeepSeek(딥시크)는 2023년에 생긴 중국 항저우의 AI 회사입니다. 모델 가중치를 MIT 라이선스로 공개해 누구나 내려받아 돌릴 수 있고, OpenAI 와 같은 형식의 API 도 싸게 팝니다. 2025년 1월의 추론 모델 R1 은 최고 모델과 겨루면서도 비용이 훨씬 적었습니다. SONUB 의 리엔 챗봇이 DeepSeek 로 생각합니다.

더 배우기 가중치·파라미터 자세히 보기

아래는 SONUB 이 팝업으로 설명하는 낱말을 분야별로 모은 것입니다. 바깥 용어집이 아니라 SONUB 수업에서 쓰는 설명입니다. [더 배우기]를 누르면 그 낱말을 가르치는 화면으로 갑니다.

SONUB 용어 사전

인공지능

용어 298개

인공지능

원문 표기 · AI

데이터에서 규칙을 찾아 답을 만드는 프로그램

인공지능은 아주 많은 예시를 살펴 그 안의 규칙을 찾아내고, 그 규칙으로 답을 만들거나 판단하는 프로그램입니다. 살아 있는 존재가 아니고 사람처럼 생각하지도 않습니다. 다음에 올 가능성이 가장 높은 것을 아주 빠르게 계산할 뿐입니다.

더 배우기

거대 언어 모델

원문 표기 · LLM

엄청난 양의 글을 배워 문장을 이어 쓰는 인공지능

거대 언어 모델은 엄청난 양의 글을 읽고 어떤 말 뒤에 어떤 말이 오는지를 배운 모델입니다. 여러분이 글을 쓰면, 다음에 올 법한 낱말을 계속 골라 이어 붙여 답을 만듭니다. 그래서 말은 매끄러운데 내용은 틀릴 수 있습니다.

더 배우기

프롬프트

원문 표기 · Prompt

인공지능에게 쓰는 글 — 여러분의 지시문

프롬프트는 여러분이 인공지능에게 적어 넣는 글입니다. 주문이 아니라 그저 말이지만, 표현이 중요합니다. 내가 누구이고 무엇을 원하며 어떤 형식으로 받고 싶은지 분명히 적을수록 답이 좋아집니다. 답이 마음에 안 들면 따지기보다 프롬프트를 다시 쓰는 편이 빠릅니다.

더 배우기

시스템 프롬프트

원문 표기 · System prompt

대화가 시작되기 전에 미리 정해 두는 지시문

시스템 프롬프트는 여러분의 메시지보다 앞에 놓이는 지시문입니다. 이 도우미가 누구이며 항상 지켜야 할 것과 절대 하지 말아야 할 것을 정해 둡니다. 보통 화면에는 보이지 않지만 모든 답에 영향을 줍니다. 리엔의 교육 원칙도 여기에 들어 있습니다.

토큰

원문 표기 · Token

인공지능이 실제로 세는 글자 조각

인공지능은 글자나 낱말 단위로 읽지 않고, 글을 토큰이라는 작은 조각으로 잘라서 다룹니다. 짧은 낱말은 토큰 하나, 긴 낱말은 여러 개가 되기도 합니다. 길이 제한과 API 요금은 글자 수가 아니라 토큰 수로 셈하기 때문에, 비용이나 용량 이야기에는 늘 이 말이 나옵니다.

컨텍스트 창

원문 표기 · Context window

인공지능이 한 번에 볼 수 있는 글의 양

컨텍스트 창은 인공지능이 작업하는 책상입니다. 지금 질문, 지금까지의 대화, 붙여 넣은 문서가 모두 그 위에 올라가야 합니다. 대화가 그 크기를 넘어서면 오래된 부분부터 책상 밖으로 밀려나고, 인공지능은 그 내용을 정말로 더 이상 볼 수 없습니다. 긴 대화에서 앞부분을 잊어버리는 것처럼 보이는 이유가 이것입니다.

환각(허위 생성)

원문 표기 · Hallucination

근거 없이 그럴듯하게 지어낸 답

이 분야에서 이 말은 오직 한 가지, 즉 틀리거나 근거 없는 출력을 확신에 찬 어조로 내놓는 것을 가리킵니다. 사람이 헛것을 보는 경험과는 아무 관계가 없습니다. 기계는 무엇도 겪지 않습니다. 모델이 출처를 확인하는 것이 아니라 그럴듯한 낱말을 고르기 때문에 생기므로, 이름과 숫자와 인용은 반드시 따로 확인해야 합니다.

온도(temperature)

원문 표기 · Temperature

무난하고 일정한 답과 튀는 답 사이를 조절하는 손잡이

온도는 모델이 다음 낱말을 얼마나 과감하게 고르는지를 정합니다. 낮게 두면 가장 확률 높은 낱말만 고르므로 답이 일정하고 반복 가능해집니다. 사실 확인이나 코드에 좋습니다. 높게 두면 덜 확률적인 낱말까지 집어 답이 다양해지지만 틀릴 여지도 커집니다. 아이디어를 뽑을 때 쓸모가 있습니다.

파라미터(parameter)

원문 표기 · Parameter

모델이 학습하며 조정하는 수많은 숫자 하나하나

파라미터는 영어로 parameter 이고 매개변수라고도 합니다. 모델이 학습하며 스스로 고치는 숫자 전부를 말하며, 가중치가 가장 많고 편향·임베딩·정규화 계수도 파라미터입니다. 7B 모델에는 약 70억 개가 있습니다. 많으면 돌리기 무거워질 뿐, 저절로 더 좋아지지는 않습니다.

더 배우기

학습(훈련)

원문 표기 · Training

예시를 반복해 보여 주며 모델의 숫자를 맞춰 가는 과정

학습은 모델이 만들어지는 과정입니다. 예시를 하나씩 보여 주면 모델이 답을 추측하고, 얼마나 틀렸는지 알려 주면 숫자를 조금씩 정답 쪽으로 옮깁니다. 이것을 수십억 번 반복하면 규칙이 자리를 잡습니다. 느리고 비용이 크기 때문에, 모델은 한 번 학습해 두고 여러 번 가져다 씁니다.

파인튜닝(미세조정)

원문 표기 · Fine-tuning

이미 학습된 모델에 내 예시를 더 가르치는 일

모델을 처음부터 만드는 대신, 이미 완성된 모델을 가져와 내가 준비한 적은 양의 예시로 조금 더 학습시켜 말투나 분야를 물들이는 방법입니다. 처음부터 학습하는 것보다 훨씬 저렴합니다. 다만 초보 단계에서는 프롬프트를 더 분명하게 쓰는 것만으로 해결되는 경우가 대부분입니다.

추론(실행)

원문 표기 · Inference

학습이 끝난 모델을 실제로 돌려 답을 얻는 일

추론은 모델을 평소에 쓰는 일 자체입니다. 글을 넣으면 모델이 계산하고 답이 나옵니다. 이때 모델은 아무것도 새로 배우지 않습니다. 실행 전과 후의 모델은 완전히 같습니다. 인공지능 서비스의 비용이나 속도를 이야기할 때는 대개 이 단계를 가리킵니다.

검색 증강 생성(RAG)

먼저 자료를 찾아 놓고 그것을 보며 답하게 하는 방식

이 방식에서는 시스템이 먼저 질문과 관련된 문단을 내 문서에서 찾아낸 다음, 그 문단을 인공지능에게 건네주며 그것을 근거로 답하라고 시킵니다. 인공지능이 기억에 의존해 답하지 않게 되므로 지어낸 답이 크게 줄고, 어떤 자료를 썼는지 확인할 수도 있습니다.

에이전트

원문 표기 · Agent

도구를 쓰며 스스로 여러 단계를 밟는 인공지능

보통의 챗봇은 답글만 씁니다. 에이전트는 파일 읽기, 검색, 명령 실행 같은 도구를 받아, 결과를 보고 다음에 무엇을 할지 스스로 정하며 목표를 향해 단계를 밟아 갑니다. 그만큼 쓸모가 크고 동시에 위험도 큽니다. 그래서 무엇을 만져도 되고 무엇은 안 되는지 분명히 정해 주어야 합니다. 넓은 의미에서 에이전트는 모델과 하네스를 합친 것이에요 — LangChain 은 "Agent = Model + Harness"라고 적어요.

서브 에이전트

원문 표기 · Sub-agent

메인 에이전트가 일의 한 부분을 맡기려고 띄우는 도우미 에이전트

서브 에이전트는 자기만의 새 컨텍스트 창에서 일합니다. 그래서 많은 파일을 읽거나 넓게 검색한 뒤 결과만 알려 주어, 메인 대화를 짧게 지켜 줍니다. 서브 에이전트에게는 좁은 일 하나와 꼭 필요한 도구만 주세요. 그리고 그 보고도 다른 초안처럼 꼭 확인하세요.

더 배우기

Ralph Loop(랄프 루프)

일이 정말 끝날 때까지 에이전트에게 같은 프롬프트를 계속 다시 주는 방법

에이전트가 멈추려고 하면 훅(hook)이 같은 프롬프트를 다시 줍니다. 에이전트는 파일과 Git 에 이미 저장해 둔 작업에서 이어서 계속합니다. 루프에는 확인할 수 있는 끝 지점과, 최대 반복 횟수 같은 한도가 있어야 합니다. 그렇지 않으면 끝없이 돌 수 있습니다.

더 배우기

스킬

원문 표기 · Skill

필요할 때 인공지능이 불러 쓰는 재사용 지시 묶음

스킬은 한 가지 종류의 일을 위한 지시문과, 필요하면 스크립트까지 담은 작은 폴더입니다. 그 일이 생겼을 때만 읽어 들이므로, 모든 대화가 모든 지식을 짊어지지 않고도 아는 것을 늘릴 수 있습니다. 같은 설명을 프롬프트에 반복해 적고 있다면, 그것이 스킬로 만들 때가 되었다는 신호입니다.

더 배우기

신경망

원문 표기 · Neural network

예시를 보며 규칙을 익히는 단순한 계산의 그물

신경망은 아주 단순한 계산을 겹겹이 이어 붙인 구조입니다. 사람이 규칙을 일일이 적어 주는 것이 아니라, 예시를 아주 많이 보여 주면 스스로 숫자를 조금씩 고쳐 가며 정답에 가까워집니다. 이름은 뇌세포에서 따왔지만 실제로는 컴퓨터가 돌리는 산수일 뿐, 생각하는 생명체가 아닙니다.

더 배우기

머신러닝(기계 학습)

원문 표기 · Machine learning

규칙을 적어 주는 대신 예시로 가르치는 방식

보통의 프로그래밍은 사람이 규칙을 적습니다. 이러면 저렇게 하라고요. 기계 학습은 대신 답이 붙은 예시를 수천 개 보여 주고 규칙은 컴퓨터가 스스로 찾게 합니다. 그래서 사진이나 말소리처럼 딱 떨어지지 않는 것을 잘 다루지만, 예시가 부실하면 자신 있게 틀린 답을 내놓기도 합니다.

더 배우기

딥러닝

원문 표기 · Deep learning

층을 아주 여러 겹 쌓은 기계 학습 — 오늘날 인공지능의 바탕

딥러닝은 층을 여러 겹 쌓은 신경망으로 하는 기계 학습입니다. 앞쪽 층은 사진의 윤곽선 같은 단순한 것을 잡아내고, 뒤로 갈수록 얼굴처럼 더 복잡한 것을 알아봅니다. 요즘 이야기되는 인공지능은 채팅 모델을 포함해 거의 전부 이 방식으로 만들어졌습니다.

더 배우기

트랜스포머

원문 표기 · Transformer

요즘 언어 모델을 거의 다 떠받치는 신경망 설계

트랜스포머는 2017년에 발표된 신경망 설계 방식으로, 입력에 있는 모든 낱말이 서로를 한꺼번에 견주어 볼 수 있게 합니다. 덕분에 긴 문장에서도 앞뒤가 흐트러지지 않고 이어집니다. GPT 의 T 가 바로 이것이며, 이름을 아는 채팅 모델은 거의 전부 트랜스포머입니다.

더 배우기 GPT 자세히 보기

가중치(weight)

원문 표기 · Weight

입력을 얼마나 세게 반영할지 정하는, 학습으로 얻은 숫자

가중치는 영어로 weight(여러 개면 weights)라고 합니다. 신경망의 연결마다 있는 숫자로, 입력에 곱해져 그 입력이 결과에 얼마나 영향을 줄지 정합니다. 사람이 적어 넣지 않고, 학습이 답이 좋아지도록 조금씩 고쳐 찾아냅니다. 모델 파일의 대부분이 이 숫자라서, 오픈 모델은 곧 가중치를 내려받을 수 있는 모델입니다.

더 배우기

프롬프트 엔지니어링

원문 표기 · Prompt engineering

인공지능이 잘 답할 수 있게 묻는 기술

프롬프트 엔지니어링은 요청을 잘 적는 실전 기술입니다. 어떤 역할로, 무엇을 위해, 어떤 형태의 답을, 그리고 스스로는 알 수 없는 사실은 무엇인지 함께 알려 주는 것이지요. 프로그래밍보다는 새로 온 동료에게 일을 설명하는 일에 가깝습니다. 같은 모델이라도 어떻게 묻느냐에 따라 훌륭해 보이기도 하고 쓸모없어 보이기도 합니다.

더 배우기

챗봇

원문 표기 · Chatbot

평소 쓰는 말로 대화하는 프로그램

챗봇은 버튼을 누르는 대신 평소 쓰는 문장으로 주고받는 프로그램을 말합니다. 예전 챗봇은 정해진 대본을 따라가다가 조금만 벗어나면 곧바로 막혔지만, 요즘은 대개 언어 모델이 대화창 뒤에 붙어 있습니다. 이 사이트의 리엔도 챗봇이며, 모든 챗봇이 그렇듯 사람이 아니라 규칙대로 도는 소프트웨어입니다.

더 배우기

MCP

인공지능에 도구와 자료를 연결하는 공통 규격

MCP 는 Model Context Protocol 의 줄임말로, 인공지능 비서가 파일을 읽거나 데이터베이스를 조회하거나 다른 서비스를 부르는 등 자기 바깥에 닿을 때 쓰는 약속된 방식입니다. 이것이 없던 때는 도구마다 따로 연결을 만들어야 했습니다. 인공지능 비서의 USB 단자라고 생각하면 됩니다. 규격이 하나라 맞춰 만든 것은 그냥 꽂으면 됩니다. 에이전트가 MCP 클라이언트이고, 자기 기능을 에이전트가 쓸 수 있게 내놓는 프로그램이 MCP 서버입니다 — 예를 들어 WebMCP 는 웹사이트가 웹브라우저를 통해 자기 기능을 에이전트가 쓸 수 있게 내놓는 것입니다.

더 배우기

MCP 서버(MCP server)

MCP 로 AI 앱에 도구와 자료를 내놓는 프로그램

MCP 서버는 자기가 할 수 있는 일 — 부를 수 있는 도구, 읽을 수 있는 자료, 미리 만든 프롬프트 — 을 MCP 로 내놓는 프로그램입니다. MCP 를 아는 앱이면 어디서나 연결해 씁니다 — 클로드 코드, Codex, Claude Desktop, 내가 만든 프로그램. 내 컴퓨터에서 돌며 표준 입출력으로 이야기하기도 하고, 웹에서 돌며 HTTP 로 이야기하기도 합니다. 에이전트가 서버가 내놓은 것을 실행하므로, 설치하기 전에 먼저 읽어 봅니다.

더 배우기

확률

원문 표기 · Probability

어떤 일이 일어날 가능성을 0~1로 나타낸 수

확률은 어떤 일이 얼마나 일어날 것 같은지를 0(절대 안 일어남)부터 1(반드시 일어남)까지의 수로 나타내며, 흔히 백분율로 적습니다. 언어모델은 다음에 올 수 있는 토큰마다 확률을 매기고, 그 확률을 모두 더하면 1이 됩니다. 확률이 높다는 것은 학습한 패턴에 잘 맞는다는 뜻일 뿐, 그 문장이 사실이라는 뜻은 아닙니다.

더 배우기

언어모델

원문 표기 · Language model

다음에 올 토큰의 확률을 계산하는 프로그램

언어모델은 앞의 글을 받아, 다음에 올 수 있는 토큰마다 확률을 계산하는 프로그램입니다. 토큰 하나를 골라 글 끝에 붙이고 다시 계산하기를 되풀이해 글을 씁니다. 요즘의 거대 언어 모델(LLM)은 엄청난 양의 글로 학습한 신경망이지만, 이 사이트의 바이그램처럼 단어 횟수 표 하나로 된 아주 작은 언어모델도 있습니다.

더 배우기

샘플링

원문 표기 · Sampling

확률에 따라 제비를 뽑듯 다음 토큰을 고르기

언어모델은 글을 쓸 때 다음에 올 수 있는 토큰마다 확률을 매깁니다. 샘플링은 늘 1등만 고르지 않고, 확률이 높을수록 자주 뽑히게 제비를 뽑아 하나를 고르는 방식입니다. 그래서 같은 질문에도 답이 달라질 수 있고, 같은 답이 다시 나올 수도 있습니다. 온도·top-k·top-p 가 뽑는 방식을 조절합니다.

더 배우기

탐욕 선택(greedy decoding)

원문 표기 · Greedy decoding

늘 확률이 가장 높은 토큰만 고르는 방식

탐욕 선택은 제비를 뽑지 않고, 단계마다 확률이 가장 높은 후보를 고릅니다. 같은 입력이면 늘 같은 결과가 나오므로 사실이나 코드에는 알맞지만, 글이 단조롭게 되풀이되기 쉽습니다. 단계마다 1등을 고른다고 문장 전체가 가장 좋아지는 것은 아니며, 답이 사실이 되는 것도 아닙니다.

더 배우기

바이그램

원문 표기 · Bigram

나란히 붙은 두 단어의 짝

바이그램은 나란히 붙어 나오는 두 단어의 짝입니다. 바이그램 모형은 훈련 문장에서 어떤 단어 뒤에 어떤 단어가 몇 번 왔는지 세고, 그 횟수를 확률로 바꿉니다. 바로 앞 단어 하나만 보므로 수업용 모형이며, 현대 신경망 언어모델이 이렇게 동작하는 것은 아닙니다. 인공지능 만들기 화면에서 직접 만들어 볼 수 있습니다.

더 배우기

다음 토큰 예측

원문 표기 · Next-token prediction

다음에 올 토큰을 맞히는 일을 되풀이해 글을 만드는 방식.

언어모델이 글을 만드는 기본 방식이에요. 지금까지의 문맥을 보고 다음에 올 수 있는 모든 토큰의 확률을 계산한 뒤 하나를 골라 끝에 붙이고, 길어진 문맥으로 답이 끝날 때까지 이것을 반복해요.

더 배우기

확률 분포

원문 표기 · Probability distribution

일어날 수 있는 결과마다 얼마나 그럴듯한지 적은 목록. 모두 더하면 100%.

일어날 수 있는 모든 결과에 확률을 하나씩 주고, 그 합이 1(100%)이 되게 한 것이에요. 언어모델은 다음 토큰에 대한 확률 분포를 만들고, 탐욕 선택이나 샘플링이 그 분포에서 하나를 골라요.

더 배우기

자기회귀

원문 표기 · Autoregressive

토큰을 하나씩 만들어 다시 입력에 붙이는 방식

자기회귀 모델은 토큰을 한 번에 하나씩 만듭니다. 새 토큰은 글 끝에 붙고, 지금까지의 글 전체가 다음 토큰을 고르는 입력이 됩니다. 답이 한 낱말씩 나타나는 것도, 앞에서 잘못 고른 토큰 하나가 뒤의 글 전체를 엉뚱한 쪽으로 끌고 갈 수 있는 것도 이 반복 때문입니다.

더 배우기

문맥(컨텍스트)

원문 표기 · Context

답 하나를 만들 때 모델이 받는 글 전체

문맥은 모델이 답 하나를 만들 때 받는 모든 것입니다. 시스템 프롬프트, 지금까지의 대화, 붙인 파일, 앱이 찾아 넣은 검색 결과가 모두 들어갑니다. 모델의 가중치는 그대로이고, 문맥이 달라져서 답이 달라집니다. 무엇을 넣을지는 앱이 고르며, 빠진 내용은 모델이 쓸 수 없습니다. 얼마나 들어가는지는 컨텍스트 창이 정합니다.

가중치·파라미터 자세히 보기

추론 모드

원문 표기 · Reasoning mode

답하기 전에 계산을 더 쓰는 설정

추론 모드에서는 모델이 최종 답을 내기 전에 풀이·점검·다른 길 시도 같은 중간 단계를 먼저 만들어 냅니다. 수학·코드·여러 단계를 거치는 문제에 도움이 될 때가 많지만, 토큰을 더 쓰고 시간이 더 걸리며 정답을 보장하지도 않습니다. 화면의 ‘생각 중’ 표시는 제품의 표시일 뿐, 사람 같은 생각을 한다는 증거가 아닙니다.

더 배우기

토크나이저

원문 표기 · Tokenizer

글을 토큰으로 자르고 번호를 붙이는 도구

토크나이저는 글을 토큰으로 자르고, 각 토큰을 자기 어휘 사전의 ID 번호로 바꿉니다. 토큰은 낱말·낱말 일부·글자·바이트일 수 있고, 띄어쓰기와 문장부호도 셈에 들어갑니다. 모델마다 토크나이저가 달라 같은 문장도 토큰 수가 달라질 수 있습니다. AI 실습실은 실제 LLM 토크나이저가 아니라 수업용 단어 분할기를 씁니다.

더 배우기

어텐션(attention)

원문 표기 · Attention

다른 토큰의 정보를 얼마나 섞을지 정하는 계산

어텐션은 트랜스포머 안에서 토큰마다 문맥 속 다른 토큰들에 점수를 매기고, 그 점수만큼 각 토큰의 정보를 섞는 단계입니다. 문장 속 ‘그것’을 그것이 가리키는 낱말과 이어 주는 것이 이 계산입니다. 글을 만드는 모델의 어텐션은 인과적이어서 앞 위치만 쓸 수 있고, 아직 쓰이지 않은 뒤 낱말은 쓸 수 없습니다.

더 배우기

소프트맥스(softmax)

원문 표기 · Softmax

점수(로짓)를 합이 1인 확률로 바꾸는 함수

모델은 단계마다 어휘의 모든 토큰에 로짓이라는 날것의 점수를 냅니다. 소프트맥스는 이 점수 목록을 0과 1 사이이면서 모두 더하면 1인 확률로 바꾸고, 순서는 그대로 둡니다. 점수가 가장 높은 토큰이 확률도 가장 높습니다. 온도는 소프트맥스 전에 점수를 나누어 분포를 뾰족하게 또는 평평하게 만듭니다.

더 배우기

top-k·top-p

원문 표기 · Top-k and top-p

샘플링이 뽑을 후보를 줄이는 두 가지 제한

샘플링 전에 확률이 낮은 후보를 잘라 내는 설정입니다. top-k 는 확률이 높은 토큰 k개만 남깁니다. top-p 는 확률이 높은 순서로 더해 p 이상이 되는 가장 작은 묶음만 남기므로, 남는 개수가 단계마다 달라집니다. 둘 다 엉뚱한 낱말을 줄여 주지만 사실을 확인하는 장치는 아닙니다.

더 배우기

경사 하강법

원문 표기 · Gradient descent

손실이 줄어드는 쪽으로 가중치를 조금씩 옮기기

경사 하강법은 대부분의 모델이 학습하는 방법입니다. 예측을 한 차례 해 본 뒤, 손실을 줄이려면 가중치마다 어느 쪽으로 얼마나 움직여야 하는지(기울기)를 계산합니다. 그리고 학습률을 곱한 작은 걸음만큼 옮깁니다. 이것을 여러 번 되풀이하면 가중치가 데이터에 맞는 값에 가까워집니다. 실전 인공지능 개발 화면에서는 0이던 w 가 약 2가 됩니다.

더 배우기 가중치·파라미터 자세히 보기

학습률

원문 표기 · Learning rate

가중치를 한 번에 얼마나 크게 고칠지 정하는 값

학습률은 경사 하강법에서 매번의 수정에 곱하는 수입니다. 너무 작으면 학습이 아주 느리고, 너무 크면 가중치가 자리를 잡지 못하고 크게 흔들리거나 튀어 버립니다. 모델이 스스로 배우는 값이 아니라 사람이 정하고 시험해 보는 하이퍼파라미터입니다. 실전 인공지능 개발 화면은 0.01을, 입력 × w + b 과제는 0.05를 씁니다.

더 배우기 가중치·파라미터 자세히 보기

손실(loss)

원문 표기 · Loss

예측이 얼마나 틀렸는지 나타내는 숫자 하나

손실은 모델의 예측과 정답 사이의 차이를 숫자 하나로 줄인 것입니다. 학습이란 이 숫자가 작아지도록 가중치를 고치는 일입니다. 그 계산식을 손실 함수라고 하며, 실전 인공지능 개발 화면은 오차 제곱의 평균을 쓰고 다른 과제는 다른 식을 씁니다. 학습 데이터에서 손실이 낮다는 것만으로 새 데이터에서도 잘 맞는다고 볼 수는 없습니다.

더 배우기 가중치·파라미터 자세히 보기

학습 데이터

원문 표기 · Training data

모델이 가중치를 배우는 데 쓰는 예시 모음

학습 데이터는 학습할 때 모델에 보여 주는 예시 모음입니다. 언어모델이라면 문장, 그림 분류 모델이라면 이름표가 붙은 사진, 작은 회귀라면 입력과 정답의 짝입니다. 모델은 이 데이터에 있는 패턴만 익힐 수 있고, 데이터의 오류와 빈틈까지 함께 담습니다. 확인용으로 떼어 둔 검증 데이터와 테스트 데이터는 학습에 쓰지 않습니다.

가중치·파라미터 자세히 보기

평가 지표

원문 표기 · Evaluation metric

본 적 없는 데이터로 매기는 모델의 점수

평가는 학습이 끝난 모델이 얼마나 잘하는지를, 학습에 쓰지 않은 데이터와 정해진 채점 방식(평가 지표)으로 재는 일입니다. 정확도(맞힌 비율)가 가장 간단하고, 틀린 종류를 따로 세는 지표도 있습니다. 한 테스트 데이터에서 점수가 좋아도 증거일 뿐 증명은 아니므로, 틀린 사례도 함께 보고 테스트 데이터는 학습에 섞지 않습니다.

분류 모델

원문 표기 · Classification

어느 범주에 속하는지 맞히는 모델

분류는 정해진 범주 가운데 하나를 답으로 고르는 문제이고, 분류 모델은 그 일을 하는 모델입니다. 스팸인지 아닌지, 붓꽃 세 종류 중 무엇인지, 사진 속 숫자가 무엇인지가 그 예입니다. 범주마다 점수를 매기고 가장 높은 것(argmax)을 고릅니다. 답이 둘이면 이진 분류, 셋 이상이면 다중 분류라고 하며, 답이 숫자 크기라면 회귀입니다.

더 배우기

회귀(regression)

원문 표기 · Regression

연속된 숫자 값을 맞히는 문제

회귀는 범주가 아니라 숫자를 답으로 맞히는 문제입니다. 집값, 내일 강수량(밀리미터), ‘입력 × 2’의 결과가 그 예입니다. 예측한 숫자가 정답과 얼마나 떨어졌는지로 채점하며, 오차 제곱을 많이 씁니다. 실전 인공지능 개발 화면의 작은 프로그램이 회귀이고, 붓꽃이 어느 종류인지 고르는 일은 분류입니다.

더 배우기

과적합

원문 표기 · Overfitting

학습 데이터에만 지나치게 맞춰진 상태

과적합은 모델이 일반적인 패턴 대신 학습 데이터의 우연한 특징과 잡음까지 외워 버린 상태입니다. 그러면 학습한 예시에서는 점수가 아주 높고, 새 예시에서는 눈에 띄게 낮습니다. 학습 점수와 따로 떼어 둔 검증·테스트 데이터의 점수를 비교하면 드러나며, 데이터를 늘리거나 모델을 단순하게 하거나 학습을 일찍 멈추면 줄일 수 있습니다.

더 배우기

하이퍼파라미터

원문 표기 · Hyperparameter

학습 전에 사람이 정하는 설정값

하이퍼파라미터는 학습을 시작하기 전에 사람이 정하는 설정입니다. 학습률, 학습 횟수, 층의 수, 이웃 수 k, 트리 깊이 같은 것이 여기에 속합니다. 학습은 이 값을 바꾸지 않고 파라미터(가중치)를 바꿉니다. 좋은 값은 여러 값을 시험해 검증 데이터에서 견주어 고르며, 최종 테스트 데이터로 고르지 않습니다.

더 배우기 가중치·파라미터 자세히 보기

검증 데이터

원문 표기 · Validation data

설정을 고르려고 떼어 둔 데이터

데이터는 보통 셋으로 나눕니다. 배우는 데 쓰는 학습 데이터, 하이퍼파라미터 같은 설정을 견주는 검증 데이터, 마지막에 한 번만 점수를 매기는 테스트 데이터입니다. 교차검증은 학습 데이터를 여러 조각으로 나눠 한 조각씩 돌아가며 떼어 두고 확인하므로, 데이터가 적을 때 더 안정적으로 비교할 수 있습니다. 테스트 점수를 보면서 계속 조정하면 그 점수가 실제보다 좋게 나옵니다.

더 배우기

활성화 함수

원문 표기 · Activation function

뉴런이 입력을 합친 뒤 거치는 함수

신경망의 뉴런은 먼저 입력을 z = w·x + b 로 합친 뒤, 그 z 를 활성화 함수에 넣습니다. 시그모이드는 어떤 수든 0과 1 사이로 눌러 담고, ReLU 는 음수를 0으로 바꾸고 양수는 그대로 둡니다. 이런 곧지 않은 단계가 없으면 층을 아무리 쌓아도 결국 직선 계산 하나와 같아져서, 신경망이 굽은 패턴을 배울 수 없습니다.

더 배우기

러너(추론 엔진)

원문 표기 · Runner (inference engine)

모델을 불러와 글을 쓰게 하는 프로그램

학습을 마친 모델은 숫자가 담긴 파일일 뿐입니다. 러너는 그 숫자를 불러오고, 내 글을 토큰으로 바꾸고, 모델을 돌려 다음 토큰에 점수를 매긴 뒤 하나를 고르고, 이것을 되풀이하며 나오는 낱말을 바로바로 보여 줍니다. Ollama 와 llama.cpp 는 내 컴퓨터에서 쓸 수 있는 러너입니다.

더 배우기

KV 캐시

원문 표기 · KV cache

앞 토큰의 어텐션 계산을 저장해 다시 쓰는 곳

어텐션에서는 토큰마다 키(key)와 값(value)을 만듭니다. 자기회귀 생성 중에는 앞 토큰들이 바뀌지 않으므로, 그 키와 값을 메모리에 저장해 두고(KV 캐시) 새 토큰마다 다시 계산하지 않고 꺼내 씁니다. 생성이 훨씬 빨라지지만, 문맥이 길수록 캐시가 커져서 GPU 메모리를 많이 차지할 수 있습니다.

더 배우기 가중치·파라미터 자세히 보기

도구 호출

원문 표기 · Tool call

모델이 앱에 도구 실행을 요청하는 정해진 형식

모델은 글만 만들어 낼 수 있어서 스스로 무언가를 실행하지 못합니다. 도구 호출에서 모델은 도구 이름과 인자를 정해진 형식(보통 JSON)으로 내놓고, 앱이 그것을 검사하고 필요하면 허락을 받은 뒤 도구를 실행합니다. 결과는 다시 문맥으로 모델에 보내집니다. 이 반복을 사람들이 에이전트라고 부릅니다.

더 배우기

멀티모달

원문 표기 · Multimodal

글·그림·소리 등 여러 종류의 데이터를 다루기

멀티모달 모델은 글·그림·소리·영상 가운데 두 가지 이상을 받아들이거나 만들어 냅니다. 예를 들어 사진을 받아 그 내용에 대한 질문에 글로 답하는 모델이 있습니다. 어떤 입력이든 모델이 계산할 수 있는 숫자로 바뀝니다. 멀티모달처럼 보이는 기능이 모두 모델 하나인 것은 아닙니다 — 앱이 따로 음성 인식 모델로 말을 글로 바꾼 뒤 보내기도 합니다.

더 배우기

바이브 코딩

원문 표기 · Vibe coding

글로 설명하면 AI가 코드를 쓰는 개발 방식

바이브 코딩은 만들고 싶은 것의 모양과 동작을 평범한 말로 설명하면 AI 도구가 코드를 쓰고, 사람은 결과를 보며 고칠 점을 다시 적는 개발 방식입니다. 아이디어를 빠르게 확인하거나 작은 웹앱·게임을 만들 때 좋습니다. 다만 만들어진 코드에도 실수나 보안 문제가 있을 수 있어 직접 확인해야 합니다. SONUB 의 바이브 코딩 화면에서는 리엔이 앱을 만들어 미리보기로 보여 줍니다.

더 배우기

쿼리·키·값(Query·Key·Value)

원문 표기 · Query, key and value

어텐션이 정보를 찾을 때 쓰는 세 벡터

어텐션에서 위치마다 자기 토큰으로 벡터 세 개를 만듭니다. 쿼리는 이 위치가 무엇을 찾는지, 키는 앞의 각 위치가 무엇을 담고 있는지, 값은 그 위치가 넘겨줄 정보입니다. 모델은 쿼리를 모든 키와 견주어 합이 1 인 가중치를 만들고, 그 가중치만큼 값들을 섞습니다.

더 배우기

BPE

가장 자주 붙는 쌍을 합쳐 가는 토크나이저 방식

BPE(byte pair encoding)는 학습 글로 토크나이저를 만드는 방법입니다. 글자나 바이트 하나씩에서 시작해, 나란히 붙은 두 조각 가운데 가장 자주 나오는 쌍을 새 조각 하나로 합치고, 어휘가 충분히 커질 때까지 되풀이합니다. 그래서 흔한 낱말은 토큰 하나가 되고 드문 낱말은 여러 조각으로 나뉘어, 어떤 글이든 적을 수 있습니다.

더 배우기 GPT 자세히 보기

병합 규칙

원문 표기 · Merge rules

BPE 가 쌍을 합치는 순서 목록

BPE 는 학습하면서 합친 쌍을 순서대로 모두 적어 둡니다. 이 목록이 병합 규칙입니다. 새 글을 토큰으로 나눌 때 같은 규칙을 같은 순서로 적용합니다. 규칙은 어휘와 함께 저장하며, 규칙을 바꾸면 토큰 번호가 달라지므로 모델 가중치도 다시 학습해야 합니다.

더 배우기 가중치·파라미터 자세히 보기

대화 기록

원문 표기 · Chat history

새 질문과 함께 모델에 다시 보내는 앞의 말들

언어 모델은 요청과 요청 사이에 아무것도 남겨 두지 않습니다. 채팅 앱이 기억하는 것처럼 보이는 까닭은 앞에서 주고받은 말을 새 질문과 함께 다시 보내기 때문입니다. 그 목록이 대화 기록입니다. 모델의 문맥 길이에 들어가야 하므로 긴 대화는 잘라 내거나 요약합니다. 대화 기록이 없으면 질문마다 따로 답합니다.

더 배우기

계산 그래프

원문 표기 · Computation graph

어떤 계산에 어떤 숫자가 쓰였는지 이은 기록

모델이 답을 계산하는 동안 학습 라이브러리는 단계마다 어떤 숫자가 어떤 덧셈·곱셈에 들어가 무엇이 나왔는지 적어 둡니다. 그 단계들의 사슬이 계산 그래프입니다. 역전파는 이 그래프를 손실에서 거꾸로 따라가며, 숫자 하나하나가 결과에 얼마나 영향을 주었는지 차례로 구합니다.

더 배우기

디코더

원문 표기 · Decoder

앞 토큰만 보고 다음 토큰을 쓰는 트랜스포머

디코더는 지금 위치보다 앞에 있는 토큰만 보고 다음 토큰을 예측하는 트랜스포머입니다. 고른 토큰을 덧붙이고 다시 예측하기를 되풀이하며 글을 씁니다. GPT 계열 모델이 이렇게 씁니다. 처음 트랜스포머에는 입력 전체를 한꺼번에 읽는 인코더도 있었지만, 요즘 채팅 모델은 대부분 디코더만 씁니다.

더 배우기 GPT 자세히 보기

확산 모델

원문 표기 · Diffusion model

잡음을 조금씩 걷어 내며 그림을 만드는 모델

확산 모델은 무작위 잡음으로 가득한 그림에서 시작해, 내 글을 길잡이로 단계마다 잡음을 조금씩 걷어 내어 그림을 만듭니다. 진짜 그림에 잡음을 섞고 그것을 되돌리는 법을 익혀 학습합니다. Stable Diffusion 같은 많은 그림·영상 생성기가 이 방식이며, 토큰을 하나씩 쓰는 언어 모델과는 다릅니다.

더 배우기

encode·decode

원문 표기 · encode / decode

글을 토큰 번호로, 번호를 다시 글로 바꾸기

encode 는 토크나이저가 글을 토큰으로 자르고 조각마다 어휘의 번호로 바꾸는 단계입니다. decode 는 거꾸로 번호마다 조각을 찾아 이어 붙여 글로 되돌립니다. 좋은 토크나이저는 encode 뒤 decode 하면 원래 글이 그대로 나오므로, 이것을 검사해 보면 좋습니다.

더 배우기

실행 공급자

원문 표기 · Execution provider

ONNX Runtime 의 기기별 가속기 연결 부품

ONNX Runtime 은 모든 칩과 혼자 이야기하지 않습니다. 실행 공급자(Execution Provider)는 모델의 계산을 한 종류의 하드웨어 — NVIDIA GPU(CUDA·TensorRT), Apple 칩(Core ML), 그냥 CPU — 에 넘겨주는 부품입니다. 쓸 공급자를 순서대로 적으면, 앞 공급자가 못 하는 부분은 다음 공급자가 맡습니다.

더 배우기

FreeToken

큰 MoE 모델을 PC 에서 돌리는 런타임

FreeToken 은 /ai/internals 화면이 소개하는 런타임입니다. 토큰마다 전문가 일부만 쓰는 아주 큰 MoE 모델을 개인 컴퓨터에서 돌리려고 만들었습니다. NVIDIA GPU·CPU·메인 메모리(RAM)와 그 사이 연결을 한 대의 추론 기계처럼 묶어 씁니다.

더 배우기

기울기 크기 제한

원문 표기 · Gradient clipping

너무 큰 기울기를 한도로 줄이기

배치 하나가 아주 큰 기울기를 내면 갱신 한 번에 가중치가 멀리 튀어 손실이 치솟거나 nan 이 될 수 있습니다. 기울기 크기 제한은 갱신 전에 기울기 전체의 크기를 재어, 정한 한도를 넘으면 한도만큼으로 줄입니다. 방향은 그대로 두고 걸음만 짧게 합니다.

더 배우기 가중치·파라미터 자세히 보기

정규화(normalization)

원문 표기 · Normalization

학습이 흔들리지 않게 숫자 크기를 고르게 맞추기

숫자가 여러 층을 지나면서 점점 커지거나 작아지면 학습이 망가질 수 있습니다. 정규화는 단계마다 숫자의 크기를 다시 맞춥니다. 트랜스포머는 층 정규화(layer normalization)를 씁니다 — 토큰마다 숫자를 평균 0, 퍼짐 1 로 맞춘 뒤 학습으로 정한 숫자를 곱하고 더하는데, 이 숫자들도 파라미터입니다.

더 배우기 가중치·파라미터 자세히 보기

MLP

층을 여러 겹 이은 기본 신경망

MLP(다층 퍼셉트론)는 숫자를 층 두 개 이상에 차례로 통과시킵니다. 층마다 가중치를 곱하고 편향을 더한 뒤 ReLU·GELU 같은 활성화 함수를 씌웁니다. 트랜스포머 블록마다 두 층짜리 작은 MLP 가 있어, 어텐션이 다른 토큰의 정보를 섞은 뒤 토큰마다 따로 특징을 바꿉니다.

더 배우기 GPT 자세히 보기 가중치·파라미터 자세히 보기

모멘텀

원문 표기 · Momentum

지난 갱신 방향을 다음 걸음에 이어 가기

그냥 SGD 는 지금 기울기만큼만 가중치를 옮겨 갈지자로 흔들릴 수 있습니다. 모멘텀은 지난 갱신들을 쌓은 값을 두고 새 걸음마다 그 일부를 더해, 가중치가 한 방향으로 꾸준히 굴러가고 작은 흔들림은 덜 타게 합니다. 이 쌓은 값은 옵티마이저가 체크포인트에 함께 저장해야 하는 상태이며, 그냥 SGD 에는 없습니다.

더 배우기 가중치·파라미터 자세히 보기

음수 로그

원문 표기 · Negative log

확률이 작을수록 커지는 값 −log(p)

확률에 로그를 씌우고 앞에 마이너스를 붙이면, 확률이 1 일 때 0 이고 확률이 0 에 가까워질수록 빠르게 커지는 숫자가 됩니다. 학습은 이것을 정답 토큰의 손실로 씁니다. 자신 있게 맞히면 손실이 거의 없고, 자신 있게 틀리면 손실이 큽니다.

더 배우기

ONNX

여러 도구가 함께 읽는 AI 모델 파일 형식

ONNX(Open Neural Network Exchange)는 모델을 담는 공개 파일 형식입니다. PyTorch 같은 프레임워크로 학습한 모델을 .onnx 파일로 내보내면, 원래 학습 코드 없이도 여러 프로그램이 여러 기기에서 실행할 수 있습니다. 2017년 Microsoft 와 Facebook 이 시작했습니다.

더 배우기

ONNX Runtime

ONNX 모델을 여러 기기에서 돌리는 엔진

ONNX Runtime 은 .onnx 모델을 실행하는 Microsoft 의 오픈소스 엔진입니다. Windows·macOS·리눅스·휴대폰·브라우저에서 돌고, 실행 공급자를 통해 GPU 같은 가속기를 씁니다. SONUB 에서는 글을 소리로 읽어 주는 음성 모델을 이것으로 돌립니다.

더 배우기

출력층

원문 표기 · Output layer

어휘의 모든 토큰에 점수를 매기는 마지막 층

출력층은 한 위치의 마지막 벡터를 어휘의 토큰마다 점수 하나로 바꿉니다. 그 점수를 소프트맥스가 다음 토큰의 확률로 바꿉니다. 토큰마다 가중치 한 줄이 필요하므로 어휘가 크면 이 층도 커집니다.

더 배우기 가중치·파라미터 자세히 보기

3B·7B·8B(파라미터 수)

원문 표기 · 3B, 7B, 8B (parameter count)

모델 크기 — B 는 바이트가 아니라 10억 개

3B·7B·70B 같은 이름은 파라미터의 개수입니다. 7B 는 숫자 하나하나가 약 70억 개라는 뜻이며, 파일 크기나 벡터 개수가 아닙니다. 메모리에서 차지하는 크기는 숫자 하나에 몇 바이트를 쓰는지에 달려, 같은 8B 모델이 16비트로는 약 16GB, 4비트로는 약 4GB 입니다(덧붙는 용량 제외).

더 배우기

스케일(scale)

원문 표기 · Quantization scale

저장한 작은 정수를 원래 값으로 되돌리는 곱셈 값

양자화한 파일은 가중치를 작은 정수로 저장합니다. 쓸 때는 런타임이 정수마다 옆에 저장된 스케일을 곱해 원래와 비슷한 값으로 되돌립니다. GGUF 같은 형식은 가중치 32개 같은 작은 묶음마다 스케일을 하나씩 두므로, 파일에는 정수 말고도 스케일·메타데이터가 더 들어 있습니다. 그래서 실제 파일은 단순 계산보다 조금 큽니다.

더 배우기 가중치·파라미터 자세히 보기

잔차 덧셈

원문 표기 · Residual connection

층의 입력을 출력에 다시 더하기(residual)

잔차 덧셈은 층에 들어간 것을 층에서 나온 것에 더합니다: 출력 = 입력 + 층(입력). 원래 정보가 그대로 남고, 층은 무엇을 바꿀지만 배우면 됩니다. 기울기도 여러 층을 지름길로 거슬러 갈 수 있어서, 아주 깊은 트랜스포머도 학습할 수 있습니다.

더 배우기

RoPE

벡터를 돌려서 토큰 위치를 알려 주는 방법

RoPE(회전 위치 임베딩)는 쿼리·키 벡터를 토큰 위치에 따라 정해진 각도만큼 돌려 위치 정보를 넣습니다. 그러면 어텐션이 두 토큰을 견줄 때 둘이 얼마나 떨어져 있는지가 결과에 드러납니다. 2021년에 제안되었고 Llama 를 비롯한 많은 오픈 모델이 씁니다.

더 배우기

SGD

작은 묶음의 기울기로 가중치를 조금씩 고치기

SGD(확률적 경사 하강법)는 가장 단순한 학습 규칙입니다. 무작위로 고른 작은 묶음에서 손실의 기울기를 구하고, 모든 가중치를 그 반대 방향으로 학습률만큼 조금 옮깁니다. 다음 묶음으로 되풀이합니다. Adam 같은 옵티마이저는 여기에 모멘텀 같은 상태를 더하며, 그냥 SGD 는 따로 저장할 것이 없습니다.

더 배우기 가중치·파라미터 자세히 보기

sherpa-onnx

인터넷 없이 받아쓰기·음성 합성을 돌리는 도구

sherpa-onnx 는 Next-gen Kaldi 팀의 오픈소스 프로젝트로, 음성 모델을 ONNX Runtime 으로 돌립니다. 인터넷 없이 말소리를 글자로, 글을 말소리로 바꿀 수 있으며 컴퓨터·휴대폰·작은 보드에서 돕니다. SONUB 에서는 내 목소리를 글자로 받아쓰는 엔진입니다.

더 배우기

SLM

보통 기기에서도 돌 만큼 작은 언어 모델

SLM(작은 언어 모델)은 LLM 과 같은 방식이지만 파라미터가 훨씬 적어 노트북·휴대폰에서 돌고, 답이 빠르며 비용이 적습니다. 정해진 경계는 없고, 보통 파라미터가 수십억 개 이하인 모델을 작다고 부릅니다. 폭넓은 지식과 긴 추론은 약하지만 좁은 일에는 쓸 만합니다.

더 배우기 가중치·파라미터 자세히 보기

받아쓰기(음성 인식)

원문 표기 · Speech-to-text

말소리를 글자로 바꾸기(STT)

받아쓰기(STT, 음성 인식)는 말소리를 글자로 바꾸는 일입니다. 모델이 소리를 짧게 잘라 들으며 가장 그럴듯한 낱말을 적습니다. 그 글을 언어 모델에 보낼 수 있습니다. 요즘 일부 모델은 글로 바꾸지 않고 소리를 바로 받기도 합니다.

더 배우기

TensorRT-LLM

NVIDIA GPU 용 LLM 가속 라이브러리

TensorRT-LLM 은 NVIDIA 가 만든 오픈소스 라이브러리로, 큰 언어 모델을 NVIDIA GPU 에 맞게 최적화합니다. 모델을 그 GPU 에 맞춰 변환하고 여러 요청 묶어 처리하기·양자화 같은 기법을 더해, 서버가 한 번에 더 많은 사용자에게 답하게 합니다. NVIDIA 하드웨어에서만 씁니다.

더 배우기

음성 합성

원문 표기 · Text-to-speech

글을 말소리로 바꾸기(TTS)

음성 합성(TTS)은 글을 소리 내어 읽어 주는 일입니다. 모델이 글자를 소리로 바꾸며 발음·박자·억양을 고릅니다. SONUB 에서 리엔의 목소리가 이렇게 만들어지며, 그 모델은 ONNX Runtime 이 돌립니다.

더 배우기

학습 스텝(step)

원문 표기 · Training step

학습 중 가중치를 한 번 고치는 단위

학습 스텝은 묶음 하나 가져오기 → 순전파 → 손실 계산 → 역전파 → 가중치 갱신을 한 바퀴 도는 것입니다. 학습 기록은 보통 스텝 번호와 손실을 함께 찍어, 스텝이 늘수록 손실이 줄어드는지 볼 수 있게 합니다. 데이터 전체를 한 번 다 보는 것은 에포크(epoch)라는 다른 단위입니다.

더 배우기 가중치·파라미터 자세히 보기

vLLM

많은 LLM 요청을 빠르게 처리하는 서버 엔진

vLLM 은 UC 버클리에서 시작한 오픈소스 엔진으로, 언어 모델을 여러 사용자에게 서비스할 때 씁니다. PagedAttention 방식으로 KV 캐시를 컴퓨터 메모리처럼 작은 쪽으로 나눠 담아 GPU 메모리를 덜 버리고 많은 요청을 함께 처리합니다. OpenAI 와 같은 모양의 API 를 제공합니다.

더 배우기

VLM

그림도 함께 읽는 언어 모델

VLM(시각 언어 모델)은 글과 함께 그림을 받아 글로 답합니다. 그림 담당 부분이 그림을 벡터로 바꾸면 언어 모델이 토큰과 나란히 읽습니다. 사진 속에 무엇이 있는지 묻거나 차트·화면 캡처를 읽게 할 수 있습니다. 내놓는 것은 여전히 글이며, 그림을 만드는 일은 확산 모델 같은 다른 모델이 합니다.

더 배우기

어텐션 헤드

원문 표기 · Attention head

어텐션 계산 한 벌

어텐션 헤드는 쿼리·키·값 가중치를 따로 가지고 어텐션을 한 번 계산하는 단위입니다. 한 층에는 보통 헤드가 여러 개 나란히 있어, 앞 낱말이나 문장의 주어처럼 저마다 다른 연결을 찾도록 배울 수 있습니다. 결과는 이어 붙여 다음으로 넘깁니다. 한 헤드가 어디를 보는지는 쓸모 있는 단서일 뿐 모델 전체의 설명은 아닙니다.

더 배우기 GPT 자세히 보기 가중치·파라미터 자세히 보기

llama.cpp

내 컴퓨터에서 언어 모델을 돌리는 C/C++ 러너

llama.cpp 는 Georgi Gerganov 가 시작한 오픈소스 프로그램으로, 파이썬 없이 C/C++ 로 언어 모델을 CPU·GPU(Apple 칩 포함)에서 돌립니다. GGUF 파일을 읽고, 모델을 변환·양자화하는 도구도 함께 있습니다. Ollama 와 휴대폰 앱 같은 많은 프로그램이 이것을 바탕으로 만들어졌습니다.

더 배우기

모델 체크포인트

원문 표기 · Model checkpoint

학습 중·후에 저장한 모델 가중치 파일

체크포인트는 학습의 한 순간에 가중치와, 흔히 설정·옵티마이저 상태·진행 횟수까지 저장한 파일입니다. 학습이 멈추면 여기서 이어 갈 수 있고, 학습이 끝나면 마지막 체크포인트가 곧 실행할 모델입니다. 파일 수정을 되돌리는 클로드 코드의 체크포인트와는 다른 것입니다.

더 배우기 GPT 자세히 보기 가중치·파라미터 자세히 보기

위치 임베딩

원문 표기 · Positional embedding

토큰이 몇 번째에 있는지 알려 주는 벡터

어텐션만으로는 토큰의 순서를 몰라서 "개가 사람을 문다"와 "사람이 개를 문다"가 똑같아 보입니다. 위치 임베딩은 자리마다 정해진 벡터를 토큰 자신의 벡터에 더해 줍니다. GPT-2 는 자리마다 벡터를 하나씩(1,024자리까지) 학습하며, 다른 모델은 RoPE 같은 다른 방법을 씁니다.

더 배우기 GPT 자세히 보기

트랜스포머 블록

원문 표기 · Transformer block

어텐션과 MLP 를 묶은 트랜스포머 한 층

트랜스포머 블록은 거듭 쌓는 단위입니다. 안에서 어텐션이 토큰들 사이에 정보를 섞고, 이어서 작은 MLP 가 토큰마다 특징을 바꾸며, 둘레에 정규화와 잔차 덧셈이 붙습니다. GPT-2 small 은 같은 블록 12개를 쌓고, 더 큰 모델은 더 많이 쌓고 블록을 넓힙니다.

더 배우기 GPT 자세히 보기

역전파

원문 표기 · Backpropagation

출력의 오차를 거꾸로 따라가며 기울기 구하기

순전파로 손실을 얻은 뒤, 역전파는 계산 그래프를 거꾸로 따라가며 연쇄 법칙으로 모든 가중치의 기울기 — 그 가중치를 조금 바꾸면 손실이 얼마나 바뀌는지 — 를 구합니다. 경사 하강법이 그 기울기로 가중치를 고칩니다. PyTorch 에서는 loss.backward() 한 줄이 이 일을 합니다.

더 배우기 가중치·파라미터 자세히 보기

PyTorch

신경망을 만들고 학습시키는 대표 파이썬 라이브러리

PyTorch 는 파이썬용 오픈소스 딥러닝 라이브러리로, 메타(당시 Facebook)가 처음 공개했고 지금은 리눅스 재단 아래 PyTorch 재단이 맡습니다. GPU 에 올릴 수 있는 텐서와 자동 미분을 제공해 loss.backward() 한 줄로 모든 기울기를 구합니다. 코드에서는 torch 라는 이름으로 불러옵니다.

더 배우기

GPT

다음 토큰을 예측하는 트랜스포머 언어 모델

GPT 는 Generative Pre-trained Transformer(미리 학습한 생성형 트랜스포머)의 줄임말입니다. 많은 글로 다음 토큰을 예측하도록 학습한 디코더 트랜스포머이며, 토큰을 하나씩 이어 써서 글을 만듭니다. OpenAI 가 2018년 GPT-1 부터 ChatGPT 바탕의 GPT 모델까지 이 이름을 썼고, 다른 많은 모델도 같은 설계를 씁니다.

더 배우기

어휘 사전

원문 표기 · Vocabulary

토크나이저가 아는 조각과 번호(ID) 목록

토크나이저의 어휘 사전은 만들어 낼 수 있는 조각을 번호(ID)와 함께 정해 둔 목록입니다. 모델은 항목마다 임베딩 한 줄과 출력 점수 하나를 두므로 어휘 크기가 모델 모양을 정합니다. 모델은 학습할 때 쓴 어휘로만 제대로 돕니다 — 다른 사전을 끼우면 번호의 뜻이 달라집니다.

더 배우기 GPT 자세히 보기

교차 엔트로피

원문 표기 · Cross-entropy

정답 확률의 음수 로그로 매기는 손실

교차 엔트로피 손실은 모델이 정답에 준 확률만 보고 거기에 음수 로그를 씌웁니다. 정답 토큰에 확률 1 을 주었으면 손실은 0 이고, 그 확률이 낮을수록 손실이 커집니다. 여러 토큰의 평균이 언어 모델 학습이 줄이려는 숫자입니다. 손실이 낮다는 것은 이 데이터를 잘 맞힌다는 뜻이지 사실을 말한다는 보장은 아닙니다.

더 배우기

미분

원문 표기 · Derivative

입력이 조금 바뀔 때 결과가 얼마나 바뀌는지

미분은 한 값이 아주 조금 바뀔 때 다른 값이 얼마나 빨리 바뀌는지를 재는 것입니다. 학습에서는 손실을 가중치로 미분한 값이 그 가중치를 어느 쪽으로 얼마나 옮길지 알려 줍니다. 기울기는 모든 가중치의 미분값을 모은 것입니다. 손으로 계산하지 않아도 라이브러리가 저절로 구해 줍니다.

더 배우기 가중치·파라미터 자세히 보기

드롭아웃

원문 표기 · Dropout

학습 때 신경망 일부를 무작위로 끄기

드롭아웃은 학습 스텝마다 한 층의 출력 가운데 10% 같은 무작위 몫을 0 으로 만듭니다. 그러면 신경망이 어느 한 부분에 지나치게 기대지 못해 과적합이 줄어듭니다. 추론할 때는 드롭아웃을 끄고 모두 씁니다. 비율을 너무 높이면 학습이 느려지고 모델이 약해집니다.

더 배우기

순전파

원문 표기 · Forward pass

입력을 층마다 차례로 계산해 출력까지 가기

순전파는 모델이 평소처럼 계산하는 것입니다 — 입력이 층을 차례로 지나 점수나 예측으로 나옵니다. 학습할 때는 그 출력으로 손실을 계산하고, 이어서 역전파가 반대 방향으로 갑니다. 추론에는 순전파만 있으면 됩니다.

더 배우기

시드(seed)

원문 표기 · Random seed

무작위 결과를 똑같이 되풀이하게 하는 시작 번호

컴퓨터는 시드라는 시작 값에서 난수를 만들어 냅니다. 시드가 같으면 같은 순서의 난수가 나오므로, 학습·데이터 섞기·샘플링을 그대로 다시 돌려 확인할 수 있습니다. 시드는 실행을 되풀이할 수 있게 할 뿐 답이 맞다는 보장은 아닙니다. GPU 의 일부 계산은 시드를 고정해도 조금씩 다를 수 있습니다.

더 배우기

OCR

그림 속 글자를 읽어 글로 바꾸는 기술

OCR(광학 문자 인식)은 사진이나 스캔한 PDF 같은 그림 속 글자를 컴퓨터가 찾고 복사할 수 있는 진짜 글로 바꿉니다. 스캔한 PDF 는 OCR 로 읽기 전까지 쪽마다 그림일 뿐입니다. 손글씨나 흐린 그림에서는 잘못 읽을 수 있으므로 중요한 글은 확인해야 합니다.

더 배우기

Adam

가중치마다 걸음을 맞춰 주는 대표 옵티마이저

Adam 은 2014년에 발표된 옵티마이저로, 지금은 트랜스포머를 비롯한 대부분의 신경망 학습에 기본으로 씁니다. 가중치마다 최근 기울기의 평균(모멘텀과 비슷)과 그 크기의 평균을 기억해, 그 가중치에 알맞은 걸음 크기를 고릅니다. 보통 그냥 SGD 보다 빠르고 매끄럽게 학습하지만, 그 상태를 더 저장해야 합니다.

더 배우기 가중치·파라미터 자세히 보기

어댑터

원문 표기 · Adapter

얼려 둔 모델 옆에 덧붙여 학습하는 작은 가중치

파인튜닝에서 모델의 가중치를 모두 바꾸는 대신, 원래 가중치는 고정하고 옆에 덧붙인 작은 어댑터만 학습할 수 있습니다. 가장 널리 알려진 것이 LoRA 로, 가는 행렬 두 개를 배워 그 곱으로 가중치 행렬을 조금 고칩니다. 어댑터 파일은 모델보다 아주 작고, 같은 기본 모델에 일마다 다른 어댑터를 바꿔 끼울 수 있습니다.

더 배우기 가중치·파라미터 자세히 보기

에이전트 메모리

원문 표기 · Agent memory

에이전트가 적어 두고 다시 불러오는 기억

언어 모델은 세션이 끝나면 모두 잊습니다. 에이전트 메모리는 하네스가 쓸모 있는 사실·규칙·진행 상황을 보통 파일에 적어 두고, 다음에 다시 문맥에 불러오는 부분입니다. 예를 들어 클로드 코드는 세션을 시작할 때마다 CLAUDE.md 와 자동 메모리를 읽습니다. 이 메모리는 파일 속 글이지 컴퓨터의 RAM 이 아닙니다.

더 배우기

에이전틱 시스템

원문 표기 · Agentic system

언어 모델을 도구와 이어 일하게 만든 설계

에이전틱 시스템은 언어 모델에 도구·파일·반복 루프를 이어, 한 번 답하는 데서 그치지 않고 일을 해내게 만든 구성을 통틀어 부르는 말입니다. Anthropic 은 코드가 단계를 정하는 워크플로와 모델이 스스로 단계를 정하는 에이전트를 모두 이 말로 묶습니다. 그런 시스템의 설계를 이야기할 때 씁니다.

더 배우기

argmax

가장 큰 값 자체가 아니라 그 값의 위치

max 는 목록에서 가장 큰 숫자를, argmax 는 그 숫자가 있는 자리를 돌려줍니다. 분류기는 argmax 로 점수가 가장 높은 범주를 고르고, 탐욕 선택은 가장 그럴듯한 다음 토큰을 고릅니다. 자리는 보통 0 부터 셉니다.

더 배우기

기준 모델

원문 표기 · Baseline model

넘어야 할 점수를 정하는 아주 단순한 모델

똑똑해 보이는 모델을 믿기 전에, 가장 흔한 답만 고르거나 평균을 쓰는 것 같은 단순한 기준 모델과 견주어 봅니다. 내 모델이 기준 모델을 겨우 넘는다면 배운 것이 거의 없습니다. 점수 옆에 기준 모델의 점수를 함께 적어야 그 숫자의 뜻이 보입니다.

더 배우기

배치(batch)

원문 표기 · Batch

한 번에 함께 처리하는 예시 묶음

학습은 예시를 하나씩 보지 않고, 글 조각 12개 같은 한 묶음(배치)을 가져와 한꺼번에 손실을 계산하고 한 번 갱신합니다. 배치가 크면 GPU 를 잘 쓰지만 메모리가 더 듭니다. 학습 중 메모리가 모자라면 배치 크기부터 줄여 봅니다.

더 배우기 GPT 자세히 보기

블록 크기

원문 표기 · Block size

모델이 한 번에 읽는 토큰 수(문맥 길이)

nanoGPT 같은 코드에서 블록 크기는 학습 예시 하나에 담는 토큰의 최대 개수이며, 모델이 쓸 수 있는 가장 긴 문맥이기도 합니다. 어텐션에 드는 메모리가 이것에 따라 빠르게 늘어서, 학습 중 메모리가 모자라면 블록 크기를 줄이는 것이 흔한 해결책입니다. 모델은 블록 크기보다 더 앞을 볼 수 없습니다.

더 배우기 GPT 자세히 보기

BM25

낱말 겹침으로 문서 순위를 매기는 공식

BM25 는 검색어와 문서가 함께 가진 낱말로 점수를 매깁니다. 드문 낱말은 흔한 낱말보다 크게 치고, 같은 낱말이 되풀이되면 점수가 갈수록 덜 오르며(빈도 포화), 긴 문서가 길다는 까닭만으로 이기지 않게 길이를 보정합니다. 빠르고 이름·코드처럼 정확한 낱말에 강합니다. 다른 말로 쓴 같은 뜻은 임베딩 검색이 더 잘 찾아, 둘을 함께 쓰는 시스템이 많습니다.

더 배우기

확률 보정(calibration)

원문 표기 · Calibration

점수가 실제로 맞히는 비율과 맞는지

모델의 점수를 실제 확률로 읽을 수 있으면 잘 보정되었다고 합니다 — 0.8 이라고 답한 것들 가운데 약 80% 가 맞는 경우입니다. 많은 모델이 퍼센트처럼 보이는 0~1 사이 숫자를 내지만 보정되지 않았을 수 있으니, 점수를 확률로 믿기 전에 남겨 둔 데이터로 확인합니다.

더 배우기

인과 마스크

원문 표기 · Causal mask

뒤 토큰을 가려 앞만 보게 하는 장치

학습할 때 모델은 문장 전체를 한꺼번에 받지만, 토큰마다 그 앞의 토큰만으로 예측해야 합니다. 인과 마스크는 소프트맥스 전에 뒤쪽 위치의 점수를 마이너스 무한대로 바꿔, 어느 위치도 자기 뒤를 보지 못하게 막습니다. 마스크가 없으면 모델이 미래의 정답을 베껴서 쓸모 있는 것을 배우지 못합니다.

더 배우기

글자 단위 모델

원문 표기 · Character-level model

글자 하나를 토큰 하나로 쓰는 언어 모델

글자 단위 모델은 글자·띄어쓰기·문장부호 하나하나를 토큰 하나로 다루므로 어휘가 아주 작고 토크나이저를 따로 학습하지 않아도 됩니다. nanoGPT 의 셰익스피어 예제처럼 연습에는 쉽지만, 낱말 조각 토큰을 쓰는 모델보다 문장마다 훨씬 많은 단계를 거칩니다. 가중치가 자기 글자 어휘에만 맞으므로 GPT-2 토큰을 기대하는 러너에 그대로 넣을 수 없습니다.

더 배우기 GPT 자세히 보기 가중치·파라미터 자세히 보기

채팅 템플릿

원문 표기 · Chat template

채팅 모델이 기대하는 대화 감싸기 형식

채팅 모델은 정해진 한 가지 형식으로 적은 대화로 학습했습니다. 그 형식은 특별한 토큰으로 시스템·사용자·모델 부분이 어디서 시작하고 끝나는지 표시합니다. 채팅 템플릿은 내 메시지 목록을 그 글로 바꿔 줍니다. Ollama·llama.cpp 같은 러너는 모델 파일에서 템플릿을 읽습니다. 템플릿이 틀리면 모델이 횡설수설하거나 같은 말을 되풀이할 수 있습니다.

더 배우기

저장된 지침

원문 표기 · Saved instructions

ChatGPT 가 새 대화마다 따르는 내 설정

ChatGPT 설정에는 나에 대한 정보와 원하는 답의 모양을 지침으로 저장할 수 있습니다. 예를 들어 "나는 초보이니 짧은 문장으로 설명해 줘" 같은 것입니다. ChatGPT 는 이것을 새 대화마다 더해서, 같은 말을 되풀이하지 않아도 됩니다. 그래도 지시일 뿐이라 답을 이끌 뿐 보장하지는 않으며, 비밀 정보는 넣지 않습니다.

더 배우기 GPT 자세히 보기

닫힌 모델

원문 표기 · Closed model

회사의 앱·API 로만 쓰는 비공개 모델

닫힌 모델은 가중치를 공개하지 않습니다. 그 회사의 앱이나 API 로만 쓰며, 가격·사용 한도·옛 버전을 언제 없앨지도 회사가 정합니다. Claude·Gemini·ChatGPT 바탕의 GPT 모델이 닫힌 모델입니다. 흔히 가장 뛰어나지만, 내 자료가 회사의 서버로 갑니다.

더 배우기 GPT 자세히 보기 가중치·파라미터 자세히 보기

완료 문구

원문 표기 · Completion promise

일이 정말 끝났을 때만 에이전트가 쓰는 약속 문구

Ralph Loop 에서는 DONE 같은 짧은 완료 문구를 정합니다. 에이전트가 그 문구를 정확히 쓸 때까지 루프가 이어지고, 프롬프트는 정말 사실일 때만 쓰라고 알려 줍니다. 에이전트가 끝에 닿지 못할 수도 있으므로 최대 바퀴 수·예산과 함께 쓰고, 끝난 뒤 결과는 직접 확인합니다.

더 배우기

컨텍스트 관리

원문 표기 · Context management

모델의 한정된 문맥에 무엇을 넣을지 고르는 일

모델이 한 번에 읽을 수 있는 양은 정해져 있습니다. 컨텍스트 관리는 하네스가 무엇을 넣을지 정하는 일입니다 — 어떤 파일, 어떤 앞 대화, 어떤 도구 결과를 넣고, 대화가 길어지면 무엇을 요약하거나 뺄지. 잘하면 중요한 사실은 보이고 잡음은 빠지며, 일이 길어질수록 더 중요해집니다.

더 배우기

Core ML

Apple 기기용 모델 런타임

Core ML 은 Apple 기기의 앱 안에서 기계 학습 모델을 돌리는 Apple 의 기본 프레임워크입니다. CPU·GPU·뉴럴 엔진 칩을 쓰고, 자료를 서버로 보내지 않고 기기 안에서 실행합니다. PyTorch 같은 도구로 만든 모델은 Apple 의 coremltools 등으로 Core ML 형식으로 먼저 바꿉니다.

더 배우기

누적 확률

원문 표기 · Cumulative probability

큰 확률부터 차례로 더해 간 합

후보를 확률이 큰 것부터 줄 세우고 차례로 더해 가면 그 합이 누적 확률입니다. top-p 샘플링이 이것을 씁니다 — p = 0.9 이면 합이 90% 에 닿는 가장 작은 후보 묶음만 남겨 그 안에서 뽑으므로, 모델이 확신할수록 후보가 줄어듭니다.

더 배우기

결정 트리

원문 표기 · Decision tree

예·아니오 질문을 이어 가며 분류하는 모델

결정 트리는 "꽃잎 길이 < 2.5cm?" 같은 특징에 대한 질문의 사슬을 배우고, 답마다 다음 질문으로 내려가 끝(잎)에서 범주를 정합니다. 읽기 쉬운 모델입니다. 깊이 제한 없이 자라게 두면 학습 데이터를 완벽히 외워 새 데이터에서는 더 못하는 과적합이 생길 수 있습니다.

더 배우기

임베딩 모델

원문 표기 · Embedding model

글을 뜻 검색용 벡터로 바꾸는 모델

임베딩 모델은 글을 쓰지 않습니다. 문장이나 문서를 읽고 벡터 하나를 내놓아, 뜻이 비슷한 글끼리 비슷한 방향의 벡터를 갖게 합니다. 검색·추천·RAG 시스템이 이 벡터로 관련 있는 글을 찾습니다. 작은 것은 휴대폰에서 돌려 내 메모를 찾는 데도 쓸 수 있습니다.

더 배우기

임베딩 공간

원문 표기 · Embedding space

임베딩 벡터들이 놓이는 여러 차원의 공간

임베딩 벡터 하나하나는 수백 차원짜리 공간의 한 점입니다. 그 공간에서 모델이 비슷하다고 보는 것끼리 가까이 모입니다. 거리는 같은 모델이 만든 벡터끼리만 뜻이 있습니다 — 임베딩 모델이 다르면 공간도 달라 벡터를 서로 견줄 수 없습니다.

더 배우기

피드포워드 층

원문 표기 · Feed-forward layer

토큰마다 따로 거치는 블록 속 신경망

어텐션이 토큰들 사이에 정보를 섞은 뒤, 피드포워드 층은 토큰마다 벡터를 같은 작은 신경망으로 따로 처리합니다 — 보통 더 넓은 층, GELU 같은 활성화 함수, 원래 폭으로 돌아오는 층입니다. 블록의 MLP 가 바로 이것이며, 큰 모델에서는 파라미터의 대부분이 여기 있습니다.

더 배우기 GPT 자세히 보기 가중치·파라미터 자세히 보기

GELU

많은 트랜스포머가 쓰는 부드러운 활성화 함수

GELU(Gaussian Error Linear Unit)는 ReLU 와 비슷한 활성화 함수지만 0 에서 뾰족하게 꺾이지 않고 부드럽게 휩니다. 큰 양수는 거의 그대로, 큰 음수는 거의 0 이 되고, 0 근처 값은 살짝 줄어듭니다. GPT-2 와 BERT 가 피드포워드 층에서 씁니다.

더 배우기 GPT 자세히 보기

일반화

원문 표기 · Generalization

처음 보는 데이터에서도 잘 맞히는 능력

학습의 목표는 학습 예시에서 점수를 잘 받는 것이 아니라 새 예시에서 잘하는 것입니다. 그 능력이 일반화입니다. 학습에 쓰지 않고 남겨 둔 데이터로 잽니다. 학습 데이터에서는 완벽한데 새 데이터에서 못하는 모델은 일반화하지 못하고 외운 것이며, 이것이 과적합입니다.

더 배우기

GPT-2

2019년 OpenAI 의 트랜스포머 언어 모델

GPT-2 는 OpenAI 가 2019년에 공개한 디코더 트랜스포머 언어 모델로, 파라미터 1억 2천4백만 개부터 15억 개까지 여러 크기가 있습니다. 토큰·위치 임베딩, 거듭 쌓은 트랜스포머 블록, 토큰 50,257개 어휘의 출력층이라는 설계가 단순하고 잘 알려져 있어, nanoGPT 같은 프로젝트가 LLM 을 가르치려고 다시 만듭니다.

더 배우기 GPT 자세히 보기 가중치·파라미터 자세히 보기

작업 인계

원문 표기 · Handoff

다른 에이전트에게 일과 맥락 넘기기

작업 인계는 한 에이전트가 남은 일을 더 알맞은 다른 에이전트에게, 알아야 할 내용과 함께 넘기는 것입니다. 맥락을 얼마나 넘길지, 어느 모델이 이어받을지, 결과가 어떻게 돌아올지는 하네스가 정합니다. 맥락이 너무 적으면 다음 에이전트가 같은 일을 되풀이하고, 너무 많으면 헤맵니다.

더 배우기

은닉층

원문 표기 · Hidden layer

입력과 출력 사이에 있는 신경망의 중간 층

은닉층은 입력과 출력층 사이에 있는 층입니다. 숫자를 받아 가중치를 곱하고 활성화 함수를 거쳐 새 숫자로 넘기며, 입력에도 답에도 바로 보이지 않는 특징을 만들어 냅니다. 딥러닝은 은닉층이 여러 겹이라는 뜻입니다.

더 배우기 가중치·파라미터 자세히 보기

Imagen

글을 그림으로 만드는 Google 의 예전 모델

Imagen 은 글 설명을 그림으로 바꾸는 Google 의 모델 계열입니다. SONUB 강좌는 2026년 10월 기준으로 Gemini API 의 예전 Imagen 모델 서비스가 끝났고, 그곳의 그림 생성·편집은 Nano Banana 모델로 제공된다고 안내합니다.

더 배우기

지시 준수

원문 표기 · Instruction following

모델이 받은 지시를 얼마나 그대로 따르는지

지시 준수는 모델이 프롬프트·시스템 프롬프트의 지시 — 형식, 길이, 언어, 하지 말아야 할 것 — 를 얼마나 잘 따르는지입니다. 모델마다 차이가 크고 이것을 따로 시험합니다. 뛰어난 모델도 벗어날 수 있으니, 앱은 안전을 지시에만 맡기지 말고 권한 같은 실제 제한을 코드로 걸어야 합니다.

더 배우기

k-최근접 이웃(k-NN)

원문 표기 · k-nearest neighbours (k-NN)

가장 가까운 예 k개로 답을 정하는 방법

k-NN 은 학습이랄 것이 거의 없이 학습 예시를 모두 간직합니다. 새 예시가 오면 가장 가까운 예시 k개를 찾아 그중 가장 많은 범주로 답합니다. 이웃 수 k 는 학습 밖에서 고르는 하이퍼파라미터입니다 — 작으면 잡음에 휘둘리고, 크면 차이가 흐려집니다.

더 배우기

LangChain

LLM 앱·에이전트용 오픈소스 프레임워크

LangChain 은 파이썬·자바스크립트로 쓰는 오픈소스 프레임워크로, 언어 모델 위에 앱을 만들 때 모델을 도구·문서·메모리·다른 모델과 잇습니다. 짝인 LangGraph 로 단계가 분명한 에이전트를 만듭니다. LangChain 은 하네스를 모델을 뺀 주변 시스템 전체라고 설명하며, SONUB 강좌가 이것을 인용합니다.

더 배우기

LiteRT

Google 의 기기용 모델 런타임

LiteRT 는 기기 안에서 기계 학습 모델을 돌리는 Google 의 런타임으로, 2024년부터 TensorFlow Lite 의 새 이름입니다. 안드로이드·iOS·웹·작은 보드에서 돌고, 있으면 휴대폰 GPU 같은 가속기를 쓰며 자료를 서버로 보내지 않습니다.

더 배우기

llama.rn

React Native 앱용 llama.cpp

llama.rn 은 llama.cpp 를 감싼 React Native 용 오픈소스 라이브러리입니다. React Native 로 만든 휴대폰 앱이 서버 없이 기기 안에서 GGUF 모델을 불러와 글을 만들게 해 줍니다. PocketPal AI 가 이렇게 만든 앱이며, Flutter 앱은 다른 llama.cpp 바인딩으로 같은 일을 합니다.

더 배우기

메인 에이전트

원문 표기 · Main agent

서브 에이전트에게 일을 맡기는 중심 에이전트

메인 에이전트는 내 대화 속의 에이전트입니다. 프로젝트 전체 검색 같은 일의 한 부분은 자기만의 새 문맥과 더 적은 도구를 가진 서브 에이전트를 띄워 맡기고, 요약만 돌려받습니다. 그러면 메인 에이전트의 문맥이 깨끗하게 유지됩니다. 마지막 답은 메인 에이전트가 책임집니다.

더 배우기

최대 바퀴 수

원문 표기 · Maximum number of rounds

루프를 몇 번까지만 돌지 정한 한도

에이전트 루프는 스스로 끝에 닿지 못할 수도 있고, 바퀴마다 토큰과 돈이 듭니다. 최대 바퀴 수는 그 횟수를 넘으면 무슨 일이 있어도 끝내는 한도입니다. 확인할 수 있는 끝나는 기준·토큰 예산과 함께 언제나 정합니다.

더 배우기

호스트(Host)

원문 표기 · MCP host

MCP 클라이언트를 품은, 사람이 쓰는 AI 앱

MCP 에는 역할이 셋 있습니다. 호스트는 사람이 쓰는 AI 앱 — 클로드 코드, Claude Desktop, 코드 편집기 — 입니다. 그 안에서 서버마다 클라이언트 하나가 연결을 맡고, 서버는 도구와 자료를 내놓습니다. 어떤 서버를 켤지는 호스트가 정하며, 도구를 쓰기 전에 사용자에게 허락을 받아야 합니다.

더 배우기

initialize

MCP 연결 처음에 버전을 맞추는 인사 요청(2025-11-25 까지의 규격)

MCP 규격 2025-11-25 까지는 세션이 initialize 로 시작합니다. 클라이언트가 쓰는 프로토콜 버전과 할 수 있는 일을 보내면, 서버는 쓸 버전과 내놓는 것(예: 도구), 자기 이름으로 답합니다. 이어서 클라이언트가 notifications/initialized 알림을 보내야 tools/list·tools/call 을 쓸 수 있습니다. 최신 규격(2026-07-28)에는 이 악수가 없고, 요청마다 _meta 에 버전을 실어 보냅니다.

더 배우기

tools/call

MCP 서버에 도구 하나를 실행해 달라는 요청

tools/call 은 도구 이름과 인자를 보냅니다. 서버는 그 도구를 실행하고 결과를 보통 글 내용으로, 안 되면 오류로 답합니다. 어떤 도구를 쓸지는 모델이 고르지만 요청은 호스트 앱이 보내며, 위험한 일은 실행 전에 사용자에게 물어야 합니다.

더 배우기

tools/list

MCP 서버에 도구 목록을 묻는 요청

tools/list 는 MCP 서버에 무엇을 할 수 있는지 묻습니다. 서버는 도구마다 이름, 모델이 언제 쓸지 정할 때 읽는 설명, 인자를 적은 입력 스키마를 돌려줍니다. 모델이 이 설명을 믿고 움직이므로 믿을 수 있는 서버에만 연결합니다.

더 배우기

Nano Banana

Google 의 Gemini 그림 생성·편집 모델

Nano Banana 는 글로 그림을 만들고 고치는 Gemini 모델을 Google 이 부르는 이름입니다. 새 그림을 설명하거나, 그림을 올려 같은 사람·물건은 두고 배경만 바꾸는 식으로 고칠 수 있습니다. Gemini 앱과 Gemini API 로 씁니다.

더 배우기

nanochat

작은 채팅 LLM 을 끝까지 만드는 코드

nanochat 은 Andrej Karpathy 가 2025년에 nanoGPT 를 잇는 프로젝트로 공개한 오픈소스입니다. 토크나이저 학습, 사전 학습, 채팅용 파인튜닝, 평가, 결과와 대화하는 웹 화면까지 작은 코드 하나에 담았습니다. ChatGPT 같은 모델이 처음부터 끝까지 어떻게 만들어지는지 배우는 용도입니다.

더 배우기 GPT 자세히 보기

nanoGPT

GPT-2 방식 모델을 학습하는 짧은 코드

nanoGPT 는 Andrej Karpathy 가 공개한 오픈소스 코드로, PyTorch 몇백 줄로 GPT 방식 모델을 학습·파인튜닝합니다. 큰 GPU 로 GPT-2 를 재현할 수도, 노트북 CPU 로 셰익스피어 글자 단위 모델을 몇 분 만에 학습시킬 수도 있습니다. 지금은 만든 사람이 오래된 것으로 표시하고 nanochat 을 안내하지만, GPT-2 방식 모델을 들여다보기에는 여전히 알기 쉽습니다.

더 배우기 GPT 자세히 보기

Ollama

오픈 모델을 내려받아 내 컴퓨터에서 돌리는 앱

Ollama 는 macOS·Windows·리눅스용 무료 러너입니다. 명령 하나로 오픈 모델을 내려받아 바로 대화할 수 있고, 내 프로그램이 부를 수 있는 로컬 API 도 엽니다. 양자화한 모델 파일과 채팅 템플릿을 알아서 다뤄 주므로, 인터넷 없이 모델을 돌려 보는 쉬운 첫걸음입니다.

더 배우기

오픈 모델

원문 표기 · Open model

가중치를 내려받아 직접 돌릴 수 있는 모델

오픈 모델은 가중치를 공개해, 내 컴퓨터나 서버에 내려받아 돌릴 수 있습니다. 흔히 무료이고 자료를 밖으로 보내지 않아도 됩니다. 다만 많은 것이 완전한 오픈 소스가 아니라 오픈 웨이트입니다 — 가중치는 공개해도 학습 데이터나 코드는 아닐 수 있고, 라이선스에 제한이 있을 수 있습니다. Llama·Gemma·Qwen 이 그 예입니다.

더 배우기

옵티마이저

원문 표기 · Optimizer

기울기로 가중치를 어떻게 고칠지 정하는 규칙

역전파는 가중치마다 기울기를 알려 주고, 옵티마이저는 그것으로 가중치를 어떻게 바꿀지 정합니다. 그냥 SGD 는 기울기 반대쪽으로 정해진 걸음만큼 갑니다. Adam 같은 것은 지난 기울기도 기억해 더 알맞은 걸음을 고릅니다. 옵티마이저의 상태도 체크포인트에 저장해야 학습을 이어 갈 수 있습니다.

더 배우기 가중치·파라미터 자세히 보기

PocketPal AI

휴대폰에서 인터넷 없이 작은 모델과 대화하는 앱

PocketPal AI 는 iPhone·안드로이드용 오픈소스 앱으로, GGUF 형식의 작은 언어 모델을 내려받아 휴대폰 안에서 돌려 인터넷 없이 대화하게 해 줍니다. llama.cpp 위에 llama.rn 으로 만들었습니다. 휴대폰 메모리가 작으니 작고 강하게 양자화한 모델이 잘 맞습니다.

더 배우기

후속 학습

원문 표기 · Post-training

기본 학습 뒤 특정 행동을 더 가르치는 학습

사전 학습은 엄청난 데이터로 글을 이어 쓰는 법을 가르칩니다. 후속 학습은 그 뒤에 옵니다 — 예시 대화로 파인튜닝하고, 사람이나 자동 채점의 피드백으로 배우고, 도구 쓰기 같은 일을 연습합니다. 날것의 글 예측기가 쓸모 있는 도우미가 되고, 코딩 에이전트가 하네스와 함께 일을 잘하게 되는 단계입니다.

더 배우기

Q4_K_M

GGUF 에서 흔히 고르는 4비트 양자화 방식

Q4_K_M 은 llama.cpp 의 "k-quant" 방식 가운데 하나입니다. 대부분의 가중치를 4비트쯤으로 저장하고 민감한 일부는 비트를 더 쓰며(M 은 중간), 가중치를 묶음으로 나눠 스케일을 함께 씁니다. 파일 크기와 품질 사이의 균형이 좋아 많이 고르며, 크기는 FP16 의 30% 쯤입니다.

더 배우기 가중치·파라미터 자세히 보기

추천 시스템

원문 표기 · Recommender system

좋아할 만한 것을 예측해 골라 주는 AI

추천 시스템은 사람과 비슷한 사람들이 전에 한 일을 보고, 그 사람이 원할 만한 영상·노래·물건을 예측해 먼저 보여 줍니다. 대화하거나 글을 쓰지 않아도 가장 널리 쓰이는 AI 가운데 하나입니다. AI 가 ChatGPT 만이 아니라는 좋은 예입니다.

더 배우기 GPT 자세히 보기

회귀 계수

원문 표기 · Regression coefficient

회귀 모델이 입력마다 곱하는 학습된 숫자

선형 회귀는 가격 = a × 크기 + b 같은 식으로 예측합니다. a 와 b 는 학습하면서 데이터로 찾아내는 계수이며, 트리 깊이처럼 내가 고르는 설정과 달리 파라미터입니다. 계수는 그 입력이 1 늘 때 예측이 얼마나 움직이는지 보여 줍니다.

더 배우기 가중치·파라미터 자세히 보기

규칙 기반 시스템

원문 표기 · Rule-based system

사람이 쓴 규칙대로만 판단하는 프로그램

규칙 기반 시스템은 "제목에 '공짜 돈'이 있으면 스팸"처럼 사람이 쓴 만약-그러면 규칙을 따릅니다. 데이터로 배우지 않아 설명하기 쉽지만, 아무도 생각하지 못한 경우에는 틀립니다. 머신러닝은 그 규칙을 예시에서 찾아냅니다. 둘 다 AI 에 들어갑니다.

더 배우기

유사도

원문 표기 · Similarity

두 벡터·글이 얼마나 비슷한지 나타낸 값

유사도는 두 벡터가 얼마나 가까운지 잽니다. 가장 흔한 코사인 유사도는 방향을 견주어 1 이면 같은 방향, 0 이면 관계없음, −1 이면 반대입니다. 임베딩 검색이 이것으로 문서 순서를 매깁니다. 유사도가 높다는 것은 뜻이 가깝다는 것이지 두 문장이 같은 참말이라는 뜻은 아닙니다.

더 배우기

fit

원문 표기 · scikit-learn fit

scikit-learn 의 모델 학습 함수

scikit-learn 에서는 모든 모델을 같은 방식으로 학습시킵니다 — model.fit(X, y) 가 입력 X 와 정답 y 로 배웁니다. 그다음 model.predict(X_new) 로 예측합니다. fit 은 학습용 데이터로만 하고 테스트 데이터는 마지막까지 남겨 두어야 점수가 부풀지 않습니다.

더 배우기

끝 조건

원문 표기 · Stop condition

에이전트의 일이 끝났는지 확인할 수 있는 기준

끝 조건은 에이전트가 언제 멈출지 정하는 기준입니다. "tests/ 의 모든 테스트가 통과하고 페이지가 오류 없이 열린다"처럼 확인할 수 있게 적습니다. 에이전트는 단계마다 이 조건을 확인하고 참이 될 때까지 계속 일합니다. "더 좋게 해 줘" 같은 막연한 바람은 끝나지 않으므로, 오래 도는 루프에는 바퀴 수나 토큰 한도도 함께 정합니다.

더 배우기

멈춤 토큰

원문 표기 · Stop token

"글이 여기서 끝난다"는 뜻의 특별한 토큰

멈춤 토큰은 글의 끝을 표시하는 특별한 토큰입니다. 학습할 때 모델은 예문마다 끝에 이 토큰을 보므로, 답이 어디서 끝나는지 배웁니다. 글을 만들 때는 이 토큰이 뽑히거나 길이 한도에 닿으면 프로그램이 멈춥니다. 이 토큰이 없으면 모델은 낱말을 끝없이 덧붙입니다.

더 배우기 GPT 자세히 보기

특수 토큰

원문 표기 · Special token

글 조각 대신 자리를 표시하는 예약 토큰

특수 토큰은 토크나이저가 글 조각이 아니라 할 일을 위해 남겨 둔 토큰입니다. [BOS] 는 글의 시작을, [EOS] 는 글의 끝을 알리고 모델이 EOS 를 내면 생성이 멈춥니다. [PAD] 는 빈자리를 채우고, [UNK] 는 토크나이저가 모르는 글자를 대신합니다. XSLM 은 줄바꿈을 실제 모델의 EOS 처럼 씁니다.

더 배우기

safetensors

모델 가중치를 안전하게 저장하는 파일 형식

safetensors 는 모델의 가중치를 저장하는 파일 형식입니다. 파일에는 숫자와, 층마다 이름·데이터 형식·모양을 적은 작은 JSON 머리말만 들어 있습니다. 예전의 Python pickle 기반 형식은 파일을 열 때 숨은 코드가 실행될 수 있었지만 safetensors 는 그럴 수 없어서, Hugging Face 가 기본으로 씁니다.

더 배우기 가중치·파라미터 자세히 보기

사전 학습

원문 표기 · Pre-training

언어모델 학습의 첫 단계이자 가장 큰 단계

사전 학습은 언어모델을 만드는 첫 단계로, 모델이 엄청난 양의 글에서 다음 토큰을 예측하도록 학습합니다. 이 단계에서 언어 전반을 폭넓게 다루게 되지만, 아직 지시를 잘 따르지는 못합니다. 그 뒤 지시 학습 같은 단계가 모델을 도우미로 다듬습니다.

더 배우기

지시 학습(SFT)

원문 표기 · Instruction tuning (SFT)

지시를 따르도록 요청·답변 쌍으로 하는 추가 학습

지시 학습은 SFT(지도 파인튜닝)라고도 하며, 사전 학습을 마친 모델을 요청과 좋은 답변의 쌍으로 더 학습시킵니다. 그러면 모델이 글을 그냥 이어 쓰는 대신 사람이 묻는 방식에 맞춰 답하게 됩니다. 후속 학습의 한 부분입니다.

더 배우기

Llama

Meta 가 가중치를 공개한 언어 모델 계열

Llama 는 Meta 가 만든 언어 모델 계열입니다. Meta 가 모델의 가중치를 공개하기 때문에, 누구나 Meta 의 라이선스 조건 안에서 내려받아 자기 컴퓨터에서 돌릴 수 있습니다. llama.cpp 와 Ollama 같은 도구도 처음에는 Llama 모델을 돌리는 것에서 시작했습니다.

가중치·파라미터 자세히 보기

Qwen

알리바바가 만든 언어 모델 계열

Qwen 은 Alibaba Cloud 가 만든 언어 모델 계열입니다. 노트북용 작은 모델부터 서버용 큰 모델까지, 그리고 Qwen3-Coder 같은 코딩 모델까지 많은 Qwen 모델이 가중치를 공개한 오픈 모델로 나옵니다. OpenRouter 같은 서비스를 통해서도 쓸 수 있습니다.

가중치·파라미터 자세히 보기

빈도 포화

원문 표기 · Term frequency saturation

낱말 검색에서 같은 낱말이 더 나와도 점수가 점점 덜 오르는 성질

BM25 같은 낱말 검색에서는 문서에 찾는 낱말이 자주 나올수록 점수가 오르지만, 한 번 더 나올 때마다 오르는 폭이 점점 줄어듭니다. 그래서 점수가 끝없이 커지지 않고 어느 높이에서 멈춥니다. 같은 낱말만 잔뜩 되풀이한 문서가 1등을 차지하지 못하게 하는 장치입니다.

더 배우기

기준값

원문 표기 · Threshold

이 값을 넘으면 "예"로 판정하는 경계 숫자

분류기는 보통 최종 답 대신 점수를 냅니다. 기준값은 그 점수에 긋는 선으로, 넘으면 "예", 못 넘으면 "아니요"로 판정합니다. 기준값을 옮기면 양성으로 분류되는 예가 달라집니다 — 올리면 "예"라고 하는 일이 줄지만 더 신중해집니다. 점수 0.7 이 곧 70% 확률이라는 뜻은 아닙니다.

더 배우기

토큰 예산

원문 표기 · Token budget

작업이나 에이전트 루프가 쓸 수 있는 토큰의 최대량

토큰 예산은 에이전트가 한 작업에 쓸 수 있는 토큰 수의 상한입니다. AI 서비스는 토큰 수로 요금을 매기므로, 토큰 예산은 곧 비용 한도이기도 합니다. 예산이 없는 루프는 밤새 돌며 돈을 쓸 수 있고, 예산이 떨어지면 목표를 다 이루지 못했어도 에이전트가 멈춥니다.

더 배우기

검증 손실

원문 표기 · Validation loss

학습에 쓰지 않은 글로 잰 손실

학습하는 동안 숫자 두 개를 지켜봅니다. 학습 손실은 모델이 배우는 글로 재고, 검증 손실은 학습에 쓰지 않고 따로 둔 글로 잽니다. 학습 손실은 계속 내려가는데 검증 손실이 오르기 시작하면, 모델이 일반적인 규칙 대신 예문을 외우고 있다는 뜻이므로 거기서 멈추거나 모델을 줄입니다.

더 배우기

Antigravity CLI

agy 명령으로 시작하는 Google 의 터미널용 코딩 에이전트

Antigravity CLI 는 터미널에서 도는 Google 의 코딩 에이전트입니다. 공식 페이지의 설치 스크립트로 설치하고, 프로젝트 폴더에서 agy 명령으로 시작합니다. 처음에는 브라우저가 열려 Google 계정으로 로그인합니다. Google 의 Gemini 모델을 쓰고, 클로드 코드·Codex 처럼 계획을 승인하면 파일을 읽고 고치고 실행합니다. 예전 Gemini CLI 사용자를 위한 이전 안내서도 나와 있습니다.

더 배우기

Claude Cowork

파일과 앱에 걸친 여러 단계의 일을 맡기는 Claude 기능

Claude Cowork 는 Claude 데스크톱 앱에서 프로그래밍이 아닌 여러 단계의 일을 맡기는 기능입니다. 폴더 속 파일 정리, 영수증 더미를 표로 만들기, 여러 문서로 보고서 초안 쓰기 같은 일입니다. 폴더를 주고 원하는 결과를 말하면 단계를 계획하고 차례로 해 나가며, 나는 그 과정을 지켜볼 수 있습니다. 다른 에이전트처럼 결과는 내가 확인해야 하는 초안입니다.

더 배우기

특성(Feature)

모델이 판단에 쓰는 입력 값 하나(예: 집 크기)

특성은 모델이 보는 입력 데이터의 한 가지 값입니다. 집값 모델이라면 집 크기·방 개수·역까지 거리가 특성이고, 표 데이터에서는 보통 열 하나가 특성 하나입니다. 어떤 특성을 넣느냐가 중요합니다 — 답과 상관없는 특성은 잡음이 되어 모델을 오히려 나쁘게 만들 수 있습니다.

더 배우기

Hugging Face

AI 모델과 데이터를 함께 나누는 사이트·회사

Hugging Face 는 사람들이 AI 모델·데이터셋·작은 데모 앱을 올리고 내려받는 사이트입니다. 코드에 GitHub 가 있다면 AI 모델에는 Hugging Face 가 있는 셈입니다. 이 회사는 그 모델을 불러와 실행하는 Transformers 같은 오픈소스 파이썬 라이브러리도 만듭니다. 아주 작은 것부터 큰 것까지 많은 오픈 모델을 여기서 내려받습니다.

이미지 생성

원문 표기 · Image generation

글로 쓴 설명을 받아 AI 가 새 그림을 만드는 일

이미지 생성은 AI 모델이 글로 쓴 설명(프롬프트)을 새 그림으로 바꾸는 일이고, 많은 모델은 내가 준 그림을 고치기도 합니다. 대상·스타일·크기·바꾸면 안 되는 것을 설명하고, 한 번에 한 가지만 고치면 결과가 좋아집니다. 쓰기 전에 잘못된 글자·손가락 개수 같은 실수와, 사람·상표·화풍에 대한 권리를 확인합니다.

더 배우기

이미지 인식

원문 표기 · Image recognition

사진 속에 무엇이 있는지 알아보는 AI 기술

이미지 인식은 사진을 보고 그 안에 무엇이 있는지 — 고양이, 정지 표지판, 손글씨 숫자 — 알아보는 AI 기술입니다. 보통 이름표가 붙은 사진을 많이 보고 학습한 딥러닝 신경망으로 합니다. 휴대폰은 이것으로 사진첩을 분류하고, 자동차는 도로 표지판을 읽습니다.

LoRA

모델은 얼려 두고 작은 덧붙임만 학습하는 값싼 파인튜닝

LoRA(Low-Rank Adaptation)는 큰 모델을 적은 비용으로 파인튜닝하는 방법입니다. 원래 가중치는 그대로 얼려 두고, 어댑터라고 부르는 작은 행렬만 새로 학습해 더합니다. 학습할 숫자가 훨씬 적어 GPU 메모리와 저장 공간이 적게 들고, 기본 모델 하나에 일마다 다른 작은 어댑터를 바꿔 끼울 수 있습니다.

가중치·파라미터 자세히 보기

행렬 곱

원문 표기 · Matrix multiplication

두 숫자 표를 행과 열끼리 곱해 더하는 계산

행렬 곱은 두 행렬을 합치는 계산으로, 결과의 숫자 하나하나는 첫 행렬의 행 하나와 둘째 행렬의 열 하나를 칸끼리 곱해 모두 더한 값입니다. 안쪽 크기가 같아야 해서 4×3 행렬과 3×2 행렬을 곱하면 4×2 행렬이 됩니다. 신경망 안의 계산은 거의 다 행렬 곱이라, 이것을 한꺼번에 많이 하도록 만든 GPU 를 AI 에 씁니다.

더 배우기

뉴런

원문 표기 · Neuron

신경망에서 가장 작은 계산 단위

인공 뉴런은 숫자 여러 개를 받아 각각 가중치를 곱하고, 편향과 함께 모두 더한 뒤, 그 합을 활성화 함수에 통과시킵니다. 뉴런을 여러 개 나란히 놓으면 층이 되고, 층을 쌓으면 신경망이 됩니다. 이름은 뇌의 신경세포에서 빌렸지만, 여기서 뉴런은 곱하고 더하는 계산일 뿐입니다.

더 배우기 가중치·파라미터 자세히 보기

최적화

원문 표기 · Optimization

손실이 가장 작아지도록 모델의 숫자를 고쳐 나가는 일

머신러닝에서 최적화는 모델의 가중치를 조금씩 바꿔 손실 — 예측이 얼마나 틀렸는지 — 을 줄이는 일입니다. 보통 손실이 줄어드는 방향을 계산해 그쪽으로 조금 옮기는 경사 하강법을 씁니다. 최적화는 학습 데이터에 맞는 숫자를 찾을 뿐이라, 새 데이터에서 맞는다는 보장과는 다릅니다.

가중치·파라미터 자세히 보기

출력 형식

원문 표기 · Output format

답을 목록·표·JSON·파일 중 어떤 꼴로 낼지 정한 것

출력 형식은 프롬프트에서 답의 모양을 정하는 부분입니다 — 글머리표 목록, 열을 정한 표, 키를 정한 JSON, 또는 파일입니다. 이것을 적어 두면 답을 다시 고쳐 쓸 일이 줄고, 프로그램이 결과를 바로 읽을 수 있습니다. 역할·목표·배경·예시·제약과 함께 좋은 프롬프트의 여섯 부분 가운데 하나입니다.

더 배우기

양성

원문 표기 · Positive class

예/아니요 분류에서 모델이 찾으려는 "예" 쪽

답이 두 가지인 분류에서 양성은 찾으려는 쪽입니다 — 스팸 거르기에서는 스팸, 건강 검진에서는 병이 있음입니다. 양성은 좋다는 뜻이 아니라 "찾던 것이 나왔다"는 뜻일 뿐입니다. 정밀도·재현율·혼동 행렬은 모두 이 양성을 기준으로 셉니다.

scikit-learn

고전적인 머신러닝을 쉽게 쓰게 해 주는 파이썬 라이브러리

scikit-learn 은 분류·회귀·군집화·모델 평가 같은 고전적인 머신러닝을 위한 무료 파이썬 라이브러리입니다. 모든 모델을 같은 방식 — fit() 으로 배우고 predict() 로 답하기 — 으로 써서 처음 배우는 사람이 많이 씁니다. 큰 신경망을 학습시키는 용도는 아니고, 그런 일에는 PyTorch 를 씁니다.

토큰 ID

원문 표기 · Token ID

토크나이저가 어휘 목록에서 토큰마다 붙인 번호

토크나이저는 아는 토큰을 모두 번호 매겨 둔 어휘 목록을 가지고 있습니다. 토큰 ID 는 그 목록에서 토큰의 번호입니다. 모델은 글자를 보지 않고, 글을 토큰 ID 목록으로 바꿔 그 숫자로 계산한 뒤, 나온 ID 를 다시 글로 바꿉니다. 같은 낱말도 모델마다 ID 가 다를 수 있습니다.

GPT 자세히 보기

ChatGPT

OpenAI 가 만든 대화형 AI 서비스

ChatGPT 는 OpenAI 가 만들어 2022년 11월에 공개한 대화형 AI 서비스입니다. 질문을 입력하면 거대 언어 모델이 답을 쓰고, 첨부한 파일과 그림을 읽거나 기능을 켜 두면 웹 검색도 합니다. 답은 초안입니다 — 유창한 글도 틀릴 수 있으니 사실과 숫자는 직접 확인합니다.

더 배우기 GPT 자세히 보기

Gemini

Google 의 AI 모델 이름이자 그 모델로 만든 대화 앱

Gemini 는 Google 의 거대 언어 모델 이름이자, 그 모델로 만든 대화 앱의 이름입니다. 글뿐 아니라 그림·소리·영상도 받는 멀티모달 모델입니다. Google 의 코딩 에이전트인 Antigravity CLI 와 예전 Gemini CLI 도 Gemini 모델로 돕니다.

Grok

xAI 의 AI 모델 이름이자 그 모델로 만든 대화 앱

Grok 은 xAI 가 만든 거대 언어 모델의 이름이자, 그 모델로 만든 대화 앱(웹·휴대폰·X 안)의 이름입니다. Grok Build(Grok CLI 라고도 부릅니다)는 다른 것으로, 터미널에서 도는 xAI 의 코딩 에이전트입니다. 짧게 말해 Grok 은 모델, Grok CLI 는 그 모델을 쓰는 도구입니다.

SKILL.md

에이전트 스킬의 이름·설명·단계를 적는 파일

에이전트 스킬은 모두 SKILL.md 라는 파일이 든 폴더입니다. 맨 위 --- 줄 사이에 스킬 이름과, 언제 쓰는지 알려 주는 설명을 적고, 그 아래에 할 일을 보통 마크다운으로 적습니다. 에이전트는 처음에 이름과 설명만 읽고, 일이 필요할 때 나머지를 읽습니다. 같은 폴더에 스크립트와 참고 파일을 함께 둘 수 있습니다.

더 배우기

Gemini CLI

Google 이 먼저 내놓은 터미널용 오픈소스 AI 에이전트

Gemini CLI 는 터미널에서 도는 Google 의 오픈소스 AI 에이전트로, Gemini 모델을 씁니다. 클로드 코드·Codex 처럼 파일을 읽고 명령을 실행하고 지시 파일을 따르며, 에이전트 스킬도 지원합니다. SONUB AI 강좌는 지금 Google 의 새 도구인 Antigravity CLI(agy)를 가르칩니다. Google 이 Gemini CLI 사용자를 위한 이전 안내서를 냈으니, 옛 안내를 따르기 전에 공식 페이지를 확인합니다.

리소스(Resources)

MCP 서버가 앱이 읽도록 내놓는 데이터

MCP 서버는 세 가지를 내놓을 수 있습니다 — 모델이 부르는 도구, 사용자가 고르는 프롬프트, 그리고 앱이 읽을 수 있는 데이터인 리소스입니다. 리소스는 파일·기록·메모 목록 같은 것이고, notes://shopping 처럼 저마다 주소(URI)가 있습니다. 도구는 일을 하고, 리소스는 내용만 건넵니다.

더 배우기

Claude

Anthropic 이 만든 AI 모델과 대화 서비스

Claude 는 Anthropic 이 만든 거대 언어 모델의 이름이자, 웹·데스크톱·휴대폰에서 쓰는 대화 앱의 이름입니다. 클로드 코드는 다른 것입니다 — Claude 모델을 써서 내 파일로 일하는 하네스 프로그램입니다. 짧게 말해 Claude 는 모델이고, 클로드 코드는 그 모델을 감싼 도구입니다.

GitHub Copilot

코드 쓰기를 돕는 GitHub 의 AI 도우미

GitHub Copilot 은 GitHub 의 AI 코딩 도우미입니다. 코드 편집기에서는 입력하는 동안 다음 줄을 제안하고 채팅 창에서 질문에 답합니다. 에이전트 모드와 Copilot CLI 에서는 파일을 고치고 명령을 실행하기도 하며, 에이전트 스킬도 읽습니다. 제안은 추측이므로 직접 읽고 테스트합니다.

OpenCode

터미널에서 쓰는 오픈소스 AI 코딩 에이전트

OpenCode 는 터미널에서 도는 오픈소스 코딩 에이전트입니다. 클로드 코드·Codex 처럼 프로젝트를 읽고 파일을 고치고 명령을 실행하지만, 여러 회사의 모델을 골라 연결할 수 있습니다. 에이전트 스킬도 읽습니다.

더 배우기

Grok CLI

xAI 의 터미널용 AI 코딩 에이전트(Grok Build)

Grok 은 xAI 가 만든 AI 모델의 이름입니다. Grok Build(Grok CLI 라고도 부릅니다)는 클로드 코드·Codex 처럼 터미널에서 도는 xAI 의 코딩 에이전트입니다. 공식 안내의 설치 스크립트나 전역 npm 패키지로 설치하고, 버전 명령으로 설치를 확인합니다.

Orca

여러 AI 코딩 에이전트를 나란히 돌리는 오픈소스 데스크톱 앱

Orca 는 클로드 코드·Codex·OpenCode 같은 AI 코딩 에이전트 여러 개를 한꺼번에 돌리는 오픈소스 데스크톱 앱입니다. 에이전트마다 자기 Git 워크트리에서 일해 변경이 서로 부딪치지 않고, 결과를 한 창에서 비교하고 검토합니다. 각 에이전트의 구독은 내 것을 씁니다.

알파고

원문 표기 · AlphaGo

구글 딥마인드가 만든 바둑 인공지능

알파고(AlphaGo)는 구글 딥마인드가 만든 바둑 프로그램입니다. 2016년 3월 세계 최정상급 기사인 이세돌 9단을 4승 1패로 이겨, 많은 전문가가 10년은 더 걸린다고 본 일을 해냈습니다. 딥러닝 신경망과 수 읽기 탐색을 함께 쓰고, 스스로와 대국하며 실력을 키웠습니다(강화 학습).

더 배우기

이진 분류

원문 표기 · Binary classification

답이 딱 두 가지 중 하나인 분류

이진 분류는 답이 두 가지뿐인 분류 문제입니다 — 스팸/정상, 사기/정상, 병 있음/없음. 모델은 보통 0과 1 사이의 점수를 내고, 기준값으로 그 점수를 "예"나 "아니요"로 바꿉니다. 찾으려는 쪽을 양성이라고 부릅니다.

더 배우기

다중 분류

원문 표기 · Multiclass classification

답이 셋 이상 가운데 하나인 분류

다중 분류에서는 입력마다 셋 이상의 범주 가운데 딱 하나를 고릅니다 — 고양이·강아지·토끼, 숫자 0~9 같은 것입니다. 모델이 범주마다 점수를 내면 소프트맥스가 확률로 바꾸고, 가장 높은 것이 답이 됩니다. 사진 한 장에 이름표가 여러 개 붙을 수 있다면 다른 문제(다중 레이블)입니다.

더 배우기

생각의 사슬

원문 표기 · Chain-of-thought

모델에게 풀이 과정을 단계별로 적게 하는 프롬프트 기법

생각의 사슬(Chain-of-Thought, CoT)은 모델에게 마지막 답 전에 풀이 단계를 적게 하는 프롬프트 기법입니다 — 예를 들어 "단계별로 풀어 줘"라고 덧붙입니다. 언어모델은 토큰을 하나씩 만들기 때문에, 먼저 적은 단계가 다음 계산의 문맥이 되어 수학·논리 문제의 답이 좋아지는 경우가 많습니다. 적힌 단계는 글일 뿐, 답이 실제로 어떻게 계산됐는지 보장하는 기록은 아닙니다.

연쇄 법칙

원문 표기 · Chain rule

함수 안의 함수의 기울기는 기울기끼리 곱해 구한다는 미분 규칙

연쇄 법칙은 합성 함수의 기울기(미분)가 바깥 함수의 기울기와 안쪽 함수의 기울기를 곱한 값이라는 규칙입니다. 신경망은 함수를 길게 이어 붙인 것이라, 역전파는 출력에서 첫 층까지 거꾸로 가며 연쇄 법칙을 되풀이해 가중치 하나하나가 손실에 주는 영향을 구합니다. 작은 기울기를 여러 번 곱하면 기울기가 사라지고, 큰 기울기를 여러 번 곱하면 폭발하는 까닭도 여기에 있습니다.

가중치·파라미터 자세히 보기

합성 함수

원문 표기 · Composite function

한 함수의 결과를 다른 함수에 넣어 만든 함수

합성 함수는 함수 안에 함수를 넣은 것입니다 — 먼저 g(x) 를 계산하고 그 결과를 f 에 넣으며, f(g(x)) 로 씁니다. 신경망은 커다란 합성 함수로, 층마다 앞 층의 결과를 받아 계산합니다. 이런 함수의 기울기는 연쇄 법칙으로 구합니다.

군집화

원문 표기 · Clustering

정답 없이 비슷한 데이터끼리 무리 짓기

군집화(클러스터링)는 아무도 이름표를 붙이지 않은 데이터를 비슷한 것끼리 무리 짓는 일입니다 — 예를 들어 손님을 사는 물건과 횟수에 따라 몇 무리로 나눕니다. 비지도 학습의 한 가지로, 알고리즘이 무리를 찾고 그 무리가 무슨 뜻인지는 사람이 정합니다. 무리 개수를 정해 주는 k-평균(k-means)이 흔한 방법입니다.

더 배우기

혼동 행렬

원문 표기 · Confusion matrix

맞힘과 틀림을 종류별로 나누어 센 표

혼동 행렬은 분류기의 답과 실제 정답을 맞대어 센 표입니다. 예/아니요 문제라면 참 양성·거짓 양성·거짓 음성·참 음성 네 칸이 있습니다. 정확도·정밀도·재현율은 모두 이 네 칸의 수로 계산하므로, 이 표를 보면 모델이 얼마나 틀리는지뿐 아니라 어느 쪽으로 틀리는지도 알 수 있습니다.

거짓 양성

원문 표기 · False positive

모델은 "예"라고 했지만 실제 답은 "아니요"인 경우

거짓 양성은 잘못 울린 경보입니다 — 없는 것을 있다고 답한 경우로, 보통 메일이 스팸함에 가거나 건강한 사람이 병이 있다고 나오는 일입니다. 거짓 양성이 많으면 정밀도가 낮습니다. 이것이 거짓 음성보다 나쁜지는 그 일에서 각 실수가 얼마나 비싼지에 달렸습니다.

거짓 음성

원문 표기 · False negative

모델은 "아니요"라고 했지만 실제 답은 "예"인 경우

거짓 음성은 놓친 경우입니다 — 있었는데 모델이 잡아내지 못한 것으로, 스팸이 받은편지함에 들어오거나 검사가 병을 찾지 못하는 일입니다. 거짓 음성이 많으면 재현율이 낮습니다. 암 검진에서는 놓치는 것이 잘못 울린 경보보다 훨씬 비쌀 수 있어 재현율을 더 중요하게 봅니다.

재현율

원문 표기 · Recall

실제 정답 가운데 모델이 찾아낸 비율

재현율은 실제 양성 가운데 모델이 제대로 찾아낸 비율로, 참 양성 ÷ (참 양성 + 거짓 음성) 입니다. 재현율이 낮으면 놓치는 것이 많아 스팸이 받은편지함으로 많이 들어옵니다. 재현율을 올리면 보통 정밀도가 내려갑니다 — 더 많이 잡으려면 잘못 울리는 경보도 늘기 때문입니다.

정밀도

원문 표기 · Precision

모델이 "예"라고 한 것 가운데 정말 맞은 비율

정밀도는 모델이 "예"라고 답한 것 가운데 실제로 맞은 비율로, 참 양성 ÷ (참 양성 + 거짓 양성) 입니다. 정밀도가 낮으면 잘못 울리는 경보가 많아 멀쩡한 메일이 스팸함으로 갑니다. 기준을 엄격하게 하면 정밀도는 오르지만 보통 재현율이 내려갑니다. (컴퓨터에서 숫자 하나를 몇 비트로 적는지를 뜻하는 "정밀도"와는 다른 말입니다.)

F1 점수

원문 표기 · F1 score

정밀도와 재현율을 하나로 합친 점수

F1 점수는 정밀도와 재현율의 조화 평균으로, 2 × P × R ÷ (P + R) 입니다. 둘이 모두 높아야 높게 나오고, 하나만 좋고 다른 하나가 나쁘면 낮게 나옵니다. 그래서 범주의 수가 크게 다를 때 — 정확도만 보면 좋아 보여도 양성을 거의 놓치는 경우 — 에 쓸모가 있습니다.

조화 평균

원문 표기 · Harmonic mean

작은 값 쪽으로 크게 끌려가는 평균

두 수 a 와 b 의 조화 평균은 2ab ÷ (a + b) 입니다. 보통 평균과 달리 작은 쪽으로 강하게 끌려가서, 한 값이 높아도 다른 값이 낮으면 낮게 나옵니다. F1 점수가 정밀도와 재현율을 합칠 때 이 평균을 씁니다.

코사인 유사도

원문 표기 · Cosine similarity

두 벡터가 얼마나 같은 방향을 가리키는지 −1~1 로 잰 값

코사인 유사도는 길이는 무시하고 두 벡터 사이의 각도를 잽니다. 1 이면 같은 방향, 0 이면 상관없음(직각), −1 이면 정반대입니다. 임베딩 검색은 이것으로 질문과 뜻의 벡터가 같은 쪽을 가리키는 글을 찾습니다. 벡터가 가깝다는 것은 주제가 비슷하다는 뜻이지, 그 문장이 사실이라는 뜻은 아닙니다.

데이터 편향

원문 표기 · Data bias

학습 데이터가 한쪽으로 치우쳐 모델이 불공정해지는 문제

데이터 편향은 학습 데이터가 모델이 실제로 만날 사람이나 경우를 고르게 담지 못할 때 생깁니다. 모델은 그 치우침까지 배웁니다 — 예를 들어 한 집단의 사진이 적게 들어간 얼굴 인식 모델은 그 집단을 더 자주 틀립니다. 집단마다 결과를 따로 확인하고, 모델뿐 아니라 데이터를 고칩니다.

더 배우기

딥 리서치

원문 표기 · Deep research

AI 가 여러 자료를 몇 분 동안 찾아 읽고 보고서를 써 주는 기능

딥 리서치(깊이 조사)는 ChatGPT·Gemini·Claude 같은 AI 대화 서비스의 기능으로, AI 가 몇 분 동안 웹 페이지를 여럿 찾아 읽은 뒤 출처 링크가 달린 보고서를 씁니다. 찾는 시간을 크게 줄여 주지만, 자료를 잘못 읽거나 잘못 옮길 수 있으니 중요한 주장은 링크를 열어 직접 확인합니다.

더 배우기 GPT 자세히 보기

딥페이크

원문 표기 · Deepfake

AI 로 진짜처럼 만든 가짜 영상·사진·목소리

딥페이크는 딥러닝으로 실제 사람처럼 보이거나 들리게 만든 가짜 영상·사진·목소리입니다. 같은 기술을 영화나 더빙에 정당하게 쓰기도 하지만, 남이 하지 않은 말을 지어내거나 사기를 치거나 실제 사람의 성적인 이미지를 만드는 데 쓰면 범죄가 될 수 있습니다. 충격적인 영상은 믿기 전에 출처부터 확인합니다.

더 배우기

차원

원문 표기 · Dimension

벡터에 든 숫자의 개수

벡터의 차원은 그 안에 든 숫자의 개수로, [1.2, 0.5, 3.0] 은 3차원 벡터입니다. 숫자 하나하나를 축 하나의 위치로 보면 숫자 두 개는 평면 지도의 점, 세 개는 공간의 점이 됩니다. AI 의 임베딩은 수백~수천 차원인 경우가 많아 그림으로 그릴 수는 없지만 계산은 똑같이 합니다.

더 배우기

에포크

원문 표기 · Epoch

학습 데이터 전체를 처음부터 끝까지 한 번 훑는 한 바퀴

에포크는 모델이 학습 데이터의 모든 예를 한 번씩 다 본 한 바퀴입니다. 학습은 보통 여러 에포크를 돕니다. 에포크마다 검증 데이터의 손실을 확인하고, 학습 손실은 내려가는데 검증 손실이 더 나아지지 않거나 오르면 에포크를 더 돌려도 모델이 외우기만 합니다.

더 배우기

인공지능법

원문 표기 · EU AI Act

위험 수준에 따라 AI 를 규제하는 유럽연합의 법

유럽연합(EU)의 인공지능법(AI Act)은 2024년 8월 1일에 발효된, 이런 종류로는 처음인 포괄적 인공지능 법입니다. AI 를 위험 수준에 따라 나눠, 어떤 쓰임은 금지하고, 채용·신용 평가 같은 고위험 쓰임에는 엄격한 의무를 지우며, 그 밖에는 AI 가 만든 내용임을 알리는 것 같은 투명성 의무를 둡니다. 규정은 몇 해에 걸쳐 단계적으로 적용됩니다.

더 배우기

전문가 시스템

원문 표기 · Expert system

사람 전문가가 적은 규칙으로 판단하던 초기 인공지능

전문가 시스템은 1970~80년대에 널리 쓰인 초기 인공지능으로, 사람 전문가가 "만약 ~이면 ~하라" 같은 규칙을 잔뜩 적어 넣어 만듭니다 — 예를 들어 병을 진단하는 규칙입니다. 어떤 규칙을 썼는지 설명할 수는 있었지만, 아무도 규칙을 적지 않은 경우에는 무너졌고 수천 개의 규칙을 최신으로 유지하기도 어려웠습니다. 데이터에서 규칙을 배우는 머신러닝이 대부분 그 자리를 이어받았습니다.

더 배우기

얼굴 인식

원문 표기 · Face recognition

사진 속 얼굴이 누구인지 알아보는 AI 기술

얼굴 인식은 사진에서 얼굴을 찾아 알고 있는 사람과 맞춰 보는 AI 기술로, 휴대폰이 얼굴을 보고 잠금을 푸는 것이 그 예입니다. 얼굴을 벡터로 바꿔 벡터끼리 비교하는 방식으로 합니다. 학습 사진에 적게 들어간 집단에서는 더 자주 틀릴 수 있고, 공공장소의 사람에게 쓰면 개인정보와 법의 문제가 생깁니다.

더 배우기

생성형 인공지능

원문 표기 · Generative AI

글·그림·소리·영상을 새로 만들어 내는 AI

생성형 인공지능은 분류나 예측만 하는 대신 글·그림·음악·목소리·영상·코드 같은 새 내용을 만들어 내는 AI 입니다. 대화형 도우미와 이미지 생성기가 그 예입니다. 결과는 학습 데이터의 패턴으로 만든 것이라, 자신 있게 들려도 틀릴 수 있습니다(환각).

지식 증류

원문 표기 · Knowledge distillation

큰 모델을 흉내 내도록 작은 모델을 학습시키는 방법

지식 증류는 작은 "학생" 모델이 정답만이 아니라 큰 "선생" 모델의 출력을 따라 하도록 학습시키는 방법입니다. 학생은 정보가 더 많은 선생의 확률 점수 전체를 보고 배우므로, 훨씬 작고 빠르면서도 선생에 가까운 성능을 내는 경우가 많습니다. 정확도를 조금 내주고 속도와 비용을 얻는 설계 선택입니다.

레이블

원문 표기 · Label

학습 데이터마다 붙인 정답 이름표

레이블(라벨)은 학습 데이터 하나하나에 붙인 정답 이름표입니다 — 고양이 사진에는 "고양이", 스팸 메일에는 "스팸", 집 기록에는 가격. 지도 학습에는 레이블이 꼭 필요하고, 그 품질이 모델의 한계가 됩니다 — 틀리거나 들쭉날쭉한 레이블은 틀린 답을 가르칩니다. 레이블 붙이기는 사람이 손으로 하는 느린 일인 경우가 많습니다.

더 배우기

지도 학습

원문 표기 · Supervised learning

정답 이름표가 붙은 예로 배우는 학습

지도 학습에서는 모델이 정답(레이블)과 짝지은 예로 배웁니다 — "고양이"·"강아지"가 적힌 사진, 가격이 적힌 집 기록 같은 것입니다. 정답에 맞도록 스스로를 고친 뒤 새 예의 답을 예측합니다. 분류와 회귀가 대표적인 두 갈래입니다. 레이블이 붙은 데이터가 많이 필요하고, 보통 그것이 가장 비싼 부분입니다.

더 배우기

비지도 학습

원문 표기 · Unsupervised learning

정답 없이 데이터 속 구조를 스스로 찾는 학습

비지도 학습은 레이블이 없는 데이터에서 구조를 스스로 찾습니다 — 비슷한 것끼리의 무리(군집화), 튀는 데이터, 데이터를 더 간단히 나타내는 방법 같은 것입니다. 레이블을 붙이기 너무 비쌀 때 쓸모가 있습니다. 찾아낸 무리에는 이름이 없어서, 무슨 뜻인지는 사람이 정합니다.

더 배우기

강화 학습

원문 표기 · Reinforcement learning

행동해 보고 받은 보상으로 좋은 행동을 익히는 학습

강화 학습에서는 에이전트가 환경 속에서 행동해 보고, 그 결과로 보상이나 벌점을 받습니다. 여러 번 해 보며 길게 봐서 보상이 가장 큰 행동을 익힙니다. 알파고가 스스로와 대국하며 이렇게 실력을 키웠고, RLHF 는 이것으로 대화 모델의 답하는 방식을 다듬습니다. 보상을 잘못 설계하면 엉뚱한 행동을 배웁니다.

더 배우기

보상 모델

원문 표기 · Reward model

두 답 가운데 사람이 더 좋아할 쪽에 점수를 매기는 모델

보상 모델은 사람이 두 답 가운데 더 나은 쪽을 고른 비교 자료로 학습합니다. 그래서 어떤 답이든 점수를 매길 수 있게 되고, 강화 학습에서 사람의 판단을 대신합니다. 허점이 있으면 문제가 됩니다 — 언어모델이 정말 나아지는 대신 길고 듣기 좋은 답처럼 보상 모델만 기쁘게 하는 법을 배울 수 있습니다.

RLHF

사람의 선택을 보상으로 삼아 모델을 다듬는 학습

RLHF(Reinforcement Learning from Human Feedback)는 사람의 선호로 언어모델을 다듬는 방법입니다. 보통 ① 좋은 예시 답으로 모델을 파인튜닝하고, ② 사람이 두 답을 비교해 고른 자료로 보상 모델을 만든 뒤, ③ 보상 모델이 높게 매기는 답을 쓰도록 강화 학습을 시킵니다. 대화형 도우미가 지시를 따르고 공손하게 답하는 큰 까닭이 이것입니다.

모델 카드

원문 표기 · Model card

모델의 용도·데이터·한계를 정리한 짧은 문서

모델 카드는 모델과 함께 공개하는 문서입니다. 모델을 어디에 쓰고 어디에 쓰면 안 되는지, 어떤 데이터로 학습했는지, 어떻게 평가했는지, 알려진 한계와 편향, 라이선스를 적습니다. 다른 사람이 그 모델이 자기 일에 맞는지 판단하게 돕습니다. Hugging Face 의 모델에는 보통 모델 카드가 붙어 있습니다.

n-그램

원문 표기 · n-gram

앞 n−1개 낱말을 세어 다음 낱말을 맞히는 모델

n-그램 모델은 글에서 앞 n−1개 낱말 다음에 어떤 낱말이 몇 번 왔는지 세고, 그 횟수를 확률로 바꿉니다. 바이그램(n = 2)은 앞 낱말 하나, 트라이그램은 둘을 봅니다. 빠르고 이해하기 쉽지만 그보다 앞은 쓰지 못하고, 본 적 없는 낱말 이어짐에는 확률을 주지 못합니다 — 신경망 언어모델이 넘어선 한계입니다.

더 배우기

수치 미분

원문 표기 · Numerical differentiation

입력을 아주 조금 바꿔 보며 기울기를 어림하는 방법

수치 미분은 입력에 아주 작은 값 h 를 더해 출력이 얼마나 바뀌는지 보고 기울기를 어림합니다: (f(x + h) − f(x)) ÷ h. 간단해서 검산에 쓸모 있지만 근삿값일 뿐이고, 파라미터마다 계산을 한 번씩 더 해야 해서 가중치가 수백만 개인 모델에는 너무 느립니다. 그래서 딥러닝 프레임워크는 자동 미분을 씁니다.

가중치·파라미터 자세히 보기

온디바이스 AI

원문 표기 · On-device AI

서버 없이 휴대폰·노트북 안에서 바로 돌리는 AI

온디바이스 AI 는 데이터를 서버로 보내지 않고 내 휴대폰·노트북 같은 기기 안에서 모델을 돌립니다. 데이터가 밖으로 나가지 않고, 인터넷 없이도 되며, 네트워크 지연 없이 답합니다. 대신 메모리·속도·배터리가 모자라서 모델이 작고 양자화된 경우가 많아, 가장 큰 클라우드 모델만큼 하지는 못합니다.

더 배우기

퍼플렉서티

원문 표기 · Perplexity

언어모델이 다음 토큰을 얼마나 헷갈려 하는지 나타내는 값

퍼플렉서티는 언어모델이 글을 얼마나 잘 예측하는지 재는 값으로, 낮을수록 좋습니다. 값이 10 이면 모델이 걸음마다 평균적으로 토큰 10개 가운데 고르게 하나를 고르는 것만큼 헷갈린다는 뜻입니다. 손실에서 바로 나오는 값입니다(평균 손실을 e 의 지수로 올린 값). 낮다는 것은 예측을 잘한다는 뜻이지, 글이 참이거나 쓸모 있다는 뜻은 아닙니다.

위치 인코딩

원문 표기 · Positional encoding

토큰마다 몇 번째인지 알려 주는 숫자를 더하는 방법

어텐션만으로는 입력을 토큰 꾸러미로 볼 뿐 순서를 알 수 없습니다. 위치 인코딩은 첫째·둘째·셋째 같은 자리를 숫자로 만들어 토큰의 임베딩에 더해 이 문제를 풉니다. 이것이 없으면 트랜스포머에게 "개가 사람을 문다"와 "사람이 개를 문다"가 똑같아 보입니다.

오차

원문 표기 · Prediction error

예측값과 정답의 차이

오차는 예측값에서 정답을 뺀 값입니다. 학습에서는 보통 오차를 제곱해 평균을 내어(평균 제곱 오차) 손실로 삼습니다 — 그래서 크게 빗나간 것이 훨씬 무겁게 세어지고, 플러스와 마이너스 오차가 서로 지워지지 않습니다. 모델은 그 평균이 작아지도록 가중치를 고칩니다.

더 배우기 가중치·파라미터 자세히 보기

가지치기

원문 표기 · Pruning

학습된 모델에서 덜 중요한 가중치를 잘라 가볍게 하는 방법

가지치기(프루닝)는 학습된 모델의 출력에 영향이 적은 가중치나 연결을 잘라 모델을 작게, 때로는 빠르게 만드는 방법입니다. 이름은 나무에서 필요 없는 가지를 치는 원예에서 왔습니다. 너무 많이 자르면 정확도가 떨어져서 보통 짧게 다시 학습시킵니다. 양자화·지식 증류와 함께 모델을 줄이는 방법의 하나입니다.

가중치·파라미터 자세히 보기

재현성

원문 표기 · Reproducibility

같은 데이터·코드로 다시 돌려 같은 결과를 얻을 수 있는 성질

실험은 다른 사람이 같은 데이터·코드·설정으로 다시 돌려 같은 결과를 얻을 수 있을 때 재현성이 있습니다. 그러려면 데이터 버전, 코드 버전, 라이브러리와 파이썬 버전, 난수 시드, 실행한 명령을 그대로 적어 둡니다. 그래도 GPU 계산은 실행할 때마다 조금씩 다를 수 있습니다.

규칙 기반 챗봇

원문 표기 · Rule-based chatbot

사람이 정해 둔 규칙대로만 답하는 챗봇

규칙 기반 챗봇은 입력한 말을 사람이 적어 둔 규칙 — 핵심 낱말이나 패턴 — 과 맞춰 보고 정해 둔 답을 돌려줍니다. 예측하기 쉽고 값싸며, if 문 몇 개로도 만들 수 있습니다. 하지만 새 답을 만들어 내는 LLM 챗봇과 달리 규칙 밖의 말은 다루지 못합니다.

더 배우기

음성 모델

원문 표기 · Speech model

글을 말소리로, 말소리를 글로 바꾸는 AI 모델

음성 모델은 말소리를 다루는 AI 모델로, 글을 목소리로 바꾸거나(음성 합성) 목소리를 글로 바꿉니다(음성 인식). 작은 음성 모델은 내 기기에서 돌 수 있습니다 — SONUB 의 읽어 주기 목소리도 음성 모델을 한 번 내려받으면 내 기기에서 글을 소리로 바꾸고, 대화 메시지는 여전히 언어모델 서비스로 갑니다.

더 배우기

전치 행렬

원문 표기 · Transpose

행과 열을 서로 바꾼 행렬

전치 행렬은 행렬의 행과 열을 맞바꾼 것으로, 1행이 1열이 되는 식입니다. m × n 행렬은 n × m 이 되고 Aᵀ 로 적습니다. 행렬 곱 전에 모양을 맞출 때 늘 씁니다 — 예를 들어 어텐션은 쿼리 행렬에 전치한 키 행렬을 곱합니다.

튜링 테스트

원문 표기 · Turing test

기계의 대화가 사람과 구별되지 않는지 가리는 시험

1950년 앨런 튜링은 심사위원이 숨은 사람 하나, 숨은 기계 하나와 글로 대화해서 어느 쪽이 기계인지 확실히 가려내지 못하면 기계가 통과하는 "이미테이션 게임"을 제안했습니다. 이것을 튜링 테스트라고 부릅니다. 통과는 기계가 사람의 대화를 흉내 낼 수 있다는 뜻일 뿐, 이해하거나 느끼거나 의식이 있다는 뜻은 아닙니다.

더 배우기

과소적합

원문 표기 · Underfitting

학습한 데이터조차 잘 맞히지 못하는 상태

과소적합은 모델이 너무 단순하거나 덜 학습해서 규칙을 잡지 못해, 자기 학습 데이터에서도 많이 틀리는 상태입니다. 학습 데이터에 너무 꼭 맞춘 과적합의 반대입니다. 더 큰 모델, 더 나은 특성, 더 긴 학습으로 고칩니다.

더 배우기

XAI

모델이 왜 그런 답을 냈는지 보여 주는 설명 가능한 인공지능

XAI(Explainable AI, 설명 가능한 인공지능)는 모델이 왜 그런 답을 냈는지 — 예를 들어 어떤 낱말이나 픽셀이 가장 중요했는지 — 사람이 볼 수 있게 하는 방법들의 분야입니다. 대출·채용·의료처럼 결정이 사람에게 영향을 주는 곳에서 특히 필요하고, 실수나 불공정한 이유를 찾아 설명하게 해 줍니다. 설명도 근삿값이라 확인이 필요합니다.

더 배우기

Amazon Bedrock

여러 회사의 AI 모델을 하나의 API 로 쓰게 해 주는 AWS 서비스

Amazon Bedrock 은 AWS 의 클라우드 서비스로, 기업이 Anthropic 의 Claude 를 비롯한 여러 회사의 AI 모델을 AWS 의 요금·보안 설정으로 부를 수 있게 합니다. 클로드 코드도 Anthropic 계정 대신 Bedrock 을 거쳐 Claude 를 쓰도록 설정할 수 있지만, 그러면 claude.ai 로그인이 필요한 일부 기능은 쓸 수 없습니다.

승인 정책

원문 표기 · Approval policy

에이전트가 언제 나에게 허락을 물어야 하는지 정하는 Codex 설정

Codex 에서 샌드박스는 에이전트가 기술적으로 할 수 있는 범위(파일 쓰기·네트워크)를, 승인 정책은 언제 멈추고 나에게 물을지를 정합니다. on-request 는 샌드박스 밖이 필요할 때 묻고, never 는 묻지 않아 스크립트나 격리된 컨테이너에 맞습니다. 둘을 함께 정합니다. -a 옵션이나 config.toml 의 approval_policy 로 고릅니다.

더 배우기

workspace-write

작업 폴더 안에서만 고치고 실행하는 Codex 샌드박스 모드

workspace-write 는 Codex 의 샌드박스 모드입니다. 에이전트는 작업 폴더 안에서만 파일을 고치고 명령을 실행하며, 네트워크는 기본으로 꺼져 있고 .git·.codex 같은 폴더는 쓰지 못합니다. Git 저장소에서는 on-request 승인 정책과 함께 이것을 흔히 씁니다. 다른 모드는 read-only(읽기만)와 danger-full-access 입니다.

더 배우기

danger-full-access

샌드박스 없이 무엇이든 하게 하는 Codex 모드

danger-full-access 는 Codex 의 샌드박스를 끕니다 — 에이전트가 내 사용자의 모든 권한으로 어떤 파일이든 읽고 쓰고 네트워크도 씁니다. 명령 하나만 잘못돼도 데이터가 지워지거나 새어 나갈 수 있으니, 버려도 되는 격리된 컨테이너나 가상 머신 안에서만 씁니다.

더 배우기

config.toml

Codex 의 설정 파일 ~/.codex/config.toml

config.toml 은 Codex 가 기본 설정을 두는 파일로, 홈 폴더의 ~/.codex/config.toml 에 있습니다. 매번 붙이던 옵션 — 모델, 생각하는 정도, 승인 정책, 샌드박스 모드, MCP 서버 — 을 여기에 한 번 적어 두면 기본값이 됩니다. TOML 형식이라 키 = 값 줄과 [구역] 제목으로 씁니다.

더 배우기

프로필

원문 표기 · Profile

-p 로 골라 쓰는 이름 붙은 Codex 설정 묶음

Codex 프로필은 한 종류의 일에 맞춘 설정 묶음에 이름을 붙인 것입니다 — 예를 들어 샌드박스를 엄격하게 한 읽기 전용 "review" 프로필입니다. 기본값은 config.toml 에 두고, codex -p <이름> 으로 그 실행에만 프로필의 설정을 씁니다. 같은 옵션을 매번 입력할 일이 줄어듭니다.

더 배우기

codex cloud

Codex 일을 OpenAI 클라우드에서 돌리고 결과를 내 컴퓨터에 적용하는 기능

codex cloud 는 일을 내 컴퓨터가 아니라 OpenAI 의 클라우드 환경에서 도는 Codex 에게 맡깁니다. 내 컴퓨터를 쓰지 않으므로 여러 일을 동시에 맡기고, 끝난 결과 가운데 원하는 것만 고를 수 있습니다. codex apply 는 클라우드 일의 변경을 내 저장소로 가져오고, 다른 diff 처럼 검토합니다.

더 배우기

streamable HTTP

원문 표기 · Streamable HTTP

원격 MCP 서버가 HTTP 로 주고받는 방식

MCP 서버는 크게 두 가지로 연결됩니다. 로컬 서버는 내 컴퓨터에서 돌며 표준 입력·출력(stdio)으로 주고받습니다. 원격 서버는 다른 곳에서 돌며 HTTP 로 주고받는데, 지금의 표준 방식을 streamable HTTP 라고 부릅니다 — 서버가 답을 한꺼번에 보내거나 나눠서 흘려보낼 수 있습니다. 주소(URL)를 주어 더합니다.

더 배우기

교차 검토

원문 표기 · Cross-review

한 에이전트가 끝낸 일을 다른 AI·사람이 확인하게 하기

교차 검토는 한 에이전트가 일하고 다른 쪽 — codex review 같은 다른 AI, 서브 에이전트, 사람 — 이 그것을 확인하는 것입니다. 놓치는 곳이 다른 두 번째 확인자가, 첫 에이전트가 되풀이하는 실수나 "다 끝났다"는 주장을 잡아냅니다. 에이전트로 일할 때의 습관이지, 교차 검증 같은 통계 방법이 아닙니다.

더 배우기

미리 학습된 가중치

원문 표기 · Pretrained weights

다른 사람이 이미 학습해 둔 모델의 숫자

미리 학습된 가중치는 누군가 이미 학습시킨 모델의 숫자를 내려받을 수 있는 파일로 공개한 것입니다. 이것에서 시작하면 처음부터 학습하는 큰 비용을 아끼고, 파인튜닝으로 내 일에 맞출 수 있습니다. SONUB XSLM 과정은 일부러 이것을 쓰지 않습니다 — 코드를 직접 쓰고 숫자를 모두 직접 학습시켜, 그 숫자가 어디서 오는지 보게 합니다.

더 배우기 가중치·파라미터 자세히 보기

점진적 공개

원문 표기 · Progressive disclosure

처음엔 조금만, 필요할 때 더 읽는 방식

에이전트는 스킬을 점진적 공개 방식으로 세 단계에 걸쳐 읽습니다 — ① 처음에는 스킬마다 이름과 설명만, ② 일이 맞으면 SKILL.md 전체를, ③ 필요할 때만 폴더 속 스크립트와 참고 파일을 읽습니다. 그래서 스킬을 많이 설치해도 컨텍스트 창이 차지 않습니다.

더 배우기

리서치 미리보기

원문 표기 · Research preview

완성 전에 먼저 써 보도록 연 기능의 초기 단계

리서치 미리보기는 새 기능을 다 만들기 전에 사람들이 써 보고 의견을 보내도록 먼저 연 단계입니다. 나중에 바뀌거나 제한이 있거나 없어질 수 있어서, 아직 중요한 일에는 기대지 않습니다. Anthropic 은 클로드 코드의 채널 같은 기능에 이 표시를 붙입니다.

Cursor

VS Code 를 바탕으로 만든 AI 코드 편집기

Cursor 는 AI 가 들어 있는 코드 편집기로, Anysphere 라는 회사가 VS Code 를 바탕으로 만들어 화면과 확장이 낯익습니다. 입력하는 동안 코드를 제안하고, 프로젝트에 대한 질문에 답하며, 여러 파일을 한꺼번에 고치는 에이전트 모드가 있습니다. 에이전트 스킬과 AGENTS.md 도 읽습니다. (글자 입력 위치를 가리키는 커서와는 다른 말입니다.)

더 배우기

Goose

Block 이 처음 공개한 오픈소스 AI 에이전트

Goose 는 결제 회사 Block 이 처음 공개한 오픈소스 AI 에이전트로, 내 컴퓨터에서 데스크톱 앱이나 터미널로 돕니다. 여러 회사의 모델을 골라 쓰고 MCP 로 도구에 연결합니다. 에이전트 스킬도 읽습니다.

더 배우기

Kiro

명세를 먼저 쓰고 만드는 AWS 의 AI 코딩 편집기

Kiro 는 AWS(Amazon Web Services)가 만든 AI 코딩 편집기입니다. 대화와 코드를 고치는 에이전트 말고도, 에이전트가 만들기 전에 요구 사항·설계·할 일 목록을 담은 명세(spec)를 먼저 쓰도록 이끕니다. 에이전트 스킬도 읽습니다.

더 배우기

Junie

JetBrains 의 AI 코딩 에이전트

Junie 는 IntelliJ IDEA·PyCharm·PhpStorm 같은 코드 편집기를 만드는 JetBrains 의 AI 코딩 에이전트입니다. 그 편집기 안에서 일을 계획하고, 파일을 고치고, 테스트를 돌립니다. 에이전트 스킬도 읽습니다.

더 배우기

Kimi

Moonshot AI 의 AI 모델 이름(터미널 코딩 도구도 있음)

Kimi 는 중국 회사 Moonshot AI 가 만든 AI 모델과 대화 앱의 이름입니다. 일부 Kimi 모델은 가중치까지 공개되어 있습니다. Moonshot AI 는 명령줄 코딩 에이전트도 내놓아, 터미널에서 돌릴 수 있는 AI 도구 목록에 Kimi 가 함께 나옵니다.

더 배우기 가중치·파라미터 자세히 보기

Amp

Sourcegraph 에서 시작한 AI 코딩 에이전트

Amp 는 코드 검색 회사 Sourcegraph 에서 시작한 AI 코딩 에이전트입니다. 터미널과 코드 편집기에서 돌며, 클로드 코드·Codex 처럼 프로젝트를 읽고 파일을 고치고 명령을 실행합니다. 에이전트 스킬도 읽습니다.

더 배우기

OpenHands

소프트웨어 개발용 오픈소스 AI 에이전트

OpenHands(예전 이름 OpenDevin)는 소프트웨어 개발 AI 에이전트를 위한 오픈소스 플랫폼입니다. 에이전트가 샌드박스 안에서 코드를 쓰고, 명령을 실행하고, 웹을 둘러봅니다. 내 컴퓨터나 서버에 직접 설치해 쓸 수 있습니다. 에이전트 스킬도 읽습니다.

더 배우기

Roo Code

VS Code 에 넣는 오픈소스 AI 코딩 에이전트 확장

Roo Code 는 VS Code 에 AI 코딩 에이전트를 더하는 오픈소스 확장입니다. 내가 승인하면 파일을 읽고 고치고 터미널 명령을 실행하며, 어느 회사의 모델을 쓸지 내가 고릅니다. 에이전트 스킬도 읽습니다.

더 배우기

Laravel Boost

AI 에이전트가 Laravel 프로젝트를 잘 다루게 돕는 패키지

Laravel Boost 는 Laravel 팀이 AI 코딩 에이전트를 위해 만든 공식 패키지입니다. Laravel 프로젝트에 설치하면 에이전트에게 앱을 살펴보는 도구(라우트·데이터베이스 구조·로그)가 든 MCP 서버, Laravel 에 맞춘 지침, 프로젝트가 쓰는 패키지 버전의 문서 검색을 줍니다. 에이전트 스킬과도 함께 씁니다.

더 배우기

자동 미분

원문 표기 · Automatic differentiation

기울기를 라이브러리가 대신 구해 주는 기능

신경망을 학습하려면 손실에 대한 모든 가중치의 기울기가 필요합니다. 자동 미분은 계산을 하는 동안 단계마다 기록해 두었다가, 그 기록을 거꾸로 따라가며 연쇄 법칙으로 기울기를 정확히 구합니다. PyTorch 에서는 이 기능을 autograd 라고 부르며, 사람은 앞으로 가는 계산만 쓰면 됩니다.

더 배우기 가중치·파라미터 자세히 보기

편향(bias)

원문 표기 · Bias term

뉴런의 합에 더하는 숫자 — 가중치처럼 학습된다

뉴런은 입력마다 가중치를 곱해 더한 뒤 숫자 하나를 더 더하는데, 이것이 편향입니다. 편향 덕분에 입력이 모두 0 이어도 0 이 아닌 답을 낼 수 있고, 뉴런이 얼마나 쉽게 반응할지가 옮겨집니다. 편향도 파라미터라서 학습할 때 가중치와 함께 고쳐집니다.

더 배우기 가중치·파라미터 자세히 보기

정확도(accuracy)

원문 표기 · Accuracy (model)

전체 예 가운데 모델이 맞힌 비율

정확도는 맞게 예측한 수를 전체 예의 수로 나눈 값입니다. 읽기 쉽지만 한쪽 답이 훨씬 많을 때는 속을 수 있습니다 — 메일 100통 중 99통이 정상이면 늘 "정상"이라고만 답하는 모델도 99% 가 나옵니다. 그래서 정밀도·재현율을 함께 봅니다.

Agent Skills

스킬을 SKILL.md 폴더로 묶는 방법을 정한 열린 표준

Agent Skills 는 agentskills.io 에서 관리하는 열린 형식으로, 스킬을 어떻게 담는지 정합니다 — 이름과 설명을 머리말에 적은 SKILL.md 파일이 든 폴더에, 필요하면 스크립트와 참고 파일을 더합니다. 형식이 공통이라 같은 스킬 폴더를 클로드 코드·Codex 등 여러 코딩 에이전트가 함께 씁니다. 표준은 형식만 정할 뿐 스킬이 안전한지는 확인하지 않습니다.

더 배우기

마켓플레이스

원문 표기 · Marketplace

클로드 코드 플러그인을 골라 설치하는 목록

플러그인 마켓플레이스는 스킬·서브 에이전트·훅·MCP 서버를 묶은 플러그인의 목록이 든 저장소입니다. 마켓플레이스를 한 번 추가하면 그 안의 플러그인을 명령 하나로 설치하고, 팀이 같은 도구를 함께 쓰고 업데이트할 수 있습니다. 플러그인은 내 컴퓨터에서 코드를 실행할 수 있으니 믿을 수 있는 마켓플레이스만 추가합니다.

더 배우기

Stop 훅

원문 표기 · Stop hook

에이전트가 멈추려 할 때 실행되는 스크립트

Stop 훅은 에이전트가 자기 차례를 마치고 멈추려 할 때마다 클로드 코드가 실행하는 훅입니다. 스크립트는 일을 확인하고 멈춤을 막아 에이전트를 다시 일하게 할 수 있습니다. Ralph Loop 가 이렇게 만들어졌습니다 — 훅이 멈춤을 붙잡고, 완료 문구가 나오거나 한도에 닿을 때까지 같은 프롬프트를 다시 넣습니다.

더 배우기

Claude Desktop

컴퓨터에 설치하는 Claude 앱

Claude Desktop 은 macOS·Windows 용 Claude 앱입니다. 대화 말고도 내 컴퓨터의 MCP 서버에 연결해 내가 허락한 도구·파일을 Claude 가 쓰게 할 수 있고, 터미널을 열지 않고 클로드 코드·Cowork 일을 맡길 수도 있습니다. MCP 의 말로는 호스트입니다.

더 배우기

Claude Agent SDK

클로드 코드의 하네스로 나만의 에이전트를 만드는 라이브러리

Claude Agent SDK 는 클로드 코드를 움직이는 하네스 — 에이전트 루프·도구·권한·컨텍스트 관리 — 를 Python·TypeScript 라이브러리로 떼어 낸 것입니다. 이것을 쓰면 그 반복을 직접 짜지 않고도 파일을 읽고 명령을 실행하고 도구를 부르는 나만의 에이전트를 만들 수 있습니다. 옛 이름은 Claude Code SDK 입니다.

적응형 추론

원문 표기 · Adaptive thinking

걸음마다 먼저 생각할지, 얼마나 생각할지 모델이 정하는 방식

적응형 추론에서는 모델이 걸음마다 답하기 전에 생각할지, 얼마나 오래 생각할지를 스스로 정합니다 — 쉬운 걸음은 빨리, 어려운 걸음은 길게 생각합니다. 생각 토큰의 수를 정해 주는 대신 노력 수준으로 전체 양을 조절합니다 — 높이면 더 생각하고 깊이 따지며, 낮추면 더 빠르고 쌉니다. 일부 모델만 지원합니다.

생각 토큰

원문 표기 · Thinking tokens

모델이 답을 쓰기 전에 생각하는 데 쓰는 토큰

생각 토큰은 추론 모델이 답을 내기 전에 문제를 풀어 가며 쓰는 토큰입니다. 다른 토큰처럼 요금이 매겨지고 컨텍스트도 차지합니다. 생각 예산은 쓸 수 있는 생각 토큰의 상한입니다. 클로드 코드에서는 노력 수준으로 생각의 양을 조절하고, 예산이 정해진 모델에서는 MAX_THINKING_TOKENS 설정으로 상한을 정합니다.

bypassPermissions

모든 확인을 끄는 클로드 코드 권한 모드

bypassPermissions 는 클로드 코드가 전혀 묻지 않고 파일을 고치고 명령을 실행하는 권한 모드이고, --dangerously-skip-permissions 옵션으로 시작하면 이 모드가 됩니다. 잘못되거나 해로운 명령도 막는 것이 없으니, 인터넷이 막히고 망가져도 괜찮은 컨테이너나 가상 머신에서만 씁니다.

더 배우기

메모리 파일

원문 표기 · Memory file

클로드 코드가 세션마다 처음에 읽는 지시 파일

클로드 코드에서 메모리는 세션을 시작할 때마다 읽는 지시 파일 — CLAUDE.md(또는 AGENTS.md)와 자동 메모리의 메모 — 을 말합니다. 아무것도 부탁하기 전에 컨텍스트에 실리므로 첫 메시지부터 컨텍스트 창의 일부를 차지합니다. 그래서 짧게 둡니다. 이 메모리는 디스크의 글 파일이지, 컴퓨터의 RAM 이 아닙니다.

더 배우기

ultrathink

부탁에 넣으면 그 차례만 더 깊이 생각하게 하는 낱말

부탁에 ultrathink 를 넣으면 클로드 코드가 그 한 차례만 더 깊이 생각합니다 — 세션의 나머지에 쓰는 모델이나 노력 수준은 그대로입니다. 까다로운 버그나 설계 결정처럼 어려운 한 걸음에 쓰기 좋습니다. 더 생각하는 만큼 시간이 걸리고 토큰을 더 씁니다.

더 배우기

Claude in Chrome

Claude 가 내 Chrome 에서 페이지를 열고 눌러 보며 확인하게 하는 확장

Claude in Chrome 은 브라우저 확장입니다. 클로드 코드와 연결하면 Claude 가 내 Chrome 에서 직접 페이지를 열고, 클릭하고, 입력하고, 콘솔 오류를 읽으므로 코드를 고친 뒤 화면에서 결과를 스스로 확인합니다. Chrome·Edge 같은 Chromium 브라우저에서 같은 claude.ai 계정으로 로그인해 씁니다.

더 배우기

PreToolUse

도구를 쓰기 직전에 실행되고, 그 동작을 막을 수 있는 훅

PreToolUse 는 에이전트가 도구를 쓰기 바로 전 — 파일을 고치기 전, 쉘 명령을 실행하기 전 — 에 걸리는 훅입니다. 훅 명령은 곧 일어날 일을 보고 막을 수 있습니다 — 종료 코드 2 로 끝나면 그 동작을 막고, stderr 에 쓴 이유를 에이전트에게 알려 줍니다. 위험한 명령이나 비밀 파일 편집을 막는 데 씁니다. 클로드 코드와 Codex 모두에 있습니다.

더 배우기

PostToolUse

도구를 쓴 직후에 실행되는 훅

PostToolUse 는 에이전트가 도구를 쓴 바로 뒤 — 예를 들어 파일을 고친 뒤 — 에 걸리는 훅입니다. 이미 한 동작을 되돌리지는 못하지만 뒤처리를 할 수 있어, 에이전트가 고친 파일마다 Prettier 같은 포매터를 돌리는 데 흔히 씁니다. 클로드 코드와 Codex 모두에 있습니다.

더 배우기

matcher

훅을 어느 도구에 걸지 고르는 부분

훅의 matcher 는 그 훅이 어떤 도구에 실행될지 고릅니다. 도구 이름이나 패턴으로, 쉘 명령은 Bash, 파일 고치기는 Edit|Write 처럼 씁니다. matcher 가 없으면 모든 도구마다 훅이 돌아 느려지고, 막으려던 것 말고 다른 것까지 막을 수 있습니다.

더 배우기

/clear

클로드 코드에서 대화를 비우고 새로 시작하기

/clear 를 입력하면 대화가 비워져 다음 요청이 깨끗한 컨텍스트 창에서 시작합니다. 관계없는 다른 일로 넘어갈 때 씁니다 — 지난 대화가 창을 채우거나 일을 엉뚱한 쪽으로 끌지 않습니다. 앞 세션은 저장되어 /resume 으로 다시 열 수 있습니다.

더 배우기

Esc

클로드 코드가 일하는 도중에 멈추게 하는 키

클로드 코드가 일하는 중에 Esc 를 누르면 지금 단계가 바로 멈추고 대화는 그대로 남으므로, 무엇이 틀렸는지 말하고 이어 갈 수 있습니다. Esc 를 두 번 누르면(또는 /rewind) 체크포인트 목록이 열려 대화와 코드를 앞 시점으로 되돌립니다. 틀린 계획을 끝까지 두는 것보다 일찍 멈추는 편이 쌉니다.

더 배우기

claude mcp add

터미널에서 클로드 코드에 MCP 서버를 등록합니다

claude mcp add 는 클로드 코드에 새 MCP 서버를, 그리고 그 서버가 주는 도구를 더합니다. 인터넷의 원격 서버는 --transport http 와 주소로, 내 컴퓨터에서 도는 서버는 -- 뒤에 그 서버를 켜는 명령을 적어 더합니다. claude mcp list 는 등록된 서버를 보여 주고 claude mcp remove 는 하나를 지웁니다.

더 배우기

--scope(MCP 범위)

원문 표기 · --scope (MCP)

더한 MCP 서버를 어디에 저장하고 누가 쓸지 정하는 옵션

claude mcp add 는 서버를 세 범위 중 하나에 저장합니다. 기본인 local 은 이 프로젝트에서 나만 쓰게 하고(~/.claude.json), project 는 프로젝트 맨 위의 .mcp.json 에 적어 git 으로 팀과 함께 쓰며 처음 쓸 때 승인을 묻고, user 는 내 모든 프로젝트에서 쓰게 합니다. 쉘 강좌에서 말하는 변수의 범위(scope)와는 다른 뜻입니다.

더 배우기

Shift+Tab

클로드 코드의 권한 모드를 바꾸는 단축키

클로드 코드 터미널에서 Shift+Tab 을 누르면 권한 모드가 차례로 바뀝니다 — default 는 편집·명령마다 묻고, acceptEdits 는 파일 편집을 묻지 않고, plan 은 읽기만 하며 바꾸기 전에 계획을 보여 줍니다. 큰 변경 전에 계획 모드로 바꾸면 계획을 먼저 읽고 고칠 수 있습니다. default 가 아닌 모드가 켜져 있으면 그 이름이 입력창 아래에 보입니다. v2.1.283 부터 터미널 세션은 auto 모드로 시작하므로 첫 누름이 default 로 바꾸고, 순서는 auto → default → acceptEdits → plan 입니다.

더 배우기

Anthropic

Claude 를 만드는 AI 회사

Anthropic(앤트로픽)은 2021년에 세워진 AI 연구 회사입니다. Claude 언어 모델과 클로드 코드 같은 도구를 만들고, AI 를 안전하게 만드는 연구를 발표합니다.

OpenAI

ChatGPT 와 Codex 를 만드는 AI 회사

OpenAI(오픈AI)는 2015년에 세워진 AI 연구 회사입니다. GPT 모델들과 대화 서비스 ChatGPT, 코딩 에이전트 Codex 를 만듭니다.

GPT 자세히 보기

훅 이벤트

원문 표기 · Hook event

SessionStart 처럼 훅이 실행되는 순간의 이름

훅 이벤트는 훅(내 스크립트)이 실행되는 순간의 이름입니다 — 세션이 시작할 때, 프롬프트를 보냈을 때, 도구를 실행하기 전과 뒤, Claude 가 멈출 때. 설정 파일에 이벤트와 그 순간에 실행할 명령을 적습니다.

더 배우기

스킬 설정 항목

원문 표기 · Skill setting field

allowed-tools 처럼 SKILL.md 머리말에 쓰는 클로드 코드 설정

SKILL.md 의 프런트매터에는 name·description 말고도 클로드 코드가 읽는 항목이 있습니다 — 묻지 않고 쓸 도구, 나만 실행할지, / 메뉴에 보일지. Agent Skills 를 읽는 다른 에이전트는 이 항목을 무시할 수 있습니다.

더 배우기

XChat

XSLM 과정에서 직접 만드는 챗봇

XChat 은 XSLM 과정에서 직접 만드는 작은 대화 프로그램입니다. 질문을 Runner 에 보내면 내가 학습한 GPT 가 답을 만들고, XChat 이 그 답을 보여 줍니다 — 미리 학습된 모델이나 외부 AI API 는 쓰지 않습니다.

더 배우기 GPT 자세히 보기

--output-format

claude -p 실행 결과를 어떤 꼴로 출력할지 고르기

클로드 코드를 대화 화면 없이 실행할 때(`claude -p`) 무엇을 출력할지 정하는 옵션입니다. 기본값 `text` 는 답 글만, `json` 은 답(`result`)·세션 ID·예상 비용이 든 JSON 하나를, `stream-json` 은 실행하는 동안 일이 생길 때마다 JSON 한 줄씩 출력합니다. 다른 프로그램이 값을 꺼내 써야 하는 스크립트는 보통 `json` 을 고릅니다.

더 배우기

AGENTS.override.md

같은 폴더의 AGENTS.md 대신 읽히는 Codex 지침 파일

Codex 는 폴더마다 `AGENTS.override.md` 를 `AGENTS.md` 보다 먼저 찾고 한 폴더에서 파일 하나만 읽기 때문에, 이 파일이 있으면 옆의 `AGENTS.md` 는 읽지 않습니다. 함께 쓰는 지침 파일을 고치거나 지우지 않고 잠깐 다른 지침을 시험해 볼 때 쓰고, 지우면 원래 지침으로 돌아갑니다. 클로드 코드는 이 파일을 읽지 않습니다.

더 배우기

skill-creator

새 에이전트 스킬을 함께 만들어 주는 스킬

skill-creator 는 새 스킬(`SKILL.md` 가 든 폴더)을 만드는 과정을 이끌어 주는 스킬입니다. 스킬이 무엇을 하고 언제 쓰여야 하는지 묻고, 그 답으로 파일을 씁니다. Codex 에는 처음부터 들어 있어 `$skill-creator` 로 부르고, Anthropic 의 공개 skills 저장소에도 있으며 그쪽은 예시 질문으로 스킬을 시험하는 일까지 돕습니다.

더 배우기

승인 정책(approval policy)

Codex 가 명령 실행 전에 사람에게 물을지 정하는 규칙

승인 정책은 Codex 가 명령을 실행하기 전에 멈추고 사람에게 물을지를 정합니다. `--ask-for-approval`(`-a`)로 정하며, `on-request` 는 샌드박스가 허락한 일은 묻지 않고 실행하고 그 밖의 일은 묻습니다. `never` 는 묻지 않지만 샌드박스 안에서만 움직입니다. Codex 가 버전 관리 폴더에 권하는 Auto 모드는 `workspace-write` 와 `on-request` 를 합친 것이고, 예전 값 `untrusted` 는 이제 지원되지 않습니다.

더 배우기

evals.json

스킬을 시험할 질문과 기대 결과를 적은 파일

evals.json 은 스킬을 시험할 문제 목록입니다. 문제마다 사용자가 할 법한 요청과 좋은 결과가 어떤 모습인지를 적고, 같은 요청을 스킬이 있을 때와 없을 때로 실행해 비교하면 스킬이 정말 도움이 되는지 알 수 있습니다. 정해진 형식은 없고, Anthropic 의 skill-creator 는 `evals/evals.json` 에 아래 필드로 둡니다.

더 배우기

NVIDIA

AI 에 쓰이는 그래픽 칩(GPU)으로 유명한 미국 회사

NVIDIA(엔비디아)는 그래픽 카드(GPU)를 설계해 파는 미국 회사입니다. GPU 는 원래 게임 화면을 빨리 그리려고 만들었지만, AI 모델을 학습시키고 실행하는 데 필요한 엄청난 양의 계산도 잘해서 대부분의 AI 데이터 센터가 씁니다. NVIDIA 는 자기 GPU 에서 돌아가는 프로그램을 만드는 도구 모음인 CUDA 도 만듭니다.

더 배우기

Google DeepMind

알파고와 Gemini 를 만든 구글의 AI 연구 조직

Google DeepMind(구글 딥마인드)는 구글 안의 AI 연구 조직입니다. 2016년 이세돌 9단을 이긴 바둑 AI 알파고(AlphaGo)를 만들었고, 구글의 Gemini 모델을 개발합니다. 따로 쓰는 앱이 아니라 연구 조직이라, 그 결과는 Gemini 같은 구글 제품 안에서 만납니다.

더 배우기

NIST

AI 위험 관리 지침을 내는 미국 표준 기관

NIST(미국 국립표준기술연구소)는 측정 단위와 기술 표준을 정하는 미국 정부 기관입니다. AI 분야에서는 AI 시스템의 위험을 찾아 줄이는 방법을 담은 AI 위험 관리 프레임워크(AI RMF)와, 이것을 챗봇 같은 생성형 AI 에 맞춘 생성형 AI 프로필을 냅니다. 법이 아니라 스스로 따르는 지침입니다.

더 배우기

Gartner

IT 동향 보고서로 알려진 미국 조사·자문 회사

Gartner(가트너)는 기업을 조사해 정보 기술에 관한 보고서와 전망(예: 하이프 사이클 도표)을 내는 미국 조사 회사입니다. 뉴스는 기업 리더를 대상으로 한 Gartner 설문을 자주 인용합니다. 그 숫자는 조사한 회사들의 이야기이지, 모든 회사의 이야기는 아닙니다.

더 배우기

안드레이 카파시

원문 표기 · Andrej Karpathy

nanoGPT 와 언어 모델 만들기 무료 강의로 알려진 AI 연구자

안드레이 카파시(Andrej Karpathy)는 OpenAI 창립 멤버였고 Tesla 오토파일럿의 AI 를 이끈 AI 연구자입니다. nanoGPT·makemore·nanochat 같은 작고 읽기 쉬운 프로젝트와, 신경망을 처음부터 만드는 무료 영상 강의를 공개합니다. 2025년에 "바이브 코딩"이라는 말을 처음 썼습니다.

더 배우기 GPT 자세히 보기

SONUB 용어 사전

데이터

용어 81개

임베딩

원문 표기 · Embedding

뜻을 숫자로 바꿔 서로 비교할 수 있게 만드는 것

임베딩은 문장을 숫자 목록으로 바꾸되, 뜻이 비슷한 것끼리 가까운 자리에 놓이도록 배치하는 일입니다. 그래서 '차 고치기'라고 검색해도 '자동차 수리'를 다룬 문단을 찾아낼 수 있습니다. 철자가 아니라 뜻을 맞추기 때문입니다.

벡터

원문 표기 · Vector

위치를 나타내는 숫자 목록

벡터는 순서가 있는 숫자 목록일 뿐입니다. 지도 위의 한 점을 찍는 두 숫자와 같은 것입니다. 인공지능은 숫자가 수백 개인 목록을 쓰기 때문에, 각 벡터는 우리가 그림으로 그릴 수 없는 공간 속의 한 지점을 가리킵니다. 뜻이 점이 되고 나면 '비슷하다'는 말은 그냥 '가깝다'가 됩니다.

데이터베이스

원문 표기 · Database

안전하게 찾고 고칠 수 있도록 정리해 둔 저장 공간

데이터베이스는 프로그램이 다루는 자료를 정리된 형태로 보관해, 빨리 찾고 안전하게 고칠 수 있게 해 줍니다. 여러 사람이 같은 순간에 써 넣어도 자료가 망가지지 않도록요. 두 사람이 동시에 고쳐도 한 줄도 잃지 않는 표 계산 프로그램이라고 생각하면 됩니다. 이 사이트의 계정, 글, 점수도 모두 데이터베이스 안에 있습니다.

더 배우기

SQL

데이터베이스에 질문할 때 쓰는 언어

SQL 은 데이터베이스에게 무엇을 원하는지 말하는 방법입니다. 이런 행을 골라 달라, 이것을 추가해 달라, 저 항목을 바꿔 달라 하는 식이지요. 짧게 줄인 영어처럼 읽혀서 처음 배우는 컴퓨터 언어치고는 유난히 다가가기 쉽습니다. 1970년대부터 쓰였고, 지금도 대부분의 데이터베이스와 대화하는 표준 방법입니다.

JSON

프로그램끼리 자료를 주고받을 때 쓰는 글자 형식

JSON 은 이름과 값을 짝지어 자료를 글자로 적는 형식이라, 서로 다른 언어로 만든 두 프로그램도 알아들을 수 있습니다. 거의 모든 API 가 이 형식으로 답합니다. 그냥 글자이기 때문에 파일을 열어 사람이 직접 읽을 수 있고, 어떤 서비스가 실제로 무엇을 보내 주었는지 확인하기도 쉽습니다.

원-핫 벡터

원문 표기 · One-hot vector

한 칸만 1이고 나머지는 0인 단어 표시 벡터

원-핫 벡터는 어휘 수만큼 칸이 있고, 그 단어의 자리 한 칸만 1, 나머지는 모두 0인 벡터입니다. 토큰 ID를 계산에 쓸 수 있는 벡터로 바꾸는 가장 간단한 방법입니다. 어느 단어인지만 표시할 뿐 모든 단어 사이의 거리가 같아서 뜻이나 비슷함을 담지 않습니다. 그 역할은 학습된 임베딩이 맡습니다.

더 배우기

텐서

원문 표기 · Tensor

숫자를 여러 방향으로 늘어놓은 묶음

텐서는 숫자를 하나 이상의 방향으로 늘어놓은 그릇입니다. 숫자 하나는 스칼라, 한 줄은 벡터, 표 하나는 행렬이고, 표를 겹겹이 쌓으면 더 높은 차원의 텐서가 됩니다. 모델의 파라미터는 텐서에 담기고, GPU 는 텐서 곱셈을 빠르게 하도록 만들어졌습니다. 파라미터는 그릇이 아니라 안의 숫자로 세므로 2 × 3 행렬에는 파라미터가 6개입니다.

더 배우기 가중치·파라미터 자세히 보기

비트·바이트

원문 표기 · Bits and bytes

데이터의 가장 작은 단위(0/1)와 그 8개 묶음

비트는 0 또는 1 하나로, 컴퓨터가 저장하는 가장 작은 데이터 조각입니다. 바이트는 8비트이고 서로 다른 값 256가지를 담을 수 있습니다. 파일 크기와 메모리는 바이트(킬로바이트·메가바이트·기가바이트)로 셉니다. AI 모델의 크기도 여기서 나옵니다. 파라미터 하나를 8비트로 저장하면 1바이트이므로, 80억 개면 약 8GB 입니다.

더 배우기 가중치·파라미터 자세히 보기

CSV

칸 사이에 쉼표를 넣어 글로 저장한 표

CSV(쉼표로 구분한 값)는 표를 글로 저장합니다. 한 줄이 한 행이고, 칸 사이에 쉼표를 넣으며, 첫 줄에 칸 이름을 적는 경우가 많습니다. 스프레드시트가 열고 저장할 수 있고, 쉘 도구도 잘 읽습니다 — cut -d, 와 awk -F, 가 줄마다 쉼표에서 나눕니다. 값 안에 쉼표가 있으면 따옴표로 감싸는데, 이 간단한 도구들은 그것까지는 알아보지 못합니다.

FP32

숫자 하나를 32비트(4바이트)로 적는 형식

FP32 는 소수점이 있는 숫자 하나를 32비트, 곧 4바이트로 저장합니다. 컴퓨터에서 학습할 때 흔히 쓰는 형식이며 유효 숫자를 일곱 자리쯤 지킵니다. 같은 모델을 FP16 으로 두면 크기가 절반이므로, 모델은 더 작은 형식으로 나누어 받거나 실행하는 일이 많습니다.

더 배우기 가중치·파라미터 자세히 보기

INT8

숫자를 8비트(1바이트) 정수로 적는 형식

INT8 은 −128 부터 127 까지의 정수 하나를 8비트, 곧 1바이트로 저장합니다. 양자화한 모델은 가중치를 INT8 로 두고 스케일을 곱해 원래와 비슷한 숫자로 되돌립니다. 그래서 파일이 FP32 의 4분의 1, FP16 의 절반쯤으로 줄고 정확도는 조금 떨어집니다.

더 배우기 가중치·파라미터 자세히 보기

스칼라

원문 표기 · Scalar

목록이나 표가 아닌 숫자 하나

스칼라는 0.7 처럼 숫자 하나입니다. 벡터는 스칼라를 늘어놓은 목록, 행렬은 스칼라를 늘어놓은 표입니다. 모델의 파라미터는 스칼라 하나씩 셉니다. 2 × 3 행렬에는 스칼라가 6개 있으므로 파라미터도 6개입니다. 그래서 8B 는 벡터 80억 개가 아니라 숫자 80억 개쯤입니다.

더 배우기 가중치·파라미터 자세히 보기

내적

원문 표기 · Dot product

같은 자리끼리 곱해 모두 더한 숫자 하나

내적은 길이가 같은 두 숫자 목록에서 같은 자리의 숫자끼리 곱한 뒤 모두 더해 숫자 하나를 만드는 계산입니다. [1, 2, 3] 과 [4, 5, 6] 의 내적은 4 + 10 + 18 = 32 입니다. 두 벡터가 같은 쪽을 가리킬수록 커집니다. 어텐션에서는 Query 와 Key 의 내적이 "얼마나 관련 있나" 점수가 되고, 선형 층(linear)도 가중치의 줄마다 입력과 내적한 것입니다.

더 배우기 가중치·파라미터 자세히 보기

유클리드 거리

원문 표기 · Euclidean distance

두 점을 곧은 선으로 잇는 길이 — 짧을수록 비슷하다

두 벡터에서 같은 자리의 숫자끼리 빼고, 그 차이를 제곱해 모두 더한 뒤 제곱근을 씌운 값입니다. [0, 0] 과 [0.3, 0.3] 의 거리는 √(0.3² + 0.3²) = 0.424 입니다. 임베딩에서는 거리가 짧을수록 뜻이 비슷하다고 보고, 벡터 데이터베이스는 이 거리로 가장 가까운 것을 찾습니다.

더 배우기

정밀도

원문 표기 · Numeric precision

숫자 하나를 몇 비트로 얼마나 정확히 적는지

정밀도는 숫자 하나를 얼마나 정확히 저장하는지를 뜻하며 보통 비트 수로 말합니다 — 32비트, 16비트, 8비트, 4비트. 비트가 적을수록 모델이 작아지고 흔히 빨라지지만 숫자를 더 거칠게 반올림해 품질이 조금 떨어질 수 있습니다. 모델을 더 낮은 정밀도로 옮기는 일이 양자화입니다.

더 배우기 가중치·파라미터 자세히 보기

원자적

원문 표기 · Atomic transaction

전부 되거나 전부 안 되는 처리

원자적 거래(트랜잭션)는 여러 변경을 데이터베이스가 한 걸음처럼 다루는 것입니다. 변경이 모두 저장되거나, 하나도 저장되지 않습니다. 도중에 서버가 멈추면 처음 상태로 되돌립니다. 게임 지갑에 꼭 필요합니다 — 코인을 빼고 아이템을 주는 일이 반만 일어나면 안 되기 때문입니다.

더 배우기

덤프

원문 표기 · Database dump

데이터베이스 내용을 통째로 뽑은 파일

데이터베이스 덤프는 데이터베이스의 표·설계·모든 줄을 그대로 옮겨 적은 파일입니다. 백업하거나 다른 서버로 옮길 때 만들고, 다시 불러오면 같은 데이터베이스가 만들어집니다. 내가 가진 보통 파일이므로 서비스를 떠날 때 데이터를 들고 나가는 길도 됩니다.

인덱싱

원문 표기 · Indexing

빨리 찾으려고 색인을 만드는 일

인덱스는 데이터베이스가 한 칸을 기준으로 정렬해 따로 두는 목록입니다. 덕분에 모든 줄을 읽지 않고 필요한 줄로 바로 갑니다. 인덱스를 만들면 그 칸으로 찾기는 빨라지지만, 저장할 때마다 조금 느려지고 공간을 더 씁니다. 일부 칸만 인덱싱하는 저장소는 그 칸으로만 찾을 수 있습니다.

테이블

원문 표기 · Table

행과 열로 된 데이터베이스의 표

데이터베이스는 자료를 테이블에 담습니다. 테이블 하나에는 플레이어·아이템처럼 한 종류만 담고, 열은 이름·레벨 같은 칸, 행은 기록 하나입니다. 프로그램은 쿼리로 테이블을 읽고 바꾸며, 어떤 시스템은 클라이언트가 테이블을 구독해 바뀐 줄을 바로 받게 합니다.

쿼리

원문 표기 · Query

데이터베이스에 묻거나 바꾸라는 요청

쿼리는 데이터베이스에 보내는 요청입니다 — 이 줄들을 찾아라, 세어라, 하나 더해라, 바꿔라. 대부분의 데이터베이스는 SQL 로 쓴 쿼리를 받습니다. 쿼리를 얼마나 자유롭게 쓸 수 있는지는 저장소마다 다릅니다. SQL 데이터베이스는 거의 모든 질문에 답하지만, 단순한 키-값 저장소는 키로만 찾습니다.

키-값

원문 표기 · Key-value

이름(키)으로 값을 넣고 찾는 저장 방식

키-값 저장소는 자료를 짝으로 저장합니다 — player:42 같은 키와, 그 플레이어의 저장 데이터 같은 값입니다. 키를 주면 값을 아주 빨리 돌려줍니다. 대신 '레벨 10 넘는 플레이어 모두'처럼 여러 값에 걸친 질문은 SQL 처럼 쉽게 할 수 없습니다.

메타데이터

원문 표기 · Metadata

자료를 설명하는 자료

메타데이터는 자료 자체가 아니라 그 자료에 대한 정보입니다. 사진의 찍은 날짜와 카메라, 파일의 크기와 주인, 모델 파일의 층 이름과 숫자 형식 같은 것입니다. 프로그램은 이것을 읽고 본 자료를 어떻게 쓸지 압니다. 공간을 조금 더 쓰므로 모델 파일은 가중치만 계산한 크기보다 약간 큽니다.

가중치·파라미터 자세히 보기

PostgreSQL

널리 쓰는 무료 오픈소스 SQL 데이터베이스

PostgreSQL(줄여서 Postgres)은 자료를 표에 담고 SQL 쿼리에 답하는 오픈소스 데이터베이스입니다. 트랜잭션으로 자료를 안전하게 지키고, JSON 칸 같은 기능도 갖췄습니다. SONUB 도 PostgreSQL 로 돌고, Nakama 같은 게임 서버도 플레이어 자료를 여기에 저장합니다. Docker 에서는 보통 postgres 라는 컨테이너로 따로 돌립니다.

Redis

메모리에 두는 아주 빠른 키-값 저장소

Redis 는 자료를 디스크보다 컴퓨터 메모리(RAM)에 두므로 읽고 쓰는 데 1밀리초도 걸리지 않습니다. 웹 앱은 Redis 를 캐시, 뒤에서 할 일의 대기열(큐), 숫자 세기나 세션 저장에 씁니다. 디스크에 저장할 수도 있지만, 보통은 잃으면 안 되는 자료를 두는 곳이 아니라 주 데이터베이스 옆의 도우미입니다.

스토리지 엔진

원문 표기 · Storage engine

자료를 저장하고 다시 꺼내는 서버 부품

스토리지 엔진은 데이터베이스나 게임 서버 안에서 자료를 디스크에 어떻게 쓰고 다시 찾을지 정하는 부분입니다. Nakama 에서는 플레이어 저장 자료를 버전이 붙는 JSON 문서로 담고, 문서마다 주인과 읽을 수 있는 사람을 확인합니다. 그 설계가 무엇을 물을 수 있는지 정합니다 — Nakama 의 저장소는 자유로운 SQL 이 아니라 주로 키-값입니다.

더 배우기

스키마

원문 표기 · Schema

자료가 가져야 할 모양을 정한 설계도

스키마는 자료의 모양을 정합니다. 데이터베이스에서는 어떤 표가 있고 표마다 어떤 칸과 자료형이 있는지, 도구나 API 에서는 어떤 입력을 어떤 자료형으로 받는지입니다. 프로그램은 자료를 스키마와 맞춰 보고 맞지 않으면 거절합니다. AI 도구의 입력 스키마는 모델이 어떤 값을 보내야 하는지 알려 줍니다.

JSON Schema

JSON 이 가져야 할 모양을 적는 표준 형식

JSON Schema 는 다른 JSON 이 어떤 모양이어야 하는지 적은 JSON 문서입니다 — 꼭 있어야 할 키, 값마다의 자료형, 허용되는 값. 도구는 이것으로 자료를 자동으로 검사합니다. codex exec --output-schema 같은 AI 도구는 이것을 써서 모델의 마지막 답을 정확히 그 모양으로 받습니다.

JSONL

한 줄에 JSON 하나씩 적는 글 형식

JSONL(JSON Lines)은 큰 JSON 문서 하나 대신, 줄마다 완전한 JSON 값을 하나씩 적습니다. 프로그램은 줄이 도착하는 대로 하나씩 읽고 처리할 수 있어 기록(로그)이나 진행 상황을 흘려보낼 때 알맞습니다. codex exec --json 이 진행을 이렇게 내보냅니다 — 한 줄이 사건 하나입니다.

TOML

키 = 값 줄로 설정을 적는 파일 형식

TOML 은 설정 파일을 위한 글 형식입니다. 한 줄이 키 = 값이고, 대괄호 [구역] 이 관련된 설정을 묶습니다. JSON 보다 사람이 읽고 고치기 쉽습니다. Codex 는 설정을 ~/.codex/config.toml 에, 직접 만든 서브 에이전트를 .toml 파일에 둡니다.

base64

파일을 글자로 바꿔 적는 방식

base64 는 그림 같은 날것의 바이트를 안전한 글자 64개(A–Z, a–z, 0–9, +, /)로 된 글로 바꿉니다. 그래서 AI API 에 보내는 JSON 처럼 글만 받는 곳에도 파일을 실어 보낼 수 있습니다. 원래 파일보다 3분의 1쯤 길어지고, 누구나 되돌릴 수 있으므로 암호화가 아닙니다.

zip

여러 파일을 하나로 묶고 줄인 파일 형식

zip 파일은 여러 파일과 폴더를 파일 하나로 묶고 보통 크기도 줄입니다. Cadeplay 같은 게임 플랫폼은 웹 게임을 zip 하나로 받습니다. 중요한 것은 안의 배치입니다 — index.html 이 맨 위(또는 한 단계 아래)에 있어야 합니다. 내용물 대신 폴더째 묶으면 한 겹이 더 생기는데, 가장 흔한 실수입니다.

더 배우기

압축 파일

원문 표기 · Archive file

여러 파일을 하나로 묶어 줄인 파일

압축 파일은 여러 파일과 폴더를 파일 하나로 묶고 보통 크기도 줄입니다. 흔한 것은 .zip 과 .tar.gz 입니다. 스킬은 압축 파일로 나눕니다 — npx skills add 는 스킬마다 압축 파일 하나를 내려받아 풉니다. 대화를 줄이는 클로드 코드의 '압축(Compaction)'과는 다른 말입니다.

digest

파일 내용으로 계산한 지문 값

digest 는 파일의 모든 바이트로 계산한 짧은 값입니다(sha256 등). 같은 파일은 언제나 같은 digest 가 나오고, 한 바이트만 바뀌어도 전혀 다른 값이 나옵니다. 그래서 파일 전체를 비교하지 않고 digest 만 비교해 바뀌었는지 압니다. 스킬은 압축 파일의 digest 를 버전으로 씁니다 — digest 가 바뀌면 새 버전입니다.

sha256

파일 지문(해시)을 만드는 대표 계산법

SHA-256 은 해시 함수입니다. 어떤 입력이든 256비트 값으로 바꾸고, 보통 16진수 64글자로 적습니다. 서로 다른 두 파일이 같은 값을 갖게 만들기가 사실상 불가능해서 내려받은 파일 확인, 버전 이름, 보안에 씁니다. 해시로 파일을 되살릴 수는 없고, 파일을 알아보는 데만 씁니다.

GIF

짧은 움직이는 그림을 담는 이미지 형식

GIF 는 여러 장면을 담아 반복해서 보여 줄 수 있는 오래된 이미지 형식이라, 화면 녹화 같은 소리 없는 짧은 영상에 씁니다. 장면마다 색을 최대 256가지만 쓰므로 사진은 거칠게 보입니다. AI 브라우저 도구는 한 일을 GIF 로 녹화해 보고에 붙일 수 있습니다.

ID

하나를 다른 것과 구분하는 고유 이름·번호

ID(식별자)는 딱 하나에만 붙는 이름표입니다. 그래서 프로그램이 헷갈리지 않고 그것을 가리킵니다 — 회원 번호, 파일 ID, 번들 ID, 키 ID. 언어모델에서는 어휘의 토큰마다 번호(토큰 ID)가 있고, 모델은 글자가 아니라 이 번호로 계산합니다.

용량 단위(KB·MB·GB)

원문 표기 · KB · MB · GB

파일·메모리 크기를 세는 단위

파일과 메모리 크기는 바이트로 세고, 큰 수에는 단위를 붙입니다. 킬로바이트(KB)는 1,000바이트, 메가바이트(MB)는 100만, 기가바이트(GB)는 10억 바이트입니다. KiB·MiB·GiB 는 2의 거듭제곱으로 셉니다 — 1KiB 는 1,024바이트, 1MiB 는 1,048,576바이트. MiB 를 MB 로 적는 프로그램도 많아 조금씩 다른 것은 흔합니다.

가중치·파라미터 자세히 보기

밀리초(ms)

원문 표기 · Millisecond (ms)

1,000분의 1초

밀리초(ms)는 1초의 1,000분의 1입니다. 화면과 프로그램은 짧은 기다림을 ms 로 잽니다 — 400ms 는 0.4초, 반 초가 조금 안 됩니다. 사람은 대략 100ms 가 넘는 지연을 느끼므로 웹 페이지는 그보다 빨리 답하려 합니다.

픽셀

원문 표기 · Pixel (px)

화면을 이루는 가장 작은 색 점 하나

픽셀은 화면이나 그림을 이루는 가장 작은 점으로, 색 하나를 담습니다. 수백만 개가 나란히 모여 그림이 됩니다. 웹 디자인의 px 는 CSS 단위입니다 — 640px 는 폭이지만, 해상도 높은 휴대폰에서는 CSS 픽셀 하나가 실제 화면 점 여러 개를 덮습니다. 게임에서는 속도를 초당 몇 픽셀로 적습니다.

NumPy

숫자 격자를 빠르게 계산하는 파이썬 라이브러리

NumPy 는 파이썬에 배열을 더해 줍니다 — 한꺼번에 더하고 곱하고 비교할 수 있는 숫자 격자입니다. 안쪽 반복은 C 로 쓰여 있어 리스트를 파이썬 반복문으로 도는 것보다 몇 배에서 몇십 배 빠릅니다. scikit-learn·PyTorch 같은 파이썬 AI·데이터 도구 대부분이 같은 생각으로 만들어졌거나 NumPy 배열을 바로 받습니다.

더 배우기

배열

원문 표기 · Array (NumPy)

NumPy 가 한꺼번에 계산하는 숫자 격자

NumPy 배열은 숫자를 격자로 담습니다 — 한 줄(1차원), 표(2차원), 또는 그보다 많은 차원. 값이 모두 같은 자료형이라서 NumPy 는 배열 전체를 한 번에 계산합니다 — a * 2 는 모든 숫자를 두 배로, a @ b 는 두 행렬을 곱합니다. 파이썬 리스트와 닮았지만 다르게 동작합니다 — + 는 리스트를 잇지 않고 숫자를 더합니다.

더 배우기

shape

배열이 방향마다 몇 개씩인지 나타낸 크기

배열의 shape 는 차원마다의 크기를 적습니다 — (4, 3) 은 4행 3열입니다. shape 가 어떤 계산이 되는지 정합니다. 행렬 곱은 안쪽 숫자가 같아야 해서 (4, 3) @ (3, 2) 는 (4, 2) 가 되고, (4, 3) @ (2, 3) 은 ValueError 가 납니다. NumPy 가 오류를 내면 먼저 .shape 를 출력해 봅니다.

더 배우기

브로드캐스팅

원문 표기 · Broadcasting

작은 배열을 큰 배열에 맞춰 늘려 계산하기

브로드캐스팅은 NumPy 가 모양이 다른 배열을 함께 계산하는 방법입니다. 작은 배열을 모자란 방향으로 되풀이한 것처럼 다루되, 메모리에 실제로 복사하지는 않습니다. 배열에 1 을 더하면 모든 숫자에 1 이 더해지고, (4, 3) 표에 값 3개짜리 줄을 더하면 4줄 모두에 더해집니다. 모양을 맞출 수 없으면 오류가 납니다.

더 배우기

벡터화 계산

원문 표기 · Vectorised maths

반복문 없이 배열 전체를 한 번에 계산하기

벡터화 계산은 숫자마다 파이썬 for 반복문을 돌리지 않고, a * b 처럼 배열 전체에 계산 하나를 쓰는 것입니다. 그러면 NumPy 가 빠른 컴파일된 코드 안에서 반복을 돌려 흔히 수십 배 빨라집니다. 신경망도 이렇게 만듭니다 — 층 하나가 곱셈 수백만 번이 아니라 행렬 곱 한 번입니다.

더 배우기

데이터 누수

원문 표기 · Data leakage

시험용 정보가 학습에 몰래 섞여 드는 실수

데이터 누수는 시험용 데이터의 정보가 학습 중에 모델에게 새어 들어가, 시험 점수가 실제 실력보다 좋게 나오는 실수입니다. 흔한 원인은 데이터를 나누기 전에 전체로 전처리하는 것입니다 — 그러면 크기 조정이 시험 줄까지 포함한 평균을 배웁니다. 먼저 나누고, 모든 전처리는 학습용으로만 맞춥니다.

더 배우기

크기 조정

원문 표기 · Scaling

학습 전에 특징 값의 범위를 맞추는 전처리

크기 조정(스케일링)은 특징마다 숫자가 비슷한 범위에 오도록 바꿉니다 — 예를 들어 0~1, 또는 평균 0·퍼짐 1. 하지 않으면 거리를 비교하는 모델에서 천 단위 특징이 한 자리 수 특징을 덮어 버립니다. 크기 조정의 기준은 학습 데이터로만 배워야 합니다. 그러지 않으면 데이터 누수가 생깁니다.

더 배우기

붓꽃 데이터

원문 표기 · Iris dataset

꽃 150송이로 품종을 맞히는 연습 데이터

붓꽃 데이터에는 붓꽃 세 품종에서 50송이씩, 모두 150송이를 잰 값이 있습니다. 꽃마다 꽃받침 길이·너비, 꽃잎 길이·너비의 네 특징이 있고, 그 숫자로 품종을 맞히는 것이 과제입니다. 작고 깔끔하며 scikit-learn 에 들어 있어서 분류를 처음 배울 때 흔히 씁니다.

더 배우기

전처리

원문 표기 · Preprocessing

학습 전에 데이터를 다듬고 바꾸는 일

전처리는 학습이나 추론 전에 날것의 데이터에 하는 모든 일입니다 — 망가진 줄 지우기, 빈 값 채우기, 숫자 크기 조정, 글을 토큰으로, 소리를 FFT 로 주파수로 바꾸기. 모델은 기대하는 모양의 데이터에서만 잘 배웁니다. 학습 때 쓴 전처리는 나중에 새 데이터에도 똑같이 해야 합니다.

데이터

원문 표기 · Data

컴퓨터가 다루는 숫자·글·그림·소리 같은 자료

데이터는 컴퓨터가 저장하고 처리하는 모든 정보입니다 — 표의 숫자, 글, 사진, 녹음, 웹사이트에서의 클릭. 프로그램은 데이터를 읽고 바꾸고 새 데이터를 만듭니다. 인공지능은 데이터에 두 번 기댑니다 — 모델은 학습 데이터로 가중치를 배우고, 그 뒤 내가 준 데이터로 계산합니다.

가중치·파라미터 자세히 보기

데이터 분석

원문 표기 · Data analysis

데이터를 살펴 쓸모 있는 사실을 찾는 일

데이터 분석은 데이터를 정리하고 요약하고 차트로 그려 질문에 답하는 일입니다 — 어떤 상품이 잘 팔리는지, 사용자가 언제 떠나는지, 바꾼 것이 도움이 됐는지. 파이썬의 NumPy·pandas, 엑셀, SQL 로 흔히 합니다. 요즘은 AI 채팅에 표를 올리고 말로 물어도 간단한 분석을 해 줍니다.

정형 데이터

원문 표기 · Structured data

행과 열이 정해진 표 모양의 데이터

정형 데이터는 정해진 틀에 들어맞는 데이터입니다. 엑셀 표나 데이터베이스 테이블처럼 모든 줄이 같은 칸을 갖고, 칸마다 한 종류의 값만 담습니다. 그래서 정렬·거르기·세기가 쉽습니다. 전통적인 머신러닝과 SQL 이 이런 데이터에 가장 잘 맞고, 글·그림은 먼저 전처리가 더 필요합니다.

비정형 데이터

원문 표기 · Unstructured data

정해진 틀이 없는 글·사진·소리 데이터

비정형 데이터는 정해진 행과 열이 없는 데이터입니다 — 이메일, 문서, 사진, 녹음, 영상. 세상 데이터의 대부분이 이렇습니다. 바로 세거나 정렬하기 어려워서 먼저 토큰이나 임베딩 같은 숫자로 바꾸며, 언어모델과 이미지 모델은 바로 이런 데이터를 다루려고 만듭니다.

벡터 데이터베이스

원문 표기 · Vector database

임베딩을 저장하고 가까운 것을 찾는 DB

벡터 데이터베이스는 글이나 그림의 뜻을 담은 숫자 목록(임베딩 벡터)을 저장하고, 질문 벡터와 가장 가까운 벡터를 빨리 찾습니다. RAG 에서는 문서 조각마다 벡터로 저장해 두고, 질문도 벡터로 바꿔 가장 가까운 조각을 모델에 건넵니다. 문서가 적으면 메모리 안의 단순한 검색으로도 충분할 수 있습니다.

엑셀

원문 표기 · Excel

표와 계산을 다루는 Microsoft 의 프로그램

엑셀(Excel)은 Microsoft 의 표 계산 프로그램입니다. 칸으로 된 격자에 숫자와 글을 넣고, 다른 칸으로 계산하는 수식을 씁니다. 회사의 표·예산·간단한 차트에 가장 흔히 쓰는 도구입니다. AI 도구에 엑셀 파일을 올리면 내용을 읽고 질문에 답하며 수식도 대신 써 줍니다.

수식

원문 표기 · Formula

엑셀 칸에 넣는 계산식

표 계산 프로그램에서 수식은 = 로 시작해 숫자나 다른 칸으로 값을 계산하는 명령입니다 — =SUM(B2:B13), =B2*1.1 같은 것입니다. 바탕이 된 칸이 바뀌면 결과도 저절로 바뀝니다. AI 에게 답만이 아니라 수식도 달라고 하면 계산을 다시 쓰고 확인할 수 있습니다.

소리 신호

원문 표기 · Sound signal

시간에 따라 바뀌는 소리 값의 흐름

소리 신호는 마이크 앞 공기 압력이 시간에 따라 어떻게 바뀌는지 기록한 것으로, 긴 숫자 목록으로 저장됩니다. 그래프로 그리면 파형입니다. 소리 인공지능은 이것을 그대로 쓰는 일이 드물고, FFT 같은 전처리로 먼저 주파수별로 나눕니다. 쉘이 프로그램을 멈출 때 보내는 '신호'와는 다른 말입니다.

파형

원문 표기 · Waveform

소리의 떨림을 그래프로 그린 모양

파형은 소리를 선으로 그린 것입니다. 왼쪽에서 오른쪽으로 시간이 흐르고, 떨림에 따라 선이 오르내립니다. 물결이 높을수록 소리가 크고, 촘촘할수록 높은 소리입니다. 녹음 편집 프로그램이 이렇게 보여 줍니다. 음악 인공지능은 파형을 직접 다루거나, 소리 없이 음악을 적는 MIDI 음표를 다룹니다.

주파수

원문 표기 · Frequency

1초에 떨리는 횟수, 소리의 높낮이

주파수는 1초에 몇 번 떨리는지이며 헤르츠(Hz)로 잽니다. 소리에서는 음의 높이입니다 — 주파수가 높을수록 높은 소리입니다. 라(A4) 음은 440Hz 이고, 사람은 대략 20~20,000Hz 를 듣습니다. 실제 소리는 여러 주파수가 섞여 있고, FFT 가 주파수마다 얼마나 센지 잽니다.

헤르츠(Hz)

원문 표기 · Hertz (Hz)

'1초에 몇 번'을 나타내는 단위

헤르츠(Hz)는 1초에 어떤 일이 몇 번 일어나는지 셉니다. 소리의 높이(A4 는 440Hz), 소리를 재는 빠르기(CD 는 44,100Hz), 화면을 다시 그리는 빠르기(120Hz 화면은 1초에 120번)를 잽니다. 1kHz 는 1,000Hz 입니다.

FFT(고속 푸리에 변환)

소리를 주파수별로 빠르게 나누는 계산

FFT(Fast Fourier Transform, 고속 푸리에 변환)는 푸리에 변환을 한 단계씩 하는 것보다 훨씬 빠르게 계산하는 알고리즘입니다. 신호의 짧은 조각을 받아 그 안에 주파수마다 얼마나 센 소리가 있는지 알려 줍니다. 소리 인공지능은 녹음으로 스펙트로그램을 만들 때처럼 전처리에 거의 언제나 씁니다.

푸리에 변환

원문 표기 · Fourier transform

신호를 여러 주파수 성분으로 나누는 계산

푸리에 변환은 시간에 따라 바뀌는 신호를, 어떤 주파수가 얼마나 센지의 목록으로 바꿔 적는 수학입니다. 아무리 복잡한 소리도 단순한 물결 여러 개를 더한 것으로 볼 수 있고, 이 변환이 그 물결들을 찾아냅니다. 컴퓨터는 이것을 빠르게 계산하는 FFT 를 씁니다.

IEEE 754

소수점 있는 수를 비트로 저장하는 국제 표준

IEEE 754 는 부동소수점 수의 국제 표준입니다. 수를 세 부분으로 저장합니다 — 부호 비트, 크기를 정하는 지수, 숫자들을 담는 가수. 32비트 실수는 1 + 8 + 23비트를 씁니다. 담을 수 있는 자릿수가 정해져 있어서 컴퓨터에서 0.1 + 0.2 는 정확히 0.3 이 아닙니다.

가수

원문 표기 · Mantissa

저장된 실수에서 숫자 자리를 담는 부분

IEEE 754 는 수를 부호·지수·가수로 나눕니다. 가수(mantissa, significand)는 유효 숫자를 담고, 지수는 소수점이 어디에 오는지 정합니다. 가수 비트가 많을수록 정밀합니다 — 32비트 실수는 23비트, 16비트 실수는 10비트뿐이라 16비트로 학습하면 메모리는 아끼지만 정밀도를 잃습니다. 노래하는 '가수'와는 다른 말입니다.

MIDI

소리 대신 음표 정보를 담는 연주 표준

MIDI(Musical Instrument Digital Interface)는 1983년에 나온 표준으로, 전자 악기와 컴퓨터가 연주 정보를 주고받게 합니다 — 어떤 음을, 언제, 얼마나 길게, 얼마나 세게. 소리 자체는 없으므로 파일이 아주 작고 어떤 악기 소리로도 연주할 수 있습니다. 음악 인공지능은 음악의 구조를 읽기 쉬워서 MIDI 로 배우기도 합니다.

샘플링 레이트

원문 표기 · Sampling rate

1초에 소리를 몇 번 재어 기록하는지

소리를 녹음할 때 컴퓨터는 신호를 1초에 여러 번 재어 숫자로 저장합니다. 샘플링 레이트는 1초에 몇 번 재는지이며 Hz 로 적습니다 — CD 는 44,100Hz 입니다. 높을수록 높은 소리까지 담지만 파일이 커집니다. 말소리는 덜 필요해서 음성 모델은 흔히 16,000Hz 를 씁니다. 언어모델이 토큰을 고르는 '샘플링'과는 다른 말입니다.

나이퀴스트 주파수

원문 표기 · Nyquist frequency

담을 수 있는 가장 높은 주파수

나이퀴스트 주파수는 샘플링 레이트의 절반으로, 녹음이 제대로 담을 수 있는 가장 높은 주파수입니다. CD 는 44,100Hz 로 재므로 22,050Hz 까지 담고, 사람이 듣는 약 20,000Hz 를 조금 넘습니다. 한계보다 높은 소리는 그냥 사라지지 않고, 미리 걸러 내지 않으면 가짜 낮은 소리로 접혀 들어옵니다.

옥타브

원문 표기 · Octave

주파수가 두 배가 되는 음 높이 간격

옥타브는 한 음에서 같은 이름의 다음 음까지의 거리입니다. 한 옥타브 올라가면 주파수가 두 배, 내려가면 절반이 됩니다. A4 가 440Hz 이므로 A5 는 880Hz, A3 는 220Hz 입니다. 두 음은 높이만 다른 같은 음처럼 들려서 이름이 같습니다.

스펙트로그램

원문 표기 · Spectrogram

시간별 주파수 세기를 그림으로 나타낸 것

스펙트로그램은 주파수마다의 세기가 시간에 따라 어떻게 바뀌는지 보여 줍니다 — 가로축이 시간, 세로축이 주파수, 밝기가 세기입니다. 녹음을 짧게 잘라 조각마다 FFT 를 해서 만듭니다. 소리를 그림으로 바꿔 주므로 소리 인공지능은 흔히 스펙트로그램을 입력으로 받습니다.

로그

원문 표기 · Logarithm (log)

곱셈을 덧셈처럼 다루게 하는 수학 함수(log)

로그는 '몇 제곱하면 이 수가 되나?'에 답합니다 — log₁₀(1000) = 3. 곱셈을 덧셈으로 바꾸고 아주 큰 범위를 작게 줄여 줍니다. 인공지능은 손실에서 씁니다 — 정답 쪽 확률에 로그를 취하면 확률이 작을수록 벌점이 크게 커집니다. 일이 일어난 기록을 뜻하는 '로그(log 파일)'와는 다른 말입니다.

NaN

'숫자가 아님' — 계산이 망가졌다는 표시

NaN 은 '숫자가 아님(Not a Number)'을 뜻하는 특별한 부동소수점 값입니다. 자바스크립트의 0/0 이나 undefined 에 숫자를 더한 것 같은 계산에서 생기고, 한 번 나오면 그 값을 쓰는 모든 계산으로 번집니다. 학습 중 손실이 nan 이 되면 대개 학습률이 너무 높은 것입니다. NaN 은 자기 자신과도 같지 않습니다.

부동소수점

원문 표기 · Floating point

소수를 비트에 근삿값으로 담는 방식

컴퓨터는 IEEE 754 표준대로 실수를 정해진 수의 비트에 담기 때문에 많은 소수가 근삿값으로만 저장됩니다. 파이썬에서 0.1 + 0.2 는 0.30000000000000004 입니다. 이 반올림 오차는 아주 작지만 계산을 거듭하면 쌓일 수 있습니다. 돈은 정수(원·센트)나 decimal 자료형으로 다룹니다.

YAML

들여쓰기로 설정을 적는 글자 형식

YAML 은 이름: 값 줄로 설정을 적는 텍스트 형식이고, 들여쓰기로 무엇이 무엇 안에 드는지 나타냅니다. Docker Compose 파일, GitHub Actions, Flutter 의 pubspec.yaml, SKILL.md 맨 위의 머리말이 모두 YAML 입니다. 들여쓰기는 탭이 아니라 공백으로 하고, 한 칸만 틀려도 뜻이 바뀌거나 파일이 깨집니다.

UUID

거의 겹치지 않는 128비트 고유 번호

UUID(범용 고유 식별자)는 3f2a1bc4-… 처럼 36글자로 쓰는 128비트 번호입니다. 중앙 목록에 묻지 않고 어디서든 만들 수 있고, 무작위로 만든 두 개가 겹칠 일은 사실상 없습니다. 리눅스는 파일 시스템마다 UUID 를 붙이며, /etc/fstab 에는 디스크를 더하면 바뀔 수 있는 sda1 같은 이름보다 UUID 를 쓰는 편이 안전합니다.

더 배우기

UTF-8

모든 언어의 글자를 바이트로 저장하는 표준 방식

컴퓨터는 글자를 숫자로 저장합니다. UTF-8 은 영어 알파벳과 한글부터 아랍 글자, 이모지까지 모든 글자에 1~4바이트짜리 고유한 바이트 묶음을 주는 인코딩입니다. 영어 글자는 1바이트, 한글 한 글자는 3바이트입니다. 요즘 웹 페이지와 코드 파일은 거의 모두 UTF-8 로 저장합니다.

더 배우기

엔디언

원문 표기 · Endianness

숫자의 바이트를 저장하는 순서

1바이트보다 큰 숫자는 여러 바이트로 나뉘어 저장되는데, 엔디언은 그 바이트들의 순서입니다. 리틀 엔디언은 가장 작은 바이트를 먼저, 빅 엔디언은 가장 큰 바이트를 먼저 둡니다. 같은 파일을 쓰고 읽는 프로그램은 순서를 똑같이 맞춰야 하며, 다르면 숫자가 틀리게 나옵니다 — safetensors 는 리틀 엔디언을 씁니다.

더 배우기

PDF

어느 기기에서나 똑같이 보이는 문서 파일

PDF(Portable Document Format)는 어느 컴퓨터나 휴대폰에서 열어도 문서의 쪽·글자·그림이 놓인 그대로 보이는 파일 형식입니다. 그래서 영수증과 기록에 많이 씁니다. SONUB 은 예약 증거를 PDF 로 내려받게 합니다.

JPG(JPEG)

원문 표기 · JPG (JPEG)

세부를 덜어 용량을 줄이는 흔한 사진 형식

JPG(JPEG 라고도 씀)는 사진에 가장 많이 쓰는 형식입니다. 눈으로 잘 모르는 세부를 버려 파일을 작게 만들므로, 같은 그림을 여러 번 다시 저장하면 화질이 조금씩 떨어집니다. 투명한 배경은 없고, 그것이 필요하면 PNG 를 씁니다.

PNG

점 하나하나를 그대로 지키는 그림 형식

PNG 는 그림의 픽셀을 하나도 버리지 않고 그대로 저장하며(무손실) 투명한 배경도 가질 수 있어, 스크린샷·로고·글자 그림에 알맞습니다. 사진을 PNG 로 저장하면 보통 같은 사진의 JPG 보다 훨씬 큽니다.

WebP

파일을 대개 더 작게 만드는 웹용 그림 형식

WebP 는 Google 이 웹을 위해 만든 그림 형식입니다. JPG 처럼 줄이거나 PNG 처럼 픽셀을 그대로 지킬 수 있고 투명한 배경도 되며, 보통 둘보다 파일이 작습니다. 요즘 브라우저는 열지만 오래된 프로그램 가운데는 못 여는 것도 있습니다.

MP4

가장 흔한 동영상 파일 형식

MP4 는 가장 흔한 동영상 파일 형식으로, 압축한 화면과 소리를 한 파일에 담아 거의 모든 휴대폰·컴퓨터·브라우저에서 재생됩니다. SONUB 강사는 소개 영상을 50MB 이하의 MP4 로 올리거나, 대신 YouTube 주소를 넣을 수 있습니다.

국가 코드

원문 표기 · Country code

KR·PH 처럼 나라를 나타내는 영문 두 글자

국제 표준 ISO 3166-1 은 나라마다 영문 두 글자 코드를 정해 둡니다 — 한국 KR, 필리핀 PH, 미국 US. 이렇게 적으면 어느 언어에서나 나라 이름이 똑같이 적힙니다. SONUB 은 본인 확인에서 서류를 낸 나라를 이 코드로 받습니다.

SONUB 용어 사전

개발

용어 299개

API

프로그램이 다른 프로그램을 부를 때 쓰는 정해진 창구

API 는 프로그램들 사이에 미리 약속해 둔 창구입니다. 정해진 형식으로 요청을 보내면 정해진 형식으로 답이 옵니다. 상대 프로그램의 속을 볼 일은 없고 창구만 보면 됩니다. API 로 인공지능을 쓴다는 것은 사람이 직접 입력하는 대신 내가 만든 앱이 모델에게 질문한다는 뜻입니다.

API 키

원문 표기 · API key

나를 확인하고 요금을 매기는 비밀 문자열 — 절대 공유 금지

API 키는 누가 부르고 있는지, 요금을 누구에게 청구할지 서비스에 알려 주는 긴 비밀 문자열입니다. 은행 카드 번호처럼 다루세요. 채팅창이나 화면 캡처, 공개 저장소에 붙여 넣는 일은 절대 없어야 합니다. 유출되었다면 제공사 관리 화면에서 그 키를 즉시 삭제하고 새로 발급받으세요.

Git

파일이 바뀐 모든 순간을 기록해 두는 도구

Git 은 프로젝트가 지나온 모든 변화를 기록해 두어, 무엇이 언제 바뀌었는지 보고 원하는 시점으로 되돌아갈 수 있게 해 줍니다. 여러 사람이 같은 파일을 고쳐도 서로의 작업을 덮어쓰지 않게 해 주기도 합니다. Git 은 내 컴퓨터에서 도는 프로그램이고, GitHub 은 그 기록을 보관해 주는 웹사이트입니다. 이름이 비슷해 흔히 헷갈립니다.

더 배우기

저장소(리포지토리)

원문 표기 · Repository

프로젝트 폴더와 그 전체 이력을 합친 하나의 묶음

저장소는 Git 이 지켜보고 있는 프로젝트 폴더와, 그 안에서 일어난 모든 변경 기록을 함께 가리키는 말입니다. 저장소를 복제하면 파일뿐 아니라 그 이력까지 내 컴퓨터로 따라옵니다. 코드가 GitHub 에 있다는 말은 그곳에 복제해 올 수 있는 저장소가 있다는 뜻입니다.

더 배우기

커밋

원문 표기 · Commit

이력에 남기는 저장 지점 하나 — 왜 바꿨는지 메모와 함께

커밋은 프로젝트의 어느 한 순간을 통째로 찍어 둔 것으로, 무엇을 왜 바꿨는지 짧은 메모와 함께 저장됩니다. 커밋은 계속 남아 있어서 언제든 그 시점으로 돌아갈 수 있습니다. 작게 나눈 커밋과 정직한 메모가 이력을 쓸모 있게 만듭니다. 큼직한 덩어리 하나에 수정이라고만 적어 두면 나중에 아무 도움이 되지 않습니다.

더 배우기

브랜치

원문 표기 · Branch

본줄기를 건드리지 않고 따로 작업하는 갈래

브랜치를 만들면 본줄기에서 갈라져 나와 무언가를 시도해 볼 수 있고, 마음에 들 때까지 원래 쪽은 그대로 둘 수 있습니다. 실험이 잘 안 되면 그 브랜치를 버리면 그만이고, 잘 되면 본줄기에 합칩니다. 여러 사람이 서로 방해하지 않고 동시에 기능을 만들 수 있는 것이 이 덕분입니다.

더 배우기

명령줄(CLI)

원문 표기 · Command line (CLI)

마우스로 누르는 대신 명령을 적어 일하는 방식

명령줄 인터페이스는 메뉴를 눌러 가며 쓰는 대신, 한 줄씩 명령을 적어 조작하는 프로그램입니다. 겉보기에는 휑하지만 정확하고 되풀이하기 쉽습니다. 방금 적은 그 줄을 저장해 두었다가 남에게 주거나 내일 그대로 다시 실행할 수 있으니까요. Git 이나 인공지능 코딩 도구를 비롯한 개발 도구는 대부분 이 방식을 함께 제공합니다.

더 배우기

터미널

원문 표기 · Terminal

명령을 적어 넣는 그 검은 창

터미널은 명령을 입력할 자리를 내어 주고 그 결과를 보여 주는 프로그램입니다. 맥에서는 터미널, 윈도우에서는 Windows 터미널이나 PowerShell 이라고 부릅니다. 거기에 무언가를 적는다고 해서 그 자체로 위험한 일이 벌어지지는 않고, 창은 언제든 닫아도 됩니다. 처음 배우는 사람이 느끼는 두려움은 실제 위험에 비해 훨씬 큽니다.

더 배우기

알고리즘

원문 표기 · Algorithm

정해진 순서를 따르면 늘 같은 결과에 이르는 절차

알고리즘은 입력을 결과로 바꾸는, 끝이 있는 단계들의 목록입니다. 요리법과 같지요. 이름을 가나다순으로 정렬하는 것, 가장 짧은 길을 찾는 것이 모두 알고리즘입니다. 말은 딱딱하게 들리지만 우리도 매일 알고리즘을 따르고 있습니다. 컴퓨터는 그저 지루해하지도, 한 줄을 건너뛰지도 않고 그대로 따를 뿐입니다.

라이브러리

원문 표기 · Library

남이 미리 만들어 둔, 가져다 쓰기만 하면 되는 코드 묶음

라이브러리는 다른 사람들이 만들어 검증해 둔 코드 묶음으로, 내 프로젝트에 가져다 붙여 이미 풀린 문제를 다시 풀지 않게 해 줍니다. 날짜를 읽고, 그래프를 그리고, 메일을 보내는 일은 이미 누군가 잘 해 놓았습니다. 좋은 라이브러리를 고르는 것도 실력입니다. 내 프로그램이 그쪽의 장점뿐 아니라 결함까지 함께 물려받기 때문입니다.

오픈소스

원문 표기 · Open source

누구나 코드를 읽고 쓰고 고칠 수 있게 공개한 소프트웨어

오픈소스 소프트웨어는 소스 코드를 공개하고, 누구나 읽고 실행하고 고칠 수 있도록 라이선스를 붙입니다. 이렇게 열어 두었기에 모르는 사람이 문제를 찾아 주고, 한 회사에 묶이지 않을 수 있습니다. 공개라고 해서 아무 의무가 없는 것은 아닙니다. 라이선스마다 조건이 다르므로 어떤 것이 붙어 있는지 확인해 볼 만합니다.

디버깅

원문 표기 · Debugging

프로그램이 왜 잘못 도는지 좇아가 바로잡는 일

디버깅은 프로그램이 의도와 다르게 도는 이유를 찾아내고 바로잡는 일입니다. 대부분은 기발한 수정이 아니라 차분히 범위를 좁히는 작업입니다. 실제로 무슨 일이 일어났는지, 무엇을 기대했는지, 그 둘이 처음으로 어긋나는 지점이 어디인지를 보는 것이지요. 처음 배우는 사람은 디버깅을 실패의 증거로 여기지만, 사실 프로그래밍의 더 큰 절반이 이것입니다.

오류 메시지

원문 표기 · Error message

무언가 잘못됐을 때 프로그램이 보여 주는 글

오류 메시지는 프로그램이나 브라우저가 코드가 시킨 일을 하지 못할 때 보여 주는 글이에요. 보통 무엇이 어디서 잘못됐는지 — 흔히 몇 번째 줄인지 — 를 알려 줘요. 무서워 보이지만 가장 쓸모 있는 단서예요. 첫 줄을 읽거나, 인공지능에게 붙여 넣고 무슨 뜻인지 물어보세요.

더 배우기

파이썬(Python)

인공지능 개발에 널리 쓰는 쉬운 언어

파이썬은 영어 문장처럼 읽히는 코드로 잘 알려진 프로그래밍 언어입니다. 데이터 분석과 인공지능에서 가장 많이 쓰이며, PyTorch·NumPy 같은 인공지능 라이브러리 대부분을 파이썬에서 불러 씁니다. 이 사이트에서는 아무것도 설치하지 않고 브라우저 안에서 진짜 파이썬을 돌려 볼 수 있습니다.

더 배우기

프로그램

원문 표기 · Program

컴퓨터가 순서대로 따르는 명령의 묶음

프로그램은 컴퓨터에게 무엇을 어떤 순서로 할지 알려 주는 명령의 목록입니다. 앱·게임·웹사이트가 모두 프로그램이고, 인공지능 챗봇도 프로그램입니다. 컴퓨터는 프로그램에 적힌 대로만 움직이므로, 프로그램이 이상하게 굴면 원인은 그 명령이나 받은 입력 안에 있습니다.

코드

원문 표기 · Code

프로그래밍 언어로 적은 명령문

코드는 파이썬·자바스크립트 같은 프로그래밍 언어로 적은 프로그램의 글입니다. 사람이 쓰고 컴퓨터가 실행합니다. 코드는 그 언어의 규칙을 정확히 지켜야 해서, 괄호 하나만 빠져도 돌지 않을 수 있습니다. 코드를 쓰는 일을 코딩이라고 하며, 인공지능 도구도 코드를 쓰지만 확인은 사람이 해야 합니다.

코드 편집기(code editor)

원문 표기 · Code editor

코드를 쓰고 고치는 프로그램

코드 편집기는 코드 파일을 쓰고 고치는 프로그램입니다. 코드의 부분마다 색을 달리 칠해 주고, 쓰는 동안 실수를 짚어 주며, 터미널을 품고 있는 경우도 많습니다. 무료로 널리 쓰는 VS Code(Visual Studio Code)가 대표적이고, 인공지능 코딩 도구도 흔히 여기에 확장으로 붙여 씁니다.

순서도(flowchart)

원문 표기 · Flowchart

일의 순서를 상자와 화살표로 그린 그림

순서도는 일의 단계를 상자로 그리고 화살표로 이은 그림입니다. 둥근 칸은 시작과 끝, 네모 칸은 할 일, 마름모 칸은 예·아니요로 답하는 질문이며 여기서 길이 갈립니다. 프로그램을 만들기 전에 순서도를 그리면 무엇이 어떤 순서로 일어나야 하는지 또렷해집니다.

더 배우기

입력과 출력

원문 표기 · Input and output

프로그램에 들어가는 것과 나오는 것

입력은 프로그램이 받는 것으로, 키보드로 친 글자·마우스 클릭·파일·질문이 모두 입력입니다. 출력은 프로그램이 돌려주는 것으로, 화면의 글자·소리·저장된 파일이 그렇습니다. 그 사이에서 프로그램이 입력을 처리합니다. 인공지능 챗봇도 같아서, 내 질문이 입력이고 돌아온 답이 출력입니다.

프로그래밍 문법

원문 표기 · Syntax

코드를 써야 하는 정확한 규칙

문법은 프로그래밍 언어의 글쓰기 규칙으로, 괄호·콜론·따옴표·빈칸이 어디에 와야 하는지 정합니다. 컴퓨터는 무슨 뜻이었는지 짐작하지 않으므로, 따옴표 하나만 빠져도 문법 오류가 나고 코드가 아예 돌지 않습니다. 오류 메시지가 보통 그 줄을 가리키니 거기부터 봅니다.

런타임

원문 표기 · Runtime

코드나 모델을 실제로 돌려 주는 프로그램

런타임은 따로 쓰인 코드나 파일을 실제로 실행해 주는 프로그램입니다. Node.js 는 브라우저 밖에서 자바스크립트를 돌리고, Pyodide 는 브라우저 안에서 파이썬을 돌리며, llama.cpp 는 인공지능 모델 파일을 읽어 계산합니다. "실행하는 동안"이라는 뜻으로도 써서, 실행해야만 드러나는 오류를 런타임 오류라고 부릅니다.

프레임워크

원문 표기 · Framework

내 코드를 채워 넣는 미리 짜인 뼈대

프레임워크는 앱을 어떻게 짤지 이미 정해 둔 큰 코드 묶음이고, 나는 그것이 알맞은 때에 부를 조각을 씁니다. 라이브러리는 반대로 내 코드가 필요할 때 부릅니다. 웹 프레임워크는 일을 크게 덜어 주지만, 그 밑에서는 여전히 평범한 HTTP 로 요청을 읽고 응답을 씁니다. 그래서 이 사이트는 그 한 바퀴를 먼저 보여 줍니다.

더 배우기

SDK

플랫폼 위에서 만들 때 쓰는 코드·도구 묶음

SDK 는 소프트웨어 개발 키트(software development kit)의 줄임말입니다. 플랫폼이 나눠 주는 것으로, 클라우드 저장·순위표·로그인 같은 기능을 처음부터 짜지 않고 내 프로그램에서 쓰게 해 줍니다. 보통 그 플랫폼의 API 를 부르는 라이브러리와 설명서, 예제가 들어 있습니다. 이 사이트에서는 게임에 SDK 를 알아서 넣어 주는 Cadeplay 에서 만납니다.

더 배우기

빌드

원문 표기 · Build step

소스 코드를 실행·배포할 파일로 만드는 일

빌드는 내가 쓴 코드를 실제로 돌아갈 완성 파일로 바꾸는 일입니다. 예를 들어 React 프로젝트를 dist 폴더 안의 평범한 HTML · CSS · 자바스크립트로 줄여 냅니다. 이 단계를 맡는 것이 빌드 도구입니다. 그렇게 나온 결과물도 빌드라고 불러서, "새 빌드"는 게임이나 앱의 새로 묶은 판을 뜻합니다. 빌드 결과물은 매번 다시 만들 수 있으니 깃에 넣지 않습니다.

더 배우기

게임 엔진

원문 표기 · Game engine

게임을 돌리는 공통된 일을 맡는 소프트웨어

게임 엔진은 거의 모든 게임에 필요한 일을 맡습니다 — 화면 그리기, 입력 읽기, 소리 내기, 물리 계산, 그림과 소리 불러오기. 나는 그 위에 내 게임의 규칙과 그림을 얹습니다. Godot · Unity · Unreal 과 Flutter 위의 Flame 이 잘 알려진 예입니다. 많은 엔진이 프로젝트 하나를 웹 · 휴대폰 · 데스크톱으로 내보낼 수 있습니다.

더 배우기

MVP

사람들이 실제로 쓸 수 있는 가장 작은 판

MVP 는 최소 기능 제품(minimum viable product)의 줄임말입니다. 게임에서는 최소한 플레이 가능한 게임, 곧 작지만 처음 보는 사람이 도움 없이 처음부터 끝까지 해 볼 수 있는 게임을 뜻합니다. 데모나 밑그림이 아닙니다. MVP 를 일찍 내놓으면 혼자 몇 달 일해도 얻지 못할 진짜 플레이어의 정직한 반응을 얻습니다.

더 배우기

.env 파일

원문 표기 · .env file

비밀 값을 코드 밖에 두는 파일

.env 파일은 토큰이나 비밀번호 같은 값을 이름=값 꼴로 한 줄씩 적어 프로젝트 폴더에 두는 평범한 글 파일입니다. 프로그램은 값을 이름으로 읽으므로 비밀 자체는 코드에 나오지 않습니다. 이 파일은 .gitignore 에 적어 저장소에 들어가지 않게 해야 하고, 한 번이라도 올라간 비밀은 새어 나갔다고 보고 바꿔야 합니다.

CI(지속적 통합)

원문 표기 · CI (continuous integration)

코드를 바꿀 때마다 저절로 도는 검사

지속적 통합(CI)은 누군가 공유 저장소에 코드를 올릴 때마다 서버가 저절로 프로젝트를 빌드하고 테스트를 돌리는 방식입니다. 무언가 망가지면 변경을 합치기 전에 몇 분 안에 빨간 표시로 알 수 있습니다. GitHub Actions 가 널리 쓰이는 CI 서비스입니다.

버전 관리 도구

원문 표기 · Version control

파일의 모든 변경을 기록해 두는 도구

버전 관리 도구는 파일이 바뀔 때마다 누가·언제·왜 바꿨는지와 함께 기록해 두는 프로그램입니다. 그러면 두 시점을 비교하거나 예전 상태로 돌아갈 수 있고, 여러 사람이 같은 프로젝트를 안전하게 고칠 수 있습니다. 오늘날 가장 널리 쓰는 버전 관리 도구가 Git 입니다.

더 배우기

GitHub

Git 저장소를 인터넷에 보관하는 웹사이트

GitHub 은 Git 저장소의 사본을 인터넷에 보관해, 한 팀이 프로젝트 하나를 함께 쓰게 해 주는 웹사이트입니다. 보관만이 아니라 변경을 검토하는 Pull Request, 할 일 목록(이슈), 자동 검사도 제공합니다. Git 은 내 컴퓨터의 도구이고, GitHub 은 GitLab 처럼 저장소를 온라인에 두는 여러 서비스 가운데 하나입니다.

더 배우기

Pull Request(PR)

원문 표기 · Pull request (PR)

내 브랜치를 검토해 합쳐 달라는 요청

Pull Request(PR)는 GitHub 같은 사이트에서 내 브랜치의 변경을 main 브랜치에 합쳐 달라고 팀에 요청하는 페이지입니다. 리뷰어가 diff 를 읽고 의견을 남긴 뒤 승인하며, 커밋을 더 올리면 같은 PR 이 갱신됩니다. 코드를 검사받는 시험이라기보다 무엇을 왜 바꿨는지 나누는 자리입니다.

더 배우기

diff

원문 표기 · Diff

무엇이 바뀌었는지 줄 단위로 보여 주는 것

diff 는 두 버전 사이의 차이를 보여 줍니다. - 로 시작하는 줄은 지운 것, + 로 시작하는 줄은 더한 것입니다. git diff 는 아직 스테이징하지 않은 변경을, git diff --staged 는 곧 커밋될 변경을 보여 줍니다. 커밋하기 전마다 diff 를 읽는 것이 실수를 잡는 가장 쉬운 방법이며, 인공지능이 고친 코드도 마찬가지입니다.

더 배우기

.gitignore

Git 이 추적하지 않을 것을 적은 파일

.gitignore 는 Git 이 무시할 파일과 폴더를 적어 두는 글자 파일로, node_modules, 빌드 결과물, 비밀 값이 든 .env 같은 것을 적습니다. 한 줄에 패턴 하나이며, 끝의 / 는 폴더, * 는 아무 이름을 뜻합니다. 이미 커밋된 파일에는 효과가 없으니 git rm --cached 로 먼저 추적에서 빼야 합니다.

더 배우기

스냅샷(snapshot)

원문 표기 · Snapshot

어느 한 순간 모든 파일의 모습

스냅샷은 어느 한 순간 프로젝트의 모든 파일 상태를 담은 기록입니다. Git 의 커밋 하나하나는 바뀐 부분의 목록이 아니라 스냅샷이며, 바뀌지 않은 파일은 이미 저장된 것을 가리키기만 해서 크기가 커지지 않습니다. 그래서 Git 은 어느 커밋으로든 곧바로 돌아가고 두 시점을 빠르게 비교할 수 있습니다.

더 배우기

작업 디렉터리(working tree)

원문 표기 · Working tree

내가 보고 고치는 실제 파일들

작업 디렉터리는 내가 열어 보고 고치는 실제 파일이 있는 프로젝트 폴더입니다. Git 은 이것을 마지막 커밋과 비교해 무엇이 바뀌었는지 알려 줍니다. 변경이 놓이는 세 공간(작업 디렉터리·스테이징 영역·저장소) 가운데 하나이며, 바뀐 것이 어디에 있는지는 git status 로 봅니다.

더 배우기

스테이징 영역(staging area)

원문 표기 · Staging area

다음 커밋에 담을 변경을 모아 두는 곳

스테이징 영역(index)은 다음 커밋에 넣으려고 골라 둔 변경을 모아 두는 곳입니다. git add 로 변경을 여기에 올리고, git commit 은 스테이징에 있는 것만 저장합니다. 이 중간 단계 덕분에 파일 다섯 개를 고쳤어도 서로 관련된 두 개만 골라 커밋할 수 있어 이력이 읽기 쉬워집니다.

더 배우기

복제(clone)

원문 표기 · Clone

저장소를 통째로 내 컴퓨터에 복사하기

복제(clone)는 GitHub 같은 곳에 있는 저장소를 파일과 전체 이력까지 통째로 내 컴퓨터에 복사하는 일입니다. Git 은 어디서 복제했는지를 origin 이라는 원격으로 기억해 두므로, 나중에 새 변경을 받거나 내 커밋을 올릴 수 있습니다. 복제는 처음 한 번만 하고, 그 뒤로는 git pull 로 최신 상태를 받습니다.

더 배우기

원격 저장소(remote)

원문 표기 · Remote

다른 컴퓨터에 있는 같은 저장소

원격 저장소는 대개 GitHub 에 있는 같은 저장소의 또 다른 사본으로, 모두가 만나기로 약속한 곳입니다. 관례상 이름은 origin 입니다. git push 로 내 커밋을 보내고, git pull 이나 git fetch 로 남의 커밋을 받아 옵니다. 내 컴퓨터에서 하던 방식은 그대로이고, 원격은 그저 만나는 자리입니다.

더 배우기

푸시(push)

원문 표기 · Push

내 커밋을 원격 저장소에 올리기

푸시는 내 브랜치의 커밋을 원격 저장소에 올려 다른 사람이 볼 수 있게 하는 일입니다. 처음에 git push -u origin main 으로 올리면 브랜치가 짝지어져 다음부터는 git push 만 쳐도 됩니다. 다른 사람이 먼저 올렸다면 그 커밋을 받기 전까지 Git 이 거절합니다. git push --force 는 남의 커밋을 덮어쓰므로 공유 브랜치에서는 쓰지 않습니다.

더 배우기

풀(pull)

원문 표기 · Pull

원격의 새 커밋을 받아 합치기

풀은 원격 저장소의 새 커밋을 받아 와 곧바로 지금 브랜치에 합치는 일입니다. git fetch 다음에 병합을 하는 것과 같아서, 같은 줄을 나도 고쳤다면 충돌이 날 수 있습니다. git pull --rebase 는 내 커밋을 받아 온 것 위로 다시 얹어 이력을 한 줄로 유지합니다.

더 배우기

페치(fetch)

원문 표기 · Fetch

합치지 않고 원격의 커밋만 받아 오기

페치는 원격 저장소의 최신 커밋을 받아 오되 내 브랜치는 건드리지 않습니다. 받은 내용은 origin/main 같은 이름 아래 기다리므로, 먼저 살펴보고 합칠지 정할 수 있습니다. 그래서 남이 무엇을 올렸는지 안전하게 보는 방법이며, git pull 은 페치에 병합을 곧바로 더한 것입니다.

더 배우기

병합(merge)

원문 표기 · Merge

두 브랜치의 작업을 하나로 합치기

병합은 한 브랜치의 커밋을 다른 브랜치에 합치는 일로, 보통 다 만든 기능 브랜치를 main 에 합칩니다. 두 브랜치가 서로 다른 곳을 고쳤으면 Git 이 알아서 합치고, 같은 줄을 서로 다르게 고쳤으면 충돌로 멈추고 사람의 결정을 기다립니다. 병합은 이력을 실제로 일어난 그대로 남깁니다.

더 배우기

충돌(conflict)

원문 표기 · Conflict

두 변경이 같은 줄을 건드린 상태

충돌은 두 브랜치가 한 파일의 같은 줄을 서로 다르게 고쳐서 Git 이 어느 쪽을 남길지 정할 수 없을 때 생깁니다. Git 은 멈추고 그 자리에 <<<<<<<, =======, >>>>>>> 표시를 넣습니다. 올바른 내용으로 고치고 표시 줄을 지운 뒤 git add 하고 커밋하면 됩니다. 충돌은 오류가 아니라 사람이 결정하라는 신호입니다.

더 배우기

포크(fork)

원문 표기 · Fork

남의 저장소를 내 계정으로 복사한 것

포크는 다른 사람의 저장소를 내 계정 아래로 복사한 것으로, 주로 GitHub 에서 만듭니다. 내 것이 아닌 프로젝트에는 직접 올릴 수 없으므로, 내 포크에 올린 뒤 원본 저장소로 Pull Request 를 보냅니다. 오픈소스 프로젝트에 기여하는 흔한 방법입니다.

더 배우기

리베이스(rebase)

원문 표기 · Rebase

내 커밋을 다른 지점 위로 옮겨 얹기

리베이스는 내 커밋들을 다른 커밋 위로 옮겨 다시 얹어 이력을 한 줄로 정리합니다. git rebase -i 로는 공유하기 전에 커밋을 합치거나 메시지를 고치거나 순서를 바꿀 수 있습니다. 리베이스는 옛 커밋 대신 새 커밋을 만들므로, 이미 다른 사람과 공유한 커밋에는 쓰지 않습니다.

더 배우기

HEAD

지금 이력의 어디에 있는지 가리키는 표시

HEAD 는 지금 내가 서 있는 커밋을 가리키는 Git 의 이름으로, 보통 지금 브랜치의 가장 최근 커밋입니다. 많은 명령이 여기서부터 셉니다. HEAD~1 은 한 커밋 전, HEAD~3 은 세 커밋 전입니다. git reflog 에는 HEAD 가 지나온 모든 자리가 남아 있어, 잃어버린 커밋을 되찾을 때 씁니다.

더 배우기

변수(variable)

원문 표기 · Variable

값에 붙인 이름

변수는 나중에 다시 쓰려고 값에 붙여 둔 이름입니다. 파이썬에서는 이름 = 값 으로 담는데, 여기서 = 는 같다가 아니라 이 이름에 이 값을 넣으라는 뜻입니다. 변수에 담긴 값은 언제든 바꿀 수 있고, 값을 적을 자리마다 이름을 대신 쓸 수 있습니다.

더 배우기

함수(function)

원문 표기 · Function

이름을 붙여 다시 쓰는 코드 묶음

함수는 이름을 붙인 코드 묶음으로, 필요할 때마다 다시 실행할 수 있습니다. 파이썬에서는 def 로 만들고, 괄호 안에 받을 값을 적고, return 으로 값을 돌려줍니다. print() 와 len() 도 파이썬에 들어 있는 함수이고, def 로 나만의 함수를 만들 수 있습니다.

더 배우기

조건(condition)

원문 표기 · Condition

실행할 코드를 정하는 참·거짓 질문

조건은 score >= 60 처럼 답이 True(참) 또는 False(거짓)인 질문입니다. if 문은 조건이 True 일 때만 그 안의 줄을 실행하고, else 는 나머지 경우를 맡습니다. 안쪽 줄은 빈칸 4칸 들여쓰기를 해야 파이썬이 if 의 범위를 가릅니다.

더 배우기

반복(loop)

원문 표기 · Loop

같은 코드를 되풀이하는 것

반복(루프)은 같은 줄을 여러 번 실행합니다. for 반복은 range(1, 11) 의 숫자나 리스트의 항목을 하나씩 차례로 돌고, while 반복은 조건이 True 인 동안 계속합니다. 그래서 조건이 끝내 False 가 되지 않으면 멈추지 않습니다.

더 배우기

들여쓰기(indentation)

원문 표기 · Indentation

코드를 묶는 줄 앞의 빈칸

들여쓰기는 줄 맨 앞에 두는 빈칸입니다. 파이썬에서는 규칙의 일부라서, if·for·def 아래의 줄은 보통 빈칸 4칸 들여써야 그 안에 속한다는 것이 드러납니다. 들여써야 할 줄을 들여쓰지 않거나 칸 수가 어긋나면 파이썬은 IndentationError 를 내고 멈춥니다.

더 배우기

리스트(list)

원문 표기 · List

[ ] 안에 순서대로 모은 값들

리스트는 여러 값을 대괄호 [ ] 안에 순서대로 한데 담습니다. 항목마다 0부터 시작하는 자리 번호가 있어서 fruits[0] 이 첫 항목입니다. append() 로 항목을 더하고, len() 으로 개수를 세고, for 반복으로 하나씩 꺼내 쓸 수 있습니다.

더 배우기

딕셔너리(dictionary)

원문 표기 · Dictionary

{ } 안에 열쇠와 값을 짝지은 것

딕셔너리는 {"math": 80} 처럼 열쇠(key)와 값(value)의 짝을 중괄호 안에 담습니다. 자리 번호가 아니라 열쇠로 값을 찾아서, scores["math"] 는 80 을 돌려줍니다. 새 열쇠에 값을 넣으면 짝이 늘고, 열쇠는 서로 겹칠 수 없습니다. 코드에서는 줄여서 dict 라고도 부릅니다.

더 배우기

액세스 토큰

원문 표기 · Access token

도구가 내 계정을 쓰게 해 주는 비밀 문자열

액세스 토큰은 서비스가 내어 주는 긴 비밀 문자열로, 비밀번호 없이도 내 도구가 내 계정을 쓰게 해 줍니다. 예를 들어 게임을 Cadeplay 에 올릴 때 씁니다. 비밀번호처럼 다루세요 — .env 파일에 두고, 대화창이나 코드에는 붙여 넣지 말고, 새어 나가면 그 서비스의 콘솔에서 지웁니다. 인공지능이 글을 셀 때 쓰는 토큰과는 전혀 다른 것입니다.

더 배우기

게임 루프

원문 표기 · Game loop

게임이 1초에 여러 번 되풀이하는 순환: 입력 읽기, 세계 갱신, 화면 그리기.

게임 루프는 모든 게임의 심장입니다. 한 바퀴마다 플레이어의 입력을 읽고, 위치·충돌·점수를 갱신하고, 새 그림을 그립니다. 한 바퀴가 프레임 하나입니다. 엔진이 루프를 대신 돌려 주고, 우리는 그 안에서 일어날 일을 씁니다.

더 배우기

FPS (초당 프레임 수)

원문 표기 · FPS (frames per second)

게임이 1초에 새 그림을 몇 장 그리는지.

FPS 는 게임 루프가 1초에 몇 번 끝나 새 프레임을 보여 주는지 셉니다. 60 FPS 는 16.7밀리초마다 한 장이라 부드럽게 느껴지고, 30 아래로 떨어지면 끊기기 시작합니다. 무거운 그리기나 갱신의 느린 코드가 FPS 를 떨어뜨립니다.

더 배우기

스프라이트

원문 표기 · Sprite

캐릭터·동전·총알처럼 게임 화면에서 움직이는 작은 그림.

스프라이트는 게임이 프레임마다 어떤 자리에 그리는 2D 그림입니다. 걷는 캐릭터는 흔히 스프라이트 시트 — 차례로 보여 주면 애니메이션이 되는 그림 띠 — 하나로 만듭니다. 스프라이트에는 보통 충돌을 확인할 히트박스가 붙어 있습니다.

더 배우기

충돌 판정

원문 표기 · Collision detection

게임 속 두 물체가 닿았는지, 히트박스라는 보이지 않는 상자로 프레임마다 확인하는 일.

충돌 판정은 플레이어가 발판에 올라섰는지, 동전을 주웠는지, 맞았는지를 정합니다. 가장 쉬운 방법은 스프라이트마다 사각형(히트박스)을 주고 두 사각형이 겹치는지 보는 것입니다. 엔진의 물리 시스템이 이 일을 대신 해 주기도 합니다.

더 배우기

델타 타임

원문 표기 · Delta time

지난 프레임 뒤로 흐른 시간. 어느 기기에서나 게임이 같은 속도로 돌게 하는 데 씁니다.

화면마다 새로 고치는 빠르기가 달라서 프레임마다 걸리는 시간이 같지 않습니다. 속도에 델타 타임(dt)을 곱하면 프레임당 거리가 아니라 초당 거리로 움직입니다. 이것이 없으면 빠른 모니터에서는 게임이 빨라지고 느린 휴대폰에서는 느려집니다.

더 배우기

워크플로

원문 표기 · Workflow

정해진 순서대로 단계를 밟는 작업 흐름

워크플로는 늘 같은 순서로 도는 일의 단계 묶음입니다. AI 설계에서 워크플로는 미리 적어 둔 길을 따라가고, 에이전트는 다음 단계를 스스로 정한다는 점이 다릅니다. GitHub 에서 워크플로는 .github/workflows/ 에 두는 YAML 파일로, 테스트를 돌리거나 댓글이 달리면 Claude 에게 이슈를 고치게 하는 단계를 자동으로 실행합니다.

개인정보처리방침

원문 표기 · Privacy policy

앱이 개인정보를 어떻게 쓰는지 밝힌 글

개인정보처리방침은 앱이나 사이트가 어떤 개인정보를 왜 모으고, 누구와 나누며, 사용자가 어떻게 지울 수 있는지 밝힌 공개 페이지입니다. 앱 스토어는 앱을 올리기 전에 이 페이지 주소를 요구하고, 심사원은 내용이 앱의 실제 동작과 맞는지 봅니다. 많은 나라의 법도 이것을 요구합니다.

더 배우기

Babylon.js

웹 브라우저 안에서 도는 무료 3D 게임 엔진

Babylon.js 는 웹 페이지 안에서 도는 3D 게임·장면을 만드는 오픈소스 엔진으로, 물리·애니메이션·조명·3D 모델 불러오기가 들어 있습니다. TypeScript 로 쓰였고 JavaScript 로도 씁니다. 브라우저가 곧 실행 환경이라 플레이어는 설치 없이 링크 하나로 게임을 엽니다.

더 배우기

Construct

코드 없이도 브라우저에서 만드는 2D 게임 엔진

Construct 는 웹 브라우저에서 쓰는 2D 게임 엔진입니다. 코드를 치는 대신 "이벤트 시트"에 "이 일이 생기면 저것을 한다"를 골라 넣어 규칙을 만듭니다. 더 필요하면 JavaScript 를 섞어 쓸 수 있고, 웹과 다른 플랫폼으로 게임을 내보냅니다.

더 배우기

C++

게임 엔진·브라우저 속에 쓰이는 빠르고 오래된 언어

C++ 는 미리 기계어로 바꿔 두는 프로그래밍 언어라 아주 빠르게 돌고 메모리를 직접 다룹니다. Unreal Engine 같은 게임 엔진, 웹 브라우저, 많은 대형 게임이 이 언어로 쓰였습니다. 대신 어렵습니다 — 메모리를 잘못 다루면 프로그램이 죽고, 배우는 데 오래 걸립니다.

더 배우기

C#

Unity 게임을 만들 때 쓰는 Microsoft 의 프로그래밍 언어

C#(씨샵)은 Microsoft 가 만든 프로그래밍 언어입니다. Unity 게임의 스크립트를 이 언어로 쓰고, Windows 프로그램과 웹 서버에도 씁니다. 메모리를 알아서 치워 주어 C++ 보다 쉽지만, 둘러싼 도구가 많아 따로 배울 것이 적지 않습니다.

더 배우기

Dart

Flutter 앱을 쓰는 Google 의 프로그래밍 언어

Dart 는 Google 이 만든 프로그래밍 언어입니다. Flutter 앱을 이 언어로 쓰므로, Flutter 로 휴대폰 앱을 만들려면 Dart 부터 배웁니다. 모양은 JavaScript·Java 와 비슷하고, 휴대폰용 빠른 기계어나 웹용 JavaScript 로 바꿀 수 있습니다.

더 배우기

Defold

Lua 로 스크립트를 쓰는 가볍고 무료인 게임 엔진

Defold 는 주로 2D 게임을 만드는 무료 게임 엔진으로, 빌드 크기가 작아 휴대폰과 웹에서 빨리 열립니다. 게임 로직은 Lua 로 씁니다. Colyseus 같은 게임 서버가 Defold 용 SDK 를 내놓기 때문에 게임 서버 화면에 나옵니다.

더 배우기

Flutter

한 코드로 휴대폰·웹·데스크톱 앱을 만드는 Google 의 도구

Flutter 는 Google 이 만든 무료 앱 개발 도구입니다. Dart 로 앱을 한 번 쓰면 같은 코드로 iPhone 앱, Android 앱, 웹 페이지, 데스크톱 프로그램을 만듭니다. 화면의 모든 부분이 위젯이고, 위젯 안에 위젯을 넣어 화면 전체를 짭니다.

더 배우기

Flame

Flutter 위에 올라간 무료 2D 게임 엔진

Flame 은 Flutter 안에서 도는 오픈소스 2D 게임 엔진입니다. 게임 루프·스프라이트·충돌 판정·입력 처리처럼 Flutter 에 없는 게임용 부품을 더해 주고, 게임 둘레의 메뉴는 평소의 Flutter 위젯으로 만듭니다. 2D 전용이므로 3D 게임은 이것으로 계획하지 않습니다.

더 배우기

Godot

2D·3D 게임을 만드는 무료 오픈소스 엔진

Godot 는 MIT 라이선스의 오픈소스라 누구나 무료로 쓰고, 게임을 팔아도 수수료가 없는 게임 엔진입니다. 2D·3D 게임을 모두 만들고, 게임 코드는 파이썬과 닮은 GDScript 나 C# 으로 씁니다. 평범한 노트북에서도 돌 만큼 가볍습니다.

더 배우기

Go

서버에 많이 쓰는 Google 의 프로그래밍 언어

Go(Golang 이라고도 부릅니다)는 Google 에서 만든 프로그래밍 언어입니다. Go 프로그램은 실행 파일 하나로 바뀌어 빠르게 돌고 많은 연결을 한꺼번에 다루므로 서버에 많이 씁니다. Nakama 게임 서버가 Go 로 쓰였고, 내 Go 모듈을 붙여 기능을 늘릴 수 있습니다.

더 배우기

Haxe

한 코드를 여러 다른 언어로 바꿔 내는 프로그래밍 언어

Haxe 는 같은 코드를 JavaScript·C++·C# 같은 여러 대상으로 바꿔 주는 오픈소스 프로그래밍 언어입니다. 게임 개발자는 게임 하나를 웹·데스크톱·휴대폰에 내려고 씁니다. 몇몇 게임 서버가 Haxe 용 SDK 를 내놓아 게임 서버 화면에 나옵니다.

더 배우기

Lua

게임 속에 끼워 쓰기 쉬운 작은 스크립트 언어

Lua 는 프로그램이 안에 품고 다닐 수 있는 가볍고 단순한 스크립트 언어입니다. 게임 엔진과 서버가 Lua 를 품어 두면, 프로그램 전체를 다시 만들지 않고도 게임 규칙을 쓰고 고칠 수 있습니다. Defold 가 Lua 를 쓰고, Nakama 서버는 Go·TypeScript 와 함께 Lua 모듈도 받습니다.

더 배우기

Phaser

브라우저 2D 게임을 만드는 무료 JavaScript 프레임워크

Phaser 는 웹 브라우저에서 도는 2D 게임을 JavaScript 나 TypeScript 로 만드는 오픈소스 프레임워크입니다. 게임 루프를 대신 돌려 주고 스프라이트·물리·소리·입력을 갖춰 주므로, 매 프레임 무슨 일이 일어날지만 쓰면 됩니다. 첫 웹 게임을 많이 이것으로 만듭니다.

더 배우기

PixiJS

브라우저에서 2D 그림을 빠르게 그리는 JavaScript 라이브러리

PixiJS 는 그래픽 칩을 써서 웹 페이지에 2D 그림과 스프라이트를 아주 빠르게 그리는 오픈소스 라이브러리입니다. 그리기만 하고 물리·소리·게임 규칙은 없으므로, 완전한 게임 엔진이 아니라 그리기 라이브러리입니다. 그 부분은 게임이 직접 더하거나 Phaser 같은 엔진을 씁니다.

더 배우기

Unity

모바일·PC·콘솔 게임에 널리 쓰고 가르치는 게임 엔진

Unity 는 모바일 게임의 큰 몫과 많은 PC·콘솔 게임을 만드는 게임 엔진입니다. 편집기에서 장면을 꾸미고 게임 스크립트는 C# 으로 씁니다. 웹(WebGL)을 포함해 거의 모든 플랫폼으로 내보낼 수 있어 많은 강좌가 가르칩니다. 아주 작은 첫 게임에는 무겁습니다.

더 배우기

Unreal Engine

고품질 3D 게임을 만드는 Epic Games 의 엔진

Unreal Engine 은 Epic Games 의 게임 엔진으로, 사실 같은 조명·재질·큰 3D 세계처럼 화면 품질이 가장 중요할 때 고릅니다. 게임 코드는 C++ 로 쓰거나 블루프린트로 그림처럼 이어 만듭니다. 성능 좋은 컴퓨터가 필요하고 작은 첫 게임에는 너무 큽니다.

더 배우기

블루프린트

원문 표기 · Blueprint

상자를 선으로 이어 게임 로직을 짜는 Unreal Engine 의 방식

블루프린트(Blueprint)는 Unreal Engine 의 시각적 스크립트입니다. 코드를 치는 대신 "키를 눌렀을 때", "소리 내기" 같은 상자(노드)를 놓고 선으로 잇습니다. C++ 없이 게임 로직을 만들 수 있지만, 그림이 커지면 읽기 어려워집니다.

더 배우기

glTF

3D 모델을 주고받는 표준 파일 형식

glTF 는 Khronos Group 이 관리하는 3D 모델용 공개 파일 형식입니다. 모양·재질·텍스처·애니메이션을 한 묶음에 담아 엔진이 빨리 불러올 수 있어 "3D 의 JPEG" 라고도 부릅니다. .gltf(글자 파일 + 따로 있는 파일)나 .glb(모두 든 바이너리 파일 하나)로 씁니다.

더 배우기

TypeScript

타입을 붙여 실행 전에 실수를 잡는 JavaScript

TypeScript 는 JavaScript 에 타입을 더한 언어입니다. 변수마다 어떤 종류의 값이 들어가는지 적어 두면, 검사기가 프로그램을 돌리기 전에 실수를 알려 줍니다. 브라우저는 JavaScript 를 실행하므로 TypeScript 는 먼저 보통의 JavaScript 로 바뀝니다. 큰 웹 앱과 Babylon.js, 많은 게임 서버가 씁니다.

더 배우기

Rust

메모리 실수를 미리 막아 주는 빠른 프로그래밍 언어

Rust 는 C++ 만큼 빠르면서, 컴파일할 때 메모리 쓰는 법을 검사해 여러 종류의 충돌·보안 버그를 실행 전에 막는 프로그래밍 언어입니다. 서버, 명령줄 도구, SpacetimeDB 모듈 같은 게임 백엔드에 씁니다. 규칙이 엄격해 배우는 데 시간이 걸린다고 알려져 있습니다.

더 배우기

PHP

서버에서 웹 페이지를 만들어 내는 프로그래밍 언어

PHP 는 웹 서버에서 돌며 HTML 페이지를 만들어 브라우저에 보내는 프로그래밍 언어입니다. WordPress 를 비롯해 웹의 큰 몫이 PHP 로 돌고, SONUB 도 PHP(Laravel) 프로그램입니다. 방문자는 PHP 코드를 보지 못하고 그것이 만든 페이지만 받습니다.

더 배우기

Vite

웹 프로젝트를 빠르게 만들고 빌드하는 도구

Vite 는 웹 화면 쪽 빌드 도구입니다. 바로 돌아가는 프로젝트(React·Vue 등)를 만들어 주고, 저장하자마자 화면이 바뀌는 개발 서버를 띄우며, 명령 하나로 어느 웹서버든 내놓을 수 있는 최종 파일을 dist 폴더에 만듭니다. Node.js 가 있어야 합니다.

더 배우기

Pyodide

웹 브라우저 안에서 도는 파이썬

Pyodide 는 진짜 파이썬 실행기를 WebAssembly 로 바꿔 웹 페이지 안에서 돌게 한 것입니다. SONUB 의 파이썬 수업이 이것을 써서, 설치 없이 내 컴퓨터에서 코드가 돕니다. 처음 한 번은 실행 환경을 내려받느라 시간이 걸립니다. 컴퓨터의 파이썬처럼 보통의 네트워크 서버나 백그라운드 서비스를 열지는 못합니다.

더 배우기

A/B 테스트

원문 표기 · A/B testing

두 가지 판을 나눠 보여 주고 어느 쪽이 나은지 재기

A/B 테스트는 플레이어를 무작위로 두 무리로 나눠 A 무리에는 지금 판을, B 무리에는 가격·튜토리얼 같은 것을 바꾼 판을 보여 주는 실험입니다. 그다음 "다음 날 다시 온 사람 수"처럼 미리 정한 숫자를 비교합니다. 짐작 대신 재서 고르게 해 주지만, 차이가 뜻을 가지려면 사람이 충분히 많아야 합니다.

더 배우기

연령 등급

원문 표기 · Age rating

게임 내용을 보고 스토어가 매기는 나이 제한

게임을 공개하기 전에 스토어는 콘텐츠 설문을 받습니다 — 싸움·피·도박·모르는 사람과의 채팅이 있는지 예/아니오로 답하는 설문입니다. 이 답으로 "12세 이상" 같은 연령 등급이 정해져 스토어에 표시됩니다. 설문을 빠뜨려 다 만든 게임을 제출하지 못하는 일이 흔하고, 거짓으로 답하면 나중에 게임이 내려갈 수 있습니다.

더 배우기

Apache 2.0

특허까지 함께 허락하는 너그러운 오픈소스 라이선스

Apache License 2.0 은 오픈소스 라이선스입니다. 누구나 코드를 쓰고, 고치고, 팔고, 나눌 수 있고, 공개하지 않는 상업 제품 안에 넣어도 됩니다. 대신 저작권·라이선스 고지를 남기고 내가 고친 파일을 표시해야 합니다. 기여자가 가진 그 코드의 특허도 함께 허락하므로 회사들이 좋아합니다.

더 배우기

에셋

원문 표기 · Asset

게임이 쓰는 그림·소리·모델 같은 파일

에셋(asset)은 코드 말고 게임을 이루는 파일입니다 — 그림, 스프라이트, 효과음, 음악, 3D 모델, 글꼴, 레벨 데이터. 보통 게임 크기의 대부분을 차지합니다. AI 로 만든 것을 포함해 모든 에셋을 쓸 권리가 있어야 하므로, 출시 전에 라이선스를 확인합니다.

더 배우기

배틀패스

원문 표기 · Battle pass

시즌 동안 플레이로 보상 단계를 여는 게임 상품

배틀패스는 몇 주에서 몇 달 동안 이어지는 한 시즌짜리 게임 상품입니다. 게임을 하고 도전 과제를 끝내면 점수가 쌓여 보상 단계가 하나씩 열립니다. 보통 무료 단계와 보상이 더 많은 유료 단계가 있고, 시즌이 끝나면 함께 끝나므로 플레이어가 다시 올 이유가 됩니다.

더 배우기

핵심 루프

원문 표기 · Core loop

플레이어가 되풀이하는 게임의 짧은 행동 순환

핵심 루프는 게임에서 플레이어가 계속 되풀이하는 행동입니다. 예를 들어 장애물을 뛰어넘기 → 동전 줍기 → 빨라지기입니다. 이 순환이 재미없으면 둘레에 무엇을 더해도 게임을 살리지 못하므로 가장 먼저 만들어 시험합니다. 매 프레임 화면을 그리는 코드의 게임 루프와는 다른, 설계의 말입니다.

더 배우기

생태계

원문 표기 · Ecosystem

한 기술을 둘러싼 도구·라이브러리·사람 전체

기술의 생태계는 그 둘레에 자라난 모든 것입니다 — 라이브러리, 편집기, 강좌, 미리 만든 에셋, 게시판, 질문에 답해 주는 사람들. 생태계가 크면 대부분의 문제에 이미 답이 있고, 젊으면 더 많은 것을 직접 만들고 풀어야 합니다. 엔진이나 언어를 고를 때 큰 기준이 됩니다.

더 배우기

경계 사례

원문 표기 · Edge case

드물거나 끝에 걸친, 코드가 잘 깨지는 상황

경계 사례(edge case)는 가능한 범위의 맨 끝에 있는 입력이나 상황입니다 — 빈 이름, 딱 0 인 점수, 저장하는 순간 끊긴 신호, 같은 프레임에 누른 두 키. 코드는 보통의 경우엔 잘 돌다가 여기서 깨지므로, 경계 사례를 나열해 하나씩 시험하면 버그를 일찍 찾습니다. 인공지능은 이것을 나열하는 데 강합니다.

더 배우기

프레임

원문 표기 · Frame

루프 한 바퀴마다 그리는 게임 화면 한 장

게임은 멈춘 그림을 빠르게 이어 그려 움직임을 보입니다. 그 그림 한 장이 프레임입니다 — 프레임마다 입력을 읽고, 위치를 바꾸고, 화면을 그립니다. 초당 60 프레임이면 한 프레임에 약 16 밀리초입니다. 프레임마다 같은 거리만큼 옮기면 빠른 화면에서 게임이 빨라지므로 델타 타임을 씁니다.

더 배우기

밸런싱

원문 표기 · Balancing

게임이 공정하고 재미있게 느껴지도록 난이도·보상 숫자를 맞추기

밸런싱은 게임의 숫자를 맞추는 일입니다 — 점프 높이, 레벨마다 적의 수, 보상의 크기, 아이템 가격. 작은 차이로 게임이 너무 쉽거나, 너무 어렵거나, 불공평해집니다. 인공지능이 시뮬레이션하고 숫자를 제안할 수는 있지만, 알맞게 느껴지는지는 사람이 직접 해 보고 정합니다.

더 배우기

게임 로직

원문 표기 · Game logic

게임 규칙을 실제로 돌리는 코드

게임 로직은 무슨 일이 일어날지 정하는 코드입니다 — 공격이 맞았는지, 점수를 어떻게 세는지, 레벨이 언제 끝나는지, 누가 이기는지. 화면 그리기와 소리 내기는 다른 부분입니다. 온라인 게임에서는 플레이어가 자기 쪽 게임을 고쳐 속이지 못하도록 서버가 게임 로직을 돌리는 일이 많습니다.

더 배우기

라이브

원문 표기 · Go live

올린 빌드를 플레이어가 실제로 받는 판으로 바꾸기

게임 플랫폼에서 빌드를 올리는 것과 라이브로 올리는 것은 다른 단계입니다. 검사를 통과한 빌드도 라이브로 올리기 전까지는 기다리고, 그 순간부터 플레이어가 받는 판이 되어 플레이 주소가 열립니다. 두 단계를 나눠 두어 먼저 살펴볼 수 있고, 문제가 생기면 롤백으로 이전 빌드를 되돌립니다.

더 배우기

길드

원문 표기 · Guild

게임 안에서 함께 노는 플레이어들의 모임

길드(클랜이라고도 합니다)는 플레이어가 게임 안에서 만들고 들어가는 모임으로, 구성원·리더 같은 역할·가입 신청·모임 채팅이 있습니다. 서로 때문에 다시 접속하게 만듭니다. 개발자에게는 게임 서버가 저장하고 관리해야 하는 커뮤니티 기능이라, 서버를 고를 때 중요합니다.

더 배우기

후크

원문 표기 · Hook

기본 동작 앞뒤에 내 코드를 끼워 넣는 정해진 자리

후크(hook)는 프로그램이 정해 둔 순간에 내 코드를 더할 수 있게 열어 둔 자리입니다. Nakama 게임 서버는 모든 기본 호출의 앞뒤에 후크를 걸 수 있습니다 — 계정을 만들기 전에 이름을 검사하거나, 경기가 끝난 뒤 보상을 주는 식입니다. 서버 자체의 코드를 바꾸지 않고 기능을 늘립니다.

더 배우기

인앱 결제

원문 표기 · In-app purchase

스토어를 거쳐 앱 안에서 아이템·기능을 사는 결제

인앱 결제는 코인·광고 없는 판·배틀패스처럼 앱이나 게임 안에서 하는 결제입니다. 휴대폰에서는 스토어의 결제 시스템을 거치고, 스토어가 값의 일부를 가져갑니다. 스토어가 영수증을 돌려주므로, 게임 서버는 아이템을 주기 전에 그 영수증을 검증해야 합니다.

더 배우기

인스펙터

원문 표기 · Inspector

실행 중인 장면을 들여다보고 값을 바꾸는 창

인스펙터는 실행 중인 게임이나 페이지 속 물체를 목록으로 보이고, 위치·크기·색·물리 설정 같은 속성을 보여 주는 디버깅 도구입니다. 값을 바꾸면 다시 시작하지 않아도 결과가 바로 보입니다. Babylon.js, Unity, 브라우저의 개발자 도구에 모두 있습니다.

더 배우기

인터페이스

원문 표기 · Interface

코드가 갖추기로 약속한 함수 목록

프로그래밍에서 인터페이스는 무엇을 어떻게 하는지가 아니라 무엇을 할 수 있는지를 적은 것입니다 — 함수 이름과 입력·출력의 목록. 그 함수들을 갖춘 코드라면 무엇이든 그 자리에 쓸 수 있습니다. Nakama 서버는 Go 모듈에 타입이 붙은 인터페이스를 건네므로, 잘못 부르면 컴파일러가 잡아 줍니다.

더 배우기

리더보드

원문 표기 · Leaderboard

점수 순서로 플레이어를 늘어놓은 순위표

리더보드(순위표)는 점수·시간 같은 숫자로 플레이어 순위를 매긴 표입니다. 새 플레이어에게도 기회가 가도록 매일·매주 초기화하는 일이 많고, 서버는 동점을 어떻게 가를지 정하고 가짜 점수를 보내는 사람을 걸러야 합니다. 게임 쪽이 보내는 값은 고칠 수 있으므로 점수는 서버에서 확인합니다.

더 배우기

라이선스

원문 표기 · License

코드·그림·데이터를 쓸 수 있는 조건

라이선스는 코드·그림·소리·데이터에 붙은 사용 허락 조건입니다 — 써도 되는지, 고쳐도 되는지, 팔아도 되는지, 그 대신 만든 사람 표시처럼 무엇을 해야 하는지. 인터넷에서 찾았다고 써도 되는 것은 아닙니다. MIT·Apache 2.0 같은 오픈소스 라이선스는 많은 것을 허락하지만 저마다 조건이 있습니다.

더 배우기

LiveOps

출시 뒤 이벤트·상점·업데이트로 게임을 운영하는 일

LiveOps(라이브 운영)는 출시한 게임을 계속 살아 있게 하는 일입니다 — 주말 이벤트, 새 상점 아이템, 시즌, 밸런스 조정, A/B 테스트. 새 빌드를 내지 않고 관리 화면에서 바꾸는 일이 많습니다. 몇 년씩 가는 게임은 이것에 기대며, 이 도구를 직접 만들지 않도록 파는 백엔드도 있습니다.

더 배우기

현지화

원문 표기 · Localization

게임의 글과 내용을 언어·문화마다 맞게 바꾸기

현지화(localization)는 번역보다 넓습니다. 낱말 말고도 날짜·숫자·화폐·레이아웃(더 긴 언어, 오른쪽에서 왼쪽으로 읽는 아랍어)과 문화적인 부분을 그 시장에 맞춥니다. 인공지능이 번역 초안을 빨리 만들어 주지만, 출시 전에 그 언어를 아는 사람이 뜻·용어·말투를 확인해야 합니다.

더 배우기

매치메이킹

원문 표기 · Matchmaking

알맞은 플레이어끼리 짝지어 경기를 여는 일

매치메이킹은 온라인 게임에서 누가 누구와 함께 놀지 정하는 일입니다. 매치메이커가 경기를 원하는 플레이어를 모아 비슷한 실력·지역·지연 시간·게임 모드 같은 조건으로 묶습니다. 공정한 경기와 짧은 대기 시간이 목표인데, 두 목표는 서로 당깁니다.

더 배우기

메타 계층

원문 표기 · Meta layer

경기 밖의 기능 — 계정·친구·채팅·저장·순위

게임 서버에서 메타 계층은 실제 경기 판 밖의 기능입니다 — 계정과 로그인, 친구, 길드, 채팅, 진행 저장, 리더보드, 상점. 만들기는 지루하고 미묘하게 틀리기 쉬워서, 몇 달씩 직접 만드는 대신 이것을 이미 갖춘 게임 서버를 고르는 팀이 많습니다.

더 배우기

모듈

원문 표기 · Module

프로그램에 불러 쓰는 따로 떨어진 코드 묶음

모듈은 다른 코드가 불러서 다시 쓸 수 있도록 자기 파일이나 묶음에 따로 담은 코드입니다. 파이썬에서는 `import json` 이 json 모듈을 불러옵니다. Nakama·SpacetimeDB 같은 게임 서버에는 내 모듈을 올려 게임 규칙을 더합니다. 잘못된 모듈 하나가 그것을 품은 프로그램 전체를 멈출 수도 있습니다.

더 배우기

네이티브

원문 표기 · Native

그 기기의 기계어로 바로 도는 것

네이티브 코드는 실행될 프로세서의 기계어로 미리 바뀌어, 중간의 해석기나 다른 층 없이 제 속도로 돕니다. 네이티브 앱은 iPhone 처럼 한 플랫폼에 맞춰 만든 앱입니다. 게임 서버에서 내 로직을 같은 프로세스 안에서 네이티브로 돌리면 빠르지만, 거기서 죽으면 서버 전체가 멈춥니다.

더 배우기

NPC

플레이어가 아니라 컴퓨터가 움직이는 게임 속 등장인물

NPC(non-player character)는 게임이 스스로 움직이는 등장인물입니다 — 상점 주인, 퀘스트를 주는 사람, 적 경비병. 대사는 개발자가 쓰고 행동은 코드의 규칙(흔히 상태 기계)에서 나옵니다. 인공지능이 많은 NPC 의 대사 초안을 빨리 만들지만, 읽고 고르는 일은 사람이 합니다.

더 배우기

물리

원문 표기 · Physics

중력·충돌·움직임을 계산하는 게임 엔진의 부분

게임에서 물리는 물체를 실제 세상과 비슷하게 움직이는 코드입니다 — 중력에 떨어지고, 튀고, 미끄러지고, 부딪히면 멈춥니다. 엔진에 물리 시스템이 들어 있어 계산식을 쓰지 않고 무게·속도·모양만 정하면 됩니다. 정확한 시뮬레이션이 아니라 느낌이 좋도록 맞춘 근삿값입니다.

더 배우기

접속 상태

원문 표기 · Presence

지금 누가 온라인인지 알려 주는 정보

접속 상태(presence)는 사용자마다의 실시간 상태입니다 — 온라인, 오프라인, 경기 중, 자리 비움. 친구 목록과 길드 목록이 이것으로 이름 옆에 초록 점을 보입니다. 서버는 모든 연결을 지켜보다 바뀔 때마다 다른 사람에게 알려야 하는데(보통 WebSocket 으로), 사람이 많아지면 보기보다 어렵습니다.

더 배우기

QA

출시 전에 결함을 찾는 품질 검사

QA(품질 보증)는 플레이어보다 먼저 문제를 찾는 일입니다 — 레벨을 끝까지 해 보고, 이상한 입력을 넣어 보고, 여러 기기에서 시험하고, 버그마다 재현하는 방법을 적습니다. 인공지능은 "저장 기능을 망가뜨리는 스무 가지 방법" 같은 시나리오를 나열해 주지만, 출시해도 될 만큼 좋은지는 사람이 정합니다.

더 배우기

영수증

원문 표기 · Receipt validation

아이템을 주기 전에 확인하는 스토어 결제의 증표

인앱 결제를 하면 스토어가 무엇을 샀는지 증명하는 영수증을 게임에 줍니다. 속이려는 사람은 자기 기기에서 영수증을 꾸밀 수 있으므로, 게임 서버가 영수증을 Apple·Google 서버에 보내 진짜인지, 이미 쓴 것은 아닌지 확인한 뒤에야 아이템을 줍니다. 이것이 영수증 검증이며, Nakama 같은 게임 서버가 대신해 줍니다.

더 배우기

리듀서

원문 표기 · Reducer

SpacetimeDB 에서 데이터베이스 안에서 돌며 테이블을 바꾸는 함수

SpacetimeDB 에서는 데이터베이스가 곧 서버입니다. 모듈을 올리면 그 안의 함수(리듀서)가 데이터베이스 안에서 한 번에 한 묶음(트랜잭션)으로 돌며 테이블을 바꿉니다. 클라이언트는 HTTP 엔드포인트 대신 리듀서를 부르고, 구독한 쪽은 바뀐 줄을 바로 받습니다. Redux 같은 웹 도구에서는 다른 뜻으로 씁니다.

더 배우기

롤백

원문 표기 · Rollback

문제가 생긴 새 판을 이전 판으로 되돌리기

롤백은 배포를 되돌려 전에 잘 돌던 판으로 바꾸는 일입니다. 플랫폼이 이전 빌드를 남겨 두므로, 망가진 업데이트를 서둘러 고치는 대신 몇 초 만에 바꿔 놓을 수 있습니다. 코드는 돌아오지만, 잘못된 판이 이미 바꾼 데이터(저장된 게임 등)는 따로 고쳐야 할 수 있습니다.

더 배우기

결정론적 롤백

원문 표기 · Deterministic rollback

늦게 온 입력에 맞춰 게임을 되감아 다시 계산하는 방식

빠른 온라인 게임에서 모든 플레이어의 입력을 기다리면 느리게 느껴집니다. 롤백 방식에서는 각자 가진 입력으로 게임을 계속 돌리다가, 늦은 입력이 오면 그 프레임으로 되감아 지금까지 빠르게 다시 계산합니다. 같은 입력이면 어느 기계에서나 똑같은 결과가 나와야(결정론적) 이 방식이 됩니다.

더 배우기

RPC

다른 컴퓨터의 함수를 내 것처럼 부르는 방식

RPC(원격 프로시저 호출)는 프로그램이 다른 컴퓨터에 "이 이름의 함수를 이 값으로 돌려 결과를 보내 달라"고 하는 방식입니다. Nakama 서버에는 내 RPC 를 등록하고 게임이 이름으로 부릅니다. MCP 메시지는 JSON-RPC 2.0 을 쓰는데, 호출 하나가 함수 이름과 값이 든 작은 JSON 입니다.

더 배우기

서버 틱

원문 표기 · Tick

게임 서버가 정해진 간격으로 경기를 갱신하는 한 번

게임 서버는 세상을 끊임없이 바꾸지 않고 틱 단위로 한 걸음씩 나아갑니다. 틱마다 도착한 입력을 읽고, 게임 규칙을 적용하고, 새 상태를 플레이어에게 보냅니다. 틱 속도가 높을수록(예: 초당 10번 대신 60번) 반응이 빠르게 느껴지지만 계산과 네트워크 사용이 늘어납니다.

더 배우기

상태 기계

원문 표기 · State machine

한 번에 한 상태에 있고 규칙대로 옮겨 다니는 설계

상태 기계(state machine)는 무언가가 있을 수 있는 상태들과, 상태 사이를 옮기는 규칙을 적어 둔 설계입니다. 게임 캐릭터는 서 있기·달리기·점프·떨어지기 중 하나이고, "달리는 중에 점프 키"가 점프 상태로 옮깁니다. 한 번에 한 상태만 켜지므로 점프하며 웅크리기 같은 말이 안 되는 섞임을 막습니다.

더 배우기

Steam

Valve 가 운영하는 PC 게임 장터

Steam 은 Valve 가 운영하는 가장 큰 PC 게임 장터입니다. 개발자는 해마다 내는 계정비가 아니라 게임마다 비용을 내고, 트레일러·스크린샷·태그로 스토어 페이지를 꾸밉니다. Steam 이 출시 때 찜한 사람들에게 알려 주므로, 출시 전에 모은 찜 목록이 아주 중요합니다.

더 배우기

구독

원문 표기 · Subscribe

데이터가 바뀌면 저절로 알려 달라고 신청해 두기

구독은 어떤 데이터에 관심이 있다고 등록해, 내가 거듭 묻지 않아도 바뀔 때마다 서버가 보내 주게 하는 일입니다. SpacetimeDB 에서는 클라이언트가 쿼리를 구독하면 관심 있는 줄이 바뀌는 순간 도착합니다. WebSocket 처럼 계속 열린 연결이 필요합니다.

더 배우기

테스트 트랙

원문 표기 · Test track

정해 둔 테스터에게만 먼저 빌드를 주는 배포 통로

Google Play 의 출시는 트랙을 거칩니다 — 내부 테스트, 비공개 테스트, 공개 테스트, 프로덕션. 테스트 트랙은 설치 가능한 실제 빌드를 내가 적은 테스터에게만 보내, 모두가 받기 전에 문제를 찾게 합니다. 새 개인 개발자 계정은 프로덕션을 신청하기 전에 테스터 12명 이상이 14일 동안 참여하는 비공개 테스트를 거쳐야 합니다. Apple 의 TestFlight 가 비슷한 일을 합니다.

더 배우기

UI

사람이 보고 만지는 프로그램의 화면 부분

UI(사용자 인터페이스)는 사용자가 보고 다루는 모든 것입니다 — 단추, 메뉴, 글, 아이콘, 입력 칸. 좋은 UI 는 다음에 무엇을 할지 바로 보여 줍니다. UX(사용자 경험)는 쓰는 느낌 전체를 보는 더 넓은 말입니다. 게임에서는 게임 세상 위에 그린 점수·체력 막대·메뉴가 UI 입니다.

더 배우기

위젯

원문 표기 · Widget

화면을 이루는 부품 하나

위젯은 다시 쓸 수 있는 화면 부품 하나입니다 — 단추, 글 한 줄, 목록, 카드, 다른 위젯을 담는 상자. 위젯 안에 위젯을 넣어 화면을 짭니다. Flutter 에서는 화면의 모든 것이 위젯이고, Flame 의 게임 캔버스도 평범한 Flutter 위젯들 사이에 놓입니다.

더 배우기

찜 목록

원문 표기 · Wishlist

출시 전에 관심 있는 게임을 담아 두는 목록

Steam 에서는 나올 게임을 찜 목록(wishlist)에 담아 둘 수 있습니다. 게임이 출시되거나 할인하면 Steam 이 그 사람들에게 알려 주므로, 찜 목록이 첫 주 판매로 이어집니다. 좋은 스토어 페이지와 트레일러로 출시 전에 찜을 모으는 일이, 처음 내는 개발자가 생각하는 것보다 훨씬 중요합니다.

더 배우기

심사

원문 표기 · App review

스토어가 공개 전에 앱을 검사하는 일

앱이나 게임이 스토어에 나오기 전에 스토어가 빌드를 심사합니다 — 멈추지 않는지, 개인정보·결제·내용 규칙을 지키는지, 소개 문구가 정직한지. Apple 의 App Review 는 엄격하기로 알려져 있습니다. 며칠이 걸리거나 거절될 수 있으니 시간을 넉넉히 잡습니다. 업데이트도 다시 심사를 거칩니다.

더 배우기

Play Console

Android 앱을 출시·관리하는 Google 의 개발자 사이트

Google Play Console 은 개발자가 Google Play 에 앱을 내는 곳입니다. 한 번 내는 등록비를 내고 본인 확인을 한 뒤, 앱을 만들고, 업로드 키로 서명한 빌드를 올리고, 스토어 등록 정보와 데이터 보안 양식을 채우고, 테스트 트랙과 심사를 거칩니다. 판매·오류 보고도 여기서 봅니다.

더 배우기

앱 스토어

원문 표기 · App store

앱과 게임을 찾아 설치하는 온라인 장터

앱 스토어는 앱을 찾고, 사고, 설치하는 공식 장터입니다 — iPhone 은 Apple 의 App Store, Android 는 Google Play, PC 게임은 Steam. 스토어가 결제와 업데이트를 맡고, 공개 전에 앱마다 심사합니다. 그 대신 개발자는 등록비와 판매액의 일부를 냅니다. 패키지 관리자를 코드용 앱 스토어에 빗대기도 합니다.

더 배우기

Google Play

Android 앱을 파는 Google 의 앱 스토어

Google Play 는 Android 앱과 게임의 대표 장터로, 가장 많은 휴대폰에 닿습니다. 개발자는 한 번 내는 등록비로 Play Console 을 통해 앱을 냅니다. 빌드는 테스트 트랙과 심사를 거치고, 새 개인 계정은 첫 정식 출시 전에 실제 테스터와 비공개 테스트를 마쳐야 합니다.

더 배우기

프로토타입

원문 표기 · Prototype

생각을 시험하려고 빨리 만든 시범품

프로토타입(시제품)은 "이 점프가 재미있나?" 같은 질문 하나에 답하려고 빨리 만드는 것으로, 버릴 것을 전제로 합니다. 임시 그림과 지저분한 코드여도 됩니다. MVP 와는 다릅니다 — 최소한 플레이 가능한 게임은 처음 보는 사람이 집어 들고 즐길 수 있어야 하고, 프로토타입은 무언가를 알려 주기만 하면 됩니다.

더 배우기

바이너리

원문 표기 · Binary

기계가 읽는 바이트로 된 파일 — 보통 바로 실행되는 프로그램

개발자들이 말하는 바이너리는 보통 컴파일된 프로그램입니다 — 사람이 읽는 글이 아니라 컴퓨터가 바로 실행하는 바이트로 된 파일. "단일 바이너리로 배포"는 서버 전체가 복사해 실행하면 되는 파일 하나라는 뜻입니다. WebAssembly 같은 바이너리 형식은 사람이 아니라 기계를 위한 것이라, 글 편집기로 열면 깨진 글자가 보입니다.

더 배우기

실행 파일

원문 표기 · Executable

프로그램으로 바로 실행할 수 있는 파일

실행 파일은 두 번 누르거나 이름을 치면 운영체제가 프로그램으로 시작하는 파일입니다. Windows 에서는 보통 .exe 로 끝나고, Linux·macOS 에서는 실행 권한이 있는 파일이면 스크립트도 실행됩니다. 예를 들어 Caddy 는 실행 파일 하나입니다. 해로운 코드가 들어 있을 수 있어 올리기 사이트는 실행 파일을 거절하곤 합니다.

더 배우기

Conventional Commits

feat:·fix: 처럼 종류를 앞에 붙이는 커밋 메시지 약속

Conventional Commits 는 널리 쓰는 커밋 메시지 관례입니다. 메시지 맨 앞에 종류와 쌍점을 붙입니다 — 새 기능은 feat:, 버그 수정은 fix:, 문서는 docs:. 그 뒤에 짧은 설명을 씁니다. 모양이 정해져 있어 도구가 이력을 읽고 변경 기록과 버전 번호를 만들 수 있습니다.

더 배우기

Updates were rejected

원격에 내게 없는 커밋이 있어 push 가 거절됐다는 Git 의 메시지

git push 가 "Updates were rejected" 로 멈추는 것은, 다른 사람이 같은 브랜치에 먼저 push 해서 원격에 내 쪽에 없는 커밋이 생겼기 때문입니다. 그대로 올리면 그 사람의 작업이 사라지므로 Git 이 거절합니다. --force 부터 쓰지 말고, git pull --rebase 로 내 커밋을 그 위에 다시 쌓고 충돌을 고친 뒤 다시 push 합니다.

더 배우기

이력

원문 표기 · History

커밋이 차례로 쌓인 기록

Git 에서 이력은 저장소에 만든 모든 커밋의 사슬로, 커밋마다 바로 앞 커밋을 가리킵니다. git log 가 가장 새것부터 보여 줍니다. 커밋 메시지를 잘 써 두면 몇 달 뒤에도 이력을 읽을 수 있습니다. 다른 사람이 이미 받은 이력을 다시 쓰면(rebase, 강제 push) 그들의 사본이 깨지므로, 아직 올리지 않은 내 커밋만 고쳐 씁니다.

더 배우기

main

저장소 기본 브랜치의 흔한 이름

main 은 대부분의 저장소가 기본 브랜치에 붙이는 이름으로, 완성되어 함께 쓰는 판을 담습니다. GitHub 는 새 저장소의 기본 브랜치를 main 으로 만들고, 오래된 프로젝트는 master 라고 부르기도 합니다. 팀에서는 아무도 main 에 바로 커밋하지 않고, 브랜치에서 일한 뒤 리뷰를 거친 Pull Request 로 병합합니다.

더 배우기

추적

원문 표기 · Tracking

Git 이 저장소의 파일로 여겨 변경을 지켜보는 상태

추적되는 파일은 add 하고 커밋해서 Git 이 이미 아는 파일로, 바뀔 때마다 Git 이 알려 줍니다. 새 파일은 git add 하기 전까지 추적되지 않습니다. 이미 커밋된 파일은 .gitignore 에 넣어도 계속 추적되므로, 먼저 git rm --cached 로 추적에서 빼야 합니다.

더 배우기

추적 브랜치

원문 표기 · Tracking branch

로컬 브랜치와 짝지은 원격 브랜치

로컬 브랜치는 원격의 브랜치 하나와 짝지을 수 있는데, 그 원격 브랜치를 추적 브랜치(upstream)라고 합니다. git push -u origin main 으로 한 번 짝지으면, 그다음부터는 그냥 git push·git pull 만 써도 어디로 갈지 알고, git status 가 몇 커밋 앞서거나 뒤처졌는지 알려 줍니다. 짝이 없으면 Git 이 어느 원격 브랜치인지 묻습니다.

더 배우기

GitLab

GitHub 와 비슷한 Git 저장소 서비스

GitLab 은 GitHub 처럼 Git 저장소를 올려 두고 팀이 함께 일하는 서비스입니다. Pull Request 를 "merge request" 라고 부르고, 자체 CI/CD 파이프라인이 있습니다. gitlab.com 웹사이트 말고도 회사가 자기 서버에 직접 설치해 쓸 수 있습니다. 브랜치 → push → 리뷰 → 병합의 흐름은 같습니다.

더 배우기

GitHub Actions

저장소에 일이 생기면 작업을 자동으로 돌리는 GitHub 의 기능

GitHub Actions 는 push, 새 Pull Request, 댓글, 정해 둔 시각 같은 일이 생기면 GitHub 의 서버에서 워크플로를 돌립니다. 워크플로는 .github/workflows/ 에 둔 YAML 파일로, 설치·테스트·배포 같은 단계를 적습니다. 클로드 코드나 Codex 도 그 안에서 돌릴 수 있어, PR 에 @claude 라고 쓰면 답하게 할 수 있습니다.

더 배우기

코드 리뷰

원문 표기 · Code review

병합하기 전에 동료가 변경을 읽고 의견을 주는 일

코드 리뷰는 내 변경이 main 브랜치에 들어가기 전에, 보통 Pull Request 로 다른 사람이 읽어 보는 일입니다. 리뷰어는 버그·알아보기 어려운 코드·빠진 테스트를 찾아 의견을 남기고 마지막에 승인합니다. 작은 PR 은 꼼꼼히 읽히고 큰 PR 은 대충 넘어가기 쉽습니다. AI 리뷰가 돕지만 결정은 사람이 합니다.

더 배우기

프로젝트 루트

원문 표기 · Project root

프로젝트의 맨 위 폴더

프로젝트 루트는 프로젝트 전체를 담은 맨 위 폴더입니다 — git init 을 한 곳이고, .gitignore·package.json·README.md·CLAUDE.md 같은 파일이 보통 여기에 있습니다. 도구들이 여기서 설정을 찾고, 많은 명령이 이 폴더에서 실행하기를 기대합니다.

더 배우기

마크다운

원문 표기 · Markdown

# · - 같은 기호로 제목·목록·코드를 적는 글 형식

마크다운(Markdown)은 단순한 글 형식입니다. # 으로 시작하는 줄은 제목이 되고, - 는 목록 한 줄, 별표 두 개 사이의 글은 굵은 글씨가 됩니다. 그냥 글로 읽어도 알아볼 수 있고, 꾸민 모양으로 보여 줄 수도 있습니다. README.md·CLAUDE.md·AGENTS.md·SKILL.md 가 모두 마크다운 파일이고, AI 채팅의 답도 대개 이것으로 쓰입니다.

더 배우기

읽기 전용

원문 표기 · Read-only

읽을 수만 있고 바꿀 수는 없는 상태

읽기 전용(read-only)은 볼 수는 있지만 바꿀 수는 없다는 뜻입니다 — 읽기 전용 파일은 고칠 수 없고, 읽기 전용 디스크에는 쓸 수 없습니다. AI 코딩 도구에서는 가장 안전한 방식으로, Codex 의 read-only 샌드박스에서는 에이전트가 파일을 읽고 해 없는 명령을 돌리지만 파일은 고치지 못합니다. 처음 보는 프로젝트를 살필 때 알맞습니다.

더 배우기

표준 라이브러리

원문 표기 · Standard library

설치 없이 파이썬과 함께 오는 모듈 묶음

파이썬의 표준 라이브러리는 파이썬과 함께 설치되는 많은 모듈입니다 — JSON 을 다루는 json, 웹 요청을 보내는 urllib.request, 작은 웹서버 http.server, math, random 등. pip 로 설치할 것이 없으므로, 표준 라이브러리만 쓰는 프로그램은 파이썬이 있는 곳이면 어디서나 돕니다.

더 배우기

설정 파일

원문 표기 · Config file

프로그램이 시작할 때 읽는 설정을 적어 둔 파일

설정 파일은 포트·폴더·모델 크기·권한처럼 프로그램이 움직이는 방식을 적어 둔 파일로, 코드를 고치지 않고 이 파일만 바꿔 동작을 바꿉니다. 흔한 형식은 JSON·YAML·TOML·.env 입니다. API 키 같은 비밀은 함께 쓰는 설정 파일이 아니라 Git 에 올리지 않는 파일에 둡니다.

더 배우기

버그

원문 표기 · Bug

프로그램이 잘못 움직이게 하는 결함

버그는 프로그램의 결함입니다 — 멈추거나, 틀린 결과를 보이거나, 아무도 바라지 않은 일을 합니다. 코드의 실수, 예상 못 한 입력, 바뀐 조건에서 생깁니다. 고치려면 먼저 늘 같은 방법으로 재현하고, 원인을 찾고(디버깅), 같은 버그가 다시 오지 않도록 테스트를 더합니다.

더 배우기

테스트

원문 표기 · Software test

코드가 기대대로 도는지 확인하는 코드

테스트는 정해 둔 입력으로 내 코드를 돌려, 나온 값이 기대한 값인지 확인하는 작은 프로그램입니다. 결과는 통과 또는 실패입니다. 고칠 때마다 테스트 묶음을 돌리므로, 한 곳을 고치다 다른 곳을 깨면 바로 잡힙니다. AI 코딩 도구를 쓸 때 테스트는 안전망입니다 — 테스트를 주고 통과할 때까지 고치라고 맡깁니다.

더 배우기

재현

원문 표기 · Reproduce

같은 결과나 문제를 일부러 다시 일어나게 하기

재현은 같은 조건에서 같은 일이 다시 일어나게 하는 것입니다. 한 단계씩 재현할 수 있는 버그는 고치고 시험할 수 있지만, "가끔 생기는" 버그는 고치기 어렵습니다. AI 실험에서 재현성은 다른 사람이 같은 코드·데이터·시드로 같은 결과를 얻는다는 뜻입니다.

더 배우기

줄바꿈

원문 표기 · Newline

다음 줄로 넘기는 보이지 않는 글자(\n)

줄바꿈은 글을 다음 줄로 넘기는 글자입니다. 눈에 보이지 않지만 파일 안에 들어 있고, 코드에서는 \n 으로 씁니다. Linux·macOS 는 줄을 \n 으로 끝내고 Windows 는 \r\n 을 써서 어떤 도구는 헷갈립니다. HTTP 는 머리줄마다 끝에 \r\n 을 붙이고 본문 앞에 빈 줄 하나를 둡니다.

더 배우기

node_modules

npm 이 프로젝트에 설치한 패키지가 모이는 폴더

npm install 을 하면 npm 이 package.json 에 적힌 패키지와 그 패키지가 필요로 하는 것까지 모두 프로젝트의 node_modules 폴더에 내려받습니다. 수백 MB 로 커질 수 있습니다. package.json 과 잠금 파일로 누구나 npm install 해 다시 만들 수 있으니, .gitignore 에 넣고 커밋하지 않습니다.

더 배우기

오버헤드

원문 표기 · Overhead

본래 일 말고 덤으로 드는 메모리·시간

오버헤드는 실제 일 위에 덤으로 얹히는 비용입니다. AI 모델을 돌리면 메모리에는 가중치만이 아니라 KV 캐시, 계산 버퍼, 런타임 자체의 오버헤드가 함께 올라가므로, 가중치 파일이 4GB 인 모델도 5~8GB 이상이 필요할 수 있습니다. 오버헤드를 셈에 넣지 않으면 서류상 들어가는 모델도 실제로는 들어가지 않습니다.

더 배우기 가중치·파라미터 자세히 보기

계산 버퍼

원문 표기 · Compute buffer

계산하는 동안 잠깐 쓰는 메모리 공간

계산 버퍼는 계산 중의 중간 결과를 담으려고 프로그램이 떼어 둔 작업 공간입니다. 언어모델이 돌 때 층마다 다음 층이 쓸 숫자가 나오는데, 그것을 이 버퍼에 둡니다. 가중치·KV 캐시와 따로 더 필요하므로, 모델이 파일 크기보다 많은 메모리를 쓰는 까닭 가운데 하나입니다.

더 배우기 가중치·파라미터 자세히 보기

파싱(parsing)

원문 표기 · Parsing

글이나 코드를 읽어 구조를 알아내는 일

파싱(해석)은 글을 읽어 프로그램이 쓸 수 있는 구조로 바꾸는 일입니다. 브라우저는 페이지를 그리기 전에 HTML 을 해석해 요소의 나무를 세우고, 쉘은 명령줄을 명령과 인자로 나누고, json.loads 는 JSON 글을 파이썬 값으로 바꿉니다. 파싱 오류는 글이 기대한 형식을 어겼다는 뜻입니다.

더 배우기

중단점

원문 표기 · Breakpoint

프로그램이 그 줄에서 멈추도록 걸어 두는 표시

중단점(breakpoint)은 프로그램이 어느 줄에 닿으면 멈추라고 디버거에게 알리는 표시입니다. 멈춘 동안 모든 변수를 읽어 보고, 한 줄씩 나아가며 어디서 틀어지는지 정확히 봅니다. 브라우저에서는 개발자 도구 → Sources 에서 줄 번호를 누르면 걸립니다.

더 배우기

입력 사건

원문 표기 · Input event

키 누름·클릭처럼 프로그램이 전해 받는 일 하나

입력 사건(input event, 이벤트)은 무슨 일이 생겼다는 작은 알림입니다 — 키가 눌렸다, 마우스가 움직였다, 손가락이 화면에 닿았다. 운영체제가 장치에서 온 신호를 사건으로 바꿔 맨 앞 창에 줄 세우고, 프로그램은 사건마다 차례로 반응합니다. 웹 페이지는 onclick 같은 리스너로 이것을 받습니다.

더 배우기

roundtrip

원문 표기 · Roundtrip

바꿨다 되돌려 원래와 같은지 확인하기

roundtrip(왕복) 검사는 데이터를 한쪽으로 바꿨다가 다시 되돌린 뒤, 원래와 같은지 확인합니다. XSLM 과정의 roundtrip: OK 는 학습 글 전체를 토큰 번호로 바꿨다가(encode) 원문 그대로 되돌렸다(decode)는 뜻으로, 토크나이저가 잃는 것이 없다는 증거입니다. 글자 하나라도 달라지면 실패합니다.

더 배우기

객체

원문 표기 · Python object

자기 함수를 함께 지닌 프로그램 속 값 하나

파이썬에서는 모든 값이 객체입니다 — 숫자, 글자, 리스트, 딕셔너리. 객체에는 타입이 있고, 점으로 부르는 자기만의 함수(메서드)가 딸려 있습니다(fruits.append("pear")). 클래스는 나만의 객체 종류를 설계하는 방법입니다. 객체를 파일에 저장하려면 먼저 글이나 숫자로 바꿔야 합니다.

더 배우기

append

리스트 끝에 값을 하나 더하는 메서드

list.append(값)은 리스트 맨 끝에 새 값 하나를 넣어 그 리스트 자체를 바꿉니다. 돌려주는 값은 None 이므로 fruits.append("pear") 를 한 줄에 따로 쓰고, fruits = fruits.append("pear") 처럼 쓰면 fruits 가 None 이 됩니다. 여러 값을 한꺼번에 더하려면 extend 를 씁니다.

더 배우기

클래스

원문 표기 · Class

데이터와 함수를 묶어 객체를 찍어 내는 틀

클래스는 객체의 종류를 적은 설계입니다 — 객체마다 어떤 데이터를 갖고 무엇을 할 수 있는지. class 로 한 번 쓰면, 그것으로 필요한 만큼 객체(인스턴스)를 만들고 객체마다 자기 값을 가집니다. 클래스 안의 함수는 메서드이며 객체 자신을 self 로 받습니다. 설계일 뿐이라 객체를 만들기 전에는 아무 일도 일어나지 않습니다.

더 배우기

def

새 함수를 만드는 파이썬 낱말

def 는 함수 정의를 시작합니다 — 함수 이름, 괄호 안의 매개변수, 쌍점을 쓰고, 그 아래에 네 칸 들여 쓴 본문이 옵니다. 함수를 정의만 해서는 실행되지 않고, 괄호를 붙여 불러야 실행됩니다. 값을 돌려주려면 안에서 return 을 씁니다.

더 배우기

딕셔너리 키

원문 표기 · Key

딕셔너리에서 값을 찾는 이름표

딕셔너리는 키와 값을 짝으로 담고, 키는 값을 찾을 때 쓰는 이름표입니다 — scores["math"] 에서 "math" 가 키입니다. 같은 키는 하나뿐이라, 이미 있는 키에 새 값을 넣으면 옛 값이 바뀝니다. 없는 키를 찾으면 KeyError 가 나고, .get() 은 오류 대신 None 을 줍니다.

더 배우기

FileNotFoundError

열려는 파일이 없을 때 파이썬이 내는 오류

FileNotFoundError 는 프로그램이 찾는 자리에 파일이나 폴더가 없을 때 납니다. 예를 들어 다른 폴더에서 open("data/train.txt") 를 실행했을 때입니다. 경로는 스크립트가 아니라 현재 폴더를 기준으로 합니다. pwd 로 위치를 보고, ls 로 파일을 보고, 철자와 대소문자를 확인합니다.

더 배우기

HTTPServer

파이썬에 들어 있는 간단한 웹서버

HTTPServer 는 파이썬 표준 라이브러리(http.server 모듈)에 든 작은 웹서버입니다. GET·POST 에 무엇을 답할지 정하는 처리 클래스를 건네면, 요청을 하나씩 처리합니다. XSLM 러너처럼 공부와 내 컴퓨터용 도구에는 충분하지만, 방문자가 많은 공개 사이트용으로 만든 것은 아닙니다.

더 배우기

len

개수(길이)를 세는 함수

len(x)는 x 의 길이를 돌려줍니다 — 리스트의 항목 수, 글자의 글자 수, 딕셔너리의 키 수. x 를 바꾸지는 않습니다. 자리 번호는 0 부터 시작하므로, 리스트의 마지막 항목은 len(x) 가 아니라 len(x) - 1 번째입니다.

더 배우기

None

"아무 값도 없음"을 뜻하는 파이썬 값

None 은 "값이 없다"는 뜻의 특별한 값입니다. return 이 없는 함수는 None 을 돌려주고, dict.get() 은 없는 키에 None 을 줍니다. 숫자가 나올 자리에 None 이 보이면 대개 return 을 빠뜨린 것입니다. "is None" 으로 확인하고, 0 이나 빈 글자와는 다르다는 점을 기억합니다.

더 배우기

range

반복에 쓸 차례 숫자를 만드는 함수

range(시작, 끝, 간격)은 시작부터 끝 바로 앞까지의 숫자를 만듭니다. range(1, 11)은 1 부터 10 까지, range(5)는 0 부터 4 까지입니다. 주로 for 반복과 함께 씁니다. 끝 숫자가 빠진다는 것을 잊는 것이 가장 흔한 실수입니다.

더 배우기

urlopen

HTTP 요청을 보내고 답을 읽는 파이썬 함수

urllib.request.urlopen(주소)은 웹 주소를 열어 요청을 보내고 응답을 돌려주며, .read() 로 본문을 바이트로 받습니다. JSON 을 POST 로 보내려면 Request 객체를 건넵니다. 서버에 닿지 못하거나 오류 코드가 오면 가짜 답 대신 오류를 냅니다. 표준 라이브러리에 들어 있어 설치할 것이 없습니다.

더 배우기

else

if 조건이 거짓일 때 가는 길

else 는 if 문에 두 번째 길을 줍니다 — 조건이 참이면 if 블록이, 아니면 else 블록이 실행됩니다. 그 사이에서 다른 조건을 하나 더 보려면 elif(else if)를 씁니다. else 에는 조건을 쓰지 않고 쌍점으로 끝내며, 안의 줄은 if 블록처럼 들여 씁니다.

더 배우기

IndentationError

줄의 들여쓰기가 맞지 않을 때 파이썬이 내는 오류

IndentationError 는 줄 앞의 공백이 파이썬이 기대한 것과 다를 때 납니다 — 쌍점 뒤(if·for·def)의 블록을 들여 쓰지 않았거나, 같은 블록의 줄마다 칸 수가 다를 때입니다. 파이썬은 괄호 대신 들여쓰기로 블록을 나누므로 중요합니다. 한 단계에 스페이스 네 칸을 쓰고 탭과 섞지 않습니다.

더 배우기

print

값을 화면에 보여 주는 파이썬 함수

print() 는 값을 표준 출력(보통 화면)에 쓰고 줄을 바꿉니다. 프로그램이 무엇을 하는지 가장 빨리 보는 방법입니다. 보여 주기만 하므로, 결과를 print 만 하고 return 하지 않은 함수는 None 을 돌려줍니다. MCP 서버처럼 표준 출력으로 대화하는 프로그램에서는 print 한 줄이 메시지를 깨므로 기록은 stderr 에 씁니다.

더 배우기

return

함수가 결과를 돌려주는 낱말

return 은 함수를 끝내고 부른 쪽에 값을 돌려주어, 그 결과를 변수에 담거나 다른 계산에 쓰게 합니다. return 이 없는 함수는 None 을 돌려줍니다. print 와는 다릅니다 — print 는 화면에 보여 주기만 하고, return 은 값을 넘겨줍니다.

더 배우기

assert

조건이 거짓이면 프로그램을 멈추는 검사 줄

assert 조건 은 조건이 참이면 아무 일도 하지 않고, 거짓이면 AssertionError 를 내며 그 줄에서 멈춥니다. 토크나이저가 원문을 그대로 돌려주는지, 바꿀 글이 정말 있는지처럼 "이것은 반드시 이래야 한다"를 빠르게 적는 방법입니다. 파이썬을 -O 로 돌리면 assert 를 건너뛰므로, 실제 프로그램이 기대는 검사에는 쓰지 않습니다.

더 배우기

Android App Bundle

Google Play 에 올리는 앱 묶음 파일(.aab)

Android App Bundle(.aab)은 Google Play 에 올리는 앱 묶음입니다. 앱의 코드와 자원이 모두 들어 있고, Google Play 가 이것으로 휴대폰마다 맞는 작은 설치 파일을 만들어 줍니다. 새 앱은 예전 방식인 .apk 가 아니라 이 번들로 올려야 합니다.

더 배우기

업로드 키

원문 표기 · Upload key

Play 에 올리기 전에 앱에 서명하는 비밀 키

Google Play 는 새 버전이 늘 같은 개발자에게서 왔는지 확인합니다. 내가 업로드 키로 앱 번들에 서명하면, Google 이 그 서명을 확인한 뒤 자기 앱 서명 키로 다시 서명합니다. 키 파일과 비밀번호는 프로젝트 밖에 두고 백업하며, 절대 커밋하거나 공유하지 않습니다. 잃어버리면 Play Console 에서 Google 에 재설정을 요청해야 합니다.

더 배우기

서명

원문 표기 · Code signing

앱이 정말 내 것임을 증명하는 디지털 도장

앱을 출시하기 전에 비밀 키로 앱에 서명합니다. 스토어와 휴대폰은 서명으로 누가 만든 앱인지, 서명한 뒤 누가 바꾸지 않았는지를 확인합니다. Google Play 는 업로드 키를, Apple 은 서명 인증서와 프로필을 쓰며 Xcode 의 자동 서명이 이를 대신 처리해 줍니다. 서명 오류는 대개 키나 팀을 잘못 고른 경우입니다.

더 배우기

프로비저닝 프로필

원문 표기 · Provisioning profile

서명한 앱의 설치·실행을 허락하는 Apple 파일

프로비저닝 프로필은 내 팀, 앱의 번들 ID, 서명 인증서, 그리고 시험할 때 쓸 기기 목록을 하나로 묶은 파일입니다. 프로필이 맞지 않으면 iPhone 은 그 앱을 실행하지 않습니다. 자동 서명을 켜 두면 Xcode 가 프로필을 만들고 새로 고칩니다. 화면에는 그냥 '프로필'로 나오며, 사용자 프로필과는 관계없습니다.

더 배우기

번들 ID

원문 표기 · Bundle ID

com.회사.앱 처럼 앱마다 하나뿐인 이름표

Apple 앱에는 com.example.notes 처럼 웹 주소를 거꾸로 쓴 모양의 번들 ID 가 있습니다. App Store 안에서 두 앱이 같은 번들 ID 를 쓸 수 없고, 이 이름이 Xcode 프로젝트·서명 프로필·App Store Connect 의 앱 기록을 서로 잇습니다. 빌드를 한 번 올리면 바꿀 수 없으니 신중히 고릅니다. Android 에서는 같은 개념을 애플리케이션 ID 라고 부릅니다.

더 배우기

App Store Connect

App Store 앱을 등록·관리하는 Apple 사이트

App Store Connect 는 iPhone 앱이 출시 전후에 머무는 곳입니다. 여기서 번들 ID·이름·스크린숏으로 앱 기록을 만들고, 개인정보 내용을 채우고, Xcode 가 올린 빌드를 보고, TestFlight 테스터를 초대하고, App Review 에 심사를 신청합니다. Google Play 의 Play Console 에 해당합니다.

더 배우기

Apple Developer Program

App Store 출시용 Apple 유료 회원

App Store 에 앱을 올리거나 TestFlight 로 테스터에게 나눠 주려면 Apple 계정으로 Apple Developer Program 에 가입합니다. 회비는 해마다 내며(대부분의 나라에서 개인 US$99), App Store Connect·서명 인증서·베타 도구를 쓸 수 있게 됩니다. 가입하지 않아도 Xcode 로 내 iPhone 에서 앱을 돌려 볼 수는 있지만 출시는 할 수 없습니다.

더 배우기

TestFlight

출시 전 iPhone 앱을 테스터에게 주는 서비스

App Store Connect 에 올린 빌드는 모두 TestFlight 로 보낼 수 있습니다. 테스터는 무료 TestFlight 앱을 깔고 초대를 받아, 일반 사용자보다 먼저 그 빌드를 써 봅니다. 외부 테스터용 빌드는 먼저 짧은 심사를 거치고, 빌드마다 90일이 지나면 만료됩니다. 테스터가 알려 준 문제를 고치고 빌드 번호를 올려 다시 올립니다.

더 배우기

Xcode

iPhone·Mac 앱을 만드는 Apple 의 무료 앱

Xcode 는 Apple 기기용 앱을 만드는 공식 도구로, Mac 에서만 돌고 Mac App Store 에서 무료로 받습니다. Flutter 나 React Native 로 앱을 짜더라도 마지막 iPhone 빌드는 Xcode 나 그 명령줄 도구로 서명·아카이브·업로드합니다. iPhone 시뮬레이터도 Xcode 안에 들어 있습니다.

더 배우기

아카이브

원문 표기 · Archive

앱을 올릴 출시용 묶음으로 만드는 Xcode 단계

아카이브는 iPhone 앱의 출시용 빌드를 서명까지 마쳐 하나로 묶은 것입니다. Xcode 에서 Product → Archive 를 고른 뒤 Distribute App 으로 App Store Connect 에 올립니다. 올릴 때마다 빌드 번호가 앞의 것보다 커야 합니다. 옛 파일을 보관한다는 뜻의 아카이브와는 다릅니다.

더 배우기

출시용 빌드

원문 표기 · Release build

스토어 출시를 위해 만든 최종 빌드

개발하는 동안 앱은 디버그 빌드로 돕니다 — 더 느리고 크고, 검사 도구가 잔뜩 들어 있습니다. 출시용 빌드는 그 도구를 빼고 코드를 최적화한 뒤 내 키로 서명한 것으로, 사용자가 스토어에서 받는 판입니다. 어떤 버그는 출시용 빌드에서만 보이므로 올리기 전에 꼭 시험합니다.

더 배우기

스토어 등록 정보

원문 표기 · Store listing

스토어에 보이는 앱 이름·설명·스크린숏

스토어 등록 정보는 사람들이 설치하기 전에 보는 페이지입니다 — 앱 이름, 짧은 설명과 자세한 설명, 아이콘, 스크린숏, 분류, 개인정보처리방침 링크. Play Console 이나 App Store Connect 에서 채우고, 심사원은 이것이 앱의 실제 기능과 맞는지 봅니다. 사실과 다른 등록 정보는 흔한 거절 이유입니다.

더 배우기

데이터 보안 양식

원문 표기 · Data safety form

앱이 모으는 데이터를 밝히는 Play Console 양식

Google Play 는 모든 앱에 데이터 보안 양식을 채우게 합니다 — 어떤 사용자 데이터를 모으거나 나누는지, 왜 그러는지, 암호화하는지, 지울 수 있는지. 답은 스토어 페이지에 그대로 보입니다. 앱이 실제로 하는 일과 개인정보처리방침, 그리고 내가 넣은 외부 라이브러리가 모으는 것까지 맞아야 합니다.

더 배우기

버전 코드

원문 표기 · Version code

앱을 올릴 때마다 커져야 하는 내부 번호

사람이 보는 버전 이름(예: 1.2.0) 말고도, 빌드마다 스토어가 쓰는 정수가 붙습니다 — Android 는 버전 코드, iPhone 은 빌드 번호입니다. 올릴 때마다 앞의 것보다 커야 하고, 그렇지 않으면 스토어가 받지 않습니다. Flutter 에서는 pubspec.yaml 의 version 줄에서 + 뒤의 숫자입니다.

더 배우기

pubspec.yaml

Flutter 앱의 이름·버전·패키지를 적은 설정 파일

Flutter·Dart 프로젝트의 맨 위 폴더에는 pubspec.yaml 이 있습니다. 앱 이름, 버전(버전 이름과 빌드 번호를 + 로 이은 것), 쓰는 패키지, 그림·글꼴 같은 자원을 적습니다. 패키지 목록을 고친 뒤에는 flutter pub get 을 실행합니다. YAML 로 쓰므로 들여쓰기가 중요합니다.

더 배우기

React Native

React 로 휴대폰 앱을 만드는 프레임워크

Meta 가 만든 React Native 는 React 의 컴포넌트 방식으로 JavaScript(또는 TypeScript)로 한 번 짠 앱을 Android 와 iPhone 에서 모두 돌립니다. 웹 페이지를 상자에 넣은 것이 아니라 진짜 네이티브 단추와 목록을 그립니다. Flutter 와 함께 가장 많이 쓰는 두 크로스 플랫폼 방식 가운데 하나입니다.

더 배우기

iOS

iPhone 의 운영 체제

iOS 는 Apple 이 만든, 모든 iPhone 을 돌리는 소프트웨어입니다 — 다른 대부분의 휴대폰은 Android 로 돕니다. 앱은 운영 체제마다 따로 빌드하므로 스토어가 iOS 빌드와 Android 빌드를 따로 받습니다. iPhone 앱은 Mac 의 Xcode 로 만들고 App Store 나 TestFlight 로 설치합니다.

더 배우기

바인딩

원문 표기 · Binding

다른 언어의 라이브러리를 내 언어에서 부르게 잇는 코드

llama.cpp 처럼 빠른 라이브러리는 C·C++ 로 쓴 것이 많습니다. 바인딩은 그런 라이브러리를 감싸 Python·Dart·JavaScript 같은 다른 언어에서 그 언어의 함수처럼 부르게 해 줍니다. 무거운 계산은 여전히 원래의 빠른 코드가 합니다. 바인딩이 라이브러리보다 오래된 판이면 새 기능이 빠져 있을 수 있습니다.

더 배우기

임베드

원문 표기 · Embed

파일·모델을 앱 안에 넣어 함께 묶는 것

임베드는 무언가를 앱 안에 넣어, 서버에서 받아 오지 않고도 쓰게 하는 것입니다. 작은 언어모델을 러너와 함께 휴대폰 앱에 임베드하면 인터넷 없이도 작동합니다. 낱말이나 문장을 나타내는 숫자 목록인 임베딩과는 다른 말입니다.

더 배우기

미들웨어

원문 표기 · Middleware

요청과 본 작업 사이에 끼어 한 단계를 더하는 코드

미들웨어는 요청이나 단계가 본 코드에 닿기 전(또는 뒤)에 반드시 지나가는 층입니다. 본 코드가 몰라도 로그인 확인, 기록 남기기, 긴 컨텍스트 줄이기, 위험한 일 막기를 할 수 있습니다. Laravel 같은 웹 프레임워크는 로그인 확인에, 에이전트 하네스는 모델을 부를 때마다 미들웨어를 씁니다.

경계값

원문 표기 · Boundary value

기준과 딱 같은 점수처럼 경계에 놓인 시험 값

버그는 규칙의 가장자리에 가장 많이 숨습니다. 60점 이상이면 합격인 프로그램이라면 30점·90점만이 아니라 59·60·61점을 시험합니다. >= 를 써야 할 곳에 > 를 쓴 실수는 딱 60점에서만 드러납니다. 빈 입력, 0, 허용하는 가장 큰 수도 경계값입니다.

flush

모아 둔 출력을 기다리지 않고 바로 내보내기

프로그램은 수고를 줄이려고 출력을 버퍼에 모았다가 한꺼번에 내보냅니다. MCP 클라이언트처럼 다른 프로그램이 한 줄씩 기다리고 있으면 이 지연이 멈춘 것처럼 보입니다. 파이썬의 print(..., flush=True) 는 그 줄을 바로 내보냅니다. 없으면 버퍼가 차거나 프로그램이 끝날 때에야 출력이 나올 수 있습니다.

더 배우기

vendor 폴더

원문 표기 · vendor folder

외부 코드를 모아 두는 폴더

패키지 도구는 남이 만든 코드를 따로 된 폴더에 둡니다 — PHP 의 Composer 는 vendor/, npm 은 node_modules/ 입니다. 다음 설치가 덮어쓰므로 그 안의 파일은 고치지 않고, 대신 패키지 목록의 버전을 바꿉니다. 그래서 AI 에이전트 규칙에 "vendor/ 는 건드리지 말 것"이 자주 들어갑니다.

elif

앞 조건이 거짓일 때 다음 조건 검사

파이썬에서 if 는 조건을 검사하고, elif(else if 의 줄임)는 앞 조건이 모두 거짓일 때만 다음 조건을 검사하며, else 는 남은 경우를 모두 받습니다. 위에서 아래로 내려가며 처음 참인 갈래 하나만 실행하므로 가장 좁은 조건을 앞에 둡니다. 줄 끝에는 콜론을 쓰고 그 아래 코드는 들여 씁니다.

더 배우기

KeyError

딕셔너리에 없는 키를 찾을 때 나는 파이썬 오류

딕셔너리는 키로 값을 찾습니다. scores["music"] 처럼 없는 키를 찾으면 프로그램이 KeyError 와 그 키 이름을 보이고 멈춥니다. 먼저 철자와 대소문자를 확인합니다. 키가 없을 수도 있는 게 정상이라면 오류 대신 기본값을 돌려주는 scores.get("music", 0) 을 씁니다.

더 배우기

ValueError

값의 내용이 알맞지 않을 때 나는 오류

ValueError 는 함수가 맞는 종류의 값을 받았지만 쓸 수 없는 값일 때 납니다. int("abc") 는 글자를 받았지만 숫자 모양의 글자가 아닙니다. NumPy 에서는 a @ b 의 안쪽 크기가 다른 것처럼 배열 모양이 맞지 않을 때 납니다. 메시지의 마지막 줄을 읽고 값이나 .shape 를 출력해 봅니다.

더 배우기

ModuleNotFoundError

패키지가 없어 나는 파이썬 오류

파이썬이 패키지를 찾지 못하면 import numpy 가 No module named 'numpy' 로 실패합니다. 대개 설치하지 않았거나, 다른 파이썬이나 다른 가상 환경에 설치한 경우입니다. 프로젝트의 venv 를 켜고 python3 -m pip install numpy 로 설치한 뒤, 같은 python3 로 실행합니다.

더 배우기

NameError

정의하지 않은 이름을 쓸 때 나는 파이썬 오류

NameError: name 'x' is not defined 는 파이썬이 모르는 변수나 함수 이름을 만났다는 뜻입니다. 흔한 원인은 오타, 대소문자 차이, 값을 넣는 줄보다 먼저 변수를 쓴 것, import 를 빠뜨린 것입니다. 파이썬은 이름을 글자 그대로 읽으므로 Score 와 score 는 다릅니다.

더 배우기

pytest

파이썬 테스트를 찾아 실행하는 도구

pytest 는 프로젝트의 테스트를 모두 실행하고 무엇이 통과·실패했는지 보여 줍니다. test_*.py 이름의 파일과 test_ 로 시작하는 함수를 찾고, 각 테스트는 assert 한 줄로 결과를 확인합니다. AI 에이전트에게 "고칠 때마다 python -m pytest 를 실행할 것"이라는 규칙을 주면 스스로 결과를 확인할 수 있습니다.

더 배우기

import

모듈을 불러와 쓰게 하는 파이썬 명령

파이썬은 기본 함수 몇 개로만 시작하고, 나머지는 모듈에 들어 있습니다. import re 는 정규식 모듈을 불러오고, 그다음 re.search(...) 처럼 그 함수를 부릅니다. from math import sqrt 는 이름 하나만 바로 가져옵니다. 파이썬에 딸려 오는 모듈은 늘 되고, 나머지는 먼저 pip 로 설치해야 합니다.

더 배우기

원시 문자열

원문 표기 · Raw string

역슬래시를 글자 그대로 두는 r"…" 파이썬 문자열

보통 파이썬 문자열에서 역슬래시는 특수 글자의 시작입니다 — "\n" 은 줄바꿈, "\b" 는 백스페이스입니다. 앞에 r 을 붙인 r"\b\d+" 는 역슬래시를 쓴 그대로 둡니다. 정규식에는 역슬래시가 많으므로 패턴은 습관처럼 원시 문자열로 씁니다.

더 배우기

PyPI

파이썬 패키지를 모아 둔 공식 창고

PyPI(pypi.org)는 pip 가 패키지를 내려받는 곳입니다. 누구나 올릴 수 있어서 한 글자 틀린 이름의 패키지가 함정일 수 있습니다. 새 패키지는 정확한 이름·만든 사람·내려받은 수를 확인하고 설치합니다. 파이썬에서 Node.js 의 npm 저장소와 같은 역할을 합니다.

더 배우기

requirements.txt

프로젝트에 필요한 파이썬 패키지와 버전 목록 파일

requirements.txt 에는 파이썬 프로젝트가 쓰는 라이브러리를 numpy==2.1.3 처럼 보통 버전까지 고정해 적습니다. 이 파일이 있으면 누구든 명령 한 줄로 같은 환경을 다시 만듭니다. 새 버전은 동작이 바뀌어 어제 되던 코드를 깨뜨릴 수 있으므로 버전 고정이 중요합니다.

더 배우기

자료형

원문 표기 · Data type

정수·소수·글자처럼 값의 종류

모든 값에는 자료형이 있고, 자료형이 그 값으로 할 수 있는 일을 정합니다. 파이썬에서 3 은 int, 3.0 은 float, "3" 은 str, True 는 bool 입니다. 글자와 숫자는 더할 수 없어 "3" + 4 는 오류가 나므로 int("3") 으로 먼저 바꿉니다. 돈과 부동소수점처럼 정확도에도 자료형 선택이 중요합니다.

더 배우기

console.log

자바스크립트에서 값을 화면에 찍는 함수

console.log 는 받은 것을 출력합니다. 브라우저에서는 개발자 도구의 Console 에, Node.js 에서는 터미널의 표준 출력으로 나가므로 다른 프로그램의 출력처럼 파이프로 넘길 수 있습니다. 디버깅할 때 변수에 무엇이 들었는지 가장 빨리 보는 방법입니다.

더 배우기

자바스크립트 엔진

원문 표기 · JavaScript engine

자바스크립트를 실행하는 핵심 프로그램

자바스크립트 엔진은 자바스크립트 코드를 읽어 컴퓨터가 실행할 명령으로 빠르게 바꿉니다. Chrome 과 Node.js 는 Google 의 V8 엔진을 같이 쓰고, Firefox 는 SpiderMonkey, Safari 는 JavaScriptCore 를 씁니다. Node.js 는 V8 을 브라우저 밖으로 꺼내, 페이지를 그리는 대신 파일과 네트워크를 다루는 도구를 더한 것입니다.

더 배우기

process.argv

Node.js 스크립트가 받은 인자 목록

process.argv 는 Node.js 스크립트를 시작한 명령줄을 담은 배열입니다. 0번은 node 의 경로, 1번은 스크립트 경로이고, 2번부터 내가 친 인자가 들어갑니다. 그래서 node greet.js Mina 로 실행하면 process.argv[2] 가 "Mina" 입니다. 모두 글자이므로 숫자는 Number() 로 바꿉니다.

더 배우기

보안 검사

원문 표기 · npm audit

설치한 패키지의 알려진 보안 문제를 찾는 npm 검사

npm install 뒤에 npm 은 짧은 보안 검사(audit)를 돌려, 설치한 패키지 가운데 알려진 취약점이 있는 것이 몇 개이고 얼마나 심각한지 알려 줍니다. npm audit 은 자세한 내용을, npm audit fix 는 버전 규칙을 깨지 않는 선에서 고칠 수 있는 것을 올려 줍니다. 모든 경고가 내 프로젝트에 해당하지는 않지만 high·critical 은 꼭 읽습니다.

더 배우기

@latest

가장 새로 나온 판을 뜻하는 npm 표시

패키지 이름 뒤에 @latest 를 붙이면 지금 latest 로 표시된 판을 달라는 뜻입니다. npm install -g firebase-tools@latest 는 전역 도구를 새 판으로 올리고, npx create-vite@latest 는 캐시에 남은 옛 판이 아니라 가장 새 판으로 프로젝트를 만듭니다. prettier@3 처럼 버전을 직접 적을 수도 있습니다.

더 배우기

prefix

원문 표기 · npm prefix

npm 이 전역 패키지를 두는 폴더 설정

npm 의 prefix 는 전역으로 설치한 패키지와 그 명령이 들어가는 폴더입니다. 이것이 /usr/local 같은 시스템 폴더면 권한이 없어 npm install -g 가 EACCES 로 실패합니다. sudo 를 쓰지 말고 nvm 을 쓰거나 prefix 를 홈 폴더로 옮긴 뒤 그 bin 폴더를 PATH 에 더합니다.

더 배우기

npm 저장소

원문 표기 · npm registry

npm 이 패키지를 내려받는 온라인 창고

npm 저장소(registry.npmjs.org)에는 공개된 자바스크립트 패키지가 수백만 개 있습니다. npm install 과 npx 는 여기서 패키지를 받아 캐시에 사본을 둡니다. 누구나 올릴 수 있으니 실행하기 전에 이름·만든 사람·내려받은 수를 확인합니다. 패키지 창고이지 Git 저장소가 아닙니다.

더 배우기

.nvmrc

프로젝트에 쓸 Node 버전을 적는 파일

.nvmrc 는 프로젝트 폴더에 두는 파일로, 22 같은 Node.js 버전 한 줄이 들어 있습니다. 누구든 그 프로젝트에서 nvm use 만 치면 같은 버전을 쓰므로 "내 컴퓨터에선 되는데" 문제가 줄어듭니다. 숫자 없이 nvm install 을 치면 파일에 적힌 버전을 설치합니다.

더 배우기

패키지 관리자

원문 표기 · Package manager

프로그램을 찾아 설치·업데이트·삭제하는 도구

패키지 관리자는 글자로 쓰는 앱 스토어입니다. 프로그램을 그것에 필요한 것까지 함께 내려받고, 버전을 기억하고, 깔끔하게 지웁니다. 운영 체제마다 자기 것이 있고(Alpine 은 apk, Ubuntu 는 apt, macOS 는 Homebrew, Windows 는 winget), 언어에도 있습니다(자바스크립트는 npm, 파이썬은 pip).

더 배우기

스캐폴딩

원문 표기 · Scaffolding

새 프로젝트의 기본 뼈대를 자동으로 만드는 일

스캐폴딩 도구는 몇 가지를 물은 뒤 새 프로젝트에 필요한 폴더·설정 파일·예제 코드를 만들어, 이미 돌아가는 상태에서 시작하게 해 줍니다. npx create-vite@latest 와 flutter create 가 흔한 예입니다. 만들어진 파일은 출발점일 뿐이라 마음껏 고치고 지웁니다.

더 배우기

캐럿(^) 버전 범위

원문 표기 · Caret (^) version range

이 버전이나 호환되는 새 버전

npm 버전은 major.minor.patch 세 부분입니다. package.json 의 ^4.17.21 처럼 앞에 캐럿을 붙이면 4.17.21 이상 5.0.0 미만이면 무엇이든 허락합니다 — 큰 번호가 바뀌면 호환이 깨질 수 있기 때문입니다. 실제로 설치된 정확한 버전은 package-lock.json 에 적히고, npm ci 는 그것만 설치합니다.

더 배우기

--depth 1

이력 없이 마지막 판만 받는 얕은 git clone

보통의 git clone 은 프로젝트의 모든 커밋을 복사합니다. git clone --depth 1 은 마지막 커밋 하나만 받아 훨씬 빠르고 작으므로, 코드를 읽거나 돌려 보기만 할 때 알맞습니다. 대신 git fetch --unshallow 로 나머지를 받기 전에는 옛 커밋을 보거나 되돌아갈 수 없습니다.

더 배우기

해시

원문 표기 · Hash

내용으로 계산한 짧은 지문 — 내용이 바뀌면 값도 바뀜

해시 함수는 크기와 상관없이 어떤 자료든 정해진 길이의 짧은 문자열로 바꿉니다. 같은 입력은 늘 같은 해시가 되고, 한 글자만 바뀌어도 완전히 다른 해시가 됩니다. 그래서 파일이 바뀌었는지 빨리 알 수 있습니다. Git 은 커밋마다 해시로 이름을 붙이므로 커밋 해시 하나가 코드의 한 판을 정확히 가리킵니다.

일반 텍스트

원문 표기 · Plain text

꾸밈 없이 글자만 담긴 글

일반 텍스트 파일에는 글자 말고는 아무것도 없습니다. 그래서 코드·HTML·설정 파일은 일반 텍스트로 저장해야 합니다. 문서 편집기는 코드를 망가뜨리는 숨은 서식을 넣으므로, macOS 텍스트 편집기에서는 먼저 포맷 → 일반 텍스트로 만들기를 누릅니다. 보안에서 평문은 HTTPS 가 아닌 HTTP 처럼 암호화하지 않은 자료를 뜻하기도 합니다.

로직

원문 표기 · Logic

프로그램이 일을 처리하는 순서와 판단 규칙

프로그램의 로직은 그 프로그램의 판단 방식입니다 — 어떤 순서로 일이 일어나고, 어떤 조건을 검사하고, 경우마다 무엇을 하는지. '게임 로직'은 누가 점수를 냈고 판이 언제 끝나는지를 정하고, '도구 로직'은 도구가 입력으로 무엇을 할지 정합니다. 인공지능이 기계(로직)라는 말은 감정이나 의도 없이 계산된 단계를 따른다는 뜻입니다.

권한

원문 표기 · Permission

읽기·바꾸기·실행을 해도 되는 범위

권한은 무언가를 해도 된다는 허락입니다 — 파일 읽기·바꾸기, 명령 실행, 카메라 쓰기, 남을 대신해 글 올리기. 파일에도 권한이 있고, 휴대폰 앱은 권한을 묻고, AI 에이전트는 내게서 권한을 받습니다 — 어느 폴더를 고치고 어떤 명령을 묻지 않고 실행할지. 일에 필요한 만큼만 줍니다. 권한은 나중에 더하기가 피해를 되돌리기보다 쉽습니다.

린터

원문 표기 · Linter

코드의 실수·규칙 위반을 자동으로 찾는 도구

린터는 코드를 실행하지 않고 읽어 버그가 될 만한 곳과 스타일 문제를 짚어 줍니다 — 쓰지 않는 변수, 빠진 따옴표, 위험한 패턴. 린터를 돌리는 일을 린트(lint)라고 하며, npm run lint 처럼 씁니다. 기계가 통과·실패를 분명히 판정하므로 테스트와 린트는 혼자 일하는 AI 에이전트의 좋은 끝난 기준입니다. 린터는 문제를 찾고, 포매터는 모양만 정리합니다.

더 배우기

포매터

원문 표기 · Formatter

코드 모양을 정해진 규칙대로 자동 정리하는 도구

포매터는 띄어쓰기·줄바꿈·따옴표·들여쓰기를 다시 써서, 누가(또는 무엇이) 썼든 프로젝트의 코드가 모두 같은 모양이 되게 합니다. 코드가 하는 일은 바꾸지 않습니다. 클로드 코드 훅처럼 고칠 때마다 저절로 돌게 하면 AI 가 쓴 코드도 가지런하고 diff 를 검토하기 쉬워집니다.

더 배우기

Prettier

자바스크립트·CSS·HTML·마크다운용 인기 포매터

Prettier 는 따질 설정이 거의 없이 코드를 한 가지 모양으로 다시 쓰는 npm 패키지입니다. 보통 프로젝트마다 개발용 의존성으로 설치하고 npx 로 실행합니다. --write 는 파일을 고치고, --check 는 정리되지 않은 파일만 알려 주어 자동 검사에 알맞습니다.

더 배우기

LTS

몇 년 동안 수정을 받는 장기 지원 판

LTS(Long-Term Support) 판은 만든 곳이 오래도록, 특히 보안 문제를 고쳐 주겠다고 약속한 버전입니다. Node.js 에서는 짝수 번호 판(22·24 …)이 LTS 가 되어 약 30개월 동안 지원받고, 홀수 판은 짧게 끝납니다. 배우거나 서버를 돌릴 때는 LTS 판을 고릅니다.

더 배우기

README

프로젝트 설명·사용법을 적는 첫 문서

README.md 는 프로젝트 맨 위 폴더에 두고, 무엇을 하는 프로젝트인지, 어떻게 설치·실행하는지, 다음에 어디를 보면 되는지 적습니다. GitHub 는 저장소 첫 화면에 이 파일을 보여 주므로 방문자가 가장 먼저 읽습니다. "README 에 실행 방법이 있다" 같은 목표는 AI 에이전트에게도 분명한 끝난 기준이 됩니다.

이슈

원문 표기 · GitHub issue

GitHub 에 할 일·버그를 하나씩 적어 두는 글

이슈는 GitHub 저장소에서 번호가 붙은 글로, 버그·기능·질문 같은 일 하나를 적습니다. 사람들이 댓글을 달고, 담당자와 라벨을 붙이고, 끝나면 닫습니다. PR 에 "Fixes #12" 라고 쓰면 합칠 때 그 이슈가 저절로 닫힙니다. GitHub Project 나 Jira 같은 보드는 이슈를 카드로 늘어놓습니다.

더 배우기

확장

원문 표기 · Extension

Chrome·VS Code 에 기능을 더하는 프로그램

확장(확장 프로그램)은 다른 앱 안에 설치해 기능을 더하는 작은 프로그램입니다. Claude in Chrome 같은 브라우저 확장은 Chrome 웹 스토어에서, 클로드 코드·Codex 같은 편집기 확장은 VS Code 마켓플레이스에서 받습니다. 확장은 그 앱에서 내가 보는 내용을 읽을 수 있으니 믿을 수 있는 곳의 것만 설치합니다.

더 배우기

에러 로그

원문 표기 · Error log

프로그램이 실행 중에 남기는 오류 기록

프로그램은 무엇이 잘못됐는지 시각과 자세한 내용을 붙여 에러 로그에 씁니다 — 파일, 터미널, 또는 별도 서비스에. 로그에는 화면의 짧은 메시지보다 많은 것, 예를 들어 줄 번호와 호출 순서가 들어 있습니다. AI 에게 도움을 청할 때는 수천 줄을 붙이기보다 관련 줄과 함께 재현 방법과 기대한 동작을 줍니다.

플랫폼

원문 표기 · Platform

프로그램이 돌아가는 바탕 — 브라우저·휴대폰·서비스

플랫폼은 프로그램이 그 위에서 돌도록 만들어진 바탕입니다 — Android·iOS·Windows 같은 운영 체제, 브라우저, 게임기, 또는 자기 SDK 를 주는 게임 플랫폼 같은 온라인 서비스. 플랫폼마다 규칙과 한계가 달라 스토어는 플랫폼마다 빌드를 따로 받습니다. '크로스 플랫폼'은 한 코드로 여러 플랫폼에서 도는 것을 말합니다.

소프트웨어

원문 표기 · Software

컴퓨터에서 돌아가는 프로그램을 통틀어 부르는 말

소프트웨어는 프로그램과 그 프로그램에 필요한 자료를 통틀어 부르는 말입니다 — 앱, 게임, 웹사이트, 운영 체제, AI 모델 모두. 손으로 만질 수 있는 기계는 하드웨어이고, 그 기계가 따르는 명령이 소프트웨어입니다. 소프트웨어는 하드웨어보다 바꾸기가 싸고 빨라서 새 기능은 대부분 업데이트로 옵니다.

자동화

원문 표기 · Automation

정해진 일을 사람 대신 컴퓨터가 저절로 하게 함

자동화는 손으로 되풀이하던 일을 컴퓨터가 스스로 하게 만드는 것입니다 — 파일 500개의 이름을 바꾸는 쉘 스크립트, 매주 월요일에 도는 예약 작업, 푸시할 때마다 도는 테스트, 주간 보고를 모으는 AI 에이전트. 처음 만들 때는 품이 들지만 그 뒤로는 공짜입니다. 내가 이해하는 단계만 자동화하고 결과는 확인합니다.

프로그래밍 언어

원문 표기 · Programming language

컴퓨터에 일을 시키는 글을 쓰는 약속된 언어

프로그래밍 언어는 컴퓨터에 할 일을 알리는 정확한 낱말과 문법을 가진 언어입니다. Python, JavaScript, Bash, C, Rust 가 그 예이고, 빠른 스크립트부터 빠른 엔진까지 저마다 알맞은 일이 다릅니다. 사람의 말과 달리 짐작할 여지가 없어 괄호 하나만 빠져도 프로그램이 멈춥니다. AI 도 이런 언어로 코드를 쓰므로 하나를 읽을 줄 아는 것은 여전히 중요합니다.

버전

원문 표기 · Version

프로그램·모델·파일의 몇 번째 판인지 붙인 번호

프로그램·패키지·모델은 시간이 지나며 바뀌고, 내놓은 상태마다 버전이 붙습니다 — 흔히 3.12.4 처럼 major.minor.patch 로 씁니다. 첫 숫자가 커지면 대개 옛 코드가 깨질 수 있는 변화입니다. "나는 되는데 너는 안 된다" 문제의 상당수가 버전 차이에서 오므로 먼저 버전을 확인하고, requirements.txt 나 .nvmrc 같은 파일에 고정해 둡니다.

상수

원문 표기 · Constant

한 번 정하면 바뀌지 않는 이름 붙은 값

상수는 처음 값을 넣은 뒤 잠가 버린 변수와 같습니다. Bash 에서 readonly PI=3.14 로 만들면 나중에 바꾸려 할 때 오류가 나고, 자바스크립트는 const 를 씁니다. 파이썬에는 진짜 상수가 없어 MAX_SIZE = 100 처럼 이름을 대문자로 써서 '바꾸지 말 것'을 나타냅니다. 어디서나 같아야 하는 값에 씁니다.

더 배우기

선언

원문 표기 · Declaration

변수(와 그 종류)를 쓰기 전에 미리 알리는 일

선언은 어떤 이름이 있다고, 때로는 그 종류까지 언어에 알리는 일입니다. Bash 는 보통 선언이 필요 없어 name=Mina 하면 그 자리에서 변수가 생깁니다. 연관 배열처럼 declare -A 로 먼저 선언해야 하는 것도 있습니다. Java·C 같은 언어는 모든 변수를 쓰기 전에 자료형과 함께 선언합니다.

더 배우기

정의

원문 표기 · Definition

함수·변수를 처음 만들어 두는 일

정의는 이름에 내용을 넣는 곳입니다 — 함수를 만드는 줄들, 또는 변수에 처음 값을 넣는 줄. 코드는 정의된 뒤에야 그 이름을 쓸 수 있으므로 스크립트에서는 함수 정의를 부르는 줄보다 앞에 둡니다. set -u 를 켜면 정의 안 된 변수를 쓸 때 Bash 가 멈춰 오타를 잡아 줍니다.

더 배우기

.NET

마이크로소프트의 무료 개발·실행 플랫폼

.NET 은 C#·F# 같은 언어로 쓴 프로그램을 Windows·macOS·Linux 에서 돌리는 마이크로소프트의 오픈소스 플랫폼입니다. PowerShell 이 .NET 위에서 돌기 때문에 PowerShell 의 정규식은 .NET 규칙을 따라 \d·\w·\s 와 이름 붙인 묶음을 씁니다. PowerShell 을 쓰는 데 .NET 을 알 필요는 없습니다.

더 배우기

호출

원문 표기 · Function call

함수·명령을 이름으로 불러 실행하는 일

함수를 정의하면 할 일을 적어 둘 뿐이고, 호출해야 실제로 실행됩니다. 파이썬의 print("hi") 나 Bash 의 greet Mina 처럼 이름과 인자를 써서 호출하며, 결과를 돌려받기도 합니다. 프로그램은 대부분 내가 쓰거나 남이 쓴 함수의 호출로 이루어집니다. AI 모델이 프로그램에 도구를 실행해 달라고 하는 것은 도구 호출이라고 부릅니다.

중첩

원문 표기 · Nesting

같은 것 안에 같은 것을 겹쳐 넣는 것

중첩은 어떤 구조 안에 같은 종류의 구조를 넣는 것입니다 — 반복 안의 반복, if 안의 if, 리스트 안의 리스트, $(dirname $(pwd)) 처럼 명령 치환 안의 명령 치환. $( ) 는 깔끔하게 중첩되므로 백틱보다 권장됩니다. 너무 깊은 중첩은 읽기 어려우니 세 겹이 넘으면 코드를 나눌 때라는 신호입니다.

더 배우기

switch

원문 표기 · switch statement

다른 언어의 여러 갈래 조건문

JavaScript·C·Java 의 switch 는 값 하나를 여러 경우와 비교해 맞는 블록을 실행하므로, 긴 if/else if 줄보다 깔끔합니다. Bash 는 같은 일을 case … esac 로 하며, 경우마다 *.txt 같은 패턴도 쓸 수 있습니다. 자바스크립트에서 break 를 빠뜨리면 다음 경우까지 실행됩니다.

더 배우기

블록

원문 표기 · Block

한 덩어리로 함께 실행되는 코드 줄 묶음

블록은 함께 묶인 코드 덩어리입니다 — if 의 then 과 fi 사이, 반복의 do 와 done 사이, 함수의 { } 안의 줄들. awk 에는 첫 줄 전과 마지막 줄 뒤에 한 번만 도는 BEGIN·END 블록도 있습니다. 블록 안의 줄은 들여 써서 어디서 끝나는지 보이게 하고, 연 블록은 반드시 닫습니다.

더 배우기

camelCase

낱말을 붙이고 둘째부터 대문자로 쓰는 이름

camelCase 는 여러 낱말로 된 이름을 띄어쓰기 없이 붙이고, 둘째 낱말부터 첫 글자를 대문자로 씁니다 — userName, totalPrice. 자바스크립트는 변수·함수 이름에 이것을 쓰고, 파이썬은 snake_case(user_name)를, 파일·주소 이름은 흔히 kebab-case(user-name)를 씁니다. 이름은 글자 그대로 맞아야 하므로 프로젝트가 이미 쓰는 방식을 따릅니다.

CHANGELOG

버전마다 무엇이 바뀌었는지 적은 기록 파일

CHANGELOG(보통 CHANGELOG.md)는 프로젝트의 버전마다 날짜와 함께 더한 것·바꾼 것·고친 것을 새것부터 적은 파일입니다. 클로드 코드처럼 빨리 바뀌는 도구는 이것을 공개해 사용자가 새 기능을 따라잡게 합니다. 작은 단계까지 모두 남는 커밋 이력과 달리 사람이 읽으라고 쓴 기록입니다.

더 배우기

릴리스 노트

원문 표기 · Release notes

새 버전에서 바뀐 점을 사용자에게 알리는 글

릴리스 노트는 새 버전을 사용자에게 알리는 글입니다 — 새 기능, 중요한 수정, 설정 바꾸기처럼 사용자가 해야 할 일. CHANGELOG 보다 짧고 친절하며, 흔히 지난 출시 뒤의 커밋을 보고 초안을 씁니다. 되풀이하는 일이라 AI 에이전트의 스킬로 만들기에 좋습니다.

명령 주입

원문 표기 · Command injection

입력에 몰래 명령을 끼워 실행시키는 공격

명령 주입은 프로그램이 믿을 수 없는 글로 쉘 명령을 만들고, 그 글에 다른 명령이 숨어 있을 때 일어납니다. a.txt; rm -rf ~ 같은 파일 이름이 무해한 명령을 파괴적인 명령으로 바꿀 수 있습니다. 변수는 따옴표로 감싸고, 믿을 수 없는 글을 쉘에 넘기지 말고, AI 에이전트가 내가 아니라 웹 페이지나 파일에서 온 명령을 실행하려 하는지 살핍니다.

피드백 반복

원문 표기 · Feedback loop

해 보고, 결과를 보고, 고치기를 되풀이하는 순환

피드백 반복은 일하는 쪽에 방금 바꾼 것이 맞았는지 빠른 신호를 주고 다시 해 보게 하는 고리입니다. AI 에이전트에게는 테스트·린터·타입 검사·스크린숏이 그 신호가 되어, 단계마다 사람이 없어도 스스로 바로잡습니다. 신호가 빠르고 분명할수록 결과가 좋아집니다.

worktree

원문 표기 · Worktree

같은 저장소를 다른 폴더에 하나 더 꺼낸 작업 공간

git worktree 는 같은 저장소의 다른 브랜치를 따로 된 폴더에 꺼내 줍니다 — 이력은 하나를 같이 씁니다. 폴더마다 파일이 따로라서 클로드 코드나 Codex 세션 둘이 서로 덮어쓰지 않고 나란히 일할 수 있습니다. 작업을 합친 뒤에는 worktree 를 지웁니다. worktree 마다 의존성은 따로 설치해야 합니다.

더 배우기

병렬

원문 표기 · Parallel

여러 일을 동시에 나란히 진행하기

병렬 작업은 여러 일을 하나씩 차례로 하지 않고 한꺼번에 진행하는 것입니다. AI 에이전트라면 세션이나 서브 에이전트 여럿을 나란히 돌려 각자 자기 일을 맡깁니다. 위험한 점은 둘이 같은 파일을 고치는 것이므로, 저마다 worktree 나 파일을 따로 주고 마지막에 결과를 합칩니다.

더 배우기

GitHub Project

이슈를 카드·표·일정으로 관리하는 GitHub 보드

GitHub Project 는 하나 이상의 저장소의 이슈와 PR 을 보드 하나에 모읍니다. 칸이 있는 칸반 보드, 표, 로드맵으로 볼 수 있고, 우선순위 같은 내 필드를 더할 수 있습니다. gh 명령줄 도구로 항목을 만들고 옮길 수 있어서 AI 에이전트가 대신 보드를 관리합니다.

더 배우기

칸반

원문 표기 · Kanban

할 일 카드를 칸(할 일→진행→끝)으로 옮기는 보드

칸반 보드는 일을 카드로, 단계를 칸으로 보여 줍니다 — 보통 할 일·진행 중·끝. 카드를 다음 칸으로 옮기면 진행 상황이 한눈에 보이고, 진행 중 칸의 카드 수를 제한하면 한꺼번에 너무 많이 벌이지 않게 됩니다. Toyota 공장에서 나온 방법이며 GitHub Project·Trello·Jira 모두 칸반 보기를 줍니다.

더 배우기

Jira

회사에서 많이 쓰는 Atlassian 의 일감 관리 도구

Jira 는 Atlassian 이 만든 유료 웹 서비스로, 보드·스프린트·보고서로 이슈·버그·할 일을 관리합니다. 많은 회사가 GitHub 이슈 대신 Jira 를 씁니다. MCP 서버를 통하면 클로드 코드 같은 AI 에이전트가 일하는 중에 Jira 티켓을 읽고 고칠 수 있습니다.

JetBrains

PyCharm 같은 IDE 를 만드는 회사

JetBrains 는 전문 개발자가 많이 쓰는 IDE 를 만드는 소프트웨어 회사입니다 — Java·Kotlin 용 IntelliJ IDEA, Python 용 PyCharm, JavaScript 용 WebStorm, PHP 용 PhpStorm 등. 화면에 'VS Code·JetBrains'라고 하면 이 편집기들을 뜻합니다. 클로드 코드는 이들용 플러그인이 있고, Android Studio 도 IntelliJ 위에 만들어졌습니다.

더 배우기

IDE

코드 편집·실행·디버깅을 한데 모은 개발 프로그램

IDE(통합 개발 환경)는 코드 편집기, 프로그램 실행, 디버거, 검색, Git, 흔히 터미널까지 한 창에 모은 프로그램입니다. VS Code 는 확장을 더해 IDE 가 되고, JetBrains 제품과 Xcode 는 처음부터 완전한 IDE 입니다. AI 코딩 도구는 IDE 안에서 확장·플러그인으로 돌거나, 옆의 터미널에서 돕니다.

처리기

원문 표기 · Handler

어떤 일이 생기면 실행되도록 걸어 둔 코드

처리기는 한 종류의 사건을 기다렸다가 그 일이 생기면 실행됩니다 — 단추 클릭, 어떤 주소로 온 요청, 파일 저장. 클로드 코드에서 훅의 처리기는 쉘 명령·HTTP 주소·MCP 도구·LLM 프롬프트·서브에이전트가 될 수 있고, 그 순간이 올 때마다 반드시 실행됩니다. 실행할지를 모델이 고르지 않습니다.

글로벌

원문 표기 · Global

이 컴퓨터의 모든 프로젝트에 두루 적용되는 범위

글로벌(전역) 설정·설치는 컴퓨터의 어디서나 통하고, 로컬(프로젝트) 것은 그 프로젝트 폴더 안에서만 통합니다. npx skills add … -g 는 스킬을 글로벌로 설치하고, ~/.claude/CLAUDE.md 는 모든 프로젝트에서 읽는 전역 지시입니다. 같은 것이 두 곳에 다 있으면 어느 쪽이 이기는지 확인합니다 — 스킬은 클로드 코드가 글로벌(개인) 것을 씁니다.

더 배우기

MIT 라이선스

원문 표기 · MIT License

알림만 남기면 자유롭게 쓰는 짧은 오픈소스 라이선스

MIT 라이선스는 저작권 알림과 라이선스 글만 함께 남기면 누구나 소프트웨어를 쓰고, 복사하고, 고치고, 팔고, 나눌 수 있게 합니다. 아무 보증이 없다는 점도 밝힙니다. 짧고 요구하는 것이 적어서 GitHub 에서 가장 흔한 라이선스 가운데 하나입니다. 라이선스 글은 보통 LICENSE 라는 파일에 둡니다.

더 배우기

pdfplumber

PDF 에서 글·표를 뽑아내는 파이썬 라이브러리

pdfplumber 는 PDF 를 열어 쪽마다 글, 위치가 붙은 낱말, 표를 꺼내 줍니다. 진짜 글자가 든 PDF 에서 되고, 스캔한 PDF 는 그림일 뿐이라 OCR 이 필요합니다. 에이전트에게 "pdfplumber 를 쓴다. 스캔한 PDF 만 OCR"이라고 알려 주는 스킬은 선택지 목록 대신 분명한 기본값 하나를 줍니다.

더 배우기

P0 · P1

문제의 급한 정도 — P0 이 가장 급함

팀은 짧은 표시로 문제의 우선순위를 나눕니다. P0 은 '지금 고칠 것' — 서비스가 멈췄거나, 데이터가 사라지거나, 보안 구멍이 있습니다. P1 은 심각해서 곧 고칠 것이고, P2 아래는 기다려도 됩니다. Codex 의 PR 리뷰는 기본으로 P0·P1 문제만 남겨 중요한 것만 보게 합니다.

더 배우기

템플릿

원문 표기 · Template

빈칸만 채우면 되게 미리 만든 틀

템플릿은 빈칸이 있는 미리 만든 틀입니다 — 보고서 목차, 시작용 프로젝트, {name} 을 채우는 메일. 스킬은 assets/ 폴더에 템플릿을 넣어 에이전트가 늘 같은 구조로 결과를 내게 합니다. 채팅 템플릿은 특별한 경우로, 모델이 학습할 때 쓴 역할·메시지의 정확한 배치이며 러너가 이것을 써야 모델이 제대로 답합니다.

TODO

할 일 표시 — 코드에서는 남은 일을 적는 표시

TODO 는 '아직 할 일'이라는 뜻입니다. 개발자는 코드에 # TODO: 빈 입력 처리 같은 주석을 남기고 나중에 grep 으로 찾습니다. 이슈와 보드에서는 TODO 체크리스트가 일 하나를 작은 단계로 나누어 하나씩 체크하게 하고, 진행률도 보여 줍니다. 오래된 TODO 는 쌓이기 쉬우니 중요한 것은 이슈로 만듭니다.

저장소 루트

원문 표기 · Repository root

Git 저장소의 맨 위 폴더

저장소 루트는 Git 으로 관리하는 프로젝트의 맨 위 폴더로, 숨김 폴더 .git 이 들어 있는 곳입니다. 클로드 코드는 시작한 폴더부터 이 루트까지 올라가며 CLAUDE.md 와 .claude/skills 를 찾고, 더 위로는 가지 않습니다. git rev-parse --show-toplevel 이 그 경로를 보여 줍니다.

신원 설정(git config)

커밋마다 남을 이름과 이메일을 GIT 에 알려 주기

커밋에는 누가 만들었는지가 함께 남으므로, GIT 을 설치한 뒤 맨 먼저 git config 로 이름과 이메일을 한 번 알려 줍니다. --global 을 붙이면 이 컴퓨터의 모든 저장소에, 빼면 지금 저장소에만 적용됩니다. git config --list 로 지금 설정을 확인합니다.

더 배우기

강제 push(force push)

원문 표기 · Force push

원격의 이력을 내 이력으로 덮어쓰는 push

원격에 내게 없는 커밋이 있으면 보통 push 는 거절됩니다. git push --force 는 그래도 밀어 넣어 원격 브랜치를 내 것으로 바꾸므로, 남이 올린 커밋이 사라지고 팀원들의 사본과 어긋납니다. 아무도 받아 가지 않은 내 브랜치에서만 쓰고, 마지막 fetch 뒤로 원격이 바뀌었으면 멈추는 --force-with-lease 가 더 안전합니다.

더 배우기

reflog

HEAD 가 지나온 자리 기록 — 잃어버린 커밋을 찾는 곳

git reflog 는 내 저장소에서 HEAD 가 가리켰던 커밋을 최근 것부터 모두 보여 줍니다. reset 이나 rebase 뒤에 어느 브랜치에도 보이지 않게 된 커밋도 여기 남아 있어서, git reset --hard 로 잃은 작업을 찾아 되돌아갈 수 있습니다. 내 컴퓨터에만 남고 오래된 기록은 시간이 지나면(기본 90일) 지워집니다.

더 배우기

reset

지금 브랜치를 앞 커밋으로 되감기

git reset 은 브랜치를 뒤로 옮겨 그 뒤의 커밋이 브랜치에서 빠지게 합니다. --soft 는 그 변경을 스테이징에 남기고, 기본인 --mixed 는 스테이징하지 않은 변경으로 남기고, --hard 는 커밋하지 않은 작업까지 모두 버립니다. 아직 push 하지 않은 커밋에만 쓰고, 공유한 커밋은 git revert 로 되돌립니다.

더 배우기

git add

바뀐 파일을 다음 커밋에 넣으려고 스테이징 영역에 올립니다

git add 는 다음 커밋에 넣을 변경을 골라 스테이징 영역에 올립니다. add 한 것만 커밋되므로, 파일 여러 개를 고쳤어도 커밋 하나에 논리적인 변경 하나만 담을 수 있습니다. git add -p 는 파일의 일부만 고르고, git add . 은 지금 폴더의 변경을 모두 올립니다.

더 배우기

revert

옛 커밋을 거꾸로 되돌리는 새 커밋을 더해 취소하기

git revert 는 앞 커밋과 정반대인 새 커밋을 만들어, 변경은 사라지되 이력에는 두 커밋이 모두 남게 합니다. 이력을 고쳐 쓰지 않으므로 이미 push 해서 남이 받아 간 커밋을 되돌릴 때 안전한 방법입니다. 뒤의 커밋이 같은 줄을 고쳤다면 충돌이 날 수 있습니다.

더 배우기

git status

무엇이 바뀌었고 파일이 세 공간 중 어디에 있는지 보여 줍니다

git status 는 지금 브랜치, 바뀌었지만 스테이징하지 않은 파일, 다음 커밋에 올린 파일, 아직 추적하지 않는 새 파일을 알려 줍니다. 아무것도 바꾸지 않으므로 헷갈릴 때마다 — add 전, commit 전, 위험한 명령 전에 — 돌립니다. 출력에 다음에 칠 명령도 적혀 있습니다.

더 배우기

git log

이력의 커밋을 최근 것부터 차례로 보여 줍니다

git log 는 지금 브랜치의 커밋을 최근 것부터 오래된 것까지, 커밋마다 ID·작성자·날짜·메시지와 함께 보여 줍니다. --oneline 은 커밋마다 한 줄로, --graph 는 브랜치가 갈라지고 합쳐진 모양을 그려 줍니다. 목록이 한 화면을 넘으면 q 로 빠져나옵니다.

더 배우기

restore

커밋하지 않은 변경을 버리고 되돌립니다

git restore 는 파일을 마지막 커밋의 모습으로 되돌려, 커밋하지 않은 수정을 지웁니다. --staged 를 붙이면 스테이징 영역에서만 내리고 수정은 남깁니다. 버린 수정은 GIT 에 저장된 적이 없어 되살릴 수 없으니, 먼저 git status 나 git diff 로 확인합니다.

더 배우기

cherry-pick

다른 브랜치의 커밋 하나만 골라 지금 브랜치로 가져오기

git cherry-pick 은 커밋 하나가 만든 변경을, 그 커밋이 어디에 있든 지금 브랜치에 새 커밋으로 얹습니다. 기능 브랜치의 고침 하나만 지금 출시 브랜치에 필요할 때 씁니다. 가져온 커밋은 새 ID 를 받으므로, 이렇게 많이 가져오면 병합보다 이력을 따라가기 어려워집니다.

더 배우기

stash

하던 작업을 잠시 치워 두었다가 다시 꺼내기

git stash 는 커밋하지 않은 변경을 따로 쌓아 두고 작업 폴더를 깨끗하게 만들어, 급한 버그를 고치러 브랜치를 갈아탈 수 있게 합니다. git stash pop 은 그 변경을 다시 꺼내고 더미에서 지웁니다. GIT 이 아직 추적하지 않는 새 파일은 -u 를 붙여야 함께 치워집니다.

더 배우기

tag

원문 표기 · git tag

v1.0.0 처럼 커밋 하나에 붙이는 고정 이름표

git tag 는 커밋에 이름, 보통 버전 번호를 붙여 출시한 코드를 언제든 정확히 찾게 합니다. 브랜치와 달리 새 커밋을 만들어도 움직이지 않습니다. 설명이 붙는 태그(-a)는 만든 사람·날짜·메시지도 담고, 태그는 따로 push 해야 원격에 올라갑니다.

더 배우기

git init

지금 폴더를 새 GIT 저장소로 만듭니다

git init 은 지금 폴더 안에 숨은 .git 폴더를 만들고, 그때부터 GIT 이 그 폴더의 이력을 기록할 수 있게 합니다. add 와 commit 을 하기 전에는 아무것도 저장되지 않습니다. 프로젝트 폴더에서 실행합니다 — 홈 폴더에서 하면 내 모든 파일을 추적하게 됩니다.

더 배우기

git apply

diff(패치)로 받은 변경을 내 파일에 적용합니다

git apply 는 지울 줄과 더할 줄이 적힌 diff 를 읽어, 커밋하지 않고 작업 폴더의 파일을 그대로 고칩니다. 클라우드의 Codex 처럼 다른 곳에서 만든 변경을 내 사본에 옮길 때 이렇게 합니다. git apply --check 로 패치가 맞는지 먼저 확인합니다.

더 배우기

Git LFS

큰 파일을 저장소 밖에 두는 Git 추가 기능

Git LFS(Large File Storage)는 모델 가중치 같은 큰 파일을 보통의 Git 기록 밖에 둡니다. 저장소에는 작은 포인터 파일만 남고, 실제 파일은 따로 된 저장 공간으로 갑니다. git lfs install 을 한 번 실행한 뒤에는 평소처럼 git add, commit, push 를 씁니다.

더 배우기 가중치·파라미터 자세히 보기

Traceback

오류가 난 자리를 보여 주는 Python 오류 보고

Python 프로그램이 실패하면 traceback 을 출력합니다. 오류에 이르기까지 이어진 함수 호출을 가장 바깥 호출부터 실패한 줄까지 차례로 보여 줍니다. 아래에서부터 읽습니다 — 마지막 줄에 오류 종류와 메시지가 있고, 바로 위 줄들에 파일과 줄 번호가 있습니다.

더 배우기

uv

Python 프로젝트와 패키지를 관리하는 빠른 도구

uv 는 Python 프로젝트를 만들고, 가상 환경을 준비하고, 패키지를 설치하는 도구입니다. pip 와 venv 가 하던 일을 함께 하고 훨씬 빠릅니다. 예를 들어 uv add torch 는 프로젝트에 PyTorch 를 설치합니다.

더 배우기

비동기(async)

원문 표기 · async (asynchronous)

느린 일을 기다리는 동안 다른 일을 하는 방식

비동기 코드는 네트워크 응답을 기다리는 것처럼 느린 일을 시작해 두고, 가만히 멈춰 있는 대신 그 일이 끝날 때까지 다른 일을 처리합니다. 파이썬에서는 async 와 await 로 씁니다. 이렇게 만든 웹 서버는 많은 연결을 한꺼번에 열어 둘 수 있습니다.

더 배우기

.claude/agents/

클로드 코드의 서브 에이전트 폴더

서브 에이전트 하나는 이름·설명·쓸 수 있는 도구·지시를 적은 마크다운 파일 하나입니다. 프로젝트 안의 .claude/agents/ 에 둔 파일은 그 프로젝트 것이라 팀과 함께 커밋할 수 있고, ~/.claude/agents/ 에 둔 파일은 모든 프로젝트에서 나만 씁니다. 클로드 코드는 설명을 읽고 언제 그 서브 에이전트에게 일을 맡길지 정합니다.

더 배우기

~/.claude.json

클로드 코드의 개인 설정 파일

~/.claude.json 은 내 사용자 계정의 클로드 코드 상태를 담습니다 — 환경설정, 로그인 정보, 프로젝트별 자료, local·user 범위로 추가한 MCP 서버. .claude 폴더나 settings.json 과는 다른 파일입니다. 손으로 고칠 때는 조심하고, 되도록 claude mcp add 같은 명령이 고치게 합니다.

더 배우기

mcpServers

MCP 서버 목록과 켜는 방법을 담는 설정 칸

mcpServers 는 ~/.claude.json, 프로젝트의 .mcp.json, 다른 앱의 비슷한 설정 파일에서 MCP 서버 목록을 담는 칸(키)입니다. 항목마다 이름이 있고, 서버를 켜는 명령과 인자 또는 접속할 주소를 적습니다. 이 항목이 어디에 있느냐에 따라 그 서버를 쓸 수 있는 곳이 정해집니다.

더 배우기

.claude/skills/

클로드 코드가 스킬을 찾는 폴더

스킬 하나는 SKILL.md 파일이 든 폴더 하나이며, 클로드 코드는 그 폴더를 여기서 찾습니다. 프로젝트 안의 .claude/skills/ 는 Git 으로 팀과 함께 쓰고, ~/.claude/skills/ 에는 모든 프로젝트에서 쓰는 내 스킬을 둡니다. Claude 는 스킬마다 이름과 설명만 읽어 두었다가 일에 필요할 때 전체 지시를 불러옵니다.

더 배우기

.mcp.json

팀이 함께 쓰는 MCP 서버 목록을 담은 프로젝트 파일

.mcp.json 은 저장소 맨 위에 두는 파일로, 그 프로젝트에서 쓸 MCP 서버를 적습니다. Git 에 커밋하므로 프로젝트를 받은 사람은 모두 같은 서버를 쓰고, 클로드 코드는 처음 쓸 때 승인을 묻습니다. claude mcp add 에 --scope project 를 붙이면 이 파일에 저장됩니다. 비밀 값은 파일이 아니라 환경 변수에 둡니다.

더 배우기

.claude/settings.json

권한 규칙·훅 등을 담는 클로드 코드 프로젝트 설정 파일

.claude/settings.json 은 한 프로젝트에서 함께 쓰는 설정 — 권한 규칙(allow·ask·deny), 훅, 환경 변수 등 — 을 담습니다. 커밋해서 팀 모두가 같은 규칙으로 일합니다. 나만 쓰는 설정은 커밋하지 않는 .claude/settings.local.json 에, 모든 프로젝트에 쓸 설정은 ~/.claude/settings.json 에 둡니다.

더 배우기

@경로

원문 표기 · @path import

CLAUDE.md 에 @경로 를 적어 다른 파일의 내용을 불러오는 문법

CLAUDE.md 에 @docs/architecture.md 같은 줄을 쓰면 그 파일을 불러옵니다 — 내용이 그 자리에 적힌 것처럼 읽힙니다. 흔히 @AGENTS.md 를 적어 다른 에이전트가 읽는 공통 지시를 클로드 코드도 따르게 합니다. 불러온 파일은 세션마다 처음부터 컨텍스트에 실리므로 짧게 둡니다.

더 배우기

CLAUDE.local.md

커밋하지 않는 나만의 클로드 코드 프로젝트 지시 파일

CLAUDE.local.md 는 프로젝트의 CLAUDE.md 옆에 두는 파일로, 나만 쓰는 지시 — 내 로컬 주소, 내 테스트 데이터 — 를 담고 .gitignore 에 넣어 커밋하지 않습니다. 작업 폴더나 그 위 폴더에 CLAUDE.md·.claude/CLAUDE.md·CLAUDE.local.md 가 하나라도 있으면 클로드 코드는 기본으로 AGENTS.md 를 읽지 않습니다(~/.claude/CLAUDE.md 는 세지 않습니다). 그래서 AGENTS.md 를 쓴다면 개인 메모는 ~/.claude/CLAUDE.md 에 두거나, /config 의 Project instructions 를 claude-md-and-agents-md 로 바꿔 둘 다 읽게 합니다.

더 배우기

클립보드

원문 표기 · Clipboard

복사한 것을 잠시 담아 두는 곳

글이나 그림을 복사하면 컴퓨터는 다른 것을 복사할 때까지 그것을 클립보드에 담아 두고, 붙여넣기를 하면 커서 자리에 꺼내 놓습니다. 웹 페이지는 허락을 받아야 클립보드를 읽을 수 있어 브라우저가 붙여넣기 단추를 막기도 합니다. 그때는 칸을 누르고 Ctrl+V(Mac 은 ⌘V)를 누릅니다.

Ctrl+V(⌘V)

원문 표기 · Ctrl+V (⌘V)

복사한 것을 붙여 넣는 단축키

Ctrl+V 는 클립보드에 있는 것을 커서 자리에 붙여 넣습니다. Mac 에서는 같은 일을 ⌘V(Command+V)로 합니다. 복사하는 Ctrl+C 와 짝입니다. 터미널에서는 Ctrl+C 가 실행 중인 명령을 멈추므로, 많은 터미널은 Ctrl+Shift+V 로 붙여 넣습니다.

스크린샷

원문 표기 · Screenshot

지금 화면을 그대로 찍은 그림

스크린샷(캡처)은 화면에 보이는 것을 그림으로 저장한 것입니다. Windows 는 Win+Shift+S 로 고른 부분을 클립보드에 담고, Mac 은 Cmd+Shift+4 로 고른 부분을 파일로 저장합니다(Ctrl 을 더하면 복사).

Ctrl 키

원문 표기 · Ctrl key

다른 키와 함께 눌러 단축키를 만드는 컨트롤 키

Ctrl(컨트롤)은 키보드 왼쪽 아래의 키입니다. 다른 키와 함께 누르면 단축키가 됩니다 — 터미널에서 Ctrl+C 는 명령을 멈춥니다. 맥은 앱 단축키에 Cmd 를 많이 쓰지만, 터미널 단축키는 맥에서도 Ctrl 입니다.

FizzBuzz

수를 세며 Fizz·Buzz·FizzBuzz 를 외치는 유명한 연습 문제

FizzBuzz 는 1부터 차례로 수를 출력하되, 3의 배수에는 Fizz, 5의 배수에는 Buzz, 둘 다의 배수에는 FizzBuzz 를 대신 출력하는 유명한 연습 문제입니다. 반복문, 조건문(if), 나머지 연산자 `%` 를 함께 연습합니다. 3의 배수를 먼저 검사하면 15 에서 Fizz 만 나오는 실수가 흔하니, '둘 다' 경우를 먼저 검사합니다.

더 배우기

TextEdit

macOS 에 기본으로 들어 있는 텍스트 편집기

TextEdit(텍스트 편집기)은 모든 Mac 에 들어 있는 간단한 글 편집기입니다. 기본으로는 서식 있는 글(RTF)로 저장해 보이지 않는 서식이 섞입니다. HTML 이나 코드를 쓰려면 먼저 포맷 → 일반 텍스트로 만들기를 골라, 친 글자만 파일에 들어가게 합니다.

더 배우기

메모장

원문 표기 · Notepad

Windows 에 기본으로 들어 있는 일반 텍스트 편집기

메모장(Notepad)은 Windows 에 들어 있는 간단한 편집기입니다. 서식 없이 글자만 저장하므로 HTML·코드 파일을 쓰기에 알맞습니다. 웹 페이지를 저장할 때는 파일 형식을 "모든 파일"로 골라야 이름 끝에 .txt 가 붙지 않습니다.

더 배우기

os.replace

다 쓴 파일을 한 번에 바꿔 끼우는 파이썬 함수

os.replace(src, dst) 는 파일 src 의 이름을 dst 로 바꾸고, dst 가 이미 있으면 그것을 대신합니다. 같은 드라이브 안에서는 이 교체가 원자적입니다 — 다른 프로그램은 옛 파일이나 새 파일 중 하나만 보고, 반쯤 쓴 파일은 보지 않습니다. 그래서 먼저 임시 파일에 다 쓴 뒤 os.replace 를 부릅니다.

더 배우기

SONUB 용어 사전

웹

용어 157개

브라우저 콘솔

원문 표기 · Browser console

웹 페이지의 오류와 메시지가 모이는 창

브라우저 콘솔은 브라우저 개발자 도구 안의 창으로, 웹 페이지의 자바스크립트가 오류와 메시지를 적어 두는 곳이에요. 앱이 빈 화면만 보이거나 버튼이 아무 일도 하지 않을 때, 콘솔에 보통 그 까닭이 적혀 있어요. SONUB 바이브 코딩에서는 미리보기 옆의 콘솔 탭이 이 메시지를 모아 보여 줘요.

더 배우기

HTML

웹 페이지에 무엇이 있는지 적어 두는 언어

HTML 은 페이지의 내용에 표시를 답니다. 여기는 제목, 여기는 문단, 여기는 그림, 여기는 링크라고요. 생김새가 아니라 의미와 구조를 적는 것이며, 색이나 배치는 CSS 의 몫입니다. 지금 보고 있는 이 화면을 포함해 우리가 여는 모든 페이지는 HTML 로 브라우저에 도착합니다.

더 배우기

CSS

페이지가 어떻게 보일지 정하는 규칙

CSS 는 HTML 이 적어 둔 맨몸의 내용에 색과 여백, 글꼴과 배치를 입힙니다. 둘을 나눠 두었기에 내용을 다시 쓰지 않고도 모습만 바꾸거나, 휴대전화와 데스크톱에서 다르게 보여 줄 수 있습니다. 사이트가 갑자기 아무 꾸밈 없이 보인다면 대개 CSS 가 불러와지지 않은 것입니다.

더 배우기

자바스크립트(JavaScript)

웹 페이지가 무언가를 하게 만드는 언어

HTML 이 내용이고 CSS 가 모습이라면, 자바스크립트는 동작입니다. 클릭에 반응하고, 새 자료를 받아 오고, 보고 있는 중에 화면을 바꿉니다. 모든 브라우저가 이 언어를 실행할 수 있어서 웹의 언어가 되었습니다. 이름은 비슷하지만 자바와는 아무 관계가 없습니다.

더 배우기

HTTP

브라우저와 서버가 주고받을 때 쓰는 약속

HTTP 는 브라우저가 서버에 무언가를 요청하고 서버가 답할 때 쓰는 약속된 형식입니다. 주고받음 하나하나가 독립적이어서, 요청을 보내고 답을 받으면 그 연결은 나를 잊습니다. HTTPS 는 여기에 암호화를 씌운 것이며, 비밀번호를 입력할 때 자물쇠 표시를 확인해야 하는 이유가 이것입니다.

URL

인터넷에 있는 어떤 것 하나의 전체 주소

URL 은 브라우저 주소창에 보이는 주소이며, 각 부분에는 뜻이 있습니다. 먼저 통신 방식, 그다음 사이트, 그다음 그 페이지까지 가는 경로입니다. 주소를 읽을 줄 아는 것은 작지만 중요한 안전 기술입니다. 첫 번째 홑빗금 바로 앞에 있는 것이 진짜 사이트이며, 은행을 흉내 낸 가짜 주소는 그렇게 알아봅니다.

브라우저

원문 표기 · Browser

웹 페이지를 받아 와 화면에 그려 주는 프로그램

크롬, 사파리, 파이어폭스, 엣지가 브라우저입니다. 서버에 페이지를 요청하고, 돌아온 HTML·CSS·자바스크립트를 우리가 보는 화면으로 바꿔 주는 프로그램이지요. 그 코드를 실제로 실행하기도 하는데, 웹 페이지가 앱처럼 동작할 수 있는 이유가 이것입니다. 대부분의 기기에서 가장 오래 켜져 있는 프로그램이지만, 대부분의 사람은 그 존재를 생각하지 않습니다.

더 배우기

도메인

원문 표기 · Domain name

인터넷에서 서버 주소 대신 쓰는 읽기 쉬운 이름

컴퓨터는 서로를 숫자로 된 IP 주소로 찾는데, 이 숫자는 외우기 어렵습니다. example.com 같은 도메인은 등록 업체에서 빌리는 이름이고, DNS 로 그 이름이 어느 IP 주소를 가리킬지 정합니다. HTTPS 인증서도 도메인에 대해 발급되므로 진짜 인증서에는 진짜 도메인이 필요합니다.

더 배우기

DNS

이름을 IP 주소로 바꿔 주는 인터넷의 전화번호부

DNS(도메인 이름 시스템)는 "example.com 은 어느 IP 주소인가?"라는 물음에 답합니다. 브라우저는 어디든 접속하기 전에 먼저 DNS 에 묻습니다. 내 도메인의 답은 A 레코드 같은 기록으로 정합니다. 답이 곳곳에 저장(캐시)되기 때문에, 바꾼 값이 모두에게 닿기까지 몇 분에서 몇 시간이 걸릴 수 있습니다.

더 배우기

리액트(React)

부품(컴포넌트)으로 웹 페이지를 만드는 JavaScript 라이브러리

React 는 모양과 동작을 저마다 가진 작은 부품(컴포넌트)을 다시 써 가며 페이지를 짓게 해 주고, 데이터가 바뀌면 바뀐 곳만 다시 그립니다. React 프로젝트에는 빌드 단계가 필요합니다 — Vite 같은 도구가 어느 웹서버든 내놓을 수 있는 평범한 HTML · CSS · JavaScript 파일로 바꿉니다.

더 배우기

개발자 도구

원문 표기 · DevTools

페이지 속을 들여다보는 브라우저 내장 창

개발자 도구(DevTools)는 Chrome 같은 브라우저에 들어 있는 도구입니다. 페이지의 HTML, 페이지가 보낸 요청 하나하나와 그 헤더·응답, 저장해 둔 쿠키와 캐시, 스크립트의 오류를 보여 줍니다. F12 를 누르거나 페이지를 오른쪽 눌러 [검사]를 고르면 열립니다. 거기서 고친 것은 저장되지 않아서 새로고침하면 원래대로 돌아옵니다.

더 배우기

상태 코드

원문 표기 · Status code

요청이 어떻게 됐는지 알리는 세 자리 숫자

모든 HTTP 응답은 상태 줄로 시작하고, 거기에 세 자리 상태 코드가 들어 있습니다. 첫 자리가 종류를 알려 줍니다 — 2xx 는 성공, 3xx 는 다른 곳을 보라, 4xx 는 요청 쪽 문제, 5xx 는 서버 쪽 문제입니다. 이것부터 읽으세요. 404 는 서버가 죽었다는 뜻이 아니라 경로가 틀렸다는 뜻입니다.

더 배우기

리다이렉트

원문 표기 · Redirect

브라우저를 다른 주소로 보내는 응답

리다이렉트는 "원하는 것은 저쪽에 있다"고 알리는 응답입니다. 영구히 옮겼다는 301 같은 3xx 상태 코드와 함께, 새 주소를 Location 헤더에 담아 보냅니다. 브라우저는 알아서 따라가지만 curl 은 -L 을 붙여야 따라갑니다. 사이트는 http 손님을 https 로 보내거나 옛 링크가 계속 통하게 할 때 리다이렉트를 씁니다.

더 배우기

캐시

원문 표기 · Cache

다시 받아 오지 않으려고 가까이 둔 사본

캐시는 가져오는 데 오래 걸린 것을 가까이 저장해 두고 다음번에 빨리 쓰는 사본입니다. 브라우저는 그림과 파일을, 서버는 페이지를 캐시하고, 인공지능 모델은 앞 토큰들의 KV 캐시를 둡니다. 함정은 사본이 낡을 수 있다는 것입니다. 고친 뒤에도 사이트가 옛 모습이면 캐시를 건너뛰는 새로고침으로 풀리는 일이 많습니다.

엔드포인트

원문 표기 · Endpoint

API 에서 부를 수 있는 주소 하나

엔드포인트는 API 안에서 한 가지 일을 맡는 특정 URL 하나입니다. 예를 들면 사용자 한 명의 정보를 읽는 주소입니다. API 가 차림표 전체라면 엔드포인트는 그 위의 요리 하나이고, 보통 GET·POST 같은 HTTP 메서드와 짝을 이룹니다. 앱 코드를 쓰기 전에 curl 로 엔드포인트를 불러 보면 무엇이 돌아오는지 정확히 알 수 있습니다.

더 배우기

웹소켓(WebSocket)

양쪽이 말을 주고받도록 열어 두는 연결

평범한 HTTP 는 요청 하나, 응답 하나로 끝납니다. 웹소켓은 HTTP 요청으로 시작한 뒤 계속 열려 있는 연결로 바뀌어서, 서버와 브라우저가 아무 때나 서로 메시지를 보낼 수 있습니다. 그래서 묻지 않아도 서버가 새 소식을 밀어 줘야 하는 채팅, 실시간 점수, 온라인 게임에 알맞습니다.

더 배우기

스트리밍

원문 표기 · Streaming

응답을 만들어지는 대로 조각조각 보내기

스트리밍은 응답이 다 만들어질 때까지 기다리지 않고, 준비되는 대로 작은 조각으로 보내는 방식입니다. AI 채팅 서비스는 흔히 HTTP 위에서 SSE(서버 전송 이벤트)로 글을 흘려보내며, 답이 저절로 타자를 치듯 나타나는 이유가 이것입니다. 조각의 크기는 제품마다 정한 것이고(토큰이 아니라 문장 단위로 보내기도 합니다), 그 속도가 누가 타이핑하거나 생각한다는 뜻은 아닙니다.

더 배우기

태그

원문 표기 · Tag

페이지의 한 부분을 표시하는 꺾쇠 괄호 이름표

HTML 태그는 <p> 나 <a> 처럼 꺾쇠 괄호 안에 쓰는 이름표로, 그 내용이 무엇인지 브라우저에게 알려 줍니다. 대부분 짝으로 와서 여는 태그와 빗금이 붙은 닫는 태그 사이에 내용이 들어갑니다. <img> 나 <br> 처럼 혼자 서는 것도 몇 개 있습니다. 태그는 내가 치는 글자이고, 브라우저는 그것으로 요소를 만듭니다.

더 배우기

요소

원문 표기 · Element

여는 태그부터 닫는 태그까지의 한 조각

요소는 여는 태그와 닫는 태그, 그리고 그 사이의 모든 것을 합친 페이지의 한 조각입니다. 요소는 다른 요소 안에 들어가므로 페이지 전체가 나무 모양이 되고, 개발자 도구의 Elements 패널이 보여 주는 것이 바로 그 나무입니다. 태그는 내가 치는 글자이고, 요소는 브라우저가 그것으로 만들어 화면에 그리는 것입니다.

더 배우기

속성

원문 표기 · Attribute

여는 태그 안에 덧붙이는 정보

속성은 태그 이름만으로는 전할 수 없는 정보를 더합니다. 여는 태그 안에 이름="값" 꼴로 쓰고, 링크의 주소나 그림의 파일 같은 것을 담습니다. 자주 쓰는 것은 href · src · alt · id · class 입니다. alt 는 보기보다 중요합니다 — 화면 낭독기가 그림을 볼 수 없는 사람에게 이것을 읽어 줍니다.

더 배우기

HTTP 요청

원문 표기 · HTTP request

클라이언트가 서버에 무언가를 달라고 보내는 글

HTTP 요청은 브라우저나 curl 이 서버에 보내는 평범한 글자로 된 메시지입니다. 첫 줄에 GET / HTTP/1.1 처럼 방법(메서드), 경로, 프로토콜 판을 적습니다. 그 뒤에 헤더가 한 줄에 하나씩 오고, 빈 줄 하나, 그리고 때로 자료를 담은 본문이 옵니다. 서버는 이것을 읽고 응답을 돌려보냅니다.

더 배우기

HTTP 응답

원문 표기 · HTTP response

서버가 요청에 돌려보내는 글

HTTP 응답은 요청에 대한 서버의 답입니다. HTTP/1.1 200 OK 같은 상태 줄로 시작하고, 뒤따를 내용의 종류를 알리는 Content-Type 같은 헤더가 이어지고, 빈 줄 하나 뒤에 내용 자체 — HTML 페이지, 그림, JSON 자료 — 가 옵니다. 헤더와 내용을 가르는 것은 오직 그 빈 줄뿐입니다.

더 배우기

HTTP 헤더

원문 표기 · HTTP header

메시지에 덧붙는 이름: 값 꼴의 정보 줄

헤더는 HTTP 요청이나 응답의 첫 줄 뒤에 오는 줄들로, 하나하나 이름: 값 꼴로 씁니다. 내용 자체가 아니라 메시지에 대한 정보를 담습니다 — 어느 사이트를 원하는지(Host), 내용이 무슨 종류인지(Content-Type), 쿠키, 좋아하는 언어, 페이지가 옮겨 간 곳(Location). 빈 줄 하나가 헤더의 끝입니다.

더 배우기

HTTP 메서드

원문 표기 · HTTP method

GET·POST 처럼 요청 맨 앞에 오는 동사

메서드는 HTTP 요청의 첫 낱말로, 클라이언트가 무엇을 하려는지 알립니다. 이 사이트 본문에서는 "방법"이라고도 부릅니다. GET 은 무언가를 가져오기만 하고 아무것도 바꾸지 않아야 하며, POST 는 채운 양식이나 새 글 같은 자료를 보냅니다. 그 밖에 주로 API 가 쓰는 PUT · PATCH · DELETE 가 있습니다. 개발자 도구의 Network 패널이 요청마다 메서드를 보여 줍니다.

더 배우기

Laravel

PHP 로 웹 서비스를 만드는 인기 프레임워크

Laravel 은 무료 오픈소스 PHP 프레임워크입니다. 주소를 코드에 잇는 라우트, 데이터베이스, 로그인, 미들웨어, 메일, 큐처럼 거의 모든 사이트에 필요한 부분을 갖추고 있어 내 로직만 쓰면 됩니다. SONUB 도 Laravel 로 만들었고, Caddy 웹서버 뒤의 Docker 컨테이너에서 돕니다.

GET

서버에 무언가를 보내 달라고 하는 HTTP 메서드

GET 은 가장 흔한 HTTP 메서드로, 브라우저는 페이지를 열거나 그림을 불러올 때마다 GET 을 보냅니다. 자료를 달라고만 하고 서버의 내용을 바꾸지 않아야 하므로, 여러 번 보내도 안전하고 답을 캐시에 담아 둘 수도 있습니다. 덧붙일 내용은 주소의 물음표 뒤에 실리므로, 비밀번호를 GET 으로 보내면 안 됩니다.

더 배우기

POST

서버가 처리할 자료를 보내는 HTTP 메서드

POST 는 요청의 본문에 자료를 담아 보냅니다 — 채운 양식, 새 댓글, 올리는 파일, API 에 보내는 JSON 같은 것입니다. GET 과 달리 보통 새 글을 저장하는 것처럼 서버의 무언가를 바꿉니다. 그래서 양식을 보낸 페이지를 새로 고치면 브라우저가 "다시 보낼까요?" 하고 묻습니다.

더 배우기

PUT

그 주소의 것을 통째로 바꿔 넣는 HTTP 메서드

PUT 은 무언가의 완성된 새 판을 보내, 서버가 그 주소에 있던 것을 지우고 이것으로 바꿔 넣게 합니다. 같은 PUT 을 두 번 보내도 한 번 보낸 것과 결과가 같습니다. 보통의 웹 페이지보다는 주로 API 가 씁니다.

더 배우기

PATCH

무언가의 일부만 고치는 HTTP 메서드

PATCH 는 새 닉네임처럼 바꾸고 싶은 부분만 보내고 나머지는 그대로 둡니다. PUT 이 통째로 바꾸는 것이라면 PATCH 는 조금 고치는 것입니다. PUT·DELETE 와 마찬가지로 주로 API 가 씁니다.

더 배우기

DELETE

서버에 무언가를 지워 달라고 하는 HTTP 메서드

DELETE 는 글이나 파일처럼 그 주소에 있는 것을 지워 달라고 서버에 요청합니다. 지워도 되는지는 서버가 정하므로, 실제 API 는 먼저 로그인이나 키를 요구합니다. 웹 페이지의 평범한 링크로는 DELETE 를 보낼 수 없고, 프로그램 코드나 curl 같은 도구가 보냅니다.

더 배우기

Content-Type

뒤따르는 내용이 무슨 종류인지 알리는 헤더

Content-Type 은 받는 쪽이 본문을 어떻게 읽어야 하는지 알려 주는 HTTP 헤더입니다. 웹 페이지는 text/html, 자료는 application/json, 그림은 image/png 처럼 씁니다. charset=utf-8 처럼 글자 인코딩도 함께 적을 수 있습니다. 틀리게 적으면 브라우저가 페이지를 글자 그대로 보여 주거나 글자가 깨집니다.

더 배우기

Host 헤더

원문 표기 · Host header

원하는 사이트 이름을 알리는 요청 헤더

Host 는 주소에 적힌 sonub.com 같은 사이트 이름을 실어 보내는 요청 헤더입니다. IP 주소 하나의 서버가 사이트 수백 개를 함께 돌릴 수 있는데, 어느 사이트를 원하는지 Host 헤더로 가립니다. HTTP/1.1 부터는 모든 요청에 반드시 들어갑니다.

더 배우기

charset

글자 인코딩을 알리는 헤더의 한 부분

charset(문자 집합)은 저장된 바이트를 어떤 인코딩으로 다시 글자로 바꿀지 알려 줍니다. 요즘은 거의 언제나 utf-8 입니다. 이것이 없으면 브라우저가 짐작해야 해서, 한글처럼 영어가 아닌 글이 깨진 기호로 보일 수 있습니다.

더 배우기

User-Agent

브라우저가 자기를 소개하는 요청 헤더

User-Agent 는 클라이언트가 자기를 소개하는 요청 헤더입니다 — 어떤 브라우저인지, 몇 판인지, 어떤 운영체제인지. 서버는 이것을 통계에 쓰거나 특정 브라우저의 버그를 피하는 데 씁니다. 쉽게 꾸밀 수 있으므로 보안 판단에 믿으면 안 됩니다.

더 배우기

프로토콜

원문 표기 · Protocol

두 프로그램이 말을 주고받는 약속된 규칙

프로토콜은 양쪽이 미리 맞춰 둔 규칙입니다 — 누가 먼저 말하는지, 어떤 형식으로 쓰는지, 각 대답이 무슨 뜻인지. HTTP 는 웹의 프로토콜이고, SSH 는 멀리 있는 터미널에 접속하는 프로토콜입니다. 규칙을 함께 쓰기 때문에 서로 다른 사람이 만든 프로그램끼리도 알아듣습니다.

더 배우기

꺾쇠 괄호

원문 표기 · Angle brackets

HTML 태그 이름을 감싸는 < 와 > 기호

꺾쇠 괄호는 작다·크다 기호인 < 와 > 입니다. HTML 의 태그는 모두 이 둘 사이에 적으므로, 브라우저는 그 낱말을 화면에 보일 글이 아니라 지시로 읽습니다. 닫는 태그는 빗금을 더해 </p> 처럼 씁니다.

더 배우기

aria-

보조 기술에 요소를 설명하는 속성 묶음

aria- 로 시작하는 속성(aria-label·aria-hidden 등)은 화면 낭독기에게 이 요소가 무엇이고 어떤 상태인지 알려 줍니다. 화면에는 아무것도 바뀌지 않고, 화면을 볼 수 없는 사람을 위한 뜻만 더합니다. 먼저 알맞은 HTML 태그를 쓰고, 태그만으로 전할 수 없는 것에만 씁니다.

더 배우기

alt

그림을 글로 설명하는 속성

alt 는 img 태그의 속성으로, 그림을 짧은 글로 설명합니다. 화면 낭독기가 소리 내어 읽고, 검색 엔진이 참고하며, 그림을 불러오지 못하면 브라우저가 대신 보여 줍니다. 그림이 보여 주는 것을 적고, 꾸밈뿐인 그림은 alt="" 로 비워 둡니다.

더 배우기

body

원문 표기 · <body>

손님이 실제로 보는 내용을 담는 HTML 부분

body 는 HTML 문서의 큰 두 부분 중 하나입니다. 창에 보이는 모든 것 — 제목·글·그림·버튼 — 이 <body> 와 </body> 사이에 들어갑니다. 제목 줄·문자 집합처럼 페이지에 대한 정보는 head 에 둡니다.

더 배우기

head

페이지에 대한 정보를 담는 HTML 부분

head 는 HTML 문서에서 body 앞에 옵니다. 페이지 자체가 아니라 페이지에 대한 것 — 브라우저 탭과 검색 결과에 보일 제목, 문자 집합, 스타일 파일 연결 — 을 담습니다. head 안의 것은 창에 그려지지 않습니다.

더 배우기

class

여러 요소 무리에 붙이는 이름

class 는 요소들을 이름 붙은 무리로 묶는 HTML 속성입니다. 한 class 를 여러 요소가 함께 쓸 수 있고, 한 요소가 빈칸으로 나눠 여러 class 를 가질 수도 있습니다. CSS 와 JavaScript 가 이 이름으로 무리를 찾아, 예를 들어 경고를 모두 빨갛게 칠합니다.

더 배우기

id

요소 하나에 붙이는 하나뿐인 이름

id 는 요소 딱 하나에 이름을 붙이는 HTML 속성입니다. 한 페이지에서 두 요소가 같은 id 를 쓰면 안 됩니다. 스크립트가 이 이름으로 그 요소를 집어 오고, CSS 가 꾸미며, #이름 으로 끝나는 링크는 그 자리로 바로 갑니다.

더 배우기

div

한 줄을 통째로 차지하는 뜻 없는 상자 태그

div 는 뜻이 없는 HTML 태그입니다. 다른 요소를 묶어 새 줄에서 시작해 가로를 채우는 덩어리로 만들고, CSS 가 그 덩어리를 배치하거나 꾸밉니다. 어울리는 뜻 있는 태그(header·nav·section 등)가 없을 때만 씁니다.

더 배우기

span

글 줄 안에 끼어드는 뜻 없는 상자 태그

span 은 뜻이 없는 HTML 태그로, 줄을 바꾸지 않고 줄 안의 몇 낱말만 감쌉니다. CSS 나 JavaScript 가 그 부분만 잡을 수 있게 하려고 씁니다(예: 한 낱말만 색 바꾸기). 중요하거나 강조할 말이면 strong·em 이 그 뜻을 더 잘 전합니다.

더 배우기

h1~h6

원문 표기 · h1 to h6

문서의 목차를 이루는 여섯 단계 제목 태그

h1 부터 h6 은 HTML 의 제목 태그입니다. h1 은 가장 큰 제목, h2 는 절, h3 은 그 안의 작은 절이고 h6 까지 내려갑니다. 문서의 목차를 나타내므로 화면 낭독기와 검색 엔진이 이 단계로 페이지를 훑습니다. 글자 크기가 아니라 단계이므로 크기는 CSS 로 바꿉니다.

더 배우기

href

링크가 열 주소를 담는 속성

href 는 a 태그의 속성으로, 링크가 어디로 가는지 적습니다. 전체 주소(https://…), 같은 사이트의 경로(/about), 같은 페이지의 한 자리(#price) 모두 쓸 수 있습니다. href 가 없으면 a 태그는 링크처럼 보여도 아무 데도 가지 않습니다.

더 배우기

src

그림·스크립트 파일이 있는 곳을 담는 속성

src(source, 출처)는 요소에 어떤 파일을 불러올지 브라우저에게 알리는 속성입니다. img 는 그림, script 는 스크립트, video 는 영상을 불러옵니다. 브라우저는 그 파일을 따로 요청하므로, src 가 틀리면 그림이 깨지거나 스크립트가 돌지 않습니다.

더 배우기

script 태그

원문 표기 · script tag

JavaScript 를 넣는 <script> 부분

script 태그는 페이지에 JavaScript 를 넣습니다. <script> 와 </script> 사이에 직접 쓰거나 src 로 파일을 불러옵니다. 브라우저는 페이지를 읽는 도중에 이것을 실행하므로, 요소를 건드리는 스크립트는 보통 body 끝에 두거나 defer 를 붙입니다.

더 배우기

style 블록

원문 표기 · style block

HTML 안에 CSS 를 적는 <style> 부분

style 블록은 페이지 안의 <style> 과 </style> 사이(보통 head)에 쓴 CSS 입니다. 작은 페이지 하나에는 편하고, 사이트 전체에는 같은 규칙을 따로 .css 파일에 두고 모든 페이지가 연결합니다. 지워도 모양만 바뀌고 내용과 동작은 그대로입니다.

더 배우기

호환 모드

원문 표기 · Quirks mode

DOCTYPE 이 없을 때의 옛 그리기 방식

HTML 페이지가 <!DOCTYPE html> 로 시작하지 않으면 브라우저는 아주 오래된 페이지로 보고 호환 모드로 바꿉니다. 1990년대 브라우저의 이상한 동작을 흉내 내어 옛 사이트가 그대로 보이게 하는 것이라, 크기와 간격이 지금 규칙과 달라집니다. 모든 페이지를 DOCTYPE 줄로 시작하면 피할 수 있습니다.

더 배우기

화면 낭독기

원문 표기 · Screen reader

화면의 글을 소리로 읽어 주는 프로그램

화면 낭독기는 화면에 있는 것을 소리나 점자로 바꿔, 눈이 보이지 않거나 잘 안 보이는 사람이 컴퓨터와 휴대폰을 쓰게 합니다. HTML 에 기대어 제목으로 건너뛰고, 그림은 alt 로, 단추는 이름표로 읽습니다. div 상자로만 만든 페이지는 읽어 줄 것이 거의 없습니다.

더 배우기

검색 엔진

원문 표기 · Search engine

웹 페이지를 모아 찾아 주는 서비스

검색 엔진(Google·Bing·네이버 등)은 프로그램을 웹 곳곳에 보내 페이지를 읽고, 찾은 것을 거대한 색인에 모아 두었다가 누가 검색하면 순서를 매겨 보여 줍니다. 그림이 아니라 HTML 을 읽으므로 제목 태그·title·alt 가 페이지 내용을 알려 줍니다.

더 배우기

입력 양식

원문 표기 · HTML form

손님 입력을 서버로 보내는 HTML 부품(폼)

입력 양식(폼, form)은 손님이 입력하거나 고른 것 — 글 상자·체크 상자·단추 — 을 모아 서버로 보내는 HTML 요소입니다. 보통 POST 요청으로 보냅니다. 가입·로그인·검색 칸이 모두 폼입니다. 누구나 아무것이나 보낼 수 있으므로 서버는 받은 값을 반드시 검사합니다.

더 배우기

file://

내 컴퓨터 파일을 서버 없이 바로 여는 주소 형식

file:// 로 시작하는 주소는 서버가 아니라 내 디스크의 파일을 가리켜, 브라우저가 네트워크 없이 엽니다. HTML 페이지를 시험해 보는 가장 쉬운 방법입니다. 다만 JavaScript 가 보내는 여러 요청처럼 진짜 http:// · https:// 주소가 있어야 되는 기능은 이렇게는 동작하지 않습니다.

더 배우기

DOM

브라우저가 HTML 로 세운 요소들의 나무 구조

DOM(Document Object Model)은 브라우저가 HTML 을 읽고 세운 요소의 나무입니다. 뿌리에 html, 그 아래 head 와 body 가 있는 식입니다. 화면은 이 나무로 그려지고, JavaScript 는 나무를 바꿔 페이지를 바꿉니다. 개발자 도구는 지금의 DOM 을 보여 주므로, 스크립트가 돈 뒤에는 HTML 파일과 다를 수 있습니다.

더 배우기

Elements 패널

원문 표기 · Elements panel

HTML·스타일을 보고 고치는 패널

브라우저 개발자 도구의 Elements 패널은 페이지를 요소의 나무로 보여 주고, 고른 요소에 걸린 CSS 규칙을 옆에 보여 줍니다. 글·속성·스타일을 그 자리에서 바꾸면 바로 결과가 보입니다. 저장되지 않아 새로고침하면 사라지므로 마음껏 실험해도 됩니다.

더 배우기

Network 패널

원문 표기 · Network panel

요청마다 상태·크기·시간을 보는 패널

Network 패널은 페이지가 보낸 요청 — 페이지 자체·스타일·그림·스크립트·API 호출 — 을 하나씩 방법·상태 코드·크기·걸린 시간과 함께 보여 줍니다. 하나를 누르면 요청·응답의 헤더와 본문을 읽을 수 있습니다. 대부분의 버그에서 첫 질문, "서버가 답했나, 무엇을?" 에 답해 줍니다.

더 배우기

Sources

스크립트를 보고 중단점을 거는 개발자 도구 패널

Sources 패널은 페이지가 불러온 파일, 주로 JavaScript 를 보여 줍니다. 줄 번호를 누르면 중단점이 걸려, 코드가 그 줄에 오면 페이지가 멈춥니다. 그다음 한 줄씩 앞으로 가며 변수의 값을 지켜볼 수 있습니다.

더 배우기

Application

쿠키·로컬 저장소·캐시를 보는 개발자 도구 패널

Application 패널은 사이트가 내 기계에 저장해 둔 것 — 쿠키·로컬 저장소·캐시 저장소·서비스 워커 — 을 보여 줍니다. 항목마다 읽고 고치고 지울 수 있습니다. 나에게만 사이트가 이상할 때 여기서 저장된 자료를 지우면 풀리는 일이 많습니다.

더 배우기

로컬 저장소

원문 표기 · Local storage

사이트가 브라우저 안에 자료를 남겨 두는 곳

로컬 저장소(localStorage)는 웹사이트가 내 브라우저에 짧은 글을 키–값 짝으로 저장해 두는 곳으로, 탭을 닫아도 남습니다. 쿠키와 달리 요청마다 서버로 보내지지 않습니다. 같은 사이트만 쓸 수 있지만 그 브라우저를 쓰는 사람은 누구나 볼 수 있으므로 비밀번호·키는 두지 않습니다.

더 배우기

렌더링 엔진

원문 표기 · Rendering engine

HTML·CSS 를 화면에 그리는 브라우저 부품

렌더링 엔진은 브라우저의 심장입니다. HTML 과 CSS 를 읽어 요소의 나무를 세우고, 크기와 자리를 계산해 화면에 그립니다. Chrome·Edge 는 Blink, Safari 는 WebKit, Firefox 는 Gecko 를 씁니다. 그래서 같은 페이지도 브라우저마다 조금 다르게 보일 수 있습니다.

더 배우기

동일 출처 정책

원문 표기 · Same-origin policy

다른 사이트 자료를 못 읽게 막는 규칙

출처(origin)는 https://sonub.com 처럼 방식·호스트·포트를 합친 것입니다. 동일 출처 정책은 페이지가 자기 출처의 자료만 마음대로 읽게 합니다. 그래서 다른 사이트의 스크립트는, 내 브라우저가 로그인해 있어도 내 메일이나 은행 화면을 읽지 못합니다. 서버는 CORS 헤더로 정한 출처만 허락할 수 있습니다.

더 배우기

Chromium

Chrome·Edge 등이 함께 쓰는 오픈소스 바탕

Chromium 은 Google 이 이끄는 오픈소스 브라우저 프로젝트입니다. Chrome·Microsoft Edge·Brave·Opera·Arc 가 모두 이 위에 지어져 Blink 렌더링 엔진을 함께 쓰므로, 하나에서 되는 페이지는 대개 나머지에서도 됩니다. Safari(WebKit)와 Firefox(Gecko)가 여기에 기대지 않는 대표 브라우저입니다.

더 배우기

의사 헤더(pseudo-header)

원문 표기 · Pseudo-header

HTTP/2 에서 첫 줄과 Host 를 대신하는 헤더

HTTP/2 에는 글로 쓴 요청 줄이 없습니다. 방법·경로·사이트 이름이 콜론으로 시작하는 특별 헤더 :method · :path · :authority(그리고 :scheme)로 실립니다. 개발자 도구는 이것을 요청 헤더 맨 위에 보여 줍니다. HTTP/1.1 의 GET /path HTTP/1.1 줄과 Host: 헤더와 같은 내용입니다.

더 배우기

캐리지리턴

원문 표기 · Carriage return

줄 맨 앞으로 돌아가는 보이지 않는 글자 \r

캐리지리턴(\r)은 예전 타자기의 종이를 줄 맨 앞으로 돌려보내던 동작에서 온 보이지 않는 글자입니다. HTTP 는 모든 줄 끝에 \r 과 줄바꿈 \n 을 함께(CRLF) 쓰라고 요구합니다. 많은 서버가 \n 만 써도 받아 주지만, HTTP 를 줄 단위로 읽는 도구는 남은 \r 을 걷어 내야 할 때가 많습니다.

더 배우기

200

요청이 성공했다는 상태 코드(OK)

200 OK 는 모든 것이 잘 되어 응답에 요청한 것(페이지·그림·JSON)이 담겨 있을 때 서버가 보내는 상태 코드입니다. 가장 흔한 코드입니다. 200 은 서버가 요청을 처리했다는 뜻일 뿐이라, 내용이 누군가 손으로 쓴 오류 안내일 수도 있습니다.

더 배우기

200 번대

원문 표기 · 200s

성공을 뜻하는 상태 코드 무리

200 부터 299 까지의 상태 코드는 모두 요청이 잘 됐다는 뜻입니다. 흔한 것은 200 OK 이고, 201 Created 는 POST 뒤처럼 새것이 만들어졌다는 뜻, 204 No Content 는 잘 됐지만 돌려줄 내용이 없다는 뜻입니다. 첫 자리 숫자만 봐도 결과를 알 수 있습니다.

더 배우기

301

주소가 영구히 옮겨졌다는 상태 코드

301 Moved Permanently 는 주소가 영영 바뀌었고 새 주소가 Location 헤더에 있다고 알립니다. 브라우저는 알아서 따라가고 기억해 두며, 검색 엔진도 기록을 새 주소로 옮깁니다. curl 은 -L 을 붙여야 따라가므로, 안 붙이면 거의 빈 응답을 받게 됩니다.

더 배우기

308

방법을 바꾸지 않는 영구 이동 상태 코드

308 Permanent Redirect 는 301 처럼 주소가 영구히 옮겨졌다는 뜻인데, 한 가지가 다릅니다. 클라이언트는 같은 방법과 본문으로 다시 요청해야 합니다. 301 에서는 따라가면서 POST 가 GET 으로 바뀔 수 있습니다. Caddy 는 http 손님을 https 로 보낼 때 308 을 씁니다.

더 배우기

400 번대

원문 표기 · 400s

문제가 요청 쪽에 있다는 상태 코드 무리

400 부터 499 까지의 상태 코드는 문제가 클라이언트 쪽에 있다는 뜻입니다. 주소가 틀렸거나, 로그인이 없거나, 서버가 받지 않는 요청입니다. 같은 요청을 다시 보내도 소용없고 요청의 무언가를 바꿔야 합니다. 흔한 것은 400·401·403·404 입니다.

더 배우기

404

요청한 경로가 서버에 없다는 상태 코드

404 Not Found 는 서버는 멀쩡한데 그 경로에 아무것도 없다는 뜻입니다. 주소 오타, 지워진 페이지, 엉뚱한 폴더의 파일이 흔한 원인입니다. 웹에서 가장 유명한 오류 코드입니다. Caddy 로 띄운 단일 페이지 앱에서 깊은 주소를 새로고침하면, index.html 로 넘기라고 알려 주지 않는 한 404 가 납니다.

더 배우기

500 번대

원문 표기 · 500s

서버가 처리하다 넘어졌다는 상태 코드 무리

500 부터 599 까지의 상태 코드는 요청은 멀쩡한데 서버가 처리하다 넘어졌다는 뜻입니다. 코드의 버그, 꺼진 데이터베이스, 리버스 프록시 뒤에서 답하지 않는 프로그램이 흔한 원인입니다. 서버를 운영하는 사람이 고쳐야 하고, 자세한 내용은 브라우저가 아니라 서버 기록(로그)에 있습니다.

더 배우기

빈 줄

원문 표기 · Blank line

HTTP 에서 헤더와 본문을 가르는 빈 줄 하나

HTTP 메시지는 첫 줄, 몇 줄의 헤더, 빈 줄 하나, 그리고 본문으로 이루어집니다. \r\n 만 있는 이 빈 줄이 헤더와 내용 사이의 유일한 경계라서, 빠뜨리면 응답이 깨집니다. 반면 HTML 파일 안의 빈 줄은 브라우저가 무시하므로 아무 일도 하지 않습니다.

더 배우기

압축

원문 표기 · Compression

응답 크기를 줄여 빨리 보내는 일

HTTP 압축은 응답(HTML·CSS·JavaScript·JSON)을 보내기 전에 줄이고, 브라우저가 받아서 다시 풉니다. 브라우저는 풀 수 있는 방식을 Accept-Encoding 헤더에 적고, 서버는 쓴 방식(gzip·br·zstd)을 Content-Encoding 에 적습니다. 글은 몇 분의 일로 줄지만, 그림·영상은 이미 압축돼 있어 거의 줄지 않습니다.

더 배우기

Location 헤더

원문 표기 · Location header

리다이렉트 때 옮겨 갈 새 주소를 담는 헤더

Location 은 주소를 담는 HTTP 응답 헤더입니다. 리다이렉트(301·302·307·308)에서는 클라이언트가 대신 갈 곳을 알리고, 브라우저는 알아서 따라갑니다. POST 로 새것을 만든 뒤(201 Created)에는 새 항목의 주소를 가리키기도 합니다.

더 배우기

요청 줄

원문 표기 · Request line

방법·경로·판을 적은 요청의 첫 줄

HTTP/1.1 요청은 모두 빈칸으로 나뉜 세 부분의 요청 줄로 시작합니다. 방법(GET·POST 등), 경로(/learn), 프로토콜 판(HTTP/1.1)입니다. 헤더와 본문은 그 뒤에 옵니다. 간단한 서버는 이 한 줄만 읽어도 무엇을 돌려줄지 압니다.

더 배우기

프로토콜 판

원문 표기 · Protocol version

HTTP 의 판 번호(HTTP/1.1·2·3)

HTTP 에는 여러 판이 있습니다. HTTP/1.1(1997)은 손으로도 칠 수 있는 글 줄을 보냅니다. HTTP/2(2015)는 같은 뜻을 이진 묶음으로 바꿔 한 연결에 여러 요청을 함께 보냅니다. HTTP/3(2022)은 같은 일을 TCP 대신 UDP 위의 QUIC 으로 합니다. 메서드·헤더·상태 코드의 뜻은 모든 판에서 같습니다.

더 배우기

본문

원문 표기 · Message body

HTTP 헤더 뒤에 오는 메시지의 실제 내용

본문은 HTTP 메시지에서 빈 줄 뒤의 부분입니다. 페이지의 HTML, 그림의 바이트, API 응답의 JSON, POST 로 보낸 양식 값이 여기에 담깁니다. 헤더가 본문을 설명합니다 — Content-Type 은 무엇인지, Content-Length 는 길이를 알립니다. GET 요청에는 보통 본문이 없습니다.

더 배우기

주소별 길 나누기

원문 표기 · Routing

요청 주소마다 알맞은 처리로 보내는 일(라우팅)

라우팅은 요청의 경로나 도메인을 보고 무엇이 답할지 정합니다. /about 은 페이지 하나, /api/… 는 프로그램, files.example.com 은 파일 서버로 보내는 식입니다. 웹 프레임워크는 코드에 경로 목록을 두고, Caddy 같은 서버는 설정에서 경로·호스트로 나눕니다. 길 나누기가 없는 서버는 어떤 주소에도 같은 답을 합니다.

더 배우기

서브도메인

원문 표기 · Subdomain

도메인 앞에 붙인 하위 이름

서브도메인은 내가 가진 도메인 앞에 붙이는 이름입니다. teacher.sonub.com 과 student.sonub.com 은 sonub.com 의 서브도메인입니다. 저마다 다른 서버나 앱을 가리킬 수 있고, DNS 기록 하나만 더하면 되어 따로 돈이 들지 않습니다. www 도 관례로 쓰는 서브도메인입니다.

더 배우기

시간 제한

원문 표기 · Timeout

답이 없으면 기다림을 멈추는 시간 한도

시간 제한(타임아웃)은 연결·응답·요청 전체를 얼마나 기다린 뒤 포기할지 정한 값입니다. 없으면 클라이언트는 죽은 서버 앞에서 끝없이 멈춰 있고, 서버는 느린 손님에게 붙잡힙니다. 시간이 다 되면 답 대신 오류가 나는데, 끝없이 기다리는 것보다 대개 낫습니다.

더 배우기

/health

서버가 살아 있는지 확인하는 주소

상태 확인 주소는 흔히 /health 처럼 생긴 작은 주소로, 서버가 "돌고 있습니다"(와 몇 가지 정보)를 빨리 돌려줍니다. 사람·스크립트·감시 도구가 진짜 일을 보내기 전에 이것을 불러 서비스가 살아 있는지 보거나, 답이 없으면 다시 켭니다.

더 배우기

암호화

원문 표기 · Encryption

남이 읽지 못하게 자료를 비밀 모양으로 바꾸는 일

암호화는 키를 써서 읽을 수 있는 자료를 뒤섞인 바이트로 바꾸는 일이고, 맞는 키가 있는 쪽만 되돌릴 수 있습니다. HTTPS 는 브라우저와 서버 사이의 모든 것을 암호화하므로, 같은 와이파이나 중간 경로에 있는 사람은 알아볼 수 없는 값만 봅니다. 내용은 숨기지만 그 사이트에 갔다는 사실까지 숨기지는 않습니다.

더 배우기

TLS

오가는 글을 암호화하는 보안 규칙

TLS(Transport Layer Security)는 HTTPS 의 S 를 맡는 규칙입니다. 연결을 시작할 때 서버의 인증서를 확인하고 비밀 키를 나눠 가진 뒤, 그다음 오가는 모든 것을 암호화하고 위조를 막습니다. SSL 은 은퇴한 옛 판이라서 아직도 "SSL 인증서" 라는 말이 남아 있습니다.

더 배우기

TCP

자료가 빠짐없이 순서대로 가게 하는 연결 규칙

TCP(Transmission Control Protocol)는 두 컴퓨터 사이에 연결을 열고, 모든 바이트가 순서대로 도착하게 하며 도중에 잃은 것은 다시 보냅니다. HTTP/1.1 과 HTTP/2 가 이 위에서 돕니다. 확인하는 데 시간이 조금 들어서, 빠른 게임은 UDP 를 고르기도 합니다.

더 배우기

UDP

도착을 확인하지 않고 빠르게 보내는 전송 규칙

UDP(User Datagram Protocol)는 연결을 열지 않고, 도착했는지·순서가 맞는지 확인하지 않은 채 작은 꾸러미를 보냅니다. 그래서 빨라 음성 통화·실시간 영상·온라인 게임·DNS 에 맞습니다. 잃으면 안 되는 것은 프로그램이 직접, 또는 QUIC 같은 위층이 확인해야 합니다.

더 배우기

QUIC

HTTP/3 이 쓰는 UDP 위의 전송 규칙

QUIC 은 UDP 위에서 돌며 TLS 암호화를 연결 자체에 넣은 전송 규칙입니다. TCP 와 TLS 를 따로 할 때보다 연결을 여는 왕복이 적고, 꾸러미 하나를 잃어도 다른 요청이 모두 멈추지 않습니다. HTTP/3 은 QUIC 위에 실은 HTTP 입니다.

더 배우기

rUDP

UDP 위에 도착 확인을 더한 게임용 전송 방식

rUDP(reliable UDP)는 그냥 UDP 에 없는 것 — 받았다는 확인·다시 보내기·순서 맞추기 — 을 필요한 메시지에만 더합니다. 게임은 위치 갱신은 잃어도 되는 빠른 UDP 로, "아이템을 샀다" 는 확실하게 같은 연결로 보낼 수 있습니다. 하나로 정해진 표준이 아니라 게임 라이브러리들이 쓰는 기법의 묶음입니다.

더 배우기

네트워크 왕복

원문 표기 · Network round trip

요청을 보내고 답을 받기까지의 한 바퀴

왕복은 메시지가 다른 기계로 가서 답이 돌아오기까지입니다. 한 번마다 가까우면 몇 밀리초, 지구 반대편이면 훨씬 더 지연이 붙어, 작은 답을 여러 번 받는 프로그램은 느려집니다. 코드를 데이터 가까이에 두거나 요청을 묶으면 왕복 횟수가 줄어듭니다.

더 배우기

보안 컨텍스트

원문 표기 · Secure context

강한 기능이 허락되는, HTTPS 로 연 페이지

브라우저는 몇몇 강한 기능을 보안 컨텍스트 — HTTPS 로 연 페이지(개발 중에는 localhost 도) — 에서만 허락합니다. 마이크와 카메라, 오프라인 플레이를 위한 서비스 워커, 지워지지 않는 저장 공간 요청이 그 예입니다. 평문 http:// 페이지에서는 그런 기능이 아예 없습니다.

더 배우기

서비스 워커

원문 표기 · Service worker

페이지 뒤에서 돌며 캐시와 오프라인을 맡는 스크립트

서비스 워커는 브라우저가 페이지와 따로 돌리는 JavaScript 파일입니다. 페이지와 네트워크 사이에 서서 캐시로 요청에 답할 수 있어, 사이트나 게임이 오프라인에서도 열리고 푸시 메시지도 받습니다. 보안 컨텍스트(HTTPS)에서만 동작합니다.

더 배우기

웹 앱 매니페스트

원문 표기 · Web app manifest

홈 화면 설치를 가능하게 하는 이름·아이콘 파일

웹 앱 매니페스트는 앱 이름·아이콘·색·시작 주소를 적은 JSON 파일입니다. 페이지가 이것을 연결하면 브라우저가 사이트를 홈 화면에 설치하자고 제안하고, 설치하면 앱처럼 자기 창에서 열립니다. Cadeplay 는 플랫폼이 대신 넣어 주므로 게임이 따로 넣지 않습니다.

더 배우기

PWA

홈 화면에 앱처럼 설치되는 웹 앱

PWA(Progressive Web App)는 설치한 앱처럼 동작하게 만든 웹사이트입니다. 웹 앱 매니페스트가 있어 홈 화면에 더할 수 있고, 보통 서비스 워커가 있어 빨리 열리고 오프라인에서도 돕니다. 앱 스토어 심사 없이 플레이어가 브라우저에서 바로 설치합니다.

더 배우기

웹 앱

원문 표기 · Web app

브라우저에서 앱처럼 쓰는 웹 프로그램

웹 앱은 페이지를 보여 주는 데서 그치지 않고 일을 하는 웹사이트입니다 — 메일·문서·관리 화면·게임. 브라우저에서 돌아 설치할 것이 없고, 모든 방문자가 곧바로 최신 판을 씁니다. 뒤에는 보통 자료를 저장하는 서버가 있습니다.

더 배우기

WebGL

브라우저에서 GPU 로 2D·3D 를 그리는 기술

WebGL 은 웹 페이지의 JavaScript 가 그래픽 카드를 써서 2D·3D 화면을 빠르게 그리게 하는 기술로, 플러그인이 필요 없습니다. Three.js·Babylon.js·PixiJS·Phaser 같은 엔진과 라이브러리가 속에서 이것을 쓰고, Unity 는 게임을 브라우저에서 도는 WebGL 빌드로 내보낼 수 있습니다.

더 배우기

캔버스

원문 표기 · Canvas

코드로 그림을 그리는 화면 영역

캔버스는 프로그램이 준비된 요소를 놓는 대신 도형·그림·글자를 직접 칠하는 화면 속 네모입니다. 대부분의 2D 웹 게임은 매 프레임을 HTML 캔버스에 그리고, Flutter Flame 같은 게임 프레임워크도 일반 위젯에 둘러싸인 캔버스에 게임을 그립니다.

더 배우기

Cadeplay

zip 하나로 웹 게임을 올리는 게임 플랫폼

Cadeplay(cadeplay.com)는 설치 없이 브라우저에서 바로 플레이하는 HTML5 웹 게임 포털입니다. 게임을 zip 하나로 올리면 자동 검사를 거쳐 바뀌지 않는 자기 주소(이름.cadeplay.com)를 받습니다. 클라우드 저장·순위표·설치용 매니페스트도 플랫폼이 붙여 주므로 게임이 직접 만들지 않아도 됩니다.

더 배우기

콘솔

원문 표기 · Cadeplay console

게임·앱을 등록하고 관리하는 개발자 관리 화면

개발자 콘솔은 플랫폼의 관리용 웹사이트로, 개발자로 로그인해 게임·앱을 등록하고 빌드를 올리고 보고서를 보고 접근 토큰을 만듭니다. Cadeplay 콘솔과 Google 의 Play Console 이 그 예입니다. 여기서 누를 수 있는 일은 플랫폼의 API 로도 할 수 있는 경우가 많습니다.

더 배우기

호스트 라벨

원문 표기 · Host label

게임 주소 맨 앞의 이름

호스트 라벨은 호스트 이름을 점으로 나눈 한 조각이고, 여기서는 이름.cadeplay.com 의 맨 앞, 내가 고르는 게임 이름을 말합니다. 영문자·숫자·하이픈을 쓸 수 있습니다. Cadeplay 에서는 게임이 처음 공개될 때 영구히 고정되므로 공개 전에 신중히 정합니다.

더 배우기

기본 경로

원문 표기 · Base path

사이트 파일 주소의 시작점을 정하는 빌드 설정

Vite 같은 빌드 도구에는 빌드한 게임·사이트의 모든 파일 주소 앞에 붙는 base 설정이 있습니다. / 같은 절대 경로면 도메인 맨 위에서 파일을 찾아, 게임이 다른 자리에 있으면 깨집니다. 상대 경로(./)로 두면 같은 빌드가 내 컴퓨터와 Cadeplay 같은 곳에서 똑같이 돕니다.

더 배우기

자물쇠

원문 표기 · Padlock

주소창의 믿을 수 있는 HTTPS 표시

브라우저는 페이지가 올바른 인증서와 함께 HTTPS 로 왔을 때 주소 옆에 표시 — 전통적으로 자물쇠 — 를 보여 줍니다. 연결이 암호화됐고 그 사이트가 정말 그 도메인이라는 뜻이지, 사이트가 정직하다는 뜻은 아닙니다. 새 서버에 아직 올바른 인증서가 없으면 그 자리에 경고가 뜹니다.

더 배우기

CDN

가까운 곳에서 파일을 주는 배달망

CDN(Content Delivery Network)은 사이트의 파일 — 그림·스크립트·페이지 — 사본을 세계 곳곳의 서버에 두고, 방문자마다 가장 가까운 곳에서 답합니다. 페이지가 빨리 열리고 원래 서버의 일이 줄어듭니다. Cloudflare·Fastly·Amazon CloudFront 가 잘 알려진 CDN 입니다.

더 배우기

컴포넌트

원문 표기 · Component

페이지를 이루는, 다시 쓰는 부품

컴포넌트는 단추·카드·메뉴처럼 한 번 만들어 여러 번 쓰는 화면 조각으로, 자기 구조·모양·동작을 가집니다. React 같은 라이브러리는 페이지 전체를 컴포넌트로 짓고, 각 컴포넌트에 보여 줄 값을 넘깁니다. 컴포넌트 하나를 고치면 쓰인 곳 모두가 고쳐집니다.

더 배우기

인증

원문 표기 · Authentication

사용자나 프로그램이 누구인지 확인하는 일

인증은 "누구세요?" 에 답하는 일입니다. 비밀번호, Google·Apple 로그인, 휴대폰으로 받은 번호, 프로그램이 요청마다 보내는 토큰이 모두 인증 수단입니다. 그 사람이 무엇을 해도 되는지 정하는 권한 확인은 인증 다음 단계입니다. 푸시나 API 호출이 인증 문제로 거절되면 자격 정보가 없거나 틀렸거나 만료된 것입니다.

더 배우기

레이아웃

원문 표기 · Layout

화면에서 요소를 어디에 둘지 정한 배치

레이아웃은 머리말·메뉴·본문·옆 막대·바닥글 같은 화면 부분을 어디에 두고, 넓은 화면과 좁은 화면에서 어떻게 옮길지 정한 배치입니다. 웹에서는 CSS 로 씁니다. 사이트 코드에서는 모든 페이지가 들어가는 공용 틀(머리말·메뉴가 있는 틀)을 레이아웃이라고 부르기도 합니다.

더 배우기

가로세로 비율

원문 표기 · Aspect ratio

그림의 가로와 세로 길이의 비

가로세로 비율은 그림이나 화면의 가로가 세로에 비해 얼마나 긴지를 가로 : 세로 로 적은 것입니다. 16:9 는 와이드 영상, 1:1 은 정사각형, 9:16 은 세운 휴대폰 화면입니다. 자르지 않고 비율만 바꾸면 그림이 눌리거나 늘어나므로, AI 에게 그림 수정을 맡길 때 원하는 비율을 말합니다.

더 배우기

풀스택

원문 표기 · Full-stack

화면부터 서버까지 전부를 다루는 것

풀스택은 제품의 모든 층 — 사용자가 보는 화면(프런트엔드), 그 뒤의 서버와 데이터베이스(백엔드), 흔히 배포까지 — 을 다룬다는 뜻입니다. 풀스택 개발자는 앱 하나를 혼자 만들 수 있고, 풀스택 프로젝트는 그 조각을 모두 담고 있습니다.

더 배우기

개인 액세스 토큰

원문 표기 · Personal access token

비밀번호 대신 쓰는 GitHub 로그인 토큰

개인 액세스 토큰은 GitHub 가 만들어 주는 긴 비밀 문자열로, git push 가 로그인을 물을 때처럼 비밀번호 자리에 씁니다. 할 수 있는 일과 만료일을 정할 수 있고 언제든 취소할 수 있습니다. 비밀번호처럼 다뤄서 채팅에 붙여넣거나 커밋하지 않습니다.

더 배우기

악수

원문 표기 · Handshake

연결 시작 때 설정을 맞추는 인사

악수(handshake)는 연결의 처음 몇 메시지로, 진짜 일을 시작하기 전에 양쪽이 서로를 확인하고 판·기능·키 같은 설정을 맞추는 과정입니다. TLS 가 이것으로 시작하고, MCP 는 initialize 요청과 답을 써 왔습니다. 악수가 실패하면 그다음은 아무것도 오가지 않습니다.

더 배우기

HTML 검사기

원문 표기 · HTML validator

HTML 이 규칙에 맞는지 검사하는 도구

HTML 검사기는 페이지를 읽고 HTML 규칙을 어긴 곳 — 닫지 않은 태그, 엉뚱한 자리의 속성, 겹친 id — 을 모두 알려 줍니다. 브라우저는 이런 실수를 조용히 짐작해 넘기므로, 겉으로는 멀쩡해도 화면 낭독기나 다른 브라우저에서 깨질 수 있습니다. W3C 가 validator.w3.org 에서 무료로 제공합니다.

더 배우기

입력 검사

원문 표기 · Input validation

입력값이 올바른지 쓰기 전에 확인하는 것

입력 검사는 사용자가 보낸 값마다 — 이메일 모양인지, 나이가 숫자인지, 이름이 너무 길지 않은지 — 확인하고, 틀리면 알기 쉬운 안내와 함께 거절하는 일입니다. 브라우저의 검사는 편의일 뿐이고, 누구나 페이지 없이 요청을 보낼 수 있으므로 서버가 다시 검사해야 합니다.

더 배우기

JSON-RPC

JSON 메시지로 함수 호출을 주고받는 약속

JSON-RPC 는 원격 호출을 JSON 으로 적는 작은 표준입니다. 요청은 method 와 params, 그리고 id 를 싣고, 답은 같은 id 와 함께 result 나 error 를 돌려줍니다. id 가 없는 메시지는 알림(notification)이라 답이 없습니다. MCP 는 모든 메시지에 JSON-RPC 2.0 을 씁니다.

더 배우기

알림

원문 표기 · Notification

답을 기다리지 않는 한쪽 방향 메시지

JSON-RPC 에서 알림은 id 가 없는 메시지입니다. 무슨 일이 있었다고 상대에게 알리기만 하고(예: MCP 에서 악수 뒤에 보내는 notifications/initialized), 받는 쪽은 답하면 안 됩니다. 답이 없으므로 보낸 쪽은 처리됐는지 알 수 없습니다.

더 배우기

로컬 API

원문 표기 · Local API

내 컴퓨터 안의 프로그램이 여는 API

로컬 API 는 내 기계의 프로그램이 http://localhost:11434 같은 주소에서 여는 API 입니다. 내 앱은 클라우드 API 와 똑같은 방식으로 말을 걸지만, 요청이 컴퓨터 밖으로 나가지 않아 인터넷도 유료 키도 필요 없습니다. Ollama·llama.cpp 같은 모델 러너가 이렇게 돕니다.

더 배우기

전송 방식

원문 표기 · Transport

MCP 메시지가 오가는 통로

전송 방식은 MCP 메시지가 클라이언트와 서버 사이를 오가는 길입니다. stdio 는 클라이언트가 같은 컴퓨터에서 서버 프로그램을 켜고 표준 입력·출력으로 말하는 방식이고, Streamable HTTP 는 서버가 웹 주소에서 돌아 여러 사용자가 접속하는 방식입니다. 어느 쪽이든 메시지는 같습니다.

더 배우기

모바일 우선

원문 표기 · Mobile first

휴대폰 화면부터 먼저 설계하는 방식

모바일 우선은 좁은 휴대폰 화면의 레이아웃을 먼저 쓰고, 넓은 화면을 위한 규칙을 그 위에 더하는 방식입니다. 방문자 대부분이 휴대폰으로 오고, 단순한 한 줄 페이지를 넓히는 것이 빽빽한 컴퓨터 화면을 줄이는 것보다 쉽습니다. CSS 에서는 넓은 화면 규칙을 min-width 미디어 쿼리 안에 둡니다.

더 배우기

공개 표준

원문 표기 · Open standard

누구나 쓰도록 공개된 공통 규칙

공개 표준은 누구나 허락이나 돈 없이 읽고 구현할 수 있게 공개한 규격입니다. HTML·HTTP·JSON 이 공개 표준이라서 어느 브라우저로든 어느 사이트나 열 수 있습니다. Agent Skills 와 MCP 도 공개 표준이라 스킬이나 서버 하나가 여러 AI 도구에서 돕니다.

더 배우기

규격

원문 표기 · Specification

기술이 따라야 할 공식 약속 문서(스펙)

규격(스펙)은 기술을 정확히 정한 공식 문서입니다. 올바른 메시지가 어떤 모양인지, 각 부분이 무슨 뜻인지, 경우마다 무엇이 일어나야 하는지 적습니다. 다른 회사가 만든 프로그램끼리 함께 도는 것은 같은 규격을 따르기 때문입니다. 규격은 바뀔 수 있어 날짜나 판 번호로 어느 것을 따르는지 밝힙니다.

더 배우기

정적 사이트

원문 표기 · Static site

미리 만든 파일을 그대로 보여 주는 웹사이트

정적 사이트는 HTML·CSS·JavaScript·그림 파일뿐이라, 서버가 방문자마다 무엇을 실행하지 않고 파일을 그대로 내줍니다. 그래서 빠르고 싸며 안전하게 올릴 수 있고, Cloudflare Pages·GitHub Pages 처럼 무료인 곳도 많습니다. 안의 모든 파일을 누구나 내려받을 수 있으므로 비밀 값을 넣으면 안 됩니다.

더 배우기

URI

자원을 가리키는 이름 형식(URL 을 포함)

URI(Uniform Resource Identifier)는 무언가를 정해진 모양 — 방식, 콜론, 나머지 — 으로 가리키는 문자열입니다. URL 은 어디서 가져올지까지 알려 주는(https://…) URI 이고, URI 는 mailto:me@example.com 이나 MCP 리소스 notes://shopping 처럼 웹 페이지가 아닌 것도 가리킬 수 있습니다.

더 배우기

Sign in with Apple

Apple 계정으로 로그인하는 기능

Sign in with Apple 은 새 비밀번호를 만들지 않고 Apple 계정으로 로그인하게 하고, 진짜 이메일을 중계 주소 뒤에 숨길 수도 있게 합니다. App Store 규칙은 Google 같은 다른 회사 로그인을 넣은 앱에 이런 개인정보 보호형 선택지도 함께 두라고 요구하며, 없으면 심사에서 거절될 수 있습니다.

더 배우기

대시보드

원문 표기 · Dashboard

현황과 설정을 한 화면에 모은 관리 화면

대시보드는 서비스의 중요한 숫자·목록·설정을 한 화면에 모아, 메뉴를 뒤지지 않고 현황을 보고 바로 손쓰게 하는 페이지입니다. 호스팅 서비스의 관리 화면도, 내 학습 진도 화면도 대시보드입니다.

3D

가로·세로·깊이가 있어 둘러볼 수 있는 입체 그래픽

3D 그래픽은 물체를 가로·세로·깊이의 세 방향으로 나타내고, 프로그램이 매 프레임 카메라 자리에서 본 모습을 보통 GPU 로 그립니다. 2D 게임은 납작한 그림을 그립니다. 3D 는 모델·조명·카메라·더 무거운 엔진이 필요해 일이 훨씬 많습니다.

더 배우기

화면 공유

원문 표기 · Screen sharing

내 컴퓨터 화면을 상대에게 그대로 보여 주는 기능

화면 공유는 화상 통화에서 내 화면 — 전체 화면, 창 하나, 브라우저 탭 하나 — 을 실시간으로 상대에게 보내는 기능입니다. 시험 인터뷰에서는 화면 전체를 공유하므로 심사관이 내가 하는 일과 여는 프로그램을 모두 볼 수 있습니다.

더 배우기

비밀 키

원문 표기 · Secret key

남에게 보이면 안 되는 접속·암호용 키

비밀 키는 내가 누구인지 증명하거나 자료를 잠그는 값입니다. API 키, 비밀번호 같은 토큰, 키 쌍의 개인 키, 두 컴퓨터가 연결을 암호화하려고 나눠 가진 키가 모두 그렇습니다. 본 사람은 나인 척할 수 있으므로 .env 파일이나 비밀 저장소에 두고, 코드·채팅·스크린샷에는 절대 넣지 않습니다.

더 배우기

보안

원문 표기 · Security

해킹·유출에서 시스템과 정보를 지키는 일

보안은 남이 시스템과 자료를 읽거나 바꾸거나 멈추지 못하게 지키는 모든 일입니다. 평소 코딩에서는 입력 검사, 비밀 키를 코드 밖에 두기, HTTPS 쓰기, 프로그램마다 꼭 필요한 권한만 주기, 소프트웨어 업데이트가 여기에 듭니다. AI 가 코드를 빨리 써도 보안 확인은 사람의 몫으로 남습니다.

더 배우기

WebAssembly

브라우저에서 빠르게 도는 이진 형식(Wasm)

WebAssembly(Wasm)는 브라우저가 JavaScript 옆에서 기계어에 가까운 속도로 돌리는 이진 형식입니다. C·C++·Rust 로 쓴 프로그램을 이것으로 컴파일할 수 있습니다. 그래서 파이썬 인터프리터 전체(Pyodide)나 작은 AI 모델도 설치나 서버 없이 웹 페이지 안에서 돕니다.

더 배우기

robots.txt

검색 로봇에게 들어갈 곳을 알리는 파일

robots.txt 는 사이트 맨 위(/robots.txt)에 두는 글 파일로, 웹 크롤러에게 어느 경로를 방문해도 되고 안 되는지 알립니다. 예의 바른 검색 로봇은 이것부터 읽고 따릅니다. 부탁일 뿐 잠금이 아니어서 아무것도 숨기지 못하고, 누구나 읽을 수 있습니다.

더 배우기

검색 로봇

원문 표기 · Search robot

웹 페이지를 돌며 모으는 프로그램

검색 로봇(웹 크롤러)은 페이지를 받아 오고, 그 안의 링크를 따라 다음 페이지로 가며 읽은 것을 저장하는 프로그램입니다. 검색 엔진은 이렇게 색인을 만듭니다. 예의 바른 로봇은 robots.txt 부터 읽고 너무 빨리 드나들지 않습니다. AI 회사도 학습용 글을 모으려고 크롤러를 돌립니다.

더 배우기

CAPTCHA

사람인지 기계인지 가리려고 내는 확인 문제

CAPTCHA 는 사람이 있는지 확인하려고 사이트가 내는 작은 문제입니다. 신호등이 있는 사진 고르기, 찌그러진 글자 입력, 또는 사이트가 움직임을 살피는 동안 상자에 체크하기가 그 예입니다. 스팸과 자동 가입을 막으려고 씁니다. 브라우저를 조작하는 AI 도구는 여기서 멈추고 사람에게 넘기게 되어 있습니다.

더 배우기

다크 모드

원문 표기 · Dark mode

어두운 바탕에 밝은 글자로 보이는 화면 모드

다크 모드는 밝은 바탕의 어두운 글자 대신 어두운 바탕에 밝은 글자를 보여 줍니다. 밤에 좋아하는 사람이 많고, OLED 화면 휴대폰에서는 배터리를 아낄 수 있습니다. 사이트는 CSS 로 기기 설정을 따를 수 있으므로, 쓰는 색마다 어두운 판에서도 잘 읽히는 색이 있어야 합니다.

더 배우기

시안

원문 표기 · Mock-up

만들기 전에 미리 그려 둔 화면 디자인

시안은 코드가 생기기 전에 화면이 어떻게 보여야 하는지 — 배치·색·글 — 를 미리 그린 그림으로, 디자인 도구나 스크린샷으로 만듭니다. 만든 페이지를 시안과 비교해 확인합니다. AI 코딩 도구에 시안 그림을 붙여 넣고 그대로 만들어 달라고 할 수도 있습니다.

더 배우기

Docusaurus

Markdown 으로 문서 사이트를 만드는 도구

Docusaurus 는 Meta 에서 시작한 오픈소스 도구로, Markdown 파일로 문서 웹사이트를 만듭니다. React 위에 지어졌고 검색·판 관리·번역을 붙여 주며, 어디에나 올릴 수 있는 정적 사이트를 만들어 냅니다.

더 배우기

MkDocs

Markdown 문서 사이트를 만드는 파이썬 도구

MkDocs 는 파이썬으로 만든 오픈소스 도구로, Markdown 파일 폴더와 YAML 설정 파일 하나를 문서 웹사이트로 바꿉니다. Material for MkDocs 테마와 함께 자주 쓰고, 결과는 정적 사이트입니다.

더 배우기

VitePress

Vite·Vue 로 빠른 문서 사이트를 만드는 도구

VitePress 는 Vue 팀이 만든 오픈소스 도구로, Markdown 으로 문서 웹사이트를 만듭니다. 쓰는 동안의 미리 보기는 Vite 로 아주 빠르고, 페이지는 Vue 로 그리며, 결과는 정적 사이트입니다.

더 배우기

Svelte

미리 변환해 가볍게 도는 웹 화면 프레임워크

Svelte 는 React·Vue 처럼 컴포넌트로 웹 화면을 만드는 오픈소스 프레임워크입니다. 다른 점은 내보내기 전에 컴포넌트를 평범한 JavaScript 로 미리 변환해, 브라우저가 내려받는 프레임워크 코드가 적다는 것입니다. SvelteKit 은 그 위에 지은 앱 프레임워크입니다.

더 배우기

Vue

부품으로 화면을 짓는 JS 프레임워크

Vue 는 Evan You 가 만든 오픈소스 JavaScript 프레임워크로, 컴포넌트로 웹 화면을 만듭니다. 컴포넌트 하나가 HTML 틀·동작·스타일을 함께 가지고, 자료가 바뀌면 화면이 저절로 바뀝니다. 페이지 한 부분에만 붙일 수도, 앱 전체를 돌릴 수도 있습니다.

더 배우기

포커스

원문 표기 · Keyboard focus

지금 키보드 입력을 받는 화면 요소

포커스는 페이지에서 지금 키보드 입력을 받는 요소 하나(링크·단추·입력 칸)를 가리킵니다. Tab 은 다음으로, Shift+Tab 은 앞으로 옮기고, Enter 는 누릅니다. 브라우저는 그 둘레에 테두리를 그리는데, 이것을 지우면 키보드 사용자는 길을 잃습니다. 팝업을 닫은 뒤 포커스를 제자리로 돌려주면 이어서 쓸 수 있습니다.

더 배우기

앵커

원문 표기 · Anchor

링크가 바로 갈 수 있는 페이지 속 자리

앵커는 페이지 안에서 이름이 붙은 자리로, 보통 요소의 id 나 제목입니다. #이름 으로 끝나는 링크는 페이지를 열고 그 자리로 바로 내려갑니다. GitHub 의 Markdown 페이지는 제목마다 앵커를 저절로 붙여, 용어 사전이 용어 하나로 바로 링크할 수 있습니다.

더 배우기

alert·confirm 창

원문 표기 · alert or confirm dialog

답할 때까지 페이지를 막는 브라우저의 작은 창

alert() 와 confirm() 은 브라우저가 직접 작은 창을 띄우는 JavaScript 호출입니다. alert 는 확인 단추가 있는 알림을, confirm 은 확인·취소를 묻습니다. 누군가 누를 때까지 스크립트와 자동화 도구를 포함해 페이지가 멈추므로, 브라우저를 조작하는 AI 도구는 이 창을 직접 닫아 달라고 합니다.

더 배우기

OAuth

비밀번호 없이 계정 사용을 허락하는 표준

OAuth 는 "Google 계정 연결" 같은 단추 뒤의 표준입니다. 진짜 서비스의 페이지에서 로그인하고 앱이 할 수 있는 일을 허락하면, 앱은 비밀번호가 아니라 토큰을 받고, 나는 언제든 그 허락을 거둘 수 있습니다. 원격 MCP 서버는 흔히 OAuth 로 로그인합니다.

더 배우기

서버 템플릿

원문 표기 · Server template

서버가 값을 채워 HTML 을 만드는 틀

서버 템플릿은 빈칸이 있는 HTML 파일로, 서버가 요청마다 이름·글 목록 같은 값을 채워 완성된 페이지를 브라우저에 보냅니다. Laravel 은 Blade, Django·Flask 는 Jinja 계열 템플릿을 씁니다. 브라우저는 늘 평범한 HTML 만 받습니다.

더 배우기

단일 페이지 앱

원문 표기 · Single-page app

화면만 바꿔 그리는 웹 앱(SPA)

단일 페이지 앱(SPA)은 HTML 페이지 하나를 받은 뒤, 이동할 때마다 JavaScript 로 화면 일부를 다시 그리고 주소를 바꾸며 서버에서는 자료만 받아 옵니다. 화면 이동이 빠르지만, 서버는 앱의 모든 주소에 index.html 을 내줘야 하고, 페이지를 고치는 도구는 다시 그릴 때마다 다시 돌아야 합니다.

더 배우기

툴팁

원문 표기 · Tooltip

마우스를 올리면 뜨는 작은 설명 상자

툴팁은 낱말이나 단추에 마우스를 올리거나 키보드 포커스를 두면 뜨고, 벗어나면 사라지는 작은 상자로, 짧은 도움말을 담습니다. SONUB 의 용어 팝업은 그보다 풍부한 형태로, 뜻·예시·관련 용어가 담긴 카드입니다.

더 배우기

PayPal

계정끼리 돈을 보내는 온라인 결제 서비스

PayPal 은 카드나 은행 계좌를 한 번 연결해 두고 다른 PayPal 계정에 돈을 내는 온라인 결제 서비스입니다. SONUB 에서는 수업료를 내는 유일한 방법이며, 학생이 PayPal 로 내면 돈은 강사의 PayPal 비즈니스 계정으로 바로 갑니다. SONUB 은 돈을 맡지 않고, PayPal 자체 수수료는 PayPal 규정에 따라 붙을 수 있습니다.

더 배우기

PayPal 비즈니스 계정

원문 표기 · PayPal business account

결제를 받는 PayPal 계정 — Client ID 와 Secret 으로 연결합니다

PayPal 비즈니스 계정은 결제를 받으려고 만드는 PayPal 계정입니다. 한국과 필리핀에서는 사업자 번호 없이도 만들 수 있습니다. SONUB 에서는 강사마다 하나씩 연결합니다 — PayPal 개발자 대시보드에서 Live 앱을 만들고, 그 Client ID 와 Secret 을 강사 프로필의 결제 설정 탭에 붙여 넣습니다. SONUB 은 이 값으로 수업 결제를 만들고·확인하고·환불할 뿐이며, 돈은 강사에게 바로 가고 SONUB 은 받거나 맡아 두지 않습니다.

더 배우기

새 탭

원문 표기 · New tab

같은 브라우저 창 안에 따로 여는 페이지

브라우저는 열린 페이지마다 창 위쪽에 탭을 하나씩 둡니다. 링크를 새 탭으로 열면 보던 페이지가 그대로 남아 다시 돌아올 수 있습니다.

Chrome

Google 이 만든 무료 웹 브라우저

Google Chrome 은 컴퓨터와 휴대폰에서 쓰는 무료 웹 브라우저로, 오픈소스 Chromium 을 바탕으로 만들었습니다. 가장 널리 쓰이는 브라우저 가운데 하나입니다. SONUB 화상 교실에서 수업을 브라우저로 녹화하려면 컴퓨터의 Chrome 이나 Edge 가 필요합니다.

더 배우기

Edge

Windows 에 기본으로 든 웹 브라우저

Microsoft Edge 는 Windows 에 처음부터 들어 있는 웹 브라우저입니다. Chrome 처럼 Chromium 을 바탕으로 만들어 대부분의 사이트가 둘에서 똑같이 동작합니다. SONUB 화상 교실에서 수업을 녹화하려면 컴퓨터의 Chrome 이나 Edge 가 필요합니다.

Firefox

Mozilla 가 만든 웹 브라우저

Firefox 는 Gecko 엔진으로 웹 페이지를 그리는 웹 브라우저입니다. 오픈 소스이고 비영리 재단의 회사가 만들며, Chrome 처럼 개발자 도구(F12)가 있습니다.

더 배우기

Safari

Apple 이 만든 웹 브라우저

Safari 는 WebKit 엔진으로 웹 페이지를 그리는 웹 브라우저입니다. 맥·아이폰·아이패드의 기본 브라우저라서, 웹 페이지는 Safari 에서도 확인해야 합니다.

더 배우기

Brave

Brave Software 가 만든 웹 브라우저

Brave 는 Chromium 엔진으로 웹 페이지를 그리는 웹 브라우저입니다. 광고와 추적기를 기본으로 막고, Chromium 위에 만들어서 Chrome 확장과 개발자 도구가 거의 같게 동작합니다.

더 배우기

Opera

Opera 가 만든 웹 브라우저

Opera 는 Chromium 엔진으로 웹 페이지를 그리는 웹 브라우저입니다. 노르웨이에서 시작한 회사가 만들고, Chromium 위에 만들어서 개발자 도구가 Chrome 과 거의 같습니다.

더 배우기

MDN

HTML·CSS·JavaScript 를 설명하는 Mozilla 의 무료 문서

MDN Web Docs 는 Firefox 를 만드는 Mozilla 가 운영하는 무료 웹사이트로, HTML·CSS·JavaScript·브라우저 API 같은 웹 기술을 설명합니다. 페이지마다 기능이 하는 일, 코드 예시, 어느 브라우저가 지원하는지를 보여 줍니다. Firefox 만이 아니라 모든 브라우저를 다루므로 웹 개발자가 늘 찾아보는 기준 문서입니다.

더 배우기

index.html

주소가 폴더까지만 가리킬 때 웹 서버가 보내는 첫 페이지 파일

https://example.com/ 처럼 주소가 폴더에서 끝나면, 대부분의 웹 서버(nginx·Apache·Caddy)는 그 폴더에서 index.html 이라는 파일을 찾아 보냅니다. 그래서 간단한 사이트의 첫 화면 파일은 보통 index.html 입니다. 이 파일이 없으면 오류 화면이나 파일 목록이 대신 나옵니다.

더 배우기

example.com

문서에서 예시로만 쓰도록 따로 떼어 둔 도메인 이름

example.com·example.org·example.net 은 책과 안내서가 남의 실제 사이트를 가리키지 않고 주소를 보여 줄 수 있도록 예약되어 있습니다. 누구도 이 이름을 등록할 수 없습니다. 안내서에 example.com 이 나오면 그 자리에 내 도메인을 넣습니다.

더 배우기

SONUB 용어 사전

인프라

용어 144개

서버

원문 표기 · Server

요청이 오기를 기다렸다가 답해 주는 컴퓨터

서버는 요청을 기다렸다가 페이지나 파일, 자료를 돌려주는 일을 맡은 컴퓨터일 뿐입니다. 특별한 기계가 아니라서 쓰던 노트북도 서버가 될 수 있습니다. 서버로 만드는 것은 그 역할과, 계속 켜져 있어야 한다는 기대입니다.

더 배우기

클라이언트

원문 표기 · Client

요청하는 쪽 — 내 브라우저나 휴대전화, 앱

이 짝에서 묻는 쪽이 클라이언트이고 답하는 쪽이 서버입니다. 브라우저도 클라이언트이고 휴대전화 앱도 클라이언트입니다. 이 구분이 중요한 이유는 둘이 서로 다른 곳에서 돌기 때문입니다. 클라이언트 쪽 코드는 사용자의 기기에 있어 들여다볼 수 있으므로, API 키 같은 비밀은 반드시 서버에 두어야 합니다.

더 배우기

클라우드

원문 표기 · Cloud

컴퓨터를 사지 않고 남의 것을 빌려 쓰는 방식

클라우드는 하늘 어딘가가 아니라, 데이터센터에 있는 남의 컴퓨터를 시간 단위로 빌리는 것입니다. 오늘 오후에 서버 열 대를 켰다가 밤에 끄고, 쓴 만큼만 낼 수 있습니다. 대신 내주는 것은 통제권과 비용 예측 가능성입니다. 내 자료가 내 것이 아닌 장비 위에, 남이 정한 조건 아래 놓이기 때문입니다.

포트

원문 표기 · Port

프로그램이 네트워크와 말을 주고받는 번호 붙은 문

컴퓨터 한 대에서 여러 네트워크 프로그램이 동시에 돌고, 포트 번호가 어느 프로그램에 가는 메시지인지 가립니다. 한 포트는 한 번에 한 프로그램만 차지할 수 있습니다. 웹서버는 기본으로 http 에 80, https 에 443 을 쓰기 때문에 웹 주소에는 보통 번호를 적지 않습니다.

더 배우기

리버스 프록시

원문 표기 · Reverse proxy

앞에 서서 요청을 뒤의 알맞은 프로그램에 넘겨 주는 서버

리버스 프록시는 방문자의 요청을 받아, 안쪽 어느 포트에서 기다리는 응용 프로그램에 넘기고, 그 프로그램의 답을 되돌려 줍니다. 방문자는 늘 프록시하고만 이야기합니다. 기계 한 대가 443 포트 하나로 여러 사이트를 여는 방법이 이것이고, 보통 HTTPS 도 프록시가 맡아서 뒤의 프로그램은 신경 쓰지 않아도 됩니다.

더 배우기

도커(Docker)

프로그램을 봉인된 상자에 담아 어디서나 똑같이 돌리는 도구

도커는 프로그램과 그에 필요한 모든 것을 이미지로 묶고, 그것을 컨테이너로 실행해 기계의 나머지와 떼어 놓습니다. 같은 컨테이너가 노트북에서도 서버에서도 똑같이 돌기 때문에 많은 웹사이트가 도커로 배포됩니다. 가상 머신과는 다릅니다 — 컨테이너는 컴퓨터의 운영체제 커널을 함께 쓰므로 1초쯤이면 켜집니다.

더 배우기

도커 이미지

원문 표기 · Docker image

컨테이너를 띄우는 바탕이 되는 얼려 둔 꾸러미

이미지에는 프로그램과 그 파일 · 라이브러리 · 설정이 여러 층으로 담겨 있고, 실행하는 동안 바뀌지 않습니다. Docker Hub 같은 저장소에서 내려받거나 Dockerfile 로 직접 만듭니다. 이미지 하나로 컨테이너를 몇 개든 띄울 수 있습니다.

더 배우기

컨테이너

원문 표기 · Container

도커 이미지를 실행한 것 — 저만의 봉인된 상자

컨테이너는 실행 중인 이미지입니다. 컴퓨터와도, 다른 컨테이너와도 떨어진 자기만의 파일 · 네트워크 · 포트를 가집니다. 지우면 그 안에 쓴 것이 모두 사라지므로, 남겨야 할 데이터는 볼륨이나 연결한 폴더에 둡니다.

더 배우기

배포

원문 표기 · Deploy

내 프로그램을 남들이 쓸 수 있는 곳에 올리기

배포는 내 컴퓨터에서 돌아가는 프로그램을 다른 사람이 닿을 수 있는 곳 — 서버, 클라우드 서비스, Cadeplay 같은 플랫폼 — 에 올리는 일입니다. 보통 빌드하고, 올리고, 켜는 일이 함께 들어 있고, 나중에 고친 것도 다시 배포해야 합니다. 첫 배포는 개발의 끝이 아니라 정직한 반응을 처음 얻는 출발점입니다.

호스팅

원문 표기 · Hosting

사이트나 서비스를 서버에서 계속 돌리기

호스팅은 웹사이트나 게임 서버 같은 서비스를, 늘 켜져 있고 인터넷에서 닿을 수 있는 컴퓨터에서 돌리는 일입니다. 호스팅 회사에 돈을 내고 기계 관리를 맡길 수도 있고, 내가 다루는 서버에서 직접 돌리는 자체 호스팅을 할 수도 있습니다. 자체 호스팅은 더 자유롭고 한 업체에 덜 묶이지만, 백업·업데이트·장애 대응이 내 일이 됩니다.

더 배우기

백엔드

원문 표기 · Backend

사용자에게 보이지 않는 서버 쪽 부분

백엔드는 앱이나 게임 뒤에서 서버로 도는 모든 것입니다 — 계정, 저장된 자료, 순위표, 매치메이킹, 데이터베이스. 사용자의 화면에 보이는 쪽은 클라이언트입니다. 게임 백엔드는 프로그램 하나인 일이 드물고 서버에 데이터베이스와 흔히 캐시까지 붙기 때문에, Docker Compose 같은 도구로 함께 켭니다.

더 배우기

VPS(가상 사설 서버)

원문 표기 · VPS (virtual private server)

데이터 센터에서 빌려 쓰는 작은 컴퓨터

VPS 는 큰 서버의 한 부분이지만 내 컴퓨터처럼 움직입니다. 자기만의 시스템이 있고, 밤낮으로 켜져 있으며, 인터넷으로 접속할 수 있습니다. SSH 로 관리하고, 보통 한 달 단위로 요금을 냅니다.

더 배우기

SSH

내 터미널에서 다른 컴퓨터에 안전하게 로그인하는 방법

SSH(Secure Shell)는 내 터미널을 서버처럼 다른 곳에 있는 컴퓨터에 연결하고, 그 사이에 오가는 모든 것을 암호화합니다. SSH 키를 쓰면 비밀번호 없이 로그인할 수 있어 더 쉽고 안전합니다. SSH 키는 파일 두 개로 된 한 쌍이고, 그중 공개용 절반만 서버에 둡니다.

더 배우기

tmux

접속을 끊어도 프로그램이 계속 돌아가게 해 주는 터미널 도구

tmux 는 터미널 안에 세션을 엽니다. 세션에서 잠시 빠져나왔다가(detach) 나중에 다시 들어갈 수 있고(attach), 로그아웃한 뒤에도 그 안의 프로그램은 계속 돌아갑니다. 에이전트가 서버에서 밤새 일할 수 있는 것도 이 덕분입니다.

더 배우기

리눅스

원문 표기 · Linux

대부분의 서버를 돌리는 무료 운영체제

리눅스는 무료 오픈소스 운영체제입니다. 대부분의 웹서버와 클라우드 기계, 도커 컨테이너가 리눅스 위에서 돌고, 안드로이드도 리눅스 커널 위에 지어졌습니다. 터미널은 macOS 와 같은 갈래의 쉘을 쓰므로 여기서 배우는 명령은 대부분 양쪽에서 통합니다. 다만 sed -i 나 nc 처럼 옵션이 조금 다른 것이 몇 개 있습니다.

localhost

언제나 지금 이 컴퓨터를 가리키는 이름

localhost 는 지금 쓰고 있는 컴퓨터 자신을 가리키는 특별한 이름으로, 보통 IP 주소 127.0.0.1 입니다. 내 기계에서 서버를 띄우면 http://localhost 뒤에 :8080 같은 포트를 붙여 엽니다. 인터넷으로 나가지 않으므로 다른 사람은 내 localhost 주소를 열 수 없습니다.

더 배우기

IP 주소

원문 표기 · IP address

네트워크에서 컴퓨터를 찾는 번호

IP 주소는 203.0.113.10 처럼 네트워크에서 컴퓨터 한 대를 가리키는 번호로, 메시지가 어디로 갈지 알게 해 줍니다. 사람은 대신 도메인 이름을 치고, DNS 가 그 이름을 IP 주소로 바꿉니다. 서버가 인터넷에서 닿으려면 공인 IP 주소가 있어야 하고, 127.0.0.1 은 언제나 그 컴퓨터 자신을 뜻합니다.

더 배우기

소켓

원문 표기 · Socket

프로그램 안에 있는 네트워크 연결의 한쪽 끝

소켓은 프로그램이 네트워크로 말하려고 여는 것으로, IP 주소와 포트에 묶인 연결의 한쪽 끝입니다. 서버는 포트에 소켓을 열고 기다리고, 클라이언트는 소켓을 열어 거기에 접속합니다. 그 위에서 두 쪽은 HTTP 나 WebSocket 같은 약속된 말투로 이야기합니다. nc 명령은 한 줄로 소켓을 엽니다.

인증서

원문 표기 · Certificate

https 를 안전하게 만드는 사이트의 신분증

TLS 인증서는 내가 닿은 서버가 정말 그 도메인의 주인임을 보여 주는 작은 파일로, Let's Encrypt 같은 믿을 만한 인증 기관이 서명합니다. 브라우저는 https 로 무엇을 보내기 전에 이것을 확인하고, 만료됐거나 다른 도메인 것이면 경고를 띄웁니다. 인증서는 기한이 있어 갱신해야 하는데, Caddy 는 받아 오기와 갱신을 알아서 합니다.

더 배우기

도커 볼륨

원문 표기 · Docker volume

컨테이너를 지워도 남는 저장 공간

컨테이너가 자기 안에 쓴 파일은 컨테이너를 지우면 함께 사라집니다. 볼륨은 도커가 컨테이너 밖에 맡아 두었다가 붙여 주는 저장 공간이라서, 데이터베이스·올린 파일·인증서가 다시 켜거나 판을 올려도 남습니다. 정리할 때 조심하세요 — docker compose down -v 는 볼륨과 그 안의 자료까지 지웁니다.

더 배우기

Docker Compose

파일 하나로 여러 컨테이너를 함께 켜기

Docker Compose 는 앱에 필요한 컨테이너 전부 — 예를 들어 웹서버, 데이터베이스, 캐시 — 를 포트·볼륨·네트워크와 함께 적은 파일 하나(보통 compose.yaml)를 읽습니다. 그러면 컨테이너마다 긴 docker run 명령을 치는 대신, 명령 하나로 전체를 켜고 끕니다. 노트북에서도 서버에서도 똑같이 돕니다.

더 배우기

GPU

아주 많은 계산을 한꺼번에 하는 칩

GPU(그래픽 처리 장치)는 원래 화면을 그리려고 만든 칩입니다. 화면을 그리려면 같은 작은 계산을 수백만 개 픽셀에 되풀이해야 합니다. AI 모델을 돌리는 일도 텐서의 곱셈을 엄청나게 많이 하는 일이라, 학습과 추론 대부분을 GPU 와 비슷한 가속기가 맡습니다. GPU 에 딸린 빠른 메모리의 크기가 어떤 모델이 들어가는지를 자주 정합니다. CPU 로도 돌릴 수 있지만 더 느립니다.

더 배우기 가중치·파라미터 자세히 보기

메모리

원문 표기 · Memory

프로그램이 돌 때 데이터를 두는 빠른 작업 공간

메모리(RAM)는 프로그램이 돌아가는 동안 컴퓨터가 쓰는 빠른 작업 공간으로, 저장 장치와 달리 전원이 꺼지면 비워집니다. AI 모델을 돌리려면 가중치를 메모리에 올리고(GPU 라면 GPU 의 메모리에), KV 캐시·계산 버퍼·런타임 오버헤드도 함께 둡니다. 다 들어가지 않으면 모델이 돌지 않거나 아주 느려집니다. 여기서 메모리는 하드웨어이지, 챗봇이 대화를 기억하는 기능이 아닙니다.

더 배우기 가중치·파라미터 자세히 보기

지연 시간

원문 표기 · Latency

요청을 보내고 응답이 오기까지 기다리는 시간

지연 시간은 요청을 보낸 뒤 응답을 받기까지 기다리는 시간으로, 보통 밀리초(ms) 단위로 잽니다. AI 채팅에서는 첫 토큰이 나타나기까지의 시간이 가장 중요합니다. 그 뒤로는 스트리밍이 만들어지는 대로 보여 주기 때문입니다. 네트워크, 서버의 대기줄, 문맥 길이, 하드웨어에 따라 달라지고, 요청을 묶어 처리하면 전체 처리량은 늘어도 요청 하나는 느려질 수 있습니다.

MPS

Mac GPU 로 PyTorch 를 돌리는 장치

MPS(Metal Performance Shaders)는 Apple 의 GPU 라이브러리이며, PyTorch 는 Apple 칩 Mac 에서 이것을 "mps" 장치로 씁니다. 모델과 데이터를 mps 에 올리면 학습·추론이 CPU 보다 훨씬 빨라집니다. NVIDIA 그래픽 카드에서는 같은 코드가 "cuda" 를 씁니다.

더 배우기

클라우드 노트북

원문 표기 · Cloud notebook

브라우저에서 서버 GPU 로 코드를 돌리는 곳

Google Colab·Kaggle Notebooks 같은 클라우드 노트북은 브라우저에서 열리고, 코드를 칸마다 서버에서 실행합니다. 무료 요금제에도 정해진 시간만큼 GPU 가 붙는 경우가 있어, 내 CPU 로 학습이 너무 느릴 때 도움이 됩니다. 세션이 끝나면 파일이 보통 지워지므로 남길 것은 내려받아 둡니다.

더 배우기

CUDA

NVIDIA GPU 로 계산하게 하는 플랫폼

CUDA 는 프로그램이 NVIDIA 그래픽 카드를 일반 계산에 쓰게 해 주는 NVIDIA 의 소프트웨어 플랫폼입니다. PyTorch 는 NVIDIA GPU 를 "cuda" 장치라고 부릅니다. 대부분의 딥러닝 도구가 CUDA 를 먼저 지원해서 AI 에는 NVIDIA 카드가 흔히 쓰입니다. Mac 에서는 같은 자리에 "mps" 를 씁니다.

더 배우기

Apache

오래되고 널리 쓰이는 웹서버

Apache HTTP Server 는 1990년대부터 웹사이트를 내놓아 왔고 지금도 웹의 큰 몫을 돌립니다. 다른 웹서버처럼 포트에서 기다리다가 요청을 읽고 파일이나 프로그램의 답을 돌려줍니다. 오래된 호스팅에서 자주 보이고, 새로 꾸리는 곳은 Nginx 나 Caddy 를 더 많이 고릅니다.

더 배우기

Nginx

리버스 프록시로 많이 쓰는 빠른 웹서버

Nginx(엔진엑스)는 적은 메모리로 많은 연결을 한꺼번에 받는 것으로 알려진 웹서버입니다. 파일을 내놓는 일 말고도, 다른 프로그램 앞에 서서 요청을 넘겨주는 리버스 프록시로 자주 쓰입니다. Caddy 와 달리 HTTPS 인증서를 스스로 받아 오지 않아서, 다른 도구로 따로 붙입니다.

더 배우기

FrankenPHP

Caddy 위에 지은 PHP 앱 서버

FrankenPHP 는 PHP 프로그램을 위한 웹서버로, Caddy 를 바탕으로 Go 언어로 만들었습니다. 안에 Caddy 가 들어 있어 자동 HTTPS 도 되고, PHP 앱을 요청 사이에도 메모리에 올려 둘 수 있어 페이지가 더 빨리 답합니다. Laravel 로 만든 이 사이트가 이것으로 돕니다.

Caddy

스스로 HTTPS 를 켜는 현대 웹서버

Caddy 는 Go 언어로 만든 오픈소스 웹서버입니다. 가장 내세우는 기능은 자동 HTTPS 로, 진짜 도메인 이름만 주면 인증서를 받아 오고 설치하고 갱신까지 알아서 합니다. 명령 한 줄로 폴더를 내놓을 수도 있고, 짧은 Caddyfile 을 읽어 여러 사이트를 돌리거나 리버스 프록시로 요청을 앱에 넘길 수도 있습니다.

더 배우기

Caddyfile

Caddy 가 읽는 글자로 된 설정 파일

Caddyfile 은 Caddy 에게 어떤 사이트를 돌리고 저마다 무엇을 할지 알려 줍니다. 맨 앞에 사이트 주소를 적고, 중괄호 안에 폴더의 파일을 내놓기나 요청을 앱에 넘기기 같은 줄을 적습니다. 사이트 하나가 네 줄로 끝나기도 하고, 고친 뒤 caddy reload 를 하면 다시 켜지 않고도 바뀝니다.

더 배우기

try_files

파일이 없으면 index.html 을 주는 설정

try_files 는 Caddy 에게 요청한 파일을 먼저 찾고, 없으면 다른 파일을 대신 주라고 알려 줍니다. React·Vue 로 만든 앱은 진짜 페이지가 index.html 하나뿐이고 나머지 주소는 브라우저가 그립니다. try_files 가 없으면 그런 주소를 새로 고치거나 공유된 링크로 열 때 404 가 납니다.

더 배우기

자동 HTTPS

원문 표기 · Automatic HTTPS

인증서를 손대지 않고 받고 갱신하는 기능

자동 HTTPS 는 웹서버가 스스로 인증 기관에 인증서를 요청하고, 설치하고, 만료 전에 갱신하고, http 손님을 https 로 보내는 기능입니다. Caddy 는 설정에 진짜 도메인 이름을 적는 순간 이것을 합니다. 도메인의 DNS 가 그 서버를 가리키고 바깥에서 80·443 포트에 닿을 수 있어야 됩니다.

더 배우기

인증 기관

원문 표기 · Certificate authority

사이트 인증서를 확인해 서명하는 기관

인증 기관(CA)은 인증서를 달라는 쪽이 그 도메인의 주인이 맞는지 확인한 뒤 인증서에 서명합니다. 브라우저에는 믿는 인증 기관 목록이 들어 있어서, 그 가운데 하나가 서명한 인증서는 경고 없이 받아들입니다. Let's Encrypt 는 이 확인을 자동으로 하는 무료 인증 기관이고, 한 도메인이 한 주에 받을 수 있는 인증서 수를 제한합니다.

Let's Encrypt

HTTPS 인증서를 무료로 자동 발급하는 인증 기관

Let's Encrypt 는 서류 대신 자동 확인만으로 HTTPS 인증서를 무료로 내주는 비영리 인증 기관입니다. Caddy 를 비롯한 많은 도구가 스스로 여기에 요청합니다. 인증서의 기한이 짧아 자동으로 갱신해야 하고, 한 도메인이 한 주에 받을 수 있는 수를 제한해서 실패를 되풀이하면 한동안 막힐 수 있습니다.

더 배우기

A 레코드

원문 표기 · A record

도메인 이름을 IP 주소에 잇는 DNS 기록

A 레코드는 도메인의 DNS 설정에 적는 한 줄로, example.com 같은 이름과 가야 할 서버의 IPv4 주소를 짝짓습니다. 도메인을 산 곳에서 더합니다. 바뀐 내용이 모두에게 퍼지는 데 몇 분에서 몇 시간이 걸릴 수 있어 새 도메인이 바로 안 열리기도 합니다. 새 형식인 IPv6 주소는 AAAA 레코드에 적습니다.

더 배우기

공인 IP 주소

원문 표기 · Public IP address

인터넷 어디서나 닿는 IP 주소

공인 IP 주소는 인터넷 어디서든 닿을 수 있는 주소라서, 남이 내 사이트를 열려면 웹서버에 이것이 있어야 합니다. 집 컴퓨터는 보통 공유기 뒤에서 192.168.0.10 같은 사설 주소만 가져서 바깥에서 바로 닿지 못합니다. VPS 를 빌리면 보통 공인 주소가 함께 옵니다.

방화벽

원문 표기 · Firewall

네트워크 연결을 골라 들이고 나머지는 막는 거름망

방화벽은 들어오고 나가는 연결을 규칙에 비춰 보고, 보통 포트 번호를 기준으로 허락하지 않은 것을 막습니다. 새 서버에서는 SSH 용 22, 웹사이트용 80·443 처럼 필요한 것만 엽니다. 서버 안에서는 되는데 바깥에서 사이트가 안 열리면 방화벽이 포트를 막고 있는 경우가 흔합니다.

프록시

원문 표기 · Proxy

요청을 대신 받아 넘겨 주는 중간 서버

프록시는 두 쪽 사이에 서서 오가는 연결을 대신 넘겨 줍니다. 회사 출입구처럼 사용자 쪽을 대신하는 것도 있고, 서버들 앞에 서서 손님의 요청을 알맞은 앱에 건네는 리버스 프록시도 있습니다. 연결을 쥐고 있기 때문에, 서버 앞에 다른 프록시가 있으면 서버가 받아야 할 포트를 대신 가져가기도 합니다.

시스템 서비스

원문 표기 · System service

컴퓨터가 켜서 뒤에서 계속 돌리는 프로그램

시스템 서비스는 운영체제가 켜질 때 시작해서 터미널 없이 뒤에서 돌고, 멈추면 다시 띄우는 프로그램입니다. 진짜 웹서버는 이렇게 돌아서 로그아웃해도 계속 켜져 있습니다. 대부분의 리눅스 서버에서는 systemd 가 이것을 관리하고, 터미널에서 손으로 띄운 프로그램은 그 터미널을 닫으면 멈춥니다.

더 배우기

systemd

대부분의 리눅스에서 서비스를 켜고 관리하는 프로그램

systemd 는 대부분의 리눅스가 켜질 때 가장 먼저 실행하는 프로그램으로, 그 뒤 모든 시스템 서비스를 켜고 끄고 지켜봅니다. systemctl 로 명령하고 journalctl 로 서비스의 로그를 읽습니다. 모든 리눅스에 있지는 않습니다 — 이 사이트의 브라우저 터미널인 Alpine 은 OpenRC 라는 더 작은 도구를 씁니다.

Docker Desktop

Mac·Windows 에서 도커를 쓰게 해 주는 앱

컨테이너는 리눅스 커널이 있어야 도는데, Mac 이나 Windows PC 에는 그것이 없습니다. Docker Desktop 은 도커와 함께 눈에 안 보이는 작은 리눅스 가상 머신을 설치하고 대신 켜 줍니다. docker.com 에서 설치해 한 번 열어 두면 터미널에서 docker 명령이 됩니다. 도커를 쓰는 동안에는 켜져 있어야 합니다.

더 배우기

Dockerfile

도커 이미지를 만드는 조리법 파일

Dockerfile 은 단계를 적은 글자 파일입니다 — 있는 이미지에서 시작하고, 내 파일을 복사해 넣고, 설치 명령을 돌리고, 어떤 프로그램을 띄울지 적습니다. docker build 가 이것을 위에서부터 읽어 이미지를 만듭니다. 단계가 적혀 있으니 누구든 다른 컴퓨터에서 똑같은 이미지를 다시 만들 수 있습니다.

더 배우기

두 단계 Dockerfile

원문 표기 · Two-stage Dockerfile

빌드하고 결과만 챙기는 Dockerfile

여러 단계 Dockerfile 에는 FROM 줄이 둘 이상 있습니다. 첫 단계는 Node 같은 무거운 빌드 도구로 사이트를 빌드하고, 마지막 단계는 작은 이미지에서 시작해 완성된 파일만 복사해 옵니다. 도구는 두고 오므로 최종 이미지가 작고, 서버에 그 도구를 설치할 사람도 필요 없습니다.

더 배우기

꼬리표

원문 표기 · Image tag

이미지 버전을 고르는 콜론 뒤의 이름

이미지 이름 끝에는 caddy:2 나 node:22 처럼 콜론과 꼬리표(태그)를 붙일 수 있습니다. 꼬리표가 내려받을 이미지 버전을 고릅니다. :2 처럼 꼬리표를 정해 두면 Caddy 2.x 에 머물고, 빼면 latest 가 되어 어느 날 큰 버전이 바뀔 수 있습니다.

더 배우기

latest

꼬리표를 안 적으면 도커가 쓰는 꼬리표

이미지 이름에 꼬리표를 적지 않으면 도커는 말없이 latest 꼬리표를 씁니다. 이름과 달리 이미지 만든 쪽이 옮겨 다는 표일 뿐이고, 보통 가장 새 판에 붙어 있습니다. latest 를 받는 서버는 어느 날 큰 버전이 바뀌어 설정이 깨질 수 있으므로, 실제 서비스에서는 caddy:2 처럼 꼬리표를 정해 둡니다.

더 배우기

포트 연결

원문 표기 · Port mapping

내 컴퓨터의 포트를 컨테이너 안 포트에 잇기

컨테이너에는 바깥에서 보이지 않는 자기만의 포트가 있습니다. -p 옵션은 바깥 컴퓨터의 포트를 컨테이너 안 포트에 잇습니다 — -p 8080:80 은 "내 8080 으로 오는 것을 컨테이너의 80 으로" 라는 뜻입니다. 왼쪽 번호는 내가 고르고, 다른 프로그램이 이미 쥐고 있으면 컨테이너가 켜지지 않습니다.

더 배우기

호스트

원문 표기 · Host

네트워크에 연결된 컴퓨터, 또는 그 이름

호스트는 네트워크에 연결된 컴퓨터를 말하고, example.com 같은 그 이름을 가리키기도 합니다. 요청을 보내려면 호스트·포트·경로 세 가지가 있어야 합니다. 도커에서 "호스트"는 컨테이너가 도는 진짜 컴퓨터를 뜻해서, 호스트 포트는 그 기계의 포트입니다.

장비 랙

원문 표기 · Server rack

서버 기계를 층층이 꽂아 두는 쇠 선반

랙은 표준 너비의 칸이 있는 장으로, 납작한 서버 기계·네트워크 장비·전원 장치를 위아래로 끼워 고정합니다. 데이터센터는 이런 랙이 줄지어 선 곳입니다. 그래도 결국 서버는 랙에 꽂힌 컴퓨터 위에서 요청에 답하는 프로그램입니다.

데이터센터

원문 표기 · Data centre

서버 수천 대를 밤낮으로 돌리는 건물

데이터센터는 서버가 꽂힌 랙으로 가득 찬 건물로, 끊기지 않는 전기·냉방·빠른 네트워크 선을 갖춥니다. 클라우드 서비스, VPS, 인공지능 모델은 모두 데이터센터에서 돕니다. "서버를 빌린다"는 것은 이 건물 안 기계의 한 부분을 빌리는 것입니다.

동시 접속

원문 표기 · Concurrent users

여러 사람이 같은 때에 서버에 연결해 있는 것

동시 접속은 하루에 몇 명이 왔는지가 아니라, 같은 순간에 몇 명이 서버에 연결해 있는지를 말합니다. 요청을 한 번에 하나만 받는 연습용 서버에서는 나머지가 줄을 서서 기다립니다. Caddy 같은 진짜 웹서버는 연결 수천 개를 한꺼번에 받고, 게임 서버는 흔히 동시 접속자 수로 크기를 정합니다.

로그 파일

원문 표기 · Log

프로그램이 한 일을 차례로 적어 두는 기록

로그는 프로그램이 받은 요청, 오류, 다시 켜짐처럼 일어난 일을 한 줄씩 적는 파일이나 출력입니다. 서버에 문제가 생기면 화면에는 보통 "500" 만 보이고 이유는 로그에 있으므로 가장 먼저 로그를 봅니다. 로그는 그냥 두면 끝없이 커지므로 오래된 것은 지우거나 압축합니다.

로컬

원문 표기 · Local

원격·전역이 아닌, 지금 이 컴퓨터나 이 프로젝트

로컬은 "여기"라는 뜻입니다 — 멀리 있는 서버가 아니라 내 앞의 컴퓨터, 또는 컴퓨터 전체가 아니라 지금 프로젝트입니다. 로컬 포트·로컬 API 는 이 기계에서만 닿고, 도구나 스킬의 로컬 설치는 한 프로젝트 폴더에만, 전역(글로벌) 설치는 어디서나 쓰입니다.

서버 판정

원문 표기 · Authoritative server

서버가 진짜 게임 상태를 쥐고 판정하는 방식

서버가 판정하는 방식에서 플레이어의 기기는 "왼쪽으로 가기" 처럼 하고 싶은 일만 보내고, 실제로 무슨 일이 일어났는지는 서버가 정해 모두에게 알립니다. 진짜 상태를 서버가 쥐고 있으므로 플레이어가 자기 쪽 값을 고쳐 속일 수 없습니다. 대신 모든 동작이 서버까지 갔다 와야 합니다.

더 배우기

Azure

마이크로소프트의 클라우드 서비스

Azure 는 마이크로소프트의 클라우드로, 전 세계 마이크로소프트 데이터센터에서 도는 서버·데이터베이스·저장 공간과 여러 완성된 서비스를 빌려 씁니다. Amazon Web Services·Google Cloud 와 겨룹니다. "Azure 에서만 도는" 제품을 쓰면 마이크로소프트의 클라우드와 그 가격에 묶입니다.

클러스터

원문 표기 · Cluster

여러 서버를 한 덩어리처럼 묶어 쓰는 것

클러스터는 노드라고 부르는 서버 여러 대가 일을 나눠 맡아 하나의 큰 시스템처럼 움직이는 묶음입니다. 한 대가 고장 나도 나머지가 계속 돌고, 플레이어가 늘면 기계를 더할 수 있습니다. 대신 Kubernetes 같은 도구와 추가 설정이 필요해서 작은 프로젝트는 기계 한 대로 시작하는 일이 많습니다.

더 배우기

노드

원문 표기 · Cluster node

클러스터를 이루는 서버 한 대

클러스터 안의 기계 한 대 한 대를 노드라고 부릅니다. 단일 노드는 모든 것을 기계 한 대에서 돌리는 방식으로, 단순하고 싸지만 더 큰 기계로 바꾸는 것밖에 키울 길이 없습니다. 여기의 노드는 자바스크립트 런타임인 Node.js 와 상관이 없습니다.

더 배우기

수직 확장

원문 표기 · Scaling up

더 큰 기계로 바꿔 더 많은 일을 감당하기

수직 확장은 서버 한 대에 CPU·메모리·디스크를 더 줘서 더 많은 사용자를 받게 하는 방법입니다. 프로그램을 바꿀 필요가 없어 가장 쉬운 첫걸음입니다. 다만 빌릴 수 있는 가장 큰 기계라는 천장이 있습니다. 기계를 여러 대 묶는 수평 확장은 그런 천장이 없지만 운영이 더 어렵습니다.

더 배우기

콜드 스타트

원문 표기 · Cold start

잠든 함수가 먼저 깨어나느라 늦어지는 것

서버리스 함수는 아무도 쓰지 않으면 꺼집니다. 쉬었다가 처음 온 요청은 플랫폼이 코드를 불러와 켜는 동안 기다려야 해서 눈에 띄게 늦어질 수 있습니다. 그 뒤 요청은 다시 잠들 때까지 빠릅니다. 늘 켜져 있는 서버에는 콜드 스타트가 없습니다.

더 배우기

서버리스

원문 표기 · Serverless

함수만 올려 두고 클라우드가 실행하는 방식

서버리스는 함수 하나만 올려 두면 요청이 올 때만 클라우드가 실행하고 부를 때마다 요금을 매기는 방식입니다. 서버를 직접 관리하지 않으며, 가장 잘 알려진 AWS Lambda 때문에 이런 함수를 람다라고도 부릅니다. 대신 콜드 스타트가 있고, 게임과 함수 사이에 네트워크 왕복이 하나 더 생깁니다.

더 배우기

Colyseus

실시간 멀티플레이 방을 맡는 Node.js 서버

Colyseus 는 TypeScript 로 만든 Node.js 용 오픈소스 멀티플레이 게임 서버입니다. 플레이어가 "방"에 들어오면 방의 상태를 모든 플레이어 화면에 자동으로 똑같이 맞춰 주고, 매치메이킹도 들어 있습니다. 실시간 플레이에 가장 강하고, 계정·친구·순위표는 대부분 직접 만듭니다.

더 배우기

Nakama

계정·채팅·순위표를 갖춘 오픈소스 게임 백엔드

Nakama 는 Heroic Labs 가 Go 언어로 만든 오픈소스 게임 서버입니다. 계정과 로그인, 친구, 그룹, 채팅, 순위표, 매치메이킹, 실시간 매치처럼 대부분의 게임에 필요한 커뮤니티 기능이 이미 들어 있습니다. 데이터베이스와 함께 도커로 직접 띄우거나 관리형을 빌려 쓰고, 게임 규칙은 Go·TypeScript·Lua 로 더합니다.

더 배우기

SpacetimeDB

데이터베이스가 곧 게임 서버인 백엔드

SpacetimeDB 는 Clockwork Labs 가 만든 것으로, 게임 규칙을 Rust·C# 같은 언어의 모듈로 써서 데이터베이스 안에 넣습니다. 플레이어는 여기에 바로 접속해 그 함수를 부르고, 구독한 데이터가 바뀔 때마다 실시간으로 받습니다. 따로 도는 서버 프로그램이 없어 두 시스템을 맞추는 코드가 필요 없지만, 게임 구조를 새로 생각해야 합니다.

더 배우기

전용 서버

원문 표기 · Dedicated server

경기 하나를 혼자 맡아 도는 게임 서버 프로그램

전용 게임 서버는 서버에서 도는 게임의 한 벌로, 흔히 경기마다 하나씩 띄우고 앞에 앉은 플레이어가 없습니다. 경기를 돌리며 무슨 일이 일어났는지 정하므로 어느 플레이어의 컴퓨터도 유리하지 않습니다. 빠른 슈팅 게임이나 큰 매치는 이런 서버 여럿을 종일 켜고 꺼야 해서 오케스트레이션 서비스가 그 일을 맡습니다.

더 배우기

헤드리스

원문 표기 · Headless

화면이나 창 없이 프로그램을 돌리기

헤드리스 프로그램은 창도 그림도 없이 하는 일만 하며 돕니다. Unity·Unreal 같은 게임 엔진은 전용 서버로 돌릴 헤드리스 빌드를 만들 수 있어서, 아무도 보지 않는 그림을 그리는 비용을 아낍니다. 브라우저도 자동 시험을 위해 헤드리스로 돌 수 있습니다.

더 배우기

오케스트레이션

원문 표기 · Orchestration

서버·컨테이너 여럿을 자동으로 켜고 끄며 관리하기

오케스트레이션은 서버나 컨테이너 무리를 대신 관리하는 소프트웨어입니다. 일이 늘면 새로 켜고, 노는 것은 끄고, 멈춘 것은 다시 띄우고, 어느 기계에서 무엇을 돌릴지 정합니다. 가장 잘 알려진 것이 Kubernetes 입니다. 게임에서는 보통 경기마다 전용 서버를 하나 띄우고 끝나면 내리는 일을 말합니다.

더 배우기

쿠버네티스(Kubernetes)

여러 기계에서 컨테이너를 돌리고 관리하는 도구

Kubernetes 는 구글이 처음 설계했고 지금은 오픈소스인 도구로, 기계 여러 대의 클러스터에서 컨테이너를 돌립니다. "이 웹앱을 세 벌 돌려라" 처럼 원하는 상태를 적으면, 컨테이너를 배치하고 멈춘 것을 다시 띄우고 요청을 나눠 그 상태를 지킵니다. 강력하지만 복잡해서 작은 프로젝트는 보통 Docker Compose 로 시작합니다.

관리형

원문 표기 · Managed service

서버 운영을 업체가 대신 해 주는 서비스

관리형 서비스는 소프트웨어는 내가 쓰되, 설치·서버 운영·업데이트·백업을 업체가 맡습니다. 서버를 몰라도 빨리 시작할 수 있는 대신, 다달이 돈을 내고 업체의 제한을 따르며 데이터를 다른 곳으로 옮기기 어려운 경우가 많습니다. 반대는 직접 띄우는 자체 호스팅입니다.

더 배우기

업체 종속

원문 표기 · Vendor lock-in

떠나기 너무 비싸서 한 업체에 묶이는 것

업체 종속은 게임이나 앱이 한 회사 제품의 특별한 기능·데이터 형식·클라우드에 너무 기대어, 옮기려면 큰 부분을 다시 짜야 하는 상태입니다. 그러면 그 회사가 값을 올리거나 제품을 접어도 고를 길이 거의 없습니다. 직접 띄울 수 있는 오픈소스 도구가 이 위험을 줄입니다.

더 배우기

메시지 브로커

원문 표기 · Message broker

프로그램끼리 메시지를 맡아 전해 주는 서버

메시지 브로커는 프로그램 사이에 서서, 한쪽이 보낸 메시지를 맡아 두었다가 처리할 프로그램에 건넵니다. 보내는 쪽과 받는 쪽이 같은 순간에 켜져 있지 않아도 되고, 일을 여러 일꾼에게 나눌 수 있습니다. RabbitMQ·Kafka 가 잘 알려져 있고 Redis 를 간단한 브로커로 쓰기도 합니다.

서비스 메시

원문 표기 · Service mesh

작은 서비스 여럿 사이의 통신을 맡는 중간층

앱을 작은 서비스 여럿으로 나누면, 서비스 메시는 서비스마다 작은 프록시를 옆에 붙여 길 찾기·다시 시도·암호화·측정 같은 통신을 맡깁니다. Istio·Linkerd 가 흔한 예이고 보통 Kubernetes 위에서 돕니다. 서비스가 수십 개인 큰 시스템에 쓸모 있고, 작은 게임 백엔드에는 짐만 됩니다.

상태 저장 서비스

원문 표기 · Stateful service

요청 사이에도 데이터를 기억하는 서비스

상태 저장 서비스는 게임 방에 누가 있는지, 플레이어가 어디 서 있는지 같은 것을 매번 다시 찾지 않고 요청 사이에도 기억합니다. 그래서 실시간 게임이 빨라지지만, 다시 켜거나 여러 벌로 늘리기 어렵습니다 — 기억이 사라지거나 갈라지기 때문입니다. 아무것도 기억하지 않는 서비스는 마음대로 늘릴 수 있습니다.

푸시 알림

원문 표기 · Push notification

앱을 열지 않아도 서버가 휴대폰에 띄우는 알림

푸시 알림은 서버가 애플·구글의 전달 서비스(APNs, Firebase Cloud Messaging)를 거쳐 보내는 알림으로, "에너지가 다 찼어요" 처럼 앱을 열지 않아도 휴대폰에 뜹니다. 앱은 먼저 사용자에게 허락을 받아야 하고, 서버는 애플이나 구글의 키가 있어야 보낼 수 있습니다.

더 배우기

대기줄

원문 표기 · Queue

차례를 기다리는 작업이나 요청의 줄(큐)

대기줄(큐)은 바로 할 수 없는 일 — 들어온 요청, 보낼 메일, 크기를 줄일 그림 — 을 담아 둡니다. 뒤로 들어가고 앞에서부터 꺼내며, 보통 뒤에서 일하는 일꾼이 처리합니다. 일이 몰려도 사이트가 답을 계속하게 해 주지만, 비는 것보다 빨리 쌓이면 사용자가 점점 오래 기다립니다.

스케줄러

원문 표기 · Scheduler

정한 시각에 작업을 시키는 프로그램

스케줄러는 매분, 매일 새벽 3시, 매주 월요일처럼 시간표에 맞춰 작업을 돌립니다. 알림 보내기, 오래된 데이터 정리, 백업 같은 일이 흔합니다. 리눅스의 전통적인 스케줄러는 cron 이고, Laravel 같은 웹 프레임워크에는 cron 한 줄이 매분 깨우는 자기 스케줄러가 있습니다.

동기화

원문 표기 · Real-time sync

모든 플레이어의 게임 화면을 순간순간 똑같이 맞추기

멀티플레이 게임에서는 플레이어마다 자기 기기에 게임 한 벌을 가집니다. 동기화는 그 여러 벌을 똑같이 맞추는 일로, 한 사람이 움직이면 서버가 보통 WebSocket 이나 UDP 로 1초도 안 걸려 모두에게 전합니다. 네트워크 지연 때문에 온라인 게임에서 가장 어려운 부분이라, 이것을 대신해 주는 도구가 귀하게 여겨집니다.

더 배우기

릴레이

원문 표기 · Relay

두 쪽 사이에서 연결을 이어 주는 중계 서버

릴레이는 한쪽에서 받은 데이터를 다른 쪽으로 넘겨, 두 쪽이 직접 연결하지 않게 합니다. 게임에서는 플레이어 기기가 집 공유기 때문에 서로 닿지 못할 때 릴레이를 씁니다. 이 사이트의 브라우저 리눅스도 웹 페이지가 스스로 네트워크 연결을 열 수 없어서, 네트워크 중계를 거쳐 진짜 인터넷과 통신합니다.

인스턴스

원문 표기 · Instance

클라우드에서 빌린 가상 서버 한 대

클라우드에서 인스턴스는 빌려서 켠 가상 서버 한 대로, CPU·메모리·디스크 크기를 골라 받습니다. 같은 설정으로 여러 대를 띄울 수 있고 시간이나 달 단위로 돈을 냅니다. 플레이어 수천 명인 게임 백엔드도 작은 인스턴스 하나로 충분한 경우가 많습니다.

더 배우기

스택

원문 표기 · Tech stack

앱을 만들고 돌리는 데 함께 쓰는 프로그램 묶음

스택(기술 스택)은 앱이 함께 쓰는 조각들의 조합입니다 — 예를 들어 웹 프레임워크, 데이터베이스, 캐시, 웹서버. "스택 전체"라고 하면 Docker Compose 파일 하나에 적힌 모든 컨테이너처럼 그 조각 전부를 한꺼번에 말합니다. 스택을 고르면 팀이 배우고 돌려야 할 것이 정해집니다.

하드웨어

원문 표기 · Hardware

컴퓨터의 손에 잡히는 부품

하드웨어는 손으로 만질 수 있는 모든 것 — 중앙 처리 장치(CPU), 그래픽 칩(GPU), 메모리, 디스크, 키보드, 네트워크 카드 — 입니다. 그 위에서 도는 프로그램은 소프트웨어입니다. "내 하드웨어에서 돈다"는 남의 서비스가 아니라 내가 가지거나 빌린 기계에서 돈다는 뜻이고, 같은 인공지능 모델도 하드웨어에 따라 빠르기가 달라집니다.

가속기

원문 표기 · Accelerator

한 가지 계산을 아주 빠르게 하도록 만든 칩

가속기는 인공지능 모델이 해야 하는 엄청난 양의 곱셈처럼 한 가지 일만을 위해 만든 처리 장치입니다. GPU 가 가장 흔하고, 구글의 TPU 나 휴대폰의 신경망 엔진도 있습니다. 모델은 보통 CPU 에서도 돌지만 느릴 뿐입니다. 런타임은 따로 있는 프로그램으로, 모델의 숫자를 가속기에 올리고 무엇을 계산할지 시킵니다.

더 배우기

CPU

컴퓨터의 일반 계산을 맡는 중앙 처리 장치

CPU(중앙 처리 장치)는 파일 열기, 브라우저 돌리기, 계산을 한 단계씩 하는 일처럼 모든 프로그램의 명령을 실행합니다. 강한 코어 몇 개를 가졌고, GPU 는 인공지능의 되풀이되는 곱셈에 맞는 작은 코어 수천 개를 가졌습니다. 모델을 CPU 로 학습해도 되지만 훨씬 느립니다.

x86

대부분의 PC 가 쓰는 인텔·AMD 계열 처리 장치

x86 은 인텔 8086 에서 시작한 처리 장치 설계의 이름으로, 인텔·AMD 가 만들고 대부분의 Windows PC 와 서버가 씁니다. x86 용으로 만든 프로그램은 애플 실리콘이나 대부분의 휴대폰 같은 ARM 처리 장치에서 그대로 돌지 않습니다. 64비트 판은 x86-64, 옛 32비트 판은 그냥 x86 이라고 부릅니다.

더 배우기

32bit

32비트 주소로 일하는 처리 장치나 시스템

32비트 시스템은 32비트 길이의 메모리 주소를 써서 프로그램 하나가 닿을 수 있는 메모리가 많아야 4GB 쯤입니다. 요즘 컴퓨터는 대부분 64비트입니다. 이 사이트의 브라우저 리눅스는 32비트 x86 기계를 흉내 내는데, 작은 파이썬 프로그램에는 충분하지만 여기서 학습하는 모델이 작게 머무는 이유 가운데 하나입니다.

더 배우기

v86

브라우저 안에서 x86 컴퓨터를 흉내 내는 프로그램

v86 은 자바스크립트와 WebAssembly 로 만든 오픈소스 에뮬레이터로, 브라우저 탭 안에서 32비트 x86 PC 를 흉내 냅니다. 이 사이트는 이것으로 진짜 Alpine 리눅스를 띄워서, 아무것도 설치하지 않고 명령을 치고 파이썬을 돌리게 합니다. 명령 하나하나를 소프트웨어로 흉내 내므로 진짜 컴퓨터보다 훨씬 느리고, 탭을 닫으면 멈춥니다.

더 배우기

에뮬레이터

원문 표기 · Emulator

다른 컴퓨터를 흉내 내어 돌리는 프로그램

에뮬레이터는 다른 기계의 처리 장치·메모리·장치가 하는 일을 소프트웨어로 따라 합니다. 그러면 그 기계용 프로그램이 고치지 않고 돕니다 — PC 에서 옛 게임기를, 이 사이트의 브라우저에서 리눅스를 돌리는 것처럼요. 명령마다 흉내 내느라 느려서, 브라우저 리눅스에서는 내려받기와 설치가 오래 걸립니다.

더 배우기

가상 머신

원문 표기 · Virtual machine

소프트웨어로 만든 또 하나의 컴퓨터

가상 머신(VM)은 소프트웨어로 만든 컴퓨터로, 자기 운영체제·메모리·디스크를 가졌지만 실제로는 다른 컴퓨터 위에서 돕니다. 기계 한 대를 가상 머신 여럿이 나눠 쓸 수 있고, VPS 가 이렇게 돕니다. 컨테이너는 더 가볍습니다 — 운영체제 전체를 가져오지 않고 바깥 컴퓨터의 커널을 함께 써서 더 빨리 켜집니다.

운영체제

원문 표기 · Operating system

컴퓨터와 프로그램을 돌보는 바탕 프로그램

운영체제는 컴퓨터를 켜면 가장 먼저 뜹니다. 처리 장치와 메모리를 프로그램들에 나눠 주고, 파일을 디스크에 두고, 키보드·마우스·네트워크 신호를 알맞은 프로그램에 건넵니다. Windows·macOS·리눅스·Android·iOS 가 운영체제입니다. 운영체제마다 명령과 경로가 달라서 설명에 시스템별로 한 줄씩 적는 일이 많습니다.

더 배우기

커널

원문 표기 · Kernel

운영체제의 가장 안쪽 핵심

커널은 운영체제 가운데 하드웨어와 직접 이야기하는 부분입니다. 다음에 어느 프로그램이 처리 장치를 쓸지 정하고, 메모리를 나눠 주고, 드라이버를 통해 키보드·디스크·네트워크 카드를 읽습니다. 엄밀히 말하면 리눅스는 커널이고, 우분투나 Alpine 이 그 둘레의 도구를 더합니다. 컨테이너는 바깥 컴퓨터의 커널을 함께 씁니다.

드라이버

원문 표기 · Device driver

운영체제가 장치를 부릴 수 있게 하는 작은 프로그램

드라이버는 운영체제와 키보드·그래픽 카드·프린터 같은 장치 하나 사이에서 말을 옮겨 줍니다. 키를 누르면 키보드가 숫자를 보내고, 커널의 드라이버가 그것을 맨 앞 프로그램이 받을 입력 사건으로 바꿉니다. 새로 꽂은 장치가 아무 반응이 없으면 드라이버가 없거나 맞지 않는 경우가 많습니다.

macOS

애플 Mac 컴퓨터의 운영체제

macOS 는 애플의 Mac 컴퓨터에서 도는 운영체제입니다. 밑바탕이 유닉스 계열이라 터미널에서 리눅스와 같은 쉘 명령을 대부분 쓸 수 있고, 기본 쉘은 zsh 입니다. 몇몇 도구는 리눅스 판과 조금 다르게 움직이고, 단축키는 Windows 의 Control 자리에 Command 키를 씁니다.

Spotlight

앱과 파일을 찾는 Mac 의 검색 창

Spotlight 는 macOS 의 검색 기능입니다. Command 와 스페이스를 함께 누르고 "터미널" 처럼 이름 일부를 친 뒤 Return 을 누르면 열립니다. Dock 에 없는 앱을 찾는 가장 빠른 방법입니다.

더 배우기

Windows

마이크로소프트의 PC 운영체제

Windows 는 데스크톱·노트북 PC 에서 가장 흔한 운영체제입니다. 자체 명령줄은 명령 프롬프트와 PowerShell 이고, 리눅스와 다른 명령을 씁니다. 이 과정의 bash 명령을 Windows 에서 쓰려면 Windows 안에서 진짜 리눅스를 돌리는 WSL 을 설치합니다.

Android

구글이 만든 휴대폰·태블릿 운영체제

Android 는 세계 휴대폰 대부분에서 도는 운영체제로, 구글이 리눅스 커널 위에 만들었습니다. 앱은 주로 Google Play 에서 설치하고 Android 전용 꾸러미로 빌드합니다. Android 와 아이폰 둘 다에 낼 앱은 두 번 만들거나, Flutter 처럼 코드 하나로 둘 다 만들어 주는 도구로 만듭니다.

우분투(Ubuntu)

가장 널리 쓰이는 리눅스 배포판

우분투(Ubuntu)는 Canonical 이 데비안을 바탕으로 만든 무료 리눅스 배포판입니다. 서버·클라우드 기계·Windows 의 WSL 에서 흔히 고르기 때문에 인터넷의 설명 대부분이 우분투를 기준으로 합니다. 프로그램은 apt 로 설치하고, 오래 지원하는 LTS 판이 2년마다 나옵니다.

데비안(Debian)

우분투의 바탕이 된 오래된 공동체 리눅스 배포판

데비안(Debian)은 1993년부터 자원봉사자들이 만들어 온 가장 오래된 리눅스 배포판 가운데 하나로, 안정적인 것으로 알려져 있습니다. 우분투를 비롯한 많은 배포판이 이것을 바탕으로 해서 apt 패키지 도구와 명령 대부분이 같습니다. 공식 도커 이미지도 데비안 바탕이 많습니다.

Alpine

원문 표기 · Alpine Linux

아주 작은 리눅스 배포판

Alpine 리눅스는 몇 MB 밖에 안 되는 리눅스 배포판으로, 작은 부품(musl·BusyBox)으로 만들었습니다. 그래서 도커 이미지에 많이 쓰이고, 이 사이트가 브라우저 안에서 띄울 수도 있습니다. 패키지는 apt 대신 apk 로 설치하고, 몇몇 명령은 흔한 GNU 도구보다 단순한 판입니다.

더 배우기

배포판

원문 표기 · Distribution

우분투·Alpine 처럼 리눅스를 묶어 낸 한 판

리눅스 자체는 커널일 뿐입니다. 배포판은 거기에 도구·패키지 관리자·기본 설정을 묶어 완성된 시스템으로 내놓은 것으로, 우분투·데비안·Fedora·Alpine 이 배포판입니다. 명령은 대부분 같지만 설치 방법은 달라서, 우분투는 apt, Alpine 은 apk 를 씁니다.

더 배우기

디스크

원문 표기 · Disk

전원을 꺼도 파일이 남는 저장 장치

디스크(요즘은 주로 SSD)는 컴퓨터를 꺼도 파일·프로그램·인공지능 모델 파일을 간직합니다. 메모리(RAM)보다 훨씬 크고 느려서, 프로그램은 필요한 것을 디스크에서 메모리로 읽어 들인 뒤 일합니다. 리눅스에서 디스크는 /dev/sda 같은 장치로 보이고 파티션으로 나눕니다.

더 배우기

드라이브

원문 표기 · Drive

저장 장치, 또는 그것을 나눠 따로 쓰는 한 구역

드라이브는 디스크·SSD·USB 메모리·CD 처럼 컴퓨터가 파일을 두거나 읽는 장치입니다. 디스크 안의 파티션 하나도 따로 된 드라이브처럼 쓸 수 있습니다. Windows 는 드라이브마다 C: 같은 글자를 붙이고, 리눅스는 /dev 아래 장치로 보이며 폴더에 마운트해 씁니다.

더 배우기

USB 메모리

원문 표기 · USB stick

꽂아 쓰는 작은 저장 장치

USB 메모리는 USB 단자에 꽂아 컴퓨터 사이에 파일을 옮기는 작은 저장 장치입니다. 이름에 "메모리"가 붙었지만 RAM 이 아니라 디스크처럼 전원을 빼도 파일이 남습니다. Windows·macOS·리눅스가 모두 읽을 수 있게 보통 FAT 로 포맷합니다.

더 배우기

디스크 이미지

원문 표기 · Disk image

디스크 내용을 통째로 담은 파일 하나

디스크 이미지는 파티션과 파일 시스템까지 디스크의 모든 바이트를 .img·.iso 같은 파일 하나에 담은 것입니다. 가상 머신은 이것을 자기 디스크로 쓰고, 운영체제 설치용 USB 는 디스크 이미지를 USB 메모리에 써 넣은 것입니다. 리눅스에서는 이미지 파일을 마운트해 진짜 디스크처럼 둘러볼 수 있습니다.

더 배우기

백업

원문 표기 · Backup

잃어도 되살릴 수 있게 따로 둔 사본

백업은 파일이나 데이터베이스를 다른 곳에 복사해 두는 것으로, 파일을 지우거나 디스크가 고장 나거나 업데이트가 잘못돼도 전부를 잃지 않게 합니다. 백업은 최근 것이고, 다른 기계나 장소에 있고, 실제로 되살아나야 쓸모가 있으므로 가끔 되살리기를 시험해 봅니다.

네트워크

원문 표기 · Network

컴퓨터끼리 연결해 데이터를 주고받는 망

네트워크는 컴퓨터·휴대폰·서버를 선이나 전파로 이어 데이터를 주고받게 합니다. 집의 Wi-Fi 는 작은 네트워크이고, 인터넷은 네트워크들의 네트워크입니다. 그 위로 오가는 것은 글과 파일 같은 데이터뿐이라, 요청이 서버까지 건너가고 답이 다시 건너오는 데 시간이 걸립니다.

루프백 주소

원문 표기 · Loopback address

언제나 "바로 이 컴퓨터"를 뜻하는 IP 주소

127.0.0.1 은 루프백 주소로, 여기로 보낸 것은 기계 밖으로 나가지 않고 곧장 자기에게 돌아옵니다. localhost 라는 이름이 이 주소를 가리킵니다. 127.0.0.1 에서만 기다리는 서버는 같은 컴퓨터의 프로그램만 닿을 수 있고 바깥에서는 닿지 못해 연습용 서버에 안전합니다.

더 배우기

Address already in use

다른 프로그램이 이미 그 포트를 쥐고 있다는 오류

서버는 포트를 차지해야 기다릴 수 있고, 한 포트는 한 번에 한 프로그램만 가질 수 있습니다. 이 오류는 무언가 — 흔히 끄는 것을 잊은 같은 서버의 이전 실행 — 가 이미 그 포트를 쥐고 있다는 뜻입니다. 그 프로그램을 멈추거나(먼저 프로세스 번호를 찾습니다) 새 것을 다른 포트로 띄웁니다.

더 배우기

Connection refused

그 주소·포트에서 기다리는 프로그램이 없다는 오류

Connection refused 는 요청이 컴퓨터에는 닿았지만 그 포트에서 기다리는 프로그램이 없다는 뜻입니다. 보통 서버가 아직 안 켜졌거나, 멈췄거나, 다른 포트에서 기다리는 중입니다. 서버가 도는지 보고 로그를 읽으세요. 주소의 포트 번호를 잘못 적은 것도 흔한 원인입니다.

더 배우기

처리량

원문 표기 · Throughput

정해진 시간에 시스템이 끝내는 일의 양

처리량은 초당 요청 수, 인공지능 모델이면 초당 토큰 수처럼 양을 잽니다. 지연 시간은 요청 하나가 얼마나 기다리는지를 잽니다. 둘은 맞바뀝니다 — 요청 여럿을 묶어 한꺼번에 처리하면 처리량은 늘지만, 요청 하나는 답이 시작되기까지 조금 더 기다릴 수 있습니다.

UTC

나라와 상관없는 세계의 기준 시각

UTC(세계 표준시, 협정 세계시)는 다른 시간대를 셀 때 기준이 되는 시계로, 한국은 UTC+9 라서 UTC 0시는 한국 오전 9시입니다. 서버와 데이터베이스는 보통 시각을 UTC 로 저장하고, 보여 줄 때만 사용자마다의 시각으로 바꿉니다. 그래야 여러 나라 사람이 언제 일어난 일인지 같게 압니다.

Cloudflare

웹사이트를 전달하고 지키고 올려 주는 회사

Cloudflare 는 웹사이트 앞에 서는 전 세계 네트워크를 운영합니다 — 가까운 곳에서 페이지 사본을 내주고, 공격을 막고, 도메인 이름(DNS)을 관리합니다. Cloudflare Pages 의 정적 홈페이지처럼 사이트와 작은 프로그램을 직접 올려 주기도 합니다. 이 사이트를 비롯한 많은 사이트가 방문자 모르게 이것을 씁니다.

더 배우기

Cloudflare Pages

정적 사이트를 무료로 올려 주는 서비스

Cloudflare Pages 는 HTML·CSS·자바스크립트·이미지로 된 정적 사이트 폴더를 your-project.pages.dev 같은 주소로 인터넷에 올립니다. Wrangler 로 폴더를 올리거나(Direct Upload), GitHub 저장소를 이어 푸시할 때마다 새 버전을 공개합니다(Git 연동). 서버 프로그램을 돌려 주지 않고 폴더 안의 모든 것이 공개되므로 비밀은 절대 넣지 않습니다.

더 배우기

Wrangler

Cloudflare 의 명령줄 도구

Wrangler 는 터미널에서 Cloudflare 를 다루는 프로그램으로, 로그인하고 프로젝트를 만들고 Pages 사이트나 Workers 를 공개합니다. npm 꾸러미라서 npx 가 따로 설치하지 않고 실행해 줍니다. 처음 wrangler login 을 하면 브라우저가 열려 Cloudflare 계정을 잇습니다.

더 배우기

Direct Upload

완성된 폴더를 직접 올려 공개하는 방법

Direct Upload 는 내 컴퓨터에서 사이트를 만들고 그 폴더를 Wrangler 나 대시보드로 Cloudflare Pages 에 보내는 방식입니다. GitHub 와 이어지지 않아서 고칠 때마다 다시 올립니다. 이렇게 만든 프로젝트는 나중에 Git 연동으로 바꿀 수 없으므로 처음에 고릅니다.

더 배우기

Git 연동

원문 표기 · Git integration

저장소를 이어 푸시마다 저절로 공개되게 하는 방법

Git 연동은 GitHub 저장소를 Cloudflare Pages 에 한 번 이어 두는 방식입니다. 그 뒤로는 저장소에 푸시할 때마다 Cloudflare 가 새 버전을 빌드해 공개하고, 다른 브랜치는 자기 미리보기 주소를 받습니다. Git 기록이 곧 배포 기록이 됩니다.

더 배우기

미리보기 주소

원문 표기 · Preview address

배포할 때마다 따로 생기는 시험용 주소

Cloudflare Pages 에 배포할 때마다 그 버전에 abc123.my-homepage.pages.dev 같은 자기 주소가 생기고, 실제 주소(프로덕션)는 가장 최근 배포를 보여 줍니다. 공유하기 전에 미리보기 주소로 바뀐 것을 확인할 수 있습니다. 미리보기 주소도 공개라서 링크를 가진 사람은 누구나 봅니다.

더 배우기

프로덕션

원문 표기 · Production

실제 사용자가 쓰는 정식 공개 환경

프로덕션은 시험판이나 미리보기가 아니라 실제 사용자가 쓰는 사이트 주소나 스토어 출시입니다. 바뀐 것은 다른 곳에서 확인한 뒤에야 프로덕션에 올립니다. Google Play 에서는 내부·비공개·공개 테스트 다음의 마지막 트랙이 프로덕션입니다.

더 배우기

Vercel

Git 저장소에서 웹앱을 배포해 주는 호스팅 서비스

Vercel 은 Next.js 프레임워크를 만든 회사의 호스팅 플랫폼입니다. GitHub 저장소를 이으면 푸시할 때마다 사이트를 빌드해 공개하고, 바뀐 것마다 미리보기 주소를 줍니다. 정적 페이지 말고도 작은 서버 함수를 돌릴 수 있어 React·Next.js 앱에 많이 씁니다.

SSH 키

원문 표기 · SSH key

비밀번호 대신 서버 접속에 쓰는 열쇠 파일 한 쌍

SSH 키는 내 컴퓨터에서 만드는 파일 한 쌍으로, 남에게 절대 주지 않는 개인 키와 서버에 맡기는 공개 키입니다. 접속할 때 서버는 내가 짝이 맞는 개인 키를 가졌는지 확인하므로 비밀번호가 네트워크를 건너지 않습니다. 키로만 접속을 받는 서버는 비밀번호를 받는 서버보다 뚫기가 훨씬 어렵습니다.

더 배우기

공개 키

원문 표기 · Public key

남에게 줘도 되는 열쇠 한 쌍의 반쪽

열쇠 한 쌍은 서로 짝인 두 열쇠로 되어 있습니다. 공개 키는 마음껏 나눠도 되고 서버의 ~/.ssh/authorized_keys 같은 곳에 둡니다. 개인 키는 나만 가집니다. 한쪽으로 잠그거나 서명한 것은 다른 쪽으로 확인할 수 있어서, 서버는 내 개인 키를 보지 않고도 나인지 확인합니다.

더 배우기

원격 제어권

원문 표기 · Remote control access

남이 멀리서 내 컴퓨터를 조작하게 하는 권한

원격 제어권을 주면 다른 사람이 인터넷으로 내 화면을 보며 마우스를 움직이고 타자를 칠 수 있습니다. 화상 회의 앱에서 화면을 공유하는 동안 줄 수 있습니다. 믿는 사람에게만 주고 끝나면 거둬들이세요.

더 배우기

드라이브

원문 표기 · Cloud drive

인터넷에 파일을 두는 저장 공간

여기서 드라이브는 Google Drive·OneDrive·Dropbox 처럼 인터넷에 있는 파일 저장 공간입니다. 어느 기기에서나 열고 남과 나눌 수 있습니다. 드라이브를 인공지능 도구에 이으면 허락한 것을 인공지능이 읽으므로, 드라이브 전체가 아니라 그 일에 필요한 폴더만 공유합니다.

서비스 계정 키

원문 표기 · Service account key

사람 대신 프로그램이 로그인할 때 쓰는 키 파일

서비스 계정은 사람이 아니라 프로그램을 위한 계정이고, 그 키는 프로그램이 누구인지 증명하는 파일(흔히 JSON)입니다. 자동 빌드는 브라우저에서 "로그인"을 누를 수 없어서, 보통 환경 변수로 이 키를 읽어 배포하거나 클라우드 서비스를 부릅니다. 파일을 가진 사람은 누구나 그 계정 노릇을 할 수 있으니 Git 에 절대 커밋하지 않습니다.

더 배우기

러너

원문 표기 · Runner

GitHub Actions 작업을 돌리는 컴퓨터

러너는 GitHub Actions 워크플로의 단계를 실제로 실행하는 기계입니다. GitHub 가 작업마다 우분투 같은 새 가상 머신을 빌려주고 끝나면 버리므로, 내 컴퓨터가 꺼져 있어도 일이 됩니다. 내 기계를 직접 러너로 등록할 수도 있습니다. 인공지능 모델을 돌리는 러너와는 다른 것입니다.

더 배우기

워크플로 파일

원문 표기 · Workflow file

GitHub Actions 의 할 일을 적은 파일

워크플로 파일은 저장소의 .github/workflows/ 폴더에 둡니다. 언제 돌지(푸시·풀 리퀘스트·댓글·정한 시각)를 적고, 러너에서 할 작업과 단계를 늘어놓습니다. 클로드 코드의 GitHub 앱을 설치하면 이런 파일이 생겨서, 이슈에 @claude 를 부르면 작업이 시작됩니다.

더 배우기

비밀값

원문 표기 · Secret

코드 밖에 두었다가 실행할 때만 건네는 비밀번호·키

비밀값은 API 키처럼 저장소에 나오면 안 되는 값입니다. GitHub 에서는 저장소 Settings 에 Actions 비밀값으로 저장하고, 워크플로가 돌 때 이름으로 읽으며, 로그에는 값이 가려집니다. 실수로 커밋했다면 Git 기록에 옛 값이 남으므로 키를 바로 바꿉니다.

더 배우기

격리

원문 표기 · Isolation

다른 곳에 영향이 없게 따로 떼어 돌리기

격리는 프로그램을 컨테이너·가상 머신·샌드박스 같은 곳에 넣어 컴퓨터의 나머지와 떼어 놓는 것으로, 무슨 일을 하든 그 안에만 머물게 합니다. 인공지능 에이전트가 묻지 않고 아무 명령이나 실행하게 하는 모드는 격리된 곳에서만 안전합니다 — 거기서는 실수해도 진짜 파일을 지우거나 내 계정에 닿지 못합니다.

파이프라인

원문 표기 · Pipeline

자동으로 차례차례 이어지는 여러 단계의 흐름

자동화에서 파이프라인은 앞 단계의 결과를 받아 차례로 저절로 도는 단계들의 줄입니다 — 예를 들어 코드를 푸시할 때마다 빌드·시험·리뷰·배포. codex exec 같은 도구는 대화 화면 없이 돌고 다음 단계가 읽을 결과를 찍으므로 이런 파이프라인의 한 단계로 쓰기 좋습니다.

더 배우기

tmux attach

빠져나왔던 tmux 세션에 다시 붙기

tmux attach 는 빠져나오거나 접속을 끊은 뒤에도 계속 돌던 tmux 세션으로 다시 들어갑니다. -t 로 세션 이름을 고르고, tmux ls 로 어떤 세션이 있는지 봅니다. 밤에 서버에서 시작한 에이전트를 다음 날 아침 확인할 때 이렇게 합니다.

더 배우기

detach(빠져나오기)

원문 표기 · Detach

tmux 세션을 켠 채 화면만 빠져나오기

detach 는 tmux 세션을 멈추지 않고 그 화면에서만 나오는 일입니다 — Ctrl+b 를 눌렀다 뗀 뒤 d 를 누릅니다. 그 안에서 시작한 것은 터미널을 닫거나 서버 접속을 끊어도 계속 돕니다. exit 를 치면 세션이 닫히고 그 안의 일도 멈추니 헷갈리지 마세요.

더 배우기

VRAM

그래픽카드(GPU)에 달린 메모리

VRAM(비디오 램)은 그래픽카드에 달린 메모리입니다. GPU 로 언어 모델을 돌리려면 모델의 가중치가 VRAM 에 다 들어가야 해서, 카드의 VRAM 보다 큰 모델은 줄이지 않으면 올라가지 않습니다. 그래서 수백 메가바이트면 되는 XSLM 같은 아주 작은 모델은 보통 컴퓨터에서도 돌아갑니다.

가중치·파라미터 자세히 보기

사물인터넷(IoT)

원문 표기 · IoT (Internet of Things)

인터넷에 연결된 일상의 기기

사물인터넷(IoT)은 센서·카메라·가전제품·웨어러블처럼 작은 컴퓨터와 네트워크 연결을 품은 일상의 물건들을 말합니다. 이런 기기는 보통 계산 능력과 메모리가 작아서, 그 위에서 돌아가는 인공지능 모델은 아주 작고 가벼워야 합니다.

메모리 부족(OOM)

원문 표기 · Out of memory (OOM)

프로그램에 필요한 메모리가 모자라 나는 오류

메모리 부족(OOM)은 프로그램이 컴퓨터나 GPU 에 있는 것보다 많은 메모리를 달라고 해서 오류로 멈추는 일입니다. 모델 학습에서는 대개 배치나 구간 길이가 너무 크다는 뜻이니, 배치를 줄이거나 구간을 짧게 하거나 작은 배치 여러 번의 기울기를 모아 씁니다.

더 배우기

ESP32

기기를 만드는 Wi-Fi 달린 작고 싼 칩 보드

ESP32 는 Espressif 가 만든 작고 값싼 마이크로컨트롤러 칩 계열로, Wi-Fi 와 Bluetooth 가 들어 있습니다. 메이커들은 ESP32 보드로 로봇·센서·음성 기기를 만듭니다. 큰 AI 모델을 직접 돌리기에는 힘이 모자라서, 보통 음성이나 이미지를 서버로 보내고 서버의 답에 따라 움직입니다.

더 배우기

펌웨어

원문 표기 · Firmware

기기의 칩 안에 저장된 프로그램

펌웨어는 로봇 보드·공유기·키보드 같은 기기의 칩 안에 저장되어, 전원을 켜자마자 돌아가는 프로그램입니다. 바꾸려면 새 버전을 빌드해서 보드에 써 넣습니다(플래시). 보드를 손에 쥔 사람은 누구나 펌웨어를 읽어 낼 수 있으므로, 비밀 키는 절대 펌웨어에 넣지 않습니다.

더 배우기

서머타임

원문 표기 · Daylight saving time

여름에 시계를 1시간 앞당기는 제도

서머타임(DST)은 일부 나라가 봄에 시계를 1시간 앞당기고 가을에 되돌리는 제도입니다. SONUB 은 시간표를 UTC 로 저장하므로, 서머타임이 바뀌면 학생과 강사 모두 현지 수업 시각이 1시간 움직입니다. SONUB 은 날마다 실제 현지 시각을 보여 주고 바뀌기 전에 알립니다.

시간대(타임존)

원문 표기 · Time zone

시계가 같은 시각을 가리키는 지역

시간대는 시계가 같은 시각을 가리키는 지역으로, UTC 와의 차이(서울은 UTC+9)나 Asia/Seoul 같은 이름으로 적습니다. SONUB 은 모든 수업을 UTC 로 저장하고 보는 사람의 시간대로 바꿔 보여 줍니다. 그래서 마닐라의 학생과 서울의 강사가 같은 수업을 각자의 현지 시각으로 봅니다. SONUB 화면은 '국가 시간'이라고 부릅니다.

한국 시간(KST)

원문 표기 · KST (Korea time)

UTC 보다 9시간 빠른 한국 표준시

KST 는 한국에서 쓰는 표준 시각으로 UTC+9 라고 적습니다. 한국은 서머타임을 쓰지 않아 1년 내내 같습니다. SONUB 의 주간 AI 세미나 시각은 KST 로 알리며, 화면에 내 시간대의 시각도 함께 보입니다.

더 배우기

데브옵스(DevOps)

개발과 운영을 한 팀처럼 이어 만들고·배포하고·돌보는 방식

데브옵스는 소프트웨어를 만드는 일(개발, Dev)과 서버에서 돌리고 돌보는 일(운영, Ops)을 하나의 일하는 방식으로 잇는 것입니다. 바뀐 코드를 시험하고, 배포하고, 돌아가는 서비스를 지켜보는 반복 작업을 자동으로 처리해 새 버전을 자주 내고 문제를 일찍 찾습니다. 도구 하나의 이름이 아니라 일하는 방식이지만, 'DevOps 엔지니어'라는 직무 이름으로도 많이 씁니다.

더 배우기

게임 백엔드 서비스

원문 표기 · game backend service

게임 서버의 공통 기능을 빌려 쓰는 관리형 서비스

게임 백엔드 서비스는 게임이 직접 만들어야 할 서버 기능 — 로그인, 진행 저장, 순위표, 매치메이킹, 출시 뒤 이벤트를 돌리는 LiveOps 도구 — 를 미리 만들어 빌려줍니다. 서버는 서비스 회사가 돌리고, 게임은 SDK 나 웹 API 로 부릅니다. 작은 팀의 일을 크게 덜어 주지만, 그 회사의 요금과 규칙에 묶이게 됩니다.

더 배우기

Agones

Kubernetes 위에서 전용 게임 서버 여러 대를 돌려 주는 오픈 소스

Agones(아고네스)는 Google 이 시작한 오픈 소스 프로젝트입니다. Kubernetes 위에서 전용 게임 서버를 — 보통 경기 하나에 한 대씩 — 띄우고, 상태를 살피고, 끝나면 내립니다. 누구와 누구를 함께 붙일지 정하는 Open Match 와 자주 함께 씁니다.

더 배우기

Open Match

게임 매치메이킹을 만드는 오픈 소스 틀

Open Match 는 Google 이 시작한 매치메이킹용 오픈 소스 프로젝트입니다. 기다리는 플레이어를 공정한 경기로 묶는 일을 합니다. 좋은 경기의 규칙은 내가 쓰고, 대기 표(티켓)를 쌓고 늘리는 일은 Open Match 가 맡습니다. 경기마다 서버를 띄우는 Agones 와 자주 함께 씁니다.

더 배우기

Photon

게임용 멀티플레이 네트워킹 도구 모음(Fusion·Quantum)

Photon(포톤)은 Exit Games 가 만든, 플레이어 사이에 게임 상태를 주고받아 주는 호스팅 도구 모음입니다. Photon Fusion 은 주로 Unity 에서 쓰고, Photon Quantum 은 모든 플레이어가 같은 입력으로 같은 시뮬레이션을 돌리는 결정론적 엔진입니다. 계정·저장·상점보다 네트워킹에 집중합니다.

더 배우기

Centrifugo

브라우저·앱에 실시간 메시지를 밀어 주는 오픈 소스 서버

Centrifugo(센트리퓨고)는 오픈 소스 실시간 메시지 서버입니다. 브라우저와 앱은 이 서버에 (보통 WebSocket 으로) 연결해 둔 채 채널을 구독합니다. 본 서버가 채널에 메시지를 내면 Centrifugo 가 구독한 모두에게 한 번에 전합니다. 채팅과 실시간 알림에 흔히 씁니다.

더 배우기

SONUB 용어 사전

학습

용어 31개

터치 타이핑

원문 표기 · Touch typing

자판을 보지 않고 손가락 기억으로 치기

터치 타이핑은 눈은 화면에 두고 손가락이 기억으로 키를 찾아 치는 방법입니다. 손가락마다 맡은 키가 있고, 다른 키를 누른 뒤에는 늘 홈 로우로 돌아옵니다. 처음에는 느리게 느껴지지만 빠르면서도 정확해지는 유일한 길입니다.

더 배우기

홈 로우

원문 표기 · Home row

손가락을 올려 두는 키보드 가운데 줄

홈 로우는 키를 누르지 않을 때 손가락이 기다리는 가운데 글자 줄입니다. 왼손은 A S D F, 오른손은 J K L ; 위에 둡니다. F 와 J 에는 작은 돌기가 있어 보지 않고도 검지로 찾을 수 있습니다. 다른 키로 뻗는 모든 동작은 여기서 시작해 여기로 돌아옵니다.

더 배우기

분당 낱말(WPM)

1분에 치는 낱말 수로 잰 타자 속도

WPM 은 words per minute, 곧 1분에 친 낱말 수입니다. 낱말마다 길이가 달라서 타자 프로그램은 맞게 친 5글자를 낱말 하나로 셉니다. SONUB 의 단계 연습은 단마다 정확도 목표와 함께 분당 낱말 목표를 둡니다.

더 배우기

타수(CPM)

1분에 맞게 누른 수로 잰 타자 속도

타수(CPM, characters per minute)는 1분 동안 맞게 친 수입니다. SONUB 타자 시험은 타수와 정확도로 급수를 매깁니다. 한글은 자음·모음을 누를 때마다 세므로 같은 글이라도 영어보다 숫자가 크게 나오고, 그래서 급수 기준이 언어마다 다릅니다.

더 배우기

자판 배열

원문 표기 · Keyboard layout

어느 키에 어느 글자가 있는지 정한 배치

자판 배열은 키마다 어떤 글자가 찍히는지를 정한 배치입니다. 영어 자판은 대부분 윗줄 첫 여섯 글자에서 이름을 딴 QWERTY(쿼티)를 씁니다. 한글은 왼쪽에 자음, 오른쪽에 모음이 있는 두벌식을 쓰고, 일본어와 중국어는 소리를 로마자로 적어 치는 경우가 많습니다. SONUB 에서는 사이트 언어와 따로 자판 언어를 고릅니다.

더 배우기

정확도

원문 표기 · Accuracy

누른 키 가운데 맞게 누른 비율

정확도는 키를 누른 횟수 가운데 맞게 누른 비율(%)입니다. 키를 100번 눌러 5번 틀리면 정확도는 95% 입니다. SONUB 의 모든 단계와 시험은 속도와 함께 정확도를 봅니다. 실수 위에 쌓은 속도는 오래가지 않기 때문입니다.

더 배우기

글머리 기호

원문 표기 · Bullet point

목록 줄 앞에 붙이는 점·기호(•)

글머리 기호는 목록의 줄마다 앞에 붙이는 작은 표시로, 보통 • 입니다. 정보를 짧은 항목으로 나눠 빨리 훑어보게 해 줍니다. 프롬프트에서 '슬라이드마다 글머리 기호 두 개'처럼 형식으로 요청할 수 있고, AI 도구는 보통 마크다운으로 - 나 * 로 시작하는 줄로 씁니다.

커리큘럼

원문 표기 · Curriculum

배울 내용을 순서대로 짠 교육 과정

커리큘럼은 한 과정의 전체 계획입니다 — 어떤 주제를 어떤 순서로 배우고, 단계마다 무엇을 할 수 있게 되며, 어떻게 확인하는지. 커리큘럼을 따르면 수업이 이리저리 뛰지 않고 앞 수업 위에 쌓입니다. SONUB 의 AI·쉘·Git 커리큘럼은 공개되어 있어 시작 전에 전체 길을 볼 수 있습니다.

더 배우기

패러다임

원문 표기 · Paradigm

한 분야가 함께 믿는 생각·방식의 큰 틀

패러다임은 한 분야의 사람들 대부분이 당연하게 여기는 생각의 틀입니다 — 무엇이 좋은 생각인지, 일을 어떻게 하는지, 성공이 무엇인지. 그 틀이 바뀌는 것을 패러다임 전환이라고 합니다. 스마트폰이 소프트웨어 파는 방식을 바꿨듯, 지금은 인공지능이 창업하고 사업하는 방식을 바꾸고 있습니다.

XP(경험치)

수업·미션을 마치면 쌓이는 경험치 점수

XP(경험치)는 게임에서 빌려 온 점수입니다. 수업·퀴즈·미션을 마칠 때마다 받고, 시간이 지나며 쌓입니다. 답 하나를 얼마나 잘했는지가 아니라 얼마나 많이 연습했는지 보여 줍니다. 예를 들어 AI 실습실에서 확인을 통과하면 정해진 XP 가 더해집니다.

더 배우기

CC BY-SA

출처를 밝히고 같은 조건으로 나누라는 허락

CC BY-SA 는 크리에이티브 커먼즈 라이선스입니다. BY 는 원래 만든 사람을 밝혀야 한다는 뜻, SA(ShareAlike)는 그것으로 만든 결과물도 같은 라이선스로 나눠야 한다는 뜻입니다. 이 두 규칙만 지키면 복사·수정·판매도 됩니다. 위키백과와 Learn X in Y Minutes 가 이것을 써서, SONUB 은 그 내용을 고쳐 쓸 때 출처를 밝힙니다.

성모

원문 표기 · Pinyin initial

중국어 병음의 첫소리(자음 부분)

병음은 중국어 음절 하나를 성모와 운모로 나눠 적습니다. 성모는 앞에 오는 자음 소리로, ma·ba·da 의 m·b·d 같은 것입니다. 성모가 없는 음절도 있습니다. 중국어 병음 입력에서는 성모를 먼저 치므로, 타자 연습은 성모를 몇 묶음으로 나눠 익힙니다.

더 배우기

운모

원문 표기 · Pinyin final

중국어 병음의 뒷소리(모음 부분)

병음에서 운모는 성모 뒤의 모든 부분입니다 — a·o·e·ai·ao·an·ang 처럼 모음이나 모음 묶음이고, n·ng 로 끝나기도 합니다. 성모가 없는 음절에도 운모는 꼭 있습니다. 타자 연습은 거의 모든 낱말에 나오는 a·o·e·i·u 같은 단순 운모부터 시작합니다.

더 배우기

받침

원문 표기 · Batchim

한글 글자 아래에 붙는 자음

한글은 글자를 한 덩어리로 적습니다 — 첫 자음, 모음, 그리고 때로 아래에 붙는 자음이 있는데, 아래 자음을 받침이라고 합니다. '밥'의 아래 ㅂ 이 받침입니다. 받침은 일곱 소리(ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅇ)로만 나므로 '옷'은 혼자 읽으면 [옫]으로 소리 납니다.

더 배우기

겹받침

원문 표기 · Double batchim

서로 다른 자음 두 개로 된 받침

겹받침은 ㄳ·ㄵ·ㄺ·ㄼ 처럼 다른 자음 두 개를 나란히 쓴 받침입니다. 혼자 읽을 때는 둘 중 하나만 소리 납니다 — '닭'은 [닥], '앉다'는 [안따]. 뒤에 모음이 오면 두 번째 자음이 다음 글자로 넘어갑니다 — '닭이'는 [달기].

더 배우기

된소리

원문 표기 · Tense consonant

ㄲ·ㄸ·ㅃ·ㅆ·ㅉ 처럼 세게 내는 소리

한국어에는 같은 글자를 겹쳐 쓴 된소리 다섯 개가 있습니다 — ㄲ·ㄸ·ㅃ·ㅆ·ㅉ. 목을 조이고 숨을 내뱉지 않고 소리 내므로 '꿀'은 '굴'·'쿨'과 다르게 들립니다. 예사소리가 받침 뒤에서 된소리로 바뀌기도 합니다 — '학교'는 [학꾜]로 소리 납니다.

더 배우기

겹모음

원문 표기 · Compound vowel

두 모음이 합쳐진 모음(ㅘ·ㅝ·ㅢ)

어떤 모음은 두 모음 글자를 합쳐 만들고, 한 소리에서 다른 소리로 미끄러지듯 냅니다 — ㅗ + ㅏ = ㅘ, ㅜ + ㅓ = ㅝ, ㅡ + ㅣ = ㅢ. 두 글자처럼 따로 읽는 것이 흔한 실수입니다. '과'는 한 음절입니다.

더 배우기

높임말

원문 표기 · Honorifics

상대나 이야기 속 사람을 높여 말하는 표현

한국어는 존중을 나타내려고 말의 모양을 바꿉니다. 주어가 윗사람이면 동사에 -(으)시- 를 넣고, 먹다→드시다, 있다→계시다처럼 따로 쓰는 높임 낱말도 있습니다. 어른·손님·처음 보는 사람에게는 높임말을 쓰는 것이 자연스럽고, 친한 친구에게 쓰면 거리감이 느껴질 수 있습니다.

더 배우기

불규칙 활용

원문 표기 · Irregular conjugation

규칙과 다르게 모양이 바뀌는 낱말 끝

대부분의 한국어 동사는 어미를 붙여도 줄기가 그대로지만, 몇몇은 정해진 방식으로 바뀝니다. ㅂ 불규칙은 ㅂ 이 우로(덥다→더워요), ㄷ 불규칙은 ㄷ 이 ㄹ 로(듣다→들어요), ㅅ 불규칙은 ㅅ 이 빠집니다(낫다→나아요). 방식마다 외워야 하지만 몇 가지뿐입니다.

더 배우기

연결 어미

원문 표기 · Connective ending

두 문장을 한 문장으로 잇는 말끝(-고·-서)

한국어는 '그리고' 같은 낱말을 따로 넣는 대신 앞 동사의 끝을 바꿔 문장을 잇습니다. 연결 어미마다 뜻이 있습니다 — -고(그리고), -아서/어서(그래서), -지만(그러나), -(으)면(만약). '비가 와요' + '집에 있어요'는 '비가 와서 집에 있어요'가 됩니다.

더 배우기

사동

원문 표기 · Causative

남에게 시키는 뜻의 표현(먹이다)

사동은 주어가 다른 사람에게 그 동작을 하게 만드는 표현입니다. 한국어는 -이-·-히-·-리-·-기-·-우- 를 붙이거나 '-게 하다'로 만듭니다 — 먹다→먹이다, 입다→입히다. 어떤 접사는 피동과 모양이 같아서 문장을 보고 어느 뜻인지 가립니다.

더 배우기

피동

원문 표기 · Korean passive

남에게 당하는 뜻의 표현(먹히다)

피동은 동작을 받는 쪽을 주어로 세우는 표현입니다. 한국어는 -이-·-히-·-리-·-기- 를 붙여 만듭니다 — 보다→보이다, 먹다→먹히다, 열다→열리다. '-아/어지다'도 많은 동사에 씁니다. 영어의 수동태와 같은 일을 하지만 'be + 과거분사' 모양은 아닙니다.

더 배우기

관용어

원문 표기 · Idiom

낱말 뜻과 다른 굳은 뜻을 가진 표현

관용어는 낱말을 하나씩 풀이한 것과 다른 뜻을 가진, 굳어진 표현입니다. '발이 넓다'는 아는 사람이 많다는 뜻이고, '손이 크다'는 씀씀이가 후하다는 뜻입니다. 관용어는 통째로 익혀야 하며, TOPIK 읽기·듣기 문제에 자주 나옵니다.

더 배우기

TOPIK

외국인을 위한 공식 한국어능력시험

TOPIK(Test of Proficiency in Korean, 한국어능력시험)은 한국어가 모국어가 아닌 사람을 위한 공식 시험으로, 한국 정부가 주관합니다. TOPIK I 은 1~2급, TOPIK II 는 3~6급으로 초급부터 고급까지 나눕니다. 한국의 대학과 회사가 몇 급 이상을 요구하는 일이 많아 강좌들이 그 문제 유형으로 연습합니다.

더 배우기

복문

원문 표기 · Complex sentence

주어·서술어가 두 번 이상 나오는 문장

복문은 저마다 주어와 서술어를 가진 절 두 개 이상을 한 문장으로 이은 것입니다. 영어는 because·when·who 같은 말로 잇고, 한국어는 앞 동사의 끝을 연결 어미로 바꿔 잇습니다. 복문을 만들고 읽을 줄 알아야 짧게 끊기는 문장에서 자연스러운 글로 넘어갑니다.

문장 성분

원문 표기 · Sentence component

주어·목적어처럼 문장 속 낱말이 맡은 역할

문장 성분은 낱말이 문장에서 맡는 역할입니다 — 주어(누가), 서술어(어찌한다), 목적어(무엇을), 보어, 꾸며 주는 말. 품사는 어떤 종류의 낱말인지를, 문장 성분은 이 문장에서 무슨 일을 하는지를 말합니다. 긴 문장을 읽을 때 문장 성분부터 찾는 것이 첫걸음입니다.

스몰 토크

원문 표기 · Small talk

처음 만나 가볍게 나누는 이야기

스몰 토크는 날씨, 지금 있는 곳, 하는 일처럼 쉬운 주제로 나누는 다정한 대화입니다. 정보를 주고받기보다 친절하다는 것을 보여 주고 더 긴 대화의 문을 여는 것이 목적입니다. 대답하고, 조금 덧붙이고, 질문으로 다시 넘겨 상대에게 차례를 주는 것이 요령입니다.

한국어 조사

원문 표기 · Particle (Korean)

낱말 뒤에 붙어 역할을 나타내는 말(은·는·이·가)

한국어는 명사 끝에 조사를 붙여 그 낱말의 역할을 나타냅니다 — 이/가는 주어, 을/를은 목적어, 에는 장소·때, 은/는은 화제. 앞 낱말의 받침에 따라 모양이 바뀝니다 — '책이', '사과가'. 조사가 역할을 알려 주므로 말의 순서가 꽤 자유롭습니다. 검색 도구도 조사를 헤아려야 '토큰'으로 '토큰을'을 찾습니다.

더 배우기

활용형

원문 표기 · Inflected form

낱말 끝이 바뀐 모양(쓰다→써서)

활용형은 문장에 맞게 끝이 바뀐 낱말입니다 — 복수형(token → tokens), 시제(write → wrote), 한국어 동사의 어미(쓰다 → 써서). 용어 팝업에서는 모양마다 글자가 다르므로, 자동 찾기는 별칭에 적은 모양만 찾고 나머지는 data-term 으로 직접 표시합니다.

더 배우기

소문자

원문 표기 · Small letter

a·b·c 처럼 작은 모양의 글자

소문자는 알파벳의 평소 모양입니다. 글은 거의 다 소문자로 쓰고 대문자는 특별한 자리에만 나오므로, 소문자를 특히 잘 익혀야 합니다. 생김새가 비슷해 헷갈리는 것도 있습니다 — b 와 d 는 서로 반대쪽을 보고, p 와 q 는 줄 아래로 내려갑니다.

독해

원문 표기 · Reading comprehension

글을 읽고 뜻을 정확히 이해하기

독해는 낱말을 소리 내어 읽는 것을 넘어 읽은 것을 이해하는 일입니다 — 글이 무엇에 관한 것인지, 요지는 무엇인지, 그것을 뒷받침하는 내용, 말하지 않고 보여 주는 것까지. 시험은 주제·요지·빈칸·추론 문제로 독해를 봅니다. 긴 글은 첫 문장과 마지막 문장부터 읽는 같은 전략이 도움이 됩니다.

SONUB 용어 사전

수업

용어 43개

미국 달러(USD)

원문 표기 · USD (US dollar)

SONUB 수업 가격에 쓰는 유일한 통화

USD 는 미국 달러를 뜻하는 기호입니다. 강사는 수업 가격을 모두 1달러 단위의 미국 달러로 정합니다 — 최소 $1, 최대 1분에 $1(예: 25분 수업은 $1~$25). 학생은 그 금액을 PayPal 로 강사에게 바로 냅니다. SONUB 에는 포인트도 다른 화폐도 없습니다.

더 배우기

평판

원문 표기 · Reputation

SONUB 기록으로 쌓이는 신뢰의 근거

평판은 강사나 결제자를 얼마나 믿을 수 있는지 SONUB 에 남은 기록(화상 교실 출석·취소·평가·확정된 문제)으로만 보여 주는 것입니다. 점수 하나가 아니라 근거와 함께 보이며, 신원이나 앞으로의 거래를 보증하지 않습니다. 기록이 적은 새 회원은 평판이 나쁜 것과 다릅니다.

더 배우기

평판 감점

원문 표기 · Reputation deduction

늦은 취소·결석으로 강사에게 붙는 감점

평판 감점은 강사가 결제된 수업이나 무료 체험을 늦게 취소하거나 결석했을 때 SONUB 기록으로 저절로 붙습니다. 감점마다 90일 동안 표시 점수에서 빠지고, 합은 최대 50점까지입니다. SONUB 은 이것을 벌점이라고 부르지 않습니다.

평판 비율

원문 표기 · Reputation rate

강사의 평판을 0~100% 로 나타낸 값

평판 비율은 강사의 최근 기록을 백분율로 바꾼 값입니다. 최근 90일 성공한 수업의 비율로 최대 40, 공개된 학생 평가로 최대 30, 성공한 수업 수로 최대 30(60개면 만점)을 줍니다. 늘 다시 계산하므로 한 번 높아져도 다시 내려갈 수 있습니다. 예약 기간은 바꾸지 않습니다 — 모든 강사가 24일입니다.

표시 점수

원문 표기 · Ranking score (display score)

강사 찾기의 순서를 정하는 오늘의 점수

표시 점수는 강사 찾기의 순서를 정하는 점수로 날마다 바뀝니다. 완성도 + 별점 × 10 + 오늘 시간표(최대 10) + 오늘 무료 체험 3 + 최근 100일 성공 수업 100개마다 1 + 학생 평가(−50~+50) + 관리 점수(최대 10) − 평판 감점입니다. 147점 이상이면 점수가 높을수록 먼저 보입니다. 평판과는 다릅니다.

더 배우기

프로필 완성도

원문 표기 · Profile score

강사 프로필을 채운 정도(100점 만점)

프로필 완성도는 강사 프로필을 얼마나 채웠는지 셉니다. 이름 1·사진 15·영상 15·실명 5·생년월일 5·졸업 학교 5·한 줄 소개 9·자기소개(100자 이상) 10·교육 분야 10·수업 언어 5·국가 5·경력 5·PayPal 비즈니스 계정 10 입니다. 95점 이상이고 PayPal 비즈니스 계정을 연결해야 예약을 받습니다. 낮아도 목록에는 나오지만 뒤로 갑니다.

더 배우기

업적

원문 표기 · Achievement

성공한 수업·추천 수가 이룬 이정표

업적은 강사 프로필에 남는 이정표입니다. 성공한 수업 100·1천·5천·1만 개(무료 체험 포함)와 학생 추천 1·10·100 이 있고, 추천 1 은 학생 평가의 플러스 점수 100점입니다. 한 번 이루면 내려가지 않습니다.

예약 기간

원문 표기 · Booking period

학생이 며칠 앞까지 예약할 수 있는지(모든 강사 24일)

예약 기간은 강사의 시간표가 며칠 앞까지 열려 있는지입니다. 평판·업적과 관계없이 모든 강사가 오늘부터 24일이고, 유료 수업·무료 체험 모두 같습니다. PayPal 은 잡아 둔 결제를 29일까지만 청구할 수 있게 하고, 강사는 수업이 끝나고 최대 96시간(4일) 안에 수업 평가를 저장할 때 수업료를 청구합니다. 24 + 4 = 28일이라 가장 늦은 청구도 이 기한 안에 끝납니다. 강사는 더 짧게만 정할 수 있고, 기간이 줄어도 이미 받은 예약은 그대로입니다.

더 배우기

결제 창구

원문 표기 · Payment channel

강사가 수업료를 받는 곳: PayPal 비즈니스 계정

결제 창구는 강사가 수업료를 받으려고 연결하는 PayPal 비즈니스 계정입니다 — SONUB 의 유일한 결제 수단입니다. 강사 프로필의 결제 설정 탭에 Live 앱의 Client ID 와 Secret 을 저장하면 연결되고, 연결해야 예약을 받습니다. SONUB 은 저장하기 전에 PayPal 로 값을 확인하고, PayPal 이 값을 더 이상 받지 않으면 알려 드립니다. 카드 링크·계좌 이체·다른 앱은 쓸 수 없습니다.

더 배우기

예약 상태

원문 표기 · Booking status

수업의 예약됨·무료 체험·취소됨의 뜻

유료 수업은 PayPal 이 결제를 확정한 뒤에만 예약되므로 결제되지 않은 채 남지 않습니다 — 바로 예약됨으로 보입니다. 무료 체험은 예약됨 · 무료 체험으로 보입니다. 취소된 수업에는 누가 취소했는지가 보이고, 결제했는데 아직 환불되지 않은 금액은 PayPal 로 저절로 돌려줍니다. 예약된 시간은 다른 학생이 가져갈 수 없습니다.

결제 확정

원문 표기 · Payment confirmation

결제가 끝났다는 PayPal 의 확정

PayPal 이 결제마다 SONUB 에 직접 확정을 알려 주므로 사람이 손으로 확인할 것이 없습니다. PayPal 이 결제를 확정하는 즉시 수업이 예약됩니다. PayPal 이 결제를 끝내지 못하면 수업은 예약되지 않고 돈도 빠져나가지 않습니다.

위약금

원문 표기 · Cancellation fee

학생이 늦게 취소할 때 강사 몫으로 남는 돈

기본 조건에서 학생이 결제된 수업을 예약 후 30분 안이나 시작 24시간 이상 전에 취소하면 위약금이 없습니다. 그 밖에는 12~24시간 전 5%, 6~12시간 10%, 1~6시간 20%, 1시간 미만 25% 입니다. 강사는 전액 환불 조건을 고를 수도 있습니다. SONUB 은 이 돈을 계산·보관·지급하지 않습니다.

취소·환불 조건

원문 표기 · Cancellation terms

예약하던 때 정해져 굳는 환불 규칙

예약마다 그때의 가격과 취소·환불 조건을 그대로 복사해(스냅숏) 남깁니다. 강사가 나중에 조건을 바꾸면 새 예약에만 적용되고, 이미 한 예약은 합의한 조건을 지킵니다. 강사는 기본 조건 표와, 시작 전 취소면 모두 돌려주는 조건 가운데 고릅니다.

무료 체험

원문 표기 · Free trial

강사마다 한 번 받는 25분 이하 무료 수업

학습자는 강사 한 명마다 무료 체험을 한 번 받을 수 있고, 강사 수에는 제한이 없습니다. SONUB 별점이 있고 무료 체험을 켠 강사의 25분 이하 수업을 예약하면 저절로 적용됩니다. 시작 60분 전까지, 또는 예약한 지 10분 안이면 취소하고 체험을 돌려받습니다.

더 배우기

무료 체험 복구

원문 표기 · Trial recovery

쓴 무료 체험을 다시 받게 되돌리기

무료 체험이 잘 진행되지 않았으면 학생은 수업이 끝나고 96시간 안에 복구를 요청할 수 있습니다. 강사가 정하고, 24시간 안에 답하지 않으면 복구되며, 거절하면 관리자가 정합니다. 복구되면 그 강사에게 다시 무료 체험을 예약할 수 있습니다. 기한 안에 취소해도 복구됩니다.

더 배우기

SONUB 별점

원문 표기 · SONUB rating

관리자만 강사에게 주는 별 1~5개

SONUB 별점은 학생 평가와 따로, SONUB 관리자만 강사에게 주는 별 1~5개입니다. 별 하나마다 표시 점수에 10점이 더해지고, 별점이 있는 강사만 무료 체험을 열 수 있습니다.

분쟁 증거

원문 표기 · Dispute evidence

다툼에 대비해 SONUB 이 남긴 예약 기록

분쟁 증거는 SONUB 이 예약에 대해 남긴 기록입니다 — 합의한 조건, 화상 교실 출석, SONUB 안의 메시지. PDF 로, 원본 기록은 JSON 으로 내려받고 해시로 바뀌지 않았는지 확인합니다. 다른 방·다른 도구의 수업과 SONUB 밖의 대화는 들어가지 않으며, 결제를 증명하지는 않습니다.

소명

원문 표기 · Response to a report

신고받은 쪽이 7일 안에 하는 해명

예약이 신고되면 상대는 7일 안에 자기 입장과 증빙을 내 소명할 수 있습니다. 관리자는 이 기한이 지난 뒤에 근거와 사유를 적어 결정합니다. 신고만으로 문제가 확정되거나 계정이 정지되지는 않습니다.

이의 신청

원문 표기 · Appeal

내려진 결정을 다시 봐 달라는 요청

예약 제한처럼 신고에 대한 관리자의 결정에 동의하지 않으면 이유를 적어 이의 신청을 할 수 있습니다. 이의와 그 결과도 기록에 남습니다. SONUB 은 중립을 지키며 돈에 관해 누가 옳은지는 판정하지 않습니다.

예약 제한

원문 표기 · Booking restriction

확정된 문제 뒤 관리자가 거는 예약 제한

예약 제한은 문제가 확정된 뒤에만 관리자가 겁니다 — 상대가 인정하거나, SONUB 기록에 드러나거나, 서로 다른 3명 이상이 같은 유형으로 신고했을 때입니다. 강사는 제한 상태인 결제자의 예약을 자동으로 거절하게 할 수 있습니다. 당사자는 근거를 통지받고 7일 안에 소명하며 이의 신청을 할 수 있습니다.

평판 형성 중

원문 표기 · Building reputation

평판을 판단할 거래 상대가 아직 적은 상태

SONUB 기록으로 확인된 서로 다른 거래 상대가 3명이 되기 전까지는 평판 형성 중입니다. 학생관리자의 학습자들은 결제자 한 명으로 셉니다. 기록이 적다는 뜻일 뿐 평판이 나쁘다는 뜻이 아닙니다. 강사는 이런 결제자를 받을지 정하고, 학생은 이런 강사를 숨길 수 있습니다.

본인 확인

원문 표기 · Identity verification

관리자가 강사의 신분 서류를 보는 선택 절차

강사는 신분증과 주소 증명(해당하면 3개월 이내)을 내 관리자의 확인을 받을 수 있으며, 예약을 받는 데 꼭 필요하지는 않습니다. SONUB 은 결과만 남기고 원본은 30일 안에 지웁니다. 통과하면 '본인 확인됨'이 보이고 학생이 이것으로 강사를 거를 수 있습니다. 수업의 질이나 결제를 보장하지 않습니다.

더 배우기

태도 평가

원문 표기 · Attitude evaluation

수업이 아니라 상대의 행동을 매기는 평가

수업이 끝나면 학생과 강사는 360시간(15일) 안에 서로의 태도를 −3~+3 으로 매길 수 있습니다 — 예: 매번 늦음, 매우 불손함, 미입금 수업 뒤 수업료 요구. 음수 점수에는 이유가 필요합니다. 평판에는 수업 평가의 2배로 들어가고, 양쪽 점수는 함께 공개됩니다.

수업 평가

원문 표기 · Lesson review

수업이 끝나고 72시간 안에 매기는 평가

수업이 끝나고 72시간(3일) 안에 학생은 강사의 수업을 −3~+3 과 지각·강의·수업 준비로 평가하고, 강사는 학습자의 듣기·말하기·읽기·쓰기를 1~9 로 적습니다. 학생 점수는 강사 프로필에 공개되고, 학습자 피드백은 공개되지 않습니다. 기한이 지나면 누구도 평가할 수 없습니다.

이중 블라인드

원문 표기 · Double-blind reveal

둘 다 내거나 기한이 지나야 보이는 평가

양쪽이 모두 제출하거나 기한이 지나기 전에는 서로의 평가를 볼 수 없습니다 — 수업 평가는 72시간, 태도 평가는 360시간입니다. 상대 평가를 보고 내 평가를 바꾸지 못하게 하려는 것입니다. 내 평가는 공개되기 전까지만 고치거나 지울 수 있습니다.

학습자 레벨

원문 표기 · Learner level

강사 피드백으로 정해지는 영역별 실력 단계

강사는 수업마다 학습자의 듣기·말하기·읽기·쓰기를 1~9 로 매깁니다(1~3 초급, 4~6 중급, 7~9 상급). 첫 평가가 공개된 때부터 영역마다 최근 평가(최대 30개)의 평균을 올림해 레벨로 정합니다. 학습자 본인, 그 학생관리자, 그 학습자의 강사만 봅니다.

세션 레벨

원문 표기 · Session level

한 수업에서 강사가 준 점수의 평균

세션 레벨은 한 수업에서 강사가 준 영역별 점수(1~9)를 모두 더해 항목 수로 나눈 값으로, 소수 그대로 보입니다. 그 한 수업만 나타내며, 여러 수업을 합친 것은 학습자 레벨입니다.

학생관리자

원문 표기 · Student manager

학습자 대신 예약하고 수업료를 내는 사람

학생관리자는 학습자의 수업을 예약하고 수업료를 내고 관리하는 부모·교사·기관입니다(예: 자녀를 맡은 부모). 학습자 한 명은 학생관리자 한 명에게만 속합니다. 결제 기록은 학생관리자의 평판에, 출석과 레벨은 학습자에게 붙습니다. 혼자 공부하는 성인은 학습자이자 자기의 학생관리자입니다.

더 배우기

학습자

원문 표기 · Learner

실제로 수업을 듣는 사람

학습자는 수업을 실제로 듣는 사람이고, 예약과 결제는 학생관리자가 합니다. 학생관리자가 새로 등록하는 학습자는 미성년자를 포함해 언제나 학생 아이디와 함께 만듭니다. 무료 체험·수업 시간 겹침·레벨은 학습자마다 따로 셉니다.

학생 아이디

원문 표기 · Student ID

학생관리자가 학습자에게 만들어 주는 로그인

학생관리자가 이름·아이디·비밀번호를 적으면 SONUB 이 아이디@sonub.com 로그인을 만듭니다. 아이디는 영문 소문자·숫자·.·_·- 로 3~30자이고 영문자나 숫자로 시작하며, 비밀번호는 8자 이상입니다. 학습자는 이것으로 자기 수업을 보고 참여하고 채팅하지만 예약·결제·취소·평가는 하지 못합니다.

더 배우기

방 주소

원문 표기 · Room address

/c/ 로 시작하는 화상 방의 웹 주소

화상 방 주소는 /c/ 로 시작하는 짧은 번호 주소입니다. 수업 방은 /c/booking/강사번호-학생번호/enter 로 강사와 학생 한 쌍마다 하나이고, 회의실은 운영자가 만든 /c/meeting/방번호/enter 입니다. 주소를 아는 사람은 누구나 들어오지만, 출석은 그 예약의 강사와 학습자만 셉니다.

더 배우기

화상 교실

원문 표기 · Video classroom

브라우저에서 여는 SONUB 의 화상 수업 방

화상 교실은 카메라·마이크·화면 공유·전자칠판을 브라우저에서 바로 쓰는 SONUB 의 수업 방으로, 따로 설치할 것이 없습니다. SONUB 서버에 설치한 오픈소스 LiveKit 으로 돌아가며, 서버가 누가 들어오고 나갔는지 기록합니다. 수업 방(강사와 학생 한 쌍의 방)에서 한 수업만 평판과 분쟁 증거에 들어갑니다.

더 배우기

수업 녹화

원문 표기 · Class recording

방 주인의 브라우저에서 수업을 녹화하기

수업은 방 주인의 브라우저에서만 녹화하고, 파일은 그 컴퓨터에만 남습니다. SONUB 은 영상을 저장하지 않으며 분쟁 증거로도 쓰지 않습니다. 녹화는 기본으로 꺼져 있고, 시작하면 방 안의 모두에게 알리고 녹화 표시를 보입니다. 컴퓨터의 Chrome 이나 Edge 를 씁니다.

함께 있던 시간

원문 표기 · Time together

강사와 학습자가 함께 방에 있던 시간

SONUB 은 화상 교실의 입장·퇴장 기록으로 수업 시간 동안 강사와 학습자가 함께 방에 있던 시간을 잽니다. 이 시간이 수업 길이의 90% 이상이어야(50분 수업이면 45분) 올바로 진행된 수업입니다. 결과는 수업이 끝나고 몇 분 뒤에 판정합니다.

성공한 수업

원문 표기 · Successful class

두 사람이 90% 이상 함께한 끝난 수업

성공한 수업은 SONUB 화상 기록에서 강사와 학습자가 수업 길이의 90% 이상 함께 있었던 끝난 수업입니다. 무료 체험도 셉니다. 취소·결석 수업, 분쟁 중인 수업, 다른 화상 도구로 한 수업은 세지 않습니다. 표시 점수·평판 비율·업적에 쓰입니다.

결석

원문 표기 · Absence

수업이 끝날 때까지 한 번도 안 들어온 것

결석은 수업이 끝날 때까지 강사의 방에 한 번도 들어오지 않은 것입니다. 한 번이라도 들어왔으면 지각이고, 늦은 분 수를 기록합니다. 수업이 끝난 뒤 화상 기록으로 판정합니다. 강사 결석은 평판 −3, 학습자 결석(노쇼)은 결제자의 평판에 들어갑니다. 기록이 아예 없으면 판정하지 않습니다.

시간표에 보이지 않는 예약

원문 표기 · Booked classes not on your timetable

시간표에서 지운 칸에 남아 있는 예약

학생이 예약한 뒤 강사가 그 시간 칸을 바꾸거나 지워도 예약은 그대로 남습니다. SONUB 은 이런 예약을 강사의 시간표 화면에만 모아 보여 주어, 진행하거나 취소하게 합니다. 학생과 손님에게는 보이지 않습니다.

더 배우기

class bot

수업 알림을 채팅으로 보내는 읽기 전용 봇

class bot 은 예약 소식을 채팅 메시지로 보내고, 그 메시지가 푸시 알림으로도 옵니다 — 새 예약, 취소와 환불, 다가오는 수업, 평가. 학생과 강사의 일대일 채팅에도 읽기 전용 시스템 메시지를 남깁니다. 봇에게는 답할 수 없고, 강사에게 메시지를 보내는 것만으로는 취소되지 않습니다.

중개

원문 표기 · Intermediary

학생과 강사를 잇기만 하고 거래 당사자가 아님

SONUB 은 강사 소개·예약·화상 교실·기록을 제공하지만, 수업료를 받거나 보관하거나 전달하지 않고 학생과 강사 사이 거래의 당사자도 아닙니다. 분쟁에서는 완전히 중립이며, 돈에 관한 진실은 판정하지 않고 SONUB 기록의 사실과 여러 상대에게서 반복되는 패턴만 봅니다.

더 배우기

수수료 0%

원문 표기 · 0% commission

SONUB 은 수업료에서 떼는 몫이 없음

SONUB 은 강사와 학생에게 수수료나 이용료를 받지 않습니다. 학생은 수업료 전부를 PayPal 로 내고 돈은 강사의 PayPal 비즈니스 계정으로 바로 가므로, 정산을 기다릴 일이 없습니다. PayPal 자체 수수료는 PayPal 규정에 따라 붙을 수 있습니다.

더 배우기

관리 점수

원문 표기 · Management score

학습자 피드백을 기한 안에 쓴 점수

관리 점수는 끝난 수업(무료 체험 포함) 가운데 강사가 72시간 안에 학습자 피드백을 쓴 비율에 10을 곱한 값으로, 0~10점이 표시 점수에 더해집니다. 학습자에게 좋은 점수를 준다고 더 받지 않고, 기한 안에 썼는지만 봅니다.

강사 인증서

원문 표기 · AI teacher certificate

AI 를 가르칠 자격을 주는 3~1급 인증

SONUB 은 AI 강사를 3급부터 1급까지 심사하며, 숫자가 작을수록 높은 급수입니다. AI 를 가르치려면 1급이 필요하고, 영어나 다른 분야는 인증 없이 가르칠 수 있습니다. AI 과정으로 공부한 뒤 화면 전체를 공유하는 화상 면접을 보며, 빠른 답과 작업이 중요합니다. 접수는 아직 열리지 않았습니다.

더 배우기

SONUB 용어 사전

쉘

용어 152개

쉘

원문 표기 · Shell

내가 적은 명령을 읽어 실행해 주는 프로그램

쉘은 터미널 창 뒤에서 일하는 프로그램입니다. 프롬프트를 보여 주고, 내가 적은 줄을 읽어 그 이름의 프로그램을 찾아 실행한 뒤 결과를 보여 줍니다. 가장 흔한 쉘은 bash 와 zsh 이고, 쉘 스크립트는 이 명령들을 파일에 모아 둔 것일 뿐입니다.

더 배우기

bash

가장 널리 쓰이는 쉘(macOS 의 기본은 zsh)

bash 는 리눅스 서버의 표준 쉘이고, 인터넷의 스크립트 대부분이 bash 로 쓰여 있습니다. macOS 는 기본으로 zsh 를 쓰지만 이 과정의 명령은 거의 그대로 돌아갑니다. 스크립트 첫 줄에 #!/bin/bash 를 적으면 어느 쪽에서든 bash 로 실행됩니다.

프롬프트

원문 표기 · Prompt

쉘이 명령을 기다리고 있다는 표시

프롬프트는 줄 맨 앞의 글자로, 보통 $(bash) 나 %(zsh) 로 끝나고 앞에 사용자 이름과 현재 폴더가 붙기도 합니다. 이것이 보이면 쉘이 준비된 것이니 명령 한 줄을 적고 Enter 를 누르면 됩니다. 프롬프트가 > 로 바뀌면 명령이 덜 끝났다고 보는 것이고, 대개 따옴표를 닫지 않은 경우입니다.

명령어

원문 표기 · Command

쉘이 실행하도록 적는 지시 한 줄

명령 한 줄은 보통 세 부분입니다. 명령어 자체(무엇을 할지), 옵션(어떻게 할지 — - 로 시작), 인자(무엇에 할지)입니다. 낱말은 공백으로 나누고, 쉘은 대문자와 소문자를 다른 글자로 봅니다.

옵션

원문 표기 · Option

명령의 동작을 바꾸는 - 로 시작하는 스위치

옵션(플래그)은 대시로 시작합니다. 짧은 글자는 -l 처럼 대시 하나, 긴 이름은 --help 처럼 대시 둘입니다. 짧은 옵션은 붙여 쓸 수 있어 ls -l -a 와 ls -la 는 같습니다. head -n 3 처럼 값을 받는 옵션도 있습니다.

인자

원문 표기 · Argument

명령이 일할 대상

인자는 명령어와 옵션 뒤에 오는 낱말로, 보통 파일 이름·폴더·글입니다. 쉘은 공백에서 인자를 나누므로 공백이 든 이름은 따옴표로 감싸야 합니다. 스크립트와 함수 안에서는 $1, $2 … 가 인자를 담고 $# 가 개수를 셉니다.

경로

원문 표기 · Path

파일이나 폴더의 주소

경로는 거쳐 갈 폴더를 / 로 이어 적은 것입니다. 절대 경로는 뿌리 / 에서 시작해 어디서나 통하고, 상대 경로는 지금 있는 곳에서 시작합니다. . 은 현재 폴더, .. 은 한 단계 위 폴더, ~ 는 홈 폴더입니다.

현재 폴더

원문 표기 · Current folder

쉘이 지금 일하고 있는 폴더

모든 명령은 어떤 폴더 "안에서" 실행되고, 그 폴더를 현재 폴더(작업 디렉토리)라고 합니다. 상대 경로는 여기서 시작하고, 새 파일도 여기에 생깁니다. pwd 가 보여 주고 cd 가 바꾸며, 짧은 이름은 . 입니다.

홈 폴더

원문 표기 · Home folder

나만의 폴더 — ~ 로 적습니다

사용자마다 /home/learner 나 /Users/이름 같은 홈 폴더가 있습니다. 쉘은 이것을 ~ 로 적고, 새 터미널도 여기서 엽니다. 내 문서와 .bashrc 같은 숨김 설정 파일이 이 안에 있고, 아무것도 붙이지 않은 cd 로 언제든 돌아옵니다.

숨김 파일

원문 표기 · Hidden file

이름이 점(.)으로 시작하는 파일

이름이 . 으로 시작하는 파일과 폴더는 그냥 ls 에는 나오지 않습니다. 보통 .bashrc, .zshrc, .gitignore 같은 설정을 담습니다. ls -a 로 보이고, 그 목록의 . 과 .. 은 현재 폴더와 한 단계 위 폴더입니다.

대소문자 구분

원문 표기 · Case-sensitive

대문자와 소문자를 다른 글자로 봅니다

쉘은 대문자와 소문자를 다르게 봅니다. ls 는 되지만 LS 는 안 되고, 리눅스에서 notes.txt 와 Notes.txt 는 서로 다른 파일입니다. macOS 는 보통 파일 이름의 대소문자를 같게 보지만, 명령과 변수는 여전히 구분합니다.

변수

원문 표기 · Variable

값을 담아 두었다가 다시 쓰는 이름

변수는 이름=값 으로 만들되 = 양옆에 공백을 두지 않고, $이름 으로 읽습니다. 읽을 때는 늘 큰따옴표로 감싼 "$이름" 으로 써야 값 속 공백이 흩어지지 않습니다. 이름은 대소문자를 가리고, ${이름} 은 이름이 어디서 끝나는지 정확히 표시합니다.

따옴표

원문 표기 · Quotes

큰따옴표와 작은따옴표가 글을 지키는 방식

큰따옴표는 글을 한 덩어리로 지키면서 변수와 $(명령)은 풀어 주므로, "$name" 이 변수를 읽는 안전한 방법입니다. 작은따옴표는 안의 모든 것을 글자 그대로 두어 '$name' 은 $name 을 그대로 보여 줍니다. 따옴표가 없으면 쉘이 값을 공백에서 쪼개고 * 나 ? 를 파일 이름으로 바꿉니다.

산술 확장

원문 표기 · Arithmetic expansion

$(( )) 로 정수 계산하기

$(( 식 )) 은 계산한 결과를 그 자리에 넣습니다. + - * / 와 나머지 % 를 쓸 수 있고, 안에서는 변수를 $ 없이 써도 됩니다. 정수만 다루므로 7 / 2 는 3 이 되고, 소수는 awk 나 python3 로 계산합니다. (( )) 만 쓰면 ((count++)) 처럼 출력 없이 계산합니다.

명령 치환

원문 표기 · Command substitution

명령의 결과를 다른 명령 안에서 쓰기

$(명령) 은 그 명령을 실행하고 결과를 바로 그 자리에 넣습니다. 그래서 변수에 담거나 문장 속에 넣을 수 있습니다. 공백과 줄바꿈을 지키려면 큰따옴표로 감쌉니다. 옛 형식은 백틱을 쓰지만 $( ) 가 읽기 쉽고 겹쳐 쓸 수도 있습니다.

매개변수 확장

원문 표기 · Parameter expansion

${ } 로 변수의 값을 다듬기

${ } 는 변수를 읽는 것 이상을 합니다. ${name:-기본값} 은 값이 비었을 때 대신 쓸 값, ${#name} 은 길이, ${name^^} 는 대문자, ${path##*/} 는 파일 이름만, ${file%.txt} 는 끝을 뗀 이름을 줍니다. 명령을 따로 부르지 않아도 됩니다.

중괄호 확장

원문 표기 · Brace expansion

{ } 로 비슷한 낱말을 한꺼번에 쓰기

중괄호는 명령이 실행되기 전에 여러 낱말로 펼쳐집니다. {a,b,c} 는 낱말 세 개, {1..5} 는 범위가 되어 mkdir day{1..3} 은 day1, day2, day3 를 만듭니다. 글자만 만들어 내므로 그 파일이 미리 있을 필요가 없습니다.

배열

원문 표기 · Array

값 여러 개를 담는 변수

배열은 이름 하나에 값 여러 개를 담습니다: fruits=(apple banana). ${fruits[0]} 은 하나, "${fruits[@]}" 는 전부, ${#fruits[@]} 는 개수입니다. bash 는 0부터, zsh 는 1부터 셉니다. declare -A 는 숫자 대신 낱말을 열쇠로 쓰는 연관 배열을 만듭니다.

조건문

원문 표기 · Conditional

조건에 따라 실행할 것을 고르기

조건문은 무언가가 참일 때만 명령을 실행합니다. 쉘에서는 if … then … fi 로 쓰고, 갈래가 더 있으면 elif 와 else 를, 값 하나를 여러 모양과 맞춰 볼 때는 case 를 씁니다. 조건도 명령이고, 그 종료 코드가 0 이면 참입니다.

반복문

원문 표기 · Loop

명령을 여러 번 되풀이하기

반복문은 명령을 되풀이합니다. for 는 목록의 항목을 하나씩 돌고, while 은 조건이 참인 동안, until 은 조건이 참이 될 때까지 되풀이합니다. 반복문 덕분에 스크립트는 파일 백 개도 하나처럼 쉽게 처리합니다.

함수

원문 표기 · Function

이름을 붙여 다시 부를 수 있는 명령 묶음

이름() { 명령; } 으로 함수를 만들면, 그다음부터 그 이름을 적는 것만으로 새 명령처럼 실행됩니다. 이름 뒤에 준 값은 $1, $2 … 로, 전부는 $@ 로 받습니다. 안에서만 쓸 변수는 local 로, 종료 코드는 return 으로 돌려줍니다.

스크립트

원문 표기 · Script

위에서 아래로 실행되는 쉘 명령 파일

스크립트는 보통 .sh 로 끝나는 글 파일로, 직접 입력할 명령을 담아 둡니다. bash script.sh 로 실행하거나, 셔뱅 줄을 넣고 chmod +x 를 한 뒤 ./script.sh 로 실행합니다. 되풀이하던 일을 명령 하나로 만들어 주고, AI 도구도 대개 이렇게 일을 자동화합니다.

셔뱅

원문 표기 · Shebang

실행할 프로그램을 고르는 첫 줄 #!

스크립트 첫 줄의 #! 는 이 파일을 어떤 프로그램으로 실행할지 알려 줍니다. bash 는 #!/bin/bash, 파이썬은 #!/usr/bin/env python3 입니다. 파일을 ./script 처럼 바로 실행할 때 쓰이고, macOS 와 리눅스에서 똑같이 동작하게 해 줍니다.

실행 권한

원문 표기 · Executable permission

파일을 프로그램으로 실행해도 된다는 허락

파일마다 주인·그룹·그 밖의 사람에게 읽기(r)·쓰기(w)·실행(x) 권한이 있고, ls -l 이 보여 줍니다. 새로 만든 스크립트는 보통 x 가 없어서 ./script.sh 가 Permission denied 로 실패합니다. chmod +x 로 붙이고, bash script.sh 는 x 없이도 실행됩니다.

종료 코드

원문 표기 · Exit code

명령이 돌려주는 숫자 — 0 이면 성공

모든 명령은 종료 코드를 남기고 끝납니다. 0 은 성공, 그 밖의 숫자는 실패입니다. $? 는 바로 앞 명령의 코드이고, && 는 성공했을 때만, || 는 실패했을 때만 다음 명령을 실행합니다. 그래서 명령 || exit 1 은 스크립트를 안전하게 멈춥니다. if 도 같은 규칙을 씁니다.

파이프

원문 표기 · Pipe

한 명령의 출력을 다른 명령으로 넘기는 |

명령A | 명령B 는 A 의 표준 출력을 B 의 표준 입력에 잇습니다. 그래서 작은 도구들이 한 줄로 조립됩니다. 데이터는 만들어지는 대로 흘러가고, 단계마다 거르거나 정렬하거나 셀 수 있으며 단계는 몇 개든 이을 수 있습니다. 오류 메시지는 2>&1 을 붙이지 않으면 넘어가지 않습니다.

리다이렉션

원문 표기 · Redirection

출력을 파일로 보내거나 파일에서 입력을 받기

> 파일 은 명령의 출력을 파일에 저장하며 원래 내용을 덮어쓰고, >> 파일 은 끝에 이어 붙입니다. < 파일 은 파일을 입력으로 넣습니다. 2> 파일 은 오류 메시지만 저장하고, 2>&1 은 오류를 일반 출력과 같은 곳으로 보냅니다.

표준 입력·출력

원문 표기 · Standard input and output

모든 명령이 가진 세 개의 데이터 흐름

모든 명령에는 흐름이 세 개 있습니다. 읽어 들이는 표준 입력(0), 결과가 나가는 표준 출력(1), 오류 메시지가 나가는 표준 오류(2)입니다. 기본은 입력이 키보드, 두 출력이 화면입니다. 파이프와 리다이렉션이 이 연결을 바꾸고, /dev/null 은 출력을 버리는 쓰레기통입니다.

히어독

원문 표기 · Heredoc

<< 로 여러 줄을 입력으로 넘기기

히어독은 이어지는 줄들을 명령의 입력으로 넘기다가, EOF 같은 닫는 낱말만 있는 줄에서 멈춥니다. 여는 낱말을 <<'EOF' 처럼 따옴표로 감싸면 글이 그대로 넘어가고, 감싸지 않으면 쉘이 먼저 안의 $변수를 바꿉니다. 닫는 낱말은 반드시 줄 맨 앞에 있어야 합니다.

서브쉘

원문 표기 · Subshell

바뀐 것이 돌아오지 않는 자식 쉘

( ) 안의 명령은 따로 떨어진 자식 쉘에서 돕니다. 그 안에서 cd 하거나 변수를 바꿔도 끝나면 사라지므로 잠깐만 바꿀 때 편합니다. 파이프의 각 단계도 서브쉘에서 돌 수 있어서, 파이프로 이은 while 안에서 정한 변수가 밖에서는 비어 있기도 합니다.

글로빙

원문 표기 · Globbing

* 와 ? 를 맞는 파일 이름으로 바꾸기

명령이 실행되기 전에 쉘은 모양 글자를 맞는 파일 이름으로 바꿉니다. * 는 아무 글자들, ? 는 정확히 한 글자, [abc] 는 그중 한 글자입니다. 그래서 rm *.txt 는 여기 있는 .txt 파일을 모두 지웁니다. 따옴표 안에서는 바뀌지 않고, 맞는 것이 없으면 bash 는 모양을 그대로 둡니다.

단어 분리

원문 표기 · Word splitting

따옴표 없는 값이 공백에서 쪼개지는 일

따옴표 없는 $변수를 풀면 쉘이 그 결과를 공백·탭·줄바꿈(IFS 에 든 글자)에서 여러 낱말로 쪼갭니다. 그러면 my file.txt 같은 파일 이름이 인자 두 개가 됩니다. "$var" 로 쓰면 막을 수 있고, 그래서 따옴표가 안전의 첫째 규칙입니다.

정규 표현식

원문 표기 · Regular expression

글을 찾는 모양을 적는 언어

정규 표현식은 찾을 글의 모양을 적습니다. ^ 는 줄의 시작, $ 는 끝, . 은 아무 글자, * 는 앞의 것이 0번 이상, [0-9] 는 숫자 하나입니다. grep·sed·awk 와 [[ =~ ]] 가 모두 씁니다. 둘 다 * 를 쓰지만 글로빙과는 다릅니다.

환경 변수

원문 표기 · Environment variable

실행하는 모든 프로그램에 전해지는 설정

환경 변수는 export 된 변수로, 프로그램들이 물려받습니다. HOME 은 홈 폴더, USER 는 내 이름, PATH 는 명령을 찾아볼 폴더 목록입니다. export 이름=값 으로 만들고, ~/.bashrc 나 ~/.zshrc 에 적어 두면 계속 남습니다. command not found 는 대개 PATH 에 폴더가 빠졌다는 뜻입니다.

백그라운드 작업

원문 표기 · Background job

다른 일을 하는 동안 뒤에서 계속 도는 명령

명령 끝에 & 를 붙이면 뒤에서 실행되고 프롬프트가 바로 돌아옵니다. jobs 는 뒤에서 도는 작업을 보여 주고, fg 는 하나를 앞으로 불러오며, wait 는 모두 끝날 때까지 스크립트를 기다리게 합니다. 느린 작업 여러 개를 나란히 돌릴 수 있습니다.

프로세스 치환

원문 표기 · Process substitution

명령의 결과를 파일처럼 쓰기

<(명령) 은 그 명령을 실행하고 결과를 임시 파일 이름처럼 다른 프로그램에 넘깁니다. 파이프가 아니라 파일 이름을 받는 명령에 쓸 때 편하고, 예를 들어 정렬한 두 목록을 diff 로 비교할 수 있습니다.

Node.js

브라우저 밖에서 자바스크립트를 실행하는 런타임

Node.js 는 자바스크립트를 터미널과 서버에서 실행하게 해 줍니다. 웹 서버, 빌드 도구, 여러 AI 코딩 에이전트를 비롯한 많은 명령줄 도구가 이것으로 돌아갑니다. 설치하면 node 와 npm 명령이 생기고, nvm 을 쓰면 버전을 쉽게 설치하고 바꿉니다.

패키지

원문 표기 · Package

설치해서 다시 쓰는 코드 묶음

패키지는 다른 사람도 다시 쓰도록 누군가 공개한 코드이고, npm 이 node_modules 에 내려받습니다. 프로젝트의 package.json 에는 이름, 스크립트, 그리고 필요한 패키지인 의존성이 적혀 있어서 npm install 한 번이면 어느 컴퓨터에서든 같은 환경을 만듭니다.

이름 있는 파이프(FIFO)

원문 표기 · Named pipe (FIFO)

파일 이름이 붙은 파이프

mkfifo 로 만드는 이름 있는 파이프는 파일처럼 보이지만 아무것도 저장하지 않습니다. 한 명령이 써 넣은 것을 다른 명령이 먼저 들어온 순서대로 읽어 갑니다. 이 화면의 웹 서버 예제처럼 같은 파이프라인에 있지 않은 명령끼리 이을 때 씁니다.

샌드박스 터미널

원문 표기 · Sandbox terminal

이 화면의 안전한 실습 리눅스

이 화면의 터미널은 브라우저 안에서 도는 진짜 리눅스(Alpine + bash)입니다. 내 컴퓨터와 분리되어 있어 무엇을 입력해도 내 기기가 망가지지 않고, 페이지를 새로 고치거나 세션을 초기화하면 깨끗한 처음 상태로 돌아갑니다. 인터넷에 연결되어 있어 apk add·pip install·npm install -g·git clone 으로 무엇이든 설치할 수 있고, 새로 고치면 모두 처음대로 돌아갑니다.

내장 변수

원문 표기 · Built-in variable

쉘이 알아서 채워 두는 변수

bash 는 몇몇 변수를 스스로 최신 값으로 채워 둡니다. $PWD 는 지금 있는 폴더, $HOME 은 홈 폴더, $? 는 바로 앞 명령의 종료 코드, $RANDOM 은 읽을 때마다 새 난수, $1·$2 … 는 스크립트나 함수에 넘어온 인자입니다. 다른 변수처럼 읽어 쓰지만, 값은 보통 직접 넣지 않습니다.

문자열

원문 표기 · String

값으로 쓰는 글자들

프로그래밍에서는 글을 문자열이라고 부릅니다. "hello" 나 "a,b,c" 처럼 글자가 줄지어 있는 값입니다. 쉘 변수는 모두 문자열을 담기 때문에 42 도 산술 계산을 하기 전까지는 글자 4 와 2 일 뿐입니다. 따옴표가 문자열의 시작과 끝을 표시하고, ${#name} 은 길이, ${name:0:2} 는 그 일부(부분 문자열)를 꺼냅니다.

신호(시그널)

원문 표기 · Signal

실행 중인 프로그램에 시스템이 보내는 짧은 알림

신호는 실행 중인 프로그램에 무슨 일이 생겼다고 알립니다. Ctrl+C 는 SIGINT(중단), kill 명령은 SIGTERM(끝내 주세요)을 보내고, 스크립트가 끝나면 bash 가 EXIT 를 냅니다. 프로그램은 곧바로 멈출 수도 있고, trap 으로 신호를 붙잡아 먼저 뒷정리를 할 수도 있습니다. SIGKILL 은 붙잡을 수 없고 프로그램이 그냥 끝납니다.

프로세스

원문 표기 · Child process

실행 중인 프로그램 하나 — 다른 프로그램이 띄우면 자식 프로세스

실행 중인 프로그램은 저마다 번호(프로세스 ID)를 가진 프로세스입니다. 쉘이 명령을 실행하면 새 프로세스, 곧 자식 프로세스를 띄우고 끝날 때까지 기다립니다. 자식은 export 한 변수의 복사본을 받지만, 부모의 변수나 현재 폴더는 바꾸지 못합니다. 그래서 export 가 필요하고, 스크립트 안에서 cd 해도 내 터미널 위치는 그대로입니다.

히어스트링

원문 표기 · Here string

짧은 한 줄 글을 명령의 입력으로 넣기

<<< 는 뒤에 쓴 글을 명령의 입력으로 넘깁니다. 직접 타자로 친 것이나 echo 로 파이프한 것과 같습니다. 히어독의 한 줄짜리 사촌이고, echo 를 따로 띄우지 않아도 됩니다. 쉘이 글 끝에 줄바꿈을 하나 붙입니다.

상위 폴더

원문 표기 · Parent folder

한 단계 위의 폴더, .. 로 적음

상위 폴더는 지금 있는 폴더를 담고 있는 바로 위 폴더입니다. 짧은 이름이 .. 이라서 cd .. 는 한 단계 올라가고, ../notes.txt 는 현재 폴더와 나란히 있는 파일을 가리킵니다. mkdir -p 는 경로 중간에 없는 상위 폴더까지 만들어 줍니다. 뿌리 / 는 위가 없어서 거기서 cd .. 해도 / 에 머뭅니다.

재귀

원문 표기 · Recursive

폴더 안의 폴더까지 끝까지 들어가기

재귀적으로 동작하는 명령은 폴더 하나를 처리한 뒤 그 안의 폴더, 또 그 안의 폴더까지 남김없이 들어갑니다. 옵션은 보통 -r 이나 -R 입니다. ls -R 은 전부 보여 주고, grep -r 은 모든 파일에서 찾고, cp -r 은 폴더째 복사하고, rm -r 은 폴더째 지웁니다. 아래의 모든 것에 닿으므로 rm -r 전에는 경로를 두 번 확인하세요.

덮어쓰기

원문 표기 · Overwrite

있던 파일 내용을 새 내용으로 바꾸기

덮어쓰기는 이미 있는 파일 위에 새로 써서 원래 내용이 영영 사라지는 것입니다. 쉘은 묻지 않고 덮어씁니다. > 파일 은 먼저 파일을 비우고, cp 나 mv 로 같은 이름에 보내면 원래 파일이 바뀝니다. cp·mv 에 -i 를 붙이면 먼저 묻고, >> 는 끝에 이어 붙이며, set -o noclobber 는 > 가 덮어쓰지 못하게 막습니다. 터미널에는 되돌릴 휴지통이 없습니다.

확장

원문 표기 · Expansion

실행 전에 쉘이 $·*·~ 등을 바꿔 쓰기

쉘은 한 줄을 실행하기 전에 특별한 모양을 그 결과로 바꿔 씁니다. 이것이 확장입니다. $name 은 변수의 값, $((2 + 3)) 은 5, $(date) 는 그 명령의 출력, {1..3} 은 1 2 3, *.txt 는 맞는 파일 이름들, ~ 는 홈 폴더가 됩니다. 명령은 다 바뀐 글만 받습니다. 작은따옴표 안에서는 확장이 일어나지 않습니다.

&& 와 ||

원문 표기 · && and ||

성공했을 때만, 또는 실패했을 때만 다음 명령

A && B 는 A 가 성공했을 때(종료 코드 0)만 B 를 실행합니다. A || B 는 A 가 실패했을 때만 B 를 실행합니다. 그래서 if 를 쓰지 않고도 한 줄에서 결과에 따라 갈라집니다. 흔한 오해는 A && B || C 를 if-else 로 읽는 것입니다. B 가 실패해도 C 가 실행됩니다.

변수의 범위(스코프)

원문 표기 · Variable scope

변수가 보이고 바뀔 수 있는 곳

범위는 변수가 살아 있는 구역입니다. 보통 변수는 스크립트 전체에서 보이고 함수 안에서도 보입니다. 함수 안에서 local 을 붙이면 그 변수는 함수의 것이 되어 함수가 끝나면 사라집니다. 서브쉘 ( ) 안에서 바꾼 값은 밖으로 나오지 않고, 다른 프로그램에는 export 한 변수만 전해집니다.

열(칼럼)

원문 표기 · Field

한 줄을 나눈 조각 하나(필드)

awk 와 cut 같은 도구는 줄마다 내용을 조각으로 나눕니다. 이 조각을 열 또는 필드라고 부릅니다. awk 는 기본으로 공백에서 나누고 조각을 $1, $2 … 로 부르며, NF 는 조각 수, $0 은 줄 전체입니다. CSV 파일이면 awk -F, 나 cut -d ',' 로 구분자를 쉼표로 바꿉니다. 번호는 0 이 아니라 1 부터 셉니다.

구분자

원문 표기 · Delimiter

조각이 끝나는 자리를 표시하는 글자

구분자는 글을 조각으로 나누는 기준 글자입니다. CSV 파일의 쉼표, $PATH 의 콜론, 낱말 사이의 공백이 그렇습니다. 도구마다 고를 수 있어서 awk -F, 와 cut -d ',' 는 쉼표에서 나누고, IFS 는 쉘이 낱말을 나누는 글자를 정합니다. sed s/a/b/ 의 / 도 구분자라서, 글에 / 가 있으면 s|a|b| 처럼 다른 글자로 바꿔 씁니다.

주석

원문 표기 · Comment

쉘이 건너뛰는 # 뒤의 메모

주석은 사람이 읽으라고 남기는 메모입니다. 낱말이 # 로 시작하면 쉘은 그 자리부터 줄 끝까지 무시합니다. 스크립트가 왜 그렇게 하는지 적어 둘 때 씁니다. 첫 줄의 #!/bin/bash 는 주석처럼 보이지만 스크립트를 실행할 프로그램을 고르는 셔뱅입니다. 따옴표 안이나 낱말 중간의 # 은 그냥 글자입니다.

확장자

원문 표기 · File extension

파일 이름 마지막 점 뒤의 꼬리(.txt 등)

확장자는 파일 이름에서 마지막 점 뒤의 부분입니다(.txt, .sh, .py, .csv). 사람과 여러 프로그램에게 어떤 종류의 파일인지 알려 줍니다. 리눅스와 macOS 의 쉘에는 꼭 필요하지 않습니다. 스크립트는 이름이 .sh 로 끝나서가 아니라 실행 권한과 셔뱅 덕분에 실행됩니다. photo.png 를 photo.txt 로 바꿔도 안의 내용은 그대로입니다.

탭 자동 완성

원문 표기 · Tab completion

Tab 을 눌러 쉘이 이름을 마저 채우게 하는 것

탭 자동 완성은 명령·파일·폴더 이름을 치다가 Tab 키를 누르는 것입니다. 맞는 이름이 하나뿐이면 쉘이 나머지를 채우고, 여러 개면 Tab 을 두 번 눌러 후보 목록을 봅니다. 덜 치게 되고, 긴 경로의 오타도 막아 줍니다.

미리 돌려 보기(dry run)

원문 표기 · Dry run

실제로 하지 않고 무엇을 할지만 보여 주는 리허설

드라이 런은 명령이나 스크립트를 아무것도 바꾸지 않고 무엇을 할지만 보여 주는 방식으로 실행하는 것입니다. 쉘 반복에서는 진짜 명령 앞에 echo 를 붙이면 되고, --dry-run 옵션을 가진 도구도 많습니다. 파일을 옮기거나 지우는 명령을 확인하는 가장 안전한 방법입니다.

잠금 파일

원문 표기 · Lock file

설치한 패키지의 정확한 버전을 적어 둔 파일

package-lock.json 같은 잠금 파일은 설치된 모든 패키지 — 그 패키지가 필요로 하는 패키지까지 — 의 정확한 버전을 적어 둡니다. 이 파일을 커밋하면 모든 컴퓨터와 자동 빌드가 같은 버전을 설치해서, 프로젝트가 어디서나 똑같이 동작합니다.

REPL

친 줄을 바로바로 실행하는 대화형 프롬프트

REPL(읽기–실행–출력 반복)은 코드 한 줄을 읽어 실행하고 결과를 출력한 뒤 다음 줄을 기다립니다. node 나 python3 만 치면 열립니다. 파일을 만들지 않고 작은 생각을 빠르게 시험하기에 딱 좋습니다.

전역 설치

원문 표기 · Global install

어느 폴더에서나 쓰게 -g 로 설치

npm install -g 는 패키지를 컴퓨터의 공용 자리 한 곳에 설치하고, 명령은 PATH 에 든 폴더에 넣어 어느 폴더에서나 쓰게 합니다. 그냥 npm install 은 그 프로젝트의 node_modules 에만 넣습니다. npm config get prefix 가 전역 설치 위치를 보여 줍니다. -g 가 권한 오류로 실패하면 sudo 대신 nvm 으로 고칩니다. 한 번만 써 볼 도구는 npx 로 설치 없이 실행합니다.

설치 스크립트

원문 표기 · Install script

curl -fsSL 주소 | bash 로 받아 바로 실행하는 설치용 쉘 스크립트

설치 스크립트는 프로그램을 설치하는 명령을 적어 둔 쉘 스크립트(install.sh)입니다. curl -fsSL 주소 | bash 는 curl 이 그 주소의 스크립트를 받아 파이프(|)로 bash 에 넘겨 바로 실행하는 한 줄입니다. 클로드 코드·Bun·uv 가 이렇게 설치합니다. 받은 것을 그대로 실행하므로 공식 문서의 https 주소만 쓰고, 먼저 | head 로 보거나 -o 로 저장해 내용을 읽어 보는 것이 안전합니다.

더 배우기

BRE(기본 정규식 문법)

원문 표기 · Basic grammar (BRE)

grep·sed 가 처음에 쓰는 정규식 문법

BRE(기본 정규 표현식)는 grep·sed 에 아무 옵션도 주지 않았을 때 읽는 정규식 문법입니다. 여기서는 + ? | ( ) { } 가 그냥 글자라서, 기능으로 쓰려면 \+ \| \( \{ 처럼 앞에 역슬래시를 붙여야 합니다. 그래서 grep 'a|b' 는 a 또는 b 가 아니라 a|b 라는 글자를 찾습니다.

확장 문법(ERE)

원문 표기 · Extended grammar (ERE)

-E 로 켜는 정규식 문법

ERE(확장 정규 표현식)는 grep -E·sed -E 로 켜는 정규식 문법입니다. + ? | ( ) { } 를 역슬래시 없이 그대로 기능으로 쓰므로 패턴이 짧고 읽기 쉽습니다. 헷갈리면 늘 -E 를 붙이세요. 다만 ERE 에서도 \d 는 숫자가 아니니 [0-9] 를 씁니다.

펄식 정규식(PCRE)

원문 표기 · Perl-style regex (PCRE)

\d \w \s 같은 줄임 기호가 있는 정규식

PCRE(펄 호환 정규 표현식)는 Perl 언어에서 나온 정규식 문법입니다. \d(숫자)·\w(낱말 글자)·\s(공백) 같은 줄임 기호와 .*? 같은 게으른 반복이 더 있습니다. 파이썬·자바스크립트·PHP·rg 가 이 문법을 쓰고, GNU grep 은 -P 로 켭니다. grep -E 와 sed 는 \d 를 모릅니다.

탐욕적 매칭

원문 표기 · Greedy matching

반복 기호가 할 수 있는 한 길게 잡는 성질

* + {n,m} 같은 반복은 탐욕적입니다. 패턴이 맞는 범위 안에서 가장 긴 글을 잡습니다. 그래서 따옴표 낱말이 둘인 줄에서 ".*" 는 첫 따옴표부터 마지막 따옴표까지 통째로 잡습니다. 일찍 멈추게 하려면 "[^"]*" 처럼 반복할 글자를 좁히거나, PCRE 에서는 게으른 반복 .*? 를 씁니다.

괄호 묶음(그룹)

원문 표기 · Capture group

( ) 로 묶어 잡은 글, 다시 꺼내 쓸 수 있다

괄호 ( ) 는 여러 글자를 한 덩어리로 묶어서 (ab)+ 처럼 ab 를 통째로 반복하게 합니다. 또 묶음이 잡은 글을 기억해 두었다가 다시 꺼내 쓸 수 있습니다. sed 는 \1 \2, bash 는 ${BASH_REMATCH[1]}, 파이썬은 m.group(1) 로 꺼냅니다. 그래서 날짜의 순서를 한 줄로 바꿀 수 있습니다.

이스케이프

원문 표기 · Escape

기호 앞에 \ 를 붙여 그냥 글자로 쓰기

정규식에는 . (아무 글자)이나 * (반복)처럼 특별한 뜻을 가진 글자가 많습니다. 그 글자 자체를 찾으려면 앞에 역슬래시 \ 를 붙여 이스케이프합니다. \. 은 진짜 마침표, \* 는 진짜 별표입니다. IP 주소의 점을 그대로 쓰면 아무 글자에나 맞는 것이 흔한 실수입니다.

BASH_REMATCH

[[ =~ ]] 가 잡은 글을 담는 bash 배열

[[ $값 =~ 패턴 ]] 이 맞으면 bash 는 맞은 글 전체를 ${BASH_REMATCH[0]} 에, ( ) 묶음마다 ${BASH_REMATCH[1]}·${BASH_REMATCH[2]} 에 넣습니다. 다음 =~ 검사가 덮어쓰므로 필요한 값은 바로 내 변수에 옮겨 두세요. macOS 의 기본 쉘 zsh 는 BASH_REMATCH 옵션을 켜지 않으면 $match 에 담습니다.

POSIX 문자 클래스

원문 표기 · POSIX character class

[[:space:]] 처럼 이름을 붙인 글자 모음

POSIX 문자 클래스는 대괄호 안에 이름으로 쓰는 글자 모음입니다. [[:digit:]] 는 숫자, [[:alpha:]] 는 영문자, [[:alnum:]] 은 영문자와 숫자, [[:space:]] 는 공백입니다. \d·\s 와 달리 macOS 를 포함해 어디서나 grep·sed 가 알아듣습니다. 대괄호가 두 겹인 것은 바깥이 목록, 안쪽 [: :] 이 이름이기 때문입니다.

GNU 판과 BSD 판

원문 표기 · GNU and BSD versions

조금씩 다른, 같은 명령의 두 갈래

grep·sed 같은 명령에는 두 갈래가 있습니다. 리눅스에는 GNU 판이 들어 있어 grep -P 같은 기능이 더 있고 sed 도 \s 를 압니다. macOS 에는 BSD 판이 들어 있어 grep -P 가 없고 sed -i 뒤에 '' 를 붙여야 합니다. -E 와 [[:space:]] 같은 POSIX 클래스만 쓰면 양쪽에서 똑같이 동작합니다.

명령 프롬프트(cmd)

원문 표기 · Command Prompt (cmd)

윈도우의 오래된 명령 창

명령 프롬프트(cmd.exe)는 윈도우의 전통적인 명령 창입니다. 명령이 bash 와 달라서 ls 대신 dir, cat 대신 type, grep 대신 findstr 를 씁니다. 정규식 기능이 적어서 윈도우에서 정규식을 쓰려면 PowerShell 이나 WSL 이 낫습니다.

PowerShell

윈도우에 들어 있는 현대식 명령 쉘

PowerShell 은 윈도우에 들어 있는 명령 쉘이자 스크립트 언어입니다. 명령 이름이 Select-String·Get-ChildItem 처럼 동사-명사 모양입니다. .NET 정규식을 써서 \d \w \s 와 ( ) 묶음이 그대로 됩니다. macOS 와 리눅스에서도 돌아갑니다.

WSL(Linux용 Windows 하위 시스템)

원문 표기 · WSL (Windows Subsystem for Linux)

윈도우 안에서 진짜 리눅스를 돌리는 방법

WSL 은 윈도우에서 우분투 같은 진짜 리눅스를 컴퓨터 한 대 더 없이 돌리게 해 줍니다. 그 안에서는 bash 와 GNU grep·sed·awk 를 리눅스와 똑같이 쓰므로, 이 과정의 내용이 그대로 통합니다. PowerShell 에서 wsl --install 로 한 번 설치합니다.

파티션(partition)

디스크 안의 따로 나뉜 구역

파티션은 시스템이 따로 하나의 드라이브처럼 다루는 디스크 안의 구역입니다. 디스크 앞쪽의 파티션 테이블이 구역마다 시작과 끝을 적어 둡니다. 리눅스에서 파티션 이름은 디스크 이름에 번호를 붙인 것(sda1, sda2)이고, 포맷해야 파일을 담을 수 있습니다.

파일 시스템(file system)

디스크가 파일과 폴더를 담아 두는 방식

파일 시스템은 파티션 위에 쓰인 구조로, 파일과 폴더의 이름, 내용이 있는 자리, 주인을 기억합니다. 리눅스는 보통 ext4, USB 메모리는 FAT·exFAT, 윈도우는 NTFS, macOS 는 APFS 를 씁니다. 포맷하면 빈 파일 시스템이 생깁니다.

가상 환경(venv)

원문 표기 · virtual environment

프로젝트 하나만의 파이썬 패키지 모음

가상 환경(venv)은 자기만의 파이썬과 pip 를 가진 폴더라서, 설치한 패키지가 시스템이 아니라 그 안에 들어갑니다. python3 -m venv 로 만들고, source …/bin/activate 로 켜면 프롬프트에 (venv) 가 보이고, deactivate 로 끕니다.

Ctrl+C

지금 돌고 있는 명령을 멈추는 키

Ctrl 을 누른 채 C 를 누르면 돌고 있는 프로그램에 중단 신호(SIGINT)가 가고, 대부분의 프로그램은 멈춘 뒤 프롬프트를 돌려줍니다. 명령이 멈춘 것 같을 때, 서버나 지켜보던 로그를 끝낼 때 씁니다. 이미 한 일을 되돌리지는 않으며, 터미널에서는 글을 복사하는 키가 아닙니다.

더 배우기

Ctrl+D

입력이 끝났다고 알리는 키(EOF)

Ctrl+D 는 키보드를 읽는 프로그램에 입력이 끝났다고 알립니다 — 파일 끝(EOF)에 닿았을 때와 같은 신호입니다. 빈 줄에서 누르면 node·python3 같은 REPL 이 닫히고, 쉘에서는 그 쉘에서 나갑니다. Ctrl+C 처럼 일을 끊는 것이 아니라 입력만 끝냅니다.

Ctrl+Z

쉘에서 돌고 있는 명령을 잠시 멈추는 키

터미널에서 Ctrl+Z 를 누르면 앞에서 돌던 프로그램이 잠시 멈추고 프롬프트가 돌아옵니다. 프로그램이 끝난 것은 아니어서 fg 로 다시 앞으로 데려오거나 bg 로 백그라운드에서 이어 돌릴 수 있습니다. 보통 앱에서는 되돌리기 키이지만 쉘에서는 잠시 멈춤입니다.

Ctrl-L

터미널 화면을 깨끗이 비우는 키

Ctrl-L 을 누르면 터미널 화면이 비워지고 프롬프트가 맨 위로 올라갑니다. clear 명령과 같습니다. 지워지는 것은 없습니다 — 파일·변수·명령 기록은 그대로이고, 대개 위로 올려 예전 결과를 다시 볼 수도 있습니다.

↑ ↓ 키

원문 표기 · ↑ ↓ keys

전에 친 명령을 다시 불러오는 키

쉘은 실행한 명령을 기억합니다. ↑ 를 누르면 바로 전 명령이 입력줄에 다시 나오고, 또 누르면 더 앞의 명령, ↓ 를 누르면 다시 뒤의 명령으로 옵니다. 불러온 명령은 고쳐서 Enter 로 실행할 수 있습니다.

파괴적 명령

원문 표기 · Destructive command

되돌릴 수 없게 지우거나 덮어쓰는 명령

파괴적 명령은 무언가를 지우거나 덮어써서 쉽게 되돌릴 수 없게 만드는 명령입니다 — rm -rf, git reset --hard, git push --force, mkfs 같은 것입니다. 인공지능이 내놓은 명령이라도 하나하나 읽은 뒤 실행하고, ls·git status 같은 안전한 명령으로 대상을 먼저 확인하세요. Git 은 reflog 로 커밋을 되찾을 때도 있지만, rm 으로 지운 파일은 휴지통에 가지 않습니다.

세션

원문 표기 · Session

쉘을 열어서 닫을 때까지 한 번 쓰는 동안

쉘 세션은 터미널을 열거나 접속해 쉘이 켜진 때부터 창을 닫거나 exit 를 칠 때까지입니다. 그동안 만든 변수와 cd 로 옮긴 위치는 그 세션 안에서만 살아 있어서, 새 터미널은 처음 상태로 시작합니다. 모든 세션에서 쓸 설정은 ~/.bashrc 나 ~/.zshrc 에 적습니다. 이 화면의 [세션 초기화]는 실습 리눅스를 버리고 빈 것으로 새로 엽니다.

--version

설치된 도구의 판 번호를 보여 주는 옵션

명령줄 도구는 거의 모두 --version 을 붙이면 판 번호(버전)를 보여 줍니다. 설치한 뒤 가장 빨리 확인하는 방법입니다 — 숫자가 나오면 쉘이 프로그램을 찾은 것이고, command not found 가 나오면 없거나 PATH 에 없는 것입니다. -v·-V 로 줄여 쓰는 도구도 있지만 -v 가 '자세히'인 도구도 있으니 --version 이 안전합니다.

command not found

그 이름의 명령을 찾지 못했다는 쉘 오류

쉘은 PATH 에 적힌 폴더에서만 명령 이름을 찾습니다. 어디에도 없으면 command not found 를 출력합니다(종료 코드 127). 흔한 까닭은 오타, 설치하지 않은 프로그램, 방금 설치해 이 터미널이 아직 모르는 폴더입니다 — 새 터미널을 열고 which·echo $PATH 로 확인하세요. 지금 폴더의 스크립트는 보통 PATH 에 없으므로 앞에 ./ 를 붙입니다.

디렉터리

원문 표기 · Directory

'폴더'의 다른 말

디렉터리는 리눅스와 명령줄에서 폴더를 부르는 말입니다 — 파일과 다른 폴더를 담는 곳입니다. 두 낱말은 같은 뜻이고, 그래서 명령 이름에도 들어 있습니다: pwd 는 print working directory, mkdir 은 make directory 의 줄임말입니다. 디렉터리는 서로 안에 들어가 / 에서 시작하는 나무 하나를 이룹니다.

BEGIN·END

원문 표기 · BEGIN and END

awk 에서 읽기 전·다 읽은 뒤 한 번 도는 블록

awk 에서 BEGIN { … } 블록은 첫 줄을 읽기 전에 한 번, END { … } 블록은 마지막 줄을 읽은 뒤 한 번 돕니다. BEGIN 은 구분자·제목 같은 준비에, END 는 합계·평균 같은 결과에 씁니다. BEGIN 만 있는 프로그램은 입력을 읽지 않으므로 awk 를 계산기로 쓸 수 있습니다.

더 배우기

NF·NR

원문 표기 · NF and NR

awk 의 칸 수·줄 번호 변수

awk 는 줄을 읽을 때마다 두 변수를 채웁니다. NF 는 지금 줄의 칸 수라서 $NF 는 마지막 칸입니다. NR 은 1부터 센 지금 줄의 번호라서, NR > 1 은 머리 줄을 건너뛰고 END 블록의 NR 은 전체 줄 수입니다.

더 배우기

포맷

원문 표기 · Formatting a disk

파티션에 빈 파일 시스템을 새로 깔기

포맷은 파티션에 새 파일 시스템을 쓰는 일입니다 — 파일마다 이름, 내용이 있는 자리, 주인을 기억하는 목록입니다. 포맷하지 않은 파티션에는 파일을 담을 수 없습니다. 리눅스에서는 mkfs(mkfs.ext4·mkfs.vfat)로 포맷합니다. 그 파티션에 있던 것은 모두 사라지므로 lsblk 로 이름부터 확인하세요.

더 배우기

/dev

리눅스가 장치를 파일로 두는 폴더

리눅스는 모든 장치를 /dev 아래의 파일로 보입니다 — 첫 디스크는 /dev/sda, 그 첫 파티션은 /dev/sda1 입니다. 그래서 디스크 명령은 /dev/sda 같은 경로를 받습니다. 하드웨어가 아닌 것도 있습니다: /dev/null 은 들어오는 것을 모두 버립니다. /dev 의 디스크 파일에 바로 쓰면 내용이 망가질 수 있습니다.

더 배우기

장치

원문 표기 · Device

디스크 같은 하드웨어 — 리눅스는 파일로 다룸

장치는 컴퓨터가 다루는 하드웨어입니다 — 디스크, USB 메모리, 터미널 같은 것입니다. 리눅스는 장치마다 /dev 아래에 파일을 하나씩 두어 보통 도구로도 다룰 수 있게 합니다. 디스크는 정해진 크기의 블록 단위로 읽고 쓰는 블록 장치이고, lsblk(list block devices)가 이것을 보여 줍니다. 마운트할 때는 장치가 먼저, 폴더가 나중입니다.

더 배우기

sda

리눅스의 첫 디스크 이름 — sda1 은 첫 파티션

리눅스는 찾은 차례대로 디스크에 sda, sdb, sdc … 라는 이름을 붙이고, 파티션에는 번호를 붙입니다(sda1, sda2). 실습 터미널의 sda 는 비어 있는 128MB 디스크입니다. 실제 컴퓨터에서는 sda 가 시스템이 돌고 있는 디스크일 수 있고, NVMe 디스크는 nvme0n1 같은 다른 이름이니 바꾸기 전에 꼭 lsblk 로 확인하세요.

더 배우기

드라이브 문자(C:·D:)

원문 표기 · Drive letter (C:, D:)

윈도우가 디스크마다 붙이는 글자 이름

윈도우는 디스크나 파티션마다 글자와 쌍점으로 이름을 붙입니다 — 시스템 디스크는 C:, 다른 것은 D: 부터입니다. 글자마다 따로 폴더 나무가 있습니다. 리눅스와 macOS 에는 드라이브 문자가 없습니다: / 에서 시작하는 나무 하나뿐이고, 디스크는 마운트로 그 안의 폴더에 붙입니다.

더 배우기

ext4

리눅스에서 흔히 쓰는 기본 파일 시스템

ext4(fourth extended file system)는 대부분의 리눅스가 기본으로 쓰는 파일 시스템입니다. 리눅스의 주인·권한을 기억하고 저널을 적어 두어, 갑자기 전원이 꺼져도 빨리 복구됩니다. 윈도우·macOS 는 따로 프로그램 없이 읽지 못하므로, 함께 쓰는 USB 메모리에는 FAT 를 씁니다.

더 배우기

FAT

윈도우·macOS·리눅스가 다 읽는 파일 시스템

FAT(File Allocation Table)는 오래되고 단순한 파일 시스템으로, 거의 모든 컴퓨터·카메라·휴대폰이 읽을 수 있어 USB 메모리에 흔히 씁니다. 리눅스는 vfat 라고 불러 mkfs.vfat 로 만듭니다. 리눅스의 주인·권한이 없고, FAT32 는 4GB 보다 큰 파일 하나를 담지 못합니다.

더 배우기

/etc/fstab

켤 때마다 마운트할 디스크를 적는 파일

마운트는 컴퓨터를 다시 켤 때까지만 갑니다. 늘 붙어 있게 하려면 /etc/fstab 에 한 줄을 더합니다 — 무엇을, 어디에, 어떤 파일 시스템으로, 어떤 옵션으로 붙일지입니다. sda1 같은 이름은 바뀔 수 있으니 blkid 의 UUID 를 씁니다. 다시 켜기 전에 sudo mount -a 로 시험하세요 — fstab 이 틀리면 서버가 켜지지 않을 수 있습니다.

더 배우기

루프 장치

원문 표기 · Loop device

보통 파일을 디스크처럼 쓰게 해 주는 장치

루프 장치는 리눅스가 보통 파일을 디스크처럼 다루게 해 줍니다. 원하는 크기의 파일을 만들고 포맷한 뒤 -o loop 로 마운트하면, 리눅스가 그 파일을 /dev/loop0 같은 장치에 연결합니다. 남는 디스크 없이 디스크 명령을 안전하게 연습할 수 있고, 가상 머신의 디스크 이미지나 설치 이미지도 이렇게 엽니다.

더 배우기

/mnt

디스크를 손으로 붙일 때 흔히 쓰는 폴더

/mnt 는 리눅스가 디스크를 잠시 손으로 붙일 때 쓰라고 비워 둔 폴더입니다. 그 안에 /mnt/data 같은 빈 폴더를 만들고 파티션을 마운트하면, 그때부터 /mnt/data 의 파일은 그 디스크에 저장됩니다. USB 메모리처럼 시스템이 스스로 붙이는 디스크는 /media 아래에 보일 때가 많습니다.

더 배우기

마운트

원문 표기 · Mounting

디스크를 폴더에 붙여 쓰는 일

리눅스는 디스크에 C:·D: 같은 글자를 붙이지 않고, 디스크의 파일 시스템을 나무 하나 안의 폴더에 붙입니다. 이것이 마운트이고, 붙인 폴더가 마운트 지점입니다. /dev/sda1 을 /mnt/data 에 마운트하면 /mnt/data 에 저장한 파일은 그 파티션에 들어갑니다. umount 나 다시 켜기 전까지만 가고, /etc/fstab 에 적으면 늘 붙습니다.

더 배우기

gpt·msdos

원문 표기 · gpt and msdos

파티션 테이블의 두 방식 — GPT 와 옛 MBR

디스크에 파티션을 만들려면 먼저 파티션 테이블이 있어야 하고, parted mklabel 이 두 방식 중 하나로 만듭니다. gpt(GUID Partition Table)는 요즘 방식으로 큰 디스크와 많은 파티션을 받습니다. msdos 는 옛 MBR 방식으로 기본 파티션 네 개, 2TB 쯤까지입니다. 새 테이블을 만들면 디스크의 파티션을 모두 잊습니다. 여기의 gpt 는 ChatGPT 의 GPT 와 상관없습니다.

더 배우기

섹터

원문 표기 · Sector

디스크가 읽고 쓰는 가장 작은 칸

디스크는 한 번에 읽고 쓰는 가장 작은 조각인 섹터로 나뉩니다 — 예전부터 512바이트, 요즘 디스크는 4096바이트인 것이 많습니다. 파티션 테이블은 파티션마다 시작과 끝을 섹터 번호로 적으므로 fdisk -l 은 섹터 단위로 보여 줍니다. 파티션을 1MiB 에서 시작하면 디스크의 칸과 줄이 맞습니다.

더 배우기

target is busy

폴더를 쓰는 중이라 마운트를 뗄 수 없다는 답

umount 는 마운트한 폴더를 아직 무언가가 쓰고 있으면 target is busy 라며 거절합니다 — 가장 흔한 것은 내 쉘이 그 폴더 안에 서 있는 경우입니다. cd ~ 로 먼저 나오고, 그 폴더를 쓰는 파일과 프로그램을 닫은 뒤 다시 하세요. 쓰는 도중에 떼면 자료를 잃을 수 있어 umount 가 확인하는 것입니다.

더 배우기

EACCES

파일을 쓸 권한이 없을 때 나는 오류 코드

EACCES(error: access)는 '여기서 그 일을 할 권한이 없다'는 시스템의 오류 코드입니다. npm install -g 가 root 소유의 시스템 폴더에 쓰려 할 때 가장 자주 만납니다. sudo 로 밀어붙이지 말고, nvm 으로 Node 를 설치하거나 npm 의 전역 폴더(prefix)를 홈 폴더로 옮기세요.

더 배우기

externally-managed-environment

시스템 파이썬에 pip 설치를 막는 오류

최근 우분투·데비안 같은 리눅스는 시스템의 파이썬을 시스템 패키지 관리자가 맡는다고 표시해 둡니다. 그러면 가상 환경 밖에서 pip install 을 할 때 externally-managed-environment 로 멈춥니다 — 시스템이 쓰는 프로그램이 망가지지 않게 하려는 것입니다. 해결은 venv 를 만들어 켠 뒤 그 안에 설치하는 것입니다. --break-system-packages 로 억지로 밀면 시스템이 망가질 수 있습니다.

더 배우기

No such file or directory

그런 파일·폴더가 없다는 오류

No such file or directory 는 준 경로가 지금 위치에서 보면 없다는 뜻입니다. 흔한 까닭은 오타, 대소문자 차이(리눅스는 Notes.txt 와 notes.txt 를 다르게 봅니다), 엉뚱한 폴더에서 시작한 상대 경로, 아직 만들지 않은 폴더입니다. pwd 와 ls 로 확인하거나 mkdir -p 로 폴더를 먼저 만드세요.

Git Bash

Git 과 함께 깔리는 윈도우용 bash 터미널

Git Bash 는 Git for Windows 를 설치할 때 함께 깔립니다. bash 쉘을 열어 ls·grep·sed·ssh 같은 리눅스식 명령을 윈도우 파일에 그대로 쓰게 해 줍니다. WSL 보다 가볍지만 진짜 리눅스는 아니어서 리눅스 프로그램이나 패키지를 설치할 수는 없습니다.

역슬래시

원문 표기 · Backslash

뒤 글자의 특별한 뜻을 끄는 \ 기호

쉘에서 글자 앞에 역슬래시를 붙이면 그 글자는 보통 글자가 됩니다 — \$ 는 변수가 아니라 달러 기호이고, \ 는 이름 속 공백을 지킵니다. 줄 맨 끝에 두면 다음 줄을 이 줄에 잇습니다. 정규식에서도 같은 일을 하고(\. 은 진짜 마침표), 큰따옴표 안에서는 $·백틱·"·\ 만 지킵니다.

백틱

원문 표기 · Backtick

명령 치환의 옛 기호 — 지금은 $( ) 를 씀

백틱(대부분의 자판에서 1 왼쪽 키)은 명령의 결과를 줄에 끼우는 옛 방법입니다 — 명령을 백틱 두 개 사이에 두면 $(명령) 과 같습니다. $( ) 를 쓰세요. 역슬래시 없이 겹쳐 쓸 수 있고, 백틱은 작은따옴표와 헷갈리기 쉽습니다. 마크다운에서는 백틱이 코드 표시라는 다른 일을 합니다.

내장 명령

원문 표기 · Shell builtin

cd 처럼 쉘 안에 들어 있는 명령

대부분의 명령은 PATH 의 폴더에 있는 따로 된 프로그램이지만, cd·echo·read·export·set 같은 몇몇은 쉘 자체의 일부입니다. 따로 된 프로그램은 쉘의 위치나 변수를 바꿀 수 없기 때문에 그래야 합니다. type 으로 어느 쪽인지 알 수 있고, 내장 명령의 도움말은 man 이 아니라 help 로 봅니다.

더 배우기

C 스타일 for

원문 표기 · C-style for

시작·조건·증가를 적어 세는 bash 반복

bash 에는 C 언어에서 빌려 온 for 가 하나 더 있습니다: for ((i=1; i<=n; i++)). 세 부분은 시작값, 계속 돌 조건, 한 바퀴 뒤 바꿀 것입니다. 범위의 끝이 변수에 있을 때 쓸모 있습니다 — {1..$n} 은 안 되기 때문입니다. bash 의 기능이라 그냥 sh 에서는 안 됩니다.

더 배우기

기본값

원문 표기 · Default value

변수가 비었을 때 대신 쓸 값 — ${var:-x}

매개변수 확장으로 변수가 비었거나 없을 때 쓸 값을 정할 수 있습니다. ${var:-x} 는 그 순간만 x 를 쓰고, ${var:=x} 는 변수에 x 를 저장까지 하며, ${var:?메시지} 는 그 메시지와 함께 스크립트를 멈춥니다. 콜론이 중요합니다 — 콜론 없이 ${var-x} 로 쓰면 변수가 비었을 때가 아니라 아예 없을 때만 기본값을 씁니다.

더 배우기

방어적 스크립트

원문 표기 · Defensive script

실수가 나도 피해 없이 멈추게 쓴 스크립트

방어적 스크립트는 실수가 날 것을 미리 생각하고, 번지기 전에 멈춥니다. 습관은 이렇습니다 — 맨 위에 set -euo pipefail, 모든 변수는 큰따옴표로, 꼭 있어야 할 값은 ${VAR:?} 로, 도구는 command -v 로 확인, 임시 파일은 trap 으로 정리, - 로 시작할지 모르는 이름 앞에는 --. shellcheck 이 빈틈을 많이 찾아 줍니다.

더 배우기

옵션의 끝(--)

원문 표기 · End of options (--)

-- 뒤는 옵션이 아니라 이름으로 읽게 하는 표시

대시 두 개만 따로 쓰면 '옵션은 여기까지'라는 뜻입니다 — 그 뒤에 오는 것은 - 로 시작하더라도 파일 이름 같은 인자로 읽힙니다. 이것이 없으면 -r 이라는 파일이 옵션으로 읽힐 수 있습니다. 변수에서 오는 이름 앞에는 -- 를 두세요. npm run 도 같은 생각으로 -- 뒤를 스크립트에 넘깁니다.

더 배우기

EOF

파일 끝 — 히어독의 끝 표시로도 씀

EOF 는 end of file, 더 읽을 것이 없는 자리를 뜻합니다. 히어독(<< EOF … EOF)의 EOF 는 끝 표시로 고른 낱말일 뿐이라 다른 낱말도 됩니다 — 닫는 줄에 그 낱말만 정확히 있으면 됩니다. << 'EOF' 처럼 따옴표로 감싸면 안의 $ 와 백틱이 글자 그대로 남습니다. 키보드에서 Ctrl+D 를 누르면 같은 '입력 끝' 신호가 갑니다.

더 배우기

파일 검사

원문 표기 · File tests

-f·-d 처럼 있는지, 무엇인지 묻는 검사

[[ ]] 안에서 대시와 글자 하나는 경로나 값에 대해 묻습니다 — -e 있는가, -f 일반 파일인가, -d 폴더인가, -s 비어 있지 않은가, -r -w -x 읽기·쓰기·실행이 되는가. -z 는 글이 비었는가, -n 은 비지 않았는가를 묻습니다. 망설여지면 변수를 따옴표로 감싸고, '아니다'는 ! 로 씁니다.

더 배우기

서식

원문 표기 · Format string

printf 가 값을 끼워 넣는 틀(%s·%d)

printf 의 첫 인자는 서식입니다 — 보통 글 사이에 뒤의 값들이 채울 자리가 있습니다. %s 는 글, %d 는 정수, %.2f 는 소수 둘째 자리까지의 수이고, %-10s 는 10칸에 왼쪽 정렬, %05d 는 0 으로 채웁니다. printf 는 스스로 줄을 바꾸지 않으니 서식 끝에 \n 을 붙입니다. 자리보다 값이 많으면 서식이 되풀이됩니다.

더 배우기

전역 변수

원문 표기 · Global variable

함수 안팎 어디서나 보이는 변수

bash 에서는 따로 말하지 않으면 모든 변수가 전역입니다 — 함수 안에서 정한 변수가 함수가 끝나도 남고, 스크립트 다른 곳의 같은 이름 변수를 몰래 덮어쓸 수 있습니다. 함수만의 변수는 local 로 정해 안에 가두세요. 'npm 전역 설치'의 전역과는 다른 이야기입니다.

더 배우기

--help

명령의 사용법을 짧게 보여 주는 옵션

대부분의 명령은 --help 를 붙이면 짧은 안내를 보여 줍니다 — 맨 위 사용법 줄이 그 명령의 패턴이고 그 아래에 옵션이 이어집니다. 전체 설명서를 여는 man 보다 빠릅니다. 사용법 줄의 대괄호 [ ] 는 빼도 된다는 뜻, ... 은 여러 개를 줄 수 있다는 뜻입니다. -h 를 쓰는 도구도 있고, 내장 명령은 help 로 봅니다.

더 배우기

-print0

원문 표기 · -print0 and -0

이름을 널 글자로 나눠 공백에도 안전하게

find 는 보통 이름을 한 줄에 하나씩 내고 xargs 는 공백에서 나누므로, my notes.txt 라는 파일은 이름 두 개로 갈라집니다. find -print0 은 이름마다 끝에 널 글자 — 파일 이름에 들어갈 수 없는 유일한 글자 — 를 붙이고, xargs -0 은 거기서만 나눕니다. grep -Z·sort -z 도 같은 일을 합니다.

더 배우기

숫자 비교(-eq·-gt)

원문 표기 · Numeric comparison (-eq, -gt)

검사에서 숫자를 같다·크다·작다로 비교하기

[[ ]] 와 [ ] 에서 숫자는 글자로 비교합니다 — -eq 같다, -ne 다르다, -gt 크다, -ge 크거나 같다, -lt 작다, -le 작거나 같다. < 와 > 는 숫자가 아니라 글의 사전 순서로 비교해서 "9" > "10" 이 참이 됩니다. (( )) 안에서는 숫자에 보통 기호를 써도 됩니다.

더 배우기

2>&1

오류 출력을 보통 출력 쪽으로 합쳐 보내는 기호

모든 명령에는 보통 출력(1)과 오류(2) 두 출구가 있습니다. 2>&1 은 오류를 그 순간 1번이 가리키는 곳으로 보내므로, > log.txt 2>&1 은 둘을 한 파일에 담습니다. 순서가 중요합니다 — 2>&1 > log.txt 는 1번이 아직 화면을 가리킬 때 붙여서 오류가 화면으로 갑니다. bash 에서 &> log.txt 는 줄임 모양이고, >&2 는 메시지를 오류 출력으로 보냅니다.

더 배우기

세미콜론

원문 표기 · Semicolon (;)

앞 명령이 어떻게 끝났든 다음 명령을 이어 실행

세미콜론 ; 은 명령 하나를 끝내 같은 줄에 다음 명령을 쓰게 합니다 — a; b 는 a 를 실행하고, a 가 성공했든 실패했든 b 를 실행합니다. a 가 성공했을 때만 b 를 돌리려면 && 를 씁니다. if …; then … fi 처럼 한 줄로 쓸 때 꼭 필요한 문법도 있습니다.

방어적 옵션(set -euo pipefail)

첫 오류에서 스크립트를 멈추는 안전 옵션

스크립트 맨 위에 set -euo pipefail 을 두면 실수 뒤에 그냥 이어 가지 않고 멈춥니다. -e 는 명령이 실패하면, -u 는 정하지 않은 변수를 쓰면 멈추고, -o pipefail 은 파이프의 마지막뿐 아니라 중간 명령이 실패해도 전체를 실패로 봅니다. 실패해도 되는 명령은 || true 를 붙이지 않으면 거기서 멈춥니다.

더 배우기

하위 명령

원문 표기 · Subcommand

큰 도구의 일 하나를 고르는 둘째 자리 낱말

큰 도구는 여러 일을 이름 하나에 묶고 둘째 낱말로 일을 고릅니다 — npm install, git commit, docker compose up 에서 install·commit·compose up 이 하위 명령입니다. 옵션은 보통 자기가 속한 하위 명령 뒤에 오고, 하위 명령마다 git commit --help 같은 도움말이 따로 있습니다.

특수문자

원문 표기 · Special character

* 나 $ 처럼 따로 뜻이 있는 글자

쉘에게 보통 글자가 아닌 글자가 있습니다 — * ? [ ] 는 파일 이름 패턴, $ 는 변수의 시작, | > < & ; 는 명령을 잇거나 방향을 바꾸고, 따옴표·역슬래시·#·공백은 줄을 읽는 방식을 바꿉니다. 정규식에는 따로 (. * + ? ^ $) 가 있습니다. 보통 글자로 쓰려면 작은따옴표로 감싸거나 앞에 역슬래시를 붙입니다.

/usr

원문 표기 · /usr and /usr/local/bin

설치된 프로그램이 사는 시스템 폴더

시스템에 딸린 프로그램은 /usr 아래에 있고, 명령 자체는 대개 /usr/bin 에 있습니다. 모든 사용자를 위해 직접 설치한 프로그램은 보통 /usr/local/bin 에 갑니다. 이 폴더들은 PATH 에 들어 있어 쉘이 명령을 찾을 수 있고, root 소유라서 쓰려면 sudo 가 필요합니다.

/etc

리눅스의 시스템 설정 파일이 모인 폴더

/etc 에는 시스템 전체와 설치한 서비스의 설정이 보통 글 파일로 있습니다 — /etc/hosts, /etc/fstab, /etc/caddy/Caddyfile 같은 것입니다. 바꾸면 모든 사용자에게 영향이 가므로 root 소유이고 sudo 로 고칩니다. 망가진 설정은 서비스가 켜지지 않게 할 수 있으니 고치기 전에 사본을 남기세요.

/tmp

임시 파일을 두는 시스템 폴더

/tmp 는 모든 사용자와 프로그램이 잠깐 쓸 파일을 두는 폴더입니다. 많은 시스템에서 다시 켜면 비워지므로 남길 작업은 두지 마세요. mktemp 는 /tmp 에 다른 프로그램과 겹치지 않는 이름으로 파일을 만듭니다.

~/.bashrc

원문 표기 · ~/.bashrc and ~/.zshrc

쉘이 켜질 때마다 읽는 설정 파일

새 터미널이 열리면 bash 는 ~/.bashrc 를, zsh(macOS 의 기본)는 ~/.zshrc 를 읽습니다. 여기에 적은 줄 — export PATH=…, 별칭, nvm 설정 — 은 모든 새 세션에 적용됩니다. 파일을 고쳐도 이미 열린 터미널은 그대로이니 source ~/.zshrc 를 치거나 새 터미널을 여세요. 이름이 점으로 시작해 ls -a 로 보입니다.

임시 파일

원문 표기 · Temporary file

일하는 동안만 잠깐 쓰고 지우는 파일

임시 파일은 스크립트가 일하는 동안만 무언가를 담아 둡니다 — 만들다 만 목록, 확인하기 전의 내려받은 파일 같은 것입니다. mktemp 로 만들면 스크립트 두 개가 같은 이름에 쓰지 않고, trap … EXIT 로 지우면 어떻게 끝나든 치워집니다. 프로세스 치환 <( ) 로 임시 파일 없이 끝나는 경우도 많습니다.

.tar.gz

tar 로 묶고 gzip 으로 줄인 파일

.tar.gz 파일은 두 단계로 만듭니다 — tar 가 여러 파일과 폴더를 하나로 묶고, gzip 이 그 파일을 작게 줄입니다. 리눅스에서 소스 코드와 프로그램을 나눠 줄 때 흔히 쓰고, .tgz 도 같은 것입니다. tar 명령 하나로 둘 다 합니다 — -c 만들기, -x 풀기, -z gzip 쓰기, -f 파일 이름.

하위 폴더

원문 표기 · Subfolder

폴더 안에 든 폴더

하위 폴더는 다른 폴더 안에 든 폴더입니다. 그 안에 또 하위 폴더가 있을 수 있어 나무 모양이 됩니다. 많은 명령은 따로 말하지 않으면 준 폴더만 봅니다 — grep·cp·rm 은 -r 을 줘야 내려가고, find 는 스스로 내려가며 -maxdepth 로 막습니다. 한 단계 위는 상위 폴더이고 .. 로 적습니다.

root

원문 표기 · root (administrator)

무엇이든 바꿀 수 있는 관리자 계정

root 는 리눅스·macOS 의 관리자 계정으로, 슈퍼유저(superuser)라고도 합니다. 프로그램 설치, /etc·/usr 에 쓰기, 디스크 포맷처럼 무엇이든 바꿀 수 있습니다. 보통 사용자가 이런 일을 하면 Permission denied 나 must be superuser 가 나오고, sudo 로 명령 하나만 root 권한으로 실행합니다. root 는 시스템을 망가뜨릴 수도 있으니 꼭 필요한 명령에만 씁니다.

루트

원문 표기 · Root folder (/)

폴더 나무의 맨 꼭대기 — / 로 적음

리눅스·macOS 의 모든 파일은 나무 하나에 매달려 있고, 그 맨 위가 루트 폴더이며 / 하나로 적습니다. /home/me/notes.txt 같은 절대 경로는 루트에서 그 파일까지 내려가는 길입니다. 관리자 계정 root 와는 다른 것입니다(그 계정의 홈 폴더 이름은 /root 입니다).

더 배우기

소유자

원문 표기 · Owner

파일을 가진 사용자 — 권한의 첫 기준

모든 파일과 폴더는 사용자 하나(소유자, 주인)와 그룹 하나에 속합니다. ls -l 은 권한 글자 다음에 주인을 보여 주고, 첫 rwx 묶음이 주인에게 적용됩니다. 내가 만든 파일은 내 것이고, 갓 포맷한 디스크나 시스템 폴더는 root 것이라 sudo 로 쓰거나 chown 으로 넘겨받습니다.

권한 글자(rwx)

읽기·쓰기·실행 권한을 나타내는 글자

ls -l 은 줄마다 -rwxr-xr-x 같은 열 글자로 시작합니다. 첫 글자는 종류(- 파일, d 폴더)이고, 이어서 r(읽기)·w(쓰기)·x(실행) 세 글자 묶음이 주인·그룹·나머지 모두 순서로 셋 옵니다. - 는 그 권한이 없다는 뜻입니다. 스크립트를 ./script.sh 로 실행하려면 x 가 있어야 합니다.

패턴

원문 표기 · Pattern

글이나 명령이 따르는 정해진 모양

패턴은 글 하나를 그대로 적는 대신 모양을 적은 것입니다. 쉘에서는 주로 찾을 것의 모양입니다 — *.txt 는 .txt 로 끝나는 모든 이름에, [0-9]{3} 같은 정규식은 숫자 세 개에 맞습니다. 명령에도 패턴이 있습니다 — 명령·옵션·대상의 정해진 순서이고, --help 의 첫 줄이 보여 줍니다.

더 배우기

매칭

원문 표기 · Matching

글이 패턴에 맞는지 맞춰 보는 일

매칭은 글을 패턴과 맞춰 보고 맞는 부분을 찾는 일입니다. 파일 이름 매칭(글로빙)은 이름을 * 와 ? 에 맞춰 보고, 정규식 매칭은 grep·sed·[[ =~ ]]·파이썬 re 로 글을 검사합니다. 맞는 것이 없으면 grep 은 아무것도 출력하지 않고 종료 코드 1 을 돌려주며, 맞지 않은 글로빙은 nullglob 을 켜지 않는 한 적은 그대로 남습니다.

더 배우기

치환

원문 표기 · Substitution (s/find/replace/)

찾은 글을 다른 글로 바꾸기

치환은 글을 찾아 그 자리에 다른 글을 넣는 일입니다. sed 에서는 s/찾을것/바꿀것/ 으로 쓰고, 줄마다 처음 맞는 하나를 바꿉니다. 끝에 g 를 붙이면 모두 바꿉니다. 빗금 대신 아무 글자나 써도 되어 s|/old/path|/new/path| 처럼 쓸 수 있습니다. sed 는 결과를 출력만 하고, 파일 자체는 -i 를 줄 때 바뀝니다.

더 배우기

sed -i

sed 가 파일 자체를 고치는 옵션

-i 가 없으면 sed 는 바꾼 글을 출력만 하고, -i 를 주면 파일을 다시 써서 되돌릴 수 없습니다. -i.bak 은 원본을 파일.bak 으로 먼저 남깁니다. 이 모양은 리눅스(GNU sed)와 macOS(BSD sed)에서 똑같이 통합니다 — macOS 는 뒤에 이름 없는 -i 만 쓰면 오류가 납니다. 먼저 -i 없이 실행해 결과를 확인하세요.

더 배우기

자리를 정하는 기호

원문 표기 · Anchors (^ $)

줄의 시작(^)·끝($)을 뜻하는 정규식 기호

^ 는 줄의 시작, $ 는 줄의 끝에 맞고 글자를 차지하지 않습니다. ^error 는 error 로 시작하는 줄, done$ 는 done 으로 끝나는 줄, ^$ 는 빈 줄을 찾습니다. 대괄호 안의 ^ 는 뜻이 달라서 [^abc] 는 a·b·c 를 뺀 글자 하나입니다.

더 배우기

역참조

원문 표기 · Backreference (\1)

괄호로 잡은 글을 \1 로 다시 부르기

첫 괄호 묶음이 잡은 글은 \1, 둘째는 \2 로 다시 부를 수 있습니다. 패턴 안에서 쓰면 같은 글이 또 나오는 곳을 찾습니다 — 두 번 친 낱말 같은 것입니다. sed 의 바꿀 글에서 쓰면 잡은 글을 결과에 넣어 순서를 바꿀 수 있습니다.

더 배우기

대괄호 묶음([abc])

원문 표기 · Bracket expression ([abc])

괄호 안 글자 중 하나에 맞는 기호

대괄호는 안에 적은 글자 중 정확히 하나에 맞습니다 — [abc] 는 a·b·c 중 하나, [a-z]·[0-9] 는 범위, [^abc] 는 그 글자들을 뺀 하나입니다. 대괄호 전체가 글자 하나를 뜻하므로 숫자 셋은 [0-9]{3} 으로 씁니다. 파일 이름 글로빙도 같은 대괄호를 같은 뜻으로 씁니다.

더 배우기

정규식 플래그(/gm)

원문 표기 · Regex flags (/gm)

정규식 뒤에 붙여 찾는 방식을 바꾸는 글자

이 화면의 정규식 테스트기가 쓰는 자바스크립트에서는 닫는 빗금 뒤의 글자가 찾는 방식을 바꿉니다 — g 는 처음 하나가 아니라 모두, m 은 ^ 와 $ 를 줄마다, i 는 대소문자를 무시합니다. 쉘 도구는 옵션으로 같은 일을 합니다 — 대소문자는 grep -i, 모두 바꾸기는 sed 의 s/…/…/g 끝의 g.

더 배우기

게으른 매칭

원문 표기 · Lazy matching

가능한 한 짧게 잡는 반복(*? +?)

* 나 + 같은 반복은 탐욕적이라 할 수 있는 한 길게 잡습니다. 뒤에 ? 를 붙이면(*?, +?) 게을러져서 패턴이 맞을 수 있는 첫 자리에서 멈춥니다. 게으른 반복은 펄식 정규식(grep -P·perl·파이썬)에만 있고 grep -E·sed 에는 없습니다 — 거기서는 "[^"]*" 처럼 반복할 글자를 좁힙니다.

더 배우기

전방 탐색

원문 표기 · Lookahead (?=…) and \K

앞뒤를 확인만 하고 잡지 않는 기호

전방 탐색 (?=…) 은 뒤에 어떤 글이 오는지 확인하지만 그 글은 잡지 않습니다 — [0-9]+(?=ms) 는 250ms 에서 ms 가 아니라 숫자만 찾습니다. 후방 탐색 (?<=…) 은 앞을 확인합니다. \K 는 '여기까지 잡은 것은 잊어라'는 뜻이라 그 뒤만 출력됩니다. 셋 다 펄식이라 grep -E 가 아니라 grep -P·파이썬에서 씁니다.

더 배우기

=~

bash 에서 값이 정규식에 맞는지 검사

[[ ]] 안에서 값 =~ 패턴 은 값이 정규식(확장 문법)에 맞으면 참입니다. ( ) 로 잡은 글은 BASH_REMATCH 배열에 들어갑니다. 패턴을 따옴표로 감싸지 마세요 — 감싸면 그냥 글자로 비교합니다. 긴 패턴은 re='^[0-9]+$' 처럼 변수에 담고 [[ $v =~ $re ]] 로 씁니다.

더 배우기

이름 붙인 묶음

원문 표기 · Named group

번호 대신 이름으로 꺼내는 괄호 묶음

이름 붙인 묶음은 괄호 묶음에 이름을 주어, 몇 번째인지 세지 않고 이름으로 글을 꺼내게 합니다. 파이썬은 (?P<이름>…) 으로 쓰고 m.group("이름") 으로 읽으며, 펄식 정규식은 (?<이름>…) 도 받습니다. 묶음을 더하거나 옮겨도 긴 패턴을 읽기 쉽게 지켜 줍니다.

더 배우기

반복 기호

원문 표기 · Quantifier ({n,m})

앞 글자가 몇 번 나오는지 정하는 정규식 기호

반복 기호는 바로 앞의 것이 몇 번 되풀이되는지 정합니다 — * 0번 이상, + 1번 이상, ? 0번 또는 1번, {n} 정확히 n번, {n,m} n~m번, {n,} n번 이상. 앞의 글자 하나나 괄호 묶음 하나에만 붙어서 ab{2} 는 abb, (ab){2} 는 abab 입니다. -E 없는 grep·sed 에서는 \{n,m\} 으로 씁니다.

더 배우기

줄임 기호(\d \w \s)

원문 표기 · Shorthand classes (\d \w \s)

숫자·낱말 글자·공백을 줄여 쓴 정규식 기호

\d 는 숫자 하나, \w 는 낱말 글자(영문·숫자·_) 하나, \s 는 공백 하나이고, 대문자 \D \W \S 는 그 반대입니다. 펄식 기호라 grep -P·perl·파이썬은 모두 알지만, grep -E 에서 \d 는 그냥 글자 d 이니 [0-9] 나 [[:digit:]] 를 쓰세요. \w·\s 를 받아 주는 grep 도 있지만 모든 도구가 그렇지는 않습니다.

더 배우기

낱말 경계(\b)

원문 표기 · Word boundary (\b)

낱말의 시작·끝 자리를 뜻하는 정규식 기호

\b 는 낱말이 시작하거나 끝나는 자리에 맞고 글자를 차지하지 않습니다. \bart\b 는 art 는 찾지만 party·start 는 찾지 않습니다. grep -w 는 패턴 전체에 같은 일을 합니다. 파이썬에서는 패턴을 원시 문자열(r"\bart\b")로 쓰세요 — 그냥 문자열의 \b 는 백스페이스 글자입니다.

더 배우기

SONUB 용어 사전

쉘 명령어

용어 134개

pwd

지금 있는 폴더의 전체 경로를 보여 줍니다

pwd 는 print working directory 의 줄임말로, 현재 폴더의 절대 경로를 뿌리 / 부터 보여 줍니다. 파일을 만들거나 옮기거나 지우기 전에 지금 어디 있는지 헷갈리면 먼저 실행해 보세요. 터미널 실수의 대부분은 엉뚱한 폴더에서 일어납니다.

ls

폴더 안의 파일과 폴더를 나열합니다

ls 는 현재 폴더, 또는 뒤에 적은 폴더 안에 무엇이 있는지 보여 줍니다. 옵션으로 보는 방식을 바꿉니다. -l 은 크기·날짜·권한 같은 자세한 정보, -a 는 점으로 시작하는 숨김 파일까지, -h 는 크기를 읽기 쉽게 보여 줍니다. ls -la 처럼 옵션을 붙여 쓸 수 있습니다.

cd

다른 폴더로 옮겨 갑니다

cd 는 change directory 의 줄임말입니다. 폴더 이름을 주면 그 안으로, .. 을 주면 한 단계 위로, ~ 나 아무것도 주지 않으면 홈 폴더로, - 를 주면 방금 있던 곳으로 돌아갑니다. 성공하면 아무것도 출력하지 않으니, 헷갈리면 pwd 로 확인하세요.

echo

글이나 변수의 값을 화면에 출력합니다

echo 는 받은 것을 그대로 출력하고 줄을 바꿉니다. 변수를 확인하거나, 스크립트에서 안내를 보여 주거나, > 와 >> 로 파일에 글을 쓸 때 가장 간단한 방법입니다. 글은 큰따옴표로 감싸야 공백이 지켜지고 변수도 채워집니다.

man

명령의 설명서를 엽니다

man 은 명령에 딸린 설명서를 보여 줍니다. 무엇을 하는지, 모든 옵션, 그리고 예제가 있는 경우가 많습니다. 화살표나 Space 로 넘기고 q 로 나옵니다. 많은 명령은 --help 로 짧은 요약을 보여 주고, help 는 cd 같은 쉘 내장 명령을, clear 는 복잡해진 화면을 지워 줍니다.

read

사용자가 입력한 한 줄을 변수에 담습니다

read 는 사용자가 한 줄을 입력하고 Enter 를 누를 때까지 기다렸다가, 적어 준 변수에 담습니다. 스크립트가 질문을 던지는 방법입니다. -p 는 같은 줄에 질문을 보여 주고, -r 은 역슬래시를 그대로 두므로 기본으로 쓰는 것이 안전합니다.

mkdir

새 폴더를 만듭니다

mkdir 은 폴더를 하나 이상 만듭니다. -p 를 붙이면 경로 중간에 없는 폴더까지 함께 만들고, 이미 있어도 불평하지 않아서 스크립트에서 몇 번을 실행해도 안전합니다.

touch

빈 파일을 만들거나 파일의 시간을 새로 고칩니다

touch 는 그 이름의 파일이 없으면 빈 파일을 만듭니다. 이미 있으면 내용은 그대로 두고 수정 시각만 지금으로 바꿉니다. 글을 쓰기 전에 자리부터 잡아 둘 파일을 빠르게 만들 때 씁니다.

cp

파일이나 폴더를 복사합니다

cp 원본 대상 은 원본을 남기고 복사본을 만듭니다. 대상이 폴더면 그 안에 복사하고, 폴더를 통째로 복사하려면 -r 이 필요합니다. 조심할 점은 같은 이름이 있으면 말없이 덮어쓴다는 것이니, -i 를 붙여 먼저 물어보게 하세요.

mv

파일이나 폴더를 옮기거나 이름을 바꿉니다

mv 원본 대상 은 항목을 옮깁니다. 대상이 같은 폴더의 새 이름이면 이름만 바뀌고, 대상이 폴더면 그 안으로 옮겨 갑니다. cp 와 달리 원본은 남지 않습니다. mv 도 묻지 않고 덮어쓰므로 -i 를 습관으로 들이세요.

rm

파일이나 폴더를 영구히 지웁니다

rm 은 파일을 바로 지웁니다. 되살릴 휴지통이 없습니다. rm -r 은 폴더와 그 안의 모든 것을 지우고, -f 는 묻는 것을 모두 건너뛰므로 rm -rf 는 가장 위험한 일상 명령입니다. 먼저 ls 로 대상을 확인하고, 배우는 동안에는 -i 를 쓰세요.

cat

파일의 내용 전체를 출력합니다

cat 은 파일 하나 또는 여럿의 내용을 처음부터 끝까지 보여 줍니다. 여러 파일을 주면 차례로 이어서 보여 주기 때문에 이름이 이어 붙이기(concatenate)에서 왔습니다. 긴 파일은 head 와 tail 이 보기 편하고, cat 은 파이프라인을 시작할 때도 자주 씁니다.

head

파일의 앞부분 몇 줄을 보여 줍니다

head 는 파일의 처음을 보여 줍니다. 따로 정하지 않으면 10줄이고, -n 으로 줄 수를 정합니다. 큰 파일이나 데이터 파일의 머리 줄을 전부 출력하지 않고 슬쩍 볼 때 편리합니다.

tail

파일의 끝부분 몇 줄을 보여 줍니다

tail 은 파일의 끝을 보여 줍니다. 기본은 마지막 10줄이고 -n 으로 줄 수를 정합니다. -f 를 붙이면 파일을 계속 지켜보며 새로 붙는 줄을 출력하므로, 프로그램이 도는 동안 로그를 따라 읽을 때 씁니다. Ctrl+C 로 멈춥니다.

printf

글을 정해진 형식대로 출력합니다

printf 는 형식 문자열을 따라 글을 출력합니다. %s 는 글, %d 는 정수, %.2f 는 소수 둘째 자리까지의 수를 넣고, \n 은 줄을 바꿉니다. printf 는 줄바꿈을 저절로 붙이지 않기 때문입니다. 출력이 줄을 맞춰야 하거나 모양이 정확해야 할 때 echo 대신 씁니다.

if

조건이 참일 때만 명령을 실행합니다

if 는 조건 명령을 실행하고 그 종료 코드를 봅니다. 0 이면 참이라서 then 뒤의 명령이 실행됩니다. elif 는 조건을 더하고, else 는 나머지 모든 경우를 맡으며, fi 로 닫습니다. 조건은 보통 이중 대괄호 검사로, 숫자는 [[ $n -gt 5 ]], 파일이 있는지는 [[ -f 파일 ]] 처럼 씁니다.

for

목록의 항목마다 명령을 되풀이합니다

for 이름 in 목록; do …; done 은 항목마다 한 번씩 본문을 실행하고, 지금 항목을 변수에 넣어 줍니다. 목록은 낱말, {1..5} 나 seq 가 만든 숫자, *.txt 같은 모양이 찾은 파일 이름, 명령의 결과가 될 수 있습니다. in 은 절대 빼먹지 마세요.

while

조건이 참인 동안 명령을 되풀이합니다

while 조건; do …; done 은 조건이 성공하는 동안 계속 돕니다. 그래서 안에서 언젠가 조건을 실패하게 만들어야 하고, 아니면 끝없이 돕니다(Ctrl+C 로 멈춤). until 은 반대로 조건이 참이 될 때까지 되풀이합니다. while read -r line 은 파일을 한 줄씩 읽는 기본 방법입니다.

case

값을 여러 모양과 맞춰 보고 한 갈래를 고릅니다

case 값 in 모양) 명령 ;; … esac 은 값 하나를 여러 모양과 비교해 처음 맞는 갈래를 실행합니다. 모양에는 *.jpg 같은 와일드카드를 쓸 수 있고, | 로 여러 모양을 묶으며, 마지막 *) 가 나머지를 모두 받습니다. 긴 if·elif 사슬보다 읽기 쉽습니다.

seq

숫자를 차례로 출력합니다

seq 는 숫자를 한 줄에 하나씩 출력합니다. seq 5 는 1부터 5까지, seq 2 5 는 2부터, seq 0 10 50 은 10씩 건너뜁니다. 주로 for i in $(seq 1 20) 처럼 for 반복문에 숫자를 대 줍니다. 중괄호 {1..20} 도 명령 없이 같은 일을 합니다.

chmod

파일을 누가 읽고 쓰고 실행할지 바꿉니다

chmod 는 파일의 권한을 바꿉니다. 가장 흔한 쓰임은 chmod +x script.sh 로, 스크립트에 실행 권한을 주어 ./script.sh 로 실행되게 합니다. 이것이 없으면 Permission denied 가 나옵니다. 755 나 644 같은 숫자는 주인·그룹·그 밖의 사람의 읽기·쓰기·실행을 한 번에 정합니다.

source

스크립트를 지금 쉘 안에서 실행합니다

source 파일(짧게 . 파일)은 파일의 명령을 새 쉘이 아니라 지금 쉘에서 실행합니다. 그래서 거기서 정한 변수·함수·PATH 변경이 끝난 뒤에도 그대로 남습니다. ~/.bashrc 나 ~/.zshrc 를 고친 뒤 설정을 다시 읽을 때 씁니다.

getopts

스크립트에서 -v 나 -o 이름 같은 짧은 옵션을 읽습니다

getopts 는 while 반복문 안에서 스크립트의 짧은 옵션을 하나씩 읽습니다. 옵션 문자열에 받을 글자를 적고, 글자 뒤의 콜론은 그 옵션이 값을 받는다는 뜻이며 값은 $OPTARG 로 들어옵니다. $1, $2 를 손으로 뜯어볼 필요가 없어집니다.

grep

낱말이나 모양이 든 줄을 찾습니다

grep 모양 파일 은 맞는 줄만 출력합니다. -i 는 대소문자를 무시하고, -n 은 줄 번호를, -r 은 폴더 안의 모든 파일을 찾고, -v 는 맞지 않는 줄을, -c 는 개수를 보여 줍니다. 모양에는 정규 표현식을 쓸 수 있고, 맞는 것이 없으면 아무것도 출력하지 않습니다.

sed

흐르는 글이나 파일에서 찾아 바꿉니다

sed(스트림 편집기)는 글을 한 줄씩 고칩니다. s/옛것/새것/ 은 줄마다 처음 맞는 것만, s/옛것/새것/g 는 맞는 것 모두를 바꿉니다. -n 과 p 를 함께 쓰면 고른 줄만 출력하고, -i 는 파일 자체를 고칩니다. -i.bak 은 백업을 남기고 macOS 에서도 됩니다. -i 없이 먼저 확인해 보세요.

awk

글을 열로 나눠 다루는 표 전용 작은 언어

awk 는 줄마다 칸을 나눕니다. $1 은 첫째 열, $2 는 둘째 열, $0 은 줄 전체, NF 는 칸 수, NR 은 줄 번호입니다. 프로그램은 모양 { 동작 } 꼴이고, BEGIN 과 END 는 첫 줄 전과 마지막 줄 뒤에 실행되어 합계와 평균을 한 줄로 냅니다. 프로그램은 늘 작은따옴표로 감쌉니다.

sort

줄을 가나다순이나 숫자순으로 정렬합니다

sort 는 기본으로 줄을 사전 순으로 늘어놓습니다. -n 은 숫자를 값 크기대로 정렬해 10 이 9 뒤에 오게 하고, -r 은 거꾸로, -u 는 중복을 빼며, -k 는 기준 열을 고릅니다. 파이프라인에서 uniq·head 와 자주 함께 씁니다.

uniq

나란히 붙은 같은 줄을 하나로 합칩니다

uniq 는 같은 줄을 지우지만, 바로 붙어 있을 때만 그렇습니다. 그래서 거의 늘 sort 뒤에 씁니다. -c 는 줄 앞에 되풀이된 횟수를 붙여 주므로 sort | uniq -c 가 간단한 집계기가 됩니다.

wc

줄·낱말·글자 수를 셉니다

wc 는 word count 의 줄임말입니다. 그냥 쓰면 파일의 줄 수·낱말 수·바이트 수를 보여 주고, -l 은 줄만, -w 는 낱말만, -c 는 바이트만 셉니다. 다른 명령 뒤에 파이프로 이은 wc -l 은 파일이 몇 개인지, 맞는 줄이 몇 개인지처럼 "몇 개?"에 답합니다.

cut

줄마다 원하는 열이나 글자만 잘라 냅니다

cut 은 줄마다 요청한 부분만 남깁니다. -d 는 구분자, -f 는 칸 번호를 고르므로 cut -d, -f2 는 CSV 파일의 둘째 열입니다. -c 는 대신 글자 위치를 고릅니다. 더 복잡한 표는 awk 가 더 유연합니다.

xargs

입력 줄을 다른 명령의 인자로 바꿔 줍니다

rm 이나 mkdir 같은 명령은 표준 입력을 읽지 않고 인자를 받아야 합니다. xargs 는 파이프로 들어온 항목을 읽어 명령의 인자로 넘겨 줍니다. -n 1 은 항목마다 명령을 한 번씩 실행하고, -0 은 이름에 공백이 있을 때 find -print0 과 안전하게 짝을 이룹니다.

find

폴더 속 파일과 폴더를 이름·종류·크기·날짜로 찾습니다

find 는 시작한 폴더와 그 아래 모든 하위 폴더를 돌며, 조건에 맞는 파일과 폴더의 경로를 한 줄에 하나씩 보여 줍니다. 골격은 find 어디서 조건 동작 입니다. -name "*.txt" 는 이름으로(무늬는 따옴표로 감쌉니다), -type f 는 파일만, -type d 는 폴더만, -size·-mtime 은 크기·고친 날짜로 고르고, -exec 명령 {} \; 는 찾은 것마다 명령을 실행합니다. 파일 속 글자를 찾는 grep 과 달리 find 는 파일 자체를 찾습니다.

rg

grep 처럼 찾는 빠른 검색 도구 ripgrep

rg 는 기본으로 폴더 전체를 찾고 .gitignore 에 적힌 파일은 건너뛰어 큰 프로젝트에서 빠릅니다. 기본 꼴 rg 모양 은 grep -r 처럼 동작하지만 옵션이 다른 것도 있으니 grep 부터 익히세요. 이 화면의 실습 터미널에는 없으니 내 컴퓨터에 설치해 써 보세요.

tee

출력을 화면에 보이면서 파일에도 저장합니다

tee 는 파이프 가운데에 끼어 흘러가는 내용을 화면이나 다음 명령으로 그대로 넘기면서 파일에도 한 부 적습니다. 기본은 파일을 덮어쓰고, -a 는 이어 붙입니다. 결과를 눈으로 보면서 로그도 남길 때 편리합니다.

cron

정해진 시각에 명령을 저절로 실행합니다

cron 은 정해 둔 시각에 명령을 실행합니다. crontab -e 로 일정을 열면 한 줄에 시간 칸 다섯 개(분, 시, 날짜, 월, 요일)와 명령을 적고, * 는 "매"라는 뜻입니다. cron 은 다른 폴더에서 최소한의 PATH 로 시작하므로 절대 경로를 쓰세요.

trap

스크립트가 끝나거나 멈출 때 정리 코드를 실행합니다

trap '명령' 신호 는 스크립트가 그 신호를 받으면 명령을 실행합니다. trap … EXIT 는 오류로 끝나더라도 스크립트가 끝날 때마다 실행되어 임시 파일을 반드시 지워 주고, INT 는 Ctrl+C 를 잡습니다.

set

쉘의 안전 옵션을 켜고 끕니다

set 은 쉘이 동작하는 방식을 바꿉니다. -e 는 처음 실패한 명령에서 스크립트를 멈추고, -u 는 정의되지 않은 변수를 오류로 보며, -o pipefail 은 파이프의 한 단계라도 실패하면 전체를 실패로 봅니다. 스크립트 맨 위의 set -euo pipefail 이 이 셋을 켭니다. -x 는 실행하는 명령을 하나씩 보여 주어 문제를 찾을 때 좋습니다.

node

브라우저 밖에서 자바스크립트를 실행합니다

node 는 Node.js 의 명령입니다. node -v 는 설치된 버전을, node app.js 는 파일을, node -e 는 한 줄 프로그램을 실행합니다. 아무것도 붙이지 않으면 대화형 프롬프트가 열리고 .exit 로 나옵니다. command not found 가 나오면 Node.js 가 설치되지 않았거나 PATH 에 없는 것입니다.

npm

Node.js 프로젝트의 패키지를 설치하고 스크립트를 실행합니다

npm 은 Node.js 와 함께 설치됩니다. npm install 은 package.json 을 읽어 의존성을 node_modules 에 내려받고, npm install 이름 은 새 패키지를 더하며, npm run 이름 은 package.json 에 적힌 스크립트를 실행합니다. -g 는 도구를 전역에 설치해 어디서나 쓰게 하는데, 권한 오류가 나면 sudo 대신 nvm 으로 고치세요.

npx

패키지의 명령을 설치하지 않고 한 번 실행합니다

npx 는 npm 패키지에 든 명령을 실행합니다. 프로젝트에 이미 있으면 그것을 쓰고, 없으면 잠시 내려받아 씁니다. 한 번만 쓸 도구나, 전역에 설치하고 싶지 않은 프로젝트 시작 도구에 알맞습니다.

nvm

Node.js 버전을 설치하고 바꿔 씁니다

nvm(Node Version Manager)은 Node.js 를 홈 폴더 안에 설치하므로 npm 전역 설치에 sudo 가 필요 없습니다. nvm install --lts 는 장기 지원 버전을, nvm use 는 지금 터미널의 버전을 바꾸고, nvm ls 는 설치된 버전을 보여 줍니다.

curl

터미널에서 웹 요청을 보냅니다

curl 은 URL 에서 받아 온 응답을 출력합니다. -o 는 파일로 저장하고, -I 는 헤더만 보이며, -L 은 넘겨주기를 따라가고, -fsSL 은 설치 명령이 쓰는 조용한 조합입니다. curl … | bash 는 받은 스크립트를 곧바로 실행하므로 공식적이고 믿을 수 있는 주소에서만 쓰세요.

python3

쉘에서 파이썬 프로그램을 실행합니다

python3 파일.py 는 파이썬 파일을, python3 -c "코드" 는 한 줄을 실행합니다. python3 - <<'PY' 처럼 히어독을 쓰면 여러 줄 프로그램을 표준 입력으로 파이썬에 넘깁니다. python3 만 적으면 대화형 프롬프트가 열리고 exit() 로 나옵니다. 언제 파이썬을 부를지는 쉘이 정하고, 계산과 데이터 일은 파이썬이 맡습니다.

더 배우기

jq

JSON 데이터에서 값을 골라냅니다

jq 는 JSON 을 읽어 작은 필터 언어로 일부를 뽑거나 모양을 바꿉니다. . 은 입력 전체, .name 은 칸 하나, .[] 는 배열의 모든 항목이고, -r 은 따옴표 없이 글자만 출력합니다. curl 로 받은 API 응답을 읽을 때 잘 어울립니다.

shellcheck

실행하기 전에 쉘 스크립트의 버그를 찾습니다

shellcheck 는 스크립트를 읽고 흔한 실수를 알려 줍니다. 빠진 따옴표, 쓰지 않는 변수, 잘못된 검사 문법 등 많은 것을 잡습니다. 경고마다 SC2086 같은 번호가 있고, 그 번호의 설명 쪽에서 고치는 법을 볼 수 있습니다. 모든 스크립트에 돌려 보는 것이 가장 좋은 안전 습관 중 하나입니다.

firebase

프로젝트를 배포하는 Firebase 의 명령줄 도구

npm install -g firebase-tools 로 설치하는 Firebase CLI 가 firebase 명령을 줍니다. firebase login 은 계정을 잇고, firebase init 은 프로젝트 폴더를 준비하며, firebase deploy 는 배포합니다. 설치가 되었는지는 firebase --version 으로 확인합니다.

mkfifo

이름 있는 파이프(FIFO)를 만듭니다

mkfifo 는 이름이 붙은 파이프처럼 동작하는 특별한 파일을 만듭니다. 한 명령이 써 넣으면 다른 명령이 먼저 들어온 순서대로 읽어 가고, 디스크에는 아무것도 남지 않습니다. 웹 서버 예제는 이것으로 nc 와 응답 함수 사이에 데이터를 주고받습니다.

nc

netcat — 네트워크 연결을 날것 그대로 엽니다

nc 는 네트워크 연결로 데이터를 읽고 씁니다. nc -l 8084 는 8084 포트를 열고 손님을 기다리며, 웹 서버 예제가 브라우저의 요청을 받는 방법입니다. nc 호스트 포트 는 다른 컴퓨터에 연결합니다. 옵션의 세부는 판마다 조금씩 다릅니다.

sudo

명령 하나를 관리자 권한으로 실행합니다

sudo 는 비밀번호를 물은 뒤 명령 하나를 관리자(root) 권한으로 실행합니다. 시스템 전체를 바꿀 때 필요하지만 안전 장치도 건너뛰므로, 오류를 없애려고 무작정 붙이면 안 됩니다. 예를 들어 npm 전역 설치 오류는 sudo 보다 nvm 으로 고치는 것이 낫습니다.

declare

변수에 형식이나 규칙을 붙입니다

declare 는 성질을 더한 변수를 만듭니다. -i 는 정수라서 += 가 계산이 되고, -a 는 배열, -A 는 연관 배열, -u·-l 은 늘 대문자·소문자로, -r(또는 readonly 명령)은 바꿀 수 없는 상수를 만듭니다. 함수 안에서는 declare 와 local 모두 그 변수를 함수 안에만 둡니다.

bc

소수까지 계산하는 계산기

bash 의 산술 $(( )) 는 정수만 다룹니다. $(( 10 / 3 )) 은 3 입니다. bc 는 입력으로 받은 식을 계산해 답을 출력하는 계산기 프로그램이고, scale= 로 소수 몇째 자리까지 남길지 정합니다. echo 와 파이프로 식을 넘깁니다.

basename

경로에서 파일 이름만 꺼냅니다(dirname 은 폴더 부분)

basename /usr/local/bin/run.sh 는 run.sh 를 출력하고, basename run.sh .sh 는 확장자까지 떼어 냅니다. 짝꿍 dirname 은 폴더 부분인 /usr/local/bin 을 출력합니다. bash 안에서는 파라미터 확장 ${path##*/}·${path%/*} 가 명령을 띄우지 않고 같은 일을 합니다.

shopt

bash 의 추가 옵션을 켜고 끕니다

shopt -s 는 bash 옵션을 켜고, shopt -u 는 끕니다. globstar 는 ** 가 몇 단계 아래 폴더까지든 맞게 하고, nullglob 은 맞는 파일이 없는 패턴을 글자 그대로 두지 않고 없애며, nocaseglob 은 파일 이름을 맞출 때 대소문자를 무시합니다. shopt 만 치면 모든 옵션이 켜짐·꺼짐과 함께 나옵니다.

perl

Perl 코드를 실행합니다 — 줄마다 정규식 쓰기에 편합니다

perl 은 Perl 언어로 쓴 프로그램을 실행하며, macOS 와 대부분의 리눅스에 처음부터 있습니다. perl -ne·perl -pe 로 줄마다 펄식 정규식(\d \w \s, 게으른 .*?)을 쓸 수 있어서, macOS 처럼 grep -P 가 없는 곳에서도 됩니다. -i 는 파일을 바로 고칩니다.

findstr

윈도우 명령 프롬프트에서 글을 찾습니다

findstr 는 명령 프롬프트의 찾기 명령으로 grep 과 비슷합니다. /R 을 주면 작은 정규식을 씁니다. . * ^ $ [ ] 는 되지만 + ? | 와 ( ) 묶음은 안 됩니다. /I 는 대소문자를 무시하고 /N 은 줄 번호를 보입니다. 윈도우에서 정규식을 제대로 쓰려면 PowerShell 의 Select-String 을 씁니다.

Select-String

PowerShell 에서 패턴에 맞는 줄을 찾습니다

Select-String 은 PowerShell 의 grep 입니다. 파일이나 파이프로 받은 글에서 .NET 정규식에 맞는 줄을 보여 주므로 \d \w \s 가 그대로 됩니다. 처음에는 대소문자를 가리지 않으며, -CaseSensitive 를 붙이면 가립니다. -AllMatches 는 한 줄의 맞는 곳을 모두 찾습니다.

lsblk

디스크와 그 파티션을 보입니다

lsblk(list block devices)는 모든 디스크와 파티션을 크기·종류, 그리고 마운트돼 있으면 붙은 폴더와 함께 나무 모양으로 보입니다. 아무것도 바꾸지 않으므로 파티션을 나누거나 포맷하거나 마운트하기 전의 안전한 첫 단계입니다.

parted

디스크의 파티션을 만들고 바꿉니다

parted 는 디스크의 파티션 테이블을 씁니다. mklabel 은 비어 있는 새 테이블(msdos 또는 gpt)을 만들고, mkpart 는 1MiB 에서 100% 처럼 한 곳에서 다른 곳까지 파티션을 더합니다. -s 는 묻지 않고 실행합니다. 디스크를 바로 바꾸므로 먼저 lsblk 로 장치 이름을 확인하세요.

mkfs

파티션을 파일 시스템으로 포맷합니다

mkfs 는 파티션에 빈 파일 시스템을 만들고, 점 뒤의 이름이 종류를 고릅니다 — 리눅스용 mkfs.ext4, 윈도우·macOS 도 읽는 USB 메모리용 mkfs.vfat. 포맷하면 그 파티션에 있던 것은 모두 지워집니다.

mount

디스크를 폴더에 붙입니다

mount 는 파티션의 파일 시스템을 폴더(마운트 지점)에 붙여, 그 폴더에 저장한 파일이 그 디스크로 가게 합니다. 아무것도 주지 않으면 붙어 있는 목록을 보입니다. umount 는 다시 뗍니다 — 먼저 그 폴더에서 나오지 않으면 target is busy 라고 답합니다.

df

디스크마다 남은 자리를 보입니다

df(disk free)는 마운트된 파일 시스템마다 크기·쓴 자리·남은 자리와 붙은 곳을 보입니다. -h 는 105M · 2.3G 처럼 사람이 읽는 크기로 보이고, 폴더를 주면 그 폴더가 있는 디스크만 보입니다.

apk

알파인 리눅스의 패키지 관리자

apk 는 알파인 리눅스에서 프로그램을 설치·업데이트·삭제하고, 프로그램과 그것이 필요한 것을 알파인 패키지 저장소에서 받아 옵니다. apk add 는 설치, apk del 은 삭제, apk search 는 찾기입니다. 다른 시스템에는 각자의 것이 있습니다 — 우분투·데비안은 apt, 페도라는 dnf, macOS 는 brew.

pip

파이썬의 패키지 설치 도구

pip 는 PyPI 에서 파이썬 라이브러리를 내려받아 설치합니다. 요즘 리눅스는 시스템의 파이썬을 보호해서, 가상 환경 밖에서는 pip install 이 externally-managed-environment 로 멈추거나 pip 가 아예 없습니다 — 먼저 venv 를 만들고 그 안의 pip 를 쓰세요.

gsub

awk 에서 한 줄의 모든 곳을 찾아 바꾸는 함수

gsub(/패턴/, "새 글") 은 지금 줄에서 정규식에 맞는 곳을 모두 바꿉니다. 셋째 인자를 주면 $3 같은 한 칸에서만 바꿉니다. 짝인 sub 는 처음 맞는 하나만 바꿉니다. gsub 는 바꾸기만 하고 출력하지 않으므로 print 로 봅니다.

더 배우기

caddy reload

돌고 있는 Caddy 가 바뀐 설정을 끄지 않고 다시 읽게 하기

caddy reload 는 이미 돌고 있는 Caddy 서버에게 Caddyfile 을 다시 읽어 새 설정으로 바꾸라고 알립니다. 설정을 바꾸는 동안에도 계속 응답하므로 방문자의 연결이 끊기지 않습니다. 새 파일에 잘못이 있으면 Caddy 가 받아들이지 않고 옛 설정을 그대로 쓰니, 먼저 caddy validate 로 검사합니다.

더 배우기

kill

실행 중인 프로세스에 신호를 보내 보통 끝내게 합니다

kill 은 번호(PID)로 고른 프로세스에 신호를 보냅니다. 옵션 없이 쓰면 "정리하고 끝내 달라"는 TERM 을 보내고, kill -9 는 정리할 틈 없이 바로 끝내는 KILL 을 보내므로 TERM 이 듣지 않을 때만 씁니다. 번호는 jobs·ps 나 & 로 띄운 명령의 출력에서 찾습니다.

npm run

package.json 에 적힌 스크립트를 실행합니다

npm run <이름> 은 package.json 의 "scripts" 칸에 그 이름으로 적어 둔 명령을 실행합니다. 그래서 팀 모두가 같은 방법으로 프로젝트를 켜고, 빌드하고, 테스트합니다. 보통 npm run dev 는 개발용 서버를 켜고 npm run build 는 완성된 파일을 만듭니다. npm run 만 치면 그 프로젝트에 있는 스크립트 목록이 나옵니다.

rsync

바뀐 파일만 골라 다른 곳·다른 컴퓨터로 복사합니다

rsync 는 폴더를 다른 폴더나, SSH 를 거쳐 다른 컴퓨터로 복사합니다. 두 번째부터는 양쪽을 비교해 바뀐 파일만 보내므로 웹사이트를 고쳐 올릴 때 빠릅니다. 원본 경로 끝의 / 가 중요합니다 — site/ 는 폴더 안의 것을, site 는 폴더 자체를 복사합니다.

더 배우기

sleep

정한 초만큼 기다렸다가 넘어갑니다

sleep 은 준 시간 동안 아무것도 하지 않다가 끝나므로, 다음 명령이 그만큼 늦게 돕니다. 스크립트에서 다시 시도하기 전에 기다리거나, (printf ...; sleep 1) | nc 처럼 연결을 잠깐 열어 둘 때 씁니다. 숫자는 초이고, 리눅스의 GNU sleep 은 2m 같은 단위도 받습니다.

tr

흐르는 글에서 글자를 바꾸거나 지웁니다

tr 은 표준 입력으로 받은 글을 글자 하나씩 바꿉니다 — 한 묶음의 글자를 다른 묶음의 같은 자리 글자로 바꾸거나, -d 로 지웁니다. 낱말이 아니라 글자 단위로 일하므로 낱말을 바꿀 때는 sed 를 씁니다. tr -d '\r' 은 윈도우 파일과 HTTP 줄에 붙는 캐리지리턴을 걷어 낼 때 자주 씁니다.

더 배우기

docker compose up

compose.yaml 에 적힌 컨테이너를 모두 켭니다

docker compose up 은 지금 폴더의 compose.yaml 을 읽어 없는 이미지를 받고, 컨테이너·네트워크·볼륨을 만들어 켭니다. -d 를 붙이면 뒤에서 돌리고 프롬프트를 바로 돌려줍니다. compose.yaml 을 고치거나 새 이미지를 받은 뒤 다시 실행하면 바뀐 컨테이너만 새로 만듭니다.

더 배우기

docker compose down

compose 프로젝트의 컨테이너를 멈추고 지웁니다

docker compose down 은 docker compose up 이 켠 컨테이너를 멈추고 네트워크와 함께 지웁니다. 데이터베이스·인증서 같은 자료를 담은 이름 있는 볼륨은 -v 를 붙이지 않으면 남습니다. 그래서 서버에서 down -v 는 위험합니다 — 저장된 자료까지 지웁니다.

더 배우기

docker run

이미지로 컨테이너를 만들어 실행합니다

docker run 은 이미지로 새 컨테이너를 만들어 실행하고, 이미지가 없으면 먼저 받습니다. 옵션으로 방법을 정합니다 — -d 는 뒤에서 돌리고, -p 는 내 컴퓨터의 포트를 컨테이너의 포트에 잇고, -v 는 폴더나 볼륨을 붙입니다. 옵션이 길어지면 compose.yaml 에 한 번 적어 두고 docker compose up 을 씁니다.

더 배우기

/init

AI 도구가 프로젝트를 읽고 지시 파일 초안을 쓰게 하기

/init 은 코딩 에이전트에게 프로젝트를 읽고 첫 지시 파일을 쓰게 합니다 — 클로드 코드는 CLAUDE.md, Codex 는 AGENTS.md 입니다. 이 파일은 세션을 시작할 때마다 읽히므로 프로젝트의 목적, 빌드·테스트 명령, 내 규칙을 매번 다시 말하지 않아도 됩니다. 초안은 읽고 고칩니다 — 완성된 규칙집이 아니라 출발점입니다.

더 배우기

/goal

끝날 기준을 정해 에이전트(Codex·클로드 코드)가 거기까지 계속 일하게 하는 명령

Codex 와 클로드 코드에서 /goal 뒤에 결과를 적으면 목표가 정해지고, 에이전트는 진행을 확인하며 조건을 채울 때까지 계속 일합니다. /goal 만 입력하면 지금 목표를 보여 주고, /goal clear 로 지웁니다(Codex 는 pause·resume 도 있습니다). 클로드 코드는 차례마다 작은 모델이 대화를 읽고 목표를 이뤘는지 판정합니다. "모든 테스트가 통과하고 README 에 실행 방법이 있다"처럼 확인할 수 있는 목표여야 제대로 돕니다.

더 배우기

claude

터미널에서 클로드 코드를 시작하는 명령

프로젝트 폴더에서 claude 라고 치면 그 자리에서 클로드 코드가 시작되고, 그 폴더의 파일을 읽고 고칠 수 있습니다. 옵션으로 방식을 바꿉니다 — -p 는 대화 화면 없이 한 번 답하고, -c 는 마지막 대화를 이어 갑니다. "claude: command not found" 가 나오면 아직 설치되지 않았거나 그 폴더가 PATH 에 없습니다.

더 배우기

agy

터미널에서 Google 의 Antigravity CLI 를 시작하는 명령

agy 는 Google 의 터미널용 코딩 에이전트인 Antigravity CLI 를 지금 폴더에서 시작합니다. 공식 페이지의 설치 스크립트로 설치하고, 처음 한 번 Google 계정으로 로그인합니다. claude·codex 처럼 프로젝트를 읽고 파일을 고치고 명령을 실행하므로, 같은 일을 두 에이전트에게 주고 계획을 비교하면 실수를 잡기 쉽습니다.

더 배우기

gh

GitHub 가 만든 명령줄 도구

GitHub CLI 인 gh 는 GitHub 의 일을 터미널에서 합니다 — 로그인, 풀 리퀘스트 열기·검토, 이슈 만들기, 프로젝트 보드 관리. git 은 컴퓨터 사이에 커밋을 옮기고, gh 는 GitHub 웹사이트에만 있는 것을 다룹니다. gh auth login 때 Git 설정까지 맡기면 git push 도 그 로그인을 쓰므로 토큰을 터미널에 붙여 넣지 않아도 됩니다.

더 배우기

flutter build

스토어에 올릴 Flutter 앱의 출시 파일을 만듭니다

flutter build 는 Flutter 프로젝트를 한 플랫폼용으로 다듬은 완성 파일로 만듭니다. flutter build appbundle 은 Google Play 가 받는 .aab 를, flutter build ipa 는 App Store 에 올릴 iOS 아카이브를 만드는데 ipa 는 Xcode 가 있는 Mac 이 필요합니다. 스토어에 올리는 파일은 서명이 필요하므로 출시 빌드 전에 서명 설정을 마쳐 둡니다.

더 배우기

rm -rf

묻지 않고 폴더째 모두 지우는 위험한 명령

rm -r 은 폴더를 안의 것과 함께 지우고, -f 를 더하면 묻지도 불평하지도 않습니다. 휴지통이 없으므로 경로 하나가 틀리면 — 공백 하나, 또는 rm -rf "$DIR"/* 의 빈 변수 — 프로젝트 전체나 그 이상이 사라집니다. 이런 명령은 읽어 보고, 같은 경로로 ls 를 먼저 돌리고, 이해하지 못한 것은 AI 에이전트가 제안해도 허락하지 않습니다.

더 배우기

skills CLI

에이전트 스킬을 설치·업데이트·삭제하는 명령줄 도구

npx skills 로 실행하는 skills CLI 는 sonub.com 이나 GitHub 저장소 같은 출처의 스킬을 .agents/skills 에 복사하고, 클로드 코드용 바로가기를 .claude/skills 에 만듭니다. 이렇게 설치한 스킬은 같은 도구로 목록 보기·업데이트·삭제를 하고, 누군가 손으로 넣은 폴더는 local 로 보이며 업데이트되지 않습니다. -g 를 붙이면 지금 프로젝트가 아니라 모든 프로젝트에 설치합니다.

더 배우기

skills-ref

스킬의 SKILL.md 가 형식 규칙에 맞는지 검사하는 참고 도구

skills-ref 는 공개 Agent Skills 형식을 관리하는 agentskills 저장소에 있는 참고 도구입니다. skills-ref validate 는 스킬 폴더를 읽어 이름이나 설명이 빠진 것처럼 SKILL.md 머리말 규칙에 어긋난 곳을 알려 줍니다. 시연용으로 만든 것이라, 저장소를 내려받아 pip install -e . 로 설치해서 씁니다.

더 배우기

winget

Windows 에 프로그램을 설치하는 패키지 관리자

winget(WinGet)은 Windows 패키지 관리자로, PowerShell 이나 명령 프롬프트에서 프로그램을 설치·업그레이드·삭제합니다. macOS 의 brew, 우분투의 apt 와 같은 자리입니다. 클로드 코드처럼 winget 으로 설치한 도구는 스스로 업데이트하지 않는 것이 있어 가끔 winget upgrade 를 실행합니다.

brew

macOS 에서 가장 많이 쓰는 패키지 관리자 Homebrew

brew 는 Homebrew 의 명령으로, macOS(리눅스에서도)에 명령줄 도구와 앱을 보통 sudo 없이 설치합니다. brew install 은 설치, brew upgrade 는 설치한 것의 업데이트, brew search 는 이름 찾기입니다. 클로드 코드처럼 brew 로 설치한 도구는 스스로가 아니라 brew upgrade 로 업데이트합니다.

pnpm

디스크를 아끼는 빠른 Node.js 패키지 관리자

pnpm 은 npm 과 같은 일 — package.json 의 패키지를 설치하고 스크립트를 실행 — 을 하지만, 패키지 버전마다 디스크에 한 벌만 두고 프로젝트마다 연결합니다. 그래서 설치가 빠르고 프로젝트가 많을수록 자리를 아낍니다. 잠금 파일은 pnpm-lock.yaml 이며, 잠금 파일끼리 어긋나지 않게 한 프로젝트에는 패키지 관리자를 하나만 씁니다.

ln

파일을 가리키는 두 번째 이름, 링크를 만듭니다

ln -s 는 다른 파일이나 폴더를 가리키는 작은 파일인 심볼릭 링크를 만들어, 복사하지 않고 두 곳에서 같은 내용을 열게 합니다. 실제 대상을 먼저, 새 링크 이름을 다음에 씁니다. -s 없이 쓰면 하드 링크를 만드는데 한 파일 시스템 안에서만 됩니다. Windows 는 심볼릭 링크를 다르게 다루므로 Windows 사용자와 함께 쓰는 프로젝트에서는 피하기도 합니다.

nohup

터미널을 닫아도 명령이 계속 돌게 합니다

보통 터미널을 닫으면 그 안의 명령에 끊김 신호가 가서 멈춥니다. nohup 은 명령이 그 신호를 무시하게 하고, 출력을 따로 돌리지 않으면 nohup.out 에 적습니다. & 를 붙여 뒤에서 돌립니다. 탭과 함께 사라지는 브라우저 터미널에서는 소용이 없고, 서버의 긴 작업은 다시 들어가기 쉬운 tmux 가 편합니다.

micro

터미널 안에서 쓰는 쉬운 코드 편집기

micro 는 터미널 안에서 바로 쓰는 코드 편집기입니다. 파이썬 같은 코드에 색을 입히고 줄 번호를 보여 주며, Enter 를 누르면 들여쓰기를 다음 줄로 이어 줍니다. 여느 프로그램처럼 Ctrl+S 로 저장하고 Ctrl+Q 로 닫으며 Ctrl+F 로 찾습니다. SONUB 실습 리눅스에 미리 깔려 있습니다.

nano

터미널 안에서 쓰는 쉬운 글자 편집기

nano 는 터미널 안에서 바로 파일을 열어 고치게 해 주고, 단축키가 화면 아래에 적혀 있습니다(^ 는 Ctrl). Ctrl+O 다음 Enter 로 저장하고, Ctrl+X 로 닫고, Ctrl+W 로 찾습니다. -m 없이 커밋하면 Git 이 nano(또는 Vim)를 열 수 있으니 빠져나오는 법을 알아 두면 좋습니다.

vim

키보드만으로 쓰는 강력한 터미널 편집기

Vim 은 터미널 안에서 파일을 고치는 편집기로, 거의 모든 서버에 있습니다. 모드가 있어서 처음에는 키가 명령인 일반 모드로 시작하고, i 를 누르면 글을 쓰는 입력 모드, Esc 를 누르면 다시 일반 모드입니다. 나갈 때는 Esc 뒤에 :wq(저장하고 나가기), :q!(저장하지 않고 나가기), 또는 ZZ(저장하고 나가기)를 칩니다.

clear

터미널 화면을 깨끗이 지웁니다

clear 는 터미널 창을 비우고 프롬프트를 맨 위로 올려, 다음 출력을 읽기 쉽게 합니다. Ctrl+L 도 같습니다. 화면만 정리할 뿐 파일·변수·명령 기록은 그대로입니다.

exit

쉘을 끝내거나, 스크립트를 종료 코드와 함께 끝냅니다

프롬프트에서 exit 를 치면 쉘 세션이 닫힙니다 — 터미널 탭이나, ssh 로 들어간 서버라면 그 접속이 끝납니다. 스크립트 안에서는 exit 0 이 성공, exit 1(또는 다른 숫자)이 실패로 끝내므로 실행한 쪽이 $? 로 확인할 수 있습니다. 클로드 코드 같은 AI 도구 안에서는 대신 /exit 로 나갑니다.

sh

쉘 스크립트를 실행하는 기본 쉘

sh 는 유닉스 계열이면 어디에나 있는 표준 POSIX 쉘로, 알파인에서는 BusyBox ash, 우분투에서는 dash 입니다. sh script.sh 로 스크립트를 실행하고, 설치 안내에서는 내려받은 스크립트를 파이프로 넘기기도 합니다(curl … | sh). 배열·[[ ]] 같은 bash 기능이 없으므로 그것을 쓰는 스크립트는 bash 로 실행합니다.

alias

명령에 나만의 짧은 이름(별칭)을 붙입니다

alias 는 쉘이 더 긴 명령으로 바꿔 주는 짧은 이름을 만듭니다 — 예를 들어 ll 을 ls -la 로. alias 만 치면 지금 별칭 목록이 나오고, unalias 는 하나를 지웁니다. 별칭은 지금 세션에서만 살아 있으므로, 계속 쓰려면 ~/.bashrc 나 ~/.zshrc 에 그 줄을 적어 둡니다.

apt

우분투·데비안의 패키지 관리자

apt 는 우분투·데비안과 그것을 바탕으로 한 시스템(WSL 의 우분투 등)에서 프로그램을 설치·업데이트·삭제합니다. 시스템 전체를 바꾸므로 sudo 와 함께 씁니다. 먼저 sudo apt update 로 받을 수 있는 버전 목록을 새로 받은 뒤 설치합니다.

blkid

파티션마다 파일 시스템 종류와 ID 를 보여 줍니다

blkid 는 디스크 파티션마다 UUID(고유 번호), ext4·vfat 같은 파일 시스템 종류(TYPE), 이름표(LABEL)가 있으면 그것까지 보여 줍니다. lsblk 가 디스크가 어떻게 나뉘었는지 보여 준다면, blkid 는 각 칸 안에 무엇이 있는지 알려 줍니다. /etc/fstab 은 sda1 같은 이름이 바뀌어도 디스크를 찾도록 이 UUID 를 씁니다.

break

반복을 일찍 끝냅니다

break 는 자신이 들어 있는 for·while·until 반복을 멈추고, 스크립트는 done 다음으로 넘어갑니다. 끝없는 while true 반복에서 기다리던 일이 생기면 빠져나오는 흔한 방법입니다. break 2 는 겹친 반복 두 개를 한 번에 나옵니다.

continue

반복의 이번 차례를 건너뛰고 다음 차례로 갑니다

continue 는 그 자리에서 아래 명령을 건너뛰고 반복의 다음 차례로 바로 갑니다. 빈 파일이나 맞지 않는 이름처럼 무시할 항목이 있을 때 반복을 단순하게 해 줍니다. break 와 달리 반복 자체는 계속됩니다.

chown

파일·폴더의 주인을 바꿉니다

chown 은 파일과 폴더의 소유자(콜론 뒤에 쓰면 그룹도)를 정합니다. 파일을 남에게 넘기는 일은 관리자만 할 수 있어서 보통 sudo 와 함께 씁니다. 새 디스크를 마운트하면 처음에는 폴더가 root 것이라 이때 자주 쓰고, -R 은 폴더 안의 것까지 모두 바꿉니다.

comm

정렬된 두 파일에서 한쪽에만·다른 쪽에만·양쪽에 있는 줄을 가립니다

comm 은 정렬된 두 파일을 읽어 세 칸으로 보여 줍니다 — 첫 파일에만 있는 줄, 둘째 파일에만 있는 줄, 양쪽에 있는 줄. 옵션으로 칸을 숨겨 comm -12 는 겹치는 줄만 보여 줍니다. 두 입력은 먼저 정렬해야 하며, 프로세스 치환으로 그 자리에서 정렬해 넘길 수 있습니다.

command -v

어느 시스템에서나 같은 방법으로 명령이 있는지 확인합니다

command -v 이름 은 그 명령이 어디 있는지(또는 내장 명령인지) 출력하고 성공하며, 그런 명령이 없으면 아무것도 출력하지 않고 실패합니다. 모든 POSIX 쉘에서 똑같이 동작하므로 스크립트가 도구를 쓰기 전에 있는지 확인할 때 씁니다. 답만 필요하면 출력은 버립니다.

date

지금 날짜와 시각을 원하는 모양으로 출력합니다

date 는 오늘 날짜와 지금 시각을 출력합니다. + 로 시작하는 서식으로 부분을 골라 +%Y-%m-%d 는 2026-10-21 처럼 찍으므로, 백업·로그 파일 이름에 쓰기 좋습니다. -u 는 내 시간대 대신 UTC 로 보여 줍니다.

du

폴더와 파일이 차지하는 디스크 크기를 보여 줍니다

du(disk usage)는 폴더 안 파일의 크기를 더해 보여 줍니다. -h 는 K·M·G 로 읽기 쉽게, -s 는 하위 폴더마다 한 줄씩 대신 합계 하나만 출력합니다. 디스크를 무엇이 채웠는지 찾을 때는 한 단계 깊이만 보고 크기순으로 정렬하고, 디스크 전체의 남은 자리는 df 로 봅니다.

env

환경 변수를 보거나, 바꾼 환경으로 프로그램을 실행합니다

env 만 치면 모든 환경 변수를 출력합니다. env 이름=값 명령 은 내 쉘을 바꾸지 않고 명령 하나에만 변수를 더해 실행합니다. #!/usr/bin/env bash 에서는 env 가 PATH 로 bash 가 설치된 곳을 찾아 주므로, 많은 스크립트가 이렇게 시작합니다.

export

변수를 이 쉘이 띄우는 프로그램에도 넘깁니다

보통 쉘 변수는 쉘 자신만 봅니다. export 는 그 변수를 환경 변수로 표시해, 이 쉘에서 띄우는 모든 프로그램 — 스크립트·node·python3 — 도 받게 합니다. 터미널을 닫으면 사라지므로, 계속 쓰려면 export 줄을 ~/.bashrc 나 ~/.zshrc 에 적습니다.

fdisk

디스크의 파티션 테이블을 보거나 바꿉니다

fdisk -l 은 디스크와 파티션을 크기·종류와 함께 보여 줍니다. 디스크 하나에 fdisk 를 실행하면 파티션을 만들거나 지우는 대화형 메뉴가 열리고, w 를 누르기 전에는 아무것도 쓰지 않으며 q 는 바꾸지 않고 나갑니다. 자료가 든 디스크의 파티션을 바꾸면 읽지 못하게 될 수 있으니 빈 디스크로 연습합니다.

fg · bg

작업을 앞으로 데려오거나 뒤에서 계속 돌립니다

fg 는 백그라운드나 멈춘 작업을 터미널 앞으로 데려와 키보드 입력을 받게 합니다. Ctrl+Z 는 앞에서 돌고 있는 작업을 잠시 멈추고, bg 는 멈춘 그 작업을 백그라운드에서 이어 돌립니다. 작업이 여럿이면 fg %2 처럼 jobs 가 보여 주는 번호를 붙입니다.

help

쉘에 들어 있는 내장 명령의 도움말을 보여 줍니다

help 는 bash 내장 명령으로, cd·for·read 같은 bash 자신의 명령을 설명합니다. ls·grep 같은 따로 된 프로그램은 모르므로 그때는 man 이나 --help 옵션을 씁니다. help 만 치면 내장 명령 목록이 나옵니다.

info

GNU 프로그램의 길고 자세한 설명서를 읽습니다

info 는 많은 GNU 프로그램이 함께 내놓는 자세한 문서를 엽니다. 흔히 man 페이지보다 길고, 서로 이어진 절로 나뉘어 있습니다. Space 로 넘기고 n·p 로 다음·앞 절로 가며 q 로 나옵니다. 알파인 같은 작은 시스템에는 설치되어 있지 않을 수 있으니 그때는 man 과 --help 를 씁니다.

jobs

이 터미널의 백그라운드·멈춘 작업 목록을 보여 줍니다

jobs 는 지금 쉘에서 & 로 띄우거나 Ctrl+Z 로 멈춘 작업을 [1] 같은 번호와 상태와 함께 보여 줍니다. 그 번호를 fg %1 처럼 fg·bg·kill·wait 에 씁니다. 이 쉘의 작업만 알고 다른 곳에서 띄운 프로그램은 모르며, 그것은 ps 로 봅니다.

join

같은 열쇠를 가진 두 파일의 줄을 합칩니다

join 은 ID 같은 공통 칸으로 정렬된 두 파일을 읽어, 양쪽에 다 있는 열쇠마다 두 파일의 나머지 칸을 나란히 붙여 한 줄로 출력합니다. 글자 파일로 하는 작은 데이터베이스 조인과 같습니다. 먼저 두 파일을 그 칸으로 정렬하고, CSV 처럼 쉼표로 나뉜 파일은 -t, 로 구분자를 정합니다.

less

긴 파일을 한 화면씩 넘겨 봅니다

less 는 cat 처럼 한꺼번에 쏟아 내지 않고 파일을 한 화면씩 보여 줍니다. Space 로 넘기고 b 로 돌아가며, /낱말 로 찾고 n 으로 다음 찾은 곳으로 가며, q 로 나옵니다. 파일 전체를 먼저 읽지 않으므로 아주 큰 로그 파일도 빨리 엽니다.

local

함수 안에서만 사는 변수를 만듭니다

bash 에서 함수 안에서 정한 변수는 기본으로 전역이라, 스크립트의 다른 곳에 있는 같은 이름의 변수를 덮어쓸 수 있습니다 — 찾기 어려운 버그입니다. local 이름=값 은 변수를 그 함수에만 속하게 하고, 함수가 끝나면 사라집니다. 함수 안에서는 local 을 기본으로 씁니다.

make

Makefile 에 적힌 빌드 단계를 실행합니다

make 는 Makefile 이라는 파일을 읽는데, 거기에는 목표마다 필요한 파일과 그것을 만드는 명령이 적혀 있습니다. 지난번 뒤로 입력 파일이 바뀐 단계만 다시 돌리므로 큰 프로젝트에서 시간을 아낍니다. make test·make install 처럼 짧은 이름으로 일을 부르는 데도 많이 씁니다.

mktemp

다른 것과 겹치지 않는 이름으로 임시 파일을 만듭니다

mktemp 는 보통 /tmp 에 무작위 이름의 빈 파일을 만들고 그 이름을 출력하므로, 스크립트가 변수에 받아 씁니다. 이름이 겹치지 않아서 같은 스크립트가 동시에 두 번 돌아도 서로의 임시 파일을 덮어쓰지 않습니다. 스크립트가 끝날 때 지워지도록 trap 과 함께 씁니다.

openssl

암호화·인증서·안전한 난수를 다루는 도구 상자

openssl 은 암호 기술을 다루는 명령줄 도구 모음으로, 무작위 비밀값을 만들고 인증서를 만들거나 읽고 파일을 암호화하고 HTTPS 연결을 시험합니다. 비밀번호나 API 비밀값에는 예측 가능해 게임에나 맞는 $RANDOM 대신 openssl rand 를 씁니다. openssl s_client 는 사이트가 보내는 인증서를 보여 줍니다.

paste

여러 파일의 줄을 옆으로 나란히 붙입니다

paste 는 파일마다 첫째 줄끼리, 둘째 줄끼리… 탭을 사이에 두고 한 줄로 붙입니다. -d 로 다른 구분자를 고르고, -s 는 한 파일의 모든 줄을 한 줄로 이어 붙입니다. 칸을 떼어 내는 cut 과 반대되는 일입니다.

ping

다른 컴퓨터가 네트워크로 응답하는지 확인합니다

ping 은 컴퓨터에 작은 시험 꾸러미를 보내고 답이 오기까지 걸린 시간을 찍어, 닿는지와 얼마나 느린지 보여 줍니다. -c 와 횟수를 주지 않으면 Ctrl+C 를 누를 때까지 계속 돕니다. ping 을 막아 둔 서버·네트워크도 있고 실습 터미널에서는 에뮬레이터가 스스로 답하므로, 실제 연결은 curl 로 확인합니다.

py

Windows 에서 파이썬을 실행하는 명령

Windows 에서는 파이썬 설치 프로그램이 파이썬 실행기 py 를 함께 넣어, 설치된 파이썬 하나를 골라 프로그램을 실행합니다. macOS·리눅스에서는 같은 일을 python3 로 합니다. py -0 은 찾은 파이썬 버전 목록을 보여 주고, py -3.12 는 그중 하나를 고릅니다.

return

함수를 끝내고 성공·실패를 알립니다

return 은 쉘 함수를 끝내고 종료 상태를 정합니다 — return 0 은 성공, 255 까지의 다른 숫자는 실패이며 if 와 && 가 이것을 확인합니다. 파이썬의 return 과 달리 글자를 돌려주지 않습니다. 함수에서 글자를 받으려면 echo 로 출력하고 result=$(myfunc) 로 받습니다.

rmdir

빈 폴더만 지웁니다

rmdir 은 안에 아무것도 없는 폴더만 지우고, 그렇지 않으면 거절합니다. 그 거절이 안전장치입니다 — 비어 있어야 할 폴더라면 rm -r 처럼 실수로 파일까지 지울 일이 없습니다. -p 는 경로의 빈 상위 폴더까지 지웁니다.

ruby

루비(Ruby) 언어로 쓴 프로그램을 실행합니다

ruby 는 루비 프로그램을 실행합니다 — ruby file.rb 는 파일을, ruby -e 는 명령줄에 친 한 줄을 실행하며 python3 -c·node -e·perl -e 와 같은 방식입니다. 루비는 읽기 쉬운 코드와 Rails 웹 프레임워크로 알려져 있습니다. brew 나 apt 로 먼저 설치해야 할 수 있습니다.

shift

스크립트의 인자를 한 칸씩 앞으로 당깁니다

shift 는 첫 인자를 버려 $2 가 $1, $3 이 $2 가 되게 하고, $# 는 하나 줄어듭니다. while 반복과 shift 로 인자를 하나씩 처리합니다. getopts 로 옵션을 읽은 뒤 shift $((OPTIND - 1)) 로 옵션을 치우면 $1 이 첫 번째 진짜 인자가 됩니다.

test · [ ]

대괄호 하나로 조건을 검사하는 옛 방식

[ ... ] 는 test 명령의 다른 이름으로, 조건을 검사해 성공·실패를 내므로 if 가 씁니다. 모든 POSIX 쉘에 있지만 까다로워서 대괄호 안쪽에 빈칸이 필요하고 변수는 따옴표로 감싸야 합니다 — 빈 변수가 명령에 구멍을 내기 때문입니다. bash 에서는 더 새롭고 안전한 [[ ]] 를 씁니다.

trash-cli

파일을 지우지 않고 휴지통으로 보내는 명령 모음

rm 은 영영 지우지만, trash-cli 는 터미널에 휴지통을 줍니다 — trash-put 은 바탕 화면과 같은 휴지통으로 파일을 옮기고, trash-list 는 들어 있는 것을 보여 주고, trash-restore 는 하나를 되살립니다. 내장 명령이 아니라 apt 나 pip 로 설치하는 따로 된 패키지입니다. 실수했을 때 돌아갈 길이 필요하면 씁니다.

tree

폴더와 그 아래 모든 것을 나무 모양으로 그립니다

tree 는 폴더 아래의 폴더와 파일을 무엇이 무엇 안에 있는지 선으로 이어 보여 주므로, ls 를 여러 번 치는 것보다 읽기 쉽습니다. -L 은 내려갈 깊이를 정하고 -a 는 숨김 파일도 보여 줍니다. 기본으로 설치되지 않은 경우가 많아, 실습 터미널에서는 sudo apk add tree 로 더합니다.

true · false

늘 성공하거나 늘 실패하는 명령

true 는 아무것도 하지 않고 종료 코드 0(성공)으로, false 는 1(실패)로 끝납니다. while true 는 break 나 Ctrl+C 까지 도는 반복을 만들고, 둘 다 && 와 || 를 시험할 때 편합니다. 쉘에서 성공·실패는 true·false 라는 낱말이 아니라 종료 코드입니다.

type

이름이 내장 명령·별칭·함수·프로그램 중 무엇인지 알려 줍니다

type 이름 은 그 이름으로 쉘이 실제로 무엇을 실행할지 알려 줍니다 — cd 같은 내장 명령, 별칭, 내가 만든 함수, 또는 프로그램 파일과 그 경로. 명령이 예상과 다르게 움직일 때 확인합니다. type -a 는 쉘이 시도하는 순서대로 맞는 것을 모두 보여 줍니다.

until

조건이 참이 될 때까지 되풀이합니다

until 은 while 의 반대로, 조건이 거짓인 동안 몸통을 되풀이하다가 참이 되면 멈춥니다. "서버가 답할 때까지 1초씩 기다린다"처럼 기다리는 일에 자연스럽습니다. 안에서 무언가가 바뀌어야 반복이 끝납니다.

wait

백그라운드 작업이 끝날 때까지 기다립니다

wait 는 & 로 띄운 백그라운드 작업이 끝날 때까지 스크립트를 멈춰 세워, 느린 일 여러 개를 한꺼번에 시작하고 모두 끝난 뒤에 넘어가게 합니다. 프로세스 번호를 주면 그 작업 하나만 기다리고 그 종료 코드를 돌려줍니다. wait 가 없으면 백그라운드 작업보다 스크립트가 먼저 끝날 수 있습니다.

which

명령의 프로그램 파일이 있는 위치를 찾습니다

which 이름 은 PATH 의 폴더를 뒤져 실제로 실행될 프로그램의 전체 경로(/usr/bin/python3 같은)를 출력합니다. 설치했는데 "command not found" 가 나오거나 두 버전이 있을 때 도움이 되고, which -a 는 모두 보여 줍니다. 쉘 내장 명령·별칭·함수는 보지 못하므로 그때는 type 을 씁니다.

/resume

지난 대화를 골라 이어 가기

클로드 코드에서 `/resume` 을 입력하면 지난 대화 목록이 열리고, 하나를 고르면 그 대화 내용 그대로 이어서 일할 수 있습니다. 터미널에서는 `claude --resume` 이 같은 목록을 열고, `claude --continue` 는 지금 폴더의 가장 최근 대화를 바로 엽니다. Codex 도 `codex resume`·`codex resume --last` 로 똑같이 합니다.

더 배우기

claude doctor

클로드 코드의 설치·설정 상태 점검

`claude doctor` 는 클로드 코드가 제대로 설치됐는지, 설정 파일에 오류가 없는지 살펴보고, 대화를 시작하지 않고 결과만 터미널에 보여 줍니다. 대화 안에서는 `/doctor` 가 비슷한 점검을 하고, 몇몇 문제는 고치기까지 합니다. 설치나 업데이트 뒤에 클로드 코드가 이상하게 굴면 먼저 돌려 봅니다.

더 배우기

claude setup-token

자동 실행에 쓸 오래가는 Claude 로그인 토큰 만들기

`claude setup-token` 은 1년 동안 쓰는 로그인 토큰을 만들어, GitHub Actions 나 스크립트처럼 브라우저로 로그인할 수 없는 곳에서도 클로드 코드를 돌리게 합니다. 브라우저에서 한 번 허락하면 토큰을 찍기만 하고 저장하지 않으니, 비밀값으로 `CLAUDE_CODE_OAUTH_TOKEN` 환경 변수에 넣습니다. Claude 구독(Pro·Max·Team·Enterprise)으로 동작하므로 비밀번호처럼 다룹니다.

더 배우기

찾는 용어가 없습니다.

용어 사전

모르는 말을 골라 보세요. 쉬운 설명과 관련 용어를 볼 수 있어요.

찾는 용어가 아직 없어요.

용어를 고르면 설명이 보여요.

읽기 창