본문 바로가기

분류 전체보기239

[안드로이드] - 클린아키텍처 - 0 클린 아키텍처에 대해서 공부하기 이전에 왜 아키텍처를 공부해야 하는지 알아보자. 쓴이는 안드로이드 개발을 하면서 정말 다양한 디자인 패턴과 아키텍처를 접했다. MVC, MVP, MVVM, MVI 패턴 등등 또는 클린 아키텍처에 이르기까지 정말 다양하게 접했다. 블로그에서 트렌드라고 많이 나와있고 모르면 안된다는 생각에 그냥 사용법 익히면서 이런거구나 하고 넘어 갔었다. 섣부른 판단일 수 있겠지만 나와 같은 사람이 있을 것이다. 그래서 한 번 제대로 알아보려고 한다. 차근차근 정리해가며 알아가보자. 의문점 하나! Design 과 Architecture 는 무엇인가? 설계와 아키텍처 설계(design) : 특정 유형의 문제를 해결하는 방법으로 아키텍처보다는 좁은 개념이다. 아키텍처(architecture) .. 2023. 1. 27.
[안드로이드] - ShardPreferences, Datastore 차이 왜 Datastore 에 대해 알아보는 걸까? 우리는 안드로이드 개발을 하다보면, 간단한 데이터에 대해 로컬에 저장하여 사용한다. 가볍게 SharedPreferences 를 설명하자면 Key-Value 형태로 값을 저장하여 읽고 쓰는 간단한 방법이다. 데이터는 xml 파일로 로컬 저장소에 저장된다. 우리는 왜? Datastore 를 알아볼까 Datastore 는 Kotlin 코루틴 및 Flow 를 사용하여 비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장한다. 그리고 Andorid Developer 사이트에서 Datastore 사용을 권장한다. 또한 SharedPreferences 를 사용하는데에 여러 문제점이 존재한다. 그래서 권장하는 것 같고, 이제는 SharedPreferences 에서 Datas.. 2023. 1. 27.
[안드로이드 면접] - 4 : 1. 조인(join)의 역할은 무엇인가? 조인이란? 더보기 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것을 말한다. 조인의 역할이란? 더보기 테이블을 데이터 용량 낭비를 줄이고 데이터 관리하기 편하기 위해 테이블을 분리를 하는데, 이로써 얻는 단점인 데이터가 보기 힘들다는 부분을 여러 테이블의 데이터가 조합된 읽기 편하게 만들기 위함이다. 다양한 Join 방식 더보기 INNER JOIN : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. OUTER JOIN : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다. CROSS JOIN : 한 쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다. SELF JOIN : 자.. 2023. 1. 27.
[안드로이드 면접] - 3 : 1. 트랜잭션이란? 더보기 데이터베이스의 상태를 변화(SELECT, INSERT, DELETE, UPDATE)시키는 하나의 논리적인 작업 단위이다. 하나의 트랜잭션 안에서 여러 개의 연산이 수행될 수도 있다. 또한, 트랜잭션은 수행중에 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 성공이라고 할 수 있다. 2. ACID 란 무엇인가? 더보기 동시성 프로그램 또는 그러한 프로그램에서 데이터에 대한 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 특징이다. 그 특징 네 개를 일컫는 게 ACID 이다. [Atomicity, Consistency, Isolation, Durability] Atomicity : 트랜잭션의 연산은 모든 연산이 완벽히 수행되어야 하며, 한 연산이라도 실패하면 트랜잭션이 실패.. 2023. 1. 26.
[안드로이드] - ConstraintLayout 을 왜쓸까? ConstraintLayout ? 2016년 Google IO 에 공개된 레이아웃 에디터에 상호연관 시키기 위해 도입된 Layout 이다. 'constraint' 라는 단어 의미대로 제약조건을 걸어 View 들을 배치하는 역할을 하는 Layout 이다. 정말 다양한 제약조건이 있다. 이 부분은 android developer 를 참고하여 자세히 알아보자. 왜 ConstraintLayout 을 사용하라고 할까? 뷰 Layout 작업을 할 때 컨스트레인트 레이아웃을 주로 사용하라는 다른 글을 많이 보았다. 퍼포먼스 측면에서 좋다는 글을 봐서 개발할 때 늘 그렇게 개발했다. 하지만 여기서 그 왜? 라는 의문을 갖고 글을 적어보려한다. 그 이전에 우리는 개발자로써 Layout 작업을 하기 이전에 Renderin.. 2023. 1. 26.
[안드로이드 면접] - 2 : 1. Http VS Https 더보기 둘 다 인터넷을 이용하는 프로토콜이다. Hypertext transfer protocol 의 약자로 웹 서버와 사용자의 인터넷 브라우저 사이에서 문서를 전송하기 위한 통신규약이다. 둘이 비슷하지만 한 가지 다른 점은 https 가 모든 통신 내용을 암호화 한다는 점이다. 끝에 's' 가 붙은 건, secure socket 을 의미한다. 안전한 통신망이라는 뜻이다. 패킷이 암호화 되어 있기 때문에 패킷 캡쳐 프로그램으로 캡쳐를 하여도 암호화된 내용만 보인다. 암호화는 TLS 라고 하여 Transport 계층에서 이루어지고, L4 의 전송계층에서 암화가 이루어진다. TLS란? Transport Layer Security 의 줄임말로 과거 SSL 에서 발전하며 이름이 변경.. 2023. 1. 25.
[안드로이드 면접] - 1 1. OOM Killer 란? 더보기 Out of Memory Killer 의 약자로 메모리가 부족할 경우, 특정 프로세스를 강제 종료시킨다. 즉, OOM 이 발생하지 않도록 적은 프로세스를 죽여 많은 메모리를 확보하는 heuristic 에 기반한다. 그리고 OOM 상황이 발생하지 않도록 노력하는 것이 중요하여 안드로이드에서는 별도의 LMK 를 사용하고 있다. 2. OOM 발생원인은? 더보기 커널은 가상 메모리를 이용한 메모리를 할당하므로 실제 가용한 물리적 메모리보다 큰 프로그램 메모리를 할당할 수 있다. 즉, 프로그램에서 당장 사용하지 않는 메모리는 나중에 할당하기 때문에 실제로 사용 가능한 메모리를 초과한 프로세스가 load 될 수 있게 된다. 이것이 overcommit 이라 부르는데, 메모리가 실.. 2023. 1. 24.
[안드로이드 면접준비] - 0 : 하루에 하나 One a day 하루에 하나, 오늘부터 하루에 한 번 면접 관련 내용을 블로그에 업로드할 예정이다. 하루종일 개발을 하다보면 엄청 많은 정보가 내 머릿속에 들어갔다 나가지만 정작 기억에 남는게 없다.. 이해만하고 적용을 하다보니 내 머릿속에 잠깐 지식이 앉았다가 나가는 기분이다. 그러다보니 내가 이해한 내용을 설명하고 정리하기가 어렵다. 그래서, One a day (하루에 하나) 를 실천해볼 생각이다. 안드로이드 면접 블로그 내용을 내가 알고 있던 지식, 이해한 부분과, 여타 다른 블로그 글을 읽고 참고해서 글을 작성할 예정이다. 하루에 3~5개씩 정리할 예정이다. 주제는 CS[운영체제, 네트워크, 알고리즘, 자료구조], Android[디자인패턴, 아키텍처, Jetpack, 기본]를 다룰 생각이다. 기.. 2023. 1. 21.