Files
sam-manage/resources/views/components/academy-glossary.blade.php
김보곤 10eaf82bb7 feat: [academy] 웹 기초지식 백과사전 페이지 추가
- 퍼플 테마 6대 섹션 22소 섹션 Blade 뷰 작성
- SVG 이미지 12장 생성 (인터넷, URL, HTTP, 에러코드 등)
- AcademyController webBasics() 메서드 및 라우트 등록
- academy-glossary 컴포넌트에 web-basics 도메인 추가
- 이미지 생성 프롬프트 문서 작성
2026-02-23 11:17:49 +09:00

323 lines
26 KiB
PHP

{{--
Academy Glossary Tooltip Component
@include('components.academy-glossary', ['domain' => 'fire-shutter'])
도메인: fire-shutter | it-planning | server-knowledge | frontend-dev | docker-environment | backend-dev | web-basics
--}}
@push('styles')
<style>
/* ── Glossary Tooltip ── */
.glossary-term {
position: relative;
text-decoration: underline;
text-decoration-style: dashed;
text-decoration-color: #94a3b8;
text-decoration-thickness: 1.5px;
text-underline-offset: 3px;
cursor: help;
transition: text-decoration-color 0.15s ease;
}
.glossary-term:hover {
text-decoration-color: #3b82f6;
}
/* 툴팁 화살표 */
.glossary-term::before {
content: '';
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
border: 6px solid transparent;
border-top-color: #1e293b;
opacity: 0;
pointer-events: none;
transition: opacity 0.15s ease, transform 0.15s ease;
z-index: 42;
}
/* 툴팁 풍선 */
.glossary-term::after {
content: attr(data-tooltip);
position: absolute;
bottom: calc(100% + 10px);
left: 50%;
transform: translateX(-50%) scale(0.95);
background: #1e293b;
color: #f1f5f9;
font-size: 12px;
font-weight: 400;
line-height: 1.5;
padding: 8px 12px;
border-radius: 8px;
max-width: 280px;
width: max-content;
white-space: normal;
word-break: keep-all;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
opacity: 0;
pointer-events: none;
transition: opacity 0.15s ease, transform 0.15s ease;
z-index: 42;
}
/* hover 시 표시 */
.glossary-term:hover::before,
.glossary-term:hover::after {
opacity: 1;
}
.glossary-term:hover::after {
transform: translateX(-50%) scale(1);
}
/* 모바일: 탭 토글 */
.glossary-term.is-tooltip-active::before,
.glossary-term.is-tooltip-active::after {
opacity: 1;
}
.glossary-term.is-tooltip-active::after {
transform: translateX(-50%) scale(1);
}
/* 화면 좌측 넘침 방지 */
.glossary-term::after {
min-width: 160px;
}
/* hover 미지원 기기에서 hover 효과 비활성화 */
@media (hover: none) {
.glossary-term:hover::before,
.glossary-term:hover::after {
opacity: 0;
}
.glossary-term:hover::after {
transform: translateX(-50%) scale(0.95);
}
.glossary-term.is-tooltip-active::before,
.glossary-term.is-tooltip-active::after {
opacity: 1;
}
.glossary-term.is-tooltip-active::after {
transform: translateX(-50%) scale(1);
}
}
</style>
@endpush
<script>
window.__GLOSSARY_DOMAIN = @json($domain);
window.__GLOSSARY_DATA = window.__GLOSSARY_DATA || {};
@if($domain === 'fire-shutter')
window.__GLOSSARY_DATA['fire-shutter'] = {
"슬랫": "셔터를 구성하는 금속 띠 형태의 판재. 여러 장이 연결되어 커튼 면을 형성한다.",
"인터록킹": "슬랫과 슬랫을 서로 맞물리게 결합하는 방식. 분리되지 않으면서도 유연하게 감긴다.",
"가이드레일": "셔터 양쪽에 설치된 레일. 슬랫이 이 레일을 따라 상하로 이동한다.",
"샤프트": "셔터 상부에 위치한 회전축. 슬랫이 이 축에 감기며 올라간다.",
"감속기": "모터의 고속 회전을 저속·고토크로 변환하는 장치. 셔터가 천천히 안전하게 내려온다.",
"거버너": "셔터 하강 속도를 일정하게 제어하는 조속기. 과속 낙하를 방지한다.",
"차연재": "셔터 틈새에 부착하여 연기 유입을 차단하는 소재. 화재 시 연기 확산을 막는다.",
"EGI": "전기아연도금강판(Electro-Galvanized Iron). 아연 도금으로 내식성을 높인 강판이다.",
"비차열": "화염은 차단하되 열 전달은 허용하는 방화 등급. 일반 방화셔터에 적용된다.",
"차열": "화염과 열 전달 모두를 차단하는 상위 방화 등급. 피난 통로 등에 요구된다.",
"방화구획": "건물을 일정 면적으로 나누어 화재 확산을 막는 구획. 건축법으로 의무화되어 있다.",
"연동제어기": "화재 감지기 신호를 받아 셔터를 자동으로 폐쇄하는 제어 장치.",
"연기감지기": "공기 중 연기 입자를 감지하여 화재 경보를 발생시키는 센서.",
"열감지기": "주변 온도 상승을 감지하여 화재 경보를 발생시키는 센서.",
"일부폐쇄": "셔터가 바닥에서 일정 높이(약 1.5m)까지만 내려오는 1차 폐쇄 단계.",
"완전폐쇄": "셔터가 바닥까지 완전히 내려오는 최종 폐쇄 단계.",
"롤포밍": "코일 강판을 연속 롤러로 통과시켜 원하는 단면 형상을 만드는 성형 공법.",
"자동폐쇄기": "화재 시 외부 신호 없이도 셔터를 자동으로 닫히게 하는 장치.",
"전자브레이크": "전자석을 이용하여 셔터의 정지·하강을 제어하는 브레이크.",
"밸런스 스프링": "셔터 무게를 상쇄하여 모터 부하를 줄이고 수동 조작을 가능하게 하는 스프링.",
"웜기어": "웜(나사축)과 웜휠이 맞물리는 감속 기어. 역회전 방지 기능이 있다.",
"강판형": "일반 강판 슬랫으로 구성된 셔터 유형. 차열·비차열 성능을 모두 구현 가능하다.",
"스크린형": "내화 섬유(유리섬유 등) 소재로 구성된 셔터 유형. 경량이고 투시가 가능하다.",
"분리형": "감속기와 제어 장치가 셔터 본체와 별도로 설치되는 구조.",
"일체형": "감속기와 제어 장치가 셔터 본체에 내장된 구조. 설치 공간이 절약된다.",
"내화충전재": "셔터 내부에 충전하여 열 전달을 차단하는 단열 소재.",
"SPHC": "열간압연 일반구조용 강판(Steel Plate Hot Commercial). 셔터 프레임 소재로 사용된다."
};
@elseif($domain === 'it-planning')
window.__GLOSSARY_DATA['it-planning'] = {
"PRD": "제품 요구사항 문서(Product Requirements Document). 무엇을 왜 만들지 정의한 기획서.",
"IA": "정보 구조(Information Architecture). 서비스의 메뉴·화면·콘텐츠 계층 구조를 설계한 것.",
"와이어프레임": "화면 배치를 선과 도형으로 간략히 표현한 설계도. 디자인 이전 단계에서 사용한다.",
"프로토타입": "실제 동작을 시뮬레이션하는 시제품. 사용성 검증을 위해 클릭 가능한 형태로 만든다.",
"MoSCoW": "Must/Should/Could/Won't로 우선순위를 분류하는 기법.",
"RICE": "Reach·Impact·Confidence·Effort로 기능 우선순위를 점수화하는 프레임워크.",
"스코프 크리프": "프로젝트 범위가 통제 없이 점점 확장되는 현상. 일정 지연의 주요 원인이다.",
"페르소나": "대표 사용자 유형을 가상의 인물로 구체화한 것. 사용자 중심 기획의 기초 자료.",
"VOC": "고객의 소리(Voice of Customer). 사용자 피드백·요구사항을 수집·분석한 데이터.",
"MECE": "상호 배타적이고 전체를 포괄하는 분류 원칙(Mutually Exclusive, Collectively Exhaustive).",
"유스케이스": "사용자가 시스템과 상호작용하는 시나리오를 단계별로 기술한 것.",
"플로우차트": "업무나 시스템의 처리 흐름을 도형과 화살표로 시각화한 다이어그램.",
"ERD": "엔티티-관계 다이어그램(Entity-Relationship Diagram). 데이터베이스 테이블 간 관계를 표현한다.",
"스프린트": "애자일 개발에서 1~4주 단위의 반복 개발 주기. 매 주기마다 결과물을 산출한다.",
"백로그": "개발해야 할 기능·작업을 우선순위로 정리한 목록. 스프린트 계획의 입력값이다.",
"MVP": "최소 기능 제품(Minimum Viable Product). 핵심 기능만으로 시장 반응을 검증하는 첫 버전.",
"A/B 테스트": "두 가지 시안을 사용자에게 무작위 노출하여 성과를 비교하는 실험 방법.",
"스토리보드": "화면 흐름과 사용자 인터랙션을 시각적으로 정리한 기획 산출물.",
"KPI": "핵심 성과 지표(Key Performance Indicator). 목표 달성도를 측정하는 정량 지표.",
"OKR": "목표와 핵심결과(Objectives and Key Results). 목표 설정 및 성과 관리 프레임워크.",
"린 스타트업": "가설→실험→학습 순환으로 빠르게 제품을 검증하는 창업 방법론.",
"디자인 씽킹": "사용자 공감→문제 정의→아이디어→프로토타입→테스트 5단계 혁신 방법론.",
"애자일": "변화에 유연하게 대응하며 반복적으로 개발하는 소프트웨어 개발 방법론.",
"칸반": "작업을 시각적 보드로 관리하며, 진행 중 작업 수(WIP)를 제한하는 워크플로우 방법.",
"스크럼": "스프린트 단위로 개발하며 데일리 스탠드업, 회고 등 정해진 이벤트를 수행하는 애자일 프레임워크.",
"이해관계자": "프로젝트의 결과에 영향을 받거나 영향을 미치는 사람 또는 조직.",
"로드맵": "제품·프로젝트의 중장기 계획을 시간 축으로 시각화한 전략 문서."
};
@elseif($domain === 'frontend-dev')
window.__GLOSSARY_DATA['frontend-dev'] = {
"DOM": "문서 객체 모델(Document Object Model). 브라우저가 HTML을 읽어 만든 트리 구조. JavaScript로 조작할 수 있다.",
"시맨틱 태그": "의미를 가진 HTML 태그. header, nav, main, footer 등. 검색엔진과 스크린리더가 콘텐츠를 이해하는 데 도움을 준다.",
"박스모델": "CSS에서 모든 요소를 상자로 취급하는 개념. content → padding → border → margin 순으로 구성된다.",
"Flexbox": "1차원(가로 또는 세로) 레이아웃을 쉽게 구현하는 CSS 기능. display: flex로 활성화한다.",
"Grid": "2차원(행+열) 레이아웃을 구현하는 CSS 기능. 바둑판처럼 요소를 배치할 수 있다.",
"미디어쿼리": "화면 크기에 따라 다른 CSS를 적용하는 규칙. @media (min-width: 768px) 형태로 사용한다.",
"viewport": "브라우저에서 웹 콘텐츠가 표시되는 영역. meta viewport 태그로 모바일 대응을 설정한다.",
"브레이크포인트": "반응형 디자인에서 레이아웃이 전환되는 화면 너비 기준점. 예: 768px, 1024px.",
"컴포넌트": "재사용 가능한 UI 조각. 버튼, 카드, 모달 등을 독립적인 단위로 만들어 조합한다.",
"상태관리": "애플리케이션 내 데이터(상태)를 체계적으로 관리하는 방법. Redux, Zustand 등의 라이브러리를 사용한다.",
"SPA": "Single Page Application. 페이지 전환 없이 하나의 페이지에서 콘텐츠를 동적으로 교체하는 웹 앱.",
"SSR": "Server-Side Rendering. 서버에서 HTML을 생성하여 브라우저에 전달하는 방식. SEO와 초기 로딩에 유리하다.",
"CSR": "Client-Side Rendering. 브라우저에서 JavaScript로 HTML을 생성하는 방식. SPA의 기본 렌더링 방식이다.",
"번들러": "여러 JavaScript/CSS 파일을 하나로 합치고 최적화하는 도구. Vite, Webpack이 대표적이다.",
"트랜스파일러": "최신 JavaScript 문법을 구형 브라우저에서도 동작하도록 변환하는 도구. Babel이 대표적이다.",
"린터": "코드의 오류, 스타일 위반, 잠재적 버그를 자동으로 검출하는 도구. ESLint가 대표적이다.",
"CDN": "Content Delivery Network. 전 세계에 분산된 서버로 콘텐츠를 빠르게 전달하는 네트워크.",
"CORS": "Cross-Origin Resource Sharing. 다른 도메인 간 리소스 공유를 제어하는 브라우저 보안 정책.",
"REST API": "URL과 HTTP 메서드(GET/POST/PUT/DELETE)로 자원을 관리하는 웹 API 설계 방식.",
"JSON": "JavaScript Object Notation. 서버와 클라이언트 간 데이터를 주고받는 경량 텍스트 형식.",
"npm": "Node Package Manager. JavaScript 패키지를 설치·관리하는 도구이자 세계 최대 패키지 저장소.",
"반응형 디자인": "화면 크기에 따라 레이아웃이 자동으로 조정되는 웹 디자인 방식.",
"이벤트 리스너": "사용자 행동(클릭, 입력 등)을 감지하여 정해진 함수를 실행하는 메커니즘.",
"콜백": "다른 함수의 인자로 전달되어 나중에 호출되는 함수. 비동기 처리의 기본 패턴이다.",
"Promise": "비동기 작업의 완료 또는 실패를 나타내는 객체. then/catch로 결과를 처리한다.",
"가상 DOM": "실제 DOM의 가벼운 복사본. React가 변경 사항을 비교하여 최소한의 실제 DOM만 업데이트한다."
};
@elseif($domain === 'docker-environment')
window.__GLOSSARY_DATA['docker-environment'] = {
"Docker": "애플리케이션을 컨테이너로 패키징하여 어디서나 동일하게 실행할 수 있게 하는 플랫폼.",
"컨테이너": "앱과 실행 환경을 격리하여 패키징한 가상화 단위. VM보다 가볍고 빠르다.",
"이미지": "컨테이너를 만들기 위한 읽기 전용 템플릿. Dockerfile로 정의하며 레이어 구조로 되어 있다.",
"Docker Compose": "여러 컨테이너를 하나의 YAML 파일로 정의하고 함께 실행하는 도구.",
"Dockerfile": "Docker 이미지를 빌드하기 위한 명령어 모음 파일. FROM, RUN, COPY 등의 명령으로 구성된다.",
"볼륨": "컨테이너 데이터를 영구적으로 저장하는 Docker 관리 저장소. 컨테이너 삭제 후에도 데이터가 유지된다.",
"바인드 마운트": "호스트의 특정 경로를 컨테이너에 직접 연결하는 방식. 소스 코드 실시간 동기화에 사용한다.",
"브리지 네트워크": "같은 Docker 네트워크에 속한 컨테이너끼리 이름으로 통신할 수 있게 하는 기본 네트워크 드라이버.",
"Supervisor": "여러 프로세스를 동시에 관리·감시하는 도구. 프로세스 비정상 종료 시 자동 재시작한다.",
"PHP-FPM": "PHP FastCGI Process Manager. PHP 스크립트를 처리하는 프로세스 관리자.",
"Nginx": "고성능 웹 서버. 리버스 프록시로 도메인별 요청을 적절한 서비스로 라우팅한다.",
"리버스 프록시": "클라이언트 요청을 받아 내부 서비스로 전달하는 중간 서버. Nginx가 대표적이다.",
".env": "환경 변수를 저장하는 설정 파일. DB 접속 정보, API 키 등 환경마다 달라지는 값을 관리한다.",
"환경 변수": "운영체제나 앱에 전달되는 설정값. 코드 변경 없이 동작을 바꿀 수 있다.",
"Queue Worker": "백그라운드에서 비동기 작업(메일 발송, 파일 처리 등)을 순차적으로 처리하는 프로세스.",
"Scheduler": "정해진 시간에 자동으로 명령을 실행하는 Laravel의 크론 작업 관리자.",
"마이그레이션": "데이터베이스 테이블 구조를 코드로 관리하고 버전별로 적용·롤백하는 Laravel 기능.",
"OOM": "Out of Memory. 메모리 부족으로 프로세스가 강제 종료되는 현상.",
"포트": "네트워크 통신에서 서비스를 구분하는 번호. HTTP는 80, MySQL은 3306을 사용한다.",
"config:clear": "Laravel이 캐시한 설정을 초기화하는 명령. .env 변경 후 반드시 실행해야 한다.",
"docker exec": "실행 중인 컨테이너 안에서 명령을 실행하는 Docker 명령어.",
"WSL": "Windows Subsystem for Linux. Windows에서 리눅스 환경을 실행하는 호환 계층.",
"samnet": "SAM 프로젝트의 Docker 브리지 네트워크. 모든 컨테이너가 이 네트워크로 통신한다.",
"Next.js": "React 기반의 풀스택 프레임워크. 서버 사이드 렌더링(SSR)을 지원한다.",
"SSR": "Server-Side Rendering. 서버에서 HTML을 생성하여 브라우저에 전달하는 방식."
};
@elseif($domain === 'backend-dev')
window.__GLOSSARY_DATA['backend-dev'] = {
"백엔드": "사용자 눈에 보이지 않는 서버 측 영역. 데이터 저장, 비즈니스 로직, 인증 등을 처리한다.",
"API": "Application Programming Interface. 프로그램 간 데이터를 주고받는 규격화된 통신 방식.",
"REST": "Representational State Transfer. URL로 자원을 표현하고 HTTP 메서드로 행위를 나타내는 API 설계 방식.",
"JSON": "JavaScript Object Notation. 서버와 클라이언트 간 데이터를 주고받는 경량 텍스트 형식.",
"MySQL": "오픈소스 관계형 데이터베이스 관리 시스템(RDBMS). SQL 언어로 데이터를 관리한다.",
"쿼리": "데이터베이스에 데이터를 요청하거나 조작하는 명령문. SQL로 작성한다.",
"ORM": "Object-Relational Mapping. 데이터베이스 테이블을 프로그래밍 언어의 객체로 다루는 기술.",
"Eloquent": "Laravel의 ORM. 테이블을 PHP 클래스로 표현하여 SQL 없이 데이터를 조작할 수 있다.",
"마이그레이션": "데이터베이스 테이블 구조를 코드로 관리하고 버전별로 적용·롤백하는 기능.",
"MVC": "Model-View-Controller. 데이터(M), 화면(V), 제어 로직(C)을 분리하는 소프트웨어 설계 패턴.",
"컨트롤러": "사용자 요청을 받아 적절한 모델과 뷰를 연결하는 중재자 역할의 클래스.",
"미들웨어": "요청이 컨트롤러에 도달하기 전/후에 실행되는 필터. 인증 확인, 로깅 등을 처리한다.",
"라우팅": "URL 경로를 특정 컨트롤러·메서드에 연결하는 규칙 정의.",
"세션": "서버에 사용자 상태를 저장하는 방식. 브라우저는 세션 ID만 쿠키로 보관한다.",
"토큰": "서버가 발급하는 인증 문자열. 클라이언트가 보유하며 API 요청 시 헤더에 포함한다.",
"해싱": "데이터를 되돌릴 수 없는 고정 길이 문자열로 변환하는 것. 비밀번호 저장에 사용한다.",
"CSRF": "Cross-Site Request Forgery. 사용자 모르게 악의적 요청을 보내는 공격. 토큰으로 방어한다.",
"큐(Queue)": "작업을 대기열에 넣고 순차적으로 처리하는 구조. 이메일 발송, PDF 생성 등에 사용한다.",
"캐시": "자주 사용하는 데이터를 빠른 저장소에 임시 보관하여 응답 속도를 높이는 기법.",
"N+1 문제": "1번의 쿼리로 목록을 가져온 뒤 각 항목마다 추가 쿼리가 발생하는 성능 문제.",
"Eager Loading": "관련 데이터를 미리 한 번에 조회하여 N+1 문제를 방지하는 기법. with() 메서드를 사용한다.",
"트랜잭션": "여러 DB 작업을 하나의 단위로 묶어 모두 성공하거나 모두 취소하는 처리 방식.",
"인덱스": "테이블의 특정 컬럼에 대한 검색 색인. 조회 속도를 크게 향상시킨다.",
"멀티테넌트": "하나의 시스템에서 여러 조직의 데이터를 격리하여 관리하는 아키텍처.",
"스케줄러": "정해진 시간에 자동으로 작업을 실행하는 기능. Laravel의 크론 작업 대체.",
"로그": "시스템·애플리케이션의 동작 기록. 오류 추적과 모니터링에 필수적이다.",
"환경 변수": "운영체제나 앱에 전달되는 설정값. .env 파일로 관리하며 환경마다 다른 값을 사용한다.",
"SQL Injection": "사용자 입력에 악의적 SQL을 삽입하여 DB를 조작하는 보안 공격.",
"Sanctum": "Laravel 공식 API 인증 패키지. SPA와 모바일 앱을 위한 토큰 발급·인증을 처리한다.",
"Artisan": "Laravel의 CLI 도구. 마이그레이션, 시더, 캐시 관리 등 다양한 명령을 제공한다."
};
@elseif($domain === 'web-basics')
window.__GLOSSARY_DATA['web-basics'] = {
"인터넷": "전 세계의 컴퓨터를 하나로 연결하는 거대한 네트워크. 이메일, 웹, 스트리밍 등 모든 온라인 서비스의 기반.",
"웹(WWW)": "World Wide Web. 인터넷 위에서 동작하는 서비스 중 하나. 브라우저로 웹사이트를 보는 것이 웹 사용.",
"URL": "Uniform Resource Locator. 인터넷에서 원하는 페이지를 찾아가기 위한 주소. 프로토콜+도메인+경로로 구성.",
"IP 주소": "컴퓨터마다 부여된 고유 숫자 주소. 예: 114.203.209.83. 사람이 외우기 어려워 도메인을 사용한다.",
"도메인": "IP 주소 대신 사람이 기억하기 쉽게 만든 이름. 예: sam.jooil.co.kr. DNS가 IP로 변환해준다.",
"DNS": "Domain Name System. 도메인 이름을 IP 주소로 변환하는 시스템. 인터넷의 전화번호부 역할.",
"브라우저": "웹 페이지를 보여주는 프로그램. Chrome, Edge, Safari 등. 인터넷 세상을 보는 창문.",
"HTTP": "HyperText Transfer Protocol. 브라우저와 서버가 데이터를 주고받는 규칙(주문서 양식).",
"HTTPS": "HTTP에 SSL/TLS 암호화를 적용한 보안 통신. 데이터를 봉투에 넣어 잠그고 전송한다.",
"404": "Not Found. 요청한 페이지를 찾을 수 없음. URL 주소가 틀렸거나 삭제된 페이지.",
"500": "Internal Server Error. 서버 내부 오류. 프로그램 코드에 문제가 발생한 상태.",
"502": "Bad Gateway. 백엔드 서비스가 응답하지 않는 상태. 서비스가 중단되었을 수 있음.",
"403": "Forbidden. 접근 권한이 없음. 해당 페이지를 볼 수 있는 권한이 부족한 상태.",
"클라우드": "내 컴퓨터가 아닌 인터넷 상의 서버에서 서비스를 제공하는 방식. 설치 없이 브라우저로 사용.",
"SaaS": "Software as a Service. 소프트웨어를 구독하여 인터넷으로 사용하는 방식. 넷플릭스처럼.",
"구독": "매달 이용료를 내고 서비스를 사용하는 방식. 큰 초기 비용 없이 바로 사용 가능.",
"로그인": "아이디와 비밀번호로 자신을 인증하는 과정. 사원증을 제시하여 출입하는 것과 같다.",
"세션": "로그인 후 서버가 발급하는 임시 출입증. 유효시간이 지나면 다시 로그인이 필요하다.",
"ERP": "Enterprise Resource Planning. 영업·생산·재고·회계 등 회사 전체를 통합 관리하는 시스템.",
"MES": "Manufacturing Execution System. 공장 현장의 생산 공정을 실시간으로 관리하는 시스템.",
"데이터베이스": "데이터를 체계적으로 저장·관리하는 시스템. 수백 개의 엑셀 시트를 자동 관리하는 초대형 파일.",
"API": "Application Programming Interface. 프로그램 간 데이터를 주고받는 창구. 식당의 메뉴판과 주문 시스템.",
"백업": "데이터의 복사본을 안전한 곳에 보관하는 것. 원본 손상 시 복구할 수 있다.",
"캐시": "자주 사용하는 데이터를 임시로 저장하여 속도를 높이는 기법. 쌓이면 오류 원인이 되기도 한다.",
"새로고침": "현재 페이지를 다시 불러오는 것. F5 또는 Ctrl+R. 일시적 오류의 대부분이 해결된다.",
"암호화": "데이터를 제3자가 읽을 수 없는 형태로 변환하는 것. HTTPS가 대표적인 암호화 통신."
};
@elseif($domain === 'server-knowledge')
window.__GLOSSARY_DATA['server-knowledge'] = {
"Nginx": "고성능 웹 서버 소프트웨어. 리버스 프록시, 로드 밸런싱 등을 처리한다.",
"PHP-FPM": "PHP FastCGI Process Manager. PHP 스크립트를 처리하는 프로세스 관리자.",
"MySQL": "오픈소스 관계형 데이터베이스 관리 시스템(RDBMS). SQL로 데이터를 관리한다.",
"Docker": "애플리케이션을 컨테이너로 패키징하여 어디서나 동일하게 실행할 수 있게 하는 플랫폼.",
"컨테이너": "앱과 실행 환경을 격리하여 패키징한 가상화 단위. VM보다 가볍고 빠르다.",
"SSH": "Secure Shell. 원격 서버에 암호화된 통신으로 안전하게 접속하는 프로토콜.",
"Git": "소스 코드 버전 관리 시스템. 변경 이력을 추적하고 협업을 지원한다.",
"Hook": "특정 이벤트 발생 시 자동으로 실행되는 스크립트. Git Hook, Webhook 등이 있다.",
"chmod": "파일·디렉토리의 접근 권한(읽기/쓰기/실행)을 변경하는 리눅스 명령어.",
"chown": "파일·디렉토리의 소유자와 소유 그룹을 변경하는 리눅스 명령어.",
"umask": "새로 생성되는 파일의 기본 권한을 제어하는 설정값.",
"502 Bad Gateway": "웹 서버가 백엔드(PHP-FPM 등)로부터 정상 응답을 받지 못할 때 발생하는 오류.",
"리버스 프록시": "클라이언트 요청을 받아 백엔드 서버로 전달하는 중간 서버. Nginx가 대표적이다.",
"포트": "네트워크 통신에서 프로세스를 구분하는 번호. HTTP는 80, HTTPS는 443을 사용한다.",
"HTTPS": "HTTP에 SSL/TLS 암호화를 적용한 보안 통신 프로토콜.",
"SSL/TLS": "인터넷 통신을 암호화하여 데이터를 보호하는 보안 프로토콜.",
"DNS": "도메인 이름(예: example.com)을 IP 주소로 변환하는 시스템.",
"IP 주소": "네트워크에서 장치를 식별하는 고유 번호. IPv4(예: 192.168.1.1)와 IPv6가 있다.",
"프로세스": "실행 중인 프로그램의 인스턴스. 각각 고유 PID를 가진다.",
"데몬": "백그라운드에서 지속적으로 실행되는 서비스 프로세스. 이름 뒤에 d를 붙인다(예: mysqld).",
"로그": "시스템·애플리케이션의 동작 기록. 오류 추적과 모니터링에 필수적이다.",
"배포": "개발 완료된 코드를 서버에 적용하여 사용자에게 서비스하는 과정.",
"크론": "리눅스에서 정해진 시간에 명령을 자동 실행하는 스케줄러.",
"방화벽": "허가되지 않은 네트워크 접근을 차단하는 보안 시스템. iptables, ufw 등이 있다.",
"sudo": "일반 사용자가 관리자(root) 권한으로 명령을 실행할 수 있게 하는 명령어.",
"systemctl": "systemd 서비스를 시작·중지·재시작·상태확인하는 관리 명령어."
};
@endif
</script>
<script src="{{ asset('js/academy-glossary.js') }}" defer></script>