깨알 개념/기타 10

Cold Flow와 Hot Flow (SharedFlow)

#1 Cold Flow와 Hot Flow#1-1 개요데이터 스트림은 크게 Cold Flow와 Hot Flow로 나눌 수 있다. 이 분류 기준에 대해 알아본다. 또, Kotlin의 Coroutines Flow를 활용해 간단한 Cold Flow 및 Hot Flow를 구현해본다.  #1-2 훌륭한 비유 What is the hot flow and cold flow in coroutines and the difference between them?I am mastering Kotlin coroutines and trying to figure out 1- what is hot flow and cold flow ? 2- what is the main difference between them? 3- when to ..

의존성 주입 (Dependency Injection)

#1 의존성 주입(Dependency Injection)이란?#1-1 Dependent와 Dependencyfun main() {    val car = Car()    car.startCar()}class Car {    private val engine = Engine()    private val airbag = Airbag()    private val battery = Battery()    fun startCar() {        engine.startEngine()        airbag.startAirbag()        battery.startBattery()        println("${this::class.simpleName} is ready")    }}Car 클래스는 En..

REST API (REpresentational State Transfer Application Programming Interface)

#1 무엇(What)에 대한 API인가?#1-1 개요REST(REpresentational State Transfer) 또는 RESTful API는 서버의 자원(Resource)을 두고, 클라이언트와 서버 간의 통신 방법을 규정하는 API(Application Programming Interface)다. 자원이란 데이터베이스에 저장된 데이터다. 블로그를 예로 들면 게시글, 댓글 등이 자원이다. 이 자원은 서로 구분할 수 있는 고유한 식별자(URI)를 가지고 있다. REST API에서는 URI에 속하는 하위 범주인 URL을 자원의 식별자로서 사용한다. 그리고 이 URL이 바로 우리가 일상 생활에서 사용하는 단어인 인터넷 주소다. #1-2 URL(Uniform Resource Locator)의 구조URL의 ..

API (Application Programming Interface)

#1 알고리즘 #1-1 API는 UI와 비슷하다. UI가 화면을 통해 사용자와 소프트웨어가 상호작용하는 규격이라면, API는 프로그래머끼리 또는 소프트웨어끼리 또는 프로그래머와 소프트웨어 간의 상호작용을 위한 규격이라는 점에서 그렇다. UI는 인터페이스에 불과하며, 실제 화면을 구성하는 것은 버튼ㆍ스크롤바ㆍ텍스트 박스ㆍ이미지 등이다. API 또한 엄연히 인터페이스에 불과하며, 실제로 기능을 구현하는 것은 라이브러리다. 예를 들어, Google Map 서비스를 실제로 구현하는 것은 구글 서버에 저장된 지도ㆍ위치 관련 라이브러리들이지 Google Map API 자체가 아니다. 사용자는 그저 API 즉, '연결된 라이브러리에 접근해 그 기능을 활용할 수 있는 관문(인터페이스)'을 통해 상호작용할 뿐이다. #1..

API, Framework, SDK, Tool, Project, Architecture, IDE, Library, Package의 관계

#1 알고리즘항상 쓰이는 개념이지만 그 관계를 파악하기 어려웠던 개념들을 정리했다. 다만, 위 정리는 이해를 돕기 위한 비유일 뿐이며, 각 요소들은 관점에 따라 설계도, 도구, 작업물의 범주를 얼마든지 넘나들 수 있다. 또, 위에 있는 요소와 아래 있는 요소가 언제나 반드시 부모 - 자식 관계를 형성하는 것은 아니다. #2 같이 보면 좋은 개념 API (Application Programming Interface)#1 알고리즘 API는 UI와 비슷한 맥락이 존재한다. UI가 사용자와 화면 간의 상호작용을 위한 규격이라면, API는 프로그래머끼리 또는 소프트웨어끼리 또는 프로그래머와 소프트웨어 간의 상호작용kenel.tistory.com

[Java] 설치, JRE와 JDK의 차이, 환경 변수 설정

#1 JRE와 JDK의 차이Gradle을 설치해서, Java 프로젝트를 Gradle을 통해 직접 빌드해보려고 했다. 먼저, Gradle은 Java를 요구하므로 Java를 먼저 설치한다. "자바를 설치한다"라는 건 크게 2가지의 의미로 나뉜다. 바로 JRE(Java Runtime Environment)를 설치하느냐, JDK(Java Development Kit)를 설치하느냐다. 비유하자면 JRE는 이미지 뷰어고 JDK는 이미지 편집기다. 둘다 Java를 실행시키는 일을 할 수 있지만, Java 개발은 JDK만 가능하다. JDK는 JRE의 기능에 더해 자바 컴파일러(javac)와 디버그 및 빌드 관련 기능을 가지고 있다. 자바는 분명 설치한 것 같은데, 마치 설치되지 않은 것처럼 동작한다면, JDK가 아니라..

display 속성 값 block, inline, inline-block의 차이

#1 웹 페이지 뒤에 나올 모든 코드를 하나의 파일에 합쳐 넣었다. 백문이 불여일견. 여러 개의 div를 나열하고 각각의 displayㆍwidthㆍheight 스타일 속성을 동적으로 변경할 수 있는 프로그램을 만들었다. 장난감처럼 마음대로 다루어보면서 감을 익히자. #2 알고리즘 #3 코드 #3-1 HTML abcd efgh ijkl mnop qrst uvwx yz #3-2 CSS #display_panels * { /* css iniciation */ padding: 0; margin: 0; box-sizing: border-box; } #display_panels {height: 200px;} #abcd {background-color: aquamarine;} #efgh {background-colo..

미디어 쿼리 (Media Queries)

#1 알고리즘#1-1화면 크기의 다양성을 고려한다는 말이 꼭 다른 플랫폼끼리의 다양성만을 의미하진 않는다. PC에서 웹 페이지를 볼 때 인터넷 창을 최대화해서 보지 않고, 예를 들면 화면 좌우 각각에 폭을 줄인 인터넷 창을 하나씩 켜 놓은 경우가 있다. 이때, 그에 맞는 적절한 동작을 미디어 쿼리가 수행할 수 있다. #1-2 #2 코드#2-1 HTML Media Queries #2-2 CSS@media screen and (max-width: 767px) { /* width

[Java] Map<Key, Value>의 Key 자리에 원시 타입(Primitive types) 데이터 형식이 올 수 없는 이유

#1 알고리즘 #1-1 자바의 Map 인터페이스에서, Map의 Key는 제네릭으로 작성되어 있다. 따라서, "제네릭(Generic) 자리에 원시 타입(Primitive types) 데이터 형식이 올 수 없는 이유"를 생각해야 한다. #1-2 먼저, 제네릭 탄생의 배경을 알아야 한다. 제네릭은, 자바에서 제네릭 도입 이전에 발생한 여러가지 문제(타입 안전성이 없고, 프로그래머가 일일이 명시적으로 형변환을 해야 하며, 코드 재사용성이 낮음)를 해결하기 위해 도입되었다. 제네릭은 많은 종류의 객체들을 다뤄야 하는 프로그래머가 객체를 더 쉽고 직관적으로 다룰 수 있도록 도와준다. #1-3 제네릭을 한 마디로 표현하면 객체 구별의 직관화이다. 따라서, 객체와 연관이 없는, 독립적인 개념인 원시 타입 변수의 데이터..