<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>박태영의 개발참고서</title>
    <link>https://univercity-coding-task.tistory.com/</link>
    <description>프론트엔드, 백엔드, AI, 인프라 등 개발 전반에 관심이 있습니다.
현재 스타트업에서 Flutter, DRF를 이용한 앱 개발 중입니다.
창업에도 관심있어, 창업동아리 활동으로 각종 경진대회 참여 경험 있습니다.

- Naver Boostcamp AI Tech 7기 컴퓨터 비전 수료
- 2024 충청북도 공공데이터 창업경진대회 - 최우수상(훈격: 충청북도 도지사)
- 2022 충청북도 공공데이터 창업경진대회 - 우수상(훈격: 충북과학기술 혁신원장)</description>
    <language>ko</language>
    <pubDate>Tue, 30 Jun 2026 11:04:26 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>개발자 박태영</managingEditor>
    <image>
      <title>박태영의 개발참고서</title>
      <url>https://tistory1.daumcdn.net/tistory/5389976/attach/ab4a400c6b8b45d9a2472b8c0167b15c</url>
      <link>https://univercity-coding-task.tistory.com</link>
    </image>
    <item>
      <title>k-fold + ensemble &amp;amp; drop-path</title>
      <link>https://univercity-coding-task.tistory.com/54</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;competition을 진행중에 여러 augmentation기법도 중요하지만 ensemble과 k-fold의 중요성을 다시 한번 깨달았습니다.&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 widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4127&quot; data-origin-height=&quot;2240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b79KBT/btsJNfGrx8n/c63WtZ9hlAoVNtOruvPtA1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b79KBT/btsJNfGrx8n/c63WtZ9hlAoVNtOruvPtA1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b79KBT/btsJNfGrx8n/c63WtZ9hlAoVNtOruvPtA1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb79KBT%2FbtsJNfGrx8n%2Fc63WtZ9hlAoVNtOruvPtA1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4127&quot; height=&quot;2240&quot; data-origin-width=&quot;4127&quot; data-origin-height=&quot;2240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 지금까지 위와 같은 형태로 최종 logits값을 구하고 있었습니다.&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;Image classification 대회중 여러 아키텍처를 kaggle, dacon에서 찾아보던 중 발견하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;도배 하자 유형 분류 AI 경진대회에서 public, private 1등한 아키텍처 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1521&quot; data-origin-height=&quot;699&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKutJN/btsJM5xfatE/uoB3LlskKxX5Y7ZSSvGLMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKutJN/btsJM5xfatE/uoB3LlskKxX5Y7ZSSvGLMk/img.png&quot; data-alt=&quot;https://dacon.io/competitions/official/236082/codeshare/8433?page=1&amp;amp;amp;dtype=recent&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKutJN/btsJM5xfatE/uoB3LlskKxX5Y7ZSSvGLMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKutJN%2FbtsJM5xfatE%2FuoB3LlskKxX5Y7ZSSvGLMk%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;1521&quot; height=&quot;699&quot; data-origin-width=&quot;1521&quot; data-origin-height=&quot;699&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://dacon.io/competitions/official/236082/codeshare/8433?page=1&amp;amp;dtype=recent&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;사진과 같이 Fold에서부터 train, valid 비율을 폴드별로 다르게 해서 최대한 모든 데이터를 사용하려고 한 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fold별로 가장 좋은 성능을 보인 weight를 갖고 ensemble 하였습니다&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;model은 convnext를 사용하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;295&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5Rh3X/btsJNQlRGGx/8VjLgprEx4ERksQ9x0lBV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5Rh3X/btsJNQlRGGx/8VjLgprEx4ERksQ9x0lBV0/img.png&quot; data-alt=&quot;convnext 아키텍처&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5Rh3X/btsJNQlRGGx/8VjLgprEx4ERksQ9x0lBV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5Rh3X%2FbtsJNQlRGGx%2F8VjLgprEx4ERksQ9x0lBV0%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;850&quot; height=&quot;295&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;295&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;convnext 아키텍처&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;convnext는 convolution layer에 residual 기법을 추가한 것입니다.&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;model에서는 residual 구조에서만 사용할 수 있는 drop-path 기법을 사용했습니다.&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;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lJDpE/btsJN36gR7k/2zw5a7FehBk9sXqe1lNcxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lJDpE/btsJN36gR7k/2zw5a7FehBk9sXqe1lNcxk/img.png&quot; data-origin-width=&quot;985&quot; data-origin-height=&quot;533&quot; data-is-animation=&quot;false&quot; style=&quot;width: 31.9014%; margin-right: 10px;&quot; data-widthpercent=&quot;32.28&quot; height=&quot;133&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lJDpE/btsJN36gR7k/2zw5a7FehBk9sXqe1lNcxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlJDpE%2FbtsJN36gR7k%2F2zw5a7FehBk9sXqe1lNcxk%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;985&quot; height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lW7iI/btsJNGX6xcr/lTtAE6c2QS66D61NWxuw5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lW7iI/btsJNGX6xcr/lTtAE6c2QS66D61NWxuw5k/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1520&quot; data-origin-height=&quot;392&quot; data-filename=&quot;스크린샷 2024-09-25 152236.png&quot; style=&quot;width: 66.9358%;&quot; data-widthpercent=&quot;67.72&quot; height=&quot;179&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lW7iI/btsJNGX6xcr/lTtAE6c2QS66D61NWxuw5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlW7iI%2FbtsJNGX6xcr%2FlTtAE6c2QS66D61NWxuw5k%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;1520&quot; height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;dropout과 drop-path&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dropout이 랜덤으로 신경망 속 뉴런의 학습을 끊는 것이라면, drop-path는 residual connection 구조에서만 사용할 수 있는 기법으로 랜덤으로 path를 끊는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBEVV5/btsJOLw7FSr/OnihCy7n0WUUzNvykueUk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBEVV5/btsJOLw7FSr/OnihCy7n0WUUzNvykueUk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBEVV5/btsJOLw7FSr/OnihCy7n0WUUzNvykueUk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBEVV5%2FbtsJOLw7FSr%2FOnihCy7n0WUUzNvykueUk0%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;619&quot; height=&quot;226&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;랜덤한 확률에 따라 &lt;span&gt;f_l(H_{l&amp;minus;1})&lt;/span&gt;을 생략하여 output이 &lt;span&gt;f(x) + x&lt;/span&gt; 또는 &lt;span&gt;x&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-origin-width=&quot;994&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ec0D3P/btsJNYqseOl/dAjOKysYWIGfODls5pa7f0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ec0D3P/btsJNYqseOl/dAjOKysYWIGfODls5pa7f0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ec0D3P/btsJNYqseOl/dAjOKysYWIGfODls5pa7f0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fec0D3P%2FbtsJNYqseOl%2FdAjOKysYWIGfODls5pa7f0%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;360&quot; height=&quot;317&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;876&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;논문에서 실험한 결과로는 0.5로 적용했을 때 학습시간이 25%가 줄어들었고, 성능이 제일 좋았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0.2로 했을 때는 성능은 Constant Path와 비슷하지만 학습시간이 40% 줄어들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dropout과 마찬가지로 서로 다른 모델을 만드는 효과와 비슷하여 ensemble 효과를 가져옵니다.&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://arxiv.org/abs/1603.09382&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://arxiv.org/abs/1603.09382&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1727402886733&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;Deep Networks with Stochastic Depth&quot; data-og-description=&quot;Very deep convolutional networks with hundreds of layers have led to significant reductions in error on competitive benchmarks. Although the unmatched expressiveness of the many layers can be highly desirable at test time, training very deep networks comes&quot; data-og-host=&quot;arxiv.org&quot; data-og-source-url=&quot;https://arxiv.org/abs/1603.09382&quot; data-og-url=&quot;https://arxiv.org/abs/1603.09382v3&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b0t1n8/hyW6E0lqyE/1kbhZxrQomrF7UXnU6KliK/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/hNlKq/hyXaw0sxpI/APlQo4Lo33grTPDv7p7j8k/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://arxiv.org/abs/1603.09382&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://arxiv.org/abs/1603.09382&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b0t1n8/hyW6E0lqyE/1kbhZxrQomrF7UXnU6KliK/img.png?width=1200&amp;amp;height=700&amp;amp;face=0_0_1200_700,https://scrap.kakaocdn.net/dn/hNlKq/hyXaw0sxpI/APlQo4Lo33grTPDv7p7j8k/img.png?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&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;Deep Networks with Stochastic Depth&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Very deep convolutional networks with hundreds of layers have led to significant reductions in error on competitive benchmarks. Although the unmatched expressiveness of the many layers can be highly desirable at test time, training very deep networks comes&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;arxiv.org&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 data-ke-size=&quot;size16&quot;&gt;아래는 pytorch lighting으로 작성한 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;drop-path와 k-fold + ensemble 코드만 올려봅니다.&lt;/p&gt;
&lt;pre id=&quot;code_1727403238567&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import timm
import torch
import torch.nn as nn


class DropPath(nn.Module):
    def __init__(self, drop_prob=0.0):
        super(DropPath, self).__init__()
        self.drop_prob = drop_prob

    def forward(self, x):
        if self.drop_prob == 0.0 or not self.training:
            return x
        keep_prob = 1 - self.drop_prob
        shape = (x.shape[0],) + (1,) * (x.ndim - 1)  # batch size, 1, 1, 1...
        random_tensor = keep_prob + torch.rand(shape, dtype=x.dtype, device=x.device)
        random_tensor.floor_()  # binarize
        output = x / keep_prob * random_tensor
        return output


class CustomResNeXt(nn.Module):
    def __init__(
        self, model_name=&quot;resnext50_32x4d&quot;, drop_path_rate=0.5, num_classes=500
    ):
        super(CustomResNeXt, self).__init__()
        # timm 라이브러리에서 ResNeXt 모델 로드
        self.model_name = model_name

        self.model = timm.create_model(model_name, pretrained=True)
        
        # classifier head만 학습
        for param in self.model.parameters():
            param.requires_grad = False

        # 마지막 레이어 변경
        if model_name == &quot;resnext26ts&quot;:
            self.model.head.fc = nn.Linear(2048, num_classes)
        elif model_name == &quot;resnext50_32x4d&quot;:
            self.model.fc = nn.Linear(2048, num_classes)
        elif model_name == &quot;resnext101_32x16d&quot;:
            self.model.fc = nn.Linear(2048, num_classes)
        else:
            raise ValueError(&quot;Invalid model name&quot;)

        # DropPath 추가
        self.drop_path = DropPath(drop_prob=drop_path_rate)

        # Global Average Pooling 추가
        self.global_pool = nn.AdaptiveAvgPool2d((1, 1))

    def forward(self, x):
        x = self.model.forward_features(x)  # 특징 추출

        # DropPath 적용
        x = self.drop_path(x)

        # Global Pooling을 사용하여 (batch_size, channels, height, width) -&amp;gt; (batch_size, channels, 1, 1)로 변환
        x = self.global_pool(x)

        # 2D 텐서로 변환 (batch_size, channels)
        x = torch.flatten(x, 1)

        if self.model_name == &quot;resnext26ts&quot;:
            self.model.head.fc.requires_grad = True
            x = self.model.head.fc(x)  # ClassifierHead의 fc 레이어
        elif (
            self.model_name == &quot;resnext50_32x4d&quot;
            or self.model_name == &quot;resnext101_32x16d&quot;
        ):
            self.model.fc.requires_grad = True
            x = self.model.fc(x)
        else:
            raise ValueError(&quot;Invalid model name&quot;)

        return x&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;timm library에서 불러온 resnext는 drop-path 추가 옵션이 없어서 class를 만들어서 fc layer앞에 추가하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1727403923625&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import os
from argparse import ArgumentParser
from time import gmtime, strftime
import yaml

import numpy as np
import pandas as pd
import torch
from torch.utils.data import DataLoader

import pytorch_lightning as pl
from pytorch_lightning.callbacks import EarlyStopping, ModelCheckpoint
from pytorch_lightning.loggers import CSVLogger, WandbLogger
from sklearn.model_selection import StratifiedKFold

from data_sets import base_dataset
from select_transforms import TransformSelector
from pl_trainer import Sketch_Classifier
from utils.util import dotdict

torch.set_float32_matmul_precision(&quot;medium&quot;)  # 또는 'high'


def load_config(config_file):
    with open(config_file, &quot;r&quot;) as file:
        config = yaml.safe_load(file)
    return config


def parse_args(config):
    parser = ArgumentParser()

    # Set defaults from config file, but allow override via command line
    parser.add_argument(
        &quot;--exp_name&quot;, type=str, default=config.get(&quot;exp_name&quot;)
    )  # 현재 실험 이름
    parser.add_argument(
        &quot;--base_output_dir&quot;, type=str, default=config.get(&quot;base_output_dir&quot;)
    )  # 실험 결과 저장 폴더
    parser.add_argument(&quot;--gpus&quot;, type=str, default=config.get(&quot;gpus&quot;))

    parser.add_argument(&quot;--batch_size&quot;, type=int, default=config.get(&quot;batch_size&quot;))
    parser.add_argument(&quot;--epochs&quot;, type=int, default=config.get(&quot;epochs&quot;))
    parser.add_argument(
        &quot;--learning_rate&quot;, type=float, default=config.get(&quot;learning_rate&quot;)
    )

    parser.add_argument(
        &quot;--model_type&quot;, type=str, default=config.get(&quot;model_type&quot;)
    )  # backbone 타입
    parser.add_argument(
        &quot;--model_name&quot;, type=str, default=config.get(&quot;model_name&quot;)
    )  # torchvision, timm을 위한 model 이름
    parser.add_argument(&quot;--pretrained&quot;, type=bool, default=config.get(&quot;pretrained&quot;))
    parser.add_argument(
        &quot;--data_name&quot;, type=str, default=config.get(&quot;data_name&quot;)
    )  # dataset 이름
    parser.add_argument(
        &quot;--transform_name&quot;, type=str, default=config.get(&quot;transform_name&quot;)
    )
    parser.add_argument(&quot;--num_classes&quot;, type=int, default=config.get(&quot;num_classes&quot;))
    parser.add_argument(&quot;--optim&quot;, type=str, default=config.get(&quot;optim&quot;))
    parser.add_argument(&quot;--weight_decay&quot;, type=str, default=config.get(&quot;weight_decay&quot;))
    parser.add_argument(&quot;--loss&quot;, type=str, default=config.get(&quot;loss&quot;))
    parser.add_argument(
        &quot;--cos_sch&quot;, type=int, default=config.get(&quot;cos_sch&quot;)
    )  # cos 주기
    parser.add_argument(&quot;--warm_up&quot;, type=int, default=config.get(&quot;warm_up&quot;))
    parser.add_argument(
        &quot;--early_stopping&quot;, type=int, default=config.get(&quot;early_stopping&quot;)
    )

    parser.add_argument(
        &quot;--train_data_dir&quot;, type=str, default=config.get(&quot;train_data_dir&quot;)
    )
    parser.add_argument(
        &quot;--traindata_info_file&quot;, type=str, default=config.get(&quot;traindata_info_file&quot;)
    )
    parser.add_argument(
        &quot;--test_data_dir&quot;, type=str, default=config.get(&quot;test_data_dir&quot;)
    )
    parser.add_argument(
        &quot;--testdata_info_file&quot;, type=str, default=config.get(&quot;testdata_info_file&quot;)
    )

    parser.add_argument(
        &quot;--use_wandb&quot;, type=int, default=config.get(&quot;use_wandb&quot;)
    )  # wandb 사용?
    parser.add_argument(
        &quot;--num_workers&quot;, type=str, default=config.get(&quot;num_workers&quot;)
    )  # dataloader 옵션 관련
    parser.add_argument(&quot;--cutmix_mixup&quot;, type=str, default=config.get(&quot;cutmix_mixup&quot;))
    parser.add_argument(&quot;--kfold_pl_train_return&quot;, type=str, default=True)
    parser.add_argument(&quot;--n_splits&quot;, type=int, default=config.get(&quot;n_splits&quot;))
    parser.add_argument(
        &quot;--mixed_precision&quot;, type=bool, default=config.get(&quot;mixed_precision&quot;)
    )
    parser.add_argument(&quot;--cutmix_ratio&quot;, type=int, default=config.get(&quot;cutmix_ratio&quot;))
    parser.add_argument(&quot;--mixup_ratio&quot;, type=int, default=config.get(&quot;mixup_ratio&quot;))
    parser.add_argument(
        &quot;--accumulate_grad_batches&quot;,
        type=int,
        default=config.get(&quot;accumulate_grad_batches&quot;),
    ),
    parser.add_argument(
        &quot;--num_cnn_classes&quot;, type=int, default=config.get(&quot;num_cnn_classes&quot;)
    )  # CNN 분류 클래스 수
    return parser.parse_args()


def main(args):
    hparams = dotdict(vars(args))

    # Stratified K-Fold로 데이터셋 분할
    skf = StratifiedKFold(n_splits=hparams.n_splits, shuffle=True, random_state=42)
    train_info_df = pd.read_csv(hparams[&quot;traindata_info_file&quot;])

    transform_selector = TransformSelector(hparams.transform_name)
    train_transform = transform_selector.get_transform(True)
    test_transform = transform_selector.get_transform(False)

    models = []
    best_model_paths = []  # 각 폴드의 베스트 모델 가중치 저장

    for fold, (train_idx, val_idx) in enumerate(
        skf.split(train_info_df, train_info_df[&quot;target&quot;])
    ):

        train_df = train_info_df.iloc[train_idx]
        val_df = train_info_df.iloc[val_idx]

        train_dataset = base_dataset.CustomDataset(
            hparams.train_data_dir, train_df, train_transform, False
        )
        val_dataset = base_dataset.CustomDataset(
            hparams.train_data_dir, val_df, test_transform, False
        )
        train_loader = DataLoader(
            train_dataset,
            batch_size=hparams.batch_size,
            num_workers=hparams.num_workers,
            shuffle=True,
            pin_memory=True,
            drop_last=True,
        )
        val_loader = DataLoader(
            val_dataset,
            batch_size=hparams.batch_size,
            num_workers=hparams.num_workers,
            shuffle=False,
            pin_memory=True,
            drop_last=True,
        )

        # 3개의 모델 학습
        model_names = [&quot;resnet26ts&quot;, &quot;resnext50_32x4d&quot;, &quot;resnet101_32x8d&quot;]
        best_model_acc = 0
        best_model_path = None

        for model_name in model_names:
            print(f&quot;Training {model_name} on fold {fold}&quot;)

            if model_name == &quot;resnet101_32x8d&quot;:
                train_loader = DataLoader(
                    train_dataset,
                    batch_size=32,
                    num_workers=hparams.num_workers,
                    shuffle=True,
                    pin_memory=True,
                    drop_last=True,
                )

                val_loader = DataLoader(
                    val_dataset,
                    batch_size=32,
                    num_workers=hparams.num_workers,
                    shuffle=False,
                    pin_memory=True,
                    drop_last=True,
                )

            # 모델 이름을 hparams에 업데이트
            hparams.model_name = model_name

            # Sketch_Classifier 인스턴스 생성
            model = Sketch_Classifier(**hparams)

            # logger 설정
            csv_logger = CSVLogger(
                save_dir=hparams.output_dir + f&quot;/{model_name}/fold{fold}&quot;, name=&quot;result&quot;
            )
            my_loggers = [csv_logger]

            if hparams.use_wandb:
                import wandb

                wandb.init(
                    project=&quot;sketch classification&quot;,
                    entity=&quot;nav_sketch&quot;,
                    name=f&quot;{model_name}_fold{fold}&quot;,
                )
                wandb_logger = WandbLogger(
                    save_dir=hparams.output_dir + f&quot;/{model_name}/fold{fold}&quot;,
                    name=os.path.basename(hparams.output_dir),
                    project=&quot;sketch classification&quot;,
                )
                my_loggers.append(wandb_logger)

            # ModelCheckpoint 콜백 설정
            checkpoint_callback = []
            checkpoint_callback.append(
                ModelCheckpoint(
                    dirpath=hparams.output_dir + f&quot;/{model_name}/fold{fold}&quot;,
                    save_last=True,
                    save_top_k=1,
                    monitor=&quot;val_acc&quot;,  # val_acc를 기준으로 체크포인트 저장
                    mode=&quot;max&quot;,
                )
            )

            if hparams.early_stopping &amp;gt; 0:
                early_stop = EarlyStopping(
                    monitor=&quot;valid_loss&quot;,
                    patience=hparams.early_stopping,
                    verbose=True,
                    mode=&quot;min&quot;,
                )
                checkpoint_callback.append(early_stop)

            # Trainer 설정
            trainer = pl.Trainer(
                logger=my_loggers,
                accelerator=&quot;cpu&quot; if hparams.gpus == 0 else &quot;gpu&quot;,
                precision=&quot;16-mixed&quot; if hparams.gpus != 0 else 32,
                devices=None if hparams.gpus == 0 else hparams.gpus,
                callbacks=checkpoint_callback,
                max_epochs=hparams.epochs,
                accumulate_grad_batches=(
                    1
                    if hparams.accumulate_grad_batches &amp;lt;= 0
                    else hparams.accumulate_grad_batches
                ),
            )

            # 학습 진행
            trainer.fit(model, train_loader, val_loader)

            # 현재 모델이 최고 성능을 기록했는지 확인
            if checkpoint_callback[0].best_model_score &amp;gt; best_model_acc:
                best_model_acc = checkpoint_callback[0].best_model_score
                best_model_path = checkpoint_callback[0].best_model_path

        print(f&quot;Best model for fold {fold} is: {best_model_path}&quot;)
        best_model_paths.append(best_model_path)

    # 최종 베스트 모델들로 앙상블 수행
    print(&quot;Starting ensemble prediction on test dataset&quot;)

    test_info_df = pd.read_csv(hparams[&quot;testdata_info_file&quot;])
    test_dataset = base_dataset.CustomDataset(
        hparams.test_data_dir, test_info_df, test_transform, True
    )
    test_loader = DataLoader(
        test_dataset,
        batch_size=hparams.batch_size,
        num_workers=hparams.num_workers,
        shuffle=False,
    )

    test_predictions = np.zeros((len(test_dataset), hparams.num_classes))

    for best_model_path in best_model_paths:
        model = Sketch_Classifier.load_from_checkpoint(best_model_path)
        trainer = pl.Trainer(
            accelerator=&quot;cpu&quot; if hparams.gpus == 0 else &quot;gpu&quot;, devices=hparams.gpus
        )

        # 모델 예측
        predictions = trainer.predict(model, test_loader)

        pred_list = []
        for batch in predictions:
            # 배치의 두 번째 값(2D 배열)을 pred_list에 추가
            logits = batch[1]  # 두 번째 값만 사용 (torch.Size([64, 500]))
            pred_list.append(logits.cpu().numpy())

        # 모든 배치의 예측값을 합침
        pred_list = np.concatenate(pred_list, axis=0)

        # test_predictions에 예측값을 더함
        test_predictions += pred_list

    # 모델 수로 나누어 평균을 냄
    test_predictions /= len(best_model_paths)

    output_df = pd.DataFrame()
    output_df[&quot;ID&quot;] = range(len(test_info_df))
    output_df[&quot;image_path&quot;] = test_info_df[&quot;image_path&quot;]
    output_df[&quot;target&quot;] = test_predictions.argmax(axis=1)

    if not os.path.isdir(args.output_dir):
        os.makedirs(args.output_dir)

    output_df.to_csv(os.path.join(args.output_dir, &quot;output.csv&quot;), index=False)


if __name__ == &quot;__main__&quot;:

    pl.seed_everything(42)

    # ------------
    # args
    # ------------

    config = load_config(&quot;config2.yaml&quot;)
    args = parse_args(config)

    ## output_dir
    current_time = strftime(&quot;%m-%d_0&quot;, gmtime())
    pt = &quot;O&quot; if args.pretrained else &quot;X&quot;
    name_str = (
        f&quot;{args.model_name}-{args.batch_size}-{args.learning_rate}&quot;
        + f&quot;-{args.optim}-{pt}-{args.exp_name}&quot;
    )
    # args.output_dir = os.path.join(args.base_output_dir, args.exp_name + &quot;_&quot; + current_time)
    args.output_dir = os.path.join(args.base_output_dir, name_str + &quot;_&quot; + current_time)
    if os.path.isdir(args.output_dir):
        while True:
            cur_exp_number = int(args.output_dir[-2:].replace(&quot;_&quot;, &quot;&quot;))
            args.output_dir = args.output_dir[:-2] + &quot;_{}&quot;.format(cur_exp_number + 1)
            if not os.path.isdir(args.output_dir):
                break

    # gpus
    args.gpus = [int(i) for i in str(args.gpus).split(&quot;,&quot;)]

    main(args)&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;k-fold에서 train, valid 비율은 8:2로 가져갔습니다&lt;/p&gt;</description>
      <category>인공지능</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/54</guid>
      <comments>https://univercity-coding-task.tistory.com/54#entry54comment</comments>
      <pubDate>Fri, 27 Sep 2024 11:34:51 +0900</pubDate>
    </item>
    <item>
      <title>Django &amp;quot;Reverse for &amp;lsquo;password_reset_confirm&amp;rsquo; not found&amp;quot; Error</title>
      <link>https://univercity-coding-task.tistory.com/52</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 2023년 11월쯤 Django 오픈소스에 기여하려다가 pull requests를 reject 당한 경험에 대해 말씀드리겠습니다.&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;설명에 앞서 django에서는 password reset을 해주는 도와주는 CBV가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 CBV는 사용자가 비밀번호를 잃어버렸을 경우 이메일로 초기화링크를 보내고, 링크에 접속하면 비밀번호를 초기화 할 수 있는 기능을 제공합니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Django는 후자의 방법을 선택하고 있습니다. 그래서 비밀번호를 재설정을 하려면 초기화를 해야합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 방법을 제공하는게 위에서 말한 CBV입니다&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;해당 CBV를 사용하기위해서는 아래와 같이 urls.py에 등록만 하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1726311220520&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from django.urls import path
from django.contrib.auth import views as auth_views
from . import views

# app_name = 'common'

urlpatterns = [
    (... 생략 ...)
    path('password_reset/', views.PasswordResetView.as_view(), name='password_reset'),
    path('password_reset/done/', views.PasswordResetDoneView.as_view(), name='password_reset_done'),
    path('reset/&amp;lt;uidb64&amp;gt;/&amp;lt;token&amp;gt;/', views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
    path('reset/done/', views.PasswordResetCompleteView.as_view(), name='password_reset_complete')
]&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;PasswordResetView : &lt;/b&gt;비밀번호 재설정을 요청하는 폼을 사용자에게 제공하고, 이메일로 비밀번호 재설정 링크를 전송하는 역할을 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PasswordResetDoneView : &lt;/b&gt;비밀번호 재설정 이메일이 성공적으로 전송되었다는 확인 메시지를 사용자에게 보여줍니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PasswordResetConfirmView : &lt;/b&gt;이메일로 받은 링크를 통해 접근한 후, 새로운 비밀번호를 설정할 수 있는 폼을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PasswordResetCompleteView :&lt;/b&gt;비밀번호 재설정이 성공적으로 완료된 후, 완료 메시지를 사용자에게 표시합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위처럼 CBV를 간단하게 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;근데 해당 CBV의 경우 Django에서 제공하는 app_name = 'common'과 같은 URL 네임스페이스 기능이 에러가 나며 사용할 수 없었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 저는 왜 그럴까하고 Django 소스코드를 디버깅하며 탐색해보았습니다.&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;탐색결과 PasswordResetView, PasswordResetForm, template에 문제가 있었습니다.&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;1.&amp;nbsp;password_reset_email.html에서&amp;nbsp;url인자로&amp;nbsp;app_name을&amp;nbsp;받는&amp;nbsp;것이&amp;nbsp;아닌&amp;nbsp;string으로&amp;nbsp;지정해놓았기&amp;nbsp;때문입니다. &lt;br /&gt;&lt;br /&gt;그래서&amp;nbsp;아래와&amp;nbsp;같이&amp;nbsp;수정하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kQT6O/btsJDZo98gk/su19PSpEyXlUfmEiv4FJs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kQT6O/btsJDZo98gk/su19PSpEyXlUfmEiv4FJs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kQT6O/btsJDZo98gk/su19PSpEyXlUfmEiv4FJs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkQT6O%2FbtsJDZo98gk%2Fsu19PSpEyXlUfmEiv4FJs0%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;1818&quot; height=&quot;548&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;548&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;2. forms.py에서 app_name 파라미터를 기본값으로 None으로 설정하고, 만약 입력이 있을 경우 이를 컨텍스트에 포함시켜 템플릿 엔진에 전달합니다. 입력이 없을 때는 특정 문자열을 전달하도록 처리합니다. 이렇게 함으로써 password_reset_email.html에 필요한 인자를 적절히 전달할 수 있게 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w0ChC/btsJEl6yv6u/TAYPb8ys2dCb6Cc9Z4DYKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w0ChC/btsJEl6yv6u/TAYPb8ys2dCb6Cc9Z4DYKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w0ChC/btsJEl6yv6u/TAYPb8ys2dCb6Cc9Z4DYKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw0ChC%2FbtsJEl6yv6u%2FTAYPb8ys2dCb6Cc9Z4DYKk%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;1826&quot; height=&quot;964&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;964&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;3. 마지막으로 views.py를 수정해야합니다. dispath함수를 수정하여 URL 네임스페이스를 포함할 수 있게 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;form_valid 함수에도 app_name을 추가하여 위에서 정의한 forms.py로 전달할 수 있게 하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;1002&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddYDDP/btsJD6hrNnf/vXyVklOxqNPTN89B8tNXT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddYDDP/btsJD6hrNnf/vXyVklOxqNPTN89B8tNXT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddYDDP/btsJD6hrNnf/vXyVklOxqNPTN89B8tNXT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddYDDP%2FbtsJD6hrNnf%2FvXyVklOxqNPTN89B8tNXT0%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;1800&quot; height=&quot;1002&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;1002&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 요청한 PR입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/django/django/pull/17508&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/django/django/pull/17508&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726578992247&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Add new feature to PasswordResetView, PasswordResetForm and modify associated password_reset_email.html template by taeyoung1005&quot; data-og-description=&quot;I'm not fluent in English, and I use a translation tool, so please forgive me for any possible mistranslations. Update PasswordResetView, PasswordResetForm to include new feature in password re...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/django/django/pull/17508&quot; data-og-url=&quot;https://github.com/django/django/pull/17508&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://github.com/django/django/pull/17508&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/django/django/pull/17508&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;Add new feature to PasswordResetView, PasswordResetForm and modify associated password_reset_email.html template by taeyoung1005&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I'm not fluent in English, and I use a translation tool, so please forgive me for any possible mistranslations. Update PasswordResetView, PasswordResetForm to include new feature in password re...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 작성한 commit 기록 되어있는 링크입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/taeyoung1005/django/commit/8e2b69452c1703ca579399fe143740035eab349&quot;&gt;https://github.com/taeyoung1005/django/commit/8e2b69452c1703ca579399fe143740035eab349&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726313184763&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Add new feature to PasswordResetView, PasswordResetForm and modify as&amp;hellip; &amp;middot; taeyoung1005/django@8e2b694&quot; data-og-description=&quot;&amp;hellip;sociated password_reset_email.html template Update PasswordResetView, PasswordResetForm to include new feature in password reset logic. Previously, when using the PasswordReset feature, it was no...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/taeyoung1005/django/commit/8e2b69452c1703ca579399fe143740035eab3494&quot; data-og-url=&quot;https://github.com/taeyoung1005/django/commit/8e2b69452c1703ca579399fe143740035eab3494&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cGAwop/hyW22MTmXj/FWHb2pEpjJbWLgRH0EkkOk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/taeyoung1005/django/commit/8e2b69452c1703ca579399fe143740035eab3494&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/taeyoung1005/django/commit/8e2b69452c1703ca579399fe143740035eab3494&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cGAwop/hyW22MTmXj/FWHb2pEpjJbWLgRH0EkkOk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;Add new feature to PasswordResetView, PasswordResetForm and modify as&amp;hellip; &amp;middot; taeyoung1005/django@8e2b694&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;hellip;sociated password_reset_email.html template Update PasswordResetView, PasswordResetForm to include new feature in password reset logic. Previously, when using the PasswordReset feature, it was no...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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 data-ke-size=&quot;size16&quot;&gt;Django forum에도 이 에러에 대해 올라와있습니다. view가 꽤 많고 여러 사람들이 댓글을 달아주셨는데요.&lt;br /&gt;에러의 해결방법보다는 이유만 올려주고 있길래 제가 아래에 추가로 작성하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HZKnp/btsJDhdKeY7/3Q9Ps1SFCqo3vQ730cAY41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HZKnp/btsJDhdKeY7/3Q9Ps1SFCqo3vQ730cAY41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HZKnp/btsJDhdKeY7/3Q9Ps1SFCqo3vQ730cAY41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHZKnp%2FbtsJDhdKeY7%2F3Q9Ps1SFCqo3vQ730cAY41%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;1256&quot; height=&quot;1104&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://forum.djangoproject.com/t/reverse-for-password-reset-confirm-not-found/9788&quot;&gt;https://forum.djangoproject.com/t/reverse-for-password-reset-confirm-not-found/9788&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1726311722770&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;Reverse for 'password_reset_confirm' not found.&quot; data-og-description=&quot;So I&amp;rsquo;m trying to use the default reset password form from django and this is my urls now: urls: path('reset_password/', auth_views.PasswordResetView.as_view(success_url=reverse_lazy('home:password_reset_done'), template_name=&amp;quot;accounts/password_reset.html&quot; data-og-host=&quot;forum.djangoproject.com&quot; data-og-source-url=&quot;https://forum.djangoproject.com/t/reverse-for-password-reset-confirm-not-found/9788&quot; data-og-url=&quot;https://forum.djangoproject.com/t/reverse-for-password-reset-confirm-not-found/9788&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lQQg0/hyW2TCo1eo/ovBCGK26vqKYGnq8fgx6d1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/bzawrP/hyW2PNxSGj/LmhFYbz6zwuR0iutgSFA4k/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://forum.djangoproject.com/t/reverse-for-password-reset-confirm-not-found/9788&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://forum.djangoproject.com/t/reverse-for-password-reset-confirm-not-found/9788&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lQQg0/hyW2TCo1eo/ovBCGK26vqKYGnq8fgx6d1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/bzawrP/hyW2PNxSGj/LmhFYbz6zwuR0iutgSFA4k/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&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;Reverse for 'password_reset_confirm' not found.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;So I&amp;rsquo;m trying to use the default reset password form from django and this is my urls now: urls: path('reset_password/', auth_views.PasswordResetView.as_view(success_url=reverse_lazy('home:password_reset_done'), template_name=&quot;accounts/password_reset.html&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;forum.djangoproject.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 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;</description>
      <category>python, 파이썬</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/52</guid>
      <comments>https://univercity-coding-task.tistory.com/52#entry52comment</comments>
      <pubDate>Sat, 14 Sep 2024 20:38:13 +0900</pubDate>
    </item>
    <item>
      <title>Github Action을 이용한 CI/CD</title>
      <link>https://univercity-coding-task.tistory.com/50</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xTUPf/btsIiiwWv6Z/389yDjil3uXmVFacpOpc50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xTUPf/btsIiiwWv6Z/389yDjil3uXmVFacpOpc50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xTUPf/btsIiiwWv6Z/389yDjil3uXmVFacpOpc50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxTUPf%2FbtsIiiwWv6Z%2F389yDjil3uXmVFacpOpc50%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nJbyN/btsIg2Pu3Hi/3jhCBbb1Pf26C6qQWkep71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nJbyN/btsIg2Pu3Hi/3jhCBbb1Pf26C6qQWkep71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nJbyN/btsIg2Pu3Hi/3jhCBbb1Pf26C6qQWkep71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnJbyN%2FbtsIg2Pu3Hi%2F3jhCBbb1Pf26C6qQWkep71%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boCmRA/btsIgMe26ei/T99xZICUFQbfpx80Wx8BzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boCmRA/btsIgMe26ei/T99xZICUFQbfpx80Wx8BzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boCmRA/btsIgMe26ei/T99xZICUFQbfpx80Wx8BzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboCmRA%2FbtsIgMe26ei%2FT99xZICUFQbfpx80Wx8BzK%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drUfEs/btsIhy8cUoi/aKmFLrHRlYNavKvDUAkYsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drUfEs/btsIhy8cUoi/aKmFLrHRlYNavKvDUAkYsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drUfEs/btsIhy8cUoi/aKmFLrHRlYNavKvDUAkYsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrUfEs%2FbtsIhy8cUoi%2FaKmFLrHRlYNavKvDUAkYsk%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btlbeA/btsIhevvNUw/Qc3uQLC7pkZiJzNHiXKnH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btlbeA/btsIhevvNUw/Qc3uQLC7pkZiJzNHiXKnH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btlbeA/btsIhevvNUw/Qc3uQLC7pkZiJzNHiXKnH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtlbeA%2FbtsIhevvNUw%2FQc3uQLC7pkZiJzNHiXKnH0%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pO1Xc/btsIiV2kjma/HPGDYRM3GnfiZJz60Bm5f0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pO1Xc/btsIiV2kjma/HPGDYRM3GnfiZJz60Bm5f0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pO1Xc/btsIiV2kjma/HPGDYRM3GnfiZJz60Bm5f0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpO1Xc%2FbtsIiV2kjma%2FHPGDYRM3GnfiZJz60Bm5f0%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIboOq/btsIhLTTXYy/25nlLddsF7T7OaFb1AGe71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIboOq/btsIhLTTXYy/25nlLddsF7T7OaFb1AGe71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIboOq/btsIhLTTXYy/25nlLddsF7T7OaFb1AGe71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIboOq%2FbtsIhLTTXYy%2F25nlLddsF7T7OaFb1AGe71%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/miUOu/btsIgNSzjU0/sMbMoG5GpGvokQswwR5dTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/miUOu/btsIgNSzjU0/sMbMoG5GpGvokQswwR5dTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/miUOu/btsIgNSzjU0/sMbMoG5GpGvokQswwR5dTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmiUOu%2FbtsIgNSzjU0%2FsMbMoG5GpGvokQswwR5dTK%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FEPan/btsIhzFZKJ3/ia59XUcBjRFQ4V7XkhKtb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FEPan/btsIhzFZKJ3/ia59XUcBjRFQ4V7XkhKtb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FEPan/btsIhzFZKJ3/ia59XUcBjRFQ4V7XkhKtb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFEPan%2FbtsIhzFZKJ3%2Fia59XUcBjRFQ4V7XkhKtb1%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NacHp/btsIiip9bKD/bkUxGUwkjrPvblkI5OPpf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NacHp/btsIiip9bKD/bkUxGUwkjrPvblkI5OPpf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NacHp/btsIiip9bKD/bkUxGUwkjrPvblkI5OPpf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNacHp%2FbtsIiip9bKD%2FbkUxGUwkjrPvblkI5OPpf1%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hw3uR/btsIiftrCKt/wnV7pDomwzHSdEDRG4gKZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hw3uR/btsIiftrCKt/wnV7pDomwzHSdEDRG4gKZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hw3uR/btsIiftrCKt/wnV7pDomwzHSdEDRG4gKZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHw3uR%2FbtsIiftrCKt%2FwnV7pDomwzHSdEDRG4gKZk%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GfsDz/btsIjfzvcrB/KgVk0F28zaWgvSjCU4kY2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GfsDz/btsIjfzvcrB/KgVk0F28zaWgvSjCU4kY2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GfsDz/btsIjfzvcrB/KgVk0F28zaWgvSjCU4kY2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGfsDz%2FbtsIjfzvcrB%2FKgVk0F28zaWgvSjCU4kY2k%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QmNkM/btsIiwPfU0F/tpIJkNaA5dkJLDuDSxNOQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QmNkM/btsIiwPfU0F/tpIJkNaA5dkJLDuDSxNOQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QmNkM/btsIiwPfU0F/tpIJkNaA5dkJLDuDSxNOQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQmNkM%2FbtsIiwPfU0F%2FtpIJkNaA5dkJLDuDSxNOQ0%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyxHq8/btsIiSExwAu/4zkYUxgMKqzLEAAR9skRTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyxHq8/btsIiSExwAu/4zkYUxgMKqzLEAAR9skRTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyxHq8/btsIiSExwAu/4zkYUxgMKqzLEAAR9skRTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyxHq8%2FbtsIiSExwAu%2F4zkYUxgMKqzLEAAR9skRTK%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XYmNu/btsIgNyiNsQ/xoBzirb0YDGXRnIzYvoOB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XYmNu/btsIgNyiNsQ/xoBzirb0YDGXRnIzYvoOB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XYmNu/btsIgNyiNsQ/xoBzirb0YDGXRnIzYvoOB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXYmNu%2FbtsIgNyiNsQ%2FxoBzirb0YDGXRnIzYvoOB0%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVGbx1/btsIhSegvj9/GzpUoN4QO8UjvUqgsXe0n1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVGbx1/btsIhSegvj9/GzpUoN4QO8UjvUqgsXe0n1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVGbx1/btsIhSegvj9/GzpUoN4QO8UjvUqgsXe0n1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVGbx1%2FbtsIhSegvj9%2FGzpUoN4QO8UjvUqgsXe0n1%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tny3T/btsIhx2vBXF/vvCImenbOtMj6NCOWZD0hK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tny3T/btsIhx2vBXF/vvCImenbOtMj6NCOWZD0hK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tny3T/btsIhx2vBXF/vvCImenbOtMj6NCOWZD0hK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftny3T%2FbtsIhx2vBXF%2FvvCImenbOtMj6NCOWZD0hK%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT0r2n/btsIiWmEzZB/7T4dwH2EyA4QLnQ5TJFJdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT0r2n/btsIiWmEzZB/7T4dwH2EyA4QLnQ5TJFJdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT0r2n/btsIiWmEzZB/7T4dwH2EyA4QLnQ5TJFJdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT0r2n%2FbtsIiWmEzZB%2F7T4dwH2EyA4QLnQ5TJFJdK%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lfdDe/btsIiSExwz4/I8R4rQO6kLzBBYRNio3Oik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lfdDe/btsIiSExwz4/I8R4rQO6kLzBBYRNio3Oik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lfdDe/btsIiSExwz4/I8R4rQO6kLzBBYRNio3Oik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlfdDe%2FbtsIiSExwz4%2FI8R4rQO6kLzBBYRNio3Oik%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7R1dr/btsIiylZQmx/xyy9x6wYnLw0k6KofSWWGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7R1dr/btsIiylZQmx/xyy9x6wYnLw0k6KofSWWGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7R1dr/btsIiylZQmx/xyy9x6wYnLw0k6KofSWWGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7R1dr%2FbtsIiylZQmx%2Fxyy9x6wYnLw0k6KofSWWGk%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPhABx/btsIhV244rW/Vr0BbqTvJ9HF53uhsqAak1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPhABx/btsIhV244rW/Vr0BbqTvJ9HF53uhsqAak1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPhABx/btsIhV244rW/Vr0BbqTvJ9HF53uhsqAak1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPhABx%2FbtsIhV244rW%2FVr0BbqTvJ9HF53uhsqAak1%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드22.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4P8Zl/btsIiVH2BB3/QhseQspGYUrHX7kTZvL6nK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4P8Zl/btsIiVH2BB3/QhseQspGYUrHX7kTZvL6nK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4P8Zl/btsIiVH2BB3/QhseQspGYUrHX7kTZvL6nK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4P8Zl%2FbtsIiVH2BB3%2FQhseQspGYUrHX7kTZvL6nK%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드22.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드23.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfX6f3/btsIiOa8pt1/1tGjBByHBN1q3ME8nyjkMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfX6f3/btsIiOa8pt1/1tGjBByHBN1q3ME8nyjkMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfX6f3/btsIiOa8pt1/1tGjBByHBN1q3ME8nyjkMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfX6f3%2FbtsIiOa8pt1%2F1tGjBByHBN1q3ME8nyjkMK%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드23.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드24.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzgQwj/btsIif1g2PV/nAcNnPvkBzLRGgTmbZjty0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzgQwj/btsIif1g2PV/nAcNnPvkBzLRGgTmbZjty0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzgQwj/btsIif1g2PV/nAcNnPvkBzLRGgTmbZjty0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzgQwj%2FbtsIif1g2PV%2FnAcNnPvkBzLRGgTmbZjty0%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드24.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드25.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjLPky/btsIjh49FMI/2RVTXOC8302RuSfgfI5oyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjLPky/btsIjh49FMI/2RVTXOC8302RuSfgfI5oyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjLPky/btsIjh49FMI/2RVTXOC8302RuSfgfI5oyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjLPky%2FbtsIjh49FMI%2F2RVTXOC8302RuSfgfI5oyk%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드25.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드26.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xRh3t/btsIiicFSBy/zoQ9UBECgYysKSKBDWJ9lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xRh3t/btsIiicFSBy/zoQ9UBECgYysKSKBDWJ9lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xRh3t/btsIiicFSBy/zoQ9UBECgYysKSKBDWJ9lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxRh3t%2FbtsIiicFSBy%2FzoQ9UBECgYysKSKBDWJ9lk%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드26.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드27.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSDAZG/btsIhPu1WIo/BWNThYrwq0lX2RWYuuEbp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSDAZG/btsIhPu1WIo/BWNThYrwq0lX2RWYuuEbp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSDAZG/btsIhPu1WIo/BWNThYrwq0lX2RWYuuEbp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSDAZG%2FbtsIhPu1WIo%2FBWNThYrwq0lX2RWYuuEbp0%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드27.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드28.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O0fXN/btsIi97brzh/1XCpbCPJWGCFHKq17V7e31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O0fXN/btsIi97brzh/1XCpbCPJWGCFHKq17V7e31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O0fXN/btsIi97brzh/1XCpbCPJWGCFHKq17V7e31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO0fXN%2FbtsIi97brzh%2F1XCpbCPJWGCFHKq17V7e31%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;960&quot; height=&quot;720&quot; data-filename=&quot;슬라이드28.PNG&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>python, 파이썬</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/50</guid>
      <comments>https://univercity-coding-task.tistory.com/50#entry50comment</comments>
      <pubDate>Sun, 30 Jun 2024 18:07:31 +0900</pubDate>
    </item>
    <item>
      <title>Elasticsearch</title>
      <link>https://univercity-coding-task.tistory.com/49</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/42OyV/btsGuJ4ZWp9/E8mDcYBCG9srUvkwNVKUkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/42OyV/btsGuJ4ZWp9/E8mDcYBCG9srUvkwNVKUkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/42OyV/btsGuJ4ZWp9/E8mDcYBCG9srUvkwNVKUkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F42OyV%2FbtsGuJ4ZWp9%2FE8mDcYBCG9srUvkwNVKUkK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YQjNO/btsGwK2EdXO/ZvXJTBhEaJXsfqFt4EDcYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YQjNO/btsGwK2EdXO/ZvXJTBhEaJXsfqFt4EDcYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YQjNO/btsGwK2EdXO/ZvXJTBhEaJXsfqFt4EDcYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYQjNO%2FbtsGwK2EdXO%2FZvXJTBhEaJXsfqFt4EDcYk%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6fs8n/btsGwhs6BUT/nWRwuuSbqYeUAyv8Ak0H31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6fs8n/btsGwhs6BUT/nWRwuuSbqYeUAyv8Ak0H31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6fs8n/btsGwhs6BUT/nWRwuuSbqYeUAyv8Ak0H31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6fs8n%2FbtsGwhs6BUT%2FnWRwuuSbqYeUAyv8Ak0H31%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tF0tB/btsGt7egKAp/on6EryYYBV0iCVJW9GAcXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tF0tB/btsGt7egKAp/on6EryYYBV0iCVJW9GAcXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tF0tB/btsGt7egKAp/on6EryYYBV0iCVJW9GAcXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtF0tB%2FbtsGt7egKAp%2Fon6EryYYBV0iCVJW9GAcXK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dMtEv3/btsGwcyuxbj/iCMcDI63La453JabarPLcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dMtEv3/btsGwcyuxbj/iCMcDI63La453JabarPLcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dMtEv3/btsGwcyuxbj/iCMcDI63La453JabarPLcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdMtEv3%2FbtsGwcyuxbj%2FiCMcDI63La453JabarPLcK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c62LGP/btsGu5mi0TS/k8LhkXYS6P7NKgPGuHptYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c62LGP/btsGu5mi0TS/k8LhkXYS6P7NKgPGuHptYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c62LGP/btsGu5mi0TS/k8LhkXYS6P7NKgPGuHptYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc62LGP%2FbtsGu5mi0TS%2Fk8LhkXYS6P7NKgPGuHptYK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bytbwN/btsGvoTPeQ4/5fkDKHflmzuWSHTF1quiqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bytbwN/btsGvoTPeQ4/5fkDKHflmzuWSHTF1quiqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bytbwN/btsGvoTPeQ4/5fkDKHflmzuWSHTF1quiqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbytbwN%2FbtsGvoTPeQ4%2F5fkDKHflmzuWSHTF1quiqK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lKRii/btsGuJX6XkT/XI8hEN3rk0JolyhkqLymBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lKRii/btsGuJX6XkT/XI8hEN3rk0JolyhkqLymBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lKRii/btsGuJX6XkT/XI8hEN3rk0JolyhkqLymBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlKRii%2FbtsGuJX6XkT%2FXI8hEN3rk0JolyhkqLymBK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rLZhB/btsGusWGMlS/MzX6xsfVr4rn3VCOEfHKtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rLZhB/btsGusWGMlS/MzX6xsfVr4rn3VCOEfHKtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rLZhB/btsGusWGMlS/MzX6xsfVr4rn3VCOEfHKtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrLZhB%2FbtsGusWGMlS%2FMzX6xsfVr4rn3VCOEfHKtK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNbZCX/btsGwbl2jnZ/wSg6cG9fdsFIAINr8xixw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNbZCX/btsGwbl2jnZ/wSg6cG9fdsFIAINr8xixw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNbZCX/btsGwbl2jnZ/wSg6cG9fdsFIAINr8xixw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNbZCX%2FbtsGwbl2jnZ%2FwSg6cG9fdsFIAINr8xixw1%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n2iLf/btsGupliib1/yoYQSLN9UJmigB6wprwEB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n2iLf/btsGupliib1/yoYQSLN9UJmigB6wprwEB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n2iLf/btsGupliib1/yoYQSLN9UJmigB6wprwEB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn2iLf%2FbtsGupliib1%2FyoYQSLN9UJmigB6wprwEB0%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/niqcu/btsGup6EXji/GgzMwBV7jdfhjkBMMTNEh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/niqcu/btsGup6EXji/GgzMwBV7jdfhjkBMMTNEh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/niqcu/btsGup6EXji/GgzMwBV7jdfhjkBMMTNEh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fniqcu%2FbtsGup6EXji%2FGgzMwBV7jdfhjkBMMTNEh1%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ci2oWz/btsGwRtOb0X/bKpsrUuxvCgGRkKu6FmNqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ci2oWz/btsGwRtOb0X/bKpsrUuxvCgGRkKu6FmNqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ci2oWz/btsGwRtOb0X/bKpsrUuxvCgGRkKu6FmNqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fci2oWz%2FbtsGwRtOb0X%2FbKpsrUuxvCgGRkKu6FmNqk%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IagBk/btsGu0egEPy/9NPPhasDST66WrvhTCJg11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IagBk/btsGu0egEPy/9NPPhasDST66WrvhTCJg11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IagBk/btsGu0egEPy/9NPPhasDST66WrvhTCJg11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIagBk%2FbtsGu0egEPy%2F9NPPhasDST66WrvhTCJg11%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mJu0P/btsGvrCZoNQ/s0Qo53f3GiK5WIubPLA0LK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mJu0P/btsGvrCZoNQ/s0Qo53f3GiK5WIubPLA0LK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mJu0P/btsGvrCZoNQ/s0Qo53f3GiK5WIubPLA0LK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmJu0P%2FbtsGvrCZoNQ%2Fs0Qo53f3GiK5WIubPLA0LK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxqUK5/btsGu3vgLW1/YRVn5kwQnc96mqAMoyK56K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxqUK5/btsGu3vgLW1/YRVn5kwQnc96mqAMoyK56K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxqUK5/btsGu3vgLW1/YRVn5kwQnc96mqAMoyK56K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxqUK5%2FbtsGu3vgLW1%2FYRVn5kwQnc96mqAMoyK56K%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WTtuS/btsGwKIkNXc/r9K393EzWXEisAD4df23xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WTtuS/btsGwKIkNXc/r9K393EzWXEisAD4df23xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WTtuS/btsGwKIkNXc/r9K393EzWXEisAD4df23xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWTtuS%2FbtsGwKIkNXc%2Fr9K393EzWXEisAD4df23xK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lcW9N/btsGwz715LR/sbmiRVMhjVdnst2xWQLZKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lcW9N/btsGwz715LR/sbmiRVMhjVdnst2xWQLZKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lcW9N/btsGwz715LR/sbmiRVMhjVdnst2xWQLZKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlcW9N%2FbtsGwz715LR%2FsbmiRVMhjVdnst2xWQLZKK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCmCgL/btsGwz715LJ/KaWuEX2Tik0SCbj698YTN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCmCgL/btsGwz715LJ/KaWuEX2Tik0SCbj698YTN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCmCgL/btsGwz715LJ/KaWuEX2Tik0SCbj698YTN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCmCgL%2FbtsGwz715LJ%2FKaWuEX2Tik0SCbj698YTN0%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjxa6g/btsGwKuQckD/2O0zDgSjyBAWowXxTOnheK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjxa6g/btsGwKuQckD/2O0zDgSjyBAWowXxTOnheK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjxa6g/btsGwKuQckD/2O0zDgSjyBAWowXxTOnheK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjxa6g%2FbtsGwKuQckD%2F2O0zDgSjyBAWowXxTOnheK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yv1rL/btsGw4NjNgF/UXOljosVAOBrYWVXWqBcTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yv1rL/btsGw4NjNgF/UXOljosVAOBrYWVXWqBcTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yv1rL/btsGw4NjNgF/UXOljosVAOBrYWVXWqBcTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyv1rL%2FbtsGw4NjNgF%2FUXOljosVAOBrYWVXWqBcTK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드22.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AiNWj/btsGuHMJwmI/Njt3gFI0fArZWXPEImlWok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AiNWj/btsGuHMJwmI/Njt3gFI0fArZWXPEImlWok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AiNWj/btsGuHMJwmI/Njt3gFI0fArZWXPEImlWok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAiNWj%2FbtsGuHMJwmI%2FNjt3gFI0fArZWXPEImlWok%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드22.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드23.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KGizX/btsGu0rPpr9/GqlsHe4Sz6OWSzkPyi8Jak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KGizX/btsGu0rPpr9/GqlsHe4Sz6OWSzkPyi8Jak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KGizX/btsGu0rPpr9/GqlsHe4Sz6OWSzkPyi8Jak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKGizX%2FbtsGu0rPpr9%2FGqlsHe4Sz6OWSzkPyi8Jak%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드23.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드24.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/npY8I/btsGuoNswvu/XAIJChaO7TX0rvnAXF73u0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/npY8I/btsGuoNswvu/XAIJChaO7TX0rvnAXF73u0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/npY8I/btsGuoNswvu/XAIJChaO7TX0rvnAXF73u0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnpY8I%2FbtsGuoNswvu%2FXAIJChaO7TX0rvnAXF73u0%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드24.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드25.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8hMns/btsGutVAH2Z/e3yKypjEeQgDUHKQkKI0p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8hMns/btsGutVAH2Z/e3yKypjEeQgDUHKQkKI0p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8hMns/btsGutVAH2Z/e3yKypjEeQgDUHKQkKI0p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8hMns%2FbtsGutVAH2Z%2Fe3yKypjEeQgDUHKQkKI0p0%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드25.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드26.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3aZN8/btsGtkrcO74/bQlkLjU3FAzWM2kw4HJWZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3aZN8/btsGtkrcO74/bQlkLjU3FAzWM2kw4HJWZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3aZN8/btsGtkrcO74/bQlkLjU3FAzWM2kw4HJWZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3aZN8%2FbtsGtkrcO74%2FbQlkLjU3FAzWM2kw4HJWZK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드26.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드27.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HeGL1/btsGvttG8EG/5TEO2HaSmYDuVI1RDnbfhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HeGL1/btsGvttG8EG/5TEO2HaSmYDuVI1RDnbfhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HeGL1/btsGvttG8EG/5TEO2HaSmYDuVI1RDnbfhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHeGL1%2FbtsGvttG8EG%2F5TEO2HaSmYDuVI1RDnbfhk%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드27.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드28.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcOzbo/btsGuJw1ptE/Z8kmfRS9iC69RgDL5OcBk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcOzbo/btsGuJw1ptE/Z8kmfRS9iC69RgDL5OcBk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcOzbo/btsGuJw1ptE/Z8kmfRS9iC69RgDL5OcBk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcOzbo%2FbtsGuJw1ptE%2FZ8kmfRS9iC69RgDL5OcBk0%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드28.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드29.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AzF1K/btsGuqEtBjK/v11rroqwat8cExtd8LAVJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AzF1K/btsGuqEtBjK/v11rroqwat8cExtd8LAVJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AzF1K/btsGuqEtBjK/v11rroqwat8cExtd8LAVJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAzF1K%2FbtsGuqEtBjK%2Fv11rroqwat8cExtd8LAVJk%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드29.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드30.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HfT8E/btsGuY8yI6M/pncvwxLV8hRA9kKUpFnyEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HfT8E/btsGuY8yI6M/pncvwxLV8hRA9kKUpFnyEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HfT8E/btsGuY8yI6M/pncvwxLV8hRA9kKUpFnyEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHfT8E%2FbtsGuY8yI6M%2FpncvwxLV8hRA9kKUpFnyEK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드30.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드31.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsNRcp/btsGuri9uyz/H1BJAEqMvktj99NCRw2co0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsNRcp/btsGuri9uyz/H1BJAEqMvktj99NCRw2co0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsNRcp/btsGuri9uyz/H1BJAEqMvktj99NCRw2co0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsNRcp%2FbtsGuri9uyz%2FH1BJAEqMvktj99NCRw2co0%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드31.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드32.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7BnM8/btsGwKBxxUG/TBoAzOqugVWBCkrtMShT20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7BnM8/btsGwKBxxUG/TBoAzOqugVWBCkrtMShT20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7BnM8/btsGwKBxxUG/TBoAzOqugVWBCkrtMShT20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7BnM8%2FbtsGwKBxxUG%2FTBoAzOqugVWBCkrtMShT20%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드32.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드33.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ch16Ch/btsGt6NbmOb/A5gSS3CXw1PqMRPcjGsCjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ch16Ch/btsGt6NbmOb/A5gSS3CXw1PqMRPcjGsCjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ch16Ch/btsGt6NbmOb/A5gSS3CXw1PqMRPcjGsCjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fch16Ch%2FbtsGt6NbmOb%2FA5gSS3CXw1PqMRPcjGsCjk%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드33.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드34.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkF1F5/btsGwvdtAbB/8NNX4RsPR1kLC58PF2iwM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkF1F5/btsGwvdtAbB/8NNX4RsPR1kLC58PF2iwM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkF1F5/btsGwvdtAbB/8NNX4RsPR1kLC58PF2iwM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkF1F5%2FbtsGwvdtAbB%2F8NNX4RsPR1kLC58PF2iwM0%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드34.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드35.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cI0oEC/btsGuOrDcHK/uWEevGxkVbxT60Pc0xC7f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cI0oEC/btsGuOrDcHK/uWEevGxkVbxT60Pc0xC7f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cI0oEC/btsGuOrDcHK/uWEevGxkVbxT60Pc0xC7f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcI0oEC%2FbtsGuOrDcHK%2FuWEevGxkVbxT60Pc0xC7f1%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드35.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드36.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uxLvo/btsGwRN8tJr/oI6WAdTnKQvoG0Zk02AufK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uxLvo/btsGwRN8tJr/oI6WAdTnKQvoG0Zk02AufK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uxLvo/btsGwRN8tJr/oI6WAdTnKQvoG0Zk02AufK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuxLvo%2FbtsGwRN8tJr%2FoI6WAdTnKQvoG0Zk02AufK%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드36.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드37.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDR4hq/btsGwfhJ6xJ/h3eLqcEutlcCxKNDBWedd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDR4hq/btsGwfhJ6xJ/h3eLqcEutlcCxKNDBWedd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDR4hq/btsGwfhJ6xJ/h3eLqcEutlcCxKNDBWedd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDR4hq%2FbtsGwfhJ6xJ%2Fh3eLqcEutlcCxKNDBWedd1%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드37.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드38.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3D7NA/btsGw6xwBrt/9dPNBC2QGU7phxxESu3DEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3D7NA/btsGw6xwBrt/9dPNBC2QGU7phxxESu3DEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3D7NA/btsGw6xwBrt/9dPNBC2QGU7phxxESu3DEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3D7NA%2FbtsGw6xwBrt%2F9dPNBC2QGU7phxxESu3DEk%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드38.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드39.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zXOY6/btsGu0yxAgv/cyWzkL0DeK4INxhokya4s0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zXOY6/btsGu0yxAgv/cyWzkL0DeK4INxhokya4s0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zXOY6/btsGu0yxAgv/cyWzkL0DeK4INxhokya4s0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzXOY6%2FbtsGu0yxAgv%2FcyWzkL0DeK4INxhokya4s0%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;슬라이드39.PNG&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>세미나</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/49</guid>
      <comments>https://univercity-coding-task.tistory.com/49#entry49comment</comments>
      <pubDate>Tue, 9 Apr 2024 19:27:15 +0900</pubDate>
    </item>
    <item>
      <title>JWT</title>
      <link>https://univercity-coding-task.tistory.com/48</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdegrm/btsGwdEantF/4eqdlHK88M4Z6KnuhKDwQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdegrm/btsGwdEantF/4eqdlHK88M4Z6KnuhKDwQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdegrm/btsGwdEantF/4eqdlHK88M4Z6KnuhKDwQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdegrm%2FbtsGwdEantF%2F4eqdlHK88M4Z6KnuhKDwQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SxZFB/btsGw1C3QKW/bJtc7GbFJFpM6kvxMoK77K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SxZFB/btsGw1C3QKW/bJtc7GbFJFpM6kvxMoK77K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SxZFB/btsGw1C3QKW/bJtc7GbFJFpM6kvxMoK77K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSxZFB%2FbtsGw1C3QKW%2FbJtc7GbFJFpM6kvxMoK77K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eqL5d3/btsGvshAi5j/50OrKqhmzkiYG8ubxoCE0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eqL5d3/btsGvshAi5j/50OrKqhmzkiYG8ubxoCE0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eqL5d3/btsGvshAi5j/50OrKqhmzkiYG8ubxoCE0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeqL5d3%2FbtsGvshAi5j%2F50OrKqhmzkiYG8ubxoCE0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oYEQM/btsGuPc1CLg/2YyAGvTxa1laduwhA8Ecm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oYEQM/btsGuPc1CLg/2YyAGvTxa1laduwhA8Ecm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oYEQM/btsGuPc1CLg/2YyAGvTxa1laduwhA8Ecm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoYEQM%2FbtsGuPc1CLg%2F2YyAGvTxa1laduwhA8Ecm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkco6Z/btsGt6TUB4z/wlgObzVGJVTUpdl4AAiiBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkco6Z/btsGt6TUB4z/wlgObzVGJVTUpdl4AAiiBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkco6Z/btsGt6TUB4z/wlgObzVGJVTUpdl4AAiiBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkco6Z%2FbtsGt6TUB4z%2FwlgObzVGJVTUpdl4AAiiBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHreiE/btsGwgucE4a/KwKbbn1ezZHfhKxisODnv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHreiE/btsGwgucE4a/KwKbbn1ezZHfhKxisODnv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHreiE/btsGwgucE4a/KwKbbn1ezZHfhKxisODnv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHreiE%2FbtsGwgucE4a%2FKwKbbn1ezZHfhKxisODnv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbHGpW/btsGwfIOet8/w94YS0ZdLT3ajjKglyHpw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbHGpW/btsGwfIOet8/w94YS0ZdLT3ajjKglyHpw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbHGpW/btsGwfIOet8/w94YS0ZdLT3ajjKglyHpw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbHGpW%2FbtsGwfIOet8%2Fw94YS0ZdLT3ajjKglyHpw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baXerv/btsGvsoj7mH/UzeuKdEdoGX3NWOyJi5E7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baXerv/btsGvsoj7mH/UzeuKdEdoGX3NWOyJi5E7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baXerv/btsGvsoj7mH/UzeuKdEdoGX3NWOyJi5E7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaXerv%2FbtsGvsoj7mH%2FUzeuKdEdoGX3NWOyJi5E7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DxeFW/btsGu6S5BzS/WH8MTSJTiROlN4nhkWhIdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DxeFW/btsGu6S5BzS/WH8MTSJTiROlN4nhkWhIdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DxeFW/btsGu6S5BzS/WH8MTSJTiROlN4nhkWhIdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDxeFW%2FbtsGu6S5BzS%2FWH8MTSJTiROlN4nhkWhIdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAUyS7/btsGwfB3MoG/KvJ2yOECNjzOK3EimsBfg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAUyS7/btsGwfB3MoG/KvJ2yOECNjzOK3EimsBfg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAUyS7/btsGwfB3MoG/KvJ2yOECNjzOK3EimsBfg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAUyS7%2FbtsGwfB3MoG%2FKvJ2yOECNjzOK3EimsBfg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/snuxe/btsGu3ovUPW/U7F2lj2FrAf8XKb1sKOtkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/snuxe/btsGu3ovUPW/U7F2lj2FrAf8XKb1sKOtkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/snuxe/btsGu3ovUPW/U7F2lj2FrAf8XKb1sKOtkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsnuxe%2FbtsGu3ovUPW%2FU7F2lj2FrAf8XKb1sKOtkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oqosq/btsGu4AVzMN/JGUI16fKFhAK8ge0jzvPo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oqosq/btsGu4AVzMN/JGUI16fKFhAK8ge0jzvPo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oqosq/btsGu4AVzMN/JGUI16fKFhAK8ge0jzvPo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foqosq%2FbtsGu4AVzMN%2FJGUI16fKFhAK8ge0jzvPo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ued6v/btsGw0YsbDQ/EvYCnJD1cwrk4lupVR4Qw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ued6v/btsGw0YsbDQ/EvYCnJD1cwrk4lupVR4Qw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ued6v/btsGw0YsbDQ/EvYCnJD1cwrk4lupVR4Qw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fued6v%2FbtsGw0YsbDQ%2FEvYCnJD1cwrk4lupVR4Qw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ce79KE/btsGutuyt32/1kwUZtW9ZkHzj21D20Pajk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ce79KE/btsGutuyt32/1kwUZtW9ZkHzj21D20Pajk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ce79KE/btsGutuyt32/1kwUZtW9ZkHzj21D20Pajk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fce79KE%2FbtsGutuyt32%2F1kwUZtW9ZkHzj21D20Pajk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7udeQ/btsGusbkGB6/uvjJvyeB4NmK5ZmXfjgfS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7udeQ/btsGusbkGB6/uvjJvyeB4NmK5ZmXfjgfS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7udeQ/btsGusbkGB6/uvjJvyeB4NmK5ZmXfjgfS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7udeQ%2FbtsGusbkGB6%2FuvjJvyeB4NmK5ZmXfjgfS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NWwN1/btsGvTeXywx/n7PyWsIERKqLher0CBY4yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NWwN1/btsGvTeXywx/n7PyWsIERKqLher0CBY4yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NWwN1/btsGvTeXywx/n7PyWsIERKqLher0CBY4yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNWwN1%2FbtsGvTeXywx%2Fn7PyWsIERKqLher0CBY4yk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mJCpm/btsGwggFCiC/r115nSLj43smupTBLPH77k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mJCpm/btsGwggFCiC/r115nSLj43smupTBLPH77k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mJCpm/btsGwggFCiC/r115nSLj43smupTBLPH77k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmJCpm%2FbtsGwggFCiC%2Fr115nSLj43smupTBLPH77k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q646O/btsGvttG7bX/sZWWrhGQjlVIGedmG8GQY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q646O/btsGvttG7bX/sZWWrhGQjlVIGedmG8GQY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q646O/btsGvttG7bX/sZWWrhGQjlVIGedmG8GQY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq646O%2FbtsGvttG7bX%2FsZWWrhGQjlVIGedmG8GQY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccgXR4/btsGurXLHgL/KL380JHpvHfNTOwZIFwjP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccgXR4/btsGurXLHgL/KL380JHpvHfNTOwZIFwjP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccgXR4/btsGurXLHgL/KL380JHpvHfNTOwZIFwjP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccgXR4%2FbtsGurXLHgL%2FKL380JHpvHfNTOwZIFwjP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKlXPt/btsGw7DbDlR/oOnMLPt8xhu2CJDMybEuBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKlXPt/btsGw7DbDlR/oOnMLPt8xhu2CJDMybEuBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKlXPt/btsGw7DbDlR/oOnMLPt8xhu2CJDMybEuBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKlXPt%2FbtsGw7DbDlR%2FoOnMLPt8xhu2CJDMybEuBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/omOPi/btsGwjdoDQs/Cduf2HDR01Jxt9pFcPMMmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/omOPi/btsGwjdoDQs/Cduf2HDR01Jxt9pFcPMMmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/omOPi/btsGwjdoDQs/Cduf2HDR01Jxt9pFcPMMmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FomOPi%2FbtsGwjdoDQs%2FCduf2HDR01Jxt9pFcPMMmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드22.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vr34n/btsGwEn4WoH/xqBYUlTdqLGJGPuFXrxkbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vr34n/btsGwEn4WoH/xqBYUlTdqLGJGPuFXrxkbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vr34n/btsGwEn4WoH/xqBYUlTdqLGJGPuFXrxkbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvr34n%2FbtsGwEn4WoH%2FxqBYUlTdqLGJGPuFXrxkbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드22.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드23.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bz3tAj/btsGwewhCBY/K9XFfqd6BbHZ567N7mcBo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bz3tAj/btsGwewhCBY/K9XFfqd6BbHZ567N7mcBo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bz3tAj/btsGwewhCBY/K9XFfqd6BbHZ567N7mcBo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbz3tAj%2FbtsGwewhCBY%2FK9XFfqd6BbHZ567N7mcBo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드23.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드24.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mPcgz/btsGtUFRfzP/dOgKFg2swZ5PfyHmbhv7h1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mPcgz/btsGtUFRfzP/dOgKFg2swZ5PfyHmbhv7h1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mPcgz/btsGtUFRfzP/dOgKFg2swZ5PfyHmbhv7h1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmPcgz%2FbtsGtUFRfzP%2FdOgKFg2swZ5PfyHmbhv7h1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드24.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>python, 파이썬</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/48</guid>
      <comments>https://univercity-coding-task.tistory.com/48#entry48comment</comments>
      <pubDate>Tue, 9 Apr 2024 19:26:34 +0900</pubDate>
    </item>
    <item>
      <title>비동기 태스크 큐 celery</title>
      <link>https://univercity-coding-task.tistory.com/35</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eHXFrb/btsBGxnmoIY/QwCiB0skKqlvdZs92wEW2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eHXFrb/btsBGxnmoIY/QwCiB0skKqlvdZs92wEW2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eHXFrb/btsBGxnmoIY/QwCiB0skKqlvdZs92wEW2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeHXFrb%2FbtsBGxnmoIY%2FQwCiB0skKqlvdZs92wEW2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C0fnJ/btsBFGZrusV/7IAVy0TQpvJ3ayLTvx1Kz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C0fnJ/btsBFGZrusV/7IAVy0TQpvJ3ayLTvx1Kz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C0fnJ/btsBFGZrusV/7IAVy0TQpvJ3ayLTvx1Kz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC0fnJ%2FbtsBFGZrusV%2F7IAVy0TQpvJ3ayLTvx1Kz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kyeVo/btsBOivOERO/sTpKn4NReySD0WYIspkg91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kyeVo/btsBOivOERO/sTpKn4NReySD0WYIspkg91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kyeVo/btsBOivOERO/sTpKn4NReySD0WYIspkg91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkyeVo%2FbtsBOivOERO%2FsTpKn4NReySD0WYIspkg91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsQYYq/btsBFHYkael/syhzY69aKK3qyw3GxRbwCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsQYYq/btsBFHYkael/syhzY69aKK3qyw3GxRbwCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsQYYq/btsBFHYkael/syhzY69aKK3qyw3GxRbwCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsQYYq%2FbtsBFHYkael%2FsyhzY69aKK3qyw3GxRbwCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S7LvS/btsBFgNq8Vt/O8k4OpCA8BeIbIcSfiwc91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S7LvS/btsBFgNq8Vt/O8k4OpCA8BeIbIcSfiwc91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S7LvS/btsBFgNq8Vt/O8k4OpCA8BeIbIcSfiwc91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS7LvS%2FbtsBFgNq8Vt%2FO8k4OpCA8BeIbIcSfiwc91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3In5S/btsBHQ0V8Ky/rP9oEfZsP1xK6qJOlHtwL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3In5S/btsBHQ0V8Ky/rP9oEfZsP1xK6qJOlHtwL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3In5S/btsBHQ0V8Ky/rP9oEfZsP1xK6qJOlHtwL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3In5S%2FbtsBHQ0V8Ky%2FrP9oEfZsP1xK6qJOlHtwL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K2VXi/btsBGkBILLa/w8dY4cGX4U7QM9C6voC1DK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K2VXi/btsBGkBILLa/w8dY4cGX4U7QM9C6voC1DK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K2VXi/btsBGkBILLa/w8dY4cGX4U7QM9C6voC1DK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK2VXi%2FbtsBGkBILLa%2Fw8dY4cGX4U7QM9C6voC1DK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFYqle/btsBDQnSyBY/f9kBYusY3KvL8vtdp0EUkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFYqle/btsBDQnSyBY/f9kBYusY3KvL8vtdp0EUkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFYqle/btsBDQnSyBY/f9kBYusY3KvL8vtdp0EUkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFYqle%2FbtsBDQnSyBY%2Ff9kBYusY3KvL8vtdp0EUkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btMiPs/btsBKknaAAs/zGb944k68272Y3UFKahVn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btMiPs/btsBKknaAAs/zGb944k68272Y3UFKahVn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btMiPs/btsBKknaAAs/zGb944k68272Y3UFKahVn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtMiPs%2FbtsBKknaAAs%2FzGb944k68272Y3UFKahVn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O4TUc/btsBFMrH4tW/i32SkqfbEPgzB8k0NxNSs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O4TUc/btsBFMrH4tW/i32SkqfbEPgzB8k0NxNSs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O4TUc/btsBFMrH4tW/i32SkqfbEPgzB8k0NxNSs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO4TUc%2FbtsBFMrH4tW%2Fi32SkqfbEPgzB8k0NxNSs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ro7pQ/btsBFm051o1/3Hz0v1HgNo7lQvvHGqjga1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ro7pQ/btsBFm051o1/3Hz0v1HgNo7lQvvHGqjga1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ro7pQ/btsBFm051o1/3Hz0v1HgNo7lQvvHGqjga1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fro7pQ%2FbtsBFm051o1%2F3Hz0v1HgNo7lQvvHGqjga1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lHrqv/btsBGVBvAul/lQkT9nRdHrMaNBUk1fiDPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lHrqv/btsBGVBvAul/lQkT9nRdHrMaNBUk1fiDPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lHrqv/btsBGVBvAul/lQkT9nRdHrMaNBUk1fiDPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlHrqv%2FbtsBGVBvAul%2FlQkT9nRdHrMaNBUk1fiDPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/89u2u/btsBJiJK22Q/2j5ZJPYaezHrgJUDY2X1yK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/89u2u/btsBJiJK22Q/2j5ZJPYaezHrgJUDY2X1yK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/89u2u/btsBJiJK22Q/2j5ZJPYaezHrgJUDY2X1yK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F89u2u%2FbtsBJiJK22Q%2F2j5ZJPYaezHrgJUDY2X1yK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kIfJQ/btsBMRrzfry/KHAIsS3ZnOWF17qnHdUkZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kIfJQ/btsBMRrzfry/KHAIsS3ZnOWF17qnHdUkZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kIfJQ/btsBMRrzfry/KHAIsS3ZnOWF17qnHdUkZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkIfJQ%2FbtsBMRrzfry%2FKHAIsS3ZnOWF17qnHdUkZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLArGw/btsBDKOPJJw/bKzZVJQf8db5QmC100CigK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLArGw/btsBDKOPJJw/bKzZVJQf8db5QmC100CigK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLArGw/btsBDKOPJJw/bKzZVJQf8db5QmC100CigK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLArGw%2FbtsBDKOPJJw%2FbKzZVJQf8db5QmC100CigK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0ehb8/btsBFZLcerS/tP3pftJC0KRJiae2Cs6yW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0ehb8/btsBFZLcerS/tP3pftJC0KRJiae2Cs6yW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0ehb8/btsBFZLcerS/tP3pftJC0KRJiae2Cs6yW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0ehb8%2FbtsBFZLcerS%2FtP3pftJC0KRJiae2Cs6yW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cr0a1v/btsBMRLQBEI/O78J23ZxibJ2k66Ipq5ZaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cr0a1v/btsBMRLQBEI/O78J23ZxibJ2k66Ipq5ZaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cr0a1v/btsBMRLQBEI/O78J23ZxibJ2k66Ipq5ZaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcr0a1v%2FbtsBMRLQBEI%2FO78J23ZxibJ2k66Ipq5ZaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_슬라이드18.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdfcxb/btsBJfTNhGp/RY5aBg5h1auKe7jdcn22hK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdfcxb/btsBJfTNhGp/RY5aBg5h1auKe7jdcn22hK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdfcxb/btsBJfTNhGp/RY5aBg5h1auKe7jdcn22hK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdfcxb%2FbtsBJfTNhGp%2FRY5aBg5h1auKe7jdcn22hK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;edited_슬라이드18.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0YllF/btsBGwvd1NF/DlRTvK4G1S5eYrfp23IxR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0YllF/btsBGwvd1NF/DlRTvK4G1S5eYrfp23IxR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0YllF/btsBGwvd1NF/DlRTvK4G1S5eYrfp23IxR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0YllF%2FbtsBGwvd1NF%2FDlRTvK4G1S5eYrfp23IxR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>세미나</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/35</guid>
      <comments>https://univercity-coding-task.tistory.com/35#entry35comment</comments>
      <pubDate>Mon, 11 Dec 2023 01:50:39 +0900</pubDate>
    </item>
    <item>
      <title>데이터 통신과 컴퓨터 네트워크(3판) 연습문제 1장 서술형 제외</title>
      <link>https://univercity-coding-task.tistory.com/47</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. 네트워크의 기초 용어에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;① 네트워크는 하드웨어적인 전송 매체를 매개로 서로 연결되어 데이터를 교환하는 시스템의 모음이다. &lt;br /&gt;②&amp;nbsp;시스템과&amp;nbsp;전송&amp;nbsp;매체의&amp;nbsp;연결&amp;nbsp;지점에&amp;nbsp;대한&amp;nbsp;규격이&amp;nbsp;프로토콜이다. &lt;br /&gt;③ 시스템이 데이터를 교환할 때는 소프트웨어적으로 동작하는 통신 규칙인 인터페이스가 필요하다. &lt;br /&gt;④인터페이스와 프로토콜은 서로 다른 시스템을 상호 연동해 동작시키기 위함이니, 연동 형식의&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 data-ke-size=&quot;size16&quot;&gt;답 : 2, 3, 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;데이터를&amp;nbsp;교환할&amp;nbsp;때는&amp;nbsp;소프트웨어적으로&amp;nbsp;동작하는&amp;nbsp;통신&amp;nbsp;규칙인&amp;nbsp;프로토콜이&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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 프로토콜에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;① 논리적으로 상호 연동되는 시스템이 전송 매체를 통해 데이터를 교환할 때는 표준화된 대화 규칙을&amp;nbsp;따른다. &lt;br /&gt;②&amp;nbsp;일반적으로&amp;nbsp;인터페이스는&amp;nbsp;상하관계가&amp;nbsp;아닌&amp;nbsp;동등한&amp;nbsp;위치에&amp;nbsp;있는&amp;nbsp;시스템&amp;nbsp;사이의&amp;nbsp;규칙이다. &lt;br /&gt;③ 프로토콜은 두 시스템이 연동하기 위한 특정한 접촉 지점을 의미하는 경우가 많지만, 인터페이스와&amp;nbsp;비교하여&amp;nbsp;인용될&amp;nbsp;때는&amp;nbsp;상하&amp;nbsp;개념이&amp;nbsp;적용된다. &lt;br /&gt;④ 인터페이스는 주고받는 데이터의 형식과 그 과정에서 발생하는 일련의 절차적 순서에 무게를&amp;nbsp;둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답 : 2, 3, 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;관계과&amp;nbsp;아닌&amp;nbsp;동등한&amp;nbsp;위치에&amp;nbsp;있는&amp;nbsp;시스템&amp;nbsp;사이의&amp;nbsp;규칙은&amp;nbsp;프로토콜이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;적용된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;둔다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 시스템에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;①&amp;nbsp;노드는&amp;nbsp;컴퓨터&amp;nbsp;이론&amp;nbsp;분야에서&amp;nbsp;특정&amp;nbsp;시스템을&amp;nbsp;가리키는&amp;nbsp;가장&amp;nbsp;일반적인&amp;nbsp;용어로&amp;nbsp;사용된다. &lt;br /&gt;② 노드는 인터넷 내부를 구성하는 라우터와 인터넷 바깥쪽에 연결되어 데이터를 주고받는 호스트로&amp;nbsp;구분된다. &lt;br /&gt;③&amp;nbsp;라우터는&amp;nbsp;기본으로&amp;nbsp;데이터&amp;nbsp;전송&amp;nbsp;기능을&amp;nbsp;포함한다. &lt;br /&gt;④ 라우터의 주요 역할은 데이터 중개 기능이며, 인터넷 바깥쪽에 연결된 호스트들 사이의 데이터&amp;nbsp;전송이&amp;nbsp;인터넷&amp;nbsp;내부에서&amp;nbsp;최적의&amp;nbsp;경로를&amp;nbsp;통하여&amp;nbsp;이루어지도록&amp;nbsp;한다. &lt;br /&gt;⑤&amp;nbsp;호스트는&amp;nbsp;인터넷&amp;nbsp;바깥쪽에&amp;nbsp;연결되어&amp;nbsp;일반&amp;nbsp;사용자들의&amp;nbsp;네트워크&amp;nbsp;접속&amp;nbsp;창구&amp;nbsp;역할을&amp;nbsp;한다. &lt;br /&gt;⑥&amp;nbsp;호스트는&amp;nbsp;호스트&amp;nbsp;사이에&amp;nbsp;제공되는&amp;nbsp;서비스를&amp;nbsp;기준으로&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 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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. OSI 7계층 모델에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;① 다수의&amp;nbsp;시스템을&amp;nbsp;서로&amp;nbsp;연결해서&amp;nbsp;통신하려면&amp;nbsp;선행적으로&amp;nbsp;연결&amp;nbsp;방식을&amp;nbsp;표준화해야&amp;nbsp;한다. &lt;br /&gt;② 국제 표준화 단체인 OSI에서는 OSI 7계층 모델을 제안하여, 네트워크에 연결된 시스템이 갖추어야&amp;nbsp;할&amp;nbsp;기본&amp;nbsp;구조와&amp;nbsp;기능을&amp;nbsp;상세히&amp;nbsp;정의하고&amp;nbsp;있다. &lt;br /&gt;③ OSI 7계층 모델에 따르면, 네트워크에 연결된 호스트들은 7개 계층으로 모듈화된 전송 기능을&amp;nbsp;갖추어야&amp;nbsp;한다. &lt;br /&gt;④&amp;nbsp;일반&amp;nbsp;사용자는&amp;nbsp;OSI&amp;nbsp;7계층&amp;nbsp;맨&amp;nbsp;아래에&amp;nbsp;있는&amp;nbsp;물리&amp;nbsp;계층을&amp;nbsp;통해&amp;nbsp;데이터의&amp;nbsp;송수신을&amp;nbsp;요청한다. &lt;br /&gt;⑤ 데이터 전송 과정에서 송수신 호스트 사이의 라우터들이 중개 기능을 수행한다. 일반적으로 라우터는&amp;nbsp;하위&amp;nbsp;3개&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 data-ke-size=&quot;size16&quot;&gt;답 : 2, 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;표준화&amp;nbsp;단체인&amp;nbsp;ISO에서는&amp;nbsp;OSI&amp;nbsp;7계층&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;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;④ 일반&amp;nbsp;사용자는&amp;nbsp;OSI&amp;nbsp;7계층&amp;nbsp;맨&amp;nbsp;위에&amp;nbsp;있는&amp;nbsp;응용&amp;nbsp;계층을&amp;nbsp;통해&amp;nbsp;데이터의&amp;nbsp;송수신을&amp;nbsp;요청한다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. OSI 7계층 모델의 각 계층에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;① 물리 계층은 호스트를 전송 매체와 연결하기 위한 프로토콜 규칙과 전송 매체의 특성을 다룬다. &lt;br /&gt;② 데이터 링크 계층은 네트워크 계층의 오류에 관한 오류 제어 기능을 수행하며, 이를 위해서는&amp;nbsp;오류의&amp;nbsp;발생&amp;nbsp;사실을&amp;nbsp;인지하는&amp;nbsp;기능과&amp;nbsp;오류&amp;nbsp;복구&amp;nbsp;기능이&amp;nbsp;필요하다. &lt;br /&gt;③ 송신 호스트가 전송한 데이터가 수신 호스트까지 안전하게 도착하려면 여러 개의 중개 시스템인 라우터를 거쳐야 한다. 이 과정에서 데이터가 올바른 경로를 선택할 수 있도록 지원하는&amp;nbsp;계층이&amp;nbsp;네트워크&amp;nbsp;계층이다. &lt;br /&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;사 &lt;br /&gt;이의&amp;nbsp;안전한&amp;nbsp;데이터&amp;nbsp;전송을&amp;nbsp;지원한다. &lt;br /&gt;⑤ 세션 계층은 표현 계층에서 제공하는 연결의 개념과 유사한 세션 연결을 지원하지만, 이보다는&amp;nbsp;더&amp;nbsp;상위의&amp;nbsp;논리적&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;답 : 1, 2, 5&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;계층은&amp;nbsp;호스트를&amp;nbsp;전송&amp;nbsp;매체와&amp;nbsp;연결하기&amp;nbsp;위한&amp;nbsp;인터페이스&amp;nbsp;규칙과&amp;nbsp;전송&amp;nbsp;매체의&amp;nbsp;특성을&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;계층은&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;연결이다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6&amp;nbsp;인터넷&amp;nbsp;계층&amp;nbsp;모델에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;잘못된&amp;nbsp;것을&amp;nbsp;모두&amp;nbsp;고르시오. &lt;br /&gt;①&amp;nbsp;인터넷에서는&amp;nbsp;IP&amp;nbsp;프로토콜이&amp;nbsp;데이터&amp;nbsp;링크&amp;nbsp;계층의&amp;nbsp;기능을&amp;nbsp;수행한다. &lt;br /&gt;②&amp;nbsp;TCP와&amp;nbsp;UDP&amp;nbsp;프로토콜은&amp;nbsp;네트워크&amp;nbsp;계층의&amp;nbsp;기능을&amp;nbsp;수행한다. &lt;br /&gt;③&amp;nbsp;전송&amp;nbsp;계층&amp;nbsp;이하의&amp;nbsp;프로토콜들은&amp;nbsp;호스트의&amp;nbsp;운영체제&amp;nbsp;내부에서&amp;nbsp;구현된다. &lt;br /&gt;④&amp;nbsp;프로토콜&amp;nbsp;스택은&amp;nbsp;계층&amp;nbsp;구조로&amp;nbsp;이루어진&amp;nbsp;통신&amp;nbsp;프로토콜의&amp;nbsp;집합이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;⑤&amp;nbsp;통신하는&amp;nbsp;호스트&amp;nbsp;사이에는&amp;nbsp;중개&amp;nbsp;기능을&amp;nbsp;수행하는&amp;nbsp;라우터들이&amp;nbsp;존재할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;⑥&amp;nbsp;인터넷에서는&amp;nbsp;IP&amp;nbsp;프로토콜이&amp;nbsp;중개&amp;nbsp;기능을&amp;nbsp;수행하므로&amp;nbsp;라우터에는&amp;nbsp;계층&amp;nbsp;4까지의&amp;nbsp;프로토콜이 &lt;br /&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;답 : 1, 2, 6&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;IP가&amp;nbsp;네트워크&amp;nbsp;계층의&amp;nbsp;기능을&amp;nbsp;수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;② TCP와&amp;nbsp;UDP&amp;nbsp;프로토콜은&amp;nbsp;전송&amp;nbsp;계층의&amp;nbsp;기능을&amp;nbsp;수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;⑥ 인터넷에서는&amp;nbsp;IP프로토콜이&amp;nbsp;중개&amp;nbsp;기능을&amp;nbsp;수행하므로&amp;nbsp;라우터에는&amp;nbsp;계층&amp;nbsp;3까지의&amp;nbsp;프로토콜이&amp;nbsp;구현되어&amp;nbsp;있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 인터네트워킹 장비에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;① 리피터는 한쪽에서 입력된 신호를 물리적으로 단순히 증폭하여 다른 쪽으로 중개하는 역할을&amp;nbsp;한다. &lt;br /&gt;② 브리지는 단순히 신호를 증폭하는 역할을 하며, 전송 과정에서 발생하는 물리적인 오류 문제는&amp;nbsp;다루지&amp;nbsp;않는다. &lt;br /&gt;③ 브리지는 리피터 기능에 데이터 링크 계층의 기능이 추가된 것으로 물리 계층에서 발생한 오류를&amp;nbsp;해결해준다. &lt;br /&gt;④ &amp;nbsp;라우터는 물리 계층, 데이터 링크 계층의 기능을 지원한다. &lt;br /&gt;⑤ &amp;nbsp;라우터는 자신과 연결된 네트워크와 호스트들의 정보를 유지&amp;middot;관리함으로써 특정 경로가 이용 가능한지 여부와 다수의 경로 중에서 어느 경로가 빠른 데이터 전송을 지원하는지 판단할 수&amp;nbsp;있어야&amp;nbsp;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답 : 2, 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;리피터&amp;nbsp;기능에&amp;nbsp;데이터&amp;nbsp;링크&amp;nbsp;계층의&amp;nbsp;기능이&amp;nbsp;추가된&amp;nbsp;것으로&amp;nbsp;물리&amp;nbsp;계층에서&amp;nbsp;발생한&amp;nbsp;오류를&amp;nbsp;해결해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;④ 라우터는&amp;nbsp;물리&amp;nbsp;계층,&amp;nbsp;데이터&amp;nbsp;링크&amp;nbsp;계층,&amp;nbsp;네트워크&amp;nbsp;계층의&amp;nbsp;기능을&amp;nbsp;지원한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. 데이터 단위에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;① 네트워크 프로토콜을 사용해 데이터를 교환할 때는 먼저 데이터를 특정 형태로 규격화하는 작업이&amp;nbsp;필요하다. &lt;br /&gt;② 네트워크에서는 데이터를 프로토콜에서 정의된 데이터 규격에 맞춰 묶어주어야 한다. 이와 같은&amp;nbsp;한&amp;nbsp;단위의&amp;nbsp;규격으로&amp;nbsp;묶인&amp;nbsp;전송&amp;nbsp;데이터를&amp;nbsp;데이터&amp;nbsp;단위라&amp;nbsp;한다. &lt;br /&gt;③ OSI 7계층 모델의 각 계층에서 규격화된 데이터는 고유 명칭이 있는데, 계층에 상관없이 사용할&amp;nbsp;때는&amp;nbsp;통칭하여&amp;nbsp;PDU라&amp;nbsp;부른다. &lt;br /&gt;④&amp;nbsp;데이터&amp;nbsp;링크&amp;nbsp;계층에서는&amp;nbsp;세그먼트라&amp;nbsp;부른다. &lt;br /&gt;⑤&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 data-ke-size=&quot;size16&quot;&gt;답 : 4, 5&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;링크&amp;nbsp;계층에서는&amp;nbsp;프레임이라&amp;nbsp;부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;⑤ 네트워크&amp;nbsp;계층에서는&amp;nbsp;패킷이라&amp;nbsp;부른다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9. 주소에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;①&amp;nbsp;구분자의&amp;nbsp;가장&amp;nbsp;중요한&amp;nbsp;역할은&amp;nbsp;대상을&amp;nbsp;서로&amp;nbsp;구분하여&amp;nbsp;지칭하는&amp;nbsp;것이다. &lt;br /&gt;② 처음 인터넷을 설계했을 때는 지금과 같은 규모로 인터넷이 이용될 것을 예측하지 못하여 인터넷&amp;nbsp;구분자인&amp;nbsp;IP&amp;nbsp;주소의&amp;nbsp;고갈&amp;nbsp;문제에&amp;nbsp;직면해&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;③ 시스템 설계 과정에서 부여되는 구분자는 시스템의 내부 처리 구조를 효율적으로 운용할 수 있도록&amp;nbsp;해주어야&amp;nbsp;한다. &lt;br /&gt;④ 숫자로&amp;nbsp;된&amp;nbsp;이름과&amp;nbsp;문자로&amp;nbsp;된&amp;nbsp;주소를&amp;nbsp;모두&amp;nbsp;가지므로&amp;nbsp;이를&amp;nbsp;매핑하는&amp;nbsp;기능이&amp;nbsp;필요하다. &lt;br /&gt;⑤&amp;nbsp;구분자는&amp;nbsp;응용&amp;nbsp;환경에&amp;nbsp;필요한&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 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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10. IP 주소에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;① IP 주소는 전송 계층의 기능을 수행하는 IP 프로토콜이 호스트를 구분하기 위하여 사용하는 주소&amp;nbsp;체계이다. &lt;br /&gt;②&amp;nbsp;IP&amp;nbsp;주소는&amp;nbsp;32비트의&amp;nbsp;이진&amp;nbsp;숫자로&amp;nbsp;구성되는데,&amp;nbsp;보통&amp;nbsp;4비트씩&amp;nbsp;나누어&amp;nbsp;십진수로&amp;nbsp;표현한다. &lt;br /&gt;③ 숫자로 된 주소는 외우기 어려우므로 문자로 된 &lt;a href=&quot;http://www.korea.co.kr&quot;&gt;http://www.korea.co.kr&lt;/a&gt; 등의 도메인 이름을 사용한다. &lt;br /&gt;④ IP 주소는 유일성을 보장하기 위해서 국제 표준화 기구가 전체 주소를 관리하고 할당하기 때문에&amp;nbsp;중복&amp;nbsp;주소의&amp;nbsp;사용을&amp;nbsp;원천적으로&amp;nbsp;차단한다. &lt;br /&gt;⑤ IP 주소로 표현할 수 있는 최대 주소 공간의 크기를 32비트로 제한함으로써 확장성에 많은 문제점이 야기되고 있다. 이를 해결하기 위하여 새로운 프로토콜인 IPv6에서는 주소 표현 공간을&amp;nbsp;64비트로&amp;nbsp;확장했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답 : 2, 5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해설 :&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;② IP&amp;nbsp;주소는&amp;nbsp;32비트의&amp;nbsp;이진&amp;nbsp;숫자로&amp;nbsp;구성되는데,&amp;nbsp;보통&amp;nbsp;8비트씩&amp;nbsp;네부분으로&amp;nbsp;나누어&amp;nbsp;십진수로&amp;nbsp;표현한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;⑤ IP&amp;nbsp;주소로&amp;nbsp;표현할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;최대&amp;nbsp;주소&amp;nbsp;공간의&amp;nbsp;크기를&amp;nbsp;32비트로&amp;nbsp;제한함으로써&amp;nbsp;확장성에&amp;nbsp;많은&amp;nbsp;문제점이&amp;nbsp;야기되고&amp;nbsp;있다.&amp;nbsp;이를&amp;nbsp;해결하기&amp;nbsp;위하여&amp;nbsp;새로운&amp;nbsp;프로토콜인&amp;nbsp;IPv6에서는&amp;nbsp;주소&amp;nbsp;표현&amp;nbsp;공간을&amp;nbsp;128비트로&amp;nbsp;확장했다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11. 호스트&amp;nbsp;파일을&amp;nbsp;이용한&amp;nbsp;주소&amp;nbsp;정보의&amp;nbsp;관리에&amp;nbsp;대한&amp;nbsp;설명으로&amp;nbsp;잘못된&amp;nbsp;것을&amp;nbsp;모두&amp;nbsp;고르시오. &lt;br /&gt;①&amp;nbsp;호스트&amp;nbsp;이름과&amp;nbsp;IP&amp;nbsp;주소를&amp;nbsp;변환하는&amp;nbsp;간단한&amp;nbsp;방법은&amp;nbsp;특정&amp;nbsp;파일에&amp;nbsp;호스트&amp;nbsp;이름과&amp;nbsp;IP&amp;nbsp;주소의&amp;nbsp;조 &lt;br /&gt;합을&amp;nbsp;기록하여&amp;nbsp;관리하는&amp;nbsp;것이다. &lt;br /&gt;② 네트워크 응용 프로그램에서는 사용자가 입력한 호스트 이름을 이 파일에서 검색하여 일대일로&amp;nbsp;대응된&amp;nbsp;IP&amp;nbsp;주소&amp;nbsp;정보를&amp;nbsp;쉽게&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;③ 호스트 파일은 한 줄에 하나의 호스트 정보가 기록되며, 보안을 위하여 암호 문서 형식으로 보관된다. &lt;br /&gt;④ 네트워크 관리자는 관리 대상이 되는 모든 컴퓨터의 호스트 정보를 주기적으로 갱신해야 한다. &lt;br /&gt;⑤&amp;nbsp;호스트&amp;nbsp;파일을&amp;nbsp;갱신하고&amp;nbsp;복사하는&amp;nbsp;작업은&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 data-ke-size=&quot;size16&quot;&gt;답 : 3&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;파일은&amp;nbsp;한&amp;nbsp;줄에&amp;nbsp;하나의&amp;nbsp;호스트&amp;nbsp;정보가&amp;nbsp;기록되며,&amp;nbsp;텍스트&amp;nbsp;문서&amp;nbsp;형식으로&amp;nbsp;보관된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12. DNS에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;①&amp;nbsp;DNS는&amp;nbsp;주소와&amp;nbsp;이름&amp;nbsp;정보를&amp;nbsp;자동으로&amp;nbsp;유지하고&amp;nbsp;관리하는&amp;nbsp;분산&amp;nbsp;데이터베이스&amp;nbsp;시스템이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;② 호스트 주소와 이름 정보는 네임 클라이언트라는 특정한 관리 호스트가 유지하고, 주소 변환 작업이&amp;nbsp;필요한&amp;nbsp;서버는&amp;nbsp;네임&amp;nbsp;클라이언트에&amp;nbsp;요청해서&amp;nbsp;IP&amp;nbsp;주소를&amp;nbsp;얻는다. &lt;br /&gt;③ 네임 서버라는 명칭은 DNS 시스템의 이론에서 정의되는 용어로, 보통 DNS 서버라는 명칭이&amp;nbsp;사용된다. &lt;br /&gt;④ DNS는 하나의 집중화된 네임 클라이언트가 전체 호스트의 정보를 관리하지 않고, 여러 네임&amp;nbsp;클라이언트에&amp;nbsp;분산하여&amp;nbsp;관리하도록&amp;nbsp;설계되었다. &lt;br /&gt;⑤ 단일 구조의 네임 클라이언트는 자신이 관리하는 영역에 있는 호스트 정보만 관리하며, 정보를&amp;nbsp;상호&amp;nbsp;교환하는&amp;nbsp;협력&amp;nbsp;관계를&amp;nbsp;통해서&amp;nbsp;전체&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 data-ke-size=&quot;size16&quot;&gt;답: 2, 4, 5&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;span style=&quot;letter-spacing: 0px;&quot;&gt;② &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&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;IP&amp;nbsp;주소를&amp;nbsp;얻는다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;④ DNS는&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;설계되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;정보를&amp;nbsp;일관성&amp;nbsp;있게&amp;nbsp;유지한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;13. 네트워크 관련 주소에 대한 설명으로 잘못된 것을 모두 고르시오. &lt;br /&gt;①&amp;nbsp;MAC&amp;nbsp;주소는&amp;nbsp;계층&amp;nbsp;2의&amp;nbsp;LLC&amp;nbsp;계층에서&amp;nbsp;사용하며,&amp;nbsp;일반적으로&amp;nbsp;LAN&amp;nbsp;카드에&amp;nbsp;내장되어&amp;nbsp;있다. &lt;br /&gt;② 네트워크 계층이 전송 계층에 데이터 전송을 요청하면 먼저 IP 주소를 MAC 주소로 변환하는&amp;nbsp;작업이&amp;nbsp;이루어진다. &lt;br /&gt;③ IP 주소는 인터넷에서 네트워크 계층의 기능을 수행하는 IP 프로토콜에서 사용되며, 송신자 IP&amp;nbsp;주소와&amp;nbsp;수신자&amp;nbsp;IP&amp;nbsp;주소로&amp;nbsp;구분된다. &lt;br /&gt;④&amp;nbsp;송신자&amp;nbsp;IP&amp;nbsp;주소는&amp;nbsp;IP&amp;nbsp;패킷이&amp;nbsp;지나가는&amp;nbsp;경로를&amp;nbsp;결정하는&amp;nbsp;라우팅의&amp;nbsp;기준이&amp;nbsp;된다. &lt;br /&gt;⑤ 포트 주소는 전송 계층에서 사용하며, 호스트에서 실행되는 프로세스를 구분해준다.&lt;br /&gt;⑥ 인터넷의 전송 계층 프로토콜인 TCP와 UDP번호&amp;nbsp;또는&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 data-ke-size=&quot;size16&quot;&gt;답: 1, 2, 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;① MAC&amp;nbsp;주소는&amp;nbsp;계층&amp;nbsp;2의&amp;nbsp;MAC계층에서&amp;nbsp;사용하며,&amp;nbsp;일반적으로&amp;nbsp;LAN&amp;nbsp;카드에&amp;nbsp;내장되어&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;② 네트워크&amp;nbsp;계층이&amp;nbsp;데이터링크&amp;nbsp;계층에&amp;nbsp;데이터&amp;nbsp;전송을&amp;nbsp;요청하면&amp;nbsp;먼저&amp;nbsp;IP&amp;nbsp;주소를&amp;nbsp;MAC&amp;nbsp;주소로&amp;nbsp;변환하는&amp;nbsp;작업이&amp;nbsp;이루어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;④ 수신자&amp;nbsp;IP&amp;nbsp;주소는&amp;nbsp;IP&amp;nbsp;패킷이&amp;nbsp;지나가는&amp;nbsp;경로를&amp;nbsp;결정하는&amp;nbsp;라우팅의&amp;nbsp;기준이&amp;nbsp;된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;14. 네트워크는 하드웨어적인 ( ① )를 매개로 서로 연결되어 데이터를 교환하는 시스템의 모음이며,&amp;nbsp;시스템과&amp;nbsp;전송&amp;nbsp;매체의&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 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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15. &amp;nbsp;( ① )은 전 세계의 모든 네트워크가 유기적으로 연결되어 동작하는 통합 네트워크이다. ( ① )은 데이터 전달 기능으로 IP 프로토콜을 사용한다. 즉, ISO의 7계층 모델에서 계층 3인 ( ② )&amp;nbsp;계층의&amp;nbsp;기능을&amp;nbsp;IP&amp;nbsp;프로토콜이&amp;nbsp;수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답: ①인터넷 ②네트워크&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;16. ( ① )는 인터넷 내부를 구성하며, 기본으로 데이터 전송 기능을 포함한다. ( ① )의 주요 역할은 데이터 중개 기능이며, 인터넷 바깥쪽에 연결된 호스트들 사이의 데이터 전송이 인터넷 내부에서 최적의 ( ② )를&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 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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;17. ( ① )는 임의의 인터넷 서비스를 이용하는 응용 프로그램이고, ( ② )는 서비스를 제공하는 응용 프로그램이다. 둘의 개념은 서비스 단위로 이루어지므로 임의의 호스트가 ( ① )나 ( ② )로 고정되지는 않는다. 그러므로 특정 서비스를 기준으로 상대적인 관점에서 클라이언트와&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 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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;18. ( ① ) 계층은 물리 계층의 오류에 관한 오류 제어 기능을 수행하며, 이를 위해서는 오류의 발생 사실을 인지하는 기능과 오류 복구 기능이 필요하다. 대표적인 물리적 오류로는 데이터가 도착하지 못하는 데이터 분실과 내용이 깨져서 도착하는 데이터 변형이 있다. 일반적으로 컴퓨터 네트워크에서 오류 복구는 송신자가 원래의 데이터를 ( ② ) 하는&amp;nbsp;방식으로&amp;nbsp;처리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답: ①데이터 링크 ②재전송&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;19. 송신 호스트가 전송한 데이터가 수신 호스트까지 안전하게 도착하려면 여러 개의 중개 시스템인 ( ① )를 거쳐야 한다. 이 과정에서 데이터가 올바른 경로를 선택할 수 있도록 지원하는 계층이 ( ② ) 계층이다. 네트워크 부하가 증가하면 특정 지역에 ( ③ )이 발생할 수 있는데,&amp;nbsp; ( ③ )&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 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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20. 컴퓨터 네트워크에서 데이터를 교환하는 최종 주체는 호스트가 아니고, 호스트 내부에서 실행되는 응용 네트워크 프로세스이다. ( ① ) 계층은 송신 프로세스와 수신 프로세스 간의 연결기능을 제공하기 때문에 프로세스 사이의 안전한 데이터 전송을 지원한다. 일반적으로 계층 4까지의 기능은 운영체제에서 ( ② ) 형태로 상위 계층에 제공하며, 계층 5~7의 기능은 응용프로그램으로&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;span style=&quot;color: #333333; text-align: start;&quot;&gt;답:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;①전송 ②시스템&amp;nbsp;콜&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;21. ( ① ) 계층은 전송되는 데이터의 의미를 잃지 않도록 올바르게 ( ① )하는 방법을 다룬다. 즉 정보를 교환하는 호스트들이 표준화된 방법으로 데이터를 인식할 수 있게 해준다. 또한 ( ② )과 데이터를 ( ③ )라는 기능도 중요하게 다루고 있다. 동영상과 같은 대용량의 멀티미디어 데이터를 ( ② ) 하면 전송 데이터의 양을 줄일 수 있다. ( ③ )는 네트워크 보안 기능의 하나이며, 외부의 침입자로부터 데이터를 안전하게 보호하는 기술이다.&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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;22. 인터넷에서는 IP 프로토콜이 ( ① )계층의 기능을 수행하며, TCP와 UDP 프로토콜은 ( ② ) 계층의 기능을 수행한다. 이들 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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;23. 네트워크와 네트워크의 연결을 ( ① )이라 하며, 연결되는 네트워크 수가 증가할수록 복잡도가 커진다. 인터넷은 IP 프로토콜을 지원하는 전 세계의 모든 네트워크가 반복 구조로 연결된 시스템을 의미하며, 계층 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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;24. 리피터는 단순히 신호를 증폭하는 역할을 하며, 전송 과정에서 발생하는 물리적인 오류 문제는 다루지 않는다. 이를 보완한 (①)는 리피터 기능에 (②) 계층의 기능이 추가된 것으로 물리&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 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;①브리지 ②데이터&amp;nbsp;링크&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;25. 네트워크 프로토콜을 사용해 데이터를 교환할 때는 먼저 데이터를 특정 형태로 규격화하는 작업이 필요하다. 이들 데이터 링크 계층에서는 ( ① )이라 하고, 네트워크 계층에서는 ( ② )이라 한다. 전송 계층의 TCP 프로토콜은 ( ③ ), UDP 프로토콜은 ( ④ )이라 부른다.&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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;26. 디지털 환경에서 숫자로 된 ( ① ) 표현 방식은 일반 사용자에게 불편하므로 보통은 외우기 쉬운 문자 형식의 ( ② )을 추가로 사용한다. ( ① )와 ( ② )은 일대일 관계에 있으며, 이들을 연결하는 기능이 필요하다.&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;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;27. 네트워크에는 여러 종류의 주소와 이름이 존재한다. 이는 각 계층의 기능을 담당하는 프로토콜마다 주소를 독립적으로 관리하기 때문이다. 예를 들어, IP 프로토콜은 호스트를 구분하기 위하여 ( ① )를 사용하며, 데이터 링크 계층에서는 LAN 카드별로 ( ② )를 따로 부여한다. 전송계층을 수행하는 TCP에서는 호스트에서 수행되는 네트워크 프로세스마다 별도의 ( ③ ) 주소를 할당하고 관리한다.&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;답: ①IP주소 ②MAC주소 ③포트&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;28. IP 주소는 네트워크 계층의 기능을 수행하는 IP 프로토콜이 호스트를 구분하기 위하여 사용하는 주소 체계이다. 임의의 호스트를 인터넷에 연결하려면 반드시 IP 주소를 할당받아야 한다. IP 주소는 ( ① )비트의 이진 숫자로 구성되는데, 보통 ( ② )비트씩 나누어 ( ③ )로 표현한다.&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;답: ①32&amp;nbsp; ②8 ③10진수&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;29. 일반 사용자가 호스트를 지칭할 때 사용하는 호스트 이름을 ( ① )이라 하며, 인터넷에서는 &lt;a href=&quot;http://www.korea.co.kr과&quot;&gt;http://www.korea.co.kr과&lt;/a&gt; 같은 ( ① )을 IP 주소로 변환하는 작업이 필요하다. 초기 인터넷에서는 아주 간단한 방법으로 변환하였으나, 지금은 ( ② )라는 분산 데이터베이스 시스템을 사용해서 보다 체계적인 방법으로 관리하고 있다.&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;이름 ②DNS&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;30. ( ① )는 주소와 이름 정보를 자동으로 유지하고 관리하는 분산 데이터베이스 시스템이다. 호스트 주소와 이름 정보는 ( ② ) 라는 특정한 관리 호스트가 유지하고, 주소 변환 작업이 필요한 클라이언트는 ( ② )에&amp;nbsp;요청해서&amp;nbsp;IP&amp;nbsp;주소를&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;답: ①DNS ② 네임서버&lt;/p&gt;</description>
      <category>네트워크</category>
      <category>연습문제 1장</category>
      <category>컴퓨터 네트워크</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/47</guid>
      <comments>https://univercity-coding-task.tistory.com/47#entry47comment</comments>
      <pubDate>Mon, 20 Nov 2023 19:47:16 +0900</pubDate>
    </item>
    <item>
      <title>Django session 로그인 연장 기능(feat. ajax)</title>
      <link>https://univercity-coding-task.tistory.com/39</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;현재 Django로 ERP 중에 있는데 고객이 로그인연장을 요구하였다.&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;프로세스는 로그인을 하고 15분동안 세션이 유지가 되며 로그인연장 버튼을 누르지 않으면 자동으로 로그아웃되는 형식이다.(은행과 비슷하다)&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: #ee2323;&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;&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;edited_화면 캡처 2023-08-10 194111.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qWNbO/btsqT24O7Ao/JhSFxLRgiUEigOCeiIaAG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qWNbO/btsqT24O7Ao/JhSFxLRgiUEigOCeiIaAG0/img.png&quot; data-alt=&quot;웹페이지(모자이크 후)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qWNbO/btsqT24O7Ao/JhSFxLRgiUEigOCeiIaAG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqWNbO%2FbtsqT24O7Ao%2FJhSFxLRgiUEigOCeiIaAG0%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;630&quot; height=&quot;320&quot; data-filename=&quot;edited_화면 캡처 2023-08-10 194111.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1302&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;위 사진의 오른쪽 상단의 시간연장 버튼을 누르면 시간이 15:00으로 초기화가 되야한다.&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;pre id=&quot;code_1691664324268&quot; class=&quot;lasso&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#settings.py

MIDDLEWARE = [
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    ...
]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;django의 settings.py에는 위와 같이 session MIDDLEWARE가 등록되어 있기에 Import 하여 세션기능을 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1691665669134&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# settings.py

# Session 설정
SESSION_COOKIE_AGE = 900  # 15분&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하단에 session 만료기한을 설정해준다. 초단위로 계산되므로 900초면 15분이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1691665899346&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# views.py

from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
from django.contrib import auth
from django.contrib.sessions.models import Session
from django.http import JsonResponse

...
## 로그아웃
@login_required
def logout(request):
    auth.logout(request)
    return redirect('account:login')

## 남은 세션 시간
@login_required
def remaining_session_time(request):
    session_key = request.session.session_key
    expire_date = Session.objects.get(pk=session_key).expire_date
    remaining_time = expire_date - timezone.now()
    return JsonResponse({'remaining_session_time':remaining_time.seconds})

## 세션 연장
@login_required
def extend_session(request):
    if request.method == 'GET':
        request.session.set_expiry(900)
        return JsonResponse({'result':'success'})
...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;views.py에서 위와 같은 함수들을 구성했다.&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;logout 함수는 단순히 로그아웃 후 로그인 화면으로 돌아가는 함수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;remaining_session_time 함수는 남은 세션시간을 계산하여 JsonResponse로 return 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;extend_session 함수는 세션시간 종료시간을 현재시간을 기준으로 900초로 다시 계산한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9AD73/btsqMi83AWp/j8eecUTl9waP1GGiYG3cNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9AD73/btsqMi83AWp/j8eecUTl9waP1GGiYG3cNK/img.png&quot; data-alt=&quot;django_session 테이블&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9AD73/btsqMi83AWp/j8eecUTl9waP1GGiYG3cNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9AD73%2FbtsqMi83AWp%2Fj8eecUTl9waP1GGiYG3cNK%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;638&quot; height=&quot;233&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;django_session 테이블&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;extend_session 함수가 사용가능한 이유는&lt;span&gt; &lt;/span&gt;&lt;/span&gt;DB에 위와 같이 django_session 테이블이 만들어지는데 로그인할때마다 한 행이 만들어지고 expire_date라고 세션 종료시간이 기록된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;extend_session 함수를 통해 이 expire_date를 다시 갱신하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1691666592212&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// session.js

/* START ajax csrf token */
function getCookie(name) {
  var cookieValue = null;
  if (document.cookie &amp;amp;&amp;amp; document.cookie !== '') {
    var cookies = document.cookie.split(';');
    for (var i = 0; i &amp;lt; cookies.length; i++) {
      var cookie = cookies[i].trim();
      // Does this cookie string begin with the name we want?
      if (cookie.substring(0, name.length + 1) === (name + '=')) {
        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
        break;
      }
    }
  }
  return cookieValue;
}

var csrftoken = getCookie('csrftoken');

function csrfSafeMethod(method) {
  // these HTTP methods do not require CSRF protection
  return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
  beforeSend: function (xhr, settings) {
    if (!csrfSafeMethod(settings.type) &amp;amp;&amp;amp; !this.crossDomain) {
      xhr.setRequestHeader(&quot;X-CSRFToken&quot;, csrftoken);
    }
  }
});
/* END ajax csrf token */

var time;

// 남은 세션시간
function remaining_session_time() {
  $.ajax({
    type: 'GET',
    url: '/remaining_session_time/',
    dataType: 'json'
  }).done(function (data) {
    time = data['remaining_session_time'];
  });
}

// 세션 타이머
function session_timer() {
  if (time &amp;gt; 0) {
    time--;
    var minute = Math.floor(time / 60);
    var second = Math.floor(time % 60);
    if (second &amp;lt; 10)
      second = &quot;0&quot; + second;
    $('#sesson_time').text(`${minute}:${second}`);
  } else {
    alert(&quot;세션이 만료되었습니다. 다시 로그인해주세요.&quot;);
    clearInterval(timer);
    window.location.href = &quot;/logout/&quot;;
  }
}

remaining_session_time(); // 남은 세션 시간 할당
timer = setInterval(session_timer, 1000); // timer 시작

// 세션 연장
$('#extend_submit').bind('click', function () {
  $.ajax({
    type: &quot;GET&quot;,
    url: &quot;/extend_session/&quot;,
    dataType: &quot;json&quot;,
  }).done(function (data) {
    clearInterval(timer); // timer 삭제
    remaining_session_time(); // 남은 세션 시간 할당 
    timer = setInterval(session_timer, 1000); // timer 재시작
  }).fail(function (xhr, status, errorThrown) {
    console.log(&quot;error&quot;);
  });
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드를 보면 주석도 달았지만 윗부분은 Django와 ajax를 사용할 때 필요한 csrftoken 설정 코드들이다.&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;remaining_session_time 함수는 세션종료까지 남은 시간을 가져오는 함수이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ajax로 views.py의 remaining_session_time 함수를 호출하여 return 값을 time변수에 할당한다.&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;session_timer 함수는 time함수에 할당된 시간(초)을 분과 초로 나누어 아이디가 session_time인 요소에 표현시킨다.&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;맨 밑쪽 코드는 jquery로 작성했는데 아이디가 extend_submit이라는 버튼을 클릭하면 views.py의 extend_session함수를 호출하여 세션을 연장시킨다.&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;js에서만 남은 세션 시간이 0초가 된다면 로그아웃되게 했기에 누군가가 악의적으로 script를 끄고 접속하면 이 기능이 작동안할까봐 확인을 했는데 django에서도 expire_time을 갖고 있으므로 설정시간 이후에 동작을 한다면 로그아웃 후 로그인페이지로 redirect 된다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;수정(2023.09.17)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 기능은 로그인하면은 메인페이지로 이동이 되고, 서버에&lt;span style=&quot;color: #f3c000;&quot;&gt; session.js&lt;/span&gt;의 &lt;span style=&quot;color: #f3c000;&quot;&gt;remaining_session_time&lt;/span&gt;함수를 통해 ajax로 세션시간을 바로 요청한다. 그러면 django에서는&lt;span style=&quot;color: #409d00;&quot;&gt; views.py&lt;/span&gt;의 &lt;span style=&quot;color: #409d00;&quot;&gt;remaining_session_time&lt;/span&gt;함수를 통해 ORM으로 DB에서 값을 가져와 반환하는 것이다.&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;session에 관한 정보는 로그인하면 자동으로 DB에 쌓이는데 기능이 조금씩 쌓이고 서버가 무거워짐으로써 어쩔때는 &lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;session.js&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;remaining_session_time&lt;/span&gt;함수가 요청할때 DB에 session 정보가 쌓이지 않아 의도한대로 이루어지지 않았다.&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;그래서 time변수를 기준으로 session_timer함수의 분기문에서 재귀조건을 추가하였다&lt;/p&gt;
&lt;pre id=&quot;code_1694942083651&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// session.js

function getCookie(name) {
  var cookieValue = null;
  if (document.cookie &amp;amp;&amp;amp; document.cookie !== '') {
    var cookies = document.cookie.split(';');
    for (var i = 0; i &amp;lt; cookies.length; i++) {
      var cookie = cookies[i].trim();
      // Does this cookie string begin with the name we want?
      if (cookie.substring(0, name.length + 1) === (name + '=')) {
        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
        break;
      }
    }
  }
  return cookieValue;
}

var csrftoken = getCookie('csrftoken');

function csrfSafeMethod(method) {
  // these HTTP methods do not require CSRF protection
  return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
  beforeSend: function (xhr, settings) {
    if (!csrfSafeMethod(settings.type) &amp;amp;&amp;amp; !this.crossDomain) {
      xhr.setRequestHeader(&quot;X-CSRFToken&quot;, csrftoken);
    }
  }
});

var time = null;

function remaining_session_time() {
  $.ajax({
    type: 'GET',
    url: '/remaining_session_time/',
    dataType: 'json'
  }).done(function (data) {
    time = data['remaining_session_time'];
    console.log(time); // for testing
  });
}

function session_timer() {
  if (time &amp;gt; 0) {
    time--;
    var minute = Math.floor(time / 60);
    var second = Math.floor(time % 60);
    if (second &amp;lt; 10)
      second = &quot;0&quot; + second;
    $('#sesson_time').text(`${minute}:${second}`);
  } else if(time == null){
    remaining_session_time();
    session_timer();
  }else{
    alert('세션이 만료되었습니다. 다시 로그인해주세요.');
    clearInterval(timer);
    window.location.href = &quot;/logout/&quot;;
  }
}

remaining_session_time();
timer = setInterval(session_timer, 1000);

$('#extend_submit').bind('click', function () {
  $.ajax({
    type: &quot;GET&quot;,
    url: &quot;/extend_session/&quot;,
    dataType: &quot;json&quot;,
  }).done(function (data) {
    clearInterval(timer);
    remaining_session_time();
    timer = setInterval(session_timer, 1000);
  }).fail(function (xhr, status, errorThrown) {
    console.log(&quot;error&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;</description>
      <category>python, 파이썬</category>
      <category>django</category>
      <category>세션</category>
      <category>장고</category>
      <category>파이썬</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/39</guid>
      <comments>https://univercity-coding-task.tistory.com/39#entry39comment</comments>
      <pubDate>Thu, 10 Aug 2023 20:44:44 +0900</pubDate>
    </item>
    <item>
      <title>Django DB 자동 삭제 문제 발견</title>
      <link>https://univercity-coding-task.tistory.com/46</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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼마전부터 저희 연구실 홈페이지의 세미나 게시물이 삭제된다는 것을 알게되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 해결 해야겠다고 마음먹고 몇가지 추측과 확을 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;추측1. 스케줄링을 이용한 기한 후 자동삭제 기능&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;찾아본 결과 해당 기능은 없었습니다&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;추측2. DB에 해커가 침투했나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전에 MongoDB를 포트를 열어놓고 사용하다가 해커가 DB를 삭제한 적이 있어서 이번에도 의심해봤었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 저희는 Django 기본DB인 sqlite3를 사용하고 있기 때문에 ORM으로만 조작이 가능하므로 배제하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;추측3. 누군가 삭제했나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Django models.py에는 on_delete=on_cascade 속성이 있는데 특정 FK를 삭제하면 연관되어있는 것들도 삭제되기에 로그를 확인했습니다. Django admin 계정이 하나 뿐이라 admin 계정 로그를 확인하였지만 삭제한 기록은 없었습니다.&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;이렇게 3개의 추측을 갖고 확인을 해봤지만 소득이 없었습니다.&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;pre id=&quot;code_1689682603011&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def DeleteSeminar(request,pk):
    db = Seminar.objects.get(pk=pk)
    db.delete()
    return redirect('/Seminar/View/')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인해보니 위와 같이 HTTP프로토콜을 이용한 조건문도 없고, 로그인인증도 없어서 URL만 접속하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;누구나&amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;지울수 있게끔 되있더라구요..&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 누가 방문하는지 확인해보려고 이 함수를 실행하면 IP로그가 남게끔 수정했습니다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(추측4. 이때 뭔가 구글 봇이 크롤링을 위해 방문하여 지울것 같다고 생각했습니다)&lt;/span&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;pre id=&quot;code_1689682871542&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip  

def DeleteSeminar(request, pk):
    logger.info(f'{get_client_ip(request)}이 삭제함')
    db = Seminar.objects.get(pk=pk)
    db.delete()
    return redirect('/Seminar/View/')&lt;/code&gt;&lt;/pre&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmS9bi/btsn88Al9GU/sxaQaYSVQWIHjxdGQfyLjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmS9bi/btsn88Al9GU/sxaQaYSVQWIHjxdGQfyLjk/img.png&quot; data-alt=&quot;구글 봇의 소행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmS9bi/btsn88Al9GU/sxaQaYSVQWIHjxdGQfyLjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmS9bi%2Fbtsn88Al9GU%2FsxaQaYSVQWIHjxdGQfyLjk%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;560&quot; height=&quot;100&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;560&quot; data-origin-height=&quot;100&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;IP를 검색하니 구글이 맞았네요...후&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DB가 많이 날라갔지만 그래도 찾아냈습니다!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1689683248993&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def DeleteSeminar(request,pk):
    user_id = request.session.get('user_id')
    if not user_id :
        return redirect('/login')
    logger.info(f'{get_client_ip(request)}이 삭제함')
    db = Seminar.objects.get(pk=pk)
    db.delete()
    return redirect('/Seminar/View/')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 로그인이 되어있지 않다면 삭제 못하게끔 수정하고 log남기는것도 그대로 놔두었습니다.&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;그리고 DB Table들을 각각 PK순으로 정렬해서 보니까 많이 비어있는걸 확인했습니다.&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;</description>
      <category>python, 파이썬</category>
      <category>db</category>
      <category>django</category>
      <category>Python</category>
      <category>sqlite3</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/46</guid>
      <comments>https://univercity-coding-task.tistory.com/46#entry46comment</comments>
      <pubDate>Tue, 18 Jul 2023 22:00:59 +0900</pubDate>
    </item>
    <item>
      <title>Database 선택방법</title>
      <link>https://univercity-coding-task.tistory.com/45</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 세미나는 Database선택방법을 주제로 발표하였으며, RDBMS와 NoSQL를 비교하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UZ6Ab/btsmzjRMXrR/rmk9wxk2A0Qwnui83mgiY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UZ6Ab/btsmzjRMXrR/rmk9wxk2A0Qwnui83mgiY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UZ6Ab/btsmzjRMXrR/rmk9wxk2A0Qwnui83mgiY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUZ6Ab%2FbtsmzjRMXrR%2Frmk9wxk2A0Qwnui83mgiY0%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;854&quot; height=&quot;480&quot; data-filename=&quot;슬라이드1.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6NE0q/btsmBhywANg/fZvK0gHQIhlVUR7QCyK5F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6NE0q/btsmBhywANg/fZvK0gHQIhlVUR7QCyK5F0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6NE0q/btsmBhywANg/fZvK0gHQIhlVUR7QCyK5F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6NE0q%2FbtsmBhywANg%2FfZvK0gHQIhlVUR7QCyK5F0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vsiBq/btsmz1376Ib/Fzk6bszHqgnEn6UoDcDXi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vsiBq/btsmz1376Ib/Fzk6bszHqgnEn6UoDcDXi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vsiBq/btsmz1376Ib/Fzk6bszHqgnEn6UoDcDXi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvsiBq%2Fbtsmz1376Ib%2FFzk6bszHqgnEn6UoDcDXi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드3.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwPDwM/btsmA1WT1t0/IlAGrSkmIPEj0ed5P0QW80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwPDwM/btsmA1WT1t0/IlAGrSkmIPEj0ed5P0QW80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwPDwM/btsmA1WT1t0/IlAGrSkmIPEj0ed5P0QW80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwPDwM%2FbtsmA1WT1t0%2FIlAGrSkmIPEj0ed5P0QW80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6Jjfk/btsmyUkkOyQ/KvdEty2yy3B4uSPu01O9lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6Jjfk/btsmyUkkOyQ/KvdEty2yy3B4uSPu01O9lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6Jjfk/btsmyUkkOyQ/KvdEty2yy3B4uSPu01O9lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6Jjfk%2FbtsmyUkkOyQ%2FKvdEty2yy3B4uSPu01O9lk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnSyGD/btsmwfP9o0R/rjhd10v3uiv1vu5r5WMhsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnSyGD/btsmwfP9o0R/rjhd10v3uiv1vu5r5WMhsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnSyGD/btsmwfP9o0R/rjhd10v3uiv1vu5r5WMhsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnSyGD%2FbtsmwfP9o0R%2Frjhd10v3uiv1vu5r5WMhsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sDzzX/btsmwfbCUfb/QZGQ76cBplWKh7rtWcrdw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sDzzX/btsmwfbCUfb/QZGQ76cBplWKh7rtWcrdw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sDzzX/btsmwfbCUfb/QZGQ76cBplWKh7rtWcrdw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsDzzX%2FbtsmwfbCUfb%2FQZGQ76cBplWKh7rtWcrdw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bN6Jej/btsmzJ3BVwv/SqxvW4tVkfcokw1HAG1DF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bN6Jej/btsmzJ3BVwv/SqxvW4tVkfcokw1HAG1DF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bN6Jej/btsmzJ3BVwv/SqxvW4tVkfcokw1HAG1DF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbN6Jej%2FbtsmzJ3BVwv%2FSqxvW4tVkfcokw1HAG1DF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhFxct/btsmwXBCMX1/K1W70CjsawxgjDQO30EyTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhFxct/btsmwXBCMX1/K1W70CjsawxgjDQO30EyTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhFxct/btsmwXBCMX1/K1W70CjsawxgjDQO30EyTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhFxct%2FbtsmwXBCMX1%2FK1W70CjsawxgjDQO30EyTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbeQ4S/btsmwXVU8WM/boMP0Z5K13FYraGEFLM9zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbeQ4S/btsmwXVU8WM/boMP0Z5K13FYraGEFLM9zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbeQ4S/btsmwXVU8WM/boMP0Z5K13FYraGEFLM9zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbeQ4S%2FbtsmwXVU8WM%2FboMP0Z5K13FYraGEFLM9zk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7p7V7/btsmA2IfRwP/vdEkn3rHJzLpAhVxd17Ig0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7p7V7/btsmA2IfRwP/vdEkn3rHJzLpAhVxd17Ig0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7p7V7/btsmA2IfRwP/vdEkn3rHJzLpAhVxd17Ig0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7p7V7%2FbtsmA2IfRwP%2FvdEkn3rHJzLpAhVxd17Ig0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TIMWg/btsmzJvNaAG/yVfyxsUXUKh9ftiVAWWF0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TIMWg/btsmzJvNaAG/yVfyxsUXUKh9ftiVAWWF0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TIMWg/btsmzJvNaAG/yVfyxsUXUKh9ftiVAWWF0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTIMWg%2FbtsmzJvNaAG%2FyVfyxsUXUKh9ftiVAWWF0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FEtlM/btsmz31PXR6/QWXqSWFj6jK9B1RlOKwDBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FEtlM/btsmz31PXR6/QWXqSWFj6jK9B1RlOKwDBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FEtlM/btsmz31PXR6/QWXqSWFj6jK9B1RlOKwDBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFEtlM%2Fbtsmz31PXR6%2FQWXqSWFj6jK9B1RlOKwDBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EzxxY/btsmyVpXDb2/0hd4Bbo06uaLr3envrvKjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EzxxY/btsmyVpXDb2/0hd4Bbo06uaLr3envrvKjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EzxxY/btsmyVpXDb2/0hd4Bbo06uaLr3envrvKjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEzxxY%2FbtsmyVpXDb2%2F0hd4Bbo06uaLr3envrvKjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uHU5C/btsmyVQ214y/4yPYG7wTgSWe8YAML3W6i1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uHU5C/btsmyVQ214y/4yPYG7wTgSWe8YAML3W6i1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uHU5C/btsmyVQ214y/4yPYG7wTgSWe8YAML3W6i1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuHU5C%2FbtsmyVQ214y%2F4yPYG7wTgSWe8YAML3W6i1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드15.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b610JU/btsmtDwR2no/KlcauK2j0dTS7SKIICqky1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b610JU/btsmtDwR2no/KlcauK2j0dTS7SKIICqky1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b610JU/btsmtDwR2no/KlcauK2j0dTS7SKIICqky1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb610JU%2FbtsmtDwR2no%2FKlcauK2j0dTS7SKIICqky1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xNzDk/btsmyUSaui8/3EoTYeokzmXJjD9b9oin1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xNzDk/btsmyUSaui8/3EoTYeokzmXJjD9b9oin1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xNzDk/btsmyUSaui8/3EoTYeokzmXJjD9b9oin1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxNzDk%2FbtsmyUSaui8%2F3EoTYeokzmXJjD9b9oin1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zk9dW/btsmzHdMHCh/JPkJpNiepuH98JEC7kTYK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zk9dW/btsmzHdMHCh/JPkJpNiepuH98JEC7kTYK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zk9dW/btsmzHdMHCh/JPkJpNiepuH98JEC7kTYK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZk9dW%2FbtsmzHdMHCh%2FJPkJpNiepuH98JEC7kTYK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYTYAd/btsmBgzCmco/MUzUngXnm8nJ7z8lJVCVmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYTYAd/btsmBgzCmco/MUzUngXnm8nJ7z8lJVCVmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYTYAd/btsmBgzCmco/MUzUngXnm8nJ7z8lJVCVmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYTYAd%2FbtsmBgzCmco%2FMUzUngXnm8nJ7z8lJVCVmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7pJER/btsmtCSfgdd/bU13jkEEgYk5aNNJTKeul0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7pJER/btsmtCSfgdd/bU13jkEEgYk5aNNJTKeul0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7pJER/btsmtCSfgdd/bU13jkEEgYk5aNNJTKeul0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7pJER%2FbtsmtCSfgdd%2FbU13jkEEgYk5aNNJTKeul0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zaFNN/btsmBh6l1uz/a3mQUCHcs8nHpZfX8qSZ6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zaFNN/btsmBh6l1uz/a3mQUCHcs8nHpZfX8qSZ6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zaFNN/btsmBh6l1uz/a3mQUCHcs8nHpZfX8qSZ6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzaFNN%2FbtsmBh6l1uz%2Fa3mQUCHcs8nHpZfX8qSZ6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>세미나</category>
      <author>개발자 박태영</author>
      <guid isPermaLink="true">https://univercity-coding-task.tistory.com/45</guid>
      <comments>https://univercity-coding-task.tistory.com/45#entry45comment</comments>
      <pubDate>Wed, 5 Jul 2023 18:16:39 +0900</pubDate>
    </item>
  </channel>
</rss>