Application (11) 썸네일형 리스트형 [iOS] AfterGPT 출시와 생각 2월 말에 AfterGPT가 출시되었다. https://apps.apple.com/in/app/aftergpt/id6477769508 AfterGPT AfterGPT는 ChatGPT 영어 스피킹 기록장입니다. ChatGPT와 대화 후에, AfterGPT에서 해당 대화를 저장 및 관리할 수 있습니다. 또한 사용자가 사용했던 영어 표현에 대해 더 자연스러운 표현을 제안받을 apps.apple.com 애당초 토이 프로젝트 느낌으로 조금씩 개발을 하였다. 그런데 막상 완성되고 또 내가 직접 이용하다보니 이제는 욕심이 나서 하나 둘씩 추가하고 싶은 기능들이 있다. 그와 동시에 해당 어플이 가지고 있는 문제점들도 속속히 보이고 있다. 그와 관련된 내 생각들을 정리하고자 한다. 당연하게도 ChatGPT 정책에 강.. [iOS] iOS App Template 분석 https://iosapptemplates.com/templates/swiftui-starter# Free SwiftUI Starter Project - iOS App Templates | Download Download our free iOS SwiftUI starter project to learn SwiftUI quickly. Boilerplate app coded in SwiftUI - layout, images, navigation - open-source in SwiftUI iosapptemplates.com SwiftUI starter project이다. 총 12개의 앱 스크린으로 구성된 프로젝트의 코드를 볼 수 있다. 아래는 해당 디렉토리 구조이다. View 파일은 단순히 UI 요소에 대한.. [iOS] 상태 관리 SwiftUI에서는 SSOT를 기반으로 상태를 관리한다. SSOT는 Single Source Of Truth로 데이터의 값을 결정하는 곳이 단 하나의 위치 에서만 존재 해야한다는 이론이다. 이를 통해 데이터의 일관성을 준수한다. 아래에서는 구체적인 방법들에 대해서 정리하였다. 1. @State와 @Binding @State 속성 래퍼는 뷰 내에서 변경 가능한 상태를 나타낸다. 변경 가능한 상태를 사용하면 뷰에서 해당 상태가 변경될 때마다 자동으로 다시 렌더링된다. @Binding 속성 래퍼는 다른 뷰의 @State 속성과 바인딩되어, 두 뷰 간에 데이터를 공유하고 동기화하는 데 사용된다. import SwiftUI struct ContentView: View { @State private var isTo.. [iOS] iOS를 선택한 이유 그동안 안드로이드 어플 개발을 목표로 공부를 진행해왔다. 주로 안드로이드 어플 개념에 대한 공부였고 실제 프로젝트 코드 기반으로 진행했었다. 다만 진행 과정에서 어느 정도 생각이 바뀐 부분이 있어서 정리하고 왜 iOS 개발을 하기로 했는지 설명해야겠다. 이렇게 한번 정리해두면 나중에 쉽게 리마인드를 할 수 있어 좋다. 1. 내가 사용할 어플 나는 아이폰 유저이다. 그렇기에 안드로이드 어플을 사용할 수 없다. 내가 사용할 수 없다면 재미가 확 줄어든다. 나 자체가 고객이 되어야 훨씬 재밌게 개발을 할 수 있다. 물론 안드로이드를 사용하는 사람이 더 많고, 그 곳이 더 시장성이 있을 것이다. 다만 그것을 보고 안드로이드 개발을 진행하기엔 우선 재미가 없고, 재미가 없으면 끈기있게 공부를 진행할 힘이 안난다... [Android] Coroutine 예시 Coroutine 은 비동기 프로그래밍을 위한 프로그램 구성요소이다. 루틴 또는 스레드와 유사한 개념으로, 코드의 실행을 일시 중단하고 나중에 다시 시작할 수 있는 블록이다. 이러한 일시 중단과 재개는 애플리케이션의 효율성, 성능, 및 가독성을 향상시킬 수 있다. AppModalDrawer(drawerState, currentRoute, navActions) { TasksScreen( userMessage = entry.arguments?.getInt(USER_MESSAGE_ARG)!!, onUserMessageDisplayed = { entry.arguments?.putInt(USER_MESSAGE_ARG, 0) }, onAddTask = { navActions.navigateToAddEditTask(.. [Android] 4대 컴퍼넌트 기본적인 개념을 대충 알아두고 코드를 보고 다시 개념을 보면 그 의미를 조금 더 깊게 알 수 있다. Android 의 기본 4대 컴퍼넌트에 대해 가단하게 정리해보자. 후에 봤을 때 '아 이게 이런 내용이었어!' 하고 알 수 있게끔 액티비티 (Activity) UI를 나타내는 화면 사용자와 상호작용 진입점 역할 여러 화면 간의 내비게이션 서비스 (Service) 백그라운드에서 재생 (사용자 인터페이스 없이) 오래 실행되는 작업을 처리하는 데 적합 e.g. 음악 재생, 데이터 동기화, 백그라운드에서 파일 다운로드 방송 수신자 (Broadcast Receiver) 메시지 전달 및 이벤트 수신 e.g. 배터리 부족, SMS 수신, 인터넷 연결 변경 컨텐츠 제공자 (Content Provider) 데이터 저장, .. [Android] 데이터 저장 및 관리 참고하여 공부하고 있는 android architecture sample 의 데이터 저장 및 관리 부분이다. 안드로이드에서 데이터 저장 및 관리는 어떻게 수행되는지 파악하기 위해 각 파일에서 어떠한 역할이 수행되는지 알아보았다. 또한 그 과정에서 처음 보는 개념 및 궁금증에 대해 따로 정리해두었다. 각 파일 별 역할 DefaultTaskRepository.kt: 기본 작업 리포지토리 클래스를 정의한다. TaskRepository 인터페이스를 구현한다. 로컬 데이터 소스(localDataSource)와 네트워크 데이터 소스(networkDataSource)를 사용하여 작업(Task) 데이터를 관리한다. ModelMappingExt.kt: 이모델 간 변환을 위한 확장 함수를 정의한다. 데이터 모델 간의 변환.. [Kotlin] view binding 코드 해석 (var, val, lateinit, nullable) private lateinit var auth: FirebaseAuth private var _binding: FragmentEmailpasswordBinding? = null private val binding: FragmentEmailpasswordBinding get() = _binding!! 위의 코틀린 코드를 읽기 위해서 필요한 지식을 공부해보았다. var 와 val var 키워드로 선언된 변수는 값을 변경할 수 있는 반면에, val 키위드로 선언된 변수는 한번 초기화되면 값을 변경할 수 없다. lateinit 변수를 선언할 때, 초기 값을 할당하는 것이 아니고 나중에 필요한 시점에 값을 할당할 수 있다. view binding 안드로이드 앱 개발에서 UI 요소와 XML 레이아웃 파일을 연결하고.. [Android] Activity 와 Fragment 의 차이 Activity 앱이 UI를 그리는 screen을 제공함 사용자와 상호작용하는 하나의 화면을 담당 앱의 진입점 역할 Fragment Activity 안에서 사용할 수 있는 모듈 하나의 Activity 안에 여러 Fragment 포함 가능 Activity의 일부이며, 독립적으로 관리 Activity에서 Fragment를 추가, 제거, 교체하여 동적 UI 일반적으로 큰 화면에서는 하나의 Activity에 여러 개의 Fragment를 사용하여 유연한 UI를 구성한다. Activity와 Fragment는 각각 자체적인 생명주기를 가지고 있으며, 이 생명주기는 앱의 동작 및 화면 전환을 관리하는 데 중요하다. Activity 생명주기 onCreate(): Activity가 처음 생성될 때 호출된다. 여기에서 초기.. [Android] quick-start android (AndroidManifest.xml 분석) 웹과 마찬가지로 로그인, 회원가입은 firebase 연동을 통해 구현할 수 있다. 관련해서 공식 문서도 잘 되어있었다. 다만 단순히 코드의 부분부분만 나와있는 경우에는, 내가 아직 초보자라 그런지 직접적으로 사용하기 어려웠다. firebase를 이용한 샘플 코드(quickstart-android)는 전체 코드가 나와있어 사용하기 용이하였다. https://github.com/firebase/quickstart-android/tree/master/auth 이는 firebase 를 이용해서 다양한 로그인 방법(이메일+비밀번호, 구글, facebook oauth, MFA) 등에 대한 구현 코드이다. 코드의 양은 좀 되지만 구조가 단순하고 직관적이었다. 학습용으론 제격으로 보였다. 전체 코드를 통으로 분석하는 .. 이전 1 2 다음