<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Free Will</title>
    <link>https://ldne.tistory.com/</link>
    <description>Dubito ergo cogito, Cogito ergo sum. </description>
    <language>ko</language>
    <pubDate>Wed, 15 Apr 2026 04:52:24 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>LeeDaniel</managingEditor>
    <image>
      <title>Free Will</title>
      <url>https://tistory1.daumcdn.net/tistory/1450356/attach/9339a1429b7049a5bb5ae06d1895ca0e</url>
      <link>https://ldne.tistory.com</link>
    </image>
    <item>
      <title>[YouTube] 유튜브 영상 삽입코드(반응형)</title>
      <link>https://ldne.tistory.com/511</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;유튜브 영상 iframe 코드는&lt;br /&gt;공유 &amp;gt; 퍼가기 에서 복사&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cflgjk/dJMcae0iJI7/BqlmKppLkuSS6VmRMmQCy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cflgjk/dJMcae0iJI7/BqlmKppLkuSS6VmRMmQCy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cflgjk/dJMcae0iJI7/BqlmKppLkuSS6VmRMmQCy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcflgjk%2FdJMcae0iJI7%2FBqlmKppLkuSS6VmRMmQCy0%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;907&quot; height=&quot;615&quot; data-origin-width=&quot;907&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Iof9C/dJMcajm0lIw/06tVkqb6OkYXHIMztEe7I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Iof9C/dJMcajm0lIw/06tVkqb6OkYXHIMztEe7I1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Iof9C/dJMcajm0lIw/06tVkqb6OkYXHIMztEe7I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIof9C%2FdJMcajm0lIw%2F06tVkqb6OkYXHIMztEe7I1%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;879&quot; height=&quot;598&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;347&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/saL8z/dJMcaklUFIR/hlid5d2waxRE8lpX9InvhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/saL8z/dJMcaklUFIR/hlid5d2waxRE8lpX9InvhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/saL8z/dJMcaklUFIR/hlid5d2waxRE8lpX9InvhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsaL8z%2FdJMcaklUFIR%2Fhlid5d2waxRE8lpX9InvhK%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;1057&quot; height=&quot;347&quot; data-origin-width=&quot;1057&quot; data-origin-height=&quot;347&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1762320394393&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- 음소거(mute), 자동재생(autoplay), 반복재생(loop) 적용 --&amp;gt;
&amp;lt;!-- 반복재생 적용시 src속성값 playlist에 동영상id 작성--&amp;gt;
&amp;lt;div style=&quot;height:0;padding-bottom:56.25%;position:relative;width:100%;&quot;&amp;gt;
  &amp;lt;iframe style=&quot;height:100%;left:0;position:absolute;top:0;width:100%;&quot;
                src=&quot;https://www.youtube.com/embed/gWlfmUrazFw?autoplay=1&amp;amp;amp;mute=1&amp;amp;amp;loop=1&amp;amp;amp;playlist=gWlfmUrazFw&quot;
                title=&quot;YouTube video player&quot;
                frameborder=&quot;0&quot;
                allow=&quot;autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot;
                referrerpolicy=&quot;strict-origin-when-cross-origin&quot;&amp;gt;&amp;lt;/iframe&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Dev_Log</category>
      <category>유튜브 영상 삽입코드</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/511</guid>
      <comments>https://ldne.tistory.com/511#entry511comment</comments>
      <pubDate>Wed, 5 Nov 2025 14:30:34 +0900</pubDate>
    </item>
    <item>
      <title>[Gradle] Execution failed for task ':bootJar'. &amp;gt; Entry META-INF/MANIFEST.MF is a duplicate</title>
      <link>https://ldne.tistory.com/510</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;# gradle bootjar 명령어 실행시 발생하는 에러&lt;br /&gt;Execution failed for task ':bootJar'. &amp;gt; Entry META-INF/MANIFEST.MF is a duplicate but no duplicate handling strategy has been set.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1761109125312&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// build.gradle의 최하단에 아래내용 추가

tasks.named('bootJar') {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Dev_Log</category>
      <category>Entry META-INF/MANIFEST.MF is a duplicate</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/510</guid>
      <comments>https://ldne.tistory.com/510#entry510comment</comments>
      <pubDate>Wed, 22 Oct 2025 13:59:40 +0900</pubDate>
    </item>
    <item>
      <title>[Web]웹사이트 응답속도 체크</title>
      <link>https://ldne.tistory.com/508</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;447&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vCYvU/btsQR6Cnmv6/kmCAewbc4ltvdR880GP1Ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vCYvU/btsQR6Cnmv6/kmCAewbc4ltvdR880GP1Ak/img.png&quot; data-alt=&quot;Windows Power Shell&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vCYvU/btsQR6Cnmv6/kmCAewbc4ltvdR880GP1Ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvCYvU%2FbtsQR6Cnmv6%2FkmCAewbc4ltvdR880GP1Ak%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;760&quot; height=&quot;447&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;447&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Windows Power Shell&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre id=&quot;code_1759115690322&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ex)네이버 응답속도(Milliseconds) 확인
Measure-Command { Invoke-WebRequest naver.com -UseBasicParsing }&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s6wFl/btsQU17iUxf/6TthDT9Uzz55BeKBjkeDa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s6wFl/btsQU17iUxf/6TthDT9Uzz55BeKBjkeDa0/img.png&quot; data-alt=&quot;응답속도(Milliseconds) 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s6wFl/btsQU17iUxf/6TthDT9Uzz55BeKBjkeDa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs6wFl%2FbtsQU17iUxf%2F6TthDT9Uzz55BeKBjkeDa0%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;715&quot; height=&quot;339&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;339&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;응답속도(Milliseconds) 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/blockquote&gt;</description>
      <category>Dev_Info</category>
      <category>웹사이트 응답속도 체크</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/508</guid>
      <comments>https://ldne.tistory.com/508#entry508comment</comments>
      <pubDate>Mon, 29 Sep 2025 12:17:48 +0900</pubDate>
    </item>
    <item>
      <title>[jChartFX] X축, Y축 Label,그래프 툴팁 포맷 변경하기</title>
      <link>https://ldne.tistory.com/507</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;https://support.softwarefx.com/jChartFX/api(차트 라이브러리)&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z4g2s/btsQHzxdQ1S/tLjDCfVFnFflCXXvkaPad0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z4g2s/btsQHzxdQ1S/tLjDCfVFnFflCXXvkaPad0/img.png&quot; data-alt=&quot;기존 차트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z4g2s/btsQHzxdQ1S/tLjDCfVFnFflCXXvkaPad0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz4g2s%2FbtsQHzxdQ1S%2FtLjDCfVFnFflCXXvkaPad0%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;360&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기존 차트&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;pre id=&quot;code_1758273076972&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 더미 데이터
let data = [
	{ date: &quot;20250912&quot;, A: 333333, B: 111111 },
	{ date: &quot;20250913&quot;, A: 444444, B: 222222 },
	{ date: &quot;20250914&quot;, A: 555555, B: 333333 },
	{ date: &quot;20250915&quot;, A: 666666, B: 444444 },
	{ date: &quot;20250916&quot;, A: 777777, B: 555555 },
	{ date: &quot;20250917&quot;, A: 888888, B: 666666 },
	{ date: &quot;20250918&quot;, A: 999999, B: 777777 },
]​&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;br /&gt;▶️1. X축 Label 포맷 변경하기( 기존:yyyyMMdd -&amp;gt; 변경:yyyy-MM-dd )&lt;br /&gt;
&lt;pre id=&quot;code_1758273681412&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* 받아온 data형식이 yyyyMMdd 일경우
 * { date: &quot;20250912&quot;, A: 333333, B: 111111 }
 *
 * 서버에서 응답받은 데이터에서
 * 날짜데이터인 date의 값이
 * jChartFX는 해당 값을 순수 문자열(String) 로 인식되며
 * setCustomFormat(&quot;yyyy-MM-dd&quot;) 가 먹히지 않기 때문에
 * Date타입으로 변환후 차트에 적용해야함
 */
 
 // yyyy-MM-dd 문자열을 Date타입으로 변환하기
 let convertData = data.map(item =&amp;gt;
    const year = item.date.substring(0, 4);
    const month = item.date.substring(4, 6);
    const day = item.date.substring(6, 8);

	return {
    	...item,
        date: new Date(year, month - 1, day) // month는 0부터 시작
    };
 });
 
 // x축 라벨에 커스텀포맷을 지정하기
chart1.getAxisX().getLabelsFormat().setCustomFormat(&quot;yyyy-MM-dd&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;▶️2. Y축 Label 포맷 변경하기 - 숫자형 데이터를 천단위로 콤마 표시하기&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1758273765948&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Y축 라벨 포맷을 Number로 지정하기
chart1.getAxisY().getLabelsFormat().setFormat(cfx.AxisFormat.Number);&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1509&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UYDCm/btsQHaxMFik/Y19coQ2f8vdWVVkuivjeP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UYDCm/btsQHaxMFik/Y19coQ2f8vdWVVkuivjeP1/img.png&quot; data-alt=&quot;x축, y축 Label포맷 변경완료 후&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UYDCm/btsQHaxMFik/Y19coQ2f8vdWVVkuivjeP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUYDCm%2FbtsQHaxMFik%2FY19coQ2f8vdWVVkuivjeP1%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;1509&quot; height=&quot;367&quot; data-origin-width=&quot;1509&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;x축, y축 Label포맷 변경완료 후&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/blockquote&gt;</description>
      <category>Dev_Log</category>
      <category>jChartFX CoreVector JS라벨포맷변환</category>
      <category>jChartFX라벨포맷변환</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/507</guid>
      <comments>https://ldne.tistory.com/507#entry507comment</comments>
      <pubDate>Fri, 19 Sep 2025 18:32:08 +0900</pubDate>
    </item>
    <item>
      <title>GlobalFilter</title>
      <link>https://ldne.tistory.com/506</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;pre id=&quot;code_1758002419215&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package org.springframework.cloud.gateway.filter;

import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

public interface GlobalFilter {

    // ServerWebExchange exchange
    // -HTTP 요청/응답과 관련된 컨텍스트를 담고 있음
    // -요청 헤더, URI, 쿼리 파라미터 등을 읽거나 수정 가능
     
    // GatewayFilterChain chain
    // -필터 체인의 나머지를 실행할 수 있는 객체
    // -chain.filter(exchange)를 호출해야 다음 필터로 제어가 넘어가며
    //    호출하지 않으면 체인이 중단
    
    // Mono&amp;lt;Void&amp;gt;
    // -리액티브 체인에서의 비동기 완료 신호를 의미

    Mono&amp;lt;Void&amp;gt; filter(ServerWebExchange exchange, GatewayFilterChain chain);
}&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;pre id=&quot;code_1758002385231&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

@Component
public class LoggingGlobalFilter implements GlobalFilter, Ordered {

    @Override
    public Mono&amp;lt;Void&amp;gt; filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        System.out.println(&quot;Request Path: &quot; + exchange.getRequest().getURI());
        return chain.filter(exchange).then(
            Mono.fromRunnable(() -&amp;gt; {
                System.out.println(&quot;Response Status: &quot; + exchange.getResponse().getStatusCode());
            })
        );
    }

    @Override
    public int getOrder() {
        return -1; // 숫자가 낮을수록 먼저 실행
    }
}​&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;▶️Spring Cloud Gateway 전역 필터를 정의하는 인터페이스 &lt;br /&gt;▶️모든 요청/응답에 적용되며, 로깅, 보안, 트래픽 관리 같은 공통 처리 로직에 적합 &lt;br /&gt;▶️순서 제어가 가능하며, 리액티브 체인(Mono&amp;lt;Void&amp;gt;) 기반으로 동작&lt;/blockquote&gt;</description>
      <category>SpringFrameWork/SpringCloud</category>
      <category>org.springframework.cloud.gateway.filter.GlobalFilter</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/506</guid>
      <comments>https://ldne.tistory.com/506#entry506comment</comments>
      <pubDate>Tue, 16 Sep 2025 15:02:19 +0900</pubDate>
    </item>
    <item>
      <title>[Network] 웹사이트 load 과정</title>
      <link>https://ldne.tistory.com/505</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;1. URL 해석 &amp;amp; 소켓 준비&lt;/b&gt;&lt;br /&gt;▪️웹브라우저가 URL(www.test.com)을 파싱&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;rarr;TCP 소켓을 만들 준비(에페머럴 포트 할당). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. DNS 조회&lt;/b&gt;&lt;br /&gt;(1) 브라우저/OS 캐시 확인 &amp;rarr; 없으면&lt;br /&gt;(2) 시스템 DNS 해석기(보통 KT DNS 또는 설정한 1.1.1.1/8.8.8.8)로 질의(UDP/TCP 또는 DoH)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;rarr; A/AAAA 레코드(예: 27.101.45.121) 획득.&lt;br /&gt;※ 이 단계 지연은 보통 1~20ms 수준(캐시 있으면 01ms). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. 로컬 네트워크 통과&lt;/b&gt;&lt;br /&gt;▪️PC &amp;rarr; (유선 권장) &amp;rarr; 집 공유기 &amp;rarr; NAT 테이블에 매핑 생성.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;PPPoE를 쓰는 가정 회선이면 MTU 1492로 내려가고,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;MSS 클램핑이 동작(미설정 시 PMTU 문제가 생길 수 있음). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. 접속망 &amp;rarr; 백본 진입&lt;/b&gt;&lt;br /&gt;▪️공유기/모뎀(ONU) &amp;rarr; 동 단말 수를 묶는 OLT/스위치(지역 집선)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;rarr; BNG/BRAS(가정용 가입자 게이트웨이)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;rarr;KT 코어(백본/IP/MPLS)로 진입.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이 구간은 다수 가입자 공유(오버서브스크립션) 구조라, 시간대에 따라 큐잉 지연&amp;middot;지터가 발생. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. 인터넷 경로 선택(라우팅/피어링)&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;▪️&lt;/span&gt;&lt;/b&gt;KT 백본에서 목적지까지의 경로를 결정(동일 KT망/타사/IX 경유).&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;특정 홉(예: 11홉 xxx.xxx.xxx.xxx)에서 부하가 걸리면&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;RTT가 8ms &amp;harr; 60ms로 출렁일 수 있음. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. TCP 3-way 핸드셰이크 (SYN &amp;rarr; SYN/ACK &amp;rarr; ACK)&lt;/b&gt;&lt;br /&gt;▪️목적지 IP:포트에 연결.&lt;br /&gt;▪️1 RTT가 기본적으로 소요. (지연이 낮을수록 유리) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;7. TLS 1.3 핸드셰이크 + ALPN/SNI&lt;/b&gt;&lt;br /&gt;▪️ClientHello(SNI=www.test.com) &amp;rarr; 서버 인증서/키 교환&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;rarr; 암호화 확립.&lt;br /&gt;▪️TLS 1.3은 기본 1 RTT, 세션 재개/0-RTT가 가능하나&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;서버 정책에 따라 비활성일 수 있음(재실행/재접속 시 이득). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;8. HTTP/2(or 1.1) 요청 전송&lt;/b&gt;&lt;br /&gt;▪️쿠키/헤더 포함한 관련 요청 전송(XHR/Fetch/폼 POST 등).&lt;br /&gt;▪️서버 측에서는 보통 로드밸런서/리버스 프록시(WAF 포함 가능)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;rarr;애플리케이션&amp;rarr;DB/캐시 단계를 거쳐 응답 생성. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;9. 응답 수신 &amp;amp; 렌더링&lt;/b&gt;&lt;br /&gt;▪️최초 바이트(TTFB)는&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;대략 DNS + TCP + TLS + 서버처리 + 네트워크 RTT 누적 결과.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이후 동일 커넥션을 재사용하면&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;핸드셰이크 비용 없이 RTT + 서버 처리시간만으로 왕복.&lt;/blockquote&gt;</description>
      <category>Dev_Study/Network</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/505</guid>
      <comments>https://ldne.tistory.com/505#entry505comment</comments>
      <pubDate>Thu, 21 Aug 2025 16:04:41 +0900</pubDate>
    </item>
    <item>
      <title>[Windows] Windows10 DNS 최적화</title>
      <link>https://ldne.tistory.com/504</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;윈도우에서 DNS 최적화&lt;br /&gt;&lt;br /&gt;▶DNS 서버 변경하기&lt;br /&gt;1. 제어판 &amp;rarr; 네트워크 및 공유 센터&amp;rarr;어댑터 설정 변경 (또는 ncpa.cpl 실행)&lt;br /&gt;2. 사용 중인 이더넷 어댑터 우클릭&amp;rarr; 속성&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;699&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kGq7P/btsPYOPlKT6/TmHRrPxSWrFnUS2ekriuv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kGq7P/btsPYOPlKT6/TmHRrPxSWrFnUS2ekriuv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kGq7P/btsPYOPlKT6/TmHRrPxSWrFnUS2ekriuv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkGq7P%2FbtsPYOPlKT6%2FTmHRrPxSWrFnUS2ekriuv0%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;1476&quot; height=&quot;699&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;699&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;3. 인터넷 프로토콜 버전 4 (TCP/IPv4) 더블클릭&lt;br /&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DaNEi/btsPWZRCoPx/rtidmDJat9nmU0KKjVIlh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DaNEi/btsPWZRCoPx/rtidmDJat9nmU0KKjVIlh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DaNEi/btsPWZRCoPx/rtidmDJat9nmU0KKjVIlh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDaNEi%2FbtsPWZRCoPx%2FrtidmDJat9nmU0KKjVIlh1%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;402&quot; height=&quot;1110&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;1110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;4. 아래의 DNS 서버 주소 사용 선택 후 원하는 서버 입력&lt;br /&gt;▶추천 DNS 서버&lt;br /&gt;
&lt;table style=&quot;border-collapse: collapse; width: 60.1486%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.0297%;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;구글 DNS&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 54.4522%;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;8.8.8.8 / 8.8.4.4&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.0297%;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;Cloudflare&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;(해외 빠름)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 54.4522%;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;1.1.1.1 / 1.0.0.1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.0297%;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;KT DNS&lt;br /&gt;(국내 빠름)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 54.4522%;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;168.126.63.1 / 168.126.63.2&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;1083&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FVIFq/btsPVHRru6A/w6I5V0IZ4QfT21YNE5dhmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FVIFq/btsPVHRru6A/w6I5V0IZ4QfT21YNE5dhmk/img.png&quot; data-alt=&quot;원하는 DNS서버 입력후 &amp;amp;gt; 확인&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FVIFq/btsPVHRru6A/w6I5V0IZ4QfT21YNE5dhmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFVIFq%2FbtsPVHRru6A%2Fw6I5V0IZ4QfT21YNE5dhmk%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;330&quot; height=&quot;391&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;1083&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;원하는 DNS서버 입력후 &amp;gt; 확인&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;br /&gt;&lt;br /&gt;▶DNS 응답 속도 측정 (권장)&lt;br /&gt;&lt;br /&gt;(Windows PowerShell)&lt;br /&gt;
&lt;pre id=&quot;code_1755604513799&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 각DNS 서버가 도메인을 얼마나 빨리 응답하는지 test

Measure-Command { Resolve-DnsName www.naver.com -Server 8.8.8.8 }
Measure-Command { Resolve-DnsName www.naver.com -Server 1.1.1.1 }
Measure-Command { Resolve-DnsName www.naver.com -Server 168.126.63.1 }&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1377&quot; data-origin-height=&quot;1295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cux2Hk/btsPZXxX3cL/Xz8XNNKugEl0VPaS9LZKck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cux2Hk/btsPZXxX3cL/Xz8XNNKugEl0VPaS9LZKck/img.png&quot; data-alt=&quot;DNS 응답 속도 측정 결과(Milliseconds값 확인)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cux2Hk/btsPZXxX3cL/Xz8XNNKugEl0VPaS9LZKck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcux2Hk%2FbtsPZXxX3cL%2FXz8XNNKugEl0VPaS9LZKck%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;1377&quot; height=&quot;1295&quot; data-origin-width=&quot;1377&quot; data-origin-height=&quot;1295&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DNS 응답 속도 측정 결과(Milliseconds값 확인)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>OS_Study/Windows</category>
      <category>Windows10 DNS설정</category>
      <category>윈도우10 DNS설정</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/504</guid>
      <comments>https://ldne.tistory.com/504#entry504comment</comments>
      <pubDate>Tue, 19 Aug 2025 21:00:30 +0900</pubDate>
    </item>
    <item>
      <title>20250814</title>
      <link>https://ldne.tistory.com/503</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCrhd4/dJMb9LRkkB5/QKlViZ2iq4nikptvQLzGvk/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCrhd4/dJMb9LRkkB5/QKlViZ2iq4nikptvQLzGvk/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCrhd4/dJMb9LRkkB5/QKlViZ2iq4nikptvQLzGvk/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCrhd4%2FdJMb9LRkkB5%2FQKlViZ2iq4nikptvQLzGvk%2Ftfile.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;</description>
      <category>Life_Log/Exercise</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/503</guid>
      <comments>https://ldne.tistory.com/503#entry503comment</comments>
      <pubDate>Thu, 14 Aug 2025 08:13:49 +0900</pubDate>
    </item>
    <item>
      <title>20250812</title>
      <link>https://ldne.tistory.com/502</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcY7Jc/dJMb9Pzqmi4/AvK5QsckBtX4RfhJcSKZVk/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcY7Jc/dJMb9Pzqmi4/AvK5QsckBtX4RfhJcSKZVk/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcY7Jc/dJMb9Pzqmi4/AvK5QsckBtX4RfhJcSKZVk/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcY7Jc%2FdJMb9Pzqmi4%2FAvK5QsckBtX4RfhJcSKZVk%2Ftfile.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;</description>
      <category>Life_Log/Exercise</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/502</guid>
      <comments>https://ldne.tistory.com/502#entry502comment</comments>
      <pubDate>Tue, 12 Aug 2025 08:55:11 +0900</pubDate>
    </item>
    <item>
      <title>20250803</title>
      <link>https://ldne.tistory.com/501</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxE3uk/dJMb81UaKfm/atkwDG8NomGtQp59Eghap0/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxE3uk/dJMb81UaKfm/atkwDG8NomGtQp59Eghap0/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxE3uk/dJMb81UaKfm/atkwDG8NomGtQp59Eghap0/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxE3uk%2FdJMb81UaKfm%2FatkwDG8NomGtQp59Eghap0%2Ftfile.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;</description>
      <category>Life_Log/Exercise</category>
      <author>LeeDaniel</author>
      <guid isPermaLink="true">https://ldne.tistory.com/501</guid>
      <comments>https://ldne.tistory.com/501#entry501comment</comments>
      <pubDate>Sun, 3 Aug 2025 21:37:50 +0900</pubDate>
    </item>
  </channel>
</rss>