3월, 2023의 게시물 표시

Android Flow

이미지
사용 언어: Kotlin 1.8.10 사용 버전: Android Studio Electric Eel 2022.1.1 Patch 2 ​ Android Flow를 알아보겠습니다. ​ Android Flow는 데이터의 변화를 확인하기 위해 만들어졌습니다. 2021년에 나왔나 보네요. 아래 동영상입니다. https://www.youtube.com/watch?v=fSB6_KE95bU Pancho가 등장합니다. 이 판초는 물을 뜨러 다니는 게 일입니다. 물(데이터)를 뜨러 다니는 Pancho. 너무 귀찮은데, 어떻게 해야 할까? 호수에 파이프를 연결해 버린다! Flow를 잘 설명하는 그림이었습니다. 저는 2023년 지금 처음 보는데요. 당시 개발자들이 열광했겠다는 생각이 드네요. 엄청 편해졌겠어요. ​ 아래는 Flow  문서입니다. https://developer.android.com/kotlin/flow Flow는 데이터의 변화를 체크하는 것이 아니라, 뚫린 관으로 데이터를 계속 받는 겁니다. 즉, 그냥 관을 뚫어서 연결합니다. 데이터가 있으면 관을 타고 내려올 것이고 받는 쪽은 새로운 데이터만 받으면 됩니다. 데이터가 없다면 아무것도 안 내려오겠죠? 저도 Pancho처럼 쉽게 살아봅시다. ​ ​ ​ ​ 제 앱은 설정이 존재하고, 설정이 변경되면 UI가 같이 변하는 구조입니다. 이 구조를 만드느라고 liveData를 엄청 많이 만들고, Fragment가 다시 실행

Algorithm Feature of Binary Search Tree(BST)

이미지
알고리듬 Feature of Binary Search Tree(BST)를 알아보겠습니다. ​ 이진 탐색 트리를 알아볼 건데요. 이진 탐색 트리를 모르면 알고리듬 해법을 찾을 수 없을 수 있으니까 이것이 무엇인지 알아봅시다. ​ 이진 탐색 트리는 다음과 같은 특징이 있습니다. • 각 노드에는 값이 있다. • 각 노드는 왼쪽 하위, 오른쪽 하위 최대 2 노드를 가질 수 있다. (하위 노드 개수 0 ~ 2) • 왼쪽 하위 노드는 현재 노드보다 값이 작다. • 오른쪽 하위 노드는 현재 노드보다 값이 크다. ​ ​ 그림으로 한 번 봅시다. 오른쪽 하위는 큰 숫자, 왼쪽 하위는 작은 숫자로 나타나집니다. 하위 노드의 개수는 0 ~ 2 개를 가질 수 있습니다. 끝. 카테고리: Algorithm

Algorithm Repeat in the same order

이미지
알고리듬 Repeat in the same order를 알아보겠습니다. ​ 같은 순서로 반복해야 하는 경우 어떻게 해야 할지 알아봅시다. ​ 처음 생각한 방법은 덱(Deque)을 이용해서 계속 순환시키는 것을 생각했습니다. 그런데, 생각해 보니, 정해진 숫자만 나오는 게 있더군요. 바로 나머지입니다. 4 개를 반복해야 한다면, %4를 사용해서 0~3까지 숫자로 반복 시킬 수 있습니다. ​ ​ 코드로 구현하면 아래와 같습니다. 16 번째 줄에서 repeat에 1을 더하고 그것을 4로 나눈 나머지를 대입하여 계속해서 순환시킬 수 있습니다. 끝. 카테고리: Algorithm

Android How to make a Bundle

이미지
사용 언어: Kotlin 1.8.10 사용 버전: Android Studio Electric Eel 2022.1.1 Patch 2 ​ 안드로이드 How to make a Bundle을 알아보겠습니다. Bundle은 String 키와 Parcelable 값으로 매핑된 클래스입니다. ​ 쉽게 말해서 Map인데, 전달이 가능한 Map입니다. Activity나 Fragment에 값을 전달할 때 많이 사용합니다. ​ ​ 먼저, 전달하고 싶은 Fragment를 만듭니다. 그리고 arguments에 넣어줍니다. Bundle()로 Bundle을 만들고 .apply를 사용합니다. 이제, 중괄호 안에 putLong 또는 putString 등을 사용하여 키와 값을 넣습니다. ​ 불러오는 것은 이렇게 불러옵니다. arguments를 사용합니다. 그리고 takeIf를 사용합니다. containsKey를 활용해서 해당 키가 있는지를 확인하고, 해당 키가 있으면 41 번째 줄이 실행되며 getString으로 해당 키에 있는 String을 불러옵니다. Activity에서는 putExtras를 사용해서 넣어줍니다. 여기서는 extras를 불러와서 takeIf를 사용합니다. 끝. 카테고리: Android

iOS How to use a Toggle switch

이미지
운영 체제: macOS Ventura 13.2.1 사용 버전: Xcode 14.2, Swift, SwiftUI ​ iOS How to use a Toggle switch를 알아보겠습니다. ​ iOS에서 제공해 주는 토글스위치를 사용하는 방법을 알아봅시다. 토글은 이런 버튼을 말합니다. 사용법은 간단합니다. body 부분에 Toggle()을 적어줍니다. 인자로는 토글에 표시될 이름과 켜짐 꺼짐을 관리할 @State 변수가 하나 들어갑니다. 토글에 스타일을 줄 수 있습니다. .toggleStyle()로 줍니다. 여기서는 기본 제공되는 button과 switch 스타일들만 보겠습니다. 끝. 카테고리: iOS

iOS Crash report

이미지
운영 체제: macOS Ventura 13.2.1 사용 버전: Xcode 14.2, Swift, SwiftUI ​ iOS Crash report를 알아보겠습니다. ​ 앱에서 충돌이 일어나면 리포트가 저장되어 있을 수 있습니다. 앱 스토어 커넥트에 들어갑니다. ​ 아래 사진을 보면, 뜬금없이 충돌이 표시되어 있습니다. 없으면 좋지만, 1 개라도 있으니 마음이 좋지 않습니다. ​ 보고서를 보려고 하는데, App Store Connect에서는 찾을 수가 없었습니다. ​ Xcode로 해당 앱의 프로젝트를 엽니다. ​ ​ Window - Organizer를 누릅니다. 그러면 창이 하나 뜹니다. 앱을 선택하고, Crashes를 선택하면 오류가 발생한 내용들이 나옵니다. 옆에 작게 뜨는 화살표를 누르거나, Open in Project...를 누르면 Xcode에서 해당 지점으로 이동됩니다. 또는 마우스 우 클릭을 해서 Show in Finder를 합니다. 이런 식으로 직접적으로 리포트를 열어서 볼 수 있습니다. 제 경우 EnvironmentObject에서 오류가 났다는데, SwiftUI는 오픈 소스가 아니다 보니 내부 소스 코드를 볼 수도 없고 어떤 상황에서 발생한지 몰라서 그냥 두기로 했습니다. ​ ​ 문제를 잘 해결하시길 바라며. ​ ​ 끝. 카테고리: iOS

iOS TabView Custom Image apply accent color

이미지
운영 체제: macOS Ventura 13.2.1 사용 버전: Xcode 14.2, Swift, SwiftUI ​ iOS TabView Custom Image apply accent color를 알아보겠습니다. ​ TabView에 본인이 직접 만든 이미지를 사용하고 싶은 경우가 있습니다. 한 번 넣어볼게요. ​ Assets.xcassets에 원하는 아이콘을 하나 넣어줍니다. 저는 blog icon으로 넣어줬습니다. 20 번째 줄의 Image에 blog icon을 넣어줍니다. 실행해 봅시다. 이미지 크기가 실제 이미지 크기로 들어가집니다. 그래서 원하는 아이콘이 있다면, TabView에 들어가기 알맞은 크기로 만들어줘야 합니다. ​ 여기서는 그냥 무시하고 계속 진행해 보겠습니다. ​ 분명 Second가 선택되었지만, 이미지 색상은 원본 색상이 됩니다. 다른 탭들은 파란색으로 활성화되는데 말이죠. 이걸 해결하려면 이렇게 합니다. ​ 21 번째 줄처럼 renderingMode(.template)를 사용합니다. 실행해 봅시다. 끝. 카테고리: iOS

iOS How to use TabView

이미지
운영 체제: macOS Ventura 13.2.1 사용 버전: Xcode 14.2, Swift, SwiftUI ​ iOS How to use TabView를 알아보겠습니다. ​ TabView 문서는 아래에 있습니다. https://developer.apple.com/documentation/swiftui/tabview TabView는 하단에서 뷰를 변경할 수 있는 요소를 말합니다. 마우스 우 클릭 - New File... 을 누릅니다. SwiftUI View를 만듭니다. 적당한 이름으로 만듭니다. 저는 FirstView로 만들었습니다. 탭은 3 개를 만들 것이므로 위와 같은 방법으로 뷰를 3 개 만듭니다. ContentView로 옵니다. TabView를 적고 탭에 표시할 3 가지 뷰를 적어줍니다. 실행해 봅시다. 하단에 보이지는 않지만, 클릭을 하면 화면이 전환됩니다. ​ ​ ​ 아이콘을 표시하기 위해 tabItem을 사용합니다. 표시 방법은 Label을 사용해도 되고, Image를 사용해도 됩니다. 실행해 봅시다. 짜잔. 끝. 카테고리: iOS

Android BottomNavigationView with DrawerLayout

이미지
사용 언어: Kotlin 1.8.10 사용 버전: Android Studio Electric Eel 2022.1.1 Patch 2 ​ 안드로이드 BottomNavigationView with DrawerLayout을 알아보겠습니다. ​ DrawerLayout과 BottomNavigationView를 같이 사용하면 이렇게 됩니다. 첫 메인 페이지에서만 Navigation Drawer을 사용할 수 있게 되는데요. 이걸 모든 첫 번째 페이지에서 활성화시켜 봅시다. 우선, 아랫글을 보고 Bottom Navigation을 사용합니다. https://shwoghk14.blogspot.com/2020/06/android-bottom-navigation.html 그리고 아랫글을 보고 Navigation Drawer를 사용합니다. https://shwoghk14.blogspot.com/2020/08/android-navigation-drawer.html AppBarConfiguration을 사용해야 합니다. lateinit var로 appBarConfiguration을 만듭니다. AppBarConfiguration.Builder를 사용하여 BottomNavigationView의 처음 페이지들을 넣습니다. 이렇게 하면, 뒤로 가기 표시가 안 나옵니다. 저는 BottomNavigationView에 3 가지 항목이 있어서 아래에 3 가지 id가 들어갑니다. 여기 Configuration에 OpenableLayout을 추가해 줍니다. NavigationUI.setupActionBarWithNavController의 3 번째 인자에 appBarConfiguration를 넣습니다. onSupportNavi