<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>사과 냄새나는 IT이야기 TAESTORY,</title>
    <link>https://tskwon.tistory.com/</link>
    <description>-</description>
    <language>ko</language>
    <pubDate>Tue, 14 Apr 2026 16:59:52 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>권태성</managingEditor>
    <image>
      <title>사과 냄새나는 IT이야기 TAESTORY,</title>
      <url>https://tistory1.daumcdn.net/tistory/188473/attach/79250c9fa8484d07822f149f27f24c51</url>
      <link>https://tskwon.tistory.com</link>
    </image>
    <item>
      <title>Codex Subagent 사용 방법</title>
      <link>https://tskwon.tistory.com/473</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;ChatGPT Pro 대란 때 구입한 이용권을 활용하고자 요즘 Codex를 메인으로 사용하는데 subagent 기능이 유용해서 사용법을 정리해봤습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;caret-color: #000000;&quot;&gt;subagent&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;Codex CLI는 터미널에서 실행하는 OpenAI의 코딩 에이전트입니다. 현재 작업 중인 디렉터리의 코드를 읽고, 수정하고, 명령을 실행할 수 있으며, 복잡한 작업은 여러 역할로 나누어 처리할 수 있습니다. 이때 사용하는 핵심 기능이 바로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;subagent&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;입니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;subagent는 하나의 Codex 세션 안에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;역할이 다른 보조 에이전트들을 분리해서 실행하는 방식&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;입니다. 예를 들어 코드 탐색 전용 agent, 구현 전용 agent, 문서 검증 전용 agent처럼 역할을 나누면, 메인 agent가 이들을 오케스트레이션하면서 결과를 모아 최종 응답을 정리할 수 있습니다. OpenAI 문서에서도 subagent를 &amp;ldquo;큰 작업을 병렬화하고, 전문화된 agent에게 위임하는 방식&amp;rdquo;으로 설명합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;또 하나 중요한 점은, Codex가 subagent를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;마음대로 자동 생성하지는 않는다는 것&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;입니다. 공식 문서 기준으로 Codex는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사용자가 명시적으로 요청했을 때만&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;새 subagent를 spawn합니다. 그래서 subagent는 &amp;ldquo;자동 마법&amp;rdquo;이라기보다, 사용자가 설계한 작업 분업 구조를 Codex가 실행해주는 기능에 가깝습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;858&quot; data-start=&quot;840&quot; data-section-id=&quot;1ltdszg&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;왜 subagent를 쓰는가&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;980&quot; data-start=&quot;860&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 단일 agent 방식은 간단한 수정에는 충분하지만, 작업이 길어질수록 한 세션 안에 너무 많은 맥락이 섞이게 됩니다. 반면 subagent를 사용하면 역할을 나눠서 다음과 같은 방식으로 운영할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-end=&quot;1115&quot; data-start=&quot;982&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1016&quot; data-start=&quot;982&quot; data-section-id=&quot;1pf92yt&quot;&gt;&lt;b&gt;explorer&lt;/b&gt;: 코드 구조 파악, 영향 범위 분석&lt;/li&gt;
&lt;li data-end=&quot;1041&quot; data-start=&quot;1017&quot; data-section-id=&quot;lowoc6&quot;&gt;&lt;b&gt;worker&lt;/b&gt;: 실제 구현 및 수정&lt;/li&gt;
&lt;li data-end=&quot;1075&quot; data-start=&quot;1042&quot; data-section-id=&quot;khvp86&quot;&gt;&lt;b&gt;reviewer&lt;/b&gt;: 버그, 보안, 테스트 누락 검토&lt;/li&gt;
&lt;li data-end=&quot;1115&quot; data-start=&quot;1076&quot; data-section-id=&quot;1g6lrkx&quot;&gt;&lt;b&gt;docs_researcher&lt;/b&gt;: 공식 문서나 API 동작 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;Codex는 기본적으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;default,&lt;span&gt;&amp;nbsp;&lt;/span&gt;worker,&lt;span&gt;&amp;nbsp;&lt;/span&gt;explorer&lt;span&gt;&amp;nbsp;&lt;/span&gt;같은 내장 agent를 제공하고, 사용자가 직접 custom agent를 추가할 수도 있습니다. custom agent는 글로벌(~/.codex/agents/) 또는 프로젝트 로컬(.codex/agents/)에 TOML 파일로 정의합니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;탐색과 구현과 검토를 한 agent에게 한꺼번에 시키면 맥락이 뭉개지기 쉽지만, 역할을 분리하면 각 agent가 더 좁고 선명한 책임을 가지게 됩니다. OpenAI 문서도&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;좁고 명확한 역할을 가진 agent일수록 잘 동작한다&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;고 설명합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lF6Zq/dJMb99Tlq1K/gw088cOJvbO9FnEWWZjtH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lF6Zq/dJMb99Tlq1K/gw088cOJvbO9FnEWWZjtH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lF6Zq/dJMb99Tlq1K/gw088cOJvbO9FnEWWZjtH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlF6Zq%2FdJMb99Tlq1K%2Fgw088cOJvbO9FnEWWZjtH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1271&quot; height=&quot;503&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;실제로 subagent를 사용하며 인상적이었던 점은 mainagent가 subagent들을 관리하면서 PM 역할을 해주는 점이었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;여러개의 subagent들이 각각 작업을 수행하는데 결과를 취합하고 또 다른 subagent에게 작업을 지시하는 역할을 중간에 해주니 사용자 입장에서는 수고스러움이 많이 덜어졌습니다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1558&quot; data-start=&quot;1544&quot; data-section-id=&quot;1ap36l8&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;subagent를 사용하기 위한 준비사항&lt;/b&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #000000; text-align: start;&quot; data-end=&quot;1850&quot; data-start=&quot;1781&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1806&quot; data-start=&quot;1781&quot; data-section-id=&quot;qx8znq&quot;&gt;&lt;b&gt;Codex CLI 설치 및 로그인&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1828&quot; data-start=&quot;1807&quot; data-section-id=&quot;yw1usx&quot;&gt;&lt;b&gt;프로젝트별 공통 지침 정리&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1850&quot; data-start=&quot;1829&quot; data-section-id=&quot;184cmgk&quot;&gt;&lt;b&gt;agent 역할 파일 분리&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;2932&quot; data-start=&quot;2906&quot; data-section-id=&quot;zv628h&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span&gt;AGENTS.md로 공통 지침 넣기&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;3136&quot; data-start=&quot;2934&quot; data-ke-size=&quot;size16&quot;&gt;subagent를 쓰기 전에 가장 먼저 해두면 좋은 것이&lt;span&gt;&amp;nbsp;&lt;/span&gt;AGENTS.md입니다. Codex는 작업을 시작하기 전에&lt;span&gt;&amp;nbsp;&lt;/span&gt;AGENTS.md를 읽습니다. 글로벌 범위(~/.codex/AGENTS.md)와 프로젝트 범위의&lt;span&gt;&amp;nbsp;&lt;/span&gt;AGENTS.md를 계층적으로 읽어서 작업 지침으로 사용합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;3168&quot; data-start=&quot;3138&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 글로벌 기본 규칙은 이렇게 둘 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1774664612625&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mkdir -p ~/.codex&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;3168&quot; data-start=&quot;3138&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;~/.codex/AGENTS.md&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774664619690&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ~/.codex/AGENTS.md

## Working agreements
- 응답은 한국어로 작성한다.
- 코드 수정 후 관련 테스트 명령을 우선 제안한다.
- 새 의존성 추가 전에는 이유를 설명한다.
- 변경 범위가 크면 먼저 영향 범위를 요약한다.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;3168&quot; data-start=&quot;3138&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;프로젝트별로는 저장소 루트에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;AGENTS.md&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;를 두면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;3168&quot; data-start=&quot;3138&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;./AGENTS.md&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774664658898&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Project guidance

## Repo rules
- 프론트엔드 수정 시 build 결과 영향을 함께 점검한다.
- 백엔드 수정 시 API 스펙 변경 여부를 반드시 확인한다.
- PR 리뷰 시 버그, 테스트 누락, 회귀 가능성을 우선 본다.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;이런 초기 설정을 해두면 매번 프롬프트로 반복하지 않아도 되고, 메인 agent뿐 아니라 subagent까지&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;일관된 작업 기준&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;을 공유할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;subagent 기본 설정 파일 만들기&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;subagent는&lt;span&gt;&amp;nbsp;&lt;/span&gt;~/.codex/agents/&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;.codex/agents/&lt;span&gt;&amp;nbsp;&lt;/span&gt;아래에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;에이전트별 TOML 파일&lt;/b&gt;을 두는 방식으로 설정합니다. 공식 문서 기준 각 파일에는 최소한 아래 3개 필드가 있어야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-end=&quot;3979&quot; data-start=&quot;3928&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3936&quot; data-start=&quot;3928&quot; data-section-id=&quot;189qtin&quot;&gt;name&lt;/li&gt;
&lt;li data-end=&quot;3952&quot; data-start=&quot;3937&quot; data-section-id=&quot;6b8nwu&quot;&gt;description&lt;/li&gt;
&lt;li data-end=&quot;3979&quot; data-start=&quot;3953&quot; data-section-id=&quot;1x8cklm&quot;&gt;developer_instructions&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;4150&quot; data-start=&quot;3981&quot; data-ke-size=&quot;size16&quot;&gt;또한 필요하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;model,&lt;span&gt;&amp;nbsp;&lt;/span&gt;model_reasoning_effort,&lt;span&gt;&amp;nbsp;&lt;/span&gt;sandbox_mode,&lt;span&gt;&amp;nbsp;&lt;/span&gt;mcp_servers,&lt;span&gt;&amp;nbsp;&lt;/span&gt;skills.config,&lt;span&gt;&amp;nbsp;&lt;/span&gt;nickname_candidates등을 함께 넣을 수 있습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;4173&quot; data-start=&quot;4152&quot; data-ke-size=&quot;size16&quot;&gt;먼저 agent 설정 폴더를 만듭니다.&lt;/p&gt;
&lt;pre id=&quot;code_1774664726945&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mkdir -p .codex/agents&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;.codex/config.toml&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;에 subagent 관련 전역 옵션을 추가합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;.codex/config.toml&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1774664758033&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[agents]
max_threads = 6
max_depth = 1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #000000;&quot; data-end=&quot;4403&quot; data-start=&quot;4357&quot; data-section-id=&quot;1pursna&quot;&gt;max_threads: 동시에 열릴 수 있는 agent thread 최대 수&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot; data-end=&quot;4437&quot; data-start=&quot;4404&quot; data-section-id=&quot;1scwvmj&quot;&gt;max_depth: subagent의 중첩 생성 깊이&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 3가지 역할의 Agent 설정 예시입니다. 원하는 역할이 있다면 해당 역할로 정의하시면 되고, 아래 링크의 Collection을 활용해서 Agent를 생성해도됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-codex-subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-codex-subagents&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;Explorer Agent&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;코드 구조를 탐색하고 영향 범위를 정리하는 역할입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;.codex/agents/explorer.toml&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774664816553&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name = &quot;explorer&quot;
description = &quot;코드베이스를 읽고 관련 파일, 흐름, 영향 범위를 파악하는 읽기 전용 탐색 agent&quot;
model = &quot;gpt-5.4-mini&quot;
model_reasoning_effort = &quot;medium&quot;
sandbox_mode = &quot;read-only&quot;
developer_instructions = &quot;&quot;&quot;
항상 탐색에 집중한다.
관련 파일, 함수, 진입점, 호출 흐름을 정리한다.
수정안 제시는 최소화하고, 먼저 근거를 수집한다.
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;코드 구조를 탐색하고 영향 범위를 정리하는 역할입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;Worker agent&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;실제 구현을 담당하는 역할입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;.codex/agents/worker.toml&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774664899805&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name = &quot;worker&quot;
description = &quot;구현과 수정 작업을 수행하는 실행 중심 agent&quot;
model = &quot;gpt-5.4&quot;
model_reasoning_effort = &quot;medium&quot;
developer_instructions = &quot;&quot;&quot;
구현 작업에 집중한다.
영향 범위를 벗어난 리팩토링은 자제한다.
필요한 파일만 수정하고, 변경 이유를 짧게 설명한다.
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;Reviewer agent&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;버그, 보안, 테스트 누락을 검토하는 역할입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;.codex/agents/reviewer.toml&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774664934291&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name = &quot;reviewer&quot;
description = &quot;정확성, 보안, 회귀 가능성, 테스트 누락을 검토하는 리뷰 agent&quot;
model = &quot;gpt-5.4&quot;
model_reasoning_effort = &quot;high&quot;
sandbox_mode = &quot;read-only&quot;
developer_instructions = &quot;&quot;&quot;
코드를 소유자 관점에서 검토한다.
정확성, 보안, 회귀 가능성, 테스트 누락을 우선순위로 본다.
스타일 지적보다 실제 문제를 먼저 제시한다.
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;display nickname 설정하기&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;여러 subagent를 동시에 돌릴 때, 화면에 같은 이름만 반복되면 헷갈릴 수 있습니다. 이를 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;nickname_candidates를 설정할 수 있습니다. 이 값은 UI 표시용 별칭이며, 실제 agent 식별은&lt;span&gt;&amp;nbsp;&lt;/span&gt;name으로 이뤄집니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774665071350&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name = &quot;reviewer&quot;
description = &quot;PR reviewer focused on correctness, security, and missing tests.&quot;
developer_instructions = &quot;&quot;&quot;
Review code like an owner.
&quot;&quot;&quot;
nickname_candidates = [&quot;Atlas&quot;, &quot;Delta&quot;, &quot;Echo&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;이렇게 해두면 CLI나 앱에서 좀 더 읽기 쉬운 이름으로 표시될 수 있습니다. 특히 같은 유형의 agent를 여러 개 spawn할 때 유용합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;설정이 완료되면 아래와 같이 Codex CLI에서 &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;Subagent를 언급한 &lt;/span&gt;프롬프트를 입력하면 Subagent를 활용한 작업을 시작합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1774665143832&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;현재 브랜치를 기준으로 작업해줘.
먼저 explorer agent를 사용해서 영향 범위를 분석하고,
그 다음 worker agent가 수정안을 만들고,
마지막으로 reviewer agent가 회귀 가능성과 테스트 누락을 검토해줘.
모든 결과를 기다린 뒤 최종 요약을 한국어로 정리해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-end=&quot;1337&quot; data-start=&quot;1117&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-size: 25.92px;&quot;&gt;&lt;b&gt;현재 세션의 Subagent 확인&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774663834208&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;rsaquo; /agent
 
  /agent  switch the active agent thread


  Subagents
  Select an agent to watch. ⌥ + &amp;larr; previous, ⌥ + &amp;rarr; next.
 
&amp;rsaquo; 1. &amp;bull; Main [default] (current)  019a2erwqd1f85-86asewraeswr2f-73rtew61-adyh473
  2. &amp;bull; Huygens [explorer]        019a2erwqd1f85-86asewraeswr2f-73rtew61-adyh473
  3. &amp;bull; Hilbert [explorer]        019a2erwqd1f85-86asewraeswr2f-73rtew61-adyh473
  4. &amp;bull; Fermat [worker]           019a2erwqd1f85-86asewraeswr2f-73rtew61-adyh473
  5. &amp;bull; Sartre [explorer]         019a2erwqd1f85-86asewraeswr2f-73rtew61-adyh473
  6. &amp;bull; Hume [explorer]           019a2erwqd1f85-86asewraeswr2f-73rtew61-adyh473&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;토큰 잔량 확인&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1774663782082&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/status

╭────────────────────────────────────────────────────────────────────────────────────────╮
│  &amp;gt;_ OpenAI Codex (v0.116.0)                                                            │
│                                                                                        │
│ Visit https://chatgpt.com/codex/settings/usage for up-to-date                          │
│ information on rate limits and credits                                                 │
│                                                                                        │
│  Model:                       gpt-5.3-codex (reasoning none, summaries auto)           │
│  Directory:                   ~/WebstormProjects/pg                                    │
│  Permissions:                 Custom (workspace-write, on-request)                     │
│  Agents.md:                   AGENTS.md                                                │
│  Account:                     ai@taeseong.me (Pro)                                     │
│  Collaboration mode:          Default                                                  │
│  Session:                     019a2erwqd1f85-86asewraeswr2f-73rtew61-adyh473           │
│                                                                                        │
│  Context window:              22% left (203K used / 258K)                              │
│  5h limit:                    [████████████████████] 99% left (resets 14:13)           │
│  Weekly limit:                [████████████████████] 99% left (resets 22:56 on 3 Apr)  │
│  GPT-5.3-Codex-Spark limit:                                                            │
│  5h limit:                    [████████████████████] 100% left (resets 16:04)          │
│  Weekly limit:                [████████████████████] 100% left (resets 11:04 on 4 Apr) │
╰────────────────────────────────────────────────────────────────────────────────────────╯&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <category>ChatGPT</category>
      <category>codex</category>
      <category>GPT</category>
      <category>subagent</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/473</guid>
      <comments>https://tskwon.tistory.com/473#entry473comment</comments>
      <pubDate>Sat, 28 Mar 2026 11:41:31 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI 설치</title>
      <link>https://tskwon.tistory.com/472</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;Codex CLI는 npm으로 설치할 수 있고, 공식 문서와 GitHub 저장소에는 Homebrew 설치 방법도 함께 안내되어 있습니다. macOS 사용자는 brew가 더 편할 수 있고, Node.js 환경이 이미 있다면 npm 설치가 가장 빠릅니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774664328607&quot; class=&quot;cmake&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# npm 설치
npm install -g @openai/codex

# Homebrew 설치
brew install codex&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;설치가 끝났다면 아래 명령으로 정상 설치 여부를 확인합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774664328607&quot; class=&quot;ebnf&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;처음 실행 시 Codex CLI는 터미널 기반 인터페이스로 실행되며, 현재 디렉터리의 코드를 읽고 수정하거나 명령을 실행할 수 있는 형태로 동작합니다. 따라서 아래와 같이 작업을 시작 할 경로에서 Codex를 실행해야됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1774664328607&quot; class=&quot;applescript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;cd my-project
codex &quot;이 저장소를 읽고, 백엔드와 프론트엔드 구조를 구분해서 설명해줘&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-section-id=&quot;oal64d&quot; data-start=&quot;850&quot; data-end=&quot;868&quot;&gt;&lt;b&gt;로그인 및 인증 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;870&quot; data-end=&quot;927&quot; data-ke-size=&quot;size16&quot;&gt;Codex CLI는 첫 실행 시 인증을 요구합니다.&lt;br /&gt;공식적으로 지원되는 방식은 다음 두 가지입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;929&quot; data-end=&quot;975&quot;&gt;
&lt;li data-section-id=&quot;1swm1k&quot; data-start=&quot;929&quot; data-end=&quot;951&quot;&gt;&lt;b&gt;ChatGPT 계정으로 로그인&lt;/b&gt;&lt;/li&gt;
&lt;li data-section-id=&quot;1vqqu3s&quot; data-start=&quot;952&quot; data-end=&quot;975&quot;&gt;&lt;b&gt;OpenAI API 키로 로그인&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;977&quot; data-end=&quot;1180&quot; data-ke-size=&quot;size16&quot;&gt;즉, 개인적으로 빠르게 시작하려면 ChatGPT 계정 로그인이 편하고, 팀/과금 분리나 API 기반 운영을 원하면 API 키 방식이 적합합니다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;977&quot; data-end=&quot;1180&quot; data-ke-size=&quot;size16&quot;&gt;또한 CLI 레퍼런스에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;codex login&lt;span&gt;&amp;nbsp;&lt;/span&gt;명령으로 OAuth, device auth, API key 입력 방식이 가능하다고 안내되어 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1774664387512&quot; class=&quot;properties&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 로그인
codex login

# 로그아웃
codex logout&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <category>ChatGPT</category>
      <category>codex</category>
      <category>GPT</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/472</guid>
      <comments>https://tskwon.tistory.com/472#entry472comment</comments>
      <pubDate>Sat, 28 Mar 2026 11:19:29 +0900</pubDate>
    </item>
    <item>
      <title>[Unity] Unity6에서 TextMeshPro를 찾을 수 없을 때 해결 방법</title>
      <link>https://tskwon.tistory.com/471</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-03 오후 3.46.32.png&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;659&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKSlPV/dJMcaiBWhOE/vSUCzM8odOjXt9mjeSv2K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKSlPV/dJMcaiBWhOE/vSUCzM8odOjXt9mjeSv2K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKSlPV/dJMcaiBWhOE/vSUCzM8odOjXt9mjeSv2K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKSlPV%2FdJMcaiBWhOE%2FvSUCzM8odOjXt9mjeSv2K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;748&quot; height=&quot;659&quot; data-filename=&quot;스크린샷 2026-01-03 오후 3.46.32.png&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;659&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unity6에서 TextMeshPro가 필요한데 Package Manager에서 검색해도 안 나오고 ChatGPT, Perplexity 등.. AI들도 알지 못했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-03 오후 3.50.38.png&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xP5QG/dJMcabQosw0/SKvOx5sQPbJmT5NwO3pFwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xP5QG/dJMcabQosw0/SKvOx5sQPbJmT5NwO3pFwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xP5QG/dJMcabQosw0/SKvOx5sQPbJmT5NwO3pFwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxP5QG%2FdJMcabQosw0%2FSKvOx5sQPbJmT5NwO3pFwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;244&quot; data-filename=&quot;스크린샷 2026-01-03 오후 3.50.38.png&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 해결하기 위해 방법을 찾던 중 &lt;a href=&quot;https://www.reddit.com/r/unity/comments/1htjxtx/unity_6_removed_tmpro/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Reddit&lt;/a&gt;에서 해결 방법을 찾았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-03 오후 3.46.52.png&quot; data-origin-width=&quot;1123&quot; data-origin-height=&quot;655&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TSk0e/dJMcafL1Yqf/coHIkIc9MkgIn1fW4NKBx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TSk0e/dJMcafL1Yqf/coHIkIc9MkgIn1fW4NKBx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TSk0e/dJMcafL1Yqf/coHIkIc9MkgIn1fW4NKBx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTSk0e%2FdJMcafL1Yqf%2FcoHIkIc9MkgIn1fW4NKBx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1123&quot; height=&quot;655&quot; data-filename=&quot;스크린샷 2026-01-03 오후 3.46.52.png&quot; data-origin-width=&quot;1123&quot; data-origin-height=&quot;655&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글 처럼 Unity UI 패키지를 설치하니 Window 메뉴에 TextMeshPro 메뉴가 보인다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2026-01-03 오후 3.47.48.png&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;551&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/behBQd/dJMcaihGMGf/S7zcNp3Ya1vtalhumHbCu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/behBQd/dJMcaihGMGf/S7zcNp3Ya1vtalhumHbCu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/behBQd/dJMcaihGMGf/S7zcNp3Ya1vtalhumHbCu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbehBQd%2FdJMcaihGMGf%2FS7zcNp3Ya1vtalhumHbCu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;680&quot; height=&quot;551&quot; data-filename=&quot;스크린샷 2026-01-03 오후 3.47.48.png&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;551&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전부터 개발 환경 설정이 참 난관인 것 같다. 이젠 자동으로 해줄 수 있는 시대인 것 같은데.. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/471</guid>
      <comments>https://tskwon.tistory.com/471#entry471comment</comments>
      <pubDate>Sat, 3 Jan 2026 15:52:59 +0900</pubDate>
    </item>
    <item>
      <title>아스키 아트와 생성 사이트</title>
      <link>https://tskwon.tistory.com/470</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;아스키 아트 (ASCII Art)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아스키 아트는 텍스트 문자만을 이용해 그림이나 디자인을 표현하는 기법이며, 아래와 같은 특징을 가집니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;563&quot; data-start=&quot;351&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;410&quot; data-start=&quot;351&quot;&gt;특수 문자나 기호 (@, #, *, =, /, \, | 등)를 반복적으로 사용&lt;/li&gt;
&lt;li data-end=&quot;449&quot; data-start=&quot;411&quot;&gt;해상도는 낮지만 텍스트 기반 환경에서도 이미지 느낌을 줄 수 있음&lt;/li&gt;
&lt;li data-end=&quot;489&quot; data-start=&quot;450&quot;&gt;초기 컴퓨터 시절, 그래픽 출력이 어려운 환경에서 예술적으로 활용됨&lt;/li&gt;
&lt;li data-end=&quot;563&quot; data-start=&quot;490&quot;&gt;개발자들이 &lt;b&gt;터미널&lt;/b&gt;, &lt;b&gt;채팅 프로그램&lt;/b&gt;, &lt;b&gt;소스코드 주석&lt;/b&gt; 등에서 재미 요소나 장식용으로 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1750215021797&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;                                                                      
         88                                                           
  ,d     &quot;&quot;               ,d                                          
  88                      88                                          
MM88MMM  88  ,adPPYba,  MM88MMM  ,adPPYba,   8b,dPPYba,  8b       d8  
  88     88  I8[    &quot;&quot;    88    a8&quot;     &quot;8a  88P'   &quot;Y8  `8b     d8'  
  88     88   `&quot;Y8ba,     88    8b       d8  88           `8b   d8'   
  88,    88  aa    ]8I    88,   &quot;8a,   ,a8&quot;  88            `8b,d8'    
  &quot;Y888  88  `&quot;YbbdP&quot;'    &quot;Y888  `&quot;YbbdP&quot;'   88              Y88'     
                                                             d8'      
                                                            d8'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직관적인 설명을 위해 티스토리를 아스키 아트로 표현해봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 아스키 아트를 하나하나 수작업으로 만들어도 되겠지만 아스키 아트를 생성해주는 도구들이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 중 제가 가장 많이 사용하는 페이지를 소개합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://budavariam.github.io/asciiart-text/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://budavariam.github.io/asciiart-text/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mUKhW/btsOFLGf3jC/tRR3NQJsg3AOyraxVKLYkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mUKhW/btsOFLGf3jC/tRR3NQJsg3AOyraxVKLYkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mUKhW/btsOFLGf3jC/tRR3NQJsg3AOyraxVKLYkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmUKhW%2FbtsOFLGf3jC%2FtRR3NQJsg3AOyraxVKLYkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1239&quot; height=&quot;636&quot; data-origin-width=&quot;1239&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직관적으로 구성되어있어서 접속해보면 사용법을 바로 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Text 영역에 작성한 문자를 하단에 아스키 아트로 표현해주며, Font 설정을 변경하면 다양한 스타일로 적용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/470</guid>
      <comments>https://tskwon.tistory.com/470#entry470comment</comments>
      <pubDate>Wed, 18 Jun 2025 11:55:53 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu 서버에 강제로 부하를 주는 stress 도구</title>
      <link>https://tskwon.tistory.com/469</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;개발이나 테스트 환경에서 서버의 성능을 측정하거나 모니터링을 위해 의도적으로 부하를 주는 경우가 있습니다. 이럴 때 유용하게 사용할 수 있는 툴 중 하나가 stress입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;stress 라이브러리 소개&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stress는 CPU, 메모리, I/O 등에 인위적인 부하를 주어 시스템의 안정성이나 자원 사용 상태를 테스트할 수 있도록 도와주는 간단하고 강력한 CLI 도구이며, 아래와 같은 상황에서 이용될 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모니터링 시스템의 CPU/메모리 사용률 변화 확인&lt;/li&gt;
&lt;li&gt;열 방출 및 팬 작동 테스트&lt;/li&gt;
&lt;li&gt;서버 오버클럭 테스트&lt;/li&gt;
&lt;li&gt;프로세스 한계점 분석&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;stress 설치 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;apt 명령어로 간단하게 설치할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1750075516840&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt update
sudo apt install stress
stress --version&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사용법&lt;/h2&gt;
&lt;pre id=&quot;code_1750075633066&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# CPU 4개 코어에 부하 &amp;amp; 60초 동안 유지
stress --cpu 4 --timeout 60

# 메모리 2개 워커를 생성해 각각 256MB 할당 &amp;amp; 60초 동안 유지
stress --vm 2 --vm-bytes 256M --timeout 60

# 현재 사용가능한 CPU 코어 수만큼 부하 &amp;amp; 메모리 75% 사용 &amp;amp; 3분 동안 유지
stress --cpu $(nproc) --vm 4 --vm-bytes '75%' --timeout 180&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;옵션&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;--cpu N&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;CPU 부하를 줄 worker 수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;--io N&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;I/O 부하를 줄 worker 수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;--vm N&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;메모리 부하를 줄 worker 수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;--vm-bytes&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;각 vm worker가 사용할 메모리 크기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;--timeout&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;실행 시간 제한 (초 단위)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/469</guid>
      <comments>https://tskwon.tistory.com/469#entry469comment</comments>
      <pubDate>Mon, 16 Jun 2025 21:10:24 +0900</pubDate>
    </item>
    <item>
      <title>Simple Icons SVG 아이콘 사이트</title>
      <link>https://tskwon.tistory.com/468</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://simpleicons.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Simple Icons&lt;/a&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Simple Icons는 3,267개의 유명 브랜드의 SVG 아이콘을 제공한다. 처음 이 사이트를 알게되었을 때 제공하던 아이콘이 2,000 여개였는데 지금은 1,267개가 더 추가되었으니 지속적으로 유지보수도 되고있는 것으로 보인다. SVG나 PNG로 아이콘을 다운로드 받을 수도 있고, CDN을 이용하거나 npm 패키지로 받을 수도 있다. 개발할 때가 아니라도 문서를 작성할 때 고해상도의 아이콘들이 필요한 경우가 있는데 그럴때 사용해도 충분히 유용하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;1155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TNuBv/btsL4LCnwTm/PIxJvKO3ZhQEBFOaqPlkm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TNuBv/btsL4LCnwTm/PIxJvKO3ZhQEBFOaqPlkm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TNuBv/btsL4LCnwTm/PIxJvKO3ZhQEBFOaqPlkm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTNuBv%2FbtsL4LCnwTm%2FPIxJvKO3ZhQEBFOaqPlkm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1214&quot; height=&quot;1155&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;1155&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/468</guid>
      <comments>https://tskwon.tistory.com/468#entry468comment</comments>
      <pubDate>Mon, 3 Feb 2025 10:28:39 +0900</pubDate>
    </item>
    <item>
      <title>[Linux] tail과 함께 사용하면 좋은 옵션</title>
      <link>https://tskwon.tistory.com/467</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 서버에서 로그를 확인할 때 tail 명령어를 사용하는 경우가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때 로그가 너무 빨리 지나가서 검증하기 불편한 경우, 아래의 방법들을 이용하면 도움이됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. less&amp;nbsp;&lt;/h2&gt;
&lt;pre id=&quot;code_1736592448914&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tail -f /var/log/syslog | less&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;less는 화면에 일정 부분만 출력하며, 스크롤하여 천천히 로그를 확인할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. grep&lt;/h2&gt;
&lt;pre id=&quot;code_1736592457919&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tail -f /var/log/syslog | grep &quot;ERROR&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그 중 특정 키워드만 필터링하여 출력합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. awk&lt;/h2&gt;
&lt;pre id=&quot;code_1736592465324&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tail -f /var/log/syslog | awk 'NR % 10 == 0'&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;awk를 이용해 일정 간격으로 출력합니다.&lt;/li&gt;
&lt;li&gt;위 옵션은 10줄에 한 번씩만 출력하는 옵션입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/467</guid>
      <comments>https://tskwon.tistory.com/467#entry467comment</comments>
      <pubDate>Sat, 11 Jan 2025 19:50:34 +0900</pubDate>
    </item>
    <item>
      <title>VisualStudioCode Rest Client</title>
      <link>https://tskwon.tistory.com/466</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Rest API 개발을 하거나 이용할 API 테스트를 할 때 Postman과 같은 도구가 오래전부터 이용되었지만 최근엔 IDE마다 조금더 경량으로 이용할 수 있는 방법이 생겼습니다. 그 중 VisualStudioCode에서 &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=humao.rest-client&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rest Client&lt;/a&gt; 확장을 소개합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWo1mv/btsKZ5A7jvp/ZK6B9VWATZ89bhf7k4GtN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWo1mv/btsKZ5A7jvp/ZK6B9VWATZ89bhf7k4GtN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWo1mv/btsKZ5A7jvp/ZK6B9VWATZ89bhf7k4GtN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWo1mv%2FbtsKZ5A7jvp%2FZK6B9VWATZ89bhf7k4GtN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;157&quot; data-origin-width=&quot;519&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;주요 기능&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;HTTP 요청 실행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GET, POST, PUT, DELETE 등 다양한 HTTP 메서드 지원&lt;/li&gt;
&lt;li&gt;.http 또는 .rest 파일에서 HTTP 요청을 작성하고 실행 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;환경 변수 지원&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;{{baseUrl}} 같은 변수로 동적인 요청 작성이 가능해 유연성 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청/응답 시각화&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JSON, XML 등 응답 데이터를 보기 쉽게 포맷하여 출력&lt;/li&gt;
&lt;li&gt;상태 코드, 헤더, 응답 시간 등 상세 정보 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청 기록&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이전에 보낸 요청을 기록하고 재사용할 수 있는 기능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복합 요청 처리&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 업로드와 같은 복잡한 요청도 간단히 실행 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인증 지원&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Basic 인증, Bearer Token, OAuth 2.0 등의 인증 방식 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;활용 샘플&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1732711309444&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@baseUrl = https://api.example.com
@serviceKey = AWERARPJGWAERTJAEOPRJAWER

# GET 요청
GET {{baseUrl}}/?ServiceKey={{serviceKey}}

###

# POST 요청
POST {{baseUrl}}/getStanReginCd
Content-Type: application/json

{
 &quot;ServiceKey&quot; : &quot;AWERARPJGWAERTJAEOPRJAWER&quot;
}

###

# PUT 요청
PUT {{baseUrl}}/users/123 HTTP/1.1
Content-Type: application/json

{
  &quot;status&quot;: &quot;inactive&quot;
}

###

# FORM-DATA 요청
POST {{baseUrl}}/upload HTTP/1.1
Content-Type: application/x-www-form-urlencoded

userId=123&amp;amp;fileName=myfile.txt

###

# GET 요청 (헤더에 파라미터 추가)
GET {{baseUrl}}/protected-resource HTTP/1.1
Authorization: Bearer {{serviceKey}}
Content-Type: application/json&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 변수를 선언해서 API마다 반복되는 값들을 따로 관리할 수도 있고 하나의 .http 파일에서 여러가지 API를 사용할 수도 있습니다. .http 파일만 형상관리한다면 협업하는 동료들과도 문서 처럼 활용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1494&quot; data-origin-height=&quot;1133&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boyfNk/btsKZyRln60/L3m1qM3JEv2Ao1KfvALtAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boyfNk/btsKZyRln60/L3m1qM3JEv2Ao1KfvALtAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boyfNk/btsKZyRln60/L3m1qM3JEv2Ao1KfvALtAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboyfNk%2FbtsKZyRln60%2FL3m1qM3JEv2Ao1KfvALtAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1494&quot; height=&quot;1133&quot; data-origin-width=&quot;1494&quot; data-origin-height=&quot;1133&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;위 스크린샷 처럼 호출 할 URL을 선언하고 나면 API Method 위에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Send Request&lt;/b&gt;라는 텍스트가 클릭할 수 있게 활성화되고, 클릭하면 우측에 API 실행결과가 자세하게 표시됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 말씀드렸듯이 다른 IDE에도 이와 비슷한 기능들이 있기에 개발할 때 사용하는 IDE 에서 Rest API를 테스트하는 통합된 워크플로우를 경험해보시길 추천드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/466</guid>
      <comments>https://tskwon.tistory.com/466#entry466comment</comments>
      <pubDate>Wed, 27 Nov 2024 21:47:59 +0900</pubDate>
    </item>
    <item>
      <title>PPT에 쓰기 알맞은 KoPub 서체 소개</title>
      <link>https://tskwon.tistory.com/465</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;각종 문서를 작성하다보면 서체 하나로 문서가 주는 느낌이 많이 달라지고 정보의 전달력도 차이가 들다보니 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;서체가 참 중요하다는 생각이 듭니다.그래서 각종 문서를 보면서 이건 어떤 서체인가 궁금해서 찾아볼 때가 있는데 그렇게 찾아서 사용하게되었던 서체 중 하나인 &lt;a href=&quot;https://www.kopus.org/biz-electronic-font2-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;KoPub 서체&lt;/a&gt;를 소개합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;a href=&quot;https://www.kopus.org/biz-electronic-font2-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;KoPub / KoPubWorld 서체&lt;/span&gt;&lt;/a&gt;&amp;nbsp;소개&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KoPub 서체는 문화체육관광부와 한국출판인회의에서 전자책 제작 및 전자출판 유통시장 화성화를 지원하고 출판업계와 전자출판 산업 발전을 도모하기 위해 제작되었고, 문화체육관광부와 한국출판인회의에서 지적재산권을 가진 서체입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;지원 타입&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TTF (True Type Font) : 일반 문서 작업에 적합
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1980년대 애플에서 어도비의 포스트스크립트에 쓰이는 타입 1 글꼴에 대항하기 위해 개발&lt;/li&gt;
&lt;li&gt;이후 마이크로소프트에게 무료로 라이선스를 제공하여 윈도우3.1에 탑재되면서 대중화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OTF (Open Type Font) : 그래픽 디자인 출력에 적합
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;마이크로소프트에서 트루타입의 뒤를 잇기 위해 고안, 어도비 시스템즈와 공동으로 개발되어 1997년 발표&lt;/li&gt;
&lt;li&gt;OpenType은 마이크로소프트의 등록 상표&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;라이선스&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출판업계(전자출판업계 포함) 및 기업, 개인을 포함한 모든 사용자가 별도의 허가절차 없이 홈페이지 정보 등록 후 무료로 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다만, 사전승인 없이 폰트를 수정, 변형하는 것은 불가하고 폰트 자체를 유료로 판매, 양도하는 모든 상업적 행위는 금지입니다. &lt;/b&gt;그리고 KoPub서체 및 KoPubWorld 서체를 사용한 결과물 (인쇄, 광고, 전자책, 이미지 등)은 서체의 홍보를 위해 활용될 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보다 정확한 라이선스는 홈페이지의 라이선스 약관을 참고해주시고, 사용 전에는 반드시 홈페이지에서 KoPub 서체 사용 등록을 진행해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;샘플&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;KoPub돋움체 Bold&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1646&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nrQQW/btsKW9ktY52/wByNS1rK6JCDqkPMCfE9kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nrQQW/btsKW9ktY52/wByNS1rK6JCDqkPMCfE9kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nrQQW/btsKW9ktY52/wByNS1rK6JCDqkPMCfE9kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnrQQW%2FbtsKW9ktY52%2FwByNS1rK6JCDqkPMCfE9kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1646&quot; height=&quot;516&quot; data-origin-width=&quot;1646&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;KoPub바탕체 Bold&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1738&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zivZ7/btsKW4DuqXz/4RsVI2uM4fGSJ5QTA0FP0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zivZ7/btsKW4DuqXz/4RsVI2uM4fGSJ5QTA0FP0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zivZ7/btsKW4DuqXz/4RsVI2uM4fGSJ5QTA0FP0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzivZ7%2FbtsKW4DuqXz%2F4RsVI2uM4fGSJ5QTA0FP0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1738&quot; height=&quot;541&quot; data-origin-width=&quot;1738&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/465</guid>
      <comments>https://tskwon.tistory.com/465#entry465comment</comments>
      <pubDate>Tue, 26 Nov 2024 21:51:10 +0900</pubDate>
    </item>
    <item>
      <title>HAProxy, Apache, Nginx 로드밸런서 비교</title>
      <link>https://tskwon.tistory.com/464</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 장비가 아닌 소프트웨어로 로드밸런서를 구현할 때 많이 언급되는 HAProxy, Apache, NginX 3가지를 비교해봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 211px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 20px;&quot;&gt;&lt;b&gt; 특징 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 20px;&quot;&gt;&lt;b&gt; HAProxy &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 20px;&quot;&gt;&lt;b&gt; Apache &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 20px;&quot;&gt;&lt;b&gt; Nginx &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 20px;&quot;&gt;주요 사용 사례&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 20px;&quot;&gt;전용 로드 밸런서&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 20px;&quot;&gt;웹서버 + 로드 밸런싱&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 20px;&quot;&gt;웹서버 + 로드 밸런싱&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 17px;&quot;&gt;성능&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 17px;&quot;&gt;높은 성능 - 로드 밸런싱에 최적화&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 17px;&quot;&gt;보통 - 로드 밸런싱 전문은 아님&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 17px;&quot;&gt;높은 성능 - 효율적인 아키텍처&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 18px;&quot;&gt;설정의 용이성&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 18px;&quot;&gt;보통 - 텍스트 기반 설정&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 18px;&quot;&gt;보통 - 텍스트 기반 설정&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 18px;&quot;&gt;쉬움 - 간단한 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 17px;&quot;&gt;지원 프로토콜&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 17px;&quot;&gt;HTTP, TCP, UDP&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 17px;&quot;&gt;HTTP, HTTPS&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 17px;&quot;&gt;HTTP, HTTPS, TCP, UDP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 17px;&quot;&gt;로드 밸런싱 알고리즘&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 17px;&quot;&gt;라운드로빈, 최소 연결 수 등&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 17px;&quot;&gt;라운드로빈, 최소 연결 수&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 17px;&quot;&gt;라운드로빈, 최소 연결 수, IP 해시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 17px;&quot;&gt;SSL 종료 지원&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 17px;&quot;&gt;지원&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 17px;&quot;&gt;지원 (모듈 필요)&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 17px;&quot;&gt;지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 17px;&quot;&gt;헬스 체크&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 17px;&quot;&gt;지원 - 고급 체크 가능&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 17px;&quot;&gt;지원 - 기본 체크&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 17px;&quot;&gt;지원 - 좋은 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 17px;&quot;&gt;확장성&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 17px;&quot;&gt;높은 확장성&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 17px;&quot;&gt;제한적 - 웹 서버로 설계됨&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 17px;&quot;&gt;높은 확장성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 17px;&quot;&gt;리소스 효율성&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 17px;&quot;&gt;매우 효율적&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 17px;&quot;&gt;보통 - HAProxy보다 무거움&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 17px;&quot;&gt;효율적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 19.0698%; height: 17px;&quot;&gt;추가 기능&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%; height: 17px;&quot;&gt;연결 추적, 세부적인 메트릭 제공&lt;/td&gt;
&lt;td style=&quot;width: 27.093%; height: 17px;&quot;&gt;웹 서버 전체 기능&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%; height: 17px;&quot;&gt;캐싱, 리버스 프록시, 웹 서버 기능 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.0698%;&quot;&gt;네트워크 레벨 지원&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%;&quot;&gt;L4, L7 지원&lt;/td&gt;
&lt;td style=&quot;width: 27.093%;&quot;&gt;L7만 지원&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%;&quot;&gt;L4, L7 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.0698%;&quot;&gt;설정 적용 방식&lt;/td&gt;
&lt;td style=&quot;width: 28.2558%;&quot;&gt;무중단 적용 가능&lt;/td&gt;
&lt;td style=&quot;width: 27.093%;&quot;&gt;대부분 재기동 필요&lt;/td&gt;
&lt;td style=&quot;width: 25.5814%;&quot;&gt;무중단 적용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Apache와 Nginx는 웹 서버로 설계되었지만, HAProxy는 로드밸런싱과 트래픽 관리에 특화된 소프트웨어입니다. 따라서 HAProxy는 웹 서버 기능이 없고 오로지 트래픽을 분산하고 서버 가용성을 유지하는데 목적이 있다는 차이점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 웹 서버 + 로드밸런싱이 필요하다면 Nginx를, 고성능의 로드밸런싱만 필요한 경우는 HAProxy를 이용하는 것이 적절해보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>헉!!/ETC</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>권태성</author>
      <guid isPermaLink="true">https://tskwon.tistory.com/464</guid>
      <comments>https://tskwon.tistory.com/464#entry464comment</comments>
      <pubDate>Sun, 24 Nov 2024 11:35:34 +0900</pubDate>
    </item>
  </channel>
</rss>