<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Scientia Conditorium</title>
    <link>https://molonlabe.tistory.com/</link>
    <description>소프트웨어 개발 지식 저장소</description>
    <language>ko</language>
    <pubDate>Mon, 29 Jun 2026 21:52:32 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>크썸</managingEditor>
    <image>
      <title>Scientia Conditorium</title>
      <url>https://tistory1.daumcdn.net/tistory/4423116/attach/42acd06e4b0a469a82266a438980389c</url>
      <link>https://molonlabe.tistory.com</link>
    </image>
    <item>
      <title>[책리뷰] 이것이 멀티 에이전트다</title>
      <link>https://molonlabe.tistory.com/159</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;&lt;b&gt;&quot;한빛미디어 서평단 &amp;lt;나는리뷰어다&amp;gt; 활동을 위해서 책을 협찬 받아 작성된 서평입니다.&quot;&lt;/b&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KGCPY/dJMcafUG7bg/EnwOZmKN4vjqweKYkdXdrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KGCPY/dJMcafUG7bg/EnwOZmKN4vjqweKYkdXdrk/img.png&quot; data-alt=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B5960502602&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KGCPY/dJMcafUG7bg/EnwOZmKN4vjqweKYkdXdrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKGCPY%2FdJMcafUG7bg%2FEnwOZmKN4vjqweKYkdXdrk%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;400&quot; height=&quot;514&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.hanbit.co.kr/store/books/look.php?p_code=B5960502602&lt;/figcaption&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;!--머릿말 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #0404B4 2px solid; border-left: #0404B4 12px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;전반적인 소감 및 마음에 드는 부분&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;AI업계에서 사용하고 있는 에이전트(Agent)란 설정한 목표를 달성하기 위해 외부 개입 없이 스스로 상황을 판단하고 계획을 세워 행동하는 자율형 인공지능 시스템을 의미한다. 질문에 답만 하는 기존 챗봇 형태의 LLM 시스템과 달리 직접 시스템이나 도구를 활용해 업무를 완수하는 것이 특징이다. &lt;a href=&quot;https://www.hanbit.co.kr/channel/view.html?cmscode=CMS4343155459&amp;amp;gad_source=1&amp;amp;gad_campaignid=23518945342&amp;amp;gbraid=0AAAAA_x2BeybExHxFGtpXhBKTs4u43OJS&amp;amp;gclid=CjwKCAjw6f3RBhApEiwAMaCqWZDNwKaub8f04CFwGfR99lk5ULa7F3BVTd_eQUn7SXgQs0LwnK0cuRoCv54QAvD_BwE&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;에이전트에 대한 자세한 설명은 한빛미디어에서 개념 정리를 해둔 페이지&lt;/a&gt;가 있기 때문에 이 페이지를 참고하면 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책에서 가장 마음에 드는 부분은 예제가 많고 무엇을 어떻게 해야하는지 자세히 알려준다는 점이다. MCP 연결하고 멀티에이전트 쓰면 좋다고 듣기만 했지 어떻게 해야할지 몰랐다면 이 책이 적합하다. '문제를 작은 판단으로 나누어 협업하게 한다'는 기본 생각을 토대로 어떻게 멀티 에이전트를 다루는지 쉽게 설명해준다.&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%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;934&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n7w7N/dJMcabdAqsn/bfgohEZcs9HcOA0uLKRXEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n7w7N/dJMcabdAqsn/bfgohEZcs9HcOA0uLKRXEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n7w7N/dJMcabdAqsn/bfgohEZcs9HcOA0uLKRXEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn7w7N%2FdJMcabdAqsn%2FbfgohEZcs9HcOA0uLKRXEk%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;682&quot; height=&quot;934&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;934&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;918&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhTwxV/dJMcabSdw9X/WM2ek0kK0ZHCet2Mq4ikgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhTwxV/dJMcabSdw9X/WM2ek0kK0ZHCet2Mq4ikgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhTwxV/dJMcabSdw9X/WM2ek0kK0ZHCet2Mq4ikgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhTwxV%2FdJMcabSdw9X%2FWM2ek0kK0ZHCet2Mq4ikgK%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;641&quot; height=&quot;918&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;918&quot;/&gt;&lt;/span&gt;&lt;/figure&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;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;대상 독자 및 책 난이도&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;LLM을 단순히 질의응답 형태로만 이용하는 것을 넘어서 여러 에이전트가 협업하는 실제 시스템을 직접 만들어보려는 사람들이 대상 독자다. 따라서 어느 정도 개발 경험이 있어야지만 책의 내용을 이해할 수 있다. 책에서 추천하는 대상 독자는 다음과 같다.&lt;/p&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;OpenAI API를 한 번쯤 호출해 본 적이 있는 분&lt;/li&gt;
&lt;li&gt;RAG 시스템을 만들어 보았고, 그 다음 단계를 찾고 있는 분&lt;/li&gt;
&lt;li&gt;딥러닝 이론보다 LLM을 '블록'으로 엮는 설계와 조립에 관심 있는 분&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목1 끝--&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;!--소제목2 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;다루는 내용과 범위&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트가 무엇인지 먼저 가볍게 소개하고 나서 책의 핵심 주제인 멀티 에이전트를 다룬다. 멀티 에이전트의 이해 및 환경 설정, 싱글 에이전트 예제, 멀티 에이전트 예제로 총 3부로 구성되어있다.&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;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;멀티 에이전트 동작 원리&lt;/li&gt;
&lt;li&gt;실습 환경 준비&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;싱글 에이전트 실전 구현&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;영업 데이터 분석과 시각화&lt;/li&gt;
&lt;li&gt;개인정보 탐지와 마스킹&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;멀티 에이전트 실전 구현&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;약관 기반 질의응답&lt;/li&gt;
&lt;li&gt;Whisper 기반 음성 Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;병렬 검색으로 속도 개선&lt;/li&gt;
&lt;li&gt;반복 평가로 응답 품질 개선&lt;/li&gt;
&lt;li&gt;뉴스 기반 종목 영향 평가&lt;/li&gt;
&lt;li&gt;이상 거래 탐지&lt;/li&gt;
&lt;li&gt;맞춤형 여행 플래너&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제가 많은 점도 좋으나 각 예제별로 어떻게 폴더, 파일, 설정들이 구성되어있는지 자세히 알려주는 점 역시 좋았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목2 끝--&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;930&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Tnc8P/dJMcagzfqpq/ikkkCDKhgLgqOGNa6Gig6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Tnc8P/dJMcagzfqpq/ikkkCDKhgLgqOGNa6Gig6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Tnc8P/dJMcagzfqpq/ikkkCDKhgLgqOGNa6Gig6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTnc8P%2FdJMcagzfqpq%2FikkkCDKhgLgqOGNa6Gig6k%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;632&quot; height=&quot;930&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;930&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;935&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UXHcz/dJMcabY4AxS/A2ERjroxFBbkmjqrD3NNk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UXHcz/dJMcabY4AxS/A2ERjroxFBbkmjqrD3NNk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UXHcz/dJMcabY4AxS/A2ERjroxFBbkmjqrD3NNk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUXHcz%2FdJMcabY4AxS%2FA2ERjroxFBbkmjqrD3NNk1%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;625&quot; height=&quot;935&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;935&quot;/&gt;&lt;/span&gt;&lt;/figure&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;!--마무리 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #698be2 2px solid; border-left: #FF0000 12px solid; border-bottom-color: #FF0000; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;책 난이도는 약간 있는 편이다. 책에 나온 파이썬 스크립트를 전부 다 알아야되냐라고 물어본다면 꼭 그렇지는 않다. 이 역시 LLM을 통해 충분히 생성해낼 수 있으니깐 말이다. 다만 파이썬 스크립트 내용이 무엇인지 정도는 알 수 있어야된다고 생각한다. 책에 나온 멀티 에이전트 구현 예제들을 연습해보면 다른 상황에서도 비슷하게 무리없이 적용할 수 있을 것이다. 다만 모든 제품이 그러하듯이 실행할때마다 결과물이 너무 달라지면 안된다고 생각한다. 따라서 책에 나온 예제와 실습들을 연습 용도로만 활용하고 실제 제품에 적용할 때는 다른 방식이 추가되어야할 것으로 판단된다. 어쨌든 멀티 에이전트 개념과 실습을 충분히 활용해보고 싶다면 이 책을 적극 추천한다.&lt;/p&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>서평/IT-책</category>
      <category>LLM</category>
      <category>mcp</category>
      <category>나는리뷰어다</category>
      <category>리뷰리뷰</category>
      <category>멀티에이전트</category>
      <category>에이전트</category>
      <category>이것이멀티에이전트다</category>
      <category>한빛미디어</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/159</guid>
      <comments>https://molonlabe.tistory.com/159#entry159comment</comments>
      <pubDate>Sun, 28 Jun 2026 16:44:39 +0900</pubDate>
    </item>
    <item>
      <title>[책리뷰] 바이브 코더를 위한 최소한의 AI/IT 지식</title>
      <link>https://molonlabe.tistory.com/158</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;span&gt;&lt;b&gt;&quot;한빛미디어 서평단 &amp;lt;나는리뷰어다&amp;gt; 활동을 위해서 책을 협찬 받아 작성된 서평입니다.&quot;&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MBpSG/dJMcabdcnI0/YJMjEk3IBGvkgKrKIkwYmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MBpSG/dJMcabdcnI0/YJMjEk3IBGvkgKrKIkwYmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MBpSG/dJMcabdcnI0/YJMjEk3IBGvkgKrKIkwYmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMBpSG%2FdJMcabdcnI0%2FYJMjEk3IBGvkgKrKIkwYmK%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;400&quot; height=&quot;568&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;568&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;!--머릿말 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #0404B4 2px solid; border-left: #0404B4 12px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;전반적인 소감 및 마음에 드는 부분&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;제목 그대로 개발 안 해본 사람들이 AI 도구를 활용해 개발을 시작할 때 필요한 최소한의 지식들을 알려주는 책이다. 특히 비유가 굉장히 직관적이면서도 알기 쉽다. 그렇기 때문에 이 책은 개발자들도 꼭 봤으면 하는 책이다. 회사에서 다른 부서 사람들과 협업할 일이 많은데, 그 때 이 책에서 알려주는 대로 비유를 들어주면 바로 이해하기 때문이다. 따라서 개발자들은 이 책에서 설명해주는 비유법을 꼭 익혔으면 한다. 예를 들어 개발자들에게 MCP가 뭔지 설명해달라고 하면 굉장히 횡설수설 한다. 인터넷 검색만 해보더라도 'MCP는 대규모 언어 모델과 외부 데이터 소스 또는 애플리케이션을 안전하게 연결하기 위한 오픈소스 표준 통신 규약' 이라고 설명한다. 이 책에서 이렇게 설명한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;MCP는 쉽게 말하면 USB-C처럼 단자를 하나를 통일한 표준 규격입니다.&lt;br /&gt;MCP의 등장 이전에는 AI에 새 기능을 붙이려면 도구마다 연결 방식이 달라서 설정이 무척 복잡했습니다.&lt;br /&gt;그러나 지금은 MCP라는 표준 규격이 생기면서 누구나 같은 방식으로 도구를 만들고 연결할 수 있게 된 것입니다.&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 밖에도 토큰, API, HTTP상태코드, Git, 환경 변수, DNS 등등 개발 용어들을 굉장히 쉽게 설명해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LuPOy/dJMb99NdTOz/MyL8NDssuHQ8BO90cAZYGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LuPOy/dJMb99NdTOz/MyL8NDssuHQ8BO90cAZYGK/img.png&quot; data-alt=&quot;책 p.73 MCP 설명 그림&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LuPOy/dJMb99NdTOz/MyL8NDssuHQ8BO90cAZYGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLuPOy%2FdJMb99NdTOz%2FMyL8NDssuHQ8BO90cAZYGK%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;438&quot; height=&quot;287&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;책 p.73 MCP 설명 그림&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;대상 독자 및 책 난이도&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;내용 자체는 어렵지 않다. 개발자들이 보기에는 그냥 기본 개념 한번 정리해놓은 책으로 볼 수 있다. 그러나 만약 기획자라면 이 책에 나온 용어 설명들을 보고 적어도 개발자들과 대화가 안되는 상황은 없을 것이다. 개발 공부를 해본 적 없이 AI를 사용해 개발을 시작한 사람들을 위해 '개발 안 해본 개발자'라고 지칭한 것 같다. 이런 사람들 뿐만 아니라 개발자로 일하고 있지만 개발 지식을 어떻게 설명해야할지 잘 모르는 개발자들에게도 이 책을 추천한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목1 끝--&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;!--소제목2 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;다루는 내용과 범위&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;AI라는 도구가 어떤 구조로 되어있고&amp;nbsp; 어떻게 사용해야 하며, 무엇을 주의해야 하는지 알려주는 도구 사용법을 다룬다. 조금 더 직설적으로는 바이브 코딩을 하기 위핸 최소한 개발 용어들을 설명해주는 책이라고 보면 된다. 가령 chatGPT를 이용해 'XX 앱을 만들어줘' 까지는 누구나 다 할 수 있다. 그런데 chatGPT가 대답해준 코드가 어떻게 생성되고 왜 동작되고 어떨때는 또 동작 안되는지 알기 위한 내용을 다룬다. 따라서 아래와 같이 바이브 코딩을 시작할 때 드는 의문점부터 하나하나 풀어나간다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;AI는 코드를 어떻게 만들까?&lt;/li&gt;
&lt;li&gt;일단 돌아가긴 하는데 이게 왜 되지?&lt;/li&gt;
&lt;li&gt;배포했더니 되던 게 안 된다.&lt;/li&gt;
&lt;li&gt;데이터는 어디에 있는 걸까?&lt;/li&gt;
&lt;li&gt;로그인은 어떻게 작동할까?&lt;/li&gt;
&lt;li&gt;더 잘 만들고 싶다면 여기까지&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목2 끝--&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bH5ehL/dJMcagFFfw5/KQxJM9HTsyjxAUj9a3d0uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bH5ehL/dJMcagFFfw5/KQxJM9HTsyjxAUj9a3d0uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bH5ehL/dJMcagFFfw5/KQxJM9HTsyjxAUj9a3d0uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbH5ehL%2FdJMcagFFfw5%2FKQxJM9HTsyjxAUj9a3d0uk%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;478&quot; height=&quot;668&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--마무리 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #698be2 2px solid; border-left: #FF0000 12px solid; border-bottom-color: #FF0000; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;저자도 말했듯이 AI는 우리가 지금 겪는 불편함을 클릭 한 번으로 해결해주는 만병통치약이 아니다. 책 앞쪽에 저자의 말 중 굉장히 공감되는 말이 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;이쯤에서 생각을 전환할 때가 됐습니다.&lt;br /&gt;내가 하던 일을 '뺏긴다'가 아니라 '넘겨 준다'로요.&lt;br /&gt;대신 그 일을 넘겨 준 AI를 제가 가지는 겁니다.&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;AI 때문에 일자리가 없어진다는 말은 반은 맞고 반은 틀리다고 생각한다. AI가 기존의 일자리를 완전히 없앴다고 보지는 않는다. 단순히 자동화를 해주었다고 생각한다. 예를 들어 자동차가 등장하면서 마차를 이끌던 마부가 택시 기사나 운전사로 바뀌었다. 마차를 쓸 일이 없어졌기 때문이다. 그런데 AI가 등장했다고 해서 기존 직업이 없어진건 아니다. 단순히 대체 도구가 나왔기 때문에 사람을 쓰던 일이 줄어든 것이다. 여기서 핵심은 줄어든 것이지 없어진 것은 아니라고 생각한다. AI가 코드를 대신 작성해준다고 해서 개발자가 없어진 것은 아니다. 제대로 돌아가는 코드인지 추가 관리를 또 해주어야 하기 때문이다. 물론 미래에는 완전히 대체될 수도 있을 가능성이 있지만 당장은 아니라고 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자가 말했듯이 인류는 AI를 기획하는 기획자가 되어야 한다. 앞으로는 기획자, 개발자 간의 벽이 허물어지고 기획가 개발을 같이하는 형태가 자리잡을 것이라 생각한다.&lt;/p&gt;</description>
      <category>서평/IT-책</category>
      <category>나는리뷰어다</category>
      <category>리뷰리뷰</category>
      <category>최소한의AI/IT지식</category>
      <category>한빛미디어</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/158</guid>
      <comments>https://molonlabe.tistory.com/158#entry158comment</comments>
      <pubDate>Sun, 24 May 2026 00:45:56 +0900</pubDate>
    </item>
    <item>
      <title>[책리뷰] 레트로의 유니티 성능 최적화</title>
      <link>https://molonlabe.tistory.com/157</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;i&gt;&lt;b&gt;&quot;한빛미디어 서평단 &amp;lt;나는리뷰어다&amp;gt; 활동을 위해서 책을 협찬 받아 작성된 서평입니다.&quot;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[책리뷰]&amp;nbsp;레트로의&amp;nbsp;유니티&amp;nbsp;성능&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;602&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Vorae/dJMcaaLvEzE/sTvicgjyINXl9ik3A6syak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Vorae/dJMcaaLvEzE/sTvicgjyINXl9ik3A6syak/img.png&quot; data-alt=&quot;https://www.hanbit.co.kr/store/books/look.php?p_code=B4508580257&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Vorae/dJMcaaLvEzE/sTvicgjyINXl9ik3A6syak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVorae%2FdJMcaaLvEzE%2FsTvicgjyINXl9ik3A6syak%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;600&quot; height=&quot;761&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.hanbit.co.kr/store/books/look.php?p_code=B4508580257&lt;/figcaption&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;!--머릿말 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #0404B4 2px solid; border-left: #0404B4 12px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;전반적인 소감 및 마음에 드는 부분&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그래픽 프로그래밍 관련 업계에서 일하고 있기 때문에 이 책은 굉장히 마음에 들었다. 최근 개발 추세를 보면 생산성이다 뭐다 하면서 일단 빠르게 개발하는 것에 초점을 맞추고 있다. 여기까지는 괜찮지만 그 다음이 문제다. 우선 결과물을 내놓고 성능이 안 좋으면 컴퓨터 사양을 더 높이라고 한다. 즉 프로그램, 앱의 성능을 높이거나 최적화 하는 방향이 아니라 구동시키는 컴퓨터, 하드웨어의 성능을 더 높이라고들 한다. 이런 방식은 느린 로딩, 버벅임, 잦은 프레임 드랍 등으로 결국 사용 불가로 이어지게 된다.&amp;nbsp; 사실상 저사양 기기 사용자, 저속 네트워크 사용자, 예산이 적은 사용자들을 버리겠다는 말이다. 또한 유지보수 역시 어려워지기 때문에 사업적으로도 손해로 이어진다고 본다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 AI를 이용해 빠른 결과물을 내놓는 책이 만연한 요즘, 최적화라는 근본 서적이 나와서 정말 마음에 들었다. 이건 AI에도 적용시킬 수 있는데 더 적은 메모리, 더 빠른 알고리즘, 더 성능 좋은 프로그램은 AI 토큰 사용 시간/비용을 줄일 수 있기 때문이다. 게다가&lt;b&gt; 이 책은 단순히 유니티 프로파일러 사용 방법을 알려주는 것이 아니라 병목 현상 분석부터 실질적인 해결까지 이어지는 올바른 접근 방식과 성능 최적화의 본질을 제대로 알려주고 있다&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;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;795&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/exa2NH/dJMcabcyipo/40f11KaRRvmqMZ6z7qYaM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/exa2NH/dJMcabcyipo/40f11KaRRvmqMZ6z7qYaM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/exa2NH/dJMcabcyipo/40f11KaRRvmqMZ6z7qYaM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fexa2NH%2FdJMcabcyipo%2F40f11KaRRvmqMZ6z7qYaM0%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;600&quot; height=&quot;795&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;795&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;대상 독자 및 책 난이도&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&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;/li&gt;
&lt;li&gt;프로파일러를 사용해본 경험은 있지만 수집된 데이터를 어떻게 해석하고 최적화로 연결해야 할지 막막했던 개발자&lt;/li&gt;
&lt;li&gt;감에 의존한 최적화가 아니라 지표와 근거를 기반으로 성능 문제를 정의하고 개선하고자 하는 실무 개발자&lt;/li&gt;
&lt;li&gt;모바일, 콘솔, PC 등 다양한 플랫폼 환경에서 유니티 프로젝트의 성능 안정성을 확보해야 하는 개발자&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그러나 유니티와 상관없이 그래픽 프로그래밍을 다루는 개발자라면 한 번쯤은 읽어볼 만하다고 생각한다. 최적화 대상이 유니티여서 그렇지 책에서 설명하는 내용은 그래픽 프로그래밍 분야 전부 동일하게 적용되기 때문이다. 특히 3장 스레드와 병목, 7장 메모리 구조의 이해는 반드시 읽어보았으면 한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;924&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G9JyP/dJMcacWP6Cx/M4ihVYY9gmkCx3XSYvu4oK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G9JyP/dJMcacWP6Cx/M4ihVYY9gmkCx3XSYvu4oK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G9JyP/dJMcacWP6Cx/M4ihVYY9gmkCx3XSYvu4oK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG9JyP%2FdJMcacWP6Cx%2FM4ihVYY9gmkCx3XSYvu4oK%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;600&quot; height=&quot;801&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;924&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목1 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 챕터13을 보면 최적화 방법 중 하나의 오브젝트 풀 기법을 설명하고 있다. 오브젝트를 미리 많이 생성해두어서 생성/파괴 과정을 최대한 줄여서 FPS를 높이는 방법 중 하나다. 이런 기법은 특정 도구를 써야지만 사용할 수 있는 것이 아니기 &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;&lt;!--소제목2 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;다루는 내용과 범위&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;프로파일러 기본 도구가 유니티와 iOS에 맞춰져있긴 하지만 어차피 대부분의 프로파일러 도구들이 비슷하기 때문에 큰 상관없이 볼 수 있다. 중요한 것은 해당 프로파일러 도구들을 이용해 성능 측정 및 최적화를 어떻게 하는지를 봐야한다.&lt;/p&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;프로파일링과 데이터 분석&lt;/li&gt;
&lt;li&gt;메모리 구조와 관리 전략&lt;/li&gt;
&lt;li&gt;그래픽스 최적화&lt;/li&gt;
&lt;li&gt;CPU와 스크립트 최적화&lt;/li&gt;
&lt;li&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;778&quot; data-origin-height=&quot;1002&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/llUPD/dJMcaaELd9F/OiqKEOHoKQj03dyL478VIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/llUPD/dJMcaaELd9F/OiqKEOHoKQj03dyL478VIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/llUPD/dJMcaaELd9F/OiqKEOHoKQj03dyL478VIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FllUPD%2FdJMcaaELd9F%2FOiqKEOHoKQj03dyL478VIk%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;600&quot; height=&quot;773&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;1002&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목2 끝--&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;6장 챕터 설명하는 페이지를 보면 각 OS별로 어떤 GPU 프로파일러를 대표적으로 사용하는지 알려준다. 책에서 설명은 iOS &amp;middot; macOS 환경에서 사용하는 Xcode Metal 디버거를 활용했지만, 윈도우나 안드로이드라면 다른 프로파일러를 사용하면 된다.&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;!--마무리 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #698be2 2px solid; border-left: #FF0000 12px solid; border-bottom-color: #FF0000; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;성능 최적화는 단순히 저사양 기기 사용자, 저속 네트워크 사용자, 예산이 적은 사용자들을 위한 것이 아니다. 예를 들어 성능 최적화를 통해 기존에 10가지 기능밖에 없는 프로그램이 100가지 기능을 가질 수 있게 될 수도 있다. AI 토큰을 사용할 때 서버 이용 시간이 1분이였던 것이 최적화를 통해 100ms로 줄어든다면, 그만큼 서버 이용 비용을 아낄 수 있게 된다. 아무리 AI 등장으로 개발 방법이 바뀌고 있다고 하더라도 근본적인 개발론은 바뀌지 않을 것이라 본다. 여기서 말하는 근본적인 개발론은 오랫 시간 동안 축척되어온 소프트웨어 개발론, 문제를 분석하고 해결하는 전문가의 사고 방식이다. 이 책은 &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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>서평/IT-책</category>
      <category>나는리뷰어다</category>
      <category>레트로</category>
      <category>레트로의유니티성능최적화</category>
      <category>리뷰리뷰</category>
      <category>성능최적화</category>
      <category>유니티</category>
      <category>한빛미디어</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/157</guid>
      <comments>https://molonlabe.tistory.com/157#entry157comment</comments>
      <pubDate>Sun, 29 Mar 2026 21:44:33 +0900</pubDate>
    </item>
    <item>
      <title>[책리뷰] 러스트로 갈아타기</title>
      <link>https://molonlabe.tistory.com/156</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&lt;b&gt;&quot;한빛미디어 서평단 &amp;lt;나는리뷰어다&amp;gt; 활동을 위해서 책을 협찬받아 작성된 서평입니다.&quot;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[책리뷰] 러스트로 갈아타기 - 레거시 코드는 살리고 성능은 높이는 단계별 리팩터링 전략&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;867&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n5xPh/dJMcagxPyqP/Om6DinhuuG271RjkBa3uyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n5xPh/dJMcagxPyqP/Om6DinhuuG271RjkBa3uyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n5xPh/dJMcagxPyqP/Om6DinhuuG271RjkBa3uyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn5xPh%2FdJMcagxPyqP%2FOm6DinhuuG271RjkBa3uyK%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;677&quot; height=&quot;867&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;867&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #0404B4 2px solid; border-left: #0404B4 12px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;전반적인 소감 및 마음에 드는 부분&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;소위 RIIR(Rewrite It In Rust) 이라는 밈이 있다. 말 그대로 모든 것을 러스트로 다시 재작성하라는 얘기다. 러스트가 메모리 안전성면에서 뛰어나니 다시 재작성하고 싶기는 한데, 러스트 기본 문법을 모르니 어떻게 시작해야할지 막막했다. 그런 와중에 이 책이 엄청나게 도움됐다. 저자 말대로 이 책은 기존 시스템을 분해하고 다시 작성하는 데 초점을 맞춘 언어를 활용해, 그런 상황에서 유용한 여러 패턴을 제공하는 것이다. 따라서 RIIR에 관심있는 프로그래머에게 딱 어울리는 책이다. 다른 언어와 비교하여 설명해야 하기 때문에 처음에 러스트 문법에 대해 다루기는 하지만 기본적으로 이미 러스트 언어를 조금 알고 있다고 가정하고 진행된다. 애시당초 어떤 언어로 작성된 프로젝트를 러스트로 전환하려는 시도를 하려는 것부터 초보가 아니기 때문에 당연한 가정이다.&lt;/p&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;대상 독자 및 책 난이도&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 책은 러스트가 아닌 다른 언어로 애플리케이션을 다년간 개발한 경험이 있고 애플리케이션의 성능, 안전성, 유지 보수성을 개선할 방법을 찾고 있는 프로그래머를 대상으로 한다. 다른 언어라고는 했지만 주로 C/C++과 파이썬 언어를 중심으로 다룬다. 따라서 각 언어에 대한 기본적인 문법 설명은 없다고 보면 된다. 구조체(struct), 변수 선언이 어떻고, 함수는 어떻게 해야되는지 등등에 대한 설명이 없다는 의미다. 숙련된 프로그래머라면 대략적인 구조만 보고 문법이 비슷하니 대강 파악할 수 있을 것이다. 따라서 단순히 러스트를 익히고 싶은 주니어급 보단 어느 정도 개발 경험이 있는 시니어급 프로그래머가 대상 독자다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpUVPN/dJMcaaqShyX/6gfiwyI3yrNyARNzT2d4z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpUVPN/dJMcaaqShyX/6gfiwyI3yrNyARNzT2d4z0/img.png&quot; data-alt=&quot;Rust에서 소유권 개념을 시각화하여 설명&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpUVPN/dJMcaaqShyX/6gfiwyI3yrNyARNzT2d4z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpUVPN%2FdJMcaaqShyX%2F6gfiwyI3yrNyARNzT2d4z0%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;737&quot; height=&quot;543&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Rust에서 소유권 개념을 시각화하여 설명&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;위 이미지는 책에서 알려준 러스트의 소유권 개념을 시각화한 이미지다. 코드로 설명하는 것보다 훨씬 더 이해하기 쉽다. 이를 확실하게 이해하기 위해선 러스트 기본 문법을 하나도 몰라도 오른쪽에 적힌 코드가 대충 어떤 일을 하는지 알 수는 있어야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목1 끝--&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;!--소제목2 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;다루는 내용과 범위&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;크게 3파트로 나뉜다. 러스트에 대한 설명으로 1~2장을 시작하지만 이 부분은 건너뛴다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;3~4장에서 C/C++과 같은 정적 타입 언어를, 6~8장에서 파이썬과 같은 동적 타입 언어를, 9~10장에서 웹어셈블리를 통한 고급 러스트 활용법을 다룬다. 러스트 언어가 주력으로 밀고있는 특징은 메모리 안전성과 성능이다. 따라서 C/C++보다 메모리 안전성이 뛰어나니 이를 변환하는 방법, 파이썬보다 성능이 뛰어나니 이를 변환하는 방법으로 나뉜 것이다. 이를 위해 FFI와 PyO3를 사용한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;러스트 코드를 기존 애플리케이션에 통합되는 두 가지 주요 기술을 소개한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;프로그램에서 러스트 함수를 직접 호출하기(C FFI / PyO3 크레이트 활용)&lt;/li&gt;
&lt;li&gt;네트워크를 통한 러스트 서비스 통신&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;실습 환경은 리눅스 운영체제를 구동하는 컴퓨터 또는 가상머신으로 진행되는데, 윈도우나 맥에서 진행해도 상관없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목2 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게다가 전체적인 구조도 역시 그림으로 설명해주기 때문에 이해하기 편하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nanZC/dJMcaiCpxOR/EJL7hTOhEcIANguH8vjmok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nanZC/dJMcaiCpxOR/EJL7hTOhEcIANguH8vjmok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nanZC/dJMcaiCpxOR/EJL7hTOhEcIANguH8vjmok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnanZC%2FdJMcaiCpxOR%2FEJL7hTOhEcIANguH8vjmok%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;535&quot; height=&quot;573&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;535&quot; data-origin-height=&quot;573&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;!--마무리 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #698be2 2px solid; border-left: #FF0000 12px solid; border-bottom-color: #FF0000; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;RIIR 생각이 있지만 러스트에 대해 아는 것이 없다면 이 책을 적극 추천한다. 단순히 러스트 기본 서적을 보고 다시 작성하는 것보다 이 책을 통해 러스트 기본 개념을 익히고 어떻게 리팩토링 하면 되는지 알면 훨씬 더 수월하다. 다만 아쉬운 점은 C/C++에서 러스트로 갈아타는 이유가 메모리 안전성 때문이라고 하지만 이에 대한 내용이 조금 부족하다. 예를 들어 C/C++에서는 이런 코드를 작성하면 메모리 누수가 날 수 있지만 이걸 러스트로 바꾸면 바로 알 수 있다! 하는 부분은 없다. 단순히 C/C++ 코드를 러스트로 갈아탈 때 어떤 점을 주의해야 하는지에 초점을 맞추고 있다. 책에서 중점적으로 다루는 내용은 러스트로 전환하는 방법이기 때문에 이 이상 깊게 들어갈 필요는 없긴 하다. 어쨌든 정리하자면 러스트로 전환을 고민하는 프로그래머들보다는 러스트로 전환을 결정한 프로그래머들에게 꼭 필요한 책이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>서평/IT-책</category>
      <category>C/C++</category>
      <category>RIIR</category>
      <category>나는리뷰어다</category>
      <category>러스트</category>
      <category>러스트로갈아타기</category>
      <category>리뷰리뷰</category>
      <category>책리뷰</category>
      <category>파이썬</category>
      <category>한빛미디어</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/156</guid>
      <comments>https://molonlabe.tistory.com/156#entry156comment</comments>
      <pubDate>Mon, 2 Mar 2026 19:14:48 +0900</pubDate>
    </item>
    <item>
      <title>[책리뷰] 관성 끊기(Do One Thing Different)</title>
      <link>https://molonlabe.tistory.com/155</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;※ 이 서평은 터닝페이지 출판사로부터 책을 제공받아 작성되었습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[책리뷰]&amp;nbsp;관성&amp;nbsp;끊기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20260219_232842624.jpg&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FM55T/dJMcaaRP26l/bXW140soSPkgvWzrNyDfj0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FM55T/dJMcaaRP26l/bXW140soSPkgvWzrNyDfj0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FM55T/dJMcaaRP26l/bXW140soSPkgvWzrNyDfj0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFM55T%2FdJMcaaRP26l%2FbXW140soSPkgvWzrNyDfj0%2Fimg.jpg&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;480&quot; height=&quot;640&quot; data-filename=&quot;KakaoTalk_20260219_232842624.jpg&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;640&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;!--머릿말 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #0404B4 2px solid; border-left: #0404B4 12px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;전반적인 소감 및 마음에 드는 부분&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;사례가 굉장히 많다. 보통 이런 부류의 책은 대표적인 사례 1개만 가지고 마치 전체를 통달한 듯한 주장을 펼치는데, 이 책에서는 여러 사례들을 계속 소개한다. 그 덕분에 술술 읽게 된다. 사례는 무수히 많지만 결국 저자가 말하는 것은 동일하다. 해결 지향적 접근법으로 문제를 조금씩 천천히 하나하나 해결해나가자는 것이다. 물론 어떤 사례는 너무 과장된 것 아닌가 싶은 내용도 있다. 대표적으로 이 접근법으로 알레르기를 고쳤다는 내용도 있긴 하다. 저자가 말하는 해결 지향적 접근법의 요점을 다음과 같다.&lt;/p&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;그 중 바꿀 수 있는 일이 있다면 무엇이든 바꿀 것(아주 사소한 것이라도 뭐든지)&lt;/li&gt;
&lt;li&gt;일이 잘 풀렸을 때 했던 행동을 떠올리고 그것을 더 많이 반복할 것&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 반복되는 문제 속에서 아주 조금씩 해결할 수 있는 것들부터 하나씩 해결해나가자는 것이다.&lt;/p&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;대상 독자 및 책 난이도&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;매번 똑같은 결심을 하고 실패하거나, 똑같은 문제로 계속해서 고통받고 있는 사람들이 대상 독자다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;삶이 무기력해지고 내 삶에 조그마한 변화를 주고 싶다는 생각이 드는 사람들도 이 책이 도움이 될 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;위에서 말한대로 사례가 굉장히 많기 때문에 책은 금방 읽을 수 있으며 어려운 내용은 하나도 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목1 끝--&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;!--소제목2 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;다루는 내용과 범위&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;책 구성은 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;문제 대응 방식 바꾸기
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;패턴 깨기&lt;/li&gt;
&lt;li&gt;효과 있는 것 시도하기&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;문제를 바라보는 관점 바꾸기
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;과거와 감정에서 벗어나기&lt;/li&gt;
&lt;li&gt;주의 전환하기&lt;/li&gt;
&lt;li&gt;문제 해결을 위해 미래 이용하기&lt;/li&gt;
&lt;li&gt;문제적 신념을 해결 지향적 생각으로 바꾸기&lt;/li&gt;
&lt;li&gt;영성 이용하기&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;해결 지향적 접근법 구체적으로 적용하기
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;해결 지향적 관계&lt;/li&gt;
&lt;li&gt;해결 지향적 성생활&lt;/li&gt;
&lt;li&gt;풀리지 않은 일을 해결하고 문제 예방 의식 행하기&lt;/li&gt;
&lt;li&gt;해결 지향적 삶&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서 다루는 내용은 크게 보면 한 가지 주제로 동일하다. 반복되는 문제에 대해 하나씩, 조금씩 다르게 행동해서 해결해보자는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목2 끝--&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;!--마무리 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #698be2 2px solid; border-left: #FF0000 12px solid; border-bottom-color: #FF0000; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;책 제목이 아쉽다. 영문 제목은 Do one thing different로 '하나만 다르게 행동하라' 정도로 번역된다. 이 책의 내용과 가장 의미있는 국내 서적을 꼽으라면 이민규 교수님의 '1%만 바꿔도 인생이 달라진다'가 있겠다. 왜 '관성 끊기'라고 번역되었는지는 책을 읽다보면 이해하게 된다. '관성'이라하면 쉽게 말해 그대로 유지하려는 성질을 의미한다. 만약 어떤 문제로 오랫동안 고민하고 있거나 고통스러워할 때, 관성을 끊으라는 것이다. 즉 어떤 문제로 고민하거나 고통스러워 하는 그 행동 자체를 끊으라는 의미에서 '관성 끊기'가 나왔다고 생각한다. 이 말 자체가 책 내용 전체를 아우르는 말이긴 하다. 그러나 제목만 봐서는 한번에 어떤 내용인지 파악하기 힘들기 때문에 약간은 아쉽지 않나라는 생각을 해본다.&lt;/p&gt;</description>
      <category>서평/일반-책</category>
      <category>관성끊기</category>
      <category>리뷰리뷰</category>
      <category>빌오한론</category>
      <category>책리뷰</category>
      <category>터닝페이지</category>
      <category>행동변화</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/155</guid>
      <comments>https://molonlabe.tistory.com/155#entry155comment</comments>
      <pubDate>Fri, 20 Feb 2026 00:32:50 +0900</pubDate>
    </item>
    <item>
      <title>[책리뷰] 유니티와 OpenAI API로 만드는 인공지능 NPC</title>
      <link>https://molonlabe.tistory.com/154</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;※ 이 서평은 제이펍 출판사로부터 책을 제공받아 작성되었습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[책리뷰]&amp;nbsp;유니티와&amp;nbsp;OpenAI&amp;nbsp;API로&amp;nbsp;만드는&amp;nbsp;인공지능&amp;nbsp;NPC&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;유니티인공지능_표지.jpg&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sLM5w/dJMcabpw9dD/wXUukLnP3fDkZbcMFoZ1OK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sLM5w/dJMcabpw9dD/wXUukLnP3fDkZbcMFoZ1OK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sLM5w/dJMcabpw9dD/wXUukLnP3fDkZbcMFoZ1OK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsLM5w%2FdJMcabpw9dD%2FwXUukLnP3fDkZbcMFoZ1OK%2Fimg.jpg&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;480&quot; height=&quot;640&quot; data-filename=&quot;유니티인공지능_표지.jpg&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;640&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;!--머릿말 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #0404B4 2px solid; border-left: #0404B4 12px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;전반적인 소감 및 마음에 드는 부분&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;불과 몇년 전까지만 해도 유니티에 인공지능을 넣는다고 하면 하나하나 개발하는 형태를 떠올렸다. 예를 들어 &lt;a href=&quot;https://www.yes24.com/product/goods/27646103&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;유니티 게임 AI프로그래밍&lt;/a&gt; 책을 보면 유한 상태 기계 개념과 랜덤, 확률의 활용 방법, 센싱 기술의 구현 방식, 길 찾기 알고리즘 적용, 행동 트리의 활용, 퍼지 로직 등등 이런 것들을 전부 구현해야 했다. 그러나 이제는 OpenAI API 연동만으로 진짜 상호작용 하듯이 거의 모든 경우를 다룬다고 보면 되겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;책에서는 OpenAI API Key 토큰 비용에 기본 금액인 10달러를 세팅하고 사용하기를 권장하고 있다. 그러나 개인적으로는 이런 10달러조차 부담되고 어차피 API 사용 방법을 익히는 학습이 목적이기 때문에 그냥 무료 계정으로 제한된 상태에서 사용하는 것을 추천한다. &lt;a href=&quot;https://help.openai.com/en/articles/10306912-sharing-feedback-evaluation-and-fine-tuning-data-and-api-inputs-and-outputs-with-openai&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI의 정책에 따르면 일부 모델에 대해 API 사용 데이터를 학습 목적으로 공유할 경우, 매일 100만 개의 무료 토큰을 제공한다는 소식&lt;/a&gt;이 있다. 더 많은 토큰을 사용하고 싶다면 이용해보는 것도 좋아보인다. 물론 이런 정책들은 언제 어떻게 바뀔지 모르기 때문에 책에서 알려주기에는 부담이 너무 크니 제외된 것으로 보인다. 여담으로 100만토큰이면 문장을 구성하는 수에 따라 다르겠지만 한국어로 대충 2만 문장 정도라고 생각하면 편하다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;서평 쓸때마다 말하는거지만 쓸데없는 기본 문법 설명이나 인터페이스 설명이 없어서 굉장히 좋다. 예를 들어 굉장히 안 좋은 책들은 C# 기본 문법 설명과 유니티 기본 인터페이스 설명에 대충 50페이지 이상을 할애한다. 그러나 이 책에서는 그런 점 없이 깔끔하게 Unity와 OpenAI API 사용법에 대해 다룬다. 유니티 설치 방법도 4페이지로 끝난다. 이 얼마나 책 제목에 충실한 내용인가.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;중간중간 보충 설명해주는 지식 포션도 마음에 들었다. 그냥 넘어갈 수 있는 부분을 세심하게 알려주고 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;지식포션.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Im9WV/dJMcadgyxId/KoruLyKv2zPiTX5QglCv50/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Im9WV/dJMcadgyxId/KoruLyKv2zPiTX5QglCv50/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Im9WV/dJMcadgyxId/KoruLyKv2zPiTX5QglCv50/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIm9WV%2FdJMcadgyxId%2FKoruLyKv2zPiTX5QglCv50%2Fimg.jpg&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;640&quot; height=&quot;480&quot; data-filename=&quot;지식포션.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;대상 독자 및 책 난이도&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; 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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Unity 엔진의 기본적인 인터페이스와 기능에 대한 기본적인 이해&lt;/li&gt;
&lt;li&gt;Unity 엔진의 씬 구성, 게임 오브젝트 관리, UI 캔버스 제작등의 기초 지식&lt;/li&gt;
&lt;li&gt;C# 기초 문법에 대한 이해(변수, 함수, 클래스와 같은 기본적인 프로그램밍 개념)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Unity의 MonoBehaviour 클래스와 기본적인 이벤트 함수에 대한 지식&lt;/li&gt;
&lt;li&gt;API 기본 개념 및 API 토큰과 비용 개념, JSON 데이터 형식에 대한 이해&lt;/li&gt;
&lt;li&gt;https의 요청(request)과 응답(response)의 형태로 작동하는 웹 리퀘스트 데이터 통신 방법에 대한 이해&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;필요 사전 지식이 많은 것 같아보이지만 요약하자면 그냥 유니티를 써본 적이 있는 사람이어야 한다. 최소한 유니티를 설치하고 실행 시켜본 적이 있어야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;유니티_실행화면.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwehR5/dJMcac2ZdxV/uMFaw45GGiezo9MMvfFMv1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwehR5/dJMcac2ZdxV/uMFaw45GGiezo9MMvfFMv1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwehR5/dJMcac2ZdxV/uMFaw45GGiezo9MMvfFMv1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwehR5%2FdJMcac2ZdxV%2FuMFaw45GGiezo9MMvfFMv1%2Fimg.jpg&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;640&quot; height=&quot;480&quot; data-filename=&quot;유니티_실행화면.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목1 끝--&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;!--소제목2 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;다루는 내용과 범위&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;총 9장으로 일반적으로 생각하는 생성형 AI 기술을 Unity에 연동하여 인공지능 NPC를 구현하는 과정을 다룬다. 코드부터 실행, 결과 화면까지 자세하게 설명해주기 때문에 쉽게 따라할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;유니티인공지능_화면일부.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/opkf6/dJMcac2ZcC6/k3HXztKvujlN1DCpDiyD5K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/opkf6/dJMcac2ZcC6/k3HXztKvujlN1DCpDiyD5K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/opkf6/dJMcac2ZcC6/k3HXztKvujlN1DCpDiyD5K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fopkf6%2FdJMcac2ZcC6%2Fk3HXztKvujlN1DCpDiyD5K%2Fimg.jpg&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;800&quot; height=&quot;600&quot; data-filename=&quot;유니티인공지능_화면일부.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1장 : 최신 AI API 종류들 소개와 비교&lt;/li&gt;
&lt;li&gt;2장 : OpenAI 문장 생성 API를 Unity에 연동하고 챗봇 구현하는 방법&lt;/li&gt;
&lt;li&gt;3장 : 다국어 음성 인식 기능 연동&lt;/li&gt;
&lt;li&gt;4장 : OpenAI TTS(Text to Speech)와 구글 TTS API 연동 방법과 Unity에서 자연스러운 AI 음성 내레이션 구현 방법&lt;/li&gt;
&lt;li&gt;5장 : DALL-E API로 AI 이미지 생성과 Unity에서의 활용&lt;/li&gt;
&lt;li&gt;6장 : 립싱크 기술을 활용하여 자연스러운 얼굴 애니메이션 구현 방법&lt;/li&gt;
&lt;li&gt;7장 : 앞서 소개한 AI 기술들을 하나로 통합하여 자유롭게 소통하고 반응할 수 있는 인공지능 NPC 완성&lt;/li&gt;
&lt;li&gt;8장 : 프롬프트 엔지니어링을 통해 프롬프트를 좀 더 효율적으로 다루는 방법&lt;/li&gt;
&lt;li&gt;9장 : AI 기술과 Unity 미래 발전 방향 전망&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;개인적으로 7장이 가장 마음에 드는데, 단순히 OpenAI API 연동에서 끝나는 것이 아니라 다음 단계로 넘어가서 이렇게 활용하면 된다는 것을 보여주었기 때문이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목2 끝--&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;!--마무리 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #698be2 2px solid; border-left: #FF0000 12px solid; border-bottom-color: #FF0000; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;책에서도 언급되었듯이 시중에 chatGPT 활용 서적은 굉장히 많지만 OpenAI를 접목한 프로젝트를 다루는 책은 많지 않다. 그런 점에서 OpenAI API들을 접목한 프로젝트를 소개하는 이 책은 정말 좋았다. 게다가 인공지능 기술이 빠르게 발전된다고 하더라도 해당 모델을 가져다 어떤 제품을 만들어야 하는데, 아직까지는 이런 식으로 API 연동하는 방식이 바뀌지 않을거라 보인다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;현재까지 MMORPG 게임에서 NPC는 정해진 대사를 하고 정해진 물품을 팔아야 하는 형태였다. 앞으로는 NPC가 플레이어들과 상호 작용을 하고 정해진 물품이 아니라 현실에서처럼 사고 파는 물품들이 매번 바뀌고 퀘스트 형태로 실시간으로 바뀌고 NPC가 죽는 일도 발생할 수 있을 것이다. 소설로만 있었던 가상 현실 게임이 얼마 남지 않은 느낌도 들어서 앞으로의 게임들이 굉장히 기대된다. 이 책이 그런 게임을 만드려는 개발자들에게 도움이 되기에 유니티 개발자들에게 적극 추천한다.&lt;/p&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>서평/IT-책</category>
      <category>LEVELIT시리즈</category>
      <category>OpenAI</category>
      <category>Unity</category>
      <category>개발자책추천</category>
      <category>유니티</category>
      <category>인공지능</category>
      <category>제이펍</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/154</guid>
      <comments>https://molonlabe.tistory.com/154#entry154comment</comments>
      <pubDate>Sun, 1 Feb 2026 18:12:18 +0900</pubDate>
    </item>
    <item>
      <title>[책리뷰] 그림으로 이해하는 챗GPT 구조와 기술</title>
      <link>https://molonlabe.tistory.com/153</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[책리뷰]&amp;nbsp;그림으로&amp;nbsp;이해하는&amp;nbsp;챗GPT&amp;nbsp;구조와&amp;nbsp;기술&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; ※ 이 서평은 길벗출판사로부터 책을 제공받아 작성되었습니다. &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;KakaoTalk_20260101_185227894.jpg&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HgEo3/dJMcafZx47b/aF3FHkBeGlh5UOBBxYvRQ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HgEo3/dJMcafZx47b/aF3FHkBeGlh5UOBBxYvRQ0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HgEo3/dJMcafZx47b/aF3FHkBeGlh5UOBBxYvRQ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHgEo3%2FdJMcafZx47b%2FaF3FHkBeGlh5UOBBxYvRQ0%2Fimg.jpg&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;600&quot; height=&quot;800&quot; data-filename=&quot;KakaoTalk_20260101_185227894.jpg&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;800&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;!--머릿말 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #0404B4 2px solid; border-left: #0404B4 12px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;전반적인 소감 및 마음에 드는 부분&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;GPU 설명 부분이 마음에 들었다. CPU와 GPU 차이를 설명할 때 툭하면 엔비디아의 모나리자 그림 그리는 페인팅 영상을 갖고와서 마치 GPU가 CPU보다 좋은 것처럼 소개하는 부분이 짜증났다. 그러나 이 책에서는 왜 딥러닝에서 GPU가 사용되고 어떤 점에서 CPU보다 더 좋은지 명확하게 설명해준다. 그리고 엔비디아 CUDA 코어의 본래 목적인 그래픽 처리를 효율적으로 수행할 수 있도록 설계한다는 내용을 확실하게 알려주기 때문에 속이 다 시원했다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;LLM 모델을 설명할 때 전체 구조를 설명하는 그림 덕분에 이해하기 편했다. 책에서 소개하는 내용 그대로 그림으로 한눈에 이해하기 좋았다. 복잡한 수식도 없기 때문에 챗GPT가 이런 구조를 가지고 있고 이런 원리에 의해 동작되는구나를 이해하기 쉬웠다. 물론 이 책을 읽었다고 해서 챗GPT의 구조와 원리는 완벽하게 이해하고 파악했다고는 하기 어려울 수 있다. 그러나 주요 개념과 매커니즘은 확실하게 이해했다고 말할 수는 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;대상 독자 및 책 난이도&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;책 제목 그대로 챗GPT 구조와 원리에 대해 알고 싶은 독자들을 대상으로 한다. 자세하게 이해하려고 하지 않는다면 고등학교 수학 지식을 갖고 있는 정도가 적당하고 생각한다. 그렇지 않으면 최소한 머신러닝 기본 개념을 알고 있는 사람들에게 추천한다. 여기서 말한 머신러닝 기본 개념은 신경망, 선형대수학, 미적분 등을 의미한다. 적어도 벡터가 무엇인지는 알고 있으면 읽는데 불편함이 없을 것이다. 그렇지 않다고 하더라도 대충 이런 느낌이구나만 생각한다면 부담없이 읽을 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목1 끝--&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;!--소제목2 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;다루는 내용과 범위&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 책은 챗GPT의 높은 범용성을 가능하게 한 핵심 기술, 즉 대규모 언어 모델(LLM)의 구조와 원리에 대해 설명한다. 챗GPT를 사용해본 사람들은 많지만 GPT가 뭐에 약자인지 모르는 사람들이 대부분일거라 생각한다. Generative Pretrained Transformer의 약자로 트랜스포머의 디코더 부분을 이용하여 구축한 텍스트 생성 작업에 특화시킨 자기 회귀형 언어 모델이다. GPT를 비롯하여 현재 주류를 이루고 있는 대부분의 생성형 AI 모델들이 이 트랜스포머를 기반으로 한다. 따라서 이 책은 이 트랜스포머가 무엇인지 알기 위해 머신러닝 밑바닥부터 하나씩 차례대로 설명한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20260101_185227894_01.jpg&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cca0qk/dJMcah38vmu/5HqJRZTjJjQXwXIHsq2I91/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cca0qk/dJMcah38vmu/5HqJRZTjJjQXwXIHsq2I91/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cca0qk/dJMcah38vmu/5HqJRZTjJjQXwXIHsq2I91/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcca0qk%2FdJMcah38vmu%2F5HqJRZTjJjQXwXIHsq2I91%2Fimg.jpg&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;600&quot; height=&quot;800&quot; data-filename=&quot;KakaoTalk_20260101_185227894_01.jpg&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1장 챗GPT에서는 이 책에서 최종적으로 설명하고자 하는 챗GPT가 어떤 것이고 무엇이 가능한지 알려준다. 2장에서는 이런 것들이 가능한 이유가 인공지능 발달 덕분인데 그렇다면 인공지능이 무엇인지부터 어떻게 발전해 왔는지를 다룬다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;크게 보자면 1,2장은 챗GPT 구조와 원리 설명 관점에서 보자면 필요없는 챕터이긴 하다. 그래도 이미 알고있는 사람들에게는 요약 정리 느낌으로 훑어보면 되고 몰랐던 사람들에게는 핵심만 간추려 놓은 것이니 가볍게 보면 된다. 3장부터 본격적인 머신러닝 기본 개념이 등장하는데 너무 자세하게 이해하려고 할 필요는 없다. 대충 이런 느낌으로 인공지능이 계산되고 결과를 내놓는다만 알면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목2 끝--&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;!--마무리 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #698be2 2px solid; border-left: #FF0000 12px solid; border-bottom-color: #FF0000; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;챗GPT의 구조와 원리에 대해 쉽고 빠르게 이해하고 싶다면 이 책을 추천한다.&lt;/b&gt; 그러나 생성형 AI를 업무에 활용하거나 다른 기술에 접목해야 하는 독자라면 추천하지 않는다. 이 책은 말 그대로 챗GPT의 구조와 원리를 알려주는데 초점이 맞춰져있다. 책의 뒷편에는 AI의 성능과 정확도를 높이는 요소부터 응용 가능성과 활용 전망까지 폭넓게 고찰한다고 되어있지만 지나친 과장이라 생각한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;진짜 딱 챗GPT의 구조와 원리, 조금 더 나아가자면 현재 주류를 이루고 있는 대규모 언어모델(LLM)들의 구조와 원리에 대해 설명한 책이기 때문에 핵심 부분만 빠르게 알고 싶은 사람들에게 권장한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>서평/IT-책</category>
      <category>ChatGPT</category>
      <category>GPT</category>
      <category>그림으로이해하는챗GPT구조와기술</category>
      <category>길벗</category>
      <category>리뷰리뷰</category>
      <category>협찬</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/153</guid>
      <comments>https://molonlabe.tistory.com/153#entry153comment</comments>
      <pubDate>Thu, 1 Jan 2026 19:31:25 +0900</pubDate>
    </item>
    <item>
      <title>NeRF 학습을 위해 알아야 할 자료 정리</title>
      <link>https://molonlabe.tistory.com/152</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;논문 :&amp;nbsp;&lt;b&gt; &lt;a href=&quot;https://arxiv.org/abs/2003.08934&quot;&gt;[2003.08934] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis&lt;/a&gt; &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Githud : &lt;a href=&quot;https://github.com/bmild/nerf?tab=readme-ov-file&quot;&gt;GitHub - bmild/nerf: Code release for NeRF (Neural Radiance Fields)&lt;/a&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;NeRF : 신경 방사장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2차원 이미지의 부분적인 세트에서 복잡한 3차원 장면을 재구성할 수 있는 신경망&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 장면의 장면 지오메트리, 물체 및 각도를 학습한 후 새로운 관점에서 사실적인 3D 뷰를 렌더링하고&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;완전히 연결된 신경망 아키텍처인 다층 퍼셉트론(MLP)이라는 신경망 측면을 사용하여 3D 장면을 표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MLP는 신경망과 딥러닝의 파운데이션 모델로, 공간 좌표와 시야 방향을 색상 및 밀도 값에 매핑하도록 훈련&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MLP는 3D 공간에서의 위치 또는 2D 시야 방향과 같은 입력을 구성하는 일련의 수학적 구조를 사용하여,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3D 이미지에서 각 지점의 색상 및 밀도 값을 결정&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;NeRF 이해하기 위한 중요한 개념&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 카메라 파라미터를 기반으로 픽셀 광선 계산&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 원점과 방향을 사용하여 단일 광선을 따라 점 샘플링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 광선 색상과 알파값의 누적&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;확률 분포(Probability Distributions) : 광선에 따른 색상 및 밀도의 학률 분포를 학습하며, 계층적 샘플링(hierarchical sampling)기법에 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최적화 이론&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;광선 추적(Ray Tracing) : 카메라 원점에서 각 픽셀을 통해 3D 공간으로 광선을 쏘는 개념&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체적 렌더링(Volumetric Rendering) : 광선을 따라 샘플링된 점들의 색상과 밀도를 누적하여 최종 픽셀 색상을 결정하는 핵심 기술. 복셀 기반의 적분 개념을 포함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>인공지능/컴퓨터 비전</category>
      <category>nerf</category>
      <category>컴퓨터비전</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/152</guid>
      <comments>https://molonlabe.tistory.com/152#entry152comment</comments>
      <pubDate>Thu, 1 Jan 2026 17:12:26 +0900</pubDate>
    </item>
    <item>
      <title>레이 트레이싱 공부#001 - Ray Tracing in One Weekend</title>
      <link>https://molonlabe.tistory.com/151</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;레이 트레이싱 공부 - Ray Tracing in One Weekend&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원본 : &lt;a href=&quot;https://raytracing.github.io/books/RayTracingInOneWeekend.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://raytracing.github.io/books/RayTracingInOneWeekend.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;CoverRTW1-small.jpg&quot; data-origin-width=&quot;306&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQMTfT/dJMcabo3MOr/LkK92vwT7mzM5DimgGS8Nk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQMTfT/dJMcabo3MOr/LkK92vwT7mzM5DimgGS8Nk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQMTfT/dJMcabo3MOr/LkK92vwT7mzM5DimgGS8Nk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQMTfT%2FdJMcabo3MOr%2FLkK92vwT7mzM5DimgGS8Nk%2Fimg.jpg&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;306&quot; height=&quot;510&quot; data-filename=&quot;CoverRTW1-small.jpg&quot; data-origin-width=&quot;306&quot; data-origin-height=&quot;510&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;이 포스팅은 원본 Ray Tracing in One Weekend 글을 나름대로 번역하고 정리한 글입니다. 원본 글을 그대로 번역하지 않으니 원본 내용이 궁금하신 분들은 최상단 링크를 통해 보시면 되겠습니다. 먼저 레이트레이싱이 무엇인지 부터 살펴보고 넘어가겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;Ray Tracing&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Ray&lt;br /&gt;n. 광선, 선, 빛살&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Tracing&lt;br /&gt;n. 투사, 추적기, 추적법&lt;br /&gt;v (Trace). 추적하다, (추적하여)찾아내다&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목1 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영문 해석 그대로 광선 추적기, 즉 빛의 경로를 추적하는 것을 뜻합니다. 다시 말하면 컴퓨터 그래픽스 기술에서 조명 시뮬레이션입니다. 컴퓨터 그래픽스 기술에서 일반적으로 그림자나 명암을 표현하는 것은 그냥 그럴듯하게 나타냅니다. 무슨 말이냐면 마치 빛이 어느 지점에 있어서 그림자가 이렇게 생길거다 라고 가정하고 렌더링 합니다. 물론 최근에는 아닌 부분이 더 많습니다. 그러면 레이트레이싱이 뭐가 더 좋으냐면 더욱 사실적입니다. 그림자가 이렇게 생길거다라고 가정하는 것이 아니라 진짜로 빛을 쏴서 그림자나 명암을 표현합니다. 따라서 레이트레이싱 기술을 제대로 구현하면 거울, 유리, 강, 물 웅덩이, 금속 광택 등등 여러 표면의 미묘한 반사까지 사실적으로 표현할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 빛의 경로를 추적해서 계산해야 하기 때문에 어마어마한 연산량이 필요합니다. 그렇기 때문에 이를 실시간 렌더링을 하려면 CPU와 GPU가 받쳐주어야 합니다. 하지만 여기서는 레이트레이싱 구현 방법에 대해 공부할 볼 것이기 때문에 하드웨어 성능은 중요하지 않습니다. 그럼 시작해보죠&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;!--소제목2 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;1. 이미지 출력 - PPM 이미지 형식&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;PPM 이미지란 Portable Pixmap Format의 약자로 텍스트 기반의 간단한 비트맵 이미지 파일 형식입니다. 강좌에서 이 파일 포맷을 선택한 이유는 이미지 파일 형식이 너무 많아서라고 합니다. 어쨌든 우리는 레이트레이싱 작업 결과물을 눈으로 봐야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목2 끝--&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--마무리 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #698be2 2px solid; border-left: #FF0000 12px solid; border-bottom-color: #FF0000; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/컴퓨터 그래픽스</category>
      <category>컴퓨터그래픽스</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/151</guid>
      <comments>https://molonlabe.tistory.com/151#entry151comment</comments>
      <pubDate>Wed, 19 Nov 2025 23:59:42 +0900</pubDate>
    </item>
    <item>
      <title>[정리] 리얼 타임 렌더링(Real-Time Rendering, 4/e) 3장 - 그래픽 처리 장치</title>
      <link>https://molonlabe.tistory.com/150</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[정리] 리얼 타임 렌더링(Real-Time Rendering, 4/e) 3장 - 그래픽 처리 장치&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;metabeoseu-metaverse-eseo-gasang-hyeonsil-angyeong-eul-sayonghaneun-aenimeisyeon-kaeligteo.jpg&quot; data-origin-width=&quot;2320&quot; data-origin-height=&quot;3080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bonQPO/dJMcabicyf8/7kwsX47FbK7lIaKlbskYkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bonQPO/dJMcabicyf8/7kwsX47FbK7lIaKlbskYkk/img.png&quot; data-alt=&quot;https://kr.freepik.com/free-ai-image/anime-character-using-virtual-reality-glasses-metaverse_207687388.htm#fromView=search&amp;amp;amp;page=1&amp;amp;amp;position=2&amp;amp;amp;uuid=0f521947-05d4-4dcd-85e1-832dacca0165&amp;amp;amp;query=GPU+anime&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bonQPO/dJMcabicyf8/7kwsX47FbK7lIaKlbskYkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbonQPO%2FdJMcabicyf8%2F7kwsX47FbK7lIaKlbskYkk%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;480&quot; height=&quot;637&quot; data-filename=&quot;metabeoseu-metaverse-eseo-gasang-hyeonsil-angyeong-eul-sayonghaneun-aenimeisyeon-kaeligteo.jpg&quot; data-origin-width=&quot;2320&quot; data-origin-height=&quot;3080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://kr.freepik.com/free-ai-image/anime-character-using-virtual-reality-glasses-metaverse_207687388.htm#fromView=search&amp;amp;page=1&amp;amp;position=2&amp;amp;uuid=0f521947-05d4-4dcd-85e1-832dacca0165&amp;amp;query=GPU+anime&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 시작--&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;h3 style=&quot;box-sizing: border-box; margin-bottom: 5px; border-right-width: 0px; word-spacing: 3px; margin-top: 5px; border-bottom: #0404B4 2px solid; border-left: #0404B4 12px solid; letter-spacing: 1px; line-height: 1.5; border-top-width: 0px; margin-right: 0px; border-image: initial; padding: 3px 5px 3px 5px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;그래픽 처리 장치(Graphics Processing Unit)&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;CPU에 비해 전용 그래픽 하드웨어가 갖는 장점은 계산 속도가 빠르다는 것뿐이지만 속도 향상은 매우 중요하다.&lt;/li&gt;
&lt;li&gt;하드웨어 정점 처리를 포함하는 최초의 소비자용 그래픽 칩 : NVIDIA GeForce 256 (1999)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이전에 사용 가능한 래스터 및 전용 칩과 GeForce 256을 구별하고자 그래픽 처리 장치(GPU) 용어 만듬&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GPU는 고도로 병렬화활 수 있기 때문에 속도가 매우 빠르다.&lt;/li&gt;
&lt;li&gt;GPU에서 프로그래밍 가능한 쉐이더가 어떻게 병렬성을 갖는가를 아는 것이 중요&lt;/li&gt;
&lt;li&gt;모든 처리 장치가 당면하는 문제는 지연(Latency)
&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;지연에 대한 기본 개념은 처리할 정보가 처리 장치에서 멀어질수록 대기 시간이 길어지는 것&lt;/li&gt;
&lt;li&gt;메모리칩에 저장한 정보는 지역 레지스터에 저장한 것보다 접근 시간이 더 오래 걸림&lt;/li&gt;
&lt;li&gt;데이터 검색을 기다림으로 인해 처리 장치가 정지 대기(Stall)돼 성능이 떨어지는 것이 요점&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--머릿말 끝--&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;데이터 - 병렬 아키텍처&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GPU 칩 영역의 대부분은 수천 개의 쉐이더 코어라 하는 대규모 처리 장치 집합으로 구성&lt;/li&gt;
&lt;li&gt;GPU는 정렬된 유사한 데이터 집합을 차례대로 처리하는 스트림 프로세서(stream processor)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이러한 유사성(ex. 정점이나 픽셀 집합)으로 인해 대규모 병렬 방식으로 처리 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;프로세서들이 일찍 (계산이)끝나더라도 제일 늦은 프로세서가 끝날 때까지 대기하게 돼 성능 저하 원인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;데이터를 처리할 수 있는 최대 속도로 정의되는 처리량(Throughput)에 최적화
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;캐시 메모리와 제어 로직 전용 칩 영역이 적기 때문에 각 쉐이더 코어의 지연 시간은 CPU보다 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GPU는 연산 수행 논리를 데이터에서 분리&lt;/li&gt;
&lt;li&gt;2천 개의 프래그먼트를 현대 GPU로 전환하면 프래그먼트에 대한 각 픽셀 쉐이더 호출(invocation)은 스레드(thread)라 불림
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 스레드는 CPU 스레드와 다름&lt;/li&gt;
&lt;li&gt;쉐이더의 입력값에 대한 약간의 메모리와 쉐이더 실행에 필요한 레지스터 공간으로 이뤄짐&lt;/li&gt;
&lt;li&gt;동일 쉐이더 프로그램을 사용하는 스레드는 집합으로 묶임 : NVIDIA의 워프(warp), AMD의 웨이브프론트(wavefront)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;8 ~ 64개 사이 일정 수의 GPU 쉐이더 코어에서 실행돼 있으며, SIMD 처리를 사용&lt;/li&gt;
&lt;li&gt;워프의 실행은 단일 GPU 처리 장치의 예와 유사&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;각 스레드는 SIMD 레인(lane)에 할당&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;실행할 수 있는 2천 개의 스레드가 있다고 가정
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NVIDIA 워프는 32개 스레드를 가짐&lt;/li&gt;
&lt;li&gt;2000 / 32 = 62.5 워프이기 때문에 63개의 워프가 할당되고 63번째 워프는 절반이 빈 형태&lt;/li&gt;
&lt;li&gt;쉐이더 프로그램은 32개 처리 장치 모두가 락스텝(lock-step) 형태로 처리&lt;/li&gt;
&lt;li&gt;메모리 인출을 만나면 모든 스레드가 동시에 만나게 됨&lt;/li&gt;
&lt;li&gt;인출은 이 스레드 워프가 정지 대기할 것이라고 결과를 기다리는 모든 장치에 전달&lt;/li&gt;
&lt;li&gt;정지 대기 대신 워프는 다른 32개 스레드의 워프로 교체돼 32코어에서 실행
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 스레드 안의 데이터 워프를 변경시키지 않기 때문에 단일 처리 장치 시스템에서처럼 빠름&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;각 스레드는 각자의 레지스터를 가지며 각 워프는 실행되는 연산을 기록&lt;/li&gt;
&lt;li&gt;새 워프로 교체하는 것은 다른 스레드의 집합에서 코어의 집합으로 단순히 가리키는 것만이 바뀜(다른 부하 없음)&lt;/li&gt;
&lt;li&gt;워프는 모두 완료될 때까지 실행되거나 교체&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;워프-교체(warp-swapping)는 모든 GPU에서 사용되는 주된 지연 은닉(latency-hiding) 메커니즘&lt;/li&gt;
&lt;li&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;필요한 레지스터가 많을수록 더 적은 스레드, 즉 더 적은 워프가 GPU에 거주할 수 있음&lt;/li&gt;
&lt;li&gt;워프의 부족은 치환으로 완화시킬 수 없는 정지 대기를 의미&lt;/li&gt;
&lt;li&gt;거주하는 워프를 비행 중(in flight)이라고 하며, 그 수를 점유율(occupancy)이라고 함
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;높은 점유율은 처리를 위한 많은 워프가 가용하다는 것으로, 쉬는 처리 정치가 적을 가능성이 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;전체적인 효율성에 영향을 주는 다른 인자는 동적 분기(Dynamic branching)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;if 명령과 반복문으로 인해 발생
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일부 혹은 하나의 스레드가 if 명령에 의해 다른 경로를 타면 워프는 반드시 두 분기를 실행해야 함.&lt;br /&gt;이러면 각 특정 스레드에서 불필요한 결과를 버리는 문제가 발생하는 데 이것이 스레드 분산(thread divergence)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--소제목1 끝--&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;!--소제목2 시작--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;GPU 파이프라인 개요&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;렌더링 파이프라인의 GPU 구현 순서
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;버텍스 쉐이더&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;완전히 프로그래밍 가능한 단계&lt;/li&gt;
&lt;li&gt;지오메트리 구조 처리 단계를 구현하는 데 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;테셀레이션&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;지오메트리 쉐이더&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;완전히 프로그래밍 가능한 단계&lt;/li&gt;
&lt;li&gt;기본체(점, 선, 삼각형)의 정점 위에서 처리&lt;/li&gt;
&lt;li&gt;기본체 단위 음영 연산을 처리하고, 기본체를 소멸시키거나 새로운 것을 생성하는 데 사용&lt;/li&gt;
&lt;li&gt;테셀레이션, 지오메트리 둘 다 선택적이라 모든 GPU가 지원하지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;클리핑&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고정 함수 하드웨어에서 구현&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;화면 매핑&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;윈도우와 뷰 볼륨 설정에 영향 받음&lt;/li&gt;
&lt;li&gt;내부적으로는 단순한 크기 조절과 위치 재조정으로 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;삼각형 설정 &amp;amp; 탐색&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고정 함수 하드웨어에서 구현&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;픽셀 쉐이더&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;완전히 프로그래밍 가능한 단계&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;병합기&lt;/b&gt;&lt;br /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;프로그래밍 가능하지는 않지만 설정 가능&lt;/li&gt;
&lt;li&gt;넓은 범위의 연산을 처리하도록 설정할 수 있음&lt;/li&gt;
&lt;li&gt;Z버퍼, 혼합(Blend), 스텐실(Stencil), 다른 출력과 연관된 버퍼의 변경을 담당&lt;/li&gt;
&lt;li&gt;픽셀 쉐이더와 병합 단계가 함께 실행돼 픽셀 처리 단계를 형성&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&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;!--소제목2 끝--&gt;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;프로그래밍 가능한 쉐이더 단계&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!--마무리 시작--&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;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;내부적으로 동일한 명령 집합 구조(ISA, Istruction Set Architecture)&lt;/li&gt;
&lt;li&gt;버텍스 쉐이더와 픽셀 쉐이더 코어가 개별 풀을 가진 GPU는 이상적으로&lt;br /&gt;모든 코어를 바쁘게 유지하기 위한 작업 부포가 미리 지정돼 있음&lt;/li&gt;
&lt;li&gt;통합 쉐이더 코어로 GPU는 이 부하를 어떻게 조정할지 결정할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;쉐이더는 C언어와 비슷한 형태
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DirectX : HLSL(High-Level Shading Language)&lt;/li&gt;
&lt;li&gt;OpenGL : GLSL(opnGL Shading Language)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HLSL은 가상머신 바이트코드로 컴파일될 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;기본 데이터형은 32비트 단일 정밀도 부동소수점 스칼라와 벡터
&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;현대 GPU에서 32비트 정수와 64비트 부동소수점 역시 원천적으로 지원&lt;/li&gt;
&lt;li&gt;부동소수점 벡터는 위치, 법선 벡터는 행렬 행, 컬러, 텍스처 좌표 같은 데이터를 포함&lt;/li&gt;
&lt;li&gt;정수는 계수기(counters), 색인(indices), 비트마스크(bitmasks) 등을 표현하는 데 사용&lt;/li&gt;
&lt;li&gt;구조체, 배열, 행렬 같은 혼합 데이터형도 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그리기 호출(드로우콜, Draw call)은 기본체 집합을 그리는 그래픽 API를 호출해 파이프라인이 실행되고 쉐이더를 실행하게 함&lt;/li&gt;
&lt;li&gt;각 프로그래밍 가능한 쉐이더 단계는 입력의 2가지 형을 가짐
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;균일 입력(uniform input) : 드로우콜 동안 상수로 유지되는 값&lt;/li&gt;
&lt;li&gt;범용 입력(varying input) : 삼각형의 정점이나 래스터화에서 오는 데이터
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;텍스처는 특별한 종류의 균일 입력으로 한때 표면에 적용되는 컬러 이미지로만 사용됐으나&lt;br /&gt;이제는 임의의 데이터의 큰 배열로 간주&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;기본 가상 머신(underlying virtual machine)
&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;균일하게 하고자 사용할 수 있는 상수 레지스터(constant registers)의 수는&lt;br /&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;균일 입력은 한 번 저장되고 드로우콜의 모든 정점이나 픽셀에서 재사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;스크래치 공간(scratch space)에 사용되는 범용 임시 레지스터(temporary register)도 있음&lt;/li&gt;
&lt;li&gt;모든 유형의 레지스터는 임시 레지스터 안의 정수 값을 사용해 배열 색인을 할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그래픽 계산에서 공통적인 연산은 현대 GPU에서 효율적으로 실행
&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;나머지는 내재 함수로 공개돼 있으며 GPU에 최적화&lt;/li&gt;
&lt;li&gt;벡터 정규화나 반사, 외적, 행렬 전치와 행렬식 계산 등과 같은 더 복잡한 연산 함수도 있음&lt;/li&gt;
&lt;li&gt;쉐이더는 2가지 종류의 흐름 제어를 지원
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정적 흐름 제어(static flow control) : 코드 흐름이 드로우콜 안에서 고정적
&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;모든 호출(invocations)은 동일 코드 경로를 갖기에 스레드 분산(thread divergence)이 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;동적 흐름 제어(dynamic flow control) : 범용 입력의 값에 기반을 두며 각 프래그먼트가 코드를 다르게 실행
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정적 흐름 제어보다 훨씬 강력하지만 쉐이더 호출 사이에 코드 흐름이 비정상적으로 변경되는 경우&lt;br /&gt;성능 저하가 일어날 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;float: none; clear: none;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;프로그래밍 가능한 음영과 API의 진화&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NVIDIA의 GeForce 3 : 프로그래밍 가능한 버텍스 쉐이더를 지원한 최초의 GPU
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DirectX 8.0과 OpenGL Extension을 통해 공개&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;쉐이더 모델 2.0 (SM, Shader Model)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DirectX에서 다른 쉐이더 능력을 가진 하드웨어 사이를 구분하고자 도입한 개념&lt;/li&gt;
&lt;li&gt;진정한 프로그래밍 가능한 버텍스와 픽셀 쉐이더&lt;/li&gt;
&lt;li&gt;비슷한 기능성이 OpenGL에서 다양한 확장을 통해 공개&lt;/li&gt;
&lt;li&gt;쉐이더에서 흐름 제어 허용 및 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;쉐이더 모델 3.0
&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;버텍스 쉐이더에서 텍스처 읽기 지원 추가&lt;/li&gt;
&lt;li&gt;추가 기능 요구 사항을 반영해 더욱 더 증가된 자원 지원 추가&lt;/li&gt;
&lt;li&gt;XBOX 360, 플레이스테이션3 게임 콘솔에 쉐이더 모델 3.0 수준의 GPU 장착&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;쉐이더 모델 4.0
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DirectX 10.0에서 포함&lt;/li&gt;
&lt;li&gt;지오메트리 쉐이더와 스트림 출력 등 주요한 여러 기능이 도입&lt;/li&gt;
&lt;li&gt;모든 쉐이더(버텍스, 픽셀, 지오메트리)에 대한 균일 프로그래밍 모델을 포함하며 통합 쉐이더 설계 방식으로 구성&lt;/li&gt;
&lt;li&gt;정수 데이터형의 지원(비트 연산 포함)&lt;/li&gt;
&lt;li&gt;OpenGL 3.3에서 GLSL 3.30의 도입 역시 비슷한 쉐이더 모델을 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;쉐이더 모델 5.0
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DirectX 11과 함께 테셀레이션 단계쉐이더와 컴퓨트 쉐이더 추가&lt;/li&gt;
&lt;li&gt;CPU 멀티프로세싱을 더 효과적으로 사용 가능&lt;/li&gt;
&lt;li&gt;OpenGL 4.0부터 테셀레이션 추가, 4.3부터 컴퓨트 쉐이더 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2013년 AMD의 Mantle API
&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;리팩토링과 동시에 효과적인 CPU 멀티프로세싱을 지원
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CPU가 드라이버에서 사용하는 시간을 엄청나게 감소&lt;/li&gt;
&lt;li&gt;좀 더 효과적인 CPU 다중 프로세서 지원에 집중하게 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2015년에 마이크로소프트가 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;이 API 개념을 채용해&lt;span&gt; DirectX 12에 적용&lt;/span&gt;&lt;/span&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;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;새 GPU 기능성을 공개하지는 않았고 DirectX 11.3과 동일 하드웨어 기능을 제공&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;최신 GPU 아키텍처에 더 잘 매핑되는 근본적인 API의 재설계&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;애플은 Metal이라 불리는 자체 저부하 API를 2014년에 공개&lt;/span&gt;&lt;/span&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;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;iPhone 5S, iPad Air 같은 모바일 장치에서 먼저 사용&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;1년 후 OS X El Capitan을 통해 새로운 매킨토시에서 사용 가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;효율성을 넘어서 CPU 사용을 감소시키는 것은 전력을 절약할 수 있는 것으로 모바일 장치에서 중요&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;이 API는 고유의 쉐이딩 언어를 가지며 그래픽과 GPU 계산 프로그램 모두 사용&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;2016년, AMD는 Mantle 작업을 크로노스 그룹에 기부했으며 Vulkan이라는 자체 API를 공개&lt;/span&gt;&lt;/span&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;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;OpenGL과 같이 여러 운영체제에서 작동&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;쉐이더와 일반 GPU 계산에서 둘 다 사용 가능한 새로운 고수준 중간 언어인 SPIR-V를 사용&lt;/span&gt;&lt;/span&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;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;미리 컴파일된 쉐이더는 무겁지 않으며 필요한 기능을 지원하는 어떤 GPU에서든 사용 가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;디스플레이 윈도우가 필요하지 않는 그래픽이 아닌 GPU 계산에서 사용 가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;다른 부하가 적은 드라이버와의 차이는 Vulkan이 워크스테이션부터 모바일 장치까지 지원한다는 점&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;모바일 장치에서는 표준적으로 OpenGL ES를 사용&lt;/span&gt;&lt;/span&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;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;ES(Embedded System)의 약어이며 API 자체가 모바일 장치를 고려해서 개발&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;OpenGL ES 3.0은 2012년에 공개&lt;/span&gt;&lt;/span&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;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;다중 렌더 타겟, 텍스처 압축, 변환 피드백, 인스턴싱 및 훨씬 더 다양한 텍스처 포맷과 방식을 지원&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;OpenGL ES 3.1에서 컴퓨트 쉐이더 추가&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;OpenGL ES 3.2에서 다른 기능과 함께 지오메트리 쉐이더와 테셀레이션 쉐이더 추가&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;OpenGL ES에서 파생된 브라우저 기반 API인 WebGL은 자바스크립트로 호출&lt;/span&gt;&lt;/span&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;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;2011년에 공개된 뒤에 대부분의 모바일 장치에서 사용 가능했으며 OpenGL Es 2.0에 비해 기능적으로도 동일&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;WebGL 2는 OpenGL ES 3.0 지원을 가정&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;크로스 플랫폼이라 모든 PC와 거의 대부분의 모바일 장치에서 동작&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;드라이버 승인이 브라우저에 의해 처리.&lt;br /&gt;심지어 한 브라우저가 특정 GPU나 확장을 지원하지 않아도 다른 브라우저가 지원&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;코드는 컴파일되지 않고 해석(interpret)되며, 단지 텍스처 에디터만이 개발에 필요&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;디버거(Debugger)가 대부분의 브라우저에 내장돼 있으며, 어떤 웹 사이트에서 실행되는 코드든 디버깅 가능&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;프로그램은 웹 사이트나 깃허브에 올려 제공될 수 있음&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;버텍스 쉐이더&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&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 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;테셀레이션 단계&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&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 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;지오메트리 쉐이더&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&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 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;픽셀 쉐이더&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&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 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;병합 단계&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&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 style=&quot;box-sizing: border-box; font-family: Arial, 돋움, Dotum, AppleGothic, sans-serif; border-width: 0px 0px 2px 10px; word-spacing: 3px; border-bottom-style: solid; border-bottom-color: #cccccc; padding: 3px 5px; border-left-style: solid; border-left-color: #55555b; margin: 5px 0px; letter-spacing: 1px; line-height: 1.5; border-image: initial;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #5d5d5d;&quot;&gt;&lt;span style=&quot;font-size: 21px;&quot;&gt;&lt;b&gt;컴퓨트 쉐이더&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;</description>
      <category>프로그래밍/컴퓨터 그래픽스</category>
      <category>GPU</category>
      <category>리얼타임렌더링</category>
      <category>컴퓨터그래픽스</category>
      <author>크썸</author>
      <guid isPermaLink="true">https://molonlabe.tistory.com/150</guid>
      <comments>https://molonlabe.tistory.com/150#entry150comment</comments>
      <pubDate>Wed, 5 Nov 2025 02:00:16 +0900</pubDate>
    </item>
  </channel>
</rss>