Contents168 클린 아키텍처 https://book.naver.com/bookdb/book_detail.nhn?bid=15303798 클린 아키텍처 “살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙”소프트웨어 아키텍처의 보편 원칙을 적용하면 소프트웨어 수명 전반에서 개발자 생산성을 획기적으로 끌어올릴 수 있다. 《 book.naver.com 이 책도 필독서 중 하나이다. 근데 필독서라고 했지 필독서들이 마냥 쉬운 것은 아닌데, 이 책의 경우엔 내가 읽기에 적절했던 것 같다. 적당히 SOLID 원칙에 대해 알고 있고, MVVM 패턴과 스프링에 대한 배경 지식을 갖고 있으면 이 책을 이해하는데 무리가 없을 것 같다. 이 책을 읽고 생각나는 것 세 가지를 작성해 보았다. 경계에 대한 이야기가 많이 나온다. 경계는 어디에나 있고.. 2022. 1. 22. [안드로이드] 리사이클러뷰 데이터 바인딩 (RecyclerView data binding) https://github.com/android/architecture-samples GitHub - android/architecture-samples: A collection of samples to discuss and showcase different architectural tools and pattern A collection of samples to discuss and showcase different architectural tools and patterns for Android apps. - GitHub - android/architecture-samples: A collection of samples to discuss and showcase... github.com 이 프로젝트를 보.. 2022. 1. 15. [안드로이드] ViewModel 에서 이벤트 처리하는 방법 (SingleLiveEvent) MVVM 에서 View 는 xml, Activity, Fragment 등이 해당된다. ViewModel 에서는 View 에 필요한 데이터들을 갖고 있고, 데이터들을 조작하는 로직들을 갖고 있다. View 에서는 데이터들을 구독하고 있다가 변경이 감지되면 UI 를 업데이트 한다. (이 글에서는 xml, Activity, Fragment 를 모두 View 라고 부르겠다.) UI 관련된 코드가 View 에 들어간다고 해서 ViewModel 에서는 View 와 전혀 관련 없는 일을 하는 게 아니다. View 와 매우 관련있는 것이 ViewModel 이지만, View 에 의존하고 있지 않을 뿐이다. ViewModel 은 View 의 코드가 변경되어도 전혀 영향을 받지 않는다. onClick 이벤트는 어디서 구현할.. 2022. 1. 14. [안드로이드] Retrofit 을 이용하는 6가지 방법 (수정 : 22-01-13) ※ 2023-10-15 Retrofit 관련된 새로운 글을 작성했습니다. 해당 글을 읽어주시길 바라며, 이 글은 더 이상 읽지 않을 것을 권장합니다. ※ 주의사항(2023-06-19 코멘트 추가) 이 글은 과거에 작성된 글로 조금 잘못된 지식을 설명하고 있습니다. 곧 수정할 예정이지만 혹시 그 전에 읽는다면 반드시 아래 내용을 유의하여 읽어주세요. viewModel에서는 코루틴 스코프를 직접 만드는 것이 아닌 viewModelScope를 이용해야 합니다. viewModelScope는 Main 스레드를 이용합니다. Retrofit2의 serviece를 만들 때 즉, api interface를 정의할 때 단순히 fun 앞에 suspend 키워드를 붙여주면 별도의 Adapter를 정의하지 않고 코루틴을 이용하.. 2022. 1. 10. 리팩터링 2판 (Refactoring) https://book.naver.com/bookdb/book_detail.naver?bid=16311029 리팩터링 개발자가 선택한 프로그램 가치를 높이는 최고의 코드 관리 기술마틴 파울러의 『리팩터링』이 새롭게 돌아왔다.지난 20년간 전 세계 프로그래머에게 리팩터링의 교본이었던 이 책의 1판은, 기 book.naver.com 최근에 이 책을 다 읽었다. 1판은 Java 로 쓰였고 2판은 JavaScript 로 쓰였다. 2판을 쓸 때는 JavaScript 의 점유율이 높아서 JavaScript 로 개정판을 냈다고 한다. 그렇다고 해서 JavaScript 에만 적용할 수 있는 리팩터링은 아니니 걱정하지 말자. 다른 언어 개발자라도 개발 경험이 어느정도 있다면 충분히 이해할 수 있는 내용이다. 개인적으로 .. 2022. 1. 3. 2021년 회고 2021년에 아쉬움이 없을 정도로 많은 걸 하지는 않았다. 그래도 2021년 초와 오늘을 비교해 보면 할 수 있는 것의 차이가 많은 것 같다. 어쩌면 실제로 한 것은 많지 않더라도 학습 임계점 중 하나를 넘었을 지도 모른다. 그 때는 어떤 팀이든 협업 프로젝트를 해보고 싶다는 생각이었다. 지금은 잘하는 팀원들을 만나고 싶은 욕구가 있다. 협업 프로젝트는 1년 전이 처음이었다.(사실 처음은 아니지만) 그리고 지금은 돈 받고 프로젝트를 할 수 있을 정도라 생각한다. 실제로 돈 받고 개발하기도 했고... 2021년의 가장 주된 활동은 4~11월 SW마에스트로이다. 그 외에는 1~3월 프로젝트, 7~8월 프로젝트, 8월? UCPC 예선과 본선 그리고 3주 정도의 외주 개발 프로젝트 정도가 있을 것 같다. 추가로.. 2022. 1. 1. [안드로이드] 보일러 플레이트 (상용구 코드) 사소한 기능을 구현하려고 해도 꽤 긴 코드를 작성해야 하는 불편함이 있다. 또 이런 기능을 여러 군데에서 구현하려고 하면 같은 코드를 일부만 변형시켜서 중복 사용하게 된다. 이렇게 반복되는 코드를 보일러 플레이트 혹은 상용구 코드라고 부른다. 안드로이드에서의 보일러 플레이트 코드는 대표적으로 Activity, Fragment, ViewModel, UseCase 등이 있다. 이 글에서는 Fragment 로 예를 들어 설명한다. 마찬가지로 이 프로젝트 코드를 기반으로 설명할 예정이다. 이 프로젝트 또한 프로젝트를 처음 시작할 때마다 설계와 관련된 코드를 작성해야 하는 불편함을 줄이기 위해 시작했다. star 와 fork 해 주시면 감사합니다. class MainFragment : Fragment() { ov.. 2021. 12. 31. [안드로이드] 화면 전환 - Navigation 이 글은 제가 만든 이 프로젝트를 기반으로 설명하고 있습니다. 제가 만든 오픈소스이니 많은 fork 와 star 부탁드립니다! 해당 프로젝트는 변경될 수 있습니다. 안드로이드 Navigation 에 대해 알아보자. 참고로 공식문서는 여기에 있다. 안드로이드 공식문서는 영어가 가능하다면 영어로 읽는 편이 좋다. 한글 버전이 영어 버전보다 업데이트가 느리고 번역하면 안 되는 것을 번역해서 오해를 일으키는 단어들이 몇몇 있다. 안드로이드 Navigation 은 Jetpack 에 포함된 라이브러리이다. nav_graph.xml 을 통해 구조화가 가능하고 화면 구조를 시각적으로도 확인할 수 있다. 아래는 샘플 프로젝트이다. https://github.com/android/architecture-components.. 2021. 12. 25. [kotlin] 람다와 invoke ※ 람다를 사용하는 방법에 대해서는 자세히 다루지 않습니다. 람다를 받는 함수를 정의하는 방법 fun main(args: Array) { doSomething{ a, b -> println("a + b = ${a + b}") } // 파라미터를 사용하지 않는 경우 doSomething{ _, b -> println("b = ${b}") } } fun doSomething(action: (a: Int, b: Int)->(Unit)) { action(2, 3) } 람다 파라미터의 타입은 (파라미터: 타입)->(반환 타입) 형식이다. 위 코드와 같이 정의하고 사용할 수 있다. 만약 사용하지 않는 파라미터가 있다면 _ 기호를 사용해 명시할 수 있다. 인스턴스를 함수처럼 사용하는 방법 fun main(args: .. 2021. 12. 24. 이전 1 ··· 3 4 5 6 7 8 9 ··· 19 다음