분류 전체보기 12

[Android] Retrofit - Trust anchor for certification path not found 에러 해결

Retrofit을 이용한 http 통신 중에 javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException:Trust anchor for certification path not found 위와 같은 이슈가 발생한다. 원인은 Retrofit을 요청하는 웹사이트의 Certificate 인증서가 안드로이드 단말에 존재하지 않을 때 발생한다. 해결하기 위해 순서는 아래와 같다. 1. 요청하고자 하는 웹사이트의 인증서를 확인한다. 2. 인증서를 다운로드 받아서 프로젝트 내부 또는 외부에서 가져올 수 있도록 한다. 3. OkHttpClient에 인증서를 내포한 client를 만들 수 있는 Helper 클래스를 생성한다. 4. R..

카테고리 없음 2022.06.07

Unsupported Git Version 2.15.0 At least 2.17.0 is required (In Mac)

공부를 하던중 예제 프로젝트를 Clone 해올 일이 있어 Clone 을 하려던중 다음과같은 오류가 발생했다. 알고보니, Git 버전을 예전버전을 쓰고 있어서 난 문제였다. 해결방법 $ git --version git version 2.27.0 Homebrew 를 통해 최신버전의 git를 설치 $ brew install git - 번외 설치를 하고나서 아무리해도 Homebrew를 통해 설치된 git를 찾지 못하는경우. git에 대한 link를 새로 정의하는 것으로 문제를 해결할 수 있다. $ brew link --overwrite git

카테고리 없음 2022.06.05

깊은복사, 얕은복사

객체의 값을 복사하는경우 크게 얕은 복사(Shallow Copy), 깊은 복사(Deep Copy) 로 나뉘게 됩니다. “ 나는 단순히 해당 값만 필요해 해당값을 가져와 수정했을뿐인데 기존의 값도 같이 바뀌어버린다면? “ 이런식으로 혼동해서 사용하면 결과값 자체가 바뀔 수 있으니 해당 개념을 인지하며 사용해야합니다. 얕은 복사 (Shallow Copy) 얕은 복사의 경우, 값만 복사하는것이 아닌 주소 자체를 복사하기때문에 복사후 변수를 변경하거나 삭제하면 기존 객체의 변수값에도 변화가 생깁니다. class SampleClass(var id: Int) { ... } val instance1 = SampleClass(1) // 인스턴스 생성 val instance2 = instance1 // 인스턴스1을 2에..

카테고리 없음 2022.05.03

캡슐화 & 은닉화

❗ 캡슐화의 정의 객체의 속성(data fields)과 행위(methods)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉한다. 캡슐화와 은닉화? 캡슐화의 정의 : 메서드 안에서 어떠한 일이 일어나고 있는지 모르게 해야한다. (메서드의 내부 정보 제한) 은닉화의 정의 : 외부에서 객체의 속성을 함부로 접근하지 못하도록 한다. (속성의 접근 제한) 왜 캡슐화를 할까? 객체의 속성과 행위를 묶으면 응집도가 올라가므로 자율적인 객체가 된다는 장점이 있습니다. 자율적인 객체가 된다면 단순히 데이터 전달자 역할이 아니라, 자신의 상태를 스스로 처리할 수 있습니다. “ 그런데, 이상황에서 은닉화가 이루어지지 않는다면? “ 객체가 스스로 자신의 할일을 처리하지 못하고 외부에서 속성을 꺼내와 상태를 수정하..

카테고리 없음 2022.05.02

Retrofit & OkHttp

❗ 들어가기전! REST : 서버에 존재하는 데이터에 접근하기 위한 규칙의 모음 (행위,자원,표현) 으로 이루어져있다. REST API : REST 원칙을 잘 준수하는 API , HTTP를 설계할 때 지켜야 할 아키텍처 입니다. Retrofit & OkHttp 는 서버와 클라이언트 간 http 통신을 위한 클라이언트 라이브러리 입니다. 또한 OKhttp 는 Retorfit 의 베이스가 되고, Retrofit 은 REST API 방식을 사용합니다. Okhttp는 REST API, HTTP 통신을 간편하게 구현할 수 있도록 다양한 기능을 제공해주는 라이브러리이다. Retrofit이라는 라이브러리의 베이스가 된다. 그리고 Retrofit은 OkHttp를 기반으로 만들어졌다. Retrofit api에 특화된 C..

카테고리 없음 2022.04.28

Repository 패턴

❗ 개념알고가기 View Model 과 Data Domain 단위를 이어주는 레이어 기존 흐름은 ViewModel → View 적용시킨후 흐름은 ViewModel → Repository → View Repository 패턴과 MVVM Repository 의 역할을 이해하기 위해선 MVVM 패턴을 먼저 살펴볼 필요가 있습니다. 우선 MVVM을 살펴보자면 Repository 가 ViewModel 과 Room 이라고 하는 DB 나 Retrofit 사이에 있습니다. ViewModel 이 Activity 나 Fragment 같은 UI 에서 Repository 에 값을 요청하면 요청한 데이터를 보내준다는 뜻입니다. 이렇듯 분업화가 확실합니다. Repository 는 ViewModel 이 요청하는 데이터를 Room ..

카테고리 없음 2022.04.27

Android Studio 에서 깃허브 Repository 주소 변경하기

안드로이드 git 에서 리모트 저장소(remote repository)를 다른 주소 URL로 변경하고자 합니다. 예를들어 두 개의 git 리모트 저장소 있는 경우 한 쪽에서 다른 쪽으로 바꾸는 경우가 있겠죠. ! 언제 리모트 저장소 변경이 필요한가 1. 새로운 계정으로 repository를 생성했는데 앞으로는 이 계정을 사용해 형상관리를 함으로써 기존의 코드를 새로운 저장소로 주소를 바꿔야 되는 경우 2. git clone 을 따와 자신의 repository 에 커밋하고 싶은경우 - 기존 주소 : https://github.com/testOther/other.git - 새로운 주소 : https://github.com/testMy/My.git ! Git 저장소 주소 repository 변경하기 저장소 변..

카테고리 없음 2022.04.21

Post man - version mismatch detected 오류 해결

한동안 postman 을 켜지 않다가 어느날 필요한 상황이 생겨 켜보니 Looks like you've used a newer version of the Postman app on this system. Please download the latest app and try again. 라는 내용의 오류가 나왔고, 다른사람들이 시간낭비를 하지 않게 하기위해 이 포스트를 적습니다. 해결 방법 (In mac) 설치한 postman을 Finder 에 데스크탑 폴더를 들어가 실행 파일과 PostMan 폴더를 삭제 postman 재설치 해결 방법 (In Window) 설치한 postman을 에서 제거 파일탐색기 경로에 %appdata%를 입력, Roaming 폴더로 이동한 후 Postman 폴더를 완전히 삭제 파일..

카테고리 없음 2022.04.21

UI Layer

오늘은 제가 공부했던 Clean Architecture 개념 중 UI 레이어에 대한 부분을 포스팅하겠습니다. 구글 공식 Android Develop 문서를 참고했으며 , 이글의 틀린점이나 궁금한점에 대한 지적은 환영입니다. ❗ 알고가기 UI는 화면에 애플리케이션 데이터를 표시하고 사용자 상호작용의 기본 지점으로써의 역할을 수행합니다. UI Layer 는 사용자 상호작용 또는 외부입력 으로 인해 데이터가 변할때마다 UI가 변경사항을 업데이트 하도록 만들어야합니다. 즉, UI는 데이터 레이어에서 가져온 애플리케이션 상태를 시각적으로 나타냅니다. 하지만 일반적으로 데이터 레이어에서 가져오는 애플리케이션 데이터는 표시해야 하는 정보와 다른 형식입니다. 만약 UI용으로 데이터의 일부만 필요하거나 사용자에게 관련성..

카테고리 없음 2022.04.20