<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Soulmate.......</title>
    <link>https://escomic.tistory.com/</link>
    <description>차카게 살자</description>
    <language>ko</language>
    <pubDate>Sat, 11 Apr 2026 09:30:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>바나나쥬스</managingEditor>
    <image>
      <title>Soulmate.......</title>
      <url>https://tistory1.daumcdn.net/tistory/26019/attach/d743d489597246c59bdb2290fea36c2e</url>
      <link>https://escomic.tistory.com</link>
    </image>
    <item>
      <title>요즘 평정심을 자주 잃는다</title>
      <link>https://escomic.tistory.com/637</link>
      <description>&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;회사를 떠나야 할 때가 오는듯 싶다&lt;/p&gt;</description>
      <category>궁시렁대기</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/637</guid>
      <comments>https://escomic.tistory.com/637#entry637comment</comments>
      <pubDate>Tue, 1 Aug 2023 22:33:39 +0900</pubDate>
    </item>
    <item>
      <title>블록체인 용어들</title>
      <link>https://escomic.tistory.com/634</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;POW (Proof of Work, 작업증명)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;background-color: #ffffff;&quot;&gt;컴퓨팅 파워를 이용하여 특정 난이도의 주어진 해시값을 찾아낼 수 있는 넌스(Nonce) 값을 계산하고 이를 검증하여 합의를 도출하는 합의 알고리즘&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;- 컴퓨터 성능이 발달함에 따라 난이도 조건이 높아지며 컴퓨팅 파워 낭비와 에너지 소모가 심해지는 단점&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;- 열심히 일한 넘이 가져감. 열심히 일해서 체력 소모가 큼&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;POS (Proof of Stake, 지분증명)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 암호화폐를 보유한 지분율에 비례하여 의사 결정 권한을 주는 합의 알고리즘&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 지분 많은 넘이 가져감.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>지식쌓기</category>
      <category>블록체인</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/634</guid>
      <comments>https://escomic.tistory.com/634#entry634comment</comments>
      <pubDate>Thu, 10 Nov 2022 23:16:13 +0900</pubDate>
    </item>
    <item>
      <title>Android Biometric</title>
      <link>https://escomic.tistory.com/633</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드에 생체인증을 구현하기 위해서는&amp;nbsp; Biometric 을 사용하면 된다 (FingerprintManager 는 deprecated 됨)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.android.com/training/sign-in/biometric-auth&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.android.com/training/sign-in/biometric-auth&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667805348000&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;생체 인식 인증 대화상자 표시 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&quot; data-og-description=&quot;생체 인식 인증 대화상자 표시 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱의 민감한 정보나 고급 콘텐츠를 보호하는 데는 얼굴 인식, 지문 인식 같은 &quot; data-og-host=&quot;developer.android.com&quot; data-og-source-url=&quot;https://developer.android.com/training/sign-in/biometric-auth&quot; data-og-url=&quot;https://developer.android.com/training/sign-in/biometric-auth?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/GoA9Q/hyQvmQ4BDJ/guR5InPNrsIV8cJuJMSzs0/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676&quot;&gt;&lt;a href=&quot;https://developer.android.com/training/sign-in/biometric-auth&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.android.com/training/sign-in/biometric-auth&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/GoA9Q/hyQvmQ4BDJ/guR5InPNrsIV8cJuJMSzs0/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676');&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;생체 인식 인증 대화상자 표시 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&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;developer.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라하면 그다지 어려운건 없는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암호화 부분이 나오면서 이게 뭐하는 놈인가 싶다&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;대부분 앱에서 생체인증을 통해 인증을 통과하면 민감한 정보(대부분 access token, 심지어는 password) 를&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱내 (대부분 shared preferences) 에 저장해 두고, 가져 오는데 사용하게 된다.&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;이 암복호화를 사용하기 위한 key 를 Android KeyStore 에서 관리하게 하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 key 사용을 위해 생체 인증 과정을 거치게 되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 암복호화에 사용하는 key는 Android 시스템에서 관리하기 때문에 안정성을 보장받는다.&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;* Android KeyStore 참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.android.com/training/articles/keystore?hl=ko&quot;&gt;https://developer.android.com/training/articles/keystore?hl=ko&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1667900241117&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;Android Keystore 시스템 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&quot; data-og-description=&quot;Android Keystore 시스템 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android Keystore 시스템을 사용하면 암호화 키를 컨테이너에 저장하여 기기에서 키를 추출&quot; data-og-host=&quot;developer.android.com&quot; data-og-source-url=&quot;https://developer.android.com/training/articles/keystore?hl=ko&quot; data-og-url=&quot;https://developer.android.com/training/articles/keystore?hl=ko&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.android.com/training/articles/keystore?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.android.com/training/articles/keystore?hl=ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Android Keystore 시스템 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Android Keystore 시스템 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android Keystore 시스템을 사용하면 암호화 키를 컨테이너에 저장하여 기기에서 키를 추출&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KeyGenerator 생성시 KeyGenParameterSpec 의 아래 옵션을 false 로 주면 인증을 거치지 않아도 사용 가능하다&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;setUserAuthenticationRequired&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 true를 주면 항상 인증을 거쳐야 한다.&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;즉 Biometric 과 Cryptography 는 별개의 영역이지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BiometricPrompt 를 실행할때 CryptoObject 를 넘겨 받으면서 밀접 연관을 갖게 되기도 한다.&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;이때 CryptoObject 넘겨 주는 경우에는 얼굴인식이 뜨지 않고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;넘겨주지 않는 경우에는 지문,얼굴 인식 두개가 다 떠서 뭐가 다른지 찾아봤더니..&lt;/p&gt;
&lt;div&gt;&lt;a href=&quot;https://source.android.com/docs/compatibility/13/android-13-cdd#7310_biometric_sensors&quot;&gt;https://source.android.com/docs/compatibility/13/android-13-cdd#7310_biometric_sensors&lt;/a&gt;
&lt;figure id=&quot;og_1667899852387&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;Android 13 호환성 정의 &amp;nbsp;|&amp;nbsp; Android 오픈소스 프로젝트 &amp;nbsp;|&amp;nbsp; Android Open Source Project&quot; data-og-description=&quot;&quot; data-og-host=&quot;source.android.com&quot; data-og-source-url=&quot;https://source.android.com/docs/compatibility/13/android-13-cdd#7310_biometric_sensors&quot; data-og-url=&quot;https://source.android.com/docs/compatibility/13/android-13-cdd?hl=ko&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://source.android.com/docs/compatibility/13/android-13-cdd#7310_biometric_sensors&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://source.android.com/docs/compatibility/13/android-13-cdd#7310_biometric_sensors&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Android 13 호환성 정의 &amp;nbsp;|&amp;nbsp; Android 오픈소스 프로젝트 &amp;nbsp;|&amp;nbsp; Android Open Source Project&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;source.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7.3.10 의 biometric sensors 섹션에 아래와 같은 내용이 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[C-6-2] MUST present only&amp;nbsp;Class 3&amp;nbsp;biometrics when the authentication requires&amp;nbsp;&lt;a href=&quot;https://developer.android.com/reference/android/hardware/biometrics/BiometricManager.Authenticators#BIOMETRIC_STRONG&quot;&gt;BIOMETRIC_STRONG&lt;/a&gt;&amp;nbsp;, or the authentication is invoked with a&amp;nbsp;&lt;a href=&quot;https://developer.android.com/reference/android/hardware/biometrics/BiometricPrompt.CryptoObject&quot;&gt;CryptoObject&lt;/a&gt;&amp;nbsp;.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 CtyptoObject 넘겨 받는 경우에는 Class 3 (Strong) 에 해당되는 것만 표시된다는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무래도 face 인증은 Class 3 이 아닌것 같다 (이것까지 찾아보기 귀찮으니 넘어간다)&lt;/p&gt;</description>
      <category>지식쌓기</category>
      <category>android</category>
      <category>biometric</category>
      <category>안드로이드</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/633</guid>
      <comments>https://escomic.tistory.com/633#entry633comment</comments>
      <pubDate>Tue, 8 Nov 2022 18:39:34 +0900</pubDate>
    </item>
    <item>
      <title>MirM Global DOGMA AirDrop</title>
      <link>https://escomic.tistory.com/632</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://wn.nr/wZ6yp3&quot;&gt;https://wn.nr/wZ6yp3&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 해봐야지..&lt;/p&gt;</description>
      <category>궁시렁대기</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/632</guid>
      <comments>https://escomic.tistory.com/632#entry632comment</comments>
      <pubDate>Fri, 4 Nov 2022 09:53:27 +0900</pubDate>
    </item>
    <item>
      <title>코로나 확진</title>
      <link>https://escomic.tistory.com/631</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;쩌럽..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 안걸릴줄 알았는데 ㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아침부터 몸이 으슬해서.. 열도 올라오는것 같고.. 혹시나 같이 점심먹고 피해줄까봐 병원가서 신속항원받아봤떠니&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선명한 두줄 -_-;;;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아... 금욜에 휴가내서 놀러갈 계획에 호텔도 다 잡아놨는데 ㅜㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 아프진않아... 딱히 체온계 재보면 열도 없고 괜히 검사했나 싶기도 하고 -_-&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;11월2일 1일차&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일치 타고.. 재택전환 귀가&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;- 얼굴에 열감은 있지만 열재보면 열은없다 -_-&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;11월3일 2일차&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;11월4일 3일차&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 목만아픔... 약은 점심, 저녁 두번 먹음..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 약도 이제 안먹어도 될거 같다-_-&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;11월 5일 4일차&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 역시나 목만아픔.. 점심 한번만 약먹음...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11월 6일 5일차&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 가습을 잘해노코 자서 근가.. 아침에 좀 잠기고 지금은 목도 괜찮아지려는 느낌?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 약은 안먹어씀..&lt;/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;11월 7일 6일차&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 말짱..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11월 8일 7일차&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;11월 9일&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 격리 끝 출근함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 큰 아픔없이 코로나 격리 1주일을 보내고 좋았는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11월 14일 오늘 몸이 너무 안좋았다..&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;지하철에 사람들 끼이고 너무 더워 땀나고 쓰러질뻔..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;겨우겨우 버텨서 지하철 내리고 한참 쉬다가... 출근..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열이나거나 기침을 하거나 그런것도 아닌데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헛구역질나고 계속 덥고 그냥 휴가내고 집으로 다시 돌아와서 잠만잤다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잠자는 과정에서도 너무 덥고 땀나고..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 코로나로 인해 몸에 열을 얻은듯 -_-&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밥먹고 약하나 먹고 씻고 자야겠다... 낼은 괜찮아지겠지..&lt;/p&gt;</description>
      <category>궁시렁대기</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/631</guid>
      <comments>https://escomic.tistory.com/631#entry631comment</comments>
      <pubDate>Wed, 2 Nov 2022 21:18:22 +0900</pubDate>
    </item>
    <item>
      <title>MBTI 해봄</title>
      <link>https://escomic.tistory.com/629</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;하도 MBTI MBTI 해대서 다시 해봄&lt;br&gt;저번엔 하다가 문제가 넘 많아서 중간에 포기 했던지라... &lt;br&gt;심심해서 다시해봄 &lt;br&gt;ISTJ-A 라고 한다 -ㅅ- &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;1150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blWast/btrLgpnQNhK/hqKffe71nRa2yWekTylSV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blWast/btrLgpnQNhK/hqKffe71nRa2yWekTylSV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blWast/btrLgpnQNhK/hqKffe71nRa2yWekTylSV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblWast%2FbtrLgpnQNhK%2FhqKffe71nRa2yWekTylSV1%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;264&quot; height=&quot;476&quot; data-origin-width=&quot;638&quot; data-origin-height=&quot;1150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;br&gt;&lt;a href=&quot;https://www.16personalities.com/ko/%EC%84%B1%EA%B2%A9%EC%9C%A0%ED%98%95-istj&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://www.16personalities.com/ko/%EC%84%B1%EA%B2%A9%EC%9C%A0%ED%98%95-istj&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;opengraph&quot; data-og-title=&quot;성격유형 : “현실주의자” (ISTJ)
        
        | 16Personalities&quot; data-ke-align=&quot;alignCenter&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.16personalities.com&quot; data-og-source-url=&quot;https://www.16personalities.com/ko/%EC%84%B1%EA%B2%A9%EC%9C%A0%ED%98%95-istj&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/8Zzh0/hyPEFS4nmW/SUXCFILU4yWT6Y9gfb9xGK/img.png?width=2106&amp;amp;height=630&amp;amp;face=1322_128_1983_282&quot; data-og-url=&quot;https://www.16personalities.com/ko/%ec%84%b1%ea%b2%a9%ec%9c%a0%ed%98%95-istj&quot;&gt;
 &lt;a href=&quot;https://www.16personalities.com/ko/%ec%84%b1%ea%b2%a9%ec%9c%a0%ed%98%95-istj&quot; target=&quot;_blank&quot; data-source-url=&quot;https://www.16personalities.com/ko/%EC%84%B1%EA%B2%A9%EC%9C%A0%ED%98%95-istj&quot;&gt;
  &lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/8Zzh0/hyPEFS4nmW/SUXCFILU4yWT6Y9gfb9xGK/img.png?width=2106&amp;amp;height=630&amp;amp;face=1322_128_1983_282')&quot;&gt; 
  &lt;/div&gt;
  &lt;div class=&quot;og-text&quot;&gt;
   &lt;p class=&quot;og-title&quot;&gt;성격유형 : “현실주의자” (ISTJ) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| 16Personalities&lt;/p&gt;
   &lt;p class=&quot;og-desc&quot;&gt;&lt;/p&gt;
   &lt;p class=&quot;og-host&quot;&gt;www.16personalities.com&lt;/p&gt;
  &lt;/div&gt;&lt;/a&gt;
&lt;/figure&gt;</description>
      <category>궁시렁대기</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/629</guid>
      <comments>https://escomic.tistory.com/629#entry629comment</comments>
      <pubDate>Fri, 2 Sep 2022 20:16:47 +0900</pubDate>
    </item>
    <item>
      <title>Android - Clean Architecture 적용 중... 훔....</title>
      <link>https://escomic.tistory.com/627</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1660136428636&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;Clean Coder Blog&quot; data-og-description=&quot;The Clean Architecture 13 August 2012 Over the last several years we&amp;rsquo;ve seen a whole range of ideas regarding the architecture of systems. These include: Though these architectures all vary somewhat in their details, they are very similar. They all have &quot; data-og-host=&quot;blog.cleancoder.com&quot; data-og-source-url=&quot;https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html&quot; data-og-url=&quot;https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/2Ieql/hyPpMb6AS9/CoQexS94xAxs6ZindNvke0/img.jpg?width=772&amp;amp;height=567&amp;amp;face=0_0_772_567,https://scrap.kakaocdn.net/dn/dprKAN/hyPonE0Kvx/Krxh5DFOzjCLOCQMgVDXGK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/2Ieql/hyPpMb6AS9/CoQexS94xAxs6ZindNvke0/img.jpg?width=772&amp;amp;height=567&amp;amp;face=0_0_772_567,https://scrap.kakaocdn.net/dn/dprKAN/hyPonE0Kvx/Krxh5DFOzjCLOCQMgVDXGK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&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;Clean Coder Blog&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The Clean Architecture 13 August 2012 Over the last several years we&amp;rsquo;ve seen a whole range of ideas regarding the architecture of systems. These include: Though these architectures all vary somewhat in their details, they are very similar. They all have&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.cleancoder.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런저런 클린 아키텍쳐 관련된 많은 글들을 보고 예제들도 많이 봤지만..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시나 실무에 적용하다 보면 여러가지 예외 상황들을 맞이하게 된다.... 이런 고민 하는 사람없나 -_-? 글도 잘 못찾겠고...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;domain 모듈을 순수 코틀린 모듈로 한 경우&amp;nbsp;&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;1. Bitmap을 못쓴다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- android.graphics 에 있기 때문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 난 그냥 Bitmap 을 넘겨받고 싶은데...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ByteArray 로 하면되는데 zxing 은 글케 안주네...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- BitMatrix 라고 넘겨주는데.... 이건 zxing에서 정의한 모델... domain 영역에 정의해서 쓰긴 부적합... 물론 Bitmap도 부적합..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 그래 Bitmap은 domain영역에 정의 하는 건 아닌것 같다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/android10/Android-CleanArchitecture/issues/182&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/android10/Android-CleanArchitecture/issues/182&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1660137518779&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;How to pass the android dependent data from data-layer to presentation-layer &amp;middot; Issue #182 &amp;middot; android10/Android-CleanArchitectur&quot; data-og-description=&quot;Hi all, I am currently learning about android-clean architecture. Related to #64 , I am thinking about how to pass the Android-specific data (like bitmap) from data-layer to presentation-layer thro...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/android10/Android-CleanArchitecture/issues/182&quot; data-og-url=&quot;https://github.com/android10/Android-CleanArchitecture/issues/182&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bnL9n3/hyPpEd5oIG/t2N6HX4wSz1sBWh71hbEOk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/android10/Android-CleanArchitecture/issues/182&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/android10/Android-CleanArchitecture/issues/182&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bnL9n3/hyPpEd5oIG/t2N6HX4wSz1sBWh71hbEOk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;How to pass the android dependent data from data-layer to presentation-layer &amp;middot; Issue #182 &amp;middot; android10/Android-CleanArchitectur&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Hi all, I am currently learning about android-clean architecture. Related to #64 , I am thinking about how to pass the Android-specific data (like bitmap) from data-layer to presentation-layer thro...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 훔 Generic을 써볼까? 되나?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Base64&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- android.util.Base64 대신 java.util.Base64 를 쓰면되겠지..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 근데 java.util.Base64 는 api 26 버전에 추가됬네 -_-?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- decoding 하고 encoding 하고 이런게 비지니스 로직 아닌가 -ㅅ-?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 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;p data-ke-size=&quot;size16&quot;&gt;iOS 친구는 그렇게 까진 안했다고 한다&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;app, domain, data 의 의존성관계&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클릭아키텍처 대로라면 의존성은 아래와 같이 되어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;app -&amp;gt; domain&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;data -&amp;gt; domain&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;domain -&amp;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;app -&amp;gt; data, domain&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;data -&amp;gt; domain&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;domain -&amp;gt; 없음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;그런데 data 레이어에 정의된 Repository Implementation class 들을 생성해서 주입시켜야 하는데 첫번째 처럼 하려면 어디서 생성해서 주입시켜야 하나? 대부분 app 영역에서 di를 하니까..&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 블로그 예제 보려는데 소스가 없어졌네.. 쩝&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://fivenyc.medium.com/android-architecture-part-4-applying-clean-architecture-on-android-hands-on-source-code-8da287a0e0a2&quot;&gt;https://fivenyc.medium.com/android-architecture-part-4-applying-clean-architecture-on-android-hands-on-source-code-8da287a0e0a2&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1660138794623&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;Android Architecture Part 4: Applying Clean Architecture on Android, Hands on (source code&amp;hellip;&quot; data-og-description=&quot;Let&amp;rsquo;s get our hands dirty with clean code and turn that blank canvas into robust and versatile architec&quot; data-og-host=&quot;fivenyc.medium.com&quot; data-og-source-url=&quot;https://fivenyc.medium.com/android-architecture-part-4-applying-clean-architecture-on-android-hands-on-source-code-8da287a0e0a2&quot; data-og-url=&quot;https://fivenyc.medium.com/android-architecture-part-4-applying-clean-architecture-on-android-hands-on-source-code-8da287a0e0a2&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ucvFM/hyPpCggIDa/Y5TFMNiIrkKyIAFkvkJuN0/img.png?width=1200&amp;amp;height=627&amp;amp;face=0_0_1200_627,https://scrap.kakaocdn.net/dn/drAIY3/hyPorAEWHd/dprx22XROTHz77JSKoAxA1/img.png?width=1400&amp;amp;height=844&amp;amp;face=0_0_1400_844,https://scrap.kakaocdn.net/dn/ciQtWq/hyPpyStgUG/LJtUiOWstAUwaGfT2LkFh0/img.png?width=1400&amp;amp;height=844&amp;amp;face=0_0_1400_844&quot;&gt;&lt;a href=&quot;https://fivenyc.medium.com/android-architecture-part-4-applying-clean-architecture-on-android-hands-on-source-code-8da287a0e0a2&quot; data-source-url=&quot;https://fivenyc.medium.com/android-architecture-part-4-applying-clean-architecture-on-android-hands-on-source-code-8da287a0e0a2&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ucvFM/hyPpCggIDa/Y5TFMNiIrkKyIAFkvkJuN0/img.png?width=1200&amp;amp;height=627&amp;amp;face=0_0_1200_627,https://scrap.kakaocdn.net/dn/drAIY3/hyPorAEWHd/dprx22XROTHz77JSKoAxA1/img.png?width=1400&amp;amp;height=844&amp;amp;face=0_0_1400_844,https://scrap.kakaocdn.net/dn/ciQtWq/hyPpyStgUG/LJtUiOWstAUwaGfT2LkFh0/img.png?width=1400&amp;amp;height=844&amp;amp;face=0_0_1400_844');&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;Android Architecture Part 4: Applying Clean Architecture on Android, Hands on (source code&amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Let&amp;rsquo;s get our hands dirty with clean code and turn that blank canvas into robust and versatile architec&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fivenyc.medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UseCase 정의&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분의 예제들을 보면 하나의 동작당 하나의 UseCase 를 정의하고 한가지의 동작만 하고 있다.&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;AddNewFeedUseCase&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GetFeedArticleUseCase&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하나의 동작마다 정의 하고 있다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 FeedUseCase 하나 만들고 그 안에서 addNewFeed, getFeedArticle 이렇게 두 동작을 정의하면 안되나?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(iOS 친구는 이렇게 했다고 한다.. )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나하나 하면 UseCase를 겁네 많아지는데... 훔..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 구글 IO 소스보니 구글도 저렇게 하나하나 정의했더라... invoke 로..&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;UseCase 의 의미가 유저가 이 서비스를 통해 하고 하는 것..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고민고민 ㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Mappers&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분 Mapper 들을 data layer에 넣어두고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;data layer에 정의한 모델을 domain 영역의 entity 모델로 변환 시켜주고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 난 거의 그 모델들이 완전 동일하여 그냥 domain 영역에 하나만 정의하고 딱히 mapper 를 두고 변환시켜주지 않고 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오히려 presentation (app) 영역에 mapper 를 둬서 domain 의 모델을 app 영역의 모델로 변환시켜주고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜냐하면 app 영역의 모델은 Parcelable 해야 하는 경우가 있기 때문..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 가는걸로.. ㅜㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;domain 레이어도 android library module로 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 domain 레이어 모델클래스에 Parcelable도 정의해 버리고 mapper들은 걍 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 한 결정적인 원인이..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐였더라.. 낼 다시 업뎃...&amp;nbsp;&lt;/p&gt;</description>
      <category>지식쌓기</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/627</guid>
      <comments>https://escomic.tistory.com/627#entry627comment</comments>
      <pubDate>Wed, 10 Aug 2022 22:55:56 +0900</pubDate>
    </item>
    <item>
      <title>Gradle plugin - kotlin va kotlin-android</title>
      <link>https://escomic.tistory.com/626</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/72585446/difference-between-kotlin-plugins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/72585446/difference-between-kotlin-plugins&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1659492522858&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;Difference between Kotlin plugins&quot; data-og-description=&quot;What are the difference between this three Kotlin plugin and what they actually do? plugins { id 'kotlin-android' id 'org.jetbrains.kotlin.android' id &amp;quot;org.jetbrains.kotlin.jvm&amp;quot;&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/72585446/difference-between-kotlin-plugins&quot; data-og-url=&quot;https://stackoverflow.com/questions/72585446/difference-between-kotlin-plugins&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bmxkaY/hyPhpKc5f8/GGdapoGsuhMnKTpPTak6Bk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/72585446/difference-between-kotlin-plugins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/72585446/difference-between-kotlin-plugins&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bmxkaY/hyPhpKc5f8/GGdapoGsuhMnKTpPTak6Bk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&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;Difference between Kotlin plugins&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;What are the difference between this three Kotlin plugin and what they actually do? plugins { id 'kotlin-android' id 'org.jetbrains.kotlin.android' id &quot;org.jetbrains.kotlin.jvm&quot;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Clean Architecture 적용중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;domain 모듈을 순수 코틀린 모듈로 적용하려는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kotlin, kotlin-android 의 차이점이 뭔지 궁금해서 찾아봄&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;org.jetbrains.kotlin.jvm = kotlin&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&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;&lt;b&gt;org.jetbrains.kotlin.android = kotlin-android&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;- kotlin-android를 쓰려면 com.android.application 이거나 com.android.library 와 함께 써야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 그러면 android{} 영역도 정의 하게되고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 결국 안드로이드 모듈이 되는셈&lt;/p&gt;</description>
      <category>지식쌓기</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/626</guid>
      <comments>https://escomic.tistory.com/626#entry626comment</comments>
      <pubDate>Wed, 3 Aug 2022 11:17:49 +0900</pubDate>
    </item>
    <item>
      <title>LiveData / Flow / StateFlow</title>
      <link>https://escomic.tistory.com/625</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;다들 LiveData에서 Flow 간다고 하는데....&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는 LiveData 를 대체하지 못하지만 StateFlow라는 놈이 나오면서 대체가 가능해 졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이대로라면 LiveData는 deprecated 되려나? 차라리 그렇게 되면 선택권이라도 없어지겠구먼... 아직 고민되는군..)&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;pre id=&quot;code_1658452729367&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// getData()는 Flow&amp;lt;Data&amp;gt; 를 반환

// 1. Flow
val data = useCase.getData()

// 2. LiveData
val dataLiveData: LiveData&amp;lt;Data&amp;gt; = useCase.getData().asLiveData()

// 3. StateFlow
private val _data = MutableStateFlow&amp;lt;Data?&amp;gt;(null)
val data: StateFlow&amp;lt;Result&amp;lt;Data?&amp;gt;&amp;gt; = _data

init {
    viewModelScope.launch {
    	useCase.getData().collect {
            _data.value = it
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI에 data를 표시하는데는 세방법 모두 동일하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 Flow는 data의 흐름을 발생시키기만 하고 데이터를 저장시켜두지는 않는다..흘러가면 끝..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 Flow는 lifecycle과는 전혀 연관이 없기때문에 메모리 누수등을 직접 관리해 줘야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드의 Flow를 바로 접근해서 쓰면 데이터 표시에는 문제가 없으나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회전처리등을 할때 매번 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;그래서 2,3번같이 Flow를 데이터 홀더 클래스인 LiveData나 StateFlow에 넣어두고 사용해야 한다.&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;Flow는 말 그대로 흐름인데 흐름이 필요없는 경우 그냥 한번만 가져와서 쓰고 마는 경우에는 굳이 Flow를 써야 하나 싶은 생각이 든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StateFlow에 직접 값을 넣어도 될거 같은데...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 Paging 라이브러리를 쓰거나 연속적인 데이타를 처리하기엔 아주 좋다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 아래와 같이 표현했나 보다&lt;/p&gt;
&lt;p id=&quot;d925&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Flow: Simple things are harder and complex things are easier&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;일단 트렌드니 따라가는걸로..&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;a href=&quot;https://medium.com/androiddevelopers/migrating-from-livedata-to-kotlins-flow-379292f419fb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://medium.com/androiddevelopers/migrating-from-livedata-to-kotlins-flow-379292f419fb&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658452426203&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;Migrating from LiveData to Kotlin&amp;rsquo;s Flow&quot; data-og-description=&quot;In this post you&amp;rsquo;ll learn how to expose Flows to a view, how to collect them, and how to fine-tune it to fit specific needs.&quot; data-og-host=&quot;medium.com&quot; data-og-source-url=&quot;https://medium.com/androiddevelopers/migrating-from-livedata-to-kotlins-flow-379292f419fb&quot; data-og-url=&quot;https://medium.com/androiddevelopers/migrating-from-livedata-to-kotlins-flow-379292f419fb&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dbA1KF/hyPanLVD57/GSydB3U4F9F0OSRsk8XuuK/img.jpg?width=1200&amp;amp;height=356&amp;amp;face=0_0_1200_356,https://scrap.kakaocdn.net/dn/dFVow2/hyPazFnyvw/jWwgSwygEk7eqDhtF2wdj1/img.png?width=927&amp;amp;height=288&amp;amp;face=0_0_927_288,https://scrap.kakaocdn.net/dn/dkGfYH/hyPapv1UkU/l3SuG7xvYotm28HMOR8YB0/img.png?width=927&amp;amp;height=288&amp;amp;face=0_0_927_288&quot;&gt;&lt;a href=&quot;https://medium.com/androiddevelopers/migrating-from-livedata-to-kotlins-flow-379292f419fb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://medium.com/androiddevelopers/migrating-from-livedata-to-kotlins-flow-379292f419fb&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dbA1KF/hyPanLVD57/GSydB3U4F9F0OSRsk8XuuK/img.jpg?width=1200&amp;amp;height=356&amp;amp;face=0_0_1200_356,https://scrap.kakaocdn.net/dn/dFVow2/hyPazFnyvw/jWwgSwygEk7eqDhtF2wdj1/img.png?width=927&amp;amp;height=288&amp;amp;face=0_0_927_288,https://scrap.kakaocdn.net/dn/dkGfYH/hyPapv1UkU/l3SuG7xvYotm28HMOR8YB0/img.png?width=927&amp;amp;height=288&amp;amp;face=0_0_927_288');&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;Migrating from LiveData to Kotlin&amp;rsquo;s Flow&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;In this post you&amp;rsquo;ll learn how to expose Flows to a view, how to collect them, and how to fine-tune it to fit specific needs.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* &lt;a href=&quot;https://hongbeomi.medium.com/%EB%B2%88%EC%97%AD-livedata%EC%97%90%EC%84%9C-kotlin%EC%9D%98flow%EB%A1%9C-migrating-5b183c363f60&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://hongbeomi.medium.com/%EB%B2%88%EC%97%AD-livedata%EC%97%90%EC%84%9C-kotlin%EC%9D%98flow%EB%A1%9C-migrating-5b183c363f60&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658452451813&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;[번역]LiveData에서 Kotlin의Flow로 Migrating&quot; data-og-description=&quot;LiveData에서 Kotlin의 Flow로 변경하기&quot; data-og-host=&quot;hongbeomi.medium.com&quot; data-og-source-url=&quot;https://hongbeomi.medium.com/%EB%B2%88%EC%97%AD-livedata%EC%97%90%EC%84%9C-kotlin%EC%9D%98flow%EB%A1%9C-migrating-5b183c363f60&quot; data-og-url=&quot;https://hongbeomi.medium.com/%EB%B2%88%EC%97%AD-livedata%EC%97%90%EC%84%9C-kotlin%EC%9D%98flow%EB%A1%9C-migrating-5b183c363f60&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iByHf/hyPazk4GTI/l27eeqqP3uS0cVhDbFs5L0/img.jpg?width=1200&amp;amp;height=675&amp;amp;face=0_0_1200_675,https://scrap.kakaocdn.net/dn/ofUq9/hyPaqVZRTw/j9dKrzZ6OMo32mXkiKqV6k/img.png?width=1200&amp;amp;height=938&amp;amp;face=0_0_1200_938,https://scrap.kakaocdn.net/dn/ckQklW/hyPaoDUOFa/QtubZmrbm5vydeQP8BMmx1/img.jpg?width=1400&amp;amp;height=787&amp;amp;face=0_0_1400_787&quot;&gt;&lt;a href=&quot;https://hongbeomi.medium.com/%EB%B2%88%EC%97%AD-livedata%EC%97%90%EC%84%9C-kotlin%EC%9D%98flow%EB%A1%9C-migrating-5b183c363f60&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hongbeomi.medium.com/%EB%B2%88%EC%97%AD-livedata%EC%97%90%EC%84%9C-kotlin%EC%9D%98flow%EB%A1%9C-migrating-5b183c363f60&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iByHf/hyPazk4GTI/l27eeqqP3uS0cVhDbFs5L0/img.jpg?width=1200&amp;amp;height=675&amp;amp;face=0_0_1200_675,https://scrap.kakaocdn.net/dn/ofUq9/hyPaqVZRTw/j9dKrzZ6OMo32mXkiKqV6k/img.png?width=1200&amp;amp;height=938&amp;amp;face=0_0_1200_938,https://scrap.kakaocdn.net/dn/ckQklW/hyPaoDUOFa/QtubZmrbm5vydeQP8BMmx1/img.jpg?width=1400&amp;amp;height=787&amp;amp;face=0_0_1400_787');&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;[번역]LiveData에서 Kotlin의Flow로 Migrating&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;LiveData에서 Kotlin의 Flow로 변경하기&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hongbeomi.medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* &lt;a href=&quot;https://kotlinworld.com/233?category=973477&quot;&gt;https://kotlinworld.com/233?category=973477&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1658452381638&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;[Coroutine Flow] 3. stateIn 사용하여 Flow를 StateFlow로 변환하기&quot; data-og-description=&quot;Flow와 StateFlow 우리는 리액티브 프로그래밍을 할 때 여러 데이터 흐름(flow)를 하나로 합쳐 하나의 데이터 흐름(Flow)으로 만들어낸다. 예를 들어 아래의 그림3에서는 Flow가 3개 있고 이것이 합쳐져 &quot; data-og-host=&quot;kotlinworld.com&quot; data-og-source-url=&quot;https://kotlinworld.com/233?category=973477&quot; data-og-url=&quot;https://kotlinworld.com/233&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/twQNk/hyPaxt2ijC/ZcP3sPR53MaNXHrt66dcEK/img.png?width=794&amp;amp;height=1790&amp;amp;face=0_0_794_1790,https://scrap.kakaocdn.net/dn/f6V5D/hyPaDuld41/aRtDfbjfKbUWnNAotJTy8k/img.png?width=794&amp;amp;height=1790&amp;amp;face=0_0_794_1790,https://scrap.kakaocdn.net/dn/tafxU/hyPayGrNEr/3qVaCHYRd8bQAMVQ8vaDG1/img.jpg?width=1714&amp;amp;height=1672&amp;amp;face=0_0_1714_1672&quot;&gt;&lt;a href=&quot;https://kotlinworld.com/233?category=973477&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kotlinworld.com/233?category=973477&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/twQNk/hyPaxt2ijC/ZcP3sPR53MaNXHrt66dcEK/img.png?width=794&amp;amp;height=1790&amp;amp;face=0_0_794_1790,https://scrap.kakaocdn.net/dn/f6V5D/hyPaDuld41/aRtDfbjfKbUWnNAotJTy8k/img.png?width=794&amp;amp;height=1790&amp;amp;face=0_0_794_1790,https://scrap.kakaocdn.net/dn/tafxU/hyPayGrNEr/3qVaCHYRd8bQAMVQ8vaDG1/img.jpg?width=1714&amp;amp;height=1672&amp;amp;face=0_0_1714_1672');&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;[Coroutine Flow] 3. stateIn 사용하여 Flow를 StateFlow로 변환하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Flow와 StateFlow 우리는 리액티브 프로그래밍을 할 때 여러 데이터 흐름(flow)를 하나로 합쳐 하나의 데이터 흐름(Flow)으로 만들어낸다. 예를 들어 아래의 그림3에서는 Flow가 3개 있고 이것이 합쳐져&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kotlinworld.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* &lt;a href=&quot;https://readystory.tistory.com/207&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://readystory.tistory.com/207&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658452347485&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;[Android] LiveData VS StateFlow, 왜 StateFlow 를 써야할까?&quot; data-og-description=&quot;LiveData 는 Lifecycle 라이브러리 중 하나로, 안드로이드 공통의 라이프사이클과 관련된 문제를 해결할 수 있게 해 주면서 앱 개발시 보다 더 유지보수하기 쉽게, 테스트하기 쉽게 만들어주는 라이&quot; data-og-host=&quot;readystory.tistory.com&quot; data-og-source-url=&quot;https://readystory.tistory.com/207&quot; data-og-url=&quot;https://readystory.tistory.com/207&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vvAT9/hyPaxt2hhD/WLJpdH3vFZWJDWeaFKDN6k/img.png?width=800&amp;amp;height=819&amp;amp;face=0_0_800_819,https://scrap.kakaocdn.net/dn/bjQcJM/hyPawoi1rD/ncLAyIKhQ1HXBBAy5X3pfk/img.png?width=800&amp;amp;height=819&amp;amp;face=0_0_800_819,https://scrap.kakaocdn.net/dn/bey0fH/hyPau47f6r/n4sQuO89yZK0hOrC1BpkkK/img.jpg?width=819&amp;amp;height=1022&amp;amp;face=0_0_819_1022&quot;&gt;&lt;a href=&quot;https://readystory.tistory.com/207&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://readystory.tistory.com/207&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vvAT9/hyPaxt2hhD/WLJpdH3vFZWJDWeaFKDN6k/img.png?width=800&amp;amp;height=819&amp;amp;face=0_0_800_819,https://scrap.kakaocdn.net/dn/bjQcJM/hyPawoi1rD/ncLAyIKhQ1HXBBAy5X3pfk/img.png?width=800&amp;amp;height=819&amp;amp;face=0_0_800_819,https://scrap.kakaocdn.net/dn/bey0fH/hyPau47f6r/n4sQuO89yZK0hOrC1BpkkK/img.jpg?width=819&amp;amp;height=1022&amp;amp;face=0_0_819_1022');&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;[Android] LiveData VS StateFlow, 왜 StateFlow 를 써야할까?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;LiveData 는 Lifecycle 라이브러리 중 하나로, 안드로이드 공통의 라이프사이클과 관련된 문제를 해결할 수 있게 해 주면서 앱 개발시 보다 더 유지보수하기 쉽게, 테스트하기 쉽게 만들어주는 라이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;readystory.tistory.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>지식쌓기</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/625</guid>
      <comments>https://escomic.tistory.com/625#entry625comment</comments>
      <pubDate>Fri, 22 Jul 2022 14:54:06 +0900</pubDate>
    </item>
    <item>
      <title>고지혈증 주의 ㅜㅜ</title>
      <link>https://escomic.tistory.com/623</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;콜레스테롤 수치가 높아서 오늘 약을 처방 받았다 한달치 -_-&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니!! 운동도 열심히 하고 먹는것도 그냥 저냥 먹는데 왜!!! 왜!!! ㅜㅜㅜㅜㅜㅜㅜㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작년 11월과 올 5월에 한 건강검진 결과&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 76px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 15.6977%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; height: 19px;&quot;&gt;참고치&lt;/td&gt;
&lt;td style=&quot;width: 16.0466%; height: 19px;&quot;&gt;21년 11월&lt;/td&gt;
&lt;td style=&quot;width: 15.9302%; height: 19px;&quot;&gt;22년 5월&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 15.6977%; height: 19px;&quot;&gt;총 콜레스테롤&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; height: 19px;&quot;&gt;&amp;lt; 200 mg/dL&lt;/td&gt;
&lt;td style=&quot;width: 16.0466%; height: 19px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;230&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.9302%; height: 19px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;274&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 15.6977%; height: 19px;&quot;&gt;고밀도 콜레스테롤 (HDL)&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; height: 19px;&quot;&gt;&amp;gt;= 60 mg/dL&lt;/td&gt;
&lt;td style=&quot;width: 16.0466%; height: 19px;&quot;&gt;84&lt;/td&gt;
&lt;td style=&quot;width: 15.9302%; height: 19px;&quot;&gt;94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 15.6977%; height: 19px;&quot;&gt;저밀도 콜레스테롤 (LDL)&lt;/td&gt;
&lt;td style=&quot;width: 15.5814%; height: 19px;&quot;&gt;&amp;lt; 130 mg/dL&lt;/td&gt;
&lt;td style=&quot;width: 16.0466%; height: 19px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;136&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 15.9302%; height: 19px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;171&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 작년 검사보다 더 높게 나온것이다 -_- 6개월만에..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LDL 이 180이상나오면 고지혈증이라고 하는데&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;피검사는 2달후에 한다고 한듯...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;야채를 더더 많이 묵자 -_- 고기 좀 줄이고 -_-&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6월에 안하던 유산소 운동열심히 하고, 약도 꼬박꼬박 먹고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2달후에 피검사 하자더만 한달만에 방문했을때 피검사 함..(7월 16일)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어제 (7월 18일) 피검사 결과를 문자로 받았는데 계속 약을 먹으라는건지 말라는건지 -_-&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;</description>
      <category>궁시렁대기</category>
      <author>바나나쥬스</author>
      <guid isPermaLink="true">https://escomic.tistory.com/623</guid>
      <comments>https://escomic.tistory.com/623#entry623comment</comments>
      <pubDate>Fri, 17 Jun 2022 20:04:53 +0900</pubDate>
    </item>
  </channel>
</rss>