java

개발/Android

[안드로이드] EXTRA_PICK_IMAGES_MAX 사용 시 주의할 점

개발을 하다 보면 이미지 업로드를 위해 갤러리 사진 선택 기능을 사용하는 경우가 있다. 내가 구현하고자 했던 기능은 이미지를 최대 N장 선택 및 리사이클러뷰에 추가, 이후 서버에 업로드하는 기능이였는데, Tiramisu 이상에서 추가된 MediaStore.ACTION_PICK_IMAGES의 MediaStore.EXTRA_PICK_IMAGES_MAX라는 Intent extra를 설정하다 문제에 직면했다. 트러블 val maxPhotoCount = MAX_PHOTO_COUNT - currPhotoCount val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply { putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxNumPhotos..

CS

[CS] Java 1.8과 Java 8의 차이

안드로이드 프로젝트 설정을 하다 보면 gradle에서 jvmTarget, javaversion 설정을 해줘야한다. 그럴 때마다 1.8과 8버전에 대해 접하는데, 정작 이에 대해 궁금해서 자세히 알아본 적이 없는 것 같아 조사해봤다. Java 버전 네이밍 방식Java se는 1.0부터 1.8까지 1.x 방식의 버전 표기법을 사용했다고 한다. 지금으로 치면 1, 2, 3, 4, 5이나 그때는 1.1, 1.2, 1.3, 1.4, 1.5로 표기했다는 얘기이다. 그러다 Java se 9 버전에 이르러서는 1.x 방식의 네이밍 기법을 버리고 한자릿수 버전 표기법으로 선회하게 된다. 개인적인 생각으로는 1.9 다음 10버전은 2.0/10.0 이런식으로 표기해야하는데, 이런 혼란스러운 네이밍을 피하기 위함이 아닐까....

개발/Kotlin

[Kotlin] 테스트 코드 (1) - 테스트 코드란?

오늘 포스팅할 내용은 "테스트 코드 작성"에 관한 이야기이다. 안드로이드 단톡방에서 사람들이 메서드 하나 추가될 때마다 적는다던 테스트 코드, 정보처리기사 공부하다 봤던 TDD, 여러 채용 공고들에 숱하게 적혀있던 "테스트 코드 작성 경험이 있으신 분" 등 안드로이드 진영에서의 테스트 코드 작성의 중요성은 날이 갈수록 커지고 있다. "테스트 코드"를 실무에서 작성해 본 경험이 없어 이에 대한 지식이 전무한 사람들도 꽤 많을 것이라 생각되는데, 이번 "테스트 코드" 시리즈 포스팅을 읽은 뒤에는 테스트 코드 작성의 중요성과 작성 방법, 다른 여러 정보들을 알고 갈 수 있었으면 좋겠다. 테스트 코드란? 소프트웨어의 기능과 동작을 테스트하는데 사용되는 코드 테스트 코드는 비단 spring, android에서만 ..

개발/Kotlin

Singleton 패턴이란?

1. Singleton 패턴이란? 객체의 인스턴스를 최초 1번만 생성하고 이후에는 기존 인스턴스를 호출해서 사용하는 패턴을 말한다. 우린 일반적으로 인스턴스를 생성할 때 new 연산자를 사용하는데, 이 때 메모리에 객체의 인스턴스를 할당하게 된다. 물론 최초 1번의 할당까지는 아무런 문제가 되지 않는다. 하지만 여러 곳에서 필요할 때마다 인스턴스를 생성하고 호출한다면, 이는 메모리를 엄청나게 낭비하는 '비효율적인' 행위가 될 것이다. 따라서 객체가 유일해야할 경우에 싱글톤 패턴을 사용하여 기존에 생성된 인스턴스를 호출해서 사용한다. 2. 언제 사용하는 것이 적절할까? 싱글톤을 적용하지 않고 필요할 때마다 객체를 생성해서 사용한다면 매 생성마다 메모리를 할당받게 되고, 이는 성능 저하를 일으킨다. 하지만 ..

개발/Android

Repository 패턴을 사용하는 이유

오늘은 많은 사람들이 애용하는 디자인패턴 중 하나인 Repository 패턴이다.1. Repository Pattern이란?ViewModel(Domain layer)과 Data 저장소 사이인 Data layer에 중간 계층(Repository)을 만들어 데이터의 출처에 구애받지 않고 동일한 인터페이스로 접근할 수 있게 만드는 패턴 여기서 동일한 인터페이스로 접근한다 라는 말의 뜻이 잘 이해가 되지 않을 수 있다. 간단한 예시를 들어보겠다. A라는 내부 DB에서 데이터를 가져오고, 추가적으로 B라는 외부 출처에서도 데이터를 가져와야하는 상황이다. 여기서 우리가 A와 B 둘 모두의 데이터에 접근 및 사용하기 위해서는 A라는 내부 DB에 대한 처리 + B라는 외부 DB 이 둘 모두에 대한 작업이 필요할 것이다..

개발

레거시에 대하여

얼마전에 한 테크블로그에서 Legacy에 대해 포스팅한 글을 읽었다. 다른 분야 못지 않게 Legacy에 대해 민감할 수 밖에 없는 안드로이드 개발자로서, 오늘은 Legacy에 대하여 이야기해보고자 한다. Legacy는 종종 게임, 드라마/영화, 영어 공부 책에도 심심치 않게 등장하는 단어이기 떄문에 그리 생소하게 느껴지는 단어는 아닐 것이다. # 사전적 의미 Legacy 1. (죽은 사람이 남긴) 유산 (=inheritance) 2. (과거의) 유산 출처: 네이버 영어 사전 # 개발자에게 Legacy란? Legacy system - 낡은 기술이나 방법론, 컴퓨터 시스템, 소프트웨어 등을 말한다. - 더 이상 쓰이지 않더라도 현대의 기술에 영향을 주는 경우도 포함한다. # 안드로이드 개발자에게 Legac..

최선의 최선
'java' 태그의 글 목록