<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>-</title>
    <link>https://philosopher-chan.tistory.com/</link>
    <description>-</description>
    <language>ko</language>
    <pubDate>Sat, 8 Aug 2026 12:14:32 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</managingEditor>
    <image>
      <title>-</title>
      <url>https://tistory1.daumcdn.net/tistory/3101186/attach/639b0d9d365a4ecf832ea1d7d6735808</url>
      <link>https://philosopher-chan.tistory.com</link>
    </image>
    <item>
      <title>liveData vs stateFlow</title>
      <link>https://philosopher-chan.tistory.com/1686</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;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;온라인에 찾아보면&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. 초기값을 가지고 안가지고 차이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 안드로이드 프레임워크(Activity/Fragment)에 종속되었나 종속되지 않았나의 차이&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;일단 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;&lt;b&gt;1. 초기값을 가지고 안가지고 차이&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;간단하게 LiveData를 만들어보겠습니다.&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;MutableLiveData&amp;lt;Int&amp;gt;()&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;MutableLiveData&amp;lt;Int&amp;gt;(0)&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;차이에 따라 null 이 나오냐 안나오냐 차이가 있습니다.&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;livedatad와 stateFlow를 사용할 때 입니다.&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;또한 Flow를 사용하기 때문에 유사하게 사용할 수 있습니다.&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;317&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxWHER/btsud0cNmE4/ilICEkw2hSZ7NSGTz5vFHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxWHER/btsud0cNmE4/ilICEkw2hSZ7NSGTz5vFHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxWHER/btsud0cNmE4/ilICEkw2hSZ7NSGTz5vFHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxWHER%2Fbtsud0cNmE4%2FilICEkw2hSZ7NSGTz5vFHk%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;317&quot; height=&quot;678&quot; data-origin-width=&quot;317&quot; data-origin-height=&quot;678&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;pre class=&quot;css&quot; style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&lt;code&gt;implementation &quot;androidx.lifecycle:lifecycle-runtime-ktx:2.6.2&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://gist.github.com/himchanyoon9212/0213b92f004deef0f6af34548421d4cf.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://gist.github.com/himchanyoon9212/e95a8c6cca24db42915d37370fff827a.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://gist.github.com/himchanyoon9212/3792b35f9be4cf33660d841bf1c21a1a.js&quot;&gt;&lt;/script&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;2. 프레임워크에 의존적이지 않음&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;간단하게 클린아키텍처에서는&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;Domain Layer&amp;nbsp; -&amp;gt; 비즈니스 로직&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;Presentation Layer -&amp;gt; UI 로직&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Data Layer -&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;이렇게 생각해보면&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;Domain 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;여기에서는 안드로이드 플랫폼에 의존적이지 않게 설계해야 하는데, 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;&amp;nbsp;&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/himchanyoon9212/e135a9d912914dde74656b191cdf5bab.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://gist.github.com/himchanyoon9212/fd02f3234df982d4835b0fdf6f53c46e.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://gist.github.com/himchanyoon9212/149adec8e2623f0aa4f92dfff468199d.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://gist.github.com/himchanyoon9212/97c83ad58f170da0f0a4dc83138357d1.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://gist.github.com/himchanyoon9212/04cd38051fe2cf51f8c6282458e4f66c.js&quot;&gt;&lt;/script&gt;</description>
      <category>Android(Kotlin)</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1686</guid>
      <comments>https://philosopher-chan.tistory.com/1686#entry1686comment</comments>
      <pubDate>Fri, 15 Sep 2023 03:20:20 +0900</pubDate>
    </item>
    <item>
      <title>Sealed Class</title>
      <link>https://philosopher-chan.tistory.com/1685</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Sealed&amp;nbsp;클래스는&amp;nbsp;Kotlin에서&amp;nbsp;제공하는&amp;nbsp;특수한&amp;nbsp;클래스&amp;nbsp;유형&amp;nbsp;중&amp;nbsp;하나로,&amp;nbsp;계층구조를&amp;nbsp;가진&amp;nbsp;타입의&amp;nbsp;값&amp;nbsp;집합을&amp;nbsp;정의하면서&amp;nbsp;불필요한&amp;nbsp;값들을&amp;nbsp;제한할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;기능을&amp;nbsp;가집니다.&amp;nbsp;Sealed&amp;nbsp;클래스를&amp;nbsp;사용하면&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;있습니다.&lt;br /&gt;&lt;br /&gt;Sealed&amp;nbsp;클래스:&amp;nbsp;기본&amp;nbsp;클래스를&amp;nbsp;선언하는데&amp;nbsp;사용되며,&amp;nbsp;이는&amp;nbsp;abstract이며&amp;nbsp;공용&amp;nbsp;생성자가&amp;nbsp;없습니다.&lt;br /&gt;&lt;br /&gt;Sealed&amp;nbsp;클래스에&amp;nbsp;대한&amp;nbsp;하위&amp;nbsp;클래스:&amp;nbsp;sealed&amp;nbsp;클래스의&amp;nbsp;모든&amp;nbsp;가능한&amp;nbsp;직접적인&amp;nbsp;하위&amp;nbsp;클래스를&amp;nbsp;나열합니다.&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;Sealed 클래스는 다음과 같이 선언할 수 있습니다&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;685&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu5SmZ/btsnFfua8T2/Cl1PGCwMk8SXbpLeybb311/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu5SmZ/btsnFfua8T2/Cl1PGCwMk8SXbpLeybb311/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu5SmZ/btsnFfua8T2/Cl1PGCwMk8SXbpLeybb311/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu5SmZ%2FbtsnFfua8T2%2FCl1PGCwMk8SXbpLeybb311%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;685&quot; height=&quot;205&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;205&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;위의&amp;nbsp;예제에서&amp;nbsp;Expr는&amp;nbsp;sealed&amp;nbsp;클래스입니다.&amp;nbsp;이는&amp;nbsp;Const,&amp;nbsp;Sum,&amp;nbsp;그리고&amp;nbsp;NotANumber라는&amp;nbsp;세&amp;nbsp;가지&amp;nbsp;형태의&amp;nbsp;하위&amp;nbsp;클래스를&amp;nbsp;가질&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;Sealed&amp;nbsp;클래스를&amp;nbsp;사용하면&amp;nbsp;when&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I4vSI/btsnFKUYYDj/bUrkyv63wHK4OFumLWPHZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I4vSI/btsnFKUYYDj/bUrkyv63wHK4OFumLWPHZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I4vSI/btsnFKUYYDj/bUrkyv63wHK4OFumLWPHZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI4vSI%2FbtsnFKUYYDj%2FbUrkyv63wHK4OFumLWPHZ1%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;674&quot; height=&quot;206&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;206&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;when&amp;nbsp;식은&amp;nbsp;모든&amp;nbsp;가능한&amp;nbsp;경우를&amp;nbsp;커버하므로&amp;nbsp;별도의&amp;nbsp;'else'&amp;nbsp;절이&amp;nbsp;필요하지&amp;nbsp;않습니다.&amp;nbsp;새로운&amp;nbsp;하위&amp;nbsp;클래스가&amp;nbsp;추가되면,&amp;nbsp;컴파일러는&amp;nbsp;when&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;sealed&amp;nbsp;클래스를&amp;nbsp;사용하지&amp;nbsp;않을&amp;nbsp;경우,&amp;nbsp;새로운&amp;nbsp;하위&amp;nbsp;클래스를&amp;nbsp;추가하더라도&amp;nbsp;when&amp;nbsp;식을&amp;nbsp;수정하지&amp;nbsp;않으면&amp;nbsp;컴파일&amp;nbsp;타임에&amp;nbsp;오류가&amp;nbsp;발생하지&amp;nbsp;않습니다.&amp;nbsp;이&amp;nbsp;경우&amp;nbsp;런타임에&amp;nbsp;예상치&amp;nbsp;못한&amp;nbsp;결과나&amp;nbsp;오류가&amp;nbsp;발생할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;따라서&amp;nbsp;sealed&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;</description>
      <category>Android(Kotlin)</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1685</guid>
      <comments>https://philosopher-chan.tistory.com/1685#entry1685comment</comments>
      <pubDate>Sat, 15 Jul 2023 22:21:56 +0900</pubDate>
    </item>
    <item>
      <title>h2 database란</title>
      <link>https://philosopher-chan.tistory.com/1684</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beDFJv/btsk9PLSmjr/n20TvURbtB5lvriXiabfN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beDFJv/btsk9PLSmjr/n20TvURbtB5lvriXiabfN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beDFJv/btsk9PLSmjr/n20TvURbtB5lvriXiabfN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeDFJv%2Fbtsk9PLSmjr%2Fn20TvURbtB5lvriXiabfN1%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;274&quot; height=&quot;150&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;H2&amp;nbsp;Database는&amp;nbsp;자바를&amp;nbsp;기반으로&amp;nbsp;작성된&amp;nbsp;오픈&amp;nbsp;소스&amp;nbsp;관계형&amp;nbsp;데이터베이스&amp;nbsp;관리&amp;nbsp;시스템(RDBMS)입니다.&amp;nbsp;이&amp;nbsp;DBMS는&amp;nbsp;메모리에서&amp;nbsp;실행될&amp;nbsp;수&amp;nbsp;있어&amp;nbsp;테스트&amp;nbsp;환경에&amp;nbsp;특히&amp;nbsp;적합하며,&amp;nbsp;개발&amp;nbsp;중에도&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;H2&amp;nbsp;데이터베이스의&amp;nbsp;주요&amp;nbsp;특징은&amp;nbsp;다음과&amp;nbsp;같습니다:&lt;br /&gt;&lt;br /&gt;장벽이&amp;nbsp;낮은&amp;nbsp;통합:&amp;nbsp;H2는&amp;nbsp;JDBC&amp;nbsp;API를&amp;nbsp;통해&amp;nbsp;액세스할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;자바&amp;nbsp;애플리케이션에서&amp;nbsp;쉽게&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;또한&amp;nbsp;Hibernate,&amp;nbsp;Spring과&amp;nbsp;같은&amp;nbsp;인기&amp;nbsp;있는&amp;nbsp;프레임워크와도&amp;nbsp;잘&amp;nbsp;통합됩니다.&lt;br /&gt;&lt;br /&gt;모드:&amp;nbsp;H2는&amp;nbsp;서버&amp;nbsp;모드에서&amp;nbsp;실행되거나,&amp;nbsp;임베디드&amp;nbsp;모드에서&amp;nbsp;애플리케이션과&amp;nbsp;같은&amp;nbsp;JVM에서&amp;nbsp;실행될&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이러한&amp;nbsp;유연성은&amp;nbsp;H2를&amp;nbsp;다양한&amp;nbsp;환경과&amp;nbsp;요구&amp;nbsp;사항에&amp;nbsp;적합하게&amp;nbsp;만듭니다.&lt;br /&gt;&lt;br /&gt;인메모리&amp;nbsp;데이터베이스:&amp;nbsp;H2는&amp;nbsp;데이터를&amp;nbsp;메모리에&amp;nbsp;저장하고,&amp;nbsp;디스크에&amp;nbsp;대한&amp;nbsp;접근&amp;nbsp;없이&amp;nbsp;이를&amp;nbsp;빠르게&amp;nbsp;액세스할&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;H2는&amp;nbsp;데이터베이스&amp;nbsp;쿼리를&amp;nbsp;실행하고&amp;nbsp;결과를&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;웹&amp;nbsp;기반&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;SQL&amp;nbsp;지원:&amp;nbsp;H2는&amp;nbsp;ANSI&amp;nbsp;SQL&amp;nbsp;표준을&amp;nbsp;따르며,&amp;nbsp;PostgreSQL,&amp;nbsp;MySQL,&amp;nbsp;Oracle과&amp;nbsp;같은&amp;nbsp;다른&amp;nbsp;일반적인&amp;nbsp;DBMS의&amp;nbsp;SQL&amp;nbsp;구문을&amp;nbsp;대부분&amp;nbsp;지원합니다.&lt;br /&gt;&lt;br /&gt;사이즈:&amp;nbsp;H2의&amp;nbsp;jar&amp;nbsp;파일&amp;nbsp;크기는&amp;nbsp;대략&amp;nbsp;2MB로,&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;H2는&amp;nbsp;ACID&amp;nbsp;트랜잭션을&amp;nbsp;지원하며,&amp;nbsp;안정성을&amp;nbsp;위해&amp;nbsp;Write-Ahead&amp;nbsp;Log&amp;nbsp;(WAL)&amp;nbsp;메커니즘을&amp;nbsp;사용합니다.&lt;br /&gt;&lt;br /&gt;암호화:&amp;nbsp;H2는&amp;nbsp;AES와&amp;nbsp;TwoFish&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;H2의&amp;nbsp;속도와&amp;nbsp;편의성에도&amp;nbsp;불구하고,&amp;nbsp;크고&amp;nbsp;복잡한&amp;nbsp;데이터베이스에&amp;nbsp;대한&amp;nbsp;대량의&amp;nbsp;동시&amp;nbsp;쿼리를&amp;nbsp;처리하는&amp;nbsp;등의&amp;nbsp;엔터프라이즈&amp;nbsp;수준의&amp;nbsp;요구&amp;nbsp;사항을&amp;nbsp;다루는&amp;nbsp;데는&amp;nbsp;제한이&amp;nbsp;있을&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이런&amp;nbsp;경우에는&amp;nbsp;MySQL,&amp;nbsp;PostgreSQL,&amp;nbsp;Oracle&amp;nbsp;등의&amp;nbsp;고급&amp;nbsp;DBMS를&amp;nbsp;사용하는&amp;nbsp;것이&amp;nbsp;더&amp;nbsp;적합할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;</description>
      <category>개발/잡다개발</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1684</guid>
      <comments>https://philosopher-chan.tistory.com/1684#entry1684comment</comments>
      <pubDate>Sat, 24 Jun 2023 18:31:14 +0900</pubDate>
    </item>
    <item>
      <title>의존성 주입이란?(DI)</title>
      <link>https://philosopher-chan.tistory.com/1683</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;의존성 주입(Dependancy Injection)에 대해서 알아보겠습니다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czjigl/btsjtz3KGWf/JjkkrPWzmiKK4LeHxkyZ9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czjigl/btsjtz3KGWf/JjkkrPWzmiKK4LeHxkyZ9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czjigl/btsjtz3KGWf/JjkkrPWzmiKK4LeHxkyZ9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fczjigl%2Fbtsjtz3KGWf%2FJjkkrPWzmiKK4LeHxkyZ9k%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;558&quot; height=&quot;697&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;697&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;UserNotificaion에서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UserNotificaion은 EmailService에 의존합니다.&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;또한, EmailService가 PushService로 변경되면 코드를 변경해야 합니다.&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;interface MessageService라는 것을 만들어서&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;707&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bux2xM/btsjpGhQNnw/d66W3TSI8V3Bv4Tu4FZDl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bux2xM/btsjpGhQNnw/d66W3TSI8V3Bv4Tu4FZDl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bux2xM/btsjpGhQNnw/d66W3TSI8V3Bv4Tu4FZDl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbux2xM%2FbtsjpGhQNnw%2Fd66W3TSI8V3Bv4Tu4FZDl1%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;692&quot; height=&quot;707&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;707&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;이렇게 하면 UserNotification이 EmailService에 의존하는 것이 아니라&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;MessageService를 바라보고 있고&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;EmailService / PushService도 마찬가지로 MessageService를 보고 있습니다.&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;&lt;span style=&quot;background-color: #444654; color: #d1d5db; text-align: start;&quot;&gt;의존성 역전 원칙(Dependency Inversion Principle, DIP)은 소프트웨어 개발에서 디자인 패턴 중 하나로, 고수준의 모듈이 저수준의 모듈에 의존하지 않도록 설계하는 방법을 말합니다. 더 정확히 말하면, &quot;상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다.&quot;는 것입니다.&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;background-color: #444654; color: #d1d5db; text-align: start;&quot;&gt;이 코드에서 &lt;/span&gt;UserNotification&lt;span style=&quot;background-color: #444654; color: #d1d5db; text-align: start;&quot;&gt;은 &lt;/span&gt;MessageService&lt;span style=&quot;background-color: #444654; color: #d1d5db; text-align: start;&quot;&gt;라는 인터페이스에 의존하며, 이를 통해 Email이나 Push 서비스 등의 구체적인 구현에 대한 의존성을 없애버립니다. 이렇게 하면 &lt;/span&gt;UserNotification&lt;span style=&quot;background-color: #444654; color: #d1d5db; text-align: start;&quot;&gt;은 &lt;/span&gt;EmailService&lt;span style=&quot;background-color: #444654; color: #d1d5db; text-align: start;&quot;&gt;나 &lt;/span&gt;PushService&lt;span style=&quot;background-color: #444654; color: #d1d5db; text-align: start;&quot;&gt;와 같은 저수준의 구현체가 어떤 것인지 알 필요가 없게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Android(Kotlin)</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1683</guid>
      <comments>https://philosopher-chan.tistory.com/1683#entry1683comment</comments>
      <pubDate>Mon, 12 Jun 2023 02:15:07 +0900</pubDate>
    </item>
    <item>
      <title>Naviagation - 2</title>
      <link>https://philosopher-chan.tistory.com/1682</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIMES2/btsjqwsll4r/3SV6lyo8TbbeeSjUfHLdp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIMES2/btsjqwsll4r/3SV6lyo8TbbeeSjUfHLdp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIMES2/btsjqwsll4r/3SV6lyo8TbbeeSjUfHLdp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIMES2%2Fbtsjqwsll4r%2F3SV6lyo8TbbeeSjUfHLdp1%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;343&quot; height=&quot;656&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;656&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;script src=&quot;https://gist.github.com/himchanyoon9212/dde6e08d7df8c4ed1d94ec3696baf991.js&quot;&gt;&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Compose</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1682</guid>
      <comments>https://philosopher-chan.tistory.com/1682#entry1682comment</comments>
      <pubDate>Sun, 11 Jun 2023 13:20:24 +0900</pubDate>
    </item>
    <item>
      <title>Naviagation -1</title>
      <link>https://philosopher-chan.tistory.com/1681</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;721&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sXAHv/btsjkNa46Rh/ak2tvdBNM7lGu3Paqn5GR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sXAHv/btsjkNa46Rh/ak2tvdBNM7lGu3Paqn5GR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sXAHv/btsjkNa46Rh/ak2tvdBNM7lGu3Paqn5GR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsXAHv%2FbtsjkNa46Rh%2Fak2tvdBNM7lGu3Paqn5GR1%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;347&quot; height=&quot;721&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;721&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/himchanyoon9212/a0f70f7805c2eb20374875ce4fcb3d50.js&quot;&gt;&lt;/script&gt;</description>
      <category>Compose</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1681</guid>
      <comments>https://philosopher-chan.tistory.com/1681#entry1681comment</comments>
      <pubDate>Sun, 11 Jun 2023 12:55:34 +0900</pubDate>
    </item>
    <item>
      <title>show hide</title>
      <link>https://philosopher-chan.tistory.com/1680</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;328&quot; data-origin-height=&quot;647&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RVidy/btsjjBIBeQa/6y9eKsLruoOSt6aWm2qpfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RVidy/btsjjBIBeQa/6y9eKsLruoOSt6aWm2qpfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RVidy/btsjjBIBeQa/6y9eKsLruoOSt6aWm2qpfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRVidy%2FbtsjjBIBeQa%2F6y9eKsLruoOSt6aWm2qpfk%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;328&quot; height=&quot;647&quot; data-origin-width=&quot;328&quot; data-origin-height=&quot;647&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;script src=&quot;https://gist.github.com/himchanyoon9212/403398a84087eef7564c0600dec4e9a1.js&quot;&gt;&lt;/script&gt;</description>
      <category>Compose</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1680</guid>
      <comments>https://philosopher-chan.tistory.com/1680#entry1680comment</comments>
      <pubDate>Sat, 10 Jun 2023 13:12:19 +0900</pubDate>
    </item>
    <item>
      <title>코드 다듬기</title>
      <link>https://philosopher-chan.tistory.com/1679</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;641&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bloCwV/btsiWSWu9UJ/kKYy14s1gfNiGUD04XBezk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bloCwV/btsiWSWu9UJ/kKYy14s1gfNiGUD04XBezk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bloCwV/btsiWSWu9UJ/kKYy14s1gfNiGUD04XBezk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbloCwV%2FbtsiWSWu9UJ%2FkKYy14s1gfNiGUD04XBezk%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;324&quot; height=&quot;641&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;641&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;script src=&quot;https://gist.github.com/himchanyoon9212/7091f654333d40d69a63c4c1a98b2793.js&quot;&gt;&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Compose</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1679</guid>
      <comments>https://philosopher-chan.tistory.com/1679#entry1679comment</comments>
      <pubDate>Tue, 6 Jun 2023 17:10:10 +0900</pubDate>
    </item>
    <item>
      <title>LinearProgressIndicator</title>
      <link>https://philosopher-chan.tistory.com/1678</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;319&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JtYER/btsiJz5Kxqh/EaEVPw5A8yNUqwhRO9qmB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JtYER/btsiJz5Kxqh/EaEVPw5A8yNUqwhRO9qmB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JtYER/btsiJz5Kxqh/EaEVPw5A8yNUqwhRO9qmB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJtYER%2FbtsiJz5Kxqh%2FEaEVPw5A8yNUqwhRO9qmB1%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;319&quot; height=&quot;631&quot; data-origin-width=&quot;319&quot; data-origin-height=&quot;631&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;script src=&quot;https://gist.github.com/himchanyoon9212/51ee75096e4a6259cc2cf7057fe5033e.js&quot;&gt;&lt;/script&gt;</description>
      <category>Compose</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1678</guid>
      <comments>https://philosopher-chan.tistory.com/1678#entry1678comment</comments>
      <pubDate>Tue, 6 Jun 2023 01:22:35 +0900</pubDate>
    </item>
    <item>
      <title>lazyrow</title>
      <link>https://philosopher-chan.tistory.com/1677</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;480&quot; data-origin-height=&quot;325&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZJyCv/btsiFBVkqD4/XEchT6uvvovUHVgUptGCxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZJyCv/btsiFBVkqD4/XEchT6uvvovUHVgUptGCxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZJyCv/btsiFBVkqD4/XEchT6uvvovUHVgUptGCxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZJyCv%2FbtsiFBVkqD4%2FXEchT6uvvovUHVgUptGCxk%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;480&quot; height=&quot;325&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;325&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;script src=&quot;https://gist.github.com/himchanyoon9212/a70317d278cf548204380e2b948562c4.js&quot;&gt;&lt;/script&gt;</description>
      <category>Compose</category>
      <author>----___&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;</author>
      <guid isPermaLink="true">https://philosopher-chan.tistory.com/1677</guid>
      <comments>https://philosopher-chan.tistory.com/1677#entry1677comment</comments>
      <pubDate>Sun, 4 Jun 2023 23:42:54 +0900</pubDate>
    </item>
  </channel>
</rss>