<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>koucop의 개발탐방기</title>
    <link>https://wellohorld.tistory.com/</link>
    <description>대가리 깨지면서 배우는 코딩공부 재밌쥬?</description>
    <language>ko</language>
    <pubDate>Fri, 8 May 2026 20:20:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>koucop</managingEditor>
    <image>
      <title>koucop의 개발탐방기</title>
      <url>https://tistory1.daumcdn.net/tistory/3169157/attach/fca8f8ce35b14646bb74211b20aa20bb</url>
      <link>https://wellohorld.tistory.com</link>
    </image>
    <item>
      <title>[Android] Compose 에 대해 알아보자 part.1 개요</title>
      <link>https://wellohorld.tistory.com/184</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕, 형들~  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 문서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://developer.android.com/jetpack/compose/mental-model&quot;&gt;Android-Compose 공식문서&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;기반으로 작성하였고, 해당 문서에서 아래내용을 모두 확인할 수 있어~&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;user-content-개요&quot; href=&quot;https://github.com/crazzero/TIL/blob/main/android/jetpack/compose/ComposeBase.md#%EA%B0%9C%EC%9A%94&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Jetpack Compose는 최근 안드로이드 진영에서 밀고 있는 선언형 UI Toolkit 인데, Swift 에 SwiftUI(스유) 가 있다면 Android 에는 Compose 가 있다고 말할 수 있어.&lt;br /&gt;Compose는 프런트엔드 뷰를 명령형(imperatively)으로 변형하지 않고도 앱 UI를 렌더링할 수 있게 하는 선언형(declarative) API를 제공하여 앱 UI를 더 쉽게 작성하고 유지관리할 수 있도록 도와주는데, XML 에 익숙한 개발자라면 compose 스타일에 익숙해지는데 좀 걸릴 수 있을 것 같아.&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;a id=&quot;user-content-the-declarative-programming-paradigm-선언형-프로그래밍-패러다임&quot; href=&quot;https://github.com/crazzero/TIL/blob/main/android/jetpack/compose/ComposeBase.md#the-declarative-programming-paradigm-%EC%84%A0%EC%96%B8%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8C%A8%EB%9F%AC%EB%8B%A4%EC%9E%84&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;The declarative programming paradigm (선언형 프로그래밍 패러다임)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 Android 에서는 사용자와의 상호작용 등을 이유로 인해 앱의 상태가 변경되면, 현재 데이터를 표시하기 위해 UI 계층 구조를 업데이트 하는데,&lt;br /&gt;여기서 업데이트를 하기 위한 뷰 계층 구조는 트리 형태로 표시할 수 있고, &lt;br /&gt;UI를 업데이트하는 가장 일반적인 방법은 findViewById()와 같은 함수를 사용하여 해당 트리를 탐색한 후, button.setText(String), container.addChild(View) 또는 img.setImageBitmap(Bitmap)과 같은 메서드를 호출하여 노드를 변경하는 것이야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 메서드를 통해 위젯의 내부 상태를 변경할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 뷰의 상태에 대한 업데이트는 아래와 같은 순서로 진행 돼어어어~&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;뷰 계층 구조 탐색&lt;/li&gt;
&lt;li&gt;위젯 내부의 메서드 호출&lt;/li&gt;
&lt;li&gt;상태 변경&lt;/li&gt;
&lt;/ol&gt;
&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;뷰를 수동으로 조작하면 오류가 발생하기 쉽다.&lt;/li&gt;
&lt;li&gt;데이터를 여러 위치에서 렌더링한다면 데이터를 표시하는 뷰 중 하나를 업데이트하는 것을 잊기 쉽다.&lt;/li&gt;
&lt;li&gt;여러 업데이트를 통해서 충돌이 발생한 경우, 상태에 대한 트랙킹이 어렵다. (예를 들어 업데이트가 UI에서 방금 삭제된 노드의 값을 설정하려고 할 수 있다)&lt;/li&gt;
&lt;/ul&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;지난 몇 년에 걸쳐 업계 전반에서는 선언형 UI 모델로 전환하기 시작했으며, 이에 따라 사용자 인터페이스 빌드 및 업데이트와 관련된 엔지니어링이 크게 간소화되었는데,&amp;nbsp;&lt;br /&gt;이 기법은 처음부터 화면 전체를 개념적으로 재생성(recomposition)한 후 필요한 변경사항만 적용하는 방식으로 작동 돼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이러한 접근 방식은 스테이트풀(Stateful) 뷰 계층 구조를 수동으로 업데이트할 때의 복잡성을 방지할 수 있어.&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;br /&gt;Compose 에서는 이 비용을 줄이기 위해 특정 시점에 UI의 어떤 부분을 다시 그려야 하는지를 지능적으로 선택한고 있어.&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;a id=&quot;user-content-a-simple-composable-function-간단한-composable-함수&quot; href=&quot;https://github.com/crazzero/TIL/blob/main/android/jetpack/compose/ComposeBase.md#a-simple-composable-function-%EA%B0%84%EB%8B%A8%ED%95%9C-composable-%ED%95%A8%EC%88%98&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;A simple composable function (간단한 composable 함수)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 간단한 Composable 함수 사용에 대해서 알아볼까~?  &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;Compose를 사용하면 데이터를 받아서 UI 요소를 내보내는 composable 함수 집합을 정의하여 UI 를 빌드할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;예를들어, 아래처럼 Greeting 위젯으로, String을 받아서 인사말 메시지를 표시하는 Text 위젯을 내보낼 수 있는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1635053819947&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun Greeting(name: String) 
{ 
    Text(&quot;Hello $name&quot;) 
}&lt;/code&gt;&lt;/pre&gt;
&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;함수는 @Composable annotation 으로 지정해주어야 한다. 모든 Compose 에 사용되는 함수에는 이 annotation 이 있어야 한다.&lt;/li&gt;
&lt;li&gt;@Composable annotation 을 통해 해당 함수가 데이터를 UI로 변환하기 위한 함수라는 것을 Compose 컴파일러에 알릴 수 있다.&lt;/li&gt;
&lt;li&gt;함수는 데이터를 받는다. 함수는 매개변수를 받을 수 있으며 이 매개변수를 통해 앱 로직이 UI를 형성할 수 있다. (위 예에서 Greeting 위젯은 String 을 받아서 이름을 표시하고 있다)&lt;/li&gt;
&lt;li&gt;텍스트 UI 요소를 생성하는 Text() 함수를 호출해서 UI에 텍스트를 표시한다.&lt;/li&gt;
&lt;li&gt;함수는 아무것도 반환하지 않는다. UI를 내보내는 Compose 함수는 UI 위젯을 구성하는 대신 원하는 화면 상태를 나타내주므로 아무것도 반환할 필요가 없다.&lt;/li&gt;
&lt;li&gt;이 함수는 빠르고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%A9%B1%EB%93%B1%EC%9B%90&quot;&gt;멱등원&lt;/a&gt;이며 부작용이 없다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수는 동일한 인수로 여러 번 호출될 때 동일한 방식으로 작동하며, 전역 변수 또는 random() 호출과 같은 다른 값을 사용하지 않는다.&lt;/li&gt;
&lt;li&gt;함수는 속성 또는 전역 변수 수정과 같은 부작용(side-effects) 없이 UI를 형성합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;The declarative paradigm shift (선언형 패러다임 전환)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 명령형 객체 지향 UI Toolkit를 사용하여 위젯의 트리를 인스턴스화함으로써 UI를 초기화하는데,&lt;br /&gt;흔히 안드로이드에서는 XML 레이아웃 파일을 통해, 각 위젯은 자체의 내부 상태를 유지하고 앱 로직이 위젯과 상호작용할 수 있도록 하는 getter 및 setter 메서드를 노출시켜줘서 개발자들이 원하는 동작을 시킬 수 있도록 만들어줘.&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;Compose의 선언형 접근 방식에서 위젯은 비교적 스테이트리스(Stateless) 상태이며 getter 및 setter 함수를 노출하지 않는데, (사실상 위젯은 객체로 노출되지 않는다)&lt;br /&gt;동일한 composable 함수를 다른 인수로 호출하여 UI를 업데이트할 수 있고, 이렇게 하면 앱 아키텍처 가이드에 설명된 대로 ViewModel과 같은 아키텍처 패턴에 상태를 쉽게 제공할 수 있어.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;user-content-data&quot; href=&quot;https://github.com/crazzero/TIL/blob/main/android/jetpack/compose/ComposeBase.md#data&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;data&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱 로직은 최상위의 composable 함수에 데이터를 제공하고, 그러면 함수는 데이터를 사용하여 다른 composable을 호출함으로써 UI를 만든 후 적절한 데이터를 해당 composable 및 계층 구조 아래로 전달시켜 줘.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Auihv/btriFiP7WcF/okPfkN6PoZTdN4Q0EWlHM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Auihv/btriFiP7WcF/okPfkN6PoZTdN4Q0EWlHM0/img.png&quot; data-alt=&quot;상위 수준 객체부터 하위 요소까지 Compose UI의 데이터 흐름을 보여주는 그림&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Auihv/btriFiP7WcF/okPfkN6PoZTdN4Q0EWlHM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAuihv%2FbtriFiP7WcF%2FokPfkN6PoZTdN4Q0EWlHM0%2Fimg.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&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;상위 수준 객체부터 하위 요소까지 Compose UI의 데이터 흐름을 보여주는 그림&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;a id=&quot;user-content-event&quot; href=&quot;https://github.com/crazzero/TIL/blob/main/android/jetpack/compose/ComposeBase.md#event&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;event&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 UI와 상호작용할 때 UI는 onClick과 같은 이벤트를 발생시켰을 때, 이러한 이벤트를 앱 로직에 전달하여 앱의 상태를 변경해야 하는데, 이 때 상태가 변경되면 composable 함수는 새 데이터와 함께 다시 호출 돼.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 UI 요소가 다시 그려지게 되고, 이 프로세스를 recomposition (재구성) 이라고 해.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;사용자가 UI 요소와 상호작용하며 이에 따라 이벤트가 트리거되고 앱 로직이 이벤트에 응답하면서, composable 함수가 필요한 경우 새 매개변수를 사용하여 자동으로 다시 호출돼.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxX8OL/btriBBwm5Jh/krJUR6BaJPtlsW4Kf3YxY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxX8OL/btriBBwm5Jh/krJUR6BaJPtlsW4Kf3YxY1/img.png&quot; data-alt=&quot;앱 로직에 의해 처리되는 이벤트를 트리거하여 UI 요소가 상호작용에 어떻게 응답하는지 보여주는 그림&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxX8OL/btriBBwm5Jh/krJUR6BaJPtlsW4Kf3YxY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxX8OL%2FbtriBBwm5Jh%2FkrJUR6BaJPtlsW4Kf3YxY1%2Fimg.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&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;앱 로직에 의해 처리되는 이벤트를 트리거하여 UI 요소가 상호작용에 어떻게 응답하는지 보여주는 그림&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a id=&quot;user-content-dynamic-content-동적-콘텐츠&quot; href=&quot;https://github.com/crazzero/TIL/blob/main/android/jetpack/compose/ComposeBase.md#dynamic-content-%EB%8F%99%EC%A0%81-%EC%BD%98%ED%85%90%EC%B8%A0&quot; aria-hidden=&quot;true&quot;&gt;&lt;/a&gt;Dynamic Content (동적 콘텐츠)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;composable 함수는 XML이 아닌 Kotlin으로 작성되기 때문에 다른 Kotlin 코드와 마찬가지로 동적일 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1635060362019&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun Greeting(names: List&amp;lt;String&amp;gt;) {
    for (name in names) { 
        Text(&quot;Hello $name&quot;) 
    } 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예시에서 함수는 이름 목록을 받아서 각 사용자에 대한 인사말을 생성하는데, composable 은 Kotlin 으로 작성되므로, if 문을 사용하여 특정 UI 요소를 표시할지 여부를 결정할 수 있고, 루프를 사용할 수도 있고, 다른 함수를 호출할 수도 있어.&lt;br /&gt;즉, 기본 언어의 유연성을 완전히 활용할 수 있다는 뜻이고, 이러한 성능과 유연성은 Jetpack Compose의 주요 이점 중 하나야&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;일단 여기까지해서 compose 의 개요에 대해서 알아봤어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음에는 compose 에서 중요 개념중 하나인 recomposition(재구성) 에 대해서 알아보려고 해~&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;확실히 선언형 UI Toolkit 은 요즘 대세가 되어가고 있는 것 같고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때문에, 장단점 과 제약사항등 개념을 확실히 잡고 가는게 중요한 것 같아!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다들 힘내자고~ 아자아자!!  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Android</category>
      <category>Android</category>
      <category>Compose</category>
      <category>개념</category>
      <category>컴포즈</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/184</guid>
      <comments>https://wellohorld.tistory.com/184#entry184comment</comments>
      <pubDate>Sun, 24 Oct 2021 14:41:42 +0900</pubDate>
    </item>
    <item>
      <title>Intellij 다운로드 받기 with MacOS</title>
      <link>https://wellohorld.tistory.com/183</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕, 형들~  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 Intellij 다운로드 받는 방법에 대해서 알아보고자 해.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용은 간단하니깐 바로 들어가보도록 하자구!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 아래 링크에 들어가면 오른쪽위에 다운로드 버튼을 찾을 수 있을거야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.jetbrains.com/ko-kr/idea/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.jetbrains.com/ko-kr/idea/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1634379209462&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.jetbrains.com&quot; data-og-source-url=&quot;https://www.jetbrains.com/ko-kr/idea/&quot; data-og-url=&quot;https://www.jetbrains.com/ko-kr/idea/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.jetbrains.com/ko-kr/idea/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.jetbrains.com/ko-kr/idea/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.jetbrains.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2536&quot; data-origin-height=&quot;404&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.13.43 PM.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRSjhB/btrhUXfghvA/lCrVgVrmj9GYJMMwWJ4URK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRSjhB/btrhUXfghvA/lCrVgVrmj9GYJMMwWJ4URK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRSjhB/btrhUXfghvA/lCrVgVrmj9GYJMMwWJ4URK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRSjhB%2FbtrhUXfghvA%2FlCrVgVrmj9GYJMMwWJ4URK%2Fimg.png&quot; data-origin-width=&quot;2536&quot; data-origin-height=&quot;404&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.13.43 PM.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;&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;Ultimate 버전이랑 Community 버전을 선택할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ultimate 쪽이 &lt;span style=&quot;color: #000000;&quot;&gt;HTTP 클라이언트, &lt;span style=&quot;color: #000000;&quot;&gt;JavaScript, TypeScript, HTML, CSS, Node.js, Angular, React, Vue.js, 데이터 베이스 도구, SQL, &lt;span style=&quot;color: #000000;&quot;&gt;Kubernetes 등&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;더 다양한 기능을 제공하고 있지만, Community 만으로도 Java, Kotlin 등 대략적인건 사용가능하니깐 Community 버전으로 받아보도록 하자~! &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2546&quot; data-origin-height=&quot;1068&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.14.34 PM.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBJFmM/btrhX1npoCR/As1MhYy65YbePusLk3HXNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBJFmM/btrhX1npoCR/As1MhYy65YbePusLk3HXNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBJFmM/btrhX1npoCR/As1MhYy65YbePusLk3HXNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBJFmM%2FbtrhX1npoCR%2FAs1MhYy65YbePusLk3HXNK%2Fimg.png&quot; data-origin-width=&quot;2546&quot; data-origin-height=&quot;1068&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.14.34 PM.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;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1910&quot; data-origin-height=&quot;838&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.17.25 PM.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bL4zpc/btrhXGi9B7I/emWC8PTm0KhNXunHasmej1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL4zpc/btrhXGi9B7I/emWC8PTm0KhNXunHasmej1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL4zpc/btrhXGi9B7I/emWC8PTm0KhNXunHasmej1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL4zpc%2FbtrhXGi9B7I%2FemWC8PTm0KhNXunHasmej1%2Fimg.png&quot; data-origin-width=&quot;1910&quot; data-origin-height=&quot;838&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.17.25 PM.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;&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;Application 폴더에 들어가서 Intellij 가 다운로드 된걸 확인할 수 있어!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brBW6r/btrhS0qlJ3V/Y5ikinRe2Rvykcrt4Ln3Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brBW6r/btrhS0qlJ3V/Y5ikinRe2Rvykcrt4Ln3Fk/img.png&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;650&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.18.38 PM.png&quot; style=&quot;width: 59.051%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brBW6r/btrhS0qlJ3V/Y5ikinRe2Rvykcrt4Ln3Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrBW6r%2FbtrhS0qlJ3V%2FY5ikinRe2Rvykcrt4Ln3Fk%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;910&quot; height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/emxcek/btrhTtlDmcg/rEPoqwzz7mb9i4qumcQKk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/emxcek/btrhTtlDmcg/rEPoqwzz7mb9i4qumcQKk1/img.png&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;282&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.21.01 PM.png&quot; style=&quot;width: 39.7862%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/emxcek/btrhTtlDmcg/rEPoqwzz7mb9i4qumcQKk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Femxcek%2FbtrhTtlDmcg%2FrEPoqwzz7mb9i4qumcQKk1%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;266&quot; height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/div&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 프로젝트를 생성하는 것 까지 해보자구?!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pM3Ek/btrhTdbXEnS/9CR98KenB5wiL1aYoflB91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pM3Ek/btrhTdbXEnS/9CR98KenB5wiL1aYoflB91/img.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;916&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.22.36 PM.png&quot; width=&quot;482&quot; height=&quot;368&quot; style=&quot;width: 49.444%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pM3Ek/btrhTdbXEnS/9CR98KenB5wiL1aYoflB91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpM3Ek%2FbtrhTdbXEnS%2F9CR98KenB5wiL1aYoflB91%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;1200&quot; height=&quot;916&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZBs9b/btrhZmkAkZl/sHYxvkC1t8loDsyEgkDdbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZBs9b/btrhZmkAkZl/sHYxvkC1t8loDsyEgkDdbk/img.png&quot; data-origin-width=&quot;1204&quot; data-origin-height=&quot;920&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.22.45 PM.png&quot; width=&quot;565&quot; height=&quot;432&quot; style=&quot;width: 49.3932%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZBs9b/btrhZmkAkZl/sHYxvkC1t8loDsyEgkDdbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZBs9b%2FbtrhZmkAkZl%2FsHYxvkC1t8loDsyEgkDdbk%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;1204&quot; height=&quot;920&quot;/&gt;&lt;/span&gt;&lt;/div&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;1594&quot; data-origin-height=&quot;1186&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.22.56 PM.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lY4cq/btrhWaEPamI/h5bLnzeFHxosNadpuRJUWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lY4cq/btrhWaEPamI/h5bLnzeFHxosNadpuRJUWk/img.png&quot; data-alt=&quot;New Project 눌러주고~&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lY4cq/btrhWaEPamI/h5bLnzeFHxosNadpuRJUWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlY4cq%2FbtrhWaEPamI%2Fh5bLnzeFHxosNadpuRJUWk%2Fimg.png&quot; data-origin-width=&quot;1594&quot; data-origin-height=&quot;1186&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.22.56 PM.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;New Project 눌러주고~&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NoNEs/btrhTcxlqxI/anXcHe5YTpO2yKDKlWPlKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NoNEs/btrhTcxlqxI/anXcHe5YTpO2yKDKlWPlKk/img.png&quot; data-origin-width=&quot;1602&quot; data-origin-height=&quot;1630&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.24.15 PM.png&quot; style=&quot;width: 49.4202%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NoNEs/btrhTcxlqxI/anXcHe5YTpO2yKDKlWPlKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNoNEs%2FbtrhTcxlqxI%2FanXcHe5YTpO2yKDKlWPlKk%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;1602&quot; height=&quot;1630&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPHpWh/btrhUXsPb9b/PHNC8kwwgVWlYHolQWNaKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPHpWh/btrhUXsPb9b/PHNC8kwwgVWlYHolQWNaKK/img.png&quot; data-origin-width=&quot;1596&quot; data-origin-height=&quot;1624&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.24.25 PM.png&quot; style=&quot;width: 49.417%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPHpWh/btrhUXsPb9b/PHNC8kwwgVWlYHolQWNaKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPHpWh%2FbtrhUXsPb9b%2FPHNC8kwwgVWlYHolQWNaKK%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;1596&quot; height=&quot;1624&quot;/&gt;&lt;/span&gt;&lt;/div&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 data-ke-size=&quot;size16&quot;&gt;짜잔~!! 이제 드디어 내부에 들어왔네.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다들 즐겁게 Intellij 와 함께 코딩해주길 바라~&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;2790&quot; data-origin-height=&quot;1532&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.24.46 PM.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1LJPI/btrhVrNTOAh/3iA1A4qIxArlVtQCNLKgik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1LJPI/btrhVrNTOAh/3iA1A4qIxArlVtQCNLKgik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1LJPI/btrhVrNTOAh/3iA1A4qIxArlVtQCNLKgik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1LJPI%2FbtrhVrNTOAh%2F3iA1A4qIxArlVtQCNLKgik%2Fimg.png&quot; data-origin-width=&quot;2790&quot; data-origin-height=&quot;1532&quot; data-filename=&quot;Screen Shot 2021-10-16 at 7.24.46 PM.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;</description>
      <category>IT Info</category>
      <category>IDE</category>
      <category>IntelliJ</category>
      <category>통합개발환경</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/183</guid>
      <comments>https://wellohorld.tistory.com/183#entry183comment</comments>
      <pubDate>Sat, 16 Oct 2021 19:29:44 +0900</pubDate>
    </item>
    <item>
      <title>웹사이트에서 온라인으로 gitignore 생성하기</title>
      <link>https://wellohorld.tistory.com/182</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕, 형들~  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git 으로 작업할 때, commit에 포함시키고 싶지 않을 때가 있을 거야.&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;commit 에 포함시키지 않기 위해서는 그 규칙을 해당 repository 최상위에 .gitignore 를 만들고&lt;br /&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;Itellij 기반의 좋은 IDE에서는 gitignore 파일을 내부에서 만들 수도 있고,&lt;br /&gt;AndroidStudio 등에서 프로젝트 생성시에 자동으로 gitignore 파일이 만들어지는 것을 확인할 수 있어.&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;br /&gt;이 문서에서는 온라인 웹사이트에서 gitignore 안에 들어갈 내용을 만드는 방법에 대해 소개해 줄까 해.&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;웹사이트에서 gitignore 파일 만들기&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.toptal.com/developers/gitignore&quot;&gt;toptal-gitignore&lt;/a&gt; 사이트에 접속한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;670&quot; data-filename=&quot;Screen Shot 2021-11-02 at 11.30.41 PM.png&quot; width=&quot;560&quot; height=&quot;255&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d339KT/btrjKvfVeA7/6j1HQxw5ZEKI8mSRkeXVTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d339KT/btrjKvfVeA7/6j1HQxw5ZEKI8mSRkeXVTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d339KT/btrjKvfVeA7/6j1HQxw5ZEKI8mSRkeXVTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd339KT%2FbtrjKvfVeA7%2F6j1HQxw5ZEKI8mSRkeXVTk%2Fimg.png&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;670&quot; data-filename=&quot;Screen Shot 2021-11-02 at 11.30.41 PM.png&quot; width=&quot;560&quot; height=&quot;255&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;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정확한 gitignore 파일 작성을 위해 아래 내용을 적어준다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OS (MacOS, Linux, Windows, etc...)&lt;/li&gt;
&lt;li&gt;IDEs (Visual Studio Code, Intellij, Android Studio, etc...)&lt;/li&gt;
&lt;li&gt;Programming Languages (Java, Kotlin, Python, etc...)&lt;/li&gt;
&lt;li&gt;Framework (OpenFrameworks, Firebase, etc...)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이렇게 추가해주고 난 후 create 버튼을 눌러주면, 새창이 열리면서 gitignore 파일에 집어넣을 내용이 나온다.&lt;/li&gt;
&lt;li&gt;해당 텍스트를 gitignore 파일에 넣기만 하면 된다.&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;이렇게만 해주면 나만을 위한 .gitignore 내용이 쫘라락 하고 나오게 되니깐 잘 확인해보고 사용하길 바래~&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>Tool/git</category>
      <category>git</category>
      <category>Gitignore</category>
      <category>깃</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/182</guid>
      <comments>https://wellohorld.tistory.com/182#entry182comment</comments>
      <pubDate>Sat, 16 Oct 2021 17:12:45 +0900</pubDate>
    </item>
    <item>
      <title>마크다운(Markdown) 기초부터 부숴보자</title>
      <link>https://wellohorld.tistory.com/181</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕, 형들~  &lt;br /&gt;오늘은 마크다운 사용법에 대해서 얘기해 보려고해~!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다들 마크다운이 뭔지는 알고 있겠지??&lt;br /&gt;확장자 파일보면 .md 로 박혀있는 애들 이 있을 텐데 얘네들을 마크다운이라고 하는데,&lt;br /&gt;서식이 있는 문서를 만들고 싶을 때 일반적으로 사용되고, 다른 마크업 언어에 비해 문법이 쉽고 간단해서 여러 곳에서 많이 사용되고 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히!! README.md 처럼 리드미나 온라인 게시물을 올리는 용도로 많이 사용되어지고 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 오늘은 기본 텍스트 에디터가 아닌 마크다운으로 포스팅을 넣어 보려고 해~&lt;br /&gt;그럼 가보자구!!  &lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;기본 텍스팅&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 마크다운의 섹션 구분은 엔터키 두번으로 표현할 수 있어.&lt;br /&gt;만약에 엔터키 한번 만 넣어주게 되면 아래처럼 문장이 같은 줄에 연달아 표시되게 돼.&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;마크다운&lt;/th&gt;
&lt;th&gt;결과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.&lt;/td&gt;
&lt;td&gt;1. 2. 3.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;마크다운&lt;/th&gt;
&lt;th&gt;결과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1.&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.&lt;/td&gt;
&lt;td&gt;1.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;2.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.&lt;/td&gt;
&lt;td&gt;3.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Heading(제목)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단, 제목은 &lt;code&gt;#&lt;/code&gt;을 넣어주어서 표현할 수 있어.&lt;br /&gt;이 &lt;code&gt;#&lt;/code&gt;의 갯수를 통해 단계설정이 가능하고 1단계 부터 6단계 까지 설정가능해~&lt;/p&gt;
&lt;h1&gt;h1&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;h2&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;h3&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;h4&lt;/h4&gt;
&lt;h5&gt;h5&lt;/h5&gt;
&lt;h6&gt;h6&lt;/h6&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Horizontal Rule(구분선)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구분선은 &lt;code&gt;===&lt;/code&gt;, &lt;code&gt;---&lt;/code&gt; 를 넣어서 표현할 수 있어.&lt;br /&gt;그리고 &lt;code&gt;===&lt;/code&gt; 바로 위에 텍스트가 있다면 heading1이 되고,&lt;br /&gt;&lt;code&gt;---&lt;/code&gt; 바로 위에 텍스트가 있다면 heading2가 되니깐 사용할 때 주의하는게 좋아.&lt;br /&gt;구분선만 따로 사용하고 싶다면 &lt;code&gt;---&lt;/code&gt; 위에 공백 한 줄씩 추가해주면 돼&lt;/p&gt;
&lt;h1&gt;Heading&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Sub-Heading&lt;/h2&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Text Style(글꼴)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Italic(이탤릭)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이탤릭 체는 &lt;code&gt;*텍스트*&lt;/code&gt;, &lt;code&gt;_텍스트_&lt;/code&gt; 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;텍스트&lt;/i&gt;&lt;br /&gt;&lt;i&gt;텍스트&lt;/i&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Bold(볼드)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;볼드 체는 &lt;code&gt;**텍스트**&lt;/code&gt;, &lt;code&gt;__텍스트__&lt;/code&gt; 를 넣어서 표현할 수 있어.&lt;br /&gt;그리고 &lt;code&gt;**_텍스트_**&lt;/code&gt; 처럼 해주면 볼드랑 이탤릭을 합칠 수 도 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;텍스트&lt;/b&gt;&lt;br /&gt;&lt;b&gt;텍스트&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Strikethrough(취소선)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;취소선은 &lt;code&gt;~~텍스트~~&lt;/code&gt; 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p&gt;&lt;del&gt;텍스트&lt;/del&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Underline(밑줄)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;취소선은 &lt;code&gt;&amp;lt;u&amp;gt;텍스트&amp;lt;/u&amp;gt;&lt;/code&gt; 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;텍스트&lt;/u&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;BreakLine(개행)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개행은 &lt;code&gt;&amp;lt;/br&amp;gt;&lt;/code&gt; 로 표현할 수 있어.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Quote(인용문)&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인용문은 &amp;gt;를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;List(목록)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Numbered List(순서있는 목록)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순서있는 목록은 &lt;code&gt;1.&lt;/code&gt;, &lt;code&gt;2.&lt;/code&gt; 과 같이 순서에 따른 숫자를 넣어서 표현할 수 있어.&lt;br /&gt;그리고 안에 하위 순서를 넣고 싶은 경우에는 해당 부분에서 &lt;code&gt;Tab&lt;/code&gt; 을 입력서 &lt;b&gt;단계&lt;/b&gt;를 표현할 수 있어.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫번 째 &lt;code&gt;1. 첫번 째&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;두번 째 &lt;code&gt;2. 두번 째&lt;/code&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두번 째의 첫번 째 &lt;code&gt;Tab&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Bullet List(순서없는 목록)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순서없는 목록을 표현하는 방법은 2개가 있는데, &lt;code&gt;*&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt; 를 넣어서 표현할 수 있어.&lt;br /&gt;그리고 순서있는 목록과 똑같이 하위 순서를 넣고 싶은 경우에도 해당 부분에 &lt;code&gt;Tab&lt;/code&gt;을 입력해서 &lt;b&gt;단계&lt;/b&gt;를 표현할 수 있어.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫번 째 &lt;code&gt;* 첫번 째&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;두번 째 &lt;code&gt;* 두번 째&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;첫번 째 &lt;code&gt;- 첫번 째&lt;/code&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫번 째의 첫번 째 &lt;code&gt;Tab&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Link(링크)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크는 &lt;code&gt;[내용](링크)&lt;/code&gt; 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://google.com&quot;&gt;구글&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://naver.com&quot;&gt;네이버&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://github.com&quot;&gt;깃헙&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Code(코드)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드는 밑에서 설명해보도록 할게&lt;/p&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;/* 코드를 아래처럼 넣어서 표현할 수 있어.
 * ` 코드 `
 **/&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Code-Block(코드블럭)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 블럭은 밑에서 설명해보도록 할게&lt;/p&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;/* 코드블럭을 아래처럼 넣어서 표현할 수 있어.
 * ``` kotlin
 * 코드내용
 * ```
 **/
private val number = 3&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;/* ``` java
 * 코드내용
 * ```
 **/
private int number = 3&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Table(표)&lt;/h2&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;학생번호&lt;/th&gt;
&lt;th&gt;이름&lt;/th&gt;
&lt;th&gt;나이&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;211001&lt;/td&gt;
&lt;td&gt;김철수&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;211002&lt;/td&gt;
&lt;td&gt;박영희&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;211003&lt;/td&gt;
&lt;td&gt;홍길동&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Image(이미지)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지는 &lt;code&gt;[![ImageTitle](ImageLink)](EmbeddingLink)&lt;/code&gt; 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 전체를 링크의 squared bracket 안에 넣으면 돼.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://example.com/&quot;&gt;&lt;img title=&quot;icon&quot; src=&quot;Icon-pictures.png&quot; alt=&quot;Image&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1634362554271&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Example Domain&quot; data-og-description=&quot;Example Domain This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission. More information...&quot; data-og-host=&quot;example.com&quot; data-og-source-url=&quot;http://example.com/&quot; data-og-url=&quot;http://example.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://example.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://example.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Example Domain&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Example Domain This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission. More information...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;example.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 글을 적을 때 사용한 마크다운 전문은 아래에 첨부해 놓을 테니깐 참고 부탁해~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 끝!!&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕, 형들~   &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 마크다운 사용법에 대해서 얘기해 보려고해~!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다들 마크다운이 뭔지는 알고 있겠지?? &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확장자 파일보면 .md 로 박혀있는 애들 이 있을 텐데 얘네들을 마크다운이라고 하는데, &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서식이 있는 문서를 만들고 싶을 때 일반적으로 사용되고, 다른 마크업 언어에 비해 문법이 쉽고 간단해서 여러 곳에서 많이 사용되고 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히!! README.md 처럼 리드미나 온라인 게시물을 올리는 용도로 많이 사용되어지고 있어.&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&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 가보자구!!  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;## 기본 텍스팅&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 마크다운의 섹션 구분은 엔터키 두번으로 표현할 수 있어. &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약에 엔터키 한번 만 넣어주게 되면 아래처럼 문장이 같은 줄에 연달아 표시되게 돼.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 마크다운 | 결과 |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| --- | --- |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 1. | &amp;nbsp; |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 2. | &amp;nbsp; |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 3. | 1. 2. 3. |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 마크다운 | 결과 |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| --- | --- |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 1. | &amp;nbsp; |&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;| 2. | 1. |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| &amp;nbsp; | 2. |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 3. | 3. |&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;## Heading(제목)&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&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 `#`의 갯수를 통해 단계설정이 가능하고 1단계 부터 6단계 까지 설정가능해~&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;# h1&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;## h2&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;### h3&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;#### h4&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;##### h5&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;###### h6&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;## Horizontal Rule(구분선)&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;그리고 `===` 바로 위에 텍스트가 있다면 heading1이 되고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;`---` 바로 위에 텍스트가 있다면 heading2가 되니깐 사용할 때 주의하는게 좋아.&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;Heading&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;Sub-Heading&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;---&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;===&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;## Text Style(글꼴)&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;### Italic(이탤릭)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이탤릭 체는 `*텍스트*`, `_텍스트_` 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*텍스트*&lt;/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;### Bold(볼드)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;볼드 체는 `**텍스트**`, `__텍스트__` 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 `**_텍스트_**` 처럼 해주면 볼드랑 이탤릭을 합칠 수 도 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;**텍스트** &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;__텍스트__&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;### Strikethrough(취소선)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;취소선은 `~~텍스트~~` 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;~~텍스트~~&lt;/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;### Underline(밑줄)&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;lt;u&amp;gt;텍스트&amp;lt;/u&amp;gt;` 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;u&amp;gt;텍스트&amp;lt;/u&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;### BreakLine(개행)&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;lt;/br&amp;gt;` 로 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;/br&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;### Quote(인용문)&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; 인용문은 `&amp;gt;`를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;## List(목록)&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;### Numbered List(순서있는 목록)&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.`, `2.` 과 같이 순서에 따른 숫자를 넣어서 표현할 수 있어. &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 안에 하위 순서를 넣고 싶은 경우에는 해당 부분에서 `Tab` 을 입력서 **단계**를 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;span&gt;&amp;nbsp; &lt;/span&gt;첫번 째 `1. 첫번 째`&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&lt;span&gt;&amp;nbsp; &lt;/span&gt;두번 째 `2. 두번 째`&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;1.&lt;span&gt;&amp;nbsp; &lt;/span&gt;두번 째의 첫번 째 `Tab`&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;### Bullet List(순서없는 목록)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순서없는 목록을 표현하는 방법은 2개가 있는데, `*`, `-` 를 넣어서 표현할 수 있어. &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 순서있는 목록과 똑같이 하위 순서를 넣고 싶은 경우에도 해당 부분에 `Tab`을 입력해서 **단계**를 표현할 수 있어.&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&gt;&amp;nbsp; &lt;/span&gt;첫번 째 `* 첫번 째`&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* &lt;span&gt;&amp;nbsp; &lt;/span&gt;두번 째 `* 두번 째`&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span&gt;&amp;nbsp; &lt;/span&gt;첫번 째 `- 첫번 째`&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;- &lt;span&gt;&amp;nbsp; &lt;/span&gt;첫번 째의 첫번 째 `Tab`&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;## Link(링크)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크는 `[내용](링크)` 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[구글](&lt;a href=&quot;https://google.com)&quot;&gt;https://google.com)&lt;/a&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[네이버](&lt;a href=&quot;https://naver.com)&quot;&gt;https://naver.com)&lt;/a&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[깃헙](&lt;a href=&quot;https://github.com)&quot;&gt;https://github.com)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;## Code(코드)&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;``` kotlin&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;span&gt;&amp;nbsp;&lt;/span&gt;* ` 코드 `&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;**/&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;```&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;## Code-Block(코드블럭)&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;``` kotlin&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;span&gt;&amp;nbsp;&lt;/span&gt;* ``` kotlin&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;* 코드내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;* ```&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;**/&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;private val number = 3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;```&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;```java&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/* ``` java&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;* 코드내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;* ```&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;**/&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;private int number = 3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;```&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;## Table(표)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 학생번호 | 이름 | 나이 |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| --- | --- | --- |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 211001 | 김철수 | 20 |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 211002 | 박영희 | 19 |&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;| 211003 | 홍길동 | 21 |&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;## Image(이미지)&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;이미지는 `[![ImageTitle](ImageLink)](EmbeddingLink)` 를 넣어서 표현할 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 이미지 전체를 링크의 squared bracket 안에 넣으면 돼.&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;Image&lt;/b&gt;](Icon-pictures.png &quot;icon&quot;)](&lt;a href=&quot;http://example.com)&quot;&gt;http://example.com)&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&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>Tool</category>
      <category>markdown</category>
      <category>MD</category>
      <category>readme</category>
      <category>깃헙</category>
      <category>마크다운</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/181</guid>
      <comments>https://wellohorld.tistory.com/181#entry181comment</comments>
      <pubDate>Sat, 16 Oct 2021 10:27:42 +0900</pubDate>
    </item>
    <item>
      <title>[Android] koin 적용시 에러 NoBeanDefFoundException  Check your definitions!</title>
      <link>https://wellohorld.tistory.com/180</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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕 형들~  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 koin 적용시에 definition 을 잘 적용하지 못해서 발생하는 NoBeanDefFoundException 에 처리해 보려고해!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;E/AndroidRuntime: FATAL EXCEPTION: main&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Process: [project], PID: 20588&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;java.lang.RuntimeException:&amp;nbsp;java.lang.reflect.InvocationTargetException&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Caused&amp;nbsp;by:&amp;nbsp;java.lang.reflect.InvocationTargetException&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;java.lang.reflect.Method.invoke(Native&amp;nbsp;Method)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Caused&amp;nbsp;by:&amp;nbsp;org.koin.core.error.NoBeanDefFoundException:&amp;nbsp;No&amp;nbsp;definition&amp;nbsp;found&amp;nbsp;for&amp;nbsp;class:'com.kwang0.di.feature.SecondContract$Presenter'.&amp;nbsp;Check&amp;nbsp;your&amp;nbsp;definitions!&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러로그를 보고 알 수 있는건 SecondContract Presenter 를 잘 정의해주지 못해서 생기는 문제라는데...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;singleton 으로 지정한 부분이 standAloneContext 로 되어있거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;startKoin 으로 모듈을 잘 정의해주고 있다고 생각했는데 parameter 를 잘 집어넣고 있지 않아서 그런거더라구!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 위와같은 에러가 발생했을 때 해결방법은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. (startKoin 의 import 를 StandAloneContext 로 설정해주고 있을 때) 이유는 잘 모르겠는데, stand alone context 를 사용해서 적용시킨 경우에 잘 반영 안되는 경우가 있어서 android 쪽 startKoin 으로 해주면 해결될거야~&lt;/p&gt;
&lt;pre id=&quot;code_1633842432805&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;From
import org.koin.standalone.StandAloneContext.startKoin

To
import org.koin.android.ext.android.startKoin&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. modules 안쪽에 연속으로 module 등이 들어가 있는지 확인해보고 각각 빼주면 될거야~&lt;/p&gt;
&lt;pre id=&quot;code_1633848238983&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val testModule = module {
    single&amp;lt;TestRepository&amp;gt; { TestRepositoryImpl() }
}

var appModules = arrayOf(
        testModule,
)

val modules = arrayOf(
    *appModules,
)

class DIApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        //...

        startKoin {
            androidLogger()
            androidContext(this@DIApplication)
            modules(
                *modules
            )
        }
    }
}&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Android</category>
      <category>Koin</category>
      <category>NoBeanDefFoundException</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/180</guid>
      <comments>https://wellohorld.tistory.com/180#entry180comment</comments>
      <pubDate>Sun, 10 Oct 2021 15:44:36 +0900</pubDate>
    </item>
    <item>
      <title>[Android] koin 적용시 에러 DefinitionOverrideException: Definition '[Factory:'kotlin.Unit']' try to override existing definition.</title>
      <link>https://wellohorld.tistory.com/179</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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕 형들~  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 koin 적용시에 module 을 잘 적용하지 못해서 발생하는&lt;span&gt; DefinitionOverrideException&lt;/span&gt;&amp;nbsp;에 처리해 보려고해!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;E/AndroidRuntime:&amp;nbsp;FATAL&amp;nbsp;EXCEPTION:&amp;nbsp;main&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Process: [project], PID: 24834&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;java.lang.RuntimeException: Unable to create application com.xxxxx.Application: org.koin.core.error.DefinitionOverrideException: Definition '[Factory:'kotlin.Unit']' try to override existing definition. Please use override option to fix it&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.ActivityThread.handleBindApplication(ActivityThread.java:7540)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.ActivityThread.access$1500(ActivityThread.java:301)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.ActivityThread$H.handleMessage(ActivityThread.java:2158)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.os.Handler.dispatchMessage(Handler.java:106)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.os.Looper.loop(Looper.java:246)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.ActivityThread.main(ActivityThread.java:8595)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;java.lang.reflect.Method.invoke(Native&amp;nbsp;Method)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;koin 그래프에 모듈이 없던지 있더라도 override 가 안되어있는 경우에 발생하는 에러인데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한번 정의된 koin 을 사용하는 경우에, loadKoinModules 를 사용하고 그 안에 들어가는 module 쪽에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(override = true) { single | factory } 를 설정해줘서 해당 에러를 피할 수 있으니깐 잘 적용시켰는지 확인해주길 바래~&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;아래는 Test 클래스가 있다고 할 때 loadKoinModules 을 이용해서 어떻게 override 시킬 수 있는지 적어본 거니깐 참고 해주면 좋겠어~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1633846630534&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;loadKoinModules(
  module(override = true) { newModule }
)

val newModule = single&amp;lt;Test&amp;gt; { Test() }&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Android</category>
      <category>DefinitionOverrideException</category>
      <category>Koin</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/179</guid>
      <comments>https://wellohorld.tistory.com/179#entry179comment</comments>
      <pubDate>Sun, 10 Oct 2021 15:18:38 +0900</pubDate>
    </item>
    <item>
      <title>[Android] koin 적용시 에러 KoinAppAlreadyStartedException: A Koin Application has already been started</title>
      <link>https://wellohorld.tistory.com/178</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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕 형들~  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 koin 적용시에 startKoin 을 알맞게 적용하지 못해서 발생하는 KoinAppAlreadyStartedException 에 처리해 보려고해!!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;E/AndroidRuntime:&amp;nbsp;FATAL&amp;nbsp;EXCEPTION:&amp;nbsp;main&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Process: [project],&amp;nbsp;PID:&amp;nbsp;22286&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;java.lang.RuntimeException:&amp;nbsp;Unable&amp;nbsp;to&amp;nbsp;start&amp;nbsp;activity&amp;nbsp;ComponentInfo{com.kwang0.di/com.kwang0.di.feature.SecondActivity}:&amp;nbsp;org.koin.core.error.KoinAppAlreadyStartedException:&amp;nbsp;A&amp;nbsp;Koin&amp;nbsp;Application&amp;nbsp;has&amp;nbsp;already&amp;nbsp;been&amp;nbsp;started&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3827)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4003)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.ActivityThread$H.handleMessage(ActivityThread.java:2317)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.os.Handler.dispatchMessage(Handler.java:106)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.os.Looper.loop(Looper.java:246)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.ActivityThread.main(ActivityThread.java:8595)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;java.lang.reflect.Method.invoke(Native&amp;nbsp;Method)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모듈을 지정하기 위해 startKoin 을 각각 다른 Android class 에서 해주게 되면 발생하는 에러고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결방법은 Application 모듈에 존재하는 startKoin 은 그대로 두고 다른쪽에서 시작시킨 startKoin 부분을 제거해주면 되니깐 다들 잘 처리할 수 있길 바래!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;186&quot; data-filename=&quot;Screen Shot 2021-10-10 at 2.57.44 PM.png&quot; width=&quot;602&quot; height=&quot;136&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfFHox/btrheZSkKjM/KyYHnw9hYa113dEWmUDxw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfFHox/btrheZSkKjM/KyYHnw9hYa113dEWmUDxw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfFHox/btrheZSkKjM/KyYHnw9hYa113dEWmUDxw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfFHox%2FbtrheZSkKjM%2FKyYHnw9hYa113dEWmUDxw0%2Fimg.png&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;186&quot; data-filename=&quot;Screen Shot 2021-10-10 at 2.57.44 PM.png&quot; width=&quot;602&quot; height=&quot;136&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;&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>Koin</category>
      <category>KoinAppAlreadyStartedException</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/178</guid>
      <comments>https://wellohorld.tistory.com/178#entry178comment</comments>
      <pubDate>Sun, 10 Oct 2021 14:58:35 +0900</pubDate>
    </item>
    <item>
      <title>[Android] Hilt 적용시에 implements 에러 해결 (AndroidEntryPoint or HiltAndroidApp to have a value)</title>
      <link>https://wellohorld.tistory.com/177</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕 형들~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kotlin version 1.5.20 에서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 Hilt 적용시에 아래와 같이 @AndroidEntryPoint, @HiltAndroidApp to have a value. 라고 뜨면서 에러가 발생할 때 해결방법을 알아보려고 해!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;error:&amp;nbsp;[Hilt]&lt;br /&gt;public final class MainActivity extends androidx.appcompat.app.AppCompatActivity implements [project].MainContract.View&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;^&lt;br /&gt;&amp;nbsp;&amp;nbsp;Expected&amp;nbsp;@AndroidEntryPoint&amp;nbsp;to&amp;nbsp;have&amp;nbsp;a&amp;nbsp;value.&amp;nbsp;Did&amp;nbsp;you&amp;nbsp;forget&amp;nbsp;to&amp;nbsp;apply&amp;nbsp;the&amp;nbsp;Gradle&amp;nbsp;Plugin?&amp;nbsp;(dagger.hilt.android.plugin)&lt;br /&gt;&amp;nbsp;&amp;nbsp;See&amp;nbsp;&lt;a href=&quot;https://dagger.dev/hilt/gradle-setup.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dagger.dev/hilt/gradle-setup.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; [1;31m[Hilt]&amp;nbsp;Processing&amp;nbsp;did&amp;nbsp;not&amp;nbsp;complete.&amp;nbsp;See&amp;nbsp;error&amp;nbsp;above&amp;nbsp;for&amp;nbsp;details. [0m&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;error:&amp;nbsp;[Hilt]&lt;br /&gt;public&amp;nbsp;final&amp;nbsp;class&amp;nbsp;App&amp;nbsp;extends&amp;nbsp;android.app.Application&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;^&lt;br /&gt;&amp;nbsp;&amp;nbsp;Expected&amp;nbsp;@HiltAndroidApp&amp;nbsp;to&amp;nbsp;have&amp;nbsp;a&amp;nbsp;value.&amp;nbsp;Did&amp;nbsp;you&amp;nbsp;forget&amp;nbsp;to&amp;nbsp;apply&amp;nbsp;the&amp;nbsp;Gradle&amp;nbsp;Plugin?&amp;nbsp;(dagger.hilt.android.plugin)&lt;br /&gt;&amp;nbsp;&amp;nbsp;See&amp;nbsp;&lt;a href=&quot;https://dagger.dev/hilt/gradle-setup.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://dagger.dev/hilt/gradle-setup.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; [1;31m[Hilt]&amp;nbsp;Processing&amp;nbsp;did&amp;nbsp;not&amp;nbsp;complete.&amp;nbsp;See&amp;nbsp;error&amp;nbsp;above&amp;nbsp;for&amp;nbsp;details. [0m&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 에러가 발생하는 부분은 dagger 의 문제라기 보다는 kotlin 쪽 kapt 관련해서 생기는 문제이고, 아래의 방식으로 해결할 수 있어  &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. kotlin version 을 낮춤 &amp;gt;&amp;gt; 1.5.20 에서 1.5.10 으로 낮추고 빌드해 보면 해당 에러가 사라지는 것을 볼 수 있어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. kotlin version 을 높임 &amp;gt;&amp;gt; 1.5.20 에서 1.5.21 로 높이기만 해도 해당 에러가 사라지고 해결 된 것을 볼 수 있어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 1.5.20 으로 사용하고 싶다면 &amp;gt;&amp;gt; 아래 코드를 추가해서 annotation 쪽에 추가로 설정 시킬 수도 있어&lt;/p&gt;
&lt;pre id=&quot;code_1633790613998&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;kapt {
    javacOptions {
        option(&quot;-Adagger.fastInit=ENABLED&quot;)
        option(&quot;-Adagger.hilt.android.internal.disableAndroidSuperclassValidation=true&quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;nbsp;&lt;/p&gt;</description>
      <category>Android</category>
      <category>1.5.20</category>
      <category>AndroidEntryPoint</category>
      <category>dagger</category>
      <category>Hilt</category>
      <category>HiltAndroidApp</category>
      <category>kotlin</category>
      <category>안드로이드</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/177</guid>
      <comments>https://wellohorld.tistory.com/177#entry177comment</comments>
      <pubDate>Sat, 9 Oct 2021 23:44:39 +0900</pubDate>
    </item>
    <item>
      <title>[Android] Android Gradle plugin requires Java 11 to run</title>
      <link>https://wellohorld.tistory.com/176</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕 형들~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근에 안드로이드 새로 받아보면 아래와 같이 빌드에러를 볼 수 있는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;410&quot; data-filename=&quot;Screen Shot 2021-08-28 at 6.06.10 PM.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JbigX/btrdo9yc1jT/DSCGKO2nYeKSxbqBLwSnTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JbigX/btrdo9yc1jT/DSCGKO2nYeKSxbqBLwSnTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JbigX/btrdo9yc1jT/DSCGKO2nYeKSxbqBLwSnTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJbigX%2Fbtrdo9yc1jT%2FDSCGKO2nYeKSxbqBLwSnTk%2Fimg.png&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;410&quot; data-filename=&quot;Screen Shot 2021-08-28 at 6.06.10 PM.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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 java 11 로 올리는 방법에 대해서 알아보려고 해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 File &amp;gt; Project Structure&amp;nbsp; 로 들어가서&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;398&quot; data-filename=&quot;Screen Shot 2021-08-28 at 6.08.06 PM.png&quot; width=&quot;532&quot; height=&quot;326&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHOT5F/btrdopaddBf/A7c00n1sYVCu4faV4JVaX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHOT5F/btrdopaddBf/A7c00n1sYVCu4faV4JVaX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHOT5F/btrdopaddBf/A7c00n1sYVCu4faV4JVaX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHOT5F%2FbtrdopaddBf%2FA7c00n1sYVCu4faV4JVaX1%2Fimg.png&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;398&quot; data-filename=&quot;Screen Shot 2021-08-28 at 6.08.06 PM.png&quot; width=&quot;532&quot; height=&quot;326&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;&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;SDK Location 탭 쪽에 Gradle Settings 쪽을 확인하면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1130&quot; data-origin-height=&quot;608&quot; data-filename=&quot;Screen Shot 2021-08-28 at 6.08.27 PM.png&quot; width=&quot;585&quot; height=&quot;315&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cY2Rzp/btrdptiRM0v/OdPi58PxknhOuF5wmam1RK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cY2Rzp/btrdptiRM0v/OdPi58PxknhOuF5wmam1RK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cY2Rzp/btrdptiRM0v/OdPi58PxknhOuF5wmam1RK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcY2Rzp%2FbtrdptiRM0v%2FOdPi58PxknhOuF5wmam1RK%2Fimg.png&quot; data-origin-width=&quot;1130&quot; data-origin-height=&quot;608&quot; data-filename=&quot;Screen Shot 2021-08-28 at 6.08.27 PM.png&quot; width=&quot;585&quot; height=&quot;315&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JDK version 을 &lt;span style=&quot;background-color: #e4e6e8; color: #242729;&quot;&gt;Embedded JDK&amp;nbsp;&lt;/span&gt; 로 변경해주기만 하면돼.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;354&quot; data-filename=&quot;Screen Shot 2021-08-28 at 6.08.35 PM.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/okfUr/btrdprZGoJk/pSBmKBA1utrkGUkE9L1Zd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/okfUr/btrdprZGoJk/pSBmKBA1utrkGUkE9L1Zd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/okfUr/btrdprZGoJk/pSBmKBA1utrkGUkE9L1Zd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FokfUr%2FbtrdprZGoJk%2FpSBmKBA1utrkGUkE9L1Zd1%2Fimg.png&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;354&quot; data-filename=&quot;Screen Shot 2021-08-28 at 6.08.35 PM.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;</description>
      <category>Android Studio</category>
      <category>JDK</category>
      <category>version</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/176</guid>
      <comments>https://wellohorld.tistory.com/176#entry176comment</comments>
      <pubDate>Sat, 28 Aug 2021 18:10:55 +0900</pubDate>
    </item>
    <item>
      <title>[Android] Unresolved reference: DaggerAppComponent</title>
      <link>https://wellohorld.tistory.com/175</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕 형들~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 Kotlin 으로 Dagger2 사용하다가 DaggerApplicationComponent 가 아래와 같이 찾을 수 없다고 떴을 때,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떻게 해결할 수 있는지 알아보려고 해.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;196&quot; data-filename=&quot;Screen Shot 2021-08-28 at 5.39.27 PM.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdYiMJ/btrdnj8HLBH/6QwM0QIRoAcvMk7GT0xvW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdYiMJ/btrdnj8HLBH/6QwM0QIRoAcvMk7GT0xvW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdYiMJ/btrdnj8HLBH/6QwM0QIRoAcvMk7GT0xvW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdYiMJ%2Fbtrdnj8HLBH%2F6QwM0QIRoAcvMk7GT0xvW1%2Fimg.png&quot; data-origin-width=&quot;1044&quot; data-origin-height=&quot;196&quot; data-filename=&quot;Screen Shot 2021-08-28 at 5.39.27 PM.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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와같은 상황이라면 십중팔구 &lt;span style=&quot;color: #292929;&quot;&gt;Annotaion processor 관련 문제이고, build.gradle(:app) 설정을 확인해보면 아래와같이 dagger 를 넣어준 부분이 있을거야. 이쪽에서 dagger-compiler kapt 부분 잘 넣었는지 확인해보면 좋을 것 같아~&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1630140200876&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    // Add dagger
    implementation &quot;com.google.dagger:dagger:2.12&quot;
    kapt &quot;com.google.dagger:dagger-compiler:2.12&quot;
    kapt &quot;com.google.dagger:dagger-android-processor:2.12&quot;
    implementation &quot;com.google.dagger:dagger-android-support:2.12&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그전에 plugins 안쪽에 아니면 &lt;b&gt;apply &lt;span style=&quot;color: #6a8759;&quot;&gt;plugin&lt;/span&gt;: &lt;span style=&quot;color: #6a8759;&quot;&gt;'kotlin-kapt'&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 를 잘 넣었는지 확인해 보기!! &lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1630140251106&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plugins {
    id 'kotlin-kapt'
    ...
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Android</category>
      <category>dagger</category>
      <category>DaggerAppComponent</category>
      <category>코틀린</category>
      <author>koucop</author>
      <guid isPermaLink="true">https://wellohorld.tistory.com/175</guid>
      <comments>https://wellohorld.tistory.com/175#entry175comment</comments>
      <pubDate>Sat, 28 Aug 2021 17:57:36 +0900</pubDate>
    </item>
  </channel>
</rss>