전체 글

Never stop acting like the new one on the team
Android/번역

코틀린으로 알아보는 SOLID 원칙

해당글은 blog.berkberber.com/solid-principles-in-kotlin-4f37e9b62dde SOLID Principles in Kotlin In object-oriented computer programming, SOLID is design principles intended to make software more understandable, flexible and… blog.berkberber.com 의 번역본 입니다. (글쓴이가 화웨이에 다니고 있어서 그런지 화웨이 예제가 상당히 많네요) SOLID ? 객체 지향 프로그래밍에서 SOLID 원칙은 좀더 "이해가능한", "유연한", "유지보수 가능한" 소프트웨어를 만들기 위해 의도 되어진 디자인 원칙이다. SOLID 원칙은 기능 ..

Daily & Thinking

2021 Todolist

0. 영어 공부하기 - 영어로 된 문서를 볼 일이 많고, 회사에서도 간혹 영어로 커뮤니케이션이 필요한 일이 있다. 영어 문서는 번역기를 돌리기도 하고, 어쩌어찌 코드를 보며 이해할 수 있지만, 영어 스피킹은 너무나도 부족하다. 학원을 다녀서 보완할 수 있도록 하자! 1. 멘토 만들기 - 소프트웨어 스킬 뿐만 아니라 커리어등 좀더 개인에 초점을 맞춘 질문을 할 수 있는 멘토 구하기(지금껏 개발을 하며, 닮고 싶다 느끼는 시니어 개발자가 몇 있었다) - 회사에서 시니어 개발자분들과 소통이 있고, 다양한 이야기를 하는 편이지만 아직 목마름이 있다, 2. 시니어 개발자 혹은 미드 레벨의 개발자가 되기 위한 기초 만들기 - 현재 주관적인 저의 역량은 주니어 개발자, 그리고 주니어 개발자 풀에서 잘하는 편은 아니라..

Android/Today I Learned

테스트 케이스로 작성해보는 RxJava 함수

이제는 코루틴으로 인해, 사용빈도가 적어지는 자주 사용했던 Rx 함수들을 정리하는 시간을 가지려고합니다. 그리고 안녕... 제대로 동작하는 것을 확인하기 위해, 테스크 케이스로 작성하고 딱 20개만 해보려고합니다. 먼저 전체 코드를 링크 걸어두겠습니다 Single, Completable, Observable, Flowable, Maybe 의 목적과 특성은 이미 알고 있을 것이라고 가정하고, 위의 자료형과 상관없이 생각나는 함수 위주로 작성해보겠습니다. 1. Just 함수 /** * Single.just, SingleJust : Single 로 Wrapping 된 아이템을 한번 방출한다. * 특정 아이템을 Single 타입으로 변경하여 체이닝을 이어갈 때 사용하면 유용하겠다. * ex) flatMap 으로..

Android/Development Tips

DialogFragment 를 상속하는 다이얼로그에서 dismiss 할 때 Tips

// dialog 를 프로퍼티(멤버변수)로 선언했다고 가정 dialog?.dismiss() dialog = Dialog() dialog?.show(xxxFragmentManager, dialogTag) 위와 같은 코드가 있다. 대략적인 의미를 보면 1. dialog null 이 아니라면 dismiss 시키고 2. dialog 를 초기화 하고 3. 마지막으로 다이얼로그를 보여준다. 잘 작성한 코드로 다이얼로그가 중복으로 뜨는일은 없을 것 같이 느껴진다. 하지만 Configuration change(퍼미션 변경, 화면 변경, 언어 변경 등), OOM 가 일어나면 문제가 생기게 된다. 보통 안드로이드 이론 공부하면, Configuration change 가 일어나면 액티비티가 다시 시작되는 것을 우리는 알고 ..

Android/Development Tips

java.lang.IllegalStateException: Software rendering doesn't support hardware bitmaps 에러 수정하기

Context 와 Uri 를 사용하여, Bitmap 을 가져오는 함수가 deprecated 되어 Replacement 함수로 변경하고 나서 QA 중 에러가 발생했다. 아래와 같이 레거시 방법들을 사용하고 있었고 // (deprecated) BitmapDrawable(context.resources).bitmap // (deprecated) BitmapDrawable( context.resources, MediaStore.Images.Media.getBitmap(context.contentResolver, this) ).bitmap 사용했던 문제의 코드 ImageDecoder.decodeBitmap(ImageDecoder.createSource(context.contentResolver, this)) 에서..

Android/Development Tips

다양한 뷰타입을 가지는 Recyclerview 만들기

오랜만에 안드로이드 글을 작성하는 것 같습니다. 적당한 퍼포먼스를 가지는 리싸이클러뷰를 만들어 볼 예정입니다. 완성된 소스코드는 맨 아래 링크에 있습니다. 이번 포스팅은 Architecture 등은 제외하고, Recyclerview 구현에만 관심이 있습니다. 4개의 뷰타입을 가지는 리싸이클러뷰 디펜던시는 프로젝트 생성시 추가되어 있는 라이브러리 + Third party (Glide, Recyclerview) 입니다 네트워크에서 가져온다면 (Gson 등이 필요합니다) 먼저 보여줄 Data class 를 명세해줍니다. @Parcelize 어노테이션을 이용하여, 다른 Activity, Fragment 에 아이템을 전달할 일이 있을 때, 쉽게 처리할 수 있도록 추가하였습니다. @Parcelize data cla..

Code Paradigm

클린 코더스 강의 요약(Architecture) - 5

What is Architecture? * 전체적인 시스템 개발에 기반을 제공하는 변경 불가능한 초기 결정사항의 집합 Java, Spring, MySQL, MVC 같은 것이 아닌, 사용법(설계)에 대한 것 What is UseCase ? * 일련의 단계의 집합 * Actor(목적이 같은 클라이언트 집단) 와 시스템의 상호작용을 정의해둔 것들 * Architecture exposes usage (MVVM 을 사용했고, Repository 패턴을 적용했고, 디비는 Room 을 적용했고 같은 것들로 일부가 표현될 수는 있지만 정확하게는 아님 - 전자는 Application 이 어떤 목적으로 만들어졌고 어떤 기능을 하는지에 대해 알려주지 못한다) 클린 코더스 강의에서는 위의 사진 같은 것이 좀더 아키텍쳐에 가깝..

Code Paradigm

클린 코더스 강의 요약(Form) - 4

주석 1. 의미 없는 주석은 되도록 작성하지말자 (형식적인 주석) // 의미 없는 주석의 예 /** * Set a configuration property * @param key the property key * @param value th property value */ public void setConfigProperty(final String key, final String value) { // ... } 2. 주석을 읽는 모든 사람들이 감사한 마음을 가질 수 있어야 한다 3. 주석을 함수의 이름에 잘 녹여낼 수 있도록 하자(물론 Assembly 언어는 불가능) 4. 보통의 개발자들이 작성하는 주석은 함수명으로 녹여낼 수 있고, 주석은 작성자의 코드의 표현력이 충분하지 못하다는 반증이 되기도 한다...

Code Paradigm

클린 코더스 강의 요약(Function Structure) - 3

이번 시간에는 함수는 어떤식으로 만들어야할까? 에 대한 이야기 입니다 - Arguments - The Stepdown Rule(어떤 순서로 작성할 것인지) - Remove Switch and case - Temporal Coupling (시간, 순서상의 결합도를 어떤식으로 해결할 것인가) - CQS - Tell Don't Ask - Law of Demeter - Early Return - Error handling - Special Case (Null object 패턴 - 수많은 if-else 분기 보다는 특정 문제해결을 위한 클래스를 만들자) - Null is not an error - Null is value - Try 도 하나의 역할/기능이다. 위의 주제들에 대해 이야기를 나눠보겠습니다. * Arg..

Nanamare
TEAM > SELF