본문 바로가기

LANGUAGES, METHODLOGY

(42)
[클린아키텍처] 1부 : 클린 아키텍처, 그 첫 장 오랫동안 해야지 해야지 하고 사두고는 고이 꽂아 두었던 로버트 C. 마틴의 클린 아키텍처를 드디어 집어 들었다. 집어 들은데서 더 나아가 펼치기까지 했다(이건 누군가에겐 종종 대단한 일이 되기도 한다.) 아직 실제 클린 아키텍처에 대한 구체적인 내용은 들어가지 않았지만, 클린 아키텍처와 개발이라는 것에 대한 저자의 생각과 개발에 대해 어떠한 마음가짐을 가지고 들어가야 할 지를 흥미롭고, 공감되도록 하면서 경각심을 들게끔 하고 있다. 첫 장을 읽고 나서 내가 중요하게 생각하는 부분들 일부를 조금 정리해두려고 한다. 첫번째는 바로 경각심이다. " 하지만 프로그램을 제대로 만드는 일은 전혀 다르다. 소프트웨어를 올바르게 만드는 일은 어렵다. 소프트웨어를 제대로 만들려면 적정 수준의 지식과 기술을 겸비해야 하지..
[Kotlin] Default Argument와 Named Argument 활용하기 개발을 하게 되면서 일상적으로 마주하는 상황 중에 변수들을 넘겨주기 위한 클래스나 메소드를 설계하고, 이를 활용해야 할 때가 있다. 코틀린은 이런 상황에서 개발자가 그저 설정이 필요 없는 변수들을 넘겨줄 것 없이 손쉽게 개발 할 수 있도록 Default Argument를 제공하고 있다. 1. Default Argument - 정의한 Function 혹은 class의 매개변수를 아래와 같이 설정한다. // 아이스크림을 만드는 function이 있다면? // amount는 만드는 갯수, option은 맛이라고 할 때. fun makeIcecream(amount: Int = 1, option : String = "바닐라"): IceCream { return IceCream(amount, option) } //..
[안드로이드] Kotlin sealed class로 여러 클래스들을 보다 분명하게, 유연하게 활용하기 기존에 MVP 아키텍처 패턴으로 짜여진 프로젝트를 빌드업하면서 몇가지 애로사항이 생겼다. Presenter에서 로직을 수행 후 뷰를 업데이트하기 위한 코드를 최대한 작은 단위로 한정해서, 서로 제약사항이 생기지 않도록 구현하고 있었는데, 문제는 여기서 각 뷰 단위를 업데이트하기 위한 코드가 배로 많아지고, UI가 어떤 코드를 거쳐 업데이트 되는지 한 눈에 파악하기가 어려웠다. 수행하고자 하는 코드를 파라미터의 종류에 따라 구분지을 수는 없을까? 그리고 이를 하나의 함수로 통일시켜 사용할 수 있을까? 특정 함수에 사용하고자 하는 클래스들을 제한해 사용할 수 있을까? 이런 물음들을 Kotlin의 sealed class를 활용해 상당부분 해결할 수 있었다. 1. Sealed Class란 무엇인가? Sealed..
[안드로이드 | Rx] Schedulers 주의 깊게 살펴보기 Rx의 비동기 방식 및 Scheduler를 활용한 작업 처리는 Threading을 손쉽게 처리해준다는 점에서 매우 유용하지만, 잘못된 Scheduler를 사용하는 경우 피를 보게 될 여지가 분명하다. 금번에 피맛을 좀 본 뒤로 앞으로의 이슈를 방지하고자 다시금 Scheduler들을 리뷰하고 넘어가고자 한다! 1. IO IO 스케줄러는 네이밍대로 네트워크 관련 작업이나 파일 시스템과의 상호작용시 사용하는 스케줄러이다. 자바의 Thread pool(작업을 기다리고 재사용되는 Worker thread 그룹)을 통해 구동되며, 기존 Thread가 재사용되지 못하는 조건에 있는 경우 새로운 Thread를 생성해 작업을 수행한다. 이 특징 때문에 경우에 따라 엄청난 양의 Thread를 만들 수 있고, 이로 인해 성..
[RxJava] 기술면접 대비 RxJava 정리하기 기술면접에 앞서 알고 있던 내용들과 RxJava에서 빈번하게 쓰일 것들을 추려 정리를 좀 해두기로 했다. (질문의 경우 추가적으로 업데이트 예정) Q: Why? 왜 RxJava를 사용하는가? A: RxJava는 비동기 프로그래밍을 구현하도록 해주는 기술로써, 기존 동기식 프로그래밍에서 스레드간 경쟁구도로 인해 발생할 수 있는 이슈들을 제거하고, 프로그래밍의 중심을 데이터 우선으로 하게 됨으로써 서버통신 등 데이터가 중심이 되는 구조를 짜고자 할 때 유용하게 쓸 수 있기 때문이다. - 멀티스레딩시 애로사항 및 Race Condition 관련 보기좋은 자료 https://www.slideshare.net/iamhjoo/ss-44214966 Q: Hot Observable과 Cold Observable의 차이..
[안드로이드 | 코틀린] 코틀린으로 Queue 사용해보기 프로젝트에서 요구사항 구현을 위해 코틀린의 Queue 클래스를 활용해보기로 했다. Queue는 기본 java.util 패키지 내에 포함되어 있으며, Queue를 사용하면 IDE가 java.util.* import를 새롭게 추가하는 것을 확인할 수 있을 것이다. 그럼 Queue를 쓸 때에 사용 가능한 function을 살펴보자. - add(element: E) Any type의 element를 Queue에 추가한다. Any는 코틀린의 모든 클래스의 최상단 super 클래스로, 결국 어떤 클래스든지 문제없이 사용이 가능하다는 것이다. Queue에 element를 더하는데 성공하면 true를 return하며, 실패시 IllegalStateException을 발생시킨다. - element() element()는..
[안드로이드 | ExoPlayer] EventListener를 활용해 여러개의 동영상 연달아 재생하기 ExoPlayer를 동영상 재생에 쓰던 중에 여러개의 영상을 연달아 보여줘야 하는 요구사항이 생겼다. 이를 위해 일전에 에셋을 리스트 형태로 만들어 다른 용도로 썼던 것을 떠올려 구현을 해보기로 했다. 1. ExoPlayer Initialize 2. 비디오 에셋 resourceList 설정 3. ProgressiveMediaSource ArrayList에 차례대로 resourceList를 로딩해 add 4. Player.EventListener Initialize 5. ExoPlayer에 listener add 6. ExoPlayer.setShutterBackgroundColor(Color.TRANSPARENT) 7. 영상을 차례대로 재생하는 플레이어 감상 - 기본 설정 ..
[GDG Seoul | 코틀린 ] 코틀린의 미래는 어디로? | Kotlin / Everywhere Seoul 2019에 가다 [2부] 저번 월요일에 마루180 지하에서 Kotlin / Everywhere Seoul 2019가 열렸다. 첫번째 시간으로 진행되었던 What's new in Kotlin?에 대해서 리마인드 할만한 내용을 정리해보고자 한다. 세션은 Kotlin in action의 공동저자이자 JetBrains의 Developer Advocate로 활동중인 Svetlana Isakova가 진행하였다. 1. 코틀린은 모두가 함께 만들어나가는 언어다. 코틀린은 자바를 대체할만한 언어로써, 형추론 및 람다 코드등을 조합해 간결하게 코딩이 가능하다는 장점을 가지고 있는 것으로 알고 있었다. 코틀린의 역사는 오래되지 않았는데, 2010년부터 개발에 착수해 2014년에 정식으로 릴리즈 되었고, 이후 구글로부터 안드로이드의 공식언어로까지 채..