전체 글(91)
-
OAuth 2.0 정리
OAuth 2.0 OAuth 2.0 (Open Authorization 2.0) 은 인증을 위한 개방형 표준 프로토콜입니다. 이 프로토콜에서는 Third-Party 프로그램에게 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 방식을 제공합니다. 구글, 페이스북, 카카오, 네이버 등에서 제공하는 간편 로그인 기능도 OAuth2 프로토콜 기반의 사용자 인증 기능을 제공하고 있습니다. OAuth를 정리 하기 전에 사용될 용어에 대해 알아보겠습니다. 역할 이름 설명 Resource Owner 리소스 소유자 입니다. 예시로 구글 로그인을 할 사용자를 말합니다. Client Resource Owner의 리소스를 사용하고자 접근 요청을 하는 어플리케이션 입니다. Resource Server Resource..
2023.12.24 -
ioc (Inversion of Control) 소개
Ioc란?inversion of control을 직역 하면 반전된 컨트롤이라는 뜻입니다. 컨트롤이 바꼈다는건데 그것은 무엇을 말하는 걸까요? 여러 컨트롤을 말할 수 있지만 주로 의존성을 뜻합니다.의존성에 대한 컨트롤이 뒤바뀌었다 라고 이해 하시면 되겠습니다. 보통 의존성에 대한 주도권은 자기 자신이 가지고 있는게 일반적 입니다. 아래의 코드를 살펴 보겠습니다.class OwnerController { // 클래스 안에서 생성해서 관리 private OwnerRepository repository = new OwnerRepository(); } OwnerController클래스 안에서 OwnerRepository객체를 생성하여 repository 변수에 넣어줬습니다. 이변수의 주도권은 OwnerCont..
2023.12.23 -
git commit 합치기
개발을 하다 보면 사소한 변경으로 인한 commit을 할때가 있는데 이런게 쌓이다보면 지저분한 git 히스토리가 될수 있습니다. 이럴경우 commit들을 합쳐서 정리를 할수가 있는데 rebase를 통한 commit을 합치는 방법을 알아보겠습니다. commit 목록이 아래와 같다고 했을때 두번째~네번째 commit들을 합처 보겠습니다. 해당 프로젝트 경로에서 git bash를 실행해줍니다. rebase 사용하기 해당 프로젝트 경로에서 git bash프로그램을 실행합니다. 3개의 커밋을 합쳐줄거기 때문에 git rebase -i HEAD~3을 실행해줍니다. 2개의 커밋을 수정하고 싶을때는 2를 붙여 주면됩니다. 위의 경우에는 커밋이 4개 밖에 없기때문에 3까지 밖에 적용이 안됩니다. git rebase -i..
2023.12.17 -
코틀린 fragment 화면 전환시 이전 화면 유지하기
fragment를 사용한 바텀 네비게이션에서 화면을 전환하고 다시 원래 화면으로 돌아오면 화면이 유지 되지 않고 초기화 되는 문제점이 발견되었습니다. 이번 포스팅에서 화면 전환을 해도 fragment가 유지 되도록 코드를 짜보겠습니다. 먼저 fragment xml을 만들어 줍니다. fragment_monitoring.xml MonitoringFragment.class class MonitoringFragment : Fragment() { private var mBinding: FragmentMonitoringBinding? = null private val binding get() = mBinding!! override fun onCreateView( inflater: LayoutInflater, con..
2023.12.17 -
MVVM패턴 이란?
MVVM은 Model, View, ViewModel 로 구성되는데 한마디로 말하면, 체계적으로 앱을 만들고 관리하기 위해서 만들어진 디자인 패턴입니다. View : 화면을 구성하는 사용자 인터페이스 Viewmodel : view가 요청한 데이터를 Model에 요청 Model : 데이터를 관리하는 클래스 MVVM 사용하는 이유? MVVM 에서 가장 중요한 것은 관심사 분리 입니다. 여러 기능들이 분리되지 않고 한쪽에 쏠려있어 유지보수가 힘들어지는 문제를 해결하기 위해 나온 패턴입니다. 아래의 다이어그램을 확인해보겠습니다. 앱 아키텍처 가이드 뷰(Activity / Fragment)와 모델(Repository)이 분리되어 있고, 이 분리된 두 로직 사이에서 뷰의 이벤트에 따라 모델이 데이터를 반환/저장하도록..
2023.12.10 -
getLaunchIntentForPackage로 다른앱 실행시키기
getLaunchIntentForPackage를 사용하면 다른 앱을 실행시키는게 가능한데요 사용법에 대해 정리해보겠습니다. a 앱에서 b앱을 실행시키기 manifest 적용 실행시키는 앱이 아니라 실행이 될 앱에(b앱) 명시가 되어 있어야 합니다. 아래와 같이 manifestdp 추가해줍니다. ... ... 다른앱 실행하기 다른앱을 실행시킬 앱에 작성해줍니다(a앱). getLaunchIntentForPackage를 사용하여 intent를 생성 합니다. 하지만 여기서 null이 반환된다면 호출할 앱이 없다는 뜻이므로 playstore를 연결해 설치를 유도 할수 있게 합니다. // 실행시킬 앱의 패키지 var intent = packageManager.getLaunchIntentForPackage("b앱패키..
2023.12.06