<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>50's 개발 잡동사니</title>
    <link>https://kansm.tistory.com/</link>
    <description>50대 개발자의 잡동사니 코드와 팁을 적어보려 합니다.</description>
    <language>ko</language>
    <pubDate>Tue, 19 May 2026 13:07:42 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>라이언 칸</managingEditor>
    <image>
      <title>50's 개발 잡동사니</title>
      <url>https://tistory1.daumcdn.net/tistory/7675454/attach/92c858378ef5497396e8e867a588fa6c</url>
      <link>https://kansm.tistory.com</link>
    </image>
    <item>
      <title>6만 명이 몰린 '모두의 창업' - 1차 마감, 2차 준비할 것들은?</title>
      <link>https://kansm.tistory.com/32</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;저번주에 중소벤처기업부에서 주관하는 &quot;모두의 창업&quot; 1차가 마감이 되었습니다. 저도 역시 지원하면서 다들 분들이 관심이 많으실거 같아서 정리해 보았습니다.&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;/span&gt;&lt;/b&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-filename=&quot;993.png&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsNfji/dJMcabYzniu/iXKWsEKQt4KREMEJ2Wl2Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsNfji/dJMcabYzniu/iXKWsEKQt4KREMEJ2Wl2Q1/img.png&quot; data-alt=&quot;모두의 창업&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsNfji/dJMcabYzniu/iXKWsEKQt4KREMEJ2Wl2Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsNfji%2FdJMcabYzniu%2FiXKWsEKQt4KREMEJ2Wl2Q1%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;648&quot; height=&quot;336&quot; data-filename=&quot;993.png&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모두의 창업&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&quot;역대 정부 공모전 최다 신청&quot; &amp;mdash; 무슨 일이 벌어졌나&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 5월 15일, 중소벤처기업부의 신사업 '모두의 창업' 1차 모집이 마감됐습니다. 결과는 예상을 한참 뛰어넘었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 도전자는 &lt;b&gt;6만 2,944명&lt;/b&gt;으로, 역대 정부 공모전 최다 신청 기록을 갈아치웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마감 당일 풍경이 그 분위기를 잘 말해줍니다. 접수 시작 27일 만에 1만 명을 넘었고, 이후 10일 간격으로 1만 명씩 늘었습니다. 그러다 마감일인 15일 하루에만 5만 명과 6만 명을 연거푸 돌파했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마감 직전에는 동시 접속자가 폭주해 시스템 오류가 발생하면서, 중기부가 오후 4시였던 마감 시간을 4시간이나 연장하는 일까지 벌어졌습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지원자 구성도 흥미롭습니다. &lt;b&gt;20대가 33.2%로 가장 많았고&lt;/b&gt;, 30대(25.7%), 40대(18.4%)가 뒤를 이었습니다. 10대 이하 지원자도 9%를 넘었습니다. 사실상 전 세대가 뛰어든 셈입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;그래서 '모두의 창업'이 정확히 무엇일까요?&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&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;가장 큰 특징은 &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;별도 제출 서류가 없습니다 &amp;mdash; 온라인 도전신청서 하나만 내면 됩니다&lt;/li&gt;
&lt;li&gt;네이버&amp;middot;카카오 간편로그인으로 회원가입하고, 본인인증 후 제출하면 됩니다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 사업계획서와 재무계획을 요구하는 기존 창업지원사업과는 결이 완전히 다릅니다. &quot;일단 아이디어로 부딪혀 보라&quot;는 설계입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진행 방식은 &lt;b&gt;토너먼트형 오디션&lt;/b&gt;입니다. 지역 &amp;rarr; 권역 &amp;rarr; 전국으로 라운드가 올라가고, 합격자만 다음 단계로 진출합니다. 그리고 올라갈수록 지원 규모가 계단식으로 커집니다. 떨어지는 것이 끝이 아니라, 멘토가 아이디어 보완 의견을 달아주고 재도전을 장려하는 구조라는 점도 눈여겨볼 만합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;두 개의 트랙 &amp;mdash; 나는 어디에 속할까요&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신청할 때는 두 트랙 중 &lt;b&gt;딱 하나만&lt;/b&gt; 골라야 합니다. 한 아이디어를 두 트랙에 동시 지원할 수 없습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;일반/기술 트랙 (총 4라운드)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혁신적 발상이나 기술을 활용해 새로운 가치를 만드는 아이디어입니다. &quot;전 세계 어디서나 통할 아이템&quot;이라면 이쪽입니다.&lt;/p&gt;
&lt;div&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&gt;아이디어 심사 통과&lt;/td&gt;
&lt;td&gt;창업활동자금 200만원 + 범용 AI 솔루션(월 최대 100만원, 2개월) + 1:1 책임멘토링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1라운드 (지역 예선)&lt;/td&gt;
&lt;td&gt;시제품 제작비 최대 1,000만원 + 기술멘토링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2라운드 (지역 오디션)&lt;/td&gt;
&lt;td&gt;시제품 제작비 최대 1,000만원 + 선배멘토링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3라운드 (권역 오디션)&lt;/td&gt;
&lt;td&gt;차년도 사업화자금 최대 1억원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;전국 오디션 (TOP)&lt;/td&gt;
&lt;td&gt;우승 상금, 글로벌&amp;middot;투자 연계, 사업화 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;로컬 트랙 (총 3라운드)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지역에 뿌리내린 가치와 자원을 활용한 아이디어입니다. 예비창업자만 신청 가능합니다.&lt;/p&gt;
&lt;div&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&gt;아이디어 심사 통과&lt;/td&gt;
&lt;td&gt;창업활동자금 200만원 + 그룹멘토링 + 창업 기초교육&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1라운드 (권역 오디션)&lt;/td&gt;
&lt;td&gt;시제품 제작비 최대 3,000만원 + 1:1 맞춤 멘토링 + 보육공간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2라운드 (전국 예선)&lt;/td&gt;
&lt;td&gt;1:1 맞춤 멘토링 + 보육공간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3라운드 (전국 오디션)&lt;/td&gt;
&lt;td&gt;최종 우승자 상금 + 후속 사업화 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체적으로 보면 &lt;b&gt;200만원에서 시작해 최종 단계에서는 수억 원대 상금과 투자 연계&lt;/b&gt;까지 이어지는, 정부가 만든 가장 큰 '창업 사다리'입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;AI에 관심 있으시다면 더 주목하셔야 하는 이유&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 사업에서 AI는 곁다리가 아니라 핵심 축입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;첫째, AI 솔루션을 직접 지원합니다.&lt;/b&gt; 아이디어 심사를 통과하면 범용 AI 솔루션을 월 최대 100만원어치(2개월) 제공합니다. 게다가 1차 선발자가 쓸 AI 솔루션은 국내 스타트업이 개발한 것으로 채우기로 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;둘째, GPU까지 지원합니다.&lt;/b&gt; 권역 오디션을 통과한 200명의 AI 창업가에게는 고성능 GPU(B200 모델) 30장을 활용할 수 있게 지원합니다. AI 모델을 직접 다뤄야 하는 창업가에게 인프라 비용은 큰 벽인데, 이 부분을 정부가 메워주는 셈입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;셋째, 실제로 AI 창업가가 몰리고 있습니다.&lt;/b&gt; 신속 심사로 먼저 뽑힌 1차 합격자 438명 중 &lt;b&gt;AI 기술을 아이디어에 접목하겠다는 비율이 40%&lt;/b&gt;에 달했습니다. AI 활용 아이디어가 환영받는 분위기라는 신호입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 토스 이승건 대표, 뤼튼 이세영 대표 같은 유명 창업가들이 멘토로 참여합니다. 단순 자문이 아니라 2개월간 최소 4회 1:1 멘토링으로 아이디어를 구체화하도록 설계됐습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;핵심: 1차는 끝났습니다. 하지만 2차가 더 큽니다&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;이미 마감됐으면 끝난 것 아닌가?&quot; 싶으실 텐데, 그렇지 않습니다. &lt;b&gt;진짜 기회는 오히려 지금부터입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중기부는 추가경정예산 약 &lt;b&gt;2,000억원&lt;/b&gt;을 별도로 투입해 &lt;b&gt;6월 중순부터 2차 모집&lt;/b&gt;을 시작합니다. 2차는 1차보다 모든 면에서 규모가 큽니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① 선발 인원이 2배로 &amp;mdash; 5,000명 &amp;rarr; 1만 명&lt;/b&gt; 1차보다 두 배 많은 인원을 뽑습니다. 보육기관도 180여 곳에서 200여 곳으로 늘립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② 자격 요건이 대폭 완화 &amp;mdash; 업력 3년 &amp;rarr; 7년&lt;/b&gt; 1차에서는 일반/기술 트랙이 '예비창업자 또는 창업 3년 이내'로 제한됐습니다. 2차에서는 이를 &lt;b&gt;업력 7년 이내&lt;/b&gt;까지 확대합니다. 이미 사업을 시작한 지 몇 년 된 창업자에게도 문이 열린다는 의미입니다. 한성숙 중기부 장관이 직접 토크콘서트에서 밝힌 내용입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ 1차 탈락자는 우대&lt;/b&gt; 1차에서 떨어진 지원자가 멘토 피드백을 반영해 아이디어를 보완하면, 2차에서 우대받습니다. 1차 도전 자체가 헛수고가 아닌 셈입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;참고:&lt;/b&gt; 2차 모집을 처음 접하시는 분들이 &quot;1차 통과자만 지원할 수 있는 것 아니냐&quot;고 오해하시는 경우가 많은데, 그렇지 않습니다. 2차는 1차와 별개로 진행되는 새로운 모집입니다. &lt;b&gt;1차에 지원하지 않았던 분, 1차 탈락자, 기존 창업자(업력 7년 이내)&lt;/b&gt; 모두 새로 도전하실 수 있습니다. 1차 통과자는 이미 1차 프로그램(라운드)을 진행 중이므로 2차에 다시 지원할 필요가 없는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;일정 안내:&lt;/b&gt; 2차 모집의 정확한 일정은 &quot;6월 중순&quot; 또는 &quot;6월 말~7월 초&quot;로 보도마다 약간 차이가 있습니다. 아직 공식 공고 전이므로, 6월 들어 &lt;a href=&quot;https://www.modoo.or.kr&quot;&gt;모두의 창업 공식 사이트&lt;/a&gt;와 기업마당(bizinfo.go.kr)을 직접 확인하시는 것이 안전합니다.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt; 2차 모집에 대한 내용은 공식 모집공고로 배포된 정보가 아니라 중소벤처기업부의 브리핑&amp;middot;보도자료에 근거한 것&lt;/b&gt;입니다. 따라서 선발 규모, 자격 요건, 일정 등 세부 사항은 추후 변경될 수 있으니, 실제 신청 전 &lt;a href=&quot;https://www.modoo.or.kr&quot;&gt;모두의 창업 공식 홈페이지&lt;/a&gt;와 기업마당(bizinfo.go.kr)의 정식 공고를 반드시 확인하시기 바랍니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;2차를 노리신다면, 지금 해두실 일&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p 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;b&gt;modoo.or.kr에 미리 회원가입하기&lt;/b&gt; &amp;mdash; 마감일에는 접속 폭주로 사이트가 느려집니다. 1차 때도 그랬습니다. 미리 계정을 만들어 두시는 것이 좋습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;트랙을 먼저 정하기&lt;/b&gt; &amp;mdash; 일반/기술이냐 로컬이냐에 따라 평가 기준 자체가 다릅니다. 한 번 정하면 변경이 안 되므로 신중하게 선택하셔야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;아이디어를 '한 줄'로 정리하기&lt;/b&gt; &amp;mdash; 고객&amp;middot;문제&amp;middot;해결방식&amp;middot;결과, 이 네 가지가 한 문장에 담기도록 다듬어 두세요. 신청서의 핵심입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AI를 접목할 지점 찾기&lt;/b&gt; &amp;mdash; 꼭 'AI 회사'일 필요는 없습니다. 기존 아이디어에 AI를 어떻게 얹을지 한 줄이라도 넣으면 경쟁력이 올라갑니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;(선택) 설명 이미지&amp;middot;숏폼 영상 준비하기&lt;/b&gt; &amp;mdash; 신청서에 아이디어 설명 이미지(5장 이내)나 30~60초 숏폼 영상을 첨부할 수 있습니다. 필수는 아니지만 전달력을 높여줍니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;마치며&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'모두의 창업'은 &quot;사업자등록도, 거창한 사업계획서도 없이 아이디어 하나로 시작해 보라&quot;는 실험적인 시도입니다. 1차에 6만 명이 몰렸다는 것은 그만큼 창업을 망설이던 분들이 많았다는 뜻이기도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 AI 솔루션&amp;middot;GPU 지원, 유명 창업가 멘토링까지 더해진 점은 AI 기반 아이디어를 가진 분에게 흔치 않은 기회입니다. 1차를 놓치셨더라도 6월 2차 모집은 인원도 두 배, 자격도 더 넓습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머릿속에만 있던 아이디어가 있으시다면, 지금이 그것을 한 줄로 적어보실 때입니다.&lt;/p&gt;</description>
      <category>창업 &amp;amp; 사업</category>
      <category>2026창업</category>
      <category>ai창업</category>
      <category>모두의창업</category>
      <category>모두의창업2차모집</category>
      <category>스타트업</category>
      <category>예비창업자</category>
      <category>정부창업지원</category>
      <category>중소벤처기업부</category>
      <category>창업오디션</category>
      <category>창업지원금</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/32</guid>
      <comments>https://kansm.tistory.com/32#entry32comment</comments>
      <pubDate>Mon, 18 May 2026 14:58:13 +0900</pubDate>
    </item>
    <item>
      <title>2026년 구글 클라우드 스터디 잼 시작되었습니다. 4월 1일(수)까지</title>
      <link>https://kansm.tistory.com/31</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;작년에 이어 올해도 구글 클라우드 스터디 잼 접수가 시작되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;접수 기간은 &lt;span style=&quot;color: #212121; text-align: left;&quot;&gt;4월 1&lt;/span&gt;&lt;span style=&quot;color: #212121; text-align: left;&quot;&gt;일(&lt;/span&gt;&lt;span style=&quot;color: #212121; text-align: left;&quot;&gt;수&lt;/span&gt;&lt;span style=&quot;color: #212121; text-align: left;&quot;&gt;)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212121; text-align: left;&quot;&gt;오전 10시까지이며, 6월 1일까지 종료하면 됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&lt;span style=&quot;color: #212121; text-align: left;&quot;&gt;작년에 참여하고 후기 작성한 글을 참조하시면 어떤 형태로 진행되는지 아실수 있을겁니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #212121;&quot;&gt;&lt;span style=&quot;color: #212121; text-align: left;&quot;&gt;&lt;a href=&quot;https://kansm.tistory.com/18&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kansm.tistory.com/18&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1774498238339&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;구글 AI Study Jam 2025 두달간의 후기&quot; data-og-description=&quot;이번에 구글 AI Study Jam 2025에 참여해서 두달동안 열심히 활동한 후기를 남겨보려고 합니다.이전에도 몇번 들어보기는 했는데, study jam이라고 하니 취준생이나 초보분들이나 하는 것으로 생각하&quot; data-og-host=&quot;kansm.tistory.com&quot; data-og-source-url=&quot;https://kansm.tistory.com/18&quot; data-og-url=&quot;https://kansm.tistory.com/18&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cs91U8/dJMb8XR5lhg/POHQKC5ARYa3pQkiZjgElK/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/jymz5/dJMb8XR5lhh/kKvER4N4IySryKMRRZUg6k/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/bj2i4q/dJMb8T9Y9Ly/RVydcKyGDHbbFk0jQRCMb1/img.png?width=1815&amp;amp;height=1118&amp;amp;face=0_0_1815_1118&quot;&gt;&lt;a href=&quot;https://kansm.tistory.com/18&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kansm.tistory.com/18&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cs91U8/dJMb8XR5lhg/POHQKC5ARYa3pQkiZjgElK/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/jymz5/dJMb8XR5lhh/kKvER4N4IySryKMRRZUg6k/img.png?width=800&amp;amp;height=533&amp;amp;face=0_0_800_533,https://scrap.kakaocdn.net/dn/bj2i4q/dJMb8T9Y9Ly/RVydcKyGDHbbFk0jQRCMb1/img.png?width=1815&amp;amp;height=1118&amp;amp;face=0_0_1815_1118');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;구글 AI Study Jam 2025 두달간의 후기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번에 구글 AI Study Jam 2025에 참여해서 두달동안 열심히 활동한 후기를 남겨보려고 합니다.이전에도 몇번 들어보기는 했는데, study jam이라고 하니 취준생이나 초보분들이나 하는 것으로 생각하&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kansm.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;710.png&quot; data-origin-width=&quot;1255&quot; data-origin-height=&quot;870&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nDMnC/dJMcacWNA3E/caRS7OCo3OVF4ReCkAIeY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nDMnC/dJMcacWNA3E/caRS7OCo3OVF4ReCkAIeY0/img.png&quot; data-alt=&quot;작년에 수료하고 받은 기념품. 퀄리티는 너무 기대하지 마시고요.. ㅎㅎ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nDMnC/dJMcacWNA3E/caRS7OCo3OVF4ReCkAIeY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnDMnC%2FdJMcacWNA3E%2FcaRS7OCo3OVF4ReCkAIeY0%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;1255&quot; height=&quot;870&quot; data-filename=&quot;710.png&quot; data-origin-width=&quot;1255&quot; data-origin-height=&quot;870&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;작년에 수료하고 받은 기념품. 퀄리티는 너무 기대하지 마시고요.. ㅎㅎ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Google Study Jam이란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;Google Study Jam은 구글이 주최하는 온라인 학습 프로그램&lt;/b&gt;으로, 개발자와 IT 종사자들이 Google Cloud Platform(GCP), 인공지능(AI), 머신러닝(ML), 쿠버네티스(Kubernetes) 등 양한 분야의 강의와 실습을 제공하고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참가자들은 온라인으로 강의를 듣고, 실습 과제를 수행하며 &lt;span&gt;자가 학습을 통해 클라우드 기술을 익히고, 관련 실습을 수행해야 하며, 디지털 뱃지와 수료 기념품을 받을 수 있게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;709.png&quot; data-origin-width=&quot;899&quot; data-origin-height=&quot;567&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pJref/dJMcaaLs8DP/3XTHhJMlEk5DMObkYWjqp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pJref/dJMcaaLs8DP/3XTHhJMlEk5DMObkYWjqp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pJref/dJMcaaLs8DP/3XTHhJMlEk5DMObkYWjqp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpJref%2FdJMcaaLs8DP%2F3XTHhJMlEk5DMObkYWjqp0%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;899&quot; height=&quot;567&quot; data-filename=&quot;709.png&quot; data-origin-width=&quot;899&quot; data-origin-height=&quot;567&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;작년에 AI 있고, 올해는 Cloud여도 차이는 없을겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단히 GCP(google console platform)나 gemini, vertex AI, notebook등 구글에서 지원하는 모든 것을 크래딧을 받고 두달동안 공짜로 시용할수 있으며, 이론뿐 아니라.. 직접 실습도 가능하다는 것이 제일 큰 장점입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요새 agent가 뜨고 있는데, 아마 agent 기능도 사용 가능할거라 생각이 됩니다.(이건 정확치 않습니다.)&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;4월 1일까지이니 얼른 지원해서 참여해 보세요. 참여하면 누구나 사용이 가능하지만..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝까지 가서 종료하시는 분은 얼마 안되는 것을 기억합니다. 물론 끝까지 갈 필요는 없기는 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사은품 받으려면 특정 과정을 수료해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한 것은 위의 작년 참여 후기를 읽어 보세요. 자세히 기술해 두었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(작년에서는 3600명인가 4천명인가 지원한 것으로 알고 있으며, 마지막까지 수료한 분들은 백여명정도 일것으로 기억합니다.)&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;a href=&quot;https://sites.google.com/view/2026-study-jams/h1-study-jam&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://sites.google.com/view/2026-study-jams/h1-study-jam&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1774498639012&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2026 구글 클라우드 스터디잼 - H1-Study-Jam&quot; data-og-description=&quot;구글 클라우드 스터디 잼 (4/1-6/1) AI, Data, Cloud를 무료로 배우고 구글 한정판 굿즈를 획득하세요!&quot; data-og-host=&quot;sites.google.com&quot; data-og-source-url=&quot;https://sites.google.com/view/2026-study-jams/h1-study-jam&quot; data-og-url=&quot;https://sites.google.com/view/2026-study-jams/h1-study-jam&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tVGDG/dJMb85vOCVN/bhCOTwWHV3BTXnDPXonm3k/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/cl0Z9P/dJMb83ksz6d/yWeiTZ8nPFiQJht6FyB9oK/img.png?width=1126&amp;amp;height=677&amp;amp;face=0_0_1126_677,https://scrap.kakaocdn.net/dn/cqKvf8/dJMb8U8TfM4/12YkC9WKMbgZTokQ7rmWqk/img.png?width=540&amp;amp;height=534&amp;amp;face=0_0_540_534&quot;&gt;&lt;a href=&quot;https://sites.google.com/view/2026-study-jams/h1-study-jam&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://sites.google.com/view/2026-study-jams/h1-study-jam&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tVGDG/dJMb85vOCVN/bhCOTwWHV3BTXnDPXonm3k/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/cl0Z9P/dJMb83ksz6d/yWeiTZ8nPFiQJht6FyB9oK/img.png?width=1126&amp;amp;height=677&amp;amp;face=0_0_1126_677,https://scrap.kakaocdn.net/dn/cqKvf8/dJMb8U8TfM4/12YkC9WKMbgZTokQ7rmWqk/img.png?width=540&amp;amp;height=534&amp;amp;face=0_0_540_534');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2026 구글 클라우드 스터디잼 - H1-Study-Jam&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;구글 클라우드 스터디 잼 (4/1-6/1) AI, Data, Cloud를 무료로 배우고 구글 한정판 굿즈를 획득하세요!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;sites.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;708.png&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZzvao/dJMcahcKcQF/OTMI2ZQsLTRHUKMfOjT4qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZzvao/dJMcahcKcQF/OTMI2ZQsLTRHUKMfOjT4qK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZzvao/dJMcahcKcQF/OTMI2ZQsLTRHUKMfOjT4qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZzvao%2FdJMcahcKcQF%2FOTMI2ZQsLTRHUKMfOjT4qK%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;540&quot; height=&quot;534&quot; data-filename=&quot;708.png&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;534&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;/p&gt;</description>
      <category>개발/Google Cloud</category>
      <category>AI</category>
      <category>GCP</category>
      <category>Gemini</category>
      <category>StudyJam</category>
      <category>vertexai</category>
      <category>구글</category>
      <category>구글 스터디잼</category>
      <category>구글 클라우드</category>
      <category>스터디잼</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/31</guid>
      <comments>https://kansm.tistory.com/31#entry31comment</comments>
      <pubDate>Thu, 26 Mar 2026 13:20:52 +0900</pubDate>
    </item>
    <item>
      <title>openclaw에서 오케스트레이션(Orchestration) 구현해 보기</title>
      <link>https://kansm.tistory.com/30</link>
      <description>&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이전 상황 간단 요약..&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;openclaw를 맥미니에서 돌려보기 위한 M4 32기가 구매. 로컬에서 LLM설치해 보았으나 30b에도 버벅 되어서 바로 포기했습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그리고, 주말에는 상용 AI의 API를 이용해서 돌리는 방향으로 전환했습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그 과정중 알게 된 것을 우선 급하게 올려 봅니다.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;openai, claude, gemini API키 준비후 openclaw에 agent들이 있어서 이들을 각 에이전트별로 구성해서 orchestrator를 구현해 보는 간단한 내용 입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오케스트레이터(Orchestrator)는&amp;nbsp;AI&amp;nbsp;에이전트들의&amp;nbsp;작업을&amp;nbsp;자동화하고,&amp;nbsp;순서에&amp;nbsp;맞게&amp;nbsp;조율하여&amp;nbsp;전체&amp;nbsp;워크플로우를&amp;nbsp;효율적으로&amp;nbsp;관리하는&amp;nbsp;것으로,&amp;nbsp;지휘자가&amp;nbsp;악기들을&amp;nbsp;조율하듯&amp;nbsp;시스템&amp;nbsp;간의&amp;nbsp;상호작용을&amp;nbsp;통합&amp;middot;관리하여&amp;nbsp;운영&amp;nbsp;효율을&amp;nbsp;높이다고&amp;nbsp;해서&amp;nbsp;요새&amp;nbsp;많이&amp;nbsp;뜨고&amp;nbsp;있는&amp;nbsp;용어입니다.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: oklch(1 0 0); color: oklch(0.556 0.012 196.88); text-align: start;&quot; data-ke-style=&quot;style3&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 아셔야 할것이, 저는 이 맥미니를 잡일용을 구성하고 있어 최신 모델을 사용하지 않습니다.&lt;br /&gt;잡다니 한 것을 정리하고, 분석하고, 파악해서, 핵심적이고 정리된 내용을 받아보고 이것을 작업시 참조나 방향성을 얻으려고 하는 겁니다. 즉, 서포트용 비서로 사용하려고 하는 겁니다.&lt;br /&gt;(1차 가공된 정보나 정리된 내용을 받아서 쓸때없는 정보를 최소화하고 싶은 겁니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고, orchestrator가 무조건 좋은 것도 아닙니다. 간단한 작업은 단일 에이전트로 처리하게 더 빠르고 좋을수도 있습니다. 저는 작업량이 많을 경우에는 orchestrator가 효율이 더 좋다는 믿음에 분배해서 일처리를 시키려는 겁니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;추구하는 최종 구조는 이겁니다. 이렇게 오케스트레이션(&lt;span style=&quot;background-color: #ffffff; color: #0a0a0a; text-align: start;&quot;&gt;Orchestration&lt;/span&gt;)을 하려고 하는 겁니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자 -&amp;gt;&amp;nbsp;pm&lt;/li&gt;
&lt;li&gt;pm&amp;nbsp;-&amp;gt;&amp;nbsp;orchestrator&lt;/li&gt;
&lt;li&gt;orchestrator&amp;nbsp;-&amp;gt;&amp;nbsp;planner&amp;nbsp;/&amp;nbsp;backend&amp;nbsp;/&amp;nbsp;frontend&amp;nbsp;/ ...&lt;/li&gt;
&lt;li&gt;orchestrator&amp;nbsp;-&amp;gt; 결과 종합&lt;/li&gt;
&lt;li&gt;orchestrator&amp;nbsp;-&amp;gt;&amp;nbsp;pm&lt;/li&gt;
&lt;li&gt;pm&amp;nbsp;-&amp;gt; 사용자&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;생성된 에이전트들 pm, orchestrator, planner, backend, frontend, designer, crawler, summary, collector, data, reviewer 이며, 각각의 역활이 맞게 우선 gpt-5-mini, gemini-2.5-flash, claude-sonnet-4-5 모델을 각각 지정. 그리고, 테스트를 하니 제대로 된 거 같은 결과를 출력해 주더군요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;673.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zWzUj/dJMcafTve7r/1qXAX5XAu3EchJfh75GSb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zWzUj/dJMcafTve7r/1qXAX5XAu3EchJfh75GSb1/img.png&quot; data-alt=&quot;openclaw에서 분배해 처리한 것처럼 거짓말하는 상황&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zWzUj/dJMcafTve7r/1qXAX5XAu3EchJfh75GSb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzWzUj%2FdJMcafTve7r%2F1qXAX5XAu3EchJfh75GSb1%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;972&quot; height=&quot;321&quot; data-filename=&quot;673.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;321&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;openclaw에서 분배해 처리한 것처럼 거짓말하는 상황&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이거 거짓말입니다. active된 에이전트를 찾아보면 pm 혼자서 처리하면 분업한 것처럼 답변을 하더군요.&lt;br /&gt;다른 agent를 호출 및 실행 자체를 안 하더군요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;674.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/evgA0g/dJMcahDKK9a/8F8twkKjbIFvhJ927aKvTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/evgA0g/dJMcahDKK9a/8F8twkKjbIFvhJ927aKvTk/img.png&quot; data-alt=&quot;실제 확인하면 pm이 혼자서 처리를 함&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/evgA0g/dJMcahDKK9a/8F8twkKjbIFvhJ927aKvTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FevgA0g%2FdJMcahDKK9a%2F8F8twkKjbIFvhJ927aKvTk%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;1282&quot; height=&quot;186&quot; data-filename=&quot;674.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실제 확인하면 pm이 혼자서 처리를 함&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;pm이 child로 에이전트를 실행하고 난뒤에 결과 도출후 다시 pm으로 보내서 정리한 뒤에 다시 사용자한테 보고하는 형태를 취하고 싶은데, 이 부분이 안되더군요.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;현재 openclaw는 각각의 에이전트를 실행하는 구조로 , 이런 orchestrator는 지원하지 않더군요.&lt;br /&gt;그래서 이틀동안 이 문제를 해결을 했는데.. 많이 힘들더군요.&lt;br /&gt;(물론, 제가 안하고 codex가 거의 다 처리했습니다.. ㅎㅎ codex 좋더군요.)&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;핵심적으로 처리한 부분은&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PM/에이전트 응답 처리&lt;/li&gt;
&lt;li&gt;sessions_spawn,&amp;nbsp;sessions_yield&amp;nbsp;같은 세션 제어&lt;/li&gt;
&lt;li&gt;subagent 완료 이벤트를 부모에게 전달&lt;/li&gt;
&lt;li&gt;gateway와 TUI에 보여줄 메시지 조립&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 부분인데, 이것을 해결하기 위해서 openclaw의 핵심 코어 파일(reply-Bm8VrLQh.js&lt;a style=&quot;color: oklch(0.208 0.042 265.755);&quot; href=&quot;https://reply-bm8vrlqh.xn--js)-of0o/&quot;&gt;)을&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;손대면서 해결을 했습니다.&lt;br /&gt;sessions_yield 이 부분 처리하는게 제일 힘들더군요. (codex가 혼자서 1시간 반 돌아가면 해결 했음)&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&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;675.png&quot; data-origin-width=&quot;2546&quot; data-origin-height=&quot;395&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LhAJp/dJMcaf6063d/QZxrpl14XykCO8MTPz66FK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LhAJp/dJMcaf6063d/QZxrpl14XykCO8MTPz66FK/img.png&quot; data-alt=&quot;pm이 작업 분배해서 각 에이전트들이 처리할 상황, 하지만 모두 동일한 모델을 사용함.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LhAJp/dJMcaf6063d/QZxrpl14XykCO8MTPz66FK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLhAJp%2FdJMcaf6063d%2FQZxrpl14XykCO8MTPz66FK%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;2546&quot; height=&quot;395&quot; data-filename=&quot;675.png&quot; data-origin-width=&quot;2546&quot; data-origin-height=&quot;395&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;pm이 작업 분배해서 각 에이전트들이 처리할 상황, 하지만 모두 동일한 모델을 사용함.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;수정 끝에 각 에이전트들 멀티 쓰레드로 돌리기 성공, 결과 취합후 pm한테 보고서 반환.&lt;br /&gt;하지만, 사용하는 모델명이 기본 ai 모델로 사용하는 문제점 발견..&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&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;676.png&quot; data-origin-width=&quot;2553&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4mW6Y/dJMcafTve9Q/jILjNbds3V9LkGkN8KKEok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4mW6Y/dJMcafTve9Q/jILjNbds3V9LkGkN8KKEok/img.png&quot; data-alt=&quot;각 에이전트별로 각 모델을 사용하도록 재수정&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4mW6Y/dJMcafTve9Q/jILjNbds3V9LkGkN8KKEok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4mW6Y%2FdJMcafTve9Q%2FjILjNbds3V9LkGkN8KKEok%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;2553&quot; height=&quot;382&quot; data-filename=&quot;676.png&quot; data-origin-width=&quot;2553&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;각 에이전트별로 각 모델을 사용하도록 재수정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;재 수정후 각 에이전트별 지정된 모델이 작동해서 결과를 도출해서 pm한테 보고..&lt;br /&gt;당연한 것이지만, 각각 에이전트들한테 분업화 시키서 다시 결과물을 받으려면 시간이 더 소요됩니다.&lt;br /&gt;대략 30초~1분정도 소요됩니다.. 결과물이 더 좋은지는 좀더 체크하고 튜닝을 해야 할거 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&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;677.png&quot; data-origin-width=&quot;1892&quot; data-origin-height=&quot;1010&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L9EYx/dJMcahjvsey/VHiua1Fww7Ik8dLZwjWEh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L9EYx/dJMcahjvsey/VHiua1Fww7Ik8dLZwjWEh1/img.png&quot; data-alt=&quot;오픈클로의 대시보드. 사용량&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L9EYx/dJMcahjvsey/VHiua1Fww7Ik8dLZwjWEh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL9EYx%2FdJMcahjvsey%2FVHiua1Fww7Ik8dLZwjWEh1%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;1892&quot; height=&quot;1010&quot; data-filename=&quot;677.png&quot; data-origin-width=&quot;1892&quot; data-origin-height=&quot;1010&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;오픈클로의 대시보드. 사용량&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&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;678.png&quot; data-origin-width=&quot;1886&quot; data-origin-height=&quot;1011&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhyc1R/dJMcadg4z4D/JbIzVGtLdlcsoUNHT78rK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhyc1R/dJMcadg4z4D/JbIzVGtLdlcsoUNHT78rK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhyc1R/dJMcadg4z4D/JbIzVGtLdlcsoUNHT78rK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhyc1R%2FdJMcadg4z4D%2FJbIzVGtLdlcsoUNHT78rK1%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;1886&quot; height=&quot;1011&quot; data-filename=&quot;678.png&quot; data-origin-width=&quot;1886&quot; data-origin-height=&quot;1011&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;대시보드에서 확인한 사용량입니다. 저가 모델이여도 생각보다 비용은 좀더 나오거 같아요..&lt;br /&gt;테스트시 무식하게 하기는 했지만, 이틀정도 0.9달러 정도 나온거 같습니다.&lt;br /&gt;(openclaw는 질의이외에 다른 정보도 같이 넘겨서 토큰이 휠씬 많이 나오는 편입니다.)&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&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;679.png&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;1133&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNDM7Z/dJMcacWKGJV/XnZLK6B9lNVrqgkM1s4pQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNDM7Z/dJMcacWKGJV/XnZLK6B9lNVrqgkM1s4pQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNDM7Z/dJMcacWKGJV/XnZLK6B9lNVrqgkM1s4pQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNDM7Z%2FdJMcacWKGJV%2FXnZLK6B9lNVrqgkM1s4pQ1%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;1246&quot; height=&quot;1133&quot; data-filename=&quot;679.png&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;1133&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;사용하는 동안 메모리는 10~16기가 까지 나오더군요.&amp;nbsp;맥미니 기본형으로 구동시 버벅일수 있을거 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;우선 주말에 삽질한거 간단히 적어 보았습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;차후 좀더 보강된 내용을 다시 제대로 알려보겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그럼 오늘도 화이팅하세요.&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: oklch(1 0 0); color: oklch(0.129 0.042 264.695); text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;끝.&lt;/p&gt;</description>
      <category>개발/AI</category>
      <category>agent</category>
      <category>codex</category>
      <category>Mac mini</category>
      <category>OpenClaw</category>
      <category>Orchestration</category>
      <category>Orchestrator</category>
      <category>맥미니</category>
      <category>오케스트레이션</category>
      <category>오케스트레이터</category>
      <category>오픈클로</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/30</guid>
      <comments>https://kansm.tistory.com/30#entry30comment</comments>
      <pubDate>Mon, 23 Mar 2026 16:54:35 +0900</pubDate>
    </item>
    <item>
      <title>50대 개발자로 창업 도전하기 - 1탄</title>
      <link>https://kansm.tistory.com/29</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;저는 &lt;b&gt;작년 8월에 개인 사업자로 등록해서 초보 창업자&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발로 22년정도 먹고 살다가, AI로 부족한 부분을 충족할거 같아서 창업을 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 현재는 힘듭니다.. 많이~~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 과정과 앞으로는 사업과 관련된 내용을 올려 보고자 카테고리를 새로이 생성하고 이벤트 있을때마다 적어보려고 하니..&lt;/p&gt;
&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느 정도 선에 올라가고 이런 글을 올릴까 생각을 하다가, 힘들지만, 짬짬히 올려보려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사업이 어느정도 선에 올라가면, 저는 이런 글을 안 쓸거 같거든요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바쁘기도 하겠지만, 그 옛날을 기억하면 정리하는게 너무 함축적일것도 같고, 생생한 정보도 없을거 같기도 하고요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 두서 없이 기술이 되더라고 이해해 주시기 바라며, &lt;b&gt;궁금하신 것은 질문 주시면 최대한 답변 달아 보겠습니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;창업을 결심한 계기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 사업을 해야겠다는 생각은 한 10년전부터 생각은 하고 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나, 개발만 하던 놈이 다른 것까지 챙기면서 개발하는 것이 힘들지 않을까 하는 생각이 계속 들어서 망설였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 개발하는 것을 좋아라고 합니다. 그러나, 문서나 디자인쪽은 잼뱅이로.. 많이 싫어라 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀을 이끌면서 전체적인 기획이나 팀을 이끄는 것은 큰 상관이 없는데.. 돈 관리와 그외 관리(문서 정리나 세금 문제등.. 그리고 디자인쪽..)에 자신이 없었습니다.&lt;/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-filename=&quot;banner_920_2.png&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;467&quot;&gt;&lt;a href=&quot;https://www.medicalcheck.app/&quot; target=&quot;_blank&quot; title=&quot;Medical Check App (메디컬 체크)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qaEVg/dJMcaadEdf0/dL4kLdpKMXvXExLawsf4K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqaEVg%2FdJMcaadEdf0%2FdL4kLdpKMXvXExLawsf4K1%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;1600&quot; height=&quot;467&quot; data-filename=&quot;banner_920_2.png&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;467&quot;/&gt;&lt;/a&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;그러다 GPT가 몇년전에 나오고, AI로 가겠다는 생각에 나름대로 LangChain부터 시작해서 LLM쪽으로 공부를 하면서 준비를 하다가.. 결정적으로 AI로 프론트단 디자인쪽 커버가 가능하다는 것을 보고 창업을 최종 결정했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀스택이라고는 하나, 디자인을 처리해야 하는 프론트단이 생각보다 손이 많이 가거든요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 &lt;b&gt;프롬프트로 프론트단 구성을 AI가 해 줘서 1인분을 해 준다면, 내가 원하는 형태의 개발이나 프로덕트를 내 놓을수 있을거라 생각&lt;/b&gt;이 들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Back단과 서버쪽등의 제가 자신이 있으나, 디자인 구성과 함께 해야 하는 프론트단은 항시 제 발목을 잡아왔거든요.&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;그렇게 1년전에 가능성을 확신하고 창업을 해야겠다는 생각을 하고 아이템을 찾기 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;아이템(BM-비즈니스 모델) 선정&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 개발자로 살아오면서 많은 클라이언트의 니즈나 꿈을 반영해 주려고 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이쪽에 오래 계신 분들은 아시겠지만, 결과물이 좋든 아니든 결과물이 나온다고 해도 오래가는 곳은 생각보다 적습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(공공기관과 대기업은 제외입니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 것을 옆에서 오래 보아 오다 보니, 아이템(BM-비즈니스 모델)이 우선 좋아야 한다고 생각을 했습니다.&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;솔직히 초기에는 80%이상 된다고 생각했지만, 현재는 많이 다운된 상황입니다.&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;아이템 선정시 AI가 다 알아서 해 준다고 생각해서 타자 몇자로 체크해서 하는 짓은 하지 마세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시장 조사나 사전 조사등을 손수 정리해서 자료를 준비하고, 구성을 한 뒤에 그 뒤에 AI한테 분석을 시키던가 해야지&lt;/b&gt;.. 텍스트 몇자로 좋은 아이템 달라고 하면 뻔하거나, 그럴듯한 아이템을 줄겁니다. 이 부분은 조심하셔야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(제가 아직 성공한 상황이 아니라서, 이정도 밖에 못 적겠네요.. ㅎㅎ)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요새 바이브 코딩이나 AI가 다 해 준다고 해서 창업하거나 생각하시는 분들이 많으실거 같아서 주의용으로 한번 언급해 보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;MVP(Minimum&amp;nbsp;Viable&amp;nbsp;Product,&amp;nbsp;최소&amp;nbsp;기능&amp;nbsp;제품)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이템이 선정을 하고 저는 우선 MVP부터 만들기로 했습니다. 개발자이고, 이전에 다른 클라이언트들이 실패한 것들이 많이 보아와서 우선 MVP 정도는 만들어둬야 심리적으로 안정이 될거 같아서 그랬습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI를 이용해서 SaaS 서비스를 제공하는 것으로 &lt;b&gt;앱을 만들어야 해서 3~4개월정도 안드로이드 배포를 목표로 개발&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI를 지금 시점의 퀄리티로 보시면 안됩니다.. 작년만 해도 바이브 코딩으로 해결이 안되는 부분이 많았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(정확하지 않은데.. Claude Code 나온지 얼마되지 않았을때로 생각이 되네요..)&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;기획과 전체적인 workflow 구성하고 작업이 들어가서 &lt;b&gt;4개월정도 걸려서 MVP&lt;/b&gt;를 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 개발 작업은 프론트단은 바이브 코딩을 최대한 활용을 했고요.. back단은 supabase를 이용해서 디비 구성과 나머지 구성을 했습니다.&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;1차 MVP에서 안정성과 다국어 처리를 하고 난뒤에 결제를 위해 앱을 올려야 하더군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱을 등록하려면 당연히 사업자가 있어야 한다고 생각해서 이제는 사업자 등록을 하자고 생각해서 등록하려고 하니..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사무실이 있어야겠더군요.. ㅎㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연한 것인데, 돈 나갈 생각에 마음이 편치 않았습니다.. ㅜ.ㅜ;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 편에 계속...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>창업 &amp;amp; 사업</category>
      <category>1인창업</category>
      <category>개발자</category>
      <category>개발자창업</category>
      <category>바이브코딩</category>
      <category>사업</category>
      <category>스타트업</category>
      <category>창업</category>
      <category>초보사업</category>
      <category>초보창업</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/29</guid>
      <comments>https://kansm.tistory.com/29#entry29comment</comments>
      <pubDate>Fri, 20 Feb 2026 17:19:10 +0900</pubDate>
    </item>
    <item>
      <title>MX Master 4 마우스 리뷰 (개발자 마우스)</title>
      <link>https://kansm.tistory.com/28</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼마전까지 MX Master 3S를 사용하다가, 얼마전 MX Master 4로 교체했습니다.&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;마우스 구매시 참조하시기 바랍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 주로 개발용 마우스 로지텍 MX Master 시리즈를 사용합니다.&lt;/p&gt;
&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;이는 MX Master 사용하다가 일반 마우스 사용해 보면 그 차이점은 바로 느끼게 되며, 다른 것을 사용할수 없게 만들더군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 뒤로 MX Master 시리즈만 사용하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보다 자세한 것은 이전에 적은 글을 참조해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://kansm.tistory.com/13&quot;&gt;2025.04.22 - [잡동사니] - 개발자용 마우스 추천 (로지텍 마우스 5종 비교)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770969177411&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;개발자용 마우스 추천 (로지텍 마우스 5종 비교)&quot; data-og-description=&quot;최근 mx master 시리즈와 g502 시리즈 사용하면서 느낀 점 간단히 적어봅니다.거의 하루 종일 마우스 사용하는 개발자입니다.키보드를 많이 사용해야 하는데.. 요새는 마우스도 많이 사용하는거 같&quot; data-og-host=&quot;kansm.tistory.com&quot; data-og-source-url=&quot;https://kansm.tistory.com/13&quot; data-og-url=&quot;https://kansm.tistory.com/13&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/esnPQU/dJMb9hCXsJ6/oL6LklsGMsdk32iJSOc84k/img.png?width=800&amp;amp;height=307&amp;amp;face=0_0_800_307,https://scrap.kakaocdn.net/dn/jQd4H/dJMb9hCXsJ5/oP20hyaYFtTy8cG39sXg21/img.png?width=800&amp;amp;height=307&amp;amp;face=0_0_800_307,https://scrap.kakaocdn.net/dn/2KSa6/dJMb86nTGsg/YlQux6zRXihYvoH0lt57P0/img.png?width=1389&amp;amp;height=771&amp;amp;face=0_0_1389_771&quot;&gt;&lt;a href=&quot;https://kansm.tistory.com/13&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kansm.tistory.com/13&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/esnPQU/dJMb9hCXsJ6/oL6LklsGMsdk32iJSOc84k/img.png?width=800&amp;amp;height=307&amp;amp;face=0_0_800_307,https://scrap.kakaocdn.net/dn/jQd4H/dJMb9hCXsJ5/oP20hyaYFtTy8cG39sXg21/img.png?width=800&amp;amp;height=307&amp;amp;face=0_0_800_307,https://scrap.kakaocdn.net/dn/2KSa6/dJMb86nTGsg/YlQux6zRXihYvoH0lt57P0/img.png?width=1389&amp;amp;height=771&amp;amp;face=0_0_1389_771');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;개발자용 마우스 추천 (로지텍 마우스 5종 비교)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;최근 mx master 시리즈와 g502 시리즈 사용하면서 느낀 점 간단히 적어봅니다.거의 하루 종일 마우스 사용하는 개발자입니다.키보드를 많이 사용해야 하는데.. 요새는 마우스도 많이 사용하는거 같&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kansm.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;543.png&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;849&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHUPPW/dJMcaihWR5c/7luDQy6UNIfMWFyDPzQqkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHUPPW/dJMcaihWR5c/7luDQy6UNIfMWFyDPzQqkK/img.png&quot; data-alt=&quot;MX Master 4&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHUPPW/dJMcaihWR5c/7luDQy6UNIfMWFyDPzQqkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHUPPW%2FdJMcaihWR5c%2F7luDQy6UNIfMWFyDPzQqkK%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;1011&quot; height=&quot;849&quot; data-filename=&quot;543.png&quot; data-origin-width=&quot;1011&quot; data-origin-height=&quot;849&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;MX Master 4&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;이전 시리즈의 차이점&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;햅틱이 들어가 있고, 가로 스크롤 휠이 사용하기 편한 것을 제외하고는&amp;nbsp;써 보면 이전 3S와 큰 차이점은 없는거 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디테일한 것은 있을수 있는데, 개발용으로 이전이랑 큰 차이를 못 느끼겠더군요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가로 스크롤 휠은 확실히 편해져서 이전 시리즈보다 더 많이 사용하게 되더군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1. 햅틱 기능&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;545.png&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uKWqu/dJMcabQEI7I/7WboMtguQclvLn5cxBEZm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uKWqu/dJMcabQEI7I/7WboMtguQclvLn5cxBEZm1/img.png&quot; data-alt=&quot;햅틱 사용시 출력되는 메뉴&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uKWqu/dJMcabQEI7I/7WboMtguQclvLn5cxBEZm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuKWqu%2FdJMcabQEI7I%2F7WboMtguQclvLn5cxBEZm1%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;522&quot; height=&quot;412&quot; data-filename=&quot;545.png&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;412&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;햅틱 사용시 출력되는 메뉴&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;햅틱을 사용하면 이런 메뉴가 나와서 단축 메뉴를 사용할수 있도록 되어 있는데.. 전.. 사용을 안 하게 되더군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기능을 사용하려면 엄지 손가락에 힘을 줘야 하는데, 사용하지 않던 기능이라서 구지.. 사용하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2. 가로 스크롤 휠&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HSZFc/dJMcaivsdfy/08VlOkCZHwzhT20OkdGrF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HSZFc/dJMcaivsdfy/08VlOkCZHwzhT20OkdGrF0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;543&quot; data-filename=&quot;547.png&quot; style=&quot;width: 49.9733%; margin-right: 10px;&quot; data-widthpercent=&quot;50.56&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HSZFc/dJMcaivsdfy/08VlOkCZHwzhT20OkdGrF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHSZFc%2FdJMcaivsdfy%2F08VlOkCZHwzhT20OkdGrF0%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;508&quot; height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6I171/dJMcagqTWb0/U2BLCG5jXNLR5xU9aMQNPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6I171/dJMcagqTWb0/U2BLCG5jXNLR5xU9aMQNPk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;704&quot; data-filename=&quot;548.png&quot; style=&quot;width: 48.8639%;&quot; data-widthpercent=&quot;49.44&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6I171/dJMcagqTWb0/U2BLCG5jXNLR5xU9aMQNPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6I171%2FdJMcagqTWb0%2FU2BLCG5jXNLR5xU9aMQNPk%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;644&quot; height=&quot;704&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;MX Master 3s와 4의 가로휠 차이&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3s는 가로휠 밑에 구분선 같은게 있어서, 휠 사용시 엄지 손가락이 한번 더 올려야 하는 식인데, 4에서는 이 가로휠이 앞쪽으로 좀더 나오고,이 구분이 되는 공간이 없어져서 자연스럽게 휠 사용이 가능해졌습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 가로 휠 사용하기가 많이 편했습니다. 엄지가 살짝 위로 올려주면 되는 방식이라서 휠씬 편해졌습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이전 자주 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;3. 표면 처리&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6osAy/dJMcacaZGnk/qK4qPonwKh5lVK4qUq6L4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6osAy/dJMcacaZGnk/qK4qPonwKh5lVK4qUq6L4K/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;652&quot; data-filename=&quot;553.png&quot; style=&quot;width: 47.6433%; margin-right: 10px;&quot; data-widthpercent=&quot;48.2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6osAy/dJMcacaZGnk/qK4qPonwKh5lVK4qUq6L4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6osAy%2FdJMcacaZGnk%2FqK4qPonwKh5lVK4qUq6L4K%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;666&quot; height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yO1mM/dJMcaflertZ/nKf4ssqqmKKudoV46K4l4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yO1mM/dJMcaflertZ/nKf4ssqqmKKudoV46K4l4k/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;666&quot; data-filename=&quot;552.png&quot; style=&quot;width: 51.1939%;&quot; data-widthpercent=&quot;51.8&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yO1mM/dJMcaflertZ/nKf4ssqqmKKudoV46K4l4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyO1mM%2FdJMcaflertZ%2FnKf4ssqqmKKudoV46K4l4k%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;731&quot; height=&quot;666&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;왼쪽이 3s, 오른쪽이 4의 표면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 제일 마음에 드는데, 2, 3에서는 표면이 고무 재질같은 것이 도포가 되어 있어서, 1년정도 되면 땀이랑 섞이면서 끈적거림이 발생해서, 이것때문에 저는 1년마다 마우스를 교체했습니다. 특히 여름에 이 느낌이 너무 싫었거든요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데, 4에서는 플라스틱 재질로 변경되어서, 일반 마우스의 표면처럼 구성이 되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 저렴해 보인다고 하는 사람들도 있던거 같은데.. 전 이게 더 낫다고 봅니다.. ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그외는 대동소이해서 차이점을 잘 모르겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전 이전 모델보다 좋은거 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외관상 큰 차이점은 없어보이지만.. 장점은 그대로 유지하면서 불편함만 제거된거 같아서 저한테는 너무 만족스러운 모델인거 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;궁금한 것이 있으면 댓글 주시고요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로 사업 관련해서 글을 올려볼까 하니, 많이 기대해 주세요.. ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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>잡동사니</category>
      <category>MX Master</category>
      <category>MX Master 4</category>
      <category>개발자</category>
      <category>개발자마우스</category>
      <category>로지텍</category>
      <category>로지텍마우스</category>
      <category>마우스</category>
      <category>마우스추천</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/28</guid>
      <comments>https://kansm.tistory.com/28#entry28comment</comments>
      <pubDate>Fri, 13 Feb 2026 17:39:00 +0900</pubDate>
    </item>
    <item>
      <title>7일동안 1억 토큰으로 바이브 코딩해 만든 Cloud 관제 시스템(Raindrop+Vultr)</title>
      <link>https://kansm.tistory.com/27</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근에 Hackathon에 참여했는데, 그 개발 과정을 기술해 보려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 프로젝트는 AI Coding Assistant 활용해서 개발해야 한다고 해서 최대한 바이브 코딩으로 구성해 보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제작은 대략 7일정도 소요될거 같으며, 그 과정에서 문제 발생했던 부분과 해결 방법등, 제작 과정을 적어 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래에는 경어체는 사용하지 않으니, 이점 양해 주시면 감사하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt; 들어가며&lt;/b&gt; &lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 해커톤은 특정 플랫폼을 사용하도록 되어 있었다. 즉, 홍보성이 강한 해커톤이였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LiquidMetal AI의 Raindrop Platform을 필수로 사용해야 하고, Vultr 인프라 연동이 의무였으며, 거기에 AI Coding Assistant(Claude Code 또는 Gemini CLI)를 활용한 개발을 요구했다.&amp;nbsp;솔직히 말하면, AI를 활용한 개발 속도를 보겠다는 의도가 보여서 바이브 코딩으로 개발하게 되었다.&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-filename=&quot;banner_1024_7.png&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;337&quot;&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.medicalcheckapp&quot; target=&quot;_blank&quot; title=&quot;Medical Check App - 메디컬 체크&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w3w3J/dJMcaaqtgFD/og2AgFkwvU0JOUH6c9NWsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw3w3J%2FdJMcaaqtgFD%2Fog2AgFkwvU0JOUH6c9NWsK%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;1386&quot; height=&quot;337&quot; data-filename=&quot;banner_1024_7.png&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/a&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;Voice Agent 트랙에 참여했기 때문에 ElevenLabs 연동도 필수였다. 결과적으로 Raindrop + Vultr + ElevenLabs 세 가지 서비스를 엮어서 채팅 인터페이스로 클라우드 서버를 관리하는 MVP를 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 바이브 코딩으로 빠르게 MVP를 구성한 과정과 그 과정에서 마주친 문제들을 정리해본다.&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;대시보드에서는 마우스로 클라우드의 서버를 시작/중지/재시작/삭제가 가능하도록 구성해 두었으며, 서버 상태를 간단히 출력해주면, 상세정보를 보면 api를 통해 서버의 상세 정보를 출력해 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고, Command Center에서는 채팅 형태로 명령어를 입력하면 서버 제어가 가능해진다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;498.png&quot; data-origin-width=&quot;2007&quot; data-origin-height=&quot;1041&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rBYf3/dJMcacaKFXN/UuwA4tXc7Vkg1Ajh4WKM5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rBYf3/dJMcacaKFXN/UuwA4tXc7Vkg1Ajh4WKM5k/img.png&quot; data-alt=&quot;대시 보드 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rBYf3/dJMcacaKFXN/UuwA4tXc7Vkg1Ajh4WKM5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrBYf3%2FdJMcacaKFXN%2FUuwA4tXc7Vkg1Ajh4WKM5k%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;2007&quot; height=&quot;1041&quot; data-filename=&quot;498.png&quot; data-origin-width=&quot;2007&quot; data-origin-height=&quot;1041&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;대시 보드 화면&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;500.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1034&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5ZYb1/dJMcaiWi3EF/pRZJZKjodh5Ru6mdKkMuMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5ZYb1/dJMcaiWi3EF/pRZJZKjodh5Ru6mdKkMuMk/img.png&quot; data-alt=&quot;서버 상세정보&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5ZYb1/dJMcaiWi3EF/pRZJZKjodh5Ru6mdKkMuMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5ZYb1%2FdJMcaiWi3EF%2FpRZJZKjodh5Ru6mdKkMuMk%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;2000&quot; height=&quot;1034&quot; data-filename=&quot;500.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1034&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;서버 상세정보&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;499.png&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1041&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKbbeH/dJMcaa44zMT/Ba2Niuhr0GXCEIa56xp0iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKbbeH/dJMcaa44zMT/Ba2Niuhr0GXCEIa56xp0iK/img.png&quot; data-alt=&quot;Command Center에서는 채팅으로 서버를 제어 한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKbbeH/dJMcaa44zMT/Ba2Niuhr0GXCEIa56xp0iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKbbeH%2FdJMcaa44zMT%2FBa2Niuhr0GXCEIa56xp0iK%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;2006&quot; height=&quot;1041&quot; data-filename=&quot;499.png&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1041&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Command Center에서는 채팅으로 서버를 제어 한다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;사용된 플랫폼, 개발 도구&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;필수 플랫폼&lt;/b&gt;: LiquidMetal AI의 Raindrop Platform&lt;br /&gt;&lt;b&gt;필수 인프라&lt;/b&gt;: Vultr Services (최소 1개 이상 연동)&lt;br /&gt;&lt;b&gt;개발 도구&lt;/b&gt;: Cusor + Cloud Code + Raindrop Code&lt;br /&gt;&lt;b&gt;Voice&lt;/b&gt;: ElevenLabs&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작시 Raindrop과 Vultr 각각 $500씩 크레딧을 제공 받아서 진행했다. 다만 Vultr는 신용카드 등록이 필수였다.&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;Raindrop을 다들 잘 모를거 같아서 조금만 더 설명하면, &lt;b&gt;Raindrop은 백엔드 애플리케이션을 호스팅하는 서버리스 플랫폼&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vultr API를 직접 연동해주는 게 아니라, Vultr를 호출하는 &quot;내 애플리케이션&quot;을 배포하고 실행해주는 역할입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해 Vercel / AWS Lambda 같은 신생 호스팅 플랫폼으로 보면 될거 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Vultr&lt;/b&gt; 는 관리 대상이 되는 클라우드 서버 (EC2 같은)와 같다고 보면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;501.png&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BcJcY/dJMcadAF2PK/DJ8dKLMMaovgFzKH2CoLVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BcJcY/dJMcadAF2PK/DJ8dKLMMaovgFzKH2CoLVk/img.png&quot; data-alt=&quot;서버리스 플랫폼(Raindrop) 위에서 Vultr API를 호출하는 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BcJcY/dJMcadAF2PK/DJ8dKLMMaovgFzKH2CoLVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBcJcY%2FdJMcadAF2PK%2FDJ8dKLMMaovgFzKH2CoLVk%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;2816&quot; height=&quot;1536&quot; data-filename=&quot;501.png&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;서버리스 플랫폼(Raindrop) 위에서 Vultr API를 호출하는 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;무엇을 만들었나?&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;raindrop-code로 백엔드 구성하기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 Raindrop 플랫폼을 사용하기 위해서는 raindrop-code 명령어를 실행해 주면 초기 세팅을 해 주게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Raindrop Code(AI 에이전트)를 사용하여 프로젝트의 초기 구조(Scaffolding)를 생성해 주게 된다. 이 에이전트는 Raindorp 플랫폼에 특화된 에이전트로 Raindrop Framework 기반의 인프라 구축, 배포, 관리를 쉽게 하도록 도와 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 에이전트는 Raindrop의 내부 아키텍처(Actor, SmartSQL 등)와 워크플로우를 완벽히 이해하고 있기 때문에 초기에 반드시 실행을 해 주어야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;502.png&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;1331&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zG2L4/dJMcahJUtVV/iNk2bcQ7sjClUnsm8Wkw3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zG2L4/dJMcahJUtVV/iNk2bcQ7sjClUnsm8Wkw3k/img.png&quot; data-alt=&quot;raindrop-code 초기 실행되는 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zG2L4/dJMcahJUtVV/iNk2bcQ7sjClUnsm8Wkw3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzG2L4%2FdJMcahJUtVV%2FiNk2bcQ7sjClUnsm8Wkw3k%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;1604&quot; height=&quot;1331&quot; data-filename=&quot;502.png&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;1331&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;raindrop-code 초기 실행되는 화면&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;/p&gt;
&lt;pre id=&quot;code_1768115931441&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;├── _app                  # 전역 설정 (Auth, CORS 등)
├── api-service           # API 진입점 및 라우팅 (Hono.js)
├── server-manager        # 서버 제어 및 NLP 처리 로직, Vultr API 호출 (Actor)
├── server-task-processor # 비동기 작업 처리 (Observer)
├── shared                # 공통 유틸리티 및 라이브러리
├── user-manager          # 사용자 인증 및 세션 관리 (Actor)
└── websocket             # 실시간 상태 업데이트 처리&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백엔드쪽은 raindrop 플랫폼을 사용하기 위해서는 계속해서 raindrop-code를 이용해 사용해야 한다. &lt;b&gt;특이점은 raindrop이외엔 제대로 된 처리를 못한다. 즉, 다른 에이전트 비해 기능이 떨어지니 주의&lt;/b&gt;해야 한다. 그래서 다시 에이전트를 사용하라고 한거 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배포시 typescript 오류가 발생하면.. 오류를 무지막지하게 뿜어내니 주의해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서&amp;nbsp;이를 보완하기 위해서 claude code를 같이 사용했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;프론트단 구성하기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프론트단은 별거 없이 react+tailwind+vite로 구성했다. UI와 api 연동에 주의해서 구성해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특이점은&amp;nbsp;개발 초기에는 모든 통신을 실시간으로 처리하려 했으나, 보안과 안정성을 위해 역할을 명확히 분리했다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,0,0&quot;&gt;실시간 감시 (WebSocket):&lt;/b&gt; 서버가 켜지거나 꺼지는 '상태 변화'는 WebSocket을 통해 즉시 푸시(Push) 받음.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;10,2,1,0&quot;&gt;제어 및 실행 (REST API):&lt;/b&gt; 명령을 내리거나(Command) 외부 Vultr API와 통신하는 작업은 안정적인 HTTP REST API(프록시)를 사용하여 CORS 문제와 보안 이슈를 해결&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Command Center&lt;/b&gt;라는 이름으로, 채팅창에서 자연어 형태의 명령어를 입력하면 Vultr 서버를 관리할 수 있는 시스템을 만들었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지원하는 명령어는 다음과 같다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;list all servers
start server test-server
stop server test-server
status test-server
details test-server
create server web-server
delete server test-server&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔직히 말하면, 이 명령어들은 정형화된 패턴이다. &lt;b&gt;&quot;자연어 처리&quot;라고 표현하기엔 민망한 수준이고, 단순 문자열 파싱에 가깝다.&lt;/b&gt; 실제 AI 기반 NLP를 연동하면 더 유연한 질의 분석이 가능했지만, 외부 api를 구지 연동 시킬 필요가 없을거 같아서 구현은 하지 않았다. 차후 LLM을 연동해서 질의어를 분석하고 적절한 명령으로 변환하는 방식으로 쉽게 개선할 수 있을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt; 바이브 코딩으로 개발하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 프로젝트는 Raindrop 플랫폼을 사용하기 위해서는 raindrop-code라는 AI 에이전트를 사용할 수 밖에 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 에이전트를 사용하지 않고, 플랫폼이 올리는게 가능한지는 모르겠으나 없었으면 무지 복잡하고, 기간이 몇배가 더 소요될 것이 분명했을 것이다. (그래도 Actor 구조 잡고, API 라우팅하고, 기본적인 CRUD 로직 만드는 데는 확실히 도움이 됐다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, &lt;b&gt;raindrop에 특화된 에이전트다 보니, 불편한 점이 많기는 했다&lt;/b&gt;. 초기의 cli 에이전트라고 보면 될거 같다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;401.png&quot; data-origin-width=&quot;1465&quot; data-origin-height=&quot;1129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WSVuj/dJMcacBPqlv/dPoJCIn3fdcGmiJt8f94u0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WSVuj/dJMcacBPqlv/dPoJCIn3fdcGmiJt8f94u0/img.png&quot; data-alt=&quot;작업 완료후 청구된 비용&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WSVuj/dJMcacBPqlv/dPoJCIn3fdcGmiJt8f94u0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWSVuj%2FdJMcacBPqlv%2FdPoJCIn3fdcGmiJt8f94u0%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;1465&quot; height=&quot;1129&quot; data-filename=&quot;401.png&quot; data-origin-width=&quot;1465&quot; data-origin-height=&quot;1129&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;작업 완료후 청구된 비용&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$500달러는 지원이 된 상태이기는 했지만, 전체적으로 $1,000달러 이상 나오면서 $500달러 정도를 청구 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 이 비용은 지불하지 않았다. 이정도 비용이 나온다는 것을 보여주기 위한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(물론, 초기에 raindrop-code에 익숙하지 않아서 질의어를 난발한 것도 있지만, 비용이 많이 비싸다는 생각이 들었다.)&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-filename=&quot;401_1.png&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;1191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ryOpc/dJMcahJUuSV/u5kBV92OXzcVu5W3E1Wnz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ryOpc/dJMcahJUuSV/u5kBV92OXzcVu5W3E1Wnz0/img.png&quot; data-alt=&quot;사용된 토큰 양&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ryOpc/dJMcahJUuSV/u5kBV92OXzcVu5W3E1Wnz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FryOpc%2FdJMcahJUuSV%2Fu5kBV92OXzcVu5W3E1Wnz0%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;1432&quot; height=&quot;1191&quot; data-filename=&quot;401_1.png&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;1191&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사용된 토큰 양&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력 토큰이 1억개를 넘어서게 되었지만, 출력 토큰은 10만이 되지 않았다. 이는 비정상적인 부분이라고 생각이 되어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 매 질문마다 &lt;b data-index-in-node=&quot;7&quot; data-path-to-node=&quot;2,2,1,1,0&quot;&gt;엄청나게 긴 문맥(전체 코드베이스나 로그 파일 등)을 반복해서 전송&lt;/b&gt;하고 있을 가능성이 매우 높아 보였다. 내부 구성은 알수 없으니, 더 자세히는 모르겠으나, 이 부분과 가격 부분은 더 나아질거라 생각이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(현재는 약간 초기-베타 버전이라는 그런것으로 보여진다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;가장 힘들었던 부분: Proxy&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 과정에서 가장 많은 시간을 잡아먹은 건 &lt;b&gt;HTTPS 프록시 구성&lt;/b&gt;이었다.&amp;nbsp;Raindrop에서 배포한 API 서버에 도메인을 붙이지 않아서 HTTPS 접근이 안 됐다. 브라우저에서 HTTP 엔드포인트를 직접 호출하면 Mixed Content 에러가 발생하고, 모바일에서는 아예 연결이 안 됐다.&amp;nbsp;결국 &lt;b&gt;Vercel에 프록시 서버를 하나 더 만들어서&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;Cloudflare Workers 환경(Raindrop)에서 Vultr API를 호출할 때 CORS 문제와 보안 이슈로 보였다.&amp;nbsp;그래서 이중 프록시 구조가 된 셈이다. 그러면서 당연히 응답 속도는 느려졌고, 실 사용시에는 도메인을 장착하면 되기에 구지 이중 proxy로 구성할 필요는 없을거 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 영상에서 데모 시연시 Vultr API 호출 시에도 네트워크 에러가 종종 발생하니, 이 부분을 감안해 주기 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;포인트: 결과를 음성으로 알려주기&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버를 제어하고 난뒤에 결과를 단순 텍스트를 알려주는데서 끝나지 않고, 백엔드의 VoiceService는 이 텍스트를 &lt;b data-index-in-node=&quot;145&quot; data-path-to-node=&quot;1&quot;&gt;ElevenLabs API&lt;/b&gt;로 전송하여 음성 합성을 요청하고, 응답으로 받은 바이너리 오디오 데이터를 웹 브라우저로 전송하기 위해 &lt;b data-index-in-node=&quot;217&quot; data-path-to-node=&quot;1&quot;&gt;Base64 문자열로 변환&lt;/b&gt;해서, 마지막으로 프론트엔드가 이 문자열을 넘겨받아 브라우저의 오디오 객체를 통해 즉시 재생함으로써, 사용자는 화면을 보지 않고도 AI 비서가 직접 보고하는 듯한 생생한 음성 피드백을 주도록 구성해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아.. 관리자 설정에 의해 원하는 음성으로 출력이 되게 구성은 해 두었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;보다 자세한 것은 동영상을 보면 이해가 가능할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이 음성이 뒤에서는 &lt;u&gt;영상이랑 맞지 않는 부분이 발생하는데, 이는 영상 편집 실수이니 이해해 주시면 감사하겠습니다&lt;/u&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;마무리&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 서비스를 하기에는 다소 무리가 있는 프로젝트이기는 하나, MVP로는 기본 기능에 충실히 만든다고 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대시보드에서 제어도 가능하고, 채팅창에서 서버 생성하고 시작/정지/삭제도 가능하고, audit logs로 해당 서버의 기록을 확인 할수도 있다.&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;그래도 Raindrop이라는 새로운 플랫폼을 경험해보고, AI 코딩 도구로 빠르게 프로토타입을 만드는 과정을 체험한 건 의미가 있었다. 특히 Actor 모델 기반 서버리스 아키텍처는 개념이 흥미로웠다.&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;이 프로젝트는 서버 인프라 관리 용도로 구성된 것이라, API 키 관리나 보안 설정 부분을 정리하지 않은 상태에서 코드를 공개하기 어렵다. 차후 민감 정보를 분리하고 구조를 정리한 뒤 GitHub에 오픈할 예정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 자세한 것은 영상을 참조해 주기 바란다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/7-zsKW6YMDc&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/7-zsKW6YMDc&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=7-zsKW6YMDc&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/iNmIt/hyZQSUQrwj/Lv53ihEbS9SUA87Kkw5gfK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Vultr Commander: Infrastructure as Conversation (AI Control Plane)&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/7-zsKW6YMDc&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;LiquidMetal&amp;nbsp;AI&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://liquidmetal.ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://liquidmetal.ai/&lt;/a&gt;&lt;br /&gt;Vultr&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://www.vultr.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.vultr.com/&lt;/a&gt;&lt;br /&gt;Elevenlabs&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://elevenlabs.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://elevenlabs.io/&lt;/a&gt;&lt;br /&gt;데모&amp;nbsp;영상&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://youtu.be/7-zsKW6YMDc&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/7-zsKW6YMDc&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;MVP 수준의 프로젝트라 글로 남길까 고민했지만, 기록 차원에서 작성했습니다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;내용만 보면 대단한 건 없습니다. 다만 확장성을 고려해 제대로 구성하면 충분히 서비스화할 수 있다고 봅니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;평소에 AWS의 복잡한 설정에 익숙해지면 세밀한 구성이 가능하지만, 반대로 심플하게 비용과 서버를 제어할 수 있는 관제 시스템도 필요하지 않을까 하는 생각을 해왔습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이번 프로젝트가 그 아이디어를 직접 구현해볼 기회가 되었습니다. &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Raindrop은 아직 초기 단계라 아쉬운 부분도 있지만, 앞으로 기능과 안정성이 보완될 것으로 기대합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Serverless 백엔드 플랫폼에 관심 있으신 분들은 한 번 살펴보셔도 좋을 것 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그럼 즐거운 코딩 되시기 바라겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;끝.&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발/AI</category>
      <category>AICodingAssistant</category>
      <category>claudecode</category>
      <category>CloudInfra</category>
      <category>cursor</category>
      <category>ELevenLabs</category>
      <category>Hackathon</category>
      <category>mvp</category>
      <category>Raindrop</category>
      <category>vibecoding</category>
      <category>vultr</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/27</guid>
      <comments>https://kansm.tistory.com/27#entry27comment</comments>
      <pubDate>Sun, 11 Jan 2026 18:22:27 +0900</pubDate>
    </item>
    <item>
      <title>Cursor에 익숙해진 시니어 개발자가 Kiro 를 써보고 느낀 차이점</title>
      <link>https://kansm.tistory.com/26</link>
      <description>&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;프롤로그: &quot;바이브(Vibe) 코딩&quot; 이대로 괜찮은가?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;저는 현재 &lt;b&gt;Cursor&lt;/b&gt;를 메인 IDE로 사용하고 있습니다. Ctrl+K와 Composer 기능은 혁명적이었습니다. 소위 말하는 &lt;b&gt;'바이브 코딩(Vibe Coding)'&lt;/b&gt;&amp;mdash;떠오르는 대로 말하고, AI가 즉시 코드로 뱉어내는 경험&amp;mdash;은 개발 속도를 비약적으로 높여주었습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;하지만 22년 차 개발자로서 늘 느끼는 찜찜함이 있었습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&quot;빠르긴 한데... 프로젝트가 커지면 코드가 또 꼬일텐데.. 우선 백업부터 하자..&quot;&lt;/i&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;Cursor로 신나게 코딩하다 보면, 어느 순간 아키텍처는 무너지고 거대한 '스파게티 코드'가 남곤 했습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;그렇다고 예전처럼 AI 어시스턴트를 사용하지 않고 개발한다는 것은 너무 불편하고.. 답답함과 고민을 항상 하고 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;그러던 중 AWS가 만든 &lt;b&gt;Kiro IDE&lt;/b&gt;를 접하게 되었고, 해커톤에 참가하며 'DevOps Nightmare'라는 프로젝트를 진행했습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;결론부터 말하자면, &lt;b&gt;Kiro는 코딩 툴이 아니라 'AI 아키텍트'였습니다.&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;358.png&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnoc6v/dJMcadNZqRN/DCJ6KjbYSm58gMJOUkR4M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnoc6v/dJMcadNZqRN/DCJ6KjbYSm58gMJOUkR4M0/img.png&quot; data-alt=&quot;kiro 작업 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnoc6v/dJMcadNZqRN/DCJ6KjbYSm58gMJOUkR4M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnoc6v%2FdJMcadNZqRN%2FDCJ6KjbYSm58gMJOUkR4M0%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;1237&quot; height=&quot;765&quot; data-filename=&quot;358.png&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;765&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;kiro 작업 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-path-to-node=&quot;9&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;1. Cursor vs Kiro: 접근 방식의 결정적 차이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;가장 큰 차이는 &lt;b&gt;엔터(Enter)를 친 직후의 행동&lt;/b&gt;입니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size20&quot;&gt;⚡ Cursor (Bottom-Up): &quot;일단 짭니다.&quot;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;Cursor에게 *&quot;AWS 상태에 따라 배경이 바뀌는 대시보드 만들어줘&quot;*라고 하면, 즉시 App.tsx를 건드리고 코드를 쏟아냅니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;빠릅니다. 하지만 전역 상태 관리는? 에러 처리는? 그건 나중에 에러가 나면 그때 고칩니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;속도 중심의 '패치워크(Patchwork)'&lt;/b&gt; 방식입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;MCP나 비싼 모델을 사용하면 이 현상은 어느정도 해결이 되기는 한데, 코드 양이 많아지면 뻘짓 하는 것은 다들 아실것으로 압니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size20&quot;&gt; ️ Kiro (Top-Down): &quot;계획부터 세웁니다.&quot;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;Kiro에게 똑같은 말을 하면, 코드를 짜지 않습니다. 대신 &lt;b&gt;.kiro 폴더&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;359.png&quot; data-origin-width=&quot;1605&quot; data-origin-height=&quot;733&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX2urV/dJMcagYiHHD/xtvyHdAImk2DOFmhl6J1L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX2urV/dJMcagYiHHD/xtvyHdAImk2DOFmhl6J1L0/img.png&quot; data-alt=&quot;tasks.md&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX2urV/dJMcagYiHHD/xtvyHdAImk2DOFmhl6J1L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX2urV%2FdJMcagYiHHD%2FxtvyHdAImk2DOFmhl6J1L0%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;1605&quot; height=&quot;733&quot; data-filename=&quot;359.png&quot; data-origin-width=&quot;1605&quot; data-origin-height=&quot;733&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;tasks.md&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;requirements.md (요구사항):&lt;/b&gt; &quot;AWS API 키가 없으면 Hacker News RSS로 대체할까요?&quot;라고 되묻습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;design.md (디자인 &amp;amp; 설계):&lt;/b&gt; &quot;UI 컴포넌트와 데이터 Fetching 로직(Hooks)을 분리하겠습니다.&quot;라고 제안합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;tasks.md (작업 목록):&lt;/b&gt; 구현 순서를 정하고, 저(개발자)의 승인을 기다립니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;이것은 'Spec-Driven Development(스펙 주도 개발)'입니다. 바이브 코딩의 한계였던 '설계의 부재'를 AI가 강제로 채워주는 경험이었습니다.&amp;nbsp;물론 kiro에도 Vibe 방식도 있어서 선택해서 원하는 방식으로 개발이 가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;357.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;493&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PKfxG/dJMcaiV4tX8/Nvj6vPTiR2wrKgqm4HonMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PKfxG/dJMcaiV4tX8/Nvj6vPTiR2wrKgqm4HonMk/img.png&quot; data-alt=&quot;vibe와 spec 모드중 하나를 선택 가능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PKfxG/dJMcaiV4tX8/Nvj6vPTiR2wrKgqm4HonMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPKfxG%2FdJMcaiV4tX8%2FNvj6vPTiR2wrKgqm4HonMk%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;692&quot; height=&quot;493&quot; data-filename=&quot;357.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;493&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;vibe와 spec 모드중 하나를 선택 가능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;좀 더 부연설명하면은 spec 모드로 사용하면 소위 말하는 기획을 해주고, 그 기획 안에서 코드를 구성합니다.여기까지 보면 비슷해 보입니다. 기존 다른 툴들과.. 그런데, kiro를 이 구성된 스펙 범위를 넣어서지 않았습니다.그리고, 요구사항을 충실히 이행했습니다. 여기에 전 큰 차이가 있다고 생각합니다.&lt;br /&gt;&lt;br /&gt;다른 툴들에서 작업하다보면 초반에는 잘 되다가 소위 무너지는 지점이 발생합니다. max 플랜을 사용해도 방당한 코드량의 토큰 앞에서는 여지 없이 많이 무너졌습니다. (전 그리 생각합니다.)&lt;br /&gt;하지만 kiro는 spec을 충실히 따르면서 구성이 들어가니, 이 무너지는 지점에서 설계가 잡아주는 느낌을 받았습니다.&lt;br /&gt;이번에 대형 프로젝트를 진행한 것이 아니기는 하지만, 큰 실수 없이 제일 편하게 작업한거 같습니다.&lt;br /&gt;물론 cursor + max + mcp를 이용하면 비슷한 결과물은 낼수 있을거라 생각합니다. 그런데, 차이는 편하게 구성했다는 겁니다.&lt;br /&gt;즉, kiro가 겁내 좋은 툴이라는 것이 아니고, 이전의 다른 툴과는 다르게 좀 더 좋아져서 코드를 엉망으로 만들지 않는 겁니다.어찌보면 별거 아닌거 같은데, 제가 볼때는 큰 발전이라고 봅니다. 이제사 힘 좋은 말을 제대로 부린다는 느낌이랄까요..&lt;/blockquote&gt;
&lt;hr data-path-to-node=&quot;18&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;banner_1024_7.png&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MbjjL/dJMcafryZXz/NFgf9PD5wzGwMRWOT2mkZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MbjjL/dJMcafryZXz/NFgf9PD5wzGwMRWOT2mkZ0/img.png&quot; data-alt=&quot;당뇨와 고혈압, 체중 AI 관리 앱 - Medical Check&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MbjjL/dJMcafryZXz/NFgf9PD5wzGwMRWOT2mkZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMbjjL%2FdJMcafryZXz%2FNFgf9PD5wzGwMRWOT2mkZ0%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;1386&quot; height=&quot;337&quot; data-filename=&quot;banner_1024_7.png&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;당뇨와 고혈압, 체중 AI 관리 앱 - Medical Check&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;2. 해커톤 프로젝트 'DevOps Nightmare': Kiro가 아키텍트가 된 순간&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;이번 해커톤에서 만든 프로젝트는 &quot;서버 상태가 나빠지면 화면이 피투성이(Horror Theme)로 변하는 대시보드&quot;였습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;겉보기엔 단순하지만, 내부 로직은 복잡했습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평상시: Unsplash API로 평화로운 풍경 + Hacker News RSS&lt;/li&gt;
&lt;li&gt;장애 발생 시: Glitch 효과 + AWS CloudWatch 데이터 연동 + 붉은 테마 전환&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size20&quot;&gt;  Cursor였다면 겪었을 문제&lt;/h4&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;아마 ThemeContext 없이 컴포넌트마다 if (isHorror) 문을 남발했을 겁니다. 나중에 &quot;타이머 기능(Pomodoro) 추가해줘&quot;라고 하면 기존 로직과 엉켜서 시계가 멈추거나 배경이 날아갔을 것으로 예상합니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size20&quot;&gt;✅ Kiro의 해결책 (Spec의 힘)&lt;/h4&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;제가 *&quot;평화 모드와 공포 모드를 완벽하게 분리해줘&quot;*라고 프롬프트를 입력하자, Kiro는 &lt;b&gt;State Machine(상태 머신)&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;360.png&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcKUpt/dJMcab3LrYc/hexK3aDaFayKtiV8AoM9Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcKUpt/dJMcab3LrYc/hexK3aDaFayKtiV8AoM9Ok/img.png&quot; data-alt=&quot;design.md의 대시보드 구성한 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcKUpt/dJMcab3LrYc/hexK3aDaFayKtiV8AoM9Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcKUpt%2FdJMcab3LrYc%2FhexK3aDaFayKtiV8AoM9Ok%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;961&quot; height=&quot;884&quot; data-filename=&quot;360.png&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;design.md의 대시보드 구성한 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;놀라웠던 점은 &lt;b&gt;확장성&lt;/b&gt;입니다. 프로젝트 막바지에 &lt;b&gt;&quot;포모도로(Pomodoro)&quot;&lt;/b&gt; 기능을 추가해달라고 했을 때, Kiro는 기존 AWS 모니터링 코드를 건드리지 않고 usePomodoro 훅을 따로 파서 깔끔하게 붙였습니다. &lt;b&gt;이미 '구조'가 잡혀 있었기 때문입니다.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-path-to-node=&quot;28&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;29&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;3. Agent Hooks: AI가 만들어준 '안전망'&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;30&quot; data-ke-size=&quot;size16&quot;&gt;Kiro의 또 다른 강점은 'Agent Hooks'입니다. Cursor에서는 API 연동 코드를 짜면 에러 처리는 개발자가 챙겨야 했습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;30&quot; data-ke-size=&quot;size16&quot;&gt;하지만 Kiro는 제가 시키지 않아도 방어적 코딩(Defensive Coding)을 수행했습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;30&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사례: 중단 없는 서비스를 위한 usePolling의 방어적 설계&lt;/b&gt; Kiro는 단순히 API를 호출하는 코드를 짜준 것이 아니라, &lt;b&gt;'어떤 API든 실패할 수 있다'는 전제하에 범용 훅(usePolling)을 설계&lt;/b&gt;했습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;내부적으로 try-catch를 사용하여 에러를 확실하게 포착하고, 앱을 멈추게 하는 대신 onError 콜백을 통해 우아하게 처리하더군요. 그외도 알아서 공용으로 쓰거나 hook이 필요하면 알아서 생성을 하더군요.&lt;/p&gt;
&lt;div data-ved=&quot;0CAAQhtANahcKEwidnMawlqeRAxUAAAAAHQAAAAAQHg&quot; data-hveid=&quot;0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;catch (err) {
  const error = err instanceof Error ? err : new Error('Unknown error occurred');
  
  if (isMountedRef.current) {
    setError(error);
    setLoading(false);
    
    if (onError) {
      onError(error);  // 커스텀 에러 핸들러 실행
    } else {
      console.error('Polling error:', error);  // 기본 에러 로깅
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;33&quot; data-ke-size=&quot;size16&quot;&gt;덕분에 데모 영상 녹화 중 API 이슈가 있었음에도 앱은 멈추지 않았습니다. 시니어 개발자가 주니어에게 &quot;예외 처리 좀 꼼꼼히 해&quot;라고 시킨 결과를 AI가 알아서 해온 느낌이었습니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;34&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;4. 충격적인 경험: 스스로 에러를 고치는 AI (Self-Healing)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;Kiro를 쓰면서 가장 소름 돋았던 순간은 '기능 구현'이 아니라 &lt;b&gt;'테스트(Test)'&lt;/b&gt; 단계였습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;보통의 AI 코딩 툴(Cursor 등)은 코드를 짜주긴 하지만, 테스트가 실패하면 그 에러 로그를 보고 개발자가 다시 프롬프트를 입력하거나 직접 수정해야 했습니다. 즉, &quot;뒷수습은 인간의 몫&quot; 이었습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;하지만 Kiro는 달랐습니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size20&quot;&gt;  상황: npm test 실행 중 에러 발생&lt;/h4&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;StorageService 관련 테스트를 돌리던 중, Invalid todo item format이라는 치명적인 에러가 터졌습니다. 보통이라면 제가 터미널 로그를 긁어서 &quot;이거 왜 에러 나? 고쳐줘&quot;라고 물어봐야 했을 겁니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size20&quot;&gt;  Kiro의 행동: &quot;제가 고칠게요&quot;&lt;/h4&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;하지만 Kiro는 제가 시키기도 전에 먼저 반응했습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;에러 감지:&lt;/b&gt; 터미널의 에러 로그(Invalid todo item format)를 스스로 읽었습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;원인 분석:&lt;/b&gt; &quot;아, 생성된 투두 아이템에 completed 필드가 누락되어서 테스트가 실패했군요.&quot;라고 정확히 진단했습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;자율 수정:&lt;/b&gt; &lt;i&gt;&quot;I need to update the StorageService test...&quot;&lt;/i&gt; 라고 말하며 즉시 테스트 코드를 수정하기 시작했습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;361.png&quot; data-origin-width=&quot;1842&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buXZ1M/dJMcagcWpJY/hvMYr3JZoPtF2Ol5Ai5rJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buXZ1M/dJMcagcWpJY/hvMYr3JZoPtF2Ol5Ai5rJK/img.png&quot; data-alt=&quot;test로 오류를 잡아주는 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buXZ1M/dJMcagcWpJY/hvMYr3JZoPtF2Ol5Ai5rJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuXZ1M%2FdJMcagcWpJY%2FhvMYr3JZoPtF2Ol5Ai5rJK%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;1842&quot; height=&quot;633&quot; data-filename=&quot;361.png&quot; data-origin-width=&quot;1842&quot; data-origin-height=&quot;633&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;test로 오류를 잡아주는 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;이것은 단순한 자동완성이 아닙니다. &lt;b&gt;'Self-Healing(자가 치유)'&lt;/b&gt; 가능한 코드입니다. 마치 노련한 동료 개발자가 &quot;아, 제가 테스트 코드에 필드 하나 빼먹었네요. 지금 바로 고쳐서 커밋할게요.&quot;라고 말하는 듯한 기분이었습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;이 경험을 통해 저는 Kiro가 단순한 '타이핑 비서'가 아니라, '내 프로젝트를 이해하고 책임지는 에이전트'임을 확신하게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-path-to-node=&quot;34&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;35&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;5. Vibe Coding의 한계를 넘어서&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;36&quot; data-ke-size=&quot;size16&quot;&gt;물론 Kiro가 만능은 아닙니다. 초기 세팅 과정이 Cursor보다 길고, 작은 수정 사항에도 Spec을 업데이트하려는 경향이 있어 답답할 때도 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;37&quot; data-ke-size=&quot;size16&quot;&gt;하지만 &lt;b&gt;22년 차 개발자의 시선&lt;/b&gt;에서 볼 때, '지속 가능한 소프트웨어'를 만들기 위해서는 Kiro의 방식이 옳습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;38&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Cursor:&lt;/b&gt; 재즈 즉흥 연주 (Jam Session). 빠르고 신나지만, 다시 똑같이 연주하기 어렵다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Kiro:&lt;/b&gt; 오케스트라 악보 작성. 준비는 오래 걸리지만, 누가 연주해도 웅장하고 정확하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좀 더 간단히 설명하면 Cursor는 제약이 없는 AI 코딩 에디터인거 같고, Kiro는 설계된 구조 안에서 AI 코딩을 해 준다고 보면 될거 같습니다.&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;Kiro가&amp;nbsp;만능은&amp;nbsp;아니었습니다.&amp;nbsp;Cursor의&amp;nbsp;빠르고&amp;nbsp;직관적인&amp;nbsp;경험에&amp;nbsp;익숙해진&amp;nbsp;상태에서&amp;nbsp;Kiro를&amp;nbsp;쓰면서&amp;nbsp;느낀&amp;nbsp;명확한&amp;nbsp;답답함(Pain&amp;nbsp;Points)도&amp;nbsp;있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Spec&amp;nbsp;모드로&amp;nbsp;사용하게&amp;nbsp;되면,&amp;nbsp;간단한&amp;nbsp;수정도&amp;nbsp;'공사'가&amp;nbsp;됩니다.&amp;nbsp;(High&amp;nbsp;Overhead) &lt;br /&gt;그래서&amp;nbsp;Cursor에서는&amp;nbsp;&quot;이&amp;nbsp;버튼&amp;nbsp;색깔&amp;nbsp;빨강으로&amp;nbsp;바꿔줘&quot;&amp;nbsp;하면&amp;nbsp;끝입니다.&amp;nbsp;1초면&amp;nbsp;됩니다.&amp;nbsp;하지만&amp;nbsp;Kiro의&amp;nbsp;Spec&amp;nbsp;모드에서는&amp;nbsp;이&amp;nbsp;사소한&amp;nbsp;수정조차&amp;nbsp;'Task'로&amp;nbsp;인식되어&amp;nbsp;처리를&amp;nbsp;하게&amp;nbsp;됩니다.&amp;nbsp;(이건&amp;nbsp;예를&amp;nbsp;든겁니다.) &lt;br /&gt;그래서&amp;nbsp;Kiro에서는&amp;nbsp;Spec모드&amp;nbsp;말고,&amp;nbsp;Cursor처럼&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;Vibe&amp;nbsp;모드를&amp;nbsp;따로&amp;nbsp;둔거&amp;nbsp;같습니다. &lt;br /&gt;&lt;br /&gt;그래서&amp;nbsp;&lt;b&gt;빠른&amp;nbsp;프로토타이핑,&amp;nbsp;간단한&amp;nbsp;수정&amp;nbsp;(CSS,&amp;nbsp;오타),&amp;nbsp;혼자&amp;nbsp;작업하는&amp;nbsp;작은&amp;nbsp;프로젝트에서는&amp;nbsp;Vibe로&amp;nbsp;작업&lt;/b&gt;을&amp;nbsp;하고,&amp;nbsp; &lt;br /&gt;&lt;b&gt;복잡한&amp;nbsp;기능&amp;nbsp;개발&amp;nbsp;(인증,&amp;nbsp;결제,&amp;nbsp;대시보드&amp;nbsp;등),&amp;nbsp;팀&amp;nbsp;협업&amp;nbsp;(문서&amp;nbsp;공유&amp;nbsp;필요),&amp;nbsp;장기&amp;nbsp;유지보수가&amp;nbsp;필요한&amp;nbsp;프로젝트,&amp;nbsp;코드&amp;nbsp;리뷰가&amp;nbsp;필요한&amp;nbsp;상황에서는&amp;nbsp;Spec&amp;nbsp;으로&amp;nbsp;개발&lt;/b&gt;하는게&amp;nbsp;휠씬&amp;nbsp;유리한&amp;nbsp;것으로&amp;nbsp;보입니다. &lt;br /&gt;&lt;br /&gt;마지막으로&amp;nbsp;github에&amp;nbsp;문서&amp;nbsp;문서는&amp;nbsp;kiro에서&amp;nbsp;알아서&amp;nbsp;코드에&amp;nbsp;맞게&amp;nbsp;수정을&amp;nbsp;다&amp;nbsp;한&amp;nbsp;준것입니다. &lt;br /&gt;Cursor에서&amp;nbsp;MCP를&amp;nbsp;붙여서&amp;nbsp;사용해&amp;nbsp;보았지만,&amp;nbsp;완벽하게&amp;nbsp;문서&amp;nbsp;작업해&amp;nbsp;준&amp;nbsp;것은&amp;nbsp;kiro로&amp;nbsp;처음인거&amp;nbsp;같네요. &lt;br /&gt;Kiro와&amp;nbsp;MCP까지&amp;nbsp;붙이면&amp;nbsp;기능이&amp;nbsp;얼마나&amp;nbsp;더&amp;nbsp;막강해질지&amp;nbsp;모르겠네요.. &lt;br /&gt;현재 &lt;b&gt;Kiro의 사용하는 모델은 Claude 모델만 제공되고 있습니다&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;h3 data-path-to-node=&quot;39&quot; data-ke-size=&quot;size23&quot;&gt;  &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;결론: Cursor의 새로운 대항마&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;40&quot; data-ke-size=&quot;size16&quot;&gt;이번 해커톤을 통해 저는 코드를 '작성'하는 것이 아니라, AI에게 &lt;b&gt;'의도(Intent)'를 설명하고 '설계(Spec)'를 검증하는 역할&lt;/b&gt;을 수행했습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cursor가 '슈퍼 코딩 비서'라면, Kiro는 '든든한 파트너 아키텍트'입니다.&lt;/b&gt; 단순한 토이 프로젝트를 넘어, 유지보수가 필요한 실무 레벨의 프로덕트를 만든다면 Kiro의 &lt;b&gt;Spec-Driven&lt;/b&gt; 방식은 강력한 무기가 될 것입니다.&lt;/p&gt;
&lt;blockquote data-path-to-node=&quot;41&quot; data-ke-style=&quot;style3&quot;&gt;저의 짧은 사용 소감으로는 cursor를 대체할 강력한 IDE가 되지 않을까 싶습니다. 든든한 Amazon이 있고 해서 좀 더 시간이 지나서 다듬어지면 정말 강력해 질거라 생각합니다. 근데, 생각보다 홍보나 관심이 적은거 같습니다.&lt;br /&gt;&lt;br /&gt;좀 더 부연 설명을 하면, 저도 cursor와 비슷하지 않겠어? 라고 사용해 보았으나.. 생각보다 Kiro를 설계를 잘 해 주어서 별도로 요청하거나 추가된 명령어나 관리를 하지 않아도 된다는 것이 많이 편했습니다.&lt;br /&gt;실행후 알아서 test 하거나 문서까지 관리해 주면서 업데이트 되었나 확인하거나 체크할 필요가 없다는 것이 제일 편했던거 같습니다.(cursor나 cloude code 사용시에는 누락되는 경우가 많아서 자주 체크해야 했습니다. - 잘 되다가 한번 안하기 시작하면 어느 순간부터 누락된 줄도 모르다가 나중에 알게 되는 경우가 제법 많았습니다.)&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;41&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;363.png&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8XpxV/dJMcaiPjIv5/7xrHqubzAOVMcDae39KjJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8XpxV/dJMcaiPjIv5/7xrHqubzAOVMcDae39KjJK/img.png&quot; data-alt=&quot;Kiro Plan&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8XpxV/dJMcaiPjIv5/7xrHqubzAOVMcDae39KjJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8XpxV%2FdJMcaiPjIv5%2F7xrHqubzAOVMcDae39KjJK%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;770&quot; height=&quot;267&quot; data-filename=&quot;363.png&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Kiro Plan&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;현재 저는 KIRO PRO+ 를 사용중이나, 가입하면 무료도 500 크레딧을 주는데, 일주일동안 크레딧 생각하지 않고 무식하게 돌렸는데, 230 크레딧을 사용했네요.&lt;/p&gt;
&lt;p data-path-to-node=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;그렇게 만들어진 Momentum 입니다. 기본적으로 Hacker News RSS + Pomodoro + Todo List 를 제공합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;AWS api를 연동하면 AWS Monitoring + Pomodoro + Todo List 로 사용이 가능해 집니다.(현재 mock 데이타 돌아게 구성되어 있어요. 이 부분은 약간의 수정이 필요할수 있습니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;001.png&quot; data-origin-width=&quot;2540&quot; data-origin-height=&quot;1204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nw4SY/dJMcaaqf6t8/Cf26uaJz0TGDZJcWILTfe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nw4SY/dJMcaaqf6t8/Cf26uaJz0TGDZJcWILTfe0/img.png&quot; data-alt=&quot;Hacker News RSS + 포모도로 + Todo List Momentum&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nw4SY/dJMcaaqf6t8/Cf26uaJz0TGDZJcWILTfe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNw4SY%2FdJMcaaqf6t8%2FCf26uaJz0TGDZJcWILTfe0%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;2540&quot; height=&quot;1204&quot; data-filename=&quot;001.png&quot; data-origin-width=&quot;2540&quot; data-origin-height=&quot;1204&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Hacker News RSS + 포모도로 + Todo List Momentum&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;003.png&quot; data-origin-width=&quot;2543&quot; data-origin-height=&quot;1206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjTwdi/dJMcahiB8DS/NoGeo9h9nHIXHdMsRa6yVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjTwdi/dJMcahiB8DS/NoGeo9h9nHIXHdMsRa6yVk/img.png&quot; data-alt=&quot;설정 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjTwdi/dJMcahiB8DS/NoGeo9h9nHIXHdMsRa6yVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjTwdi%2FdJMcahiB8DS%2FNoGeo9h9nHIXHdMsRa6yVk%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;2543&quot; height=&quot;1206&quot; data-filename=&quot;003.png&quot; data-origin-width=&quot;2543&quot; data-origin-height=&quot;1206&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;설정 화면&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;005.png&quot; data-origin-width=&quot;2544&quot; data-origin-height=&quot;1211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sV4Zy/dJMcaihwIpi/PqH7vZgmZNq4UOBFnzkeeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sV4Zy/dJMcaihwIpi/PqH7vZgmZNq4UOBFnzkeeK/img.png&quot; data-alt=&quot;AWS Monitoring + Pomodoro + Todo List (포모도로 실행중인 모습)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sV4Zy/dJMcaihwIpi/PqH7vZgmZNq4UOBFnzkeeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsV4Zy%2FdJMcaihwIpi%2FPqH7vZgmZNq4UOBFnzkeeK%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;2544&quot; height=&quot;1211&quot; data-filename=&quot;005.png&quot; data-origin-width=&quot;2544&quot; data-origin-height=&quot;1211&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AWS Monitoring + Pomodoro + Todo List (포모도로 실행중인 모습)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;아래는 해당 프로젝트의 코드를 github에 모두 올려두었으니, 한번 코드와 .md파일을 참조해 보세요.&lt;/p&gt;
&lt;p data-path-to-node=&quot;41&quot; data-ke-size=&quot;size16&quot;&gt;해당 글이 도움이 되셨다가 &lt;b&gt;github 스타 좀 꾸욱 한번 눌러주시면 감사&lt;/b&gt;하겠습니다. ^^;&lt;/p&gt;
&lt;p data-path-to-node=&quot;42&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-path-to-node=&quot;43&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;GitHub:&lt;/b&gt; &lt;a href=&quot;https://github.com/devkan/kiro-momentum&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/devkan/kiro-momentum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Video:&lt;/b&gt; &lt;a href=&quot;https://youtu.be/PNIaPWN1PWo&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/PNIaPWN1PWo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>개발/AI</category>
      <category>agent</category>
      <category>AI</category>
      <category>cursor</category>
      <category>IDE</category>
      <category>kiro</category>
      <category>specdriven</category>
      <category>vibecoding</category>
      <category>바이브코딩</category>
      <category>키로</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/26</guid>
      <comments>https://kansm.tistory.com/26#entry26comment</comments>
      <pubDate>Sat, 6 Dec 2025 06:07:01 +0900</pubDate>
    </item>
    <item>
      <title>당뇨에 걸린 개발자 - 6개월의 기록(1)</title>
      <link>https://kansm.tistory.com/25</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;6개월전쯤에 당뇨가 있다는 것을 알게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;50대로 막 들어왔는데, 당뇨라니.. 많이 놀랐습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뉴스를 보니, 요새 당뇨 환자들이 많이 젊어졌다고 하더군요. 그래서 간단히 나마 제가 경험한 당뇨를 적어보려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 의사가 아니고, 개인적인 경험을 기술하는 것이니.. 참조만 하시고, 반드시 의사와 상의하셔야 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;건강검진&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2년전쯤에 건강검진을 받을때 혈당 수치가 높으니, 병원가서 검진을 받아보라는 통보를 받았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 정확하지는 않지만, 110근처되지 않나 생각이 됩니다. (공복수치입니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자로써 매일 앉아서 모니터만 보고 술을 좋아하니.. 언제가 올거라 생각했지만, 좀 빨리온거 아닌가해서 많이 걱정이 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만... 다들 그렇듯.. 걱정은 되지만 병원 내방을 하지 않고, 며칠만 근심하다가 점점 잊혀져 갔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 제대로 대처 했으면, 초반에 당뇨를 잡지 않았나 생각이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이글을 읽으신 분들은 아마 의심스럽거나 걱정이 되어서 읽을거라 생각이 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;의심이 되시면 제발 귀찮아 하지 마시고, 병원에 가서 당화혈색소 검사만 받아보시기&lt;/b&gt;&lt;/u&gt; 바랍니다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;몸의 증상&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다 6개월전쯤부터 몸이 점점 이상함을 느꼈습니다.&lt;/p&gt;
&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;&lt;/p&gt;
&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; 활동이 많은 것도 아니고, 운동이 거의 하지 않는데, 새벽에 다리에 쥐가 많이 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 나중에 알게 되었지만, 혈당이 높을수록 삼투성 이뇨로 수분/전해질이 빠져나가 쥐가 잘 난다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 손끝이 찌릿하거나 저림현상이 자주 발생했습니다.&lt;/b&gt;&lt;/p&gt;
&lt;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;b&gt;당뇨성 말초신경병증&lt;/b&gt;&lt;b&gt; 으로 &lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;저림/따가움/타는 느낌/무감각이 서서히 시작해 밤에 심해지기 쉽다고 하며, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 보통은 &lt;/span&gt;&lt;b&gt;발&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;에서 먼저 오고 나중에 &lt;/span&gt;&lt;b&gt;손&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;으로 올라오지만, 손 증상으로 먼저 느끼는 경우도 있다고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;- 취침후 2시간 되면 반드시 화장실을 가야 했습니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 이게 언제부터인지 정확하지 않은데, 인지를 한후에 생각해 보면, 밤에 늦게 취침을 하면 2시간 뒤에 반드시 화장실을 가기 위해서&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 깨게 됩니다. 술을 먹으면 더한거 같고요. 그래서 안 그래도 잠들기가 힘든데, 숙면을 해치면서 잠을 깨는 현상이 자주 발생합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 혈당이 높아 소변으로 당이 새면(당뇨 조절 불량) &lt;b&gt;삼투성 이뇨 증상&lt;/b&gt;이라고 하던데, 정확히 2시간일때 깨는게, 더 신기하더군요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;- 잦은 갈증과 허기, 그리고 단것이 땡기더군요.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 담배를 피워서 그런가 평소 간식이나 주전부리 같은 것을 전혀 안합니다. 그런데, 어느 순간부터 단것이 땡기기 시작하더군요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 특히 오렌지 주스가 갑자기 너무 먹고 싶어지더군요. 물도 많이 먹게 되고요..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 한번 배고픔을 느끼면 참을수도 없게 되는 증상도 같이 발생했습니다. 허기를 잘 참는 편인데, 어느 순간 참지를 못하게 되더군요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;- 마지막으로 몸무게가 빠지게 됩니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 위의 전조 증상이 있고 난뒤에 마지막으로 몸무게가 빠지게 되더군요. 저는 13kg정도가 2주정도만에 빠진거 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 몸으로 느껴집니다. 뱃살 확 줄고, 허벅지와 팔뚝살도 빠진게 눈으로 확연히 보이게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 이는 &lt;b&gt;인슐린이 부족&lt;/b&gt;하거나 &lt;b&gt;잘 안 먹히는 상태(인슐린 저항성)&lt;/b&gt;으로 근육&amp;middot;지방세포에 포도당을 전달을 못합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 그래서 세포는 굶고(못 써서), 몸은 당을 버리고(소변), 그래서 지방&amp;middot;근육을 태우면서 살이 빠지게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; 이때 큰일 났다는 것은 느끼고, 병원에 가야 한다는 생각이 들었습니다.&lt;/span&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-filename=&quot;264.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zuW9t/dJMb8ZCaVXB/UKrRk3kroIiwCwhiQWswk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zuW9t/dJMb8ZCaVXB/UKrRk3kroIiwCwhiQWswk0/img.png&quot; data-alt=&quot;당뇨의 주요 증상&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zuW9t/dJMb8ZCaVXB/UKrRk3kroIiwCwhiQWswk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzuW9t%2FdJMb8ZCaVXB%2FUKrRk3kroIiwCwhiQWswk0%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;1024&quot; height=&quot;1536&quot; data-filename=&quot;264.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;당뇨의 주요 증상&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px; color: #f89009;&quot;&gt;민간요법&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;위 증상은 몸무게 빠지는 것을 제외하고는 몇개월간에 걸쳐 나타난 증상입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;당뇨라는 것이 인지를 하면서 병원에 바로 가지 않았습니다. 지금 생각하면 무식한 생각이지만, 왠지 한번 진단을 받으면 왠지 당뇨 환자로 살아가야 할거 같아서, 바보처럼 민간 요법을 찾게 되었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;우선 여주가 좋다고 해서 끊여먹고, 식후 운동도 30분씩 하고, 술도 줄이고 했으나.. 나중에 알게 되었지만 약만 먹으면 다 해결이 됩니다. 고생할 필요가 없습니다. 약을 먹으면 바로 혈당이 돌아옵니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px; color: #f89009;&quot;&gt;음주&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;솔직히 &lt;b&gt;&lt;u&gt;병원에 가지 못한 제일 큰 이유는 아마도 술을 못 먹게 되지 않을까&lt;/u&gt;&lt;/b&gt; 하는 이유가 컸습니다. 가족이 당뇨인 것은 알게 되면 술을 먹지 못하지 않을까 하는 생각에 병원을 가지 못한 제일 큰 이유였던거 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이 내용은 먹는 약과 나이에 따라 틀립니다. 절대적이지 않으니 주의하셔야 합니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;결론부터 말하면 약 먹으면서 현재 술을 마시고 있기는 합니다. 안 먹으면 이제 분명 최선이고, 의사도 술을 자제하라고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;술을 먹으면 간에서 포도당 분해보다 알콜 분해를 먼저하기 때문에 저혈당이 올수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;즉, &lt;u&gt;당뇨약으로 인해 혈당이 줄어드는데, 거기에 알콜이 들어오면 더 혈당 흡수를 막기 때문에 저혈당이 올수 있으니 반드시 주의&lt;/u&gt;해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차후 좀더 자세히 적겠지만, 마셔야 한다면 저녁 약은 먹지 않거나 식사와 함께 하시기를 바랍니다. 그리고 초기에는 반드시 음주 2~3시간뒤 혈당을 체크해서 혈당이 얼마나 떨어지는지 체크해 보시기 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 이전과 동일하게 음주하시면 안됩니다. &lt;u&gt;이전보다 줄어야 하는 것은 어쩔수 없을거 같습니다&lt;/u&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;제가 음주를 먼저 언급한 것은 &lt;b&gt;음주로 인해 병원 내방을 망설이는 것보다 약을 먹으면서 관리하는 것이 더 낫다고 생각&lt;/b&gt;해서 적어봅니다. 제 나이대면 분명 이것으로 저처럼 망설이거나 하는 분이 계실거 같아서 먼저 적은 겁니다.&lt;/span&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-filename=&quot;banner_1024_1.png&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;337&quot;&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.medicalcheckapp&quot; target=&quot;_blank&quot; title=&quot;medical check app&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eyO6fe/dJMcaaXSuAF/RsacBpKUk3uK5EGczErawk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeyO6fe%2FdJMcaaXSuAF%2FRsacBpKUk3uK5EGczErawk%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;1386&quot; height=&quot;337&quot; data-filename=&quot;banner_1024_1.png&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;검진 결과&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;갑자스러운 체중 감량에 위기감을 느끼고, 결국 병원가서 점사를 받았습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;검사는 간단했으며, 피 검사와 당화혈색소 검사를 같이 했습니다. 피 검사는 당뇨 합병증으로 인해 다른 곳에 문제가 있는지 수치를 확인하기 위해서 하는 겁니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;결과는 충격적이였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;당뇨 수치(혈당 농도)는 339 &lt;/span&gt;mg/dL&lt;/b&gt; 였습니다. 정상 기준은&amp;nbsp;&amp;lt;100 mg/dL 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;당화혈색소는 11.4%&lt;/b&gt; 가 나왔으며, 정상 기준은&amp;nbsp;&amp;lt;5.7% 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수치는 많이 높게 나왔습니다. 그러니까 살이 빠진것이겠지만..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 빨리 병원을 가서 그런가, 신장과 간수치등 다른 수치는 괜찮다고 하더군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아.. 고혈압도 있어서 고혈압약도 같이 처방 받았습니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약 먹으면서 식사는 평소 먹듯이 먹으면 됩니다. 구지 식이요법이나 신단 관리하지 않아도 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(물론 중증이거나 심한 경우가 아닌 일반적인 경우에 한하는 겁니다.)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약을 먹으니, 더 일찍 가서 관리를 하지 못한 것이 후회스럽더군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다들 아시겠지만, 당뇨에 걸리면 끈적한 설탕 피가 몸을 돌려서 모든 장기에 무리를 주게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 당뇨 합병증이 무섭다고 하는 겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저처럼 무식하게 &lt;b&gt;민간요법 찾거나 술 때문에 고민하지 마세요&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진료받고, 약 먹으면서 관리하면 중증이 아니면 거의 정상적으로 회복이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매스컴이나 주변에 많이 들어왔던 얘기인데, 실제로 경험해 보니.. 틀린 것도 있고, 제가 잘못 안것도 있고 해서 자세히 적어보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글을 읽어보시는 분들은 이전의 저처럼 병원에 갈까말까 고민하시는 분들이 많으실 것인데..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단호히 말씀 드립니다. 그냥 병원 가서 진찰부터 받으세요. 30분정도만 사용하면 근심과 고민이 사라집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다들 건강하세요..&lt;/p&gt;</description>
      <category>건강</category>
      <category>Diabetes</category>
      <category>medicalcheck</category>
      <category>고혈압</category>
      <category>고혈압관리</category>
      <category>당뇨</category>
      <category>당뇨증상</category>
      <category>당화혈색소</category>
      <category>인슐린</category>
      <category>혈당</category>
      <category>혈당관리</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/25</guid>
      <comments>https://kansm.tistory.com/25#entry25comment</comments>
      <pubDate>Fri, 31 Oct 2025 16:43:54 +0900</pubDate>
    </item>
    <item>
      <title>react-native-libsodium에서 escape와 .so 관련 오류 해결하기</title>
      <link>https://kansm.tistory.com/24</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;간단히 오류 해결을 위한 글로, 경어체는 생각하고 작성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감안하고 봐 주세요.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;이글을 쓰는 이유는 OpenAI, Claude, Gemini에 디테일하게 물어보았으나, 전혀 다른 방법으로 답변을 알려주어서, 삽질을 많이 했습니다. 그래서 &lt;b&gt;삽질 방지용으로 적어봅니다&lt;/b&gt;.&lt;br /&gt;escape쪽은 어느정도 해결을 해 주려고 하고, .so 파일에서는 별도 .so파일 구성을 하거나, wsl로 실행을 하라는등 별도 .so 설치하는 쪽으로 답변을 해었습니다.&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React Native(RN) 앱을 구성하면서 데이타 필드의 암호화가 필요해서 react-native-libsodium를 사용하기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 libsodium을 설치하고 안드로이드로 빌드로 계속해서 오류를 발생시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 그외 관련된 간단히 해결책이나 팁이라 생각되어 적어본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 설치된 패키지들의 버전이며, 빌드는 윈도우 환경에서 실행하고 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1758011905015&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;react&quot;: &quot;19.1.0&quot;,
&quot;react-i18next&quot;: &quot;^15.6.0&quot;,
&quot;react-native&quot;: &quot;0.80.1&quot;,
&quot;react-native-libsodium&quot;: &quot;^1.4.0&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &lt;span style=&quot;background-color: #ffffff; color: #c95549; text-align: start;&quot;&gt;CMakeLists escape 오류&lt;/span&gt; &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1758013030549&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; npx react-native run-android
....
&amp;gt; Task :react-native-libsodium:configureCMakeDebug[arm64-v8a] FAILED
C/C++: CMake Warning (dev) in CMakeLists.txt:
C/C++:   No project() command is present.  The top-level CMakeLists.txt file must
C/C++:   contain a literal, direct call to the project() command.  Add a line of
C/C++:   code such as
C/C++:     project(ProjectName)
C/C++:   near the top of the file, but after cmake_minimum_required().
C/C++:   CMake is pretending there is a &quot;project(Project)&quot; command on the first
C/C++:   line.
C/C++: This warning is for project developers.  Use -Wno-dev to suppress it.
C/C++: CMake Error at CMakeLists.txt:34 (add_library):
C/C++:   Syntax error in cmake code when parsing string
C/C++:     D:\App\Release_V1\node_modules/react-native/ReactCommon/jsi/jsi/jsi.cpp
C/C++:   Invalid character escape '\K'.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 node_modules\react-native-libsodium\android\CMakeLists.txt에서 escape를 별도 처리해 줘야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1758014811586&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cmake_minimum_required(VERSION 3.4.1)

project(react_native_libsodium LANGUAGES C CXX)

set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Gradle 쪽에서 -DNODE_MODULES_DIR=... 을 넘겨줘야 합니다.
if(NOT DEFINED NODE_MODULES_DIR)
  message(FATAL_ERROR &quot;NODE_MODULES_DIR is not defined. Pass -DNODE_MODULES_DIR=&amp;lt;path to node_modules&amp;gt; from Gradle.&quot;)
endif()

# Windows의 '\' 경로를 CMake 내부 표현('/')로 변환
file(TO_CMAKE_PATH &quot;${NODE_MODULES_DIR}&quot; NODE_MODULES_DIR_CMAKE)

# 경로들 정리
set(PROJECT_CPP_DIR &quot;${CMAKE_CURRENT_LIST_DIR}/../cpp&quot;)
set(JSI_DIR         &quot;${NODE_MODULES_DIR_CMAKE}/react-native/ReactCommon/jsi&quot;)
set(REACT_DIR       &quot;${NODE_MODULES_DIR_CMAKE}/react-native/React&quot;)
set(REACT_BASE_DIR  &quot;${NODE_MODULES_DIR_CMAKE}/react-native/React/Base&quot;)

# libsodium 빌드 루트
set(LIBSODIUM_BUILD_DIR &quot;${CMAKE_CURRENT_LIST_DIR}/../libsodium/build&quot;)

# ABI 별 libsodium 빌드 디렉터리 선택
if(${ANDROID_ABI} STREQUAL &quot;arm64-v8a&quot;)
  set(LIBSODIUM_BUILD_DIR &quot;${LIBSODIUM_BUILD_DIR}/libsodium-android-armv8-a+crypto&quot;)
elseif(${ANDROID_ABI} STREQUAL &quot;armeabi-v7a&quot;)
  set(LIBSODIUM_BUILD_DIR &quot;${LIBSODIUM_BUILD_DIR}/libsodium-android-armv7-a&quot;)
elseif(${ANDROID_ABI} STREQUAL &quot;x86&quot;)
  set(LIBSODIUM_BUILD_DIR &quot;${LIBSODIUM_BUILD_DIR}/libsodium-android-i686&quot;)
else()
  set(LIBSODIUM_BUILD_DIR &quot;${LIBSODIUM_BUILD_DIR}/libsodium-android-westmere&quot;)
endif()

# 사전 빌드된 sodium(.so)을 IMPORTED 타깃으로 선언
add_library(sodium SHARED IMPORTED)
set_target_properties(sodium PROPERTIES
  IMPORTED_LOCATION &quot;${LIBSODIUM_BUILD_DIR}/lib/libsodium.so&quot;
  INTERFACE_INCLUDE_DIRECTORIES &quot;${LIBSODIUM_BUILD_DIR}/include&quot;
)

# 우리 모듈 (JSI 브리지)
add_library(libsodium
  SHARED
  &quot;${JSI_DIR}/jsi/jsi.cpp&quot;
  &quot;${PROJECT_CPP_DIR}/react-native-libsodium.cpp&quot;
  &quot;${PROJECT_CPP_DIR}/react-native-libsodium.h&quot;
  &quot;${CMAKE_CURRENT_LIST_DIR}/cpp-adapter.cpp&quot;
)

# 인클루드 경로
target_include_directories(libsodium
  PRIVATE
    &quot;${PROJECT_CPP_DIR}&quot;
    &quot;${JSI_DIR}&quot;
    &quot;${REACT_DIR}&quot;
    &quot;${REACT_BASE_DIR}&quot;
    &quot;${LIBSODIUM_BUILD_DIR}/include&quot;
)

# 링크
target_link_libraries(libsodium PRIVATE sodium)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #2c2c2b; text-align: start;&quot;&gt;이렇게 구성하고 다시 빌드하니, 아래처럼 오류가 발생했음..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #2c2c2b; text-align: start;&quot;&gt;빌드시 &lt;b&gt;./gradlew clean&lt;/b&gt; 으로 캐시를 없애고 난뒤에 작업해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1758015042446&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C/C++: CMake Error in CMakeLists.txt: C/C++: Imported target &quot;sodium&quot; includes non-existent path 
C/C++:   &quot;D:/App/Release_V1/node_modules/react-native-libsodium/android/../libsodium/build/libsodium-android-armv8-a+crypto/include&quot; 
C/C++: in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include: 
C/C++: * The path was deleted, renamed, or moved to another location. 
C/C++: * An install or uninstall procedure did not complete successfully. 
C/C++: * The installation package was faulty and references files it does not 
C/C++: provide. 
C/C++: CMake Generate step failed. Build files cannot be regenerated correctly.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런&amp;nbsp;오류가&amp;nbsp;발생했다.&amp;nbsp;이건&amp;nbsp;libsodium/build/libsodium-android-armv8-a+crypto&amp;nbsp;를&amp;nbsp;찾지&amp;nbsp;못해서&amp;nbsp;생긴&amp;nbsp;문제이다&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-filename=&quot;050.png&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LcTIU/btsQCQLOwg4/4PS4sD5aeBzH81RsD6BvYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LcTIU/btsQCQLOwg4/4PS4sD5aeBzH81RsD6BvYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LcTIU/btsQCQLOwg4/4PS4sD5aeBzH81RsD6BvYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLcTIU%2FbtsQCQLOwg4%2F4PS4sD5aeBzH81RsD6BvYK%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;410&quot; height=&quot;157&quot; data-filename=&quot;050.png&quot; data-origin-width=&quot;410&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node_modules/react-native-libsodium/libsodium/ 의 구조로, 여기서 AI들은 build.sh 를 실행하라고 했다. 당연히 윈도우에서는 .sh 이 실행이 안되니.. 좀더 대화가 들어가면 WSL이나 MSYS2, Git Bash로 빌드 시키는 방향으로 전개 시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(리눅스나 Mac에서는 build.sh를 실행하면 쉽게 해결이 될수 있다. 하지만 윈도우는 아닐것으로 생각이 된다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;하지만 그럴 필요가 없이,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;그냥 &lt;u&gt;build.tgz를 풀어만 주면 된다&lt;/u&gt;&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;프리빌트 파일을 아직 전개(extract)하거나 빌드하지 않은 상태&lt;/b&gt;라서 CMake가 &amp;ldquo;없는 경로&amp;rdquo;라고 실패한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때는 그냥 build.tgz의 압축을 풀어주면 된다. 주의할 것은 윈도우에서 압축을 풀면 build/build로 풀리기는 한데, /build/libsodium-android-armv8-a+crypto/ 이렇게 디렉토리 구성이 되어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 빌드시 정상적으로 .so 파일이 생성이 될 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;051.png&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;692&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4Qb5K/btsQCv2dRHQ/hiIJtDCPAsPYNtGTRFzQA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4Qb5K/btsQCv2dRHQ/hiIJtDCPAsPYNtGTRFzQA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4Qb5K/btsQCv2dRHQ/hiIJtDCPAsPYNtGTRFzQA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4Qb5K%2FbtsQCv2dRHQ%2FhiIJtDCPAsPYNtGTRFzQA1%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;450&quot; height=&quot;692&quot; data-filename=&quot;051.png&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;692&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;다시 재빌드시 정상적으로 생성된 libsodium.so 파일들..&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;libsodium을 RN에서 처음 사용해 봐서 삽질을 했는데, 해결하고 보니.. 진짜 별거 아닌거 같네요..ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 빌드시 계속 오류를 발생시켜서 많이 헤맸습니다.. ㅡ.ㅜ;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이글을 보시는 분들께 조금이나마 도움이 되었으면 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 오늘도 좋은 하루 보내시기 바랍니다.. ^^;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발/React &amp;amp; React Native</category>
      <category>CMakeLists</category>
      <category>CMakeLists escape</category>
      <category>libsodium</category>
      <category>React Native</category>
      <category>react-native-libsodium</category>
      <category>리액트</category>
      <category>리액트 네이티브</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/24</guid>
      <comments>https://kansm.tistory.com/24#entry24comment</comments>
      <pubDate>Tue, 16 Sep 2025 18:50:07 +0900</pubDate>
    </item>
    <item>
      <title>react-native-gifted-charts 에서 차트 라인 끊기</title>
      <link>https://kansm.tistory.com/23</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 팁을 올려 두는 것이라서 경어체를 사용하지 않는다는 점 이해해 주셨으면 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;react native의 차트에서 없는 수치를 제대로 표기 못하는 문제가 발생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제를 해결하기 위해서 여러 가지 방법을 찾았으나, 제대로 된 방법을 찾지 못해 며칠간 고생을 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 로 해결을 될 줄 알았는데, 0을 넣으라는 둥, null을 넣으라는 둥 이상한 방법만 알려주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;react-native-gifted-charts 의 설치된 버전은&amp;nbsp;1.4.63 이다.&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-filename=&quot;755.png&quot; data-origin-width=&quot;379&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOgXbF/btsPz04KnD3/Tv8L3rgNDGKKk7in0lCaDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOgXbF/btsPz04KnD3/Tv8L3rgNDGKKk7in0lCaDK/img.png&quot; data-alt=&quot;문제의 차트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOgXbF/btsPz04KnD3/Tv8L3rgNDGKKk7in0lCaDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOgXbF%2FbtsPz04KnD3%2FTv8L3rgNDGKKk7in0lCaDK%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;379&quot; height=&quot;214&quot; data-filename=&quot;755.png&quot; data-origin-width=&quot;379&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;문제의 차트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #282c34; color: #abb2bf;&quot;&gt;
&lt;div style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c678dd;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; before&lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;Data&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; [&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;102&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;121&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;110&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; },&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;108&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; },&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; ]; &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #282c34; color: #abb2bf;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c678dd;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;afterData&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;134&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 3주차 - 데이터 있음&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;124&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 4주차 - 데이터 있음&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; ]; &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 출력되는 데이타였다. 그러면서 afterData가 좌측으로 밀리면서 출력하는 문제가 발생한 것이였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 afterData를 아래처럼 변경 했으나, 원치 않는 결과였다. 없는 데이타를 0으로 표기한 것이니 이것을 출력하게 되는 것이였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #282c34; color: #abb2bf;&quot;&gt;
&lt;div style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c678dd;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;afterData&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; [&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 1주차 - 데이터 없음&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 2주차 - 데이터 없음 &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;134&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 3주차 - 데이터 있음&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;124&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 4주차 - 데이터 있음&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #abb2bf;&quot;&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; ]; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;756.png&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y0NUs/btsPBIaqyda/6B6hKuQQyVUSPiEGY6dkD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y0NUs/btsPBIaqyda/6B6hKuQQyVUSPiEGY6dkD1/img.png&quot; data-alt=&quot;불필요하게 0부터 시작한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y0NUs/btsPBIaqyda/6B6hKuQQyVUSPiEGY6dkD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY0NUs%2FbtsPBIaqyda%2F6B6hKuQQyVUSPiEGY6dkD1%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;397&quot; height=&quot;248&quot; data-filename=&quot;756.png&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;불필요하게 0부터 시작한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이것의 불필요한 데이타를 처리하기 위해서는 interpolateMissingValues={false} 를 적용하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 데이타를 0으로 하면 변화가 없으니 null로 대체해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #282c34; color: #abb2bf;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c678dd;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;afterData&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 1주차 - 데이터 없음&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 2주차 - 데이터 없음 &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;134&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 3주차 - 데이터 있음&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; { &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;124&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #98c379;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; }, &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #5c6370;&quot;&gt;// 4주차 - 데이터 있음&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; ]; &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #282c34; color: #abb2bf;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #e5c07b;&quot;&gt;LineChart&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;beforeData&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;.length &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;beforeData&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;afterData&lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;data2&lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;beforeData&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;.length &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;afterData&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;afterData&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;undefined&lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;showDataPointsForMissingValues&lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #abb2bf;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;interpolateMissingValues&lt;/span&gt;&lt;span style=&quot;color: #56b6c2;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #d19a66;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #e06c75;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LineChart의 데이터 배열에서 null 또는 undefined 값을 만나면 기본적으로 보간(interpolation)이 적용되어 선이 연속적으로 그려지는데, 이것을 막기 위해서 interpolateMissingValues={false}로 설정하면, 해당 값에서 라인이 끊어지게 된다.&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-filename=&quot;757.png&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1SQMx/btsPzYlB675/njo9Bain9JWTJz8j9PKBHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1SQMx/btsPzYlB675/njo9Bain9JWTJz8j9PKBHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1SQMx/btsPzYlB675/njo9Bain9JWTJz8j9PKBHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1SQMx%2FbtsPzYlB675%2Fnjo9Bain9JWTJz8j9PKBHk%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;394&quot; height=&quot;200&quot; data-filename=&quot;757.png&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 처리된 최선 차트..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 형태로 차트가 구성이 되었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발/React &amp;amp; React Native</category>
      <category>interpolation</category>
      <category>react</category>
      <category>React Native</category>
      <category>react-native-gifted-charts</category>
      <category>리액트</category>
      <category>리액트 네이티브</category>
      <author>라이언 칸</author>
      <guid isPermaLink="true">https://kansm.tistory.com/23</guid>
      <comments>https://kansm.tistory.com/23#entry23comment</comments>
      <pubDate>Sat, 26 Jul 2025 14:28:25 +0900</pubDate>
    </item>
  </channel>
</rss>