<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>이승현</title>
  <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd" />
  <author>
    <name>oemilk</name>
  </author>
  <subtitle>평범한 안드로이드 개발자입니다.</subtitle>
  <id>https://brunch.co.kr/@@1OLd</id>
  <updated>2016-04-21T09:27:39Z</updated>
  <entry>
    <title>Gradle Version Catalog - 새로운 버전 관리 방법</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/221" />
    <id>https://brunch.co.kr/@@1OLd/221</id>
    <updated>2023-05-07T01:54:07Z</updated>
    <published>2022-09-30T04:02:47Z</published>
    <summary type="html">Overview  Gradle 7.4 (2022.02) 부터 Version Catalog 라는 새로운 버전 관리 방법이 제공된다.   Previous  Multi module 프로젝트에서 dependency 버전을 공유하는 방법은 여러 가지가 있다.  ext block    dependencies.gradle ​ ​​  buildSrc  Gradle 이 수&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FzL8yw8pNc8Uiv6hTqA8u5lvh1kg.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Kotlin Unit, Nothing - Kotlin Unit 와 Nothing 를 알아보자</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/220" />
    <id>https://brunch.co.kr/@@1OLd/220</id>
    <updated>2023-11-09T07:17:55Z</updated>
    <published>2022-09-19T04:40:41Z</published>
    <summary type="html">Unit  `Unit` singleton instance 이자 Type (Java 의 `void` 에 대응하는 개념)   `Unit` 은 Java 의 `void` 와 두 가지 차이점이 있다.  1. Type 이면서 singleton instance 이다.  2. Any 의 서브 클래스이다.   Nothing  어떠한 값(value)도 없고, instance&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FutG_rYdIlHM2t3Af46e1NBfyVT8.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Android D8, R8</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/219" />
    <id>https://brunch.co.kr/@@1OLd/219</id>
    <updated>2022-09-14T02:35:20Z</updated>
    <published>2022-09-13T23:54:24Z</published>
    <summary type="html">Overview   Android compiler D8, R8 에 대해 알아본다. D8 :&amp;nbsp;https://developer.android.com/studio/command-line/d8?hl=ko R8 :&amp;nbsp;https://developer.android.com/studio/build/shrink-code?hl=ko   Legacy    Desugaring  &lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FPFDRa1m5klqO-a9u8zLSVzH2aM4.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>앱 아키텍처 가이드 - 구글의 가이드를 읽고..</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/218" />
    <id>https://brunch.co.kr/@@1OLd/218</id>
    <updated>2023-08-08T12:30:07Z</updated>
    <published>2022-09-08T07:59:29Z</published>
    <summary type="html">Overview  구글에서 권장하는 '앱 아키텍처 가이드' 를 살펴하고, 샘플들을 비교해본다.    모바일 앱 사용자 환경  OS 에 의해 언제든지 앱 프로세스가 종료될 수 있다. &amp;rarr; 이러한 이벤트는 직접 제어할 수 없다. &amp;rarr; 앱 구성요소에 데이터나 상태를 저장해서는 안되며, 서로 종속되면 안 된다.   일반 아키텍처 원칙  앱을 확장하고 견고성을 높이며,&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FGmzRe6pynyf6davz2a8SEJm4nqs.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Kotlin 면접 질문 #03 - Kotlin interview questions</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/217" />
    <id>https://brunch.co.kr/@@1OLd/217</id>
    <updated>2022-02-07T04:11:44Z</updated>
    <published>2022-02-07T00:48:09Z</published>
    <summary type="html">paulfranco https://gist.github.com/paulfranco/4453383cc6df064d03087ce7aa5a0c8c   Question #01 What is a primary constructor in Kotlin? (primary 생성자?)  Answer  primary 생성자는 클래스 헤더의 일부분이다. Java 와 달리 클래스</summary>
  </entry>
  <entry>
    <title>Kotlin 면접 질문 #02 - Kotlin interview questions</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/216" />
    <id>https://brunch.co.kr/@@1OLd/216</id>
    <updated>2022-04-16T09:26:18Z</updated>
    <published>2022-01-27T23:21:24Z</published>
    <summary type="html">InterviewBit  https://www.interviewbit.com/kotlin-interview-questions/#freshers   Question #01 How are variables declared in Kotlin? (Kotlin 에서 변수 선언 방법은?)  Answer  Immutable variables read-only 변수라고도&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2F5uheJ5BgF04-MEUFUBGX8ZwPw8A.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Kotlin 면접 질문 #01 - Kotlin interview questions</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/215" />
    <id>https://brunch.co.kr/@@1OLd/215</id>
    <updated>2022-02-01T03:03:35Z</updated>
    <published>2022-01-26T00:01:33Z</published>
    <summary type="html">Journaldev https://www.journaldev.com/20567/kotlin-interview-questions   Question #01 What&amp;rsquo;s the Target Platform of Kotlin? How is Kotlin-Java interoperability possible? (Kotlin 의 타겟 플랫폼은? Kotlin-Java</summary>
  </entry>
  <entry>
    <title>2019년 회고 - 브런치 세 번째 회고</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/214" />
    <id>https://brunch.co.kr/@@1OLd/214</id>
    <updated>2020-10-31T14:12:53Z</updated>
    <published>2019-12-29T23:34:53Z</published>
    <summary type="html">2019년 회고  작년에 이어 세 번째 회고입니다. 정말 오랜만에 글을 쓰네요.  https://brunch.co.kr/@oemilk/198   2019년 목표    #01 Effective Java 3판 정리   책이 나오자마자 3판에 추가된 내용들을 정리해서 올렸습니다. 올해 목표 중 유일하게 제일 잘한 부분이지 않을까 싶네요.  요즘은 Kotlin으로&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2F2ylxpl0wJuxNt6LZBoKOfjKDuKw.jpeg" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Write The Docs 서울의 2019 밋업 후기 - Write The Docs 서울의 2019 첫 번째 밋업</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/213" />
    <id>https://brunch.co.kr/@@1OLd/213</id>
    <updated>2020-08-15T16:36:25Z</updated>
    <published>2019-04-01T00:52:22Z</published>
    <summary type="html">https://festa.io/events/191  3월 23일 토요일에 Write The Docs 서울에서 주최한 Write The Docs 서울의 2019 첫 번째 밋업에 다녀왔습니다.  기술 블로그 작성, 운영, 홍보 등, 기술 블로그와 관련된 내용들로 이루어진 행사였습니다.  기존에 다녔던 구글, 안드로이드 세미나와 다른 내용들이라&amp;nbsp;신선했고, 오랫동&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FqYwZjy2iU-j1C91RhOUN0T91PiM.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Android Paging Library - Android Jetpack Navigation</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/211" />
    <id>https://brunch.co.kr/@@1OLd/211</id>
    <updated>2019-12-11T16:00:02Z</updated>
    <published>2019-03-25T00:03:00Z</published>
    <summary type="html">대량의 데이터 중&amp;nbsp;필요한 데이터만 표시하는 UI를&amp;nbsp;구현해야 하는 경우가 많습니다.  데이터가 계속해서 업데이트되거나&amp;nbsp;표시하는 UI 이벤트들로 인해 둘 사이의 sync를 맞추기가 어려워질 수 있습니다. 이는 결국 사용자의 리소스를 낭비하게 됩니다.   필요에 따라 데이터 소스에서 정보를 점진적으로 로드합니다.  Paging Library는 한 번에 필요한 데&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FKKxVxDzOWHV4eZqsAUxi5qrgwTY.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Android Navigation - Android Jetpack Navigation</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/210" />
    <id>https://brunch.co.kr/@@1OLd/210</id>
    <updated>2019-08-04T16:00:02Z</updated>
    <published>2019-03-18T00:09:47Z</published>
    <summary type="html">인앱 탐색에 필요한 모든 것을 처리합니다.  Navigation은 앱 내의 화면 전환을 좀 더 쉽게 구현하고 화면 흐름을 시각화해서 볼 수 있도록 해주는 프레임워크입니다.  기존의 startActivity()나 FragmentManager를 이용한 화면 전환 구현이 좀 더 단순해졌습니다.  그리고&amp;nbsp;코드를 직접 분석해야만 했던 화면 흐름도 시각화해서 제공하고&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2F8dxYPRQ2Vsys3njp-tCYMijfEyY.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Effective Java3/E - 람다와 스트림 - #48 스트림 병렬화는 주의해서 적용하라</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/209" />
    <id>https://brunch.co.kr/@@1OLd/209</id>
    <updated>2019-03-12T01:09:22Z</updated>
    <published>2019-03-11T00:21:22Z</published>
    <summary type="html">Effective Java 3/E&amp;nbsp;- 람다와 스트림  #48 스트림 병렬화는 주의해서 적용하라   스트림은 parallel 메서드만 호출하면 자동으로 병렬 실행할 수 있는 스트림을 지원하고 있습니다.  사용하기는 쉽지만 주의할 점들이 있습니다.   #01 스트림 병렬화가 성능에 미치는 영향   위 코드는 메르센 소수를 구하는 코드를 스트림 병렬화로 처리하고&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FrxsyBCFb3nG-jGD8xb44xoSlKzk.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Effective Java3/E - 람다와 스트림 - #47 반환 타입으로는 스트림보다 컬렉션이 낫다</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/208" />
    <id>https://brunch.co.kr/@@1OLd/208</id>
    <updated>2019-03-15T03:58:48Z</updated>
    <published>2019-03-04T00:00:22Z</published>
    <summary type="html">Effective Java 3/E&amp;nbsp;- 람다와 스트림  #47 반환 타입으로는 스트림보다 컬렉션이 낫다   Collection interface, Iterable interface, Array 반복문을 처리하기 위해서는 for-each를 이용할 수 있습니다. Stream 반복문을 처리하기 위해서는 forEach(Consumer&amp;lt;? super T&amp;gt; action&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2Fg3JbSyKYj3Rzz8hmRe7LpcdQqQk.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Effective Java3/E - 람다와 스트림 - #46 스트림에서는 부작용 없는 함수를 사용하라</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/207" />
    <id>https://brunch.co.kr/@@1OLd/207</id>
    <updated>2019-02-25T00:03:27Z</updated>
    <published>2019-02-25T00:03:27Z</published>
    <summary type="html">Effective Java 3/E&amp;nbsp;- 람다와 스트림  #46 스트림에서는 부작용 없는 함수를 사용하라  스트림에서는 순수 함수(Pure function)를 이용해야 합니다. 오직 입력만이 결과에 영향을 주는 함수 다른 가변 상태를 참조하지 않고, 함수 스스로도 다른 상태를 변경하지 않음  이를 위해서는 부작용(side effect)이 없는 함수를 이용해야 &lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2Fm1AcSPgmAVl0u3uiuRVzHeZNR_E.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Effective Java3/E - 람다와 스트림 - #45 스트림은 주의해서 사용하라</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/206" />
    <id>https://brunch.co.kr/@@1OLd/206</id>
    <updated>2019-03-12T14:02:05Z</updated>
    <published>2019-02-18T00:07:46Z</published>
    <summary type="html">Effective Java 3/E&amp;nbsp;- 람다와 스트림  #45 스트림은 주의해서 사용하라  Java 8에서 다량의 데이터 처리 작업을 돕고자 Stream API가 추가되었습니다.  스트림 API는 메서드 연쇄를 지원하는 Fluent API입니다. Fluent는 한글로 &amp;quot;유창한&amp;quot;이라는 의미를 가지고 있습니다.코드를 작성하면, 마치 영어 문장처럼 잘 읽히는 AP&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FuYzLuwd3QTlvsh1hiTG7bNwW52I.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Effective Java3/E - 람다와 스트림 - #44 표준 함수형 인터페이스를 사용하라</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/205" />
    <id>https://brunch.co.kr/@@1OLd/205</id>
    <updated>2019-02-12T22:44:30Z</updated>
    <published>2019-02-11T00:35:18Z</published>
    <summary type="html">Effective Java 3/E&amp;nbsp;- 람다와 스트림  #44 표준 함수형 인터페이스를 사용하라  표준 함수형 인터페이스를 사용해야 하는 이유에 대해 알아보겠습니다. ​ ​ ​#01 java.util.LinkedHashMap#removeEldestEntry(Map.Entry&amp;lt;K, V&amp;gt; eldest) ​ ​ LinkedHashMap 클래스의 removeElde&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2F_DFrydweq9PeOWK-Y0W1v3uy7ZY.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Effective Java3/E - 람다와 스트림 - #43&amp;nbsp;람다보다는 메서드 참조를&amp;nbsp;&amp;nbsp;사용하라</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/204" />
    <id>https://brunch.co.kr/@@1OLd/204</id>
    <updated>2019-02-04T04:32:21Z</updated>
    <published>2019-02-04T01:10:05Z</published>
    <summary type="html">Effective Java 3/E&amp;nbsp;- 람다와 스트림  #43 람다보다는 메서드 참조를 사용하라  이전 장에서는 익명 클래스보다 람다를 사용하라고 했는데, 이번엔 람다보다 메서드 참조(method reference)를 사용하라고 합니다.  메서드 참조를 이용했을 때 장점에 대해 알아보겠습니다.   #01 메서드 참조 장점   Map 인터페이스에서는 merge&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FqCKoSP7Uuu-c2npZSfn4oaCSctg.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>안드로이드 개발자 이직 면접 (지인) - 기술 면접</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/195" />
    <id>https://brunch.co.kr/@@1OLd/195</id>
    <updated>2022-02-01T03:06:41Z</updated>
    <published>2019-01-30T03:20:05Z</published>
    <summary type="html">이직 면접 (지인) - 기술 면접  Activity 생명 주기 Activity, Fragment 차이 Activity 하위 호환성, 어떤 패키지에 있는지 View 생명 주기 onActivityResult linear / relative / constraint&amp;nbsp;layout 차이, 성능 비교 ListView / RecyclerView&amp;nbsp;차이 Service / I</summary>
  </entry>
  <entry>
    <title>Effective Java3/E - 람다와 스트림 - #42 익명 클래스보다는 람다를 사용하라</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/203" />
    <id>https://brunch.co.kr/@@1OLd/203</id>
    <updated>2019-02-01T12:58:12Z</updated>
    <published>2019-01-28T00:44:32Z</published>
    <summary type="html">Effective Java 3/E&amp;nbsp;- 람다와 스트림  #42 익명 클래스보다는 람다를 사용하라   Java 8 이전에는&amp;nbsp;하나의 추상 메서드만 담은 인터페이스나 추상 클래스를&amp;nbsp;함수 타입이라 표현했습니다. 함수 타입을 인스턴스화 하면 함수 객체가 되고, 이를&amp;nbsp;익명 클래스를 통해서 구현할 수 있습니다.    Java 8에서는&amp;nbsp;하나의 추상 메서드만 담은 인터페이스&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2FEIVdmUGSD5aVem33luhvc_zO-lw.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>Effective Java3/E - 제네릭 - #32 제네릭과 가변 인수를 함께 쓸 때는 신중하라</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@1OLd/202" />
    <id>https://brunch.co.kr/@@1OLd/202</id>
    <updated>2019-01-21T06:32:20Z</updated>
    <published>2019-01-20T23:58:10Z</published>
    <summary type="html">Effective Java 3/E&amp;nbsp;- 제네릭  #32 제네릭과 가변 인수를 함께 쓸 때는 신중하라   &amp;quot;제네릭과 가변 인수를 함께 쓸 때는 신중하라&amp;quot;는 결국 &amp;quot;제네릭과 가변 인수(배열)를 함께 쓸 때는 신중하라&amp;quot;라는 의미를 나타냅니다.  위 코드에서 보듯이, 자바에서는 기본적으로 제네릭 배열(T[]) 직접 생성을 허용하지 않습니다. Super 클래스 - S&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F1OLd%2Fimage%2F3VJexvDUSBhs-dyLeTzDrC_FjK8.png" width="500" /&gt;</summary>
  </entry>
</feed>
