๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€196

[Android] ์•ˆ๋“œ๋กœ์ด๋“œ ๊ตฌ์„ฑ ์š”์†Œ * ํ•ด๋‹น ๋‚ด์šฉ์€ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์•Œ๊ฒŒ๋œ ์‚ฌ์‹ค์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”! +) ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ์‹œ์  : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ํ•˜๋Š” ์ˆœ๊ฐ„ -> UI ์š”์†Œ ๊ฐฑ์‹ , ๋ณ€๊ฒฝ ์ผ๋ฐ˜ ์Šค๋ ˆ๋“œ ์ƒ์„ฑ ์‹œ์  : ์‹œ์Šคํ…œ์ด๋‚˜ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์ดํ›„์— ์ƒ์„ฑ 4๋Œ€ ์š”์†Œ(Component)๋ž€ - Activity - Service - Broadcast Receiver - Content Provider ๊ทธ ์™ธ์— Intent, view, Fragment ๋“ฑ์ด ์žˆ์Œ ์•กํ‹ฐ๋น„ํ‹ฐ(Activity) - UI ํ™”๋ฉด์„ ๋‚˜ํƒ€๋ƒ„ -> ์ฆ‰ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์‹คํ–‰ ํ–ˆ์„ ๋•Œ ๋ณด๊ฒŒ ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ํ™”๋ฉด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ - ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์—ฌ๋Ÿฌ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ - ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์ƒ์„ฑ์€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์ด๋ฉฐ ์—ฌ๊ธฐ์„œ ์•กํ‹ฐ๋น„ํ‹ฐ.. 2020. 8. 17.
[Android, Kotlin] ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค์™€ ๊ธฐํƒ€ ํด๋ž˜์Šค Do it! ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฑ…์„ ์ฐธ๊ณ  ๋ฐ ์ธ์šฉ ํ•˜์—ฌ ์ž‘์„ฑ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฑ…์— ์—†๋Š” ์ฃผ๊ด€์  ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค DTO๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  DTO๋Š” ์ผ์ข…์˜ ํ‘œ์ค€๊ณผ ๊ฐ™์€ ์•ฝ์† -> ์ „์†กํ•˜๊ฑฐ๋‚˜ ๋ฐ›๊ณ ์ž ํ•˜๋Š” ์–ด๋–ค ์š”์†Œ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ ๋ทฐ๋ž€ mvc๋ชจ๋ธ์—์„œ ๋ทฐ๋ž€ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ์ˆ˜ํ–‰ํ•จ ๋ชจ๋ธ์ด๋ž€ mvc๋ชจ๋ธ์—์„œ ๋ชจ๋ธ์ด๋ž€ ๋ฐ์ดํ„ฐ์˜ ํ‘œํ˜„์„ ์œ„ํ•ด ์ƒ์„ฑ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค์˜ ์„ ์–ธ ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•จ - ์ฃผ์ƒ์„ฑ์ž๋Š” ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ - ์ฃผ์ƒ์„ฑ์ž์˜ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” val, var - abstract, open, sealead, inner ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค๊ฐ€ ์ž๋™ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์„œ๋“œ data class Customer(var name: String, var email: String) .. 2020. 8. 9.
[Kotlin 20200805] ํ”„๋กœํผํ‹ฐ ์ดˆ๊ธฐํ™” 06_1 ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ํ”„๋กœํผํ‹ฐ์™€ ํ•„๋“œ์˜ ์ฐจ์ด์  ์ž๋ฐ”์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šค ๋‚ด์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ 'ํ•„๋“œ'๋ผ๊ณ  ํ•˜๊ณ  ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” 'ํ”„๋กœํผํ‹ฐ'๋ผ๊ณ  ์นญํ•จ. ํ”„๋กœํผํ‹ฐ์˜ ๊ฒฝ์šฐ ์ ‘๊ทผ ๋งค์„œ๋“œ์ธ getter์™€ setter๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์˜ ํ•„๋“œ์™€ ๋‹ค๋ฅธ ๋ช…์นญ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ. ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ๊ฐ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ์ ‘๊ทผ ๋ฉ”์„œ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋ฉฐ ์ฃผ ์ƒ์„ฑ์ž์— ์˜ํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. class ClassName(var a: String, var b: Double) // ํด๋ž˜์Šค ์ •์˜์™€ ํ•จ๊ป˜ ์ฃผ ์ƒ์„ฑ์ž์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•จ ์ฝ”ํ‹€๋ฆฐ์—์„œ์˜ ์ ‘๊ทผ ๋ฉ”์„œ๋“œ - val ๋กœ ์„ ์–ธํ•œ ํ”„๋กœํผํ‹ฐ๋Š” getter๋งŒ ๊ฐ€๋Šฅ. ๊ฐ’ ๋ฐ”๊พธ๋Š” ๊ฒƒ ๋ถˆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— - var์€ ๋‚ด๋ถ€์—์„œ ์ ‘๊ทผ ๋ฉ”์„œ๋“œ๊ฐ€ .. 2020. 8. 5.
[Kotlin 20200804] ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์ธํ„ฐํŽ˜์ด์Šค ์ฐธ๊ณ  ๋ฐ ์ธ์šฉ ๋„์„œ : Do it! ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ฐธ์กฐ - ์ธํ„ฐํŽ˜์ด์Šค ์ฐธ์กฐํ•˜๋Š” ํด๋ž˜์Šค -> ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ€์ด๋“œ์— ๋”ฐ๋ผ ๋‚ด์šฉ ๊ตฌํ˜„ - ๋‹ค์ค‘ ์ƒ์†์€ ๋ถˆ๊ฐ€๋Šฅ ํ•˜์ง€๋งŒ ๋‹ค์ค‘ ์ธํ„ฐํŽ˜์ด์Šค ์ง€์ •์€ ๊ฐ€๋Šฅ - ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค์— ์˜ํ•ด ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ ๋ช…์ด ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ -> ์•ต๊ธ€ ๋ธŒ๋ž˜ํ‚ท()์„ ์‚ฌ์šฉ open class A { open fun a() = println("class a and method a") fun b() = println("class a and method b") } interface B { fun a() = println("interface a method a") fun c() = println("interface b method b") } class C : A(), B{ override.. 2020. 8. 4.
์Šค์ฝ”๋นŒ ์ง€์ˆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋” ๋งต๊ฒŒ ๋งค์šด ๊ฒƒ์„ ์ข‹์•„ํ•˜๋Š” Leo๋Š” ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Leo๋Š” ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๋‘ ๊ฐœ์˜ ์Œ์‹์„ ์•„๋ž˜์™€ ๊ฐ™๏ฟฝ๏ฟฝ programmers.co.kr ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต์—์„œ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ž˜ ๋ณด๋ฉด ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๊ฐ€ ์ ํ˜€ ์žˆ๋‹ค. ์ด๋ฒˆ์— ํ•˜๊ฒŒ ๋œ ๊ฒƒ์€ ํž™(Heap) > ๋” ๋งต๊ฒŒ ์ด๋‹ค. ์ž‘์€ ์ˆ˜์™€ ๊ทธ ๋‹ค์Œ ์ž‘์€ ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—ฐ์‚ฐ์„ ํ•˜๊ณ  ๋‹ค์‹œ ๋ฆฌ์ŠคํŠธ์— ๋„ฃ์–ด์„œ ์ตœ์†Œ๊ฐ’ ๊ธฐ์ค€์— ๋Œ€ํ•œ ์กฐ๊ฑด๋งŒ ๋งž์ถ”๋ฉด ๋˜๊ฒ ๋‹ค ์‹ถ์—ˆ์œผ๋‚˜ ํšจ์œจ์„ฑ์—์„œ ๊ณผ๊ฐํžˆ ์•„์›ƒ๋‹นํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์—ฌ๊ธฐ์„œ 'ํž™'์„ ์ œ์‹œํ•œ ๊ฑธ๊นŒ? ์Šคํƒ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฑธ๊นŒ? def solution(scovile, k): answer = 0 w.. 2020. 8. 3.
[Kotlin 20200803] ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•ด๋‹น ๋‚ด์šฉ์€ Do it! ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฑ…์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ธ์šฉ ๋ฐ ์ •๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €์˜ ๊ฐœ์ธ์ ์ธ ๊ฒฌํ•ด๋‚˜ ์˜๊ฒฌ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋˜๋„๋ก ์ฑ…์„ ๋ณด๊ณ  ์‘์šฉํ•ด์„œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. 05_3 ์ƒ์†๊ณผ ๋‹คํ˜•์„ฑ ์ƒ์†์˜ ์žฅ์  : ์ƒ์œ„ ํด๋ž˜์Šค์˜ ์žˆ๋Š” ๋‚ด์šฉ์„ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„๋„ ๋จ ๋‹คํ˜•์„ฑ ์žฅ์  : ํ•˜๋‚˜์˜ ์ด๋ฆ„์œผ๋กœ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ ์ƒ์†๊ณผ ํด๋ž˜์Šค์˜ ๊ณ„์ธต - ํŒŒ์ƒ ํด๋ž˜์Šค(ํ•˜์œ„ ํด๋ž˜์Šค)์—์„œ๋Š” ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค(์ƒ์œ„ ํด๋ž˜์Šค)์™€ ๋‹ค๋ฅธ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋งŒ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•ด๋„ ๋จ - ์ฝ”ํ‹€๋ฆฐ์˜ ์ตœ ์ƒ์œ„ ํด๋ž˜์Šค Any ํด๋ž˜์Šค -> ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด Any ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›์Œ - ์ฝ”ํ‹€๋ฆฐ์—์„œ ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•˜๋ ค๋ฉด open ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ. open ํ‚ค์›Œ๋“œ๋ฅผ ์ ์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ํด๋ž˜์Šค๋กœ ์„ .. 2020. 8. 3.
[Kotlin 20200802] ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ํด๋ž˜์Šค์™€ ๊ฐ์ฒด ์ฐธ๊ณ  ๋ฐ ์ธ์šฉ ๋„์„œ : Do it! ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ ๊ฐœ์ธ์ ์ธ ๊ฒฌํ•ด ์ฝ”ํ‹€๋ฆฐ์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•œ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ณต์žกํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 05_1 ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋… 1. ์ถ”์ƒํ™”(Abstraction) : ํŠน์ • ํด๋ž˜์Šค ๋งŒ๋“ค ์‹œ ๊ธฐ๋ณธ ํ˜•์‹์„ ๊ทœ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•. ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๋Œ€์ƒ์— ๋Œ€ํ•ด ํ•„์š”ํ•œ ๋งŒํผ ์†์„ฑ๊ณผ ๋™์ž‘์„ ์ •์˜ํ•˜๋Š” ๊ณผ์ • 2. ์ธ์Šคํ„ด์Šค : ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜์ง€ ์•Š์Œ. ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ์ธ์Šคํ„ด์Šค๋ผ ํ•˜๋ฉฐ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ 3. ์ƒ์† : ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋‚ด์šฉ์„ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋ฌผ๋ ค๋ฐ›๋Š” ๊ฒƒ์„ ๋งํ•˜๋ฉฐ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์†.. 2020. 8. 3.
[Kotlin 20200730] ํ”„๋กœ๊ทธ๋žจ ํ๋ฆ„ ์ œ์–ด ์ธ์šฉ ๋ฐ ์ฐธ๊ณ  ์„œ์  : Do it! ์ฝ”ํ‹€๋ฆฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์กฐ๊ฑด๋ฌธ if๋ฌธ๊ณผ if~else๋ฌธ if (์กฐ๊ฑด์‹) { // ๋งŒ์ผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฌธ์žฅ์ด ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ ๋ธ”๋ก ๊ตฌ๋ฌธ์ธ ์ค‘๊ด„ํ˜ธ ์ƒ๋žต๊ฐ€๋Šฅ } else { } val answer = if (a > b) a else b ์™€ ๊ฐ™์ด ํ•œ์ค„์— ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Œ ๋ธ”๋ก์˜ ํ‘œํ˜„์‹์ด ๊ธธ์–ด์งˆ ๋•Œ - ์กฐ๊ฑด๋ฌธ ๋ธ”๋ก ํ‘œํ˜„ ๊ธธ์–ด์ง€๋ฉด ์ค‘๊ด„ํ˜ธ๋กœ - ๋ณ€์ˆ˜์— if๋ฌธ์„ ํ• ๋‹นํ•  ๊ฒฝ์šฐ ๋ธ”๋ก์˜ ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์ด ๋ณ€์ˆ˜์— ๋ฐ˜ํ™˜๋˜์–ด ํ• ๋‹น val answer = if () { // ๋งˆ์ง€๋ง‰ ๋ฌธ์žฅ์ด ๋ฐ˜ํ™˜๋˜์–ด answer์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ํ• ๋‹น๋จ } else if๋ฌธ์œผ๋กœ ์กฐ๊ฑด๋ฌธ ์ค‘์ฒฉ readLine() : ์ฝ˜์†”๋กœ ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›๋Š” ํ•จ์ˆ˜ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์˜ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์€ String(๋ฌธ์ž์—ด ํƒ€์ž…) !!. : no.. 2020. 7. 30.
[Kotlin 20200729] ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€ ๋žŒ๋‹ค์‹๊ณผ ๊ณ ์ฐจ ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๊ธฐ - ๊ธฐ์กด ๊ธฐ๋ณธํ˜• ๋ณ€์ˆ˜ : ํ• ๋‹น ๊ฐ’์€ ์Šคํƒ์— ์ €์žฅ๋จ. ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ’์€ ๋ณต์‚ฌ ๋˜์–ด ์ „๋‹ฌ - JVM ์€ ํฌ์ธํ„ฐ ์ฃผ์†Œ ์—ฐ์‚ฐ ์—†์Œ -> ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ๊ฐ์ฒด ์ „๋‹ฌ. ์ด๋•Œ ๋ณต์‚ฌ๋˜๋Š” ๊ฐ’์€ ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ - ํ•จ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ ๋˜๋Š” ๊ฒฝ์šฐ -> ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ํ•จ์ˆ˜๋Š” ์ฆ‰์‹œ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฐ’์„ ์ „๋‹ฌ(๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ) - ์ธ์ž๋กœ ์ „๋‹ฌ๋˜๋Š” ์‹œ์ ์—์„œ ์‹คํ–‰ ๋จ - ๋žŒ๋‹ค์‹ ํ•จ์ˆ˜์˜ ์ฆ‰์‹œ ์‹คํ–‰ - ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ง์ ‘ ๋žŒ๋‹ค์‹์„ ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•ด ์คŒ ex) val sum = a(lambda()) val lambda: () -> Unit = {} ์ด๋ฆ„์— ์˜ํ•œ ๋žŒ๋‹ค์‹ ํ˜ธ์ถœ - ์‹ค์ œ๋กœ ํ˜ธ์ถœํ•  ๋•Œ ์‹คํ–‰ - ๋ณ€์ˆ˜๋ช…์— ๋žŒ๋‹ค์‹ ์ž์ฒด๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋ณต์‚ฌ๋จ (์ฆ‰์‹œ ์‹คํ–‰ ์•ˆํ•˜๊ณ  ์ „๋‹ฌ๋งŒ ํ•˜๋ ค.. 2020. 7. 29.
์ž์› ๊ณ ๊ฐˆ ๊ณต๊ฒฉ SYN ํ”Œ๋Ÿฌ๋”ฉ (SYN Flooding) ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ณด์•ˆ ์„ค๊ณ„์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ์ž์› ๊ณ ๊ฐˆ ๊ณต๊ฒฉ ์ค‘ SYN ํ”Œ๋Ÿฌ๋”ฉ์ด ์žˆ๋‹ค. ์ด๋Š” TCP ํ”„๋กœํ† ์ฝœ์˜ ๊ตฌ์กฐ์ ์ธ ๋ฌธ์ œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•œ๋‹ค. SYN ํ”Œ๋Ÿฌ๋”ฉ์— ์˜ํ•ด ์‹œ์Šคํ…œ ์ž์›์ด ๊ณ ๊ฐˆ ๋˜๋ฉด์„œ ์ •์ƒ ์š”์ฒญ์— ๋Œ€ํ•ด ๋Œ€์‘ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค. ์šฐ์„  ์ด์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์œ„์—์„œ ๋งํ•œ TCP ํ”„๋กœํ† ์ฝœ์˜ ๊ตฌ์กฐ์ ์ธ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์•Œ์•„๋‘๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค. ์ •์ƒ์ ์ธ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„์™€์˜ ์—ฐ๊ฒฐ ์›น ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ด๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์›น ํŽ˜์ด์ง€๋กœ ์ ‘๊ทผํ•œ๋‹ค. ์ฆ‰ ์‰ฝ๊ฒŒ ๋งํ•ด ํด๋ผ์ด์–ธํŠธ๋ž€ ์„œ๋น„์Šค๋ฅผ ์š”๊ตฌํ•˜๋Š” ์ชฝ์ด๋‹ค. ์„œ๋ฒ„๋Š” ์ด ์›น ํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ์ •๋ณด๋‚˜ ์„œ๋น„์Šค๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๋งˆ์ฃผํ•˜๊ณ  ์žˆ๋Š” ๋‹จ๋ง ๊ธฐ๊ธฐ๋‚˜ ์ปดํ“จํ„ฐ๋ผ ์ƒ๊ฐํ•˜๊ณ  ์„œ๋ฒ„๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์—…์ฒด์˜ ์ปดํ“จํ„ฐ๋ผ ์ƒ.. 2020. 7. 27.
๋ฌผ๋ฆฌํ…Œ์ดํ„ฐ ์ €์žฅ์†Œ ์„ค๊ณ„ ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ์–ต ์žฅ์น˜์— ์ €์žฅ์ด ๋  ๋•Œ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋•Œ ์ด ๊ธฐ์–ต ์˜์—ญ์„ ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„์ด๋ผ ํ•จ +) ์ฃผ์†Œ์˜ ์ข…๋ฅ˜ 1. ๋…ผ๋ฆฌ ์ฃผ์†Œ : ๋ฌผ๋ฆฌ ์ฃผ์†Œ์˜ ์ƒ๋Œ€์ ์ธ ๊ฐœ๋…. ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์†Œ์™€ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉ์ž๊ฐ€ ๋ถ€์—ฌํ•œ ์‚ฌ์šฉ์ž ๊ด€์ ์˜ ์ฃผ์†Œ๋กœ์„œ ์‹ค์ œ ์ฃผ์†Œ์™€ ๊ตฌ๋ถ„๋จ 2. ๋ฌผ๋ฆฌ ์ฃผ์†Œ : ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์†Œ. ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งํ•จ 3. ์ƒ๋Œ€ ์ฃผ์†Œ : ์ƒ๋Œ€์ ์ธ ์ฃผ์†Œ๋กœ์„œ ์ ˆ๋Œ€ ์ฃผ์†Œ์™€ ์ƒ๋Œ€์ ์ด ๊ฐœ๋…. ๊ณ ์ •๋œ ์ ˆ๋Œ€ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค ์šธ ๋•Œ ์‚ฌ์šฉํ•จ 4. ์ ˆ๋Œ€ ์ฃผ์†Œ : ์‹ค์ œ ์ฃผ์†Œ ํ•ด์‹œ ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ž„์˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋งคํ•‘ํ•˜๋ฉฐ ์ด๋ฅผ ์‚ฌ์šฉํ•œ ํ•ด์‹œ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” key์™€ value์—์„œ key๋ฅผ ๊ณ ์ •๋œ ๊ธธ์ด์˜ ํ•ด์‹œ ๊ฐ’์œผ๋กœ ๋งคํ•‘ํ•œ๋‹ค. ์ •๋ ฌ์ด ํ•„์š” ์—†์œผ๋ฉฐ ์ด ํ•ด์‹œ๊ฐ’.. 2020. 6. 15.
Could not locate device support Files ํ•ด๊ฒฐํ•˜๊ธฐ xcode๋ณด๋‹ค ํœด๋Œ€ํฐ ๋ฒ„์ „์ด ๋” ๋†’์•„์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. xcode ์—…๋ฐ์ดํŠธ ํ•˜๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ๋ถ€๋“์ดํ•˜๊ฒŒ ์ €์ฒ˜๋Ÿผ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์•„๋ž˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ๋„ํ•ด ๋ด…์‹œ๋‹ค ์šฐ์„  ์•ˆ๋‚ด ๋ฌธ๊ตฌ๋ฅผ ์‚ดํŽด๋ณด๋ฉด iOS 13.3.1 support file์ด ํ•„์š”ํ•œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋งํฌ๋กœ ๋“ค์–ด๊ฐ€ ์ฃผ์„ธ์š” https://github.com/filsv/iPhoneOSDeviceSupport filsv/iPhoneOSDeviceSupport Xcode iPhoneOS DeviceSupport files (6.0 - 13.3). Contribute to filsv/iPhoneOSDeviceSupport development by creating an account on GitHub. github.com ์ด๊ณณ์—์„œ ์•ˆ๋‚ด ๋ฌธ๊ตฌ์—.. 2020. 2. 25.