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

์ „์ฒด ๊ธ€

(377)
[Retrofit2] Retrofit2์—์„œ API ํ˜ธ์ถœ ์‹œ ๊ณตํ†ต ํ—ค๋” ๊ฐ’ ์ถ”๊ฐ€ ๋ฐฉ๋ฒ• ์ถœ์ฒ˜ChatGPT ๋ฐฉ๋ฒ•Interceptor๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณตํ†ต ํ•ด๋” ์ถ”๊ฐ€'@Header' ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉ'@Headers' ์–ด๋…ธํ…Œ์ด์…˜ ์‚ฌ์šฉOkHttp3 Authenticator ์‚ฌ์šฉ (ํ† ํฐ ์ž๋™ ๊ฐฑ์‹ ) 1. Interceptor๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณตํ†ต ํ—ค๋” ์ถ”๊ฐ€Interceptor๋Š” ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์š”์ฒญ์— ๊ณตํ†ต์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณตํ†ต ํ—ค๋” ๊ฐ’์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.Interceptor๋กœ ๊ณตํ†ต ํ—ค๋” ์ถ”๊ฐ€ํ•˜๊ธฐ์žฅ์ ์ฝ”๋“œ์˜ ๋ฐ˜๋ณต์„ ์ค„์—ฌ์ฃผ๊ณ , ๋ชจ๋“  ์š”์ฒญ์— ์ž๋™์œผ๋กœ ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.๋ณด์•ˆ ํ† ํฐ๊ณผ ๊ฐ™์€ ๊ณตํ†ต ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค. import okhttp3.Interceptor;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3...
[Retrofit2] Retrofit2์—์„œ ํƒ€์ž„์•„์›ƒ ๋ฐ ๋ฆฌํŠธ๋ผ์ด ์„ค์ • ์ถœ์ฒ˜ChatGPTRetrofit2์—์„œ ํƒ€์ž„์•„์›ƒ ๋ฐ ๋ฆฌํŠธ๋ผ์ด ์„ค์ •1. OkHttpClient๋กœ ํƒ€์ž„์•„์›ƒ ์„ค์ •ํ•˜๊ธฐOkHttpClient๋Š” ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ํƒ€์ž„์•„์›ƒ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฐ๊ฒฐ ํƒ€์ž„์•„์›ƒ(connect timeout): ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„.์ฝ๊ธฐ ํƒ€์ž„์•„์›ƒ(read timeout): ์„œ๋ฒ„์—์„œ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„.์“ฐ๊ธฐ ํƒ€์ž„์•„์›ƒ(write timeout): ์„œ๋ฒ„์— ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„.๊ฐ๊ฐ์˜ ํƒ€์ž„์•„์›ƒ์€ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.import okhttp3.OkHttpClient;import retrofit2.Retrofit;import retrofit2.converter.gson.GsonConverterFactory;impo..
[RESTful API]RESTful API๋ž€ ์ถœ์ฒ˜ ChatGPTRESTful API๋ž€?REST์˜ ์ •์˜REST(Represesntational Stat Tranfer)๋Š” ๋กœ์ด ํ•„๋ง(Roy Fielding)์ด 2000๋…„ ๋ฐ•์‚ฌ ๋…ผ๋ฌธ์—์„œ ์†Œ๊ฐœํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ด๋‹ค. REST๋Š” ์›น ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ ์ž์›์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ HTTP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŠน์ •ํ•œ ๊ทœ์น™๊ณผ ์ œ์•ฝ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. RESTful API์˜ ํŠน์ง•RESTful API๋Š” REST ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์„ ๋”ฐ๋ฅด๋Š” API๋ฅผ ๋งํ•œ๋‹ค. ์ฃผ๋กœ HTTP ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด ์ž์›(Resource)์„ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„๋œ๋‹ค. ์ฃผ์š” ํŠน์ง•1. ๋ฌด์ƒํƒœ์„ฑ Statelessness์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ๋ชจ๋“  ์š”์ฒญ์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ด๋ฉฐ, ์ด์ „ ์š”์ฒญ๊ณผ ๋‹ค์Œ ์š”์ฒญ ์‚ฌ์ด์— ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋“  ์š”์ฒญ์€..
[Android][ART] ART์˜ ํ”„๋กœํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ปดํŒŒ์ผ ์ถœ์ฒ˜ChatGPT ํ”„๋กœํŒŒ์ผ ์šฉ์–ด ๋œป -> [์šฉ์–ด] ํ”„๋กœํŒŒ์ผ, ํ”„๋กœํŒŒ์ผ๋ง๊ฐœ์š”ART(Anroid Runtime)์˜ ํ”„๋กœํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ปดํŒŒ์ผ์€ Android ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์ด๋‹ค. ํ”„๋กœํŒŒ์ผ๋ง ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ๋ถ„์„ํ•˜๊ณ , ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด ์ฝ”๋“œ์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด ๊ธฐ๋ฒ•์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์„ ์ดํ•ดํ•˜๊ณ , ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์„ ์ตœ์ ํ™”ํ•จ์„์จ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ , ์ดˆ๊ธฐ ์•ฑ ๋กœ๋”ฉ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค. ART์™€ ํ”„๋กœํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ปดํŒŒ์ผ1. ART(Android Runtime)์ด๋ž€?Android ์šด์˜์ฒด์ œ์—์„œ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ด๋‹ค.ART๋Š” Dalvik ๊ฐ€์ƒ ๋จธ์‹ (Dalvic VM)์„ ๋Œ€์ฒดํ•ด, Android 5.0๋ถ€ํ„ฐ ๊ธฐ๋ณธ..
[์šฉ์–ด] ํ”„๋กœํŒŒ์ผ, ํ”„๋กœํŒŒ์ผ๋ง ์ถœ์ฒ˜ChatGPTํ”„๋กœํŒŒ์ผProfile์ •์˜ํ”„๋กœ๊ทธ๋žจ์˜ ํŠน์ • ์ธก๋ฉด(์˜ˆ: ์‹คํ–‰ ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, CPU ์‚ฌ์šฉ๋ฅ  ๋“ฑ)์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ์™€ ํ†ต๊ณ„๋ฅผ ์ˆ˜์ง‘ํ•œ ๊ฒฐ๊ณผ๋ณดํ†ต ํŠน์ • ์กฐ๊ฑด์ด๋‚˜ ํ™˜๊ฒฝ์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฏธ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” "์Šค๋ƒ…์ƒท"์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.์šฉ๋„์ฃผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๋ถ„์„ ์ž๋ฃŒ๋กœ ํ™œ์šฉ๋œ๋‹ค.์„ฑ๋Šฅ ๋ณ‘๋ชฉ ์ง€์ ์„ ์‹๋ณ„ํ•˜๊ณ , ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์ •ํ™•ํžˆ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค.์˜ˆ์‹œCPU ํ”„๋กœํŒŒ์ผํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๊ฐ€ CPU๋ฅผ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฉ”๋ชจ๋ฆฌ ํ”„๋กœํŒŒ์ผํŠน์ • ๊ฐ์ฒด๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณดI/O ํ”„๋กœํŒŒ์ผํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‚˜ ๋„คํŠธ์›Œํฌ์™€์˜ ์ž…์ถœ๋ ฅ ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐ์ดํ„ฐ ํ”„๋กœํŒŒ์ผ๋ง Profiling์ •์˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ ๋ฐ ์ž์› ์‚ฌ์šฉ์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ..
[JVM] ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ์™€ JVM ์ถœ์ฒ˜ChatGPT๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ Native Code๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ž€ ํŠน์ • ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์™€ ์šด์˜ ์ฒด์ œ์—์„œ ์ง์ ‘ ์‹คํ•ด์• ๋˜๋Š” ๊ธฐ๊ณ„์–ด(machine code)๋ฅผ ๋งŒํ•œ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง์ ‘ ์ดํ•ดํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ์ค‘๊ฐ„ ๋ ˆ์ด์–ด(์˜ˆ: ๊ฐ€์ƒ ๋จธ์ง„ ๋˜๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ )๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ง์ ‘ ์‹คํ–‰๋œ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ ํŠน์ง•1. ๊ธฐ๊ณ„์–ด๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋Š” CPU๊ฐ€ ์ง์ ‘ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ง„ ํ˜•์‹์˜ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜๋œ๋‹ค.๊ฐ CPU ์•„ํ‚คํ…์ฒ˜(์˜ˆ: x86, ARM)์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ช…๋ น์–ด ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ํŠน์ • ํ•˜๋“œ์›จ์–ด์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๋‹ค.2. ํ”Œ๋žซํผ ์˜์กด์ ํŠน์ • ํ•˜๋“œ์›จ์–ด์™€ ์šด์˜ ์ฒด์ œ์— ์ข…์†์ ์ด๋‹ค. ์ฆ‰, ํ•œ ํ”Œ๋žซํผ์—์„œ ์ปดํŒŒ์ผ๋œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, x86..
[Compiler] ์ฝ”๋“œ ํŒจ์Šค(์ฝ”๋“œ ๊ฒฝ๋กœ) + ์ฝ”๋“œ ํŒจ์Šค์™€ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™” ์ถœ์ฒ˜ChatGPT์ฝ”๋“œ ํŒจ์Šค ์˜๋ฏธ ์ฝ”๋“œ ํŒจ์Šค๋ž€ํ”„๋กœ๊ทธ๋žจ ๋‚ด์˜ ํŠน์ • ์ฝ”๋“œ ๊ฒฝ๋กœ. ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š” ์ง€๋ฅผ ์„ค๋ช…ํ•œ๋‹ค.  ์ฝ”๋“œ ํŒจ์Šค๋Š” ๋ณดํ†ต ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ํ˜•์„ฑ๋œ๋‹ค. 1. ์กฐ๊ฑด๋ฌธ 'if', 'else', 'switch' ๋“ฑ์˜ ์กฐ๊ฑด๋ฌธ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ฝ”๋“œ ๊ฒฝ๋กœ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.2. ๋ฐ˜๋ณต๋ฌธ'for', 'while' ๋“ฑ์˜ ๋ฐ˜๋ณต๋ฌธ์—์„œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฐ˜๋ณต ํšŒ์ˆ˜์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๊ฒฝ๋กœ๊ฐ€ ํ˜•์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.3. ํ•จ์ˆ˜ ํ˜ธ์ถœํŠน์ • ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด์„œ ๋‹ค๋ฅธ ์ฝ”๋“œ ๊ฒฝ๋กœ๋กœ ์‹คํ–‰์ด ์ „ํ™˜๋œ๋‹ค.4. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ธ”๋ก์œผ๋กœ ์ฝ”๋“œ ๊ฒฝ๋กœ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œpublic class Example { public static void main(String[] args) { int number = 10; ..
[ART][Compiler] JIT ์ปดํŒŒ์ผ๋Ÿฌ์™€ AOT ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๋ณ‘ํ–‰ ์‚ฌ์šฉ ์ด์œ  + ART ์˜ˆ์‹œ ์ถœ์ฒ˜ChatGPT  JIT(Jist-In_Time) ์ปดํŒŒ์ผ๋Ÿฌ์™€ AOT(Ahead-Of-Time) ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์žฅ์ ๊ณผ ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ์˜ ์ปดํŒŒ์ผ ๋ฐฉ์‹์ด ๋ณ‘ํ–‰ํ•ด์„œ ์‚ฌ์šฉ๋  ๋•Œ ์„œ๋กœ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ‘ํ–‰ ์‚ฌ์šฉ์€ ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ํšจ์œจ์ ์ธ ์ž์› ํ™œ์šฉ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.  JIT ์ปดํŒŒ์ผ๋ŸฌํŠน์ง•1. ๋Ÿฐํƒ€์ž„ ์ตœ์ ํ™”ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ์— ๋ฉ”์†Œ๋“œ๋‚˜ ์ฝ”๋“œ ๋ธ”๋ก์„ ์ปดํŒŒ์ผํ•œ๋‹ค. ์ž์ฃผ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ ํŒจ์Šค๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.์ฝ”๋“œ ํŒจ์Šค ์šฉ์–ด ์„ค๋ช… [Compiler] ์ฝ”๋“œ ํŒจ์Šค(์ฝ”๋“œ ๊ฒฝ๋กœ) + ์ฝ”๋“œ ํŒจ์Šค์™€ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™”2. ์ ์‘ํ˜• ์ตœ์ ํ™”ํ”„๋กœ๊ทธ๋žจ์˜ ์‹ค์ œ ์‹คํ–‰ ์ƒํ™ฉ์— ๋งž์ถฐ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ์กฐ๊ฑด๋ฌธ์ด ํ•ญ์ƒ ์ฐธ์ผ ๊ฒฝ์šฐ, JIT๋Š” ์ด๋Ÿฌํ•œ ํŒจํ„ด์„ ํ•™์Šตํ•˜๊ณ  ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.3. ..