<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Wonny</title>
    <link>https://wonnyhouse.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 27 May 2026 01:13:44 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>이원중</managingEditor>
    <image>
      <title>Wonny</title>
      <url>https://tistory1.daumcdn.net/tistory/3037281/attach/abd5edf736c6401c87ee33d37e8561e2</url>
      <link>https://wonnyhouse.tistory.com</link>
    </image>
    <item>
      <title>[안드꿀팁] 특정 액티비티 실행 시키기</title>
      <link>https://wonnyhouse.tistory.com/274</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;예를 들어 매우 깊은 곳에 있는 액티비티를 에뮬레이터에서 실행시켜야 한다고 생각해보자. &lt;i&gt;F 액티비티&lt;/i&gt;를 에뮬레이터에서 확인해보고 싶은데, &lt;i&gt;F 액티비티&lt;/i&gt;로 이동하기 위해서는 A액티비티-&amp;gt;B액티비티-&amp;gt;C액티비티-&amp;gt;D액티비티-&amp;gt;E액티비티-&amp;gt;F액티비티 의 방식으로만 이동할 수 있다. 그럼 코드 한 줄 바꾸고 이 방법을 계속해서 F액티비티까지 가야할까? 이전 액티비티의 결과값이 중요한 경우 이렇게 이동해야하는 경우도 있겠지만, F액티비티 단독적으로 확인하기만 하면 된다면 이렇게 할 필요가 없다. 실행할 때 &lt;i&gt;Edit Configuration&lt;/i&gt;을 통해 특정 액티비티만 실행이 가능하다. 어떻게 가능한지 확인해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLfQTl/btrtpROXJPY/tanIJL4WmfQ09DPk2ngh9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLfQTl/btrtpROXJPY/tanIJL4WmfQ09DPk2ngh9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLfQTl/btrtpROXJPY/tanIJL4WmfQ09DPk2ngh9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLfQTl%2FbtrtpROXJPY%2FtanIJL4WmfQ09DPk2ngh9K%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;359&quot; height=&quot;109&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;안드로이드 스튜디오 상단 실행하는 부분에서&amp;nbsp;&lt;b&gt;app▼&lt;/b&gt; 부분을 클릭해보자. 그러면 Edit Configurations가 뜨는데, 해당 Edit Configruations를 클릭한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;561&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D19c1/btrtk93PzpN/LPFYNF86xLK51KdtHfPkH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D19c1/btrtk93PzpN/LPFYNF86xLK51KdtHfPkH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D19c1/btrtk93PzpN/LPFYNF86xLK51KdtHfPkH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD19c1%2Fbtrtk93PzpN%2FLPFYNF86xLK51KdtHfPkH0%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;700&quot; height=&quot;477&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;561&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;실행할 때 매니페스트에서 설정해준 Default Activity를 실행하도록 되어 있는데, 여기서 Default Activity를 클릭해 다른 Activity로 바꿔줄 수 있다. Default Activity를 클릭하면 Specified Activity가 뜨는데, 해당 버튼을 클릭하면 아래와 같은 사진이 나올 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TsNOI/btrtsUYcJ7f/UouSCN8Jk6nNBQQklnORw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TsNOI/btrtsUYcJ7f/UouSCN8Jk6nNBQQklnORw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TsNOI/btrtsUYcJ7f/UouSCN8Jk6nNBQQklnORw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTsNOI%2FbtrtsUYcJ7f%2FUouSCN8Jk6nNBQQklnORw1%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;569&quot; height=&quot;157&quot; data-origin-width=&quot;569&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;여기에서 ... 을 클릭해 특정 액티비티를 설정하고 Apply 후 Ok를 눌러서 적용해주자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;85&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QbrNs/btrtlnnM1YI/gRHnEYmSqsVic4s1HKnCO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QbrNs/btrtlnnM1YI/gRHnEYmSqsVic4s1HKnCO1/img.png&quot; data-alt=&quot;AndroidManifest.xml&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QbrNs/btrtlnnM1YI/gRHnEYmSqsVic4s1HKnCO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQbrNs%2FbtrtlnnM1YI%2FgRHnEYmSqsVic4s1HKnCO1%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;312&quot; height=&quot;85&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;85&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AndroidManifest.xml&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단 액티비티는 Manifest에서 exported=&quot;true&quot;로 설정해줘야 바로 실행이 가능하다. exported의 default 값은 false이기 때문에 설정해주지 않았다면 설정해주도록 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;그러면 모든 준비는 끝났고, 이제 실행만 해주면 된다.&lt;/p&gt;</description>
      <category>프로그래밍/안드로이드+코틀린</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/274</guid>
      <comments>https://wonnyhouse.tistory.com/274#entry274comment</comments>
      <pubDate>Wed, 16 Feb 2022 08:19:37 +0900</pubDate>
    </item>
    <item>
      <title>Pure java kotlin 라이브러리 jitpack으로 배포하기</title>
      <link>https://wonnyhouse.tistory.com/273</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;프로젝트 내부적으로 사용할 라이브러리를 만들면서 배포까지 욕심이 났습니다. 제가 만든 라이브러리도 implementation해서 사용할 수 있다면 좋을 것 같은데.. 라는 생각을 하면서 하나씩 해봤습니다.&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;- gradle init으로 생성한 프로젝트입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- intellij idea를 통해 개발했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- pure java kotlin으로 안드로이드 의존성을 참조하고 있지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;안드로이드에 의존성을 갖고 있는 라이브러리 배포와 관련된 글은 꽤 찾아볼 수 있었는데, pure java kotlin 라이브러리 배포는 찾아보기 어려워서 더 글을 작성해야겠다고 생각했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 모듈(라이브러리 모듈) build gradle 파일에 &lt;span style=&quot;background-color: #dddddd; color: #ee2323;&quot;&gt;id 'maven-publish'&lt;/span&gt;를 추가해줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1644482591820&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plugins {
    ...
    id 'maven-publish' // &amp;lt;- 추가
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 모듈(라이브러리 모듈) build.gradle 파일 하단에 publishing { } 블록을 추가해줍니다. 아래 publishing 내부에 있는 코드 전부 추가해주어야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1644482710628&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            groupId = 'com.github.WonJoong'
            artifactId = 'kodi'
            version = '0.2.1'
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;이 부분에서 삽질을 많이 했는데, 안드로이드 의존성을 갖고 있는 라이브러리에서는 components.java가 아닌 components.release로 해도 되는 것 같았습니다. 하지만 pure java kotlin에서는 이 부분에서 계속 찾을 수 없다는 오류가 발생했고, 위와 같이 java로 하여 해결해주었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 프로젝트를 github에 올리고, github으로 이동해 Release Tag를 만들어줍니다. 이 때 프로젝트는 배포해야 하므로 public이여야 합니다.&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;316&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pb3Ca/btrsY7dGVhg/1bb6VNgpDYhp48iWk6JEY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pb3Ca/btrsY7dGVhg/1bb6VNgpDYhp48iWk6JEY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pb3Ca/btrsY7dGVhg/1bb6VNgpDYhp48iWk6JEY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpb3Ca%2FbtrsY7dGVhg%2F1bb6VNgpDYhp48iWk6JEY1%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;316&quot; height=&quot;131&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 마지막으로 Jitpack.io에 등록합니다. &lt;a href=&quot;https://jitpack.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jitpack.io/&lt;/a&gt; 사이트로 이동해 아래 창에 본인 레포지토리 url을 추가합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqbScN/btrs1SAkiTn/E8EjN4I7IK6TKYtwyzNH41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqbScN/btrs1SAkiTn/E8EjN4I7IK6TKYtwyzNH41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqbScN/btrs1SAkiTn/E8EjN4I7IK6TKYtwyzNH41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqbScN%2Fbtrs1SAkiTn%2FE8EjN4I7IK6TKYtwyzNH41%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;716&quot; height=&quot;184&quot; data-origin-width=&quot;1040&quot; data-origin-height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. url을 추가하셨으면 Look up 버튼을 누르고 아래와 같은 화면을 확인하고 Get it을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;576&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XItKE/btrs1SNQRwY/vYc4D99eKYIHExtNrxhXjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XItKE/btrs1SNQRwY/vYc4D99eKYIHExtNrxhXjk/img.png&quot; data-alt=&quot;0.1.0~0.2.0은 제가 기존에 미리 해본 것이고, 처음 하신다면 위 사진의 0.2.1 버전과 같이 Get it 버튼의 색이 하얀색일 것입니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XItKE/btrs1SNQRwY/vYc4D99eKYIHExtNrxhXjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXItKE%2Fbtrs1SNQRwY%2FvYc4D99eKYIHExtNrxhXjk%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;576&quot; height=&quot;281&quot; data-origin-width=&quot;576&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;0.1.0~0.2.0은 제가 기존에 미리 해본 것이고, 처음 하신다면 위 사진의 0.2.1 버전과 같이 Get it 버튼의 색이 하얀색일 것입니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 여기까지 배포는 완료되었고 사용하고자 하는 안드로이드 프로젝트에서 maven jitpack 추가하고 모듈 dependencies에서 implementation으로 추가하여 사용하시면 됩니다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;311&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RjHi6/btrs22a7Gz9/u1jhkw73RvbkSkEfaHJNO1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RjHi6/btrs22a7Gz9/u1jhkw73RvbkSkEfaHJNO1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RjHi6/btrs22a7Gz9/u1jhkw73RvbkSkEfaHJNO1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRjHi6%2Fbtrs22a7Gz9%2Fu1jhkw73RvbkSkEfaHJNO1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;497&quot; height=&quot;311&quot; data-origin-width=&quot;497&quot; data-origin-height=&quot;311&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저도 공부하면서 작성한 글이라 이번 글에서는 조금 자신감이 부족하네요. 혹시 틀린 부분이나 궁금한 점이 있으시다면 댓글로 남겨주세요~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다.&lt;/p&gt;</description>
      <category>프로그래밍/안드로이드+코틀린</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/273</guid>
      <comments>https://wonnyhouse.tistory.com/273#entry273comment</comments>
      <pubDate>Thu, 10 Feb 2022 18:14:43 +0900</pubDate>
    </item>
    <item>
      <title>Android Studio wifi로 앱 무선 디버깅하기</title>
      <link>https://wonnyhouse.tistory.com/272</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;며칠전 안드로이드 스튜디오 범블비 stable 버전이 나왔습니다. 바로 다운로드해서 새로 업데이트 된 것이 무엇이 있는지 확인해봤는데, 그 중에서 가장 활용하기 좋다고 생각된 것은 Wifi를 통한 무선 디버깅입니다. 사실 이전에도 WiFi 통해서 디버깅하는 방법을 공식적으로 지원하고 있었는데, 연결하기 위한 방법이 좀 귀찮았습니다. 하지만 이번에 범블비에서는 1분안에 설정이 가능합니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;868&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eJmWKV/btrr1itMQnf/hKVlZyUF8v2gyohgOnjayK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eJmWKV/btrr1itMQnf/hKVlZyUF8v2gyohgOnjayK/img.png&quot; data-alt=&quot;제 개발환경입니다. 선이 없어서 b type을 c type으로 바꿔서 스마트폰이랑 연결해주고 있습니다ㅜㅜ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eJmWKV/btrr1itMQnf/hKVlZyUF8v2gyohgOnjayK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeJmWKV%2Fbtrr1itMQnf%2FhKVlZyUF8v2gyohgOnjayK%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;300&quot; height=&quot;299&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;868&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;제 개발환경입니다. 선이 없어서 b type을 c type으로 바꿔서 스마트폰이랑 연결해주고 있습니다ㅜㅜ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;참고로 아직 범블비를 사용하지 않고 있다면 업데이트 해주셔야 합니다. 안드로이드 스튜디오에서 업데이트를 하는 방법은 간단하게 안드로이드 스튜디오 상단 툴바에서 Help -&amp;gt; Check for Updates를 클릭하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;범블비로 업데이트를 했다면 이제 아래 사진과 &lt;b&gt;Pair Devices Using Wi-Fi&lt;/b&gt;와 같이 새로운 옵션이 하나 보일 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vcxDK/btrr17FqJx2/a4Fs7KLeq6ymh1uIPZQJIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vcxDK/btrr17FqJx2/a4Fs7KLeq6ymh1uIPZQJIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vcxDK/btrr17FqJx2/a4Fs7KLeq6ymh1uIPZQJIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvcxDK%2Fbtrr17FqJx2%2Fa4Fs7KLeq6ymh1uIPZQJIK%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;373&quot; height=&quot;343&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;343&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;저 옵션을 활용해서 무선으로 기기에 연결해주면 되는데, 그 전에 디바이스에서 설정을 해줘야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 개발자 옵션 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;835&quot; data-origin-height=&quot;620&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CVg3H/btrr1nB1DHY/t1cjQTUDubstZt00fgHIyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CVg3H/btrr1nB1DHY/t1cjQTUDubstZt00fgHIyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CVg3H/btrr1nB1DHY/t1cjQTUDubstZt00fgHIyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCVg3H%2Fbtrr1nB1DHY%2Ft1cjQTUDubstZt00fgHIyK%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;350&quot; height=&quot;260&quot; data-origin-width=&quot;835&quot; data-origin-height=&quot;620&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 디버깅에서 무선 디버깅 활성화 및 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsCM1c/btrr1n24qvi/3MZ5py7DMGYJ4GfQNXjRvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsCM1c/btrr1n24qvi/3MZ5py7DMGYJ4GfQNXjRvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsCM1c/btrr1n24qvi/3MZ5py7DMGYJ4GfQNXjRvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsCM1c%2Fbtrr1n24qvi%2F3MZ5py7DMGYJ4GfQNXjRvk%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;350&quot; height=&quot;315&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. QR 코드로 기기 페어링 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;t.png&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcoFeJ/btrr2WpS8YI/KhwvC11pGuUKWKbVhuaKwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcoFeJ/btrr2WpS8YI/KhwvC11pGuUKWKbVhuaKwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcoFeJ/btrr2WpS8YI/KhwvC11pGuUKWKbVhuaKwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcoFeJ%2Fbtrr2WpS8YI%2FKhwvC11pGuUKWKbVhuaKwk%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;350&quot; height=&quot;609&quot; data-filename=&quot;t.png&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. 안드로이드 스튜디오에서 Pair Devices Using Wi-Fi 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vcxDK/btrr17FqJx2/a4Fs7KLeq6ymh1uIPZQJIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vcxDK/btrr17FqJx2/a4Fs7KLeq6ymh1uIPZQJIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vcxDK/btrr17FqJx2/a4Fs7KLeq6ymh1uIPZQJIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvcxDK%2Fbtrr17FqJx2%2Fa4Fs7KLeq6ymh1uIPZQJIK%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;373&quot; height=&quot;343&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;343&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. 디바이스로 QR 코드 인식하면 아래처럼 잘 연결되었다고 나옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;qwe.png&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XkafH/btrr2WKbvFv/ydPbUpSOsQzXHwTkHGmC1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XkafH/btrr2WKbvFv/ydPbUpSOsQzXHwTkHGmC1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XkafH/btrr2WKbvFv/ydPbUpSOsQzXHwTkHGmC1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXkafH%2Fbtrr2WKbvFv%2FydPbUpSOsQzXHwTkHGmC1k%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;350&quot; height=&quot;383&quot; data-filename=&quot;qwe.png&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서부터는 일반 에뮬레이터나 디바이스와 연결하는 방법이 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝까지 읽어주셔서 감사합니다.&lt;/p&gt;</description>
      <category>프로그래밍/안드로이드+코틀린</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/272</guid>
      <comments>https://wonnyhouse.tistory.com/272#entry272comment</comments>
      <pubDate>Sat, 29 Jan 2022 11:09:39 +0900</pubDate>
    </item>
    <item>
      <title>비동기 1편 - Android에서 Dispatcher란?</title>
      <link>https://wonnyhouse.tistory.com/271</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;318&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2IJzb/btrroWqo5oO/P8DCyFelc238cWIMcH0og1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2IJzb/btrroWqo5oO/P8DCyFelc238cWIMcH0og1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2IJzb/btrroWqo5oO/P8DCyFelc238cWIMcH0og1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2IJzb%2FbtrroWqo5oO%2FP8DCyFelc238cWIMcH0og1%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;318&quot; height=&quot;158&quot; data-origin-width=&quot;318&quot; data-origin-height=&quot;158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드에는 아래와 같이 네 개의 Dispatcher가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Default&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Main&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Unconfined&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- IO&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;그런데 Dispatcher가 뭘까요?&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;안드로이드 공식문서에서는 다음과 같이 Dispatcher에 대해 소개하고 있습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Kotlin coroutines use dispatchers&amp;nbsp;to determine which threads are used for coroutine execution.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;코루틴은 실행하기 위해서 Dispatcher를 이용해 실행할 thread를 정한다고 합니다. 다시 말해서, &lt;b&gt;Dispatcher.Main은 Thread가 Main Thread를 정하게끔 도와주는 것이지, Main Thread를 의미하는 것은 아닙니다&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;이어서 위에서 말씀드렸던 네 개의 Dispatcher에 대해 설명해봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;* Dispatcher.Default&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- launch, async와 같은 기본적인 builder들의 default dispatcher입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- default로 CPU core 개수만큼 동시에 돌릴 수 있으며, 최소 두개로 돕니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Main Thread가 아닌 Thread에서 CPU 작업을 하기 위해 만들어졌습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 리스트를 정렬하고 Json을 parsing할 때 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;* Dispatcher.Main&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- UI 작업을 위한 Main Thread로 이동시키는 Coroutine Dispatcher입니다. 위에서도 말씀드렸지만, Dispatcher.Main은 Main Thread가 아닙니다. 안드로이드 공식문서에서도 Dispatchers.Main으로 하여금 coroutine이 main thread에서 돌 수 있도록 하라고 제시하고 있습니다. (&lt;span style=&quot;background-color: #ffffff; color: #202124;&quot;&gt;Use this dispatcher to run a coroutine on the main Android thread. &lt;a href=&quot;https://developer.android.com/kotlin/coroutines/coroutines-adv#:~:text=Use%20this%20dispatcher%20to%20run%20a%20coroutine%20on%20the%20main%20Android%20thread.&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;링크&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;* Dispatcher.Unconfined&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 특정 Thread로 넣어야할 지 정해지지 않은 Coroutine Dispatcher입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Dispatcher.Unconfined는 호출 Thread에서 코루틴을 시작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 다시 suspend 함수가 실행(resume)될 때, 다시 suspend 함수를 실행한 Thread에서 수행됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Unconfined Dispatcher는 coroutine이 cpu 시간을 소모하지 않거나 UI를 업데이트하지 않는 경우처럼 특정 Thread에 국한된 작업이 아닌 경우 적절합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;* Dispatcher.IO&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 파일 읽기, 파일 쓰기, 소켓 읽기와 같이 blocking IO를 할 때 이 IO Dispatcher를 활용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Thread의 개수가 늘어날 수도 있고, 필요에 따라서는 종료되고 줄어들 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- System 영역의 &quot;kotlinx.coroutines.io.parallelism&quot;에 명시된 Thread의 개수만큼 늘어날 수 있습니다. Default로는 64개의 Thread까지 생성이 가능합니다. System에 명시된 Thread보다 더 필요하다면 custom하게 만들어 사용하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;IO Dispatcher는 Default Dispatcher와 Thread를 공유&lt;/b&gt;합니다. 따라서 withContext(Dispatcher.IO) { ... }를 사용하는 것이 실제로 다른 Thread로 전환하는 것은 아니며 같은 Thread에서 동작하게 됩니다. 아래 코드를 확인해봅시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nNqBV/btrriVzZBLo/8tk8kvRYaMQRmaAnSLF6NK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nNqBV/btrriVzZBLo/8tk8kvRYaMQRmaAnSLF6NK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nNqBV/btrriVzZBLo/8tk8kvRYaMQRmaAnSLF6NK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnNqBV%2FbtrriVzZBLo%2F8tk8kvRYaMQRmaAnSLF6NK%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;803&quot; height=&quot;690&quot; data-origin-width=&quot;803&quot; data-origin-height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Thread.currentThread().name을 통해 현재 Thread를 확인할 수 있습니다. CoroutineScope 내부에서 작동한 작업들은 비동기로 작업하기 때문에 순서를 보장하지 않습니다. 이&amp;nbsp;때 로그를 확인해보시면, Default가 1번 Thread에서 두 번 찍히고, IO Thread가 1번 Thread와 2번 Thread에서 각각 한번씩 찍힌 것을 확인할 수 있습니다. 다시 말해서 Dispatcher.Default와 Dispatcher.IO는 Thread를 공유하고 있음을 알 수 있습니다. 아래는 코틀린 공식 문서의 내용입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;This dispatcher shares threads with a Default dispatcher, so using withContext(Dispatchers.IO) { ... } does not lead to an actual switching to another thread &amp;mdash; typically execution continues in the same thread. As a result of thread sharing, more than 64 (default parallelism) threads can be created (but not used) during operations over IO dispatcher.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/안드로이드+코틀린</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/271</guid>
      <comments>https://wonnyhouse.tistory.com/271#entry271comment</comments>
      <pubDate>Fri, 21 Jan 2022 17:21:25 +0900</pubDate>
    </item>
    <item>
      <title>Kotlin bufferedReader, bufferedWriter를 생활화하자</title>
      <link>https://wonnyhouse.tistory.com/268</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 생활화하자는 것은 서버나 안드로이드 개발할 때가 아닌 PS문제 풀 때를 말한다.&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;println보다 bufferedWriter가 훨씬 빠르다. 그 이유는 입력된 데이터가 바로 전달되지 않고 버퍼를 통해 전달되다 보니 훨씬 더 빠르다고 한다. 그래서 출력해야할 값이 많은 경우 단순히 for문에 println을 넣지 않고 bufferedWriter를 사용하여 출력해주자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 bufferedReader, bufferedWriter를 통해 입출력이 모두 끝났으면, close해서 닫아주자. 예시 코드는 아래와 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1638936037034&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    val arr = IntArray(10001)
    val br = System.`in`.bufferedReader()
    val bw = System.`out`.bufferedWriter()
    repeat(br.readLine().toInt()) {
        arr[br.readLine().toInt()]++
    }
    br.close()
    arr.forEachIndexed { index, value -&amp;gt;
        bw.write(&quot;${index}\n&quot;.repeat(value))
    }
    bw.close()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 개의 출력값이 있을 때 Stringbuilder를 통해 출력해주었는데, 백준 10989번에서 Stringbuilder는 통과가되지 않고 BufferedWriter만 통과가 되는 것을 확인할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 말해서, 많은 문자열을 줄바꿈으로 저장할 때는 메모리 효율 측면에서 BufferedWriter의 성능이 StringBuilder보다 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 Array&amp;lt;Int&amp;gt;보다 IntArray가 효율이 더 좋다는 것을 어디선가 봤던 것 같은데(아마도 Kotlin in Action), 이렇게 Array를 기본 타입으로 바꿀 수 있을 때는 바꿔줘야겠다.&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;실버5라고 무시하고 풀었다가 크게 혼났던 문제였다.&lt;/p&gt;</description>
      <category>프로그래밍/안드로이드+코틀린</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/268</guid>
      <comments>https://wonnyhouse.tistory.com/268#entry268comment</comments>
      <pubDate>Wed, 8 Dec 2021 13:04:27 +0900</pubDate>
    </item>
    <item>
      <title>안드로이드 모듈은 어떻게 나누는 것이 좋을까?</title>
      <link>https://wonnyhouse.tistory.com/267</link>
      <description>&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;대략 두 가지 정도로 나뉘는 것 같은데, 기능(feature)별로 나누는 것과 아키텍처 구조로 나누는 것이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기능 단위로 나누기.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 TODO 앱을 개발하는데, TODO 글 작성할 때의 기능이 많이 추가되었다고 생각해보자. 그렇다면 이 기능이 앱에서 차지하는 비율이 커져버렸기 때문에 모듈 하나로 빼는 것이다. 흔히 사용하는 Glide 라이브러리처럼, 글 작성과 같은 기능이 첨부된 모듈을 하나 외부로 빼주는 것이다.&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;h4 data-ke-size=&quot;size20&quot;&gt;클린 아키텍처 구조로 나누기.&lt;/h4&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;* 드로이드 나이츠 앱 Github 링크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/droidknights/DroidKnights2021_App&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/droidknights/DroidKnights2021_App&lt;/a&gt;&lt;/p&gt;</description>
      <category>프로그래밍/안드로이드+코틀린</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/267</guid>
      <comments>https://wonnyhouse.tistory.com/267#entry267comment</comments>
      <pubDate>Thu, 4 Nov 2021 15:10:57 +0900</pubDate>
    </item>
    <item>
      <title>Diffutil의 areItemsTheSame, areContentsTheSame에 대해 알아보자</title>
      <link>https://wonnyhouse.tistory.com/266</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 알아보자!&lt;/p&gt;
&lt;pre id=&quot;code_1635039260691&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val DIFF_CALLBACK = object : DiffUtil.ItemCallback&amp;lt;Item&amp;gt;() {
	override fun areItemsTheSame(oldItem: Item, newItem: Item): Boolean {
    		return oldItem == newItem
	}

	override fun areContentsTheSame(oldItem: Item, newItem: Item): Boolean {
		return oldItem == newItem
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DiffUtil을 이용해서 리사이클러뷰를 구현했는데, 처음에는 위와같이 구현했다. 아무 문제 없어보이나 areItemsTheSame에서는 고유한 아이디 값을 비교해주는 것이 좋다는 리뷰를 받았다.&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;그렇다면 여기서 areItemsTheSame 함수와 areContentsTheSame함수가 하는 일이 무엇인지 알아보자!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;611&quot; data-filename=&quot;3.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vjsBz/btriAG5KluP/yWQRXTv9b2KW26jcPw1m8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vjsBz/btriAG5KluP/yWQRXTv9b2KW26jcPw1m8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vjsBz/btriAG5KluP/yWQRXTv9b2KW26jcPw1m8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvjsBz%2FbtriAG5KluP%2FyWQRXTv9b2KW26jcPw1m8K%2Fimg.png&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;611&quot; data-filename=&quot;3.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 함수의 Returns 부분만 살펴보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;b&gt;areItemsTheSame&lt;/b&gt; 함수는 &lt;b&gt;Returns: Ture if the two items represent the same object or false if they are different.&lt;/b&gt; 라고 되어 있고, &lt;b&gt;areContentsTheSame&lt;/b&gt; 함수는 &lt;b&gt;Returns True if the contents of the items are the same or false if they are different.&lt;/b&gt;라고 되어 있다. 즉, areItemsTheSame 함수는 같은 객체인지 확인하는 것이고, areContentsTheSame 함수는 아이템들의 값이 같은지 확인하는 것이다.&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;그러므로 ==을 통해 비교하는 것은 데이터 클래스의 프로퍼티가 같은지 비교하는 것이기 때문에 areItemsTheSame에서는 ==을 통해 비교하는 것이 알맞지 않다. 그러므로 areItemsTheSame에서는 ===을 통해 실제 같은 객체인지 비교해주도록 하자.&lt;/p&gt;</description>
      <category>프로그래밍/안드로이드+코틀린</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/266</guid>
      <comments>https://wonnyhouse.tistory.com/266#entry266comment</comments>
      <pubDate>Sun, 24 Oct 2021 10:41:08 +0900</pubDate>
    </item>
    <item>
      <title>kotlin 함수 선언 위치 null object reference 오류</title>
      <link>https://wonnyhouse.tistory.com/264</link>
      <description>&lt;pre id=&quot;code_1630911604612&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val generateRandomInt = { size: Int -&amp;gt; (0..size).random() }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 함수를 선언하고 클래스 내의 init { }에서 위 함수를 실행하려고 하니 오류가 발생했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대략적인 코드는 아래와 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1630911676135&quot; class=&quot;kotlin&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;init {
  ...
  generateRandomInt(300)
  ...
}

val generateRandomInt = { size: Int -&amp;gt; (0..size).random() }​&lt;/code&gt;&lt;/pre&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;java.lang.ExceptionInInitializerError&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Caused&amp;nbsp;by:&amp;nbsp;java.lang.NullPointerException:&amp;nbsp;Attempt&amp;nbsp;to&amp;nbsp;invoke&amp;nbsp;interface&amp;nbsp;method&amp;nbsp;'java.lang.Object&amp;nbsp;kotlin.jvm.functions.Function1.invoke(java.lang.Object)'&amp;nbsp;on&amp;nbsp;a&amp;nbsp;null&amp;nbsp;object&amp;nbsp;reference&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;분명히 잘못한 게 없다고 생각했는데, 혹시 init { } 전에 함수를 선언했어야 했나하고 함수를 init 위로 올렸더니 정상적으로 작동됐다. 아마 init { } 위에 코드가 있어야 하는 것 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1630911765925&quot; class=&quot;kotlin&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val generateRandomInt = { size: Int -&amp;gt; (0..size).random() }
init {
  ...
  generateRandomInt(300)
  ...
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/안드로이드+코틀린</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/264</guid>
      <comments>https://wonnyhouse.tistory.com/264#entry264comment</comments>
      <pubDate>Mon, 6 Sep 2021 16:03:03 +0900</pubDate>
    </item>
    <item>
      <title>android:exported 오류 해결하기</title>
      <link>https://wonnyhouse.tistory.com/263</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;49&quot; data-filename=&quot;5.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDHE3V/btrdzNnHPyF/CK20oHmhgrllLkFhC38yo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDHE3V/btrdzNnHPyF/CK20oHmhgrllLkFhC38yo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDHE3V/btrdzNnHPyF/CK20oHmhgrllLkFhC38yo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDHE3V%2FbtrdzNnHPyF%2FCK20oHmhgrllLkFhC38yo0%2Fimg.png&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;49&quot; data-filename=&quot;5.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대략 해석하자면 Android 12 이상부터는 android:exported 값을 특정해서 Manifest에 넣어주어야 한다는 것이다.&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;그렇게 어려운 것이 아니고 Intent가 있는(즉 시작 액티비티에) android:exported의 Boolean 값을 넣어주면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;189&quot; data-filename=&quot;6.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PjIGK/btrdruPQPIc/IxFY8e5GTCBHgYKDWMQo8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PjIGK/btrdruPQPIc/IxFY8e5GTCBHgYKDWMQo8K/img.png&quot; data-alt=&quot;위 사진처럼 true로 넣어주면 된다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PjIGK/btrdruPQPIc/IxFY8e5GTCBHgYKDWMQo8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPjIGK%2FbtrdruPQPIc%2FIxFY8e5GTCBHgYKDWMQo8K%2Fimg.png&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;189&quot; data-filename=&quot;6.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;위 사진처럼 true로 넣어주면 된다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식문서에 따르면 exported 속성은 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;433&quot; data-filename=&quot;7.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZUO1T/btrdEkkgY1n/FPEcebEJfqjmUccSsS5zq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZUO1T/btrdEkkgY1n/FPEcebEJfqjmUccSsS5zq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZUO1T/btrdEkkgY1n/FPEcebEJfqjmUccSsS5zq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZUO1T%2FbtrdEkkgY1n%2FFPEcebEJfqjmUccSsS5zq0%2Fimg.png&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;433&quot; data-filename=&quot;7.PNG&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 중요한 말들이 있지만 그 중에서도 중요한 부분은 인텐트 필터를 사용하는 경우 해당 요소를 false로 설정하면 안된다는 것이다. 그러므로 시작하는 액티비티에 true로 속성 값을 넣어주면 된다.&lt;/p&gt;</description>
      <category>프로그래밍/안드로이드+코틀린</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/263</guid>
      <comments>https://wonnyhouse.tistory.com/263#entry263comment</comments>
      <pubDate>Mon, 30 Aug 2021 20:10:42 +0900</pubDate>
    </item>
    <item>
      <title>21.1~21.8 회고</title>
      <link>https://wonnyhouse.tistory.com/262</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2021년 1월부터 2021년 8월까지의 회고&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1월&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;950&quot; data-filename=&quot;11.jpg&quot; width=&quot;265&quot; height=&quot;233&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7Yzoz/btq9ReWyZrN/iGeuVREML1OvwWPK0OAKNk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7Yzoz/btq9ReWyZrN/iGeuVREML1OvwWPK0OAKNk/img.jpg&quot; data-alt=&quot;출시한 앱의 다운로드 수다. 산을 (수화가 아닌)그래프로 표시한다면 이런 모양일까.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7Yzoz/btq9ReWyZrN/iGeuVREML1OvwWPK0OAKNk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7Yzoz%2Fbtq9ReWyZrN%2FiGeuVREML1OvwWPK0OAKNk%2Fimg.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;950&quot; data-filename=&quot;11.jpg&quot; width=&quot;265&quot; height=&quot;233&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출시한 앱의 다운로드 수다. 산을 (수화가 아닌)그래프로 표시한다면 이런 모양일까.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 2021년 상반기는 안드로이드 개발로 시작해서 안드로이드 개발로 끝났다. 1월(정확히는 작년 12월 25일)부터 개발을 시작해서 한 50일정도 개발을 해서 앱을 출시했다. 7~8개월이 지금보면 많이 부족한 앱인데, 그래도 릴리즈해본 것이 뜻깊었다. 혼자서 디자인부터, 기획, 개발까지 다 해볼 수 있는 뜻깊은 경험이었다. 아이패드로 디자인을 어떻게 할 것인지 그려봤고, 앱이 기존 플레이스토어에 있는지 검색해보고 사람들이 좋아할 지 생각해보았다. 그리고 좋은 것 같아 개발에 바로 돌입하였고 출시했다. 해당 앱의 코드는 엉망이다... 리팩토링 할 수 없는 수준이기 때문에,, 더 이상의 큰 업데이트는 힘들지 않을까?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2091&quot; data-origin-height=&quot;2088&quot; data-filename=&quot;ski.jpg&quot; width=&quot;350&quot; height=&quot;349&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGv2KA/btrdopgYmF1/fICjBcqZHYIWmiBwApSlKk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGv2KA/btrdopgYmF1/fICjBcqZHYIWmiBwApSlKk/img.jpg&quot; data-alt=&quot;하이원 스키장&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGv2KA/btrdopgYmF1/fICjBcqZHYIWmiBwApSlKk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGv2KA%2FbtrdopgYmF1%2FfICjBcqZHYIWmiBwApSlKk%2Fimg.jpg&quot; data-origin-width=&quot;2091&quot; data-origin-height=&quot;2088&quot; data-filename=&quot;ski.jpg&quot; width=&quot;350&quot; height=&quot;349&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;하이원 스키장&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 하이원 스키장에 다녀왔다. 평소에 스키 타러 가는 것을 좋아하는데 최근 코로나로 인해 많이 못가고 있어서 아쉽다. 돌아오는 겨울에는 많이 갈 수 있으면 좋겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;2271&quot; data-filename=&quot;mountain.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lgBf7/btrdpCGpe6z/MCNiaDt6gzMnaSONNYQvVK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lgBf7/btrdpCGpe6z/MCNiaDt6gzMnaSONNYQvVK/img.jpg&quot; data-alt=&quot;등산화가 아니라 군화에 체인을 연결한 것이다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lgBf7/btrdpCGpe6z/MCNiaDt6gzMnaSONNYQvVK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlgBf7%2FbtrdpCGpe6z%2FMCNiaDt6gzMnaSONNYQvVK%2Fimg.jpg&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;2271&quot; data-filename=&quot;mountain.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;등산화가 아니라 군화에 체인을 연결한 것이다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 겨울 등산 하러 산에 다녀왔다. 눈이 많이 온 산은 멋있었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2월&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;805&quot; data-filename=&quot;22.png&quot; width=&quot;303&quot; height=&quot;293&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bb4AoV/btq9XbqW16v/5CVQC19A1zsjxTT5duWmQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bb4AoV/btq9XbqW16v/5CVQC19A1zsjxTT5duWmQ1/img.png&quot; data-alt=&quot;SOPT 합격&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bb4AoV/btq9XbqW16v/5CVQC19A1zsjxTT5duWmQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb4AoV%2Fbtq9XbqW16v%2F5CVQC19A1zsjxTT5duWmQ1%2Fimg.png&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;805&quot; data-filename=&quot;22.png&quot; width=&quot;303&quot; height=&quot;293&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SOPT 합격&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 그렇게 2월 중순에 출시를 하고 혼자 개발하기보다는 다른 사람들과 같이 안드로이드 개발을 하고 싶은 마음이 생겼다. 나는 지방에 있는 학교를 다니는데, 1학기는 코로나로 인해 집에서 비대면으로 수업을 들었다. 그리고 이 기회를 활용해서 수도권에서 활동하는 &lt;b&gt;SOPT&lt;/b&gt;라는 동아리에 지원했다. 지원하기 전에 여러 블로그들에서 후기를 읽어보았는데 많은 글들에서는 &quot;나도 열정있는 사람이었지만, 나보다 더 열정있는 사람들로 가득한 동아리였다&quot;라고 후기들을 많이 보았다. 실제로 그랬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- SOPT 안드로이드 파트에서는 안드로이드 공부를 많이 할 수 있었다. 그리고 그 모든 것들이 너무 재밌었다. 학교 공부가 눈에 들어오지 않았다. 더 나아가서는 &quot;학교를 꼭 다녀야할까&quot;라는 고민을 하기도 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;3456&quot; data-origin-height=&quot;3456&quot; data-filename=&quot;pusan.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTz8GL/btrdpsqFY4T/eDWKPVWRZDE2dkFAj6B2cK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTz8GL/btrdpsqFY4T/eDWKPVWRZDE2dkFAj6B2cK/img.jpg&quot; data-alt=&quot;지나가다 아래에서 본 모습이 멋있어서 찍었다. 해운대 엘시티다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTz8GL/btrdpsqFY4T/eDWKPVWRZDE2dkFAj6B2cK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTz8GL%2FbtrdpsqFY4T%2FeDWKPVWRZDE2dkFAj6B2cK%2Fimg.jpg&quot; data-origin-width=&quot;3456&quot; data-origin-height=&quot;3456&quot; data-filename=&quot;pusan.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;지나가다 아래에서 본 모습이 멋있어서 찍었다. 해운대 엘시티다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 시골인 부산에 다녀왔다. 코로나 때문에 설날 기간에 찾아뵙지 못하고 일주일 미뤄서 다녀왔다.&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3월&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 적다보니 2월에 SOPT에 합격한 것을 적었는데, YB(신입기수) 지원서 제출과 면접은 모두 3월에 진행됐다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- &lt;b&gt;Startup Coding Festival(스코페)&lt;/b&gt;이라는 곳에 참여했다. 알고리즘 대회같은 것인데 스코페에서는 유명한 스타트업 기업들이 문제를 하나씩 냈다. 잘하면 여기서 채용연계도 되는 것 같았다. 6문제 정도 나왔는데 두 문제밖에 풀지 못했다. 그래서 2차로 넘어가지는 못했는데 좋은 경험이었다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 개학하고 &lt;b&gt;비대면으로 수업을 진행&lt;/b&gt;했다. 집에서 들을 수 있어서 좋았다. 집에서 들을 수 있어서 좋기는 하지만, 너무 밖에 나가지 않다보니 건강이 안좋아지는 느낌이 들었다. 학교는 넓어서 많이 걸어다녀야 했었는데, 집에만 있으니 운동을 안하게 되는 것이 조금 아쉬웠다. 그래도 씻고 준비하고 강의실까지 이동해야 하는 시간이 줄어 더 좋았던 것 같다. 운동을 안한 것은 핑계다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4월&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 4월에는 &lt;b&gt;이공계 국가우수장학생&lt;/b&gt; 중 2년 지원유형에 지원했다. 한국장학재단에서 2년동안 대학교 등록금을 장학금 형식으로 지원해준다. 내 통장으로 입금하는 것이 아닌 감면 방식이다. 소득분위와 상관 없이 지원해주기 때문에 지원을 했었는데 장학생으로 선발됐다. 학교 열심히 다녀야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 중순부터 SOPT 동아리에서 &lt;b&gt;안드로이드 심화 스터디&lt;/b&gt;를 진행했다. 주말마다 있는 세미나보다 더 공부하고 싶어서 심화 스터디를 했다. 심화 스터디인 만큼 안드로이드에서 어려운 주제들로 공부를 하고 돌아가면서 발표를 했는데 쉽지 않았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;2387&quot; data-filename=&quot;monitor.jpg&quot; width=&quot;250&quot; height=&quot;425&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Rf4pL/btrduUFMzcp/EW3EBIYRI9RkNGDadNgxn1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Rf4pL/btrduUFMzcp/EW3EBIYRI9RkNGDadNgxn1/img.jpg&quot; data-alt=&quot;새로 구매한 모니터다. 500ml 물병과 비교해보면 대충 크기를 짐작할 수 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Rf4pL/btrduUFMzcp/EW3EBIYRI9RkNGDadNgxn1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRf4pL%2FbtrduUFMzcp%2FEW3EBIYRI9RkNGDadNgxn1%2Fimg.jpg&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;2387&quot; data-filename=&quot;monitor.jpg&quot; width=&quot;250&quot; height=&quot;425&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;새로 구매한 모니터다. 500ml 물병과 비교해보면 대충 크기를 짐작할 수 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 모니터를 하나 더 구매했다. 27인치 모니터고 원래는 세로로 세워서 사용하려 했는데 그냥 메인 모니터로 사용중이다. 모니터에 대해 잘 모르지만 좋은 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 월말에는 중간고사를 봤다. 몇 개는 학교에 내려가서 시험을 봐야 했기 때문에 당일로 다녀왔다. 친구 자취방에서 자다보면 놀 것이 분명했기 때문에 집으로 올라오기로 결정했다. 중간고사와 더불어서 하기계절 수강신청 기간이었는데 수강신청하지 않았다. 원래는 거의 매 계절학기마다 수업을 들었었는데 이번에는 SOPT 앱잼(3주 해커톤)과 부스트캠프에 지원할 예정이었기 때문이다.&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5월&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/421870922&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dJMKfD/hyLpdrx8Tx/hlPEgTc7sBzuARMK6GUgD0/img.jpg?width=854&amp;amp;height=480&amp;amp;face=0_0_854_480&quot; data-video-width=&quot;854&quot; data-video-height=&quot;480&quot; data-video-origin-width=&quot;854&quot; data-video-origin-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/421870922?service=daum_tistory&quot; width=&quot;854&quot; height=&quot;480&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 5월에 제일 기억에 남는 것은&lt;b&gt; 구글 IO&lt;/b&gt;다. 위 영상과 같이 메타버스 형식으로 지도에서 내 캐릭터가 그 위를 돌아다니면서 구경할 수 있었다. 구글 개발자들이 가끔(꽤 많이) 있었는데 같은 테이블에 앉아서 얘기할 수도 있었다. 내가 언제 또 구글 개발자들과 얘기할 수 있을까 라는 생각으로 얘기를 나눴다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 그리고 SOPT 동아리에서 &lt;b&gt;무박 2일 해커톤&lt;/b&gt;(동아리에서는 솝커톤이라고 부른다.)을 진행했다. 기획이나 디자인팀과 협업해보는 것도 처음이었고 안드로이드 파트를 이끌어야 하는 것도 처음이었기에 여러모로 많이 부족했다. 시간도 많이 없었기 때문에 팀원들에게 많이 신경써주지 못한 것 같아 미안하다. 우리 팀이 얼마나 많이 할 수 있을지 생각안하고 기획적인 부분에서 많은 부분들이 가능하다고 얘기했다. &quot;시간만 있으면 다 구현 가능할 것 같은데&quot;라는 생각으로 많은 기능들을 가능하다고 얘기해서 나뿐만 아니라 우리 팀은 12시간동안 거의 화장실도 가지 못하고 계속 개발만 했다. 그래서 시간 내에 얼만큼 할 수 있는지 아는 것이 중요하다는 것을 깨달았다. 특히 이 부분은 SOPT 앱잼(3주 해커톤)에서도 많이 느꼈는데, 대부분의 업무는 해야할 일의 양과 시간이 정해져 있다. 그렇기 때문에 시간 내에 얼마나 할 수 있는지 잘 알고 계획을 세우는 것이 중요하다고 느꼈다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 그리고 부스트캠프 모집을 시작했는데 실제로 지원은 6월에 했다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6월&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1891&quot; data-origin-height=&quot;1892&quot; data-filename=&quot;pro.jpg&quot; width=&quot;400&quot; height=&quot;400&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Woqn6/btrdpqe6gkG/2Kpi0eToHhAyRr9mbhf6P0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Woqn6/btrdpqe6gkG/2Kpi0eToHhAyRr9mbhf6P0/img.jpg&quot; data-alt=&quot;그냥 맥북 프로라고 적혀있는데 예쁘게 느껴진다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Woqn6/btrdpqe6gkG/2Kpi0eToHhAyRr9mbhf6P0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWoqn6%2Fbtrdpqe6gkG%2F2Kpi0eToHhAyRr9mbhf6P0%2Fimg.jpg&quot; data-origin-width=&quot;1891&quot; data-origin-height=&quot;1892&quot; data-filename=&quot;pro.jpg&quot; width=&quot;400&quot; height=&quot;400&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그냥 맥북 프로라고 적혀있는데 예쁘게 느껴진다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp; 맥북 프로를 구매했다. m1칩+13인치+16기가에 학생 할인 받아서 206만원 정도에 구매했다. 기존에 사용하던 삼성 노트북9은 안드로이드 개발용으로 쓰기에는 성능이 거의 따라오지 못해서 구매했다. 안드로이드 스튜디오가 m1칩과 잘 호환이 되지 않았지만 현재는 Arctic fox가 나온 이후로 거의 문제가 없다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;1907&quot; data-filename=&quot;피자힐.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb8zgl/btrdmAW6Rwx/VRILZl3Ja17jW22CkoZSk0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb8zgl/btrdmAW6Rwx/VRILZl3Ja17jW22CkoZSk0/img.jpg&quot; data-alt=&quot;피자힐 올라가는 길&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb8zgl/btrdmAW6Rwx/VRILZl3Ja17jW22CkoZSk0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb8zgl%2FbtrdmAW6Rwx%2FVRILZl3Ja17jW22CkoZSk0%2Fimg.jpg&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;1907&quot; data-filename=&quot;피자힐.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;피자힐 올라가는 길&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 사실 어버이날 &lt;b&gt;피자힐&lt;/b&gt;에서 부모님께 피자를 사드리려고 했다. 그래서 5월 7일에 피자힐에 전화해서 예약하려고 했는데 창가 자리는 예약이 마감됐고 저녁시간 창가자리는 6월이나 돼야 예약이 가능하다고 했다. 그래서 6월에 제일 빠른 때에 예약을 잡고 다녀왔다. 피자 맛은 가격에 비하면 좋지는 않았지만, 그 가격에는 뷰 값도 있고 호텔 값도 있으니까.. 라고 생각하면 기념일 정도에는 괜찮을 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-filename=&quot;981.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P81ex/btrdmCObhsl/bcPUzZhFC5KIGZ1uVkVWq1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P81ex/btrdmCObhsl/bcPUzZhFC5KIGZ1uVkVWq1/img.jpg&quot; data-alt=&quot;제주도 981 테마파크인데 진짜 재밌다!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P81ex/btrdmCObhsl/bcPUzZhFC5KIGZ1uVkVWq1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP81ex%2FbtrdmCObhsl%2FbcPUzZhFC5KIGZ1uVkVWq1%2Fimg.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-filename=&quot;981.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;제주도 981 테마파크인데 진짜 재밌다!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot; data-filename=&quot;food.gif&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUkSx2/btrdr3pwqfA/qqk6zKS4oylqlbSiExQfd1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUkSx2/btrdr3pwqfA/qqk6zKS4oylqlbSiExQfd1/img.gif&quot; data-alt=&quot;같이 간 동기 친구가 장인의 집에서 일해서 다녀왔다. 진짜 맛있었다!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUkSx2/btrdr3pwqfA/qqk6zKS4oylqlbSiExQfd1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/dUkSx2/btrdr3pwqfA/qqk6zKS4oylqlbSiExQfd1/img.gif&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot; data-filename=&quot;food.gif&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;같이 간 동기 친구가 장인의 집에서 일해서 다녀왔다. 진짜 맛있었다!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 화요일날 시험이 끝났는데 수요일날 바로 비행기타고 제주도를 갔다. 뭔가 여행 계획이라도 잡아놔야지 더 열심히 공부할 수 있을 것 같아서였다. 그렇게 고등학교 때 동기와 둘이서 제주도로 2박3일간 여행을 다녀왔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;605&quot; data-filename=&quot;delay.jpg&quot; width=&quot;350&quot; height=&quot;206&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VkarQ/btrdo8Z99RE/PflasCW86DhVNawONq9vzK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VkarQ/btrdo8Z99RE/PflasCW86DhVNawONq9vzK/img.jpg&quot; data-alt=&quot;지연된 비행기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VkarQ/btrdo8Z99RE/PflasCW86DhVNawONq9vzK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVkarQ%2Fbtrdo8Z99RE%2FPflasCW86DhVNawONq9vzK%2Fimg.jpg&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;605&quot; data-filename=&quot;delay.jpg&quot; width=&quot;350&quot; height=&quot;206&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;지연된 비행기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;제주도에 조금이라도 더 있고 싶어서 서울에서 지하철 막차 시간으로 비행기 시간을 맞춰놨었는데 비행기가 지연됐다. 이럴 수가... 부모님이 데리러 올 수 없는 상황이어서 집까지 오래걸리는 버스를 타고 갔다. 그마저도 조금만 더 늦었으면 못 탈 뻔 했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;3456&quot; data-origin-height=&quot;3456&quot; data-filename=&quot;seoul.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PxTZu/btrdpLpZ3ww/6oIffYfEgbGE8dPBkVJW5K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PxTZu/btrdpLpZ3ww/6oIffYfEgbGE8dPBkVJW5K/img.jpg&quot; data-alt=&quot;자정 넘어서 서울역에서 버스를 기다리면서 찍었다.&amp;amp;amp;nbsp;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PxTZu/btrdpLpZ3ww/6oIffYfEgbGE8dPBkVJW5K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPxTZu%2FbtrdpLpZ3ww%2F6oIffYfEgbGE8dPBkVJW5K%2Fimg.jpg&quot; data-origin-width=&quot;3456&quot; data-origin-height=&quot;3456&quot; data-filename=&quot;seoul.jpg&quot; width=&quot;350&quot; height=&quot;350&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;자정 넘어서 서울역에서 버스를 기다리면서 찍었다.&amp;nbsp;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 그리고 과외를 시작했다. 직장인 두 분을 상대로 과외를 하고 있는데 재밌게 할 수 있어서 좋다. 내가 가르쳐 드린 것을 이해하고 나중에 과제나 문제 푸는 것을 볼 때는 뿌듯하다. 두 달이 넘게 지난 지금도 계속 재밌게 하고 있다. 사실 과외를 처음 시작한 것은 돈을 벌고 싶다는 것도 있었지만, 설명하는 능력을 키우고 싶어서이기도 했다. 덕분에 원래 말을 빠르게 했는데 속도를 조금 조절할 수 있게 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 우리 학교에 Google DSC가 없어서 지원해서 해볼까 하다가 바빠서 제대로 하지 못할 것 같은 핑계로 지원하지 않았다. 안드로이드 공부를 조금 더 하고 싶어서이기도 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 1학기 성적이 나왔는데 지금까지 받았던 것 중에서 가장 높은 성적을 받았다. 뿌듯하지만 코로나의 영향이 큰 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- &lt;a href=&quot;http://www.k-hackathon.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;K Hackathon&lt;/a&gt;에 나가기로 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 부스트캠프 서류도 제출했다. 서류 제출은 합격이 없었던 것 같았고(확실하지 않다), 1차 코딩 테스트는 유료였으며 7월에 진행되었기 때문에 7월 칸에 작성하겠다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7월&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 7월에도 과외를 매주 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 그리고 부스트캠프 1차 코테와 2차 코테에 모두 합격해서 7월 중순부터 8월 중순까지 부스트캠프 챌린지 과정을 진행할 수 있게 되었다. SOPT 동아리에서 열정 넘친 분들을 많이 뵐 수 있었는데 부스트캠프에서도 열정 넘치는 분들을 많이 뵐 수 있었다. 3000명이 넘는 지원자 중 350명 가량의 분들이 뽑혀 챌린지 과정을 했는데 잘하시는 분들이 많았다. &quot;나정도면 괜찮지~&quot;라는 생각으로 했다가 매~우 반성했다. 역시 자만은 나의 최대의 적이라고 다시 한 번 느꼈다. 4주 정도 부스트캠프 챌린지 과정을 했는데 힘들었다. 거의 매일 잠을 줄이면서 과제를 했다. 대부분의 챌린지 분들이 그랬던 것 같다. 학교였으면 1~2주짜리 과제인데 하루에 해야하는 느낌이었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;힘들지만 힘든 만큼 얻는 것은 많다. 나는 &lt;i&gt;니체&lt;/i&gt;의 &lt;i&gt;나를 죽이지 못하는 고통은 나를 더 강하게 만든다.(What does not destroy me, makes me stronger = Friedrich Nietzsche)&lt;/i&gt;라는 말을 좋아하는데, 부스트캠프 챌린지 과정 중 힘들었던 것은 나를 더 강하게 만들어주지 않았을까? 앞으로도 어려운 것에 도전해보고 싶다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- K hackathon 본선에 합격해서 개발지원금 30만원을 수령하고, 앱을 개발하여 발표 영상을 첨부해서 제출했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;3019&quot; data-origin-height=&quot;2737&quot; data-filename=&quot;gang.jpg&quot; width=&quot;350&quot; height=&quot;317&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c26siq/btrdop2jfsw/hjBTG1h1sK9ww1xNEk2EF0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c26siq/btrdop2jfsw/hjBTG1h1sK9ww1xNEk2EF0/img.jpg&quot; data-alt=&quot;침이 고인다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c26siq/btrdop2jfsw/hjBTG1h1sK9ww1xNEk2EF0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc26siq%2Fbtrdop2jfsw%2FhjBTG1h1sK9ww1xNEk2EF0%2Fimg.jpg&quot; data-origin-width=&quot;3019&quot; data-origin-height=&quot;2737&quot; data-filename=&quot;gang.jpg&quot; width=&quot;350&quot; height=&quot;317&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;침이 고인다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 친구들과 강릉으로 여행 다녀왔다. 낮에는 바다에 가고 저녁에는 고기를 먹어서 제대로 힐링하고 왔다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 그리고 2학기 수강신청을 위해 장바구니를 담았다. 저번 학기에는 또 자만을 하고 여유롭게 수강신청을 했더니 수강신청 성공을 거의 못했다. 그래서 이번에는 정신 바짝차리고 수강신청을 했다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8월&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;277&quot; data-filename=&quot;membership.PNG&quot; width=&quot;500&quot; height=&quot;225&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfAnKP/btrdrvGwQo6/oioLBJCx64KUX7y5kmXKkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfAnKP/btrdrvGwQo6/oioLBJCx64KUX7y5kmXKkk/img.png&quot; data-alt=&quot;부스트캠프의 마지막 단계인 멤버쉽 합격 메일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfAnKP/btrdrvGwQo6/oioLBJCx64KUX7y5kmXKkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfAnKP%2FbtrdrvGwQo6%2FoioLBJCx64KUX7y5kmXKkk%2Fimg.png&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;277&quot; data-filename=&quot;membership.PNG&quot; width=&quot;500&quot; height=&quot;225&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;부스트캠프의 마지막 단계인 멤버쉽 합격 메일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 8월에는 부스트캠프 챌린지 과정이 끝났다. 그리고 한 5일 후에 부스트캠프 멤버쉽 과정 결과가 발표났다. 합격해서 멤버쉽 과정까지 할 수 있게 되었다. 좋으면서도 휴학을 해야할 지 고민을 많이 했다. 결론적으로는 휴학을 하게 되었는데, 그 이유는 병행을 한다면 둘 다 제대로 못할 것 같아서 휴학을 하기로 했다. 우리과는 휴학을 하면 1년 단위로밖에 신청하지 못해서 굉장히 고민을 많이 했다. &quot;부스트캠프는 12월 초에 끝나는데, 그러면 남은 9개월 동안은 뭘해야할까&quot;라는 고민을 많이 했다. &quot;교환학생을 갈까?&quot;, &quot;돈을 벌까?&quot;, &quot;안드로이드 공부를 할까?&quot;, &quot;인턴이나 계약직으로 안드로이드 관련된 일을 할까?&quot; 등등 많은 고민을 하고 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 휴학을 하는 것도 쉽지 않았다. 이공계 국가우수장학금 수혜 관련해서도 학교 장학과와 많은 전화를 했고, 군휴학이 아닌 일반휴학도 지도교수님과 학과장님과 상담해야 해서 많은 난관들이 있었다. 멤버쉽 합격 발표가 난 후에 개학까지 열흘 정도 남아 있었기 때문에, 이 기간 동안 빠르게 교수님과 상담을 했어야 했고 기숙사 포기원을 제출해야 했으며, 장학과와 연락도 계속 했어야 하는 동시에 멤버쉽도 첫 주가 시작되어서 여러모로 바빴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;그렇게 첫 주가 지나고 8월의 마지막 토요일이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;9월부터는 비록 나는 3학년이지만 채용 시즌이기도 하며 부스트캠프를 시작하기도 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;휴학한 것이 후회되지 않게 열심히 할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>일상다반사/대학라이프</category>
      <author>이원중</author>
      <guid isPermaLink="true">https://wonnyhouse.tistory.com/262</guid>
      <comments>https://wonnyhouse.tistory.com/262#entry262comment</comments>
      <pubDate>Sat, 28 Aug 2021 16:04:17 +0900</pubDate>
    </item>
  </channel>
</rss>