전체 글 230

안드로이드에서의 Parcelable vs Serializable

안드로이드를 개발하다보면 다른 액티비티로 데이터를 전달할때 그 데이터가 복잡한 클래스의 객체라면 Serializable 또는 Parcelable 를 사용하여 직렬화 하여 인텐트에 추가해야한다. 그럼 직렬화는 뭘까? 직렬화는 1. 메모리 내에 존재하는 정보를 보다 쉽게 전송 및 전달하기 위해 byte 코드 형태로 나열하는 것이다. 여기서 메모리 내에 존재하는 정보는 즉 객체를 말한다. 2. JVM 의 메모리에 상주 되어있는 객체 데이터를 바이트 형태로 나타내는 기술 역직렬화 라는 개념도 있는데 말그대로 위의 내용의 반대라고 생각하면 된다. Serializable 부터 뭔지 알아보자. Serializable 는 Java 에서 제공하는 interface다 사용하기도 쉽고 직렬화 또한 잘된다. 그러나! 사용하기..

Android 2021.01.28

안드로이드 DI 라이브러리 Koin 에 대해

DI 가 의존성 주입을 의미하는 단어라는것은 알고 있었다. Spring 공부할때 bean 으로 의존성 주입하고 어노테이션으로 썼던 기억이 난다. 안드로이드에서는 사용해보지 않았는데 Dagger2 라는 라이브러리가 그 역할을 해주고 있다는건 알고 있었다. 그렇게 알고만 있다가 새로 공부하고 프로젝트에 적용해보고 싶은 욕심이 생겨서 찾아보던 중 Dagger2와 성능차이도 나지 않는데 훨씬 쓰기 쉽고 직관적인 라이브러리 Koin 이 있다는걸 알고 사용해보기로 했다. 쉽고 좋은데 쓰지 않을 이유는 없지. 먼저 DI를 왜 쓸까? 사용하면 얻는 이점부터 알아보자. - 의존관계 설정이 프로그램 실행시에 이루어지기 때문에 컴포넌트간 결합도를 낮춘다. - 코드 재사용성이 증가한다. - 단위 테스트의 편의성을 높여준다. ..

Android 2021.01.24

안드로이드 MVVM 패턴 - 개요

얼마전부터 공부하고 있는 MVVM 패턴에 대해 정리하기위해 포스팅을 하기로 마음먹었다. 사실 MVVM 패턴 자체만 두고보면 엄청 어렵고 그런 개념은 아닌데 제대로 만들기 위해서 들어가는 여러가지 따라오는것들이 어려운거 같다. LiveData 라던지 RxJava 라던지.. 이런것들도 다음 포스팅에 적을것이다. 일단 MVVM 패턴에 대해서 먼저 알아보자. MVVM 패턴은 예전 MVP 포스팅에서도 언급했듯 MVP패턴의 View와 Presenter , Model 사이이 양방향 의존성이 심해서 이것을 해결하기 위해 만들어졌다. MVVM 은 크게 View - ViewModel - Model 로 이루어져있고 단방향 의존성을 가진다. VIew는 ViewModel 을 참조하지만 ViewModel 은 View 를 참조하지..

Android 2021.01.24

리액트 네이티브에서 화면이동하기

안드로이드에서는 intent 를 이용해서 쉽게 화면간 이동을 할 수 있었다. React-native 에서는 아쉽게도 intent 는 없는데 이를 쉽게 할 수 있게 만들어준 라이브러리가 있다. 바로 Navigator 라는 것인데 나는 많은 Navigator중에서도stackNavigator를 사용해봤다. 안드로이드의 intent도 Activity 가 stack 형식으로 쌓이는데 이 동작과 매우 유사해서 사용해봤다. 사실 정확한 사용방법이 아닐수도 있다. 정답이 아닌 기록을 위해 적는것이니 참고만 하면 좋을 것 같다. 먼저 App.js 에서 const Stack = createStackNavigator(); function App() { return ( ); } 이렇게 Stack 으로 사용될 요소들을 미리 적..

React 2021.01.19

리액트 네이티브에서 firebase 으로 로그인하기

먼저 프로젝트에 firebase 관련 파일을 설치해야한다. npm 으로 설치하면 되는데 검색하면 금방 나온다. firebase 관련 설정코드를 먼저 작성해줘야한다. const firebaseConfig = { apiKey: '', authDomain: '', databaseURL: '', projectId: '', storageBucket: '', messagingSenderId: '', appId: '' }; 내용이 다 비워져 있는데 넣어야하는 값들은 파이어베이스 콘솔에서 이미지 처럼 프로젝트 설정을 누르면 모두 적혀있다. 관련 값을 위 코드에 다 넣어주면 된다. 설정을 마쳤다면 이제 코드가 어떤 firebase 를 참조해야할지 알게된 상태가 된다. 설정을 해줬으니 그 설정에 맞는 firebase 객체..

React 2021.01.19

마법같은 애니메이션 Lottie 에 대해서

안드로이드 개발자들이 디자인과 애니메이션까지 손수 제작하기란 쉽지 않다. 물론 그런 능력자들도 많이 있기 마련이지만.. 그래서 강력하지만 gif 에 비해 훨씬 가볍고 적용하기도 쉬운 Lottie 에서 설명해보려고 한다. 이 라이브러리는 주거대여 서비스로 유명한 에어비엔비에서 제작했다. 애프터 이펙트라는 디자인 툴에서 만든 애니메이션을 json 파일로 변환하여 넣어주기만 하면 바로 애니메이션이 앱에 작동한다. json 파일이라 크기도 가볍다. 그럼 어떻게 적용하면 될까? 우선 코드를 보자. bulid.gradle 에 라이브러리를 추가해준다. implementation 'com.airbnb.android:lottie:버전' // 로티 사용하고 싶은 화면에 아래처럼 객체를 생성한다. var Lottiehear..

Android 2021.01.19

Virtual DOM 은 뭘까?

이번 글은 Virtual DOM 에 대해서 기록해보려고 한다. React 나 Vue.js 에서도 쓰이고 있는 Virtual DOM 이라는 단어자체는 많이 들어봤는데 어렴풋이 기억에만 있는 개념을 정리해보고자 한다. 먼저 이것을 알기에 앞서 DOM 이 뭔지부터 되짚어 볼 필요가 있다. 구글에 DOM 을 검색 했을때 가장 먼저 나오는게 뭔지 보자. "DOM 은 동일한 문서를 표현하고, 저장하고, 조작하는 방법을 제공한다. DOM 은 웹 페이지의 객체 지향 표현이며, 자바스크립트와 같은 스크립팅 언어를 이용해 DOM 을 수정할 수 있다" 출처 : developer.mozilla.org/ko/docs/Web/API/Document_Object_Model/%EC%86%8C%EA%B0%9C DOM 소개 - Web ..

React 2021.01.19

5. MVP 패턴 - 2

한동안 운영하고 있는 어플리케이션 때문에 바빠서 포스팅을 하지 못했다. 그때 적었던 기억을 떠올리며 이어서 작성해보려고한다. 이전 포스팅에서 MVP 패턴에 대해 개요를 적었는데 오늘은 MVP 에 대해 조금 더 알아보자. 이전에 있던 포스팅에서는 자바 코드로 설명했지만 해당 코드의 MVP 패턴에 마음에 안드는 부분들이있어서 그 뒤에 코틀린으로 제작한 프로젝트로 예시를 들겠다. 언어만 다를뿐 패턴자체는 차이가 없으니 MVP 패턴에 대해 읽어보기에는 전혀 문제가 없을 것이다. 아래에 설명될 코드는 회원가입에 대한 코드다. 먼저 로그인하는 화면이 있다고 하자. class LoginActivity : AppCompatActivity(), MemberContract.View { var nickname : Strin..

카테고리 없음 2021.01.14

리액트 네이티브 - 커스텀 버튼 만들기

루트 폴더에 CustomButton.js 을 만들어준다. 기본적으로는 TouchableOpacity 를 뼈대로 만든다. 그냥 리액트의 button 은 아이폰과 안드로이드에서 보이는게 다를때가 많아서 TouchableOpacity 로 만들면 통일감 있게 커스텀 버튼을 만들 수 있다고 한다. 버튼마다 크기나 색 , 타이틀이 달라야하니 Props 로 각 버튼의 스타일 정의를 넘겨받는다. // CustomButton.js import React, { Component } from 'react'; import { TouchableOpacity, Text, StyleSheet, } from 'react-native'; export default class CustomButton extends Component{ s..

React 2020.12.16

4. 안드로이드 MVP 패턴

MVP 패턴은 앞에서 설명했던 MVC 패턴과 유사하다. MVC 패턴을 경험했다면 대략적이 감을 잡는데 크게 어렵지 않을것이다. MVP는 Model + View + Presenter를 말합니다. 출처: https://beomy.tistory.com/43 [beomy] 가장 큰 차이점이라고 하면 presenter 라는게 중간에서 view와 model 사이에서 데이터를 받고 넘겨주고하는 우편배달부 같은 역할을 한다. 그로인해 MVC 패턴에서 있었던 view와 model 사이의 의존성이 해결된다. 물론 좋은점이 있으면 나쁜점이 있는것처럼 view 와 presenter 의 의존성은 어플리케이션이 복잡해질수록 늘어난다는 단점이 있다. 그래서 추가로 등장한 mvvm 패턴 등이 생겨났지만 이들도 각자 장단점이 있으므로..