2024/12 9

Nutri Capture 방향성 - 개발 일정표 (1차)

#1 현 개발 행태에 대한 문제점#1-1 과정의 완벽주의난 풋내기 프로그래머에 불과하다. 내가 만들 앱 또한 그저 그런 앱일 것이다. 적어도 처음 (출시할 의도로 만드는) 앱을 당연히 그럴 것이다, 아니 그래야만 한다. 그런데 나는 마치 정상급 앱 경영 콘테스트에 출품하는 것처럼 프로젝트를 만들어 가고 있다. 비유하자면 아주 사소한 돌부리만 발에 걸려도, 그걸 포크레인까지 동원해 철저하게 파고 평탄화 작업을 한 뒤에 안전 검사까지 하고 나아가는 셈이다. 최소한의 기능만 만들고 우선 출시부터 한다. 그리고 고쳐나가면 된다. 오히려 그 편이 더 '완벽'하지 않은가? 현재의 나는 결과의 완벽주의가 아니라 과정의 완벽주의를 좇고 있다. 어차피 사람들은 최종 결과만 보는 데 말이다. 나라고 다른가? 나 또한 다른..

Nutri Capture 프론트엔드 - Typography

#1 일괄적 글꼴 필요프로젝트 내에서 쓰인 글씨의 크기가 중구난방이라는 문제점이 있다. 현재는, fontSize 속성을 지닌 컴포저블별로 크기값을 일일히 할당해두었기 때문이다. 이를 전체적으로 통제할 수 있어야 한다. 크기 뿐만 아니라, 버튼에 들어가는 용도의 글꼴을 별도로 선언해두었다가 두고두고 쓰는 경우도 앞으로 생길테다. #2 Typography#2-1 머터리얼 디자인 가이드 Typography – Material Design 3Learn about Material Design typography. This guide covers everything from font styles and hierarchy to line height to create user-friendly text.m3.materi..

Nutri Capture 프론트엔드 - bottomBar 동적 변경

#1 개요#1-1 소프트코딩 개요지금까지는 +버튼을 누르면, 현재 시각을 기준으로 (하드코딩된) 더미 영양소 데이터를 담은 DayMealView 레코드가 INSERT되었다. 이제는 View에서 사용자가 시각 및 영양 데이터를 소프트코딩하여 ViewModel로 전송할 수 있게 만들어본다. #1-2 채팅 UI를 위한 '채팅' 입력 창 Nutri Capture 방향성 - 채팅 UI#1 기존 UI 비판#1-1 스크린샷지금까지 진행한 프로젝트의 스크린샷이다. 아래는 이 화면의 문제점들이다. #1-2 중첩된 Container'날짜 카드' Container 안에는 '식단' Container가 들어가는데, 이렇게 포장kenel.tistory.com이전에 계획한 방향대로 화면을 구성한다. 채팅 UI이므로 영양 데이터를 ..

디베이터 - 침묵

#1 개요내가 토론에서 배운 한 가지 교훈은 토론은 시작하긴 쉽지만 끝내기는 어렵다는 것이었다. 실제로 시작, 중간, 끝을 정해놓은 게임에서조차 경쟁심이 모든 걸 뒤덮어버리는 경우가 얼마나 많은가! 그렇게 되면 토론자는 실수를 저지르며 사람들을 긴장과 분노의 도가니로 몰아넣었고 그 감정은 토론이 끝나고 나서까지 그대로 남았다. 이런 위험을 생각하면 반대에 뛰어들기로 결심하기 전에 먼저 잘 생각해보아야 했다. 침묵하느냐, 아니면 뛰어드느냐. 무엇에 침묵하고 무엇에 침묵하지 말아야 하는가? 만약 침묵한다면 그 이유는? 단순히 감정 조절이 안 되기에 때문일까? 대체 왜 침묵하는가? #2 핵심 논리#2-1 침묵의 목적 1일레인 스캐리 교수님은 동의가 필요한 상황에서는 차단(clogging) 즉, 속도를 늦추고 ..

책/자기 계발 2024.12.17

Nutri Capture 백엔드 - 이진 탐색 적용

#1 삽입 함수 리팩토링#1-1 리팩토링할 함수// in NutrientViewModel.ktprivate fun findIndexToInsert(list: SnapshotStateList, newItem: DayMealView): Int {    for(i: Int in list.indices) {        if(newItem NutrientViewModel에는 정렬된 배열에 새 원소를 삽입하는 함수 findIndexToInsert()가 있다. 기존 findIndexToInsert()는 위 코드에서 보듯 선택 정렬의 원리로 짰다. #1-2 이진 탐색 이진 탐색 (Binary search)#1 알고리즘 #1-1 #1-2 이렇게 해서 x의 인덱스 i를 찾으면 좋겠지만, 이 x가 배열 values 어디에..

Nutri Capture 프론트엔드 - item 추가ㆍ제거 애니메이션

#1 애니메이션LazyColumn에 아이템이 추가ㆍ제거될 때의 애니메이션 효과를 추가하려고 한다. 이 때, 그 구현 방식은 (당장 내가 보기에) 아래와 같이 2개로 나눌 수 있다. 2개의 공식 문서 링크를 달겠다. 각각은 서로 다른 구현 방식을 알려주고 있다. #1-1 'Composable'의 애니메이션 처리를 위한 가이드 애니메이션 수정자 및 컴포저블  |  Jetpack Compose  |  Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 애니메이션 수정자 및 컴포저블 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Compose에는 일반적인developer.android.com가이드에 기술된 코드의 구조는 아래..

디베이터 - 수사법

#1 개요같은 정보를 담고 있어도, 그것을 어떻게 표현하느냐는 다를 수 있다. 이 때, 좋은 표현은 과연 말만 번지르르한 것에 불과할까? #2 핵심 논리#2-1 '어떻게' 말하는가수사법은 설득하는 말하기의 모든 요소와 관련되어 있다. 단어, 말, 몸짓, 구조 같은 것들 말이다. 주장이 무엇을 말하는가에 관한 것이라면 수사법은 어떻게 말하는가에 관한 것이다.왜 '어떻게 말하는 것'을 신경써야할까? 첫째로는 명확하게 말하기(#2-3) 위해서고, 둘째로는 사람들의 마음을 움직(#2-6)일 수 있기 때문이다. 두번째 이유는 낯설게 느껴진다. 왜냐하면 토론은 더 좋은 결과을 향한 '이성'적 갈등이다. 그런 토론에서 "마음을 움직인다" 따위의 '감성'이 존재한다니. 심하게 표현하면, 이런 류의 감성은 '토론법'보다..

책/자기 계발 2024.12.10