๊นจ์•Œ ๊ฐœ๋… ๐Ÿ“‘/๊ธฐํƒ€ 11

์ผ๋ก  ๋จธ์Šคํฌ์˜ ์‚ฌ๊ณ ๋ฒ•๊ณผ ์ถฉ๊ณ 

#1 1์›์น™ ์‚ฌ๊ณ ๋ฒ•#1-1 ์ •์˜์ง ์ผˆ๋Ÿฌ: ์ผ๋ก  ๋จธ์Šคํฌ๋Š” "๊ทธ๊ฒŒ ์ •๋ง(really) ์ œ์ผ ์ค‘์š”ํ•œ ๊ฑฐ์•ผ?"๋ผ๊ณ  ๋Š์ž„์—†์ด ์งˆ๋ฌธํ•˜๋ฉฐ, ๊ทธ ์งˆ๋ฌธ์˜ ๊ณผ์ •์—์„œ ๋ชจ๋“  ๊ฐ€์ •, ํ™•์‹ , ํŽธ๊ฒฌ์„ ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค (์˜คํ”ˆ ๋งˆ์ธ๋“œ). ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ์ƒ๊ฐ์˜ 99%๋Š” ํŽธ๊ฒฌ์„ ์ง€ํ‚ค๋ ค๋Š” ๋ณ€๋ช…์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ 98%๋Š” ์•„์˜ˆ ํ‹€๋ ธ์„ ๊ฑฐ๊ณ ์š”. ์ƒ๊ฐ์˜ ๋ฒ”์œ„๋ฅผ ๋„“ํ˜€์•ผ ์ƒˆ๋กœ์šด ๊ฑธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.1์›์น™ ์‚ฌ๊ณ ๋ฒ•(First principles thinking)์€ ๋จผ์ € ๋ชจ๋“  ํ˜„์ƒ์„ ์ชผ๊ฐœ์„œ, ๊ทธ ์†์˜ ๋‚ด์žฌ๋œ ๋ณธ์งˆ์„ ์ฐพ๋Š” ์‚ฌ๊ณ ๋ฒ•์ด๋‹ค. ๊ทธ๋ฆฌ๊ณค "์ง„์งœ(really)?"๋ฅผ ๋๊นŒ์ง€ ๋ฌผ์–ด์„œ ์ •๋ง๋กœ ๋งž๋Š” ์‚ฌ์‹ค์ด๋‚˜ ๋…ผ๋ฆฌ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ฐํ˜€๋‚ธ๋‹ค. ๊ทธ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๊ธฐ๋ฐ˜(๋ณธ์งˆ) ์œ„์— ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์•„ ์˜ฌ๋ฆฐ๋‹ค.  ์ผ๋ก ์€ ๋ฌผ๋ฆฌํ•™์˜ ๊ธฐ๋ณธ ์›์น™์„, ์–ด๋–ค ํ˜„์ƒ์— ๋‚ด์žฌ๋œ ๋ณธ์งˆ๋กœ์„œ ๋‘๊ณ  ์ƒ๊ฐํ•˜๋Š” ..

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 ..

Unit Testing - Test double

#1 Test doublefun main() { // Dependency (Test double) ์ธ์Šคํ„ด์Šค ์„ ์–ธ val testDouble = TestDouble() // Dependent ์ธ์Šคํ„ด์Šค ์„ ์–ธ val dependent = Dependent(testDouble) // Unit test ์ง„ํ–‰ if (dependent.doMathOperation(10) == 55) { println("ํ…Œ์ŠคํŠธ ์„ฑ๊ณต") } else { println("ํ…Œ์ŠคํŠธ ์‹คํŒจ") }}class Dependent(private val mathCalculator: OriginalDependency) { fun doMathOperation(n: Int): Int ..

์˜์กด์„ฑ ์ฃผ์ž… (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