<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>코딩쌀롱</title>
    <link>https://codingsalon.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 14 Apr 2026 18:10:12 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>이브✱</managingEditor>
    <image>
      <title>코딩쌀롱</title>
      <url>https://tistory1.daumcdn.net/tistory/4356938/attach/232a181ef6764839bd5eb671f9a73fac</url>
      <link>https://codingsalon.tistory.com</link>
    </image>
    <item>
      <title>[JS] 이터러블, 이터레이터</title>
      <link>https://codingsalon.tistory.com/130</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;250&quot; data-filename=&quot;JavaScript.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pa9Nt/btrim5JNgE1/suy13NDHwKPgpPYfsukBEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pa9Nt/btrim5JNgE1/suy13NDHwKPgpPYfsukBEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pa9Nt/btrim5JNgE1/suy13NDHwKPgpPYfsukBEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpa9Nt%2Fbtrim5JNgE1%2Fsuy13NDHwKPgpPYfsukBEk%2Fimg.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;250&quot; data-filename=&quot;JavaScript.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #f4ffba; color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;background-color: #f4ffba; color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  이터레이션 프로토콜&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;-&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;/span&gt;&lt;u&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이터러블 프로토콜&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토타입 체인을 통해 상속받은 Symbol.iterator 메서드를 호출하면 이터레이터 프로토콜을 준수한 이터레이터를 반환한다. 이러한 규약을 이터러블 프로토콜이라 하며, 이터러블 프로토콜을 준수한 객체를 이터러블이라 한다. 이터러블은 for...of문으로 순회할 수 있으며 스프레드 문법과 배열 디스트럭처링 할당의 대상으로 사용할 수 있다.&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: 'Noto Sans Light';&quot;&gt;- &lt;u&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이터레이터 프로토콜&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;이터러블의 Symbol.iterator 메서드를 호출하면 이터레이터 프로토콜을 준수한 이터레이터를 반환한다. 이터레이터는 next 메서드를 소유하며 next 메서드를 호출하면 이터러블을 순회하며 value와 done 프로퍼티를 갖는 이터레이터 리절트 객체를 반환한다. 이러한 규약을 이터레이터 프로토콜이라 하며, 이터레이터 프로토콜을 준수한 객체를 이터레이터라 한다. 이터레이터는 이터러블의 요소를 탐색하기 위한 포인터 역할을 한다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #f4ffba; color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  이터러블&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&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;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- Symbol.iterator가 구현된 객체 (&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토타입 체인을 통해 상속받거나)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- &lt;span&gt;빌트인 이터러블 : 문자열, 배열, Map, Set, TypedArray, arguments, DOM컬렉션(NodeList, HTMLCollection)&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: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #ef6f53; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;배열&lt;/span&gt; : Array.prototype의 Symbol.iterator 메서드를 상속받는 이터러블&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; &amp;nbsp; &amp;nbsp; &amp;rArr; for...of, spread, destructuring 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #ef6f53; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;객체&lt;/span&gt; : Symbol.iterator 메서드를 직접 구현하지 않거나 상속받지 않았다면 이터러블X&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; &amp;nbsp; &amp;nbsp; &amp;rArr; for...of, destructuring 불가 &lt;span&gt;(spread는 가능)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #f4ffba; color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  이터레이터&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 이터러블의 Symbol.iterator 반환값&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- next 메서드를 갖는다&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: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;next&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: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 호출 : 이터러블을 순차적으로 한 단계씩 순회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 반환값 : 순회 결과를 나타내는 iterator result object&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp; &amp;nbsp; - 형태 : value, done 프로퍼티를 갖는 객체&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1634709094133&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const array = [1, 2];
const iterator = array[Symbol.iterator]();
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: undefined, done: true }&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #f4ffba; color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  for...of문&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;for...of가 시작되자마자 Symbol.iterator를 호출next 메서드가 있는 iterator를 반환해야 함&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;Symbol.iterator가 없으면 에러 발생&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;내부적으로 iterator의 next 메서드를 호출하면서 이터러블 순회&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;next 메서드가 반환한 iterator result object의 value 프로퍼티 값을 for ... of 문 변수에 할당&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;iterator result object의 done 프로퍼티 값이 false이면 순회 진행&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;iterator result object의 done 프로퍼티 값이 true이면 순회 중단&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #f4ffba; color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  유사 배열 객체 &amp;nbsp;&lt;/span&gt;&lt;/h4&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;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;숫자형식 문자열을 프로퍼티 키로 가짐 &amp;rarr; 배열처럼 인덱스로 프로퍼티 값에 접근 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;length 프로퍼티를 갖는 객체 &amp;rarr; for문 순회 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;유사배열객체는 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #ef6f53;&quot;&gt;이터러블이 아닌 일반 객체&lt;/span&gt;다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;Symbol.iterator 메서드가 없어 for...of문 순회 불가&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;&lt;u&gt;arguments, NodeList, HTMLCollection&lt;/u&gt; &lt;span style=&quot;color: #ef6f53;&quot;&gt;유사배열객체이면서 이터러블&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;ES6에서 이터러블이 도입되면서 위 객체들에 Symbol.iterator 메서드를 구현했고 이터러블이 되었다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #f4ffba; color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;  이터레이션 프로토콜의 필요성 &amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;ES6에서는 순회 가능한 데이터 컬렉션을 이터레이션 프로토콜을 준수하는 이터러블로 통일하여 for...of문, 스프레드 문법, 배열 디스트럭처링 할당의 대상으로 사용할 수 있도록 일원화했다.&lt;/span&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;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;만약 다양한 데이터 공급자(배열, 문자열, Map,...)가 각자의 순회 방식을 갖는다면 데이터 소비자(for...of, spread,...)는 다양한 데이터 공급자의 순회방식을 모두 지원해야 한다. &amp;rarr; 비효율&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;다양한 데이터 공급자가 이터레이션 프로토콜을 준수하도록 규정한다면 데이터 소비자는 이터레이션 프로토콜만 지원하도록 구현하면 된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;다양한 데이터 공급자가 하나의 순회 방식을 갖도록 규정하여 데이터 소비자가 효율적으로 다양한 데이터 공급자를 사용할 수 있도록 데이터 소비자와 데이터 공급자를 연결하는 인터페이스의 역할을 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;참고&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;책 - 모던 자바스크립트 Deep Dive (p.614 ~ p.621)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;링크 - &lt;a href=&quot;https://ko.javascript.info/iterable&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;모던 JavaScript 튜토리얼&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발공부</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/130</guid>
      <comments>https://codingsalon.tistory.com/130#entry130comment</comments>
      <pubDate>Wed, 20 Oct 2021 15:08:15 +0900</pubDate>
    </item>
    <item>
      <title>레오폴드 fc980c 45g 균등 리뷰 </title>
      <link>https://codingsalon.tistory.com/129</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;510&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-5.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpMRb9/btrfXxWfjgs/UgnzZS0U9IOwjBFoBqEuh1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpMRb9/btrfXxWfjgs/UgnzZS0U9IOwjBFoBqEuh1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpMRb9/btrfXxWfjgs/UgnzZS0U9IOwjBFoBqEuh1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpMRb9%2FbtrfXxWfjgs%2FUgnzZS0U9IOwjBFoBqEuh1%2Fimg.jpg&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;510&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-5.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;레오폴드 fc980c 키보드를 새로 샀다!!&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;뭘 살까 고민 &lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&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;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;리더스키에서 타건해봤을 때 느낀 점은..&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;생각보다 토프레 별 거 없다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;데프콘 유튜브에서 봤던 것처럼 레오폴드의 스페이스는 경박 그 자체.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예상대로 35g은 너무너무 가볍다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;55g이 생각보다 괜찮은데?!&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;저소음이 많아 일반 모델을 다양한 키압, 브랜드로는 타건을 못했다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&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;size16&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;size16&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;선택할 수 있는 건 두 가지였음 저소음 fc660c, 일반 fc980c&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이미 쓰던 키가 없는 미니보단 차라리 안 쓰는 텐키가 있는 fc980c를 선택했다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;보다보면 980c 배열이 매력이 나름 있음ㅎㅎ 또 결정적으로 저소음이 싫었다&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;개봉 &lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;569&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-8.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxWbpu/btrfRnVhDka/dq2bZNbK9uRN2yYuslA5EK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxWbpu/btrfRnVhDka/dq2bZNbK9uRN2yYuslA5EK/img.jpg&quot; data-alt=&quot;esc 포인트 키캡은 레오폴드에서 살 때 같이 주문했다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxWbpu/btrfRnVhDka/dq2bZNbK9uRN2yYuslA5EK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxWbpu%2FbtrfRnVhDka%2Fdq2bZNbK9uRN2yYuslA5EK%2Fimg.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;569&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-8.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;esc 포인트 키캡은 레오폴드에서 살 때 같이 주문했다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;size16&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;size16&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;타건⌨️&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;600&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-4.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKi6jy/btrfV9VNw5v/0JtLaAQhEWJn64iS9QKEh1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKi6jy/btrfV9VNw5v/0JtLaAQhEWJn64iS9QKEh1/img.jpg&quot; data-alt=&quot;드보키 썸넬 감성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKi6jy/btrfV9VNw5v/0JtLaAQhEWJn64iS9QKEh1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKi6jy%2FbtrfV9VNw5v%2F0JtLaAQhEWJn64iS9QKEh1%2Fimg.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;600&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-4.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;드보키 썸넬 감성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;타건해봤을 땐 입꼬리가 절로 그냥 올라감 &amp;nbsp; 리더스키에서 타건해봤을 때랑 아예 다름 기분차이인걸까..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&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;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;걱정했던 &lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;스테빌&lt;/b&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: 'Noto Sans Light'; color: #333333;&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;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;기존 갖고있는 엠스톤 45g 갈축이 넘 가벼운 느낌이라 걱정했는데 딱 적당한 키압인 듯&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&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;font-family: 'Noto Sans Light'; color: #333333;&quot;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;키캡 &lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;600&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-3.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7IYLa/btrfU239U7C/NPTL2UUuqWFMI7LuUZEn40/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7IYLa/btrfU239U7C/NPTL2UUuqWFMI7LuUZEn40/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7IYLa/btrfU239U7C/NPTL2UUuqWFMI7LuUZEn40/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7IYLa%2FbtrfU239U7C%2FNPTL2UUuqWFMI7LuUZEn40%2Fimg.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;600&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-3.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;포인트 키캡을 중고나라에서 샀다. 토프레 키캡은 판매가 많지 않아 중고 거래를 많이 하는 듯. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;esc가 빨간색이라 방향키는 블루나 퍼플로 하고 싶었는데 마침 중고로 올라와 바로 구매했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;좋은 가격은 아니었음..토프레는 키캡도 비싸 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&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;imageblock alignCenter&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;640&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-2.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chTCmH/btrf3tyV6nR/BQfiYNnE8Zq45D1ZDKKRtk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chTCmH/btrf3tyV6nR/BQfiYNnE8Zq45D1ZDKKRtk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chTCmH/btrf3tyV6nR/BQfiYNnE8Zq45D1ZDKKRtk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchTCmH%2Fbtrf3tyV6nR%2FBQfiYNnE8Zq45D1ZDKKRtk%2Fimg.jpg&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;640&quot; data-filename=&quot;KakaoTalk_Photo_2021-09-25-19-19-30-2.jpeg&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;awsd 퍼플도 갖고싶다 &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;</description>
      <category>아무것</category>
      <category>fc980c</category>
      <category>레오폴드</category>
      <category>토프레</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/129</guid>
      <comments>https://codingsalon.tistory.com/129#entry129comment</comments>
      <pubDate>Sun, 26 Sep 2021 02:06:57 +0900</pubDate>
    </item>
    <item>
      <title>네이버 인턴 1주 회고</title>
      <link>https://codingsalon.tistory.com/128</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;304&quot; data-filename=&quot;공부.gif&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lJXZJ/btrcb8s3smv/6Id8Iy4kFmIe0kT7wMwfuK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lJXZJ/btrcb8s3smv/6Id8Iy4kFmIe0kT7wMwfuK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lJXZJ/btrcb8s3smv/6Id8Iy4kFmIe0kT7wMwfuK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/lJXZJ/btrcb8s3smv/6Id8Iy4kFmIe0kT7wMwfuK/img.gif&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;304&quot; data-filename=&quot;공부.gif&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; background-color: #f4ffba;&quot;&gt;✱어려웠던 것&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;-&lt;span style=&quot;color: #ef6f53; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; typescript + babel&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;둘 다 컴파일링을 한다. 타입스크립트는 TypeScript &amp;rarr; JavaScript. 바벨은 JavaScript &amp;nbsp;&amp;rarr; ES5 이전 JavaScript. 이 둘을 같이 환경설정하는 데 뭔가 확실하게 와닿지 않는 느낌이랄까..이렇게 하는 게 맞는 것 같긴한데 맞는 거겠지? 이런 느낌.. 일단 바벨에 컴파일링을 모두 맡겼다. ts-loader를 사용하지 않고 preset-typescript를 사용했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;-&lt;span style=&quot;color: #ef6f53; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; tsconfig, eslint 설정 파일 옵션들&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;환경설정을 하다보면 옵션들이 매우 많다. 찾아보면서 이건 뭐지, 저건 뭐지 하면서 이해하는 데에도 정신이 없고, 이게 필요할까 없어도 상관없지 않나하는 고민들도 많이 든다. 공식문서를 봐도 이해가 잘 안 되는 옵션들도 많았고, 구글링으로도 확 와닿지 않는 것들도 조금 있었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- &lt;span style=&quot;color: #ef6f53; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;짬뽕&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp;환경설정을 할 때 번들러, 컴파일러, 포매터 등 결합해서 사용하기 때문에 어떻게 같이 이것들이 돌아가는지 이해하기 어려웠고, 또 학습하는 면에서는 머리 속에서 짬뽕이 돼서 이 옵션이 어떤 것에 있던 옵션이더라..라는 생각도 자주 했다ㅋㅋㅋ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; background-color: #f4ffba;&quot;&gt;✱좋았던 것&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;확실히 와닿을만큼 제대로 이해한 느낌은 아니지만..그래도 직접 설정해보면서 전반적으로 배우게 된 것이 정말 많았다. 개발 환경 설정을 하는 일주일동안 열심히 찾아보고 공부했다. &lt;span&gt;설정파일을 작성할 때 복붙이 아니라, 어떤 것들을 설치할지, 어떤 옵션들이 필요할지를 찾아보면서 '이게 하는 역할이 뭐지? 필요할까?'라는 생각으로 설정 파일을 작성했다. 진행 속도는 느렸지만 그만큼 많은 것들을 찾아보고 공부했다. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;힘들었지만 뿌듯하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; background-color: #f4ffba;&quot;&gt;✱느낀 점&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&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;size18&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;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;size18&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;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>회고/회고</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/128</guid>
      <comments>https://codingsalon.tistory.com/128#entry128comment</comments>
      <pubDate>Mon, 16 Aug 2021 19:51:46 +0900</pubDate>
    </item>
    <item>
      <title>네이버 인턴 합격과 다짐</title>
      <link>https://codingsalon.tistory.com/127</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;178&quot; data-origin-height=&quot;148&quot; data-filename=&quot;네이버.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QpPWa/btra8zEshlU/4tK3mqqawrjEQPWav52ZGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QpPWa/btra8zEshlU/4tK3mqqawrjEQPWav52ZGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QpPWa/btra8zEshlU/4tK3mqqawrjEQPWav52ZGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQpPWa%2Fbtra8zEshlU%2F4tK3mqqawrjEQPWav52ZGK%2Fimg.png&quot; data-origin-width=&quot;178&quot; data-origin-height=&quot;148&quot; data-filename=&quot;네이버.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;font-family: 'Noto Sans Light';&quot;&gt;질문에 대답 못 한 게 많았어서 기대를 하지 않으려고..노력했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;size16&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;size16&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &amp;zwj;♀️&lt;span style=&quot;color: #333333;&quot;&gt;목표&lt;/span&gt; &amp;zwj;♂️&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; background-color: #f4ffba;&quot;&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: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;밤낮이 바뀐 생활패턴을 오래 가지고 있었는데&lt;span style=&quot;color: #1ebe15;&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: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #1ebe15;&quot;&gt;운동&lt;/span&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;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; background-color: #f4ffba;&quot;&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: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;매일, 매주 해야하는 &lt;span style=&quot;color: #1ebe15;&quot;&gt;투두리스트&lt;/span&gt;를 정해 꾸준히 하자 (TIL, 알고리즘, 플젝, 강의, 독서 ...)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;어떻게 해야 &lt;span style=&quot;color: #1ebe15;&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;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; background-color: #f4ffba;&quot;&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: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;배운 것, 느낀 점들을 &lt;span style=&quot;color: #1ebe15;&quot;&gt;TIL로 기록&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;매주 &lt;span style=&quot;color: #1ebe15;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>회고/하루 기록</category>
      <category>네이버 인턴</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/127</guid>
      <comments>https://codingsalon.tistory.com/127#entry127comment</comments>
      <pubDate>Thu, 5 Aug 2021 04:04:48 +0900</pubDate>
    </item>
    <item>
      <title>기술 아티클 읽고 메모 _8월</title>
      <link>https://codingsalon.tistory.com/126</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;8월&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;4일&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;자바스크립트에 private이 있다고 착각했었는데, OOP 공부하다 자바의 클래스 코드들에서 private을 본 거랑 헷갈린 것 같다. 자바스크립트의 static이랑도 헷갈린 듯.. 그래서 찾아보다보니 몰랐던 private, protected에 대해 알게되었다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;객체 지향 프로그래밍에서 두 그룹으로 분류가 되는데, &lt;u&gt;internal interface&lt;/u&gt;는 동일 클래스 내에서 접근 가능, 밖에선 접근 불가. &lt;u&gt;external interface&lt;/u&gt;는 클래스 밖에서도 접근 가능한 프로퍼티와 메서드!&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;font-family: 'Noto Sans Light';&quot;&gt;- &lt;span style=&quot;color: #ef6f53; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;protected 필드&lt;/span&gt;: private과 비슷하지만, 자손 클래스에서도 접근이 가능하다는 점이 다르다. 내부 인터페이스를 만들 때 유용. 자손 클래스의 필드에 접근해야 하는 경우가 많아 private 필드보다 광범위하게 사용된다. _로 시작하는 것이 관습&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: #9d9d9d;&quot;&gt;+ 카일의 코드에서 _observers에 왜 언더바를 붙이나 궁금했었는데 protected 프로퍼티 명 앞엔 밑줄_이 붙는 게 관습이라고 한다. 이 글을 보고 알았다. 외부 접근이 불가능한 프로퍼티나 메서드를 나타날 때 앞에 밑줄을 붙이기!&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;-&lt;span style=&quot;color: #ef6f53; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; private 필드&lt;/span&gt;: 프로퍼티와 메서드가 #으로 시작. #이 붙으면 클래스 안에서만 접근 가능하다. #은 자바스크립트에서 지원하는 문법으로, private 필드를 의미한다. 클래스 외부나 자손 클래스에서 접근할 수 없다. (private필드는 public 필드와 상충X, 다른 것으로 간주)&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: 'Noto Sans Light';&quot;&gt;아직 익숙하지 않지만 필요한 적절한 때에 꼭 사용해보고 싶다! MDN에서 찾아보니까 static이랑 같이 쓰는 예제가 많이 있다. publicStatic, privateStatic으로 나뉘는 것 같은데 예제가 잘 나와있다. 잘 이해한 건진 모르겠지만 static + private 기능을 합친 느낌이다. 인스턴스가 아닌 클래스로만 접근 가능하면서 직접 접근이 안 되는 것이 privateStatic인듯.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;a href=&quot;https://ko.javascript.info/private-protected-properties-methods&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;private, protected 프로퍼티와 메서드&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes/Private_class_fields&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MDN - Private class fields&lt;/a&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;5일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #ef6f53; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;동시성&lt;/span&gt;&lt;span style=&quot;color: #333333;&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: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;rarr; 메인 스레드를 블록X&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;rarr; 동시에 여러 작업들을 처리하고, 우선 순위에 따라 각 작업들 간에 전환 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;rarr; 최종 결과로 확정하지 않고도 부분적으로 트리를 렌더링&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;(해당 글의 그리드 예시에서) 사용자 경험 개선을 위해서는 사용자 입력에 우선 순위를 부여하고, 그리드 렌더링은 후순위로 고려해야 한다. 렌더링 과정이 더 이상 스레드를 블록하지 않으므로, &lt;span style=&quot;color: #ef6f53;&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: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;u&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;useDeferredValue&lt;/span&gt;&lt;/u&gt;: &quot;이 상태에 의존하는 컴포넌트라면 좀 나중에 렌더링해도 괜찮아&quot; 주어진 시간 전에 준비가 끝나면 DOM에 적용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;u&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;Suspense&lt;/span&gt;&lt;/u&gt;: 플레이스 홀더를 표시할 간단한 문법 제공&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;u&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;SuspenseList&lt;/span&gt;&lt;/u&gt;: 여러 Suspense 컴포넌트들을 감쌀 수 있는 컴포넌트. 자식들의 표시 순서 제어&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;u&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;useTransition&lt;/span&gt;&lt;/u&gt;: DOM에 변동 사항을 적용하기 전에 데이터가 모두 준비될 때까지 기다림.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;a href=&quot;https://medium.com/swlh/what-is-react-concurrent-mode-46989b5f15da&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;What is React Concurrent Mode?&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://velog.io/@cadenzah/react-concurrent-mode#usedeferredvalue&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;What is React Concurrent Mode? 번역 - velog&lt;/a&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;8일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;순환 참조(Circular Dependancy)&lt;/span&gt; 문제에 대해 아직 겪어보지 않아 몰랐었다. 찾아보니 겪게 되면 꽤나 오래 고생할 수 있는 문제인 듯 하다..무섭 &amp;nbsp; 순환 참조가 존재하는 경우에는 모듈의 평가(코드를 처음부터 끝까지 읽는 것) 순서가 중요하다. 순환 참조 문제는 모듈의 평가 순서를 정해주면 대부분 해결된다. Michel Weststrate의 방법으로는 모듈의 평가 순서를 정의하는 파일을 따로 만드는 것. 규모가 큰 프로젝트에서는 어려운 일.. common 등의 이름을 가진 폴더로 공통 모듈을 모아 모듈의 평가 순서를 정해주면 순환 참조 문제의 상당 부분을 해결할 수 있다고 한다. 웹팩에 circular-dependecy-plugin로 미리 발견해 예방할 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;지금까지 별 생각없이 import를 사용했었는데 앞으로는 모듈의 평가 순서를 생각하면서 짜야겠다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://ljs0705.medium.com/js-%EB%AA%A8%EB%93%88-%EC%8B%9C%EC%8A%A4%ED%85%9C%EA%B3%BC-%EC%88%9C%ED%99%98-%EC%B0%B8%EC%A1%B0-%EB%AC%B8%EC%A0%9C-a9e0c90c07e5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JS 모듈 시스템과 순환 참조 문제&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://jeonghwan-kim.github.io/dev/2020/03/24/circular-dependancy.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;순환 참조&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://rinae.dev/posts/fix-circular-dependency-kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[번역] 자바스크립트 &amp;amp; 타입스크립트의 순환 참조를 한 방에 해결하는 방법&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발공부</category>
      <category>아티클</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/126</guid>
      <comments>https://codingsalon.tistory.com/126#entry126comment</comments>
      <pubDate>Thu, 5 Aug 2021 03:42:07 +0900</pubDate>
    </item>
    <item>
      <title>2021.7.26(mon)_네이버 인턴 면접 후기</title>
      <link>https://codingsalon.tistory.com/125</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;250&quot; data-filename=&quot;daily_log.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PXVjm/btraHrNodJa/zjqiRS1NZ7oXbuMKYJuG8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PXVjm/btraHrNodJa/zjqiRS1NZ7oXbuMKYJuG8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PXVjm/btraHrNodJa/zjqiRS1NZ7oXbuMKYJuG8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPXVjm%2FbtraHrNodJa%2FzjqiRS1NZ7oXbuMKYJuG8k%2Fimg.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;250&quot; data-filename=&quot;daily_log.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;개발 공부를 시작하고 처음으로 면접을 봤다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;준비하면서 공부할 시간이 더 있으면 좋겠다고 생각하기도 했지만 한편으로는 빨리 끝나서 계획한 공부들을 하고 싶다는 생각도 있었다. &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;면접 보기 전 이야기를 먼저 하자면,&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt; &amp;nbsp; 이력서 제출은 코드스쿼드 프로젝트 3가지를 노션으로 적어냈다. 어떤 것들을 어떻게 구현했는지 간단하게 적고, 프로젝트를 진행하면서 했던 고민들을 적었다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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: 'Noto Sans Light'; color: #333333;&quot;&gt; &amp;nbsp; 코딩 테스트는 3문제가 나왔었는데 어렵지 않았다. 부스트캠프 코테보다 훨씬 쉽게 나왔었음&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: #333333;&quot;&gt;면접 준비&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp;코드스쿼드가 끝나고 긴 휴식을 가졌어서 면접 메일이 왔을 때 기쁘지만 당황하기도 했다. 면접 날짜가 바로 다음 날이 될 수도 있는 상황이어서 왜 그렇게 쉬었을까 하는 후회를 엄청 했다 &amp;nbsp; 다음 날 면접 날짜 안내 메일이 왔고 다행히 면접은 일주일 뒤였다. 그 때부터 네이버&amp;nbsp; 면접 후기들을 다 찾아보고 프론트엔드 면접에 대한 글들을 많이 찾아봤다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;다음은 찾아보고 공부했던 것들이다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- 브라우저 (주소창에 url입력 후 과정, 브라우저 렌더링..)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- 자바스크립트&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- 네트워크 (HTTP, TCP..)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- 프로젝트에서 사용했던 것들 ( React, Recoil..)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- 이력서 관련 (JWT, OAuth, 로그인 인증 방법들..)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- 프로젝트 코드들 복기&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;첫 면접이라 이전에 미리 스크립트를 준비해놓은 것들이 없고, 공부할 건 너~~무 많아서 힘들었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;꼬리 질문이 깊게 들어오면 잘 대답해야할텐데.. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt; 2시간 면접이라 라이브 코딩을 시키지 않을까..&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: 'Noto Sans Light'; color: #333333;&quot;&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: 'Noto Sans Light'; color: #333333;&quot;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;면접&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;면접은 1:1로 2세션으로 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;size18&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&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;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp;첫 번째 세션에서는 면접관님이 굉장히 친절하셨다. 계속 웃으시면서 말씀해주셨고, 긴장 풀라고도 말씀해주셨고, 모르겠다고 답변을 할 때는 너무 마음쓰지 말라는 말까지도 해주셨다. 대화를 하는 느낌으로 면접을 했고 그 분이랑 같이 일할 수 있다면 좋겠다는 생각도 들었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp;첫 번째 질문은 자기소개는 식상하니까 다른 질문을 주시겠다고 했다. 의류쪽 전공이신데 어떻게 개발쪽 일을 하게 됐는지에 대한 질문이었다. 그 다음부터는&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt; 코드스쿼드에서 공부했던 것들, 제출했던 이력서 기반 질문, 준비하신 몇 가지 질문들을 하셨다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&amp;nbsp; 이력서 내용 중 JWT디코딩에 관한 고민이 있었는데 그래서 JWT에 대한 질문, 로그인 인증 방식 들에 대한 비교 질문을 받았다. 이력서에 적은 내용이라 예상했던 질문들이었다. 이력서에 기술 관련한 것들을 적으면 질문을 받을 확률이 높아 예상 질문을 준비하는 데 좋을 것 같다.&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;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt; &amp;zwj;  두 번째 세션&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;온리 100% 기술 역량 질문들. 브라우저, 자바스크립트, 자료구조, 이런 상황일 때 어떻게 되는지 등등. 아주 짧은 5줄 이하 라이브코딩도 있었다. 심지어 이건 공부해놔야지 해놓고 다른 것들 하느라 못 했었는데 그게 나왔다...에휴!! &amp;nbsp; 풀긴 했지만 아는 사람이라면 보자마자 휘리릭 코드치고 엔터! 할 거였는데 에휴!!! 속상해 &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&amp;nbsp;질문들로는 프론트엔드 면접 질문으로 많이 나오는 것들이 실제로 나왔다. 그리고 이런 질문들도 나오네? 하는 것들도 있었는데 공부하면서 지나칠 수 있지만 궁금해서 찾아볼만한 것들, 또 개념에서 한층 더 깊은 질문들이 나왔다. 그리고 뒤로 갈수록 난이도가 매우 올라갔다.. 모르겠습니다를 몇 번 했나.. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;느낀 것들&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&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;size16&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>회고/하루 기록</category>
      <category>네이버 면접</category>
      <category>네이버 인턴</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/125</guid>
      <comments>https://codingsalon.tistory.com/125#entry125comment</comments>
      <pubDate>Wed, 28 Jul 2021 19:06:33 +0900</pubDate>
    </item>
    <item>
      <title>2021.7.24(sat)_TypeScript + useReducer</title>
      <link>https://codingsalon.tistory.com/124</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;250&quot; data-filename=&quot;daily_log_노트북.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xA587/btraqsFVg5q/ddURRIcf4S2Our855VVSuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xA587/btraqsFVg5q/ddURRIcf4S2Our855VVSuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xA587/btraqsFVg5q/ddURRIcf4S2Our855VVSuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxA587%2FbtraqsFVg5q%2FddURRIcf4S2Our855VVSuK%2Fimg.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;250&quot; data-filename=&quot;daily_log_노트북.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;font-family: 'Noto Sans Light';&quot;&gt;원인을 모를 때는 정말 모르겠다가 원인을 알고 해결하고 보면 꼭 별 거 아니고 당연한 것을 못 알아챘다는 생각이 든다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;  useReducer를 사용한 곳에서 오류 발생&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;299&quot; data-filename=&quot;스크린샷 2021-07-25 오전 12.09.19.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qj9ry/btrastLvQ7A/nms6a34OrVq45dEEzujIt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qj9ry/btrastLvQ7A/nms6a34OrVq45dEEzujIt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qj9ry/btrastLvQ7A/nms6a34OrVq45dEEzujIt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqj9ry%2FbtrastLvQ7A%2Fnms6a34OrVq45dEEzujIt1%2Fimg.png&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;299&quot; data-filename=&quot;스크린샷 2021-07-25 오전 12.09.19.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;오류 메시지를 읽어보면 inputReducer의 반환값이 &lt;span style=&quot;color: #ef6f53;&quot;&gt;{...} | undefined&lt;/span&gt;로 되어있다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt; &amp;nbsp;useReducer 함수&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;742&quot; data-filename=&quot;스크린샷 2021-07-25 오전 12.12.48.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceBOr8/btrasuKq5Ja/GYFoOAmp6Ns4SAIsvDyWOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceBOr8/btrasuKq5Ja/GYFoOAmp6Ns4SAIsvDyWOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceBOr8/btrasuKq5Ja/GYFoOAmp6Ns4SAIsvDyWOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceBOr8%2FbtrasuKq5Ja%2FGYFoOAmp6Ns4SAIsvDyWOk%2Fimg.png&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;742&quot; data-filename=&quot;스크린샷 2021-07-25 오전 12.12.48.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;useReducer 내부는 switch문으로 되어 있고, action.type은 'title', 'description', 'color'로 세 경우가 있다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;어떻게하면 반환값이 undefined일 가능성이 있을까.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;action.type이 &lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;'title', 'description', 'color'이 아닌 경우!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span&gt;그래서 순간 switch문에 default를 추가할까했다..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span&gt;하지만 case는 딱 문자열 세 가지뿐이기 때문에 type 지정을 바꿔주면 된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;104&quot; data-filename=&quot;스크린샷 2021-07-25 오전 12.19.00.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qFVhc/btraqSEMbPq/uAsKkNRz2XycV1O2dJ8IOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qFVhc/btraqSEMbPq/uAsKkNRz2XycV1O2dJ8IOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qFVhc/btraqSEMbPq/uAsKkNRz2XycV1O2dJ8IOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqFVhc%2FbtraqSEMbPq%2FuAsKkNRz2XycV1O2dJ8IOK%2Fimg.png&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;104&quot; data-filename=&quot;스크린샷 2021-07-25 오전 12.19.00.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>회고/하루 기록</category>
      <category>useReducer</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/124</guid>
      <comments>https://codingsalon.tistory.com/124#entry124comment</comments>
      <pubDate>Sun, 25 Jul 2021 00:20:52 +0900</pubDate>
    </item>
    <item>
      <title>[Web&amp;brvbar;Browser] DOM, CSSOM, Render Tree</title>
      <link>https://codingsalon.tistory.com/123</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;251&quot; data-filename=&quot;web_browser.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R5Q0E/btq99nx4ORn/1TRtIeAdfMGdnem6E6Rey0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R5Q0E/btq99nx4ORn/1TRtIeAdfMGdnem6E6Rey0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R5Q0E/btq99nx4ORn/1TRtIeAdfMGdnem6E6Rey0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR5Q0E%2Fbtq99nx4ORn%2F1TRtIeAdfMGdnem6E6Rey0%2Fimg.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;251&quot; data-filename=&quot;web_browser.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://developers.google.com/web/fundamentals/performance/critical-rendering-path/constructing-the-object-model?hl=ko&quot;&gt;Critical Rendering Path | Constructing the Object Model&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-tree-construction?hl=ko&quot;&gt;Critical Rendering Path | Render-Tree Construction, Layout, and Paint&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위 글을 읽으면서 정리했다.&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;1. DOM(Document Object Model)&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;470&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lzDbz/btraax1vR1z/4BUWwWuzffVpEBpUlVdEDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lzDbz/btraax1vR1z/4BUWwWuzffVpEBpUlVdEDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lzDbz/btraax1vR1z/4BUWwWuzffVpEBpUlVdEDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlzDbz%2Fbtraax1vR1z%2F4BUWwWuzffVpEBpUlVdEDK%2Fimg.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;470&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;1. &lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;변환&lt;/b&gt;&lt;/span&gt;: 브라우저가 HTML의 원시 바이트를 읽어와서, 파일에 지정된 인코딩(UTF-8)에 따라 개별 문자로 변환&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;2. &lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;tokenize&lt;/b&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: 'Noto Sans Light'; color: #333333;&quot;&gt;3. &lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;lexing&lt;/b&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: 'Noto Sans Light'; color: #333333;&quot;&gt;4. &lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;DOM 생성&lt;/b&gt;&lt;/span&gt;: HTML 마크업이 여러 태그 간의 관계를 정의하기 때문에 생성된 객체는 트리 데이터 구조 내에 연결&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;이 전체 프로세스의 최종 출력이 바로 이 간단한 페이지의 DOM(Document Object Model)이며, 브라우저는 이후 모든 페이지 처리에 이 DOM을 사용한다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;2. CSSOM(CSS Object Model)&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- 브라우저는 DOM 생성하는 동안 CSS 스타일시트 링크 태그를 접하고 리소스에 대해 요청한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- HTML을 DOM 트리로 만든 것처럼, CSS도 브라우저가 이해하고 처리할 수 있도록 변환해줘야 한다. HTML과 같은 과정을 반복한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;71&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lHLmX/btq91OEnDrR/R9bit2ZFHqUpyFnJxh1Qe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lHLmX/btq91OEnDrR/R9bit2ZFHqUpyFnJxh1Qe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lHLmX/btq91OEnDrR/R9bit2ZFHqUpyFnJxh1Qe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlHLmX%2Fbtq91OEnDrR%2FR9bit2ZFHqUpyFnJxh1Qe1%2Fimg.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;71&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333;&quot;&gt;3. Render Tree&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- Render Tree: 화면에 표시되어야 할 모든 노드의 컨텐츠, 스타일 정보를 포함하는 트리&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;384&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2i4wC/btq96EVaAYG/KDfP5cRNfDNzYjkELKlpM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2i4wC/btq96EVaAYG/KDfP5cRNfDNzYjkELKlpM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2i4wC/btq96EVaAYG/KDfP5cRNfDNzYjkELKlpM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2i4wC%2Fbtq96EVaAYG%2FKDfP5cRNfDNzYjkELKlpM0%2Fimg.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;384&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- DOM, CSSOM 결합되어 형성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 페이지를 렌더링하는 데 필요한 노드만 포함&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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: 'Noto Sans Light'; color: #333333;&quot;&gt;- display: none 속성은 요소가 보이지 않으며 레이아웃에 포함되지 않도록 렌더링 트리에서 요소 완전 제거&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- visibility: hidden 속성은 요소를 보이지 않게 만들지만, 여전히 레이아웃에서 공간을 차지(비어있는 상자로 렌더링)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;- 최종 출력은 화면에 표시되는 모든 노드의 콘텐츠, 스타일 정보를 모두 포함하는 렌더링 트리. 렌더링 트리가 생성되었으므로 레이아웃 단계로 진행할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;렌더 트리 생성&lt;/b&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: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;레이아웃(리플로우)&lt;/b&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: 'Noto Sans Light'; color: #333333;&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;페인팅(래스터화)&lt;/b&gt;&lt;/span&gt;: 렌더링 트리의 각 노드를 화면의 실제 픽셀로 변환하는 마지막 단계&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발공부</category>
      <category>CSSOM</category>
      <category>dom</category>
      <category>Render Tree</category>
      <category>렌더링 과정</category>
      <category>브라우저</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/123</guid>
      <comments>https://codingsalon.tistory.com/123#entry123comment</comments>
      <pubDate>Wed, 21 Jul 2021 09:06:31 +0900</pubDate>
    </item>
    <item>
      <title>[Web&amp;brvbar;Browser] 브라우저 주소창에 URL 입력 후의 과정</title>
      <link>https://codingsalon.tistory.com/122</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;251&quot; data-filename=&quot;web_browser.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4z4N1/btq91Nd8IAI/U467migBEE4lW27EqTEETk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4z4N1/btq91Nd8IAI/U467migBEE4lW27EqTEETk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4z4N1/btq91Nd8IAI/U467migBEE4lW27EqTEETk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4z4N1%2Fbtq91Nd8IAI%2FU467migBEE4lW27EqTEETk%2Fimg.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;251&quot; data-filename=&quot;web_browser.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://medium.com/@maneesha.wijesinghe1/what-happens-when-you-type-an-url-in-the-browser-and-press-enter-bb0aa2449c1a&quot; data-token-index=&quot;1&quot; data-reactroot=&quot;&quot;&gt;Wha&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;t happens when you type a URL in the browser and press enter?&lt;/span&gt;&lt;/a&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;635&quot; data-filename=&quot;스크린샷 2021-06-21 오후 5.16.42.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBvL5R/btrabwIbve4/CQWKAKT2bjhmYTcl0T3SbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBvL5R/btrabwIbve4/CQWKAKT2bjhmYTcl0T3SbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBvL5R/btrabwIbve4/CQWKAKT2bjhmYTcl0T3SbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBvL5R%2FbtrabwIbve4%2FCQWKAKT2bjhmYTcl0T3SbK%2Fimg.png&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;635&quot; data-filename=&quot;스크린샷 2021-06-21 오후 5.16.42.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 주소창에 URL 입력&lt;/span&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 브라우저가 캐시를 체크. (DNS 기록에서 URL과 일치하는 IP 주소를 찾기 위해)&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- DNS란 url과 연결된 ip주소들을 보관하는 데이터베이스. 모든 url은 ip주소가 할당돼있음DNS의 주된 목적은 사람들의 편의를 위한 것. 사이트 이름 URL을 사용함으로써 더 편하게 접근할 수 있다. 정확한 ip주소와 매핑 시켜주는 것이 DNS가 하는 일.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- DNS 기록을 찾기 위해 브라우저는 네 가지 캐시를 체크한다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1) 브라우저 캐시. 브라우저가 이전에 방문했던 사이트의 DNS기록을 일정 시간 보관함&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2) OS 캐시. 브라우저 캐시에 없으면 컴퓨터 OS에 system call한다. OS 또한 DNS 기록을 캐시로 갖고있음&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3) 라우터 캐시. 컴퓨터에도 없으면 라우터와 브라우저는 커뮤니케이션한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4) ISP 캐시. ISP는 kt, sk와 같은 Internet Service Provider를 말함. ISP는 고유의 DNS 서버를 갖고 있다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이렇게 많은 레벨의 캐시가 있는 이유는 네트워크 트래픽 조절과 데이터 전송 시간을 개선하는 데 필수적이기 때문이다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 캐시에서 찾지 못하면, ISP의 DNS 서버는 DNS쿼리를 시작.&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- DNS 쿼리의 목적은 url과 일치하는 ip주소를 찾을 때까지 DNS 서버들을 검색하기 위함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- 도메인 아키텍처를 기반으로 DNS 검색을 재귀적으로 수행&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- root domain &amp;rarr; top-levels domians &amp;rarr; second-level domains &amp;rarr; third-level-domains&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 위 순서로 네임 서버가 리다이렉트되고 마지막 네임서버가 ip주소를 찾아 리턴한다. 이 ip 주소는 브라우저로 보내진다. (콜스택처럼 쌓였다가 마지막에 반환값 쭉쭉 돌아오듯이 인듯)&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. 브라우저가 서버에 TCP 연결 시작&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- 브라우저가 ip 주소를 수신하면 ip 주소와 일치하는 서버와 연결하려고 함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- 서버와 연결하기 위해 인터넷 프로토콜을 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- 여러 프로토콜들이 있지만 HTTP 요청에 가장 보편적인 프로토콜이 TCP이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- TCP/IP three-way handshake를 사용해 연결될 수 있다.(SYN &amp;harr; ACK)&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1) client &amp;rarr; server 연결을 요청하기 위해 SYN패킷 보냄&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2) server &amp;rarr; client 연결을 받을 수 있다면 SYN/ACK 패킷 응답&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3) client &amp;rarr; server 응답 받았음을 ACK패킷을 보내서 알림&lt;/span&gt;&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5. 브라우저가 웹서버에 HTTP 요청 보냄&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- TCP 연결이 되면 데이터 전송을 시작해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- 브라우저는 웹서버에 GET요청을 보냄(form을 보내거나 기밀정보에 들어갈 땐 POST요청)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- 헤더에 여러 정보를 담아 보내고, 브라우저가 도메인에 대해 쿠키를 갖고있다면 쿠키 정보다 전달한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;154&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCpJWN/btq91qjbBSb/k3fG0aqPH7kHhpjBn2kBvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCpJWN/btq91qjbBSb/k3fG0aqPH7kHhpjBn2kBvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCpJWN/btq91qjbBSb/k3fG0aqPH7kHhpjBn2kBvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCpJWN%2Fbtq91qjbBSb%2Fk3fG0aqPH7kHhpjBn2kBvK%2Fimg.png&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;154&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;6. 서버는 요청을 처리해 특정 포맷(json, xml, html)으로 응답을 보냄&lt;/span&gt;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;7. 서버가 HTTP 응답 전송&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Light';&quot;&gt;- 요청한 웹페이지뿐만 아니라 상태 코드, 압축 타입(Content-Encoding), 캐시 방법(Cache-Control), 쿠키, 개인 정보 등을 포함해 응답한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;198&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dah5u/btq96FMUypk/CQh1kfKo8Z2tHTnXq21APK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dah5u/btq96FMUypk/CQh1kfKo8Z2tHTnXq21APK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dah5u/btq96FMUypk/CQh1kfKo8Z2tHTnXq21APK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDah5u%2Fbtq96FMUypk%2FCQh1kfKo8Z2tHTnXq21APK%2Fimg.png&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;198&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;8. 브라우저가 HTML 컨텐츠를 단계적으로 보여준다&lt;/span&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1) HTML 뼈대가 렌더링&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2) 태그를 체크하고 추가 요소에 대한 GET 요청(이미지, CSS파일, JS파일 등)&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3) 정적 파일들은 브라우저에 캐시돼서 다음 번엔 다시 fetch하지 않아도 된다.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발공부</category>
      <category>browser</category>
      <category>브라우저</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/122</guid>
      <comments>https://codingsalon.tistory.com/122#entry122comment</comments>
      <pubDate>Tue, 20 Jul 2021 20:03:48 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode_JS] 75. Sort Colors _array</title>
      <link>https://codingsalon.tistory.com/121</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;250&quot; data-filename=&quot;Solving_algorithm.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uRyjD/btq9RfUQnXj/ph2L0PAWfvKKK7Wc4WphW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uRyjD/btq9RfUQnXj/ph2L0PAWfvKKK7Wc4WphW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uRyjD/btq9RfUQnXj/ph2L0PAWfvKKK7Wc4WphW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuRyjD%2Fbtq9RfUQnXj%2Fph2L0PAWfvKKK7Wc4WphW1%2Fimg.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;250&quot; data-filename=&quot;Solving_algorithm.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;문제&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/sort-colors/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Leetcode Sort Colors 문제&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- input: 숫자 0, 1, 2로 이뤄진 배열&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- output: void, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 주의: 카피하지 않고 nums 배열을 in-place로 swap해서 sort&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;풀이&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;런타임: 71ms / 86.69%&amp;nbsp; &amp;nbsp;(주로 70ms대로 나옴)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;메모리: 38MB / 98.00%&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1626535205469&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var sortColors = function(nums) {
    let zeroP = 0;
    let twoP = nums.length - 1;
    
    for(let i = 0; i &amp;lt; nums.length; i++) {
        if(twoP &amp;lt; i) break;
        else if(nums[i] === 0) {
            nums[i] = nums[zeroP]
            nums[zeroP] = 0;
            zeroP++;
            if(zeroP-1 === i) continue;   // *
        } 
        else if(nums[i] === 2) {
            nums[i] = nums[twoP]
            nums[twoP] = 2;
            twoP--;
        }
        if(nums[i] === 0 || nums[i] === 2) i--;  // **
    }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;zeroP의 왼쪽은 모두 0이고, twoP의 오른쪽은 모두 2만 있을 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;즉, 0 다음 인덱스를 가리키는 포인터가 zeroP이고, 2 이전 인덱스를 가리키는 포인터가 twoP이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;i는 반복문을 돌면서 원소 하나씩 돌면서 체크하고, 0이나 2일 경우 swap한다.&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: 'Noto Sans Light';&quot;&gt;이 때, &lt;span style=&quot;color: #ef6f53;&quot;&gt;(**)swap한 이후 바뀐 값(nums[i])이 또 0이나 2일 수 있다!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt; 그래서 마지막에 if문으로 검사해주고, i가 증가하지 않은 상태에서 한 번 더 swap할 수 있도록 한다.&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: #ef6f53; font-family: 'Noto Sans Light';&quot;&gt;(*)zeroP와 i가 같을 때는 바뀐 nums[i]값이 무조건 0이므로 바로 i++이 될 수 있도록 continue해준다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;(nums[i]값을 if문으로 체크해 i--가 되지 않도록. 즉, i가 그대로인 상태에서 또 체크하지 않도록)&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;리팩토링 전 풀이&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위처럼 풀기 전에, i--하면 i값은 그대로인 상태에서 for문을 한 번 더 돌게 되는데 이걸 생각을 못 하고....&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;함수로 빼서 재귀를 돌도록 했었다..&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1626535975434&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var sortColors = function(nums) {
    let zeroP = 0;
    let twoP = nums.length - 1;
    
    for(let i = 0; i &amp;lt; nums.length; i++) {
        const res = check(nums, i, zeroP, twoP);
        if(!res) break;
        [zeroP, twoP] = res;
    }
};

const check = (nums, i, zeroP, twoP) =&amp;gt; {
    if(twoP &amp;lt; i) return null;
    else if(nums[i] === 0) {
        nums[i] = nums[zeroP]
        nums[zeroP] = 0;
        if(zeroP === i) return [zeroP+1, twoP];
        zeroP++;
    } 
    else if(nums[i] === 2) {
        nums[i] = nums[twoP]
        nums[twoP] = 2;
        twoP--;
    }
    if(nums[i] === 0 || nums[i] === 2) check(nums, i, zeroP, twoP)
    return [zeroP, twoP];
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;코드가 지저분할 뿐더러 런타임은 72~124까지 왔다갔다하고, 메모리는 7%..;;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;size16&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;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;size18&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;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;유튜브 - &lt;a href=&quot;https://www.youtube.com/watch?v=VJWUWolxHu0&amp;amp;list=PLDV-cCQnUlIYFOXYzqLoXnEye4WxDa_30&amp;amp;index=7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코드없는 프로그래밍 Sort Colors&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발공부</category>
      <category>array</category>
      <category>leetcode</category>
      <category>알고리즘</category>
      <author>이브✱</author>
      <guid isPermaLink="true">https://codingsalon.tistory.com/121</guid>
      <comments>https://codingsalon.tistory.com/121#entry121comment</comments>
      <pubDate>Sun, 18 Jul 2021 00:37:42 +0900</pubDate>
    </item>
  </channel>
</rss>