<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>mars's coding episodes for fun</title>
    <description>...
</description>
    <link>http://countingmars.github.io/</link>
    <atom:link href="http://countingmars.github.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sun, 23 May 2021 14:57:15 +0000</pubDate>
    <lastBuildDate>Sun, 23 May 2021 14:57:15 +0000</lastBuildDate>
    <generator>Jekyll v3.9.0</generator>
    
      <item>
        <title>코틀린 타입시스템, 두개의 우주</title>
        <description>&lt;p&gt;일반적으로 우주 사이를 이동하기 위해서는 막대한 에너지를 사용하는 비프로스트를 이용하여 점프해야 합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;그림: 비프로스트가 변수들을 다른 우주로 보내는 장면&lt;/strong&gt;
&lt;img src=&quot;https://miro.medium.com/max/500/0*mm6Xj-kaBsJATUX9&quot; align=&quot;left&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;non-nullable과-nullable&quot;&gt;non-nullable과 nullable&lt;/h1&gt;
&lt;p&gt;코틀린은 non-nullable 우주와 nullable 우주 2개가 존재합니다. 다행히 엄청난 진화를 이루어낸 코틀린은 비프로스트를 이용하지 않고도 우주 사이를 빠르게 이동할 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;코드: ?를 사용하여 nullable 우주를 탈출하는 장면&lt;/strong&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-kotlin&quot; data-lang=&quot;kotlin&quot;&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;py&quot;&gt;nullableAge&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;nullableAge&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;?.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;toChar&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;그리고 nullable 우주에서 non-nullable 우주로 이동함으로써 null-safety라는 평화를 얻을 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;super-type과-sub-type&quot;&gt;super-type과 sub-type&lt;/h1&gt;
&lt;p&gt;자바의 최상위 타입은 Object 입니다. &lt;strong&gt;코틀린의 최상위 타입은 Any?&lt;/strong&gt; 입니다. 이 말의 의미는 &lt;ins&gt;Any 타입은 Any?의 서브 타입&lt;/ins&gt;이라는 의미입니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/129/0*4cfsgakE87aFmIQm&quot; width=&quot;100px&quot; style=&quot;width:100px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;그런데 이 관계는 스트링 타입에도 적용됩니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/210/0*eK2eXZ2X_0-s7g_7&quot; width=&quot;150px&quot; style=&quot;width:150px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;이 규칙은 심지어 내가 만든 클래스에도 적용됩니다. 만약 내가 Cat 클래스를 만들었다면 자동으로 상위 타입은 Cat? 가 됩니다. 그리고 Any? 타입은 모든 것의 최상위 타입이므로 Cat? 역시도 Any? 타입의 하위 타입이 됩니다.
코틀린의 슈퍼 타입, 서브 타입 관계에서 기본적으로 non nullable 타입이 상위 타입이라는 인사이트를 얻을 수 있습니다. 더하여 전 우주의 최상위 타입은 Any? 타입임을 알 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;어리석은-우주&quot;&gt;어리석은 우주&lt;/h1&gt;
&lt;p&gt;코틀린 세계의 2개의 우주 중 하나는 어리석기 그지 없습니다. 무의 존재를 부정하는 우주, 바로 non-nullable 우주입니다.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;코드: 무지한 변수 Age의 탄생 장면&lt;/strong&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-kotlin&quot; data-lang=&quot;kotlin&quot;&gt;&lt;span class=&quot;kd&quot;&gt;val&lt;/span&gt; &lt;span class=&quot;py&quot;&gt;age&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Int&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;타노스&quot;&gt;타노스&lt;/h1&gt;
&lt;p&gt;nullable 우주에서의 변수는 null 혹은 non-null 둘 중 하나의 상태를 가집니다.
한편 타노스(본명 토니 호아)는 null 상태의 변수들을 한번의 핑거스냅(null pointer exception)으로 사망에 이르게 합니다. 최근 나이를 먹고 고향으로 돌아간 타노스는 null 이라는 개념을 만든 자신의 과오를 뉘우치듯한 발언(The billion dollar mistake)을 하기도 했습니다. 아무래도 어벤저스의 역습이 무서운가 봅니다.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;어벤저스-any&quot;&gt;어벤저스 Any&lt;/h1&gt;
&lt;p&gt;하지만 어리석은 우주 non-nullable 에는 Any라는 어벤저스(최상위 타입)가 존재합니다. Any 타입은 모든 변수들을 null로부터 보호해주는 null-safety 보호자입니다. 그리고 Any의 하위 타입들은, 자신들이 Any?의 하위 타입이라는 사실도 모르고 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p align=&quot;left&quot;&gt;
그림: 타노스의 핑거스냅(npe)을 막고 있는 Any 타입들
&lt;img src=&quot;https://miro.medium.com/max/664/0*V-Yzh_-bB4FlmY45&quot; width=&quot;400px&quot; style=&quot;width:400px&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;과연 이들의 어리석음(Void 혹은 Nothing)은 끝일까요?&lt;/p&gt;

</description>
        <pubDate>Sun, 23 May 2021 09:43:59 +0000</pubDate>
        <link>http://countingmars.github.io/episodes/2021/05/23/two-unis-in-kotlin.html</link>
        <guid isPermaLink="true">http://countingmars.github.io/episodes/2021/05/23/two-unis-in-kotlin.html</guid>
        
        
        <category>episodes</category>
        
      </item>
    
      <item>
        <title>Crawl, walk, run</title>
        <description>&lt;p&gt;어떻게하면 나와 팀이 지속적인 성공을 이루어낼 수 있을까요? 목표를 한번에 달성할 수는 없습니다. 성공은 작은 미션을 설정하고 달성하는 것으로부터 옵니다. 다음의 두 가지에 유념하면서 아래 글을 읽어봅시다.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Crawl, walk, run 접근법&lt;/li&gt;
  &lt;li&gt;절대 포기하지 않기, 심지어 거의 목적지에 도달했지만 다시 전진하기 위해 많은 단계를 후퇴해야 하는 힘 빠지는 경험을 할 때에도.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;리더가-따라야-할-10-베스트-프랙티스&quot;&gt;리더가 따라야 할 10 베스트 프랙티스&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;속도보다 품질에 집중하라. 현실적인 타임라인을 설정하고 결국에는 큰 효과를 내는작은 목표를 수립하라.&lt;/li&gt;
  &lt;li&gt;예상치 못한 상황을 예상하라. 장애물은 발생할 것이고 피할 수 없다. 당신이 혁신가가 되어 놀라운 성과를 내는 것을 장애물이 멈추지 못하게 하라. 의지가 있다면 길이 있다.&lt;/li&gt;
  &lt;li&gt;열정적이고 진실한 사람을 고용하고 함께 하라. 그들의 마음이 전염될 것이다.&lt;/li&gt;
  &lt;li&gt;작은 성취를 축하하고 최종 결과를 기다리지 마라. 목적지가 아닌 여정을 즐겨라.&lt;/li&gt;
  &lt;li&gt;창의적이고 오픈 마인드를 가져라, 기대치 않은 곳에서 아이디어가 생긴다.&lt;/li&gt;
  &lt;li&gt;중요한 것에 집중하고 책임을 다하라. 일을 쪼개고 “지금”, “곧”, “나중에”로 분류하라. 중요한 일에 집중하게 하고 스트레스를 최소화할 것이다.&lt;/li&gt;
  &lt;li&gt;다시 시작하거나 후퇴하는 느낌에 관대해져라. 예상치 못한 문제로 종종 walk, run에서 crawl로 복귀하게 되겠지만 우리의 접근법을 신뢰하라. 차질은 종종 우리를 더 나은 방향으로 선회하게 해준다. 모든 것을 이해할 순 없다.&lt;/li&gt;
  &lt;li&gt;동료 관계에 힘쓰고 네트워크를 강화하라. 동료에 의지하라. 변화는 종종 우리를 필요로 한다. 매일매일을 소중히하고 당신의 목적을 돕는 모든 이에게 감사를 표현해라.&lt;/li&gt;
  &lt;li&gt;나이키의 “Just do it” 처럼, 도전하라. 체계적인 방식으로. 실험 개념과 파일럿 프로그램 개발을 활용하라. 성공이 증명되었다면, 더 빠른 속도로 지속하고 규모를 키워라.&lt;/li&gt;
  &lt;li&gt;비관적인 태클러를 무시하고, 열정적으로 살아라. 하지만 기억하자 “걷기 전에 기어가기, 달리기 전에 걷기”. 너무 급하게 가속하지말자, 장기적인 성공에 필수인 단계를 놓칠 수 있다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;변화는 쉽지 않다. 때로는 느리게 진행되는 여정일테지만 성급해지지 말고 작은 행동이 종종 거대한 효과를 냄을 기억하자.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;https://www.forbes.com/sites/forbescommunicationscouncil/2020/09/24/ten-leadership-strategies-to-crawl-walk-run-your-way-to-success/?sh=5e8f28393372&quot;&gt;source&lt;/a&gt;&lt;/p&gt;

</description>
        <pubDate>Sun, 23 May 2021 08:43:59 +0000</pubDate>
        <link>http://countingmars.github.io/episodes/2021/05/23/crawl-walk-run.html</link>
        <guid isPermaLink="true">http://countingmars.github.io/episodes/2021/05/23/crawl-walk-run.html</guid>
        
        
        <category>episodes</category>
        
      </item>
    
  </channel>
</rss>
