HTTP에 대해 간단히 소개하는 장이다. 시작~일단, HTTP란 무엇일까? 책에서는 인터넷의 멀티미디어 배달부라고 소개한다. 우리가 사용하는 PC는 클라이언트로, 리소스가 있는 웹서버에 HTTP 프로토콜을 이용해 request를 보낸다. 이때, HTTP는 신뢰성 있는
Value class와 같이 소개된 Sealed interface 정리!Sealed class에 어떤 한계가 있어서 Sealed interface가 나왔을까?Sealed class는 특별한 form의 abstract class이다. 따라서, 하나의 sealed clas
Kotlin 1.6.0이 나온 이 시점,, 별안간 Kotlin 1.5.0 정리해버리기!Kotlin 1.5.0에 Value class가 발표되었다! 이는 Inline class로 익숙한 Kotlin language feature이다. 이에 대해 자세히 알아보겠당.이런 함
공식문서를 읽고 정리한 글입니다!한 Activity 또는 Process에서 다른 Activity를 시작하고 그 결과를 받아올 수 있다. 기존에는 Activity 클래스에서 제공하는 startActivityForResult(), onActivityResult() API가
코틀린 - map, flatmapMap배열의 각 요소를 순회하며 그 요소를 조작하고, 조작한 요스들을 담은 배열을 리턴즉, 1대1 매핑을 의미Flatmap배열 또는 iterable을 리턴요소가 배열이라면? -> 그 내부적으로 순회하며 하나의 배열을 리턴. 즉, iter
Observable한 lifecycle-aware 데이터 홀더 클래스보통 View
코틀린 표준 라이브러리는 Object context 내에서 코드 블록 실행 목적의 여러 함수(apply, also, let, with, run)를 제공함객체에서 이 함수를 사용하면 임시범위가 형성되며 이름 없이 객체에 접근할 수 있음!위 다섯 가지 함수는Context
한정된 수의 뷰를 유지해 큰 데이터 집합을 표시하는 컨테이너ViewHolder 패턴을 사용해 View를 재활용함RecycledViewPool에서 현재 쓰이지 않는 View를 관리화면에 보이는 수 정도의 itemView만 만들어 놓고 scroll되며 안보이게 된 item
뷰모델은 액티비티보다 긴 생명주기를 가진다. 따라서 이를 이용해 Configuration 변경 시(onDestroy() -> onCreate()) UI 상태값을 저장하고 다시 화면에 보여줄 수 있다.위 그림에서 확인할 수 있듯, 액티비티의 onDestroy() 이후에
이것도 디자인패턴은 아니지만..! 패턴 다이어그램에 자주 쓰이니까 이 시리즈에 넣었습니다!둘 다 part-whole을 나타내는 Association 관계를 특수하게 나타낸 것unidirectional associationplayer(part) -> team(whole)
전체-부분 구조를 갖는 경우, 트리로 이를 표현할 수 있다.리프 노드와 브랜치를 구분해 개발을 진행하는 경우, if (leaf) else 이런식으로 구현하게 되면 복잡성이 높아지고 에러가 발생하기 쉬워진다!이런 케이스는 어떻게 구현하는 게 좋을까?Common Inter
\[백준 신기한 문제다! 벽을 한 번만 부술 수 있는데 이걸 어디에 어떻게 설정해서 알 수 있을까 생각했다. 보통 이차원 배열을 맵으로 사용하는데, 여기서는 한 차원을 더 뒀다. 삼차원 배열을 사용했다. 0j는 한 번도 벽을 부수지 않은 케이스를 다루고 1j는 벽을 한
서명자를 확인하고 서명자가 해당 전자문서에 서명했다는 사실을 나타내기 위해 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보인증: 메세지의 근원 == 나무결성: 보낸 메세지가 위변조되지 않았음서명 알고리즘: 전자문서에 전자적 형태의 정보를 결합하는 것검증 알고
디자인패턴은 아니지만 이 시리즈가 가장 적합한 거 같아서 여기에 넣었습니다! 상속 Inheritance, 기존 클래스의 속성을 물려 받는 것 is-a 관계 위임 Delegation, 책임을 다른 객체에 전달하는 것 has-a 관계 re-exporting method 상속의 대체방안이 될 수 있음 다른 클래스의 instance를 가져 그 instance에 m...
\[Leetcode LRU Cache 안드로이드 개발 중 종종 들은 키워드이다. LRU 알고리즘은 페이징 교체 알고리즘 중 하나인데, 가장 최근에 쓰이지 않은 페이지를 교체하는 알고리즘이다. 이 알고리즘을 적용한 캐시가 LRU 캐시이다!페이징 교체 알고리즘을 공부한 적
프로그램 실행 시 OS로부터 할당받는 메모리로 JVM 내 위치Class Loader가 적재한 클래스에 대한 메타 정보 저장Type InformationField InformationMethod InformationClass Variable(static)\-> 클래스 사
Java Virtual Machine, 자바 바이트코드를 실행할 수 있는 주체\*자바 바이트코드 = Java Source File을 자바컴파일러가 컴파일 시 생성ref. https://medium.com/@neil.wilston123/why-java-is-pl
\[네트워킹] 대칭키, 비대칭키와 관련된 글 입니다!사람들은 네트워크를 통해 패킷을 주고 받습니다. 주고받으며 여러 스위치, 라우터 등을 지나가는데요, 네트워크 상에 공격자가 그 패킷을 훔쳐 데이터를 열람할 수 있습니다!이를 미연에 방지하기 위해 "네트워크 데이터를 암
전 포스팅에서 클린 아키텍처를 알아봤다. 이제 안드로이드에서 그 원칙을 어떻게 적용할 수 있을지 알아보자.안드로이드 앱의 특성에 맞게 레이어를 위와 같이 구분한다.Presentation LayerUI(activity, fragment)를 포함하며 한 개 이상의 유스케이