일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- theming
- 안드로이드강좌
- 알게되는
- Kotlin
- mockito
- Gradle
- 회고
- Compose
- 커스텀상태
- 스레드
- 안드로이드
- Coroutine
- 안드로이드스튜디오
- 코틀린
- ReactiveProgramming
- 디자인패턴
- viewmodel
- 병럴프로그래밍
- android
- 테스트
- 알고리즘
- 책
- kotlin강좌
- Rxjava
- g 단위테스트
- 자바
- 글또
- 병렬프로그래밍
- k8s
- 코루틴
- Today
- Total
목록전체 글 (154)
선생님, 개발을 잘하고 싶어요.

도입 뷰를 enabled, checked 여부에 따라서 다른 리소스를 사용해서 보여줘야 하는 경우가 많다. 이런 경우 우리는 selector를 활용한다. enabled, checked와 같이 안드로이드 플랫폼에서 미리 정의된 상태에 대해서는 이미 편하게 selector를 만들고 사용하지만 개발을 하다보면 새로운 요구 사항을 만족하는 화면을 그려야 할 때가 있다. 가령 예를 들어 TextField의 내용에 에러가 있을 때는 빨간 테두리를 그려주고 그러지 않을 때는 검은 테두리를 그려야 하는 요구사항이 있을 수 있다. 하지만 state_enabed는 있어도 state_error와 같은 커스텀 상태는 존재하지 않는다. 이번 포스팅에서는 이러한 커스텀 상태를 정의하고 사용하는 가이드를 보여주려고 한다. 작업하기..

도입 어떤 프로젝트를 해도 사용자 인증은 중요한 키워드다. 그리고 사용자의 쉬운 접근을 위해서는 소셜 로그인 지원은 거의 필수적이다. 이번에는 카카오 로그인에 대해서 a-to-z까지 따라만 하면 성공하는 형태로 포스팅을 쓴다. (유용한 gists 도 제공한다!) 절차 준비물 카카오 로그인을 설정하기 위해선 다음을 미리 준비하자. 카카오 개발자 계정 카카오 로그인 적용을 위한 안드로이드 프로젝트 카카오 디벨로퍼 페이지에서 준비하기 카카오 디벨로퍼 페이지에서 사용할 애플리케이션을 등록하자. https://developers.kakao.com/console/app 애플리케이션 추가하기 버튼을 눌러준다. 앱 이름, 사업자명을 지정한 다음 저장하기를 누른다. SampleOauthLogin 애플리케이션이 추가된 걸..

다루는 거 코틀린 제네릭과 자바 제네릭의 유사한 부분 런타임 파라미터 타입 소거 - type erasure 실체화된 타입 파라미터 - reified type 타입 파라미터의 상위하위 관계에 따른 두 제네릭 타입의 상위하위 관계, 변성 - variance: 변성 → 타입 인자의 상하 관계에 따라 제네릭 타입의 상하 관계가 어떻게 처리되는가? 에 대한 개념 invariant: 무변성 → 타입 인자의 상하 관계가 제네릭 타입의 상하 관계와 관련 없음 covariant: 공변성 → 타입 인자의 상하 관계가 제네릭 타입의 상하 관계와 같음 contravariance: 반공변성 → 타입 인자의 상하 관계와 제네릭 타입의 상하 관계가 역전됨 선언 지점 변성 - declaration-site variance 사용 지점..

다루는 거 고차 함수: 람다를 인자로 받거나 반환하는 함수 인라인 함수 비로컬 return, 레이블, 로컬 return 무명 함수 고차함수 다른 함수를 인자로 받거나 함수를 반환하는 함수 코틀린으로 말하면, 람다나 함수 참조를 인자로 넘길 수 있거나 람다나 함수 참조를 반환하는 함수 코틀린에서 함수 변수 표현을 하기 위해서 람다, 함수 참조를 사용한다고 5장에서 말함. 인자로 받은 함수를 호출하는 구문은 일반 함수를 호출하는 구문과 같다. 컴파일된 코드에서 함수 타입은 일반 인터페이스로 표시된다. Function0, Function1 … 함수 타입 파라미터도 디폴트 값을 지정하거나 nullable 함수 타입을 만들 수 있다. 변수, 프로퍼티, 파라미터 등을 사용해 데이터 중복을 없애는 것과 같이, 람다를..

2부의 목적 코틀린으로 자신의 API를 만드는 법을 배운다. 프로그램 안에서 상호작용하는 클래스가 둘 이상이라면 다른 클래스에게 API를 제공하는 클래스가 적어도 하나 이상이므로, 라이브러리 개발자가 아니더라도 중요한 내용이다. 다루는 것 특정 함수 이름과 연관된 관례 (convention) 위임 프로퍼티 관례 operator 키워드를 붙임으로써 어떤 함수가 관례를 따르는 함수임을 명확히 한다. operator 없이 관례에서 사용하는 함수 이름을 쓴다면 컴파일러가 알려준다. 멤버 함수 뿐 아니라 확장 함수로도 operator 연산자를 정의할 수 있다. 산술 연산자 오버로딩 프로그래머가 직접 연산자를 만들어 사용할 수 없고 언어에서 미리 정해둔 연산자만 오버로딩할 수 있다. 클래스에서 정의해야하는 이름이 ..

다루는 거 Nullable Type 안전한 호출 ?. 엘비스 연산자 ?: 널 아님 단언 !! ?.let { } as? 원시 타입 Any, Any? 타입 Unit 타입 Nothing 타입 읽기 전용 컬렉션 플랫폼타입 널 가능성 코틀린은 null에 대한 접근 시 발생 가능한 NPE 문제를 런타임 에러에서 컴파일 타임 에러로 옮기려고 한다. 널이 될 수 있는지 여부를 타입 시스템에 추가해서 컴파일러가 여러 오류를 컴파일 시 미리 감지하는 기법을 도입한다. 코틀린과 자바의 가장 중요한 차이는 코틀린 타입 시스템이 널이 될 수 있는 타입을 명시적으로 지원한다는 점이다. 코틀린에서 String 타입의 의미는 이 변수가 런타임에 절대로 null이 아니라는 걸 장담한다는 것, 즉 NPE가 발생되지 않을 것이라는 걸 장..

다루는 거 람다 멤버 참조 컬렉션 라이브러리 코틀린 시퀀스 함수형 인터페이스, SAM 인터페이스 수신 객체 지정 람다 (with, apply) 행동을 변수로 저장하거나 함수 인자로 넘기기: 람다(lambda) 와 멤버 참조(member reference) 람다 코틀린은 함수를 값처럼 다루는 방식을 선택했다. 함수를 직접 다른 함수에 전달할 수 있다. 예시로 컬렉션을 다룰 때 수행하는 대부분의 작업은 몇 가지 일반적 패턴에 속하고 이 패턴은 라이브러리로 제공된다. 컬렉션으로 수행하는 일반적인 알고리즘을 구성하고 람다를 인자로 받아서 재활용할 수 있게 되었다. 람다나 멤버 참조를 인자로 받는 함수를 통해 개선한 코드는 더 짧고 더 이해하기 쉽다. people.maxBy { it.age } // 람다로 넘기기..

다루는 거 코틀린과 자바의 클래스 선언 차이 기본적으로 final public 의도적 상속가능성 open 모듈 레벨 가시성 internal 바깥 클래스 참조를 포함하는 중첩 클래스는 inner 같은 파일에서만 상속이 가능한 sealed 프로퍼티의 뒷받침 필드 참조를 위한 field data class 클래스 위임으로 보일러 플레이트 코드 줄이기 object 싱글턴 companion object 무명 내부 클래스 클래스 계층 정의 코틀린 인터페이스는 자바 8 인터페이스와 비슷하다. 구현이 있는 메서드도 정의할 수 있다. 자바 8의 디폴트 메서드와 비슷하다. interface 키워드로 정의한다. 클래스 이름 뒤에 콜론(:)을 붙히고 인터페이스와 클래스 이름을 적는 것이 끝 상위 클래스나 인터페이스에 있는 프..