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

์ „์ฒด ๊ธ€

(374)
[Java] ์‹ฌ๋ณผ๋ฆญ ๋ ˆํผ๋Ÿฐ์Šค Symbolic Reference ์ถœ์ฒ˜ChatGPT  ๊ฐœ์š”์‹ฌ๋ณผ๋ฆญ ๋ ˆํผ๋Ÿฐ์Šค๋Š” ์ž๋ฐ”์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ํ•„๋“œ ๋“ฑ์„ ์ง์ ‘์ ์œผ๋กœ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฆ„์ด๋‚˜ ์‹๋ณ„์ž๋ฅผ ๋งํ•œ๋‹ค. ์‹ฌ๋ณผ๋ฆญ ๋ ˆํผ๋Ÿฐ์Šค๋Š” ์ฃผ๋กœ ์ปดํŒŒ์ผ๋œ ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋‚ด์— ์กด์žฌํ•˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ์ ์— ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ(๋ฌผ๋ฆฌ์  ์ฃผ์†Œ)๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์—์„œ ๊ฐ์ฒด๋‚˜ ํด๋ž˜์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ฐœ๋…์‹ฌ๋ณผ๋ฆญ ๋ ˆํผ๋Ÿฐ์Šค๋Š” ํŠน์ • ์ž์›์„ ์ฐธ์กฐํ•˜๋Š” ๊ณ ์ˆ˜์ค€์˜ ์ด๋ฆ„, ๋ฌธ์ž์—ด, ์‹๋ณ„์ž์ด๋‹ค.JVM์ด ํด๋ž˜์Šค ํŒŒ์ผ์„ ํ•ด์„ํ•˜๋Š” ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฒฐ์ •๋˜๋ฉฐ, ๋Ÿฐํƒ€์ž„ ์‹œ์ €์— ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์ข…๋ฅ˜1. ํด๋ž˜์Šค ์‹ฌ๋ณผ๋ฆญ ๋ ˆํผ๋Ÿฐ์Šค๋‹ค๋ฅธ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฌธ์ž์—ด. ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ์™€ ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ๊ตฌ์„ฑ๋œ..
[Java] ํด๋ž˜์Šค ๋กœ๋“œ ์ถœ์ฒ˜ChatGPThttps://inpa.tistory.com/entry/JAVA-%E2%98%95-%ED%81%B4%EB%9E%98%EC%8A%A4%EB%8A%94-%EC%96%B8%EC%A0%9C-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%97%90-%EB%A1%9C%EB%94%A9-%EC%B4%88%EA%B8%B0%ED%99%94-%EB%90%98%EB%8A%94%EA%B0%80-%E2%9D%93 โ˜• ํด๋ž˜์Šค๋Š” ์–ธ์ œ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ & ์ดˆ๊ธฐํ™” ๋˜๋Š”๊ฐ€ โ“JVM์˜ ํด๋ž˜์Šค ๋กœ๋” (Class Loader) ์ž๋ฐ”์˜ ํด๋ž˜์Šค๋“ค์ด ์–ธ์ œ ์–ด๋””์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€๊ณ  ํด๋ž˜์Šค ๋ฉค๋ฒ„๋“ค์ด ์ดˆ๊ธฐํ™”๋˜๋Š”์ง€, ์›๋ฆฌ๋ฅผ ์•Œ๊ธฐ์œ„ํ•ด์„  ์šฐ์„  JVM(์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ )์˜ ํด๋ž˜์Šค ๋กœ๋”(Class Loader)์˜ ์ง„ํ–‰inpa.tistory...
[OOP][Java] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ด€๋ จ๋œ ๋ ˆ๋ฒจ๋“ค ์ถœ์ฒ˜ChatGPT๊ฐ ๋ ˆ๋ฒจ๋“ค๊ฐ์ฒด ๋ ˆ๋ฒจ Object Levelํด๋ž˜์Šค ๋ ˆ๋ฒจ Class Level๋ฉ”์„œ๋“œ ๋ ˆ๋ฒจ Method LevelํŒจํ‚ค์ง€ ๋ ˆ๋ฒจ Pacakge Level๋ชจ๋“ˆ ๋ ˆ๋ฒจ Module Level 1. ๊ฐ์ฒด ๋ ˆ๋ฒจ Object Level1] ๊ฐœ๋…๊ฐ์ฒด ๋ ˆ๋ฒจ์€ ๊ฐœ๋ณ„ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค์˜ ์ƒํƒœ์™€ ํ–‰๋™์— ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค. ๊ฐ ๊ฐ์ฒด๋Š” ๊ณ ์œ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ๋™์ž‘ํ•œ๋‹ค.2] ๊ฐ์ฒด ์ง€ํ–ฅ ํŠน์ง•1. ์บก์Šํ™”๊ฐ์ฒด๊ฐ€ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๊ฐ์ถ”๊ณ , ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉํ•˜๋„๋ก ํ•ด ์™ธ๋ถ€์—์„œ์˜ ์ ‘๊ทผ์„ ์ œ์–ดํ•œ๋‹ค.2. ๋‹คํ˜•์„ฑ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.3. ๊ณ ์œ  ์ƒํƒœ๊ฐ ๊ฐ์ฒด๋Š” ๊ณ ์œ ํ•œ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ด๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ ํ‘œํ˜„๋œ๋‹ค.์˜ˆ์ œpublic class Dog {    private String name;  ..
[OOP][Java] ํด๋ž˜์Šค ๋ ˆ๋ฒจ vs ๊ฐ์ฒด ๋ ˆ๋ฒจ ์ถœ์ฒ˜ChatGPT ํด๋ž˜์Šค ๋ ˆ๋ฒจ Class Levelํด๋ž˜์Šค ์ž์ฒด์— ๊ด€๋ จ๋œ ๊ฐœ๋…์„ ์˜๋ฏธํ•œ๋‹ค.ํด๋ž˜์Šค ์ •์˜์— ํฌํ•จ๋œ ์ •์ (static) ์š”์†Œ๋“ค์ด ํด๋ž˜์Šค ๋ ˆ๋ฒจ์—์„œ ์ž‘๋™ํ•œ๋‹ค.1. ์ •์  ๋ฉค๋ฒ„(static members)์ •์  ๋ณ€์ˆ˜(static variables) ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ํ•˜๋Š” ํด๋ž˜์Šค์˜ ์†์„ฑ์„ ์ •์˜ํ•œ๋‹ค. ํด๋ž˜์Šค๊ฐ€ ๋กœ๋“œ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ์ง€๋œ๋‹ค.์ •์  ๋ฉ”์„œ๋“œ(static methods)ํŠน์ • ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค์™€๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ํด๋ž˜์Šค์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ2. ํด๋ž˜์Šค ์ •์˜ ๋ฐ ํ…œํ”Œ๋ฆฟ ์—ญํ• ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ์—ญํ• ์„ ํ•˜๋ฉฐ, ๊ฐ์ฒด์˜ ๊ตฌ์กฐ์™€ ๋™์ž‘์„ ์ •์˜ํ•œ๋‹ค.ํด๋ž˜์Šค๋Š” ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•  ์†์„ฑ๊ณผ ํ–‰๋™์„ ๋ช…์‹œํ•œ๋‹ค.3. ๊ณตํ†ต ์†์„ฑ ๋ฐ ํ–‰๋™ ์ •์˜ํด๋ž˜์Šค ๋ ˆ๋ฒจ์—..
[Java] ์ž๋ฐ” ํด๋ž˜์Šค์—์„œ main() ๋ฉ”์„œ๋“œ๊ฐ€ static์œผ๋กœ ์„ ์–ธ๋˜๋Š” ์ด์œ /์žฅ์  ์ถœ์ฒ˜ChatGPT  ChatGPT ๊ฐ€ ์•Œ๋ ค์ค€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ๋‹ค. ํ•œ ์ค„๋กœ ์ •์˜ํ•˜๋ฉด-> ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘์ ์—์„œ ํšจ์œจ์ ์ด๊ณ  ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•จ ๋‚ด์šฉJVM์˜ ๊ทœ์น™๊ณผ ๊ด€๋ก€ ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹คํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘์ ์ด ๊ฐ„๋‹จํ•˜๋‹ค๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•œ ์ฝ”๋“œ ๊ตฌ์กฐ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด ๊ฐ„ ๋ช…ํ™•ํ•œ ๊ตฌ๋ถ„์—ฐ๊ด€์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๋‚ด์šฉ๋“ค๋ผ๋ฆฌ ๊ธ€์ž์ƒ‰์„ ๋งž์ท„๋‹ค. 1. JVM์˜ ๊ทœ์น™๊ณผ ๊ด€๋ก€JVM์€ 'public static void main(String[] args)' ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ๊ฐ€์ง„ ๋ฉ”์„œ๋“œ๋ฅผ ํ”„๋กœ๊ทธ๋žจ ์ง„์ž…์ ์œผ๋กœ ์ธ์‹ํ•œ๋‹ค. ์ด๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ด€๋ก€๋‹ค. 2. ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค.ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ์ ์—๋Š” ์•„์ง ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, main()์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.3. ..
[OOP] ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์–ด๋–ป๊ฒŒ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ‘œํ˜„ํ•˜๋‚˜ ์ถœ์ฒ˜ChatGPT์—๊ฒŒ ์งˆ๋ฌธํ•จ. ๋‚ด์šฉ ํ˜„์‹ค ์„ธ๊ณ„๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ฐ์ฒด Object ๊ฐœ๋…ํ˜„์‹ค ์„ธ๊ณ„์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ์ฒด๋‹ค.ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ชจ๋“  ๊ฒƒ๋“ค์€ ์ƒํƒœ(ํŠน์„ฑ, ์†์„ฑ)๊ณผ ํ–‰๋™(๋ฉ”์„œ๋“œ)๋ฅผ ๊ฐ–๋Š”๋‹คex) ์ž๋™์ฐจ, ์‚ฌ๋žŒ, ๋™๋ฌผ ๋“ฑ๋“ฑ๊ฐ์ฒด๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์„ ํ‘œํ˜„ํ•œ๋‹ค.๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค.ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ๋“ค์ด ์ƒํƒœ(ํŠน์„ฑ)์™€ ํ–‰๋™์„ ๊ฐ–๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๋‹ค.์บก์Šํ™”Encapsulation๊ฐ์ฒด๋“ค์ด ์ž์‹ ๋งŒ์˜ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์™ธ๋ถ€์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ์ œ๊ณตํ•œ๋‹ค.ex) ์ž๋™์ฐจ์˜ ์—”์ง„ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์•Œ ํ•„์š”์—†์ด ์šด์ „์ž๋Š” ํ•ธ๋“ค๊ณผ ํŽ˜๋‹ฌ๋งŒ์œผ๋กœ ์šด์ „์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.์บก์Šํ™”๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ๋‚ด๋ถ€๋ฅผ ์ˆจ๊ธฐ๊ณ , ๊ณต๊ฐœ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ฐ์ฒด์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ๋ณต์žก์„ฑ์„ ์ค„..
[๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ์ฝ๊ธฐ] robust + MVI + Jetpack Compose ์ฝ์€ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ์›๋ฌธ + ์ถœ์ฒ˜https://proandroiddev.com/a-robust-mvi-with-jetpack-compose-e08882d2c4ff A robust MVI with Jetpack ComposeImplementing an MVI Architecture recognisable to allproandroiddev.com ์ง€๊ทนํžˆ ๊ฐœ์ธ ์Šคํ„ฐ๋””๋ฅผ ์œ„ํ•œ ๊ธ€1. Robust ?๊ธ€์˜ ์„œ๋‘์— robust architecture ๋ผ๊ณ  ๊ฐ•์กฐ๋œ ๋ถ€๋ถ„์„ ๋ณด์•˜๋‹ค. ํ•ด๋‹น ์šฉ์–ด๋ฅผ ๊ทธ๋ƒฅ ์ง€๋‚˜์น˜๋ฉด ์•ˆ๋  ๊ฒƒ ๊ฐ™๋‹ค. robust ์‚ฌ์ „์  ๋œป๋„ ๋ณด๊ณ   ์†Œํ”„ํŠธ์›จ์–ด ๊ด€๋ จํ•ด์„œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€๋„ ์‚ดํŽด๋ณด์•˜๋‹ค. ์œ„ํ‚คํ”ผ๋””์•„์—์„œ์˜ ๋œป : Robustness๋„ ํ™•์ธํ•œ๋‹ค. ์•„์˜ˆ Software robustness์— ๊ด€ํ•ด์„œ ์“ด ๊ธ€๋„ ์žˆ..
[Sample] PictureInPictureKotlin ์ฝ”๋“œ ์‚ดํ”ผ๊ธฐ - 1 ์ƒ˜ํ”Œ ์ฝ”๋“œ ํ”„๋กœ์ ํŠธhttps://github.com/android/media-samples/tree/main/PictureInPictureKotlin media-samples/PictureInPictureKotlin at main · android/media-samplesMultiple samples showing the best practices in media APIs on Android (audio, video, etc.). - android/media-samplesgithub.com  AndroidManifest.xml ์‚ดํ”ผ๊ธฐ1) android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"2) android:suppo..