전체 글140 Architecture 구조도 (이론편 - UI 레이어) 먼저 들어가기 앞서 내가 생각하는 아키텍쳐 구조도는 다음과 같다. 위의 그림에 대해 정리해 보면 아래와 같다. 이번 편은 UI레이어에 대한 설명과 나의 생각을 작성해 보겠다. 사용자 상호작용(예: 버튼 누르기) 또는 외부 입력(예: 네트워크 응답)으로 인해 데이터가 변할 때마다 변경사항을 반영하도록 UI가 업데이트되어야 합니다. 사실상 UI는 데이터 레이어에서 가져온 애플리케이션 상태를 시각적으로 나타난다. 아래의 사진과 같이 UI레이어는 UI element 와 State holder 가 합쳐진 형태이고 Data 레이어(or Domain 레이어)에 의존한다. UI 레이어 구현 방법 UI라는 용어는 UI라는 용어는 사용하는 API(뷰 또는 Jetpack Compose)와 관계없이 데이터를 표시하는 활동 및.. 2023. 7. 6. 아키텍쳐에 관하여 먼저 글을 작성하기 앞서, 나는 취업 전 클린 아키텍쳐? , MVVM? , MVC, MVP? , AAC-ViewModel과 MVVM-ViewModel 의 차이점 등등 아키텍쳐에 많은 노력을 들였었다. 이유는 지금 당장 공고를 보면 대기업 부터 스타트업까지 모든 공고에는 Google-Architecture-Guide Clean-Architecture, MVVM 이 자격 요건에 항상 작성되어 있었고 당연히 알아야 하고 확실히 알아야 한다는 생각에 사로잡혀 있었다. 그래서 많은 검색과 다양한 블로그를 읽고 다양한 유료강의를 듣고 유명한 개발자에게 DM을 보내 질문을 하였지만 각자가 생각한 Clean-Architecture에 대한 설명을 할 뿐 명확한 근거를 얻을 수 없었고 실체를 더더욱 알 수 가없었다. 그런.. 2023. 6. 28. JeckPack 네비게이션이란 (2) - 실전 편 자 개발하는 방법에 대해 알아보자. 먼저 Gradle에 추가해준다. dependencies { def nav_version = "2.5.3" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" /.. 2023. 6. 19. JeckPack 네비게이션이란 (1) - 이론 편 한마디로 설명하면 한마디로 설명하면 JeckPack 네비게이션 이란 화면간의 이동을 할 수 있게 도와 주는 컴포넌트 이다. 나오게 된 이유 이전에는 우리는 화면간의 이동을 Intent 를 사용하여 화면간의 이동을 하였었다. 그러나 Intent는 아래와 같은 단점을 야기했었다. 코드의 복잡성: Intent를 사용하여 화면 간 이동을 구현하면 각각의 이동에 대해 별도의 Intent 객체를 생성하고 전달해야 한다. 이는 코드의 복잡성을 증가시킬 수 있다. 또한, Intent를 통해 전달되는 데이터나 인자들을 관리하기 위해서는 별도의 키(Key)를 사용해야 하며, 이는 번거로움을 초래할 수 있다. 안전성과 일관성의 부재: Intent를 사용하여 화면 전환을 구현하는 경우, 뒤로 가기 동작이나 이전 화면으로의 정.. 2023. 6. 18. 2023-06-07 Time에 관하여 요약 - Time 을 조절하는 방법에 대해 학습하였다. 오늘 개발 중 오류가 발생했다. 이유는 전달해 주는 시간 값이 형식에 맞지 않아서이다. 현재 회사에서는 UTC : 2023-06-07T08:00:00Z KUTC : 2023-06-07T17:00:00+09:00 이렇게 전달해 주는데 변환을 잘못해서이다. 이 기회로 시간을 다루는 방법에 대해 공부해보자. 1. UTC -> korea 시간으로 바꾸는 법 2. 변환된 시간을 주어진 형식에 맞추어 String으로 포맷팅하는 법 3. 주어진 시간과 현재시간을 비교하는 방법 2023. 6. 7. 하이라이트 튜토리얼 커스텀뷰를 만들어보자 이번 글은 위와 같은 원하는 뷰를 선택하여 해당 뷰에 하이라이트를 주는 오버레이 튜토리얼 커스텀 뷰를 만들어보겠다. 먼저 해당 커스텀뷰는 하단 회색 버튼을 누를 시 두번째 사진처럼 원하는 뷰를 제외한 나머지를 회색으로 가려준다. 이 후 화면을 터치하면 세번째 사진 처럼 설정해 주었던 다음번의 뷰에 하이라이트를 잡아주며 더이상 설정한 곳이 없다면 하이라이트를 종료하게 된다. MainActivity.kr package com.example.test import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.con.. 2023. 5. 20. https://algosketch.tistory.com/141 https://algosketch.tistory.com/141 2023. 5. 2. 플러그인 GitToolBox 플러그인 GitToolBox 2023. 4. 19. 커스텀 뷰에 Depth를 줄여보자 Android 개발 시 새로운 디바이스와 새로운 OS는 개발자에게 있어서 다양한 시도를 도와주는 부분이기도 한다. 다양한 자원들의 상한선/하한선 등 사용 가능한 경계선의 범위가 점점 넓어지고 있습니다. 그러기에 Android 앱 개발시에 자원을 남용하기 쉽다. 본 글에서는 레이아웃 깊이를 1단계 줄이는 방법 중 하나를 소개한다. 서론 하나의 화면을 구성하는 방법은 작성자에 따라서 다양한 방법으로 결과를 만든다. 그중 레이아웃 작업시에는 XML을 사용해서 구성하는 경우가 대부분이다. Android Studio에 기본적으로 적용된 Lint는 아래와 같다. 단일 XML에서 View Element의 갯수가 80개 이상인 경우 단일 XML에서 레이아웃 깊이가 10-Depth 이상인 경우 1번 경우인 단일 XML에.. 2023. 4. 13. 4 issues were found when checking AAR metadata: 이 오류에 대해 구글링을 해보면 그렇게 안된다.... 하는법을 작성하자. 2023. 4. 1. 둥근 모서리를 가진 그라데이션 테두리 사각형 만들기 2023. 3. 29. 위상정렬 사이클이 없는 방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것을 의미 예시) 선수과목을 고려한 학습 순서 설정 그래프 + 순서(단 방향이여야 한다.) 위 세 과목을 모두 듣기 위한 적절한 학습 순서는? 자료구조 → 알고리즘 → 고급 알고리즘 (O) 자료구조 → 고급 알고리즘 → 알고리즘 (X) 아이디어 : "제일 먼저 올 수 있는 정점은?" = 0인걸 먼저 찾기 위상정렬 알고리즘 큐를 이용하는 위상 정렬 알고리즘의 동작 과정은 다음과 같다 정점들의 Indegree, Indeg[1...N] 계산하기 들어오는 간선이 0개인(Indeg[i] == 0) 정점들을 찾아서 자료구조 D에 넣기 D가 빌때까지(Queue) D에서 원소 x를 꺼내서 "정렬"시키기 Graph 에서 정점 X "제거".. 2023. 3. 2. [프로그래머스] N-Queen 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 정말 5번이상 풀었지만 계속 풀이법을 근접할 뿐 풀지를 못했다.... 담에는 풀 수 있겠지...?? cols = [] result = 0 def Check(row, col): global cols for i in range(row): if cols[i] == col: return False if row - col == i - cols[i]: return False if row+col == i + cols[i]: return False return True def backtracking(row,n):.. 2023. 2. 20. [프로그래머스] [3차] 파일명 정렬 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제는 잘 풀었는데 s1과 s2 의 초기값을 잘못설정했다. s1은 만약 시작점이 "12abc" 일경우 한개는 HEAD이기 때문에 초기값을 0으로 설정하면 안된다. 또 s2는 for문에서 끝까지 가서 TAIL이 없을 경우를 대비해 초기값을 len(file) 이 옳다. def slice1(file): s1 = 1 s2 = len(file) for i in range(1,len(file)): if file[i].isdigit(): s1 = i break for i in range(s1,len(file)): if.. 2023. 2. 17. [프로그래머스] 롤케이크 자르기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 작성한 이유는 Counter를 잘쓰자는 의미이다.(난 왜이리 이 좋은 Counter을 안쓰는지 모르겠네) from collections import Counter def solution(topping): data1 = Counter(topping) data2 = set() result = 0 for t in topping: data1[t] -= 1 data2.add(t) if data1[t] == 0: data1.pop(t) if len(data1) == len(data2): result += 1 .. 2023. 2. 17. 이전 1 2 3 4 5 6 7 8 ··· 10 다음