<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[👋 손코딩의 끄적끄적 블로그 RSS Feed]]></title><description><![CDATA[손코딩의 끄적끄적 블로그]]></description><link>http://github.com/dylang/node-rss</link><generator>GatsbyJS</generator><lastBuildDate>Sun, 24 May 2026 22:04:05 GMT</lastBuildDate><item><title><![CDATA[Claude Skills 완벽 가이드: AI를 도메인 전문가로 만드는 방법]]></title><description><![CDATA[Claude가 단순한 챗봇이 아니라 도메인 전문가처럼 동작하게 만들 수 있다. Claude Skills를 사용하면 된다. Claude Skills란? Claude Skills는 Anthropic의 Claude AI…]]></description><link>https://smk692.github.io/2026-05-25-claude-skills-guide/</link><guid isPermaLink="false">https://smk692.github.io/2026-05-25-claude-skills-guide/</guid><pubDate>Mon, 25 May 2026 01:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Claude가 단순한 챗봇이 아니라 &lt;strong&gt;도메인 전문가&lt;/strong&gt;처럼 동작하게 만들 수 있다. Claude Skills를 사용하면 된다.&lt;/p&gt;
&lt;h2 id=&quot;claude-skills란&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#claude-skills%EB%9E%80&quot; aria-label=&quot;claude skills란 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Claude Skills란?&lt;/h2&gt;
&lt;p&gt;Claude Skills는 Anthropic의 Claude AI에 특정 능력을 부여하는 &lt;strong&gt;확장 모듈&lt;/strong&gt;이다. 각 스킬은 폴더 단위로 구성되며, 내부에는 다음이 포함된다:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;SKILL.md&lt;/code&gt; - 스킬 설명 및 트리거 조건&lt;/li&gt;
&lt;li&gt;관련 코드 및 스크립트&lt;/li&gt;
&lt;li&gt;참조 문서 및 예시&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;핵심은 **지연 로드(Lazy Loading)**다. 수백 개의 스킬을 등록해도 필요한 스킬만 불러오기 때문에 토큰 낭비가 없다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;~/.claude/skills/
├── code-reviewer/
│   └── SKILL.md
├── tech-blog-writer/
│   └── SKILL.md
└── security-auditor/
    └── SKILL.md&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;왜-skills인가&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%99%9C-skills%EC%9D%B8%EA%B0%80&quot; aria-label=&quot;왜 skills인가 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;왜 Skills인가?&lt;/h2&gt;
&lt;p&gt;기존 프롬프트 엔지니어링의 한계:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;기존 방식&lt;/th&gt;
&lt;th&gt;Claude Skills&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;매번 긴 시스템 프롬프트 작성&lt;/td&gt;
&lt;td&gt;스킬 이름만 호출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;컨텍스트 윈도우 낭비&lt;/td&gt;
&lt;td&gt;필요한 스킬만 로드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;재사용 어려움&lt;/td&gt;
&lt;td&gt;폴더 복사로 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;일관성 유지 힘듦&lt;/td&gt;
&lt;td&gt;버전 관리 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;실제 사용 예시:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 코드 리뷰 요청&lt;/span&gt;
/code-reviewer &lt;span class=&quot;token string&quot;&gt;&quot;src/auth/login.ts 보안 검토해줘&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 블로그 작성&lt;/span&gt;
/tech-blog-writer &lt;span class=&quot;token string&quot;&gt;&quot;Docker 네트워킹 기초&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 커밋 메시지 생성&lt;/span&gt;
/commit&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;awesome-claude-skills-저장소&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#awesome-claude-skills-%EC%A0%80%EC%9E%A5%EC%86%8C&quot; aria-label=&quot;awesome claude skills 저장소 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Awesome Claude Skills 저장소&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-claude-skills&quot;&gt;VoltAgent/awesome-claude-skills&lt;/a&gt;는 Anthropic 공식 스킬과 커뮤니티 제작 스킬을 한곳에 모은 큐레이션 프로젝트다.&lt;/p&gt;
&lt;h3 id=&quot;anthropic-공식-스킬&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#anthropic-%EA%B3%B5%EC%8B%9D-%EC%8A%A4%ED%82%AC&quot; aria-label=&quot;anthropic 공식 스킬 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Anthropic 공식 스킬&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;문서 생성&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Word(docx), PowerPoint(pptx), Excel(xlsx) 자동 생성&lt;/li&gt;
&lt;li&gt;PDF 편집 및 변환&lt;/li&gt;
&lt;li&gt;템플릿 기반 문서 자동화&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;창작 및 디자인&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;알고리즘 아트 생성&lt;/li&gt;
&lt;li&gt;캔버스 디자인&lt;/li&gt;
&lt;li&gt;GIF 애니메이션 제작&lt;/li&gt;
&lt;li&gt;테마 팩토리 (색상 팔레트, 디자인 시스템)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;개발 및 테스트&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTML 아티팩트 빌드&lt;/li&gt;
&lt;li&gt;MCP 서버 구축&lt;/li&gt;
&lt;li&gt;Playwright 기반 웹 테스트 자동화&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;커뮤니티-스킬&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0-%EC%8A%A4%ED%82%AC&quot; aria-label=&quot;커뮤니티 스킬 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;커뮤니티 스킬&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;스킬&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Notion 통합&lt;/td&gt;
&lt;td&gt;데이터베이스 CRUD, 페이지 자동 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;콘텐츠 연구&lt;/td&gt;
&lt;td&gt;주제 리서치 후 초안 작성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;회의 분석&lt;/td&gt;
&lt;td&gt;회의록에서 액션 아이템 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iOS 시뮬레이터&lt;/td&gt;
&lt;td&gt;앱 UI 테스트 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;웹 보안 테스트&lt;/td&gt;
&lt;td&gt;ffuf 기반 퍼징, 취약점 스캔&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;스킬-설치-방법&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%8A%A4%ED%82%AC-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95&quot; aria-label=&quot;스킬 설치 방법 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;스킬 설치 방법&lt;/h2&gt;
&lt;h3 id=&quot;1-저장소-클론&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-%EC%A0%80%EC%9E%A5%EC%86%8C-%ED%81%B4%EB%A1%A0&quot; aria-label=&quot;1 저장소 클론 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. 저장소 클론&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; clone https://github.com/VoltAgent/awesome-claude-skills.git
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; awesome-claude-skills&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;2-원하는-스킬-복사&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-%EC%9B%90%ED%95%98%EB%8A%94-%EC%8A%A4%ED%82%AC-%EB%B3%B5%EC%82%AC&quot; aria-label=&quot;2 원하는 스킬 복사 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. 원하는 스킬 복사&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 전체 복사&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-r&lt;/span&gt; skills/* ~/.claude/skills/

&lt;span class=&quot;token comment&quot;&gt;# 또는 개별 스킬만&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-r&lt;/span&gt; skills/code-reviewer ~/.claude/skills/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;3-claude-code에서-확인&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#3-claude-code%EC%97%90%EC%84%9C-%ED%99%95%EC%9D%B8&quot; aria-label=&quot;3 claude code에서 확인 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Claude Code에서 확인&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;claude
&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; /skills  &lt;span class=&quot;token comment&quot;&gt;# 설치된 스킬 목록 확인&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;커스텀-스킬-만들기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%BB%A4%EC%8A%A4%ED%85%80-%EC%8A%A4%ED%82%AC-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; aria-label=&quot;커스텀 스킬 만들기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;커스텀 스킬 만들기&lt;/h2&gt;
&lt;p&gt;자신만의 스킬을 만들 수 있다. 기본 구조:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;my-custom-skill/
├── SKILL.md          # 필수: 스킬 정의
├── references/       # 선택: 참조 문서
│   └── guide.md
└── examples/         # 선택: 예시 파일
    └── sample.md&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;skillmd-작성-예시&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#skillmd-%EC%9E%91%EC%84%B1-%EC%98%88%EC%8B%9C&quot; aria-label=&quot;skillmd 작성 예시 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;SKILL.md 작성 예시&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;yaml&quot;&gt;&lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;---&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; api&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;designer
&lt;span class=&quot;token key atrule&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; REST API 설계를 도와주는 스킬
&lt;span class=&quot;token key atrule&quot;&gt;triggers&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; API 설계
  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; 엔드포인트 설계
  &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; REST 설계
&lt;span class=&quot;token key atrule&quot;&gt;argument-hint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;lt;리소스명&gt; [HTTP 메서드]&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;---&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# API Designer Skill&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;## 역할&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;RESTful API 설계 전문가로서 다음을 수행&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; 리소스 URL 설계
&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; HTTP 메서드 매핑
&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; 요청/응답 스키마 정의
&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; 에러 코드 표준화

&lt;span class=&quot;token comment&quot;&gt;## 설계 원칙&lt;/span&gt;
1. 리소스는 명사&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 복수형 사용
2. 계층 구조는 URL 경로로 표현
3. 필터링은 쿼리 파라미터로
&lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;스킬-조합의-힘&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%8A%A4%ED%82%AC-%EC%A1%B0%ED%95%A9%EC%9D%98-%ED%9E%98&quot; aria-label=&quot;스킬 조합의 힘 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;스킬 조합의 힘&lt;/h2&gt;
&lt;p&gt;여러 스킬을 조합하면 복잡한 워크플로우를 자동화할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;예시: 기술 블로그 자동화 파이프라인&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;1. /content-researcher &quot;Kubernetes HPA 동작 원리&quot;
   → 주제 리서치 및 참고자료 수집

2. /tech-blog-writer &quot;위 리서치 기반으로 블로그 작성&quot;
   → 초안 생성

3. /code-reviewer &quot;코드 예시 검증&quot;
   → 예시 코드 동작 확인

4. /seo-optimizer &quot;SEO 최적화&quot;
   → 메타데이터, 키워드 최적화&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;주의사항&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD&quot; aria-label=&quot;주의사항 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;주의사항&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;토큰 관리&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;스킬 내 참조 문서가 너무 크면 컨텍스트를 압박한다&lt;/li&gt;
&lt;li&gt;핵심 내용만 포함하고, 상세 내용은 외부 링크로&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;트리거 충돌&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;여러 스킬이 비슷한 트리거를 가지면 예상치 못한 스킬이 활성화될 수 있다&lt;/li&gt;
&lt;li&gt;트리거는 구체적으로 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;버전 관리&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;스킬 폴더를 Git으로 관리하면 변경 이력 추적 가능&lt;/li&gt;
&lt;li&gt;팀 내 스킬 공유 시 저장소로 관리 권장&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;마무리&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EB%A7%88%EB%AC%B4%EB%A6%AC&quot; aria-label=&quot;마무리 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;마무리&lt;/h2&gt;
&lt;p&gt;Claude Skills는 단순한 프롬프트 재사용을 넘어, &lt;strong&gt;AI를 도메인 특화형 에이전트로 발전&lt;/strong&gt;시키는 도구다.&lt;/p&gt;
&lt;p&gt;시작하기 좋은 경로:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-claude-skills&quot;&gt;Awesome Claude Skills&lt;/a&gt;에서 유용한 스킬 탐색&lt;/li&gt;
&lt;li&gt;자주 사용하는 워크플로우를 스킬로 정리&lt;/li&gt;
&lt;li&gt;팀 내 스킬 라이브러리 구축&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;공식 문서: &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/skills&quot;&gt;Claude Code Skills Documentation&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;table-of-contents&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#claude-skills%EB%9E%80&quot;&gt;Claude Skills란?&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EC%99%9C-skills%EC%9D%B8%EA%B0%80&quot;&gt;왜 Skills인가?&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#awesome-claude-skills-%EC%A0%80%EC%9E%A5%EC%86%8C&quot;&gt;Awesome Claude Skills 저장소&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#anthropic-%EA%B3%B5%EC%8B%9D-%EC%8A%A4%ED%82%AC&quot;&gt;Anthropic 공식 스킬&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%EC%BB%A4%EB%AE%A4%EB%8B%88%ED%8B%B0-%EC%8A%A4%ED%82%AC&quot;&gt;커뮤니티 스킬&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EC%8A%A4%ED%82%AC-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95&quot;&gt;스킬 설치 방법&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-%EC%A0%80%EC%9E%A5%EC%86%8C-%ED%81%B4%EB%A1%A0&quot;&gt;1. 저장소 클론&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-%EC%9B%90%ED%95%98%EB%8A%94-%EC%8A%A4%ED%82%AC-%EB%B3%B5%EC%82%AC&quot;&gt;2. 원하는 스킬 복사&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-claude-code%EC%97%90%EC%84%9C-%ED%99%95%EC%9D%B8&quot;&gt;3. Claude Code에서 확인&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EC%BB%A4%EC%8A%A4%ED%85%80-%EC%8A%A4%ED%82%AC-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot;&gt;커스텀 스킬 만들기&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#skillmd-%EC%9E%91%EC%84%B1-%EC%98%88%EC%8B%9C&quot;&gt;SKILL.md 작성 예시&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EC%8A%A4%ED%82%AC-%EC%A1%B0%ED%95%A9%EC%9D%98-%ED%9E%98&quot;&gt;스킬 조합의 힘&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD&quot;&gt;주의사항&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EB%A7%88%EB%AC%B4%EB%A6%AC&quot;&gt;마무리&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Understand Anything: 코드베이스를 지식 그래프로 시각화하는 도구]]></title><description><![CDATA[레거시 코드 파악, 왜 어려운가 대규모 코드베이스에 새로 투입되면 흔히 겪는 상황이 있다. README…]]></description><link>https://smk692.github.io/2026-05-24-understand-anything/</link><guid isPermaLink="false">https://smk692.github.io/2026-05-24-understand-anything/</guid><pubDate>Sun, 24 May 2026 12:10:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;레거시-코드-파악-왜-어려운가&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EB%A0%88%EA%B1%B0%EC%8B%9C-%EC%BD%94%EB%93%9C-%ED%8C%8C%EC%95%85-%EC%99%9C-%EC%96%B4%EB%A0%A4%EC%9A%B4%EA%B0%80&quot; aria-label=&quot;레거시 코드 파악 왜 어려운가 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;레거시 코드 파악, 왜 어려운가&lt;/h2&gt;
&lt;p&gt;대규모 코드베이스에 새로 투입되면 흔히 겪는 상황이 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;README는 몇 년 전 업데이트가 마지막&lt;/li&gt;
&lt;li&gt;아키텍처 다이어그램이 현재 코드와 맞지 않음&lt;/li&gt;
&lt;li&gt;작성자가 퇴사해서 물어볼 사람이 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;기존 방식으로는 한계가 있다:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;grep -r &quot;keyword&quot;&lt;/code&gt; → 수백 개 파일 매칭, 어디서 시작해야 할지 모름&lt;/li&gt;
&lt;li&gt;IDE의 Go to Definition → 10번 점프하면 원래 뭘 찾던 건지 잊음&lt;/li&gt;
&lt;li&gt;선배에게 질문 → “그건 레거시라 나도 잘 몰라”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Understand Anything&lt;/strong&gt;은 이 문제를 해결하는 Claude Code 플러그인이다. 코드베이스 전체를 분석해서 &lt;strong&gt;인터랙티브한 지식 그래프&lt;/strong&gt;로 변환한다.&lt;/p&gt;
&lt;h2 id=&quot;실제-대시보드&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%8B%A4%EC%A0%9C-%EB%8C%80%EC%8B%9C%EB%B3%B4%EB%93%9C&quot; aria-label=&quot;실제 대시보드 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;실제 대시보드&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVR42i1R224aQQyd2Zmx57LXYW8sLOxCFgEJhJCQRq3UqEolEqmv/YZ+Tn+5JlSyzlgjH/v4mHHORRBoDQCSMRY7VXtTpOgjVaaYx/+jLWwSAhVYFJFVCAHnjAkRWINZGhajJHTax7iZ++N6fLsoTpvx0Pr9UO5uysOQzypnMXhcxkNjUQUXtjVQ5elsUnTTqm/r3MeAEhABQRu8vBqNRs6DxuP7Y3V+KM/H8rhM2EVnZOfTcjGrV4vpetnOp7UxkIUytkoITuJB8iqFXRcd+nA7C++6ZDtPVhOXOcnSxE3qUU/k5XS1mNzf1C/r0a+n4m7mxhm8P+SnZfR6m/3+Wu/n7jSkr/vi2zZ/HtKuMoz2rMuM+LOmGLrx933zsimdln1lngY/z5ESjUKD2LbufBi97f2hj8gzRoYhyCxx5ShpKk/L5z7RCFyIP7vw78/yyxgDIZQSUorYyvs++rHLn1epj+DqNjdaRU5HoYlCHZKRSiRWvLXqo4MmFqGDItV0JzqEtVB4N0pM7MBqyQJBY7ikkAGAACVIC4JQKEBLREmtQwtXdEYapIKAUMmA0b2uQQeHC40IioZTo0+USknCz4R+JJWR4Itmzv4B7k4n2IQoFl4AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Understand Anything 대시보드&quot;
        title=&quot;&quot;
        src=&quot;/static/37a19dbd43198c5f583254ef3154272f/37523/dashboard.png&quot;
        srcset=&quot;/static/37a19dbd43198c5f583254ef3154272f/e9ff0/dashboard.png 180w,
/static/37a19dbd43198c5f583254ef3154272f/f21e7/dashboard.png 360w,
/static/37a19dbd43198c5f583254ef3154272f/37523/dashboard.png 720w,
/static/37a19dbd43198c5f583254ef3154272f/302a4/dashboard.png 1080w,
/static/37a19dbd43198c5f583254ef3154272f/07a9c/dashboard.png 1440w,
/static/37a19dbd43198c5f583254ef3154272f/9c701/dashboard.png 1774w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;코드베이스가 &lt;strong&gt;클릭 가능한 그래프&lt;/strong&gt;로 변환된다:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;각 노드 = 파일, 함수, 클래스&lt;/li&gt;
&lt;li&gt;색상 = 아키텍처 레이어 (API, Service, Data, UI, Utility)&lt;/li&gt;
&lt;li&gt;연결선 = 의존성 관계&lt;/li&gt;
&lt;li&gt;노드 클릭 시 = 코드 + AI 생성 설명 표시&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;기존-방식과-비교&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EA%B8%B0%EC%A1%B4-%EB%B0%A9%EC%8B%9D%EA%B3%BC-%EB%B9%84%EA%B5%90&quot; aria-label=&quot;기존 방식과 비교 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;기존 방식과 비교&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;기존 방식&lt;/th&gt;
&lt;th&gt;Understand Anything&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code class=&quot;language-text&quot;&gt;grep &quot;payment&quot;&lt;/code&gt; → 200개 파일&lt;/td&gt;
&lt;td&gt;검색 → 관련 모듈이 그래프에서 하이라이트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go to Definition 연타 → 미아&lt;/td&gt;
&lt;td&gt;의존성 트리가 한눈에 보임&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;주석 없는 함수 → 추측&lt;/td&gt;
&lt;td&gt;노드 클릭 → AI가 생성한 설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;선배에게 질문 → 한계&lt;/td&gt;
&lt;td&gt;가이드 투어로 혼자 학습 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&quot;주요-활용-시나리오&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%A3%BC%EC%9A%94-%ED%99%9C%EC%9A%A9-%EC%8B%9C%EB%82%98%EB%A6%AC%EC%98%A4&quot; aria-label=&quot;주요 활용 시나리오 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;주요 활용 시나리오&lt;/h2&gt;
&lt;h3 id=&quot;1-특정-플로우-파악&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-%ED%8A%B9%EC%A0%95-%ED%94%8C%EB%A1%9C%EC%9A%B0-%ED%8C%8C%EC%95%85&quot; aria-label=&quot;1 특정 플로우 파악 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. 특정 플로우 파악&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;/understand-chat 결제 플로우는 어떻게 동작해?&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;관련 파일을 찾아서 &lt;strong&gt;호출 순서대로&lt;/strong&gt; 설명한다:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;PaymentController&lt;/code&gt; → 요청 수신&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;PaymentService&lt;/code&gt; → 비즈니스 로직&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;PGAdapter&lt;/code&gt; → 외부 연동&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;PaymentRepository&lt;/code&gt; → DB 저장&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;grep으로는 알 수 없는 &lt;strong&gt;흐름&lt;/strong&gt;을 파악할 수 있다.&lt;/p&gt;
&lt;h3 id=&quot;2-변경-영향-분석&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-%EB%B3%80%EA%B2%BD-%EC%98%81%ED%96%A5-%EB%B6%84%EC%84%9D&quot; aria-label=&quot;2 변경 영향 분석 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. 변경 영향 분석&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;/understand-diff&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;PR 전에 변경한 파일이 어디에 영향을 미치는지 그래프로 확인한다. 영향받는 모듈이 빨간색으로 표시되면 해당 영역 테스트가 필요하다는 신호다.&lt;/p&gt;
&lt;h3 id=&quot;3-온보딩-자료-자동화&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#3-%EC%98%A8%EB%B3%B4%EB%94%A9-%EC%9E%90%EB%A3%8C-%EC%9E%90%EB%8F%99%ED%99%94&quot; aria-label=&quot;3 온보딩 자료 자동화 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. 온보딩 자료 자동화&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;/understand
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt; .understand-anything/
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; commit &lt;span class=&quot;token parameter variable&quot;&gt;-m&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;docs: add knowledge graph&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;생성된 그래프를 Git에 커밋하면, 이후 합류하는 사람은 파이프라인 재실행 없이 바로 대시보드를 열 수 있다.&lt;/p&gt;
&lt;h2 id=&quot;설치-방법&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95&quot; aria-label=&quot;설치 방법 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;설치 방법&lt;/h2&gt;
&lt;h3 id=&quot;claude-code&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#claude-code&quot; aria-label=&quot;claude code permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Claude Code&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;/plugin marketplace &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt; Lum1104/Understand-Anything
/plugin &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; understand-anything&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;기타-플랫폼&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EA%B8%B0%ED%83%80-%ED%94%8C%EB%9E%AB%ED%8F%BC&quot; aria-label=&quot;기타 플랫폼 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;기타 플랫폼&lt;/h3&gt;
&lt;p&gt;Cursor, VS Code + Copilot, Codex CLI, Gemini CLI 등도 지원한다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# macOS/Linux&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Lum1104/Understand-Anything/main/install.sh &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bash&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;기본-사용&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9&quot; aria-label=&quot;기본 사용 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;기본 사용&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 1. 코드베이스 분석 (최초 1회)&lt;/span&gt;
/understand

&lt;span class=&quot;token comment&quot;&gt;# 2. 대시보드 열기&lt;/span&gt;
/understand-dashboard

&lt;span class=&quot;token comment&quot;&gt;# 3. 질문하기&lt;/span&gt;
/understand-chat 인증은 어떻게 처리돼?&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;한국어-지원&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%ED%95%9C%EA%B5%AD%EC%96%B4-%EC%A7%80%EC%9B%90&quot; aria-label=&quot;한국어 지원 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;한국어 지원&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;/understand &lt;span class=&quot;token parameter variable&quot;&gt;--language&lt;/span&gt; ko&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;노드 설명, UI, 가이드 투어가 한국어로 제공된다.&lt;/p&gt;
&lt;h2 id=&quot;참고-사항&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%B0%B8%EA%B3%A0-%EC%82%AC%ED%95%AD&quot; aria-label=&quot;참고 사항 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;참고 사항&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;분석 시간&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;100 파일 이하: 1-2분&lt;/li&gt;
&lt;li&gt;1000 파일 이하: 5-10분&lt;/li&gt;
&lt;li&gt;그 이상: 15-30분&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;증분 업데이트는 변경 파일만 재분석하므로 1분 이내다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;비용&lt;/strong&gt;: LLM API 호출이 발생한다. Claude Code 사용 시 Anthropic API 비용이 청구된다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;민감 정보&lt;/strong&gt;: 그래프에 함수명, 클래스명이 포함된다. 공개 저장소에 커밋할 때 주의가 필요하다.&lt;/p&gt;
&lt;h2 id=&quot;추천-대상&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%B6%94%EC%B2%9C-%EB%8C%80%EC%83%81&quot; aria-label=&quot;추천 대상 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;추천 대상&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;레거시 프로젝트에 새로 투입된 개발자&lt;/li&gt;
&lt;li&gt;온보딩 자료 작성이 필요한 팀&lt;/li&gt;
&lt;li&gt;아키텍처 문서가 코드와 동기화되지 않은 프로젝트&lt;/li&gt;
&lt;li&gt;PR 리뷰 시 변경 영향 범위를 명확히 하고 싶은 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;참고 링크:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Lum1104/Understand-Anything&quot;&gt;GitHub 저장소&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://understand-anything.com/demo/&quot;&gt;라이브 데모&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://discord.gg/pydat66RY&quot;&gt;Discord 커뮤니티&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[Python asyncio 기초]]></title><description><![CDATA[핵심 개념 (왜 필요한가) 는 대기 시간이 긴 작업을 겹쳐서 처리할 때 강력하다. 특히 HTTP 호출, DB 드라이버, 메시지 큐처럼 CPU보다 I/O…]]></description><link>https://smk692.github.io/2026-05-24-python-asyncio-기초/</link><guid isPermaLink="false">https://smk692.github.io/2026-05-24-python-asyncio-기초/</guid><pubDate>Sun, 24 May 2026 08:25:27 GMT</pubDate><content:encoded>&lt;h2 id=&quot;핵심-개념-왜-필요한가&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%ED%95%B5%EC%8B%AC-%EA%B0%9C%EB%85%90-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%9C%EA%B0%80&quot; aria-label=&quot;핵심 개념 왜 필요한가 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;핵심 개념 (왜 필요한가)&lt;/h2&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;asyncio&lt;/code&gt;는 &lt;strong&gt;대기 시간이 긴 작업을 겹쳐서 처리&lt;/strong&gt;할 때 강력하다. 특히 HTTP 호출, DB 드라이버, 메시지 큐처럼 CPU보다 &lt;strong&gt;I/O 대기&lt;/strong&gt;가 많은 백엔드 작업에서 요청 처리량을 높이는 데 유용하다.&lt;br&gt;
실무에서는 “빠른 코드”라기보다, &lt;strong&gt;같은 시간에 더 많은 대기 작업을 처리하는 방식&lt;/strong&gt;으로 이해하면 가장 정확하다.&lt;/p&gt;
&lt;h2 id=&quot;기본-사용법&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9%EB%B2%95&quot; aria-label=&quot;기본 사용법 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;기본 사용법&lt;/h2&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;asyncio&lt;/code&gt;의 핵심은 &lt;code class=&quot;language-text&quot;&gt;async def&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;await&lt;/code&gt;, 그리고 이벤트 루프다. &lt;code class=&quot;language-text&quot;&gt;await&lt;/code&gt;는 시간이 걸리는 작업이 끝날 때까지 &lt;strong&gt;스레드를 붙잡지 않고&lt;/strong&gt; 다른 코루틴에 실행 기회를 넘긴다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;python&quot;&gt;&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; asyncio
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; time

&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fetch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; delay&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 시작&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sleep&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;delay&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 완료&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 결과&quot;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    start &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;perf_counter&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    results &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;gather&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        fetch&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        fetch&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        fetch&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;C&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    elapsed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;perf_counter&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; start
    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;결과:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; results&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;총 소요 시간: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;elapsed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token format-spec&quot;&gt;.2f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;초&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;run&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;main&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;실행해보면 2초 + 1초 + 3초가 아니라, &lt;strong&gt;가장 오래 걸린 3초 정도&lt;/strong&gt;만 걸린다.&lt;br&gt;
이게 &lt;code class=&quot;language-text&quot;&gt;asyncio&lt;/code&gt;의 가장 중요한 포인트다. 순차 처리 대신 &lt;strong&gt;동시 대기&lt;/strong&gt;를 만든다.&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;gather()&lt;/code&gt;는 여러 코루틴을 한 번에 실행하고 결과를 순서대로 모아준다. 백엔드에서 외부 API 여러 개를 병렬 호출할 때 자주 쓴다.&lt;/p&gt;
&lt;h2 id=&quot;실전-예제&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%8B%A4%EC%A0%84-%EC%98%88%EC%A0%9C&quot; aria-label=&quot;실전 예제 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;실전 예제&lt;/h2&gt;
&lt;p&gt;실무에서 흔한 패턴은 “여러 API를 동시에 호출하되, 실패를 안전하게 처리”하는 형태다. 아래 예시는 외부 서비스 호출을 흉내 낸 코드다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;python&quot;&gt;&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; asyncio
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; random

&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;call_api&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;user_id&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;dict&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sleep&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;random&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;uniform&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; user_id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;raise&lt;/span&gt; RuntimeError&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;외부 API 오류&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;user_id&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; user_id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;status&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ok&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;safe_call&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;user_id&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;dict&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; call_api&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;user_id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;success&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;data&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;except&lt;/span&gt; Exception &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;success&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;user_id&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; user_id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;error&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    user_ids &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;

    tasks &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;safe_call&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;user_id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; user_id &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; user_ids&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    results &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;gather&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;tasks&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    success_count &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;sum&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; r &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; results &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; r&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;success&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    fail_count &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;results&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; success_count

    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;처리 결과&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; r &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; results&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;r&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;성공: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;success_count&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 실패: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;fail_count&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;run&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;main&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;현업에서는 &lt;code class=&quot;language-text&quot;&gt;gather()&lt;/code&gt;에 코루틴을 바로 넘기기도 하지만, &lt;strong&gt;예외 전파 전략을 먼저 정하는 것&lt;/strong&gt;이 중요하다.&lt;br&gt;
한 작업의 실패가 전체 실패여야 하는지, 아니면 부분 성공을 허용할지에 따라 구현이 달라진다. 개인적으로 외부 API 집계 서비스에서는 &lt;code class=&quot;language-text&quot;&gt;safe_call()&lt;/code&gt;처럼 &lt;strong&gt;실패를 결과 객체로 바꾸는 패턴&lt;/strong&gt;을 자주 사용했다.&lt;/p&gt;
&lt;p&gt;동시성 제한도 자주 필요하다. 외부 API나 DB 커넥션은 무한정 동시에 호출하면 오히려 장애를 만든다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;python&quot;&gt;&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; asyncio

semaphore &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Semaphore&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;limited_task&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; delay&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; semaphore&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 시작&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sleep&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;delay&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 완료&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;gather&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        limited_task&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;task-1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        limited_task&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;task-2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        limited_task&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;task-3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        limited_task&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;task-4&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    asyncio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;run&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;main&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;위 코드는 한 번에 2개씩만 실행된다. 실서비스에서 트래픽이 튀는 순간, 이런 제한 하나가 장애 예방에 꽤 큰 차이를 만든다.&lt;/p&gt;
&lt;h2 id=&quot;주의사항&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD&quot; aria-label=&quot;주의사항 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;주의사항&lt;/h2&gt;
&lt;h3 id=&quot;1-cpu-바운드-작업에는-큰-효과가-없다&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-cpu-%EB%B0%94%EC%9A%B4%EB%93%9C-%EC%9E%91%EC%97%85%EC%97%90%EB%8A%94-%ED%81%B0-%ED%9A%A8%EA%B3%BC%EA%B0%80-%EC%97%86%EB%8B%A4&quot; aria-label=&quot;1 cpu 바운드 작업에는 큰 효과가 없다 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. CPU 바운드 작업에는 큰 효과가 없다&lt;/h3&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;asyncio&lt;/code&gt;는 이미지 처리, 압축, 복잡한 계산처럼 CPU를 오래 쓰는 작업에는 적합하지 않다. 그런 경우는 멀티프로세싱이나 작업 큐를 고려하는 편이 낫다.&lt;/p&gt;
&lt;h3 id=&quot;2-code-classlanguage-texttimesleepcode를-쓰면-이벤트-루프가-멈춘다&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-code-classlanguage-texttimesleepcode%EB%A5%BC-%EC%93%B0%EB%A9%B4-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84%EA%B0%80-%EB%A9%88%EC%B6%98%EB%8B%A4&quot; aria-label=&quot;2 code classlanguage texttimesleepcode를 쓰면 이벤트 루프가 멈춘다 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. &lt;code class=&quot;language-text&quot;&gt;time.sleep()&lt;/code&gt;를 쓰면 이벤트 루프가 멈춘다&lt;/h3&gt;
&lt;p&gt;비동기 함수 안에서 &lt;code class=&quot;language-text&quot;&gt;time.sleep()&lt;/code&gt;를 쓰면 전체가 막힌다. 반드시 &lt;code class=&quot;language-text&quot;&gt;await asyncio.sleep()&lt;/code&gt;를 사용해야 한다.&lt;/p&gt;
&lt;h3 id=&quot;3-아무-라이브러리나-비동기로-바뀌지-않는다&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#3-%EC%95%84%EB%AC%B4-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EB%82%98-%EB%B9%84%EB%8F%99%EA%B8%B0%EB%A1%9C-%EB%B0%94%EB%80%8C%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4&quot; aria-label=&quot;3 아무 라이브러리나 비동기로 바뀌지 않는다 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. 아무 라이브러리나 비동기로 바뀌지 않는다&lt;/h3&gt;
&lt;p&gt;함수에 &lt;code class=&quot;language-text&quot;&gt;async&lt;/code&gt;만 붙인다고 빨라지지 않는다. HTTP 클라이언트, DB 드라이버도 &lt;strong&gt;비동기 지원 라이브러리&lt;/strong&gt;여야 한다. 예: &lt;code class=&quot;language-text&quot;&gt;aiohttp&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;httpx.AsyncClient&lt;/code&gt;, async DB 드라이버.&lt;/p&gt;
&lt;h3 id=&quot;4-너무-많은-태스크-생성은-위험하다&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#4-%EB%84%88%EB%AC%B4-%EB%A7%8E%EC%9D%80-%ED%83%9C%EC%8A%A4%ED%81%AC-%EC%83%9D%EC%84%B1%EC%9D%80-%EC%9C%84%ED%97%98%ED%95%98%EB%8B%A4&quot; aria-label=&quot;4 너무 많은 태스크 생성은 위험하다 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. 너무 많은 태스크 생성은 위험하다&lt;/h3&gt;
&lt;p&gt;수천, 수만 개 코루틴을 한 번에 만들면 메모리 사용량과 외부 시스템 부하가 커진다. &lt;code class=&quot;language-text&quot;&gt;Semaphore&lt;/code&gt;나 배치 처리로 상한을 두는 게 안전하다.&lt;/p&gt;
&lt;h3 id=&quot;5-예외-처리를-빼먹기-쉽다&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#5-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EB%B9%BC%EB%A8%B9%EA%B8%B0-%EC%89%BD%EB%8B%A4&quot; aria-label=&quot;5 예외 처리를 빼먹기 쉽다 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. 예외 처리를 빼먹기 쉽다&lt;/h3&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;gather()&lt;/code&gt;는 기본적으로 하나의 예외가 전체 흐름에 영향을 줄 수 있다. 운영 환경에서는 로깅, 타임아웃, 재시도 정책까지 같이 설계해야 한다.&lt;/p&gt;
&lt;h2 id=&quot;정리&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%A0%95%EB%A6%AC&quot; aria-label=&quot;정리 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;정리&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;asyncio&lt;/code&gt;는 I/O 대기 시간이 많은 작업에서 효율적이다.&lt;/li&gt;
&lt;li&gt;핵심 도구는 &lt;code class=&quot;language-text&quot;&gt;async def&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;await&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;asyncio.run()&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;asyncio.gather()&lt;/code&gt;다.&lt;/li&gt;
&lt;li&gt;외부 API, DB, 메시지 큐 처리에서는 동시성 제한이 중요하다.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;time.sleep()&lt;/code&gt; 같은 동기 코드를 섞으면 비동기의 장점이 사라진다.&lt;/li&gt;
&lt;li&gt;실패 전략과 타임아웃 설계가 실무 품질을 좌우한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;다음 단계로는 &lt;code class=&quot;language-text&quot;&gt;asyncio.create_task()&lt;/code&gt;, &lt;code class=&quot;language-text&quot;&gt;asyncio.wait_for()&lt;/code&gt;를 이용한 타임아웃 처리, 그리고 &lt;code class=&quot;language-text&quot;&gt;aiohttp&lt;/code&gt;나 &lt;code class=&quot;language-text&quot;&gt;httpx&lt;/code&gt;로 실제 HTTP 비동기 클라이언트를 다뤄보면 좋다.&lt;/p&gt;
&lt;div class=&quot;table-of-contents&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%ED%95%B5%EC%8B%AC-%EA%B0%9C%EB%85%90-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%9C%EA%B0%80&quot;&gt;핵심 개념 (왜 필요한가)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9%EB%B2%95&quot;&gt;기본 사용법&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EC%8B%A4%EC%A0%84-%EC%98%88%EC%A0%9C&quot;&gt;실전 예제&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD&quot;&gt;주의사항&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-cpu-%EB%B0%94%EC%9A%B4%EB%93%9C-%EC%9E%91%EC%97%85%EC%97%90%EB%8A%94-%ED%81%B0-%ED%9A%A8%EA%B3%BC%EA%B0%80-%EC%97%86%EB%8B%A4&quot;&gt;1. CPU 바운드 작업에는 큰 효과가 없다&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-timesleep%EB%A5%BC-%EC%93%B0%EB%A9%B4-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84%EA%B0%80-%EB%A9%88%EC%B6%98%EB%8B%A4&quot;&gt;2. &lt;code class=&quot;language-text&quot;&gt;time.sleep()&lt;/code&gt;를 쓰면 이벤트 루프가 멈춘다&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%EC%95%84%EB%AC%B4-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EB%82%98-%EB%B9%84%EB%8F%99%EA%B8%B0%EB%A1%9C-%EB%B0%94%EB%80%8C%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8B%A4&quot;&gt;3. 아무 라이브러리나 비동기로 바뀌지 않는다&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-%EB%84%88%EB%AC%B4-%EB%A7%8E%EC%9D%80-%ED%83%9C%EC%8A%A4%ED%81%AC-%EC%83%9D%EC%84%B1%EC%9D%80-%EC%9C%84%ED%97%98%ED%95%98%EB%8B%A4&quot;&gt;4. 너무 많은 태스크 생성은 위험하다&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EB%B9%BC%EB%A8%B9%EA%B8%B0-%EC%89%BD%EB%8B%A4&quot;&gt;5. 예외 처리를 빼먹기 쉽다&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EC%A0%95%EB%A6%AC&quot;&gt;정리&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[👿백엔드 개발 면접 질문2]]></title><description><![CDATA[👿백엔드 개발 면접 질문2 👿백엔드 개발 면접에는 가장 일반적인 답변을 원하는 기본적인 질문과 우리가 함께할 수 있도록 도움을 줄 수 있는 기타 질문들이 있다. 1. 백엔드에서 가장 많이 사용하는 언어는 무엇인가요? 대부분의 백엔드에서는 Java…]]></description><link>https://smk692.github.io/CS/backend-interview2/</link><guid isPermaLink="false">https://smk692.github.io/CS/backend-interview2/</guid><pubDate>Tue, 25 Apr 2023 16:01:30 GMT</pubDate><content:encoded>&lt;h2 id=&quot;백엔드-개발-면접-질문2&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B82&quot; aria-label=&quot;백엔드 개발 면접 질문2 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;👿백엔드 개발 면접 질문2&lt;/h2&gt;
&lt;p&gt;👿백엔드 개발 면접에는 가장 일반적인 답변을 원하는 기본적인 질문과 &lt;strong&gt;우리가 함께할 수 있도록&lt;/strong&gt; 도움을 줄 수 있는 기타 질문들이 있다.&lt;/p&gt;
&lt;h3 id=&quot;1-백엔드에서-가장-많이-사용하는-언어는-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-%EB%B0%B1%EC%97%94%EB%93%9C%EC%97%90%EC%84%9C-%EA%B0%80%EC%9E%A5-%EB%A7%8E%EC%9D%B4-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%96%B8%EC%96%B4%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;1 백엔드에서 가장 많이 사용하는 언어는 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. 백엔드에서 가장 많이 사용하는 언어는 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;대부분의 백엔드에서는 Java, Python, Ruby, Kotlin, Node.js 등을 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 중에서 Java가 가장 많이 사용됩니다. Java는 객체 지향 프로그래밍 언어이며, 안정성과 확장성이 높아 대규모 애플리케이션에 적합합니다. 하지만 Kotlin 많이 이관하는 추세입니다.&lt;/p&gt;
&lt;h3 id=&quot;2-rest-api와-soap의-차이점은-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-rest-api%EC%99%80-soap%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;2 rest api와 soap의 차이점은 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. REST API와 SOAP의 차이점은 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;REST API는 HTTP 프로토콜을 사용하고, SOAP는 XML을 사용합니다. 또한 REST API는 간결하고 가벼우며, SOAP는 보안이 강화되고 표준화된 인터페이스를 제공합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;REST API는 간단하고 확장성이 뛰어나며, 사용이 쉽지만, 복잡한 트랜잭션을 처리하는데는 한계가 있습니다. 반면 SOAP는 보안성과 안정성이 높으며, 대규모 시스템에서 사용하기 좋습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-마이크로서비스-아키텍처란-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#3-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;3 마이크로서비스 아키텍처란 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. 마이크로서비스 아키텍처란 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;마이크로서비스 아키텍처는 작고 독립적인 서비스들이 모여서 하나의 애플리케이션을 구성하는 아키텍처입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;아키텍처는 각각의 서비스가 서로 다른 기술 스택을 사용할 수 있어 개발자의 자유도가 높고, 서비스 간의 결합도가 낮아 유연성이 높습니다. 또한, 서비스가 분리되어 있어 단일 서비스의 장애가 전체 시스템에 영향을 미치지 않습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;4-nosql과-rdbms의-차이점은-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#4-nosql%EA%B3%BC-rdbms%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;4 nosql과 rdbms의 차이점은 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. NoSQL과 RDBMS의 차이점은 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;NoSQL은 스키마가 없거나 유연한 스키마를 가지며, 확장성과 가용성이 높습니다. RDBMS는 정확한 스키마를 가지며, 안정성과 일관성이 높습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NoSQL은 데이터의 유형이나 형식을 바꾸는 경우에도 비교적 자유롭지만, RDBMS는 변경에 대한 엄격한 검증 절차가 필요합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;5-인증과-인가의-차이점은-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#5-%EC%9D%B8%EC%A6%9D%EA%B3%BC-%EC%9D%B8%EA%B0%80%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;5 인증과 인가의 차이점은 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. 인증과 인가의 차이점은 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;인증은 제품이나 서비스의 기능이나 특성을 검증하는 과정이고, 인가는 권한을 부여하는 과정입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;예를 들어, 제품이 CE 인증을 받는다는 것은 제품이 EU 기준을 충족한다는 것을 의미합니다. 반면에, 인가는 예를 들어 시스템 관리자가 특정 서버에 접근한 권한을 부여하는 것입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;6-세션과-쿠키의-차이점은-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#6-%EC%84%B8%EC%85%98%EA%B3%BC-%EC%BF%A0%ED%82%A4%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;6 세션과 쿠키의 차이점은 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. 세션과 쿠키의 차이점은 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;세션은 서버 측에서 데이터를 저장하고, 쿠키는 클라이언트 측에서 데이터를 저장합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;세션은 클라이언트가 서버에 접속할 때 생성되며, 서버에 의해 유지됩니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;쿠키는 브라우저에 저장되며, 만료 기간이 설정되면 삭제됩니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;세션은 중요한 데이터를 저장하기에 적합하고, 쿠키는 세션 ID나 사용자 기본 설정과 같은 정보를 저장하기에 적합합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;7-http와-https의-차이점은-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#7-http%EC%99%80-https%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;7 http와 https의 차이점은 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. HTTP와 HTTPS의 차이점은 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;HTTP는 암호화되지 않은 텍스트 기반 프로토콜이고, HTTPS는 암호화된 데이터 전송을 제공하는 HTTP의 보안 버전입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화하고 보호합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;8-서버리스-아키텍처란-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#8-%EC%84%9C%EB%B2%84%EB%A6%AC%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;8 서버리스 아키텍처란 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;8. 서버리스 아키텍처란 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;서버리스 아키텍처는 개발자가 서버의 관리나 운영에 대한 부담을 줄이기 위해 고안된 아키텍처입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;서버리스 아키텍처에서는 서버가 필요하지 않으며, 함수를 실행하는 서비스가 제공됩니다. 이를 통해 개발자는 코드를 작성하고 배포하는 것에 집중할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;9-mvc-패턴이란-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#9-mvc-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;9 mvc 패턴이란 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;9. MVC 패턴이란 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;MVC는 Model-View-Controller의 약자로, 애플리케이션의 구성 요소를 모델, 뷰, 컨트롤러로 나누어서 설계하는 패턴입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;모델은 데이터와 비즈니스 로직을 처리하고, 뷰는 사용자에게 정보를 보여주는 역할을 하며, 컨트롤러는 모델과 뷰 사이에서 조율하는 역할을 합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;10-orm이란-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#10-orm%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;10 orm이란 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;10. ORM이란 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ORM은 Object-Relational Mapping의 약자로, 객체와 관계형 데이터베이스 간의 매핑을 자동화하는 프레임워크입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ORM을 사용하면 SQL 쿼리를 직접 작성하지 않아도 객체를 데이터베이스에 저장하거나 조회할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ex) JPA (Hibernate)…&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;11-sql-injection과-같은-보안-취약점을-방지하기-위한-방법은-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#11-sql-injection%EA%B3%BC-%EA%B0%99%EC%9D%80-%EB%B3%B4%EC%95%88-%EC%B7%A8%EC%95%BD%EC%A0%90%EC%9D%84-%EB%B0%A9%EC%A7%80%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EB%B0%A9%EB%B2%95%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;11 sql injection과 같은 보안 취약점을 방지하기 위한 방법은 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;11. SQL injection과 같은 보안 취약점을 방지하기 위한 방법은 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;SQL 인젝션은 악의적인 사용자가 입력한 데이터를 이용하여 데이터베이스에 액세스하는 공격입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SQL 인젝션을 방지하기 위해, 입력 데이터를 검증하고 이스케이프 문자열 처리를 해야 합니다. 또한, 프리페어드 스테이트먼트를 사용하여 SQL 쿼리를 작성하고, 권한을 최소화하는 등의 방법을 사용할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;12-cdn이란-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#12-cdn%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;12 cdn이란 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;12. CDN이란 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;CDN은 Content Delivery Network의 약자로, 전 세계에 분산된 서버 네트워크를 통해 콘텐츠를 제공하는 시스템입니다.&lt;/li&gt;
&lt;li&gt;CDN은 웹사이트의 로딩 속도를 빠르게 하고, 대역폭을 절약할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;13-aws와-같은-클라우드-서비스를-사용해본-경험이-있나요-있으면-장점도-말해주세요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#13-aws%EC%99%80-%EA%B0%99%EC%9D%80-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B8-%EA%B2%BD%ED%97%98%EC%9D%B4-%EC%9E%88%EB%82%98%EC%9A%94-%EC%9E%88%EC%9C%BC%EB%A9%B4-%EC%9E%A5%EC%A0%90%EB%8F%84-%EB%A7%90%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94&quot; aria-label=&quot;13 aws와 같은 클라우드 서비스를 사용해본 경험이 있나요 있으면 장점도 말해주세요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;13. AWS와 같은 클라우드 서비스를 사용해본 경험이 있나요? 있으면 장점도 말해주세요.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;예, 저는 AWS를 사용해본 경험이 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AWS는 클라우드 컴퓨팅 서비스를 제공하는 아마존의 플랫폼입니다. AWS를 사용하면 서버, 데이터베이스, 스토리지 등을 쉽게 구축하고 관리할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;14-빅데이터-처리를-위해-자주-사용하는-기술은-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#14-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%B4-%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A0%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;14 빅데이터 처리를 위해 자주 사용하는 기술은 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;14. 빅데이터 처리를 위해 자주 사용하는 기술은 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;대용량 데이터 처리를 위해 저는 하둡, 스파크 등의 기술을 주로 사용합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;하둡은 대용량 데이터를 분산 저장하고 처리하는 데 사용되는 오픈소스 소프트웨어 프레임워크입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;스파크는 하둡과 유사한 기능을 제공하지만, 인메모리 처리와 스트림 처리 등의 추가 기능을 제공합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;15-도커와-쿠버네티스에-대해-설명해주세요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#15-%EB%8F%84%EC%BB%A4%EC%99%80-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EC%97%90-%EB%8C%80%ED%95%B4-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94&quot; aria-label=&quot;15 도커와 쿠버네티스에 대해 설명해주세요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;15. 도커와 쿠버네티스에 대해 설명해주세요.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;도커는 컨테이너 기반 가상화 플랫폼으로, 애플리케이션을 컨테이너에 패키징하여 독립적으로 실행할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;쿠버네티스는 컨테이너 오케스트레이션 툴로, 도커와 같은 컨테이너 기술을 사용하는 애플리케이션을 자동으로 배포, 확장, 관리할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;쿠버네티스는 여러 대의 서버에 컨테이너를 분산 배치하여 고가용성, 확장성 등의 이점을 제공합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;16-도커와-vm-차이점을-설명해주세요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#16-%EB%8F%84%EC%BB%A4%EC%99%80-vm-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%84-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94&quot; aria-label=&quot;16 도커와 vm 차이점을 설명해주세요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;16. 도커와 VM 차이점을 설명해주세요.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;VM은 전체 시스템을 가상화하는 반면 Docker 컨테이너는 개별 애플리케이션을 가상화합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VM은 서로 다른 운영 체제 간에 완전한 격리를 제공하는 반면 Docker 컨테이너는 호스트 시스템의 운영 체제 커널을 공유하여 효율성과 속도를 높입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;간단하게 적어서 혼돈되는 내용 댓글로 달아주시면 자세하게 설명하겠습니다.&lt;/p&gt;
&lt;p&gt;끝!&lt;/p&gt;
&lt;div class=&quot;table-of-contents&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B82&quot;&gt;👿백엔드 개발 면접 질문2&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-%EB%B0%B1%EC%97%94%EB%93%9C%EC%97%90%EC%84%9C-%EA%B0%80%EC%9E%A5-%EB%A7%8E%EC%9D%B4-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%96%B8%EC%96%B4%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;1. 백엔드에서 가장 많이 사용하는 언어는 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-rest-api%EC%99%80-soap%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;2. REST API와 SOAP의 차이점은 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;3. 마이크로서비스 아키텍처란 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-nosql%EA%B3%BC-rdbms%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;4. NoSQL과 RDBMS의 차이점은 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-%EC%9D%B8%EC%A6%9D%EA%B3%BC-%EC%9D%B8%EA%B0%80%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;5. 인증과 인가의 차이점은 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-%EC%84%B8%EC%85%98%EA%B3%BC-%EC%BF%A0%ED%82%A4%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;6. 세션과 쿠키의 차이점은 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-http%EC%99%80-https%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;7. HTTP와 HTTPS의 차이점은 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#8-%EC%84%9C%EB%B2%84%EB%A6%AC%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;8. 서버리스 아키텍처란 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#9-mvc-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;9. MVC 패턴이란 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#10-orm%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;10. ORM이란 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#11-sql-injection%EA%B3%BC-%EA%B0%99%EC%9D%80-%EB%B3%B4%EC%95%88-%EC%B7%A8%EC%95%BD%EC%A0%90%EC%9D%84-%EB%B0%A9%EC%A7%80%ED%95%98%EA%B8%B0-%EC%9C%84%ED%95%9C-%EB%B0%A9%EB%B2%95%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;11. SQL injection과 같은 보안 취약점을 방지하기 위한 방법은 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#12-cdn%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;12. CDN이란 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#13-aws%EC%99%80-%EA%B0%99%EC%9D%80-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B8-%EA%B2%BD%ED%97%98%EC%9D%B4-%EC%9E%88%EB%82%98%EC%9A%94-%EC%9E%88%EC%9C%BC%EB%A9%B4-%EC%9E%A5%EC%A0%90%EB%8F%84-%EB%A7%90%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94&quot;&gt;13. AWS와 같은 클라우드 서비스를 사용해본 경험이 있나요? 있으면 장점도 말해주세요.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#14-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%B4-%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EA%B8%B0%EC%88%A0%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;14. 빅데이터 처리를 위해 자주 사용하는 기술은 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#15-%EB%8F%84%EC%BB%A4%EC%99%80-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EC%97%90-%EB%8C%80%ED%95%B4-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94&quot;&gt;15. 도커와 쿠버네티스에 대해 설명해주세요.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#16-%EB%8F%84%EC%BB%A4%EC%99%80-vm-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%84-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94&quot;&gt;16. 도커와 VM 차이점을 설명해주세요.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[👿백엔드 개발 면접 질문1]]></title><description><![CDATA[…]]></description><link>https://smk692.github.io/CS/backend-interview/</link><guid isPermaLink="false">https://smk692.github.io/CS/backend-interview/</guid><pubDate>Tue, 25 Apr 2023 04:21:30 GMT</pubDate><content:encoded>&lt;p&gt;👿백엔드 개발 면접에는 가장 일반적인 답변을 원하는 기본적인 질문과 &lt;strong&gt;우리가 함께할 수 있도록&lt;/strong&gt; 도움을 줄 수 있는 기타 질문들이 있다.&lt;/p&gt;
&lt;h2 id=&quot;기본적인-면접-질문&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9D%B8-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8&quot; aria-label=&quot;기본적인 면접 질문 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;em&gt;기본적인 면접 질문&lt;/em&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;귀하의 개발 스택과 경험 등에 관해 이야기해주시겠습니까?&lt;/li&gt;
&lt;li&gt;당신의 가장 잘하는 분야와 개발 노하우는 무엇입니까?&lt;/li&gt;
&lt;li&gt;개발 경험과 현업 경험, 왜 그것을 선택했습니까?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;개발-실력을-밝히는-질문&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EA%B0%9C%EB%B0%9C-%EC%8B%A4%EB%A0%A5%EC%9D%84-%EB%B0%9D%ED%9E%88%EB%8A%94-%EC%A7%88%EB%AC%B8&quot; aria-label=&quot;개발 실력을 밝히는 질문 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&lt;em&gt;개발 실력을 밝히는 질문&lt;/em&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;당신이 개발할 때 어떤 디자인패턴과 테스트 프레임 워크를 사용합니까?&lt;/li&gt;
&lt;li&gt;REST API, SOAP 및 Microservice 개발에 대한 경험이 있습니까?&lt;/li&gt;
&lt;li&gt;고객이 기대하는 솔루션에 대해 설명해주시겠습니까?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;1-java에서-다형성polymorphism이란-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-java%EC%97%90%EC%84%9C-%EB%8B%A4%ED%98%95%EC%84%B1polymorphism%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;1 java에서 다형성polymorphism이란 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Java에서 다형성(Polymorphism)이란 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;다형성은 객체 지향 프로그래밍에서 하나의 메서드나 클래스가 다양한 형태를 갖는 것을 말합니다. Java에서는 메서드 오버로딩, 메서드 오버라이딩, 상속 등의 기능으로 다형성을 구현할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-자바에서-오버로딩overloading과-오버라이딩overriding의-차이는-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9overloading%EA%B3%BC-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9overriding%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;2 자바에서 오버로딩overloading과 오버라이딩overriding의 차이는 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. 자바에서 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이는 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;오버로딩은 같은 이름의 메서드를 매개변수의 개수나 타입 등을 다르게 정의하는 것을 말하며, 오버라이딩은 상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하는 것을 말합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-자바에서-메모리-관리-방식은-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#3-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%8B%9D%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;3 자바에서 메모리 관리 방식은 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. 자바에서 메모리 관리 방식은 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Java에서는 가비지 컬렉터(Garbage Collector)가 자동으로 메모리를 관리합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;가비지 컬렉터는 더 이상 사용되지 않는 객체를 자동으로 파악하고 삭제하여 메모리를 확보합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;4-자바에서-스레드thread란-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#4-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EC%8A%A4%EB%A0%88%EB%93%9Cthread%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;4 자바에서 스레드thread란 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. 자바에서 스레드(Thread)란 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;스레드는 프로그램에서 실행되는 최소의 단위로, 한 번에 여러 개의 작업을 동시에 처리할 수 있습니다. Java에서는 스레드를 구현하기 위해 Thread 클래스를 제공합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;5-자바에서-동기화synchronization란-무엇이며-어떻게-구현할-수-있나요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#5-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EB%8F%99%EA%B8%B0%ED%99%94synchronization%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EA%B5%AC%ED%98%84%ED%95%A0-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94&quot; aria-label=&quot;5 자바에서 동기화synchronization란 무엇이며 어떻게 구현할 수 있나요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. 자바에서 동기화(Synchronization)란 무엇이며, 어떻게 구현할 수 있나요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;동기화는 여러 스레드가 동시에 하나의 자원을 사용할 때, 순서를 지정하여 충돌을 방지하는 것을 말합니다. Java에서는 synchronized 키워드를 사용하여 메서드나 블록을 동기화할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;6-자바에서-컬렉션collection-프레임워크란-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#6-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EC%BB%AC%EB%A0%89%EC%85%98collection-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;6 자바에서 컬렉션collection 프레임워크란 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. 자바에서 컬렉션(Collection) 프레임워크란 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;컬렉션 프레임워크는 데이터 그룹을 다루기 위한 인터페이스와 클래스의 집합을 말합니다. Java에서는 List, Set, Map 등의 인터페이스와 이를 구현한 클래스를 제공합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;7-자바에서-exception과-error의-차이는-무엇인가요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#7-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-exception%EA%B3%BC-error%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot; aria-label=&quot;7 자바에서 exception과 error의 차이는 무엇인가요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. 자바에서 Exception과 Error의 차이는 무엇인가요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Exception은 프로그램 실행 중 발생하는 일반적인 예외 상황을 처리할 때 사용하며, Error는 프로그램이 복구할 수 없는 치명적인 오류를 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;8-자바에서-garbage-collectiongc이란-무엇이며-어떻게-작동하나요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#8-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-garbage-collectiongc%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%ED%95%98%EB%82%98%EC%9A%94&quot; aria-label=&quot;8 자바에서 garbage collectiongc이란 무엇이며 어떻게 작동하나요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;8. 자바에서 Garbage Collection(GC)이란 무엇이며, 어떻게 작동하나요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Garbage Collection은 자동으로 사용되지 않는 객체를 파악하고 삭제하여 메모리를 확보합니다. GC는 JVM(Java Virtual Machine)이 관리하며, 메모리 할당과 해제를 자동으로 수행합니다.&lt;/li&gt;
&lt;li&gt;GC는 객체의 참조 횟수를 계산하여 더 이상 참조되지 않는 객체를 파악하고, 이를 메모리에서 제거하여 확보합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;9-자바에서-직렬화serialization란-무엇이며-어떻게-구현할-수-있나요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#9-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EC%A7%81%EB%A0%AC%ED%99%94serialization%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EA%B5%AC%ED%98%84%ED%95%A0-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94&quot; aria-label=&quot;9 자바에서 직렬화serialization란 무엇이며 어떻게 구현할 수 있나요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;9. 자바에서 직렬화(Serialization)란 무엇이며, 어떻게 구현할 수 있나요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;직렬화는 객체를 바이트 스트림으로 변환하는 과정을 말합니다. Java에서는 Serializable 인터페이스를 구현하여 객체를 직렬화할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;10-자바에서-jdbc란-무엇이며-어떻게-사용하나요&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#10-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-jdbc%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%82%98%EC%9A%94&quot; aria-label=&quot;10 자바에서 jdbc란 무엇이며 어떻게 사용하나요 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;10. 자바에서 JDBC란 무엇이며, 어떻게 사용하나요?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속하여 데이터를 처리하는 데 사용하는 API입니다.&lt;/li&gt;
&lt;li&gt;JDBC는 DriverManager, Connection, Statement 등의 인터페이스와 클래스를 제공하며, 데이터베이스 연결, 쿼리 실행, 결과 처리 등의 작업을 수행할 수 있습니다. 예를 들어, 데이터베이스 연결을 위해서는 DriverManager.getConnection() 메서드를 사용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;table-of-contents&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9D%B8-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8&quot;&gt;&lt;em&gt;기본적인 면접 질문&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EA%B0%9C%EB%B0%9C-%EC%8B%A4%EB%A0%A5%EC%9D%84-%EB%B0%9D%ED%9E%88%EB%8A%94-%EC%A7%88%EB%AC%B8&quot;&gt;&lt;em&gt;개발 실력을 밝히는 질문&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-java%EC%97%90%EC%84%9C-%EB%8B%A4%ED%98%95%EC%84%B1polymorphism%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;1. Java에서 다형성(Polymorphism)이란 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9overloading%EA%B3%BC-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9overriding%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;2. 자바에서 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이는 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%EB%B0%A9%EC%8B%9D%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;3. 자바에서 메모리 관리 방식은 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EC%8A%A4%EB%A0%88%EB%93%9Cthread%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;4. 자바에서 스레드(Thread)란 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EB%8F%99%EA%B8%B0%ED%99%94synchronization%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EA%B5%AC%ED%98%84%ED%95%A0-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94&quot;&gt;5. 자바에서 동기화(Synchronization)란 무엇이며, 어떻게 구현할 수 있나요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EC%BB%AC%EB%A0%89%EC%85%98collection-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;6. 자바에서 컬렉션(Collection) 프레임워크란 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-exception%EA%B3%BC-error%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94&quot;&gt;7. 자바에서 Exception과 Error의 차이는 무엇인가요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#8-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-garbage-collectiongc%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%ED%95%98%EB%82%98%EC%9A%94&quot;&gt;8. 자바에서 Garbage Collection(GC)이란 무엇이며, 어떻게 작동하나요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#9-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-%EC%A7%81%EB%A0%AC%ED%99%94serialization%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EA%B5%AC%ED%98%84%ED%95%A0-%EC%88%98-%EC%9E%88%EB%82%98%EC%9A%94&quot;&gt;9. 자바에서 직렬화(Serialization)란 무엇이며, 어떻게 구현할 수 있나요?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#10-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-jdbc%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%82%98%EC%9A%94&quot;&gt;10. 자바에서 JDBC란 무엇이며, 어떻게 사용하나요?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[테라폼(Terraform) 기초의 모든것!]]></title><description><![CDATA[📒 테라폼(Terraform) 이란? 테라폼(Terraform)은 인프라스트럭처를 코드로 관리하기 위한 오픈소스 도구입니다.
AWS, Google Cloud Platform, Microsoft Azure…]]></description><link>https://smk692.github.io/infra/terraform-standard/contents/</link><guid isPermaLink="false">https://smk692.github.io/infra/terraform-standard/contents/</guid><pubDate>Mon, 24 Apr 2023 17:15:25 GMT</pubDate><content:encoded>&lt;h2 id=&quot;-테라폼terraform-이란&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%ED%85%8C%EB%9D%BC%ED%8F%BCterraform-%EC%9D%B4%EB%9E%80&quot; aria-label=&quot; 테라폼terraform 이란 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;📒 테라폼(Terraform) 이란?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;테라폼(Terraform)은 인프라스트럭처를 코드로 관리하기 위한 오픈소스 도구입니다.
AWS, Google Cloud Platform, Microsoft Azure 등 다양한 클라우드 서비스 및 온프레미스 인프라를 지원하며, 코드로 인프라를 구성하고 변경사항을 추적, 관리할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;테라폼을 사용하는 이유는 다음과 같습니다.&lt;/p&gt;
&lt;h3 id=&quot;장점&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%9E%A5%EC%A0%90&quot; aria-label=&quot;장점 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;장점:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;코드로 인프라를 관리하기 때문에, 반복적이고 일관성 있는 인프라 구성이 가능합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;코드 관리 도구(Git 등)를 사용하여 변경 이력을 추적하고, 이력에 따라 인프라를 복원할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;다양한 클라우드 서비스 및 온프레미스 인프라를 지원하며, 인프라 복잡도가 높아지더라도 코드로 관리할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;테라폼은 인프라를 변경할 때 새로운 인프라를 만들고 이전 인프라를 제거하는 방식으로 변경사항을 적용합니다. 이를 통해 변경사항 적용 중에도 인프라의 안정성을 유지할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;단점&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EB%8B%A8%EC%A0%90&quot; aria-label=&quot;단점 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;단점:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;학습 곡선이 높습니다. 테라폼은 다양한 기능과 구성 요소를 제공하기 때문에 처음 접근하는 사용자에게는 이해하기 어려울 수 있습니다.&lt;/li&gt;
&lt;li&gt;테라폼 코드 작성 시 모듈화가 필요한 경우가 많습니다.&lt;/li&gt;
&lt;li&gt;모듈화된 코드를 작성하려면, 추가적인 학습과 경험이 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;
&lt;h2 id=&quot;️-테라폼의-기본-파일-구성-및-셈플-정리&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EF%B8%8F-%ED%85%8C%EB%9D%BC%ED%8F%BC%EC%9D%98-%EA%B8%B0%EB%B3%B8-%ED%8C%8C%EC%9D%BC-%EA%B5%AC%EC%84%B1-%EB%B0%8F-%EC%85%88%ED%94%8C-%EC%A0%95%EB%A6%AC&quot; aria-label=&quot;️ 테라폼의 기본 파일 구성 및 셈플 정리 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;⚙️ 테라폼의 기본 파일 구성 및 셈플 정리&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;main.tf 파일에는 인프라를 구성하는 리소스와 데이터 소스를 정의합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;lua&quot;&gt;&lt;pre class=&quot;language-lua&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;provider &lt;span class=&quot;token string&quot;&gt;&quot;aws&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    region &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; var&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;region
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

resource &lt;span class=&quot;token string&quot;&gt;&quot;aws_instance&quot;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;example&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    ami           &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; var&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ami_id
    instance_type &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; var&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;instance_type

    tags &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ExampleInstance&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;variables.tf 파일에는 입력 변수를 정의합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;lua&quot;&gt;&lt;pre class=&quot;language-lua&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;variable &lt;span class=&quot;token string&quot;&gt;&quot;region&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    type        &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; string
    description &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;AWS region to create resources in&quot;&lt;/span&gt;
    default     &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;us-west-2&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

variable &lt;span class=&quot;token string&quot;&gt;&quot;ami_id&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    type        &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; string
    description &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;AMI ID for EC2 instance&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

variable &lt;span class=&quot;token string&quot;&gt;&quot;instance_type&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    type        &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; string
    description &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;EC2 instance type&quot;&lt;/span&gt;
    default     &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;t2.micro&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;outputs.tf 파일에는 출력 변수를 정의합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;lua&quot;&gt;&lt;pre class=&quot;language-lua&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;output &lt;span class=&quot;token string&quot;&gt;&quot;public_ip&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; aws_instance&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;example&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;public_ip
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;backend.tf 테라폼 상태 파일을 저장하는 위치와 형식을 지정할 수 있습니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;lua&quot;&gt;&lt;pre class=&quot;language-lua&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt; S3 버킷에 상태를 저장하는데 사용합니다&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; 
&lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt; 동시성 체크 및 이미 만들어져 연관 있는 구조를 갖고올 떄 사용합니다&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;terraform&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
 backend &lt;span class=&quot;token string&quot;&gt;&quot;s3&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        bucket &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;my-terraform-state&quot;&lt;/span&gt;
        key    &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;terraform.tfstate&quot;&lt;/span&gt;
        region &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;us-west-2&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;env.tfvars 파일에서는 환경 변수를 정의합니다. 환경 변수는 테라폼 실행 시 -var-file 옵션을 사용하여 지정할 수 있습니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;lua&quot;&gt;&lt;pre class=&quot;language-lua&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;region          &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;us-west-2&quot;&lt;/span&gt;
ami_id          &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ami-0c55b159cbfafe1f0&quot;&lt;/span&gt;
instance_type   &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;t2.micro&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;
&lt;h2 id=&quot;️-구성-문법은-아래와-같습니다&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EF%B8%8F-%EA%B5%AC%EC%84%B1-%EB%AC%B8%EB%B2%95%EC%9D%80-%EC%95%84%EB%9E%98%EC%99%80-%EA%B0%99%EC%8A%B5%EB%8B%88%EB%8B%A4&quot; aria-label=&quot;️ 구성 문법은 아래와 같습니다 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;⚙️ 구성 문법은 아래와 같습니다.&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;data : 리소스가 아닌 데이터 소스(Data Source)를 정의하는 명령어입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;module : 모듈(Module)을 정의하는 명령어입니다. 모듈은 재사용 가능한 코드 블록으로, 테라폼 코드를 더욱 모듈화하여 코드의 가독성과 유지보수성을 높일 수 있습니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;lua&quot;&gt;&lt;pre class=&quot;language-lua&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;module &lt;span class=&quot;token string&quot;&gt;&quot;vpc&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt; source 선언된 디렉토리 메인 코드의 호출하는데 사용됩니다&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;
    source &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;terraform-aws-modules/vpc/aws&quot;&lt;/span&gt;

    name                 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;example-vpc&quot;&lt;/span&gt;
    cidr                 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;10.0.0.0/16&quot;&lt;/span&gt;
    azs                  &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;us-west-2a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;us-west-2b&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    public_subnets       &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;10.0.1.0/24&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;10.0.2.0/24&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    private_subnets      &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;10.0.10.0/24&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;10.0.20.0/24&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    enable_nat_gateway   &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt;
    single_nat_gateway   &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt;
    enable_dns_hostnames &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;provider : 사용할 클라우드 서비스 공급자(Provider)를 정의하는 명령어입니다. 예를 들어, AWS를 사용하는 경우 provider “aws” {}와 같이 작성합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;lua&quot;&gt;&lt;pre class=&quot;language-lua&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;provider &lt;span class=&quot;token string&quot;&gt;&quot;aws&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    region &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;us-west-2&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

resource &lt;span class=&quot;token string&quot;&gt;&quot;aws_instance&quot;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;example&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    ami           &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ami-0c55b159cbfafe1f0&quot;&lt;/span&gt;
    instance_type &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;t2.micro&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;variable : 입력 변수(Variable)를 정의하는 명령어입니다. 예를 들어, 특정 AMI ID를 변수로 지정하여 EC2 인스턴스를 생성하는 경우 variable “ami_id” {}와 같이 작성합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;lua&quot;&gt;&lt;pre class=&quot;language-lua&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;variable &lt;span class=&quot;token string&quot;&gt;&quot;ami_id&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    type        &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; string
    description &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;AMI ID for EC2 instance&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

resource &lt;span class=&quot;token string&quot;&gt;&quot;aws_instance&quot;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;example&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    ami           &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; var&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ami_id
    instance_type &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;t2.micro&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;output : 출력 변수(Output)를 정의하는 명령어입니다. 예를 들어, EC2 인스턴스의 IP 주소를 출력하는 경우 output “instance_ip” {}와 같이 작성합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;lua&quot;&gt;&lt;pre class=&quot;language-lua&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;resource &lt;span class=&quot;token string&quot;&gt;&quot;aws_instance&quot;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;example&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    ami           &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ami-0c55b159cbfafe1f0&quot;&lt;/span&gt;
    instance_type &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;t2.micro&quot;&lt;/span&gt;

    provisioner &lt;span class=&quot;token string&quot;&gt;&quot;local-exec&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        command &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;echo ${self.public_ip} &gt; ip_address.txt&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

output &lt;span class=&quot;token string&quot;&gt;&quot;instance_ip&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; aws_instance&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;example&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;public_ip
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;-여러가지의-아키텍처-정리&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80%EC%9D%98-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%A0%95%EB%A6%AC&quot; aria-label=&quot; 여러가지의 아키텍처 정리 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔗 여러가지의 아키텍처 정리&lt;/h2&gt;
&lt;h3 id=&quot;초안-1&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%B4%88%EC%95%88-1&quot; aria-label=&quot;초안 1 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;초안 1&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;├── main.tf
├── variables.tf
├── outputs.tf
├── backend.tf
├── env.tfvars
├── modules
│   ├── vpc
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   ├── outputs.tf
│   │   └── README.md
│   ├── ec2
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   ├── outputs.tf
│   │   └── README.md
│   └── ...
├── data
│   ├── example.tf
│   └── ...
└── README.md&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;초안-2&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%B4%88%EC%95%88-2&quot; aria-label=&quot;초안 2 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;초안 2&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;├── infra
│   ├── rds
│   │   ├── mariana_db
│   │   │   ├── README.md
│   │   │   ├── backend.tf
│   │   │   ├── env-dev.tfvars
│   │   │   ├── env-staging.tfvars
│   │   │   ├── main.tf
│   │   │   ├── terraform.tf
│   │   │   └── variables.tf
│   └── vpc
│       ├── README.md
│       ├── backend.tf
│       ├── env-dev.tfvars
│       ├── env-staging.tfvars
│       ├── main.tf
│       ├── terraform.tf
│       └── variables.tf
├── modules
│   ├── ec2
│   │   ├── ec2.tf
│   │   ├── main.tf
│   │   ├── output.tf
│   │   └── variables.tf
│   ├── loadbalancer
│   │   ├── main.tf
│   │   └── variables.tf
│   └── ...
└── service
    ├── backend_example
    │   ├── README.md
    │   ├── alb.tf
    │   ├── ec2.tf
    │   ├── provider.tf
    │   ├── script.sh
    │   ├── terraform.tfvars
    │   └── variables.tf
    ├── frontend_example
    │    ├── README.md
    │    ├── backend.tf
    │    ├── env-dev.tfvars
    │    ├── env-prod.tfvars
    │    ├── env-stage.tfvars
    │    ├── main.tf
    │    ├── terraform.tf
    │    └── variables.tf
    │
    └── ...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;️-테라폼-실행-명령어는-다음과-같습니다&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EF%B8%8F-%ED%85%8C%EB%9D%BC%ED%8F%BC-%EC%8B%A4%ED%96%89-%EB%AA%85%EB%A0%B9%EC%96%B4%EB%8A%94-%EB%8B%A4%EC%9D%8C%EA%B3%BC-%EA%B0%99%EC%8A%B5%EB%8B%88%EB%8B%A4&quot; aria-label=&quot;️ 테라폼 실행 명령어는 다음과 같습니다 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✒️ 테라폼 실행 명령어는 다음과 같습니다.&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;sh&quot;&gt;&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;terraform init      &lt;span class=&quot;token comment&quot;&gt;# 명령어를 사용하여 테라폼 설정을 초기화합니다.&lt;/span&gt;
terraform plan      &lt;span class=&quot;token comment&quot;&gt;# 명령어를 사용하여 인프라 변경사항을 검토합니다.&lt;/span&gt;
terraform apply     &lt;span class=&quot;token comment&quot;&gt;# 명령어를 사용하여 인프라 변경사항을 적용합니다.&lt;/span&gt;
terraform destroy   &lt;span class=&quot;token comment&quot;&gt;# 명령어를 사용하여 인프라를 제거합니다.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;-소감&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EC%86%8C%EA%B0%90&quot; aria-label=&quot; 소감 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;💙 소감&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;이상으로 테라폼(Terraform)에 대한 기본적인 내용과 테라폼 코드의 구조, 명령어 등에 대해 알아보았습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;테라폼은 클라우드 인프라를 코드로 관리하고, 자동화된 인프라 배포를 가능케 해주는 강력한 도구입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;마지막으로-테라폼과-같이-쓰면-좋은것들-&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EB%A7%88%EC%A7%80%EB%A7%89%EC%9C%BC%EB%A1%9C-%ED%85%8C%EB%9D%BC%ED%8F%BC%EA%B3%BC-%EA%B0%99%EC%9D%B4-%EC%93%B0%EB%A9%B4-%EC%A2%8B%EC%9D%80%EA%B2%83%EB%93%A4-&quot; aria-label=&quot;마지막으로 테라폼과 같이 쓰면 좋은것들  permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;마지막으로 테라폼과 같이 쓰면 좋은것들 !&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Packer: 인프라를 위한 커스텀 이미지를 만들기 위한 도구입니다. Packer를 사용하면 인프라 리소스를 미리 설치하고 구성하여 커스텀 이미지를 생성할 수 있습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vault: 보안 관리 도구로, 테라폼에서 사용되는 비밀 정보를 안전하게 관리할 수 있도록 도와줍니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Atlantis: 테라폼 코드의 변경 사항을 버전 관리 시스템과 연동하여 자동화된 코드 검토를 제공하는 도구입니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Terratest: 테라폼 코드의 단위 테스트를 위한 도구로, 테스트 코드를 작성하여 테라폼 코드 변경 사항이 프로덕션에 영향을 미치지 않도록 보장합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 외에도 다양한 테라폼과 관련된 도구들이 있습니다. 이들 도구들을 활용하면 테라폼을 더욱 효율적으로 사용할 수 있으며, 코드의 가독성과 유지보수성을 높일 수 있습니다.&lt;/p&gt;
&lt;p&gt;감사합니다!&lt;/p&gt;
&lt;div class=&quot;table-of-contents&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#-%ED%85%8C%EB%9D%BC%ED%8F%BCterraform-%EC%9D%B4%EB%9E%80&quot;&gt;📒 테라폼(Terraform) 이란?&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%EC%9E%A5%EC%A0%90&quot;&gt;장점:&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%EB%8B%A8%EC%A0%90&quot;&gt;단점:&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EF%B8%8F-%ED%85%8C%EB%9D%BC%ED%8F%BC%EC%9D%98-%EA%B8%B0%EB%B3%B8-%ED%8C%8C%EC%9D%BC-%EA%B5%AC%EC%84%B1-%EB%B0%8F-%EC%85%88%ED%94%8C-%EC%A0%95%EB%A6%AC&quot;&gt;⚙️ 테라폼의 기본 파일 구성 및 셈플 정리&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EF%B8%8F-%EA%B5%AC%EC%84%B1-%EB%AC%B8%EB%B2%95%EC%9D%80-%EC%95%84%EB%9E%98%EC%99%80-%EA%B0%99%EC%8A%B5%EB%8B%88%EB%8B%A4&quot;&gt;⚙️ 구성 문법은 아래와 같습니다.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80%EC%9D%98-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%A0%95%EB%A6%AC&quot;&gt;🔗 여러가지의 아키텍처 정리&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%EC%B4%88%EC%95%88-1&quot;&gt;초안 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%EC%B4%88%EC%95%88-2&quot;&gt;초안 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EF%B8%8F-%ED%85%8C%EB%9D%BC%ED%8F%BC-%EC%8B%A4%ED%96%89-%EB%AA%85%EB%A0%B9%EC%96%B4%EB%8A%94-%EB%8B%A4%EC%9D%8C%EA%B3%BC-%EA%B0%99%EC%8A%B5%EB%8B%88%EB%8B%A4&quot;&gt;✒️ 테라폼 실행 명령어는 다음과 같습니다.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#-%EC%86%8C%EA%B0%90&quot;&gt;💙 소감&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#%EB%A7%88%EC%A7%80%EB%A7%89%EC%9C%BC%EB%A1%9C-%ED%85%8C%EB%9D%BC%ED%8F%BC%EA%B3%BC-%EA%B0%99%EC%9D%B4-%EC%93%B0%EB%A9%B4-%EC%A2%8B%EC%9D%80%EA%B2%83%EB%93%A4-&quot;&gt;마지막으로 테라폼과 같이 쓰면 좋은것들 !&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[🚀 Git Blog 자동화 하는법]]></title><description><![CDATA[…]]></description><link>https://smk692.github.io/blog-post-automation/contents/</link><guid isPermaLink="false">https://smk692.github.io/blog-post-automation/contents/</guid><pubDate>Sun, 23 Apr 2023 18:21:25 GMT</pubDate><content:encoded>&lt;h2 id=&quot;-블로그를-왜-써야-하는지&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%99%9C-%EC%8D%A8%EC%95%BC-%ED%95%98%EB%8A%94%EC%A7%80&quot; aria-label=&quot; 블로그를 왜 써야 하는지 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🚀 블로그를 왜 써야 하는지?!&lt;/h2&gt;
&lt;p&gt;개발자는 기술 블로그를 통해 자신의 경험을 공유하고, 다른 개발자들과 지식을 공유하며 성장할 수 있습니다.&lt;/p&gt;
&lt;p&gt;또한, 블로그를 운영함으로써 자신의 프로젝트나 포트폴리오를 보다 쉽게 공유하고, 개인 브랜딩에도 도움이 됩니다.&lt;/p&gt;
&lt;br/&gt;
&lt;blockquote&gt;
&lt;p&gt;솔직하게 광고로 얼마를 벌 수 있는지 한번 심심해서 시작했습니다. ㅎㅎㅎ…&lt;/p&gt;
&lt;p&gt;개발에 대해 살짝이라도 알고 계시면 추천 합니다!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br/&gt;
&lt;h2 id=&quot;-준비물이-무엇이-필요한지&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EC%A4%80%EB%B9%84%EB%AC%BC%EC%9D%B4-%EB%AC%B4%EC%97%87%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C%EC%A7%80&quot; aria-label=&quot; 준비물이 무엇이 필요한지 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔨 준비물이 무엇이 필요한지?!&lt;/h2&gt;
&lt;p&gt;자동화된 Git Blog를 운영하기 위해 필요한 준비물은 다음과 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Git 계정 및 블로그 호스팅 플랫폼 (e.g. GitHub, GitLab, Bitbucket, Gitea 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;정적 사이트 생성기 (e.g. Jekyll, Hugo, Pelican 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;마크다운 에디터 (e.g. Typora, Visual Studio Code 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;자동화 스크립트 (e.g. GitHub Actions, Travis CI 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;제가 세웠던 아키텍처는 GitHub Actions를 사용하여 Jekyll 기반의 정적 블로그를 자동화하는 방법입니다.

1. Github blog 를 사용한다. (API 사용 할 수 있다면 어떤 블로그여도 상관없습니다.)

2. 스케쥴러를 돌릴 수 있는 환경이 있어야된다. (자동으로 주제에 대해 ChatGpt 한테 써달라고 할거거든요.)

3. 간단하게 실행 시킬 파일이 있어야됩니다. (Python, Node ...)

간단하게 정리하면 아키텍처는 아래와 같습니다.

    1. Python 을 이용해서 ChatGpt 연동 후 주제를 DB 또는 구글 시트로 모아 놓는다.
    2. Github action 스케쥴러를 사용하여 두개의 잡을 만든다. 
        a. 주제 생성 및 겹치지 않게 관리 하는 Job
        b. 주제에 대해 컨텐츠를 만드는 Job
    3. 스케쥴러가 정상적으로 돈 후 Github &gt; commit &amp;amp; deploy 진행 시킨다. (CI/CD 구축)

ps.나중에 그림 추가 예정입니다. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;-블로그-글을-자동화-하는방법-&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B8%80%EC%9D%84-%EC%9E%90%EB%8F%99%ED%99%94-%ED%95%98%EB%8A%94%EB%B0%A9%EB%B2%95-&quot; aria-label=&quot; 블로그 글을 자동화 하는방법  permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🧐 블로그 글을 자동화 하는방법 !?&lt;/h2&gt;
&lt;p&gt;블로그를 자동화하는 방법은 크게 두 가지로 나눌 수 있습니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;첫째는 정적 사이트 생성기와 Git 호스팅 플랫폼을 사용하여 블로그를 만든 뒤, Git Action과 같은 CI/CD 도구를 이용하여 컨텐츠를 자동으로 생성하고, 빌드 및 배포하는 방법입니다. 이 방법은 블로그의 구조가 정적이기 때문에 작성된 컨텐츠가 많지 않다면 좀 더 쉽게 자동화할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;둘째는 동적인 블로그를 만들어 서버를 통해 자동화하는 방법입니다. 이 방법은 블로그가 동적인 특성을 띄기 때문에 컨텐츠를 생성하고 배포하는 과정이 더 복잡해질 수 있습니다. 그러나 이 방법을 사용하면 블로그에 좀 더 많은 기능을 추가할 수 있으며, 블로그 운영에 있어서 더욱 유연성이 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;어떤 방법을 선택하더라도 블로그를 자동화하는 것은 개발자로서의 역량을 높이는데 큰 도움이 됩니다. 컨텐츠를 생성하고, 배포하는 과정을 자동화함으로써 개발자는 좀 더 많은 시간을 개발에 집중할 수 있으며, 블로그 운영에 대한 부담을 줄일 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;저는 두번째 방법으로 진행할 예정입니다.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;git-blog-만드는법&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#git-blog-%EB%A7%8C%EB%93%9C%EB%8A%94%EB%B2%95&quot; aria-label=&quot;git blog 만드는법 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Git blog 만드는법&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;블로그 저장소 생성 및 Jekyll 테마 적용&lt;/li&gt;
&lt;li&gt;GitHub, GitLab, Bitbucket 등의 Git 호스팅 플랫폼에서 새로운 저장소를 생성하고, Jekyll 기반의 정적 블로그 테마를 적용합니다.&lt;/li&gt;
&lt;li&gt;제 경우는 &lt;a href=&quot;https://github.com/zoomKoding/zoomkoding-gatsby-blog/&quot;&gt;줌코딩님 Blog&lt;/a&gt; 템플릿을 갖고와서 사용했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;자동화-스크립트-작성&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%9E%90%EB%8F%99%ED%99%94-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%9E%91%EC%84%B1&quot; aria-label=&quot;자동화 스크립트 작성 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;자동화 스크립트 작성&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;GitHub Actions을 사용하여 블로그를 자동으로 빌드하고 배포하는 자동화 스크립트를 작성합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Github action 전에 준비 작업&lt;/strong&gt;
해당하는 Github Reposittory &gt; setting &gt; security &gt; action&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MY_EMAIL, MY_NAME, MY_TOKEN, OPENAI_API_KEY 추가해주세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 73.33333333333334%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAACC0lEQVR42o1UXW+cMBDk//+Pqs9VnvsXqvQhUp6qRhcOjLnj08bYhsmOOU6kSaRaGtkHy+zO7viyfhgQQgDXsixp77oeeZ6jLAqospDza/odJS7cEGOEP5zXdU3ImrZF3/d3so2wQ15qvOoBJ21RtRN0a6HrBkopaK2hqgpFUSKXpGdJWl8uEEpknZBdrldM05QycF2bBi+nM17yCn8Fp7xEoUiiUQphm4oYErzziC5gidu32bVpMYjsnYxrnuf0zBgD5yaR5eG9TzslJjUSHkTqw9NPfPv1A98fH1CbBlml63sP5+hhZgtyhxClNwvismJZ34PPiCDvn9UfPObP+C2wfkKmhdBYuw1lXQQRk5uh9AVVfUU/Wrg5YPoCZnQYOomxPlWdsR/EcVES5RBRzk5awKRW+szdyD4ai1nawPezD/AxbFOm5GEY3xFScrIBtp222BEOINmyHuJJyIypopufuOzkUFQ19KXBaJ1I819gk21l0gR5smSFskze43S5SNy2XZrynvlfcGAsZnKSUAowdrNdlp/pMYWm7YXQp36QsBNCenPv6UfCiHE0sEKUemtuhDQ2Dbp/SDCYt4fDOl6r/yLkXd6lHqdsZIr77fkMjHFiLxqeLmDfE6EWvylVpRdHQk6ePVw4qHX9AD7fkrpEdq9wl3j8c0iEImev/lPJEkOpbnapQg6HhG/rJY++tvIB5AAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;blog3.png&quot;
        title=&quot;&quot;
        src=&quot;/static/84e37f967d303757f008c1673736992a/37523/blog3.png&quot;
        srcset=&quot;/static/84e37f967d303757f008c1673736992a/e9ff0/blog3.png 180w,
/static/84e37f967d303757f008c1673736992a/f21e7/blog3.png 360w,
/static/84e37f967d303757f008c1673736992a/37523/blog3.png 720w,
/static/84e37f967d303757f008c1673736992a/302a4/blog3.png 1080w,
/static/84e37f967d303757f008c1673736992a/07a9c/blog3.png 1440w,
/static/84e37f967d303757f008c1673736992a/fa63f/blog3.png 2298w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;이 스크립트는 블로그 저장소의 .github/workflows 디렉토리에 작성됩니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;아래는 yaml 예시입니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;yaml&quot;&gt;&lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Auto Publish Blog Posts by 손(Son/손민기)

&lt;span class=&quot;token key atrule&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;schedule&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;cron&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;0 0 * * *&apos;&lt;/span&gt;

&lt;span class=&quot;token key atrule&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;generate-blog-post&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token key atrule&quot;&gt;runs-on&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ubuntu&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;latest
    &lt;span class=&quot;token key atrule&quot;&gt;steps&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Checkout Repository
        &lt;span class=&quot;token key atrule&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; actions/checkout@v2

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Set up Python
        &lt;span class=&quot;token key atrule&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; actions/setup&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;python@v2
        &lt;span class=&quot;token key atrule&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;python-version&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3.x

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Cache Python packages
        &lt;span class=&quot;token key atrule&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; actions/cache@v2
        &lt;span class=&quot;token key atrule&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ~/.cache/pip
        &lt;span class=&quot;token key atrule&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; runner.os &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;pip&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;$&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; hashFiles(&apos;&lt;span class=&quot;token important&quot;&gt;**/requirements.txt&apos;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;restore-keys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token scalar string&quot;&gt;
            ${{ runner.os }}-pip-&lt;/span&gt;

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Install Required Python Packages
        &lt;span class=&quot;token key atrule&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token scalar string&quot;&gt;
        python -m pip install --upgrade pip
        pip install gitpython
        pip install -r requirements.txt&lt;/span&gt;

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Generate Blog Post
        &lt;span class=&quot;token key atrule&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; secrets.OPENAI_API_KEY &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; python generate_blog_post.py

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Commit Changes
        &lt;span class=&quot;token key atrule&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;MY_EMAIL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; secrets.MY_EMAIL &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;MY_NAME&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; secrets.MY_NAME &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;MY_TOKEN&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; secrets.MY_TOKEN &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token scalar string&quot;&gt;
        git config --local user.email $MY_EMAIL
        git config --local user.name $MY_NAME&lt;/span&gt;

        git remote set&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;url origin https&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;//$MY_NAME&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;$MY_TOKEN@github.com/smk692/smk692.github.io.git

        git add .
        git commit &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;m &quot;Add a new blog post&quot;
        git push

&lt;span class=&quot;token key atrule&quot;&gt;deploy&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token key atrule&quot;&gt;needs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; generate&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;blog&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;post
    &lt;span class=&quot;token key atrule&quot;&gt;runs-on&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ubuntu&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;latest
    &lt;span class=&quot;token key atrule&quot;&gt;steps&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Checkout Repository
        &lt;span class=&quot;token key atrule&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; actions/checkout@v2

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; actions/setup&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;node@v3
        &lt;span class=&quot;token key atrule&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;node-version&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; v14.17.4

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Cache node modules
        &lt;span class=&quot;token key atrule&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; actions/cache@v2
        &lt;span class=&quot;token key atrule&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ~/.npm
        &lt;span class=&quot;token key atrule&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; runner.os &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;npm&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;$&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; hashFiles(&apos;&lt;span class=&quot;token important&quot;&gt;**/package-lock.json&apos;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;restore-keys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token scalar string&quot;&gt;
            ${{ runner.os }}-npm-&lt;/span&gt;

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Npm install
        &lt;span class=&quot;token key atrule&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; npm install

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Update blog
        &lt;span class=&quot;token key atrule&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;MY_EMAIL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; secrets.MY_EMAIL &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;MY_NAME&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; secrets.MY_NAME &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;MY_TOKEN&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; secrets.MY_TOKEN &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token scalar string&quot;&gt;
        git config --local user.email $MY_EMAIL
        git config --local user.name $MY_NAME&lt;/span&gt;

        git remote set&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;url origin https&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;//$MY_NAME&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;$MY_TOKEN@github.com/smk692/smk692.github.io.git

        npm run deploy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GitHub Actions을 사용하여 블로그 컨텐츠 업데이트하는 파이썬 코드입니다. (generate_blog_post.py)&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;python&quot;&gt;&lt;pre class=&quot;language-python&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# ...import 부분 생략 &lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;generate_contents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;topic&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    openai&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;api_key &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;getenv&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;OPENAI_API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    prompt_contents &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&apos;&apos;&apos;
        &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;topic&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 대해서 자세하게 적어줘
    &apos;&apos;&apos;&lt;/span&gt;&lt;/span&gt;

    contents &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; connection_chatgpt&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;prompt_contents&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    contents &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;contents&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;strip&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;split&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; contents

&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;connection_chatgpt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;prompt&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; openai&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Completion&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;create&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        model&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;text-davinci-003&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        prompt&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;prompt&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        temperature&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        max_tokens&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3800&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        top_p&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        frequency_penalty&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        presence_penalty&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    contents &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; choice &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; response&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;choices&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        contents &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; choice&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;text

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; contents

&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;create_blog_post&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;topic&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tags&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; categories&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; contents&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;# 폴더가 없으면 생성&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exists&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;directory_path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        os&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;makedirs&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;directory_path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;# 블로그 포스트에 사용될 메타데이터&lt;/span&gt;
    metadata &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;---&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;layout: post&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;title: \&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;topic&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;\&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;date: &apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;now&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;strftime&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;%Y-%m-%d %H:%M:%S&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;author: 손(Son/손민기)&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;tags: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;tags&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;categories: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;categories&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;---&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;# 블로그 포스트 파일 생성&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;file_name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;as&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        
        f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;write&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;join&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;metadata&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;write&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;write&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;contents&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;블로그 포스트 파일이 생성되었습니다: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;file_name&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; __name__ &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;

    topic       &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;블로그 자동화!&quot;&lt;/span&gt;
    tags        &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;gitblog&quot;&lt;/span&gt;
    categories  &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;자동화&quot;&lt;/span&gt;

    contents &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; generate_contents&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;topic&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    pprint&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pprint&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;contents&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    create_blog_post&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;topic&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tags&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; categories&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; contents&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;
&lt;h2 id=&quot;-완성된-결과에-대한-스크린샷&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EC%99%84%EC%84%B1%EB%90%9C-%EA%B2%B0%EA%B3%BC%EC%97%90-%EB%8C%80%ED%95%9C-%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7&quot; aria-label=&quot; 완성된 결과에 대한 스크린샷 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✅ 완성된 결과에 대한 스크린샷!&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Github action 글 생성 된 결과&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 43.888888888888886%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABDUlEQVR42oWR646EIAyFff/H3OwvnVG5CLRFzxZQRzPJSvIFWmsvp10/LfgZPH5fHuNsMVsP40PFugVGsUtESHxjiVS/GadxGutDgtO4rn+/MPQ9jLUQYazreiMf7237YgOw7XdISSF042zgl4BEDBaBdx4hJiTJSBpERGBuhe5na8kUlAJ78c44i6w/lxO1Qj+8a/uBRO3PiEntJ4hFExp7Vk/azTBOcKpJ0WhyDpEOzZpuT3S15f2wdlqcpVpLpG+W047/3CU26GTdVZWiVVlOW8S2sz7wiasaXhOKLuU965i6jJKcqFHe1d5hptNmluZXuaRoeE2Y86oLoXqLjn+Qc0MKWvRq5913+P8ARwfBSVhIScsAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;blog1.png&quot;
        title=&quot;&quot;
        src=&quot;/static/b0def8aafa9fad15bd9600b0d77d6165/37523/blog1.png&quot;
        srcset=&quot;/static/b0def8aafa9fad15bd9600b0d77d6165/e9ff0/blog1.png 180w,
/static/b0def8aafa9fad15bd9600b0d77d6165/f21e7/blog1.png 360w,
/static/b0def8aafa9fad15bd9600b0d77d6165/37523/blog1.png 720w,
/static/b0def8aafa9fad15bd9600b0d77d6165/302a4/blog1.png 1080w,
/static/b0def8aafa9fad15bd9600b0d77d6165/07a9c/blog1.png 1440w,
/static/b0def8aafa9fad15bd9600b0d77d6165/e216b/blog1.png 1904w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Github action 글 배포 된 결과&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 46.666666666666664%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAABYlAAAWJQFJUiTwAAABSUlEQVR42o1RB27DMAz0p4uiIztGkq5vphl2bMuSrOUryQygRltUwPkomTxSp2y5+cDz/AX3kzXunnOM5yvkm3csVq/I12/Co1kuGF/4abLAw2gm/DieC4+mOabLDTLrIyobUWhCG9G5AEewzqPzASEmgQ+REND3PVIPeDqLFAfaEElOoiDblntsP7cojkfs9zuoRiFRcYgE4iiC1324xTGlGxvb4VQ1sJ1DVtYKTdvSNF4OIiU1TQNtDBIla61pYgdrrfxjDJdMTbnM2aEuqMjIJLy44HAssTsUaJQmC7zAdl7s4NiRFUOcLYk8YQVjLPpLN77msaxRk1hrOhgSUsQca+v+BPueOfqwyHWxL5VScsYdFTU70f5Usw1WHspQMTcagm+QDf0Qk7sAfUnizizI/vqQfhT6h+D3xJoeRtNLcsFvYmd7HL4AefWkJCTLKkYAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;blog1.png&quot;
        title=&quot;&quot;
        src=&quot;/static/c39054a110322d2ade3f4eebe910334b/37523/blog2.png&quot;
        srcset=&quot;/static/c39054a110322d2ade3f4eebe910334b/e9ff0/blog2.png 180w,
/static/c39054a110322d2ade3f4eebe910334b/f21e7/blog2.png 360w,
/static/c39054a110322d2ade3f4eebe910334b/37523/blog2.png 720w,
/static/c39054a110322d2ade3f4eebe910334b/302a4/blog2.png 1080w,
/static/c39054a110322d2ade3f4eebe910334b/07a9c/blog2.png 1440w,
/static/c39054a110322d2ade3f4eebe910334b/57dee/blog2.png 3004w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Github blog 업데이트 된 결과&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 48.888888888888886%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAABGklEQVR42pVSTU+EMBDlb3r1N+zZg0d/jVfjwcQY430vXHeXRZB+AYVuF9pnp7saYyCBl0ymTOc95k2aYALeezRNA845hmGINa01uq6LZ6pRzxQSzIAI/0nGnJCXX7D2PEebFiQhYwz6vodzLkx0EXh5fsLm9gbvb6/xm+4WC5Jlski2y6KI9TRN8XB/hyzLfvsWWvZRzFoL4jh3IdZ2wOPHFq0drl0rdkhKfhyD2BjzT8Q/+HHdDuEdZLCZ73ZopURf1zG6EDqEM33sWS4YJpFlAVZVkIJDSQElBARjYKyC1S3tYXL3yZxdUX6iyPYojwcUhz3qIKSVQMsZzp1eaTlAKhWm4eBhMsYpS0ipIELW1wf+dzJCdszxDePpDUbp/hRqAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;blog4.png&quot;
        title=&quot;&quot;
        src=&quot;/static/702a607cbb7c1ea06f187483516188fc/37523/blog4.png&quot;
        srcset=&quot;/static/702a607cbb7c1ea06f187483516188fc/e9ff0/blog4.png 180w,
/static/702a607cbb7c1ea06f187483516188fc/f21e7/blog4.png 360w,
/static/702a607cbb7c1ea06f187483516188fc/37523/blog4.png 720w,
/static/702a607cbb7c1ea06f187483516188fc/302a4/blog4.png 1080w,
/static/702a607cbb7c1ea06f187483516188fc/07a9c/blog4.png 1440w,
/static/702a607cbb7c1ea06f187483516188fc/3dd05/blog4.png 3800w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;
&lt;h1 id=&quot;소감&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%86%8C%EA%B0%90&quot; aria-label=&quot;소감 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;소감&lt;/h1&gt;
&lt;p&gt;이상으로 블로그 자동화에 대해 알아보았습니다.&lt;/p&gt;
&lt;p&gt;자동화를 통해 개발자는 블로그 운영을 보다 효율적으로 할 수 있고, 더 많은 시간을 개발에 집중할 수 있습니다.&lt;/p&gt;
&lt;p&gt;많은 개발자분들이 이 글을 보고 자신만의 자동화된 블로그를 운영하시길 바랍니다!&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;ps. 간단하게 짠거라 필요하면 갖고 가시면 됩니다. (대신 댓글 하나만 적어주세요.)

    반박 시 무조건 생각한게 맞습니다.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&quot;table-of-contents&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%99%9C-%EC%8D%A8%EC%95%BC-%ED%95%98%EB%8A%94%EC%A7%80&quot;&gt;🚀 블로그를 왜 써야 하는지?!&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#-%EC%A4%80%EB%B9%84%EB%AC%BC%EC%9D%B4-%EB%AC%B4%EC%97%87%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C%EC%A7%80&quot;&gt;🔨 준비물이 무엇이 필요한지?!&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B8%80%EC%9D%84-%EC%9E%90%EB%8F%99%ED%99%94-%ED%95%98%EB%8A%94%EB%B0%A9%EB%B2%95-&quot;&gt;🧐 블로그 글을 자동화 하는방법 !?&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#git-blog-%EB%A7%8C%EB%93%9C%EB%8A%94%EB%B2%95&quot;&gt;Git blog 만드는법&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%EC%9E%90%EB%8F%99%ED%99%94-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%9E%91%EC%84%B1&quot;&gt;자동화 스크립트 작성&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#-%EC%99%84%EC%84%B1%EB%90%9C-%EA%B2%B0%EA%B3%BC%EC%97%90-%EB%8C%80%ED%95%9C-%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7&quot;&gt;✅ 완성된 결과에 대한 스크린샷!&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[자바 가비지 컬렉터에 대한 중요한 사항]]></title><description><![CDATA[# 자바 가비지 컬렉터에 대한 중요한 사항 자바 가비지 컬렉터에 대한 중요한 사항 자바 가비지 컬렉터(Garbage Collector)는 객체들을 자동으로 수거하여 메모리 누수 방지 및 소멸된 객체들를 최적화하는 작업을 수행함으로써 JVM…]]></description><link>https://smk692.github.io/CS/garbage-collection/</link><guid isPermaLink="false">https://smk692.github.io/CS/garbage-collection/</guid><pubDate>Fri, 21 Apr 2023 07:55:46 GMT</pubDate><content:encoded>&lt;h1 id=&quot;-자바-가비지-컬렉터에-대한-중요한-사항&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EC%9E%90%EB%B0%94-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A4%91%EC%9A%94%ED%95%9C-%EC%82%AC%ED%95%AD&quot; aria-label=&quot; 자바 가비지 컬렉터에 대한 중요한 사항 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;# 자바 가비지 컬렉터에 대한 중요한 사항&lt;/h1&gt;
&lt;h1 id=&quot;자바-가비지-컬렉터에-대한-중요한-사항&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%9E%90%EB%B0%94-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%A0%89%ED%84%B0%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A4%91%EC%9A%94%ED%95%9C-%EC%82%AC%ED%95%AD&quot; aria-label=&quot;자바 가비지 컬렉터에 대한 중요한 사항 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;자바 가비지 컬렉터에 대한 중요한 사항&lt;/h1&gt;
&lt;p&gt;자바 가비지 컬렉터(Garbage Collector)는 객체들을 자동으로 수거하여 메모리 누수 방지 및 소멸된 객체들를 최적화하는 작업을 수행함으로써 JVM 메모리 관리를 용이하게 해줍니다.
이 글에서는 자바 가비지 컬렉터의 기능, 사용 방법, 그리고 자주 발생하는 문제점과 그 대처법에 대해 간단하게 살펴볼 것입니다. 이 글은 10분 이내로 짧게 작성되었습니다.&lt;/p&gt;
&lt;p&gt;자바 가비지 컬렉터 활용에 따른 두 가지 주요 이점을 꼽을 수 있습니다. 첫 번째는 소멸된 객체들이 새로운 객체로 대체되기 때문에 메모리 누수가 발생하지 않는다는 것입니다. 두 번째로는 메모리를 최적화하여 JVM 속도를 높이는 것입니다.&lt;/p&gt;
&lt;p&gt;하지만 자바 가비지 컬렉터를 사용하면서 발생할 수 있는 문제도 있습니다. 대표적으로는 프로그램 실행 중 잠복상태(Pause)가 발생하는 것이 있습니다. 이 발생한 잠복상태는 여러 이유로 인해 발생할 수 있으며, 이를 해결하기 위해서는 가비지 컬렉터 사용 방법 및 실행 시기를 적절하게 설정해야 합니다.&lt;/p&gt;
&lt;p&gt;이를 위해 여러 가지 요소를 고려해야 합니다. 첫 번째로 연산되는 메모리의 양과 성격(Deferred, Parallel)에 따라 적절한 가비지 컬렉터를 선택하는 것이 중요합니다. 또한, 프로그램이 실행되는 환경의 종류(Physical/Virtual), 자원의 용량, 그리고 사용자 특성 등에 따라 적절한 설정값을 변경할 수 있습니다.&lt;/p&gt;
&lt;p&gt;다음으로 가장 중요한 것은 올바른 사용 방법입니다. 자바 가비지 컬렉터를 사용하기 위해서는 메모리를 이동하거나 복사하는 등의 특정한 방법이 필요합니다. 예를 들면, 메모리를 재할당하는 방법, 후에 메모리 상태를 비교하여 처리하는 방법, 그리고 사전에 준비해 둔 메모리 블록의 크기를 조정하는 방법 등이 있습니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;java&quot;&gt;&lt;pre class=&quot;language-java&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;//메모리 배정&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;allocateMemory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; block &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;block_size&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//메모리 재할당&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;reallocateMemory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//기존 메모리 블록 삭제&lt;/span&gt;
  block &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//새로운 블록 할당&lt;/span&gt;
  block &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;new_block_size&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;마지막으로 메모리를 최적화하는 방법에 대해 말하겠습니다. 메모리 사용량에 따라 JVM 속도가 달라집니다.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Gatsby 테마로 GitHub Blog 만들기]]></title><description><![CDATA[제 블로그의 테마나 Gatsby의 다른 테마를 활용해서 Github Blog…]]></description><link>https://smk692.github.io/gatsby-github-blog/</link><guid isPermaLink="false">https://smk692.github.io/gatsby-github-blog/</guid><pubDate>Mon, 05 Jul 2021 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;제 블로그의 테마나 Gatsby의 다른 테마를 활용해서 Github Blog를 만들고 싶은 분들이 계실텐데요! 이런 분들에게 도움을 드리고자 이 글을 쓰게 되었습니다. 잘 안되는 부분이나 궁금한 점을 댓글로 남겨주면 확인해보고 답변 드리도록 하겠습니다!&lt;/p&gt;
&lt;h2 id=&quot;1-repository-생성하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-repository-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0&quot; aria-label=&quot;1 repository 생성하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. Repository 생성하기&lt;/h2&gt;
&lt;p&gt;GitHub Blog를 만들려면 Github에 Repository를 생성해야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.22222222222223%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACBElEQVR42oWS627aQBCF/XRV36JSX6IkPEBfICJBFGxDKiWqVJEfSYAEqPIzihVVqoKAIqhIsYFgjPHduz6dNSFN1dtKn2d2NHP2rG2pWq2+blxe9put9nWrfaXVGy2t0WxrF61PWq3R1E5rjQ1ngoufbOvEea1+fXZe7x9/+PhKKhbl7MnJKRT1MFbKh1AqR5DVIxTV9zgoqsiXysjLKg4UhZCxr5RSCnIZ7+QKCqUK3uaqcfG4hf18YUcajoe7Y+sek7kRAuC6Peefxx2+WNrc8SMeUy0E5wEY9xBRjGgfc0510S+ivXbFLEzLykiDb4Os4c0wt8w4jhNMFw+YmDN4QQjPD+B6Ah+uyAmf6n4YwaH6FtvxYiE41vWMZBhGVmzW9jpmjGG9drA0l3BcF2EYIgg2hCQi4Dwhr5wOjJ5w/TAV1PVpRppMJtmIfFskGEVxerpuzKBP56IRotenoS0BwViS5n8UNE0zdUgrTpIEIYmKq4rIUjdbOChg5fvo6L2/O3wuKB6O62FBV16YJszHKPbmcrWpWytY3uqfgruPggE5ZI7rs4elzRzHodx9gj5MGul9MpBhEnlOIAS+69M3vzmMGKefIgHdnuYIShL8d6WzpLUjtdtXLzXtVh0Oh3uj0Sh31+kT3VynO0jzL3fdDZ1NFHVB9xe+7vV6A+Xm5vbFDws5FQm3JqCFAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;github-blog.png&quot;
        title=&quot;&quot;
        src=&quot;/static/c496970c1925a1fafbb98168e3207240/37523/github-blog.png&quot;
        srcset=&quot;/static/c496970c1925a1fafbb98168e3207240/e9ff0/github-blog.png 180w,
/static/c496970c1925a1fafbb98168e3207240/f21e7/github-blog.png 360w,
/static/c496970c1925a1fafbb98168e3207240/37523/github-blog.png 720w,
/static/c496970c1925a1fafbb98168e3207240/302a4/github-blog.png 1080w,
/static/c496970c1925a1fafbb98168e3207240/07a9c/github-blog.png 1440w,
/static/c496970c1925a1fafbb98168e3207240/e57e0/github-blog.png 4064w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;GitHub에 로그인 한 뒤에 우측 상단에 있는 New Repository 버튼을 클릭하면 repository 생성 페이지로 이동하게 됩니다. 이 때 Import a repository 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.22222222222223%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABjUlEQVR42o2Sb0+CUBTG+XStb9HWlyjzazS2ZhaUWdnW7A8mMm3zpZNXvrJmMutFTTCGAvdy7+V0L4FjbpZn+3EOl3OePXCQ6vX6rm4Yr1pT7xntZ7PZ6pi60TFbvG7obVNrGuZjo/U3mt7TGq3X65vbHal8qhbvH5/grHJJ1PMqVC9rUL2qQaV6DccnKpTKCohz5exiibqColbI3YMGRyWlILmuewC/gTksA0cRm/uIBSFm+fM1iFngWvuSbdtFcUMpJYwxoJw4Bpj7AUydb5gvfM4CMMZACEkQfXnErNCYzWb7Er8UU4cEchGEITgzN8lhiCAIQggQr3GYiKwEWTpcJ4gQAs/zEmcodRcL6zyyvJFg1uz7Pnx+fiUOo5zYmvjfoXhFe+okggv+PVHENhbMtoy4C8piRsWOvNCj784HRRjRKIooJpSK5xmQr/msEHAcZ2+twzj9HzaMbMsFqdvtbvf7pjocvhxOJpZsWZY8Go1k682SJ9a7POL5LWW1Fr2C8XjMZyfKYDDY+gH2ZB+X3PsLbQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;github-blog-1.png&quot;
        title=&quot;&quot;
        src=&quot;/static/153e78ed1e400e6710eafc8bf47fbe8d/37523/github-blog-1.png&quot;
        srcset=&quot;/static/153e78ed1e400e6710eafc8bf47fbe8d/e9ff0/github-blog-1.png 180w,
/static/153e78ed1e400e6710eafc8bf47fbe8d/f21e7/github-blog-1.png 360w,
/static/153e78ed1e400e6710eafc8bf47fbe8d/37523/github-blog-1.png 720w,
/static/153e78ed1e400e6710eafc8bf47fbe8d/302a4/github-blog-1.png 1080w,
/static/153e78ed1e400e6710eafc8bf47fbe8d/07a9c/github-blog-1.png 1440w,
/static/153e78ed1e400e6710eafc8bf47fbe8d/e57e0/github-blog-1.png 4064w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;아래 페이지에 도달하시면 두 가지 정보를 넣어주셔야 하는데, Your old repository’s clone URL에는 사용하고자 하는 gatsby 테마가 있는 repository의 주소를 넣어주시면 됩니다.&lt;/p&gt;
&lt;p&gt;제 블로그 테마를 쓰고 싶으신 분들은 여기에 &lt;a href=&quot;https://github.com/zoomKoding/zoomkoding.com&quot;&gt;https://github.com/zoomKoding/zoomkoding.com&lt;/a&gt;를 넣어주세요!&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.22222222222223%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABb0lEQVR42p2RS0/CQBDH++n0Y5j4JQT5GsbEKNICgmJiUCnSNuCdpKfGEwcIBw/akvKwr93tOLM8QtAeYNLfbrqz85/HKs1m89SwrIHeMfpmt2d3rJ5tIGb33W4bXVvvWJJW28xGN/p62xw8PD6dKMWSVnhpvUG5WmdapQa1egNq9w2536oVuClqUCyVgXyS8t0fVK3Knl91uLpW84rv++ewtBgR2wRBIInjWOz6dqBYQK2c4rpugX4450wIAZI0BcYYoA++vl2YzhbyHO9INvdWUCxpTCaTnIJLYVUhgy0jQcwI/nSGzCFJGGCeLGObCrMEE8bB9TwIwgjCMARsXVZ3sGCKrcznM4iiGHCGskKGScIkxJGI/QTTVW+0C5HKOZGFKOp8fsAi/ln6If1XcP3KEQpwIsFS8ONxIjjjQp6hKHZMO6Cf7izPCYolAc/zzjJb3tPWr5xXHMc5Ho/HpeFweDEajS4PgWJRQ0Wto1+j8yCUVFcSpQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;github-blog-2.png&quot;
        title=&quot;&quot;
        src=&quot;/static/dbe340fff7135c1af7d13df1a3673be1/37523/github-blog-2.png&quot;
        srcset=&quot;/static/dbe340fff7135c1af7d13df1a3673be1/e9ff0/github-blog-2.png 180w,
/static/dbe340fff7135c1af7d13df1a3673be1/f21e7/github-blog-2.png 360w,
/static/dbe340fff7135c1af7d13df1a3673be1/37523/github-blog-2.png 720w,
/static/dbe340fff7135c1af7d13df1a3673be1/302a4/github-blog-2.png 1080w,
/static/dbe340fff7135c1af7d13df1a3673be1/07a9c/github-blog-2.png 1440w,
/static/dbe340fff7135c1af7d13df1a3673be1/e57e0/github-blog-2.png 4064w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;그럼 이제 Repository Name을 입력해줍니다. 이 때 주의할 점은 Repository명은 꼭 [GitHubID].github.io로 설정하셔야 합니다.&lt;/p&gt;
&lt;p&gt;그리고 Begin Import 버튼을 클릭하고 조금 기다리면 선택하신 블로그 테마를 import한 Repository가 생성되게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.22222222222223%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+0lEQVR42o2R7U7bMBSGe3WTdhWTdhMbcBtbKJQCKR8DbaBqI9CUTgNtqE0gmtRK+8OPdon2Z2u+nO/YztmxKV3ZNIkjvfbxsc+TN3at3W4/P+/1bs86unna6Vgnmm5pna7V/fjJ0vRz6+S0+5f0eS7OyVzTTe2se3v49vhZba3RXDk4+gCrGy36el2FenMfmuob2N0/hK3WHjS3d2BTSN2FLXUPWjsHMhe1jU0VGnei747fw+paY6nmed4yYFAORcmA48Ap5RxLc/HZjNuclOTB3kyFYARB8BKB0xWQXRwxHFwvhKlPwA1iSPISMvxKWjDwSQo/fk3h6/dv2BhCmqbooBR9KEYFA80JoCeBwmSFgx8mkOWFtPvTi8ANM8gQyHgFJdbytJAwSiksBF1w+AcohpAQKIoCqqoCH534gViX8kCJEBLHEEYx5uxxQEIiSJJUFsKQQJ5n8y7xe8JdGCWQF/TxQCGZR5G8J+FWiDMBzLCO95vl/wUuz4riBENXDF2wquLMDwIWhBFL8GXwHlmWlyyOExZFHsuSgJVJztA1m/WC67ov/nFIKZO/dh8VPAw0iuLS8cLm/Ssv1XoXF0+N6+vWwLxRDPOm/uWqX7/qG3XDMOt9nAeDgXJ5+VkZDoeK4zjKZDJRbNu5k2PL9Xg8fmXb9vZoNHryGyX1GTbGiKEaAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;github-blog-3.png&quot;
        title=&quot;&quot;
        src=&quot;/static/d0d4283fe9701965b995d91190d8880f/37523/github-blog-3.png&quot;
        srcset=&quot;/static/d0d4283fe9701965b995d91190d8880f/e9ff0/github-blog-3.png 180w,
/static/d0d4283fe9701965b995d91190d8880f/f21e7/github-blog-3.png 360w,
/static/d0d4283fe9701965b995d91190d8880f/37523/github-blog-3.png 720w,
/static/d0d4283fe9701965b995d91190d8880f/302a4/github-blog-3.png 1080w,
/static/d0d4283fe9701965b995d91190d8880f/07a9c/github-blog-3.png 1440w,
/static/d0d4283fe9701965b995d91190d8880f/e57e0/github-blog-3.png 4064w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;2-repository-가져오기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-repository-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0&quot; aria-label=&quot;2 repository 가져오기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. Repository 가져오기&lt;/h2&gt;
&lt;p&gt;이제 실제로 수정하고 배포할 수도록 내 컴퓨터(local)에 Repsitory를 가져와볼 건데요! 먼저 Repository에서 아래와 같이 초록색 Code 버튼을 클릭하면 링크가 나오게 되는데, 이 링크를 복사합니다.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.22222222222223%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB90lEQVR42o2S327TMBTG+3TwGEi8BGx7DcjYuv4vbBOwderSpS03U4WEKuVirRAXFWqUSly1aZzESWof53DsFlFpIM3SZx0fn/PlZzulTqfzcvhlOLtznLHdc9zrTte9ubXdXn/odm2HYse1nQHFfRPf9vqkgZHOm9juj+27wezy49WL0km5cnTxuYvHZ0359rSB7yrvsdI4x/aHC6w121ipN7Fab2G10cJao43N1rmJde6s2sByta4lP13d4PFJ+aAUBMEh0pAKNwJQbYRSEpSi1CPRtmIi+tfeRnuEYfiaDJdHeqHIh4TLgOFyHeEqTDDJBKZCIYtijEhhzPD7rx+4XoeYphkRCN1HAqk9CE4bBsZQQxY0sThFQYUACtcswpinmCTcGHIyUZTnnKOUEveG3CP8a6gn3agNTQFjRBeRmInzfGOoWJSgkPA0Q308TlRFUSAjwizLKVZmral5mtIpOOabJxNGhtLEcWyIyMtIH1ffXRQnyOlD/zM83CV1BTDGgCiAiGAdMghZDDwTkOYAWS6A7hPiOICMhyB4Tv+Dgl0vrlarV48IpQTzcnoUO+2PLe32CvY2/7zyQWk6nT73fb82n8/feJ5nzWY/Lc/zrYeHiTUafbW+jcfW/f3Imkwm1mKxsHSN7y+2WvhmrXvJo05ez34DJ8caO3yvsSAAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;github-blog-4.png&quot;
        title=&quot;&quot;
        src=&quot;/static/138a6ccf5d2c7ff9d5c762501b9c7ed2/37523/github-blog-4.png&quot;
        srcset=&quot;/static/138a6ccf5d2c7ff9d5c762501b9c7ed2/e9ff0/github-blog-4.png 180w,
/static/138a6ccf5d2c7ff9d5c762501b9c7ed2/f21e7/github-blog-4.png 360w,
/static/138a6ccf5d2c7ff9d5c762501b9c7ed2/37523/github-blog-4.png 720w,
/static/138a6ccf5d2c7ff9d5c762501b9c7ed2/302a4/github-blog-4.png 1080w,
/static/138a6ccf5d2c7ff9d5c762501b9c7ed2/07a9c/github-blog-4.png 1440w,
/static/138a6ccf5d2c7ff9d5c762501b9c7ed2/e57e0/github-blog-4.png 4064w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;그리고 아래 명령어를 수행하여 블로그를 다운로드합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Repository를 저장할 폴더&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; clone &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;복사한 주소&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;3-blog-설치하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#3-blog-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0&quot; aria-label=&quot;3 blog 설치하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. Blog 설치하기&lt;/h2&gt;
&lt;p&gt;이제 블로그를 동작시킬 수 있도록 패키지들을 다운로드 해야하는데, 다음 명령어를 실행하시면 받을 수 있습니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Repository 주소&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;4-blog-배포-준비하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#4-blog-%EB%B0%B0%ED%8F%AC-%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0&quot; aria-label=&quot;4 blog 배포 준비하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;4. Blog 배포 준비하기&lt;/h2&gt;
&lt;p&gt;그리고 이제 Gatsby 테마를 GitHub 페이지에 올리기 위해 gh-pages라는 패키지를 설치해야 합니다. 설치는 다음 명령어를 실행하시면 됩니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; gh-pages --save-dev&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;그리고 나서 package.json에 다음을 추가합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;json&quot;&gt;&lt;pre class=&quot;language-json&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;scripts&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;deploy&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;gatsby build &amp;amp;&amp;amp; gh-pages -d public&quot;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 추가&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;5-blog-배포하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#5-blog-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0&quot; aria-label=&quot;5 blog 배포하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;5. Blog 배포하기&lt;/h2&gt;
&lt;p&gt;드디어 배포 준비는 다 끝났습니다. 이제 다음 명령을 실행하시면 github page에 배포하실 수 있습니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; run deploy&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;조금 기다리신 후에 다음과 같이 &lt;code class=&quot;language-text&quot;&gt;Published&lt;/code&gt;라는 메시지를 받으셨다면 배포는 잘 끝났습니다!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🙋‍♂️ 제 블로그 템플릿을 사용하시는 분들을 &lt;code class=&quot;language-text&quot;&gt;node 버전이 14 이상&lt;/code&gt;이어야 합니다.
node -v를 통해 node 버전을 확인하신 후 낮은 버전이라면 업그레이드를 진행해주세요!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 혹시 그 외에 다른 에러가 발생하신다면 아래에 댓글로 에러 내용을 알려주세요!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 43.333333333333336%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABW0lEQVR42nWS546DMBCE/RxAeuFSMKQQiukklx95/+eZ86zk6BTd/Ri5CH87s4sKkwRpmuJyueCaXpHnOY7Ho6yn0wmLxQK73U60Wq0wmUwwnU7/lfIKjWuWou97GGMwDIOAqqpC13WI41iK3W43HA4HAc5mM9GfQL/UKCojj42F3O93cUc49wQyQWKTRFGE/X6PzWYjZ7r/dKz8PIJparRNg7ZtUde1uCS0LEu5y7JMYMvlEmEYYrvdYr1eCyAIAoE6qcAkaPoOz+dTYhNAdwQTSHeEF0UhZxZrbHHesacsQHE/n8+h8sLg+/HAaOM97OpAfDSOo7g7n8/SRw6GfWRsDo5iS7TWIkJVZDJ01uHr9RKgc8GhcBAEEcKPfd9/R+RK8e73vfrStkKs35Vpn3v2jCv75nne+5GT65mbuJu6Gqw79oyWaZ8gilNkAReHvxKju4iMS/efv88PUygTEvAIfr0AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;github-blog-5.png&quot;
        title=&quot;&quot;
        src=&quot;/static/0ea9b8b7bed5ce6018b3da93286b48ae/37523/github-blog-5.png&quot;
        srcset=&quot;/static/0ea9b8b7bed5ce6018b3da93286b48ae/e9ff0/github-blog-5.png 180w,
/static/0ea9b8b7bed5ce6018b3da93286b48ae/f21e7/github-blog-5.png 360w,
/static/0ea9b8b7bed5ce6018b3da93286b48ae/37523/github-blog-5.png 720w,
/static/0ea9b8b7bed5ce6018b3da93286b48ae/302a4/github-blog-5.png 1080w,
/static/0ea9b8b7bed5ce6018b3da93286b48ae/07a9c/github-blog-5.png 1440w,
/static/0ea9b8b7bed5ce6018b3da93286b48ae/17d12/github-blog-5.png 1666w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;6-repository-source-branch-변경하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#6-repository-source-branch-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0&quot; aria-label=&quot;6 repository source branch 변경하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;6. Repository Source Branch 변경하기&lt;/h2&gt;
&lt;p&gt;마지막으로 GitHub 페이지가 작동하려면 GitHub의 Repository 설정에서 배포 할 Branch를 선택해야 합니다. 이를 위해서 Repository에 있는 Settings를 클릭하고 죄측 메뉴에서 Pages를 클릭하여 Github Pages 설정 페이지로 이동합니다.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.22222222222223%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB00lEQVR42p2R227TQBCG/XRIPAUSLwFtXwPclNShbgsUAcUiTduQgHqDQtMGFUVcVSRWLsqh9XrtBNtr7+ZnxiTiWCRY69OuZ3c+z6wtz/Out9rt0/aLl91ms9V76u30vPou0ejVG/tEs7ez+/yPNPZn671mt7HXOn34aPuatVJ1lrae1LG8ulHcvuOi4tyD4z7A5v0t3HU34axtlNR+hfZWa+uo1lxUHbd4vP0MyyvVBUtIuQgahYHKCxhVGENrQ6F/QbFDSnnTEkIs8YthjzGI4hhpmkEVBc6FpPcxfUkhU1lJmvGsoI0mDOcRumAHub4LucjpdAoRRkhShVxrfE4ucDb5iA+pwFkS4FMmEOgQQkuERkKaCJzDub9VOBcGoSx7zwuNUFKijCCISZIgo7imM/yYGfPcS4XxeEItkTCnCs8vEHPLmSpjxpCAhSX4cfxdOK8wimJqPyUh3Ruh6O5UnhOa5JcLF2fBjC5Yj8cTTYma13Eca0lwjPmSpJrEtEcXjCl1/w3OZUEQBDd+qhD/P+Z/ecFqHxxcPTw6Wn/dPbY7h93Kq06ncvzmpHLy9l1l4Pu274/s0WhUzoOBb3OMec/rAe/79nA4vEVn1vr9/pWvjwwaq6cxcPcAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;github-blog-6.png&quot;
        title=&quot;&quot;
        src=&quot;/static/338e207ee37735587d9326b12dad5b66/37523/github-blog-6.png&quot;
        srcset=&quot;/static/338e207ee37735587d9326b12dad5b66/e9ff0/github-blog-6.png 180w,
/static/338e207ee37735587d9326b12dad5b66/f21e7/github-blog-6.png 360w,
/static/338e207ee37735587d9326b12dad5b66/37523/github-blog-6.png 720w,
/static/338e207ee37735587d9326b12dad5b66/302a4/github-blog-6.png 1080w,
/static/338e207ee37735587d9326b12dad5b66/07a9c/github-blog-6.png 1440w,
/static/338e207ee37735587d9326b12dad5b66/e57e0/github-blog-6.png 4064w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;여기서 Source에 있는 Branch를 master(main)에서 gh-pages로 변경한 후에 저장합니다.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.22222222222223%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAAByUlEQVR42oWR2W7TQBSG/XTwGEi8BF2eASFBg1QWNb0oIIKaVI4d4Ir0spKvctmLRJGqoMbLxNt41p8zjlWo1NCRP5/FPv+cOeOF/uh5OJlcfxuOroajcXQ+9KMLP4j8cRCNg+9kwygIf7Rc+OPI90MiaP9xuV+Xl9F0Or0KJz+vB4PzZ96r3slh/4uPow9nqvfxM477X3F8Omhx8Zv3nx7l9bszdToI8LLX3/dubtMDCyCrIJIKJi5hNhxGGgJ/UR36H7/RMFy3VpAEVut0z4vj+NAFQgjFOUdeFKjJNqJBVVVoeA1JvtESlmSM3kIBPaSmNbRSymmk6XrPS9O0FaSlrLVgm5wEG0hl8DspcJuVyGsFVjokNpVo40pY1IS121r3Yow9LCikIkGNNeNYJSVuaA6rTBASSWnAaouUYPwRQUNf4yS7E6RxgGUZijyHG4c2BjvW7g7zguYmSFBSh3GCoizJV5QT3UYKgjbT1JndIXjQJRtNqyhKTfejldz6dV0TXHOCLq5FKa3pNNp2uFonkCTJi3sduj1dl91cYOiIpgucsRb/PTJp7Xuz2ezpcrk8mc/nR4vF4i35d7j4Pg/nXS3l+6T15A9xJBrC4CobeQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;github-blog-7.png&quot;
        title=&quot;&quot;
        src=&quot;/static/d71c3cfa77f66a359e31914c9779e78f/37523/github-blog-7.png&quot;
        srcset=&quot;/static/d71c3cfa77f66a359e31914c9779e78f/e9ff0/github-blog-7.png 180w,
/static/d71c3cfa77f66a359e31914c9779e78f/f21e7/github-blog-7.png 360w,
/static/d71c3cfa77f66a359e31914c9779e78f/37523/github-blog-7.png 720w,
/static/d71c3cfa77f66a359e31914c9779e78f/302a4/github-blog-7.png 1080w,
/static/d71c3cfa77f66a359e31914c9779e78f/07a9c/github-blog-7.png 1440w,
/static/d71c3cfa77f66a359e31914c9779e78f/e57e0/github-blog-7.png 4064w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;7-배포된-페이지-확인하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#7-%EB%B0%B0%ED%8F%AC%EB%90%9C-%ED%8E%98%EC%9D%B4%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0&quot; aria-label=&quot;7 배포된 페이지 확인하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;7. 배포된 페이지 확인하기&lt;/h2&gt;
&lt;p&gt;이제 실제로 잘 배포가 되었는지 확인해봅시다. 여태까지 문제가 없으셨다면 [GitHubID].github.io에 접근했을 때 블로그가 잘 보이는 것을 확인하실 수 있으실 겁니다.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 720px; &quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.22222222222223%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABXElEQVR42o1S206DQBDt1+lnmPgBvnqLf6G86rt/4LsvNaQxNWlI24DQFijsCoVCgYXpzFYIrb04yUnYs3MOnBk6+nh86TN/yH/CLuNc9XymMh6oM9tRv82JPPuMN5jMbNV23C3Ocf3udOYMtdHoosM5v4dNFdCqqqpACAEVbFdZlvJup6QWvW7J8O6XzKj/GIqiKMMw3HdHWvA87+bgF6ZpSg2ABrCMY8l9fbzD08MVBJw1KdraIAj+GtZNURSBbdsUA/I8lxybGvD59gr5Kq0Hc9qwPSvC7lx3uX8bkphiZ1kml9PGoaWcjGyZZjNHir5YhBDjPHE5Rw3rLa/QTFRVKfBZLJexcF1XoKGYz+cCXyDSNJFAQ7Hp3YC0csaMXR+MTFGjKIYVxk6SpPn/9sTd/g/7/f65aZrPuq4/GoahEPCsDAYDpdfrSWiapliWJXlC3VeDtMi/oNfZGpODPBrlPv+DAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;github-blog-8.png&quot;
        title=&quot;&quot;
        src=&quot;/static/103be36c7556a35b794180d024aed322/37523/github-blog-8.png&quot;
        srcset=&quot;/static/103be36c7556a35b794180d024aed322/e9ff0/github-blog-8.png 180w,
/static/103be36c7556a35b794180d024aed322/f21e7/github-blog-8.png 360w,
/static/103be36c7556a35b794180d024aed322/37523/github-blog-8.png 720w,
/static/103be36c7556a35b794180d024aed322/302a4/github-blog-8.png 1080w,
/static/103be36c7556a35b794180d024aed322/07a9c/github-blog-8.png 1440w,
/static/103be36c7556a35b794180d024aed322/e57e0/github-blog-8.png 4064w&quot;
        sizes=&quot;(max-width: 720px) 100vw, 720px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;8-수정하고-배포하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#8-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0&quot; aria-label=&quot;8 수정하고 배포하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;8. 수정하고 배포하기&lt;/h2&gt;
&lt;p&gt;블로그를 수정하시는 방법은 각 블로그 테마마다 다를텐데요. 그에 맞춰서 변동사항을 commit하신 후에 아래 명령어를 실행하시면 변동사항이 블로그에 배포됩니다!&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; run deploy&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;
&lt;h2 id=&quot;️-이-블로그-테마를-이용하고-싶으시다면&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EF%B8%8F-%EC%9D%B4-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%85%8C%EB%A7%88%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EA%B3%A0-%EC%8B%B6%EC%9C%BC%EC%8B%9C%EB%8B%A4%EB%A9%B4&quot; aria-label=&quot;️ 이 블로그 테마를 이용하고 싶으시다면 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;⭐️ 이 블로그 테마를 이용하고 싶으시다면!&lt;/h2&gt;
&lt;p&gt;마지막으로 제 블로그 테마를 활용하고 싶으시다면 아래 링크를 참고해주세요!
&lt;a href=&quot;https://www.zoomkoding.com/gatsby-starter-zoomkoding-introduction&quot;&gt;https://www.zoomkoding.com/gatsby-starter-zoomkoding-introduction&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;궁금하신 점이 있으시다면 &lt;a href=&quot;https://github.com/zoomKoding/zoomkoding-gatsby-blog/issues/new&quot;&gt;이슈&lt;/a&gt;로 남겨주시면 최대한 빠르게 답변 드리도록 하겠습니다!🙋‍♂️&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🤔 혹시 특정 기능이 없어서 테마 사용을 망설이시거나 제안하고 싶으신 기능이 있으시다면,&lt;br&gt;
👉 &lt;a href=&quot;https://github.com/zoomKoding/zoomkoding-gatsby-blog/issues/40&quot;&gt;여기&lt;/a&gt;에 댓글 남겨주세요! 적극적으로 반영하겠습니다 :)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br/&gt;
&lt;p&gt;&lt;strong&gt;위 과정을 따라하시면서 궁금하신 점이 있다면 아래 &lt;code class=&quot;language-text&quot;&gt;댓글&lt;/code&gt;로 남겨주세요!👇&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-of-contents&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-repository-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0&quot;&gt;1. Repository 생성하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-repository-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0&quot;&gt;2. Repository 가져오기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-blog-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0&quot;&gt;3. Blog 설치하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-blog-%EB%B0%B0%ED%8F%AC-%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0&quot;&gt;4. Blog 배포 준비하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-blog-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0&quot;&gt;5. Blog 배포하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-repository-source-branch-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0&quot;&gt;6. Repository Source Branch 변경하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#7-%EB%B0%B0%ED%8F%AC%EB%90%9C-%ED%8E%98%EC%9D%B4%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0&quot;&gt;7. 배포된 페이지 확인하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#8-%EC%88%98%EC%A0%95%ED%95%98%EA%B3%A0-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0&quot;&gt;8. 수정하고 배포하기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%EF%B8%8F-%EC%9D%B4-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%85%8C%EB%A7%88%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EA%B3%A0-%EC%8B%B6%EC%9C%BC%EC%8B%9C%EB%8B%A4%EB%A9%B4&quot;&gt;⭐️ 이 블로그 테마를 이용하고 싶으시다면!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content:encoded></item><item><title><![CDATA[쉽고 빠르게 나만의 개츠비(Gatsby) 블로그 만들기]]></title><description><![CDATA[👋 소개 블로그를 직접 운영하면서 조금씩 그려봤던 이상적인 개발 블로그 테마를 Gatsby…]]></description><link>https://smk692.github.io/gatsby-starter-soncoding-introduction/</link><guid isPermaLink="false">https://smk692.github.io/gatsby-starter-soncoding-introduction/</guid><pubDate>Mon, 22 Mar 2021 14:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;-소개&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EC%86%8C%EA%B0%9C&quot; aria-label=&quot; 소개 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;👋 소개&lt;/h2&gt;
&lt;p&gt;블로그를 직접 운영하면서 조금씩 그려봤던 이상적인 개발 블로그 테마를 Gatsby를 통해 만들어보게 되었습니다.&lt;br&gt;
이 테마가 블로그를 운영하고자 하시는 분들에게 자신의 이야기를 잘 담을 수 있는 공간이 되었으면 좋겠습니다.🙌&lt;/p&gt;
&lt;p&gt;블로그 테마가 맘에 드셨다면 아래 과정을 통해 자신의 블로그를 만들어보시길 바랍니다!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;혹시 만드시는 과정에서 궁금하신 점이나 어려움이 있으시다면 &lt;a href=&quot;https://github.com/zoomKoding/zoomkoding-gatsby-blog/issues/new&quot;&gt;이슈&lt;/a&gt;를 통해 문의 남겨주세요!&lt;br&gt;
&lt;a href=&quot;https://github.com/zoomKoding/zoomkoding.com&quot;&gt;스타&lt;/a&gt;는 블로그 테마를 지속적으로 발전시키는데 큰 힘이 됩니다!⭐️&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;-시작하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0&quot; aria-label=&quot; 시작하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🚀 시작하기&lt;/h2&gt;
&lt;p&gt;Github Page나 Netlify 중 원하시는 배포 환경에 따라 다음 과정을 진행하시면 빠르게 블로그를 만드실 수 있습니다.&lt;/p&gt;
&lt;h3 id=&quot;-github-page로-만들기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-github-page%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; aria-label=&quot; github page로 만들기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🦖 GitHub Page로 만들기&lt;/h3&gt;
&lt;p&gt;깃헙 페이지를 통해 블로그를 만드시다면 아래 글을 참고해주세요!&lt;br&gt;
&lt;a href=&quot;https://www.zoomkoding.com/gatsby-github-blog/&quot;&gt;Gatsby 테마로 GitHub Blog 만들기&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;-netlify로-만들기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-netlify%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; aria-label=&quot; netlify로 만들기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔧 Netlify로 만들기&lt;/h3&gt;
&lt;p&gt;아래 버튼을 활용하면 개인 계정에 &lt;code class=&quot;language-text&quot;&gt;zoomkoding-gatsby-blog&lt;/code&gt;를 사용하고 있는 Repository 생성과 Netlify에 배포를 동시에 진행할 수 있습니다. 이후에, 생성된 Repository를 clone합니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.netlify.com/start/deploy?repository=https://github.com/zoomkoding/zoomkoding-gatsby-blog&quot;&gt;&lt;img src=&quot;https://www.netlify.com/img/deploy/button.svg&quot; alt=&quot;Deploy to Netlify&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;️-실행하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EF%B8%8F-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0&quot; aria-label=&quot;️ 실행하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🏃‍♀️ 실행하기&lt;/h3&gt;
&lt;p&gt;아래 명령어를 실행하여 로컬 환경에 블로그를 실행합니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;bash&quot;&gt;&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Install dependencies&lt;/span&gt;
$ &lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# Start development server&lt;/span&gt;
$ &lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; start&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;
&lt;p&gt;위 명령어가 문제 없이 실행됐다면 &lt;a href=&quot;http://localhost:8000&quot;&gt;http://localhost:8000&lt;/a&gt;에서 블로그를 확인하실 수 있습니다.&lt;/p&gt;
&lt;h2 id=&quot;️-블로그-정보-입력하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EF%B8%8F-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%A0%95%EB%B3%B4-%EC%9E%85%EB%A0%A5%ED%95%98%EA%B8%B0&quot; aria-label=&quot;️ 블로그 정보 입력하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;⚙️ 블로그 정보 입력하기&lt;/h2&gt;
&lt;p&gt;위의 과정을 다 진행하셨다면 배포와 개발 환경이 세팅이 끝났습니다! 🙌&lt;br&gt;
이제 블로그 정보를 입력하게 되면 나만의 블로그가 만들어지게 됩니다. 이를 위해 &lt;code class=&quot;language-text&quot;&gt;gatsby-meta-config.js&lt;/code&gt;에 있는 여러값들을 변경해줍니다.&lt;/p&gt;
&lt;h3 id=&quot;1-블로그-기본-정보&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B8%B0%EB%B3%B8-%EC%A0%95%EB%B3%B4&quot; aria-label=&quot;1 블로그 기본 정보 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. 블로그 기본 정보&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token literal-property property&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;smk692.github.io&apos;&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;손코딩의 끄적끄적 블로그&apos;&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;language&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;ko&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;siteUrl&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;https://smk692.github.io/&apos;&lt;/span&gt;
&lt;span class=&quot;token literal-property property&quot;&gt;ogImage&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;/og-image.png&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 공유할 때 보이는 미리보기 이미지로 &apos;/static&apos; 하위에 넣고 싶은 이미지를 추가하시면 됩니다.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;2-댓글-설정&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-%EB%8C%93%EA%B8%80-%EC%84%A4%EC%A0%95&quot; aria-label=&quot;2 댓글 설정 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. 댓글 설정&lt;/h3&gt;
&lt;p&gt;블로그 글들에 댓글을 달 수 있길 원하신다면 utterances를 통해서 이를 설정하실 수 있습니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🦄 utterances 사용방법은 &lt;a href=&quot;https://utteranc.es/&quot;&gt;링크&lt;/a&gt;를 참고해주세요!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token literal-property property&quot;&gt;comments&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;utterances&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;repo&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;smk692/blog-comments&apos;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;3-글쓴이-정보&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#3-%EA%B8%80%EC%93%B4%EC%9D%B4-%EC%A0%95%EB%B3%B4&quot; aria-label=&quot;3 글쓴이 정보 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;3. 글쓴이 정보&lt;/h3&gt;
&lt;p&gt;글쓴이(author)에 입력하신 정보는 홈페이지와 about 페이지 상단에 있는 글쓴이를 소개하는 섹션인 bio에서 사용됩니다. &lt;strong&gt;description&lt;/strong&gt;에 자신을 설명하는 문구들을 넣으면 애니메이션으로 보여지게 됩니다. bio에 들어가는 이미지를 바꾸시려면 &lt;code class=&quot;language-text&quot;&gt;assets&lt;/code&gt;에 원하시는 파일을 추가하시고 파일의 이름을 &lt;strong&gt;thumbnail&lt;/strong&gt;에 넣어주시면 됩니다.(gif도 지원합니다!)&lt;/p&gt;
&lt;p&gt;아이폰 미모티콘으로 thumbnail을 만드는 방법이 궁금하시면 &lt;a href=&quot;https://www.zoomkoding.com/memoji-to-gif/&quot;&gt;이 글&lt;/a&gt;을 참고해주세요!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🤖 위에서 설정한 언어에 따라 description의 포맷이 달라집니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token literal-property property&quot;&gt;author&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;손민기&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;bio&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token literal-property property&quot;&gt;role&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;백엔드 개발자&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token literal-property property&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;개발에 미친놈&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;절대 두번 일하지 않으려고 하는 게으름&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;큰 그림을 그리는 아키텍처 &apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token literal-property property&quot;&gt;thumbnail&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;zoomkoding.gif&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;social&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token literal-property property&quot;&gt;github&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;https://github.com/smk692&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token literal-property property&quot;&gt;linkedIn&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;https://www.linkedin.com/in/%EB%AF%BC%EA%B8%B0-%EC%86%90-12aa94227/&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token literal-property property&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;smk2692@gmail.com&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;️-about-page-만들기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EF%B8%8F-about-page-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; aria-label=&quot;️ about page 만들기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🙋‍♀️ about page 만들기&lt;/h2&gt;
&lt;p&gt;about 페이지 또한 gatsby-meta-config.js를 통해 생성됩니다. about 하위에 있는 timestamps와 projects에 각각 정보를 입력하시면 about 페이지가 자동 생성됩니다.&lt;/p&gt;
&lt;h3 id=&quot;1-timestamps&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#1-timestamps&quot; aria-label=&quot;1 timestamps permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;1. timestamps&lt;/h3&gt;
&lt;p&gt;아래와 같이 각 timestamp 정보를 배열로 제공해주시면 입력하신 순서에 맞춰서 timestamps section에 보여지게 됩니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;links에 해당 정보가 없다면 생략해도 됩니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;2023.04 ~&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;activity&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;개인 블로그 개발 및 운영&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;links&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;/gatsby-starter-soncoding-introduction&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;github&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;https://github.com/smk692/smk692.github.io&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;2-projects&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#2-projects&quot; aria-label=&quot;2 projects permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;2. projects&lt;/h3&gt;
&lt;p&gt;마찬가지로 각 project 정보를 배열로 제공해주시면 입력하신 순서에 맞춰서 projects section에 보여지게 됩니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;개발 블로그 테마 개발&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&apos;개발 블로그를 운영하는 기간이 조금씩 늘어나고 점점 많은 생각과 경험이 블로그에 쌓아가면서 제 이야기를 담고 있는 블로그를 직접 만들어보고 싶게 되었습니다. 그동안 여러 개발 블로그를 보면서 좋았던 부분과 불편했던 부분들을 바탕으로 레퍼런스를 참고하여 직접 블로그 테마를 만들게 되었습니다.&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;techStack&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;gatsby&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;react&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;thumbnailUrl&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;blog.png&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token literal-property property&quot;&gt;links&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;/gatsby-starter-soncoding-introduction&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;github&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;https://github.com/smk692/smk692.github.io&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br/&gt;
&lt;p&gt;그렇게 내용을 문제 없이 입력하셨다면 나만의 블로그가 탄생한 것을 확인하실 수 있습니다.🎉&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;변동사항을 실행 중인 블로그에서 확인하시려면 &lt;code class=&quot;language-text&quot;&gt;npm start&lt;/code&gt;를 통해 재실행해주세요!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;️-글-쓰기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EF%B8%8F-%EA%B8%80-%EC%93%B0%EA%B8%B0&quot; aria-label=&quot;️ 글 쓰기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✍️ 글 쓰기&lt;/h2&gt;
&lt;p&gt;본격적으로 블로그에 글을 쓰려면 &lt;code class=&quot;language-text&quot;&gt;/content&lt;/code&gt; 아래에 디렉토리를 생성하고 &lt;code class=&quot;language-text&quot;&gt;index.md&lt;/code&gt;에 markdown으로 작성하시면 됩니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;이 때, 폴더의 이름은 경로를 생성하는데 됩니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;-메타-정보&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EB%A9%94%ED%83%80-%EC%A0%95%EB%B3%B4&quot; aria-label=&quot; 메타 정보 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🏗 메타 정보&lt;/h3&gt;
&lt;p&gt;index.md 파일의 상단에는 아래와 같이 emoji, title, date, author, tags, categories 정보를 제공해야 합니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;emoji는 글머리에 보여지게 되며, categories는 띄어쓰기로 나누어 여러개를 입력할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;---
emoji: 🧢
title: Getting Started
date: &apos;2021-03-22 23:00:00&apos;
author: 줌코딩
tags: tutorial
categories: tutorial
---&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;-이미지-경로&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EA%B2%BD%EB%A1%9C&quot; aria-label=&quot; 이미지 경로 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🖼 이미지 경로&lt;/h3&gt;
&lt;p&gt;글에 이미지를 첨부하고 싶으시다면 같은 디렉토리에 이미지 파일을 추가하셔서 아래와 같이 사용하시면 됩니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;![사진](./[이미지 파일명])&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;-목차-생성&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EB%AA%A9%EC%B0%A8-%EC%83%9D%EC%84%B1&quot; aria-label=&quot; 목차 생성 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔍 목차 생성&lt;/h3&gt;
&lt;p&gt;글의 우측에 목차가 보이기를 원하신다면 &lt;code class=&quot;language-text&quot;&gt;index.md&lt;/code&gt; 파일 맨 아래에 다음 내용을 추가하시면 자동으로 목차가 생성됩니다.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;```toc
```&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;-버그-리포트--문의&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#-%EB%B2%84%EA%B7%B8-%EB%A6%AC%ED%8F%AC%ED%8A%B8--%EB%AC%B8%EC%9D%98&quot; aria-label=&quot; 버그 리포트  문의 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;💡 버그 리포트 &amp;#x26; 문의&lt;/h3&gt;
&lt;p&gt;궁금하신 점이 있으시다면 &lt;a href=&quot;https://github.com/zoomKoding/zoomkoding-gatsby-blog/issues/new&quot;&gt;이슈&lt;/a&gt;로 남겨주시면 최대한 빠르게 답변 드리도록 하겠습니다!🙋‍♂️&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🤔 혹시 특정 기능이 없어서 테마 사용을 망설이시거나 제안하고 싶으신 기능이 있으시다면,&lt;br&gt;
👉 &lt;a href=&quot;https://github.com/zoomKoding/zoomkoding-gatsby-blog/issues/40&quot;&gt;여기&lt;/a&gt;에 댓글 남겨주세요! 적극적으로 반영하겠습니다 :)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;table-of-contents&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#-%EC%86%8C%EA%B0%9C&quot;&gt;👋 소개&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0&quot;&gt;🚀 시작하기&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#-github-page%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot;&gt;🦖 GitHub Page로 만들기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#-netlify%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot;&gt;🔧 Netlify로 만들기&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#%EF%B8%8F-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0&quot;&gt;🏃‍♀️ 실행하기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EF%B8%8F-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%A0%95%EB%B3%B4-%EC%9E%85%EB%A0%A5%ED%95%98%EA%B8%B0&quot;&gt;⚙️ 블로그 정보 입력하기&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EA%B8%B0%EB%B3%B8-%EC%A0%95%EB%B3%B4&quot;&gt;1. 블로그 기본 정보&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-%EB%8C%93%EA%B8%80-%EC%84%A4%EC%A0%95&quot;&gt;2. 댓글 설정&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-%EA%B8%80%EC%93%B4%EC%9D%B4-%EC%A0%95%EB%B3%B4&quot;&gt;3. 글쓴이 정보&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EF%B8%8F-about-page-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot;&gt;🙋‍♀️ about page 만들기&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#1-timestamps&quot;&gt;1. timestamps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-projects&quot;&gt;2. projects&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#%EF%B8%8F-%EA%B8%80-%EC%93%B0%EA%B8%B0&quot;&gt;✍️ 글 쓰기&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#-%EB%A9%94%ED%83%80-%EC%A0%95%EB%B3%B4&quot;&gt;🏗 메타 정보&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EA%B2%BD%EB%A1%9C&quot;&gt;🖼 이미지 경로&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#-%EB%AA%A9%EC%B0%A8-%EC%83%9D%EC%84%B1&quot;&gt;🔍 목차 생성&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#-%EB%B2%84%EA%B7%B8-%EB%A6%AC%ED%8F%AC%ED%8A%B8--%EB%AC%B8%EC%9D%98&quot;&gt;💡 버그 리포트 &amp;#x26; 문의&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content:encoded></item></channel></rss>