<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>kairos-hk.log</title>
        <link>https://velog.io/</link>
        <description>Security, Web, AI, Embedded</description>
        <lastBuildDate>Mon, 28 Apr 2025 07:28:57 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>kairos-hk.log</title>
            <url>https://velog.velcdn.com/images/kairos-hk/profile/9a3bcc4e-90b2-42ea-a729-9702c9f46af7/image.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. kairos-hk.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/kairos-hk" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Shannon's Information Theory]]></title>
            <link>https://velog.io/@kairos-hk/Shannons-Information-Theory</link>
            <guid>https://velog.io/@kairos-hk/Shannons-Information-Theory</guid>
            <pubDate>Mon, 28 Apr 2025 07:28:57 GMT</pubDate>
            <description><![CDATA[<h2 id="entropy">Entropy</h2>
<p><strong>엔트로피는 정보량의 평균이다.</strong></p>
<p>정보량은 낮은 확률의 사건이 일어날수록 유의미한 정보를 담고 있다는 가정이다.
단순한 1:1의 비율의 사건은 어떠한 일이 발생되는 놀랍지 않으나, 10000000:1의 비율로 특정 사건이 발생한 경우 이는 매우 큰 정보량을 가지게 된다.</p>
<p>단순히 정보량을 확률의 역수로 정의하면 해결될 것처럼 보이지만 그렇지 않다. 정보량의 평균을 위해선 단조 증가 함수로 인해 Log2를 사용하여 표시해야 한다.</p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/ebb8205e-2ccf-4e70-aba1-9a813b2f71a6/image.png" alt=""></p>
<p>결국 Entropy는 정보량에 확률를 곱하고 더하여, 평균 값을 계산한 것이다.
어떠한 확률 분호 p(x)에서 일어날 수 있는 모든 사건들의 정보량에 평균, 즉 자체가 보유한 정보의 량을 뜻한다.</p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/93b86c2c-29f9-4e3f-9563-628f57579595/image.png" alt=""></p>
<h2 id="shannon-entropy">Shannon Entropy</h2>
<p>Shannon이 제시한 Information Theory에서 Entropy는 확률 변수 기반의 Uncertainty에 대한 척도라 볼 수 있다. 이는 정보량에 대한 기댓값이며 Bit를 단위로 사용한다.</p>
<p>Discrete Data에 대한 Entropy를 Shannon Entropy라 시스템에서 유의미한 정보를 얻는데 필요한 기대 비용의 최소값이라 볼 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/a03c6ec7-e297-4787-993f-b2537e3f941e/image.png" alt=""></p>
<p>Entropy -&gt; 이론적 확률 X 최적의 조건으로 실험 수행 비용 = 기대 비용의 최소값</p>
<h2 id="joint-entropy">Joint Entropy</h2>
<p>확률 p(x)와 p(y)가 동시에 작용되어 일어날 확률은 p(x,y), 교집합을 통해 확장이 가능하다. Entropy도 동일하게 교집합을 통해 두 사건에 대한 교차된 Entropy를 구할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/6a7cba13-6dea-45cc-a4e3-3ceaacd48838/image.png" alt=""></p>
<p>쉽게 보면 기존 Entropy에서 사건 2개에 대해서만 확장하였기에 p(x), P(y)가 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[24.02.24. DevCon Daejeon : GIS]]></title>
            <link>https://velog.io/@kairos-hk/24.02.24.-DevCon-Daejeon-GIS-bogqe5a2</link>
            <guid>https://velog.io/@kairos-hk/24.02.24.-DevCon-Daejeon-GIS-bogqe5a2</guid>
            <pubDate>Tue, 16 Apr 2024 02:11:25 GMT</pubDate>
            <description><![CDATA[<ul>
<li><p>GIS란 무엇인가?</p>
<ul>
<li><p>GIS → Geographic Information System</p>
</li>
<li><p>쉽게 → 시공간과 관련된 모든 정보를 다루는데 쓰이는 여러 방법과 다양한 자원</p>
</li>
<li><p>지리 공간과 관련된 모든 정보 → 시+공간 (Spatio-temporal)</p>
<ul>
<li>위치 정보 : 절대적인 정보(좌표), 상대적인 정보 (102동 102호)</li>
<li>시간 추가 : 같은 공간 다른 시간 정보를 가지는 관찰 가능한 현상 정보</li>
<li>예시 : 지도(공간에 대한 정보를 알려줌), 주소 (좌표에 이름을 붙임), 부동산 정보(시세, 소유주), 기상 데이터(시간에 따라 변하는 현상)</li>
</ul>
</li>
</ul>
</li>
</ul>
<pre><code>- 여러 방법 - 벡터와 레스터
    - 벡터(Vector)
        - 도형 데이터 + 객체의 속성
        - 수학에서의 벡터의 정의와 다름
            - 수학에서의 백터 : 방향과 크기를 가진 객체
            - 여기서는 컴퓨터가 이해 가능한 형태로 도형을 서술
        - 점(0D), 선(1D), 면(2D), 부피(3D)

    - 레스터(Raster)
        - 이미지, 영상
        - 현실 세계를 표현한 데잍
        - 이미지(array) + 위치 및 기타 메타 데이터
            - 1픽셀 당 실제 세계의 축적 비율
                - 0.3m 해상도 : 1픽셀당 0.3m 표현
            - 좌표계 : 데이터를 지도 위에 뿌리는 방법
            - 밴드 정보 : array의 차원 수
                - RGB로 데이터를 표현한다면 밴드 수는 3</code></pre><ul>
<li><p>GIS 데이터의 특징</p>
<ul>
<li><p>Layered data</p>
<ul>
<li>공통된 공간 속성을 가진 데이터 각각을 Layer로 취급해서 데이터를 쌓을 수 있다.<ul>
<li>Real World → GIS Layer → Data (Full view, Elevations, Building… etc..)</li>
</ul>
</li>
</ul>
</li>
<li><p>시각화</p>
<ul>
<li>다차원 데이터 + 실제 생활에 일어나는 현상에 대한 데이터 → 직관적인 이해를 위해 지도 위에 시각화</li>
</ul>
</li>
<li><p>의사 결정</p>
<ul>
<li>여러 분야의 데이터들을 한번에 볼 수 있어 데이터에 대한 다양한 시각 제공</li>
</ul>
</li>
<li><p>다차원의 데이터</p>
<ul>
<li>2차원 : 일반 지도(x,y)</li>
<li>3차원 : 2차원 + z축 / 2차원 + 시간<ul>
<li>동일 위치(x,y)에 존재하더라도 시간으로 객체 구별이 가능함</li>
</ul>
</li>
<li>4차원 : 2차원 + z축 + 시간<ul>
<li>예) 기상 데이터 : 위도(x), 경도(y), 고도(z), 시간(t)</li>
</ul>
</li>
</ul>
</li>
<li><p>데이터를 나타내는 여러 표준들</p>
<ul>
<li><p>여러 분야에서 서로 만든 gis데이터를 사용할려면?</p>
<ul>
<li>재활용성, 상호 호환성이 중요</li>
</ul>
</li>
<li><p>공통의 표준 하에 데이터를 표현하는 것이 중요</p>
</li>
<li><p>표준 기관 : OGC(Open Geospatial Consortium), ISO 등이 있음</p>
<ul>
<li><p>ex) 하나의 점을 어떻게 표현할 것인가?</p>
</li>
<li><p>geojson (json + gis)</p>
<pre><code class="language-json">  {
      &quot;type&quot;:&quot;point&quot;,
      &quot;coordinates&quot;:[-121,41]
  }</code></pre>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<pre><code>- GIS 개발자가 되기 위해 알아야 하는 것들
    - 필요한 사전지식등
        - 데이터 이해 : 도메인 지식과 표준
            - 3차원의 지구를 어떻게 데이터에 담아낼까?
                - 투영법 : 지도 작성법
                - 좌표계 : 위치 정보를 좌표를 통해 나타냄</code></pre><ul>
<li><p>공간 정보 Bi에 LLM을 섞기..!!</p>
<ul>
<li><p>Carto.? ← 공간정보 Bi 도구 !!</p>
</li>
<li><p>qgis → 지도 만들거나 좌표계 변환 등등…</p>
</li>
<li><p>사람 → 자연어 → gemini → SQL → Carto</p>
<p>Gemini → 빠른 응답 속도, 큰 사이즈의 Context Length</p>
<p>시멘틱 서치</p>
<p>유클리디안 방식</p>
<p>코사인 유사도 방식</p>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Network Study feat.PacketTracer]]></title>
            <link>https://velog.io/@kairos-hk/Network-Study-feat.PacketTracer</link>
            <guid>https://velog.io/@kairos-hk/Network-Study-feat.PacketTracer</guid>
            <pubDate>Sun, 18 Feb 2024 04:30:41 GMT</pubDate>
            <description><![CDATA[<h2 id="네트워크-범위-구하기">네트워크 범위 구하기</h2>
<p>10.0.0.0/25
255.255.255.128
네트워크 범위 -&gt; 10.0.0.0 ~ 10.0.0.127 (Network id ~ BroadCast 주소)</p>
<p>실제 할당 가능한 범위 -&gt; 10.0.0.0 ~ 10.0.0.126</p>
<p>IP    : 0000 1010 . 0000 0000 . 0000 0000 . 0|000 0000
서브 : 1111 1111 . 1111 1111 . 1111 1111 . 1|000 0000</p>
<p>&lt;제일 큰 경우&gt;
IP    : 0000 1010 . 0000 0000 . 0000 0000 . 0|111 1111</p>
<hr>
<p>10.0.10.0/18</p>
<p>0000 1010 . 0000 0000 . 00|00 1010 . 0000 0000</p>
<p>1111 1111 . 1111 1111 . 11|00 0000 . 0000 0000</p>
<p>최소 : 00 0000 . 0000 0000</p>
<p>최대 : 11 1111 . 1111 1111</p>
<p>11 1111 → 63</p>
<p>1111 1111 → 255</p>
<p>10.0.0.0 ~ 10.0.63.255</p>
<hr>
<p>10.0.10.12/29</p>
<p>0000 1010 . 0000 0000 . 0000 1010 . 0000 1|100</p>
<p>1111 1111 . 1111 1111 . 1111 1111 . 1111 1|000</p>
<p>1|000 ~ 1|111</p>
<p>10.0.10.8 ~ 10.0.10.15</p>
<hr>
<p>10.0.10.11/27</p>
<p>0000 1010 . 0000 0000 . 0000 1010 . 000 | 0 1011</p>
<p>1111 1111 . 1111 1111 . 1111 1111 . 111 | 0 0000</p>
<p>1 1111 → 31</p>
<p>10.0.10.0 ~ 10.0.10.31</p>
<hr>
<h2 id="packer-tracer">Packer Tracer</h2>
<ul>
<li>컨트롤 + R → CLI 기본 설정 및 포트 라벨 보이기</li>
</ul>
<Router2911>

<ul>
<li>CLI 관리자 모드 접속 → enable</li>
<li>? → 사용 가능한 명령어들</li>
<li>configure terminal</li>
<li>hostname (원하는거) → 이름 변경</li>
<li>no shutdown → 모든 포트 활성화</li>
<li>ip address 192.168.0.254 255.255.255.0</li>
<li>show running-config</li>
<li>interface gig0/0</li>
<li>no ip address → 지우기<ul>
<li>&lt;앞에 no 만 붙이면 어떤 것이든 다 삭제&gt;</li>
</ul>
</li>
<li>show ip route → Routing Table 경로</li>
<li>ip route 172.16.0.0 255.255.255.255 1.1.1.2</li>
</ul>
<Switch>

<ul>
<li><p>Trunk → BroadCast 2개 이상 분리 가능</p>
</li>
<li><p>switchport access vlan 10</p>
</li>
<li><p>switchport trunk allowed vlan all → 모든 vlan 통과</p>
</li>
<li><p>switchport trunk allowed vlan add 10, 20  →  10,20번 vlan만 통과</p>
</li>
<li><p>switchport trunk allowed vlan except 10 → 10번 vlan빼고 다 통과</p>
</li>
<li><p>Trunk Native !!!!!!!!!!!!!!!!!</p>
</li>
<li><p>switchport trunk native vlan 20</p>
</li>
<li><p>vtp mode transparent → 아무것도 없는 것처럼</p>
</li>
<li><p>vtp mode client</p>
</li>
<li><p>vtp password 1234</p>
</li>
<li><p>vtp domain <a href="http://test.com/">test.com</a></p>
</li>
<li><p>#int range fa0/1-20</p>
</li>
<li><p>spanning-tree portfast</p>
</li>
<li><p>channel-protocol pagp</p>
</li>
<li><p>int range fa0/1-2</p>
</li>
<li><p>channel-protocol pagp</p>
</li>
<li><p>channel-group 1 mode auto</p>
</li>
<li><p>channel-group 1 mode desirable</p>
</li>
<li><p>EIGRP wild card bits → 2진수를 255에서 빼기</p>
<ul>
<li>255.255.255.0 → 0.0.0.255, 255.255.255.252 → 0.0.0.3</li>
</ul>
</li>
<li><p>access-list 1 permit 192.168.0.0 0.0.0.255</p>
</li>
<li><p>ip nat inside source list 1 interface gig0/1</p>
</li>
</ul>
<hr>
<p>ARP.. Mac..</p>
<h2 id="mac-arp-공격">MAC, ARP 공격</h2>
<ol>
<li><p>Mac Address Tablr 내 Mac 주소를 변조하는 방안.?? → ARP 스푸핑</p>
<ol>
<li>MITM 마냥 중간에서.?</li>
<li>PC1과 PC2사이에서 공격자의 Mac 주소를 전송</li>
<li>PC1,2는 공격자에게 자신의 MAC을 전송</li>
<li>공격자는 그것을 이용해서 PC1,2이 정상적으로 통신하는 것처럼 전송</li>
<li>중간에서 데이터 흭득</li>
</ol>
</li>
<li><p>스위치의 Mac주소 Table을 OverFlow!!! → Mac 플러링 공격</p>
<ol>
<li>스위치에게 무작위적인 Mac주소를 제공</li>
<li>스위치의 할당량을 넘으면 더 이상 Mac주소 학습이 불가능</li>
<li>이후에는 스위치가 아닌 허브의 역할로 모든 PC에게 패킷을 전송</li>
</ol>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[Using temporary security credentials with the AWS CLI]]></title>
            <link>https://velog.io/@kairos-hk/Using-temporary-security-credentials-with-the-AWS-CLI</link>
            <guid>https://velog.io/@kairos-hk/Using-temporary-security-credentials-with-the-AWS-CLI</guid>
            <pubDate>Mon, 15 Jan 2024 17:52:48 GMT</pubDate>
            <description><![CDATA[<pre><code>aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name &quot;RoleSession1&quot; --profile IAM-user-name &gt; assume-role-output.txt</code></pre><p>Using the AWS CLI, you can call an AWS STS API like AssumeRole or GetFederationToken and then capture the resulting output. The following example shows a call to AssumeRole that sends the output to a file. In the example, the profile parameter is assumed to be a profile in the AWS CLI configuration file. It is also assumed to reference credentials for an IAM user who has permissions to assume the role.</p>
<pre><code>Linux

$ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...&lt;remainder of session token&gt;
$ aws ec2 describe-instances --region us-west-1</code></pre><pre><code>Windows

C:\&gt; SET AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
C:\&gt; SET AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
C:\&gt; SET AWS_SESSION_TOKEN=AQoDYXdzEJr...&lt;remainder of token&gt; 
C:\&gt; aws ec2 describe-instances --region us-west-1</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[yarn : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\dongy\AppData\Roaming\npm\yarn.ps1 파일을 로드할 수 없습니다.]]></title>
            <link>https://velog.io/@kairos-hk/yarn-%EC%9D%B4-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC-%EC%8B%A4%ED%96%89%ED%95%A0-%EC%88%98-%EC%97%86%EC%9C%BC%EB%AF%80%EB%A1%9C-CUsersdongyAppDataRoamingnpmyarn.ps1-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EB%A1%9C%EB%93%9C%ED%95%A0-%EC%88%98-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4</link>
            <guid>https://velog.io/@kairos-hk/yarn-%EC%9D%B4-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC-%EC%8B%A4%ED%96%89%ED%95%A0-%EC%88%98-%EC%97%86%EC%9C%BC%EB%AF%80%EB%A1%9C-CUsersdongyAppDataRoamingnpmyarn.ps1-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EB%A1%9C%EB%93%9C%ED%95%A0-%EC%88%98-%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4</guid>
            <pubDate>Mon, 08 Jan 2024 14:40:09 GMT</pubDate>
            <description><![CDATA[<p>Yarn을 설치하는데 에러가 뜨는 상황이다.
설치는 되었으나, 정책 및 권한 상으로 스크립트 실행이 불가하다.</p>
<p>PowerShell을 관리자 권한으로 키고</p>
<pre><code>get-help Set-ExecutionPolicy

Set-ExecutionPolicy RemoteSigned</code></pre><p>위 코드를 작성하고, 권한을 Y로 세팅한다.</p>
<p>이후 다시 Yarn을 호출하면 정상적으로 실행된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2023년 회고록]]></title>
            <link>https://velog.io/@kairos-hk/2023-%ED%9A%8C%EA%B3%A0%EB%A1%9D-%EB%B0%8F-%EA%B2%B0%EC%82%B0</link>
            <guid>https://velog.io/@kairos-hk/2023-%ED%9A%8C%EA%B3%A0%EB%A1%9D-%EB%B0%8F-%EA%B2%B0%EC%82%B0</guid>
            <pubDate>Tue, 02 Jan 2024 17:02:49 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>Written by Kim dongyoung -&gt; GBSW 3th</p>
</blockquote>
<p>무려 2024년에 써보는 2023년의 회고록이다.
언젠가부터 매년 회고록 한번은 써보고 싶다는 생각이 들었지만 항상 귀찮고 바빠서 미루고 있었는데 드디어 첫 삽을 떠보게 됬다.
대원고를 자퇴하고 새로운 시작과 새로운 삶을 살게 된것에 관한 내 기록이다.</p>
<h2 id="1발전"><strong>1.발전</strong></h2>
<p>무엇을 하든, 어떠한 성과를 내든 제일 중요한 것은 나 스스로가 성장하는 것이다. 내가 1년을 잘 보냈는지를 성찰하는 조건 중 맨 첫번째는 발전이다. 1년간 어떠한 것과 경험을 하면서 어떤 발전을 이루었는지가 매우 중요하다.</p>
<h3 id="1-1-hacking"><strong>1-1. Hacking</strong></h3>
<p>2023년부터는 내 관심사는 개발에서 보안으로 넘어왔다. 맨날 똑같은 개발만 해서 그런것일까? 아니면 내 흥미가 드디어 떨어진걸까? 갑자기 정보보안 CTF문제를 우연히 접하고는 보안이라는 늪에 빠지게 되었다.</p>
<p>무턱대고 해킹이란 것을 배우는 것은 매우 힘들었다. 솔직히 옆에 보안에 대해서는 물어볼 사람들도 없었고, 부정적인 인식으로 인해 구글링을 해도 잘 나오지 않았다.</p>
<p>하지만 그래도 포기는 안했다. 남들보다 더욱 느린 시작이었고 어쩌면 대원고를 나와 새로 시작하는 만큼, 남들보다는 더욱 잘해야한다는 나만의 강박이었는지 솔직히 포기는 못할거 같았다. 그래서 그냥 악으로 찾으면서 공부했다. 책도 찾고 아무 관련 커뮤니티를 들어가서 물어보고.. 그러다 보니 자연스럽게 보안에 관련된 인맥과 사람들에 대해 연결되었다. 이렇게 내 보안 전공이 시작된다.</p>
<h4 id="1-1-1-kitri--bob-차세대-보안리더-양성-프로그램"><strong>1-1-1. KITRI : BoB 차세대 보안리더 양성 프로그램</strong></h4>
<p>정보보안에 조금이라도 아는 사람이라면 BoB에 관해서는 다들 알것이다. 과기부와 정부에서 지원하는, 우리나라 정보보안 인재 양성 프로젝트 중에서는 제일 유명하고 그런만큼 지원율과 합격률도 엄청나게 빡빡한 프로그램이다. 어떻게 보안을 갓 시작한 내가 원서를 넣는간 말인가?  하지만 난 그때 미쳤던 것 같다. 무조건 떨어질 것이라는 것을 알면서도 원서를 넣었다. </p>
<p><strong>그리고 서류 전형에 합격했다.</strong></p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/72378fa5-f6c9-4a1f-bf06-cb6358f8a624/image.jpg" alt=""></p>
<p>솔직히 서류에서도 떨어질거 같았는데 왜 붙었을까... 싶은 생각이 들었다.
하지만 이왕 붙은거 한번은 해봐야 되는게 아닌가??
그래서 필기 시험도 치고, 인적성 검사도 하고,
최종 면접까지 보았다.</p>
<p><strong>그리고 난 떨어졌다.</strong></p>
<p>내가 어떤 부분에서 실수를 했을까.? 어떤 부분이 모자라서 떨어졌을까? 1주일은 고민을 한것 같다. 그리고 그 정답을 얻었다.
너무 날 자만했고, 내 실력이 남들에 비해 터무니 없음에 대해 알게되었다.
그 덕분에 난 새로운 계획과 목표로 세상을 살게 되었다.</p>
<h4 id="1-1-2-kitri--whitehat-school-pre-bob"><strong>1-1-2. KITRI : WhiteHat School (Pre-BoB)</strong></h4>
<p>WhiteHat School은 BoB를 주관하는 한국정보기술연구원에서 새롭게 시작한 정보보안 인재 양성 사업이다. 정식 이름은 &#39;화이트햇 스쿨&#39;, 다들 &#39;Pre BoB&#39;라고 부른다. BoB가 상위권 레벨이라면 WhiteHat은 중위권 정도의 레벨이라고 한다. </p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/d7dffd96-2d24-4ef0-8f83-629528b16440/image.jpg" alt=""></p>
<p>BoB에 떨어지고 잊고 살고 있던 KITRI에서 갑자기 문자 하나가 왔다.
WhiteHat School 1기가 새롭게 모집중이니 BoB12기 서류 합격자들은 서류 전형을 면제해 주겠다는 내용이었다. 잊고 있던 BoB였지만 정보보안에 대한 미련은 못버려서 일까? 당연스럽게 다시 원서를 넣었고, 필기, 인적성, 면접을 치르고</p>
<p><strong>결국은 합격했다..</strong></p>
<p>비록 내가 원하던 BoB는 아니지만, Pre-BoB라도 참여할 수 있다는게 너무 행복했다. 그리고 내 정보 보안 실력도 매우 향상 되었다. 맨날 Web만 했지만 이참에  Pwn과 Rev도 함께 공부하며 체계적으로 학습하여 내 실력의 증가가 눈에 보였다.</p>
<h3 id="1-2-dev-network"><strong>1-2. Dev, Network</strong></h3>
<p>사실 정보보안에 미쳐 산다고 개발 공부에는 소홀했다. 그래도 더 얻는 내용은 없더라도 더이상 잊어버리는 내용은 없도록 항상 개발 프로젝트 하나는 꼭 달면서 달았다. 간단한 교내 프로젝트부터 전국단위 프로젝트까지 그래도 매달 하나씩은 해볼려고 노력했다. NextJS나 서버리스와 같은 DevOps에 대해서도 꽤 노력하면서 공부 해봤다...</p>
<p>개발은 더 공부하고 싶다. 아무리 보안이라도 개발은 꼭 필요하니깐.. 특히 요즘 들어서는 클라우드 기술이 너무 끌리더라..! 맨날 온프레미스만 다루다가 클라우드와 서버리스에 대해 공부해보니 모든게 새롭고 신기했다. 앞으로 남는 시간에는 클라우드 개발 공부를 더 해볼까 싶다.</p>
<p>24년에 열리는 전국 기능경기대회 사이버보안 종목을 준비하고자 네트워크 공부를 좀 하고있다. 기본적인 내용들은 알지만.. 이때 처음 악명 높은 Cisco 패킷 트레이서를 다뤄봤다. 그 결과..</p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/c14b87a4-b034-4414-b630-da3ac95e2649/image.png" alt="">
아직도 보기 싫은 패킷 트레이서이지만 그래도 조금은 익숙해진거 같다. 프로젝트를 얼마나 생성하고 지운지 기억도 나지 않는다. 그래도 왜 다들 네트워크를 하는지, 그 이유 하나는 알게 되었다.</p>
<h3 id="1-3-리더십-및-팀-운영"><strong>1-3. 리더십 및 팀 운영</strong></h3>
<p>2023년 처음으로 내 팀을 만들어 보았다. 사실 처음에는 마음에 드는 사람끼리 함께 보안 공부를 할려고 만들었는데 어쩌다 보니 사이즈가 좀 커졌다. 평소에 존경하던 사람도 함께 내 팀에 참여하게 되고, 디미고, 선린 등 해킹에 매우 큰 역사와 실력을 가진 분들이 나와 함께하게 되었다. 어떻게 이렇게나 커지게 된지는 솔직히 기억나지 않는다. 그냥 그 사람들과 함께 하고싶다는 생각만으로 일을 저지르니 되더라..</p>
<p>이제는 팀원 16명의 엄청 큰 팀으로 자리잡았다. 올해 내 Snoo.py팀은 전국대회 수상 20개와 다양한 프로젝트로 그래도 이전보다는 이름이 조금이나마 알려진 팀으로 성장했다. 처음엔 3명의 작은 팀이 이렇게나 커지고, 이렇게나 큰 팀으로 바뀌어 그들을 통솔하고 이끌어 나가는 것에 대한 부담감은 없지 않아 있다. 그래도 올해 내 리더십과 무엇인가 이끌어 가고자 하는 그 능력은 엄청나게 높아졌다.</p>
<h3 id="1-4-발표-능력"><strong>1-4. 발표 능력</strong></h3>
<p>2023년엔 발표를 참 많이 했다. 1년간 진행한 대회 및 프로젝트 갯수만 22개, 솔직히 이정도면 발표할때 긴장한다고 하면 그냥 변명이다. 그만큼 내 발표 실력은 매우 급상승했다. 22년 KCF발표에서만 해도 내 인생 첫 발표에서 매우 떨면서 대사도 잊어버리고 눈물도 날뻔 했는데 이제는 그렇지 않다. 그냥 내 안방마냥 너무 편한하다. 한번씩은 심사위원님들과 농담도 좀 하고 분위기도 풀어낼려고 노력하는 편이다. 이제는 발표가 너무 즐겁다. 누구든 이 말을 들으면 미친놈이라 하지만 즐거운걸 어떻게 하랴.. 앞으로도 발표에 대해서는 그 누구보다 자신있다.!! ( 심지어 외국인 앞에서 영어 발표도 했음 !! 나 좀 잘한듯 !! )</p>
<h2 id="2사업"><strong>2.사업</strong></h2>
<p>2023년 10월 경.. 난 무턱대고 사업을 시작했다. 사업 아이템은 정보보안 서비스 및 기업 대상 보안 컨설팅.</p>
<p>아무것도 몰랐고, 아무것도 물어볼 곳은 없었다. 그래도 그냥 해봤다.
무슨 일이 발생하면 그때 그때 찾아서 끼워막기로 해결했고, 그렇게 차근 차근 막아보니깐 그래도 뭔가 형태는 갖추어 진것 같다.</p>
<p>실제로 국세청에 찾아가서 사업자 등록도 하고, 국가 지원과 기업 대상 지원 등 내가 하고픈 사업을 어떻게든 이끌기 위해 이것 저것 다 해봤다.</p>
<h3 id="2-1-무턱대고-사업자-발급"><strong>2-1. 무턱대고 사업자 발급..</strong></h3>
<p>사실 좀 알아보고 하면 사업자를 발급하기 전 받을 수 있는 많은 지원들이 있다. 하지만 난 그런 지원들을 모르고 일단 사업자부터 발급했다. 왜 그랬을까 싶은 생각도 있지만 후회는 하지 않는다. 어짜피 그때로 돌아가도 난 그런 지원은 안받았을거 같다. 어떤 일이든 그냥 내가 해결하고 싶었고, 남에게 손을 벌리고 싶지는 않았다. 그게 남이든 사람이든 국가든..</p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/c80457f7-c5e5-445b-b8f2-b855ff0fda1f/image.png" alt=""></p>
<p>그래서 그냥 사업자를 내고 본격적인 내 사업을 시작하며 사장님이 되었다.</p>
<h3 id="2-2-singapore-투자-발표회"><strong>2-2. Singapore 투자 발표회..</strong></h3>
<p>운이 좋게 싱가폴에 가서 스타트업 투자 발표회에 참여해 발표를 진행했다. 싱가포르라는 나라는 스타트업에 관한 투자와 지원이 매우 활발한 곳이다. 어쩌다 보니 국내에서 주최하는 창업 대회에서 우승하고 싱가폴 연수 겸 싱가폴 현지의 스타트업을 대상으로 하는 투자 전문 기업과 IT관련 기업들 대표님들 앞에서 PT발표를 했다.. 내 인생 첫 영어 발표였고 질의 응답하느라 죽을뻔 했다.</p>
<p>그래서 영어 공부도 엄청 열심히하고, 발표 대본도 머리속에 다 외우면서 최대한 즐겁게 해볼려고 했다. 비록 사업 투자는 못받아도 최대한 즐겁고 재밋는 아이디어라는 인상을 주기위해 노력해보았다.</p>
<p>발표 주제로는 현재 내가 개발중이며, 추후 기업과 국가기관을 대상으로 하여 런칭 예정인 &quot;Cloud Serverless기반 AI 탐지 IDS/IPS&quot;에 관해서 발표해보았다. 내가 자신있는 보안과 네트워크, AI, DevOps를 연결해서 차세대 보안 시스템을 설계하고 개발해보았다. 그리고 그것을 발표했다.
<img src="https://velog.velcdn.com/images/kairos-hk/post/dba55d1e-12bc-4cce-a957-3cf26b44f723/image.jpg" alt="">
<strong>결과는 성공적이었다.!</strong></p>
<p>심사위원이자 투자자이신 기업의 대표님 4명 중 3명의 관심을 가져오는 것에 성공하였으며, 그중 2개의 기업에서 투자와 관련된 긍정적인 제의를 받았다. 준비를 많이 했는데 내 노력에 대한 조금이나마의 결실을 얻을 수 있었다. 다행이다.
(전날에 뭘 좀 먹고 잤더니 너무 부은 얼굴이다..)</p>
<h3 id="2-3-돈과-경험의-선택"><strong>2-3. 돈과 경험의 선택</strong></h3>
<p>사업을 하면 항상 느끼게 된다. 과연 내가 돈을 목적으로 이 사업을 하고 있는지, 아니면 경험과 내 실력의 향상을 위해서 이런 사업을 하고 있는지에 대한 딜레마와 고민에 빠지게 된다. 솔직히 나도 좀 그랬다. 언젠가부터 과연 이 사업을 내가 어떻게 이끌어나가야 할까.. 난 내 경험과 실력의 증가를 목표로 하지만, 그렇다고 수익적인 부분을 버리게 되면 나머지 팀원들은 과연 어떻게 되는 건인가? 와 같은 엄청난 질문들을 나에게 했다.</p>
<blockquote>
<p><strong>경험을 첫째, 돈은 경험과 함께 따라온다.!</strong></p>
</blockquote>
<p>결국은 내가 도출한 결론이다. 돈은 벌려고 하는 것이 아니라 내가 하는 만큼 오는거다. 
결국은 망할거 같던 사업이 투자를 받고, 기업들의 외주를 받고, 누군가의 관심을 받았다. 그냥 난 내가 원하는 방향으로 그대로 갈거다. 앞으로도 쭉 그럴것이다. </p>
<h2 id="3대회"><strong>3.대회</strong></h2>
<p>올해 대회는 진짜 많이 나갔다. 방금전 전부 다 합쳐보니 출전한 대회 및 발표회만 무려 <strong>23개</strong>이다. 그냥 미쳤다. 내가 생각해도 이딴 삶을 어케 살아온지도 모르겠다. 그래도 수상 받은 걸 정리해서 보니 조금이나마 이런 삶을 살아온 것에 대한 결과물을 얻어내어 뿌듯한 느낌이 든다.
<img src="https://velog.velcdn.com/images/kairos-hk/post/803baf73-8b6b-4596-9d4e-9379c4e9cc67/image.png" alt="">
내가 봐도 이건 너무 많다. 그렇지만 하나하나 전부 다 소중한 경험이었다. 그 중에서 내 마음에 드는 Top3만 뽑아보고 싶다.</p>
<blockquote>
<p><strong>2023년 나와 함께 열심히 일했던 내 팀원들, 그리고 특히 AI 장인 황기성, FullStack 손보석, 열혈한 연구원 변예현에게 매우 고맙다..</strong></p>
</blockquote>
<h3 id="3-1-kaist-cansat-competition"><strong>3-1. Kaist CanSat Competition</strong></h3>
<p>Kaist에서 주최하는 위성 개발 관련 대회이다. 맨날 과학고만 나오던데 주최 관련 공지가 나오고 나서 고민 좀 했다. 과연 우리가 가서 이곳에서 성과를 내고 우승을 차지 할 수 있을까..? 지금까지 우리같은 소프트웨어 특성화고가 우승한 기록은 한번도 없는 오직 영재고, 과학고들 만의 경쟁의 늪에 우리가 뛰어 드는게 맞을까? 싶었다. 그래도 이왕 하는거 한번은 해보자는 팀원에 말에 시작하게 되었다.</p>
<p>우리 팀이 정한 주제는 &quot;<strong>위성을 활용한 화산 예측 기술 개발</strong>&quot; 이었다. 그냥 단순하게 보면 하늘에서 찍은 지상의 사진을 활용해 AI 모델을 개발하고, 그것으로 화산의 폭발을 예측하고 폭발시 피해 반경을 예측하는 기술을 개발하는 것이 목표였다.</p>
<p>우리팀은 4달동안 밤샘하면서, 맨날 회의 하면서 개발만 했다. 임베디드 부터 AI, 항공 및 기체 역학까지 솔직히 못 건드려본 부분이 하나도 없었다.</p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/3b629289-2263-490c-98bd-58bcde4bf5c1/image.jpg" alt="">
밤새면서 내가 만든 위성.. 오랜만에 임베디드 기술 좀 살려봤다..
지상국과의 실시간 위성 통신, 각종 센서 데이터 전송, 위성에서 촬영한 이미지 전송 등.. 화산 예측을 위한 Co2센서 등등 최대한 과학적으로 접근하고자 했다.</p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/c42c6bd1-d741-4ef8-97b2-ed2b9340dc1f/image.jpg" alt="">
실제 발사 평가를 위해 발사장에서 위성을 점검중인 우리팀.. 직접 계산기 두드리고 자로 센치미터 측정하면서 만든 자체 안테나와 위성국, 온갓 전선들과 기자재와 함께 열심히 테스트를 진행하고, 위성을 낙하산과 함께 발사체에 올려서 발사 했다..</p>
<p><strong>결과는 성공..! 모든 것이 우리의 예상대로 흐르고 정상적으로 작동되었다.! -&gt; 나이수</strong></p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/03f26a98-e5c7-473e-9bd5-369683d6878b/image.jpg" alt="">
결국 우리팀은 어쩌다보니 수십개의 과학고 및 영재고 팀을 이기고 최종 본선까지 도달했고, 최종 10팀 중 4위를 차지하면서 수상권에 들었다. 솔직히 4개월간 이게 과연 우승이 될까? 라는 생각으로 임했던 대회가 결국은 이렇게 되어버리니 매우 행복했던거 같다. 방학때 학교에 나와서 밤새 연구하는 등 그냥 학교에서 머리박고 저거만 연구한거 같은 기분이다.</p>
<blockquote>
<p><strong>우리 팀 태우고 6번이나 대전 Kaist를 왕복하고.. 매번 우리에게 크나큰 지원과 크나큰 희망이 되는 우리 쫑T 사랑합니다 :)</strong></p>
</blockquote>
<h4 id="3-1-1-kaist-해외연수-선발"><strong>3-1-1. KAIST 해외연수 선발</strong></h4>
<p>내가 우승한 Kaist CanSat Competition은 전체 등수에서 5위 이내 수상을 하게되면 일본으로 해외 연수를 보내준다. 결국 우리팀은 이 조건에 부합하였고 내 인생 처음이자 완벽했던 해외 연수를 떠났다. 일본의 서울대라 할 수 있는 도쿄대의 교수님의 강의와 일본 대학생들과의 기술 교류, 밤에는 호텔에서 나와서 일본 구경과
시부야 스카이 전망 구경 등 그냥 4박 5일간 완벽했던 내 해외 연수였다.
<strong>무려 첫 끼가.. 인당 10만원짜리 49층 빌딩 꼭대기 스시집이라니.. 완벽.. 그자체..</strong></p>
<blockquote>
<p><strong>Kaist 인공위성 연구소의 박홍영 박사님 사랑합니다 :)</strong>
<img src="https://velog.velcdn.com/images/kairos-hk/post/25497d92-8257-41cc-bb89-1968aa0f31b0/image.jpg" alt=""></p>
</blockquote>
<h3 id="3-2-현대-화이트해커-경진대회"><strong>3-2. 현대 화이트해커 경진대회</strong></h3>
<p>내가 정보보안을 시작하고나서 CCE와 같은 다양한 대회에 출전하였지만, 보안으로는 처음 수상 받은 대회이다. 그냥 너무 행복했다. 그동안 보안 대회 준비하고 나가면서 난 더이상 안되는 건가?? 라는 생각도 많이 했는데 내 포기를 깨버린 대회였다.</p>
<p>문제는 Web해킹, System해킹, Revering, Crypto 그리고 처음보는 침해사고 분석이라는 새로운 문제를 경험했다. 솔직히 다른 분야는 타 대회에서 맨날 보는건데 침해 사고 분석이라니.. 너무 당황했다. 문제를 보니깐 공격당한 서버의 DB Log 파일을 제공하면서 해당 부분을 분석하고 공격자의 대한 정보를 분석하는 것 이었다. 솔직히 난 침해사고 분석에 제일 자신있어서 결국은 대부분의 점수를 침해사고로 내어 버렸다.</p>
<h4 id="3-2-1-무엇인가-이상한-점수표"><strong>3-2-1. 무엇인가 이상한 점수표..?</strong></h4>
<p>아니 난 솔직히 내 팀원들에게 큰 실망을 했다. 난 열심히 시간동안 문제를 풀었는데 점수가 왜 이런 상태인가.. 
<img src="https://velog.velcdn.com/images/kairos-hk/post/2136d602-00bb-4ec7-98c5-8245467d1b72/image.jpg" alt="">
우리 팀 전체 점수 1750점에서 1600점을 내가 내버렸다.. 이게 과연 맞는 점수인가.. 사실 조금만 더 노력해서 1문제만 더 풀었으면 교육부 장관상을 목표로 보는건데 이건 너무 아까운 결과이다. 아니 우리 팀원의 아까운 실력인가?? 이 대회 사실은 팀원이 4명 이었다. 하지만 갑자기 대회 전날 한명이 참여를 못한다는 불참 선언을 해버리고 나머지 팀원들도 딱히 하고픈 생각은 없어 보이긴 했다.. 그래도 어케든 풀어볼려고 하는 팀원들 마인드 덕분에 대회 하면서 짜증은 크게 나지는 않은거 같다.</p>
<p>이렇게라도 수상했으면 된것 아닌가?</p>
<h4 id="3-2-2-결국은-아까운-수상"><strong>3-2-2. 결국은 아까운 수상..</strong></h4>
<p>결국은 3위다. 이 대회는 2위까지 교육부 장관상을 준다. 근데 얼렝.. 1문제 차이로 우리팀의 장관상은 결국 물건너 갔다. 너무 아쉽다. 한번은 &quot;우리 팀 멤버가 만약 달랐으면 어땟을까??&quot;라는 생각은 했지만 그건 아닌거 같다. 어쩌면 이 팀원들이 옆에서 계속 응원?? 해줘서 1600점이라도 내버린게 아닐까 싶기도 하고 그냥 팀원들을 향한 짜증이 아니라 아까움이다.
<img src="https://velog.velcdn.com/images/kairos-hk/post/0d5e2e47-24c5-4787-91ae-9ccf680b0845/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/kairos-hk/post/5a4dd08f-f35a-479d-ae8c-faf0b6c3bdc6/image.jpg" alt=""></p>
<p>엄청 아쉬웠던 대회다. 그래도 이 대회는 나에게 새로운 희망을 주었다.</p>
<blockquote>
<p>*<em>넌 아직 보안을 할 이유가 있다.! *</em></p>
</blockquote>
<h3 id="3-3-경상북도-sw-ai-해커톤"><strong>3-3. 경상북도 SW-AI 해커톤</strong></h3>
<p>맨날 전국 대회만 나가다가 오랜만에 학교의 추천으로 경상북도에서 열리는 도 해커톤 대회에 참여해봤다. 주제는 지속가능한 발전과 관해서 내 기억에.. 아마.. 수질 오염, 건강과 웰빙, 그리고 뭔가 있었다. 아무튼 우리 팀은 소방긴급 신고와 관련해서 사진 1장만 찍으면 AI로 이미지 내 상황을 분석하고 자동으로 신고 구문 작성 및 신고 필수 데이터들을 추가하여 119로 신고하는, 10초 내 간편 신고 시스템 어플을 개발했다.</p>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/a90970bb-695b-4e9f-bd98-d3b7845f4d0a/image.jpg" alt="">
열일하는 우리 팀원들.. 그리고 나.. 우리 이때 쉬지도 않고 밥도 10분만에 먹고는 그냥 개발만 죽도록 해봤다. 다들 Arduino들고와서 피지컬 컴퓨팅하는데 우리는 그냥 WebApp부터 이미지 분석 AI 신경망까지 그냥 처음부터 노베이스로 개발했다. 나랑 기성이가 AI 신경망을 연구하고 개발했고, 보석이랑 한이가 FullStack 개발로 WebApp을 만들었다. 거기에 Flutter로 웹뷰 띄우고,,,</p>
<p>결국 최종본은 아주 이쁘게도 잘 나왔다. (움짤로 만들어봄)
<img src="https://velog.velcdn.com/images/kairos-hk/post/7f1f9a7d-99d2-4113-9890-66d5a3d360f8/image.gif" alt="">
실제 만들어낸 AI 신경망과 모델도 정확도가 96%이상으로 잘 나왔고, WebApp도 우리가 원하는 모든 기능을 구현하면서 심사위원들에게 좋은 평가를 얻었다.
뭐.. 잘 만들고.. 잘 기획했다고... ????</p>
<p><strong>그리고 우리팀은 결국 1위를 했다.</strong></p>
<p>경상북도교육감상.. 막 다른 대회처럼 장관상은 아니지만 그래도 만족하는 성과다.
<img src="https://velog.velcdn.com/images/kairos-hk/post/e4c55329-7860-4bad-95b9-ee651672f717/image.jpg" alt=""></p>
<p>조금의 TMI라면 보석이랑 나가는 해커톤은 사실 맨날 마지막에 아깝게 본선에서 수상권에 못들었다. 그래도 이번에 이 징크스를 깨버려서 너무 시원하다.</p>
<blockquote>
<p>** 개발 연구한다고 2일동안 밤샘한 우리 기성이, 보석이, 한이 사랑해 :)**</p>
</blockquote>
<h3 id="4-2023년의-떠나보냄과-2024의-새로운-시작"><strong>4. 2023년의 떠나보냄과 2024의 새로운 시작</strong></h3>
<p><img src="https://velog.velcdn.com/images/kairos-hk/post/5b5f30ba-9030-4252-a6ab-13b6aceadd7e/image.jpg" alt="">
2023년은 나에게 매우 소중한 1년이었다. 언젠가 누군가 나에게 이 경험과 1억을 바꾸자고 해도 난 바꾸지 않을것이다. 그만큼 소중한 경험이었고 사람과의 관계와 세상을 살아가는 새로운 방향에 대해 공부하였다. </p>
<p>그만큼 내가 노력하는 것을 배신하지는 않는 것 같다. 언젠가 1년뒤 또 이런 글을 쓰면서 나혼자 실실 웃고있는 모습을 볼 예정에 기분이 참 좋다..</p>
<blockquote>
<p><strong>2023년 모두들 수고했고, 앞으로 시작될 2024년도 열심히 살아봅시다..!</strong></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[http, https 호출 시 Mixed Content 에러]]></title>
            <link>https://velog.io/@kairos-hk/dev-1</link>
            <guid>https://velog.io/@kairos-hk/dev-1</guid>
            <pubDate>Tue, 05 Sep 2023 06:01:58 GMT</pubDate>
            <description><![CDATA[<pre><code>Mixed Content: The page at &#39;https://어쩌고/&#39; was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint &#39;http://어쩌고/&#39;. This request has been blocked; the content must be served over HTTPS.</code></pre><p>위 에러는 https의 front-end에서 http의 api를 받아오는 과정에서
발생되는 에러이다.</p>
<p>React + vite + axios의 환경에서 vercel로 진행한 front (https)와,
aws ec2로 flask 환경의 api 서버 (http)의 연결법</p>
<pre><code>    if (total_people === &#39;&#39; || isNaN(parseFloat(total_people))) return alert(&#39;Input Value Error&#39;)
    await axios(&#39;http://127.0.0.1:5001/&#39;, {
      method: &#39;POST&#39;,
      data: {
        latitude: position.lat.toFixed(5),
        longitude: position.lng.toFixed(5),
        total_people: parseInt(total_people)
      }</code></pre><p>위 코드에서는 127.0.0.1:5001로 부터 데이터를 받아온다.
이때 http라 에러가 발생한다.</p>
<pre><code>    if (total_people === &#39;&#39; || isNaN(parseFloat(total_people))) return alert(&#39;Input Value Error&#39;)
    await axios(&#39;/api&#39;, {
      method: &#39;POST&#39;,
      data: {
        latitude: position.lat.toFixed(5),
        longitude: position.lng.toFixed(5),
        total_people: parseInt(total_people)
      }</code></pre><p>이러한 형식으로 flask를 수정해서 /api 디렉토리를 만들고, 디렉토리 명을 입력한다.</p>
<pre><code>import { defineConfig } from &#39;vite&#39;
import react from &#39;@vitejs/plugin-react&#39;

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  server: {
    proxy: {
      &#39;/api&#39;: {
        target: &#39;http://127.0.0.1:5001&#39;,
        changeOrigin: true,
        secure: false,
        ws: true
      }
    }
  }
})
</code></pre><p>vite.config.ts에서 위와 같이 /api에 따른 proxy를 세팅한다.</p>
<p>&lt;-- vercel 추가설정 --&gt;
만약 vercel의 경우에는 추가로 vercel.json을 만들어야한다.</p>
<pre><code>{
    &quot;rewrites&quot;: [
      { &quot;source&quot;: &quot;/api&quot;, &quot;destination&quot;: &quot;http://127.0.0.1:5001/api&quot; },
      { &quot;source&quot;: &quot;/(.*)&quot;, &quot;destination&quot;: &quot;/index.html&quot; }
    ]
  }</code></pre>]]></description>
        </item>
    </channel>
</rss>