Kotlin
ํ๋ก์ ํธ์์ Kotlin์ ์ฌ์ฉํด์ ๊ฐ๋จํ ๋ฌธ๋ฒ ์ ๋ฆฌ๋ฅผ ํ๊ณ ์ ํ๋ค. ์๋ฐ๋ฅผ ์ ํด๋ณธ ์ฌ๋์ ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ฎ๋ค๊ณ ํ๋๋ฐ ..์ฝํ๋ฆฐ์ ํ์ฉํ๋ ๋ช๋ช ๊ธฐ์
๋ ์์ผ๋ ์ด๋ฒ ๊ธฐํ์ ํ ๋ฒ ํ์ตํด๋ด์ผ๊ฒ ๋ค ์๊ฐํ๋ค . . ๋ณ์(val | var) ๋ณ์๋ช
: ๋ฐํํ์
= ๋ณ์์ ๋ด์ ๊ฐ๋ณ์ ์ ์ธval a : Int = 1ํ์
์๋ตval b = 1์ง์ฐ ํ ๋นval c : Int // ํ์
๋ช
์ ํ์c = 3โด๏ธ val, var ์ฐจ์ด๐นval (value) : ์๋ฐ์ final ํค์๋์ฒ๋ผ ํ ๋ฒ ์ด๊ธฐํ ํ์๋ ๋ค์ ์ด๊ธฐํ X๐นvar (variable) : ๊ฐ๋ณ ๋ณ์์ด๋ฏ๋ก ์ด๊ธฐํ ํ์๋ ๋ค์ ๋ณ๊ฒฝ ๊ฐ๋ฅ ๐ var๋ก ์ ์ธํ๋๋ผ๋ ํ์
์ ๊ณ ์ ๋จ ์ปดํ์ผ ์ค๋ฅ val d : String = "Hello"d = "World" /..
Spring/Spring WebFlux
Reactive Programmingโณ๏ธ ์ ํต์ ์ธ ์ฝ๋ฐฑ ๊ธฐ๋ฐ API๋ Future์ ๊ฐ์ JDK์ ๋น๋๊ธฐ ์ฝ๋ ์์ฑ ๋ฐฉ์์ ๋นํด ๋ ์ ์ฐํ๊ณ ํจ์จ์ 1. ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๊ฐ์ํ : ๋น๋๊ธฐ ์์
์ ์คํธ๋ฆผ์ ํํ๋ก ์ฒ๋ฆฌํ๋ฏ๋ก ๋ฐ์ดํฐ์ ํ๋ฆ์ ํตํด ๊ฐ ๋จ๊ณ๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๊ฐ ์ค๋น๋๋ ์ฆ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ2. ์ ์ธ์ API ์ ๊ณต : Reactor, RxJava์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ map, filter, reduce์ ๊ฐ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ์ ์ฐ์ฐ์๋ฅผ ์ ๊ณตํ์ฌ ๋ฐ์ดํฐ ๋ณํํ๊ณ ์กฐ์ํ๋ ๊ณผ์ ์ ๊ฐ๊ฒฐํ๊ฒ ํํ3. backPressure ์ง์ : ๋ฐ์ดํฐ ์๋น์๊ฐ ๋ฐ์ดํฐ ์์ฐ์์ ์๋๋ฅผ ์ ์ดํ ์ ์๋๋ก ํจ 4. ๋ณต์ก์ฑ ๊ฐ์์ ๊ฐ๋
์ฑ ํฅ์ : ์ฐ์ฐ์ ์ฒด์ด๋์ ํตํด ์ฝ๋์ ๊ฐ๋
์ฑ ๋์ด๊ณ ๊ฐ ๋จ๊ณ์ ์์
์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐ์๊ฐ..
Spring/Spring WebFlux
ํ์์ IoT๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด WebFlux๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค.WebFlux์ ๋ํด ์๊ฒ๋ง ์๊ณ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๊ธฐํ์ ๊ณต๋ถํด๋ณด๊ธฐ๋ก ํ๋ค. โด๏ธ Sync(๋๊ธฐ)์ Async(๋น๋๊ธฐ)๐ถ Sync : ํด๋ผ์ด์ธํธ์์ ๋ฉ์๋ ํธ์ถ → ๋ฉ์๋ ์ ๊ณตํ๋ ๊ณณ์์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ํํด ๊ฒฐ๊ณผ๊ฐ์ด ๊ฒฐ์ ๋๋ฉด ๊ทธ๋ ๋ฐํ ๐ ์์ฒญํ ์์
์ ๋ํด ์๋ฃ ์ฌ๋ถ๋ฅผ ์ ๊ฒฝ ์จ์ ์์
์ ์์ฐจ์ ์ผ๋ก ์ํํ ์ง ์๋์ง ๊ฒฐ์ ๐ถ Async : ๊ฒฐ๊ณผ๊ฐ์ด ๊ฒฐ์ ๋๊ธฐ ์ ์ ์ผ๋จ ๋ฐํ (์์ ๋ณด์ฅ X)๐ ์์ฒญํ ์์
์ ๋ํด ์๋ฃ ์ฌ๋ถ๋ฅผ ๋ฐ์ง์ง ์๊ณ ์์ ์ ๋ค์ ์์
์ ๊ทธ๋๋ก ์ํ โด๏ธ Blocking๊ณผ Non-Blocking๐ท Blocking : ์์ฒญํ ์์
์ด ๋๋ ๋๊น์ง ๋ค๋ฅธ ์์
ํ์ง ์๊ณ ๊ธฐ๋ค๋ฆผ๐ท Non-Blocking : ์..
FE
์ฝ๋ฐฑ๊ณผ ํ๋ก๋ฏธ์ค ๊ฐ์ฒดcalback ํจ์ ํ๋์ ๋ฐ์ดํฐ์ฒ๋ผ ์ฌ์ฉ๋๋ ํจ์๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋์ด ํด๋น ํจ์์ ๋ด๋ถ์์ ํธ์ถ๋๋ ํจ์๊ธฐ๋ณธ์ ์ธ ์คํ์ ๋ค์ ์์๋ฅผ ๋ณด์ฅํ๋ ์ฅ์ ๊ฐ์ง๊ณ ์์์ฌ์ฉํจํด ๋ถํธ (์ฝ๋ฐฑ์ง์ฅ)Promise๋น๋๊ธฐ ์์
์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ฐ์ฒด async-awaitAsync-awaitํจ์ ์์ async ๋ถ์ด๋ฉด ํญ์ promise ๋ฐํ await ํค์๋๋ async ํจ์ ์์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ promise๊ฐ ํด๊ฒฐ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆผ ์์ธ์ฒ๋ฆฌ (then, catch, finally)then์์
์ด ์ฑ๊ณตํ์ ๋ ์คํ๋ ํจ์ ์ค์ catch์์
์ด ์คํจํ์ ๋ ์คํ๋ ํจ์ ์ค์ finally์ต์ข
์ ์ผ๋ก ์ ๋๋ก ๋์ํ๋ ํน์ ๊ฑฐ๋ถ๋๋ ์๊ด์์ด ๊ฐ์ฅ ๋ง์ง๋ง์ ์คํํ ๋ด์ฉ ์ค์ try-catchtry { //..
FE
Vue.js ์ ํ๋ฆฌ์ผ์ด์
์์ ์ํ ๊ด๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ค์ ์ง์ค์ ์ํ ๋ถ๋ฆฌ ํจํด ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ โ์ฌ์ฉํ๋ ์ด์ ์ค์ ์ง์ค์ ์ํ ๊ด๋ฆฌ ์ฌ๋ฌ ์ปดํฌ๋ํธ ๊ฐ์ ๊ณต์ ๋๋ ์ํ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ์ํ ํ๋ฆ ์์ธก ๊ฐ๋ฅ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ํ(state)๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํน์ ํ ๋ฐฉ๋ฒ(mutations)์ ํตํด์๋ง ์ํ ๋ณ๊ฒฝํ๋๋ก ๊ฐ์ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ๋ณ๊ฒฝ์ ์ถ์ ํ๊ณ ๋๋ฒ๊น
ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ฆ์ํ ์์ธก ๊ฐ๋ฅ์ฑ์ํ๋ฅผ ๋ณ๊ฒฝํ ๋ ํญ์ ๋ช
์์ ์ธ ๋ณ์ด(mutations)์ ํตํด์๋ง ๋ณ๊ฒฝ ๊ฐ๋ฅ ์ฝ๋์ ๋ชจ๋ํ ๊ฐ๋
์ฑ ๋์ด๊ณ ๊ฐ ๋ชจ๋์ ๋
๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ ๋ฐ ํ
์คํธ ๋ณต์กํ ์ํ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋จํ๊ฒ์ปดํฌ๋ํธ ๊ฐ์ ์ํ ๊ณต์ ๋๋ ๋น๋๊ธฐ ์์
(API ํธ์ถ)์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ณต์ก์ฑ ๊ฐ์ Vuex Store ๊ตฌ์ฑ mo..
FE
Vue ๋ฌธ๋ฒ ์ ๋ฆฌ 1Vue2 ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌ 1. ์ธ์คํด์ค์ ๋ผ์ดํ์ฌ์ดํด โด๏ธ ์ธ์คํด์ค ์์ฑ // main.jsimport Vue from 'vue';import App from './App.vue';new Vue({ render: h => h(App),}).$mount('#app'); ์์ฑ๋ ์ธ์คํด์ค๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฃผ์ ๊ตฌ์ฑ ์์๋ก ๋ฐ์ดํฐ์ ๋ฉ์๋๋ฅผ ๊ด๋ฆฌํ๊ณ DOM๊ณผ์ ์ํธ์์ฉ ์ฒ๋ฆฌ โณ๏ธ ์ฃผ์ ์์ฑ ๋ฐ ์ต์
๋ฐ์ดํฐ (Data) : Vue ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ data ์ต์
์ ํตํด ์ ์๋๋ฉฐ ๋ฐ์์ฑ์ ๊ฐ์ง ๐ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด DOM์ด ์๋์ผ๋ก ์
๋ฐ์ดํธ๋จnew Vue({ el: '#app', data: { message: 'Hello, Vue!' }}); ๋ฉ์๋ (Methods) : Vue..
FE
Vue๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ๋๊ตฌ ์ค ํ๋ ๊ฐ๋ฒผ์ด ํฌ๊ธฐ์ ์ง๊ด์ ์ธ ๋ฌธ๋ฒ๐ Virtual DOM์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์
๋ฐ์ดํธํ๊ณ ํ์ํ ์ต์ํ์ DOM ์กฐ์์ ์ํํ์ฌ ๋น ๋ฅธ ๋ ๋๋ง ์๋์ ํจ์จ์ ์ธ ์
๋ฐ์ดํธ ๊ด๋ฆฌ ์ ๊ณต ์์ฒด์ ์ผ๋ก ์ํ ๊ด๋ฆฌ ๋๊ตฌ์ธ Vue jsx ๋ด์ฅ๐ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ณต์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ด์ง ์ ํ์ ์ํ ๊ธฐ๋ฅ์ธ Vue js Router ์ ๊ณต ๐ ํ์ด์ง ๊ฐ์ ์ ํ๊ณผ URL ๊ธฐ๋ฐ์ผ๋ก ๋ทฐ๋ฅผ ๋์ ์ผ๋ก ๋ก๋ฉํ๊ณ ๊ด๋ฆฌ๊ธฐ์กด html๊ณผ ์ ์ฌํ Template ํ์ ์ ๊ณต๊ฐ๋ฐ ๋ฐฉ์์ ๋จ์ํจ๐ ๋์ ์ธ ํ์ ์ํด v-if ๋ฌธ๋ฒ๋ง ์ ๊ณต ๋ฐ์์ฑ (Reactivity)๋ฐ์ดํฐ ๊ฐฑ์ ํ๋ฉด ํ๋ฉด๋ ๋ฐ๋ ๐ ๏ธ Vue ๋๊ตฌํจํค์ง ๊ด๋ฆฌ์ : npm, yarn Vue CLI : ์ ์ํ Vue.js ..
Spring/Spring & Spring Boot
SSE (Server-Sent Events)๋?์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์ ์กํ๋ ๊ธฐ์ ์ด๋ค. ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ง์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ๋ํ ์ค์๊ฐ ์
๋ฐ์ดํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ(์ฃผ์ ์์ธ, ์ค์๊ฐ ์ฑํ
, ์๋ฆผ ๋ฑ)์ ์ฌ์ฉ๋๋ฉฐ HTTP ๊ธฐ๋ฐ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ ๊ฐ์ ๋จ๋ฐฉํฅ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ฏ๋ก ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด์ง ์๊ณ ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์๊ณ , ํด๋ผ์ด์ธํธ๋ ์น ๋ธ๋ผ์ฐ์ ์ EventSource API๋ฅผ ์ฌ์ฉํด ์๋ฒ๋ก๋ถํฐ ์ด๋ฒคํธ๋ฅผ ์์ ํ๊ณ ์ฒ๋ฆฌํ๋ค. ํ๋ก์ ํธ์์ ์จ๋ฐAI์๊ฒ ์ง๋ฌธ์ ์์ฒญํ๋ฉด ์๋ต์ ์ค์๊ฐ์ผ๋ก ๋ฐ๊ธฐ ์ํด ์ฌ์ฉํ๊ณ ์ ํ๋ค.์ค์ ๋ก ํ๋ก์ ํธ์์ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ์์๋ณด์ ! WebClientService ์ฝ๋ ๊ตฌํ - ๋น๋๊ธฐ๋ก ..