전체 글 292

Nutri Capture - 방향 재설계 (프로젝트 이름 변경)

#1 Why?왜 나는 다시 요구분석을 하는가? #1-1 요즈음의 개발 상황개인적인 이유로 개발이 달팽이 기어가듯이 진행되었으나, 다행히 최근에 극복했다. 지금은 자기효능감이 머리끝까지 찬 상태다. 그럼에도 다시 앱 개발을 무작정 시작하고 싶진 않다. 할 거면 제대로 하자는 거다. 이는 완벽주의적인 발언이 아니다. 왜냐하면 앱을 '완벽'하게 만들고 싶은 게 아니라 너무나도 빠르게 '완성'하고 싶은 마음에서 하는 말이기 때문이다. #1-2 좋은 제품을 만드는 5단계'빠른 완성'에 초점을 맞추되 기능까지 탁월한 방법은 이미 존재한다. 바로 아래에 있는, 일론 머스크의 '좋은 제품을 만드는 5단계'다. 일론 머스크의 사고법과 충고#1 1원칙 사고법남들이 하는 방식이 아니라, '바꿀 수 없는 사실(1원칙)' 및..

SOLID 원칙

#1 프로그램의 운명과 설계인간의 운명은 명확하다. 특이점이 오지 않는다는 가정하에, 인간은 언젠간 반드시 죽는다. 프로그램의 운명도 명확하다. 한 번 개발된 프로그램은, 미래에 반드시 변경(유지보수)된다. '운명'을 고려하면 프로그래밍에서 '좋은 설계'가 무엇인지 떠올릴 수 있다. 바로, 변경에 강한 설계(구조)다. 아래에 있는 말은 다 같은 말이다. 변경에 강한 설계(구조) = 새로운 요구사항이나 변경 사항이 있을 때, 바꿔야 하는 코드의 범위가 좁은 구조 = 변경에 유연하게 대처가 가능한 구조 = 확장성이 높은 구조 #2 SOLID 원칙#2-1 WhatㆍWhy위키백과: SOLID (객체 지향 설계)카카오뱅크: 모든 개발자가 알아야 할 SOLID의 진실 혹은 거짓Inpa Dev: 객체 지향 설계의 5..

Gradle, 버전 카탈로그

#1 이전 글 Maven, Artifact, GAV#1 Module공식 홈페이지GitHubJava 프로젝트를 위한 종합 도구. Java 프로젝트의 라이브러리 관리, 소스 코드의 컴파일ㆍ빌드를 수행한다. #2 ArtifactArtifact란 쉽게 말해 Maven에서만 쓰는(Maven의 과거 인기kenel.tistory.com위의 게시글에서 이어진다. #2 Gradle#3-1 What공식 홈페이지공식 사용 설명서GitHubMaven에서 파생한 도구다. Gradle의 단점 중 하나인 장황함 등을 개선했다. Maven의 Artifact 개념도 그대로 계승해 사용한다. 따라서 Maven Repository를 Gradle도 Maven과 같이 쓸 수 있다. #3-2 vs Maven DSLMaven DSL → Grad..

Maven, Artifact, GAV

#1 Module공식 홈페이지GitHubJava 프로젝트를 위한 종합 도구. Java 프로젝트의 라이브러리 관리, 소스 코드의 컴파일ㆍ빌드를 수행한다. #2 Artifact#2-1 What (정석적 정의)Artifact란 쉽게 말해 Maven에서만 쓰는(Maven의 과거 인기로 인해, 현재는 Maven이랑 관련 없어도 그냥 보통 명사처럼 쓰인다) 라이브러리 단위다. 정확히 말하면 살짝 어려운데, 아래의 조건을 전부(교집합) 만족하는 파일 하나를 의미한다. 1. 파일의 형식(확장자)과 관계없이, 단 하나의 파일.2. 해당 파일을, 'Maven Repository'(#3)에서 'GAV'(#4) 형식으로 요청할 수 있음.대부분 Java 코드를 컴파일한 결과물인 .jar(안드로이드용 Artifact인 경우에는 ..

Nutri Capture - 버전 카탈로그 속 프로퍼티명을 Now in Android 스타일로 통일

#1 개요버전 카탈로그(libs.versions.toml) 속 프로퍼티명을 수정했다. #2 개선한 포인트#2-1 WhatㆍWhy Now in Android | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Now in Android 앱, Play 스토어에 출시 Now in Android는 완전한developer.android.comNow in Android는 Android 설계 및 개발 권장 사항대로 만든 '공식적인 샘플' 앱이다 (소스 코드). 내 프로젝트의 버전 카탈로그 속 프로퍼티명과 Now in Android의 버전 카탈로그 속 프로퍼티명이 다른 경우를 확..

Nutri Capture - ContentWithSwipeableBottomSheet() 도입

#1 개요개발해 둔 커스텀 컴포넌트를 본 프로젝트(Nutri Capture)에서 사용했다. #2 개선한 포인트 ContentWithSwipeableBottomSheet()#1 개요BottomSheetScaffold()의 문제점을 개선한, 커스텀 컴포넌트 ContentWithSwipeableBottomSheet()를 구현한다 (게시글 맨 아래에 소스코드 있음). #2 BottomSheetScaffold()#2-1 개요 androidx.compose.material | API referencekenel.tistory.com위의 커스텀 Scaffold를 Nutri Capture 프로젝트에 적용했다. #3 코드 스니펫#3-1 class MainActivity......class MainActivity : Com..

Nutri Capture - Entry point를 Now in Android 스타일로 변경

#1 개요Entry Point(앱 진입 지점)를 Now in Android의 방식대로 바꿨다. #2 개선한 포인트#2-1 Entry Point? 엔트리 포인트 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 엔트리 포인트(entry point) 또는 진입점(進入點)은 운영 체제에서 컴퓨터 프로그램으로 제어권이 변경되는 것이며, 프로세서는 프로그램이나 코드에 진입해서 실ko.wikipedia.org'프로그램의 시작점'이다. Entry Point는 어떻게 보냐에 따라 얼마든지 달라질 수 있다. 즉, 꽤 추상적인 개념이다. #2-2 안드로이드의 Entry Point [Android] 메인 스레드 & Handler 이해하기 - Junghoon's BlogUI 처리를 위한 메인 스레드 애플리케..

Nutri Capture - 프로젝트 모듈화 및 코드 재배치

#1 개요App Module 속의 코드를 분산해, 여러 개의 Library Module에 나눠 담았다. #2 개선한 포인트#2-1 WhatㆍWhy [Android] Module 구조#1 Module?#1-1 What하나의 build.gradle에 종속된 코드의 범위= 빌드의 최소 단위= 라이브러리의 최소 단위안드로이드 앱은 Gradle로 빌드되고, 그 빌드의 명세는 build.gradle에 적힌다. 모듈이 build.gradle 파kenel.tistory.com #2-2 How (도식도)모듈의 이름, 그리고 모듈 속의 클래스 또는 파일을 표현했다. 모듈끼리는 의존성 그래프의 방향을 따라 화살표로 연결했다. 모듈의 이름은 Now in Android 프로젝트의 모듈 명을 참고했다. 내가 봐도 깔끔한 구조는 ..

Nutri Capture - 버전 카탈로그로 완전 전환

#1 개요build.gradle에 정의한 라이브러리(의존성)들의 주소 및 버전을, 버전 카탈로그(libs.versions.toml)가 완전히 관리하게 했다. #2 개선한 포인트#2-1 버전 카탈로그로 완전 전환 버전 카탈로그로 빌드 이전 | Android Studio | Android DevelopersGradle 구성 파일을 Gradle 버전 카탈로그로 이전합니다.developer.android.com지금까지의 Nutri Capture는 일부 라이브러리만 버전 카탈로그가 관리했었다. 이제는 kapt를 제외(#3-2 참조)한 모든 플러그인 및 라이브러리를 버전 카탈로그가 관리하게 변경한다. #2-2 라이브러리 최신화# in libs.versions.toml[versions] ... # 변경할 부분..

내 프로젝트와 Now in Android의 버전 카탈로그 속 프로퍼티명 맞추기

#1 개요#1-1 WhatㆍWhy Now in Android | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Now in Android 앱, Play 스토어에 출시 Now in Android는 완전한developer.android.comNow in Android는 Android 설계 및 개발 권장사항대로 만든 '공식적인 샘플' 앱이다 (소스 코드). 개인 프로젝트를 진행하던 중, 내 프로젝트의 버전 카탈로그 속 프로퍼티명과 Now in Android의 버전 카탈로그 속 프로퍼티명이 다른 경우를 확인했다. 나는 Now in Android의 스타일을 따라갈 것이므로..