최근에 kotlin + aac 로 안드 개발을 하였고, 개발 도중 여러가지 드는 생각과 질문들을 이곳에 우선 적어볼까한다. 내가 직접 실험하고 비교분석할 순있지만 이미 kotlin + aac 개발을 많이 해온 사람들이 충분히 있다고 생각되기에 검색으로 쉽게 해답을 얻기를 기대해 본다.

- UI가 top, middle, bottom으로 분리되어 있고 ViewModel이 monolithic하게 되는걸 방지하고자 1 Fragment, 3 ViewModel을 만들경우 Fragment는 3개의 ViewModel에 의존성이 생기게 되는데. top, middle, bottom에 대응하는 UIModel을 제공하는 ViewModel 3개를 만들고 이 세개의 ViewModel을 field로 갖고 View(Acitivity, Fragment)에는 이 ViewModel하나에만 의존하도록 하는건 어떨까? 그러면 View는 ViewModel 하나에만 의존하게 되고 ViewModel 3개와 이를 field로 같는 ViewModel은 parent-child 계층 구조로 설계하면 View 입장에서는 interface가 간편해지고 ViewModel을 선택해서 특정 요청을 해야할지 고민할 필요가 없을것 같다. 간단한 코드 샘플로 비교해 보면 좀더 명확해 질거 같은데? 근데 ViewModel builder function이 Fragment, Activity에 있네;;;;
- liveData() extension function으로 LiveData<T> 를 만들고 emit(), emitSource(), LiveData<T>.switchMap() 를 활용하는 방법이 코드 라인을 몇줄더 절약 가능한 방법인거 같은데. 아직 liveData() 함수 사용에 대한 이해도가 낮으니 좀더 공부해 봐야겠다.
  # LiveData.switchMap() 을 사용하는 예제
    https://gist.github.com/JoseAlcerreca/f2f2743ccd933f701a93beb00973e679#file-myviewmodel-kt

  # LiveData.switchMap() 을 사용하지 않고 Flow을 사용하는 예제. Flow가 더 많은 operation을 제공하고 코드도 간결해 보인다.
    https://gist.github.com/JoseAlcerreca/9a17b1faf1c76bd9ba35e15901f964c5#file-myviewmodel-kt

- kotlin에 Pair<T, V>, Triple<A, B, C>는 있는데, 4, 5, 6 field를 같는 data class가 필요하면 naming 규칙 만들어서 팀원들과 쓰자고 해야겠다.

'android' 카테고리의 다른 글

Firebase  (0) 2016.06.11
Android N Preview 대응  (0) 2016.06.04
RecyclerView에 Endless Scrolling(무한 스크롤)을 구현해 보자  (0) 2016.03.23
ButterKnife를 왜 쓰냐구요?  (0) 2016.02.29
뭐? 이벤트? 버스 태워 보내! #2  (0) 2016.02.29
Posted by 제이제이랩
,

요즘 우주 관련 유튜브를 많이 보게 되는데, 이 광할한 우주에서 지구, 인간은 정말 큰 의미가 없겠다란 생각에 약간의 허무함이 밀려왔다.

빅뱅으로부터의 우주의 탄생 지구 그리고 인간으로서의 짧은 삶등에 대해 곱씹게 되었고, 인간 중심적인 사고방식이 많이 허물어 졌다.

엄청난 세월의 걸친 우리가 파악하지도 못한 원자들의 상호작용에 의한 여러 현상과 그 엄청난 에너지를 보고 인간이란 건 무수히 다양한 우주 환경에서 원자들의 무수히 다양한 형태의 결합의 과정중에 그 환경에서 운이 좋게 생성된거라는 생각이 든다. 

 

10대 때는 지구과학, 물리, 화학, 생물 분야에 흥미가 없었는데, 요즘엔 근본적인 물음들이 생각이 나서 위키피디아의 백과 사전에서 원자, 전기, 자성을 시간 날때 조금씩 보고있다. 수학도 근본적으로 제대로 기초가 안잡혀 있다고 보고 있어서, 다시 틀을 잡고 있는데. 이런 기초 지식들이 새롭고 이런게 있었구나 이런 의미였구나를 많이 느끼게 되어 좋은 시간을 갖고 있다. 

Posted by 제이제이랩
,

9월에 Java9이 공식 배포되었군요;;; 9이라서 9월에 했나;;


Jigsaw Project가 SDK를 모듈별로 관리해서 rt.jar의 용량을 줄이는 것 같은데, 대충 봐서 정확히 확인해봐야 겠네요;;;


https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-C23AFD78-C777-460B-8ACE-58BE5EA681F6

저에게 눈에 띄는 주요한 변화는 아래와 같습니다.

- JEP 248: Make G1 the Default Garbage Collector 

- JEP 291: Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector
- JEP 254: Compact Strings

Adopts a more space-efficient internal representation for strings. Previously, the String class stored characters in a char array, using two bytes (16 bits) for each character. The new internal representation of the String class is a byte array plus an encoding-flag field.

- JEP 269: Convenience Factory Methods for Collections

Makes it easier to create instances of collections and maps with small numbers of elements. New static factory methods on the List, Set, and Map interfaces make it simpler to create immutable instances of those collections.

For example:

Set<String> alphabet = Set.of("a", "b", "c");

- JEP 259: Stack-Walking API

Provides a stack-walking API that allows easy filtering and lazy access to the information in stack traces. 



https://docs.oracle.com/javase/specs/index.html

jvm spec for 9 도 올라 왔군요. 나중에 또 한번 훑어봐야 겠습니다;;

Posted by 제이제이랩
,