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

โœ๏ธ Today I Learned(TIL)79

[TIL] ๋‹ค์‹œ ์“ฐ๊ธฐ ์‹œ์ž‘ํ•œ TIL 1์ผ์ฐจ.. ๐ŸŒž ์˜ค๋Š˜์€ ์–ด๋–ค ํ•˜๋ฃจ์˜€์ง€..์˜ค๋Š˜์€ ์–ด์ œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ Pass By Pass 2์ผ ์ฐจ์ด๋‹ค. ์–ด์ œ ๋ฏธ๋ค˜๋˜ ์…€ํ”„ ์˜์ƒ์„ ์ฐ์–ด์„œ ํ”ผ๋“œ๋ฐฑ ํ•˜๋Š” ๊ฒƒ์„ ์˜ค์ „์— ๋๋‚ด๊ณ , ์ง€๊ธ‰๋ฐ›์€ ๊ฐ•์˜๋“ค์„ ๋“ค์—ˆ๋”๋‹ˆ ์˜ค์ „์ด ์ˆœ์‹๊ฐ„์— ์ง€๋‚˜๊ฐ”๋‹ค.์ ์‹ฌ์„ ๋จน๊ณ  ๋‚ฎ์ž ์„ ์•ผ๋ฌด์ง€๊ฒŒ ์ž” ๋‹ค์Œ์—, ๊ธฐ์ˆ  ๋งˆ์ธ๋“œ๋งต์„ ๊ทธ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.๋จผ์ € ํ–ˆ๋˜ ๋ถ„์˜ ์กฐ์–ธ์„ ์–ป์–ด์„œ Obsidian์„ ํ™œ์šฉํ•ด์„œ ๋‚ด์šฉ์„ ์ฑ„์›Œ๋‚˜๊ฐ”๋Š”๋ฐ, ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ์„œ ๊ทธ๋Ÿฐ์ง€ ์ˆ˜์›”ํ–ˆ๋‹ค. ๋…ธ์…˜์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ ๋งˆํฌ ๋‹ค์šด ๋ฌธ๋ฒ•์— ์ต์ˆ™ํ•ด์ง„ ๊ฒƒ ๊ฐ™๋‹ค! ์‚ฌ์šฉ์€ ์ˆ˜์›”ํ–ˆ์ง€๋งŒ.. ํ•˜๋‚˜ํ•˜๋‚˜ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งค์šฐ ์˜ค๋ž˜ ์—„์ฒญ ๋งŽ์ด ๊ฑธ๋ ธ๋‹ค.. ๋ฉ”์ธ ํ‚ค์›Œ๋“œ 4๊ฐœ๋งŒ ์ ์—ˆ๋Š”๋ฐ 5์‹œ ๋ฐ˜์ด์—ˆ๋‹ค...... ์ด๋Ÿด ์ˆ˜๊ฐ€..์ €๋…์„ ๋จน๊ณ  ๋‚˜์„œ๋Š” ๋งค์ผ ํ•˜๊ณ  ์žˆ๋Š” ์ฝ”ํ…Œ 1๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ–ˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค .. 2025. 4. 15.
[ TIL ] ํ”Œ๋Ÿฌ์Šค ํ”„๋กœ์ ํŠธ_Day 6 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ํ”„๋กœ์ ํŠธ์— ์บ์‹œ ์ ์šฉํ•˜๋ฃจ์ข…์ผ ๊ณต๋ถ€ํ–ˆ๋˜ ์บ์‹œ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ–ˆ๋‹ค. ๊ฒ€์ƒ‰์–ด๋ฅผ ํ†ตํ•ด ์ƒํ’ˆ๋“ค์„ ์กฐํšŒํ•  ๋•Œ์™€ ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด ์กฐํšŒํ•  ๋•Œ ์บ์‹œ๋ฅผ ์ ์šฉํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰์–ด๋ฅผ ํ†ตํ•ด ์ƒํ’ˆ๋“ค์„ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•œ ๊ฒ€์ƒ‰์–ด๋ฅผ DB์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ count ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— DB์™€ Cache ๊ฐ„์˜ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ํฌ๊ฒŒ ๋‚˜์ง€ ์•Š์•˜๋‹ค.์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด๋Š” ์กฐ๊ธˆ ๋‹ฌ๋ž๋‹ค. ConcurrentHaspMap์„ ์ด์šฉํ•ด์„œ ์บ์‹œ์— ๊ฒ€์ƒ‰์–ด๋ฅผ ๋ชจ๋‘ ์ €์žฅํ•˜๊ณ  ๋งŽ์ด ์ €์žฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด ์กฐํšŒ๋˜๊ฒŒ๋” ๋กœ์ง์„ ๊ตฌํ˜„ํ–ˆ๋”๋‹ˆ DB์—์„œ ์ง์ ‘ ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ๊ณผ Cache์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์— ์†๋„ ์ฐจ์ด๊ฐ€ ์กด์žฌํ–ˆ๋‹ค.ํ”„๋กœ์ ํŠธ์— Redis ์ ์šฉ๊ทธ๋‹ค์Œ์€ ์บ์‹œ๋ฅผ ์ ์šฉํ–ˆ๋˜ ๋ถ€๋ถ„์„ Redis๋กœ ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค.์ƒ๊ฐ๋ณด๋‹ค R.. 2025. 2. 5.
[ TIL ] ํ”Œ๋Ÿฌ์Šค ํ”„๋กœ์ ํŠธ_Day 5 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ์บ์‹œ ๊ณต๋ถ€ํ”„๋กœ์ ํŠธ์— ์บ์‹œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?์Šคํƒ ๋‹ค๋“œ๋ฐ˜ Redis ์„ธ์…˜ ๋“ฃ๊ธฐ ์˜ค๋Š˜ ํ•˜๋ฃจ ์ •๋ฆฌ โœ๏ธ  ๋‚ด์ผ ๊ณ„ํš โฐ 2025. 2. 5.
[ TIL ] Kotlin ๋ฌธ๋ฒ• ๊ธฐ์ดˆ/์‹ฌํ™”_Day 4 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ํ•„์ˆ˜ ๊ณผ์ œ ํ•ด๊ฒฐSpring Security์ธ์ฆ, ๊ถŒํ•œ ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ ์›น ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํ•„์ˆ˜์ ์ธ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” Spring์˜ ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.์‚ฌ์šฉํ•˜๋Š” ์ด์œ Spring Security๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” Spring์˜ ์ƒํƒœ๊ณ„์—์„œ ๋ณด์•ˆ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ์ผ์ผ์ด ๋ณด์•ˆ ๊ด€๋ จ ๋กœ์ง์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. Spring Security๋Š” Spring์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ํ™œ์šฉํ•˜๊ธฐ ์ ์ ˆํ•œ ๊ตฌ์กฐ๋กœ, ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ํ™œ์šฉํ•˜๊ธฐ ์ข‹๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ Spring์—์„œ ์ถ”๊ตฌํ•˜๋Š” IoC/DI ํŒจํ„ด๊ณผ ๊ฐ™์€ ํ™•์žฅ ํŒจํ„ด์„ ๊ณ ๋ คํ•˜์—ฌ ์ธ์ฆ/์ธ๊ฐ€ ๋ถ€๋ถ„์„ ์ง์ ‘ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์ง€๋งŒ.. 2025. 1. 24.
[ TIL ] Kotlin ๋ฌธ๋ฒ• ๊ธฐ์ดˆ/์‹ฌํ™”_Day 3 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง QueryDSL ์ฑŒ๋ฆฐ์ง€๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐ๊ณผ์ œ์— ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด QueryDSL ๊ณต๋ถ€SQL, JPQL ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ Java ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ORM ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ ๋นŒ๋”SQL์„ Java ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋ฉด์„œ, ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋Œ€ํญ ๊ฐœ์„ ๋œ๋‹ค.๋™์  ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋งค์šฐ ์œ ์—ฐํ•˜๋‹ค.์ดˆ๊ธฐ ์„ธํŒ…์ด ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค.Q ํด๋ž˜์Šค ์ƒ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค.๊ณผ์ œ ํ•ด๊ฒฐJPQL๋กœ ์ž‘์„ฑ๋œ ๋ฉ”์„œ๋“œ๋ฅผ QueryDSL๋กœ ๋ณ€๊ฒฝ์„ธ์…˜์—์„œ ๋ฐฐ์šด๋Œ€๋กœ ์ดˆ๊ธฐ ์„ธํŒ…todoId๋ฅผ ํ†ตํ•ด ์ผ์ •์„ ์กฐํšŒํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฉ”์„œ๋“œ๋ผ์„œ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ”๋“œ ์ž‘์„ฑ@Repository@RequiredArgsConstructorpublic class TodoQueryRepository { private final JPAQueryFactory queryFactor.. 2025. 1. 23.
[ TIL ] Kotlin ๋ฌธ๋ฒ• ๊ธฐ์ดˆ/์‹ฌํ™”_Day 1 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ฐœ์ธ ๊ณต๋ถ€ (BaseEntity, GlobalExceptionHandler)BaseEntity์—”ํ‹ฐํ‹ฐ(Entity) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ํŽธํ•˜๋‹ค.์ธ์Šคํ„ด์Šค(Instance) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๋‚ด์šฉ์˜ ์ „์ฒด ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.์†์„ฑ(Attribute) : ์ธ์Šคํ„ด์Šค์˜ ๊ตฌ์„ฑ์š”์†Œ๋กœ์จ ๋” ์ด์ƒ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š๋Š” ๋‹จ์œ„๋กœ, ์—…๋ฌด์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๊ณตํ†ต ์†์„ฑ์ธ created_at, updated_at ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์†Œ์œ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋ณด์—ฌ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค.์ƒ์„ฑ์ผ, ์ˆ˜์ •์ผ์ด ๊ณตํ†ต ์†์„ฑ์œผ๋กœ ํ•ด๋‹นํ•œ๋‹ค. ์ด ์ฝ”๋“œ๋“ค์„ ์—”ํ‹ฐํ‹ฐ์— ๋ชจ๋‘ ์ ์–ด์ค„ ๊ฒฝ์šฐ ์ฝ”๋“œ์˜ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฐ ์ฝ”๋“œ์˜ ์ค‘๋ณต์„.. 2025. 1. 21.