Hello! 🖐
✏ Web Backend Developer happyhsryu
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ๊ณ ๊ณต์ ํ๋ ๊ธฐ์ ๋ธ๋ก๊ทธ์ ๋๋ค.
๋ด์ฉ์ด ๋ถ์กฑํ๊ฑฐ๋ ์๋ชป๋ ๋ถ๋ถ์ด ์์ ์ ์์ผ๋ ๋๋ฅธ ์ํด ๋ถํ๋๋ฆฝ๋๋ค.
@RequestBody Json ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉFrontend์์ Http Body์ Json ๋ฐ์ดํฐ๋ฅผ ๋ด์์ ๋ณด๋ด๋ฉด, Spring Boot Controller์ @RequestBody๋ก ๊ฐ์ฒด๋ก ๋ฐ์ธ๋ฉ๋๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด ์๋์ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ๋ฐ์ธ๋ฉ ํ๋ค.๊ธฐ๋ณธ ์์ฑ์ + Setter์ ์ฒด ํ๋ ์์ฑ์ + @JsonCreatorํ๋ ์ง์ ์ ๊ทผHttpMessageConverterSpring์ @RequestBody๊ฐ ๋ถ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ๋ด๋ถ์ ์ผ๋ก HttpMessageConverter๋ฅผ ์ฌ์ฉํ๋ค.HandlerMethodArgumentResolver โ RequestResponseBodyMethodProcessor โ HttpMessageConverter ์์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.JSON String์ ..
Java Stream APIJava์ Stream API๋ ์ ์ธ์ ์ด๊ณ ๊ฐ๊ฒฐํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง์ ๊ตฌ์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด๋ค. ํ์ง๋ง Stream์ ๊ฒ์ผ๋ก ๋ณด๊ธฐ์ ๋จ์ํด ๋ณด์ฌ๋, ๋ด๋ถ์ ์ผ๋ก๋ lazy evaluation(์ง์ฐ ํ๊ฐ) ๊ธฐ๋ฐ์ ํ๊ฐ ์ ๋ต์ ์ฌ์ฉํ๋ค. ์ด ๊ฐ๋ ์ ์ ๋๋ก ์ดํดํ์ง ๋ชปํ๋ฉด, ์์๊ณผ ๋ฌ๋ฆฌ ๋ถํ์ํ ์ฐ์ฐ์ด ์ํ๋์ด ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์๋ค. ์ฐ์ lazy evaluation์ ์์๋ณด๊ธฐ ์ ์, Stream ๋์ ์์๋ฅผ ์์ธกํด ๋ณด์. ํ ์คํธ ํ๊ฒฝItem์ ๊ทธ๋๋ก ๋ฐํํ์ง๋ง, sout์ ์ฐ์ด์ฃผ๋ log(Item item) ๋ฉ์๋๋ก ๋ก๊ทธ๋ฅผ ์ฐ์ด๋ณผ ๊ฒ์ด๋ค.@AllArgsConstructor@Getterstatic class Item{ private in..
์นด๋ฅด์ผ์์ ๊ณฑ(Cartesian Product) ๋?Cartesian ๊ณฑ์ 2๊ฐ์ ํ ์ด๋ธ์ Join ํ ๋ ๋ชจ๋ ์กฐํฉ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๊ณฑ์งํฉ์ ๋งํ๋ค.์๋ฅผ ๋ค๋ฉด User๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ Order 3๊ฐ, Payment 5๊ฐ๊ฐ ์์ ๋, ์ด 15๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.์๋(๋ ๋ณด๊ธฐ)๋ ์นด๋ฅดํ ์์ ๊ณฑ์ ์ฒ์ ๋ณด๋ ๋ถ๋ค์ ์ํ ์ฟผ๋ฆฌ ์์ ์ ๋๋ค.๋๋ณด๊ธฐapp_userSELECT * FROM app_user uwhere id = '4a421c1c-8df2-4ef2-845d-07d9a216c114';ordersSELECT * FROM orderswhere user_id = '4a421c1c-8df2-4ef2-845d-07d9a216c114';paymentSELECT * FROM paymentwhere user_id ..
Spring์ Cache ์ถ์ํ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด, ๋์ ์ผ๋ก ๋ณํ์ง ์๋๋ฐ, ์์ฃผ ํ์ํ ๋ฐ์ดํฐ๋ค์ ์กฐํํ๋ API๋ฅผ ํธ์ถํ ์ผ์ด ์ข ์ข ์๋ค.ย ๊ฐ๋จํ ์์๋ก ์๋์ ๊ฐ์ ์ํฉ์ด ์์ ์ ์๋ค.Frontend์์ select-box์ ๊ฐ์ ์ฑ์ฐ๊ธฐ ์ํ data List ์กฐํ์ธ๋ถ API์์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋๋ฐ, ์ธ๋ถ API์์ ์ ๊ณตํ๋ ๋ฐ์ดํฐ์ ๊ฐฑ์ ์ฃผ๊ธฐ๊ฐ ๊ธธ ๋์์ฃผ ํธ์ถ๋๋ ๋ฐ์ดํฐ์ด์ง๋ง, ์ค์๊ฐ์ผ๋ก ๋ณํ๋ ๊ฐ์ด ์๋ ๋Spring์ ์์ฃผ ํธ์ถ๋๋ ๋ฉ์๋์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์บ์์ ์ ์ฅํ๊ณ , ์ดํ ๋์ผํ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์บ์ ๋ ๊ฐ์ ๋ฐํํ์ฌ ์๋ต ์๋๋ฅผ ๋์ด๊ณ ์์คํ ๋ถํ๋ฅผ ์ค์ผ ์ ์๋๋ก ์บ์ฑ ๊ธฐ๋ฅ์ ์ถ์ํํ์ฌ ์ ๊ณตํ๋ค.์บ์ ๊ตฌํ์ฒด์ ๋ฌด๊ดํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก @Cacheable, @CacheEvict, ..
๋ณตํฉํค(Composite key)๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ณตํฉํค(Composite Key)๋, ๋ ๊ฐ ์ด์์ ์ปฌ๋ผ์ ์กฐํฉํ์ฌ ํ๋์ ๊ธฐ๋ณธ ํค(Primary Key)๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๋จ์ผ ์ปฌ๋ผ๋ง์ผ๋ก๋ ๋ฐ์ดํฐ์ ๊ณ ์ ์ฑ์ ๋ณด์ฅํ ์ ์์ ๋, ์ฌ๋ฌ ์ปฌ๋ผ์ ๋ฌถ์ด ํ๋์ ํค๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.ย ์๋ ํ ์ด๋ธ์ฒ๋ผ, ์ฃผ๋ฌธ๋ฒํธ์ ์ํ๋ฒํธ ๋๊ฐ๋ฅผ ๋ฌถ์ด์ผ ํ๋์ ๊ณ ์ ํ key๊ฐ ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค.์ด๋ฐ ๊ฒฝ์ฐ์ JPA์์ ๋จ์ผํค๋ฅผ ์ฌ์ฉํ ๋๋ณด๋ค ๋ณต์กํ๊ณ , ๊ท์ฐฎ์ ์์ ์ด ํ์ํ๋ค.ย ๋ณตํฉํค๊ฐ ๊ผญ ํ์ํ์ง ์๋ค๋ฉด, ๋จ์ผํค ์ ๋ต์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ซ๋ค๊ณ ์๊ฐํ์ง๋ง,์ด๋ฏธ ์กด์ฌํ๋ ํ ์ด๋ธ์ ์ํฐํฐ ๋งคํ ํด์ผํ ๋๊ฐ ์์๊ฒ์ด๋ค.๋ณตํฉํค ๋งคํ ์ ํน์งkey class์ Serializable์ ๊ตฌํํด์ผ๋๋ค.key class์ equ..
NuxtLink ๊ฐ์๋ Vue Router์ ์ html์ ํ๊ทธ๋ฅผ ๋ชจ๋ ๋์ฒดํ๋ Nuxt3์ ๋ด์ฅ ์ปดํฌ๋ํธ์ด๋ค.๋ด๋ถ ๋งํฌ์ ์ธ๋ถ ๋งํฌ๋ฅผ ์๋์ผ๋ก ๊ตฌ๋ถํ๊ณ , ์ต์ ํ๋ฅผ ์ฌ์ฉํ์ฌ ๋งํฌ๋ฅผ ๋ ๋๋ง ํ๋ค.NuxtLink๋ ๋ด๋ถ ๋งํฌ์ธ์ง ์ธ๋ถ ๋งํฌ์ธ์ง ์๋์ผ๋ก ๊ฐ์งํ๊ณ ์ ์ ํ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.๋ด๋ถ ๋งํฌ (/mainย ๊ฐ์ ๊ฒฝ๋ก)๋ Vue Router๋ฅผ ์ฌ์ฉํด ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ด๋น๊ฒ์ด์ ์ ์ํํฉ๋๋ค.์ธ๋ถ ๋งํฌ (https://example.com)๋ ์ผ๋ฐ์ ์ธ ํ๊ทธ๋ก ๋ ๋๋ง ๋ฉ๋๋ค.๋ด๋ถ ๋ผ์ฐํ ์ด๋ ๊ฒ ๋ด๋ถ ๊ฒฝ๋ก์ /main์ผ๋ก ์ค์ ๋์ด ์๋ ๊ฒฝ์ฐ, ๋ด๋ถ์ ๋ค๋ฅธ ํ์ด์ง์ ์ฐ๊ฒฐํ๋ค. Main Page ์ธ๋ถ ๋ผ์ฐํ ์ด๋ ๊ฒ ์ธ๋ถ ๊ฒฝ๋ก url์ด ์ค์ ๋์ด์๋ ๊ฒฝ์ฐ, ์ธ๋ถ ์น์ฌ์ดํธ์ ์ฐ๊ฒฐํ๋ค. Nuxt Doc..
definePageMeta()pages/ ๋๋ ํฐ๋ฆฌ์ ์๋ ํ์ด์ง ์ปดํฌ๋ํธ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ปดํ์ผ๋ฌ ๋งคํฌ๋ก ํจ์์ด๋ค.ย ์ฃผ์ ์์๋ค์ ์๋์ ๊ฐ๋ค.definePageMeta๋ก ์ ์ํ ๋ฉํ๋ฐ์ดํฐ์ ์ฃผ์ ์์ โข alias์ฌ๋ฌ URL์ ๋์ผํ ํ์ด์ง๋ก ์ฐ๊ฒฐํ ์ ์๋๋ก ๋ณ์นญ์ ์ง์ ํฉ๋๋ค. โข keepaliveํ์ด์ง๋ฅผ ๋ก ๊ฐ์ธ ์ํ๋ฅผ ์ ์งํ๋๋ก ์ค์ ํฉ๋๋ค. โข key์ ๋ ๋๋ง์ ์ ์ดํ๊ธฐ ์ํ ํค ๊ฐ์ ์ค์ ํฉ๋๋ค. โข layoutํ์ด์ง์ ์ฌ์ฉํ ๋ ์ด์์์ ์ง์ ํฉ๋๋ค. false๋ก ์ค์ ํ๋ฉด ๋ ์ด์์์ ๋นํ์ฑํํ ์ ์์ต๋๋ค. โข layoutTransition / pageTransitionํ์ด์ง ๋ฐ ๋ ์ด์์ ๋ณ๊ฒฝ ์ ์ฌ์ฉํ ์ ํ ํจ๊ณผ๋ฅผ ์ค์ ํฉ๋๋ค. โข middlewareํ์ด์ง๋ฅผ ๋ก๋ํ๊ธฐ..
1.ย (๊ตฌ)Nuxt 2 Props ์ ์ธ props: { title: { type: String, default: '', }, seq: { type: Number, default: 1, }, },2. Nuxt3 Props ์ ์ธtitle ๋ค์ ? ๊ฐ ๋ถ์ด์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.?๊ฐ ์์ ๊ฒฝ์ฐ undefined๋ ํ ๋นํ ์ ์๊ณ ,ย ?๊ฐ ์์ ๊ฒฝ์ฐ ์ค์ง string๋ง ๊ฐ๋ฅํ๋ค.interface Props { title?: string; seq?: number;}defineProps();ย 3. default๊ฐ ์ค์ interface Props { title: string; seq: number;}withDefaults(defineProps(), ..
Nuxt 3 ๊ณต์ ๋ฌธ์https://nuxt.com/docs/getting-started/installationย Installation ยท Get Started with NuxtGet started with Nuxt quickly with our online starters or start locally with your terminal.nuxt.com0. node version# node versionnvm install 20nvm use 20npm -v1. create nuxt๋น ํด๋ ํ๋๋ฅผ ๋ง๋ค๊ณ , ํฐ๋ฏธ๋์์ pnpm์ผ๋ก ์ค์นํ๋ค.npx nuxi@latest init nuxt3_lectureย 2. package manager ์ ํnpm ์ ํย 3. package.json ์์ (nuxi)nuxt3๋ถํฐ..
QueryDSL์ JPA์ ํจ๊ป ์ฌ์ฉํ์ฌ, ๋ณต์กํ ๋์ ์ฟผ๋ฆฌ, Join ์ฟผ๋ฆฌ ๋ฑ์ ์ต์ ํํด ์ค๋ค.์ด์ค BooleanExpression์ ์ฃผ๋ก ์ฌ์ฉํ์ฌ where ์กฐ๊ฑด์ ์ ์ธํ ํ๋ค.์ด ๊ธ์ Boolean expression์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ์ํฉ์ ์ ๋ฆฌํ๊ณ , BooleanExpression์ด ์ ๊ณตํ๋ ๋ฉ์๋๋ฅผ ์ดํด๋ณธ๋ค.Version# versionspring-boot: 3.4.3JPA: 3.1.0querydsl: 5.0.0# build.gradledependencies { implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta" annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annot..
๋ฐฉํ๋ฒฝ์ด๋?๋ฐฉํ๋ฒฝ(Firewall)์ ๋คํธ์ํฌ ๋ณด์ ์์คํ ์ด๋ค. ๋ฏธ๋ฆฌ ์ ์๋ ๋ณด์ ๊ท์น์ ๋ฐ๋ผ ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๋คํธ์ํฌ ํธ๋ํฝ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ ์ดํ๋ ์ฅ์น ๋๋ ์ํํธ์จ์ด์ด๋ค. ๋ถ๋ฒ ์ ๊ทผ, ์ ์์ ์ ๊ทผ, ํธ๋ํฝ ๋ญ๋น ๋ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.ย ๋ฐฉํ๋ฒฝ์ ํธ๋ํฝ ํํฐ๋ง, ๋คํธ์ํฌ ์ธ๋ถํ, ๊ฐ์ ๋ฐ ๋ก๊น , ์ธ์ฆ, ํ๋ผ์ด๋ฒ์ ๋ณดํธ ๋ฑ์ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ์ ํ๋ค.์ด์ค ์ธ๋ฐ์ด๋ ๊ท์น, ์์๋ฐ์ด๋ ๊ท์น์ ํธ๋ํฝ ํํฐ๋ง ๊ธฐ๋ฅ์ ํฌํจ๋๋ค.ย ํธ๋ํฝ ํํฐ๋ง(์ ๊ทผ ์ ์ด)ํธ๋ํฝ ํํฐ๋ง์ด๋ ๋ฐฉํ๋ฒฝ์ด ๋คํธ์ํฌ๋ฅผ ํตํด ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ ํจํท์ ๊ฒ์ฌํ๊ณ ์ ์ดํ๋ ๊ฒ์ ๋งํ๋ค.๋ฐฉํ๋ฒฝ์ด ํ์ฉํ ํธ๋ํฝ๋ง ๋คํธ์ํฌ๋ก ๋ค์ด์ค๊ฑฐ๋ ๋๊ฐ ์ ์๋๋ก ํ๋ค.ํธ๋ํฝ ํํฐ๋ง ๋ฐฉ์ ์ค ํจํท ํํฐ๋ง ๋ฐฉ์์ย ๋ฐ์ดํฐ ํจํท์ ํค๋ ์ ๋ณด๋ฅผ ๋ถ์ํ์ฌ ํธ๋ํฝ์ ํ์ฉ/..
์๋ํ๋ธ๋?์๋ํ๋ธ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ฒ๊ทธ, ์ฝ๋ ์ค๋ฉ, ๋ณด์ ์ทจ์ฝ์ ๋ฑ์ ๋ฐ๊ฒฌํ๊ธฐ ์ํ ์ ์ ์ฝ๋ ๋ถ์ ํด์ด๋ค. ์ค์น / ์ธํ 1. ์๋ํ๋ธ ์ค์นhttps://www.sonarsource.com/products/sonarqube/downloads/ Download | SonarQubeGet the latest LTS and version of SonarQube the leading product for Code Quality and Security from the official download page.www.sonarsource.com 2. ์๋ํ๋ธ ์คํ๋ค์ด๋ก๋ ํ์ผ ์์ถ ํ๊ธฐ์๋ํ๋ธ ์คํWindow: /bin/windows-x86-64/StartSonar.bat ์คํLinux: /bin/linu..
Kakao Developers์ด๋ฏธ์ง ์ค๋ช ์ ๊ฐ ์ด๋ฏธ์ง ๋ด์ฉ์ ๋ํ ์์น(๊ฒฝ๋ก) ์ ์ด๋์ผ๋ ์ฐธ๊ณ ํด ์ฃผ์ธ์.ย 1. KakaoDevelopers ์ ์https://developers.kakao.com/ย Kakao Developers์นด์นด์ค API๋ฅผ ํ์ฉํ์ฌ ๋ค์ํ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํด๋ณด์ธ์. ์นด์นด์ค ๋ก๊ทธ์ธ, ๋ฉ์์ง ๋ณด๋ด๊ธฐ, ์น๊ตฌ API, ์ธ๊ณต์ง๋ฅ API ๋ฑ์ ์ ๊ณตํฉ๋๋ค.developers.kakao.comย 2. ์ ํ๋ฆฌ์ผ์ด์ ์ถ๊ฐํ๊ธฐย 3. ์ ํ๋ฆฌ์ผ์ด์ ์ถ๊ฐย 4.Rest API ํค ํ์ธย 5. Web ํ๋ซํผ ๋ฑ๋กย 6. ์ฌ์ดํธ ๋๋ฉ์ธ ์ค์ ย 7. ์นด์นด์ค ๋ก๊ทธ์ธ ํ์ฑํ, Redirect URI ๋ฑ๋กย 8. ๋์ ํญ๋ชฉ ์ค์ ์ฌ์ฉํ๋ ค๋ ๊ฐ์ธ ์ ๋ณด ๋์ ์ค์ ( email, nickname ์ ๋ณด )ย 9. (์ถ๊ฐ) ์นด์นด์ค ๋ก๊ทธ์ธ ๋ฒ..
MyBatis๋?MyBatis๋ JdbcTemplate์ด ์ ๊ณตํ๋ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๊ทธ๋ฌ๋ JdbcTemplate์ ๋ฌธ์ ์ ์ค ํ๋์ธ ์ฌ๋ฌ ์ค์ String ํ sql์ ์์ฑํด์ผ ํ๋ค๋ ์ ์ MyBatis๋ฅผ ์ด์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ค.MyBatis๋ SQL์ xml์ ํธ๋ฆฌํ๊ฒ ์์ฑํ ์ ์๊ณ , xml ๋ด์์ ๋์ ์ฟผ๋ฆฌ๋ฅผ ๋งค์ฐ ํธ๋ฆฌํ๊ฒ ์์ฑํ ์ ์๋ค.ย JdbcTemplate์ ์คํ๋ง์ ๋ด์ฅ๋ ๊ธฐ๋ฅ์ด๊ณ , ๋ณ๋์ ์ค์ ์์ด ์ฌ์ฉํ ์ ์์ง๋ง, MyBatis๋ ์ฝ๊ฐ์ ์ค์ ์ด ํ์ํ๋ค. ๋ฐ๋ผ์ ๋์ ์ฟผ๋ฆฌ์ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ MyBatis๋ฅผ ์ฌ์ฉํ๊ณ , ๋จ์ํ ์ฟผ๋ฆฌ๋ค์ด ๋ง๋ค๋ฉด JdbcTemplate์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ค.ย ย 2024.07.31 ์ถ๊ฐ๋จ์ํ ๋๋ฉ์ธ ๊ด๋ จ ์ํฐํฐ๋ฅผ ๋ถ๋ฌ์ค๋..
CSRFCSRF(Cross Site Request Forgery, ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ ์์กฐ)๋ ์น ๋ณด์ ์ทจ์ฝ์ ์ค ํ๋๋ก, ์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ์์ ์ ์์ง์๋ ๋ฌด๊ดํ๊ฒ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณต๊ฒฉ์๊ฐ ์๋ํ ํน์ ์์ฒญ์ ๋ณด๋ด๋๋ก ์ ๋ํ๋ ๊ฒ์ ๋งํ๋ค.ย ์ ํ ๊ตฌ์ , ์๊ธ ์ด์ฒด, ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ, ๊ธฐ๋ก ์ญ์ ๋ฑ์ ์์ฒญ์ ์ ์์ ์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ด๋ค.ย CSRF ๊ณต๊ฒฉ ์์ CSRF ๊ณต๊ฒฉ์ ์ดํดํ๊ธฐ ์ํด Spring Docs์ ์ข์ ์์ ๊ฐ ์์ด์ ๊ฐ์ ธ์๋ค.https://docs.spring.io/spring-security/reference/features/exploits/csrf.html#csrf(์ค์ ๋ก๋ ์ฌ๋ฌ ๊ฐ์ง ๋ณด์ ์ ํ์ฌํญ์ด ์๊ฒ ์ง๋ง, ๊ทธ๋ฐ ๊ฒ ์๋ค๊ณ ๊ฐ์ ํ์.)ย ์ ์์ ์ธ ์์ฒญ ์ํ ์น ์ฌ์ดํธ์ ๋ก๊ทธ์ธ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๊ณ..
IntelliJ๋ก ์๋ฐ ํ๋ก์ ํธ ์ค, ํ๊ธ ๊นจ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ VM, ์๋ฒ(Tomcat), ํ์ผ(JSP ๋ฑ), DB ์์ ๊ฐ๊ฐ ์ฌ์ฉํ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์์ด ๋ฌ๋ผ์ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ฒ๋ค์ ์ธ์ฝ๋ฉ์ ๊ฐ์ฅ ๋ฒ์ฉ์ ์ธ UTF-8๋ก ์ง์ ์ค์ ์ ํด์ค์ผ ํ๋ค. IntelliJ์์ ๊ฐ๋จํ๊ฒ VM, Tomcat, File์์ UTF-8 ์ธ์ฝ๋ฉ ์ค์ ์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. 1. IntelliJ VM Encoding ์ค์ 1) Help -> Edit Custom VM Options... 2) -Dfile.encoding=UTF-8 ์ถ๊ฐ 2. Tomcat Encoding ์ค์ 1) Run -> Edit Configurations ... 2) VM options -> -Dfile.encoding=U..
ํ(Heap) ํ์ ์์ ์ด์งํธ๋ฆฌ ํํ๋ก ์ต๋, ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๋๋ฐ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํ์ ์ค๋ณต๊ฐ์ ํ์ฉํ๋ค. ๋ถ๋ชจ-์์ ๊ฐ (๋ ๋ฒจ ๋ณ) ์ ๋ ฌ์ ๋ณด์ฅํ๊ณ , ํ์ ๊ฐ์ ์ ๋ ฌ์ ๋ณด์ฅํ์ง ์์์ ๋ฐ ์ ๋ ฌ ์ํ๋ผ๊ณ ๋ณผ ์ ์๋ค. ํ์ ์ต์ ํ(Min Heap), ์ต๋ํ(Max Heap) ๋๊ฐ์ง๊ฐ ์๋ค. ์ต์ ํ์ ๋ฃจํธ๋ ธ๋๊ฐ ์ต์๊ฐ์ด ๋๊ณ , ๋ถ๋ชจ๋ ธ๋์ key๋ ์์๋ ธ๋์ key๋ณด๋ค ์์์ผ ํ๋ค๋ ๊ท์น์ด ์๋ค. ์ต๋ ํ์ ๋ฃจํธ๋ ธ๋๊ฐ ์ต๋๊ฐ์ด ๋๊ณ , ๋ถ๋ชจ๋ ธ๋์ key๊ฐ ์์ ๋ ธ๋์ key๋ณด๋ค ์ปค์ผ ํ๋ค๋ ๊ท์น์ด ์๋ค. ์์ ์ด์งํธ๋ฆฌ๋ ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ๊ณ ๋ ธ๋๋ค์ด ๊ฐ๋ ์ฐจ ์๋ ํธ๋ฆฌ๋ฅผ ๋งํ๋ค. https://innovation123.tistory.com/107 [JAVA/์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ(Tree), ์ด์งํธ๋ฆฌ..
์ด์ ๊ธ์์ S3 bucket๊ณผ IAM์ ์์ฑํ๊ณ SpringBoot project์์ S3 ์ ๊ทผ์ ์ฌ์ฉํ accessKey์ secretKey๋ฅผ ์ป๋ ๊ฒ๊น์ง ๋ค๋ค๋ค. 2024.01.21 - [DevOps] - [AWS/S3] Spring boot project ์ด๋ฏธ์ง ์ ๋ก๋๋ฅผ ์ํด S3 ๋ฒ์ผ ๋ง๋ค๊ธฐ [AWS/S3] Spring boot project ์ด๋ฏธ์ง ์ ๋ก๋๋ฅผ ์ํด S3 ๋ฒ์ผ ๋ง๋ค๊ธฐ Amazon S3 ๋ฒํท ๋ง๋ค๊ธฐ IAM ๋ง๋ค๊ธฐ ์์ฑ ์๋ฃ IAM accessKey, secretKey ์ป๊ธฐ IAM - ์ฌ์ฉ์ - ๋ณด์ ์๊ฒฉ ์ฆ๋ช ์ก์ธ์ค ํค ๋ง๋ค๊ธฐ CLI ์ ํ accessKey, secretKey ์ ์ฅ ์ ๋ ๊ฐ์ง Key๋ฅผ ์ ์ฅํด ๋๋ค๊ฐ spring properties์ ๋ฑ innovation123.ti..
Apache POIApache POI๋ ์ํ์น ์ํํธ์จ์ด ์ฌ๋จ์์ ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.MS Office ํ์ผ ํฌ๋งท์ ์์ Java ์ธ์ด๋ก ์ฝ๊ณ ์ฐ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.https://poi.apache.org/ Apache POIโข - the Java API for Microsoft Documents Project News 2 July 2024 - POI 5.3.0 available The Apache POI team is pleased" data-og-host="poi.apache.org" data-og-source-url="https://poi.apache.org/" data-og-url="https://poi.apache.org/" data-og-image="">ย Apache POIโข - the..
INSERT INTO : ๋ฐ์ดํฐ ์ถ๊ฐ id, name, loginId, password์ attribute๋ฅผ ๊ฐ๊ณ ์๋ MEMBER table์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ์์ ์ด๋ค. TABLE์ ์กด์ฌํ๋ ์ฌ๋ฌ๊ฐ์ง constraints๋ค์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํด์ผํ๋ค. ๋ฐฉ๋ฒ 1 : ๋ชจ๋ ์์ฑ ์ ํ table์ ์กด์ฌํ๋ attribute์ ์์๋๋ก ๊ฐ์ ๋ฃ์ด์ค์ผ ํ๋ค. table์ ์กด์ฌํ๋ ๋ชจ๋ attribute์ ๊ฐ์ ๋ฃ์ด์ค์ผ ํ๋ค. (null์ด๋ผ๋ ๋ฃ์ด์ผํจ) insert into member values(3, 'Lee', 'Lee1', 'pwLee'); ๋ฐฉ๋ฒ 2 : column ์ง์ ์๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด, attribute ์์๋ฅผ ๋ง์ถ์ง ์์๋ ๋๋ค. (์์๋ฅผ ์ง์ ํด์ค๋ค.) ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ attribut..