Kotlin을 써온지 이제 1년 조금 넘은 시점에서 다시 코드를 돌아보고 있자니 Scope function을 많이 활용을 하지만 적절하게 활용하고 있다는 생각이 들지 않았다. 모호한 기준으로 Scope function을 활용하고 있다고 느꼈다. 이번 Kotlin의 Scope function은 Context object와 Return value가 아닌 각 Scope function이 어디에 쓰이는지 위주로 짚어볼 예정이다. 더 자세히 들어감에 앞서서 간단한 사용 가이드는 다음과 같다. let (1) : Non-Nullable 객체에서 람다 함수를 수행할 때 let (2) : 식을 로컬범위의 변수로 사용할 때 (오역 가능성 높음) apply : 객체 구성할 때 run (extension) : 객체 구성과 결..
개발 공부 제대로 하는 법 🤓 (정체기에서 성장기로 가보자, 함 해보자!) 개발자로 성공할 수 있는 딱 하나의 기술 😆 이런 사람들이 읽으면 좋다!! 뭔가 배웠긴한데 실력이 정체되어 있는거 같다. 어떻게 동작하는지는 모르겠지만 이것만 하고 다음에 공부하자고 생각한다. 회사는 항상 위기고, 이 프로젝트는 제일 중요하고 긴급하다. 배울건 산더미인데, 갈 길이 멀다 이것만, 이번만이라는 말을 하며 구글링을 통해 본 코드를 컨씨컨브이한다. 위 생각을 하면서도 방치한다면? 하는 것만 계속 하게 되고, 나에게 남는게 없다. N년차에도, 선배가 되어도 후배에게 나눠줄 노하우라는게 없음. 깨어있기 이론 5가지 0. 조급해하지 않고 꾸준히 해나가는게 중요!! 1. 다음은 오지않는다. ‘이번만, 다음에!’ 하지 않기 지금..
같이 일하시는 분께서 지금 작업하고 있는 프로젝트에 클린 아키텍처 개념을 적용해보면 좋을 것 같다고 말씀해주셔서 과감하게 도전해보기로 하였다. 우선 개발에 공통적으로 적용할 수 있는 클린 아키텍처 개념은 다른 페이지에 따로 정리를 해놨다. 공통적으로 적용되는 클린 아키텍처에 대한 개념은 Entities, Use cases, Interface Adapters, Frameworks & Drivers로 4가지 계층으로 나타나는데 안드로이드에 맞춘 클린 아키텍처는 이를 응용하여 3가지 계층으로 나타낸다. 그림은 다음과 같다. 일반적으로 Presentation, Domain, Data의 총 3개의 계층으로 나눠지게 됩니다. Presentation UI(Activity, Fragment), Presenter 및 V..
클린 아키텍처는 모든 개발자가 관심을 가지고 주목하는 개념이다. 하지만, 다른 개발에 치이고 클린 아키텍처를 구현하는데 들어가는 리소스는 어마한데 비해 앱 사용자 입장에서는 바뀐게 없다고 느끼니 과도하게 시간을 쏟기가 정말 애매한 분야처럼 보인다. 하지만 고객들에게 많은 기능들이 포함된 고품질의 애플리케이션을 제공하기 위해서는 복잡도가 굉장히 높아지게 되고 이에 따라 유지 보수하기 쉬운 코드를 작성할 필요가 생겼습니다. 새로운 기능이 추가되거나 내부 로직이 변경되더라도 유연하게 프로젝트를 관리할 수 있게 구조를 짜야하는 거죠. 클린 아키텍처의 목표 계층을 분리하여 관심사를 분리하는 것!! 클린 아키텍처의 4가지 계층 Entities 엔티티는 비즈니스 규칙을 캡슐화한다. 메서드를 갖는 객체일 수도 있지만 ..
도입 오늘 평소대로 코딩을 하던 도중 선배와 코드 리뷰를 하던 도중 델리게이트 패턴이라는 얘기가 나왔다. 선배가 델리게이트 패턴에 대해 대략적인 설명도 해주시고 델리게이트 패턴을 적용하면 코드 재사용성이 좋아지고 유지보수하기가 쉬워진다라고 말씀하셨지만 직접 정리해보는게 도움이 될거라고 생각하면 오랜만에 블로그 글을 작성하기로 하였다. 델리게이트 패턴이란? Delegate는 위임하다라는 사전적인 의미를 가지고 있는데 이 뜻을 의식하면서 이해해보려고 하였다. 원래 본인이 해야할 작업을 다른 객체에게 자신의 일을 위임하는 패턴이 델리게이트 패턴인 것이다. 그럼 다음 예시를 알아보자! 그럼 어떻게 쓸 것인가? 실생활로 예시를 들어보자. 이제 직장도 구했고 방을 구해야 하는데 전세 대출도 알아봐야 하고 부동산 돌..
RecyclerView의 item에 Custom View를 넣고 싶을 때 이슈 RecyclerView가 10개의 아이템을 가지고 있다고 하였을 때, 0번째 item에서의 Custom View에서 특정 작업을 했던 것이 7번째 item의 Custom View에도 영향을 줍니다. 즉, 별개의 Custom View로 동작해야하는데 서로가 서로에게 영향을 줬습니다. 0번째, 7번째가 서로 영향을 주는 것은 특정 상황에서만 나온 것이고 서로 영향을 주는 객체는 매번 달라졌습니다. 수정 전 코드 지금껏 해왔던대로 RecyclerView의 item 레이아웃(item_layout.xml)에 직접 만든 Custom View를 넣어서 사용함. (저 같은 경우에는 GraphView를 만들었습니다.) RecyclerView ..
이 요약은 https://youtu.be/Lpieg1zrKdg 다음 영상을 보고 요약한 개념입니다. 여러 개의 루틴을 동시에 실행하여 결과를 내고 싶다면 비동기 처리를 지원하는 코루틴을 사용한다. 코루틴은 메인이 되는 루틴과 별도로 진행이 가능한 루틴으로 코루틴은 개발자가 실행과 종료를 마음대로 제어할 수 있는 단위이다. 코루틴은 제어 범위와 실행 범위를 지정할 수 있다. 코루틴의 Scope GlobalScope 프로그램 어디서나 제어, 동작이 가능한 기본 범위 CoroutineScope 특정한 목적의 Dispatcher를 지정하여 제어 및 동작이 가능한 범위 Coroutine의 dispatcher Dispatcher.Default : 기본적인 백그라운드에서 동작 Dispatcher.IO : 네트워크나 ..
Ch2. 운영체제 개요 운영체제의 역할 1. User Interface (편리성) CUI (Character User Interface) GUI (Graphic User Interface) EUCI (End-User Comfortable Interface) 2. Resource management (효율성) HW resource (processor, memory, I/O devices, Etc.) SW resource (file, application, message, signal, Etc.) 3. Process and Thread management Process : 프로그램 실행의 주체 4. System management (시스템 보호) [색이 칠해진 부분이 OS 층] 운영체제의 구분 동시 사용자 ..