분류 전체보기
Kotlin object의 초기화 시점과 companion object의 초기화 시점 차이 알아보기
object와 companion object의 초기화 시점 object는 싱글톤 인스턴스를 간편하게 만들기 위해 Kotlin에서 제공해주는 방법이다. object를 작성하면 싱글톤 패턴을 구현하기 위한 긴 코드를 작성할 필요 없이 쉽게 싱글턴 객체를 만들 수 있다. companion object 또한 클래스에 종속된 정적인(static) 값들을 만드는데 사용되며 여러번 생성되는 것이 아닌 한 번만 생성되는 싱글턴 패턴을 가진다. 하지만 Kotlin에서 object와 companion object는 서로 다른 초기화 시점을 갖는다. 이번 글에서는 각각의 초기화 시점에 대해 알아보려고 한다. object의 초기화 시점 object는 실제로 사용 될 때까지 초기화가 지연된다. 이에 대한 것은 공식 문서에 다음..
defer과 async 사용해 HTML에서 JavaScript 코드 로딩 시점 변경하기
HTML에서 JavaScript 코드 로딩 시점 순차적으로 로딩되는 HTML HTML에서 JavaScript 코드의 로딩은 HTML 코드가 작성된 순서대로 이루어진다. 순서대로 이루어진다는 것은 위에서 부터 아래로 내려가면서 구성요소를 인식한다는 뜻이다. 예를 들어 아래와 같은 HTML 파일이 있다고 해보자. 이 HTML에서는 head부터에서 script가 추가되는데 이 스크립트는 numPlayers라는 변수를 가지고 이 변수는 document에서 "num-players"라는 아이디를 가진 구성요소를 가져온다. 참가자 수: 하지만 이 코드에서 numPlayers는 유효하지 않다. 이유는 num-players라는 아이디를 가진 구성요소가 body부에 존재하기 때문이다. 이 때문에 numPlayers는 아무..
[JavaScript] undefined, null, NaN의 차이 알아보기
undefined, null, NaN의 차이 알아보기 JavaScript를 다루면서 undefined, null, NaN 이라는 값을 자주 보게 된다. 이 값들은 JavaScript를 다루면서 가장 중요한 값들이고 각각 중요한 의미를 담고 있다. 이번 글에서는 이들의 차이에 대해 다루어 보고자 한다. undefined 이란 무엇인가? 초기화가 되지 않을 시 자동으로 할당되는 값 undefined undefined는 변수에 값을 설정하지 않은 경우 자동으로 할당되는 값이다. const는 값을 만들면서 초기화를 같이 해야 하므로 undefined가 될 수 없지만 let이나 var로 선언된 변수는 변수 설정과 동시에 값을 할당하지 않아도 되므로 undefined가 될 수 있다. 예를 들어 아래와 같이 변수를 ..
UUID란 무엇이고 어떻게 구성되는가? 언어별(Kotlin, Java, JavaScript, C#, Python) UUID 만드는법 알아보기
UUID란 무엇인가? UUID(Universally Unique IDentifier)란 네트워크 상에서 중복되지 않는 ID를 만들기 위한 표준 규약이다. 로컬에서 ID를 관리한다면 어떤 아이디들이 생성되었는지 확인한 후 중복을 체크하는 것이 가능하지만, 네트워크 상에서는 이야기가 다르다. 네트워크는 ID를 관리하는 중앙 관리자가 없기 때문에 중복 확인이 불가능하다. 따라서 네트워크 상에서 중복되지 않는 ID를 만들려면 중복되는 확률이 0에 가까운, 매우 낮은 확률을 가지는 ID를 만드는 방법을 사용해야 한다. "중복되는 확률이 0에 가까운, 매우 낮은 확률을 가지는 ID를 만드는" 방법을 표준화 한 것이 바로 UUID이다. UUID는 계속해서 생성해도 중복이 생길 가능성이 0에 가깝다. UUID의 구성 ..
[Compose Text] alignByBaseLine 사용해 텍스트 기준선 정렬하기
Text의 기준선이 필요한 이유 우리가 노트 앱을 만든다고 해보자. 노트 앱은 다양한 크기의 문자들이 들어간다. 만약 정해지지 않은 높이의 한 줄에 여러 크기의 Text가 존재한다고 할 때, 이 Text들이 만약 중앙 정렬된다면 어떻게 될까? 이를 코드로 한 번 만들어보자. MultipleTextRow는 Row의 verticalAlignment 속성을 Alignment.Center로 설정해서 두 개의 Text를 중앙 정렬한다. @Composable fun MultipleTextRow() { Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { Text(text = "Hello", fontSize =..