반응형
Kotlin은 왜 파일 내에 class 선언이 없을까?
Android, iOS 2021. 1. 9. 21:06

같이 공부하는 친구들끼리 얘기하다가 나온 이슈. Intellij에서 Java로 코드를 만들 때와 kotlin으로 코드를 만들 때, main 함수의 모습이 왜 다를까? 우선 아래 코드를 보자. // Java : Sample.java public class Sample { public static void main(String[] args) { // blah blah } } // Kotlin : Sample2.kt fun main(args: Array) { // blah blah } 자바 코드는 내부에 클래스를 선언하는 부분이 있다. 그 내부에 main 함수가 있다. 하지만 코틀린은 클래스를 별도로 선언하는 부분이 없다. 자바에서는 Sample을 객체화하려면 이 선언이 필수다. 그러면 코틀린은 이 선언이 없..

RxKotlin을 공부하면서 이해하지 못한 개념 정리
Android, iOS 2020. 12. 13. 20:56

요즘 Rx를 공부하고 있다. "요즘 핫하다", "트렌드"다라고 하기에는 실무에서는 어느 정도 당연하게 쓰고 있다. 늦은 감은 있지만 더 늦는 것보다 지금이라도 공부하자 싶어서 [코틀린 리액티브 프로그래밍]이라는 책을 보고 있다. 이 서적은 요 근래 서적중 가장 마음에 드는 IT 서적이기에 학습이 끝날 때 리뷰도 꼭 하고 싶다. (물론 아직 절반도 보지 못해서 뒷장 공부할 때 마음이 바뀔 수 있다.) 아무리 괜찮은 서적이라도 내 기반 지식이 모자라면 이해하지 못하는 포인트가 생긴다. 학습중 이해하지 못한 개념을, 일종의 중간 점검이라고 생각하면서 작성해본다. 1. 코루틴의 async와 await Rx를 학습하고 있어서 코루틴도 추가적으로 학습을 했다. 하지만 Rx를 위한 보조 학습으로 코루틴에 접근을 해서..

내가 Rx를 공부하기 전에 궁금했던 것들
Android, iOS 2020. 11. 29. 23:56

요즘 안드로이드에서 비동기 처리를 할 때, 코루틴과 Rx를 제일 많이 다룬다. 특히 Rx가 실무에서 더 많이 쓰이는 분위기라서 조금 공부를 해 보았다. 그러면서 기술적 혹은 비기술적인 궁금증이 몇개 생겼다. 1. Rx는 프론트엔드 개발에서만 사용될까? No. ReactiveX 홈페이지를 가보면 "ReactiveX is everywhere, and it's meant for everything."이라고 나타나 있으며 아래의 이미지를 볼 수 있다. 즉, 백엔드와 크로스 플랫폼까지 다양한 곳에서 이용되고 있다. 2. 리액티브 프로그래밍(Rx)는 리액트(React)와 어떤 관계일까? 비슷하면서도 다르다. (피드백을 받아 수정한다. 걍 다르다!!) 마치 Java와 Javascript가 다른 것처럼. 리액티브(Rx..

코틀린의 장점. 그만 좀 물어봐!!
Android, iOS 2020. 11. 15. 14:57

자고로 제목은 (적당히) 자극적으로 쓰는게 재밌다. 지나친 어그로가 아니라면 조회수도 오르고 쓰고 읽는 맛도 나니깐. 이번 제목은 단순한 어그로는 아니다. 개발자끼리 대화, 구직중 면접 등에서 코틀린의 장점을 수도 없이 물어보고 답하게 된다. 지난 1년간 수십번은 이 얘기를 한 것 같다. 그래서 누군가 물어볼 때 차라리 보고 읽도록 정리를 하려고 포스팅 소재를 "코틀린의 장점"으로 정했다. 자잘해보이는 장점도 다루고자 한다. 이번 글은 요즘 필자가 공부하는 서적인 "코틀린 프로그래밍 쿡북"을 많이 참고 하였다. 구글이 안드로이드 개발을 위한 공식언어로 코틀린을 지정했다. 기술적 접근이 아니지만 구글이 채택했다는 것은 장점으로서 매우 큰 부분이다. 안드로이드는 전세계 모바일 환경을 양분하는 시장 중 하나이..

내가 Dagger2를 공부한 방법
Android, iOS 2020. 9. 22. 16:11

TL;DR(이라고 쓰고 요약이라고 읽는다.) 이해가 안가더라도 직접 적용해보고 아래 링크로 걸어둔 자료같은 것을 많이 읽어봐야 한다. 무려 1달 넘게... DI, 그리고 Dagger를 공부하고 있다. 물론 아직도 이게 정확히 무엇이다라고는 말하지 못하겠다. 제대로 사용하라고 하면 솔직히 자신은 없으나 어떻게 꾸역꾸역 머리에 집어 넣는 중이다. 겨우 이해한 것도 있고 아닌 것도 있는데 이렇게 고생하는 부들이 있지 않을까해서 내가 Dagger를 공부하다가 알게된 좋은 것들을 공유해볼까 한다. 1. 책으로 공부했다. 안드로이드 개발자들에게 유명한 "찰스". 그 닉네임을 사용하시는 옥수환님께서 올해 발간한 책이다. Dagger뿐만 아니라 Jetpack 등을 설명하고 있다. DI 개념도 모르고 바로 Dagger를..

Gradle을 업데이트하고 나서 빌드가 안된다?? (DefaultKotlinSourceSetKt 이슈)
Android, iOS 2020. 6. 8. 14:58

최근 안드로이드 스튜디오를 업데이트한 뒤 아래와 같은 메시지와 함께 빌드가 되지 않는 상황을 맞이 했다. Could not initialize class org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetKt 업데이트 정보는 다음과 같다. // build.gradle classpath 'com.android.tools.build:gradle:4.0.0' // gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 이는 Gradle 버전에서 지원하는 코틀린 버전이 맞지 않아서 생기는 문제이다. 아래와 같이 코..

[MVVM 정복] 7. 완성한 코드로 MVVM 분석해보기
Android, iOS 2020. 5. 18. 17:52

완성한 코드는 다음과 같다. (내가 드디어 해냈다. 캄.동.) https://github.com/conquerex/mvvm-template conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com 앞으로 개발을 한다면 다음과 같은 시나리오일 것이다. (일종의 복습) class MainActivity : BaseActivity() { // 생략 override val viewModel: MainViewModel by viewModel() // 생략 override fun initDataBinding() { v..

[MVVM 정복] 6. RecyclerView 적용해보기 (feat. 코틀린 함수)
Android, iOS 2020. 5. 18. 17:51

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com 이번편까지 하면 코드는 다 입력한 것이다. 물론 MVVM을 정복한 것은 아니니 계속 긴장하고 있자. (나 스스로 한테 한 얘기) 먼저 MainSearchRecyclerViewAdapter를 만들자. 코드는 역시 내 Github에 있다. 블로그 포스팅 번호와 커밋 메시지의 번호가 동일하니 참고해서 학습하면 된다. 어댑터 만들면서 item_main_image, ic_image_black_24dp, item_ma..

[MVVM 정복] 5. View에 Koin으로 의존성 주입하기
Android, iOS 2020. 5. 18. 17:51

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com 우선 MainActivity를 준비하자. 물론 activity_main.xml도 같이 세팅하자. 여기서 DataBinding이 나온다. 하지만 생각보다 단순한 개념이기에 참고 링크만 남겨둔다. MVVM에 데이터바인딩이 필수라고 하는 분이 있고 그렇지 않다고 얘기하는 분도 있었다. 필수라고 하는 분은 의존성이 낮아짐을 근거로 삼고, 필수가 아니라는 분은 디자인패턴적으로 봤을 때 없어도 되기 때문이라고 한다. ..

[MVVM 정복] 4. 어렵고 이해도 잘 안되는 DI, 그리고 Koin
Android, iOS 2020. 5. 18. 17:50

이번편에서도 코드를 보면서 학습하길 권한다. conquerex/mvvm-template MVVM 학습과 앞으로 활용을 위한 템플릿. Contribute to conquerex/mvvm-template development by creating an account on GitHub. github.com DI(Dependency injection)가 "의존성 주입"이라는 의미인 것은 많은 분들이 알고 있다. 그런데 의존성 주입이 무엇이냐고 물어보면 제대로 답할 수 있는 사람이 얼마나 될까? 그래서 알아보았다. DI, 넌 누구냐. 일단 의존성이 무엇인지 알아보자. 두 모듈의 연결, 두 클래스의 관계 의존성이 크다 == 결합도가 높다 '의존성이 큰게 왜??'라는 생각이 들 수 있다. 의존성이 크게 되면 독립성은..

728x90
반응형