๐Ÿ›๏ธdev ์•Œ๋ ‰์‚ฐ๋“œ๋ฆฌ์•„ ๋„์„œ๊ด€ (๊ฑด์„ค์ค‘...๐Ÿšง)

Hello! ๐Ÿ–

โœ Web Backend Developer happyhsryu


๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•˜๊ณ  ๊ณต์œ ํ•˜๋Š” ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

๋‚ด์šฉ์ด ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋„ˆ๋ฅธ ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Contact

โœ‰ email : happyhsryu@gmail.com

LATEST
Spring

[Spring/Redis] Spring @Cacheable๊ณผ Redis๋ฅผ ์ด์šฉํ•œ ๋ฉ”์„œ๋“œ ๋ ˆ๋ฒจ ์บ์‹ฑ

Spring์˜ Cache ์ถ”์ƒํ™”๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด, ๋™์ ์œผ๋กœ ๋ณ€ํ•˜์ง„ ์•Š๋Š”๋ฐ, ์ž์ฃผ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ์กฐํšŒํ•˜๋Š” API๋ฅผ ํ˜ธ์ถœํ•  ์ผ์ด ์ข…์ข… ์žˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.Frontend์—์„œ select-box์˜ ๊ฐ’์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•œ data List ์กฐํšŒ์™ธ๋ถ€ API์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š”๋ฐ, ์™ธ๋ถ€ API์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐฑ์‹  ์ฃผ๊ธฐ๊ฐ€ ๊ธธ ๋•Œ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ๋ฐ์ดํ„ฐ์ด์ง€๋งŒ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ•˜๋Š” ๊ฐ’์ด ์•„๋‹ ๋•ŒSpring์€ ์ž์ฃผ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œ์— ์ €์žฅํ•˜๊ณ , ์ดํ›„ ๋™์ผํ•œ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์บ์‹œ ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์‘๋‹ต ์†๋„๋ฅผ ๋†’์ด๊ณ  ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋„๋ก ์บ์‹ฑ ๊ธฐ๋Šฅ์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ์ œ๊ณตํ•œ๋‹ค.์บ์‹œ ๊ตฌํ˜„์ฒด์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก @Cacheable, @CacheEvict, ..

JPA & QueryDSL

[JPA] JPA ๋ณตํ•ฉํ‚ค Entity Mapping @IdClass / @EmbeddedId

๋ณตํ•ฉํ‚ค(Composite key)๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ณตํ•ฉํ‚ค(Composite Key)๋ž€, ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ์กฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ธฐ๋ณธ ํ‚ค(Primary Key)๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‹จ์ผ ์ปฌ๋Ÿผ๋งŒ์œผ๋กœ๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ณ ์œ ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์„ ๋•Œ, ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์„ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์•„๋ž˜ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ, ์ฃผ๋ฌธ๋ฒˆํ˜ธ์™€ ์ƒํ’ˆ๋ฒˆํ˜ธ ๋‘๊ฐœ๋ฅผ ๋ฌถ์–ด์•ผ ํ•˜๋‚˜์˜ ๊ณ ์œ ํ•œ key๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.์ด๋Ÿฐ ๊ฒฝ์šฐ์— JPA์—์„œ ๋‹จ์ผํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ๋ณต์žกํ•˜๊ณ , ๊ท€์ฐฎ์€ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ๋ณตํ•ฉํ‚ค๊ฐ€ ๊ผญ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด, ๋‹จ์ผํ‚ค ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ,์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘ ํ•ด์•ผํ•  ๋•Œ๊ฐ€ ์žˆ์„๊ฒƒ์ด๋‹ค.๋ณตํ•ฉํ‚ค ๋งคํ•‘ ์‹œ ํŠน์ง•key class์— Serializable์„ ๊ตฌํ˜„ํ•ด์•ผ๋œ๋‹ค.key class์— equ..

Vue.js & Nuxt.js

[Nuxt3] Nuxt๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํŽ˜์ด์ง€ ์ด๋™ ์ปดํฌ๋„ŒํŠธ

NuxtLink ๊ฐœ์š”๋Š” Vue Router์˜ ์™€ html์˜ ํƒœ๊ทธ๋ฅผ ๋ชจ๋‘ ๋Œ€์ฒดํ•˜๋Š” Nuxt3์˜ ๋‚ด์žฅ ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.๋‚ด๋ถ€ ๋งํฌ์™€ ์™ธ๋ถ€ ๋งํฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ , ์ตœ์ ํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งํฌ๋ฅผ ๋ Œ๋”๋ง ํ•œ๋‹ค.NuxtLink๋Š” ๋‚ด๋ถ€ ๋งํฌ์ธ์ง€ ์™ธ๋ถ€ ๋งํฌ์ธ์ง€ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์ ์ ˆํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.๋‚ด๋ถ€ ๋งํฌ (/main ๊ฐ™์€ ๊ฒฝ๋กœ)๋Š” Vue Router๋ฅผ ์‚ฌ์šฉํ•ด ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋‚ด๋น„๊ฒŒ์ด์…˜์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.์™ธ๋ถ€ ๋งํฌ (https://example.com)๋Š” ์ผ๋ฐ˜์ ์ธ ํƒœ๊ทธ๋กœ ๋ Œ๋”๋ง ๋ฉ๋‹ˆ๋‹ค.๋‚ด๋ถ€ ๋ผ์šฐํŒ…์ด๋ ‡๊ฒŒ ๋‚ด๋ถ€ ๊ฒฝ๋กœ์˜ /main์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋‚ด๋ถ€์˜ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์— ์—ฐ๊ฒฐํ•œ๋‹ค. Main Page ์™ธ๋ถ€ ๋ผ์šฐํŒ…์ด๋ ‡๊ฒŒ ์™ธ๋ถ€ ๊ฒฝ๋กœ url์ด ์„ค์ •๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ, ์™ธ๋ถ€ ์›น์‚ฌ์ดํŠธ์— ์—ฐ๊ฒฐํ•œ๋‹ค. Nuxt Doc..

Vue.js & Nuxt.js

[Nuxt3] ์‚ฌ์šฉ์ž ์ •์˜ ํŽ˜์ด์ง€ ๋ฉ”ํƒ€ ํ•จ์ˆ˜ definePageMeta()

definePageMeta()pages/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ๋งคํฌ๋กœ ํ•จ์ˆ˜์ด๋‹ค. ์ฃผ์š” ์š”์†Œ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.definePageMeta๋กœ ์ •์˜ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ฃผ์š” ์š”์†Œ โ€ข alias์—ฌ๋Ÿฌ URL์„ ๋™์ผํ•œ ํŽ˜์ด์ง€๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ„์นญ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. โ€ข keepaliveํŽ˜์ด์ง€๋ฅผ ๋กœ ๊ฐ์‹ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. โ€ข key์˜ ๋ Œ๋”๋ง์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. โ€ข layoutํŽ˜์ด์ง€์— ์‚ฌ์šฉํ•  ๋ ˆ์ด์•„์›ƒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. false๋กœ ์„ค์ •ํ•˜๋ฉด ๋ ˆ์ด์•„์›ƒ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข layoutTransition / pageTransitionํŽ˜์ด์ง€ ๋ฐ ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ ์‹œ ์‚ฌ์šฉํ•  ์ „ํ™˜ ํšจ๊ณผ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. โ€ข middlewareํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๊ธฐ..

Vue.js & Nuxt.js

[Nuxt3] Props ์„ ์–ธ ๋ฐ ์‚ฌ์šฉ

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(), ..

Vue.js & Nuxt.js

[Nuxt3] ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑ Get started

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๋ถ€ํ„ฐ..

JPA & QueryDSL

[QueryDSL] BooleanExpression์„ ์ด์šฉํ•œ WHERE ์กฐ๊ฑด ํ‘œํ˜„์‹

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..

๋„์ ๋„์ ...

[๋„์ ๋„์ ] ์ฝ”๋”ฉ์ฃผ์ง“์ˆ˜์™€ ๊ตฌ๊ธ€ ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ

์–ผ๋งˆ ์ „์— ๋ดค๋˜ ์ธ์ƒ ๊นŠ์€ ๊ธ€์˜ ๋‚ด์šฉ์„ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์–ผ๋งˆ ์ „์— ์ปค๋ฆฌ์–ด๋ฆฌ๋ผ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ํ•œ ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž ๋ถ„์ด ์“ด  "์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ๋นผ๊ธฐ์˜ ๋ฏธํ•™"์ด๋ผ๋Š” ์ œ๋ชฉ์˜ ๊ธ€์„ ๋ดค๋‹ค.์‚ฌ์‹ค ๋‚ด์šฉ์€ ์–ด๋Š์ •๋„ ์•Œ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ด์—ˆ๊ณ , ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜ํ™•์€ "์ฝ”๋”ฉ ์ฃผ์ง“์ˆ˜"๋ผ๋Š” ์žฌ๋ฐŒ๋Š” ๋‹จ์–ด๋ฅผ ์•Œ๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.์š”์•ฝํ•˜์ž๋ฉด "์ฝ”๋”ฉ ์ฃผ์ง“์ˆ˜"ํ•˜์ง€ ๋ง๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค.๊ตฌ๊ธ€ ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋ณด๋ฉด, ์ฝ”๋“œ ๊ฐ€๋…์„ฑ(Readability)๋ฅผ ๊ฐ•์กฐํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ, ๋ณธ์ธ์ด ๋‚˜์ค‘์— ๋ณธ์ธ์˜ ์ฝ”๋“œ๋ฅผ ๋ณผ ๋•Œ๋„ ๋„์›€์ด ๋˜๊ณ , ํƒ€์ธ์ด ๋ณผ ๋•Œ๋„ ๋„์›€์ด ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ์— ๋„์›€์ด ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํšŒ์‚ฌ์—์„œ ์‹ ์ž…์œผ๋กœ ์ž…์‚ฌ ํ›„ ์‹œ๋‹ˆ์–ด๋ถ„๊ป˜ ์ฒ˜์Œ ์ฃผ์ž…๋ฐ›์€ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋Š” "์ฝ”๋”ฉ ์ฃผ์ง“์ˆ˜ ํ•˜์ง€ ๋งˆ๋ผ"์™€ ๋น„์Šทํ•œ ๋‚ด์šฉ์˜..

์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

[Java / Playground] Rest API ํ˜ธ์ถœ ๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ / RestTemplate

Github: RestApiServicehttps://github.com/HSRyuuu/Playground/tree/master/src/main/java/com/example/playground/spring/restapi Playground/src/main/java/com/example/playground/spring/restapi at master ยท HSRyuuu/PlaygroundContribute to HSRyuuu/Playground development by creating an account on GitHub.github.com ์ด ์ฝ”๋“œ๋Š” Lombok์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ํ•˜์„ธ์š”. ์‚ฌ์šฉ๋ฒ• RestApiService restApiService = new RestApiService();..

Java

[Java] JAVA_HOME ์ž๋ฐ” ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

Java ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜๋ ค๋ฉด jdk๊ฐ€ ํ•„์š”ํ•˜๋‹ค.์ปดํ“จํ„ฐ๊ฐ€ java๋ฅผ ์ปดํŒŒ์ผ ํ•˜๊ธฐ ์œ„ํ•œ javac๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์„œ jdk์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.์ปดํ“จํ„ฐํ•œํ…Œ jdk ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๊ณผ์ •..๊ฐ„๋‹จํ•˜์ง€๋งŒ ์•Œ์•„๋‘๋ฉด ์•ž์œผ๋กœ ์ž์ฃผ ์“ธ ๊ฒƒ ๊ฐ™์•„์„œ ๊ธฐ๋กํ•ด ๋‘”๋‹ค.์ด ๊ธ€์€ 2024๋…„ 10์›” 14์ผ, Windows 11 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์ž‘์„ฑํ–ˆ๋‹ค.0. jdk ์„ค์น˜์šฐ์„  jdk๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.์—ฌ๊ธฐ์„  C:\dev_files\jdk\openjdk-1.8์— ์œ„์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ€์ •ํ•˜๊ณ  ์„ค๋ช…ํ•œ๋‹ค.1. ์‹œ์Šคํ…œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ฒ€์ƒ‰ํ•ด์„œ "์‹œ์Šคํ…œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŽธ์ง‘"์œผ๋กœ ๋“ค์–ด๊ฐ€๋„ ๋˜๊ณ ,์ œ์–ดํŒ - ์‹œ์Šคํ…œ - ๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ •(์‹œ์Šคํ…œ ์†์„ฑ) - ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๋“ค์–ด๊ฐ€๋„ ๋œ๋‹ค.2-1. ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ์„ค์ •์ค‘์š”ํ•œ ๊ฒƒ์€ jdk ์œ„์น˜์ด๋‹ค.๊ทธ๋Ÿฐ๋ฐ..

HOT
Spring

[Spring] ์นด์นด์˜ค ๋กœ๊ทธ์ธ API ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

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. (์ถ”๊ฐ€) ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ฒ„..

์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

[SonarQube] ์˜คํ”ˆ์†Œ์Šค ์ •์ ๋ถ„์„ Tool ์†Œ๋‚˜ํ๋ธŒ ์‚ฌ์šฉ๋ฒ•

์†Œ๋‚˜ํ๋ธŒ๋ž€?์†Œ๋‚˜ํ๋ธŒ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฒ„๊ทธ, ์ฝ”๋“œ ์Šค๋ฉœ, ๋ณด์•ˆ ์ทจ์•ฝ์  ๋“ฑ์„ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์œ„ํ•œ ์ •์  ์ฝ”๋“œ ๋ถ„์„ ํˆด์ด๋‹ค. ์„ค์น˜ / ์„ธํŒ…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..

Web & Network

[Network] ๋ฐฉํ™”๋ฒฝ - ์ธ๋ฐ”์šด๋“œ & ์•„์›ƒ๋ฐ”์šด๋“œ ๊ทœ์น™์ด๋ž€?

๋ฐฉํ™”๋ฒฝ์ด๋ž€?๋ฐฉํ™”๋ฒฝ(Firewall)์€ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์‹œ์Šคํ…œ์ด๋‹ค. ๋ฏธ๋ฆฌ ์ •์˜๋œ ๋ณด์•ˆ ๊ทœ์น™์— ๋”ฐ๋ผ ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๋Š” ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ์žฅ์น˜ ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค. ๋ถˆ๋ฒ• ์ ‘๊ทผ, ์•…์˜์  ์ ‘๊ทผ, ํŠธ๋ž˜ํ”ฝ ๋‚ญ๋น„ ๋“ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ๋ฐฉํ™”๋ฒฝ์€ ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง, ๋„คํŠธ์›Œํฌ ์„ธ๋ถ„ํ™”, ๊ฐ์‹œ ๋ฐ ๋กœ๊น…, ์ธ์ฆ, ํ”„๋ผ์ด๋ฒ„์‹œ ๋ณดํ˜ธ ๋“ฑ์˜ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.์ด์ค‘ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™, ์•„์›ƒ๋ฐ”์šด๋“œ ๊ทœ์น™์€ ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์— ํฌํ•จ๋œ๋‹ค. ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง(์ ‘๊ทผ ์ œ์–ด)ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง์ด๋ž€ ๋ฐฉํ™”๋ฒฝ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.๋ฐฉํ™”๋ฒฝ์ด ํ—ˆ์šฉํ•œ ํŠธ๋ž˜ํ”ฝ๋งŒ ๋„คํŠธ์›Œํฌ๋กœ ๋“ค์–ด์˜ค๊ฑฐ๋‚˜ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.ํŠธ๋ž˜ํ”ฝ ํ•„ํ„ฐ๋ง ๋ฐฉ์‹ ์ค‘ ํŒจํ‚ท ํ•„ํ„ฐ๋ง ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์˜ ํ—ค๋” ์ •๋ณด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉ/..

Database

[MyBatis] ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

MyBatis๋ž€?MyBatis๋Š” JdbcTemplate์ด ์ œ๊ณตํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ JdbcTemplate์˜ ๋ฌธ์ œ์  ์ค‘ ํ•˜๋‚˜์ธ ์—ฌ๋Ÿฌ ์ค„์˜ String ํ˜• sql์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ MyBatis๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.MyBatis๋Š” SQL์„ xml์— ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , xml ๋‚ด์—์„œ ๋™์  ์ฟผ๋ฆฌ๋ฅผ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. JdbcTemplate์€ ์Šคํ”„๋ง์— ๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ์ด๊ณ , ๋ณ„๋„์˜ ์„ค์ • ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, MyBatis๋Š” ์•ฝ๊ฐ„์˜ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ ์ฟผ๋ฆฌ์™€ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” MyBatis๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋‹จ์ˆœํ•œ ์ฟผ๋ฆฌ๋“ค์ด ๋งŽ๋‹ค๋ฉด JdbcTemplate์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋‹ค.  2024.07.31 ์ถ”๊ฐ€๋‹จ์ˆœํ•œ ๋„๋ฉ”์ธ ๊ด€๋ จ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”..

Linux ๋ฆฌ๋ˆ…์Šค

[Linux/Unix] POSIX๋ž€? (ํฌ์ง์Šค, ์ด์‹ ๊ฐ€๋Šฅ ์šด์˜์ฒด์ œ ์ธํ„ฐํŽ˜์ด์Šค, Unix ํ‘œ์ค€)

POSIX๋ž€?POSIX : Portable Operating System Interface + UniX-> ์ด์‹ ๊ฐ€๋Šฅํ•œ ์šด์˜ ์ฒด์ œ ์ธํ„ฐํŽ˜์ด์Šค + ์œ ๋‹‰์Šค ํ˜ธํ™˜ ์šด์˜์ฒด์ œ์— ๋ณดํ†ต X๊ฐ€ ๋ถ™๋Š” ๊ฒƒ์—์„œ ์œ ๋ž˜ํ•œ๋‹ค.

Database

[SQL/MariaDB] ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ (INSERT, UPDATE, DELETE)

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..

DevOps

[Spring / S3] SpringBoot ํ”„๋กœ์ ํŠธ - S3 ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ

์ด์ „ ๊ธ€์—์„œ 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..

Trouble Shooting

[IntelliJ] ์ธ์ฝ”๋”ฉ(Encoding) ์„ค์ • / ํ•œ๊ธ€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ

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..

์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

[Apache POI] Java ์ฝ”๋“œ๋กœ ์—‘์…€(.xlsx) ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ - Java๋กœ Excel ๋‹ค๋ฃจ๊ธฐ

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..

Spring

[Spring Boot] @PathVariable๊ณผ @RequestParam - ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ›๊ธฐ

@PathVariable ๊ฒฝ๋กœ๋ณ€์ˆ˜ PathVariable์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ์— ์‹๋ณ„์ž๋ฅผ ๋„ฃ์–ด์„œ ๋™์ ์œผ๋กœ URL์— ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. URL ๊ฒฝ๋กœ์˜ ์ค‘๊ด„ํ˜ธ { } ์•ˆ์ชฝ์— ๋ณ€์ˆ˜๋ฅผ ๋‹ด๊ณ , ๊ทธ ๋ณ€์ˆ˜๋ฅผ @PathVariable(" ")๋กœ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ๊ธฐ๋ณธ URL์˜{postId}์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ long orderId์™€ ์ด๋ฆ„์„ ๋งž์ถฐ์ค€๋‹ค. @GetMapping ("/order/{orderId}") public String getOrder(@PathVariable String orderId){ log.info("orderId : {}", orderId); return "orderId:"+ orderId; } ์š”์ฒญ : http://localhost:8080/order/123 ์‘๋‹ต : orderId:1..

HSRyuuu
HS_dev_log