<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>디자인 좋아하는 개발자</title>
    <link>https://96hb.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 8 May 2026 04:17:04 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>빈형임</managingEditor>
    <image>
      <title>디자인 좋아하는 개발자</title>
      <url>https://tistory1.daumcdn.net/tistory/4062968/attach/7c8f86c01910458880d5b10a4b4bba04</url>
      <link>https://96hb.tistory.com</link>
    </image>
    <item>
      <title>[C++] Hello World 실습 가이드 (Visual Studio 2022)</title>
      <link>https://96hb.tistory.com/56</link>
      <description>&lt;h1 data-end=&quot;207&quot; data-start=&quot;173&quot;&gt;&lt;b&gt;1) Visual Studio 실행 후 새 프로젝트 만들기&lt;/b&gt;&lt;/h1&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;335&quot; data-start=&quot;208&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;234&quot; data-start=&quot;208&quot;&gt;Visual Studio 2022 실행&lt;/li&gt;
&lt;li data-end=&quot;275&quot; data-start=&quot;235&quot;&gt;시작 화면에서 &lt;b&gt;Create a new project, 새 프로젝트 만들기(N)&lt;/b&gt;&amp;nbsp;클릭&lt;/li&gt;
&lt;li data-end=&quot;296&quot; data-start=&quot;276&quot;&gt;검색창에 &lt;b&gt;C++&lt;/b&gt; 입력&lt;/li&gt;
&lt;li data-end=&quot;335&quot; data-start=&quot;297&quot;&gt;&lt;b&gt;Console App&lt;/b&gt;(C++용) 선택 &amp;rarr; &lt;b&gt;Next&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote data-end=&quot;450&quot; data-start=&quot;337&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;450&quot; data-start=&quot;339&quot; data-ke-size=&quot;size16&quot;&gt;만약 C++ 프로젝트 템플릿이 안 보이면 C++ 워크로드 설치가 안 된 것. Visual Studio Installer에서 &amp;ldquo;Desktop development with C++&amp;rdquo; 추가 설치 필요.&lt;/p&gt;
&lt;/blockquote&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;2012&quot; data-origin-height=&quot;1322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjJhaT/dJMcaacE6tF/I6jI9Tb1cCjOBUzps2ul81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjJhaT/dJMcaacE6tF/I6jI9Tb1cCjOBUzps2ul81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjJhaT/dJMcaacE6tF/I6jI9Tb1cCjOBUzps2ul81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjJhaT%2FdJMcaacE6tF%2FI6jI9Tb1cCjOBUzps2ul81%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;2012&quot; height=&quot;1322&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1322&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2514&quot; data-origin-height=&quot;1664&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kEMJh/dJMcadHbimx/SDNvZiMDRWJArSOuEpLZp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kEMJh/dJMcadHbimx/SDNvZiMDRWJArSOuEpLZp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kEMJh/dJMcadHbimx/SDNvZiMDRWJArSOuEpLZp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkEMJh%2FdJMcadHbimx%2FSDNvZiMDRWJArSOuEpLZp1%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;2514&quot; height=&quot;1664&quot; data-origin-width=&quot;2514&quot; data-origin-height=&quot;1664&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;h1 data-end=&quot;469&quot; data-start=&quot;457&quot;&gt;&lt;b&gt;2) 프로젝트 설정&lt;/b&gt;&lt;/h1&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;567&quot; data-start=&quot;470&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;499&quot; data-start=&quot;470&quot;&gt;Project name(프로젝트 이름) 에 HelloWorld&lt;/li&gt;
&lt;li data-end=&quot;523&quot; data-start=&quot;500&quot;&gt;Location 원하는 폴더 선택&lt;/li&gt;
&lt;li data-end=&quot;550&quot; data-start=&quot;524&quot;&gt;Solution name 동일하게 설정&lt;/li&gt;
&lt;li data-end=&quot;567&quot; data-start=&quot;551&quot;&gt;&lt;b&gt;Create&lt;/b&gt; 클릭&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2498&quot; data-origin-height=&quot;1648&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9F8iW/dJMcaiBIF60/Fc9xbPIsj0pnBgPS6Yrcpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9F8iW/dJMcaiBIF60/Fc9xbPIsj0pnBgPS6Yrcpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9F8iW/dJMcaiBIF60/Fc9xbPIsj0pnBgPS6Yrcpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9F8iW%2FdJMcaiBIF60%2FFc9xbPIsj0pnBgPS6Yrcpk%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;2498&quot; height=&quot;1648&quot; data-origin-width=&quot;2498&quot; data-origin-height=&quot;1648&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;h1 data-end=&quot;597&quot; data-start=&quot;574&quot;&gt;&lt;b&gt;3) 자동 생성된 main.cpp 확인&lt;/b&gt;&lt;/h1&gt;
&lt;p data-end=&quot;653&quot; data-start=&quot;598&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트가 생성되면 기본적으로 HelloWorld.cpp 또는 main.cpp가 열려 있음.&lt;/p&gt;
&lt;p data-end=&quot;675&quot; data-start=&quot;655&quot; data-ke-size=&quot;size16&quot;&gt;기존 내용 삭제 후 아래 코드 입력:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1764231468967&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

int main() {
    std::cout &amp;lt;&amp;lt; &quot;Hello World!&quot; &amp;lt;&amp;lt; std::endl;
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-end=&quot;800&quot; data-start=&quot;785&quot; data-ke-size=&quot;size16&quot;&gt;파일 저장(Ctrl + S)&lt;/p&gt;
&lt;p data-end=&quot;800&quot; data-start=&quot;785&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 data-end=&quot;831&quot; data-start=&quot;807&quot;&gt;&lt;b&gt;4) 실행 (Hello World 출력)&lt;/b&gt;&lt;/h1&gt;
&lt;h3 data-end=&quot;856&quot; data-start=&quot;832&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;A) 디버깅 없이 실행 (추천)&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;923&quot; data-start=&quot;857&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;874&quot; data-start=&quot;857&quot;&gt;&lt;b&gt;Ctrl + F5&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;923&quot; data-start=&quot;875&quot;&gt;또는 상단 메뉴에서 &lt;b&gt;Debug &amp;rarr; Start Without Debugging&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;936&quot; data-start=&quot;925&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 콘솔창이 뜨고 메세지가 출력됨.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;769&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yk3J7/dJMb99SmMuF/6tAOD5nk6HaCN43dAF8M61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yk3J7/dJMb99SmMuF/6tAOD5nk6HaCN43dAF8M61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yk3J7/dJMb99SmMuF/6tAOD5nk6HaCN43dAF8M61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyk3J7%2FdJMb99SmMuF%2F6tAOD5nk6HaCN43dAF8M61%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;1446&quot; height=&quot;769&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;769&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;979&quot; data-start=&quot;964&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;방법 B) 일반 실행&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1034&quot; data-start=&quot;980&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1034&quot; data-start=&quot;980&quot;&gt;&lt;b&gt;F5&lt;/b&gt; 또는 상단 &amp;ldquo;▶&amp;rdquo; 버튼&lt;br /&gt;단점: 프로그램 종료 후 콘솔창이 바로 닫힐 수 있음.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Cpp(C++)</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/56</guid>
      <comments>https://96hb.tistory.com/56#entry56comment</comments>
      <pubDate>Thu, 27 Nov 2025 17:20:12 +0900</pubDate>
    </item>
    <item>
      <title>[Unity] Unity 개발을 위한 Visual Studio 2022 설치 가이드</title>
      <link>https://96hb.tistory.com/55</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Unity로 C# 스크립트를 작성하려면 통합 개발 환경(IDE)이 필요합니다. 현재 Unity와의 연동성이 가장 뛰어난 IDE는 &lt;b&gt;Visual Studio 2022&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 글에서는 &lt;b&gt;Visual Studio 2022(VSCode가 아닙니다)&lt;/b&gt; 설치부터 Unity와의 연결 설정까지, 처음 시작하시는 분도 따라오실 수 있도록 단계별로 정리해 드리겠습니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Visual Studio 2022가 필요한 이유&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unity는 C# 기반 엔진입니다. 스크립트를 효율적으로 작성하기 위해 다음 기능들이 필수적입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;C# 문법 하이라이팅 및 자동완성(IntelliSense)&lt;/li&gt;
&lt;li&gt;디버깅(Debugging) 기능&lt;/li&gt;
&lt;li&gt;Unity 전용 코드 템플릿 및 코드 분석&lt;/li&gt;
&lt;li&gt;리팩토링 및 생산성 도구&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual Studio 2022는 위 기능을 안정적으로 지원하며 Unity 공식 문서에서도 권장하고 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Visual Studio 설치 준비&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✔ 설치 파일 다운로드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크에서 Visual Studio 2022 Community 버전(무료)을 다운로드하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://visualstudio.microsoft.com/ko/vs/older-downloads/&quot;&gt;https://visualstudio.microsoft.com/ko/vs/older-downloads/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;rarr; Community 2022 선택&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✔ 시스템 요구사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Windows 10 이상&lt;/li&gt;
&lt;li&gt;.NET Framework 4.7 이상&lt;/li&gt;
&lt;li&gt;RAM 8GB 이상(16GB 권장)&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;3. Unity 개발자를 위한 필수 설치 옵션&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual Studio 설치 시 워크로드(설치 기능 묶음)를 선택하게 됩니다. Unity 개발을 위해서는 아래 항목을 반드시 체크하시기 바랍니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;데스크톱 모바일&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1044&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbq0uq/dJMcagxbh8S/Ae32UmBDsZE0IsJl5ahuE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbq0uq/dJMcagxbh8S/Ae32UmBDsZE0IsJl5ahuE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbq0uq/dJMcagxbh8S/Ae32UmBDsZE0IsJl5ahuE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdbq0uq%2FdJMcagxbh8S%2FAe32UmBDsZE0IsJl5ahuE1%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;2048&quot; height=&quot;1044&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1044&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;게임&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1028&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9fic9/dJMcadf6HR3/lBSoGtr4UrR690zjtDj0Ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9fic9/dJMcadf6HR3/lBSoGtr4UrR690zjtDj0Ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9fic9/dJMcadf6HR3/lBSoGtr4UrR690zjtDj0Ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9fic9%2FdJMcadf6HR3%2FlBSoGtr4UrR690zjtDj0Ck%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;2048&quot; height=&quot;1028&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1028&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;기타 도구 집합&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KPnnA/dJMcahv5Fo8/3C3JbgzWIjT6dOQIBF8MuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KPnnA/dJMcahv5Fo8/3C3JbgzWIjT6dOQIBF8MuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KPnnA/dJMcahv5Fo8/3C3JbgzWIjT6dOQIBF8MuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKPnnA%2FdJMcahv5Fo8%2F3C3JbgzWIjT6dOQIBF8MuK%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;2048&quot; height=&quot;1143&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1143&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;설정을 완료하고 우측 하단에 &lt;b&gt;수정 혹은 설치&lt;/b&gt; 버튼을 클릭하시면 설치가 진행됩니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Unity Editor에서 Visual Studio 연결 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되었는데도 Unity가 Visual Studio를 인식하지 못하는 경우가 종종 발생합니다. 아래 설정을 확인해 주십시오.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✔ Unity Preferences 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Unity Editor &amp;rarr; Edit &amp;rarr; Preferences &amp;rarr; External Tools&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;External Script Editor &amp;rarr; Visual Studio 2022&lt;/b&gt; 선택&lt;/li&gt;
&lt;li&gt;아래 옵션 체크:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;✓ Editor Attaching&lt;/li&gt;
&lt;li&gt;✓ Generate all .csproj files&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual Studio가 목록에 없을 경우 Unity 재시작 또는 워크로드 누락 여부를 확인하시면 됩니다.&lt;/p&gt;</description>
      <category>Unity</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/55</guid>
      <comments>https://96hb.tistory.com/55#entry55comment</comments>
      <pubDate>Thu, 27 Nov 2025 16:30:01 +0900</pubDate>
    </item>
    <item>
      <title>개발자들은 왜 윈도우보다 맥을 더 선호할까?</title>
      <link>https://96hb.tistory.com/54</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5EtCb/dJMcac9fyKS/MpFRRAHwkmr3D3kIq9bW8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5EtCb/dJMcac9fyKS/MpFRRAHwkmr3D3kIq9bW8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5EtCb/dJMcac9fyKS/MpFRRAHwkmr3D3kIq9bW8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5EtCb%2FdJMcac9fyKS%2FMpFRRAHwkmr3D3kIq9bW8K%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;1200&quot; height=&quot;628&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;628&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;가격이 그렇게 저렴하지 않은데도, 운영체제가 익숙하지 않아 사용할 줄 모르는데도 감성으로 사용하고 불편함을 호소하는 사람들도 있다...(이해할 수 없는 사람들이다.)&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;회사에 가보면 비즈니스, 사무직 사원들의 자리에는 대부분 삼성, 그램(LG) 노트북이 놓여있고, 개발팀 자리에 가면 전부 맥북이 놓여있을 것을 볼 수 있을 것이다.&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;ldquo;그냥 편해서&amp;rdquo;라는 답이 흔하지만, 그 편리함 뒤에는 분명한 기술적 배경이 있다.&lt;br /&gt;&lt;b&gt;개발 환경 세팅의 단순함&lt;/b&gt;, &lt;b&gt;iOS 개발 지원&lt;/b&gt;, &lt;b&gt;터미널 사용성&lt;/b&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;h4 data-end=&quot;483&quot; data-start=&quot;456&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;개발 환경 세팅이 단순하고 깔끔하다&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;656&quot; data-start=&quot;485&quot; data-ke-size=&quot;size16&quot;&gt;Windows에서 한 번이라도 개발 환경을 구성해 본 사람이라면, 정말 답답함을 많이 느꼈을 것이다.&lt;/p&gt;
&lt;p data-end=&quot;656&quot; data-start=&quot;485&quot; data-ke-size=&quot;size16&quot;&gt;의외로 손이 많이 간다. 환경 변수 설정이 어떻고, 설치 파일이 어쩌고...&lt;br /&gt;예를 들어 Python, Node.js, Git 같은 기본 개발 툴을 설치하기 위해서는 각 사이트를 찾아가 설치 파일을 받고, 환경 변수를 번거롭게 직접 다 설정해줘야 한다.&lt;br /&gt;때로는 버전 충돌이나 PATH 설정 문제로 인해 몇 시간을 날리기도 하고 매번 검색해서 찾아보느라 귀찮다.&lt;/p&gt;
&lt;p data-end=&quot;656&quot; data-start=&quot;485&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;656&quot; data-start=&quot;485&quot; data-ke-size=&quot;size16&quot;&gt;반면 macOS에서 개발을 시작할 때는 엥? 이게 끝이야? 싶을 정도로 편리했다.&lt;/p&gt;
&lt;p data-end=&quot;821&quot; data-start=&quot;658&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 Unix 기반이기 때문에, 개발에 필요한 핵심 도구들이 이미 내장되어 있다.&lt;br /&gt;git, python3, ssh, zsh 같은 툴을 별다른 설정 없이 바로 사용할 수 있고, 필요한 패키지는 Homebrew 하나로 설치&amp;middot;관리할 수 있다는 장점이 있다.&lt;/p&gt;
&lt;p data-end=&quot;821&quot; data-start=&quot;658&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;1472&quot; data-start=&quot;1450&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;터미널이 강력하고 쾌적하다&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;1573&quot; data-start=&quot;1474&quot; data-ke-size=&quot;size16&quot;&gt;이 모든게 가능한 이유는 터미널의 힘 덕분이다.&lt;/p&gt;
&lt;p data-end=&quot;1573&quot; data-start=&quot;1474&quot; data-ke-size=&quot;size16&quot;&gt;개발자라면 결국 코드 에디터 뿐만 아니라 커맨드라인과(Command Line)과 가까이 살 수 밖에 없다.&lt;/p&gt;
&lt;p data-end=&quot;1573&quot; data-start=&quot;1474&quot; data-ke-size=&quot;size16&quot;&gt;서버를 다루든, 깃을 쓰든, 패키지를 관리하든, CLI 환경은 개발의 핵심 도구이기 때문이다.&lt;/p&gt;
&lt;p data-end=&quot;1573&quot; data-start=&quot;1474&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1737&quot; data-start=&quot;1575&quot; data-ke-size=&quot;size16&quot;&gt;macOS의 터미널은 &lt;b&gt;리눅스와 거의 동일한 Unix 쉘 환경&lt;/b&gt;을 제공하고 기본으로 제공되는 zsh는 직관적이고 커스터마이징도 쉽다.&lt;br /&gt;반면 Windows의 PowerShell은 문법도 다르고, 리눅스 명령어와 호환되지 않는 경우가 많다.&lt;br /&gt;WSL(Windows Subsystem for Linux)을 통해 해결할 수는 있지만, 실제 사용감은 여전히 macOS보다 느리고 복잡하다.&lt;/p&gt;
&lt;p data-end=&quot;1737&quot; data-start=&quot;1575&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2014&quot; data-start=&quot;1884&quot; data-ke-size=&quot;size16&quot;&gt;맥의 터미널은 &lt;b&gt;개발자 친화적인 리눅스 명령어 호환성과 직관적인 사용자 경험&lt;/b&gt;을 동시에 제공한다.&lt;br /&gt;결국 코드 한 줄을 실행하고, 로그를 확인하고, 빌드 환경을 제어하는 모든 순간이 불필요한 마찰 없이 매끄럽게 이어진다.&lt;/p&gt;
&lt;p data-end=&quot;2014&quot; data-start=&quot;1884&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2014&quot; data-start=&quot;1884&quot; data-ke-size=&quot;size16&quot;&gt;이미 터미널과 개발 환경 설정을 맛 본 순간, 윈도우로는 가기 싫어진다...&lt;/p&gt;
&lt;p data-end=&quot;2014&quot; data-start=&quot;1884&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2014&quot; data-start=&quot;1884&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;1024&quot; data-start=&quot;995&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;iOS 개발은 macOS에서만 가능하다&lt;/b&gt;&lt;/h4&gt;
&lt;p data-end=&quot;1133&quot; data-start=&quot;1026&quot; data-ke-size=&quot;size16&quot;&gt;iOS, iPadOS, macOS 앱은 오직 &lt;b&gt;Xcode&lt;/b&gt;를 통해서만 개발할 수 있다. 그리고 Xcode는 macOS 전용 프로그램이다.&lt;br /&gt;즉, iOS 앱 개발을 하려면 맥이 필수라고 할 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;1275&quot; data-start=&quot;1135&quot; data-ke-size=&quot;size16&quot;&gt;최근에는 &lt;b&gt;Flutter, React Native, Unity&lt;/b&gt;처럼 멀티 플랫폼 개발 툴이 늘었지만, 이들도 결국 iOS 빌드를 진행하려면 Xcode를 거쳐야 한다. 요즘 어떤 서비스를 개발해서 배포한다고 할 때, 안드로이드 vs IOS는 더 이상 선택의 문제가 아니다. 특별한 경우가 아니라면 둘 다 지원하는게 한명의 소비자라도 더 모을 수 있기 때문이다.&lt;br /&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;누군가에게는 그저 감성용 사과일 수 있지만, 누군가에게는 편리한 도구가 될 수 있다.&lt;/p&gt;</description>
      <category>.etc</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/54</guid>
      <comments>https://96hb.tistory.com/54#entry54comment</comments>
      <pubDate>Wed, 5 Nov 2025 00:17:57 +0900</pubDate>
    </item>
    <item>
      <title>CI/CD 한 번에 이해하기 &amp;mdash; 빌드&amp;middot;테스트&amp;middot;배포 자동화 핵심 요약</title>
      <link>https://96hb.tistory.com/53</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cT5ZIA/dJMcaa4EJei/FEyjXehxqOhxnRSuevcKOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cT5ZIA/dJMcaa4EJei/FEyjXehxqOhxnRSuevcKOk/img.png&quot; data-alt=&quot;출처: https://incodom.kr/CICD?rev=5&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cT5ZIA/dJMcaa4EJei/FEyjXehxqOhxnRSuevcKOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcT5ZIA%2FdJMcaa4EJei%2FFEyjXehxqOhxnRSuevcKOk%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;2048&quot; height=&quot;1078&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처: https://incodom.kr/CICD?rev=5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;159&quot; data-start=&quot;146&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;CI/CD란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;345&quot; data-start=&quot;161&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법&lt;/b&gt;을 말합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;345&quot; data-start=&quot;161&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CI는 지속적인 통합(Continuous Integration),&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;345&quot; data-start=&quot;161&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CD는 지속적인 배포(Continuous Deployment)&lt;/b&gt; 또는 지속적인 서비스 제공(Continuous Delivery)을 의미합니다.&lt;/p&gt;
&lt;p data-end=&quot;345&quot; data-start=&quot;161&quot; 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;table style=&quot;border-collapse: collapse; width: 100%; height: 114px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;CI/CD로 해결&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;코드 합칠 때 충돌&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;자동 테스트로 오류 즉시 탐지&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;빌드/배포 수동 수행&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;자동화 스크립트로 시간 절약&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;사람마다 다른 배포 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;환경 일관성 확보&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;버그 발견 늦음&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;코드 변경 직후 즉시 피드백&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;긴 배포 주기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;하루에도 여러 번 배포 가능&lt;/b&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;&lt;u&gt;&amp;rarr; 즉, &lt;b&gt;코드 품질 + 개발 속도 + 배포 안정성&lt;/b&gt;을 동시에 잡습니다.&lt;/u&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;CI (Continuous Integration)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;720&quot; data-start=&quot;654&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지속적 통합:&lt;/b&gt;&lt;br /&gt;모든 코드 변경이 main 브랜치에 병합될 때마다 자동으로 &lt;b&gt;빌드 및 테스트&lt;/b&gt;가 실행됩니다.&lt;/p&gt;
&lt;p data-end=&quot;720&quot; data-start=&quot;654&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;731&quot; data-start=&quot;722&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 구성&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;892&quot; data-start=&quot;732&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;769&quot; data-start=&quot;732&quot;&gt;&lt;b&gt;빌드 자동화&lt;/b&gt; &amp;ndash; 프로젝트가 항상 빌드 가능한지 확인&lt;/li&gt;
&lt;li data-end=&quot;807&quot; data-start=&quot;770&quot;&gt;&lt;b&gt;테스트 자동화&lt;/b&gt; &amp;ndash; 단위 테스트 및 통합 테스트 수행&lt;/li&gt;
&lt;li data-end=&quot;854&quot; data-start=&quot;808&quot;&gt;&lt;b&gt;품질 검사&lt;/b&gt; &amp;ndash; Lint, Code Style, Coverage 체크&lt;/li&gt;
&lt;li data-end=&quot;892&quot; data-start=&quot;855&quot;&gt;&lt;b&gt;알림&lt;/b&gt; &amp;ndash; 실패 시 Slack/Email로 즉시 통보&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1243&quot; data-start=&quot;1200&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;CD (Continuous Delivery / Deployment)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1300&quot; data-start=&quot;1245&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지속적 배포:&lt;/b&gt;&lt;br /&gt;CI 단계를 통과한 코드를 &lt;b&gt;자동으로 운영 환경에 배포&lt;/b&gt;하는 과정이다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1438&quot; data-start=&quot;1302&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;용어&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;차이점&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1386&quot; data-start=&quot;1335&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1361&quot; data-start=&quot;1335&quot;&gt;&lt;b&gt;Continuous Delivery&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1386&quot; data-start=&quot;1361&quot;&gt;운영 배포 전까지 자동화 (승인 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1438&quot; data-start=&quot;1387&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1415&quot; data-start=&quot;1387&quot;&gt;&lt;b&gt;Continuous Deployment&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1438&quot; data-start=&quot;1415&quot;&gt;운영까지 완전 자동화 (승인 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-end=&quot;2031&quot; data-start=&quot;2005&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;CI/CD의 일반적인 파이프라인 구조&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1762086938623&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;개발자 &amp;rarr; Git Push
        &amp;darr;
[CI 단계] 빌드 &amp;rarr; 테스트 &amp;rarr; 품질검사
        &amp;darr;
[CD 단계] 스테이징 배포 &amp;rarr; 운영 배포&lt;/code&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2146&quot; data-start=&quot;2129&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2146&quot; data-start=&quot;2129&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;각 단계는 다음처럼 자동화합니다.&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-end=&quot;2371&quot; data-start=&quot;2148&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;목적&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;도구 예시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot; data-end=&quot;2240&quot; data-start=&quot;2196&quot;&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2204&quot; data-start=&quot;2196&quot;&gt;&lt;b&gt;Build&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2217&quot; data-start=&quot;2204&quot;&gt;&lt;b&gt;코드 컴파일/패키징&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2240&quot; data-start=&quot;2217&quot;&gt;&lt;b&gt;Gradle, npm, Docker&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot; data-end=&quot;2283&quot; data-start=&quot;2241&quot;&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2248&quot; data-start=&quot;2241&quot;&gt;&lt;b&gt;Test&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2260&quot; data-start=&quot;2248&quot;&gt;&lt;b&gt;단위&amp;middot;통합 테스트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2283&quot; data-start=&quot;2260&quot;&gt;&lt;b&gt;Jest, Pytest, JUnit&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot; data-end=&quot;2321&quot; data-start=&quot;2284&quot;&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2289&quot; data-start=&quot;2284&quot;&gt;&lt;b&gt;QA&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2300&quot; data-start=&quot;2289&quot;&gt;&lt;b&gt;코드 품질 검사&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2321&quot; data-start=&quot;2300&quot;&gt;&lt;b&gt;ESLint, SonarQube&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot; data-end=&quot;2371&quot; data-start=&quot;2322&quot;&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2331&quot; data-start=&quot;2322&quot;&gt;&lt;b&gt;Deploy&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2336&quot; data-start=&quot;2331&quot;&gt;&lt;b&gt;배포&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2371&quot; data-start=&quot;2336&quot;&gt;&lt;b&gt;GitHub Actions, Jenkins, ArgoCD&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;968&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8g3SO/dJMcacIaycO/WHQfMlMRZXXIAmGYVJVZp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8g3SO/dJMcacIaycO/WHQfMlMRZXXIAmGYVJVZp1/img.png&quot; data-alt=&quot;출처: https://blog.bytebytego.com/p/a-crash-course-in-cicd&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8g3SO/dJMcacIaycO/WHQfMlMRZXXIAmGYVJVZp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8g3SO%2FdJMcacIaycO%2FWHQfMlMRZXXIAmGYVJVZp1%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;1280&quot; height=&quot;968&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;968&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처: https://blog.bytebytego.com/p/a-crash-course-in-cicd&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;2392&quot; data-start=&quot;2378&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주요 도구 비교&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2686&quot; data-start=&quot;2394&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;카테고리&lt;/td&gt;
&lt;td&gt;&lt;b&gt;대표 도구&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2514&quot; data-start=&quot;2450&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2462&quot; data-start=&quot;2450&quot;&gt;&lt;b&gt;클라우드형&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2490&quot; data-start=&quot;2462&quot;&gt;&lt;b&gt;GitHub Actions, GitLab CI&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2514&quot; data-start=&quot;2490&quot;&gt;&lt;b&gt;Git과 자연스럽게 통합, 설정 간단&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2565&quot; data-start=&quot;2515&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2528&quot; data-start=&quot;2515&quot;&gt;&lt;b&gt;온프레미스형&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2548&quot; data-start=&quot;2528&quot;&gt;&lt;b&gt;Jenkins, TeamCity&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2565&quot; data-start=&quot;2548&quot;&gt;&lt;b&gt;커스터마이징 자유도 높음&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2617&quot; data-start=&quot;2566&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2586&quot; data-start=&quot;2566&quot;&gt;&lt;b&gt;Kubernetes 기반&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2601&quot; data-start=&quot;2586&quot;&gt;&lt;b&gt;ArgoCD, Flux&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2617&quot; data-start=&quot;2601&quot;&gt;&lt;b&gt;GitOps 방식 지원&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2686&quot; data-start=&quot;2618&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2631&quot; data-start=&quot;2618&quot;&gt;&lt;b&gt;배포 자동화&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2660&quot; data-start=&quot;2631&quot;&gt;&lt;b&gt;AWS CodePipeline, CircleCI&lt;/b&gt;&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;2686&quot; data-start=&quot;2660&quot;&gt;&lt;b&gt;AWS, GCP, Azure와 연동 용이&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-end=&quot;2715&quot; data-start=&quot;2693&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;CI/CD 구축 시 유의할 점&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;3038&quot; data-start=&quot;2717&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2783&quot; data-start=&quot;2717&quot;&gt;&lt;b&gt;테스트 커버리지 확보&lt;/b&gt;&lt;br /&gt;테스트가 약하면 CI 자동화의 의미가 없다. 최소 핵심 로직은 테스트 필수입니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li data-end=&quot;2866&quot; data-start=&quot;2784&quot;&gt;&lt;b&gt;환경 변수는 Secrets로 관리&lt;/b&gt;&lt;br /&gt;API Key, Token은 절대 깃에 올리지 말고 secrets나 .env로 관리합니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li data-end=&quot;2923&quot; data-start=&quot;2867&quot;&gt;&lt;b&gt;스테이징 환경 분리&lt;/b&gt;&lt;br /&gt;운영 전에 staging 배포를 통해 오류를 검증해야 합니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li data-end=&quot;2981&quot; data-start=&quot;2924&quot;&gt;&lt;b&gt;롤백 절차 준비&lt;/b&gt;&lt;br /&gt;배포 자동화는 좋지만, 장애 발생 시 되돌릴 수 있어야 안전합니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li data-end=&quot;3038&quot; data-start=&quot;2982&quot;&gt;&lt;b&gt;작은 단위 배포&lt;/b&gt;&lt;br /&gt;큰 기능 묶음보다는 작은 PR 단위로 배포하는 것이 안정적입니다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>  IT Insight</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/53</guid>
      <comments>https://96hb.tistory.com/53#entry53comment</comments>
      <pubDate>Sun, 2 Nov 2025 21:39:38 +0900</pubDate>
    </item>
    <item>
      <title>[AI] 크롬의 시대는 이제 끝? OpenAI의 AI 브라우저, ChatGPT Atlas</title>
      <link>https://96hb.tistory.com/52</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/live/8UWKxJbjriY?si=n1BToyd2yB6zsgga&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/live/8UWKxJbjriY?si=n1BToyd2yB6zsgga&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=8UWKxJbjriY&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bZlBq5/hyZLlxdTa3/787PWKyEQJXbOLqlIpfT0k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/cC0siI/hyZMWvPg84/X78FAesqThfklS1VG4vMA0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Introducing ChatGPT Atlas&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/8UWKxJbjriY&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;&lt;a style=&quot;color: #9d9d9d;&quot; href=&quot;https://chatgpt.com/ko-KR/atlas&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://chatgpt.com/ko-KR/atlas&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;ChatGPT Atlas란 무엇인가?&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT Atlas는 OpenAI가 2025년 10월 21일 공개한 AI 기반 웹 브라우저입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 브라우저처럼 검색창과 URL 입력창이 있지만, 핵심은 ChatGPT가 브라우저에 내장되어 있다는 점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Atlas는 사용자가 보고 있는 페이지의 맥락을 이해하고,&lt;b&gt;복사‑붙여넣기나 창 전환 없이 바로 질문을 던지거나 작업을 맡길 수 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 ChatGPT 메모리 기능이 내장돼 과거 대화와 브라우징 맥락을 기억하고 새로운 작업에 활용할 수 있습니다.&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;2986&quot; data-origin-height=&quot;1706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byJAeT/dJMcake7aoH/aItCPkKIeqrbh0Kzo70D7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byJAeT/dJMcake7aoH/aItCPkKIeqrbh0Kzo70D7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byJAeT/dJMcake7aoH/aItCPkKIeqrbh0Kzo70D7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyJAeT%2FdJMcake7aoH%2FaItCPkKIeqrbh0Kzo70D7k%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;2986&quot; height=&quot;1706&quot; data-origin-width=&quot;2986&quot; data-origin-height=&quot;1706&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;기존 브라우저와의 차이점&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;대화 중심 인터페이스&lt;/b&gt;: Atlas는 검색창 대신 대화창을 중심에 배치해 사용자가 자연어로 목적을 전달하면 AI가 적절한 행동을 제안한다. 새 탭 페이지에서 질문을 입력하면 링크뿐 아니라 요약&amp;middot;이미지&amp;middot;영상 등 다양한 결과를 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;브라우저 메모리&lt;/b&gt;: 선택적으로 활성화할 수 있는 메모리 기능이 브라우징 세부 정보를 저장해 이후 대화에서 활용합니다.&lt;br /&gt;예를 들어 &amp;ldquo;지난주에 본 구인 공고를 모두 찾아 면접 준비를 도와줘&amp;rdquo; 같은 명령이 가능합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;에이전트 모드&lt;/b&gt;: ChatGPT가 사용자를 대신해 연구&amp;middot;분석&amp;middot;예약 등을 자동으로 수행하도록 하는 기능으로, Plus/Pro/Business 이용자가 프리뷰로 사용할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;멀티 플랫폼&lt;/b&gt;: 현재는 macOS 전용으로 출시됐지만, OpenAI는 Windows, iOS, Android 버전을 개발 중이라고 밝히고 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;문제점과 한계&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신기능만큼 논란도 존재합니다. 전문가와 언론은 다음과 같은 우려를 제기하고 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;간접 프롬프트 주입 취약성&lt;/b&gt;: Atlas가 브라우저 내 AI 에이전트 때문에 간접 프롬프트 주입 공격에 취약하다고 지적합니다. 악성 웹 콘텐츠에 숨겨진 명령이 AI를 오도해 사용자가 의도하지 않은 행동을 하게 만들 수 있으며, 연구자들은 민감한 작업은 기존 브라우저로 처리하고 AI 브라우저를 분리해 사용할 것을 권고합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프라이버시 및 데이터 수집&lt;/b&gt;: Atlas는 다른 브라우저보다 훨씬 많은 사용자 데이터를 수집하고 기억합니다. 메모리 기능으로 사용자의 검색&amp;middot;활동을 분석해 일정&amp;middot;쇼핑&amp;middot;건강 정보까지 추론할 수 있어 사생활 침해 위험이 존재한다는 의견이 있습니다. 또한 프롬프트 인젝션 공격으로 AI가 악성 명령을 실행할 수 있다는 우려도 제기되고 있습니다.&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;Atlas는 AI가 웹 브라우징의 전면에 등장하는 시대의 신호탄이 되었습니다.&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;</description>
      <category>  IT Insight</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/52</guid>
      <comments>https://96hb.tistory.com/52#entry52comment</comments>
      <pubDate>Fri, 31 Oct 2025 00:30:38 +0900</pubDate>
    </item>
    <item>
      <title>[Unity] TextMeshPro(TMP) 한글 폰트 적용 가이드</title>
      <link>https://96hb.tistory.com/51</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;TMP UI 사용하기&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unity에서 Text UI, TMP를 사용하기 위해서는 아래와 같이 TMP 패키지 임포트가 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Window &amp;rarr; TextMeshPro &amp;rarr; Import TMP Essential Resources &lt;/b&gt;혹은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Canvas &amp;rarr; New &amp;rarr; UI &amp;rarr; Text(TMP)를 추가&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;1868&quot; data-origin-height=&quot;1384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3AVc3/dJMcagjtCVa/H5gefjrSfyVHUfwDSvdy4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3AVc3/dJMcagjtCVa/H5gefjrSfyVHUfwDSvdy4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3AVc3/dJMcagjtCVa/H5gefjrSfyVHUfwDSvdy4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3AVc3%2FdJMcagjtCVa%2FH5gefjrSfyVHUfwDSvdy4K%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;1868&quot; height=&quot;1384&quot; data-origin-width=&quot;1868&quot; data-origin-height=&quot;1384&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;TMP 한글 오류&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unity에서 텍스트를 표시할 때, TextMeshPro(TMP)는 기존 Text보다 훨씬 선명하고 유연한 폰트 렌더링을 제공합니다.&lt;br /&gt;하지만 &lt;b&gt;기본 TMP 폰트는 한글을 지원하지 않기 때문에&lt;/b&gt;, 그대로 사용하면 아래 이미지처럼 한글이 깨지거나 &amp;lsquo;□&amp;rsquo;(네모)로 표시되는 경우가 많습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2432&quot; data-origin-height=&quot;1310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eDGHe0/dJMcaj8lhpx/ZkIrA1zld5sc0ekxNLX8Uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eDGHe0/dJMcaj8lhpx/ZkIrA1zld5sc0ekxNLX8Uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eDGHe0/dJMcaj8lhpx/ZkIrA1zld5sc0ekxNLX8Uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeDGHe0%2FdJMcaj8lhpx%2FZkIrA1zld5sc0ekxNLX8Uk%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;2432&quot; height=&quot;1310&quot; data-origin-width=&quot;2432&quot; data-origin-height=&quot;1310&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;이 문제를 해결하기 위해 Unity TMP UI에 한글 폰트를 적용하는 과정을 단계별로 정리했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;해당 가이드는 Unity 6000.0.37f1 버전으로 제작되었습니다. 버전에 따라 다를 수 있지만, 왠만하면 다 상관없을 겁니다.&lt;/span&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;TMP 한글 폰트 생성&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. TMP용 한글 폰트를 생성하기 위해서는 우선 Unity에 &lt;b&gt;한글 폰트 파일(.otf 또는 .ttf)&lt;/b&gt;을 추가해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다운로드 링크 추천: &lt;a href=&quot;https://noonnu.cc&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://noonnu.cc&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;폰트명&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;라이선스&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;나눔고딕 (NanumGothic)&lt;/td&gt;
&lt;td&gt;무료 (상업용 가능)&lt;/td&gt;
&lt;td&gt;명확하고 깔끔한 가독성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pretendard&lt;/td&gt;
&lt;td&gt;무료 (상업용 가능)&lt;/td&gt;
&lt;td&gt;웹&amp;middot;앱 UI에 적합, 미려한 곡선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;배민 한나체&lt;/td&gt;
&lt;td&gt;무료&lt;/td&gt;
&lt;td&gt;캐주얼한 게임 UI에 적합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Noto Sans KR&lt;/td&gt;
&lt;td&gt;무료 (Google)&lt;/td&gt;
&lt;td&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;font asset.gif&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PmRhG/dJMcaa4Dkhu/chM2SbPyJq4pzWqsPU6ut0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PmRhG/dJMcaa4Dkhu/chM2SbPyJq4pzWqsPU6ut0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PmRhG/dJMcaa4Dkhu/chM2SbPyJq4pzWqsPU6ut0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/PmRhG/dJMcaa4Dkhu/chM2SbPyJq4pzWqsPU6ut0/img.gif&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;3022&quot; height=&quot;1454&quot; data-filename=&quot;font asset.gif&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1454&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;2. Window &amp;rarr; TextMEshPro &amp;rarr; Font &lt;b&gt;Asset&lt;/b&gt; Creator 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1590&quot; data-origin-height=&quot;1494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ROO3b/dJMcadUAElr/Gfwu5PoecpvrrIklTyi7Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ROO3b/dJMcadUAElr/Gfwu5PoecpvrrIklTyi7Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ROO3b/dJMcadUAElr/Gfwu5PoecpvrrIklTyi7Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FROO3b%2FdJMcadUAElr%2FGfwu5PoecpvrrIklTyi7Zk%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;1590&quot; height=&quot;1494&quot; data-origin-width=&quot;1590&quot; data-origin-height=&quot;1494&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;&lt;b&gt;3. TMP Font Asset Creator 창이 열리면 아래 설정을 확인합니다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Source Font&lt;/b&gt; 입력란에 위에서 추가한 폰트 파일(.otf 혹은 .ttf)를 넣어줍니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Character Set&lt;/b&gt;을 &lt;b&gt;Custom Range&lt;/b&gt;로 설정하고 아래 이미지와 같이 설정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Generate Font Atlas&lt;/b&gt; 버튼을 클릭하여 생성을 완료하고(다소 시간 소요), 생성이 완료되면 &lt;b&gt;Save&lt;/b&gt; 버튼을 클릭하여 프로젝트에 저장합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;1274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TreXj/dJMcajgcxDC/clHHX7G3R5Fzk10indddE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TreXj/dJMcajgcxDC/clHHX7G3R5Fzk10indddE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TreXj/dJMcajgcxDC/clHHX7G3R5Fzk10indddE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTreXj%2FdJMcajgcxDC%2FclHHX7G3R5Fzk10indddE1%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;1056&quot; height=&quot;1274&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;1274&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;table style=&quot;border-collapse: collapse; width: 100%; height: 95px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;설정 항목&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;권장 값&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Font Source&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;선택한 폰트 파일&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;적용할 폰트 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Font Atlas Resolution&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;4096 x 4096&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;한글 전체 문자 포함을 위해 넉넉히 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Character Set&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Custom Characters or Unicode Range&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;직접 한글 입력 또는 유니코드 범위 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;&lt;b&gt;Rendering Mode&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;SDF (Signed Distance Field)&lt;/td&gt;
&lt;td style=&quot;height: 19px;&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;&lt;b&gt;추천 유니코드 범위(Character Set)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;32-126, 44032-55215, 12593-12687, 8200-9900&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;각 범위 상세 설명&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;기본 영문 + 숫자 + 기본 특수문자&lt;/b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;범위:&lt;/b&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;32-126&lt;/span&gt;&lt;span&gt; (U+0020 - U+007E)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;내용:&lt;/b&gt;&lt;/b&gt;&lt;span&gt; 스페이스(공백), 숫자, 영문 대소문자, 그리고 키보드에 있는 대부분의 기본 특수문자(&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;@&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;#&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;$&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 등)를 포함합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;완성형 한글&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;범위:&lt;/b&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;44032-55215&lt;/span&gt;&lt;span&gt; (U+AC00 - U+D7AF)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;내용:&lt;/b&gt;&lt;/b&gt;&lt;span&gt; '가'부터 '힣'까지 현대 한글로 표현 가능한 모든 11,172자의 완성형 글자를 포함합니다. 이전에 알려주신 &lt;/span&gt;&lt;span&gt;55203&lt;/span&gt;&lt;span&gt;이 아닌 &lt;/span&gt;&lt;b&gt;&lt;b&gt;55215&lt;/b&gt;&lt;/b&gt;&lt;span&gt; 가 정확한 끝 범위입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;한글 자모&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;범위:&lt;/b&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;12593-12687&lt;/span&gt;&lt;span&gt; (U+3131 - U+318F)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;내용:&lt;/b&gt;&lt;/b&gt;&lt;span&gt; 'ㄱ', 'ㄴ', 'ㅏ', 'ㅑ' 등 단일 자음과 모음을 포함합니다. 채팅 입력창처럼 자모가 독립적으로 표시되어야 하는 경우에 필수적입니다. 추천 범위는 일반적인 '한글 호환 자모' 블록 전체를 포함하도록 조금 더 넓게 잡았습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;자주 사용하는 특수문자&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;범위:&lt;/b&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;8200-9900&lt;/span&gt;&lt;span&gt; (U+2008 - U+26AC)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;b&gt;내용:&lt;/b&gt;&lt;/b&gt;&lt;span&gt; 각종 공백 문자, 문장 부호(&amp;hellip;, &amp;lsquo;, &amp;rsquo;, &amp;ldquo;, &amp;rdquo;), 통화 기호(₩, &amp;euro;), 글머리 기호(&amp;bull;), 화살표(&amp;rarr;), 도형(■, ◆), 기타 기호(★, &amp;hearts;) 등 게임이나 앱에서 자주 사용되는 다양한 특수문자를 포함합니다.&lt;/span&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;&lt;b&gt;&lt;span&gt;4. TMP 텍스트에 한글 폰트 적용&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아래 이미지를 참고하여 Hierarchy에서 생성된 TextMeshPro 객체를 선택하고 Inspector 창에서 &lt;b&gt;Font Asset&lt;/b&gt; 항목에 방금 만든 한글 폰트 에셋을 드래그합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;tmpkorean.gif&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NrOSR/dJMcai9qYob/MeYGfxDrcW05opyaOkKG21/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NrOSR/dJMcai9qYob/MeYGfxDrcW05opyaOkKG21/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NrOSR/dJMcai9qYob/MeYGfxDrcW05opyaOkKG21/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/NrOSR/dJMcai9qYob/MeYGfxDrcW05opyaOkKG21/img.gif&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;3022&quot; height=&quot;1454&quot; data-filename=&quot;tmpkorean.gif&quot; data-origin-width=&quot;3022&quot; data-origin-height=&quot;1454&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기까지 완료하면 기존에 한글이 깨지거나 &amp;lsquo;□&amp;rsquo;(네모)로 표시되던 텍스트 박스가 한글로 잘 표시되는 것을 확인할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;폰트 최적화 팁&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2470&quot; data-start=&quot;2373&quot;&gt;&lt;b&gt;Atlas Resolution&lt;/b&gt;은 너무 높게 설정하면 &lt;b&gt;메모리 사용량이 커집니다&lt;/b&gt;. 필요한 글자만 포함하는 &lt;b&gt;Custom Characters 방식을 권장&lt;/b&gt;합니다.&lt;/li&gt;
&lt;li data-end=&quot;2554&quot; data-start=&quot;2471&quot;&gt;&lt;b&gt;Dynamic Font Asset&lt;/b&gt; 옵션을 켜면 런타임 중 새 문자를 자동 생성하지만, 모바일 빌드에서는 성능 저하가 생길 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2612&quot; data-start=&quot;2555&quot;&gt;여러 씬에서 같은 폰트를 쓸 예정이라면 Resources 폴더에 보관해 공용으로 관리하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;자주 발생하는 문제 해결방안&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;원인&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;해결 방법&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;한글이 &amp;lsquo;□&amp;rsquo;로 표시됨&lt;/td&gt;
&lt;td&gt;폰트에 한글이 포함되지 않음&lt;/td&gt;
&lt;td&gt;한글 지원 폰트 사용 또는 Unicode Range 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;일부 글자만 안 나옴&lt;/td&gt;
&lt;td&gt;Atlas에 포함되지 않은 글자&lt;/td&gt;
&lt;td&gt;Font Asset Creator에서 범위 확장 후 재생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;텍스트 깨짐&lt;/td&gt;
&lt;td&gt;Resolution이 너무 낮음&lt;/td&gt;
&lt;td&gt;Font Atlas Resolution을 높여 재생성&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;</description>
      <category>Unity</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/51</guid>
      <comments>https://96hb.tistory.com/51#entry51comment</comments>
      <pubDate>Wed, 29 Oct 2025 01:00:41 +0900</pubDate>
    </item>
    <item>
      <title>파워포인트 특정 텍스트 박스, 한 번에 싹 지우는 VBA 매크로</title>
      <link>https://96hb.tistory.com/50</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;이런 분들에게 필요합니다.&lt;/b&gt;&lt;/h3&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;li&gt;회사 소개서 템플릿을 업데이트하면서, 이전 버전의 슬로건이나 푸터(footer) 텍스트를 모두 지워야 할 때&lt;/li&gt;
&lt;li&gt;&quot;여기에 텍스트 입력&quot;, &quot;임시 내용&quot;처럼 가이드용으로 넣어둔 텍스트 박스를 최종본에서 한 번에 제거하고 싶을 때&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;코드와 사용방법이 아래에 있습니다.&lt;/span&gt;&lt;/i&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;파워포인트에서 100장이 넘는 슬라이드를 하나하나 넘겨가며 특정 텍스트 박스를 Delete 키로 지우는 작업을 해보셨나요...?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ctrl+F (찾기) 기능은 텍스트를 찾을 수는 있지만, 그 텍스트가 포함된 '도형 객체' 자체를 삭제해주지는 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 지루하고 실수하기 쉬운 반복 작업을 1초 만에 끝내줄 강력한 VBA 매크로를 소개합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761295430844&quot; class=&quot;vbnet&quot; data-ke-language=&quot;vbnet&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Option Explicit

'
'==================================================================================
' 매크로 이름: DeleteSpecificTextBoxes
' 설명:
'   현재 활성화된 파워포인트 문서의 모든 슬라이드를 순회합니다.
'   텍스트 박스의 텍스트에서 줄바꿈, 탭, 여러 공백을 &quot;정규화(정리)&quot;한 후,
'   'deleteList' 배열에 지정된 문자열과 *정확히* 일치하는 텍스트 박스를 삭제합니다.
' 
'==================================================================================
'

Sub DeleteSpecificTextBoxes()

    ' --- [ 사용자가 수정할 부분 ] ---
    ' 아래 'deleteList' 배열에 지우고 싶은 텍스트를 &quot;정리된 최종본&quot;으로 입력하세요.
    ' (예: &quot;성능 테스트 및 부하 테스트&quot;)
    
    Dim deleteList() As Variant
    deleteList = Array( _
        &quot;지우고 싶은 문자열1&quot;, _
        &quot;지우고 싶은 문자열2&quot;, _
        &quot;지우고 싶은 문자열3&quot;, _
        &quot;.....&quot; _
    )
    ' --------------------------------
    

    Dim sld As Slide
    Dim shp As Shape
    Dim i As Long ' 도형 순회를 위한 인덱스 (역순)
    Dim j As Long ' 배열 순회를 위한 인덱스
    Dim shapeText As String
    Dim deleteCount As Long
    
    ' 변수 초기화
    deleteCount = 0
    
    ' 1. 프레젠테이션의 모든 슬라이드를 순회합니다.
    On Error Resume Next ' 오류가 발생해도 매크로가 중지되지 않도록 함
    For Each sld In ActivePresentation.Slides
        
        ' 2. 각 슬라이드의 모든 도형(Shape)을 *역순*으로 순회합니다.
        For i = sld.Shapes.Count To 1 Step -1
            Set shp = sld.Shapes(i)
            
            ' 3. 해당 도형이 텍스트 프레임(텍스트 상자)을 가지고 있는지 확인
            If shp.HasTextFrame Then
                ' 4. 텍스트 프레임 안에 텍스트가 있는지 확인
                If shp.TextFrame.HasText Then
                    
                    ' 5. [개선됨] 텍스트를 가져와 &quot;정규화&quot; (Cleaning)
                    shapeText = shp.TextFrame.TextRange.Text
                    
                    ' 5-1. 모든 종류의 줄바꿈 문자(CRLF, CR, LF)를 단일 공백으로 변경
                    shapeText = Replace(shapeText, vbCrLf, &quot; &quot;)
                    shapeText = Replace(shapeText, vbCr, &quot; &quot;)
                    shapeText = Replace(shapeText, vbLf, &quot; &quot;)
                    
                    ' 5-2. 탭 문자를 단일 공백으로 변경
                    shapeText = Replace(shapeText, vbTab, &quot; &quot;)
                    
                    ' 5-3. 여러 개의 연속된 공백을 단일 공백으로 변경
                    Do While InStr(shapeText, &quot;  &quot;) &amp;gt; 0
                        shapeText = Replace(shapeText, &quot;  &quot;, &quot; &quot;)
                    Loop
                    
                    ' 5-4. 마지막으로 앞뒤 공백 제거
                    shapeText = Trim(shapeText)

                    ' 6. 'deleteList' 배열을 순회하며 일치하는 항목이 있는지 확인
                    For j = LBound(deleteList) To UBound(deleteList)
                        If shapeText = CStr(deleteList(j)) Then
                            ' 7. 정확히 일치하는 텍스트를 찾으면 도형을 삭제합니다.
                            shp.Delete
                            deleteCount = deleteCount + 1
                            
                            ' 일치 항목을 찾았으므로 더 이상 이 도형을
                            ' 배열과 비교할 필요가 없음 (다음 도형으로 이동)
                            Exit For
                        End If
                    Next j
                End If
            End If
        Next i ' 다음 도형
    Next sld ' 다음 슬라이드
    On Error GoTo 0 ' 오류 처리 기본값 복원

    ' 8. 완료 메시지 표시
    MsgBox &quot;총 &quot; &amp;amp; deleteCount &amp;amp; &quot;개의 텍스트 박스를 삭제했습니다.&quot;, vbInformation, &quot;매크로 실행 완료&quot;

End Sub&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;오늘 소개할 코드는 이 문제를 해결하기 위해 &lt;b&gt;'텍스트 정규화(Normalization)'&lt;/b&gt; 과정을 거칩니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;텍스트 박스 안의 모든 **줄바꿈 문자(vbCrLf)**를 공백으로 바꿉니다.&lt;/li&gt;
&lt;li&gt;여러 개의 &lt;b&gt;연속된 공백&lt;/b&gt; (&quot; &quot;)을 하나의 공백(&quot; &quot;)으로 압축합니다.&lt;/li&gt;
&lt;li&gt;앞뒤의 &lt;b&gt;불필요한 공백&lt;/b&gt;을 Trim()으로 제거합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드를 복사하여 여러분의 파워포인트 매크로 모듈에 붙여넣으세요.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahgKEwjItprBxbuQAxUAAAAAHQAAAAAQwAI&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;매크로 사용 방법 (5단계)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.&amp;nbsp; &lt;/b&gt;&lt;b&gt;[중요] 원본 파일 백업:&lt;/b&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 매크로 실행은 '되돌리기(Ctrl+Z)'가 불가능합니다. 반드시 파일의 사본을 만들어서 테스트하세요.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. VBA 편집기 열기:&lt;/b&gt; 파워포인트를 열고 Alt + F11 키를 눌러 VBA 편집기 창을 엽니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2578&quot; data-origin-height=&quot;1598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nGcAl/dJMb9OHt1VB/HzjvWpM5EukvFK56EbpYJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nGcAl/dJMb9OHt1VB/HzjvWpM5EukvFK56EbpYJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nGcAl/dJMb9OHt1VB/HzjvWpM5EukvFK56EbpYJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnGcAl%2FdJMb9OHt1VB%2FHzjvWpM5EukvFK56EbpYJK%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;2578&quot; height=&quot;1598&quot; data-origin-width=&quot;2578&quot; data-origin-height=&quot;1598&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&lt;b&gt;3. 모듈 삽입:&lt;/b&gt; 왼쪽 '프로젝트 탐색기' 창에서 현재 파일 이름을 마우스 오른쪽 버튼으로 클릭 후, 삽입(Insert) &amp;gt; 모듈(Module)을 선택합니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1660&quot; data-origin-height=&quot;1088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boHHKp/dJMb9iuYAdF/zptfwLDUqJmIhrfOeD09H1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boHHKp/dJMb9iuYAdF/zptfwLDUqJmIhrfOeD09H1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boHHKp/dJMb9iuYAdF/zptfwLDUqJmIhrfOeD09H1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboHHKp%2FdJMb9iuYAdF%2FzptfwLDUqJmIhrfOeD09H1%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;1660&quot; height=&quot;1088&quot; data-origin-width=&quot;1660&quot; data-origin-height=&quot;1088&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&lt;b&gt;4. 코드 붙여넣기 및 수정:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오른쪽에 나타난 Module1 창에 위 코드를 모두 복사하여 붙여넣습니다.&lt;/li&gt;
&lt;li&gt;코드 상단의 [ 사용자가 수정할 부분 ]을 찾아, deleteList = Array(...) 괄호 안에 &lt;b&gt;본인이 삭제를 원하는 텍스트 목록&lt;/b&gt;으로 수정합니다.&lt;/li&gt;
&lt;li&gt;[주의사항] 한/영 설정에 따라 문자가 입력되지 않을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSEk6t/dJMb9Nhv6SK/F1nJCKSzRV8PTHXNjU7k81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSEk6t/dJMb9Nhv6SK/F1nJCKSzRV8PTHXNjU7k81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSEk6t/dJMb9Nhv6SK/F1nJCKSzRV8PTHXNjU7k81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSEk6t%2FdJMb9Nhv6SK%2FF1nJCKSzRV8PTHXNjU7k81%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;781&quot; height=&quot;491&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;491&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&lt;b&gt;5. 매크로 실행:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파워포인트 창으로 돌아와 Alt + F8 키를 누릅니다.(혹은 편집창에서 재생 버튼을 클릭합니다.)&lt;/li&gt;
&lt;li&gt;DeleteSpecificTextBoxes 매크로를 선택하고 실행(Run) 버튼을 클릭합니다.&lt;/li&gt;
&lt;li&gt;작업이 완료되면 삭제된 텍스트 박스의 개수를 알려주는 메시지 창이 뜹니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1692&quot; data-origin-height=&quot;1132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xsyTf/dJMb84cqfDf/2aM8ZXsTkPrbbAdoS8x7Y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xsyTf/dJMb84cqfDf/2aM8ZXsTkPrbbAdoS8x7Y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xsyTf/dJMb84cqfDf/2aM8ZXsTkPrbbAdoS8x7Y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxsyTf%2FdJMb84cqfDf%2F2aM8ZXsTkPrbbAdoS8x7Y1%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;1692&quot; height=&quot;1132&quot; data-origin-width=&quot;1692&quot; data-origin-height=&quot;1132&quot;/&gt;&lt;/span&gt;&lt;/figure&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;b&gt;&lt;/b&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;팁:&lt;/b&gt; 이 매크로를 나중에도 계속 사용하려면, 파일을 저장할 때 'PowerPoint 매크로 사용 프레젠테이션(*.pptm)' 형식으로 저장해야 합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>.etc</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/50</guid>
      <comments>https://96hb.tistory.com/50#entry50comment</comments>
      <pubDate>Fri, 24 Oct 2025 17:55:27 +0900</pubDate>
    </item>
    <item>
      <title>[무료 아이콘] 다시 뜨는 스큐어모피즘, 요즘 감성 아이콘 모음집 &amp;mdash; The Thiings Collection</title>
      <link>https://96hb.tistory.com/49</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;세상엔 참 다양한 아이콘들이 있죠. 그중에서도 최근 다시 주목받고 있는 디자인 스타일, &lt;b&gt;스큐어모피즘(Skeuomorphism)&lt;/b&gt; 들어보셨나요?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image-aKUT78Rmof2v8h7Yj4O6h52sBGqez8.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbaADr/btsN8vZkAaF/yoyykOcNimigNjU9BJa1A1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbaADr/btsN8vZkAaF/yoyykOcNimigNjU9BJa1A1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbaADr/btsN8vZkAaF/yoyykOcNimigNjU9BJa1A1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbaADr%2FbtsN8vZkAaF%2FyoyykOcNimigNjU9BJa1A1%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;319&quot; height=&quot;319&quot; data-filename=&quot;image-aKUT78Rmof2v8h7Yj4O6h52sBGqez8.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-end=&quot;254&quot; data-start=&quot;239&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  스큐어모피즘이란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;442&quot; data-start=&quot;256&quot; data-ke-size=&quot;size16&quot;&gt;스큐어모피즘은 &lt;b&gt;실제 사물처럼 보이게 만드는 디자인&lt;/b&gt;을 뜻합니다. 예전 아이폰 초기 아이콘을 기억하시나요? 마이크는 진짜 마이크처럼, 계산기는 실제 계산기처럼 표현되었던 그 시절의 스타일이 바로 이거예요.&lt;br /&gt;광택, 질감, 입체감을 살려서 직관적으로 사물을 인식할 수 있게 만드는 이 스타일은, 한때 모든 디지털 UI의 대세였죠.&lt;/p&gt;
&lt;p data-end=&quot;564&quot; data-start=&quot;444&quot; data-ke-size=&quot;size16&quot;&gt;하지만 이후 미니멀리즘 열풍이 불면서 플랫한 디자인이 대세가 되었고, 스큐어모피즘은 잠시 잊혀졌습니다.&lt;br /&gt;그러다 최근 &lt;b&gt;프루티거 에어로&lt;/b&gt; 스타일이 다시 떠오르면서, 스큐어모피즘도 함께 귀환하는 분위기입니다.&lt;/p&gt;
&lt;p data-end=&quot;610&quot; data-start=&quot;566&quot; data-ke-size=&quot;size16&quot;&gt;이런 레트로와 뉴트로가 만나는 흐름 속에서, 흥미로운 사이트 하나를 소개할게요.&lt;/p&gt;
&lt;hr data-end=&quot;615&quot; data-start=&quot;612&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;667&quot; data-start=&quot;617&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  The Thiings Collection &amp;mdash; 3D 감성의 귀여운 아이콘 천국&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;742&quot; data-start=&quot;668&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사이트 링크:&lt;/b&gt; &lt;a href=&quot;https://www.thiings.co/things&quot;&gt;https://www.thiings.co/things&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;2618&quot; data-origin-height=&quot;1488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zoEVl/btsN9FM3T8B/GrypKcH64fcltnkMNCTbG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zoEVl/btsN9FM3T8B/GrypKcH64fcltnkMNCTbG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zoEVl/btsN9FM3T8B/GrypKcH64fcltnkMNCTbG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzoEVl%2FbtsN9FM3T8B%2FGrypKcH64fcltnkMNCTbG1%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;2618&quot; height=&quot;1488&quot; data-origin-width=&quot;2618&quot; data-origin-height=&quot;1488&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-end=&quot;907&quot; data-start=&quot;857&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;907&quot; data-start=&quot;859&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;디지털 세상 속 실제 사물을 꺼내온 듯한 아이콘들, 보고만 있어도 기분이 좋아져요.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;1032&quot; data-start=&quot;909&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1032&quot; data-start=&quot;909&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;The Thiings Collection&lt;/b&gt;은 약 &lt;b&gt;600개 이상의 3D 스타일 아이콘&lt;/b&gt;을 제공하는 아트 컬렉션 사이트입니다.&lt;br /&gt;이 사이트가 특별한 이유는 바로 그 &lt;b&gt;입체감 넘치는 표현과 디테일&lt;/b&gt; 때문이에요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1193&quot; data-start=&quot;1034&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1087&quot; data-start=&quot;1034&quot;&gt;각 아이콘은 &lt;b&gt;매끄럽고 동글동글한 느낌&lt;/b&gt;으로 디자인돼 있어, 귀여운 매력을 더합니다.&lt;/li&gt;
&lt;li data-end=&quot;1148&quot; data-start=&quot;1088&quot;&gt;아이콘을 클릭하면 해당 오브젝트의 이름과 설명이 함께 나오는데요, 그 설명을 읽는 재미도 꽤 쏠쏠합니다.&lt;/li&gt;
&lt;li data-end=&quot;1193&quot; data-start=&quot;1149&quot;&gt;사용하고 싶은 아이콘은 &lt;b&gt;PNG 파일로 간편하게 다운로드&lt;/b&gt; 가능해요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1251&quot; data-start=&quot;1195&quot; data-ke-size=&quot;size16&quot;&gt;3D 디자인과 감성 있는 오브젝트가 만나면서, 마치 작은 장난감이나 디오라마를 보는 것 같기도 해요.&lt;/p&gt;
&lt;hr data-end=&quot;1256&quot; data-start=&quot;1253&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1275&quot; data-start=&quot;1258&quot; 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-end=&quot;1388&quot; data-start=&quot;1277&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1304&quot; data-start=&quot;1277&quot;&gt;&lt;b&gt;[추천] 디지털 다이어리&lt;/b&gt;나 노션 커버 아이콘&lt;/li&gt;
&lt;li data-end=&quot;1334&quot; data-start=&quot;1305&quot;&gt;감성 있는 &lt;b&gt;프레젠테이션 슬라이드&lt;/b&gt; 꾸미기&lt;/li&gt;
&lt;li data-end=&quot;1356&quot; data-start=&quot;1335&quot;&gt;앱 디자인이나 UX 프로토타이핑&lt;/li&gt;
&lt;li data-end=&quot;1388&quot; data-start=&quot;1357&quot;&gt;혹은 단순히 &lt;b&gt;데스크탑 배경 아이콘&lt;/b&gt;으로도 OK!&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1431&quot; data-start=&quot;1390&quot; data-ke-size=&quot;size16&quot;&gt;귀여운 디테일이 살아있는 이 아이콘들, 여러분은 어디에 써보고 싶으신가요?&lt;/p&gt;
&lt;hr data-end=&quot;1436&quot; data-start=&quot;1433&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1451&quot; data-start=&quot;1438&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;✍ 한 줄 요약&lt;/b&gt;&lt;/h2&gt;
&lt;blockquote data-end=&quot;1566&quot; data-start=&quot;1452&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1566&quot; data-start=&quot;1454&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;The Thiings Collection&lt;/b&gt;은 스큐어모피즘 스타일을 현대적으로 재해석한 아이콘 모음집입니다. 3D 감성과 귀여운 디테일이 돋보이며, PNG 다운로드로 다양한 곳에 활용할 수 있어요.&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>  Design Insight</category>
      <category>무료아이콘 # icon #emoji</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/49</guid>
      <comments>https://96hb.tistory.com/49#entry49comment</comments>
      <pubDate>Fri, 23 May 2025 00:05:48 +0900</pubDate>
    </item>
    <item>
      <title>[ML-Agents] Render Texture Sensor &amp;ndash; 사용자 정의 시각 정보를 학습하는 센서</title>
      <link>https://96hb.tistory.com/48</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Render Texture Sensor&lt;/b&gt;는 Unity에서 생성된 &lt;b&gt;렌더 텍스처(RenderTexture)&lt;/b&gt; 출력을&lt;br /&gt;에이전트의 시각적 입력으로 사용할 수 있도록 해주는 고급 센서입니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;335&quot; data-start=&quot;277&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;335&quot; data-start=&quot;279&quot; data-ke-size=&quot;size16&quot;&gt;기본 카메라 센서로는 표현하기 어려운 특수한 시각 정보를 AI가 학습할 수 있도록 도와줍니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-end=&quot;357&quot; data-start=&quot;342&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;언제 사용하나요?&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;520&quot; data-start=&quot;359&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;423&quot; data-start=&quot;359&quot;&gt;&lt;b&gt;세분화(Segmentation)&lt;/b&gt;, &lt;b&gt;깊이 맵(Depth Map)&lt;/b&gt; 같은 시각적 정보가 필요한 경우&lt;/li&gt;
&lt;li data-end=&quot;465&quot; data-start=&quot;424&quot;&gt;표준 카메라 센서로는 감지하기 어려운 시각 신호를 학습하고 싶을 때&lt;/li&gt;
&lt;li data-end=&quot;520&quot; data-start=&quot;466&quot;&gt;&lt;b&gt;디지털 트윈&lt;/b&gt;, &lt;b&gt;3D 시뮬레이션&lt;/b&gt;, &lt;b&gt;AR/VR 렌더링 분석&lt;/b&gt; 등 고급 시나리오&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;570&quot; data-start=&quot;522&quot; data-ke-style=&quot;style2&quot;&gt;예: 바닥의 오염도를 색상 값으로 시각화하여 로봇이 더러운 구역을 우선 청소하게 만들기&lt;/blockquote&gt;
&lt;h3 data-end=&quot;589&quot; data-start=&quot;577&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-end=&quot;589&quot; data-start=&quot;577&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;개념 이해&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;715&quot; data-start=&quot;591&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;660&quot; data-start=&quot;591&quot;&gt;&lt;b&gt;RenderTexture&lt;/b&gt;: Unity의 카메라나 셰이더가 출력한 영상을 &lt;b&gt;오프스크린 버퍼에 저장&lt;/b&gt;한 텍스처&lt;/li&gt;
&lt;li data-end=&quot;715&quot; data-start=&quot;661&quot;&gt;&lt;b&gt;RenderTextureSensor&lt;/b&gt;: 이 텍스처를 받아 에이전트가 이미지 입력으로 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1747157492909&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;기존 Camera Sensor는 Unity의 카메라 출력을 그대로 사용  
RenderTexture Sensor는 커스텀 렌더링 결과도 입력으로 사용 가능​&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;577&quot; data-end=&quot;589&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;577&quot; data-end=&quot;589&quot;&gt;&lt;b&gt;구성 방법&lt;/b&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1008&quot; data-start=&quot;836&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;888&quot; data-start=&quot;836&quot;&gt;&lt;b&gt;RenderTexture 생성&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;888&quot; data-start=&quot;865&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;888&quot; data-start=&quot;865&quot;&gt;셰이더 또는 카메라의 출력으로 만들어짐&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;956&quot; data-start=&quot;889&quot;&gt;&lt;b&gt;RenderTextureSensorComponent&lt;/b&gt; 추가
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;956&quot; data-start=&quot;933&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;956&quot; data-start=&quot;933&quot;&gt;해당 텍스처를 ML-Agents에 연결&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1008&quot; data-start=&quot;957&quot;&gt;&lt;b&gt;Observation 설정&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1008&quot; data-start=&quot;984&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1008&quot; data-start=&quot;984&quot;&gt;해상도, 색상/흑백, 압축 여부 등 조정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;실전 예시: 디지털 트윈 기반 청소 최적화&lt;/b&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;목표&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;RenderTexture Sensor 활용 방식&lt;/b&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;/div&gt;
&lt;blockquote data-end=&quot;1328&quot; data-start=&quot;1279&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;1328&quot; data-start=&quot;1281&quot; data-ke-size=&quot;size16&quot;&gt;로봇은 &quot;눈에 보이는 청소 필요 영역&quot;을 학습하고 스스로 경로를 조정할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&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;h3 data-end=&quot;1346&quot; data-start=&quot;1335&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주의사항&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1534&quot; data-start=&quot;1348&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1391&quot; data-start=&quot;1348&quot;&gt;&lt;b&gt;고급 렌더링 이해 필요&lt;/b&gt;: 셰이더, 카메라 렌더링 경로 숙지 필수&lt;/li&gt;
&lt;li data-end=&quot;1437&quot; data-start=&quot;1392&quot;&gt;&lt;b&gt;입력 정규화&lt;/b&gt; 필요: 픽셀 값을 안정된 범위로 조정해야 학습이 잘 됨&lt;/li&gt;
&lt;li data-end=&quot;1484&quot; data-start=&quot;1438&quot;&gt;&lt;b&gt;문서 부족&lt;/b&gt;: 공식 문서나 튜토리얼이 제한적이므로 실험 기반 사용 필요&lt;/li&gt;
&lt;li data-end=&quot;1534&quot; data-start=&quot;1485&quot;&gt;&lt;b&gt;성능 고려&lt;/b&gt;: 고해상도 RenderTexture는 GPU/메모리 리소스 요구 &amp;uarr;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1559&quot; data-start=&quot;1541&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;훈련 최적화를 위한 전략&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 110px;&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: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt;전략&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px;&quot;&gt;&lt;b&gt;효과&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;색상 기반 분할&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;객체 종류나 상태를 색상으로 구분하여 학습에 활용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;저해상도 흑백 처리&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;연산량 감소 + 학습 가속&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;전용 셰이더 출력 활용&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;Depth, Surface Normal, Label Mask 등 복합 정보 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;카메라 센서와 조합&lt;/td&gt;
&lt;td style=&quot;height: 19px;&quot;&gt;일반 이미지 + 특수 텍스처 병합 학습 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1783&quot; data-start=&quot;1776&quot; 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-end=&quot;1950&quot; data-start=&quot;1785&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1851&quot; data-start=&quot;1785&quot;&gt;&lt;b&gt;Render Texture Sensor는 ML-Agents의 확장성과 표현력을 크게 높여주는 센서&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li data-end=&quot;1909&quot; data-start=&quot;1852&quot;&gt;세분화, 깊이 인식, 시뮬레이션 특화 렌더링 등 &lt;b&gt;맞춤형 시각 정보&lt;/b&gt;를 활용할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;1950&quot; data-start=&quot;1910&quot;&gt;고급 사용자와 디지털 트윈, 리서치 중심 프로젝트에 특히 적합합니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Unity</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/48</guid>
      <comments>https://96hb.tistory.com/48#entry48comment</comments>
      <pubDate>Wed, 14 May 2025 02:34:24 +0900</pubDate>
    </item>
    <item>
      <title>[ML-Agents] Buffer Sensor &amp;ndash; 동적으로 변하는 객체를 추적하는 센서</title>
      <link>https://96hb.tistory.com/47</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Buffer Sensor&lt;/b&gt;는 에이전트가 &lt;b&gt;가변적인 수의 객체&lt;/b&gt;를 관찰할 수 있도록 해주는 센서입니다.&lt;br /&gt;관찰할 대상이 매번 바뀌거나, 수가 일정하지 않은 상황에서 유용하게 사용됩니다.&lt;/p&gt;
&lt;blockquote data-end=&quot;323&quot; data-start=&quot;268&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;323&quot; data-start=&quot;270&quot; data-ke-size=&quot;size16&quot;&gt;예: 주변에 쓰레기가 몇 개 있을지 모를 때, 그 수에 따라 관찰을 자동으로 조정할 수 있다면?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-end=&quot;345&quot; data-start=&quot;330&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-end=&quot;345&quot; data-start=&quot;330&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;언제 사용하나요?&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;460&quot; data-start=&quot;347&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;397&quot; data-start=&quot;347&quot;&gt;주변에 존재하는 객체(유출물, 적, 아이템 등)의 &lt;b&gt;수와 위치가 매번 다를 때&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;423&quot; data-start=&quot;398&quot;&gt;다수의 객체를 동적으로 추적해야 할 때&lt;/li&gt;
&lt;li data-end=&quot;460&quot; data-start=&quot;424&quot;&gt;&lt;b&gt;레이, 그리드 센서로는 표현이 어렵거나 비효율적인 경우&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-end=&quot;508&quot; data-start=&quot;462&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;508&quot; data-start=&quot;464&quot; data-ke-size=&quot;size16&quot;&gt;예: 로봇 청소기 주변에 쓰레기나 장애물이 불규칙하게 생성/삭제되는 상황&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;530&quot; data-start=&quot;515&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주요 설정 항목&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;설정 항목&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MaxNumObservables&lt;/td&gt;
&lt;td&gt;한 번에 추적할 수 있는 &lt;b&gt;최대 객체 수&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ObservableSize&lt;/td&gt;
&lt;td&gt;각 객체를 표현하는 &lt;b&gt;float 값의 개수&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1747157231077&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;예: ObservableSize = 4 &amp;rarr; 각 객체: (x, z, 크기, 타입)
     MaxNumObservables = 10 &amp;rarr; 최대 10개의 객체까지 관찰 가능&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;798&quot; data-start=&quot;783&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;코드 구현 예시&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1747157261519&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class TrashObserver : MonoBehaviour
{
    public BufferSensorComponent bufferSensor;

    void Update()
    {
        var buffer = bufferSensor.GetObservationBuffer();
        foreach (var trash in FindNearbyTrash())
        {
            float[] data = new float[4] {
                trash.transform.position.x,
                trash.transform.position.z,
                trash.size,
                trash.typeIndex
            };
            buffer.AppendObservation(data);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-end=&quot;1416&quot; data-start=&quot;1316&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;1416&quot; data-start=&quot;1318&quot; data-ke-size=&quot;size16&quot;&gt;AppendObservation(float[])을 통해 하나씩 수동으로 버퍼에 추가&lt;br /&gt;추가한 데이터의 길이는 ObservableSize와 정확히 일치해야 함&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-end=&quot;1448&quot; data-start=&quot;1423&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;실전 예시: 유출물 동적 감지 로봇&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;목표&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Buffer Sensor 활용&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;근처에 쓰레기가 몇 개 있는지 파악&lt;/td&gt;
&lt;td&gt;MaxNumObservables = 20 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;쓰레기 위치 + 크기 + 타입 기록&lt;/td&gt;
&lt;td&gt;ObservableSize = 4 로 설정 후 스택에 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;너무 멀리 있는 쓰레기는 제외&lt;/td&gt;
&lt;td&gt;거리 필터링 후 AppendObservation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;에이전트는 매 스텝마다 주변 환경을 새롭게 감지하고, 동적으로 행동 전략을 조정할 수 있습니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1741&quot; data-start=&quot;1730&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주의사항&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1952&quot; data-start=&quot;1743&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1799&quot; data-start=&quot;1743&quot;&gt;&lt;b&gt;추가할 수 있는 개수 제한 있음&lt;/b&gt; (MaxNumObservables 초과 시 무시됨)&lt;/li&gt;
&lt;li data-end=&quot;1855&quot; data-start=&quot;1800&quot;&gt;&lt;b&gt;각 엔티티의 데이터 길이는 반드시 동일&lt;/b&gt;해야 함 (ObservableSize 고정)&lt;/li&gt;
&lt;li data-end=&quot;1904&quot; data-start=&quot;1856&quot;&gt;서로 다른 유형의 객체를 다루려면 &lt;b&gt;여러 BufferSensor 사용 고려&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1952&quot; data-start=&quot;1905&quot;&gt;Vector/Camera/Ray 센서와 병행하여 사용하면 &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;h3 data-end=&quot;1982&quot; data-start=&quot;1959&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;훈련 최적화를 위한 전략&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;전략&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;가까운 객체만 필터링&lt;/td&gt;
&lt;td&gt;불필요한 데이터 제거 &amp;rarr; 효율 향상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;객체 유형을 구분하려면&lt;/td&gt;
&lt;td&gt;마지막 인덱스에 type index 추가&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;Update 대신 FixedUpdate에서 호출하여 안정적 관찰 유지&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;h2 data-end=&quot;2207&quot; data-start=&quot;2200&quot; 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-end=&quot;2373&quot; data-start=&quot;2209&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2258&quot; data-start=&quot;2209&quot;&gt;&lt;b&gt;Buffer Sensor는 객체 수가 유동적인 환경에서 탁월한 선택&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li data-end=&quot;2307&quot; data-start=&quot;2259&quot;&gt;주변 동적 객체를 유연하게 추적하고, 다양한 정보로 행동을 조정할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;2373&quot; data-start=&quot;2308&quot;&gt;사용 시 ObservableSize, MaxNumObservables를 일관되게 관리하는 것이 핵심입니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Unity</category>
      <author>빈형임</author>
      <guid isPermaLink="true">https://96hb.tistory.com/47</guid>
      <comments>https://96hb.tistory.com/47#entry47comment</comments>
      <pubDate>Wed, 14 May 2025 02:29:48 +0900</pubDate>
    </item>
  </channel>
</rss>