분류 전체보기
-
Serialization 라이브러리 마이그레이션 과정(Gson -> Kotlinx-Serialization)Android & Kotlin 2023. 12. 23. 11:42
개요위 글에서는 Gson 에서 Kotlinx-Serialization 으로 의 마이그에션 도중 겪은 문제 및 그 과정에서 얻게된 정보들을 정리합니다.마이그레이션 배경에 대해서는 이전 글을 참고해주세요 📌 마이그레이션 순서라이브러리 선언 (각 모듈 별로 선언해야함)모델 변경 (어노테이션 수정), Adapter (Serializer) 정의retrofit converter 정의 및 추가통신 이외 부분에서도 Gson 걷어내기 (optional)(크게는 위 순서대로 진행했지만 마이그레이션을 실제로 진행하다보면 부분부분이 물려있어 왔다갔다하며 수정이 필요하다.) 1. 라이브러리 선언- serialization 라이브러리 선언- retrofit converter 추가 (왓슨형 감사합니다 ㅜㅜ)- 모듈화가 되어 ..
-
직렬화 라이브러리 마이그레이션 이유(Gson 에서 Kotlinx-Serialization)Android & Kotlin 2023. 12. 22. 00:12
📌 마이그레이션 배경 Gson 은 Kotlin 의 Null-Safety 를 완전히 지원하지 못한다 Backend 로 부터 약속에서 어긋난 응답을 받는 경우가 존재한다(None-Null type 필드가 Null로) Backend 와 약속된 응답 형태에 근거하여 응답값의 Nullable 을 판단해왔었지만, 간혹 약속되지 않은 Null 을 전달해줄 때가 있었다. 이때Gson 은 None-Null 로 정의 된 필드에 대해서 Null 값이 들어 올 경우 해당 객체에 Null을 주입한다. 그리고 이 필드가 사용되는 시점(정확한 시점으로 규정할 수 없음)에 에러를 발생시킨다. 시점을 규정할 수 없는 탓에 예외처리도 당연히 불가하며 이는 곧 앱 크래시로 이어질 수 있는 위함한 결과를 초래할 수 있다. [ 마이그레인션 ..
-
Hilt 관련 리펙토링 기록 (@binds @Provides 차이 , UsecaseModule)Android & Kotlin 2023. 1. 8. 15:39
구조설명 (클린 아키텍처) 1. 클린아키텍처 구조에서 Hilt 를 통해 의존성 주입을 사용하고 있었다. 2. 이때 Repository (Interface) 의 주입을 위해 RepoisotyModule 을 만들어 사용했고 @Provides 를 사용해왔었다. 3. 그리고 Usecase 에서 Ropository 와 ErrorHandler 에 의존했고 이에 따라 각각 UsecaseModule, NetowrkModule 을 정의해주어 사용했다. class GetSomeUseCase( private val repository: Repository, private val errorHandler: ErrorHandler ) : BaseUseCase() {...} @ErrorHandler @Provides @Single..
-
DialogFragment 오류 정리 (Radius , 크기 지정)Android & Kotlin 2022. 11. 28. 17:53
Dialog Framgnet 모서리 둥글게 (radius 설정) 문제상황 cardView 로서 radius 를 주던 drawable 에서 배경을 정의해서 적용하던 적용이 되지 않음 해결 방법 아래와 같이 정의 된 style 을 적용 or 코드로서 windowBackground, windowNoTitle 부분을 설정 //style.xml class Popup : DialogFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setStyle(STYLE_NO_TITLE, R.style.popupStyle) } ... } Dialog Fragment 크기 조절 하기 문제상황 dialo..
-
By 키워드를 이용한 Shared PreferenceAndroid & Kotlin 2022. 11. 18. 18:44
1. SharedPreferences 기본 사용법 val sharedPref = getSharedPreferences("name", Context.MODE_PRIVATE) with (sharedPref.edit()) { putString("key", "value") apply } 2. By 키워드를 통한 SharedPreferences 사용법 장점 값에 대한 접근, 수정이 매우 편함 (변수처럼 취급할 수 있음) 매번 getter, setter 를 구현해줄 필요가 없음 SharedPreference 를 객체를 생성하거나 가져오지 않아도 됨 구현 방법 1. ReadWriteProperty 를 구현한 Preference class 를 정의한다 //PreferenceProperty.kt class StringP..
-
Android 13 알아보기 (Target SDK 33 으로 변경)Android & Kotlin 2022. 11. 11. 19:02
목적 target sdk 를 33으로 올림에 있어 꼭 알아야할 부분에 대해 정리해보자 개발 환경 구성 안드로이드 스튜디오 업데이트 SDK 설치 Tools > SDK Manager > SDK Platforms → Android API 33 다운로드 Tools > SDK Manager > SDK Tools → Android SDK Build-Tools 33 다운로드 Android 13 Emulator 세팅 알림 런타임 권한 Android 13 미만 앱 설치시 Notification 을 띄울 수 있었음 Notification 권한을 갖는 것이 기본 Android 13 이후 runtime permission 을 받아야만 notification 을 띄울 수 있음 Notification 권한이 없는 것이 기본 PO..
-
운영체제CS/운영체제 2022. 10. 10. 03:14
운영체제 란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 협의의 운영체제(커널) : 운영제제의 핵심 부분으로 메모리에 상주하는 부분 -> 좁은 의미에서의 운영체제 : 커널 광의의 운영 제제 : 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함하는 개념 운영체제의 목적 컴퓨터 시스템에 자원을 효율적으로 관리 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 운영체제의 분류 [동시 작업 가능 여부] 단일 작업 한번에 하나의 작업만 처리 MS-DOS 프롬푸트 상에서 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음 구형 핸드폰, 엘리베이터 등 특수목적을 위해 하나의 작업만을 필요로하는 경우 현대에도 사용됨 다중 작업 현대 운영체제 :..
-
Cookie/SessionCS 2022. 9. 12. 21:49
Connectionless http 프로토콜은 "connectionless, stateless"의 특징을 갖는다. 각각의 서버에서 제공하는 http 프로토콜 버전을 사용하고 있다. HTTP/1.1에서는 keep-alive 헤더를 통해 설정된 횟수 or 시간 만큼 연결상태를 지속한다. HTTP/2.0 에서는 keep-alive 핃르를 무시한다. 대신 웹페이지를 떠날때까지 연결을 열어놓는다. 📌 Cookie 키와 값이 저장되어있는 파일이다. 4kb 까지 저장가능 사용자가 설정하지 않아도 브라우저가 request header 에 쿠키를 자동으로 넣어서 서버에 전송한다. 쿠키에는 세션쿠키, 지속쿠키(persistent cookie)가 존재한다. Cookie 동작 방식 클라이언트가 페이지를 요청한다. 서버에서 쿠..