<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title> </title>
    <link>https://sa-growth-diary.tistory.com/</link>
    <description>유의미한 아웃풋을 위한 '영감, 레퍼런스' 기록  ️</description>
    <language>ko</language>
    <pubDate>Tue, 7 Apr 2026 01:05:20 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>2frost</managingEditor>
    <image>
      <title> </title>
      <url>https://tistory1.daumcdn.net/tistory/6447657/attach/1243c6e027454e68ab3de6a2b7b4d36b</url>
      <link>https://sa-growth-diary.tistory.com</link>
    </image>
    <item>
      <title>[ JavaScript 알고리즘 (프로그래머스)] 문자열안에 문자열</title>
      <link>https://sa-growth-diary.tistory.com/98</link>
      <description>&lt;div class=&quot;tt_article_useless_p_margin contents_style&quot;&gt;
&lt;div style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;문자열안에 문자열&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;1. 문제설명&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;문자열&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;str1&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;str2&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;가 매개변수로 주어집니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;str1&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;안에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;str2&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;제한사항&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1 &amp;le;&amp;nbsp;str1의 길이 &amp;le; 100&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le;&lt;span&gt;&amp;nbsp;&lt;/span&gt;str2의 길이 &amp;le; 100&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 입출력 예&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;324&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RGg3d/btsAL48siSn/VrEfATkkxKhGXeRbOZmH3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RGg3d/btsAL48siSn/VrEfATkkxKhGXeRbOZmH3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RGg3d/btsAL48siSn/VrEfATkkxKhGXeRbOZmH3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRGg3d%2FbtsAL48siSn%2FVrEfATkkxKhGXeRbOZmH3k%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;712&quot; height=&quot;284&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;324&quot;/&gt;&lt;/span&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;b&gt;입출력 예 설명&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div style=&quot;color: #263747;&quot;&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;입출력 예 #1&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&quot;ab6CDE443fgh22iJKlmn1o&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;str1에&lt;span&gt;&amp;nbsp;&lt;/span&gt;str2가 존재하므로 1을 return합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;입출력 예 #2&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&quot;ppprrrogrammers&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;str1에&lt;span&gt;&amp;nbsp;&lt;/span&gt;str2가 없으므로 2를 return합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;입출력 예 #3&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;&quot;AbcAbcA&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;str1에&lt;span&gt;&amp;nbsp;&lt;/span&gt;str2가 없으므로 2를 return합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;u&gt;[ 내가한 문제 풀이 ]&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1697243520179&quot; class=&quot;bash&quot; style=&quot;background-color: #f6f7f8; color: #555555;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;function solution(str1, str2) {
    var answer = 0;
    if(str1.includes(str2)) answer=1;
    else answer=2;
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-origin-width=&quot;1706&quot; data-origin-height=&quot;1548&quot;&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1706&quot; data-origin-height=&quot;1548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z1mzi/btsAM2a7AGt/biHP7jkcZxjaIgMeUr2uLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z1mzi/btsAM2a7AGt/biHP7jkcZxjaIgMeUr2uLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z1mzi/btsAM2a7AGt/biHP7jkcZxjaIgMeUr2uLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz1mzi%2FbtsAM2a7AGt%2FbiHP7jkcZxjaIgMeUr2uLk%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;340&quot; height=&quot;309&quot; data-origin-width=&quot;1706&quot; data-origin-height=&quot;1548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;container_postbtn #post_button_group&quot;&gt;
&lt;div class=&quot;postbtn_like&quot;&gt;
&lt;div id=&quot;reaction-94&quot; class=&quot;wrap_btn&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>5. Algorithm</category>
      <category>javascript</category>
      <category>js</category>
      <category>문자열안에문자열</category>
      <category>알고리즘</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/98</guid>
      <comments>https://sa-growth-diary.tistory.com/98#entry98comment</comments>
      <pubDate>Thu, 23 Nov 2023 22:32:26 +0900</pubDate>
    </item>
    <item>
      <title>[ TIL ] [ 실전프로젝트주차] '내일은 최저가' 프로젝트 회고</title>
      <link>https://sa-growth-diary.tistory.com/97</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;6주간의 최종프로젝트&lt;/b&gt;(2023.10.04~9.2023.11.15) &lt;b&gt;'내일은 최저가'에 대한&lt;/b&gt; 프로젝트가 끝났다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;블로그에는 프로젝트에 대한 '회고'를 정리할 예정이라 자세한 정보는 가장 하단 노션(*그 외 URL첨부) 주소로 따로 기재하곘다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;간단하게 우리가 기획하고 만든 '내일은 최저가'에 대해 소개하자면&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;'다이나믹 프라이싱'&lt;/b&gt;을 활용하여 &amp;nbsp;쿠팡에서 애플제품에 대해&amp;nbsp;매일 2회 가격 변동 차트를 업데이트 -&amp;gt;&amp;nbsp; 가격 하락, 품절업데이트 시 설정한 상품에 대해 이메일 알림 제공 (카카오비즈톡 승인중)이 가능하다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;이를 통해, 고객의 구매 전환율 제고 하고 탐색 비용을 줄여줄 수 있는 서비스를 만들었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&amp;nbsp;(* 다이나믹 프라이싱이 뭐야?)&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;다이나믹 프라이싱은 가격을 설정하는 전략으로, 시장 수요, 재고 상태, 고객 행동, 경쟁사 가격 등 다양한 요소에 기반하여 가격을 실시간으로 조정한다. 이 방식은 항공권, 호텔 예약, 전자 상거래 등 다양한 산업에서 사용되며, 최적의 가격을 통해 수익을 극대화하고 소비자의 구매 패턴에 더 잘 맞추기 위해 사용됨.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/veGGL/btsA8MedspM/WCkG70aSXHG5clsCkRLh9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/veGGL/btsA8MedspM/WCkG70aSXHG5clsCkRLh9K/img.png&quot; data-origin-width=&quot;1548&quot; data-origin-height=&quot;1762&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.9133%; margin-right: 10px;&quot; data-widthpercent=&quot;49.49&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/veGGL/btsA8MedspM/WCkG70aSXHG5clsCkRLh9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FveGGL%2FbtsA8MedspM%2FWCkG70aSXHG5clsCkRLh9K%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;1548&quot; height=&quot;1762&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byhxxJ/btsA5gmPb3d/KVJtAvYTmbmv65mnVpARAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byhxxJ/btsA5gmPb3d/KVJtAvYTmbmv65mnVpARAK/img.png&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;1394&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.51&quot; style=&quot;width: 49.9239%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byhxxJ/btsA5gmPb3d/KVJtAvYTmbmv65mnVpARAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyhxxJ%2FbtsA5gmPb3d%2FKVJtAvYTmbmv65mnVpARAK%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;1250&quot; height=&quot;1394&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;*(왼쪽부터1-2) 1. 가격변동차트 2. 상품알림설정&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;b&gt;'회고'&lt;/b&gt;가 주제이니 설명은 이쯤 해두고&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;프로젝트를 하면서 있었던 &lt;b&gt;트러블슈팅, 유저테스트에 대한&lt;/b&gt; 몇 가지 부분에 대해 적어보려 한다.&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;[ trouble SHOOTING ]&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&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;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;1. &lt;span style=&quot;text-align: start;&quot;&gt;Puppeteer의 실행문제&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;프로젝트에서 가장 중요한 '웹 스크래핑'을 하기 위해 Puppeteer를 사용했다. 그러나&amp;nbsp;&lt;span style=&quot;text-align: center;&quot;&gt;클라우드&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;VM &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;환경&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;우분투&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;에서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;Puppeteer &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;패키지를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;사용&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;시&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;에러&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;발생 되었다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1414&quot; data-origin-height=&quot;638&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l673Q/btsA30rjtWa/LfU4etkSlkcxMtkEPOhGZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l673Q/btsA30rjtWa/LfU4etkSlkcxMtkEPOhGZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l673Q/btsA30rjtWa/LfU4etkSlkcxMtkEPOhGZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl673Q%2FbtsA30rjtWa%2FLfU4etkSlkcxMtkEPOhGZ1%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;1414&quot; height=&quot;638&quot; data-origin-width=&quot;1414&quot; data-origin-height=&quot;638&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;발생원인 : &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;Puppeteer&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;는&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;Chromium&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;기반의&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;GUI&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;브라우저를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;구동하는데&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;필요한 라이브러리가&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;우분투에&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;설치되지&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;않아&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;libatk&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;1.0.so.0&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;파일을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;찾을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;수&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;없어 &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;브라우저&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;실행에&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;실패하였으며, &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;서버&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;용량&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;부족도 포함되어 있었다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7; text-align: start;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;해결방법:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;이 부분을 해결하기 위해, &lt;span style=&quot;text-align: center;&quot;&gt;AWS Lambda, &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;도커&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;serverless&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;framework를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;사용&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;해 &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;Chromium&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;ndash;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;Puppeteer &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;의존성과&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;배포환경&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;문제&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;해결하는 방법을 선택했다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;2. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;HTTPS 환경에서 JWT 토큰전송문제&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;FE&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;는&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;BE&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;가&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;처리를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;완료할&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;때까지&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;기다려야&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;하며 &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;BE&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;에서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;발급한&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;JWT &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;쿠키가&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;FE&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;의&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;로컬&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;스토리지에&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;저장되지&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;않음&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;HTTPS&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;배포한&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;경우&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;쿠키는&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;생성되지만&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;사용할&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;수&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;없음&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1701253954906&quot; class=&quot;javascript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;const redirect_url = `${process.env.CLIENT_URL}/kakaologin?
authorization =${accessToken}`;
console.log(redirect_url); // 백엔드에서 확인
res.redirect(redirect_url);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;발생원인 :&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;쿠키를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;통한&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;JWT &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;전송이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;FE&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;와&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;BE &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;간의&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;통신&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;방식에서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;문제를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;일으킬&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;수&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;있으며&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;특히&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;쿠키의&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;SameSite&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;정책&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;, Secure &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;플래그&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;설정&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;, CORS &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;정책&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;등으로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;인해 &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;FE&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;에서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;쿠키를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;제대로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;처리하지&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;못하는&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;경우가&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;있었다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7; text-align: start;&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;해결방법:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: center; font-family: 'Nanum Gothic';&quot;&gt;이 부분을 해결하기 위해 &lt;span style=&quot;text-align: center;&quot;&gt;JWT &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;토큰을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;쿠키&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;대신&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;URL&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;의&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;쿼리&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;스트링에&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;담아서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;FE&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;전송하고, &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;FE&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;는&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;쿼리&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;스트링을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; 파싱하여 &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;직접&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;로컬&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;스토리지에&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;저장하고&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;사용했다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: center; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;이 외에도 FE에서의 &lt;span style=&quot;text-align: center;&quot;&gt;React Query훅 호출 순서에 대한 문제, &lt;span style=&quot;text-align: center;&quot;&gt;Styled Components props 전달오류 등 트러블 슈팅이 있었다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;우리는 서비스를 만들고, 짧지만 구글폼을 통해 (&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;11/2 ~ 11/6 (5일간)) &lt;b&gt;'&lt;/b&gt;&lt;/span&gt;&lt;b&gt;유저피드백'&lt;/b&gt; 기간을 가졌다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;[ UT진행 내용 및 결과 ]&lt;/b&gt;&lt;/span&gt;&lt;/h4&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: #000000; font-family: 'Nanum Gothic';&quot;&gt;5일이라는&amp;nbsp; 짧은 기간에 49명의 유저가 피드백을 정성스럽게 남겨주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;구글폼의 질문은 소비자의 접속환경을 파악하고, 서비스에대한 니즈를 파악하는 항목으로 준비해두었고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;그 결과, 아래와 같은 답변을 받아 볼 수 있었다.&lt;/span&gt;&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/bk6wVo/btsA5fId7lI/DpyYOHieI3e7tLCMICvRb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk6wVo/btsA5fId7lI/DpyYOHieI3e7tLCMICvRb1/img.png&quot; data-origin-width=&quot;2020&quot; data-origin-height=&quot;1758&quot; data-is-animation=&quot;false&quot; style=&quot;width: 28.208%; margin-right: 10px;&quot; data-widthpercent=&quot;28.88&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk6wVo/btsA5fId7lI/DpyYOHieI3e7tLCMICvRb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk6wVo%2FbtsA5fId7lI%2FDpyYOHieI3e7tLCMICvRb1%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;2020&quot; height=&quot;1758&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q03Xj/btsA9R7lKRN/26In7fpTKZld18JEXlR6yK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q03Xj/btsA9R7lKRN/26In7fpTKZld18JEXlR6yK/img.png&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;1108&quot; data-is-animation=&quot;false&quot; style=&quot;width: 28.9363%; margin-right: 10px;&quot; data-widthpercent=&quot;29.63&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q03Xj/btsA9R7lKRN/26In7fpTKZld18JEXlR6yK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq03Xj%2FbtsA9R7lKRN%2F26In7fpTKZld18JEXlR6yK%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;1306&quot; height=&quot;1108&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WTKec/btsA3Zy9RDE/wOnkwKKSbx0vof5eJbQkL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WTKec/btsA3Zy9RDE/wOnkwKKSbx0vof5eJbQkL1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;934&quot; data-origin-width=&quot;1542&quot; style=&quot;width: 40.5301%;&quot; data-widthpercent=&quot;41.49&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WTKec/btsA3Zy9RDE/wOnkwKKSbx0vof5eJbQkL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWTKec%2FbtsA3Zy9RDE%2FwOnkwKKSbx0vof5eJbQkL1%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;1542&quot; height=&quot;934&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;*(왼쪽부터1-3) 1. UT 진행내용 2. UT 결과 중 접속환경 결과 3. 유저테스트 결과중 일부&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;- 사용자 중&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;다수(17명)가&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;모바일&lt;/b&gt;을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;통해&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;비&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;스를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;이용,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: center; font-family: 'Nanum Gothic';&quot;&gt;- &lt;span style=&quot;text-align: center;&quot;&gt;사용자의&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;접속환경&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;읜&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;구&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;글&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;크롬&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;압&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;도&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;적&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;으로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;많았&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;으며&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;safari&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;사용하는&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;유&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;저도&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;일부 존재.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;따라서 유&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;저의&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;접속환경&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;대부분이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; 모바일&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;모바일인 점과,&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;유&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;저&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;테&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;스트&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;오류&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;버그&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;에&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;대한&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;내&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;용이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;모바일의&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;스크롤과&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;관련&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;된 &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;부분으로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;모바일&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;편의성&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;' &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;개선&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;에&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;주안점&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; 두고 최종 발표 이전까지 서비스를 개선하도록 했다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&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/6Lk9A/btsBcQNrxUb/k1k3rRteuHM1cFwR1wtBZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6Lk9A/btsBcQNrxUb/k1k3rRteuHM1cFwR1wtBZ0/img.png&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;1506&quot; data-is-animation=&quot;false&quot; style=&quot;width: 41.7161%; margin-right: 10px;&quot; data-widthpercent=&quot;42.21&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6Lk9A/btsBcQNrxUb/k1k3rRteuHM1cFwR1wtBZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6Lk9A%2FbtsBcQNrxUb%2Fk1k3rRteuHM1cFwR1wtBZ0%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;1072&quot; height=&quot;1506&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnyFQN/btsA7OQ9xCW/XqSjk4TFHbrGgjkxP92kfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnyFQN/btsA7OQ9xCW/XqSjk4TFHbrGgjkxP92kfK/img.png&quot; data-origin-width=&quot;1694&quot; data-origin-height=&quot;1738&quot; data-is-animation=&quot;false&quot; style=&quot;width: 57.1212%;&quot; data-widthpercent=&quot;57.79&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnyFQN/btsA7OQ9xCW/XqSjk4TFHbrGgjkxP92kfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnyFQN%2FbtsA7OQ9xCW%2FXqSjk4TFHbrGgjkxP92kfK%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;1694&quot; height=&quot;1738&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;*(왼쪽부터1-2) 1. UT피드백1) 개선사항&amp;nbsp; 2. UT피드백2) 개선사항&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;유저피드백을 통해 다수의 의견이 있었던 피드백은 아래와 같이 개선했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;UT 피드백1)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;AS-IS &lt;/span&gt;: &lt;/b&gt;&quot;&lt;b&gt;모바일을&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;저격한&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;디자인&lt;/b&gt;으로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;보이는데&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;컴퓨터로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;보았을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;땐&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;다소&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;답답해 보입니다!&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; PC&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;버전과&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;모바일&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;버전이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; 나뉘어져 &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;있었으면&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;더&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;좋았을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;것&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;같습니다.&quot;와&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;반응형&lt;/b&gt;이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;제대로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; 안됩니다안됩니다.&quot;에 대해,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;TO-BE&lt;/span&gt; : &lt;/b&gt;기존&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;모바일&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;사이즈&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;(width: 375px)&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;에서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;태블릿&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;및&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;데스크탑용&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;사이즈&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;(375px&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;~ 744px)&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;까지&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;미디어&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;쿼리&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;및&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;rem&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;을&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;사용&lt;/b&gt;하여&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;반응형&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;웹페이지&lt;/b&gt;를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;제작하는 것으로 수정하였다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;UT 피드백2)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;AS-IS&lt;/span&gt;&lt;/b&gt;&amp;nbsp;:&amp;nbsp;&lt;/b&gt;메인페이지에&lt;/b&gt;서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;아이패드&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;에어팟을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;제외한&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;카테고리를&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;선택하는&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;필터링에서&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;충&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;전기들이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;맨&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;위로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; 나타납니&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;다!&quot;&lt;/b&gt;&amp;nbsp;피드백에 대해,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;TO-BE&lt;/span&gt;&lt;/b&gt;&amp;nbsp;: &amp;nbsp;&lt;/b&gt;카테고리에서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;금액대&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;만원&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;이상인&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;제품만&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;반환하도록&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;설정&lt;/b&gt;을&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;진행해서 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;부속품이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;아닌&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;제품들이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;먼저&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;b&gt;반환&lt;/b&gt;되도록&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;진행했다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;( &lt;span style=&quot;text-align: center;&quot;&gt;카테고리&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;필터에서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;페이지네이션으로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;설정하다보니, productId&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;기준으로&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;정렬&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;되면서&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;충전기와&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;같은&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;부속품이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;먼저&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;나오는&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;점이&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;문제로 수정함. )&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;&lt;b&gt;UT를 통해 느낀 점&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;우리에게 당연한 건? 당연하지 않다. 안당연한 게 당연하다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;언젠가, 토스의 UX디자이너가 하는 이야기를 들은 적 있다. &lt;b&gt;&quot;유저는 고정관념을 깨 주는 유일한 존재들이다.&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000; text-align: right;&quot;&gt;백엔드는 그저 서버 잘 구축하고 배포하고 잘 돌아가게 하면 되지.라는 안일한 생각을 가졌던 나에게&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: right;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;고정관념과 틀을 깨는 계기가 됨과 동시에 많은 공부가 되었던 시간&lt;/b&gt;&lt;span style=&quot;color: #000000; text-align: right;&quot;&gt;이었다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;기간 내에 소비자의 니즈를 파악해 봄으로써 어떤 요소를 만들어야 서비스에 더 머물 수 있을지,&amp;nbsp; 더 매력적인 서비스란 어떤 것인지에 대해 조금 더 고민해 볼 수 있었다.&amp;nbsp;&lt;b&gt;'우리 눈에는 보이지 않던 것들을 피드백을 통해 배움으로 성장해 나갈 수 있다는 것'&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;너무 좋았다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;&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;font-family: 'Nanum Gothic';&quot;&gt;6주간의 프로젝트를 통해, 좋았던 점을 간단히 나열해 보자면,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1. Nest.js를 공부해 볼 수 있어 좋았다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;- 2주 프로젝트에는 문법이 익숙하지 않아 ts와 express로 진행했다. 때문에 6주 프로젝트 시작에 공부를 하는데 시간을 많이 할애했는데, 그럼에도 무언가 배워가는 것이 있어 좋다고 생각한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. UT를 통해 피드백을 받아 볼 수 있었다.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;- 서비스를 구현하는 데 있어서 가장 필요로 하는 유저의 시선에서 피드백을 받아 볼 수 있어서 좋았다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3. 협업경험 ( 프론트앤드 / 디자이너 )&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;- 2주 프로젝트는 챌린지팀으로 진행하다 보니 FE와의 협업경험이 없었는데, 협업 경험을 가져볼 수 있는 경험이 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아쉬운 부분은 여전히 남아있고, 내가 부족한 부분이 많았기에 완벽히 채울수 없겠지만 차차 보완하고 싶다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아직 서버를 열어둔 상태라, 코드리팩토링을 할 예정이다. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;필요에 따라, 디벨롭을 할 수도 있을 것이고 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가장 중요하게는 테스트 코드를 놓친 부분이 있어서 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;팀원들과 진행해 보기로 했다. 회고는 여기서 끝.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;(2주 프로젝트 회고도 못썼는데, 시간 내서 써야겠다!)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;내일은 최저가 Notion&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;URL :&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://lowprice.notion.site/624de44444494e1e86a5d30d7ea1f1aa?pvs=4&quot;&gt;https://lowprice.notion.site/624de44444494e1e86a5d30d7ea1f1aa?pvs=4&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701252121070&quot; data-og-image=&quot;&quot; data-og-url=&quot;https://lowprice.notion.site/624de44444494e1e86a5d30d7ea1f1aa&quot; data-og-source-url=&quot;https://lowprice.notion.site/624de44444494e1e86a5d30d7ea1f1aa?pvs=4&quot; data-og-host=&quot;lowprice.notion.site&quot; data-og-description=&quot;항해16기 8조 최종 프로젝트 &amp;lsquo;내일은 최저가&amp;rsquo;&quot; data-og-title=&quot;[내일은 최저가] 더 알고 싶다면?&quot; data-og-type=&quot;article&quot; data-ke-align=&quot;alignRight&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://lowprice.notion.site/624de44444494e1e86a5d30d7ea1f1aa?pvs=4&quot; data-source-url=&quot;https://lowprice.notion.site/624de44444494e1e86a5d30d7ea1f1aa?pvs=4&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('&amp;quot;&amp;quot;');&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;[내일은 최저가] 더 알고 싶다면?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;항해16기 8조 최종 프로젝트 &amp;lsquo;내일은 최저가&amp;rsquo;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lowprice.notion.site&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;언제까지 서버를 열어 둘진 모르겠지만, 당분간은 열어둘 예정이기에 서비스 서버도 함께!&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;URL :&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://lowest-price.store/&quot;&gt;https://lowest-price.store/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701252121071&quot; data-og-image=&quot;&quot; data-og-url=&quot;https://lowest-price.store/&quot; data-og-source-url=&quot;https://lowest-price.store/&quot; data-og-host=&quot;lowest-price.store&quot; data-og-description=&quot;&quot; data-og-title=&quot;내일은 최저가&quot; data-og-type=&quot;website&quot; data-ke-align=&quot;alignRight&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://lowest-price.store/&quot; data-source-url=&quot;https://lowest-price.store/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('&amp;quot;&amp;quot;');&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;내일은 최저가&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lowest-price.store&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;그리고 우리 프로젝트의 시연영상도 함께 공유한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;( 광고영상 및 편집은 내가 진행했다. )&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;URL :&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://youtu.be/NfOPmhd0Wm0&quot;&gt;https://youtu.be/NfOPmhd0Wm0&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignRight&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=NfOPmhd0Wm0&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cVwFZp/hyUB7EjLEx/0e7xZOsOtiNliKyjUQiUUK/img.jpg?width=640&amp;amp;height=480&amp;amp;face=0_0_640_480&quot; data-video-width=&quot;640&quot; data-video-height=&quot;480&quot; data-video-origin-width=&quot;640&quot; data-video-origin-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/NfOPmhd0Wm0&quot; width=&quot;640&quot; height=&quot;480&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;내일은최저가_브로셔@2x.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnaYo9/btsA7qJwJoM/D14moZfVK5XJTz4zk8ST51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnaYo9/btsA7qJwJoM/D14moZfVK5XJTz4zk8ST51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnaYo9/btsA7qJwJoM/D14moZfVK5XJTz4zk8ST51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnaYo9%2FbtsA7qJwJoM%2FD14moZfVK5XJTz4zk8ST51%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;1200&quot; height=&quot;680&quot; data-filename=&quot;내일은최저가_브로셔@2x.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>0. TiL  ( Today I Learned )</category>
      <category>nest</category>
      <category>Nest.js</category>
      <category>node</category>
      <category>node.js</category>
      <category>내일은최저가</category>
      <category>최종프로젝트</category>
      <category>프로젝트</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/97</guid>
      <comments>https://sa-growth-diary.tistory.com/97#entry97comment</comments>
      <pubDate>Thu, 23 Nov 2023 22:21:56 +0900</pubDate>
    </item>
    <item>
      <title>[ JavaScript 알고리즘 (프로그래머스)] 편지</title>
      <link>https://sa-growth-diary.tistory.com/96</link>
      <description>&lt;div class=&quot;tt_article_useless_p_margin contents_style&quot;&gt;
&lt;div style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;편지&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;1. 문제설명&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;message&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot;&gt;제한사항&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;공백도 하나의 문자로 취급합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;1 &amp;le; message의 길이 &amp;le; 50&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;편지지의 여백은 생각하지 않습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;message는 영문 알파벳 대소문자, &amp;lsquo;!&amp;rsquo;, &amp;lsquo;~&amp;rsquo; 또는 공백으로만 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 입출력 예&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD5rOm/btsAMmARf3L/wLpyAgH9UZBJRTLCLE8OkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD5rOm/btsAMmARf3L/wLpyAgH9UZBJRTLCLE8OkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD5rOm/btsAMmARf3L/wLpyAgH9UZBJRTLCLE8OkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD5rOm%2FbtsAMmARf3L%2FwLpyAgH9UZBJRTLCLE8OkK%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;466&quot; height=&quot;226&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&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;b&gt;입출력 예 설명&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;입출력 예 #1&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;message의 글자 수가 15개로 최소 가로 30cm의 편지지가 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;입출력 예 #2&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: inherit; color: #000000;&quot;&gt;message의 글자 수가 11개로 최소 가로 22cm의 편지지가 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;u&gt;[ 내가한 문제 풀이 ]&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1697243520179&quot; class=&quot;bash&quot; style=&quot;background-color: #f6f7f8; color: #555555;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(message) {
    return message.length*2;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;length 프로퍼티 값 = 배열의 길이 ( * &lt;span style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot;&gt;message.length는 메세지 변수의 배열 길이)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;message.length * 2는 한 글자당 2cm를 차지하는 편지지의 가로 길이가 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-height=&quot;1548&quot; data-origin-width=&quot;1706&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SdIqu/btsANt0HP3o/eQZzpgwxRBg3jt48FyhhTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SdIqu/btsANt0HP3o/eQZzpgwxRBg3jt48FyhhTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SdIqu/btsANt0HP3o/eQZzpgwxRBg3jt48FyhhTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSdIqu%2FbtsANt0HP3o%2FeQZzpgwxRBg3jt48FyhhTk%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;340&quot; height=&quot;309&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;container_postbtn #post_button_group&quot;&gt;
&lt;div class=&quot;postbtn_like&quot;&gt;
&lt;div id=&quot;reaction-94&quot; class=&quot;wrap_btn&quot;&gt;
&lt;div class=&quot;uoc-icon&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>5. Algorithm</category>
      <category>javascript</category>
      <category>js</category>
      <category>알고리즘</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>편지</category>
      <category>프로그래머스</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/96</guid>
      <comments>https://sa-growth-diary.tistory.com/96#entry96comment</comments>
      <pubDate>Thu, 23 Nov 2023 21:40:34 +0900</pubDate>
    </item>
    <item>
      <title>[Summary:써머리] 바쁜 현대사회,유튜브 자동요약 필기앱이 있다?</title>
      <link>https://sa-growth-diary.tistory.com/95</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;어느 날 커리어리를 보다가,&lt;b&gt; '유튜브 자동 요약 필기앱'이라는&lt;/b&gt; 아주 좋은 서비스를 발견했다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;당연히 유료라고 생각했는데...? 이게 무료라뇨????????? 바로 사용해 봅니다.&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;( 관련 URL : &lt;a style=&quot;color: #666666;&quot; href=&quot;https://careerly.co.kr/comments/93556?from=trends&amp;amp;order=14&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://careerly.co.kr/comments/93556?from=trends&amp;amp;order=14&lt;/a&gt; )&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Summary라는 서비스였고, 홈페이지에 접속해서 바로 다운받아서 사용해 주었다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;( Summary 공식홈페이지 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://home.summaryapp.io/&quot;&gt;https://home.summaryapp.io/&lt;/a&gt; )&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1700187619555&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;써머리: 유튜브 자동 요약 필기 앱&quot; data-og-description=&quot;유튜브 영상을 AI가 자동으로 요약하고 필기&quot; data-og-host=&quot;home.summaryapp.io&quot; data-og-source-url=&quot;https://home.summaryapp.io/&quot; data-og-url=&quot;https://home.summaryapp.io/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/btO7fi/hyUyvjkHt5/Kvw5wKcIsBKHGwhfvIcEik/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/LSVct/hyUu57Ggbh/jqmiFVtrHR6Y6vGwIcrkA0/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628&quot;&gt;&lt;a href=&quot;https://home.summaryapp.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://home.summaryapp.io/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/btO7fi/hyUyvjkHt5/Kvw5wKcIsBKHGwhfvIcEik/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/LSVct/hyUu57Ggbh/jqmiFVtrHR6Y6vGwIcrkA0/img.png?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628');&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;써머리: 유튜브 자동 요약 필기 앱&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;유튜브 영상을 AI가 자동으로 요약하고 필기&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;home.summaryapp.io&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;바쁘다 바빠 현대사회, 내 몸은 왜 하나?&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;긴 글 읽기는 시간이 부족해.... 영상으로 쓱 - 볼 때는 이해는 되는데 머리에는 남지 않는다 할 때!&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;* 예를 들면, JWT에 대해서 이해가 필요한데 유튜브로 보고 나서 요약이 필요할 때. 이렇게 쓰면 얼마나 좋냐면요?&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 영상을 먼저 보고,&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;유튜브 '애플코딩' 관련URL&lt;/b&gt; :&amp;nbsp;&lt;a href=&quot;https://youtu.be/XXseiON9CV0?si=eUTQ3UKCwDmBDjng&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/XXseiON9CV0?si=eUTQ3UKCwDmBDjng&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=XXseiON9CV0&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/hT54G/hyUyuEJbMe/PxLvziXPkAvm0F7TqfMwlk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/XXseiON9CV0&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 주소나 채널 추가로 요약을 요청하면?   1-2분 이내에 요약 완성이 되고, 공유하기도 가능하다.( * 스크립트로 전체 내용 확인도 가능! )&amp;nbsp;&lt;/b&gt;&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/dWlIp4/btsAqLHTNJO/d0KuVUoi5ndbRY0fq7P3zK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWlIp4/btsAqLHTNJO/d0KuVUoi5ndbRY0fq7P3zK/img.png&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;1334&quot; data-origin-width=&quot;750&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWlIp4/btsAqLHTNJO/d0KuVUoi5ndbRY0fq7P3zK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWlIp4%2FbtsAqLHTNJO%2Fd0KuVUoi5ndbRY0fq7P3zK%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;750&quot; height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4Kqcu/btsArvEA7H2/S6dGPNsua7RFY447TNSnM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4Kqcu/btsArvEA7H2/S6dGPNsua7RFY447TNSnM1/img.png&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;1334&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4Kqcu/btsArvEA7H2/S6dGPNsua7RFY447TNSnM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4Kqcu%2FbtsArvEA7H2%2FS6dGPNsua7RFY447TNSnM1%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;750&quot; height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oFzYl/btsAuvcUV8b/Hl7r14df0mgqeO0fxevO8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oFzYl/btsAuvcUV8b/Hl7r14df0mgqeO0fxevO8k/img.png&quot; data-widthpercent=&quot;33.34&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;1334&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oFzYl/btsAuvcUV8b/Hl7r14df0mgqeO0fxevO8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoFzYl%2FbtsAuvcUV8b%2FHl7r14df0mgqeO0fxevO8k%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;750&quot; height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 2와 같이 공유를 하면, 아래와 같이 URL공유가 가능하다 (*카카오톡으로 공유도 가능)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;summary 요약본 :&amp;nbsp; &lt;/b&gt;&lt;span&gt;&lt;a href=&quot;https://share.summaryapp.io/ko/6556c8bb002c12243b4fb666&quot;&gt;https://share.summaryapp.io/ko/6556c8bb002c12243b4fb666&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1700187982213&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;JWT 대충 쓰면 님들 코딩인생 끝남&quot; data-og-description=&quot;1. JWT와 세션 방식의 차이점 &amp;bull; &amp;bull;JWT와 세션 방식은 유저가 로그인하면 서버가 입장권을 발급해주고, 이 입장권을 유지하여 유저를 인증하는 방식이다. &amp;bull; &amp;bull;세션 방식은 입장권에 적힌 정보가 &quot; data-og-host=&quot;share.summaryapp.io&quot; data-og-source-url=&quot;https://share.summaryapp.io/ko/6556c8bb002c12243b4fb666&quot; data-og-url=&quot;https://share.summaryapp.io/ko/6556c8bb002c12243b4fb666&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/SUbdR/hyUuSUL0GA/9Ra5usfc6pP5OvbzJxGdN0/img.jpg?width=960&amp;amp;height=480&amp;amp;face=0_0_960_480,https://scrap.kakaocdn.net/dn/bQaAxN/hyUyodp4Z7/KHn3aFU1YXKBMsUCXPvWt1/img.jpg?width=960&amp;amp;height=480&amp;amp;face=0_0_960_480,https://scrap.kakaocdn.net/dn/bBWEKV/hyUyzTz9Kv/EPAK3vgiZuQ29kE9duzi50/img.png?width=854&amp;amp;height=480&amp;amp;face=0_0_854_480&quot;&gt;&lt;a href=&quot;https://share.summaryapp.io/ko/6556c8bb002c12243b4fb666&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://share.summaryapp.io/ko/6556c8bb002c12243b4fb666&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/SUbdR/hyUuSUL0GA/9Ra5usfc6pP5OvbzJxGdN0/img.jpg?width=960&amp;amp;height=480&amp;amp;face=0_0_960_480,https://scrap.kakaocdn.net/dn/bQaAxN/hyUyodp4Z7/KHn3aFU1YXKBMsUCXPvWt1/img.jpg?width=960&amp;amp;height=480&amp;amp;face=0_0_960_480,https://scrap.kakaocdn.net/dn/bBWEKV/hyUyzTz9Kv/EPAK3vgiZuQ29kE9duzi50/img.png?width=854&amp;amp;height=480&amp;amp;face=0_0_854_480');&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;JWT 대충 쓰면 님들 코딩인생 끝남&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. JWT와 세션 방식의 차이점 &amp;bull; &amp;bull;JWT와 세션 방식은 유저가 로그인하면 서버가 입장권을 발급해주고, 이 입장권을 유지하여 유저를 인증하는 방식이다. &amp;bull; &amp;bull;세션 방식은 입장권에 적힌 정보가&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;share.summaryapp.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;영상으로 가볍게 한번 보고, 정리까지 해주는 서비스가 있다면, 안쓸 이유가 없다고요..&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한국어로만 가능하냐고. 댓츠노!&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;영어로 된 좋은 레퍼런스를 찾았는데, 이해가 1도 되지 않을 때&amp;nbsp; ( *이 부분!!!!&amp;nbsp; 너무 좋아,, )&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 영상을 먼저 찾아보고,&amp;nbsp;&lt;/b&gt;&lt;b&gt;유튜브 'abdul bari' 알고리즘 관련 URL&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;:&amp;nbsp;&lt;a href=&quot;https://youtu.be/0IAPZzGSbME?si=ZRzTVblI0a8kc-Y4&quot;&gt;https://youtu.be/0IAPZzGSbME?si=ZRzTVblI0a8kc-Y4&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=0IAPZzGSbME&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dD16yh/hyUyuY2l9P/UIHlNWlr5OFYGbCuyxLq7K/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=374_170_498_306&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/0IAPZzGSbME&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;2&lt;/b&gt;. 좋은 래퍼런스를 가진 영상이 한국어 번역이 없는 영어 자막이라면  ( 언제까지 모르는 단어 파파고 치고 있을 거야.. )&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;그때, &lt;b&gt;바로 URL을 바로 복사해 와서 한국어로 요약하면!&lt;/b&gt;&amp;nbsp; 완벽하다..&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;( 반대로, 한국어 내용을 영어로 요약해야 할 일이 있을 때 사용해도 될 것 같으나 필터링이 필요하긴 합니다. )&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&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/dWlIp4/btsAqLHTNJO/d0KuVUoi5ndbRY0fq7P3zK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWlIp4/btsAqLHTNJO/d0KuVUoi5ndbRY0fq7P3zK/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;1334&quot; data-origin-width=&quot;750&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWlIp4/btsAqLHTNJO/d0KuVUoi5ndbRY0fq7P3zK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWlIp4%2FbtsAqLHTNJO%2Fd0KuVUoi5ndbRY0fq7P3zK%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;750&quot; height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5PUKy/btsAqzU2vTn/duRwOdmFV8wDnBkSDs5Fh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5PUKy/btsAqzU2vTn/duRwOdmFV8wDnBkSDs5Fh1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;1334&quot; data-origin-width=&quot;750&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5PUKy/btsAqzU2vTn/duRwOdmFV8wDnBkSDs5Fh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5PUKy%2FbtsAqzU2vTn%2FduRwOdmFV8wDnBkSDs5Fh1%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;750&quot; height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 2에서 번역된 내용은 공유하기가 가능하며 '텍스트만 공유하기'도 가능하답니다! 카카오, URL공유 가능.&lt;/b&gt;&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/sFfxA/btsAvhZDQLm/ZQeZyKfMkNwhJda6keKLf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sFfxA/btsAvhZDQLm/ZQeZyKfMkNwhJda6keKLf0/img.png&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;1334&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sFfxA/btsAvhZDQLm/ZQeZyKfMkNwhJda6keKLf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsFfxA%2FbtsAvhZDQLm%2FZQeZyKfMkNwhJda6keKLf0%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;750&quot; height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kQVHg/btsAuyncwsA/oh84KXaLbn2Mnee5BGkbg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kQVHg/btsAuyncwsA/oh84KXaLbn2Mnee5BGkbg0/img.png&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;1334&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kQVHg/btsAuyncwsA/oh84KXaLbn2Mnee5BGkbg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkQVHg%2FbtsAuyncwsA%2Foh84KXaLbn2Mnee5BGkbg0%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;750&quot; height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공유한 내용은 아래와 같이 보인답니다!&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;https://share.summaryapp.io/ko/6556ca06002c12243b4fbf89&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://share.summaryapp.io/ko/6556ca06002c12243b4fbf89&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;1. Introduction to Algorithms&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;1. 알고리즘의 중요성과 학습 순서 &amp;bull; &amp;bull;알고리즘은 컴퓨터 공학 학생들에게 일반적으로 가르치는 과목으로, 대부분의 대학에서 이 과목을 교육과정의 일부로 제공한다. &amp;bull; &amp;bull;알고리즘은 이론&quot; data-og-host=&quot;share.summaryapp.io&quot; data-og-source-url=&quot;https://share.summaryapp.io/ko/6556ca06002c12243b4fbf89&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qWWv8/hyUyx2xm0S/4yPlbNCNesW5iAgZgpvW3k/img.jpg?width=960&amp;amp;height=480&amp;amp;face=0_0_960_480&quot; data-og-url=&quot;https://share.summaryapp.io/ko/6556ca06002c12243b4fbf89&quot;&gt;&lt;a href=&quot;https://share.summaryapp.io/ko/6556ca06002c12243b4fbf89&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://share.summaryapp.io/ko/6556ca06002c12243b4fbf89&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qWWv8/hyUyx2xm0S/4yPlbNCNesW5iAgZgpvW3k/img.jpg?width=960&amp;amp;height=480&amp;amp;face=0_0_960_480');&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;1. Introduction to Algorithms&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 알고리즘의 중요성과 학습 순서 &amp;bull; &amp;bull;알고리즘은 컴퓨터 공학 학생들에게 일반적으로 가르치는 과목으로, 대부분의 대학에서 이 과목을 교육과정의 일부로 제공한다. &amp;bull; &amp;bull;알고리즘은 이론&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;share.summaryapp.io&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;&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&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;1766&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjt2k1/btsArfWfQLN/QwwUODR0w8ie2WRyP1SwQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjt2k1/btsArfWfQLN/QwwUODR0w8ie2WRyP1SwQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjt2k1/btsArfWfQLN/QwwUODR0w8ie2WRyP1SwQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjt2k1%2FbtsArfWfQLN%2FQwwUODR0w8ie2WRyP1SwQk%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;268&quot; height=&quot;547&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;1766&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;AI너.. 너무 무섭다.. 근데.. 너무 편하다... 서비스 만들어주신 분 감사합니다 감사합니다..&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;생활이 편해 질 수록 점점 문해력이 떨어지는 것 같은 느낌도 들지만, &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;많은 범위가 침해되지 않는 영역에서 잘 활용하면 생활에 너무 유용할것 같아서 많이 사용할 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;나도 좋은 서비스 만들고 싶어 ~&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Growth Diary/Knowledge Warehouse</category>
      <category>Summary</category>
      <category>summaryapp</category>
      <category>글요약</category>
      <category>글요약앱</category>
      <category>써머리</category>
      <category>요약</category>
      <category>요약필기</category>
      <category>유튜브</category>
      <category>자동요약</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/95</guid>
      <comments>https://sa-growth-diary.tistory.com/95#entry95comment</comments>
      <pubDate>Fri, 17 Nov 2023 11:06:48 +0900</pubDate>
    </item>
    <item>
      <title>[ JavaScript 알고리즘 (프로그래머스)] 문자열 내림차순으로 배치하기</title>
      <link>https://sa-growth-diary.tistory.com/94</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #5c5c5c; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;문자열 내림차순으로 배치하기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;text-align: left;&quot;&gt;1. 문제설명&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;문자열&amp;nbsp;s에&amp;nbsp;나타나는&amp;nbsp;문자를&amp;nbsp;큰것부터&amp;nbsp;작은&amp;nbsp;순으로&amp;nbsp;정렬해&amp;nbsp;새로운&amp;nbsp;문자열을&amp;nbsp;리턴하는&amp;nbsp;함수,&amp;nbsp;solution을&amp;nbsp;완성해주세요.&lt;br /&gt;s는&amp;nbsp;영문&amp;nbsp;대소문자로만&amp;nbsp;구성되어&amp;nbsp;있으며,&amp;nbsp;대문자는&amp;nbsp;소문자보다&amp;nbsp;작은&amp;nbsp;것으로&amp;nbsp;간주합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #263747; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2. 입출력 예&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zD5c0/btsyuEPSgQC/Ak6OyK4Dk9UgkgLrGEGTm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zD5c0/btsyuEPSgQC/Ak6OyK4Dk9UgkgLrGEGTm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zD5c0/btsyuEPSgQC/Ak6OyK4Dk9UgkgLrGEGTm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzD5c0%2FbtsyuEPSgQC%2FAk6OyK4Dk9UgkgLrGEGTm0%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;431&quot; height=&quot;176&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p style=&quot;color: #555555;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;u&gt;[ 내가한 문제 풀이 ]&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1697243520179&quot; class=&quot;bash&quot; style=&quot;background-color: #f6f7f8; color: #555555;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;function solution(s) {
    return s.split(&quot;&quot;).sort().reverse().join(&quot;&quot;)   
}

1. 문자열 배열로 만들기 : split(&quot;&quot;)
2. 배열을 오름차순으로 정렬 : sort()
3. 배열을 내림차순으로 정렬 : reverse()
4. 배열을 문자열로 변환 :  join(&quot;&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555555; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;* 코드카타를 너무 간만에 했다..문제 풀다가, &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일정시간 이상이 지나 다른 사람들의 풀이를 참고해서 풀었다. 다시한번 풀어보는 시간을 가져야겠다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1706&quot; data-origin-height=&quot;1548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo4Pks/btsyuJcypOc/JnFpGDTDBGJMkkoUVH9asK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo4Pks/btsyuJcypOc/JnFpGDTDBGJMkkoUVH9asK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo4Pks/btsyuJcypOc/JnFpGDTDBGJMkkoUVH9asK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo4Pks%2FbtsyuJcypOc%2FJnFpGDTDBGJMkkoUVH9asK%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;340&quot; height=&quot;309&quot; data-origin-width=&quot;1706&quot; data-origin-height=&quot;1548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #5c5c5c; text-align: start;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>5. Algorithm</category>
      <category>js</category>
      <category>문자열 내림차순</category>
      <category>알고리즘</category>
      <category>코드카타</category>
      <category>프로그래머스</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/94</guid>
      <comments>https://sa-growth-diary.tistory.com/94#entry94comment</comments>
      <pubDate>Sat, 14 Oct 2023 09:38:02 +0900</pubDate>
    </item>
    <item>
      <title>[ TIL ] [ 정규과정 : 실전프로젝트주차 ] 기술면접 대비 1. Hoisting, async/await, Arrow Function</title>
      <link>https://sa-growth-diary.tistory.com/93</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;Q1. Hoisting이란 무엇인지 설명해주실 수 있을까요?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;변수와 함수 선언이 그들의 스코프 상단으로 끌어올려지는 동작을 의미합니다. 이러한 동작은 실행 컨텍스트의 생성 단계에서 발생한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d; font-family: 'Noto Sans Light';&quot;&gt;(나는 처음, 호스팅으로 공부해버렸다... 호이스팅이라는걸 다시 확인했고, 아래의 블로그를 참조해서 공부했다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://tecoble.techcourse.co.kr/post/2021-04-25-hoisting/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://tecoble.techcourse.co.kr/post/2021-04-25-hoisting/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697106891226&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;호이스팅에 대한 오해와 진실&quot; data-og-description=&quot;&amp;hellip;&quot; data-og-host=&quot;tecoble.techcourse.co.kr&quot; data-og-source-url=&quot;https://tecoble.techcourse.co.kr/post/2021-04-25-hoisting/&quot; data-og-url=&quot;https://post/2021-04-25-hoisting/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/diMDNy/hyUdMFjK5p/fIxzVCgdax9GdYhQ9KtZs1/img.jpg?width=1128&amp;amp;height=560&amp;amp;face=0_0_1128_560&quot;&gt;&lt;a href=&quot;https://tecoble.techcourse.co.kr/post/2021-04-25-hoisting/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://tecoble.techcourse.co.kr/post/2021-04-25-hoisting/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/diMDNy/hyUdMFjK5p/fIxzVCgdax9GdYhQ9KtZs1/img.jpg?width=1128&amp;amp;height=560&amp;amp;face=0_0_1128_560');&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;호이스팅에 대한 오해와 진실&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;tecoble.techcourse.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;size14&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;Q2. async/await 이란 무엇인지 설명해주실 수 있을까요?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;async와 await는 자바스크립트의 비동기 처리 패턴 중 가장 최근에 나온 문법입니다. 기존의 비동기 처리 방식인 콜백 함수와 프로미스의 단점을 보완하고 개발자가 읽기 좋은 코드를 작성할 수 있게 되었다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1) async 키워드는 function 앞에 사용한다. function 앞에 async를 붙이면 해당 함수는 항상 프라미스를 반환한다. 프라미스가 아닌 값을 반환하더라도 이행 상태의 프라미스(resolved promise)로 값을 감싸 이행된 프라미스가 반환되도록 한다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2) await: await 키워드는 async 함수 내에서만 사용될 수 있다. await는 Promise가 완료될 때까지 함수의 실행을 일시 중단시킵니다. Promise가 성공적으로 완료되면 그 결과값을 반환하고, 실패하면 에러를 발생시킨다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;참고 URL : &lt;a href=&quot;https://joshua1988.github.io/web-development/javascript/js-async-await/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://joshua1988.github.io/web-development/javascript/js-async-await/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697035334744&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;자바스크립트 async와 await&quot; data-og-description=&quot;(중급) 자바스크립트 개발자를 위한 async, await 사용법 설명. 쉽게 알아보는 자바스크립트 async await 개념, 사용법, 예제 코드, 예외 처리 방법&quot; data-og-host=&quot;joshua1988.github.io&quot; data-og-source-url=&quot;https://joshua1988.github.io/web-development/javascript/js-async-await/&quot; data-og-url=&quot;https://joshua1988.github.io/web-development/javascript/js-async-await/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cYgNfw/hyUdOCZssk/Xwr3vBWzyFd523sKsPhCwk/img.png?width=646&amp;amp;height=450&amp;amp;face=0_0_646_450,https://scrap.kakaocdn.net/dn/bPhcfV/hyUdWHMH4d/mtTUukwTHAesP1EwK6L3xk/img.png?width=646&amp;amp;height=450&amp;amp;face=0_0_646_450,https://scrap.kakaocdn.net/dn/li4EE/hyUdXfC1Oy/YDxU97Ip4garjAuWjstWck/img.png?width=1920&amp;amp;height=1250&amp;amp;face=0_0_1920_1250&quot;&gt;&lt;a href=&quot;https://joshua1988.github.io/web-development/javascript/js-async-await/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://joshua1988.github.io/web-development/javascript/js-async-await/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cYgNfw/hyUdOCZssk/Xwr3vBWzyFd523sKsPhCwk/img.png?width=646&amp;amp;height=450&amp;amp;face=0_0_646_450,https://scrap.kakaocdn.net/dn/bPhcfV/hyUdWHMH4d/mtTUukwTHAesP1EwK6L3xk/img.png?width=646&amp;amp;height=450&amp;amp;face=0_0_646_450,https://scrap.kakaocdn.net/dn/li4EE/hyUdXfC1Oy/YDxU97Ip4garjAuWjstWck/img.png?width=1920&amp;amp;height=1250&amp;amp;face=0_0_1920_1250');&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;자바스크립트 async와 await&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;(중급) 자바스크립트 개발자를 위한 async, await 사용법 설명. 쉽게 알아보는 자바스크립트 async await 개념, 사용법, 예제 코드, 예외 처리 방법&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;joshua1988.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;참고 URL : &lt;/span&gt;&lt;a href=&quot;https://velog.io/@khy226/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0%EB%9E%80-Promise-asyncawait-%EA%B0%9C%EB%85%90&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@khy226/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0%EB%9E%80-Promise-asyncawait-%EA%B0%9C%EB%85%90&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697035302495&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;동기, 비동기란? (+Promise, async/await 개념)&quot; data-og-description=&quot;1. 동기 vs. 비동기 우선 차이점 부터 설명하자면, 동기는 '직렬적'으로 작동하는 방식이고 비동기는 '병렬적'으로 작동하는 방식이다. 즉, 비동기란 특정 코드가 끝날때 까지 코드의 실행을 멈추&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@khy226/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0%EB%9E%80-Promise-asyncawait-%EA%B0%9C%EB%85%90&quot; data-og-url=&quot;https://velog.io/@khy226/동기-비동기란-Promise-asyncawait-개념&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bExcSu/hyT9BkZuzM/3MPPFHNMw9FfHx5pf2q0bK/img.png?width=1800&amp;amp;height=1012&amp;amp;face=0_0_1800_1012,https://scrap.kakaocdn.net/dn/k0gAG/hyUdMd6EU4/PWV4Wfe9LDcM7LuTbrU771/img.png?width=1800&amp;amp;height=1012&amp;amp;face=0_0_1800_1012,https://scrap.kakaocdn.net/dn/vAG2m/hyUdV3bdcA/dFeg3Mtp5PWZrptpWUkQi1/img.png?width=1800&amp;amp;height=1012&amp;amp;face=0_0_1800_1012&quot;&gt;&lt;a href=&quot;https://velog.io/@khy226/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0%EB%9E%80-Promise-asyncawait-%EA%B0%9C%EB%85%90&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@khy226/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0%EB%9E%80-Promise-asyncawait-%EA%B0%9C%EB%85%90&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bExcSu/hyT9BkZuzM/3MPPFHNMw9FfHx5pf2q0bK/img.png?width=1800&amp;amp;height=1012&amp;amp;face=0_0_1800_1012,https://scrap.kakaocdn.net/dn/k0gAG/hyUdMd6EU4/PWV4Wfe9LDcM7LuTbrU771/img.png?width=1800&amp;amp;height=1012&amp;amp;face=0_0_1800_1012,https://scrap.kakaocdn.net/dn/vAG2m/hyUdV3bdcA/dFeg3Mtp5PWZrptpWUkQi1/img.png?width=1800&amp;amp;height=1012&amp;amp;face=0_0_1800_1012');&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;동기, 비동기란? (+Promise, async/await 개념)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 동기 vs. 비동기 우선 차이점 부터 설명하자면, 동기는 '직렬적'으로 작동하는 방식이고 비동기는 '병렬적'으로 작동하는 방식이다. 즉, 비동기란 특정 코드가 끝날때 까지 코드의 실행을 멈추&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&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;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;Q3. Arrow Function 이란 무엇인지 설명해주실 수 있을까요?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;ES6 문법 이후부터는 자바스크립트에서 함수를 만들 수 있는 문법이 새롭게 하나 등장했다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;arrow function 이라는 문법인데 이걸 이용하면 함수를 만들 수 있다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;function이라는&amp;nbsp;길고&amp;nbsp;복잡한&amp;nbsp;키워드&amp;nbsp;대신에&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;=&amp;gt;&amp;nbsp;이런&amp;nbsp;예쁜&amp;nbsp;화살표를&amp;nbsp;사용해서&amp;nbsp;함수를&amp;nbsp;만들어내는&amp;nbsp;신문이다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1) 함수 본연의 기능을 아주 잘 표현하는 문법이다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;로그래밍할&amp;nbsp;때&amp;nbsp;function&amp;nbsp;문법은&amp;nbsp;왜&amp;nbsp;사용할까?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1.&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;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2.&amp;nbsp;입출력기능을&amp;nbsp;만들&amp;nbsp;때&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이럴&amp;nbsp;때&amp;nbsp;함수를&amp;nbsp;사용한다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;arrow&amp;nbsp;function을&amp;nbsp;사용하면&amp;nbsp;함수&amp;nbsp;본연의&amp;nbsp;입출력기능을&amp;nbsp;아주&amp;nbsp;직관적으로&amp;nbsp;잘&amp;nbsp;표현해준다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;arrow&amp;nbsp;function을&amp;nbsp;쓰시면&amp;nbsp;입출력기능이&amp;nbsp;쉽고&amp;nbsp;예쁘게&amp;nbsp;표현된다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1697036807443&quot; class=&quot;coffeescript&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;var 두배만들기 = (x) =&amp;gt; { return x * 2 }

console.log( 두배만들기(4) );
console.log( 두배만들기(8) );&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;숫자를&amp;nbsp;넣으면&amp;nbsp;2배를&amp;nbsp;해주는&amp;nbsp;함수를&amp;nbsp;만들면,&amp;nbsp;매우&amp;nbsp;이해하기&amp;nbsp;쉬워진다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2) 소괄호 생략이 가능하다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;파라미터가&amp;nbsp;하나라면&amp;nbsp;소괄호&amp;nbsp;생략이&amp;nbsp;가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1697036821553&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var 두배만들기 = x =&amp;gt; { return x * 2 }

console.log( 두배만들기(4) );
console.log( 두배만들기(8) );&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;x에 소괄호를 생략해도 된다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3) 중괄호 생략이 가능하다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;중괄호&amp;nbsp;안에&amp;nbsp;return&amp;nbsp;한줄&amp;nbsp;뿐이라면&amp;nbsp;중괄호와&amp;nbsp;return도&amp;nbsp;생략가능하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1697036846611&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;var 두배만들기 = x =&amp;gt; x * 2 ;

console.log( 두배만들기(4) );
console.log( 두배만들기(8) );&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;결론: x가 어떻게 변하는 함수인지 입출력기능이 바로 한눈에 들어온다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4) this 바인딩 :&amp;nbsp; arrow function은 어디서 쓰든간에 내부의 this 값을 변화시키지 않는다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그러니까&amp;nbsp;바깥에&amp;nbsp;있던&amp;nbsp;this의&amp;nbsp;의미를&amp;nbsp;그대로&amp;nbsp;내부에서도&amp;nbsp;사용하는&amp;nbsp;함수가&amp;nbsp;바로&amp;nbsp;arrow&amp;nbsp;function&amp;nbsp;이라는&amp;nbsp;함수입니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;(*항상 장점은 아니다. 내가 예측하던 this값과 달라질 수도 있으니 단점이 될 수 있다.&amp;nbsp;&amp;nbsp;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;참고 URL : &lt;a href=&quot;https://codingapple.com/unit/es6-3-arrow-function-why/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://codingapple.com/unit/es6-3-arrow-function-why/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697107332882&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;Arrow function은 function을 대체하는 신문법이 아님 - 코딩애플 온라인 강좌&quot; data-og-description=&quot;0:00 Arrow function 문법 1:17 왜 쓰는지 장점 3개 정리 4:28 Arrow function 실생활 사용 예시 &amp;amp; this값에 대하여 ES6 문법 이후부터는 자바스크립트에서 함수를 만들 수 있는 문법이 새롭게 하나 등장했습니&quot; data-og-host=&quot;codingapple.com&quot; data-og-source-url=&quot;https://codingapple.com/unit/es6-3-arrow-function-why/&quot; data-og-url=&quot;https://codingapple.com/unit/es6-3-arrow-function-why/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://codingapple.com/unit/es6-3-arrow-function-why/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://codingapple.com/unit/es6-3-arrow-function-why/&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;Arrow function은 function을 대체하는 신문법이 아님 - 코딩애플 온라인 강좌&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;0:00 Arrow function 문법 1:17 왜 쓰는지 장점 3개 정리 4:28 Arrow function 실생활 사용 예시 &amp;amp; this값에 대하여 ES6 문법 이후부터는 자바스크립트에서 함수를 만들 수 있는 문법이 새롭게 하나 등장했습니&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;codingapple.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;451&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A9Gxv/btsycvUB76J/K3tyMB74olXyItPAUfFxU1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A9Gxv/btsycvUB76J/K3tyMB74olXyItPAUfFxU1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A9Gxv/btsycvUB76J/K3tyMB74olXyItPAUfFxU1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA9Gxv%2FbtsycvUB76J%2FK3tyMB74olXyItPAUfFxU1%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;313&quot; height=&quot;251&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;451&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;오늘부터 기술면접 대비를 진행했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;하루에 2개정도 내가 알아본 내용들을 제출했고,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;오늘은 내가 미리 내가 기존에 알아본 내용들로 롤플레잉도 진행햬보았는데, 걱정이다..!&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;나 나중에.. 기술면접 잘 볼수있겠지?&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;벌써 걱정이다!&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아직 전문지식이 부족해서 꼬리질문 나오면 긴장부터 된다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;많이 배워야겠다!&lt;/span&gt;&lt;/p&gt;</description>
      <category>0. TiL  ( Today I Learned )</category>
      <category>javascript</category>
      <category>js</category>
      <category>js문법</category>
      <category>기술면접</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/93</guid>
      <comments>https://sa-growth-diary.tistory.com/93#entry93comment</comments>
      <pubDate>Thu, 12 Oct 2023 19:39:57 +0900</pubDate>
    </item>
    <item>
      <title>[ TIL ] [ 정규과정 : 실전프로젝트주차 ] Docker</title>
      <link>https://sa-growth-diary.tistory.com/92</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=tPjpcsgxgWc&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/oo6Ov/hyT56rFiTA/5DjkFDC0jWKik5oLKNkBTk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/tPjpcsgxgWc&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;YOUTUBE [얄팍한 코딩 ] - 도커가 뭐고 왜 쓰는건가요?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;서버를 운영하다 보면, 더 성능 좋은 서버로 옮겨가거나,&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;늘어난 서버 처리를 위해 서버를 여러 개를 처리해야 할 일이 생길 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;그럼 그곳에서도 똑같이 설치를 해야하는 일이 발생된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;그나마 같은 사람이 하는거면 좀 번거롭고 마는데 지금은 퇴직하고 없는 개발자가 구축하게 된다면?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;거기다 구식이라 매뉴얼도 잘 없는 환경이라면? 와중에 어디를 고쳐야 할지 아무도 모르는 상황이 발생된다면?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;같은 서버에 여러 서비스를 돌리는 경우, 각각이 다른 실행환경에서 동작해야 할 때 일이 까다로워질 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;ex) 기존사이트는 자바 7에서 동작 새 서비스는 자바 8에서 동작되면 이것저것 맞추고 신경 써야 할 것이 많아진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;Docker를 사용하면 이러한 불편함을 없앨 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;각 요소가 설치된 형태를 &amp;lsquo;이미지&amp;rsquo;라는 형태로 박제해서 저장한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;( 각 제품마다 공식적으로 제공되는 이미자도 있고, 원하는 대로 만들어 낼 수도 있다. )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;Docker는 DockerHub에 업로드돼서 공유되고 다운로드하여질 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이렇게 이미지로 저장된 항목들이 함께 연결돼서 동작하도록 설정 상태를 명령어 텍스트나 문서 형태로 저장할 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이런 것들을 설치하는 과정을 어디서든 컴퓨터가 자동으로 재현할 수 있도록 녹화해 둔다는 느낌으로.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;따라서 이 문서만 잘 보관해 두면 이 요소들이 어디서든 미리 지정된 서비스에 필요한 설정대로 도커허브로부터 다운로드하여져서 설치될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;도커는 이것들을 컴퓨터에 바로 설치하지 않는다. &amp;lsquo;컨테이너&amp;rsquo;로 불리는 독립된 가상공간을 만들어내서 복원한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;때문에 아까 말했던 케이스와 같이 java7,8 또한 각각의 컨테이너 안에서 서로 방해받는 일 없이 돌아갈 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;도커는 가상컴퓨팅하고는 다른 구조이다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;가상컴퓨팅은 각각 OS를 가동하는 컴퓨터들이 물리적 자원을 불할 해서 쓰기 때문에 성능에 한계가 생기게 된다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;도커는 OS단까지 내려가는 게 아니라 실행환경만 독립적으로 돌리는 거라 컴퓨터에 직접 요소들을 설치한 거랑 별 차이 없는 성능을 낼 수 있고 가상컴퓨팅보다 훨씬 가볍고 빠르게&amp;nbsp; 각각을 설치하고 실행하고 켜고 끄고 연동할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;서버에 뭐가 잘못돼서 고치거나, 업그레이드 할 때&amp;nbsp; 일일이 요소를 정지하고 지우거나 새로 깔 필요 없이 컨테이너를 통쨰로 교체해서 새로 실행하면 된다. 서버를 관리하고 서비스를 배포하는 일이 간편해지게 되었다. &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&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;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;1. Docker 실행방식&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;Docker 기술은&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.redhat.com/ko/topics/linux/what-is-the-linux-kernel&quot;&gt;Linux 커널&lt;/a&gt;과&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.redhat.com/ko/blog/world-domination-cgroups-rhel-8-welcome-cgroups-v2&quot;&gt;Cgroups&lt;/a&gt;&amp;nbsp;및&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://lwn.net/Articles/528078/&quot;&gt;네임스페이스&lt;/a&gt;&amp;nbsp;등 커널의 기능을 사용하여 프로세스를 분리함으로써 독립적으로 실행할 수 있도록 합니다. 이러한 독립성은 컨테이너의 본래 목적이다. 다시 말해서, 여러 프로세스와 애플리케이션을 서로 개별적으로 실행하여 인프라를 더 효과적으로 활용하고 개별 시스템을 사용할 때와 동일한&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.redhat.com/ko/topics/security&quot;&gt;보안을 유지&lt;/a&gt;할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #151515; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;Docker를 포함한 컨테이너 툴은 이미지 기반 배포 모델을 제공합니다. 따라서 여러 환경 전반에서 애플리케이션 또는 서비스를 모든 종속 항목과 손쉽게 공유할 수 있다. 또한 Docker는 이 컨테이너 환경 내에서 애플리케이션(또는 애플리케이션을 구성하는 결합된 프로세스) 배포를 자동화한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #151515; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이러한 툴은 Linux 컨테이너를 기반으로 구축되어 Docker를 사용자 친화적이고 고유하게 만들어 주므로 사용자는 그 어느 때보다 쉽게 애플리케이션에 액세스 하고, 신속하게 배포하고, 버전 및 버전 배포를 제어할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #151515; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #151515; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;2. Docker 장점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;모듈성&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;컨테이너화에 대한 Docker 접근 방식은 전체 애플리케이션을 분해하지 않고도 업데이트 또는 복구를 위해 애플리케이션의 일부를 분해하는 기능에 중점을 둔다. 이러한 마이크로서비스 기반 접근 방식 외에도 서비스 지향 아키텍처(SOA)와 거의 같은 방식으로 멀티플 애플리케이션 간에 프로세스를 공유할 수 있다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;계층&amp;nbsp;및&amp;nbsp;이미지&amp;nbsp;버전&amp;nbsp;제어&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;각&amp;nbsp;Docker&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;때마다&amp;nbsp;새&amp;nbsp;계층이&amp;nbsp;생성된다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;Docker는 이러한 계층을 재사용하여 새 컨테이너를 구축하는데, 이때 구축 프로세스 속도가 빨라진다. 중간 변경 사항은 이미지 간에 공유되므로 속도와 크기, 효율성이 더욱 향상됩니다. 또한 계층화에는 버전 제어가 내재되어 있다. 새로운 변경 사항이 있을 때마다 변경 로그가 기본 제공되므로 컨테이너 이미지를 완벽하게 제어할 수 있다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;롤백&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;계층화의 가장 큰 장점은 아마 롤백 기능일 것이다. 모든 이미지에는 계층이 있다. 현재의 이미지 반복이 적절하지 않은 경우 이전 버전으로 롤백하면 됩니다. 이 기능은 애자일 개발 접근 방식을 지원하며 툴 관점에서 실제로 지속적 통합 및 배포(CI/CD)를 수행하는 데 도움을 준다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;신속한&amp;nbsp;배포&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이전에는 새로운 하드웨어를 확보, 실행, 프로비저닝, 제공하는 데 며칠이 걸렸으며, 이를 위한 작업 및 오버헤드 부담도 상당했다. Docker 기반 컨테이너는 배포 시간을 몇 초로 줄일 수 있다. 각 프로세스에 대한 컨테이너를 생성하면 해당 프로세스를 새 애플리케이션과 빠르게 공유할 수 있다. 또한 컨테이너를 추가하거나 이동하기 위해 운영 체제를 부팅할 필요가 없으므로 배포 시간이 상당히 단축된다. 배포 시간이 단축되면 컨테이너에서 생성한 데이터를 쉽고 비용 효율적으로 생성하고 제거할 수 있다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;따라서&amp;nbsp;Docker&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;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;3. Doker 사용방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;1) Docker 설치:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;Docker는 대부분의 주요 OS(Windows, MacOS, Linux)에서 사용할 수 있습니다. 공식 사이트에서 적절한 버전을 다운로드하고 설치.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;2) Docker 이미지와 컨테이너:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;➤ 이미지: 애플리케이션과 그 실행 환경을 포함하는 템플릿입니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000; text-align: start;&quot;&gt;➤ &lt;/span&gt;컨테이너: 이미지를 기반으로 실행되는 인스턴스입니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;3) 기본 명령어:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000; text-align: start;&quot;&gt;➤&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;이미지 다운로드: docker pull [이미지 이름]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000; text-align: start;&quot;&gt;➤&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;이미지&amp;nbsp;목록&amp;nbsp;확인:&amp;nbsp;docker&amp;nbsp;images&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000; text-align: start;&quot;&gt;➤&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;컨테이너&amp;nbsp;생성&amp;nbsp;및&amp;nbsp;실행:&amp;nbsp;docker&amp;nbsp;run&amp;nbsp;[이미지&amp;nbsp;이름]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000; text-align: start;&quot;&gt;➤&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;실행&amp;nbsp;중인&amp;nbsp;컨테이너&amp;nbsp;확인:&amp;nbsp;docker&amp;nbsp;ps&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000; text-align: start;&quot;&gt;➤&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;모든&amp;nbsp;컨테이너&amp;nbsp;확인:&amp;nbsp;docker&amp;nbsp;ps&amp;nbsp;-a&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000; text-align: start;&quot;&gt;➤&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;컨테이너&amp;nbsp;종료:&amp;nbsp;docker&amp;nbsp;stop&amp;nbsp;[컨테이너&amp;nbsp;ID&amp;nbsp;또는&amp;nbsp;이름]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000; text-align: start;&quot;&gt;➤&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;컨테이너&amp;nbsp;삭제:&amp;nbsp;docker&amp;nbsp;rm&amp;nbsp;[컨테이너&amp;nbsp;ID&amp;nbsp;또는&amp;nbsp;이름]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000; text-align: start;&quot;&gt;➤&lt;span&gt; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;이미지&amp;nbsp;삭제:&amp;nbsp;docker&amp;nbsp;rmi&amp;nbsp;[이미지&amp;nbsp;이름]&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;4) Dockerfile: &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;Docker 이미지를 만들기 위한 스크립트 파일입니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;Dockerfile에 애플리케이션과 환경을 정의하고 docker build 명령어를 사용하여 이미지를 생성할 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;5) Docker Compose:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;여러&amp;nbsp;컨테이너를&amp;nbsp;함께&amp;nbsp;관리하게&amp;nbsp;해주는&amp;nbsp;도구입니다.&amp;nbsp;docker-compose.yml&amp;nbsp;파일에&amp;nbsp;여러&amp;nbsp;서비스를&amp;nbsp;정의하고,&amp;nbsp;단일&amp;nbsp;명령어로&amp;nbsp;그룹화된&amp;nbsp;컨테이너를&amp;nbsp;생성,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;시작,&amp;nbsp;중지할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;참조 URL : &lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.redhat.com/ko/topics/containers/what-is-docker&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.redhat.com/ko/topics/containers/what-is-docker&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1696502311319&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;Docker란? What is docker? 도커 컨테이너, docker container 실행&quot; data-og-description=&quot;도커는 리눅스 컨테이너 생성 및 실행을 위한 컨테이너 기술을 뜻합니다. 오픈소스 Docker는 컨테이너를 경량화된 모듈식 가상 머신처럼 다룰 수 있도록 지원합니다.&quot; data-og-host=&quot;www.redhat.com&quot; data-og-source-url=&quot;https://www.redhat.com/ko/topics/containers/what-is-docker&quot; data-og-url=&quot;https://www.redhat.com/ko/topics/containers/what-is-docker&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jVZbn/hyT5TMELeT/fXWKrYv9PK0oh3xMnEDjx0/img.png?width=1446&amp;amp;height=579&amp;amp;face=0_0_1446_579,https://scrap.kakaocdn.net/dn/boObkB/hyT5VXY7Ld/CXMI2f5obCPtXKME42hKbK/img.png?width=1446&amp;amp;height=579&amp;amp;face=0_0_1446_579&quot;&gt;&lt;a href=&quot;https://www.redhat.com/ko/topics/containers/what-is-docker&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.redhat.com/ko/topics/containers/what-is-docker&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jVZbn/hyT5TMELeT/fXWKrYv9PK0oh3xMnEDjx0/img.png?width=1446&amp;amp;height=579&amp;amp;face=0_0_1446_579,https://scrap.kakaocdn.net/dn/boObkB/hyT5VXY7Ld/CXMI2f5obCPtXKME42hKbK/img.png?width=1446&amp;amp;height=579&amp;amp;face=0_0_1446_579');&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;Docker란? What is docker? 도커 컨테이너, docker container 실행&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;도커는 리눅스 컨테이너 생성 및 실행을 위한 컨테이너 기술을 뜻합니다. 오픈소스 Docker는 컨테이너를 경량화된 모듈식 가상 머신처럼 다룰 수 있도록 지원합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.redhat.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GiJq9/btsw8VM5r77/utOi4rXdbUBbUHB92kHPS1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GiJq9/btsw8VM5r77/utOi4rXdbUBbUHB92kHPS1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GiJq9/btsw8VM5r77/utOi4rXdbUBbUHB92kHPS1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGiJq9%2Fbtsw8VM5r77%2FutOi4rXdbUBbUHB92kHPS1%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;377&quot; height=&quot;392&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;586&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;맞다.. 나 이제 더 이상 물러날 곳이 없다..!&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;16기 마무리 잘해봐야한답 !&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;실전 프로젝트다.. 6주 열심히해야지 6_6..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-style=&quot;alignRight&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>0. TiL  ( Today I Learned )</category>
      <category>docker</category>
      <category>node.js</category>
      <category>til</category>
      <category>실전프로젝트</category>
      <category>프로젝트</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/92</guid>
      <comments>https://sa-growth-diary.tistory.com/92#entry92comment</comments>
      <pubDate>Thu, 5 Oct 2023 19:53:49 +0900</pubDate>
    </item>
    <item>
      <title>[ WIL ] ( Week 7 주차) 협업을 진행하며 느낀 아쉬운 점, 뿌듯한 점</title>
      <link>https://sa-growth-diary.tistory.com/91</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;팀플 짤. jpg를 찾으면 대개는 이러한 것들이 나온다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;팀플 썰들을 들어보면 긍정적인 것보다는 부정적인 것이 많았고, 어느 한 명의 희생을 요구하는 일도 있었으며 대부분은 소통의 부재와 탈주자들, 잠수를 타버리는 사람들이 발생되곤 했다.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&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/bNf7o0/btsv8bi9XxX/f7IueStH2POPYWxoIlKwtK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNf7o0/btsv8bi9XxX/f7IueStH2POPYWxoIlKwtK/img.jpg&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;412&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;63.6&quot; width=&quot;386&quot; height=&quot;221&quot; style=&quot;width: 62.8647%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNf7o0/btsv8bi9XxX/f7IueStH2POPYWxoIlKwtK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNf7o0%2Fbtsv8bi9XxX%2Ff7IueStH2POPYWxoIlKwtK%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;720&quot; height=&quot;412&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUU3k1/btsv5kHOl1F/GOvhUqVJgPW0UbqZlzyFkk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUU3k1/btsv5kHOl1F/GOvhUqVJgPW0UbqZlzyFkk/img.jpg&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;225&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;36.4&quot; style=&quot;width: 35.9726%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUU3k1/btsv5kHOl1F/GOvhUqVJgPW0UbqZlzyFkk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUU3k1%2Fbtsv5kHOl1F%2FGOvhUqVJgPW0UbqZlzyFkk%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;225&quot; height=&quot;225&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이번 프로젝트는 2주간 이루어지는 프로젝트였다. 나는, 서비스팀과 챌린 진 팀의 선택의 기로에서 챌린지 팀을 선택했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;원래 내가 추구해 온 스타일 대로라면 서비스팀이 맞지만 ( Fornt-end 와의 협업 경험과, 서비스분야를 개발해보고 싶어서 ) 협업을 하기에는 공부량이 조금 부족했다는 생각에 챌린지팀에서 조금 어려운 주제라도 부딪혀 가면서 배우자는 생각을 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;각설하고, '이번 프로젝트(협업) 경험이 나에게 어떠했냐?'라고 물어본다면.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 나의 부족함을 많이 알 수 있었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;'챌린지팀'이라는 이름이 붙은 만큼, 평소 잘하신다고 하시는 분들이 우리 조에 많이 있었고 그 덕분에 배울 수 있는 시간이 많이 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;처음에는 실력적인 부분에서 차이를 느꼈고, level5 미션을 제대로 완수하지 못하고 투입이 되었던 나는 다른 분들에 비해서 OOP에 대한 이해도가 조금 떨어져 있는 상태였기에 빨리 배워야겠다는 조급한 마음만 컸던 것 같다. 오히려 어떤 것을 먼저 해야 할지 몰라 이것저것 해보다 낭비해 버린 시간들이 많았다. ( 아마도 어떤 것을 모르는지 정확히 메타인지가 되어있지 않은 상태였던 것 같다. ) &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;조별&amp;nbsp; 멘토링 시간에 기술매니저님이&amp;nbsp; 남들과 비교하지 않는 것이 가장 중요하다는 말이 잔잔하게 계속 생각이 났다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. 컨디션 조절을 잘하지 못했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;내 부족함을 인지하는 순간부터 심적 스트레스가 많이 심했다. 그게 곧 스트레스로 이어졌고 컨디션이 급속히 나빠지기 시작했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;어쩌면 건강관리도 스케줄을 소화해내야 하는데 가장 큰 부분이기에 조별활동을 하는 데에 있어 나 스스로 지켜야 할 문제이나 그러지 못했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그래서 팀원들에게 미안하다는 말을 해야 할 때가 많이 있었다. 조금 더 차분하게 나를 다스리면서 프로젝트를 진행했다면 좋았을 것 같다는 생각을 했다. 나 스스로가 컨디션 조절을 하지 못했던 게 너무 아쉬웠다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3. 그럼에도 뿌듯했던 점은&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;팀원들이 상황을 잘 이해해 주었고, 끝까지 프로젝트를 잘 완수했다는 점이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;소통에 있어서 크게 어려웠던 부분이 없었고 (물론 내 느낌이었을 수 있지만) 매일 회의를 한 내용들을 문서화해서 다음에도 확 일이 가능하도록 했다. 매번 팀 프로젝트는 힘든 게 맞다. 시간도 맞춰야 하고 합도 맞춰야 한다. 누군가와 속도를 맞춰주는 일이 얼마나 어렵겠는가.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그럼에도 늘 끝날 때는 한 보따리씩 배워간다. 나는 이야기를 통해서 그 많은 것들을 배운다고 생각한다. 소통이 없으면 결국 남는 게 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아무튼, 다음 프로젝트에도 많이배워야징..ㅎ..&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <category>0. TiL  ( Today I Learned )</category>
      <category>wil</category>
      <category>프로젝트</category>
      <category>협업</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/91</guid>
      <comments>https://sa-growth-diary.tistory.com/91#entry91comment</comments>
      <pubDate>Thu, 28 Sep 2023 21:57:39 +0900</pubDate>
    </item>
    <item>
      <title>[ TIL ] [ 정규과정 : 주특기프로젝트주차 ] HTTPS / HTTP</title>
      <link>https://sa-growth-diary.tistory.com/89</link>
      <description>&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Nanum Gothic';&quot;&gt;* 이번 주특기프로젝트에서 &lt;u&gt;&lt;b&gt;https&lt;/b&gt;&lt;/u&gt;로 배포해야 하는 부분이 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Nanum Gothic';&quot;&gt;배포환경에 맞춰 설정을 하면서 알게 된 것과 추가로 공부한 것들을 오늘자 til에 기재해야겠다.&lt;/span&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Https를 왜 써야할까?&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;HTTPS는&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000; text-align: start;&quot; href=&quot;https://www.cloudflare.com/learning/ssl/transport-layer-security-tls/&quot;&gt;TLS 암호화&lt;/a&gt;&lt;span style=&quot;text-align: start;&quot;&gt;를 갖춘&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000; text-align: start;&quot; href=&quot;https://www.cloudflare.com/learning/ddos/glossary/hypertext-transfer-protocol-http/&quot;&gt;HTTP&lt;/a&gt;&lt;span style=&quot;text-align: start;&quot;&gt;. HTTPS는 TLS(&lt;/span&gt;&lt;a style=&quot;color: #000000; text-align: start;&quot; href=&quot;https://www.cloudflare.com/learning/ssl/what-is-ssl/&quot;&gt;SSL&lt;/a&gt;&lt;span style=&quot;text-align: start;&quot;&gt;)를 사용하여 일반 HTTP 요청과 응답을&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000; text-align: start;&quot; href=&quot;https://www.cloudflare.com/learning/ssl/what-is-encryption/&quot;&gt;암호화&lt;/a&gt;&lt;span style=&quot;text-align: start;&quot;&gt;하므로 더 안전하고 보안이 강화됩니다. HTTPS를 사용하는 웹 사이트의 URL 앞에는 http:// 대신 https://(예: &lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.cloudflare.com)가&quot;&gt;https://www.cloudflare.com)가&lt;/a&gt; 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;웹 사이트에서는 왜&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000; text-align: start;&quot; href=&quot;https://www.cloudflare.com/learning/ssl/what-is-https/&quot;&gt;HTTPS&lt;/a&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;를 사용해야 할까?&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;1) HTTPS를 사용하는 웹 사이트는 사용자가 더 신뢰할 수 있습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HTTPS를 사용하는 웹 사이트는 지역 식품 안전 검사관으로부터 &quot;합격&quot;을 받았음을 게시하는 식당과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;잠재 고객은 큰 부작용 없이 해당 업체를 이용할 수 있다는 것을 신뢰할 수 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;요즘 같은 시대에 HTTP를 사용하는 것은 식품 안전 검사 &quot;불합격&quot; 표시를 게시하는 것과 같다. 고객에게 뭔가 안 좋은 일이 발생하지 않는다는 보장이 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HTTPS는 SSL/TLS 프로토콜을 사용하여 통신을 암호화하므로 공격자가 데이터를 탈취할 수 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;또한 SSL/TLS는 웹 사이트 서버가 실제 서버임을 확인하므로 사칭이 방지된다. 이는 식품 안전이 질병을 예방하는 것과 마찬가지로 여러 종류의 사이버 공격을 차단한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;일부 사용자는 SSL/TLS의 이점을 인식하지 못할 수도 있지만, 최신 브라우저에서는 어떤 경우에도 웹 사이트의 신뢰성을 인식하도록 하고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;▶︎ Chrome 등의 브라우저에서는 모든 HTTP 웹 사이트를 &quot;안전하지 않음&quot;으로 표시한다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Google에서는 여러 해에 걸쳐 점진적으로 조치를 취하여 웹 사이트에 HTTPS를 도입하도록 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Google 또한 검색 결과를 반환하는 방식에서 품질 요소로 HTTPS를 사용하며, 웹 사이트의 보안 수준이 높을수록 방문자가 Google이 제공한 링크를 클릭함으로써 실수할 가능성이 낮아진다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2018년 7월 Chrome 68 출시와 함께 보호되지 않은 모든 HTTP 트래픽은 URL 표시줄에 '안전하지 않음'이라고 표시된다. 이 알림은 유효한 SSL 인증서가 없는 모든 웹 사이트에 표시된다. ( *다른 브라우저도 그 뒤를 따름 )&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2) 사용자와 웹 사이트 소유자 모두에게 HTTPS가 더 안전하다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;HTTPS를 사용하면 원본 서버로 전송되는 데이터와 원본 서버에서 수신되는 데이터의 양방향 전송이 모두 암호화됩니다. 프로토콜은 악의적인 당사자가 전송되는 데이터를 관찰할 수 없도록 통신을 안전하게 유지한다. 따라서 사용자가 양식에 사용자 이름과 비밀번호를 입력할 때 이들 정보가 전송 중에 도난당하지 않는다. 웹 사이트나 웹 애플리케이션에서 사용자에게 중요한 데이터나 개인 데이터(예: 은행 계좌 정보)를 전송해야 하는 경우, 암호화를 통해 해당 데이터도 보호될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;3)&amp;nbsp; HTTPS에서는 웹 사이트가 인증된다.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;Uber나 Lyft와 같은 차량 공유 앱의 사용자는 운전자가 픽업하러 왔다고 말한다고 해서 낯선 차에 무작정 올라탈 필요가 없다. 대신 앱에 운전자의 이름과 외모, 운전하는 차량의 종류, 차량 번호 등 운전자에 대한 정보가 표시된다. 공유 차량이 모두 다르고 운전자를 한 번도 본 적이 없더라도 사용자는 이러한 사항을 확인해서 올바른 차량에 탑승하게 되는지 확인할 수 있다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;마찬가지로 사용자가 웹 사이트를 탐색할 때 실제로 하는 일은 한 번도 본 적 없는 사람이 관리하는, 잘 알지 못하고 먼 곳에 있는 컴퓨터에 연결하는 것이다. HTTPS를 활성화하는 SSL 인증서는 차량 공유 앱의 운전자 정보와 같다. 이는 신뢰할 수 있는 제삼자가 웹 서버가 자칭하는 실체임을 외부에서 검증하는 것을 의미한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;HTTPS&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;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;HTTPS에 대하여 오해와 진실&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&quot;웹 사이트에서 중요한 정보를 취급하지 않으므로 HTTPS가 필요하지 않다&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;예를 들어, 일부 인터넷 서비스 공급자는 실제로 HTTP로 제공되는 웹 사이트에 광고를 삽입한다. 이러한 광고는 웹사이트의 콘텐츠와 방향이 일치하거나 일치하지 않을 수 있으며, 웹사이트 수익을 공유하지 않는다는 사실은 제쳐두더라도, 잠재적으로 공격적일 수 있다. 사이트의 보안이 확보되면 이러한 삽입 광고는 더 이상 실행할 수 없다.&amp;nbsp; &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;최신 웹 브라우저에서는 이제 안전하지 않은 사이트에 대하여 기능을 제한합니다. 웹 사이트의 품질을 향상하는 중요한 기능에는 이제 HTTPS가 필요하다. 위치 정보, 푸시 알림, 프로그레시브 웹 애플리케이션(PWA)을 실행하는 데 필요한 Service Workers는 모두 강화된 보안을 필요로 한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&quot;페이지 로드 시간을 늘려 웹 사이트의 성능을 저하시키고 싶지 않다&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;시간이 지남에 따라 HTTPS가 개선되어 암호화된 연결을 설정하는 데 필요한 성능 오버헤드를 줄일 수 있게 되었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;TLS 세션 재개 및 TLS 잘못된 시작을 포함하여 연결 생성의 총 대기 시간을 줄이기 위해 TLS에 개선 사항이 구현되었다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&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;RTT가&amp;nbsp;50%&amp;nbsp;감소했다.&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&quot;HTTPS를 구현하려면 비용이 너무 많이 든다&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이제는&amp;nbsp;더&amp;nbsp;이상&amp;nbsp;비용이&amp;nbsp;걱정되지&amp;nbsp;않습니다.&amp;nbsp;Cloudflare에서는&amp;nbsp;웹&amp;nbsp;사이트에&amp;nbsp;무료로&amp;nbsp;전송을&amp;nbsp;암호화하는&amp;nbsp;기능을&amp;nbsp;제공합니다.&amp;nbsp;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;출처 : &lt;a href=&quot;https://www.cloudflare.com/ko-kr/learning/ssl/why-use-https/#&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.cloudflare.com/ko-kr/learning/ssl/why-use-https/#&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;아래는,&amp;nbsp; 프로젝트에서 https를 사용하기 위해 변경한 부분이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;https를 사용하는 경우, 쿠키를 안전하게 전송하고 보호하기 위해서 아래와 같은 설정이 필요하다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;[기존코드]&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1695230091356&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 사용자 로그인 API
res.cookie('Authorization', `Bearer${accessToken}`, {httpOnly: true});
res.cookie('refreshToken', refreshToken, {httpOnly: true});

//accessToken 재발급 API
res.cookie('newAccessToken', newAccessToken, {httpOnly: true});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;문제점 : http에서만 사용될 수 있도록 설정되어 있어서 https 배포환경에서는 로그인이 되지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;( * 확인하는 방법 :&amp;nbsp; 터미널에서 ubuntu로 접속해 있을 때,&amp;nbsp;pm2 log&amp;nbsp;명령어로 확인)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;[ 해결방법]&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1695230144005&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;httpOnly: true, 
sameSite: process.env.NODE_ENV === &amp;lsquo;production&amp;rsquo; ? &amp;lsquo;none&amp;rsquo;: &amp;lsquo;lax&amp;rsquo;, // https 환경에서는 none으로 설정 
secure: process.env.NODE_ENV === &amp;lsquo;production&amp;rsquo; //이 조건에 의해서 true 일 경우에 '쿠키는 HTTPS 연결을 사용하는 경우에만 브라우저로 전송한다.'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;위 와 같은 설정을 추가로 해줘야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[변경된 코드]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qrHr8/btsu2bDvg8g/2gzdE0kAWDSIpkPJPdaXmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qrHr8/btsu2bDvg8g/2gzdE0kAWDSIpkPJPdaXmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qrHr8/btsu2bDvg8g/2gzdE0kAWDSIpkPJPdaXmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqrHr8%2Fbtsu2bDvg8g%2F2gzdE0kAWDSIpkPJPdaXmk%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;687&quot; height=&quot;386&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1695230303104&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 사용자 로그인 API
res.cookie('Authorization', `Bearer ${accessToken}`, cookieOptions)
res.cookie('refreshToken', refreshToken, cookieOptions);

//accessToken 재발급 API
res.cookie('newAccessToken', newAccessToken, cookieOptions);&lt;/code&gt;&lt;/pre&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;317&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCwJ7k/btsuQkIMpBw/8PzmxHeNHHfHUj17laOr1K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCwJ7k/btsuQkIMpBw/8PzmxHeNHHfHUj17laOr1K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCwJ7k/btsuQkIMpBw/8PzmxHeNHHfHUj17laOr1K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCwJ7k%2FbtsuQkIMpBw%2F8PzmxHeNHHfHUj17laOr1K%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;533&quot; height=&quot;300&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;317&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;뭐 했는데&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;벌써 프로젝트 일주일 뚝딱 갔죠?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;.....&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;이러다 눈 감았다 뜨면 항해 끝났겠네..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>0. TiL  ( Today I Learned )</category>
      <category>http</category>
      <category>https</category>
      <category>js</category>
      <category>node.js</category>
      <category>til</category>
      <category>배포</category>
      <category>배포환경</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/89</guid>
      <comments>https://sa-growth-diary.tistory.com/89#entry89comment</comments>
      <pubDate>Thu, 21 Sep 2023 02:28:09 +0900</pubDate>
    </item>
    <item>
      <title>[ WIL ] ( Week 6 주차) 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)</title>
      <link>https://sa-growth-diary.tistory.com/87</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff; font-family: 'Noto Sans Light';&quot;&gt;[교차 출처 리소스 공유(Cross-Origin Resource Sharing,&amp;nbsp;&lt;a style=&quot;color: #ffffff; background-color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Glossary/CORS&quot;&gt;CORS&lt;/a&gt;)]&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;교차 출처 리소스 공유&lt;/b&gt;(Cross-Origin Resource Sharing,&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Glossary/CORS&quot;&gt;CORS&lt;/a&gt;)는 추가&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Glossary/HTTP&quot;&gt;HTTP&amp;nbsp;&lt;/a&gt;헤더를 사용하여, 한&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Glossary/Origin&quot;&gt;출처에서&lt;/a&gt;&amp;nbsp;실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;교차 출처 요청의 예시:&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://domain-a.com&quot;&gt;https://domain-a.com&lt;/a&gt;&amp;nbsp;프런트 엔드 JavaScript 코드가&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/API/XMLHttpRequest&quot;&gt;XMLHttpRequest&lt;/a&gt;&amp;nbsp;사용하여&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://domain-b.com/data.json&quot;&gt;https://domain-b.com/data.json&lt;/a&gt;&amp;nbsp;요청하는 경우.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;보안 상의 이유로, 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한한다. 예를 들어,&amp;nbsp;XMLHttpRequest&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/API/Fetch_API&quot;&gt;Fetch API는&lt;/a&gt;&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/Security/Same-origin_policy&quot;&gt;동일 출처 정책을&amp;nbsp;&lt;/a&gt;따름. 즉, 이 API를 사용하는 웹 애플리케이션은 자신의 출처와 동일한 리소스만 불러올 수 있으며, 다른 출처의 리소스 불러오려면 그 출처에서 올바른 CORS 헤더를 포함한 응답을 반환해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&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;925&quot; data-origin-height=&quot;643&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kzrtu/btsuenFClAk/91KkLGYJQB3ZJJOiFpDak0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kzrtu/btsuenFClAk/91KkLGYJQB3ZJJOiFpDak0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kzrtu/btsuenFClAk/91KkLGYJQB3ZJJOiFpDak0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkzrtu%2FbtsuenFClAk%2F91KkLGYJQB3ZJJOiFpDak0%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;740&quot; height=&quot;514&quot; data-origin-width=&quot;925&quot; data-origin-height=&quot;643&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;CORS 체제는 브라우저와 서버 간의 안전한 교차 출처 요청 및 데이터 전송을 지원합니다. 최신 브라우저는&amp;nbsp;&lt;/span&gt;XMLHttpRequest&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;&amp;nbsp;또는&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000; text-align: start;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/API/Fetch_API&quot;&gt;Fetch&lt;/a&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;와 같은 API에서 CORS를 사용하여 교차 출처 HTTP 요청의 위험을 완화한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;어떤 요청이 CORS를 사용할까? &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;교차 출처 리소스 공유 표준은 웹 브라우저에서 해당 정보를 읽는 것이 허용된 출처를 서버에서 설명할 수 있는 새로운&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Headers&quot;&gt;HTTP 헤더를&lt;/a&gt;&amp;nbsp;추가함으로써 동작한다. 추가적으로, 서버 데이터에 부수 효과(side effect)를 일으킬 수 있는 HTTP 요청 메서드(&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/GET&quot;&gt;GET&lt;/a&gt;&amp;nbsp;제외한 HTTP 메서드)에 대해, CORS 명세는 브라우저가 요청&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/OPTIONS&quot;&gt;OPTIONS&lt;/a&gt;&amp;nbsp;&quot;프리플라이트&quot;(preflight, 사전 전달)하여 지원하는 메서드를 요청하고, 서버의 &quot;허가&quot;에 떨어지면 실제 요청을 보내도록 요구하고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;또한 서버는 클라이언트에게 요청에 &quot;인증정보&quot;(&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies&quot;&gt;쿠키&lt;/a&gt;,&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Authentication&quot;&gt;HTTP 인증&lt;/a&gt;)를 함께 보내야 한다고 알려줄 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;CORS 실패는 오류의 원인이지만, 보안상의 이유로 JavaScript에서는 오류의 상세 정보에 접근할 수 없으며, 알 수 있는 것은 오류 발생했다는 사실뿐이다. 정확히 어떤 것이 실패했는지 알아내려면 브라우저의 콘솔을 봐야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;이후 항목은 시나리오와 함께, 사용한 HTTP 헤더의 상세 내용을 다룬다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;출처 : &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/CORS&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/CORS&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1694959252289&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;교차 출처 리소스 공유 (CORS) - HTTP | MDN&quot; data-og-description=&quot;교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/CORS&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/CORS&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eTdXJ/hyTZdCZc2j/76rYc5uozKkYdvxrkeFFy0/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/bcHOt2/hyTV3ILl50/XVlYIjokdkIIKkVCwLecxK/img.png?width=1024&amp;amp;height=1076&amp;amp;face=0_0_1024_1076,https://scrap.kakaocdn.net/dn/clCWZa/hyTZe2YgWs/1k6XNhXocEd1e7fK6DBtgk/img.png?width=925&amp;amp;height=643&amp;amp;face=0_0_925_643&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/CORS&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/CORS&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eTdXJ/hyTZdCZc2j/76rYc5uozKkYdvxrkeFFy0/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/bcHOt2/hyTV3ILl50/XVlYIjokdkIIKkVCwLecxK/img.png?width=1024&amp;amp;height=1076&amp;amp;face=0_0_1024_1076,https://scrap.kakaocdn.net/dn/clCWZa/hyTZe2YgWs/1k6XNhXocEd1e7fK6DBtgk/img.png?width=925&amp;amp;height=643&amp;amp;face=0_0_925_643');&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;교차 출처 리소스 공유 (CORS) - HTTP | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;자주보는 얄코님의 강의에서 CORS에 대한 내용을 보아서, 내용을 다시 한번 정리해 보았다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;관련 URL : &lt;a href=&quot;https://youtu.be/bW31xiNB8Nc?si=foepV_rofbW7QO-y&quot;&gt;https://youtu.be/bW31 xiNB8 Nc? si=foepV_rofbW7 QO-y&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=bW31xiNB8Nc&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dFTSRj/hyTZdbUCPr/pVKsgfoj91SxmNL2G6CnPk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/bW31xiNB8Nc&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;YOUTUBE 얄팍한 코딩 -&amp;nbsp; 웹개발 짜증유발자! CORS가 뭔가요?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;한 사이트에서 주소가 다른 서버로 요청을 보낼 때 &lt;span style=&quot;color: #000000;&quot;&gt;자주 접하게 되는 오류 &lt;b&gt;CORS&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주소가 &amp;lsquo;어쩌고&amp;rsquo; 닷컴에서 URL &amp;lsquo;저쩌고&amp;rsquo; 닷컴 서비스에 API로 정보를 받아오기 위해서 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프런트에서 HTTP요청을 보냈을 때 미리 어떤 설정을 해 주지 않으면 &lt;b&gt;CORS&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문제로 막히게 된다. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;( * postman과 같이 디른 걸로 요청하면 다되는데, 웹으로 하면 막힐 때가 많음 ).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt; &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;▶︎ &amp;nbsp;&lt;/span&gt;웹사이트에서! 즉 브라우저인 프런트엔드에서 AJAX를 보낼 때마다 안됨 ( 크롬 / 에지 / 사파리 )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;CORS&lt;/b&gt;는 왜 있는 걸까?&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;예를 들어 &lt;b&gt;착한 닷컴이라는&lt;/b&gt; 사이트가 있다고 가정하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;어떤 사이트에 로그인하면, 다음에 접속할 때 로그인이 유지가 되어야 하는데 그것을 &lt;u&gt;캐시&lt;/u&gt;라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내 로그인정보를 &lt;u&gt;토큰&lt;/u&gt;으로 저장해서,&amp;nbsp; 로그인했던 사이트에 접속할 때마다 요청에 실어 보내면 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 사이트에서 이 쿠키를 확인하고 로그인을&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;확인할 수 있다.&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 내가 크롬을 통해 로그인을 진행했다면, 크롬에 내 정보가 저장이 되어있다는 것이 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;이때, 이러한 정보를 빼내기 위해 &lt;b&gt;나쁜 닷컴을&lt;/b&gt; 만들어 악성메일이 이나 댓글을 통해 해당 사이트로 유인하게 할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;나쁜 유저의 브라우저에 접속을 하면&amp;nbsp; Html / css / js 코드가 내 브라우저에 받아질 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;그렇다면, 나의 착한 닷컴에 저장된 내 정보를 가지고&amp;nbsp; 악의적인 행동을 취할 수 있게 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;이뿐만 아니라 다른 API를 조작할 수 있기에 브라우저는 이를 방지한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;CORS(Cross-Origin Resource Sharing)&lt;/b&gt; 다른 출처 간의 리소스를 주고받을 수 있음, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;SOP (Same-Origin Policy)&lt;/b&gt; 동일 출처 정책 (요청을 막는 것)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;원래 서로 다른 출처끼리 요청을 주고받는 것은 안 되는 게 기본값이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;하지만, 웹 생태계가 다양해지면서 여러 서비스들 간에 보다 자유롭게 데이터가 주고받아질 필요가 생기게 되었다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;그런데 다른 사이트 간의 요청을 브라우저가 막고 있어 개발자들은 jsonp (*현재는 거의 사용하지 않음) 우회해서 사용했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;이걸 합의해서 충족시키면 리소스가 공유되어 사용할 수 있을까 해서 만들어진 것이 CORS (교차 출처 자원 공유 방식)이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;단, 조건이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;요청을 받는 백엔드 쪽에서 허락할 다른 출처들을 미리 명시해 두면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;백엔드 서버를 프로그래밍할 때 쓰는 프레임워크들을 살펴보면 CORS 옵션을 넣는 방법들이 쉽게 마련돼 있다. 여기다 허용할 사이트들을 적어주면 이제 거기서 지정한 사이트에서 이 서버로 얼마든지 HTTP요청을 보낼 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;아무나 보내도 되는 요청의 경우 일반적으로 별표, 와일드카드를 적어 넣으면 누구나 다 쓸 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;네이버 지도와 같은 api도, CORS를 허용해 주는 주소를 지정하는 페이지가 따로 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;여기서, header란, 데이터가 다른 곳으로 전송될 때&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;데이터의 맨 앞쪽에 붙은 보충 정보라고 보면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;받는 쪽의 IP주소 사용할 프로토콜이나 옵션 등이 담기는데&amp;nbsp; 이는 우편으로 치자면 봉투에 적인 내용이라고 볼 수 있다. (Header에는 요청하는 쪽의 schema 도메인, 그리고 포트가 담긴다. )&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;origin에서 보낸 출처값이 서버에 답장 헤더에 담긴 Access-control-allow-Origin에 똑같이 있으면 안전한 데이터로 간주하고 응답을 받아오게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;토큰등 사용자 식별 정보가 담긴 요청은, 보다 엄격하다.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보내는 측 요청의 옵션에 credentials 항목을 true로 세팅해야 하고,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;받는 쪽에서도 아무 출처나 다 된다는 와일드카드가 아니라, 보내는 쪽의 출처 웹페이지 주소를 정확히 명시한 다음&amp;nbsp; Access-control-allow-credentials 항목을 true로 맞춰줘야 한다. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;( 브라우저에 저장된 쿠키가 나쁘게 쓰일 수 있어서 보다 조건을 높게 갖추어야 함 )&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;▶︎&lt;b&gt; &amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;Simple request&lt;/b&gt; 방식으로 &lt;b&gt;get / post&lt;/b&gt; 등 일정조건의 요청에 사용됨&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;▶︎ &amp;nbsp;&lt;/span&gt;&lt;b&gt;Put / delete 등은&lt;/b&gt; &lt;b&gt;preflight&lt;/b&gt; 요청을 먼저 보내서 본 요청이 안전한지 확인하고 여기서 허락이 떨어져야 요청을 보낼 수 있다. ( 서버에 영향을 줄 수 있는 요청으로 먼저 허용여부 검증이 필요함 )&amp;nbsp;&lt;/span&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;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;첨부 URL : &lt;a href=&quot;https://evan-moon.github.i/2020/05/21/about-cors/&quot;&gt;https://evan-moon.github.i/2020/05/21/about-cors/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1694960118246&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;CORS는 왜 이렇게 우리를 힘들게 하는걸까?&quot; data-og-description=&quot;이번 포스팅에서는 웹 개발자라면 한번쯤은 얻어맞아 봤을 법한 정책에 대한 이야기를 해보려고 한다. 사실 웹 개발을 하다보면 CORS 정책 위반으로 인해 에러가 발생하는 상황은 굉장히 흔해서 &quot; data-og-host=&quot;evan-moon.github.io&quot; data-og-source-url=&quot;https://evan-moon.github.io/2020/05/21/about-cors/&quot; data-og-url=&quot;https://evan-moon.github.io/2020/05/21/about-cors/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/JZq2x/hyTVXaKMs1/efCEFDU0EMqj6DDmSmT7Kk/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/fufRA/hyTY1CyDP8/AW4Easv7LvxjO4SjFCkkBK/img.jpg?width=640&amp;amp;height=682&amp;amp;face=0_0_640_682,https://scrap.kakaocdn.net/dn/7kJFR/hyTY5ybY89/udI34pVPj1HwaNW5XksF50/img.png?width=640&amp;amp;height=414&amp;amp;face=0_0_640_414&quot;&gt;&lt;a href=&quot;https://evan-moon.github.io/2020/05/21/about-cors/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://evan-moon.github.io/2020/05/21/about-cors/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/JZq2x/hyTVXaKMs1/efCEFDU0EMqj6DDmSmT7Kk/img.png?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/fufRA/hyTY1CyDP8/AW4Easv7LvxjO4SjFCkkBK/img.jpg?width=640&amp;amp;height=682&amp;amp;face=0_0_640_682,https://scrap.kakaocdn.net/dn/7kJFR/hyTY5ybY89/udI34pVPj1HwaNW5XksF50/img.png?width=640&amp;amp;height=414&amp;amp;face=0_0_640_414');&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;CORS는 왜 이렇게 우리를 힘들게 하는걸까?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스팅에서는 웹 개발자라면 한번쯤은 얻어맞아 봤을 법한 정책에 대한 이야기를 해보려고 한다. 사실 웹 개발을 하다보면 CORS 정책 위반으로 인해 에러가 발생하는 상황은 굉장히 흔해서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;evan-moon.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&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;1580&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xY3Hw/btsuej4qg3X/1l3O7QpuhgrZDCVKZeNyE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xY3Hw/btsuej4qg3X/1l3O7QpuhgrZDCVKZeNyE1/img.png&quot; data-alt=&quot;프로젝트 진행시 프론트와 연결하면서 위와같은 오류가 발생되었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xY3Hw/btsuej4qg3X/1l3O7QpuhgrZDCVKZeNyE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxY3Hw%2Fbtsuej4qg3X%2F1l3O7QpuhgrZDCVKZeNyE1%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;791&quot; height=&quot;273&quot; data-origin-width=&quot;1580&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;프로젝트 진행시 프론트와 연결하면서 위와같은 오류가 발생되었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;277&quot; data-origin-height=&quot;273&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tzF3i/btsut1nVAsw/AFG6gSKhKzESp9USg6MLXk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tzF3i/btsut1nVAsw/AFG6gSKhKzESp9USg6MLXk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tzF3i/btsut1nVAsw/AFG6gSKhKzESp9USg6MLXk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtzF3i%2Fbtsut1nVAsw%2FAFG6gSKhKzESp9USg6MLXk%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;277&quot; height=&quot;273&quot; data-origin-width=&quot;277&quot; data-origin-height=&quot;273&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #1b1b1b; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Wil을 적기 위해서 CORS를 찾아보면서, 대부분의 제목들이 웃프지만 저러했다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;실제로 팀원들과 프로젝트를 하면서 첨부 이미지와 같이 CORS오류가 나는 것을 보기도 했다. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;(트러블 슈팅에서 가져옴!)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;협업을 하다 보면 심심치 않게 마주하겠지.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;다음 주도 파이팅 해야지! ㅇ ㅏ자!&lt;/span&gt;&lt;/p&gt;</description>
      <category>0. TiL  ( Today I Learned )</category>
      <category>CORS</category>
      <category>express</category>
      <category>Sop</category>
      <category>백엔드</category>
      <category>사이좋게</category>
      <category>지내요</category>
      <category>프로젝트</category>
      <category>프론트</category>
      <category>협업</category>
      <author>2frost</author>
      <guid isPermaLink="true">https://sa-growth-diary.tistory.com/87</guid>
      <comments>https://sa-growth-diary.tistory.com/87#entry87comment</comments>
      <pubDate>Sun, 17 Sep 2023 23:26:33 +0900</pubDate>
    </item>
  </channel>
</rss>