<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>85chong</title>
    <link>https://85chong.tistory.com/</link>
    <description>#Challenge #Analysis #Record #Upgrade</description>
    <language>ko</language>
    <pubDate>Thu, 16 Apr 2026 14:53:40 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>85chong</managingEditor>
    <image>
      <title>85chong</title>
      <url>https://tistory1.daumcdn.net/tistory/2937892/attach/793b869493b04898863630b96f9c6b60</url>
      <link>https://85chong.tistory.com</link>
    </image>
    <item>
      <title>Server Port 개념</title>
      <link>https://85chong.tistory.com/246</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-09-05 141507.png&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bb1xLf/btsQlWmvVdz/rE6WuJWJ7WPox2CiHB5gd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bb1xLf/btsQlWmvVdz/rE6WuJWJ7WPox2CiHB5gd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bb1xLf/btsQlWmvVdz/rE6WuJWJ7WPox2CiHB5gd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb1xLf%2FbtsQlWmvVdz%2FrE6WuJWJ7WPox2CiHB5gd0%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;1292&quot; height=&quot;645&quot; data-filename=&quot;스크린샷 2025-09-05 141507.png&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;645&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;</description>
      <category>Etc</category>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/246</guid>
      <comments>https://85chong.tistory.com/246#entry246comment</comments>
      <pubDate>Fri, 5 Sep 2025 14:15:48 +0900</pubDate>
    </item>
    <item>
      <title>7 files found with path 'META-INF/NOTICE.md'.Adding a packaging block may help, please refer to</title>
      <link>https://85chong.tistory.com/245</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* error message :&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7&amp;nbsp;files&amp;nbsp;found&amp;nbsp;with&amp;nbsp;path&amp;nbsp;'META-INF/NOTICE.md'.&lt;br /&gt;Adding&amp;nbsp;a&amp;nbsp;packaging&amp;nbsp;block&amp;nbsp;may&amp;nbsp;help,&amp;nbsp;please&amp;nbsp;refer&amp;nbsp;to&lt;br /&gt;&lt;a href=&quot;https://developer.android.com/reference/tools/gradle-api/8.5/com/android/build/api/dsl/Packaging&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://developer.android.com/reference/tools/gradle-api/8.5/com/android/build/api/dsl/Packaging&lt;/a&gt;&lt;br /&gt;for&amp;nbsp;more&amp;nbsp;information&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* '' 안에 있는 내용에서 중복되는 내용이 있다 해결 해라 하는 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 아래와 같이 '' 안에 있는 부분에 내용이 충돌한것을 아래와 같이 적어 해결하면 끝&lt;/p&gt;
&lt;pre id=&quot;code_1731646103605&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    packaging {
        resources.excludes.add(&quot;META-INF/NOTICE.md&quot;)
        resources.excludes.add(&quot;META-INF/LICENSE.md&quot;)
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Exception Study</category>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/245</guid>
      <comments>https://85chong.tistory.com/245#entry245comment</comments>
      <pubDate>Fri, 15 Nov 2024 14:01:50 +0900</pubDate>
    </item>
    <item>
      <title>Rest api 이름 규칙</title>
      <link>https://85chong.tistory.com/244</link>
      <description>&lt;div style=&quot;background-color: #1f1f1f; color: #cccccc;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bad Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/Running/&quot;&gt;http://khj93.com/Running/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Good Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/run/&quot;&gt;http://khj93.com/run/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 마지막에 슬래시 (/)를 포함하지 않는다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bad Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/test/&quot;&gt;http://khj93.com/test/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Good Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/test&quot;&gt;http://khj93.com/test&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. 언더바 대신 하이폰을 사용한다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bad Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/test_blog&quot;&gt;http://khj93.com/test_blog&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Good Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/test-blog&quot;&gt;http://khj93.com/test-blog&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. 파일확장자는 URI에 포함하지 않는다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bad Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/photo.jpg&quot;&gt;http://khj93.com/photo.jpg&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Good Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/photo&quot;&gt;http://khj93.com/photo&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5. 행위를 포함하지 않는다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bad Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/delete-post/1&quot;&gt;http://khj93.com/delete-post/1&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #cccccc; text-align: start;&quot;&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Good Example&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;http://khj93.com/post/1&quot;&gt;http://khj93.com/post/1&lt;/a&gt;&lt;/span&gt;&lt;/span&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;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[출처]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Etc</category>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/244</guid>
      <comments>https://85chong.tistory.com/244#entry244comment</comments>
      <pubDate>Thu, 10 Oct 2024 13:14:41 +0900</pubDate>
    </item>
    <item>
      <title>Timeout waiting to lock file hash cache... (for MAC)</title>
      <link>https://85chong.tistory.com/243</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드 스튜디오 새버전 설치후 이래저리 꼬여버린 설정 환경에 기존에 앱 빌드가 잘되던 프로젝트가 실행되지 않으면서, 발생한 에러&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Timeout waiting to lock file hash cache (/Users/yckpc/.gradle/caches/8.0/fileHashes). It is currently in use by another Gradle instance&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 gradle 캐시를 지워준후 빌드 하면 다시 정상 동작함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;터미널&lt;/span&gt;:&lt;span&gt;&amp;nbsp; &lt;/span&gt;rm -rf ~/.gradle/caches&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Exception Study</category>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/243</guid>
      <comments>https://85chong.tistory.com/243#entry243comment</comments>
      <pubDate>Fri, 31 May 2024 14:41:37 +0900</pubDate>
    </item>
    <item>
      <title>Python 설치된 module 버전 확인하기</title>
      <link>https://85chong.tistory.com/242</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* 설치 할때&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pip3 install google-cloud-language&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;* 설치된 버전 확인할때&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pip&amp;nbsp;list&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;google-cloud-language&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;* 결과&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; &lt;span&gt;google-cloud-language&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;2.13.3&lt;/span&gt;&lt;/p&gt;</description>
      <category>Python</category>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/242</guid>
      <comments>https://85chong.tistory.com/242#entry242comment</comments>
      <pubDate>Wed, 29 May 2024 16:21:35 +0900</pubDate>
    </item>
    <item>
      <title>Python 폴더 삭제후 재설치 for MAC</title>
      <link>https://85chong.tistory.com/241</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;다른 설정하다가 path 설정이 꼬였거나 module 을 백날 설치했는데도, module 찾을수 없다던가, 되던게 안될때는, 이전 기록은 제거하고 재설치해서 동작 가능하게 만들기&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. 기존 설치된 python 제거하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. python 재설치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. path 설정해서 명령어 편하게 쓰기&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;&lt;b&gt;* 기존 설치된 python 제거하기&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;python 을 pkg 로 설치하면 경로는 /Library/Frameworks/Python.framework 이와 같을거임같을거임&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;u&gt;!! /Library/Frameworks/Python.framework/Versions 에 들어가면 본인이 설치한 버전 이름으로 된 폴더를 확인 가능함&lt;/u&gt;&lt;/li&gt;
&lt;li&gt;Python.framework 폴더를 통째로 삭제함 (삭제 단축키 : command + backspace)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* python 재설치&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.python.org/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.python.org/downloads/&lt;/a&gt; python 공식 홈피가서 mac 용 설치파일 다운로드&lt;/li&gt;
&lt;li&gt;파일 실행해서 설치&lt;/li&gt;
&lt;/ol&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;* path 설정해서 명령어 편하게 쓰기&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;설치된 경로로 가서 pyhon 실행 파일 확인한다(exec 아이콘을 가지고있는 pip 이름으로 된 파일이있다 이게 실행 명령어 파일이름이다 저는 pip3 임)&lt;/li&gt;
&lt;li&gt;터미널을 실행해서 아래의 명령어를 실행한다&lt;br /&gt;export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/3.12/pip3&lt;/li&gt;
&lt;li&gt;&amp;nbsp;터미널을 껏다 다시 켜서&amp;nbsp; pip3 --version 을 실행해서 해당 관련 경로가 뜨면 완료&lt;/li&gt;
&lt;/ol&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;&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;&lt;/p&gt;</description>
      <category>Python</category>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/241</guid>
      <comments>https://85chong.tistory.com/241#entry241comment</comments>
      <pubDate>Wed, 29 May 2024 14:52:45 +0900</pubDate>
    </item>
    <item>
      <title>Android Statusbar 설정 방법(색상, 이미지, 투명)</title>
      <link>https://85chong.tistory.com/239</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 준비물 :&amp;nbsp;투명색상 리소스 만들어주기R.color.color_translate&lt;/p&gt;
&lt;pre id=&quot;code_1708306824033&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;resources&amp;gt;
    ...
    &amp;lt;color name=&quot;color_translate&quot;&amp;gt;#00000000&amp;lt;/color&amp;gt;
    ...
&amp;lt;/resources&amp;gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. statusbar 백그라운드 뒤로 전체 스크린이 위치하면서 투명하게 만들기 :&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 아래의 코드 style 만들어서 AndroidManifest 에서 해당 페이지 Activity 에 적용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1708305496340&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;style name=&quot;FullStatusTheme&quot; parent=&quot;Theme.AppCompat.Light.NoActionBar&quot;&amp;gt;
        &amp;lt;item name=&quot;android:windowTranslucentStatus&quot;&amp;gt;false&amp;lt;/item&amp;gt;
        &amp;lt;item name=&quot;android:windowLightStatusBar&quot;&amp;gt;true&amp;lt;/item&amp;gt;
    &amp;lt;/style&amp;gt;&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;2. statusbar 색상 입히기 :&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;-&amp;nbsp; style 따로 설정 할건 없고,&amp;nbsp; 아래의 코드로 색상을 지정하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708305899705&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;override fun onCreate(savedInstanceState: Bundle?) {
	   ...
       this.window.apply {
            statusBarColor = resources.getColor(R.color.color_translate,null)
       }
       ...
}&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;b&gt;3. statusbar 글자 색상 검정 or 흰색으로 설정하기 :&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 아래의 isIconBlack == true : statusbar 폰트 색상 흰색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 아래의 isIconBlack == false : statusbar 폰트 색상 검정색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1708306036929&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;override fun onCreate(savedInstanceState: Bundle?) {
	   ...
       this.window.apply {
            WindowInsetsControllerCompat(this, this.decorView).isAppearanceLightStatusBars = isIconBlack.not()
       }
       ...
}&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;b&gt;3. statusbar 에 drawable 이미지 설정하기 :&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1708306370982&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;override fun onCreate(savedInstanceState: Bundle?) {
	...
       this.window.apply {
           statusBarColor = resources.getColor(R.color.color_translate,null)
           setBackgroundDrawable(drawable)
           WindowInsetsControllerCompat(this, this.decorView).isAppearanceLightStatusBars = isIconBlack.not()
        }
       ...
}&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;&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>Android Study</category>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/239</guid>
      <comments>https://85chong.tistory.com/239#entry239comment</comments>
      <pubDate>Mon, 19 Feb 2024 10:43:02 +0900</pubDate>
    </item>
    <item>
      <title>toggle , exepand Animation</title>
      <link>https://85chong.tistory.com/238</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;일단 코드 저장&lt;/p&gt;
&lt;pre id=&quot;code_1704332220480&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class ToggleAnimUtil {

    companion object {
        fun toggleArrow(view: View, isExpanded: Boolean): Boolean {
            if (isExpanded) {
                view.animate().setDuration(200).rotation(180f)
                return true
            } else {
                view.animate().setDuration(200).rotation(0f)
                return false
            }
        }

        fun expand(view: View) {
            val animation = expandAction(view)
            view.startAnimation(animation)
        }

        private fun expandAction(view: View) : Animation {
            view.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
            val actualHeight = view.measuredHeight
            view.layoutParams.height = 0
            view.visibility = View.VISIBLE
            val animation = object : Animation() {
                override fun applyTransformation(interpolatedTime: Float, t: Transformation?) {
                    view.layoutParams.height = if (interpolatedTime == 1f) ViewGroup.LayoutParams.WRAP_CONTENT
                    else (actualHeight * interpolatedTime).toInt()
                    view.requestLayout()
                }
            }
            animation.duration = (actualHeight / view.context.resources.displayMetrics.density).toLong()
            view.startAnimation(animation)
            return animation
        }

        fun collapse(view: View) {
            val actualHeight = view.measuredHeight
            val animation = object : Animation() {
                override fun applyTransformation(interpolatedTime: Float, t: Transformation?) {
                    if (interpolatedTime == 1f) {
                        view.visibility = View.GONE
                    } else {
                        view.layoutParams.height = (actualHeight - (actualHeight * interpolatedTime)).toInt()
                        view.requestLayout()
                    }
                }
            }
            animation.duration = (actualHeight / view.context.resources.displayMetrics.density).toLong()
            view.startAnimation(animation)
        }
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Android Study</category>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/238</guid>
      <comments>https://85chong.tistory.com/238#entry238comment</comments>
      <pubDate>Thu, 4 Jan 2024 10:37:21 +0900</pubDate>
    </item>
    <item>
      <title>Kotlin Coroutine 간단 사용법</title>
      <link>https://85chong.tistory.com/237</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Coroutine Thread&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Main : 말 그대로 메인 , UI 작업시 사용해야 하는 스레드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- IO : 백그라운드 작업할때만 사용해야 하는 스레드 (UI 절대 포함 안됨)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Default : 계산을 오래 하거나 for 문 등 오래 계산 되어야 하는 작업들 사용시 쓰는 스레드&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;** Coroutine function&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- launch :&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 바로 실행 , 실행결과 반환 안됨(Job 객체만 반환)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- join 으로 완료 대기 가능한 특징있음&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;- async :&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 실행결과 Deffered&amp;lt;T&amp;gt; 통해서 반환하며 await 를 사용해서 결과값을 받을 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- await 는 작업이 완료 될때까지 기다리는 특지있음&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 id=&quot;code_1703741589344&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        CoroutineScope(Dispatchers.Main).launch {
            var arr = CoroutineScope(Dispatchers.Default).async {
                updateCalendarDay(mYear, mMonth)
            }.await()
            binding?.calendarGridView?.adapter = CalendarAdapter(requireContext(), arr!!)
        }
        initView()&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- updateCalendareDay 는 arr 값을 리턴한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 위 코드는 onCreate 안에서 실행하는 코드이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- UI 그리기 위해서 Dispatchers.Main 을 사용했고, arr 결과값을 받기 위해 .async 와 .await 를 이용했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 해당 달력값의 arr 다 받기 전에 먼저 달력을 띄워주는 작업은 initView() 에 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 먼저 달력을 띄운다(이때, 달력 값은 없다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- updateCalendarDay에서 계산된(.await 를 이용해서 받은 결과) 값의 arr 로 Dispatchers.Main 안에 있는 달력 Adapter 에 넣고 달력 값을 넣어준다.&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;- 끝 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Kotlin Study</category>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/237</guid>
      <comments>https://85chong.tistory.com/237#entry237comment</comments>
      <pubDate>Thu, 28 Dec 2023 14:38:09 +0900</pubDate>
    </item>
    <item>
      <title>SHA-1 key 얻는방법 (for Mac, Release)</title>
      <link>https://85chong.tistory.com/234</link>
      <description>&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;1. 릴리즈 키 (예 : myReleaseKeyStore)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 릴리즈 키 위치(예: mypc/mykey/release/)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 릴리즈 키 alias (예 : myReleaseAlias)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. pass :(예 : 키 비번)&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;keytool -list -v -alias&lt;span&gt;&amp;nbsp; &lt;/span&gt;[&lt;span&gt;키&lt;/span&gt; Alias] -keystore [&lt;span&gt;키&lt;/span&gt; &lt;span&gt;위치&lt;/span&gt;/&lt;span&gt;키&lt;/span&gt; &lt;span&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;* 예제 적용:&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;keytool -list -v -keystore /mypc/mykey/release/myReleaseKeyStore -alias myReleaseAlias&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;!!! 비번을 아무거나 입력해도 SHA 값은 출력된다. 그 값은 비정상 값이므로 정확하게 입력해야된다.&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;</description>
      <author>85chong</author>
      <guid isPermaLink="true">https://85chong.tistory.com/234</guid>
      <comments>https://85chong.tistory.com/234#entry234comment</comments>
      <pubDate>Mon, 11 Dec 2023 12:01:06 +0900</pubDate>
    </item>
  </channel>
</rss>