<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Normal</title>
    <link>https://yeoulcoding.tistory.com/</link>
    <description>Normal Engineer, Economist, Antifragilist</description>
    <language>ko</language>
    <pubDate>Sun, 28 Jun 2026 00:24:38 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>여울코딩</managingEditor>
    <image>
      <title>Normal</title>
      <url>https://tistory1.daumcdn.net/tistory/3006502/attach/c47b5c8ac6eb429f85582d16ca757f58</url>
      <link>https://yeoulcoding.tistory.com</link>
    </image>
    <item>
      <title>이익을 향해 달려나가는 사람의 본성</title>
      <link>https://yeoulcoding.tistory.com/394</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnfGLK/btsq5eqSJYs/PBtyMZnWVS4e8Eah9tE65k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnfGLK/btsq5eqSJYs/PBtyMZnWVS4e8Eah9tE65k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnfGLK/btsq5eqSJYs/PBtyMZnWVS4e8Eah9tE65k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnfGLK%2Fbtsq5eqSJYs%2FPBtyMZnWVS4e8Eah9tE65k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;419&quot; height=&quot;236&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Quotes&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전군을 한 사람처럼 단결시키는 것은 오직 공정한 지휘와 관리에 달려 있다. 강건한 자와 유약한 자 모두 용감히 싸우게 만들려면 지형을 잘 활용해야 한다.&lt;br /&gt;&lt;br /&gt;용병을&amp;nbsp;잘하는&amp;nbsp;장수가&amp;nbsp;전군을&amp;nbsp;마치&amp;nbsp;한&amp;nbsp;사람을&amp;nbsp;부리듯&amp;nbsp;하는&amp;nbsp;것은&amp;nbsp;객관적인&amp;nbsp;형세가&amp;nbsp;전군으로&amp;nbsp;하여금&amp;nbsp;그리&amp;nbsp;움직이지&amp;nbsp;않을&amp;nbsp;수&amp;nbsp;없도록&amp;nbsp;만들었기&amp;nbsp;때문이다.&lt;br /&gt;&lt;br /&gt;군사&amp;nbsp;지휘는&amp;nbsp;계책이&amp;nbsp;침착하며&amp;nbsp;주도면밀해야&amp;nbsp;하고,&amp;nbsp;부대&amp;nbsp;관리&amp;nbsp;또한&amp;nbsp;엄정하고&amp;nbsp;조리가&amp;nbsp;있어&amp;nbsp;흐트러지지&amp;nbsp;않아야&amp;nbsp;한다.&amp;nbsp;먼저&amp;nbsp;병사들의&amp;nbsp;눈과&amp;nbsp;귀를&amp;nbsp;가려&amp;nbsp;작전&amp;nbsp;계획&amp;nbsp;등을&amp;nbsp;전혀&amp;nbsp;알&amp;nbsp;수&amp;nbsp;없도록&amp;nbsp;해야&amp;nbsp;한다.&amp;nbsp;작전&amp;nbsp;부서를&amp;nbsp;바꾸고&amp;nbsp;원래&amp;nbsp;계책을&amp;nbsp;변경하는&amp;nbsp;방법으로&amp;nbsp;그&amp;nbsp;전모를&amp;nbsp;파악할&amp;nbsp;수&amp;nbsp;없게&amp;nbsp;한다.&amp;nbsp;주둔지를&amp;nbsp;바꾸고&amp;nbsp;행군로를&amp;nbsp;우회해&amp;nbsp;내막을&amp;nbsp;추측할&amp;nbsp;수&amp;nbsp;없게&amp;nbsp;한다.&lt;br /&gt;&lt;br /&gt;작전&amp;nbsp;임무를&amp;nbsp;부여할&amp;nbsp;때는&amp;nbsp;마치&amp;nbsp;사람을&amp;nbsp;높은&amp;nbsp;곳에&amp;nbsp;오르게&amp;nbsp;한&amp;nbsp;뒤&amp;nbsp;사다리를&amp;nbsp;치우는것&amp;nbsp;처럼&amp;nbsp;한다.&amp;nbsp;적지&amp;nbsp;깊숙이&amp;nbsp;들어갔을&amp;nbsp;때는&amp;nbsp;전기가&amp;nbsp;무르익기를&amp;nbsp;기다려&amp;nbsp;도강&amp;nbsp;후&amp;nbsp;배를&amp;nbsp;태우고&amp;nbsp;취사용&amp;nbsp;가마솥을&amp;nbsp;깨뜨리는&amp;nbsp;분주파부&amp;nbsp;방법으로&amp;nbsp;필사의&amp;nbsp;각오를&amp;nbsp;드러낸다.&amp;nbsp;양떼를&amp;nbsp;몰듯&amp;nbsp;병사들을&amp;nbsp;이리저리&amp;nbsp;몰고&amp;nbsp;다니는&amp;nbsp;까닭에&amp;nbsp;아무도&amp;nbsp;가는&amp;nbsp;곳을&amp;nbsp;모른다.&lt;br /&gt;&lt;br /&gt;이후&amp;nbsp;전&amp;nbsp;병력을&amp;nbsp;집결시킨&amp;nbsp;뒤&amp;nbsp;위험한&amp;nbsp;곳에&amp;nbsp;투입해&amp;nbsp;결사적으로&amp;nbsp;싸우게&amp;nbsp;만든다.&amp;nbsp;이를&amp;nbsp;일컬어&amp;nbsp;&amp;lsquo;장군이&amp;nbsp;취해야&amp;nbsp;할&amp;nbsp;기본&amp;nbsp;임무&amp;rsquo;라고&amp;nbsp;한다.&lt;br /&gt;&lt;br /&gt;여울이&amp;nbsp;급하고&amp;nbsp;거세게&amp;nbsp;흐르면서&amp;nbsp;무거운&amp;nbsp;돌까지&amp;nbsp;뜨게&amp;nbsp;만드는&amp;nbsp;것을&amp;nbsp;&amp;ldquo;기세&amp;rdquo;라고&amp;nbsp;한다.&amp;nbsp;맹금이&amp;nbsp;질풍같이&amp;nbsp;달려가&amp;nbsp;다른&amp;nbsp;새를&amp;nbsp;잡아&amp;nbsp;죽이는&amp;nbsp;것을&amp;nbsp;&amp;ldquo;절도&amp;rdquo;라고&amp;nbsp;한다.&amp;nbsp;전쟁을&amp;nbsp;잘&amp;nbsp;하는&amp;nbsp;자는&amp;nbsp;기세가&amp;nbsp;맹렬하다.&amp;nbsp;절도&amp;nbsp;또한&amp;nbsp;극히&amp;nbsp;간명하다.&lt;br /&gt;&lt;br /&gt;전쟁을&amp;nbsp;잘하는&amp;nbsp;자는&amp;nbsp;승리의&amp;nbsp;관건을&amp;nbsp;전세에서&amp;nbsp;찾을&amp;nbsp;뿐,&amp;nbsp;일부&amp;nbsp;장병의&amp;nbsp;용맹에&amp;nbsp;기대지&amp;nbsp;않는다.&amp;nbsp;인재를&amp;nbsp;선발해&amp;nbsp;적재적소에&amp;nbsp;배치하는&amp;nbsp;방법으로&amp;nbsp;유리한&amp;nbsp;전세를&amp;nbsp;만들어&amp;nbsp;내는&amp;nbsp;것이&amp;nbsp;요체다.&lt;br /&gt;&lt;br /&gt;전세를&amp;nbsp;유리하게&amp;nbsp;이끄는&amp;nbsp;자는&amp;nbsp;병사들을&amp;nbsp;지휘하는&amp;nbsp;것이&amp;nbsp;마치&amp;nbsp;통나무나&amp;nbsp;돌을&amp;nbsp;굴리는&amp;nbsp;것처럼&amp;nbsp;자유자재하다.&amp;nbsp;통나무나&amp;nbsp;돌은&amp;nbsp;성질상&amp;nbsp;안정된&amp;nbsp;곳에&amp;nbsp;두면&amp;nbsp;가만히&amp;nbsp;있지만&amp;nbsp;비탈지고&amp;nbsp;위태로운&amp;nbsp;곳에&amp;nbsp;두면&amp;nbsp;쉽게&amp;nbsp;움직인다.&amp;nbsp;모난&amp;nbsp;나무와&amp;nbsp;돌은&amp;nbsp;정지하고,&amp;nbsp;둥근&amp;nbsp;나무나&amp;nbsp;돌은&amp;nbsp;저절로&amp;nbsp;굴러가기&amp;nbsp;마련이다.&amp;nbsp;전쟁을&amp;nbsp;잘하는&amp;nbsp;자가&amp;nbsp;이끄는&amp;nbsp;전세를&amp;nbsp;보면&amp;nbsp;마치&amp;nbsp;1000길&amp;nbsp;높은&amp;nbsp;산&amp;nbsp;위에서&amp;nbsp;둥근&amp;nbsp;돌을&amp;nbsp;굴리는&amp;nbsp;것과&amp;nbsp;같다.&amp;nbsp;이것이&amp;nbsp;바로&amp;nbsp;병세다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;Thoughts&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근 관심을 갖고 고찰하고 있는 3가지의 사자성어가 있다. &amp;ldquo;대여대취&amp;rdquo;, &amp;ldquo;호리지성&amp;rdquo;, &amp;ldquo;오월동주&amp;rdquo;가 그것이다.&lt;br /&gt;&lt;br /&gt;대여대취(大予大取)란&amp;nbsp;&amp;ldquo;크게&amp;nbsp;주고&amp;nbsp;크게&amp;nbsp;얻어라.&amp;nbsp;큰&amp;nbsp;물고기를&amp;nbsp;낚기&amp;nbsp;위해서는&amp;nbsp;큰&amp;nbsp;미끼가&amp;nbsp;필요하다&amp;rdquo;&amp;nbsp;라는&amp;nbsp;의미이며&lt;br /&gt;호리지성(好利之性)은&amp;nbsp;&amp;ldquo;사람의&amp;nbsp;본성은&amp;nbsp;본디&amp;nbsp;이(利)를&amp;nbsp;좋아하여,&amp;nbsp;이를&amp;nbsp;좇는&amp;nbsp;일에&amp;nbsp;바쁘다.&amp;rdquo;&amp;nbsp;라는&amp;nbsp;의미이고,&lt;br /&gt;오월동주는(吳越同舟)&amp;nbsp;&amp;ldquo;원수지간인&amp;nbsp;오나라&amp;nbsp;사람과&amp;nbsp;월나라&amp;nbsp;사람이&amp;nbsp;생존을&amp;nbsp;위해서는&amp;nbsp;서로&amp;nbsp;협력을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;밖에&amp;nbsp;없다&amp;rdquo;는&amp;nbsp;의미이다.&lt;br /&gt;&lt;br /&gt;이를&amp;nbsp;이어서&amp;nbsp;생각해보면&amp;nbsp;큰&amp;nbsp;목적을&amp;nbsp;달성하기&amp;nbsp;위해서는&amp;nbsp;큰&amp;nbsp;이익을&amp;nbsp;제공할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;사람들을&amp;nbsp;모아야&amp;nbsp;하고,&amp;nbsp;사람의&amp;nbsp;본성은&amp;nbsp;본디&amp;nbsp;이익을&amp;nbsp;추구하기&amp;nbsp;때문에&amp;nbsp;이들을&amp;nbsp;모으기&amp;nbsp;위해서는&amp;nbsp;큰&amp;nbsp;미끼를&amp;nbsp;던져야&amp;nbsp;하며,&amp;nbsp;서로&amp;nbsp;다른&amp;nbsp;이들이,&amp;nbsp;혹은&amp;nbsp;그다지&amp;nbsp;가깝지&amp;nbsp;않거나&amp;nbsp;달갑지&amp;nbsp;않은&amp;nbsp;이들이지만&amp;nbsp;큰&amp;nbsp;이익을&amp;nbsp;달성하기&amp;nbsp;위해서&amp;nbsp;꼭&amp;nbsp;필요하다면,&amp;nbsp;이들이&amp;nbsp;협력할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;환경을&amp;nbsp;만들어야&amp;nbsp;한다고도&amp;nbsp;생각해볼&amp;nbsp;수&amp;nbsp;있겠다.&lt;br /&gt;&lt;br /&gt;이전에&amp;nbsp;동시에&amp;nbsp;여러&amp;nbsp;일을&amp;nbsp;하는&amp;nbsp;인간&amp;nbsp;이라는&amp;nbsp;글에서&amp;nbsp;밝힌&amp;nbsp;바&amp;nbsp;있듯,&amp;nbsp;나는&amp;nbsp;동시에&amp;nbsp;여러&amp;nbsp;일을&amp;nbsp;하는&amp;nbsp;것을&amp;nbsp;좋아하는&amp;nbsp;사람이다.&amp;nbsp;동시에&amp;nbsp;여러&amp;nbsp;일을&amp;nbsp;하는&amp;nbsp;것을&amp;nbsp;좋아하는&amp;nbsp;이유는,&amp;nbsp;역설적으로&amp;nbsp;지금&amp;nbsp;이&amp;nbsp;순간&amp;nbsp;하고&amp;nbsp;있는&amp;nbsp;일을&amp;nbsp;더&amp;nbsp;잘하기&amp;nbsp;위해서이다.&amp;nbsp;A라는&amp;nbsp;일을&amp;nbsp;하는데에&amp;nbsp;있어서&amp;nbsp;동시에&amp;nbsp;B,&amp;nbsp;C를&amp;nbsp;하는&amp;nbsp;것이&amp;nbsp;A라는&amp;nbsp;일을&amp;nbsp;하는&amp;nbsp;것에&amp;nbsp;있어서&amp;nbsp;어떤&amp;nbsp;식으로든&amp;nbsp;도움을&amp;nbsp;준다면,&amp;nbsp;그리고&amp;nbsp;B,&amp;nbsp;C를&amp;nbsp;하는데&amp;nbsp;있어서&amp;nbsp;리소스가&amp;nbsp;선형적으로&amp;nbsp;증가하지&amp;nbsp;않고&amp;nbsp;로그함수적으로&amp;nbsp;증가한다면,&amp;nbsp;A,&amp;nbsp;B,&amp;nbsp;C를&amp;nbsp;동시에&amp;nbsp;하는&amp;nbsp;것이&amp;nbsp;A만&amp;nbsp;하는&amp;nbsp;것보다&amp;nbsp;더&amp;nbsp;좋은&amp;nbsp;결과를&amp;nbsp;가져올&amp;nbsp;수&amp;nbsp;있다.&lt;br /&gt;&lt;br /&gt;이러한&amp;nbsp;구조를&amp;nbsp;만들기&amp;nbsp;위해서는&amp;nbsp;고려해야&amp;nbsp;할&amp;nbsp;구조가&amp;nbsp;크게&amp;nbsp;2가지이다.&amp;nbsp;B,&amp;nbsp;C라는&amp;nbsp;일을&amp;nbsp;추가적으로&amp;nbsp;하는&amp;nbsp;것이&amp;nbsp;A에&amp;nbsp;어떤&amp;nbsp;식으로든&amp;nbsp;도움이&amp;nbsp;되도록&amp;nbsp;하는&amp;nbsp;것과,&amp;nbsp;B,&amp;nbsp;C를&amp;nbsp;추가적으로&amp;nbsp;하는데에&amp;nbsp;드는&amp;nbsp;리소스가&amp;nbsp;로그함수적으로&amp;nbsp;증가하도록&amp;nbsp;만드는&amp;nbsp;것이다.&lt;br /&gt;&lt;br /&gt;첫번째&amp;nbsp;구조를&amp;nbsp;잘&amp;nbsp;만들기&amp;nbsp;위해서는&amp;nbsp;인간이&amp;nbsp;사고하는&amp;nbsp;방식과,&amp;nbsp;유추하는&amp;nbsp;방식을&amp;nbsp;잘&amp;nbsp;고려해보아야&amp;nbsp;한다.&amp;nbsp;여기에&amp;nbsp;대해&amp;nbsp;이야기&amp;nbsp;하기&amp;nbsp;전에&amp;nbsp;&amp;ldquo;사고의&amp;nbsp;본질&amp;rdquo;이라는&amp;nbsp;책에서&amp;nbsp;가장&amp;nbsp;인상깊게&amp;nbsp;읽었던&amp;nbsp;부분을&amp;nbsp;먼저&amp;nbsp;인용하겠다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;우리가 말하는 &amp;lsquo;추론하다&amp;rsquo;는 단지 어떤 새로운 정신적 요소를 자신이 직면한 상황에 도입하는 것을 뜻한다. 기본적으로 이 말은 현재 활성화된 개념의 어떤 측면이 휴지 상태에서 벗어나 환기되는 것을 뜻한다. 이 새로운 요소가 옳은지 그른지는 중요치 않다. 이전 요소로부터 논리적인 흐름을 따랐는지 여부도 마찬가지다. 우리에게 &amp;lsquo;추론&amp;rsquo;은 단지 어떤 새로운 요소가 머릿속에서 활성화되었음을 뜻한다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;B,&amp;nbsp;C라는&amp;nbsp;일을&amp;nbsp;하는&amp;nbsp;것이&amp;nbsp;A라는&amp;nbsp;일을&amp;nbsp;잘&amp;nbsp;하는데&amp;nbsp;있어&amp;nbsp;질적으로&amp;nbsp;도움을&amp;nbsp;줄&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;방법&amp;nbsp;중&amp;nbsp;하나는,&amp;nbsp;내가&amp;nbsp;A라는&amp;nbsp;일을&amp;nbsp;할&amp;nbsp;때&amp;nbsp;특정&amp;nbsp;프레임과&amp;nbsp;컨텍스트에&amp;nbsp;갇혀&amp;nbsp;사고가&amp;nbsp;굳어가는&amp;nbsp;것을&amp;nbsp;완화시켜주는&amp;nbsp;것이다.&amp;nbsp;즉&amp;nbsp;내가&amp;nbsp;A라는&amp;nbsp;일을&amp;nbsp;바라보는&amp;nbsp;데에&amp;nbsp;작용하는&amp;nbsp;컨텍스트를&amp;nbsp;확장시켜주고,&amp;nbsp;다른&amp;nbsp;방향으로&amp;nbsp;추론할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;도와준다면&amp;nbsp;이는&amp;nbsp;A라는&amp;nbsp;일을&amp;nbsp;더&amp;nbsp;잘할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;도와주는&amp;nbsp;것이라&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다.&lt;br /&gt;&lt;br /&gt;위에&amp;nbsp;인용한&amp;nbsp;구절과&amp;nbsp;같이,&amp;nbsp;추론이라는&amp;nbsp;것이&amp;nbsp;본질적으로&amp;nbsp;현재&amp;nbsp;활성화된&amp;nbsp;개념의&amp;nbsp;어떤&amp;nbsp;측면이&amp;nbsp;휴지&amp;nbsp;상태에서&amp;nbsp;벗어나&amp;nbsp;환기되는&amp;nbsp;것에&amp;nbsp;불과하다면,&amp;nbsp;추론&amp;nbsp;능력은&amp;nbsp;여러&amp;nbsp;개념의&amp;nbsp;여러&amp;nbsp;측면들을&amp;nbsp;의식의&amp;nbsp;기저에서&amp;nbsp;얼마나&amp;nbsp;능수능란하게&amp;nbsp;활성화시킬&amp;nbsp;수&amp;nbsp;있느냐와&amp;nbsp;관련되어&amp;nbsp;있으며,&amp;nbsp;이는&amp;nbsp;동시에&amp;nbsp;여러일을&amp;nbsp;하면서&amp;nbsp;서로&amp;nbsp;다른&amp;nbsp;일들의&amp;nbsp;컨텍스트를&amp;nbsp;상호적으로&amp;nbsp;확장시키고,&amp;nbsp;여러&amp;nbsp;개념들의&amp;nbsp;여러&amp;nbsp;측면들을&amp;nbsp;확장시키는&amp;nbsp;것을&amp;nbsp;통해&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;그리고&amp;nbsp;이러한&amp;nbsp;행위들의&amp;nbsp;누적은&amp;nbsp;&amp;ldquo;무엇을&amp;nbsp;크게&amp;nbsp;얻을&amp;nbsp;것이며,&amp;nbsp;그러기&amp;nbsp;위해&amp;nbsp;무엇을&amp;nbsp;크게&amp;nbsp;던질&amp;nbsp;것인가&amp;rdquo;를&amp;nbsp;사고하는데&amp;nbsp;있어&amp;nbsp;결정적으로&amp;nbsp;작용한다.&lt;br /&gt;&lt;br /&gt;손자병법에서는&amp;nbsp;장군에게&amp;nbsp;&amp;ldquo;병사들의&amp;nbsp;눈과&amp;nbsp;귀를&amp;nbsp;가려&amp;nbsp;작전&amp;nbsp;계획&amp;nbsp;등을&amp;nbsp;전혀&amp;nbsp;알&amp;nbsp;수&amp;nbsp;없도록&amp;nbsp;해야&amp;nbsp;한다&amp;rdquo;고&amp;nbsp;주문한다.&amp;nbsp;여기서의&amp;nbsp;작전&amp;nbsp;계획을&amp;nbsp;주관적으로&amp;nbsp;접근해서&amp;nbsp;&amp;ldquo;무엇을&amp;nbsp;크게&amp;nbsp;얻을&amp;nbsp;것이고,&amp;nbsp;그래서&amp;nbsp;무엇을&amp;nbsp;크게&amp;nbsp;던질&amp;nbsp;것인가&amp;rdquo;로&amp;nbsp;생각해본다면,&amp;nbsp;이를&amp;nbsp;달성하기&amp;nbsp;위해서는&amp;nbsp;고도의&amp;nbsp;추론&amp;nbsp;능력이&amp;nbsp;필요함을&amp;nbsp;알&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;결과적으로는&amp;nbsp;큰&amp;nbsp;것을&amp;nbsp;던진&amp;nbsp;것이지만,&amp;nbsp;국지적인&amp;nbsp;측면에서는&amp;nbsp;각자가&amp;nbsp;자신의&amp;nbsp;이익을&amp;nbsp;향해&amp;nbsp;달려나가고,&amp;nbsp;그&amp;nbsp;이익의&amp;nbsp;획득을&amp;nbsp;통해&amp;nbsp;만족을&amp;nbsp;얻으며,&amp;nbsp;각자의&amp;nbsp;이익획득&amp;nbsp;행위를&amp;nbsp;통해&amp;nbsp;자연스럽게&amp;nbsp;큰&amp;nbsp;목적을&amp;nbsp;달성하는&amp;nbsp;그림을&amp;nbsp;그려야&amp;nbsp;함으로&amp;nbsp;해석할&amp;nbsp;수&amp;nbsp;있다고&amp;nbsp;생각한다.&lt;br /&gt;&lt;br /&gt;군사&amp;nbsp;지휘는&amp;nbsp;계책이&amp;nbsp;침착하며&amp;nbsp;주도면밀해야&amp;nbsp;하고,&amp;nbsp;부대&amp;nbsp;관리&amp;nbsp;또한&amp;nbsp;엄정하고&amp;nbsp;조리가&amp;nbsp;있어&amp;nbsp;흐트러지지&amp;nbsp;않아야&amp;nbsp;한다.&amp;nbsp;먼저&amp;nbsp;병사들의&amp;nbsp;눈과&amp;nbsp;귀를&amp;nbsp;가려&amp;nbsp;작전&amp;nbsp;계획&amp;nbsp;등을&amp;nbsp;전혀&amp;nbsp;알&amp;nbsp;수&amp;nbsp;없도록&amp;nbsp;해야&amp;nbsp;한다.&amp;nbsp;작전&amp;nbsp;부서를&amp;nbsp;바꾸고&amp;nbsp;원래&amp;nbsp;계책을&amp;nbsp;변경하는&amp;nbsp;방법으로&amp;nbsp;그&amp;nbsp;전모를&amp;nbsp;파악할&amp;nbsp;수&amp;nbsp;없게&amp;nbsp;한다.&amp;nbsp;주둔지를&amp;nbsp;바꾸고&amp;nbsp;행군로를&amp;nbsp;우회해&amp;nbsp;내막을&amp;nbsp;추측할&amp;nbsp;수&amp;nbsp;없게&amp;nbsp;한다.&lt;br /&gt;&lt;br /&gt;결론적으로&amp;nbsp;정보의&amp;nbsp;접근성이&amp;nbsp;매우&amp;nbsp;높아진&amp;nbsp;지금,&amp;nbsp;큰&amp;nbsp;그림을&amp;nbsp;그리면서&amp;nbsp;이&amp;nbsp;큰&amp;nbsp;그림을&amp;nbsp;적절한&amp;nbsp;수준으로&amp;nbsp;감추기&amp;nbsp;위해서는&amp;nbsp;고도의&amp;nbsp;추론&amp;nbsp;능력이&amp;nbsp;필요하며,&amp;nbsp;이는&amp;nbsp;동시에&amp;nbsp;연관있는&amp;nbsp;여러&amp;nbsp;가지&amp;nbsp;일을&amp;nbsp;통해&amp;nbsp;추론&amp;nbsp;능력을&amp;nbsp;비약적으로&amp;nbsp;높이는&amp;nbsp;데에&amp;nbsp;그&amp;nbsp;요체가&amp;nbsp;있다고&amp;nbsp;생각한다.&lt;br /&gt;&lt;br /&gt;두번째&amp;nbsp;구조를&amp;nbsp;잘&amp;nbsp;만들기&amp;nbsp;위해서는&amp;nbsp;어떤&amp;nbsp;형태로든&amp;nbsp;레버리지(Leverage)를&amp;nbsp;사용해야&amp;nbsp;한다.&amp;nbsp;내가&amp;nbsp;어떤&amp;nbsp;1개의&amp;nbsp;일을&amp;nbsp;하는데&amp;nbsp;100의&amp;nbsp;에너지를&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있다고&amp;nbsp;할&amp;nbsp;때,&amp;nbsp;최선을&amp;nbsp;다해서&amp;nbsp;1개의&amp;nbsp;일을&amp;nbsp;성공적으로&amp;nbsp;수행해&amp;nbsp;낸다면,&amp;nbsp;이는&amp;nbsp;레버리지를&amp;nbsp;사용한&amp;nbsp;것이&amp;nbsp;아니다.&lt;br /&gt;&lt;br /&gt;1개의&amp;nbsp;일을&amp;nbsp;달성하는데&amp;nbsp;있어서&amp;nbsp;20을&amp;nbsp;사용하고&amp;nbsp;이&amp;nbsp;1개의&amp;nbsp;일을&amp;nbsp;같이&amp;nbsp;함으로써&amp;nbsp;다른&amp;nbsp;사람들도&amp;nbsp;이익을&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;구조를&amp;nbsp;만들고,&amp;nbsp;여기에&amp;nbsp;20씩&amp;nbsp;보태줄&amp;nbsp;여러&amp;nbsp;사람들과&amp;nbsp;같이&amp;nbsp;이&amp;nbsp;1개의&amp;nbsp;일을&amp;nbsp;한다면,&amp;nbsp;나는&amp;nbsp;나머지&amp;nbsp;80으로&amp;nbsp;4개&amp;nbsp;이상의&amp;nbsp;일을&amp;nbsp;더&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;되는&amp;nbsp;것이며,&amp;nbsp;이는&amp;nbsp;궁극적으로&amp;nbsp;100의&amp;nbsp;에너지를&amp;nbsp;가지고&amp;nbsp;5개&amp;nbsp;이상의&amp;nbsp;일을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;만들어준다.&lt;br /&gt;&lt;br /&gt;그렇다면&amp;nbsp;어떻게&amp;nbsp;내가&amp;nbsp;하고&amp;nbsp;있는&amp;nbsp;일을&amp;nbsp;다른&amp;nbsp;사람들이&amp;nbsp;기꺼이&amp;nbsp;참여하고,&amp;nbsp;그들이&amp;nbsp;나와의&amp;nbsp;의리와&amp;nbsp;정에&amp;nbsp;기대지&amp;nbsp;않고(물론&amp;nbsp;있어서&amp;nbsp;나쁠건&amp;nbsp;전혀&amp;nbsp;없다.&amp;nbsp;오히려&amp;nbsp;좋다.&amp;nbsp;다만&amp;nbsp;이익이&amp;nbsp;없이&amp;nbsp;이것들로만&amp;nbsp;무언가를&amp;nbsp;시작하는&amp;nbsp;것의&amp;nbsp;위험성에&amp;nbsp;대해&amp;nbsp;이야기하고&amp;nbsp;싶은&amp;nbsp;것이다.)&amp;nbsp;이익을&amp;nbsp;얻어갈&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;구조를&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있는가?&amp;nbsp;이에&amp;nbsp;대해&amp;nbsp;손자병법은&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;이야기하고&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;전군을 한 사람처럼 단결시키는 것은 오직 공정한 지휘와 관리에 달려 있다. 강건한 자와 유약한 자 모두 용감히 싸우게 만들려면 지형을 잘 활용해야 한다.&lt;br /&gt;&lt;br /&gt;용병을&amp;nbsp;잘하는&amp;nbsp;장수가&amp;nbsp;전군을&amp;nbsp;마치&amp;nbsp;한&amp;nbsp;사람을&amp;nbsp;부리듯&amp;nbsp;하는&amp;nbsp;것은&amp;nbsp;객관적인&amp;nbsp;형세가&amp;nbsp;전군으로&amp;nbsp;하여금&amp;nbsp;그리&amp;nbsp;움직이지&amp;nbsp;않을&amp;nbsp;수&amp;nbsp;없도록&amp;nbsp;만들었기&amp;nbsp;때문이다.&lt;br /&gt;&lt;br /&gt;전세를 유리하게 이끄는 자는 병사들을 지휘하는 것이 마치 통나무나 돌을 굴리는 것처럼 자유자재하다. 통나무나 돌은 성질상 안정된 곳에 두면 가만히 있지만 비탈지고 위태로운 곳에 두면 쉽게 움직인다. 모난 나무와 돌은 정지하고, 둥근 나무나 돌은 저절로 굴러가기 마련이다. 전쟁을 잘하는 자가 이끄는 전세를 보면 마치 1000길 높은 산 위에서 둥근 돌을 굴리는 것과 같다. 이것이 바로 병세다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;어떤&amp;nbsp;일에&amp;nbsp;참여했을&amp;nbsp;때&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;이익이&amp;nbsp;동일하다면,&amp;nbsp;어떤&amp;nbsp;사람이든&amp;nbsp;최대한&amp;nbsp;적게&amp;nbsp;일하면서&amp;nbsp;동일한&amp;nbsp;이익을&amp;nbsp;가져가는&amp;nbsp;것을&amp;nbsp;마다 하지&amp;nbsp;않을&amp;nbsp;것이다.&amp;nbsp;이를&amp;nbsp;위해서는&amp;nbsp;지형과&amp;nbsp;기세를&amp;nbsp;잘&amp;nbsp;사용해야&amp;nbsp;하는데,&amp;nbsp;이는&amp;nbsp;상황과&amp;nbsp;맥락에&amp;nbsp;따라&amp;nbsp;여러&amp;nbsp;가지로&amp;nbsp;해석할&amp;nbsp;수&amp;nbsp;있겠지만,&amp;nbsp;개인의&amp;nbsp;관점으로&amp;nbsp;생각해본다면&amp;nbsp;다음과&amp;nbsp;같다.&lt;br /&gt;&lt;br /&gt;Y라는&amp;nbsp;사람에게&amp;nbsp;&amp;ldquo;A라는&amp;nbsp;일을&amp;nbsp;같이&amp;nbsp;해보자&amp;rdquo;&amp;nbsp;라고&amp;nbsp;했을&amp;nbsp;때,&amp;nbsp;이&amp;nbsp;A라는&amp;nbsp;일이&amp;nbsp;Y라는&amp;nbsp;사람이&amp;nbsp;현재&amp;nbsp;관심있게&amp;nbsp;보고&amp;nbsp;있는&amp;nbsp;영역이라면,&amp;nbsp;혹은&amp;nbsp;최근에&amp;nbsp;경험했었거나,&amp;nbsp;이로&amp;nbsp;인한&amp;nbsp;다소의&amp;nbsp;아쉬움이&amp;nbsp;있는&amp;nbsp;상황이라면,&amp;nbsp;이&amp;nbsp;사람은&amp;nbsp;A라는&amp;nbsp;일이&amp;nbsp;지향하는&amp;nbsp;바에&amp;nbsp;대해&amp;nbsp;통나무가&amp;nbsp;굴러가듯&amp;nbsp;내리막길을&amp;nbsp;달려가고&amp;nbsp;있는&amp;nbsp;것과&amp;nbsp;같다고&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;이런&amp;nbsp;기세인&amp;nbsp;사람에게&amp;nbsp;A를&amp;nbsp;같이&amp;nbsp;해보자고&amp;nbsp;이야기하면서&amp;nbsp;이익을&amp;nbsp;제시하는&amp;nbsp;것은&amp;nbsp;그렇지&amp;nbsp;않은&amp;nbsp;사람에게&amp;nbsp;제시하는&amp;nbsp;것에&amp;nbsp;비해&amp;nbsp;서로에게&amp;nbsp;더&amp;nbsp;높은&amp;nbsp;가치를&amp;nbsp;준다.&lt;br /&gt;&lt;br /&gt;결론적으로,&amp;nbsp;현재의&amp;nbsp;나는&amp;nbsp;큰&amp;nbsp;문제를&amp;nbsp;발견하고,&amp;nbsp;이를&amp;nbsp;해결하는&amp;nbsp;사람이&amp;nbsp;되고&amp;nbsp;싶다.&amp;nbsp;이는&amp;nbsp;&amp;ldquo;큰&amp;nbsp;돈을&amp;nbsp;벌고&amp;nbsp;싶다&amp;rdquo;라기보다는&amp;nbsp;&amp;ldquo;문명이&amp;nbsp;지금보다&amp;nbsp;더&amp;nbsp;나은&amp;nbsp;방향으로&amp;nbsp;갈&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;돕고싶다&amp;rdquo;에&amp;nbsp;가깝다.&amp;nbsp;그렇기&amp;nbsp;위해서는&amp;nbsp;큰&amp;nbsp;사람들과&amp;nbsp;함께&amp;nbsp;해야&amp;nbsp;하며,&amp;nbsp;이들이&amp;nbsp;큰&amp;nbsp;이익을&amp;nbsp;가져갈&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;구조를&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있어야&amp;nbsp;할&amp;nbsp;것이다.&amp;nbsp;(물론&amp;nbsp;개인적으로는&amp;nbsp;의리와&amp;nbsp;관계&amp;nbsp;맺기를&amp;nbsp;누구보다&amp;nbsp;중요하게&amp;nbsp;생각하는&amp;nbsp;사람이지만,&amp;nbsp;스케일이&amp;nbsp;커졌을&amp;nbsp;때&amp;nbsp;모든&amp;nbsp;관계가&amp;nbsp;그렇게&amp;nbsp;동작하지는&amp;nbsp;않을&amp;nbsp;것이라는&amp;nbsp;것을&amp;nbsp;기정사실화&amp;nbsp;하고&amp;nbsp;있기&amp;nbsp;때문에&amp;nbsp;&amp;ldquo;오월동주적&amp;rdquo;&amp;nbsp;관점에서&amp;nbsp;접근하려는&amp;nbsp;것이다)&amp;nbsp;이를&amp;nbsp;위해&amp;nbsp;동시에&amp;nbsp;여러가지&amp;nbsp;일을&amp;nbsp;&amp;ldquo;잘&amp;rdquo;하는&amp;nbsp;방식을&amp;nbsp;넘어서&amp;nbsp;&amp;ldquo;더&amp;nbsp;크게&amp;rdquo;,&amp;nbsp;&amp;ldquo;더&amp;nbsp;많은&amp;nbsp;일을&amp;rdquo;,&amp;nbsp;&amp;ldquo;더&amp;nbsp;탁월하게&amp;rdquo;&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;여러&amp;nbsp;방식들을&amp;nbsp;시도해보고&amp;nbsp;있다.&amp;nbsp;현재는&amp;nbsp;이&amp;nbsp;레버리지&amp;nbsp;방식이&amp;nbsp;전체적인&amp;nbsp;그림&amp;nbsp;속에서&amp;nbsp;안티프래질한&amp;nbsp;성질을&amp;nbsp;띄기&amp;nbsp;위해서는&amp;nbsp;어떤&amp;nbsp;것들을&amp;nbsp;더&amp;nbsp;해야하는가의&amp;nbsp;관점에서&amp;nbsp;옵션을&amp;nbsp;어떻게&amp;nbsp;추가할&amp;nbsp;것인지를&amp;nbsp;고민하고&amp;nbsp;있다.&lt;/p&gt;</description>
      <category>Philosophy &amp;amp; Thinking</category>
      <category>BUSINESS</category>
      <category>insight</category>
      <category>Reward</category>
      <category>손자병법</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/394</guid>
      <comments>https://yeoulcoding.tistory.com/394#entry394comment</comments>
      <pubDate>Sun, 13 Aug 2023 10:42:19 +0900</pubDate>
    </item>
    <item>
      <title>Forget the AI Race. Let&amp;rsquo;s Invest in a Data Grid for AI</title>
      <link>https://yeoulcoding.tistory.com/393</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBVQWd/btsq5dlcy2N/FnwJWKRponZkmwnWDPLjL1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBVQWd/btsq5dlcy2N/FnwJWKRponZkmwnWDPLjL1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBVQWd/btsq5dlcy2N/FnwJWKRponZkmwnWDPLjL1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBVQWd%2Fbtsq5dlcy2N%2FFnwJWKRponZkmwnWDPLjL1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;422&quot; height=&quot;281&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;2000&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;h3 data-ke-size=&quot;size23&quot;&gt;Articles&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Akash &amp;ldquo;Aki&amp;rdquo; Jain is President of Palantir USG, Inc. where he focuses on Artificial Intelligence, USG Technical Engagement, Enterprise Data Management and Cloud Architecture.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;i&gt;Private Sector Perspective&lt;/i&gt; &amp;mdash; Neil Armstrong&amp;rsquo;s small step for man in 1969 was a symbolic resolution to the Cold War&amp;rsquo;s most visible global security power struggle: The Space Race. As victor, the U.S. proved its technological superiority, leading the Soviets to largely concede the space domain to the U.S. More broadly, the U.S. ability to come from behind demonstrated the underlying strength of its economic, technological, and scientific systems.&lt;br /&gt;&lt;br /&gt;Today, we are in another pursuit for technological superiority what has been dubbed the artificial intelligence (AI) race. However, unlike the lunar landing, the so-called &amp;ldquo;AI Race&amp;rdquo; has no clearly defined finish line. We know we have an immediate competitor (China), but how will we know if &amp;ndash; and when &amp;ndash; we have won? The ambiguity around this question is why I believe we need to forget the notion of a singular AI Race and instead focus our efforts on building a data infrastructure to tackle any AI challenge.&lt;br /&gt;&lt;br /&gt;For&amp;nbsp;the&amp;nbsp;U.S.&amp;nbsp;to&amp;nbsp;position&amp;nbsp;itself&amp;nbsp;in&amp;nbsp;a&amp;nbsp;place&amp;nbsp;of&amp;nbsp;technological&amp;nbsp;strength&amp;nbsp;for&amp;nbsp;decades&amp;nbsp;to&amp;nbsp;come,&amp;nbsp;we&amp;nbsp;must&amp;nbsp;create&amp;nbsp;systems&amp;nbsp;that&amp;nbsp;allow&amp;nbsp;for&amp;nbsp;steady,&amp;nbsp;continuous,&amp;nbsp;and&amp;nbsp;trustworthy&amp;nbsp;progress&amp;nbsp;on&amp;nbsp;AI.&amp;nbsp;Andrew&amp;nbsp;Ng&amp;rsquo;s&amp;nbsp;analogy&amp;nbsp;of&amp;nbsp;AI&amp;nbsp;as&amp;nbsp;electricity&amp;nbsp;helps&amp;nbsp;us&amp;nbsp;see&amp;nbsp;that&amp;nbsp;we&amp;rsquo;re&amp;nbsp;in&amp;nbsp;the&amp;nbsp;infancy&amp;nbsp;of&amp;nbsp;AI&amp;rsquo;s&amp;nbsp;potential.&amp;nbsp;While&amp;nbsp;AI&amp;nbsp;is&amp;nbsp;substantially&amp;nbsp;more&amp;nbsp;complex&amp;nbsp;than&amp;nbsp;electricity,&amp;nbsp;it&amp;nbsp;is&amp;nbsp;similar&amp;nbsp;in&amp;nbsp;that&amp;nbsp;it&amp;nbsp;is&amp;nbsp;a&amp;nbsp;powerful&amp;nbsp;enabling&amp;nbsp;technology,&amp;nbsp;not&amp;nbsp;an&amp;nbsp;end&amp;nbsp;in&amp;nbsp;itself.&amp;nbsp;What&amp;nbsp;we&amp;nbsp;are&amp;nbsp;missing&amp;nbsp;is&amp;nbsp;a&amp;nbsp;way&amp;nbsp;to&amp;nbsp;make&amp;nbsp;enduring,&amp;nbsp;scalable,&amp;nbsp;and&amp;nbsp;reliable&amp;nbsp;use&amp;nbsp;of&amp;nbsp;that&amp;nbsp;technology.&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;When introduced in the 19th century, incandescent bulbs were revolutionary. At first, only those consumers who had their own electricity generator could make use of them, limiting their seemingly endless potential. Thomas Edison realized that he could sell many more lightbulbs if there was an easy way for &lt;i&gt;&lt;b&gt;anyone&lt;/b&gt;&lt;/i&gt; to receive electricity. Without the electrical grid, we would never have seen the widespread adoption of the incandescent bulb and the subsequent surge of innovation to create many other electric devices. We&amp;rsquo;ve been caught up designing individual AI/ML models (&amp;ldquo;lightbulbs&amp;rdquo;), but we don&amp;rsquo;t have a unified infrastructure to serve as our modern-day electrical grid equivalent.&lt;br /&gt;&lt;br /&gt;One&amp;nbsp;particularly&amp;nbsp;compelling&amp;nbsp;reason&amp;nbsp;to&amp;nbsp;invest&amp;nbsp;in&amp;nbsp;such&amp;nbsp;an&amp;nbsp;infrastructure&amp;nbsp;is&amp;nbsp;that&amp;nbsp;AI&amp;nbsp;models&amp;nbsp;aren&amp;rsquo;t&amp;nbsp;something&amp;nbsp;that&amp;nbsp;can&amp;nbsp;be&amp;nbsp;sprinkled&amp;nbsp;around&amp;nbsp;to&amp;nbsp;make&amp;nbsp;any&amp;nbsp;project&amp;nbsp;better.&amp;nbsp;Most&amp;nbsp;AI&amp;nbsp;models&amp;nbsp;deployed&amp;nbsp;today&amp;nbsp;are&amp;nbsp;quite&amp;nbsp;brittle:&amp;nbsp;they&amp;nbsp;have&amp;nbsp;been&amp;nbsp;developed&amp;nbsp;and&amp;nbsp;trained&amp;nbsp;for&amp;nbsp;a&amp;nbsp;specific&amp;nbsp;use&amp;nbsp;case&amp;nbsp;under&amp;nbsp;specific&amp;nbsp;conditions.&amp;nbsp;Once&amp;nbsp;deployed,&amp;nbsp;model&amp;nbsp;performance&amp;nbsp;and&amp;nbsp;quality&amp;nbsp;may&amp;nbsp;degrade&amp;nbsp;quickly&amp;nbsp;as&amp;nbsp;the&amp;nbsp;data&amp;nbsp;environment&amp;nbsp;evolves.&amp;nbsp;Further,&amp;nbsp;throwing&amp;nbsp;a&amp;nbsp;model&amp;nbsp;at&amp;nbsp;an&amp;nbsp;adjacent&amp;nbsp;problem&amp;nbsp;without&amp;nbsp;re-training&amp;nbsp;it&amp;nbsp;usually&amp;nbsp;does&amp;nbsp;not&amp;nbsp;work.&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;To give an illustrative example, an AI model for identifying pathologies in X-Ray films was unable to be repurposed at another hospital due to a difference in the radiology films used by different machines &amp;mdash; and that was for a nearly identical use case. To harness the value that is currently available from AI, ensuring models are continually provided with appropriate training data and feedback to improve is critical. We must create a holistic AI and data environment &amp;ndash; a &amp;ldquo;grid&amp;rdquo; &amp;ndash; that works around AI model brittleness by making it easy to re-train and evaluate models, and share training data (within appropriate security, data protection, and usage boundaries).&lt;br /&gt;&lt;br /&gt;The U.S. Government will struggle to retain the lead in AI because &lt;u&gt;&lt;i&gt;this infrastructure does not exist&lt;/i&gt;&lt;/u&gt;. Academics, government researchers, and private companies are off in silos building incredible AI/ML capabilities &amp;mdash; but like a solitary lightbulb, they are illuminating but a single room in a single house at a time. For the U.S. to maintain technological superiority, we must build the data infrastructure that will allow entire skyscrapers to be illuminated. We must also enable new innovations not just &amp;ldquo;lightbulbs,&amp;rdquo; but &amp;ldquo;toasters,&amp;rdquo; &amp;ldquo;televisions,&amp;rdquo; and beyond. We must have a means for scaling existing capabilities in the real world and encouraging the development of new ones. And we must do so in a way that stays true to our democratic values. &lt;b&gt;Let&amp;rsquo;s invest in a data grid for AI.&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;size16&quot;&gt;Just&amp;nbsp;as&amp;nbsp;governments&amp;nbsp;play&amp;nbsp;a&amp;nbsp;role&amp;nbsp;in&amp;nbsp;enforcing&amp;nbsp;standards&amp;nbsp;related&amp;nbsp;to&amp;nbsp;electrical&amp;nbsp;current&amp;nbsp;flow,&amp;nbsp;the&amp;nbsp;U.S.&amp;nbsp;Government&amp;nbsp;has&amp;nbsp;a&amp;nbsp;role&amp;nbsp;to&amp;nbsp;play&amp;nbsp;in&amp;nbsp;establishing&amp;nbsp;our&amp;nbsp;own&amp;nbsp;&amp;ldquo;grid.&amp;rdquo;&amp;nbsp;Investing&amp;nbsp;in&amp;nbsp;a&amp;nbsp;data&amp;nbsp;grid&amp;nbsp;for&amp;nbsp;AI&amp;nbsp;is&amp;nbsp;a&amp;nbsp;strategic&amp;nbsp;move&amp;nbsp;that&amp;nbsp;will&amp;nbsp;not&amp;nbsp;only&amp;nbsp;result&amp;nbsp;in&amp;nbsp;an&amp;nbsp;immediate&amp;nbsp;spike&amp;nbsp;in&amp;nbsp;innovation&amp;nbsp;in&amp;nbsp;the&amp;nbsp;short&amp;nbsp;term,&amp;nbsp;but&amp;nbsp;will&amp;nbsp;allow&amp;nbsp;for&amp;nbsp;sustained,&amp;nbsp;step-by-step&amp;nbsp;advancement&amp;nbsp;in&amp;nbsp;the&amp;nbsp;long&amp;nbsp;term.&amp;nbsp;There&amp;nbsp;are&amp;nbsp;several&amp;nbsp;key&amp;nbsp;components&amp;nbsp;we&amp;rsquo;ll&amp;nbsp;need&amp;nbsp;to&amp;nbsp;get&amp;nbsp;right:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Design for iteration, not stagnation:&lt;/b&gt; AI systems are _learning_ systems that require constant iteration and feedback. We must build our infrastructure so that it can evolve. Electrical grids today are flexible to support a variety of energy sources, from solar power to coal fired generators, so too must our AI infrastructure empower AI firms and Government programs to adapt to various systems. And, just as grids can surge resources in response to demands, we should build in connectivity, which in turn will allow us to discover and build towards emerging demand and refine and further develop new capabilities.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;2. Create an AI deployment infrastructure:&lt;/b&gt; Government consumers should have an easy access point to discover, evaluate, and deploy potential AI/ML solutions and training data, monitor algorithm performance, and capture and save any feedback.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;3. Adopt open data standards:&lt;/b&gt; Just as we have standards for voltage, we need standards for the format, quality, and curation of data, systems, and APIs.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;4. Fund an AI training data library:&lt;/b&gt; AI/ML models depend upon quality data to train and test. Large, diverse datasets help mitigate algorithmic biases, and our Government is best positioned to conduct quality assurance on this data and enable appropriate access to it. By building out this training data library thoughtfully, instead of via ad hoc, disconnected efforts, our Government can both spur AI development and ensure that training data sets are curated ethically and transparently.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;5. Keep our grid secure:&lt;/b&gt; We must protect our electricity grid from hackers &amp;ndash; similarly, we must ensure that our AI training data, algorithms, and deployment infrastructure are secure.&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;Following&amp;nbsp;these&amp;nbsp;guidelines&amp;nbsp;in&amp;nbsp;conjunction&amp;nbsp;with&amp;nbsp;existing&amp;nbsp;calls&amp;nbsp;to&amp;nbsp;adhere&amp;nbsp;to&amp;nbsp;strong&amp;nbsp;AI&amp;nbsp;ethics&amp;nbsp;principles&amp;nbsp;and&amp;nbsp;standards,&amp;nbsp;we&amp;nbsp;can&amp;nbsp;invest&amp;nbsp;in&amp;nbsp;an&amp;nbsp;AI&amp;nbsp;infrastructure&amp;nbsp;that&amp;nbsp;enables&amp;nbsp;not&amp;nbsp;just&amp;nbsp;the&amp;nbsp;occasional&amp;nbsp;&amp;ldquo;incandescent&amp;nbsp;bulb,&amp;rdquo;&amp;nbsp;but&amp;nbsp;empowers&amp;nbsp;an&amp;nbsp;entire&amp;nbsp;generation&amp;nbsp;with&amp;nbsp;access&amp;nbsp;to&amp;nbsp;enabling&amp;nbsp;technologies&amp;nbsp;that&amp;nbsp;will&amp;nbsp;buoy&amp;nbsp;innovation&amp;nbsp;as&amp;nbsp;more&amp;nbsp;potential&amp;nbsp;use&amp;nbsp;cases&amp;nbsp;are&amp;nbsp;discovered.&amp;nbsp;By&amp;nbsp;investing&amp;nbsp;in&amp;nbsp;a&amp;nbsp;grid,&amp;nbsp;we&amp;nbsp;can&amp;nbsp;unlock&amp;nbsp;the&amp;nbsp;enormous&amp;nbsp;potential&amp;nbsp;of&amp;nbsp;AI&amp;nbsp;development&amp;nbsp;and&amp;nbsp;ensure&amp;nbsp;our&amp;nbsp;technological,&amp;nbsp;economic,&amp;nbsp;democratic,&amp;nbsp;and&amp;nbsp;military&amp;nbsp;superiority&amp;nbsp;for&amp;nbsp;decades&amp;nbsp;to&amp;nbsp;come.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Thoughts&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;As&amp;nbsp;I&amp;nbsp;witness&amp;nbsp;the&amp;nbsp;AI&amp;nbsp;boom&amp;nbsp;based&amp;nbsp;on&amp;nbsp;generative&amp;nbsp;AI&amp;nbsp;such&amp;nbsp;as&amp;nbsp;OpenAI's&amp;nbsp;GPT3.5&amp;nbsp;and&amp;nbsp;GPT4&amp;nbsp;emerging&amp;nbsp;everywhere,&amp;nbsp;I&amp;nbsp;had&amp;nbsp;a&amp;nbsp;vague&amp;nbsp;sense&amp;nbsp;of&amp;nbsp;anxiety.&amp;nbsp;However,&amp;nbsp;the&amp;nbsp;phrase&amp;nbsp;&quot;AI&amp;nbsp;race&amp;nbsp;with&amp;nbsp;no&amp;nbsp;finish&amp;nbsp;line&quot;&amp;nbsp;somewhat&amp;nbsp;alleviated&amp;nbsp;this&amp;nbsp;ambiguity.&amp;nbsp;Many&amp;nbsp;companies&amp;nbsp;are&amp;nbsp;trying&amp;nbsp;to&amp;nbsp;do&amp;nbsp;something&amp;nbsp;&quot;remarkable&quot;&amp;nbsp;using&amp;nbsp;GPT.&amp;nbsp;However,&amp;nbsp;in&amp;nbsp;reality,&amp;nbsp;rather&amp;nbsp;than&amp;nbsp;producing&amp;nbsp;anything&amp;nbsp;significantly&amp;nbsp;impactful,&amp;nbsp;it&amp;nbsp;often&amp;nbsp;ends&amp;nbsp;up&amp;nbsp;merely&amp;nbsp;creating&amp;nbsp;a&amp;nbsp;chatbot&amp;nbsp;with&amp;nbsp;good&amp;nbsp;performance.&amp;nbsp;Moreover,&amp;nbsp;there's&amp;nbsp;a&amp;nbsp;downside&amp;nbsp;that&amp;nbsp;these&amp;nbsp;customized&amp;nbsp;chatbots&amp;nbsp;are&amp;nbsp;difficult&amp;nbsp;to&amp;nbsp;repurpose&amp;nbsp;for&amp;nbsp;other&amp;nbsp;uses.&lt;br /&gt;&lt;br /&gt;I&amp;nbsp;believe&amp;nbsp;Palantir's&amp;nbsp;CTO&amp;nbsp;was&amp;nbsp;addressing&amp;nbsp;these&amp;nbsp;issues.&amp;nbsp;He&amp;nbsp;suggested&amp;nbsp;that&amp;nbsp;for&amp;nbsp;AI&amp;nbsp;to&amp;nbsp;be&amp;nbsp;sustainable&amp;nbsp;and&amp;nbsp;a&amp;nbsp;problem-solving&amp;nbsp;tool,&amp;nbsp;certain&amp;nbsp;elements&amp;nbsp;need&amp;nbsp;to&amp;nbsp;be&amp;nbsp;considered.&amp;nbsp;Among&amp;nbsp;these,&amp;nbsp;the&amp;nbsp;most&amp;nbsp;important&amp;nbsp;seem&amp;nbsp;to&amp;nbsp;be,&amp;nbsp;&quot;Can&amp;nbsp;the&amp;nbsp;model&amp;nbsp;be&amp;nbsp;easily&amp;nbsp;retrained&amp;nbsp;and&amp;nbsp;evaluated?&quot;&amp;nbsp;and&amp;nbsp;&quot;Are&amp;nbsp;there&amp;nbsp;standards&amp;nbsp;prepared&amp;nbsp;for&amp;nbsp;scalable&amp;nbsp;AI?&quot;&lt;br /&gt;&lt;br /&gt;At a time when AI for AI is being discussed, it's evident that to make AI sustainable and a truly problem solving tool, rather than jumping into model competition, we need to build systems. And it seems that Palantir's CTO expressed this system as an AI Data Grid.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Most AI models deployed today are quite brittle: they have been developed and trained for a specific use case under specific conditions. Once deployed, model performance and quality may degrade quickly as the data environment evolves. Further, throwing a model at an adjacent problem without re-training it usually does not work.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Just&amp;nbsp;like&amp;nbsp;the&amp;nbsp;potential&amp;nbsp;of&amp;nbsp;electricity&amp;nbsp;exploded&amp;nbsp;when&amp;nbsp;standards&amp;nbsp;for&amp;nbsp;electricity&amp;nbsp;and&amp;nbsp;voltage&amp;nbsp;were&amp;nbsp;established,&amp;nbsp;and&amp;nbsp;a&amp;nbsp;system&amp;nbsp;was&amp;nbsp;built&amp;nbsp;to&amp;nbsp;easily&amp;nbsp;pull&amp;nbsp;and&amp;nbsp;use&amp;nbsp;electricity&amp;nbsp;elsewhere,&amp;nbsp;resulting&amp;nbsp;in&amp;nbsp;&quot;problem-solving&amp;nbsp;products&quot;&amp;nbsp;like&amp;nbsp;toasters,&amp;nbsp;hair&amp;nbsp;dryers,&amp;nbsp;and&amp;nbsp;washing&amp;nbsp;machines,&amp;nbsp;I&amp;nbsp;think&amp;nbsp;the&amp;nbsp;same&amp;nbsp;could&amp;nbsp;be&amp;nbsp;true&amp;nbsp;for&amp;nbsp;AI.&lt;br /&gt;&lt;br /&gt;Considering&amp;nbsp;Elon&amp;nbsp;Musk's&amp;nbsp;built&amp;nbsp;ecosystem&amp;nbsp;and&amp;nbsp;his&amp;nbsp;relationship&amp;nbsp;with&amp;nbsp;Peter&amp;nbsp;Thiel&amp;nbsp;as&amp;nbsp;a&amp;nbsp;member&amp;nbsp;of&amp;nbsp;the&amp;nbsp;PayPal&amp;nbsp;Mafia,&amp;nbsp;using&amp;nbsp;Palantir's&amp;nbsp;data&amp;nbsp;grid&amp;nbsp;could&amp;nbsp;easily&amp;nbsp;migrate&amp;nbsp;AI&amp;nbsp;learned&amp;nbsp;from&amp;nbsp;Tesla's&amp;nbsp;cars&amp;nbsp;to&amp;nbsp;Optimus's&amp;nbsp;Vision,&amp;nbsp;use&amp;nbsp;it&amp;nbsp;to&amp;nbsp;create&amp;nbsp;a&amp;nbsp;product&amp;nbsp;for&amp;nbsp;SpaceX,&amp;nbsp;and&amp;nbsp;create&amp;nbsp;an&amp;nbsp;environment&amp;nbsp;where&amp;nbsp;X.AI&amp;nbsp;could&amp;nbsp;easily&amp;nbsp;customize&amp;nbsp;TruthGPT,&amp;nbsp;a&amp;nbsp;language&amp;nbsp;model&amp;nbsp;(LLM)&amp;nbsp;learned&amp;nbsp;from&amp;nbsp;Twitter&amp;nbsp;data,&amp;nbsp;to&amp;nbsp;solve&amp;nbsp;problems&amp;nbsp;for&amp;nbsp;Tesla,&amp;nbsp;SpaceX,&amp;nbsp;or&amp;nbsp;other&amp;nbsp;companies.&amp;nbsp;In&amp;nbsp;fact,&amp;nbsp;Tesla&amp;nbsp;uses&amp;nbsp;Palantir's&amp;nbsp;Foundry&amp;nbsp;(it's&amp;nbsp;not&amp;nbsp;explicitly&amp;nbsp;revealed,&amp;nbsp;but&amp;nbsp;a&amp;nbsp;Tesla&amp;nbsp;Domain&amp;nbsp;exists&amp;nbsp;on&amp;nbsp;Foundry),&amp;nbsp;which&amp;nbsp;means&amp;nbsp;that&amp;nbsp;the&amp;nbsp;scenario&amp;nbsp;mentioned&amp;nbsp;earlier&amp;nbsp;is&amp;nbsp;not&amp;nbsp;entirely&amp;nbsp;nonsensical.&lt;br /&gt;&lt;br /&gt;The analogy of GPT4 and other generative AI models to a &quot;light bulb&quot; is impressive. When the potential of a light bulb lies not in &quot;emitting light&quot; but in &quot;creating a use case that can use light,&quot; I believe we can fully utilize the potential of this AI when a data infrastructure that illuminates not just a solitary bulb but an entire high-rise building is established. We need not bulbs, but toasters or televisions that can solve problems.&lt;/p&gt;</description>
      <category>Artificial Intelligence</category>
      <category>Ai</category>
      <category>data grid</category>
      <category>electricity</category>
      <category>Palantir</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/393</guid>
      <comments>https://yeoulcoding.tistory.com/393#entry393comment</comments>
      <pubDate>Sun, 13 Aug 2023 09:11:27 +0900</pubDate>
    </item>
    <item>
      <title>구체로부터의 추상, 현실로부터의 철학</title>
      <link>https://yeoulcoding.tistory.com/349</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OwWAk/btsd0TteORK/U8EpICWUoyAsbNyRK9pAqk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OwWAk/btsd0TteORK/U8EpICWUoyAsbNyRK9pAqk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OwWAk/btsd0TteORK/U8EpICWUoyAsbNyRK9pAqk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOwWAk%2Fbtsd0TteORK%2FU8EpICWUoyAsbNyRK9pAqk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;462&quot; height=&quot;300&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;260&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;철학이 무엇이냐고 물어보면 &quot;시대의 흐름을 관념으로 포착한 것&quot;이라 대답하곤 한다. 이는 철학이 있고 세상이 있는 것이 아니라 세상이 먼저 있고, 거기서 포착해 낸 관념이 철학이라는 것을 의미한다. 이런 의미에서 어떤 하나의 철학이나 하나의 이론을 진실의 원천(Single Source of Truth)로 두고 거기서 연역적으로 사고하며 현상이나 세상을 그 틀에 끼워 맞춰보려는 시도를 항상 경계하려고 노력한다. (경계하는 것이 부정한다는 의미는 아니다.) 이러한 사고에는 노자의 무위 사상, 그중에서도 &quot;개념화를 경계하는 태도&quot;가 적지 않은 영향을 미쳤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리의 뇌는 본래 &quot;개념화&quot;를 좋아하는 것 같다. A라는 현상과 B라는 현상과 C라는 현상을 겪고 나면, 이 현상들을 더 잘 기억하기 위해 나름의 최적화 매커니즘을 거쳐 공통점을 뽑아내고 이를 하나의 개념으로 묶는 것에 익숙하다. 개념화는 수많은 현상들의 공통점을 찾아내어&amp;nbsp; 묶어냄으로써 새로운 현상 D가 발생했을 때, 이를 이 개념에 넣을지 말지를 결정하는 방식으로 의사결정을 내리는데 필요한 에너지를 줄인다. 우리의 뇌가 개념화를 활용할 수 있게 되면서 우리는 더 많은 정보들을 사용해서 추론하고 의사결정을 내릴 수 있게 되었지만, 반대로 각 현상이 가지고 있는 개별적인 특성들을 놓치고, 기존 개념을 구성하는 현상에 대한 아집을 만들어 내기도 했다. 즉 많은 것들을 이해하고 추론할 수 있게 되었지만, 오히려 현상을 &quot;있는 그대로 보는 능력&quot;을 너무나도 많이 잃어버리게 된 것이다. 이는 개념의 정의 자체가 &quot;일반적인 것&quot;을 내포하기 때문이다. 현상에서 일반적이지 않은 특수한 것, 사적인 것이 모두 버려지고 난 공통의 것을 관념적으로 포착한 것이 개념이기 때문에 개념에는 사적인 특성이 배제되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지식은 정말 우리를 자유롭게 하는가? 박을 사용해서 속을 긁어서 국을 끓이고, 껍질로는 바가지로 만드는 방법에 대해 학교에서 배운 사람이 박을 물에 띄워 배처럼 가지고 놀고 있는 아이를 보며 &quot;그건 박을 사용하는 방법이 아니야&quot;라고 이야기한다면, 이 사람이 가지고 있는 박에 대한 지식은 이 사람을 자유롭게 하지 못한다. 되려 아집에 사로잡혀 있는 그대로의 현실을 보지 못하게 하고, 새로운 가능성을 제거해 버리는 역할을 할 뿐이다. 수많은 다양한 상황 속에서 나도 나만의 &quot;박에 대한 지식&quot;으로 인해 아집에 사로잡혀 새로운 가능성들과 있는 그대로의 현실을 보지 못하게 되는 것은 아닌지 고민을 하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노자에 따르면, 이 세계는 관계와 변화로 되어 있다고 한다. 그리고 내가 학습하는 과정에서 습득한 개념은 대개 언어의 형태로 표현된다. 하지만 상호 연관된 구조 속에서 부단한 변화를 이행하는 세계를 언어는 제대로 반영할 수 없다. &quot;언&quot;의 행위에는 반드시 내용, 즉 의미가 들어 있는데, 그 내용과 의미에 대응되는 세계의 어떤 대상은 항상 변화와 관계 속에 있는 것이 므로 특정한 것으로 확정될 수 없기 때문이다. 따라서 내가 &quot;언어&quot;의 형태로 가지고 있는 개념은 나의 세계와 이념을 구성하는 데에 있어서 필수적인 역할을 수행하며 나의 이해와 직관을 확장시키지만, 변화하는 세계에서 발생하는 현상을 항상 정확하게 반영하지 못하고 있을 가능성이 높다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불과 몇년 전까지만 해도 1년 뒤의 내 모습, 3년 뒤의 내 모습, 5년 뒤의 내 모습을 그려보고 그 계획에 맞춰 오늘 하루를 계획하는 것을 좋아했다. 하지만 내 계획이 내가 갖고 있는 개념들로부터 비롯된 인과적 추론의 산물이며, 현실에서 사적인 측면들을 제거하고 일반적인 것들만 남겨 언어의 형태로 정제한 것들이기에 변화하는 세계를 올바르게 반영한다고 보기 어려웠다. (게다가 나는 미래를 제대로 예측하지도 못한다. 내가 1년 전에 예측한 2023년 은 도대체 맞는 것이 하나도 없다.) 따라서 치밀하게 여러 변수들을 고려하며 미래를 예측하여 계획을 세우기보다는 계획없이 그저 세상을 관찰하기로 결정했고, 그저 주어진 하루를 열심히 관찰하면서 살고 있다. 동그란 그릇이 주어지면 동그랗게 담기고, 네모난 그릇이 주어지면 네모나게 담기는 대기면성의 면모를 갖춘 이가 되는 것이 목표이다. (이것이 대책없이 산다는 것을 의미하지는 않는다. 대기면성의 면모를 갖추기 위해서는 변하는 세상에서 변하지 않는 것들을 찾아내어 역량으로 만드는 일이 중요하다고 생각하며 이는 개별 현상 속에서 isomorphic한 것들을 찾아내는 노력을 통해 도달할 수 있다고 생각한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노자에 따르면 자신을 천하만큼 사랑하고 귀하게 여기는 사람만이 진정한 의미에서 천하를 맡을 수 있다고 한다. 이는 이념적 세계에 머무르지 않고 개별 현상으로 나아가라는 것을 의미하는 것이라 생각한다. 있는 그대로의 현실을 느끼고 받아들이고 관찰하며 경험하는 자, 즉 봄을 &quot;만지는 자&quot;가 되기위한 고민을 더 해봐야 하겠다.&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;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그러므로 자신의 몸을 천하만큼이나 귀하게 여긴다면 천하를 줄 수 있고,&lt;br /&gt;자신의 몸을 천하만큼이나 아낀다면 천하를 맡길 수 있을 것이다.&lt;br /&gt;- 노자 도덕경 제13장&lt;br /&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;</description>
      <category>Philosophy &amp;amp; Thinking</category>
      <category>노자</category>
      <category>도덕경</category>
      <category>무위</category>
      <category>철학</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/349</guid>
      <comments>https://yeoulcoding.tistory.com/349#entry349comment</comments>
      <pubDate>Fri, 5 May 2023 16:41:21 +0900</pubDate>
    </item>
    <item>
      <title>Protocol Stack - Data Link Layer</title>
      <link>https://yeoulcoding.tistory.com/384</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAg8PE/btsbQ1BsJfY/tOVjQDCa82WvZDvu2SX6sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAg8PE/btsbQ1BsJfY/tOVjQDCa82WvZDvu2SX6sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAg8PE/btsbQ1BsJfY/tOVjQDCa82WvZDvu2SX6sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAg8PE%2FbtsbQ1BsJfY%2FtOVjQDCa82WvZDvu2SX6sk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;406&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Overview&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yeoulcoding.me/377&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Physical Layer를 다룬 이전 포스팅&lt;/a&gt;에 이어 이번 포스팅에서는 Data Link Layer를 다뤄보려 합니다. Signal Element의 형태로 수신자에게 들어온 신호는 Physical Layer를 통해 &quot;011010&quot;과 같은 비트 스트림으로 변환됩니다. (특정 매체의 경우 Forward Error Correction을 거쳐서 어느 정도 보정된 데이터를 올려 보내기도 합니다.) 이 데이터는 Data Link Layer로 전달되어 프레임의 단위로 해석됩니다. Data Link Layer는 이 프레임을 온전한 형태로 안전하게 상위 레이어(대개 Internet Layer)로 전달하는 역할을 합니다.&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;This layer is concerned with access to and routing data across a network for two end systems attached to the same network. In those cases where two devices are attached to different networks, procedures are needed to allow data to traverse multiple interconnected networks. This is the function of the internet layer&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;이 Protocol Stack 포스팅 시리즈는 Network Protocol Stack에 대한 전반적인 그림을 가볍게 다루는 글이므로 복잡한 수식이나 최적화를 위한 Utilization 계산은 최대한 생략할 예정이며, 특정 부분에 대한 깊은 지식을 요구하는 부분들은 생략하면서 진행될 예정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Frame Sync&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Frame은 상위 레이어에서 내려온 datagram을 Data Link Layer에서 메타데이터를 추가해 한번 감싼 형태의 데이터로, 이 레이어에서 통신의 단위가 됩니다. 하지만 결국 이 Frame도 Physical Layer로 내려가 인코딩 되어 매체를 통해 전송된 뒤, 다시 수신 측의 Physical Layer의 decoding을 거쳐 Data Link Layer로 해석되어야 하며, 이는 수신 측에서 송신 측에서 보낸 Frame의 시작 부분과 끝 부분을 정확하게 구분할 수 있어야 한다는 것을 의미합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RalK2/btsd1iTKliE/RNVBpkfdyJO7EaWMKob7Z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RalK2/btsd1iTKliE/RNVBpkfdyJO7EaWMKob7Z0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RalK2/btsd1iTKliE/RNVBpkfdyJO7EaWMKob7Z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRalK2%2Fbtsd1iTKliE%2FRNVBpkfdyJO7EaWMKob7Z0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;392&quot; data-origin-width=&quot;614&quot; data-origin-height=&quot;478&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;Data Link Layer에서는 전형적으로 각 프레임의 앞과 뒤에 특정 bit 패턴을 추가로 넣는 &quot;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bit_stuffing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bit stuffing&lt;/a&gt;&quot;을 사용해서 Frame Sync를 수행합니다. 즉, 송신 측에서 프레임과 프레임사이에 특정 패턴의 비트를 추가해서 전송하고 수신 측에서 이 패턴의 비트를 감지하면, 이를 프레임을 구분하는 기준으로 사용해서 프레임을 구분하는 것입니다. (frame 앞에 붙는 비트를 preamble, 뒤에 붙는 비트를 postamble이라고 합니다.)&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;In data transmission and telecommunication, bit stuffing (also known&amp;mdash;uncommonly&amp;mdash;as positive justification) is the insertion of non-information bits into data. Stuffed bits should not be confused with overhead bits.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yMhnc/btsdZiOlReG/VyYYxyFxutcw23OfBks48K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yMhnc/btsdZiOlReG/VyYYxyFxutcw23OfBks48K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yMhnc/btsdZiOlReG/VyYYxyFxutcw23OfBks48K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyMhnc%2FbtsdZiOlReG%2FVyYYxyFxutcw23OfBks48K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;82&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGHg6b/btsd006KcaW/4xTqCwkK0u7XXI9zQwjYkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGHg6b/btsd006KcaW/4xTqCwkK0u7XXI9zQwjYkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGHg6b/btsd006KcaW/4xTqCwkK0u7XXI9zQwjYkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGHg6b%2Fbtsd006KcaW%2F4xTqCwkK0u7XXI9zQwjYkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;697&quot; height=&quot;37&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;37&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;h2 data-ke-size=&quot;size26&quot;&gt;Flow Control&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크쪽 관련된 글들을 읽거나 검색을 해보셨다면 &quot;ACK&quot;, &quot;NACK&quot;와 같은 용어를 어디선가 들어보신 적이 있으실 것입니다. 이는 &quot;Acknowledged&quot;, &quot;Not Acknowledged&quot;의 약자로, Flow Control System에서 사용되는 용어들 중 하나입니다. (Flow Control System에서 사용한다고 해서 반드시 Data Link Layer에 국한된 용어는 아닙니다. 이후 포스팅에서도 설명하겠지만, Transmission Layer(TCP / IP)도 Flow Control System을 갖고 있으며, 여기서도 동일한 용어가 다시 등장하게 됩니다.)&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;Flow Control은 송신 측에서 수신자가 받을 수 있을 만큼의 데이터만 전송할 수 있도록 보장하는 기술입니다. 즉, 송신자가 보낼 데이터가 아직 남아있다 하더라도, 수신 측의 Buffer가 가득 차있는 상태라면 바로 데이터를 전송하지 않고 기다려 안정적인 전송이 가능하도록 합니다. 이 Flow Control에는 Stop &amp;amp; Wait과 Sliding Window 방식이 있으며, 각각의 방식은 이후 Error Control 방식에도 영향을 미치게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Flow control is a technique for assuring that a transmitting entity does not overwhelm a receiving entity with data. The receiving entity typically allocates a data buffer of some maximum length for a transfer. When data are received, the receiver must do a certain amount of processing before passing the data to the higher-level software. In the absence of flow control, the receiver&amp;rsquo;s buffer may fill up and over- flow while it is processing old data.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Stop &amp;amp; Wait&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 단순한 Flow Control Scheme입니다. 송신 측에서 프레임을 하나 보내고, 수신 측에서 이 프레임을 정상적으로 수신했으면 송신 측에 ACK 프레임을 전송합니다. &lt;u&gt;ACK 프레임을 받기 전까지 송신 측은 추가적인 Frame을 보내지 않고 기다리다가(Stop &amp;amp; Wait) ACK 프레임이 도착하면 다음 프레임을 전송하고, ACK 프레임이 도착하지 않으면 특정 Timeout 시간까지 기다리다가 Timeout이 나면 동일한 프레임을 다시 전송합니다.&lt;/u&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;ACK는 여러가지 이후로 도착하지 않을 수 있습니다. 수신 측에서 프레임을 받지 못했거나, 수신 측에서 프레임을 받았지만 ACK 프레임이 중간에 유실되어 송신 측에서 ACK 프레임을 받지 못하는 경우입니다. Stop &amp;amp; Wait는 이 모든 케이스에 대응이 가능하지만, 하나의 프레임이 완전히 전송이 성공된 이후에야 다음 프레임을 보낼 수 있으므로, 다량의 프레임을 보내야 하는 경우에는 성능이 다소 떨어지는 문제가 생기게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;677&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z5Py1/btsd3ewNX4m/dkGWrP3LzNIkQvmJUhMwV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z5Py1/btsd3ewNX4m/dkGWrP3LzNIkQvmJUhMwV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z5Py1/btsd3ewNX4m/dkGWrP3LzNIkQvmJUhMwV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ5Py1%2Fbtsd3ewNX4m%2FdkGWrP3LzNIkQvmJUhMwV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;565&quot; height=&quot;682&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;677&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;h3 data-ke-size=&quot;size23&quot;&gt;Sliding Window&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sliding Window 방식은 앞서 설명한 Stop &amp;amp; Wait 방식의 단점(하나의 프레임에 대한 ACK가 도착해야만 다음 프레임을 보낼 수 있으므로, 여러 개의 프레임을 보내야 할 때 성능이 떨어짐)을 개선하기 위한 방식입니다.&lt;u&gt; 특정 크기의 윈도우(W)를 정해두고, 프레임을 ACK 없이 W개까지 연속으로 보냅니다.&lt;/u&gt; 송신측에서는 W개의 프레임을 보내고 ACK이 하나 도착하면&amp;nbsp; 그다음 프레임을 하나 보내고, 그 와중에 또 ACK이 하나 도착하면 또 그다음 프레임을 하나 보내는 식으로 최대 W개까지 연속적으로 프레임을 보낼 수 있도록 하여 성능을 개선합니다. 프레임을 보내는 방식이 창문을 열고 닫는 것과 비슷하다고 하여 Sliding Window라는 이름이 붙게 되었습니다.&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;아래 예시를 통해 Sliding Window 방식이 어떻게 동작하는지 간단하게 살펴보도록 하겠습니다. A가 송신 측, B가 수신 측이라고 가정하겠습니다. A는 7개의 Sending Window를 가지고 있으며, B는 7개의 Receiving Window를 갖고 있습니다. (Full-Duplex 방식에서는 양측 다 Sending Window와 Receiving Window를 갖습니다.) A에서 0~2번까지 3개의 프레임을 보냅니다. 아직 ACK가 하나도 도착하지 않은 상황이므로 A는 ACK 없이 최대 4개의 프레임을 더 보낼 수 있습니다. B가 3개의 프레임을 받은 뒤에 이에 대한 ACK를 보내면(실제 시스템에서는 ACK도 오버헤드이기 때문에 여러 개의 ACK를 하나로 묶어서 보내기도 합니다.) A는 다시 3개만큼 Window 개수가 늘어나므로 다시 최대 7개의 프레임을 보낼 수 있는 상황이 됩니다. A가 다시 3~6번 프레임을 보내고 B가 3번이 도착했을 때, ACK를 보내고 이후 4~6번 프레임을 수신한 경우, A는 7개의 프레임을 보낼 수 있는 상황에서 4개의 프레임을 보냈으므로 남은 윈도 크기가 3개인 상황에서 4번 프레임에 대한 ACK만 도착했으므로 남은 윈도 크기는 1개만큼 커진 4개가 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXHeub/btsd0SOzr99/VPkc5L47H50uYgAbO40aBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXHeub/btsd0SOzr99/VPkc5L47H50uYgAbO40aBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXHeub/btsd0SOzr99/VPkc5L47H50uYgAbO40aBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXHeub%2Fbtsd0SOzr99%2FVPkc5L47H50uYgAbO40aBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;578&quot; height=&quot;441&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stop &amp;amp; Wait 방식으로 통신했다면 F0을 보내고, 이에 대한 ACK을 받은 뒤에야 F1을 보낼 수 있었겠지만, Sliding Window 방식을 사용하면 ACK 없이 최대 7개의 프레임을 빠르게 보낼 수 있으므로 Propagation Delay가 줄어들어 성능이 좋아집니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Error control&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 프레임이 성공적으로 전송된다면 좋겠지만, 실제 네트워크 환경에서는 여러 가지 이유로 패킷이 유실되거나 변경됩니다. 따라서 상위 레이어로 안정적인 데이터를 보낼 책임이 있는 Data Link Layer는 이 오류를 수정할 책임도 지닙니다. Data Link Layer에서는 크게 Forward Error Control과 Backware Error Control의 2가지 방식으로 에러를 수정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt; Forward Error Control&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅에서도 살펴보았던 것처럼 프레임에 추가적인 정보(Data Redundancy)를 추가하여 수신 측에서 재전송 없이 오류를 수정하는 방식을 Forward Error Control이라고 합니다. CRC나 Parity Check를 통해 에러를 감지하고(Error Detection), BCH Code, Hamming Code 등의 에러 수정 방식(Error Correction)을 사용하여 에러를 재전송 없이 수정합니다. Error Correction 알고리즘은 다소 복잡한 방식을 통해 수행되므로 자세한 내용은 아래 링크를 참고해 주세요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/BCH_code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://en.wikipedia.org/wiki/BCH_code&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Backward Error Control&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Forware Error Correction만으로 에러가 수정될 수 없는 경우들도 자주 발생하며, 이 경우에는 수신 측에서 에러를 수정하기보다는 송신 측에 프레임을 재전송하는 방식으로 에러를 수정하는 방식을 사용합니다. 이를 Backward Error Control이라고 하며 Automatic Repeat reQuest(ARQ)라는 방식을 사용해 프레임 재전송을 요청합니다.&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;Stop and Wait ARQ&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stop and Wait 방식에서 발생하는 프레임 에러에 대해 재전송을 요구하는 방식으로 한 번에 하나의 프레임만 전송하고, ACK을 기다리기 때문에 송신 측에서는 ACK이 오지 않으면 설정해 둔 Timeout시간까지 기다렸다가 프레임을 다시 보내고, 수신 측에서는 프레임을 받으면 ACK을, 받았지만 처리할 수 없으면 NACK을 보내는 방식으로 작동합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Go-back-N ARQ&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sliding Window에서 발생하는 프레임 에러에 대해 재전송을 요구하는 방식으로 수신 측에서 여러 개의 프레임을 받았지만 그중 하나에서 에러가 감지되면, 그 이후의 프레임을 모조리 버리고 재전송을 요구합니다. 예를 들어 아래의 그림에서 송신 측이 4, 5, 6번 프레임을 보냈지만 4번 프레임에서 에러가 발생한 경우 수신 측은 정상적으로 도착한 5, 6번 프레임도 버리게 되며, 이에 따라 송신 측에서는 4, 5, 6번 프레임을 모두 다시 보내야 합니다. 이는 아래에서 설명할 Selective-reject 방식보다 전송 효율이 떨어지지만, 구현이 간단하고 수신 측에서 별도의 버퍼를 관리할 필요가 없다는 이점으로 인해 널리 사용되는 ARQ 방식입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;If the destination station detects an error in a frame, it may send a negative acknowledgment (REJ = reject) for that frame, as explained in the fol- lowing rules. The destination station will discard that frame and all future incoming frames until the frame in error is correctly received. Thus, the source station, when it receives a REJ, must retransmit the frame in error plus all succeeding frames that were transmitted in the interim.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Selective-reject ARQ&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Go-back-N 방식과 마찬가지로 Sliding Window에서 발생하는 프레임에 에러에 대해 재전송을 요구하는 방식입니다. 다만 Go-back-N과는 다르게 여러 개의 프레임 중 하나의 프레임에서 에러가 발생할 경우, 해당 프레임만 재전송을 요구하므로 전송효율이 높아집니다. 대신에 수신 측에서 별도의 버퍼와 로직을 통해 어떤 프레임에서 에러가 났고 어떤 프레임은 성공했는지에 대한 관리를 해주어야 하며 이로 인해 복잡도가 높아집니다. 이 방식은 프레임을 재전송하는 데 걸리는 시간이 오래 걸리는 경우(e.g 위성통신)에 주로 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;With selective-reject ARQ, the only frames retransmitted are those that receive a negative acknowledgment, in this case called SREJ, or those that time out. &lt;br /&gt;&lt;br /&gt;Selective reject would appear to be more efficient than go-back-N, because it minimizes the amount of retransmission. On the other hand, the receiver must maintain a buffer large enough to save post-SREJ frames until the frame in error is retransmitted and must contain logic for reinserting that frame in the proper sequence. The transmitter, too, requires more complex logic to be able to send a frame out of sequence. Because of such complications, selective-reject ARQ is much less widely used than go-back-N ARQ. Selective reject is a useful choice for a satellite link because of the long propagation delay involved.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;699&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nmxlP/btsdZLWPD1N/BGb4I8WkdeyXrcnLa4oFwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nmxlP/btsdZLWPD1N/BGb4I8WkdeyXrcnLa4oFwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nmxlP/btsdZLWPD1N/BGb4I8WkdeyXrcnLa4oFwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnmxlP%2FbtsdZLWPD1N%2FBGb4I8WkdeyXrcnLa4oFwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;637&quot; height=&quot;699&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;699&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;h2 data-ke-size=&quot;size26&quot;&gt;High-level Data Link Control (HDLC)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 Data Link Layer가 무엇이며 어떤 역할을 수행하는지에 대해 고수준의 추상화 단계에서 간단하게 살펴보았습니다. 아래에서 소개할 HDLC라는 개념은 위에서 살펴본 Data Link Layer의 기능을 수행하기 위해 정의된 프로토콜 입니다. 이는 현재 사용되는 프로토콜의 기반이 되는 중요한 개념들을 많이 포함하고 있기 때문에 Data Link Layer가 실제로 어떻게 주어진 역할을 수행하는지를 이해하는데 많은 도움을 줍니다.&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;The most important data link control protocol is HDLC (ISO 3009, ISO 4335). Not only is HDLC widely used, but it is the basis for many other important data link control protocols, which use the same or similar formats and the same mechanisms as employed in HDLC. &lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Frame Structure&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Data Link Layer의 기본 데이터 단위는 Frame 입니다. HDLC 프로토콜에서는 이 Frame을 다음과 같은 구조로 구성합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cc8YaP/btsdZ0sSVPZ/zr1OD6oRpeHVGazfcqDeHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cc8YaP/btsdZ0sSVPZ/zr1OD6oRpeHVGazfcqDeHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cc8YaP/btsdZ0sSVPZ/zr1OD6oRpeHVGazfcqDeHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcc8YaP%2FbtsdZ0sSVPZ%2Fzr1OD6oRpeHVGazfcqDeHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;567&quot; height=&quot;112&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;112&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;Flag&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flag는 수신측에서 Frame Sync를 맞추기 위해 추가한 bit를 의미합니다.&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Flag fields delimit the frame at both ends with the unique pattern 01111110. A single flag may be used as the closing flag for one frame and the opening flag for the next. On both sides of the user-network interface, receivers are continuously hunting for the flag sequence to synchronize on the start of a frame.&lt;/blockquote&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Control&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Control 필드는 프레임의 종류를 구분하기 위해 사용됩니다. 프레임은 데이터를 전송하기 위한 Information Frame, ACK, NACK를 전송하기 위해 사용되는 Supervisory Frame, 링크 관리를 위해 사용되는 Unnumbered Frame으로 구분되며 이를 Control 필드의 비트를 사용해 구분합니다. Information Frame의 경우 Duplex 방식에서 사용될 때, A에서 B에게 데이터를 전송할 때 사용하는 Information Frame에 B가 전송한 데이터를 받았다는 응답(ACK)을 포함해서 보내기도 하는데, 이를 &lt;a href=&quot;https://en.wikipedia.org/wiki/Piggybacking_(data_transmission)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Piggyback ACK&lt;/a&gt;라고 합니다. (즉, ACK를 보내기 위해서 무조건 Supervisory Frame을 사용해야 하는 것은 아니며, Piggyback ACK를 사용해서 Duplex 방식에서 전송 효율을 높일 수 있습니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBX5Pu/btsd0vzcxcg/89Apev59dudfIAnRAxers0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBX5Pu/btsd0vzcxcg/89Apev59dudfIAnRAxers0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBX5Pu/btsd0vzcxcg/89Apev59dudfIAnRAxers0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBX5Pu%2Fbtsd0vzcxcg%2F89Apev59dudfIAnRAxers0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;198&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;HDLC defines three types of frames, each with a different control field format. Information frames (I-frames) carry the data to be transmitted for the user (the logic above HDLC that is using HDLC). Additionally, flow and error control data, using the ARQ mechanism, are piggybacked on an information frame. Supervisory frames (S-frames) provide the ARQ mechanism when piggy- backing is not used. Unnumbered frames (U-frames) provide supplemental link control functions. &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;h4 data-ke-size=&quot;size20&quot;&gt;FCS&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FCS는 Frame Check Sequence의 약자로 CRC와 같이 Frame의 Error Detection을 수행하기 위한 추가적인 비트를 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 Physical Layer에 이어 Data Link Layer가 무엇이며, 어떤 기능을 하는지에 대해 간략하게 살펴보았습니다. Data Link Layer는 인접한 두 노드 간의 데이터 전송이 안정적으로 수행될 수 있도록 Flow Control과 Error Control을 제공합니다. 이 레이어의 기능을 수행하기 위한 프로토콜로 HDLC라는 프로토콜이 있으며, 이 프로토콜은 Flag, Control, FCS와 같은 추가적인 정보들을 프레임에 포함함으로써 레이어의 기능을 수행하는데 도움을 줍니다.&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;다음 포스팅에서는 Ethernet과 IP를 다루는 Network Layer에 대해 살펴보도록 하겠습니다.&lt;/p&gt;</description>
      <category>Computer Science/Network</category>
      <category>computerscience</category>
      <category>CS</category>
      <category>Network</category>
      <category>네트워크</category>
      <category>데이터통신</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/384</guid>
      <comments>https://yeoulcoding.tistory.com/384#entry384comment</comments>
      <pubDate>Fri, 5 May 2023 15:07:46 +0900</pubDate>
    </item>
    <item>
      <title>Constellation Business Model and Antifragility</title>
      <link>https://yeoulcoding.tistory.com/387</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cl1WK2/btsbVduacoo/5QYpFi6I9A80ViNYy4XMkk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cl1WK2/btsbVduacoo/5QYpFi6I9A80ViNYy4XMkk/img.jpg&quot; data-alt=&quot;CSI Software Business Model&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cl1WK2/btsbVduacoo/5QYpFi6I9A80ViNYy4XMkk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcl1WK2%2FbtsbVduacoo%2F5QYpFi6I9A80ViNYy4XMkk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;570&quot; height=&quot;408&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;660&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CSI Software Business Model&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀원들과 여러 비즈니스 모델들에 대한 이야기를 나누다가 현실 세계에서 Antifragile 한 비즈니스 구조는 과연 어떤 형태일까에 대해 고민하고 있다는 생각을 내비쳤고, 관련된 이야기를 꼬리에 꼬리를 물고 진행하다가 CSI라는 회사를 알게 되었다. 위의 그림에서 보여주듯, CSI라는 회사는 서로 다른 특성들과 도메인을 가진 SaaS 회사를 500개 이상 인수해서 운영되고 있으며 2022년 기준 매출이 $5~8B이고 Market Cap은 $50B 정도 된다고 한다. 이러한 비즈니스 모델로 운영되고 있는 회사 자체를 처음 보기도 했고, 직관적으로 이 회사는 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;하방압력보다 상방 압력이 큰 비즈니스 구조를 가지고 있다고 생각해서 꽤나 신선한 충격을 받았다. 이 회사를 접하고 거의 일주일 내내 이 모델 (이걸 Constellation Business Model이라 하겠다)에 대한 생각을 지울 수 없었다. 내가 원하는 비즈니스 모델의 형태가 정확히 이러한 것일지에 대해서는 조금 더 고민해 볼 필요가 있겠지만 이러한 형태의 모델이 주는 영감들이 있어 이를 정리해보고자 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안티프래질을 접하고 나서부터, 개인적으로는 꽤 거리감이 있는 미래를 예측하고 그 예측에 기반해서 시작하는 일을 그렇게 좋아하지 않는다.(오해의 소지가 있을 수 있으나, &lt;u&gt;미래를 예측하는 것에 대한 거부감이라기보다는 예측된 미래의 프래질을 충분히 탐지하지 않고 베팅을 하는 것에 대한 거부감&lt;/u&gt;이다. &lt;a href=&quot;https://yeoulcoding.me/383&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이전 글&lt;/a&gt;에서도 언급했듯, 나는 미래를 그릴 수 있는 능력이 좋은 문제를 발견하는데 있어서 핵심 역량이라고 생각한다.) 특히 그 미래가 꽤나 거리가 먼 5년 후, 10년 후를 내다보는 것이라면 더욱 그렇다. 5년 뒤에 AI기술이 시장의 50%를 차지할 것이라던가, Web3시장의 마켓 캡이 몇조 달러 단위가 될 거라던가 하는 것은 내가 생각하기에 미래를 예측하는 것이 아니며 애매한 불안감만을 조성하는 마케팅에 가까운 것이라고 생각한다. 왜냐하면 첫째로는 이러한 애매한 예측이라는 것은 내가 하는 일에 대해, 내가 구상하는 서비스들에 대해 유의미한 영향력을 끼치지 못한 채 애매한 불안감만을 남기기 때문이며(5년 뒤에는 AI가 뜰 거니까 우리도 AI 비즈니스를 시작해야 해와 같은 접근은 부정적으로 생각하는 편이다.) 둘째로는 복잡계에서는 어떤 예측을 하기 위해 고려했던 사항들보다 고려하지 못한 사항들이 압도적으로 많을 가능성이 높기 때문이다. 이러한 예측으로 이루어진 구조는 미처 예측하지 못했던 사항들에 의해 무너지기 쉬운 경우가 많다. 따라서 처음 비즈니스를 시작할 때, 미래를 예측하고, 내가 예측한 미래에 많은 것을 베팅하기보다는 오히려 상황을 보아가면서 빠르게 대응하는 것, 그리고 내가 잘하지 못하는 것들을 잘하는 유능한 사람들과 많이 만나고 이야기하는 것이 더 중요하다고 느낀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이는 자연이 역사를 지나온 방식을 생각해보면 조금 더 명확해지는 것 같다. 자연은 5년 뒤에 이러한 생명체들이 유리할 것이라고 생각하고 이를 논리적인 인과관계로 묶어서 유전자를 설계하지는 않는 것 같다. 다만 시대와 상황에 따라 여러 변종들을 만들고(이를 가설을 만든다고 비유할 수 있겠다), 그중 가장 생존에 적합한 종들을 남겨 적응시키는 것뿐이다(이를 가설 검증이라 할 수 있겠다.) 이 과정에서 적합하지 않은 종들은 안타깝지만 폐기되어 역사 속으로 사라진다. 따라서 대자연과 같이 지속가능한 시스템(비즈니스)을 만들기 위해서는 &quot;시대와 상황에 따라 여러 변종들을 만들고&quot;, &quot;생존에 적합하지 않은 종들은 폐기시키는 것&quot;이 자연스러워야 한다고 말할 수 있겠다. 이를 위해서는 생존에 적합하지 않은 종들을 폐기시키는 결정이 쉬워야 하며, 그 비용이 크지 않아야 하고, 시대와 상황에 따라 여러 변종들을 만드는 것이 쉬워야 한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 자연선택의 원리가 중요한 교훈을 주는 이유는 때때로 살아남은 종들 중에서는 도저히 논리적으로 이 종이 왜 생존해 왔는지 이해할 수 없는 경우들도 있기 때문이다. (개인적으로는 나무늘보가 그렇다.) 도대체 이 종은 내가 생각했을 때는 장점이 하나도 없는데 도대체 어떻게 살아남은거지? 싶지만 복잡계에서는 내가 고려할 수 있는 요인들보다 내가 고려하지 못하는 요인들이  압도적으로 많고, 내가 고려하지 못하는 요인들의 조합이 이 종을 생존에 우세한 종으로 만들었을 것이다. 이는 &lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;결국 내가 가지고 있는 여러 지식들을 이리저리 짜맞춰서 전략을 세우는 것도 중요하지만 때때로 중요한 발견은 내가 연역적으로 추론하는 것이 사실상 불가능하다는 것을 의미하며, 이 한계를 극복하기 위해서는 추상적 개념으로부터가 아닌 실제 현상으로부터 출발해서 유의미한 metaphor들을 통해 발견해야 한다는 것을 의미하는 것이라 생각한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 관점에서 CSI가 지향하고 있는 Contellation Business Models은 내가 지금까지 살펴본 비즈니스 모델 중에 가장 이상적이라고 생각하는, 즉 자연선택에 가장 가까운 Antifragile 한 구조를 가진 비즈니스 모델 중의 하나가 아닐까 생각한다. 생존에 적합하지 않은 서비스(종)는 과감하게 제거하고 해당 리소스를 새로운 변종을 만드는 데에 사용할 수 있다면 굉장히 이상적인 구조의 자연선택 모델을 만들 수 있지 않을까 하는 생각이다. 이런 측면에서 올해 안에 이러한 비즈니스 모델을 시도할 준비를 마쳐보려 한다. 물론 CSI라는 회사가 구체적으로 어떤 비전을 가지고 어떤 식으로 SaaS들을 인수하는지는 잘 모르겠지만 여기서 내가 Constellation Business 모델을 시도한다는 의미는 이 회사를 따라하겠다라는 느낌보다는 여기서 얻어낸 통찰을 바탕으로 현상으로부터 출발해서 결과를 만들어내고 있는 여러 작은 모델들을 빠르게 시도해 보겠다는 것에 가깝다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 사람들은 이런 특성이 있고, 이런 것들이 부족하니 이런 식으로 접근하면 될거야 라는 접근들도 작게 시도하지만, 도대체 왜 이런거에 사람들은 돈을 내는 거야? 싶은 모델들, 즉 내가 인과적으로 생각했을 때는 절대로 성공하지 못하는 모델이지만 실제로 현실 세계에서는 어느 정도의 작은 성공을 거두고 있는 모델들을 발견하고 이를 변형해 보는 것들을 많이 경험해보고 싶다는 바람이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;진정 커다란 사각형에는 모서리가 없다.&lt;br /&gt;진정 커다란 음향에는 소리가 없다.&lt;br /&gt;진정 커다란 형상에는 형태가 없다.&lt;br /&gt;- 노자도덕경&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Reference&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://insighter050.substack.com/p/1de&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://insighter050.substack.com/p/1de&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://medium.com/swlh/how-to-build-antifragile-companies-def1219a04a3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://medium.com/swlh/how-to-build-antifragile-companies-def1219a04a3&lt;/a&gt;&lt;/p&gt;</description>
      <category>Philosophy &amp;amp; Thinking</category>
      <category>Business Model</category>
      <category>Constellation</category>
      <category>frontend</category>
      <category>StartUp</category>
      <category>Strategy</category>
      <category>도덕경</category>
      <category>비즈니스 모델</category>
      <category>여울코딩</category>
      <category>전략</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/387</guid>
      <comments>https://yeoulcoding.tistory.com/387#entry387comment</comments>
      <pubDate>Sun, 30 Apr 2023 10:57:01 +0900</pubDate>
    </item>
    <item>
      <title>Protocol Stack - Physical Layer</title>
      <link>https://yeoulcoding.tistory.com/377</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qrXIp/btsbUqzD9s3/djOz9b78uxLSwryvtdUhNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qrXIp/btsbUqzD9s3/djOz9b78uxLSwryvtdUhNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qrXIp/btsbUqzD9s3/djOz9b78uxLSwryvtdUhNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqrXIp%2FbtsbUqzD9s3%2FdjOz9b78uxLSwryvtdUhNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;406&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Overview&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트에서 서버로 데이터를 전송한다고 했을 때, Application에서 전송하는 데이터는 JSON 객체이거나 protocol buffer와 같은 메시지인 것처럼 보이지만, 실제로 이 데이터는 더 작은 데이터들로 쪼개져 네트워크의 여러 추상화 계층을 거쳐 물리적 매체를 통해 아날로그 시그널의 형태로 전달됩니다. &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;보통&lt;span&gt; &lt;/span&gt;&lt;/span&gt;웹 애플리케이션을 개발할 때는 Application Layer만 이해하고 있어도 큰 문제가 없지만, 개인적으로 한국에서 미국으로 json 객체를 보낼 때, 혹은 파일을 업로드하거나 다운로드할 때 이 데이터들이 어떤 형태로 어떤 과정을 거쳐 전달되는지, 그리고 중간에 에러가 발생했을 때 어떻게 이를 처리하는지를 이해하고 싶었습니다. 또한 단순히 애플리케이션 개발을 위한 지식이 아닌 무언가 새로운 것들을 만들어내고 이해하고 사고하기 위해서는(이를테면 gRPC나 blockchain과 같은) 데이터 통신의 이런 추상화를 벗겨내야 한다고 생각했고, 이를 조금 더 구체화하기 위해 Network Protocol Stack을 한 단계씩 쫓아가 보기로 했습니다.&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;Protocol Stack 각 시리즈에서는 5 Layered Protocols(보통은 OSI 7 Layer로도 알려져 있지만 Session Layer와 Presentation Layer를 Application Layer의 일부분으로 생각하고 5 Layer로 나누는 경우도 많은 것 같습니다.)를 기준으로 각 Layer에 대한 고수준의 개요를 소개하려 합니다. 고수준의 개요라는 것은 각 레이어가 담당하고 있는 역할과, 이들의 연결관계에 대한 전체적인 그림을 그리는 데에 이 글의 목적이 있으며, 각각의 레이어가 담당하는 역할을 수행하기 위한 구체적인 여러 방법론은 자세히 설명하지 않고 소개하는 정도만 언급하겠다는 것을 의미합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;570&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUdHIM/btsddG26Cvi/p9HEaVUPFlkKQQJTfYgd21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUdHIM/btsddG26Cvi/p9HEaVUPFlkKQQJTfYgd21/img.png&quot; data-alt=&quot;5 layered protocols overview&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUdHIM/btsddG26Cvi/p9HEaVUPFlkKQQJTfYgd21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUdHIM%2FbtsddG26Cvi%2Fp9HEaVUPFlkKQQJTfYgd21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;527&quot; height=&quot;496&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;570&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;5 layered protocols overview&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Physical Layer&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;The physical layer covers &lt;b&gt;the physical interface between a data transmission device&lt;/b&gt; (e.g., workstation, computer) and a transmission medium or network. This layer is concerned with specifying the characteristics of the transmission medium, the nature of the signals, the data rate, and related matters.&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;Overview에서 언급한 것 처럼 우리가 HTTP Request를 다른 호스트로 전송한다고 했을 때 전송되는 HTTP Header, Body와 같은 의미 단위의 데이터들은 결국 011011100.. 과 같은 비트 스트림으로 표현되며, 이 비트 스트림은 이더넷 케이블이나 셀룰러 네트워크, 혹은 전화선을 통해 Signal(Analog Signal, or Digital Signal)의 형태로 전달됩니다. Physical Layer는 이렇게 상위 레이어인 Data Link Layer에서 내려오는 비트 스트림을 Signal의 형태로 인코딩하여 매체(medium)를 통해 전송하고, 수신받은 이 Analog Signal을 다시 디코딩하여 비트 스트림의 형태로 Data Link Layer로 올려 보내는 역할을 담당합니다. 또한 CRC(Cyclic Redundancy Check)와 같은 FEC(Forward Error Correction) 기법을 사용해서 수신된 데이터의 오류를 어느 정도 수정하고, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Interleaving을 사용해서&amp;nbsp;&lt;/span&gt;연속된 비트 에러가 발생했을 때, 에러 수정의 효율을 높이는 역할도 담당합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9fzEz/btsdgSuKXef/DPfK0N2nTRFv5GXe3fdwTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9fzEz/btsdgSuKXef/DPfK0N2nTRFv5GXe3fdwTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9fzEz/btsdgSuKXef/DPfK0N2nTRFv5GXe3fdwTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9fzEz%2FbtsdgSuKXef%2FDPfK0N2nTRFv5GXe3fdwTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;577&quot; height=&quot;464&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;464&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;h2 data-ke-size=&quot;size26&quot;&gt;Encoding&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비트 스트림을 케이블과 같은 매체(medium)를 통해 전달하기 위해서는 이 비트스트림을 시그널(Analog or Digital)의 형태로 인코딩 해야 합니다. 비트스트림을 인코딩하는 데에 한 가지 방법이 아닌 두 가지 방법이 존재하는 이유는 전송 매체의 특성 때문인데, 광섬유나 구리 도선의 경우는 이산적인(Discrete) 전압의 형태로 이루어진 디지털 데이터를 전송하는 것이 용이하지만, 초창기의 전화선이나 무선 전송의 경우 디지털 데이터보다는 연속적인 아날로그 데이터(Sinusoidal)로 전송하는 것에 더 적합하게 설계되었기 때문입니다. 따라서 비트스트림(Digital Data)을 인코딩하는 두 가지 방식을 모두 알아두어야 합니다.&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;h3 data-ke-size=&quot;size23&quot;&gt;Digital Data to Digital Signal&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;A digital signal is a sequence of discrete, discontinuous voltage pulses. Each pulse is a signal element. Binary data are transmitted by encoding each data bit into signal elements&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;Digital Signal은 이산적인(비연속적인) 전압의 순열을 의미합니다. 여기서 전송하려는 데이터(bit)와 Signal Element를 구분해야 하는데, 하나의 데이터는 어떤 Encoding Scheme을 사용하느냐에 따라서 다양한 형태의 Signal Element로 인코딩 될 수 있습니다. 아래는 &quot;01001100011&quot; 이라는 데이터가 서로 다른 encoding scheme에서 어떻게 signal element로 변환되는지에 대한 예시입니다. 예를 들어 가장 간단한 방식 중 하나인 NRZ-L(Non Return to Zero - Level) 방식은 0이라는 비트를 양의 전압(positive voltage)으로,&amp;nbsp; 1이라는 비트를 음의 전압(negative voltage)으로 인코딩합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XQ7S6/btsdeljW5Qg/F4giaFdlXLEXoKbKNkLON0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XQ7S6/btsdeljW5Qg/F4giaFdlXLEXoKbKNkLON0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XQ7S6/btsdeljW5Qg/F4giaFdlXLEXoKbKNkLON0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXQ7S6%2FbtsdeljW5Qg%2FF4giaFdlXLEXoKbKNkLON0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;489&quot; height=&quot;524&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;524&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;각 Encoding Scheme은 각자 그 장단점이 있는데, 연속되는 비트가 나타났을 때, 수신측에서 이를 정확하게 구분해 낼 수 있는지(Self-clocking capability)와 평균 전압이 너무 높아져서 0과 1을 구분할 수 없게 될 가능성은 없는지(Existence of DC Component)의 여부를 주로 평가하게 됩니다. (참고로 예시로 든 NRZI는 두 기준 모두에서 단점을 갖고 있습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Digital Data to Analog Signal&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;We turn now to the case of transmitting digital data using analog signals. The most familiar use of this transformation is for transmitting digital data through the public telephone network.&lt;br /&gt;For the telephone network, modems are used that produce signals in the voice-frequency range. The same basic techniques are used for modems that produce signals at higher frequencies&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;디지털 데이터를 전화선과 같은 매체를 통해 전달하기 위해서는 Analog Signal로 변환해야 합니다. Analog Signal은 연속적인 주파수의 형태를 띠기 때문에 Digital Signal과는 다르게 데이터를 Sinusoidal Carrier Signal에 실어서 전송하게 됩니다. 이는 Sinusoidal Carrier Signal이 변형되는 것을 의미하며, 어떤 부분이 변형되느냐에 따라 ASK(Amplitude, 진폭), FSK(Frequency, 주파수), PSK(Phase, 위상)으로 나누어지게 됩니다. 아래는 &quot;00110100010&quot;이라는 디지털 데이터가 Sinusoidal Carrier Signal에 실려 변형된 모습입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T9LFn/btsdeYWimBl/RyHEfkgpJDGp823TqAkkek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T9LFn/btsdeYWimBl/RyHEfkgpJDGp823TqAkkek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T9LFn/btsdeYWimBl/RyHEfkgpJDGp823TqAkkek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT9LFn%2FbtsdeYWimBl%2FRyHEfkgpJDGp823TqAkkek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;509&quot; height=&quot;499&quot; data-origin-width=&quot;509&quot; data-origin-height=&quot;499&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;QPSK(Quadratic Phase Shift Keying)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각의 개념을 일일이 설명할 수는 없기 때문에 위의 여러 방법 중 Phase Shift Keying, 즉 위상을 변경하는 방법에 대해서만 간략하게 살펴보겠습니다. Quadratic Phase Shift Keying은 디지털 데이터를 2bit씩 묶은 뒤, 0을 -1로, 1은 그대로 1로 변환하여 좌표를 만들고, 해당 좌표가 평면에서 차지하는 각을 위상으로 하여 Carrier Signal을 변조하는 방식입니다. 2bit씩 묶으면 표현가능한 값이 4개가 되고, 이 때문에 Quadratic이라는 단어가 앞에 붙었으며 3bit씩 묶으면 8개를 표현할 수도 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUvFQ9/btsdcJTGp9F/IekG5yDAo81Wl8UBpTACZK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUvFQ9/btsdcJTGp9F/IekG5yDAo81Wl8UBpTACZK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUvFQ9/btsdcJTGp9F/IekG5yDAo81Wl8UBpTACZK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bUvFQ9/btsdcJTGp9F/IekG5yDAo81Wl8UBpTACZK/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;259&quot; height=&quot;256&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 연속된 2개의 비트를 통해 위상을 찾아내고, 해당 위상만큼 Carrier signal을 변조하는 방식을 modulation이라고 하며 QPSK modulator는 아래와 같이 생겼습니다. 이렇게 전송된 carrier signal은 수신측에서 demodulator를 통해 다시 Digital Data로 변환되는데, 이때는 해당 시그널을 특정 시간 T에 대해 적분한 후, 1이나 0으로 변환해서 얻어내게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7iD4O/btsdjoAaWk6/wq07TmuSRtR1AkHXNj7WsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7iD4O/btsdjoAaWk6/wq07TmuSRtR1AkHXNj7WsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7iD4O/btsdjoAaWk6/wq07TmuSRtR1AkHXNj7WsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7iD4O%2FbtsdjoAaWk6%2Fwq07TmuSRtR1AkHXNj7WsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;590&quot; height=&quot;308&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Error Detection &amp;amp; Error Correction&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Physical Layer는 위에서 살펴본 것처럼 Digital Data를 Digital Signal이나 Analog Signal로 변환하고, 시그널을 다시 Digital Data로 변환하는 역할을 합니다. 하지만 그 외에도, Error Detection &amp;amp; Error Correction을 사용해서 전송 과정에서 전파간섭등의 문제로 비트 에러가 발생한 경우 어느 정도는 이를 감지하고 수정해서 Data Link Layer로 올려 보내는 역할도 합니다. (참고로, 전송된 데이터가 사용할 수 없을 정도로 망가졌을 경우에는 retransmission을 요청하게 되는데, 이는 Physical Layer가 아닌 그 위의 Data Link Layer에서 수행하게 됩니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Error Detection&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Error Detection은 크게 Parity Check와 Cyclic Redundancy Check(CRC)의 2가지 방식을 통해 수행할 수 있습니다. (자세한 내용은 이번 포스팅에서는 다루지 않으려 합니다. 대신 원서의 설명으로 간단한 소개를 대신합니다.)&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;Parity Check&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;The simplest error-detecting scheme is to append a parity bit to the end of a block of data. A typical example is character transmission, in which a parity bit is attached to each 7-bit IRA character. The value of this bit is selected so that the character has an even number of 1s (even parity) or an odd number of 1s (odd parity).&lt;br /&gt;&lt;br /&gt;Note, however, that if two (or any even number) of bits are inverted due to error, an undetected error occurs. Typically, even parity is used for synchronous transmission and odd parity for asynchronous transmission.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1MuzH/btsdeZ8NqA3/zGbVmEka0xnV0YpRlCPSp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1MuzH/btsdeZ8NqA3/zGbVmEka0xnV0YpRlCPSp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1MuzH/btsdeZ8NqA3/zGbVmEka0xnV0YpRlCPSp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1MuzH%2FbtsdeZ8NqA3%2FzGbVmEka0xnV0YpRlCPSp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;446&quot; height=&quot;538&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;538&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;Cyclic Redundancy Check(CRC)&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;One of the most common, and one of the most powerful, error-detecting codes is the cyclic redundancy check, which can be described as follows. Given a k-bit block of bits, or message, the transmitter generates an (n - k)-bit sequence, known as a frame check sequence (FCS), such that the resulting frame, consisting of n bits, is exactly divisible by some predetermined number. The receiver then divides the incoming frame by that number and, if there is no remainder, assumes there was no error.3&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;320&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4TA3t/btsdc2eD06x/OziEdZk8tEbq7VxDlOHh3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4TA3t/btsdc2eD06x/OziEdZk8tEbq7VxDlOHh3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4TA3t/btsdc2eD06x/OziEdZk8tEbq7VxDlOHh3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4TA3t%2Fbtsdc2eD06x%2FOziEdZk8tEbq7VxDlOHh3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;508&quot; height=&quot;320&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;320&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;h3 data-ke-size=&quot;size23&quot;&gt;Error Correction&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Error Correction은 송신측에서 전송하려는 데이터에 대해 충분한 추가정보(Redundacny)를 제공해서 재전송(Retransmission) 없이 수신 측에서 데이터를 수정하는 방식을 제공합니다. 즉 수신 측에서 데이터를 받았을 때, Error Detection을 통해 이 데이터가 오류가 있음을 발견했더라도, 적절한 Error Correction 방식을 통해 재전송 없이 이 데이터를 수신 측에서 수정해서 상위레이어로 올려 보내는 것입니다. Error Correction의 방법으로는 BCH Code, Hamming Code, Reed-Solomon Code, Convolutional Code, Turbo Code 등 굉장히 여러 가지 방법이 있으나, 마찬가지로 이 포스팅에서 다루려는 범위를 벗어나므로 BCH Code를 통해 Error Correction이 진행되는 예시만 언급하도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oHqXh/btsdlK32Aqk/AC8XkRerKZzE4UdzQOWaQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oHqXh/btsdlK32Aqk/AC8XkRerKZzE4UdzQOWaQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oHqXh/btsdlK32Aqk/AC8XkRerKZzE4UdzQOWaQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoHqXh%2FbtsdlK32Aqk%2FAC8XkRerKZzE4UdzQOWaQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;639&quot; height=&quot;390&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;390&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;h2 data-ke-size=&quot;size26&quot;&gt;Interleaving&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5ELDK/btsddldWcLb/Q84Yn1WtHjSzkW25pYPh70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5ELDK/btsddldWcLb/Q84Yn1WtHjSzkW25pYPh70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5ELDK/btsddldWcLb/Q84Yn1WtHjSzkW25pYPh70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5ELDK%2FbtsddldWcLb%2FQ84Yn1WtHjSzkW25pYPh70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;458&quot; height=&quot;164&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;164&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;데이터를 인코딩하여 전송하다 보면 감쇠, 간섭등의 이유로 Signal Element가 손상되어 bit error가 나는 경우가 있습니다. 이를 하나의 비트만 손상되는 Single-bit error와 연속적으로 비트가 손상되는 Bust Error로 구분할 수 있는데 single-bit error의 경우 burst error에 비해 감지되기도 쉽고, FEC(Forward Error Control)에 의해 수정되기도 쉽습니다. 따라서 burst error의 경우를 최소화하기 위해 송신측에서 데이터를 전송할 때, 비트의 순서를 적절한 기준으로 섞어서 보내고 수신 측에서 이를 다시 조합하는 Interleaving 방식을 사용합니다.&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;이렇게 Interleaving을 사용하면, burst error가 발생했을 떄, 이를 여러 개의 single bit error로 분산시켜 Error Detection &amp;amp; Error Correction의 효율을 높여줄 가능성을 확률적으로 높여줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;691&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NMu6J/btsddHnuL19/HgnJZXV3B3fetfNbJsecKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NMu6J/btsddHnuL19/HgnJZXV3B3fetfNbJsecKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NMu6J/btsddHnuL19/HgnJZXV3B3fetfNbJsecKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNMu6J%2FbtsddHnuL19%2FHgnJZXV3B3fetfNbJsecKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;691&quot; height=&quot;381&quot; data-origin-width=&quot;691&quot; data-origin-height=&quot;381&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;h2 data-ke-size=&quot;size26&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 조금은 긴 호흡으로 Physical Layer가 무엇이고, 어떤 역할을 하는지에 대해 살펴보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Physical Layer는 데이터 링크 레이어로부터 내려오는 비트 스트림을 시그널(아날로그 신호 또는 디지털 신호)로 인코딩하여 매체(medium)를 통해 전송하고, 수신된 아날로그 신호를 다시 디코딩하여 비트 스트림으로 데이터 링크 레이어로 전달하는 역할을 담당합니다. &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: #333333; text-align: start;&quot;&gt;인코딩에는 디지털 데이터를 디지털 신호로 변환하는 방식과 아날로그 신호로 변환하는 방식이 있으며, 에러 검출 및 수정을 위해 에러 검출 기법(Parity Check, CRC 등)과 에러 수정 기법(BCH 코드, 해밍 코드 등)을 사용합니다. 이 외에도 연속된 비트 에러를 줄이기 위해 인터리빙(Interleaving)을 사용하여 데이터 전송의 효율을 높입니다.&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: #333333; text-align: start;&quot;&gt;다음 포스팅에서는 Data Link Layer에 대해서 살펴보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Reference&lt;/h2&gt;
&lt;figure id=&quot;og_1682762989147&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Data and Computer Communications&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.pearson.com&quot; data-og-source-url=&quot;https://www.pearson.com/en-us/subject-catalog/p/data-and-computer-communications/P200000003353/9780137561704&quot; data-og-url=&quot;https://www.pearson.com/en-us/subject-catalog/p/data-and-computer-communications/P200000003353/9780137561704&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ygKZc/hySsmaoemX/KydJK98KRm6VVks2oG5pU1/img.jpg?width=370&amp;amp;height=513&amp;amp;face=0_0_370_513&quot;&gt;&lt;a href=&quot;https://www.pearson.com/en-us/subject-catalog/p/data-and-computer-communications/P200000003353/9780137561704&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.pearson.com/en-us/subject-catalog/p/data-and-computer-communications/P200000003353/9780137561704&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ygKZc/hySsmaoemX/KydJK98KRm6VVks2oG5pU1/img.jpg?width=370&amp;amp;height=513&amp;amp;face=0_0_370_513');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Data and Computer Communications&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.pearson.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Computer Science/Network</category>
      <category>computerscience</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/377</guid>
      <comments>https://yeoulcoding.tistory.com/377#entry377comment</comments>
      <pubDate>Sat, 29 Apr 2023 22:46:20 +0900</pubDate>
    </item>
    <item>
      <title>개발일지 (4월 회고)</title>
      <link>https://yeoulcoding.tistory.com/376</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;664&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBg8MI/btsbTuQS9lY/PXe7EY3VMj4OvPH95Etax0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBg8MI/btsbTuQS9lY/PXe7EY3VMj4OvPH95Etax0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBg8MI/btsbTuQS9lY/PXe7EY3VMj4OvPH95Etax0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBg8MI%2FbtsbTuQS9lY%2FPXe7EY3VMj4OvPH95Etax0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;556&quot; height=&quot;369&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;664&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;Reading &amp;amp; Thinking&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험기간이 껴 있어서 이번달에는 독서를 많이 못하겠거니 생각하고 있었는데, 아침에 일어나서 책을 읽지 않으면 뭔가 찝찝함이 생기는 경지에 이르렀는지, 그래도 독서를 꾸준히 했다. instagram 계정에 업로드한 것 기준으로는 25권 정도의 책을 읽었는데, 책을 읽다가 이전에 읽었던 것들을 다시 꺼내드는 경우를 포함하면 한 40권 정도의 책을 읽은 것 같다. 나는 지식(knowledge)을 구축하는 데에 관심이 많고, 지식은 정보(information)들의 연결이라고 생각하며, 이 정보는 인식(perception)으로부터 나온다고 생각한다. 따라서 지식을 잘 구축하기 위해서는 많은 것들을 인식하는 것과, 이것들을 잘 연결할 수 있는 사고 능력이 필요하다고 생각한다. 습관처럼 굳어진 다량의 독서는 많은 정보들을 인식하기 위한 훌륭한 토대가 된다.&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;이번달에는 특히 지식을 &quot;연결&quot;하는 부분에 있어서 개인적으로는 굉장히 유의미한 한 달을 보냈다. Team Normal(이제 곧 Team Pado가 될 것 같다.) 사람들과 슬랙에서 그날 읽은 책들 중 인상깊은 구절들을 공유하는데, 이때 내 글을 읽는 사람들이 있으면 피드백을 받을 수도 있겠다고 생각해서 내 생각을 덧붙여서 올리기 시작했다. 다들 나보다도 열정적이고 지식을 연결하는 것을 좋아하는 적극적인 사람들이다 보니 자신의 생각을 하나둘씩 얹어가기 시작했고, 진정한 의미로서의 독서에 한걸음 가까워진 것 같아 매우 고무적이다. 개인적으로는 이렇게 팀원들과 함께 한 권의 독서를 하는 것은 혼자 3권의 독서를 하고 충분한 사색을 갖는 것과 거의 비슷한 효과를 주는 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;1060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zvNnb/btsbSFZznig/z6Lkh3CtNgyyLuOhaU982K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zvNnb/btsbSFZznig/z6Lkh3CtNgyyLuOhaU982K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zvNnb/btsbSFZznig/z6Lkh3CtNgyyLuOhaU982K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzvNnb%2FbtsbSFZznig%2Fz6Lkh3CtNgyyLuOhaU982K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;502&quot; height=&quot;438&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;1060&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;이번달은 생각의 연쇄적인 흐름들이 주체하기 어려울 정도로 &quot;폭발&quot;한다는 느낌을 받을 때가 많았다. 쉽지 않은 학교 - 회사 - 팀빌딩 - 미팅의 스케줄을 소화하느라 절대적인 컨텍스트가 많아진 것도 한몫하지만, 많은 정보들을 metaphor를 통해 이어가려고 하다 보니 생각이 날아다니는 경우가 많아서 이걸 따라가려고 하다가 지치는 경우가 많았다. 우여곡절 끝에 찾아낸 해결책 중 하나는 자기 전에 내 생각의 흔적을 그냥 &quot;기록&quot;하는 것이다. 다음날 보면 &quot;정말 날아다니는구나&quot;라는 생각이 들 때도 있지만 이렇게 날아다니는 생각을 잡아낼 줄 아는 사람이 되고 싶다.&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;ProblemSolver&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제에 대한 고찰을 작성하면서 느낀거지만 요새 &quot;좋은 문제&quot;란 무엇인가에 대한 고민을 많이 하고 있다. 위에서 말한 날아다니는 생각 잡기의 일환으로 이에 대한 고민들을 정리했고 어쩌다 보니 포스팅까지 하게 되었다. &lt;a href=&quot;https://yeoulcoding.me/383&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://yeoulcoding.me/383&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682761745438&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;문제에 관한 가벼운 고찰&quot; data-og-description=&quot;. 이따금씩 다른 사람들을 만나 나 자신에 대해 소개할 때, 스스로를 프론트엔드 엔지니어라고 이야기하기보다는 문제를 푸는 사람이라고 이야기하는 것을 좋아한다. 내가 바라는 나의 미래의 &quot; data-og-host=&quot;yeoulcoding.me&quot; data-og-source-url=&quot;https://yeoulcoding.me/383&quot; data-og-url=&quot;https://yeoulcoding.me/383&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/breRvA/hySr9WqheI/QywPoKK2L5Aaa4qzcakmzk/img.png?width=800&amp;amp;height=360&amp;amp;face=376_101_499_236,https://scrap.kakaocdn.net/dn/OmTdW/hySq0NwccJ/GZHRmzvcWPbCE91DpvkT91/img.png?width=800&amp;amp;height=360&amp;amp;face=376_101_499_236,https://scrap.kakaocdn.net/dn/ipUKq/hySq3KiZGx/HIKox2TZzAQwjm3CgooRB0/img.png?width=2232&amp;amp;height=1182&amp;amp;face=952_324_1461_878&quot;&gt;&lt;a href=&quot;https://yeoulcoding.me/383&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://yeoulcoding.me/383&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/breRvA/hySr9WqheI/QywPoKK2L5Aaa4qzcakmzk/img.png?width=800&amp;amp;height=360&amp;amp;face=376_101_499_236,https://scrap.kakaocdn.net/dn/OmTdW/hySq0NwccJ/GZHRmzvcWPbCE91DpvkT91/img.png?width=800&amp;amp;height=360&amp;amp;face=376_101_499_236,https://scrap.kakaocdn.net/dn/ipUKq/hySq3KiZGx/HIKox2TZzAQwjm3CgooRB0/img.png?width=2232&amp;amp;height=1182&amp;amp;face=952_324_1461_878');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;문제에 관한 가벼운 고찰&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;. 이따금씩 다른 사람들을 만나 나 자신에 대해 소개할 때, 스스로를 프론트엔드 엔지니어라고 이야기하기보다는 문제를 푸는 사람이라고 이야기하는 것을 좋아한다. 내가 바라는 나의 미래의&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;yeoulcoding.me&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스스로를 문제를 풀어내는 사람으로 정의하기까지 많은 사고 과정들을 거치면서 내가 어떤 사람이 되고 싶은지, 어떤 것들을 원하고 어떤 것들을 원하지 않는지에 대한 고민들을 많이 했던 한 달이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Study &amp;amp; Midterm&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중간고사가 지나갔다. 15학점 수강(시험기간 및 과제) + QANDA Full Time Business + Team Building + Crew 모임을 동시에 진행했던 최근 2달간은 내 인생 중 가장 정신없었던 시간이기도 했다. 종강까지는 앞으로 2달이 더 남았지만, 스스로 정해둔 한계에 계속해서 자극을 가하는 것은 어느 정도까지는 개인의 성장에 안티프래질 한 속성을 띈다고 믿기 때문에 죽을 것 같이 힘든 게 아닌 이상은 조금씩 더 자극해보려 한다. (어느 정도 까지라는 것은, 특정 임계를 넘으면 건강을 잃거나, 관계를 잃거나 등등 잃는 것이 많아질 여지가 있다는 것을 의미한다.) 다행히도 3월 말 ~ 4월 초에 어느 정도의 건강한 스트레스에 시달린 후, 가벼운 몸살을 앓고 나니 그럭저럭 스케줄을 긍정적인 마음으로 소화할 수 있게 되었고, 너무 많은 콘텍스트들을 들고 처리해야 하다 보니 하나의 컨텍스트를 처리할 때는 간섭이 들어오지 않도록 휴대폰을 꺼두거나, 혼자 있는 시간들을 많이 만드는 쪽으로 효율을 높였다.&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;이런 생활을 하면서 얻게 된 소득 중 하나는, 어떤 컨텍스트의 일을 하든 &quot;하나&quot;의 일을 한다는 느낌으로 효율을 극대화하는 법을 익히기 시작했다는 점이다. 이를테면 꽃을 사고, 편지를 쓰고, 옷을 사고, 식당을 예약하는 일은 각각의 행위들을 독립적인 사건으로 간주하게 된다면 연관성이 없어 보이는 행위일 수 있으나 &quot;사랑하는 사람을 기쁘게 하기 위한&quot; 목적 하에서 적절하게 구성된다면 일련의 연관되어 있는 사건들이 되어 각자의 효율을 극대화할 수 있다. 이를테면 노란색 꽃을 사고 이것과 어울리는 흰색 셔츠를 고른 다음, 이런것이 너에게 잘 어울린다는 내용을 담은 편지를 작성하고, 이 분위기가 잘 맞는 식당을 예약하는 방식으로 일을 진행하면 각각의 사건의 목적을 달성할뿐더러, 이 사건들은 큰 그림을 달성하는 핵심적인 조각들이 된다.&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;이를 메타포로 해서, 데이터 통신을 공부하든, 하드웨어 시스템 설계를 공부하든, Team Building을 하든, 책을 읽든, 회사 일을 하든 이 모든 것들이 하나의 목적을 위한 종속사건이 되어 전체적인 효율과 개별적인 효율을 모두 극대화할 수 있겠다는 생각을 했고, 실제로 각 사건들을 이렇게 이어가는 작업들을 시작했다. 최근에 최고의 퍼포먼스를 내는 슈퍼스타들이 동시에 5가지 이상의 프로젝트를 한다는 이야기를 들었는데 이런 이유에서가 아닐까 하는 생각도 했다. 단점이 있다면 가끔 친한 사람들을 만나면 긴장이 풀어져서 그런지 고장나 버릴 때가 있다는 사실이다. 이 글을 읽고 있는 당신과 내가 최근 만났을 때, 내가 도대체 무슨 소리를 하는 건가 싶을 정도로 이상해 보였다면 그건 당신을 친하게 생각하기 때문이다.&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;Frontend&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프론트엔드 개발은 여전히 재밌다. 하지만 요즘 들어 &quot;이것이 어떤 가치를 가져다주는가&quot;에 대한 생각을 더 많이 하게 되는 것 같다. GPT가 웬만한 페이지와 로직들을 다 만들어주고, 코파일럿이 주석까지 다 달아주는 세상에서 이걸 잘 사용해서 어떤 것을 만들 수 있는지가 내 경력과 포트폴리오보다 훨씬 더 중요하다고 생각한다. (사실 애초에 내 커리어 패스에 대해서 진지하게 생각해 본 적도 없다. 난 그냥 내가 풀고 싶은 문제를 계속 풀고 싶을 뿐이다.)&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;그럼에도 여전히 흥미가 생기는 분야는 &quot;웹&quot;이라는 것 그 자체다. 최근 Fat Protocols와 Thin Applications라는 개념에 빠져 있는데, 웹이라는 분야를 &quot;리액트&quot;와 같은 도구를 사용해서 &quot;컴포넌트&quot;를 만들고, 비즈니스 로직이 들어간 &quot;웹 페이지&quot;를 만드는 것에 국한하지 않고 .웹이 가진 여러 가능성들을 제한하지 않은 상태로 접근하고 싶다.&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;웹이 주는 본질적인 연결의 가치와 블록체인을 잘 연결하는 것은 양극화 문제를 해결하고 싶은 내 개인적인 소망과도 맞닿아 있어서 계속해서 흥미있게 볼 것 같은 주제이다. 이제 react를 사용해서 페이지를 만들고 로직을 붙이는 것은 흥미가 떨어진 것이 사실이다.(그럼에도 react 자체에 대한 흥미는 여전히 남아있는데, 이것은 react가 제시하는 metaphor가 여러모로 생각을 자극하는 촉진제가 되기 때문이다.)&amp;nbsp; 나는 기술을 &quot;사용&quot;하는 사람이 아니라 기술을 사용해서 &quot;문제를 해결&quot;하고 &quot;가치를 창출&quot;하는 쪽에 가치를 두는 사람이다.&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;h4 data-ke-size=&quot;size20&quot;&gt;Projects&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나와 내 팀원들이 하는 프로젝트와 우리 팀 자체(Team Norml)에 대해서 응원을 보내주고 관심을 가져주는 사람들이 꽤 많다는 사실들에 놀랐다. 사실 막연히 올해 말이나 내년 즈음 해서 슬슬 시작해 볼까 하던 게 주변 고마운 사람들 덕분에 가속도가 붙고 있다. 내 머릿속에만 머무르던 생각을 밖으로 끄집어내어 전달하고 가치를 만들어내는 일에 참여하는 것은 정말 가슴 뛰는 일이다.&lt;/p&gt;</description>
      <category>Developer History</category>
      <category>4월 회고</category>
      <category>개발일지</category>
      <category>개발자</category>
      <category>프론트엔드</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/376</guid>
      <comments>https://yeoulcoding.tistory.com/376#entry376comment</comments>
      <pubDate>Sat, 29 Apr 2023 19:01:15 +0900</pubDate>
    </item>
    <item>
      <title>Dollar in Danger</title>
      <link>https://yeoulcoding.tistory.com/388</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;375&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSTqGk/btsbVe8p7xy/4DSkVJC9L7P02FQ8eL0kS0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSTqGk/btsbVe8p7xy/4DSkVJC9L7P02FQ8eL0kS0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSTqGk/btsbVe8p7xy/4DSkVJC9L7P02FQ8eL0kS0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSTqGk%2FbtsbVe8p7xy%2F4DSkVJC9L7P02FQ8eL0kS0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;290&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;375&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;국제 질서에서 미국의 패권은 군사력과 달러에서 나온다. 이중에서도 지금의 달러 패권은 1971년 고정환율제 붕괴 이후&amp;nbsp; &quot;페트로 달러&quot;, 즉 달러로만 석유를 결제할 수 있도록 하는 방식을 통해 유지되어 왔다. 그러나 근 몇 년 동안의 상황을 가만히 지켜보면, 이 달러 패권이 적잖은 위협에 놓여있음을 알 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구체적인 통계 자료를 살펴보면, 러시아는 2012년에 보유했던 1500억 달러의 채권을 2018년에 이미 모두 털어버렸다. 미국 국채를 세계에서 두번째로 많이 보유하고 있는 중국(1위는 일본이다)은 2013년 1조 3천억 달러에서 2022년 7월 9808억 달러로 줄였고, 사우디는 2020년 2월 1850억 달러에서 2022년 1월 1190억 달러로 계속해서 미 국채 보유 수량을 줄이고 있다. 와중 중 - 러 위안화 결제율은 2021년 1월 22억 위안에서 SWIFT 제재 이후 90배 이상 증가한 2010억 위안으로 늘고 있으며, 중국은 브라질 등 타 국가와의 무역에도 달러를 배제하고 자국 통화로 결제하려는 움직임을 확대해 나가고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중국과 러시아는 꽤나 이전부터 탈달러를 위한 시도를 여러 차례 해왔기 때문에 이러한 사실이 놀라운 결정은 아니지만, 사우디의 탈 달러 움직임은 현재의 페트로 달러 체제를 유지하려 하는 미국에 적잖은 영향을 줄 수 있을 것이라 생각한다. 미국은 전형적인 무역적자국으로(금본위제 시대가 막을 내린 것도 성장을 위한 무역적자구조를 감당할 수 없었기 때문이다.) 달러를 계속해서 유출하는 구조로 되어 있지만 석유거래를 달러로만 결제하게 함으로써 미국의 국제수지를 개선하고 달러의 가치를 지탱하는 구조를 만들었던 것인데, 사우디의 이러한 탈달러 움직임은 이 구조에 위협을 가하는 모양이 되기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탈달러 움직임은 2014년 크림반도를 강제 합병한 러시아에 대한 미국의 제재를 기점으로 시작해 이번 러-우 전쟁 발발 이후 러시아에 대한 미국(과 유럽)의 SWIFT 제재로 가속화되었다고 생각한다. 대부분의 달러 보유 국가는 효과적인 재투자의 수단으로 보유 달러를 다시 미국의 장기 국채를 구입하는 방식을 사용하는데, 미국이 마음만 먹으면 얼마든지 이 달러를 묶어두고 주지 않을 수 있음을 다시 한번 확인하게 되었기 때문이다. 이에 따라 각국은 암암리에 달러 보유량을 줄이기 위한 여러 시도를 하고 있는 것이다. 최근 브라질 / 아르헨티나에서 공동 통화에 관련된 이야기가 나오는 것도 이와 비슷한 맥락이 아닐까 생각한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현실적으로 당장 달러에 대해 이러한 위협을 느끼더라도 중국과 같이 거대한 무역 흑자를 통해 달러를 벌어들이는 국가들이 달러를 담아둘 수단이 마땅하지 않은 것은 여전해 보인다. 꼬박꼬박 5%이상의 금리를 주는 안정적인 미국 장기 국채보다 좋은 수단을 찾기는 당장 어렵기 때문일 것이다. 하지만 이런 상황이 유지되고, 미국 장기 국채가 &quot;안정적이지 않을 수 있다&quot;라는 생각이 더 명확해 진다면 지금과 같이 달러 흑자국들의 달러가 미국으로 다시 들어와서 무역적자를 메워주고, 국제 무역의 60%이상이 달러로 거래되는 이러한 구조가 지속되기는 어려울 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로는 미국이 이미 페트로 달러를 버리고 넥스트 페트로를 찾기 위한 시도를 하고 있는 것은 아닐까 하는 생각이 있다.(지극히 개인적인 의견이다) 최근 미국이 주목하고 있는 부분은 &quot;토양&quot;과 &quot;에너지&quot;인데, Next Petro를 이 토양과 에너지로 보고 있는 것이 아닐까 하는 생각이 든다.(여기서의 토양은 우주를 포함한다). 이미 자국에서 셰일가스를 충분히 생산하고 있는 상황에서 페트로 달러를 유지하기 위해 더 노력을 쏟을 것인지, 새로운 달러 패권을 위한 다른 버팀목을 찾을 것인지를 충분히 저울질하고 있을거라 생각하지만, 지금과 같은 상황이 유지된다면 달러 패권은 점점 침식되어갈 것 같아 보인다.&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>Economics</category>
      <category>Economics</category>
      <category>달러</category>
      <category>달러패권</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/388</guid>
      <comments>https://yeoulcoding.tistory.com/388#entry388comment</comments>
      <pubDate>Tue, 25 Apr 2023 08:40:31 +0900</pubDate>
    </item>
    <item>
      <title>문제에 관한 가벼운 고찰</title>
      <link>https://yeoulcoding.tistory.com/383</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2232&quot; data-origin-height=&quot;1182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mZpjI/btsbTWftvrq/CWnjmrH26PzbnSlaO877N0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mZpjI/btsbTWftvrq/CWnjmrH26PzbnSlaO877N0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mZpjI/btsbTWftvrq/CWnjmrH26PzbnSlaO877N0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmZpjI%2FbtsbTWftvrq%2FCWnjmrH26PzbnSlaO877N0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;686&quot; height=&quot;363&quot; data-origin-width=&quot;2232&quot; data-origin-height=&quot;1182&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이따금씩 다른 사람들을 만나 나 자신에 대해 소개할 때, 스스로를 프론트엔드 엔지니어라고 이야기하기보다는 문제를 푸는 사람이라고 이야기하는 것을 좋아한다. 내가 바라는 나의 미래의 모습은 실력 있는 엔지니어가 되는 것보다는 내가 풀고 싶은 문제를 어떤 방식으로든 풀어내는 사람에 더 가깝기 때문이다. 그렇다면 내가 풀고 싶은 문제가 무엇인지를 정의하는 것이 이치상 가장 먼저 나와야 하는 것임에 분명하며, 이는 필연적으로 &quot;그렇다면 문제라는 것은 무엇인가&quot;에 대한 질문으로 이어지게 된다. 이런 사고의 흐름을 거치는 것 자체가 &quot;문제&quot;라는 단어에 대한 정확한 정의 없이 나를 문제를 푸는 사람으로 정의했다는 것을 방증하는 것이기도 해서 부끄럽기도 하지만, 웹 개발을 시작할 때 웹에 대해 잘 알지 못하고 군 복무를 위해 시작했다가 몇 년이 지나서야 &quot;웹이 무엇인가&quot;라는 질문을 던졌던 나의 과거를 돌아볼 때, 썩 나쁜 방식은 아닌 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 문제(Problem)는 내가 원하는 모습이 명확하게 그려져 있을 때, 그 모습과 현재 상태에 대한 차이로부터 나온다고 생각한다. 이렇게 문제를 &quot;원하는 미래&quot;와 &quot;객관적 현실&quot;의 Diff로 바라보게 되면, 좋은 문제라는 건 현실을 객관적으로 파악할 수 있는 능력과 새로운 미래를 상상하는 능력에서 나오게 되며, 따라서 좋은 문제를 발견하는 사람이 되기 위해서는 이 두 가지를 갖춰야 함을 연역해 볼 수 있다. 현실을 객관적으로 파악하는 능력의 중요성은 좋은 문제를 찾아내는 것 이외에도 이미 중요하게 여겨지므로 문제를 발견하기 위한 핵심 요소를 &quot;새로운 미래를 구상하는 능력&quot;으로 정의할 수 있을 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 미래를 구상하는 힘을 가지기 위해서는 어떤 것들이 필요할까. 여러 가지 요소들을 떠올려볼 수 있겠지만 당장 떠오르는 생각은 크게 두 가지이다. 하나는 비아 네거티바(Via Negativa)의 관점으로 접근할 것. 그리고 감성과 직관을 기르는 훈련을 할 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수많은 요소들이 상호작용하며 만들어내는 현실 세계에서 기껏해야 수백가지의 옵션들의 인과관계를 가지고 미래를 예측하는 것은 불가능한 일이다. 물론 어떤 일이 일어난 다음 등장하는 사후적 설명은 이 미래를 마치 &quot;예측&quot;할 수 있었던 것처럼 착각하게 만들지만 복잡계에서 발생하는 일들은 거의 대부분 사후적 설명만이 가능할 뿐이다. 이 세상은 진공상태가 아니며, 우리가 고려할 수 있는 것보다 훨씬 더 많은 요인들이 관여하기 때문에 인과적으로 예측하기가 거의 불가능하다. 반면, 어떤 대상의 프래질을 측정하여 이것이 미래에 남아있을지 남아있지 않을지를 탐지하는 것은 비교적 간단하다고 생각한다. 이를테면 신발이라는 것은 수천 년 동안 거의 비슷한 형태로 유지되어 왔으며, 이것은 앞으로 5년 뒤에도 거의 비슷한 형태로 남아있을 가능성이 크다. 즉, 미래에서 무언가를 &quot;더하는 방식&quot;으로 예측하며 구상하는 것보다 무엇이 &quot;사라질 것인가&quot;의 관점에서 생각한다면 더 나은 미래를 예측하는데 도움이 되는 보다 현실적인 도움이 될 것이라 생각한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 다른 하나의 축은 감성과 직관을 기르는 것인데, 개인적으로 직관은 어떤 대상에 대해 깊이 몰두하며 스스로 생각하는 사고의 훈련, 그중에서도 본질을 찾아 헤매는 추상적 사고와, 한 분야에서 다른 분야로 생각을 건너 뛰어, 그 사이를 이을 수 있게 만드는 은유적 사고를 치열하게 훈련한 결과로 나온다고 생각한다. 이런 과정을 수없이 반복하는 사람들이 이야기하는 &quot;이건 뭔가 될 것 같은데&quot;라는 직관은 느낌으로 다가오지만, 실제로 그들은 말로 표현하기 전에 어떤 무언가를 본 것에 가까우며 리처드 파인만이나, 아인슈타인 같은 사람들도 자신들의 업적으로 남겨진 중요한 발견들을 글이나 말로 설명하기 전에 무엇인가를 보았다고 이야기한다. 즉, 더 나은 미래를 상상하는 것이 처음부터 논리적으로 정제된 언어의 형태를 띨 필요는 없으며, 이것을 &quot;보고 느껴야&quot;한다고 생각하다. 이러한 직관은 단순히 머리로 상상하는 것을 넘어서 보고 만지고 냄새 맡고 느낄 수 있어야 한다고 생각하며, 대상을 더 잘 느끼기 위해서는 감성을 기르는 훈련도 중요하게 여겨진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 문제를 찾아내고, 그것을 풀기 위해 몰두하는 경험은 큰 성취감을 준다. 어떤 회사의 비전을 보고 감명받아 입사를 지원하기로 결정했다면 그것은 이 회사가 풀려고 하는 문제, 즉 이 회사가 그리는 미래에 대해 공감하고 그 미래를 만들어가는 과정에 기여하고 싶다는 생각이 들었기 때문일 것이다. 생각이 여기까지 이어지다 보니 이제는 스스로를 &quot;문제를 푸는 사람&quot;으로 정의하기보다 &quot;문제를 찾아내는 사람&quot; 혹은 &quot;문제를 만들어내는 사람&quot;으로 정의하고 싶어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;&lt;span style=&quot;background-color: #ffffff; color: #242424; text-align: left;&quot;&gt;&amp;lsquo;문제&amp;rsquo;란 도대체 무엇일까요? 그것은 &amp;lsquo;원하는 모습과 현재 모습의 차이&amp;rsquo;를 말합니다. 원하는 모습이 명확하게 그려져 있다면, 문제는 필연적으로 발생하기 마련입니다. 즉, 현대 사회의 많은 영역에서 &amp;lsquo;문제&amp;rsquo;가 희소해지고 있다는 것은 우리 사회와 조직이 &amp;lsquo;새로운 세상을 구상하는 힘&amp;rsquo;을 잃어가고 있다는 것을 의미하기도 합니다.&lt;br /&gt;- 감성과 지성으로 일한다는 것&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;</description>
      <category>Philosophy &amp;amp; Thinking</category>
      <category>에세이</category>
      <category>여울코딩</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/383</guid>
      <comments>https://yeoulcoding.tistory.com/383#entry383comment</comments>
      <pubDate>Mon, 24 Apr 2023 06:45:51 +0900</pubDate>
    </item>
    <item>
      <title>개발일지 (3월 회고)</title>
      <link>https://yeoulcoding.tistory.com/371</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;751&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRo8NB/btr7wgAUfBl/Cj5DvNzqq8v9kTrD9YvoD1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRo8NB/btr7wgAUfBl/Cj5DvNzqq8v9kTrD9YvoD1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRo8NB/btr7wgAUfBl/Cj5DvNzqq8v9kTrD9YvoD1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRo8NB%2Fbtr7wgAUfBl%2FCj5DvNzqq8v9kTrD9YvoD1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;457&quot; height=&quot;343&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;751&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;복학 후기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번학기에는 15학점을 신청했다. 전반적으로 과제로드가 비교적 적은 수업들을 듣거나, 성적에 대한 부담을 내려놓은 수업이 많아서 그런지 아직까지는 힘든 과제가 많이 없고 이런저런 지식들을 배우는 재미가 있다. 데이터 통신 수업은 생각보다 많이 low level을 다루지만 굉장히 재미있고, Chat GPT가 나오고 나서부터 수업 시간이 굉장히 알차졌다. 교수님께서 애매하게 설명하고 넘어가셨다는 느낌이 드는 부분이나, 내가 딴생각 하다가 놓친 부분을 굉장히 빠르게 해결할 수 있어서, 수업이 끝나고 나왔을 때 새롭게 이해하게 되는 부분들이 많아졌다.&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;데이터 통신 과제로 간단한 소켓 프로그래밍을 구현하는 예제가 나왔는데, 이걸 C, C++, Go, Kotlin으로 각각 구현해봤다. (GPT의 도움을 많이 받았다.) 특히 다른 High Level 언어들로 구성된 코드들을 C로 구현하는 것은 근본적으로 운영체제가 어떻게 동작하는지를 이해하는데 많은 도움을 준다. (이를테면 Go에서는 net.Listen 한 줄이면 서버가 알아서 Listen을 하지만, C로 구현하려면 TCP 타입의 소켓을 생성하고 Bind 하고, Listen 하는 과정을 거쳐야 하고, 경우에 따라 REUSE_ADDR 같은 옵션을 추가해주어야 한다.) 이런저런 언어들을 비교하다가 GPT 삼천포로 빠져서 inode와 파일시스템에 대해 1시간가량의 문답법을 수행하기도 했다. 개인적으로는 과제를 잘하고 시험을 잘 쳐서 좋은 학점을 받는 것도 중요하지만, 이렇게 내가 모르는 것을 문답을 통해 알아내고, 내가 기존에 알고 있었던 지식의 노드들에 새로운 지식을 끼워 맞추기 위해 머릿속을 여기저기 헤집으며 연결하는 것이 더 중요하다고 생각한다.&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;하드웨어 시스템 설계에서는 딥러닝을 위해 GPU에서 Matrix 연산을 하는 행렬 곱셈 가속기를 만든다. Verilog나 Amaranth와 같은 익숙하지 않은 언어와 라이브러리를 사용하는 것이 쉽진 않지만, 똑똑한 동기들에게 많은 도움을 받으며 몰랐던 것들을 배워가고 있다. 공부를 하다가 Verilog가 always문을 사용해서 clk 시그널에 맞춰 sync logic을 수행하는 방식과 React가 Hook을 처리하는 방식이 똑같다는 걸 발견해서 신기했다.&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;대영과제는 솔직히 그냥 GPT로 한다.. (이글을 교수님이 보시진 않겠지)&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;h4 data-ke-size=&quot;size20&quot;&gt;경제 공부&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너무 정신없이 새로운 패턴에 적응하느라 경제 공부를 깊게 하지 못했다. 3월 초반에는 체력적으로 좀 무리가 왔었던 것 같기도 하다. 보통 경제공부 하는 시간은 아침에 학교 가는 지하철이거나 회사 가는 지하철인데 너무 졸려서 그냥 서서 잤다. 대신 FOMC나 주요 인사 발언들은 꼭꼭 챙겨보려고 노력했다. 그래도 나름 주간 에세이는 밀리지 않고 작성한 것 같다.&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;최근에는 은행 이슈가 터져서 논란이 많았는데, 이를 프래질과 블랙 스완의 관점에서 살펴보려고 노력했다. SVB의 수익창출 방식이 갖는 구조적인 프래질을 탐지하는데 시간을 좀 썼던 것 같고, 어느 은행이나 업종의 분위기가 확 바뀌면, 이러한 프래질이 수면으로 드러나게 된다는 사실도 깨달았다. 이를테면 우리나라도 반도체 업황이 호황에서 불황으로 갑작스레 바뀌는 시점에 어떠한 형태의 프래질이 드러나서 외환위기의 출발점이 되었다.&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;사업을 시작하거나, 인간을 이해하는 관점에서 경제 공부는 개인적으로 많은 이점을 준다. 기술과 인문학과 심리학, 그리고 각종 지리학 사회학 정치학등이 교차로에서 만나는 지점이라고 생각한다. 에세이를 정리하면서 개인적으로 느끼는 것은 이러한 수많은 학문들이 특정 분파가 아닌 하나의 원자 단위의 형태로 내 머릿속을 통과한다는 느낌을 자주 받는다는 것이다. 이를테면 SVB은행 사태를 정리하면서 스타트업의 러닝타임과 연준이 고려해야 하는 여러 복잡함, 시장의 의도와 월가 사람들의 생각들, 그리고 모바일로 예금을 찾는 시대가 되면서 더 발생하기 쉬운 뱅크런과 같은 일련의 상호작용들이 &quot;이건 어떤 학문이야&quot; 할 것 없이 그냥 그림으로 보이는 것 같고, 나는 그냥 그걸 글로 옮기는 역할을 하고 있다는 생각이 든다. 이런 내용을 &quot;생각의 탄생&quot;이라는 책에서 읽은 것 같아서 에세이 쓰고 나서 이 책을 한 번 더 읽었다.&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;h4 data-ke-size=&quot;size20&quot;&gt;독서&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바쁘다 아프다 하면서도 그래도 21권의 책을 읽었다. 읽은 책은 bookreader_sckim이라는 인스타 계정에 정리해두고 있는데, 예전에는 그냥 귀찮아서 책 표지만 올리다가 요새는 내가 책을 읽으면서 인상깊었던 부분들이나, 이 책의 핵심이라고 생각하는 몇 구절들을 같이 Reference 하고 있다. 자기 전에 한 번씩 읽거나 일주일을 회고하면서 한 주간 읽었던 책들의 구절들을 찾아 읽으면서 &quot;나 이 책 읽고 뭐가 바뀌었지?&quot; 하는 생각들을 하는데 독서의 질을 한 250% 정도 늘려주는 것 같다. 아쉽게도 이번달은 &quot;안티프래질&quot;이나 &quot;생각의 탄생&quot;과 같이 내 인생의 전환점이 될 만한 책을 만나지는 못했지만, 훌륭한 책들은 꽤나 많이 만났다. (피파에서 메시를 뽑지는 못했지만 그래도 라모스 정도 뽑은 느낌이다)&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;h4 data-ke-size=&quot;size20&quot;&gt;프런트엔드&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근에 에디터 쪽 수정할 일이 생겨서 회사에서는 Puppeteer를 사용해서 이미지와 PDF를 생성하는 것과 함께 이 에디터를 만지는 데 가장 많은 시간을 사용했다. contenteditable을 사용한 후 selection / range API를 요리조리 다루는 것이 꽤나 재밌었고, MutationObserver의 callback이 Macrotask Queue가 아니라 Microtask Queue로 들어간다는 사실을 처음 알게 되었다. (사실 그전에는 MicroTask Queue에는 promise의 callback만 들어가는 줄 알았다). content editable로 들어가는 수식들에는 event handler를 붙여야 하고, 뒤로 가기 / 붙여 넣기 / 잘라내기 등의 기능을 구현하기 위해 Stack을 다시 만들어야 했다. Stack은 아직 이런저런 이슈들이 있어서 적절한 방법을 찾는 중이지만 조만간 방법을 찾아낼 것 같다.&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;미루고 미뤘던 React Suspense의 Implementation에 대한 블로그 글을 완성했다. 생각보다 Suspense 시리즈를 기다려주시는 분들이 있어서 뭔가 힘이 났던 것 같다. 다음 시리즈는 뭘로 해야 할까 하는 고민이 있는데 최근에 매료된 부분은 프런트엔드 쪽보다는 Go / Kotlin 쪽이나 운영체제 쪽이어서 언제가 될지는 잘 모르겠다.&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;Suspense 블로그 글을 작성하기 전에 회사에서 팀원들에게 Suspense에 대해 설명할 기회가 있었는데 질의응답 같은 걸 하다가 Lane Model에 대한 이야기가 몇 차례 나왔고, 나도 정확히 이해하지 못하고 있는 것 같다는 생각이 좀 들어서 React를 만든 사람인 dan abramov에게 직접 트윗을 보냈다. (궁금한 거 물어보래서 물어봤다) 아래와 같이 답변이 왔고, 왜 진작 이렇게 공부하지 않았지 하는 생각도 들었다. (개인적으로 React Source Code는 양이 방대하기도 하지만, 변경사항도 매우 매우 많아서 조금 공부 안 하면 내가 공부한 코드가 레거시가 된다.) 이런 식으로 몇 번 질의응답을 하다 보니 (GPT한테 물어본 것도 많았다) Lane Model, Work, Fiber, Task의 차이에 대해 어렴풋이나마 더 잘 이해하게 된 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y4TOR/btr7hvevVVl/k0OYb2Xu31i78Y35q2RviK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y4TOR/btr7hvevVVl/k0OYb2Xu31i78Y35q2RviK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y4TOR/btr7hvevVVl/k0OYb2Xu31i78Y35q2RviK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy4TOR%2Fbtr7hvevVVl%2Fk0OYb2Xu31i78Y35q2RviK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;540&quot; height=&quot;425&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;872&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;백엔드 공부&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gRPC를 조금 더 자세히 알고 싶어서 이런저런 시도들을 해봤다. 사내에 있는 인프라들을 내가 A to Z로 구축해 보는 시도의 연장선이기도 하다. yeoulapis라는 레포를 만들어서 proto를 관리하고 cloudbuild trigger를 추가해서 proto가 업데이트되면 kotlin stub과 go stub이 생성될 수 있도록 하는 구조를 만들었다. 확실히 그냥 만들어진 걸 쓸 때보다 이걸 직접 구축해 보면 지식이 구체화되고 더 깊게 공부할 수 있게 되는 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 해서 1분기에 목표로 했던 혼자서 API First Approach를 하기 위한 준비와 이를 마이크로서비스 클러스터 아키텍처에 적용하고 모니터링할 수 있는 전반적인 구조를 다 그려보게 되었다. 확실히 1년 전과 비교하면 양자영역에서 계속 에너지를 축적하다가 계단을 하나 오른 느낌이다. 이거 하느라고 AI / Frontend 쪽에 많은 집중을 하지는 못했지만 다양한 분야의 어느 정도의 깊이 있는 경험은 결국 소프트웨어 엔지니어링의 기본기를 닦아줄 것이므로 후회되는 선택은 아니었던 것 같다.&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;언어에 대해서는 최근 Go / Kotlin이라는 언어 자체에 대한 호기심(+ 사내 여러 백엔드 서비스들의 기반 언어) + 하시설 및 데이터 통신을 위한 어쩔 수 없는 C / C++ / Python + 그리고 프런트 엔드 개발자로서의 정체성을 지키기 위한 Typescript(생각보다 나는 타입스크립트를 잘 모른다. 그냥 쓰던 대로 쓰는 수동적인 사람) + 슬슬 자료구조나 알고리즘을 까먹고 있는데? 에 대한 니즈로 인해 PS를 이 5~6가지 언어를 사용해서 풀어보고 있다.&amp;nbsp;아직 서툴긴 하지만 GPT생기고 나서 서로 다른 언어들을 굉장히 빠르고 쉽게 배울 수 있게 되어 좋다.&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;아래에서 또 언급하겠지만 최근 여러 사이드 프로젝트들을 하기 시작했는데 코틀린 서버 하나, Go 서버 하나로 서버를 운영하기로 했다. Kotlin + Spring / Go + Fiber 구조로 간단한 것들을 만들어 볼 예정이다.&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;h4 data-ke-size=&quot;size20&quot;&gt;사이드 프로젝트&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의도한 것은 아니었지만 동기의 소개 + 건너 건너 아는 사람들의 초대로 인해 최근 많은 사람들을 만나고 많은 다양한 프로젝트들에 참여하고 ideation을 하면서 다니고 있다. 어느 정도의 네트워킹이 좋은 점은 당장 뭔가를 같이 하지는 않더라도, 행동력이 빠르고 아이디어가 넘쳐나며, 다양한 경험들을 한 사람들의 이야기를 많이 접할 수 있다는 것이다. 나심 니콜라스 탈레브도 저서 안티프래질에서 이야기했듯, 적당한 파티는 개인의 성장에 있어 안티프래질 한 장점을 갖는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2개의 Github Organization을 새로 만들었고 3개의 크고 작은 사이드 프로젝트들을 하고 있다. Go / Kotlin / Typescript들에 대해서 평소 회사 업무에서는 하지 못했던 시도들을 하면서 괜찮은 방식들은 팀에 소개도 하려 하고 있고, 다양한 도메인에서 나오는 수많은 아이디어들을 잘 가공해서 교육을 효과적으로 만드는데 도움이 될 수 있는 방안들을 찾아보려 한다.&lt;/p&gt;</description>
      <category>Developer History</category>
      <category>Developer</category>
      <category>Economics</category>
      <category>go</category>
      <category>history</category>
      <category>Kotlin</category>
      <category>normalcoder</category>
      <category>개발자</category>
      <category>회고</category>
      <author>여울코딩</author>
      <guid isPermaLink="true">https://yeoulcoding.tistory.com/371</guid>
      <comments>https://yeoulcoding.tistory.com/371#entry371comment</comments>
      <pubDate>Sun, 2 Apr 2023 09:58:01 +0900</pubDate>
    </item>
  </channel>
</rss>