user-img
Develop/BACK-END 26
thumbnail
[DB] ์ธ๋ฑ์Šค ์ปจ๋””์…˜ ํ‘ธ์‹œ๋‹ค์šด(Index Condition PushDown)
0. ํ•™์Šต ๋ชฉ์ ์ธ๋ฑ์Šค ์ปจ๋””์…˜ ํ‘ธ์‹œ๋‹ค์šด์˜ ์ •์˜๋ฅผ ์ดํ•ดํ•œ๋‹ค.์ธ๋ฑ์Šค ์ปจ๋””์…˜ ํ‘ธ์‹œ๋‹ค์šด์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ์™€ ๋น„ํ™œ์„ฑํ™” ๋˜์—ˆ์„ ๋–„, ์‹คํ–‰ ๊ณ„ํš์ด ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค.1. ์ธ๋ฑ์Šค ์ปจ๋””์…˜ ํ‘ธ์‹œ ๋‹ค์šด์ด๋ž€?Index Condition Pushdwon(์ดํ•˜ ICP) ๋Š” ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ๋ฌธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ตœ์ ํ™” ์ „๋žต์ด๋‹ค.๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋˜๋Š” ์ตœ์ ํ™”๋ฅผ ICP๋ผ๊ณ  ํ•œ๋‹ค.์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ '๋ฒ”์œ„๋ฅผ ์ค„์ผ ์ˆ˜ ์—†๋Š” ์กฐ๊ฑด ์ปฌ๋Ÿผ์ด๋”๋ผ๋„' ๋ณด์กฐ ์ธ๋ฑ์Šค์˜ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์กด์žฌํ•˜๋Š” ์ปฌ๋Ÿผ์ด๋ฉด, ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—๊ฒŒ ์ „๋ถ€ ์ „๋‹ฌํ•ด์ค€๋‹ค.์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ, ์˜ตํ‹ฐ๋งˆ์ด์ €์—๊ฒŒ ๋ฐ›์€ ์กฐ๊ฑด ์ปฌ๋Ÿผ๋“ค๋กœ ์ตœ๋Œ€ํ•œ ์œ ํšจํ•˜์ง€ ์•Š์€ ํŠœํ”Œ๋“ค์„ ๊ฑธ๋Ÿฌ๋‚ธ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ๋ณธ ํ…Œ์ด๋ธ”์„ ์ฝ๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค. [!info] MyS..
2025.07.24
Develop/BACK-END
thumbnail
[Java] Java์—์„œ ์ •๊ทœ ํ‘œํ˜„์‹ ํ™œ์šฉํ•˜๊ธฐ
0. ํ•™์Šต ๋ชฉ์ ์ •๊ทœ ํ‘œํ˜„์‹์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Java ํด๋ž˜์Šค๋“ค์—๋Š” ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•œ๋‹ค. ํ•ด๋‹น ํด๋ž˜์Šค๋“ค์˜ ๋งค์„œ๋“œ์˜ ๋œป๊ณผ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžŒ๋‹ค.1. ์ •๊ทœ ํ‘œํ˜„์‹์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Java ํด๋ž˜์Šคjava.util.regex์— ์žˆ๋Š” Pattern ํด๋ž˜์Šค์™€ Matcher ํด๋ž˜์Šค ํ™œ์šฉString ํด๋ž˜์Šค์˜ ์ •๊ทœ ํ‘œํ˜„์‹ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋งค์„œ๋“œ ํ™œ์šฉ2. Pattern๊ณผ Matcher ์ดํ•ดํ•˜๊ธฐ(1) Pattern ํด๋ž˜์Šค์ •๊ทœ ํ‘œํ˜„์‹์„ ์ปดํŒŒ์ผํ•˜์—ฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋ถˆ๋ณ€ ๊ฐ์ฒด (ํ•œ ๋ฒˆ ์ •๊ทœ ํ‘œํ˜„์‹ ์ž…๋ ฅํ•ด์„œ ์ปดํŒŒ์ผํ•˜๋ฉด, ์ดํ›„ ๋™์ผ Pattern ๊ฐ์ฒด์˜ ์ •๊ทœ ํ‘œํ˜„์‹์€ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.)Thread-Safe -> ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ๊ฐ™์€ Pattern ๊ฐ์ฒด ๊ณต์œ  ๊ฐ€๋ŠฅPattern ํด๋ž˜์Šค๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์„ ๋‹ด๊ณ  ์žˆ๋Š” ์—ญํ•  ๋ฐ–์— ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฌธ์ž์—ด..
2025.07.21
Develop/BACK-END
thumbnail
String Constant Pool: String ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ
0. ํ•™์Šต ๋ชฉ์ String Constant Pool ์ด๋ผ๋Š” ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•œ๋‹ค.String์„ ์™œ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ์œ ์ถ”ํ•œ๋‹ค.1. String Constant Pool ์ด๋ž€?JVM Heap์— ์กด์žฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์œผ๋กœ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ธ String ๋ฆฌํ„ฐ๋Ÿด ์ „์šฉ ์ €์žฅ ๊ณต๊ฐ„ ์ด๋‹ค.ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ชจ๋“  String ๋ฆฌํ„ฐ๋Ÿด์€ String Constant Pool์— ์ €์žฅ๋œ๋‹ค.2. ํŠน์ง•String Literal ๋งŒ ์ €์žฅPool์— ์กด์žฌํ•˜๋Š” ๋ฌธ์ž์—ด์ด ์žฌ ์„ ์–ธ๋˜๋ฉด, ์ƒˆ๋กœ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  ์žˆ๋Š” ๊ฑฐ ์žฌํ™œ์šฉ (1) String Literal ๋งŒ ์ €์žฅํ•œ๋‹ค.String ๊ฐ์ฒด ์„ ์–ธ ๋ฐฉ์‹์€ 2๊ฐœ๋กœ ๋‚˜๋‰œ๋‹ค.// ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹ ์„ ์–ธString str1 = "Hello World";// ๊ฐ์ฒด ๋ฐฉ์‹ ์„ ์–ธString str2 = new..
2025.07.18
Develop/BACK-END
thumbnail
Java์˜ String
0. ํ•™์Šต ๋ชฉ์ String์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ž„์„ ์ดํ•ดํ•œ๋‹ค.์œ ์šฉํ•œ String ํด๋ž˜์Šค ํ•จ์ˆ˜๋ฅผ ์•Œ์•„๋‘ฌ์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ ์šฉํ•œ๋‹ค.1. String์˜ ํŠน์ง• : ๋ถˆ๋ณ€์„ฑString ๊ฐ์ฒด์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋ถˆ๋ณ€์„ฑ์ด ๋ณด์žฅ ๋˜๋Š” ๊ฐ์ฒด ๋ผ๋Š” ๊ฒƒ์ด๋‹ค.(1) final ํด๋ž˜์Šค๋กœ ์„ ์–ธ๋จfinal ํด๋ž˜์Šค๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์–ด์„œ ์ƒ์†์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.(2) ๊ฐ’์„ ๋‹ด๋Š” ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋„ private final ์ž„String ๋ฌธ์ž์—ด์˜ ์‹ค์งˆ์  ๊ฐ’์„ ๋‹ด๋Š” byte ๋ฐฐ์—ด๋„ private final๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋‹ค. ์ด ๋•Œ๋ฌธ์—, String ๊ฐ์ฒด๊ฐ€ ํ•œ ๋ฒˆ ์„ ์–ธ๋˜๋ฉด, ์ดํ›„ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์žฌํ• ๋‹น ํ•  ์ˆ˜ ์—†๋‹ค.(3) ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์ž์—ด ๋ณ€๊ฒฝ ์ฝ”๋“œ๋‚˜ ํ•จ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ• ๊นŒ?์›๋ž˜์˜ String ๊ฐ์ฒด์— ๊ฐ’์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ƒˆ๋กœ์šด String ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง„..
2025.07.18
Develop/BACK-END
thumbnail
[๋ฐฑ์—”๋“œ] Spring์—์„œ์˜ IoC ๊ตฌํ˜„
0. ํ•™์Šต ๋ชฉ์ Spring์—์„œ ์ œ์–ด์˜ ์—ญ์ „์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค.Spring์—์„œ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•˜๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค.Spring์—์„œ ๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋กํ•˜๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค.Spring์—์„œ ์–ด๋–ป๊ฒŒ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•˜๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค.1. Spring์—์„œ๋Š” IoC๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”๊ฐ€?Spring์—์„œ๋Š” Spring IoC Container๋ผ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ ์ „์šฉ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด์„œ IoC๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. Spring์—์„œ IoC๊ฐ€ ์ด๋ฃจ์–ด์ง€๋Š” ๊ณผ์ •์„ ๊ทธ๋ ค๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.์ถœ์ฒ˜: javaguide.net๊ณผ์ •์„ ๋ง๋กœ ํ’€์–ด๋ณด๋ฉด,ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์‹œ, Spring IoC Cotainer๊ฐ€ ApplicationContext ๊ตฌํ˜„์ฒด๋กœ ์ƒ์„ฑ๋œ๋‹ค.์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ๊ฐ์ฒด๋ฅผ ์ฐพ๋Š”๋‹ค...
2025.07.14
Develop/BACK-END
thumbnail
[๋ฐฑ์—”๋“œ] IoC (Inversion of Control)๋ž€?
0. ํ•™์Šต ๋ชฉ์ IoC (inversion of Control)์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•œ๋‹ค.1. IoC ๋ž€?๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ํ†ต์ œ๊ถŒ์„ ๊ฐœ๋ฐœ์ž์—์„œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋„˜๊ธฐ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.(1) IoC ์ด์ „์˜ ์ „ํ†ต์  OOP ๋ฐฉ์‹ ๋ชจ๋“ˆ ๊ฐ„ ๊ฒฐํ•ฉpublic class OrderController { public void processOrder() { // ์ง์ ‘ ๊ฐ์ฒด ์ƒ์„ฑ - ๊ฐ•ํ•œ ๊ฒฐํ•ฉ PaymentService paymentService = new PaymentService(); EmailService emailService = new EmailService(); // ์‚ฌ์šฉ paymentService.processPayment(); emai..
2025.07.14
Develop/BACK-END
thumbnail
SELF INVOCATION์˜ ์ •์˜, ์›๋ฆฌ, ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
0. ํ•™์Šต ๋ชฉ์ SELF INVOCATION์ด ๋ฌด์—‡์ธ์ง€, ์–ธ์ œ ์ผ์–ด๋‚˜๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค.ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•œ๋‹ค.1. SELF INVOCATION ์ด๋ž€?AOP ๋งค์ปค๋‹ˆ์ฆ˜ ์‚ฌ์šฉ ์‹œ ๊ฒช์„ ์ˆ˜ ์žˆ๋Š” ๋ถ€์ž‘์šฉ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.ํŠน์ • ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋งค์†Œ๋“œ A๊ฐ€ ๊ฐ™์€ ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ๋งค์†Œ๋“œ B๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•  ๋•Œ, B์— ๊ฑธ๋ ค์žˆ๋Š” AOP๋Š” ๋ฌด์‹œ๋˜๋Š” ํ˜„์ƒ์ด๋‹ค.(1) ์˜ˆ์‹œ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค TEST ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ํ•ด๋ณด์ž.public class Test { public void methodAB(A a, B b) { methodA(A a); methodB(B b); } @Transactional public void methodA(A a) { repository.save(A a); ..
2025.06.30
Develop/BACK-END
thumbnail
@Transactional์— ๊ด€ํ•˜์—ฌ
0. ํ•™์Šต ๋ชฉ์ @Transactional์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•œ๋‹ค@Transactional์˜ ๊ตฌ์„ฑ์š”์†Œ์™€ ์ž‘๋™์›๋ฆฌ๋ฅผ ์ดํ•ดํ•œ๋‹ค.์™œ ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ์—๋Š” ํŠธ๋žœ์žญ์…˜์ด ์ „ํŒŒ๋˜์ง€ ์•Š๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค.1. @Transactional ์ด๋ž€?Spring Framework์—์„œ ํŠธ๋žœ์žญ์…˜์„ ์„ ์–ธ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ์–ด๋…ธํ…Œ์ด์…˜(1) '์„ ์–ธ์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. ' ์˜ ์˜๋ฏธํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ํด๋ž˜์Šค๋‚˜ ๋งค์„œ๋“œ์— @Transactional ์–ด๋…ธํ…Œ์ด์…˜์„ '์„ ์–ธ'๋งŒ ํ•˜๋ฉด, ์„ ์–ธ๋œ ๋ฒ”์œ„๋ฅผ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ปจํ…์ŠคํŠธ๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•ด์ค€๋‹ค.์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ๊ฒฝ๊ณ„ ํŒŒ์•…์ด ์‰ฝ๋‹ค.๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๋กœ์ง์ด ๋ถ„๋ฆฌ๋˜์–ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ง‘์ค‘๊ณผ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ˆ˜์›”ํ•ด์ง„๋‹ค.(2) ํŠธ๋žœ์žญ์…˜ ์„ ์–ธ ๋ฒ”์œ„์— ๋”ฐ๋ฅธ ์˜๋ฏธํด๋ž˜์Šค์— ์„ค์ • ์‹œ, ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๋ชจ..
2025.06.30
Develop/BACK-END
thumbnail
[๊ฐœ๋ฐœ ์ง€์‹] AOP (๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)์˜ ๊ฐœ๋…
0. ํ•™์Šต ๋ชฉ์ AOP๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•œ๋‹ค.AOP๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ ์ด์œ ์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.AOP์˜ ๊ตฌ์กฐ์™€ ์šฉ์–ด๋“ค์„ ์ดํ•ดํ•œ๋‹ค.AOP์˜ ์ž‘๋™์›๋ฆฌ๋ฅผ ์ดํ•ดํ•œ๋‹ค.SPRING์—์„œ AOP๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ทธ ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.1. AOP ๋ž€?AOP๋ž€ Aspect Oriented Programming (๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) ์˜ ์•ฝ์ž๋กœ, ๊ด€์‹ฌ์‚ฌ ๋ผ๋Š” ๊ด€์ ์— ๋”ฐ๋ผ ์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•œ๋‹ค.์—ฌ๊ธฐ์„œ ๊ด€์‹ฌ์‚ฌ๋Š” ๋‘ ๊ฐœ๋กœ ๋‚˜๋‰œ๋‹ค.ํ•ต์‹ฌ ๊ด€์‹ฌ์‚ฌ (Core Concern): ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ทธ์ž์ฒดํšก๋‹จ ๊ด€์‹ฌ์‚ฌ (Cross-cutting Concern): ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ ์™ธ์˜ ๋ถ€๊ฐ€์ ์ธ ๋กœ์ง (ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ๋กœ๊น…, ๋ณด์•ˆ, ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘)ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ๊ฐ์ฒด ๋‚ด์—์„œ ํ•ต์‹ฌ ๊ด€์‹ฌ์‚ฌ ์™€ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ ๋ฅผ..
2025.06.22
Develop/BACK-END
thumbnail
[๋ฐฑ์—”๋“œ] Tistory-card-stats, ๊นƒํ—ˆ๋ธŒ ํ”„๋กœํ•„ ์šฉ ํ‹ฐ์Šคํ† ๋ฆฌ ์นด๋“œ ๋งŒ๋“ค๊ธฐ (1)
0. tistory-card-stat ์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ ์ด์œ ํ‹ฐ์Šคํ† ๋ฆฌ๋ฅผ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋กœ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ํ‹ฐ์Šคํ† ๋ฆฌ์— ์“ด ์ตœ์‹  ๊ธ€ ๋‚ด์šฉ์„ ๊นƒํ—ˆ๋ธŒ ํ”„๋กœํ•„์— ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์—ˆ๋‹ค. ์˜†๋™๋„ค Velog์˜ ๊ฒฝ์šฐ, ์ด๋Ÿฌํ•œ ๊ฐˆ์ฆ์„ ํ•ด์†Œํ•ด์ค„ ๋„ˆ๋ฌด๋‚˜ ์„ธ๋ จ๋œ ์นด๋“œ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค.๋งŒ๋“œ์‹  ๋ถ„ ๊นƒํ—ˆ๋ธŒ - enugyeole-velog-readme-stat์ด๋ ‡๊ฒŒ ์ž๊ธฐ velgo ๊ณ„์ •์„ ๋„ฃ์œผ๋ฉด ๋‚ด์šฉ์ด ๋ณด์ด๋„๋ก ํ•ด์ฃผ๊ณ  ์žˆ๋‹ค. ํ‹ฐ์Šคํ† ๋ฆฌ๋„ ๊ด€๋ จ๋œ ์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊นƒํ—ˆ๋ธŒ๋ฅผ ๋‹ค ๋’ค์กŒ์ง€๋งŒ ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค. ์•„ ์กด์žฌํ–ˆ์ง€๋งŒ, ๋” ์ด์ƒ ์„œ๋น„์Šค๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ์žˆ๋Š” ์ค‘์ด์—ˆ๋‹ค. ๊ทธ๋ฆฟ ์†์˜ ํ•ด๋น—์ด๋ผ๋Š” ๊ฐœ๋ฐœ์ž ๋ถ„ ๊ป˜์„œ Gihub Profile ์ „์šฉ card-stat์„ ๋งŒ๋“ค์—ˆ์œผ๋‚˜, ๋” ์ด์ƒ ์„œ๋น„์Šค ํ•˜๊ณ  ์žˆ์ง€ ์•Š์•˜๋‹ค.์™œ ๊ทธ๋Ÿฐ์ง€ ๋ดค๋”๋‹ˆ, ์ด์œ ๊ฐ€ ๋‹ค์Œ..
2025.04.17
Develop/BACK-END
thumbnail
[์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ] Jmeter๋กœ ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ ์ž‘์„ฑํ•˜๊ธฐ
0. ๋“ค์–ด๊ฐ€๋ฉฐ...ํ˜„์žฌ ๊ตฌ์ธ ๊ตฌ์ง ์„œ๋น„์Šค์˜ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•œ ์ƒํƒœ์ด๋‹ค. ์ผ (job)๊ณผ ํšŒ์› (member)๋Š” ๋งค์นญ(matching)์ด๋ž€ ๊ต์ฐจ ํ…Œ์ด๋ธ”์„ ๋‘๊ณ , ์„œ๋กœ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๊ธฐ์—, ์—ฐ๊ด€์ด ์žˆ๋Š” ํšŒ์›์€ ์ผ๊ณผ ํ•˜๋‚˜์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค.์œ„์˜ ์˜๋ขฐ์ธ์€ ์ผ์˜ ์ฃผ์ธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ƒํƒœ๋Š” OWNER๋งŒ ๊ฐ€์ง„๋‹ค. ๋ฐ˜๋ฉด ํ•ด๊ฒฐ์‚ฌ๋Š” ์ž์‹ ์˜ ํ˜„์žฌ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ƒํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค. ์‹ ์ฒญ๋งŒ ํ–ˆ๊ฑฐ๋‚˜ ์˜๋ขฐ์ธ์—๊ฒŒ ์„  ์˜๋ขฐ๋ฅผ ๋ฐ›์€ ์ƒํƒœ๋ผ๋ฉด, ATTENDER๋‚˜ REQUEST๋ฅผ ๊ฐ€์ง€๊ณ , ์˜๋ขฐ์ธ์—๊ฒŒ ํ•ด๊ฒฐ ์š”์ฒญ์„ ์Šน๋‚™ ํ˜น์€ ๊ฑฐ์ ˆ ๋ฐ›๊ฑฐ๋‚˜ ํ˜น์€ ํ•ด๊ฒฐ์‚ฌ๊ฐ€ ์„ ์˜๋ขฐ๋ฅผ ์Šน๋‚™ ํ˜น์€ ๊ฑฐ์ ˆํ•œ ์ƒํƒœ์ด๋ฉด, YES ํ˜น์€ NO๋ผ๋Š” ์ƒํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค.START๋Š” ์ผ์„ ์ง„์งœ ์‹œ์ž‘ํ•ด์•ผ๋งŒ ๊ฐ€์ง€๋Š” ์ƒํƒœ์ด๋ฉฐ, SLEEP์€ ํ•ด๊ฒฐ์‚ฌ๊ฐ€ ์ผ ํ•ด๊ฒฐ์—์„œ ๋…ธ์‡ผํ•œ ๊ฒฝ์šฐ ์˜๋ขฐ์ธ์ด..
2025.03.25
Develop/BACK-END
thumbnail
[์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ] ๋Œ€๋Ÿ‰์˜ ์œ ์ € ๋™์ ‘์„ ์œ„ํ•œ JWT ํ† ํฐ ์ถ”์ถœ ๋ฐ ์ˆ˜์ง‘๊ธฐ ๊ตฌํ˜„
0. ๋“ค์–ด๊ฐ€๋ฉฐ...ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ๊ตฌ๋ฆ„ PROTECT์—์„œ ๊ตฌํ˜„ํ•œ API์— ๋Œ€ํ•œ ์„ฑ๋Šฅํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ํ•„์ž๋Š” ์ง„์ •ํ•œ ๋Œ€๋Ÿ‰์˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋งค๋ฒˆ ๋‹ค๋ฅธ JWT ํ† ํฐ ๊ฐ’์ด Header์— ๋‹ด๊ฒจ์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.์‹ค์ œ์™€ ๊ฐ™์€ ํ™˜๊ฒฝ์„ ์ตœ๋Œ€ํ•œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์ œ ์„œ๋น„์Šค์—์„œ๋„, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ํ•œ ๋ช…๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋ฐ, ํ•œ ์‚ฌ๋žŒ๋งŒ ์š”์ฒญ์„ 5๋งŒ ๋ฒˆ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ฌผ ๊ฒƒ์ด๋‹ค. ํ•œ ์‚ฌ๋žŒ์ด ๋งค๋ฒˆ ๊ฐ™์€ ์š”์ฒญ์„ ํ•  ๊ฒฝ์šฐ, DB ์บ์‹ฑ๊ณผ ์„œ๋ฒ„ ์บ์‹ฑ์œผ๋กœ ํ•ด๋‹น ๋‚ด์šฉ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋  ๊ฒƒ์ด๋ฏ€๋กœ, ์ง„์ •ํ•œ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ๋ณผ ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋ผ ํŒ๋‹จํ–ˆ๋‹ค.๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๋ช…์ด ์„œ๋น„์Šค๋ฅผ ๊ฐ์ž ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ‰๋‚ด๋‚ด๊ณ ์ž HEADER์˜ Authorization์— ๋งค ๋ฒˆ ๋‹ค๋ฅธ ํ† ํฐ ๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค.1. ํ† ํฐ ์ƒ์„ฑ ..
2025.03.24
Develop/BACK-END
thumbnail
Log ์ƒ‰๊น” ์ž…ํžˆ๊ธฐ
0. ๋กœ๊ทธ๊ฐ€ ํฐ์ƒ‰์ด๋ฉด...๋ณด๊ธฐ๊ฐ€ ํž˜๋“ค๋‹ค.์ด๊ฒŒ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ๋ณด๋ฉด ๊ทธ๋‚˜๋งˆ ๋‚˜์€๋ฐ, ๋ฐฐํฌ๋œ ์„œ๋ฒ„๋กœ ๋“ค์–ด๊ฐ€ ๋กœ๊ทธ๋ฅผ ๋ณผ๋ ค๊ณ  ์น˜๋ฉด ์ •๋ง ๊ตฌ๋ถ„ํžˆ ํž˜๋“ค์–ด์ง„๋‹ค. ์ด๋ฅผ ์œ„ํ•ด๋กœ๊ทธ ๋ ˆ๋ฒจ ๋ณ„๋กœ ์ƒ‰๊น”์„ ์ ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋ ค ํ•œ๋‹ค.1. ์ ์šฉ ๋ฐฉ๋ฒ•(1) ํŒŒ์ผ ๊ตฌ์กฐ ๋ฐ ์˜์กด์„ฑ ์‚ฝ์ž…resources ๋ถ€๋ถ„์— logBack์„ ๋‘”๋‹ค. ์ดํ›„ ๋กœ๊น…๊ณผ ์‹ค์ œ ๊ตฌํ˜„ ์ฝ”๋“œ ๊ฐ„์˜ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ์œ„ํ•ด @SLF4J ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ์ง€ ์•Š์œผ๋ฉด ๋กœ๊ทธ๋ฅผ ์“ฐ๊ณ  ์‹ถ์€ ๋ชจ๋“  ํด๋ž˜์Šค๋งˆ๋‹ค Logger ๊ฐ์ฒด๋ฅผ ์ฃผ์ž… ๋ฐ›์•„์•ผ ํ•œ๋‹ค. ์ด๋Š” ๊ฐ์ฒด๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋†’์ด๊ณ , Logger ๊ธฐ๋Šฅ ์ž์ฒด์˜ ์œ ์—ฐ์„ฑ๋„ ์ค„์ธ๋‹ค. (์ฒ˜์Œ์—” Log-Back ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋‹ค๊ฐ€ Log4j๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ @SL4FJ๋ฅผ ์•ˆ ์“ด๋‹ค๋ฉด ๋ชจ๋“  Logger ๋ฉค๋ฒ„๋ฅผ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•œ๋‹ค;;)..
2025.02.13
Develop/BACK-END
thumbnail
Jasypt๋ฅผ ํ™œ์šฉํ•ด Secret-key ์•”ํ˜ธํ™” ๋ฐ ์„œ๋ฒ„ ๋ฐฐํฌ ์‹œ ์ž๋™ ๋ณตํ˜ธํ™”
0. ์™œ ํ•„์š”ํ•œ๊ฐ€์™ธ๋ถ€ API๋‚˜ DB, ๋ฏธ๋“ค์›จ์–ด ์—ฐ๋™์„ ์œ„ํ•ด์„œ๋Š” ํ™œ์šฉ์„ ์œ„ํ•ด ์•ฝ์†ํ•œ secret-key๋ฅผ ๋“ค๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ณดํ†ต ๊ฐœ๋ฐœ์ž๋“ค์€ ์„ค์ •ํŒŒ์ผ์— ๊ทธ๊ฒƒ์„ ๋ชฐ์•„๋„ฃ๊ณ , @Value()๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ทธ๊ฒƒ๋“ค์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ๋‹ค์Œ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋ง์ด๋‹ค.์ด๋Ÿฐ secret-key๋“ค์€ ์œ ์ถœ๋˜๋ฉด ํ•ดํ‚น ๋“ฑ ํ”„๋กœ์ ํŠธ์— ์น˜๋ช…์ ์ธ ์œ„ํ˜‘์„ ์ค€๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐœ๋ฐœ์ž๋“ค์€ ํ•ญ์ƒ ์ด๊ฒƒ๋“ค์— ๋Œ€ํ•ด ์‹ ๊ฒฝ ์“ฐ๊ณ , ์ธํ”„๋ผ ํŒ€ ๋˜ํ•œ Jenkins๋‚˜ DockerHub์— ํ‚ค ๋ฆฌ์ŠคํŠธ๋“ค์„ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•ด์„œ ๊ณจ์น˜ ์•„ํ”„๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Java์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Jasypt๋ฅผ ํ™œ์šฉํ–ˆ๋‹ค.1. Jasypt๋ž€?(0) ์ •์˜๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™” ํ˜น์€ ๋‹จ์ผ ํ‚ค ์–‘๋ฐฉํ–ฅ ์•”ํ˜ธํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฐ•์ ์ด๋ผ ํ•œ๋‹ค๋ฉด Jasypt๋กœ ์•”ํ˜ธํ™”ํ•œ ๋Œ€์ƒ์„ ํŠน์ •ํ•˜..
2025.02.12
Develop/BACK-END
thumbnail
๊ณตํ†ต ์‘๋‹ต ์ž๋™ํ™” ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ (๋ด‰ํˆฌ ํŒจํ„ด ๋„์ž… - @ResponseBody Advice)
0. ํ•„์š”์„ฑ์ €๋ฒˆ์— ํ–ˆ๋˜ 6์ธ ํ”„๋กœ์ ํŠธ์˜ ๋ฐ˜ํ™˜ ํ™˜๊ฒฝ ๋ชจ์Šต์ด๋‹ค. ๋‹น์‹œ ResultResponse๋ผ๋Š” ํŒ€ ๋‚ด์˜ ๊ณตํ†ต ์‘๋‹ต ๊ทœ์น™์„ ์ •ํ•˜๊ณ , ResponseEntity๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— DTO๋ฅผ ResultResponse๋กœ ํ•œ ๋ฒˆ ๋” ๊ฐ์‹ธ์„œ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค.๊ทธ ๋‹น์‹œ์—๋Š” ํฐ ๋ถˆํŽธํ•จ ์—†์ด ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์ง€๋งŒ, ๋‹ค์‹œ ๋ณด๋‹ˆ 2๊ฐ€์ง€ ๋ถˆํŽธ ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋‹ค.1๏ธโƒฃ ๋งค์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ํ•ญ์ƒ ResponseEntity์™€ ResultResponse๋กœ ๊ฐ์‹ธ์ค˜์•ผ ํ•œ๋‹ค. ์‹ค์ œ ํ•„์ž๊ฐ€ ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ค˜์•ผํ•  JSON ๋ฐ˜ํ™˜ ๊ฐ์ฒด๋Š” TokenDTO์ธ๋ฐ, ๊ทธ์ € ๋ฐ˜ํ™˜ ๊ทœ์น™์„ ์œ„ํ•ด์„œ ํ”„๋กœ์„ธ์Šค์—์„œ๋Š” ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ๋งŒ ํ•œ๋‹ค.2๏ธโƒฃ ๊ฐ™์€ ์ด์œ ๋กœ ๋ฐ˜ํ™˜๊ฐ’ ๋˜ํ•œ ๋‘ ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•ด ๊ฐ์‹ธ์ค˜์•ผ ํ•œ๋‹ค.์ด๋Š” 3์ธ์˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ด๋ผ๋„ ์‹ค์ˆ˜๋กœ ResultRe..
2025.02.12
Develop/BACK-END
thumbnail
[ํ† ํฐ ์ธ์ฆ ๋ฐฉ์‹]์˜ ์›๋ฆฌ, ์„ธ์…˜ ์ธ์ฆ๊ณผ์˜ ์ฐจ์ด์ 
1. Token ์ธ์ฆ ๋ฐฉ์‹์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด ์ง€๋Š”๊ฐ€ํšŒ์›์ด ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.โ“ Client๊ฐ€ ID/PW ๋กœ๊ทธ์ธ ์ฐฝ์— ์จ์„œ ์ œ์ถœํ•œ๋‹ค.โ“‘ Server๊ฐ€ DB๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ID/PW๋ฅผ ๊ฐ€์ง„ ํšŒ์›์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.์—ฌ๊ธฐ์„œ ํ•ด๋‹น ํšŒ์›์˜ ์ •๋ณด๊ฐ€ ์šฐ๋ฆฌ DB์— ์žˆ์–ด์„œ ์šฐ๋ฆฌ ํšŒ์›์ธ ๊ฒƒ์ด ํ™•์ธ ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.โ“’ Server์—์„œ ํ•ด๋‹น ํšŒ์›์˜ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณ ์œ ํ•œ Token์„ ๋งŒ๋“ ๋‹ค.โ““ ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ํ† ํฐ์„ ์•„๊นŒ ์œ ํšจํ•œ ์š”์ฒญ์„ ํ•œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด์ค€๋‹ค.โ“” ์ด์ œ ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ์ด ํ•„์š”ํ•œ API๋ฅผ ์ด์šฉํ•  ๊ฒฝ์šฐ ํ•ด๋‹น Token์„ ์š”์ฒญ Header์— ๋™๋ด‰ํ•˜์—ฌ ๊ฐ™์ด ๋ณด๋‚ธ๋‹ค.โ“• ์ด์ œ ์„œ๋ฒ„์—์„œ๋Š” ํ•ด๋‹น Token์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆ ํ›„ ์œ ํšจํ•œ ํ† ํฐ์ด ๋งž๋‹ค๋ฉด ์‘๋‹ต์œผ๋กœ ์š”์ฒญํ•œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ •์ƒ ๋‹ต๋ณ€์„ ๋ณด๋‚ด์ฃผ๋ฉด ๋œ๋‹ค.๊ทธ๋ ‡๋‹ค๋ฉด ๊ธฐ..
2024.07.07
Develop/BACK-END
thumbnail
[Intellij] Git Shelve์™€ Stash์˜ ์ฐจ์ด
1. Git Shelve - ์ž ์‹œ ๋‹ค๋ฅธ๋ฐ ๋‹ค๋…€์˜ฌ๊ฑฐ๋‹ˆ๊นŒ. ์ž‘์—…ํ•˜๋˜ ๊ฑฐ ์„ ๋ฐ˜์— ์˜ฌ๋ ค๋‘์ž!git shelve๋ฅผ ํ•˜๋ฉด ํ•ด๋‹น Branch์˜ ์ž„์‹œ ์ €์žฅ์†Œ์— ์ €์žฅ๋œ๋‹ค.ํ˜„ branch์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋“ค๊ณ , ๋‹ค๋ฅธ branch์— ๋†”๋‘๋Š” ํ–‰์œ„๋ฅผ ๋ชปํ•œ๋‹ค.ํ•ด๋‹น ๋ธŒ๋žœ์น˜์— ์ž‘์—… ํ•˜๋˜ ๊ฒƒ์„ ์ž„์‹œ ์ €์žฅํ•˜๊ณ , ๋‹ค๋ฅธ branch์—์„œ ์ผ ๋ณธ ๋’ค์— ๋‹ค์‹œ ๋Œ์•„์™€์„œ unshelved ํ•˜๋ฉด ๋œ๋‹ค.์ž„์‹œ์ €์žฅํ•œ ๊ฑฐ ๋นผ๋‚ด ์˜ค๋ ค๋ฉด์ €๊ฑธ ๋ˆŒ๋Ÿฌ์„œ ๋‹ค์‹œ changes๋กœ ๋“ค๊ณ ์™€์•ผ ํ•œ๋‹ค.unshelved ํ–ˆ๋‹ค๊ณ  ํ•ด์„œ shelf์— ์ €์žฅ๋œ ์ž„์‹œ ์ €์žฅ ๋‚ด์—ญ์ด ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค. ์—†์• ๊ณ  ์‹ถ๋‹ค๋ฉด ์‚ญ์ œํ•˜์ž.2. git stash / unstash - ํ˜„ branch์—์„œ ์ž‘์—…ํ•œ ๋‚ด์—ญ ๋“ค๊ณ  ๋‹ค๋ฅธ branch๋กœ ๊ฐˆ๋ž˜. ๊ฑฐ๊ธฐ์„œ ์ž‘์—… ๊ณ„์† ์ด์–ด ๊ฐˆ๋ž˜Intellij ์—์„œ๋Š” git -> un..
2024.05.06
Develop/BACK-END
thumbnail
ํŠนํ™” ํ”„๋กœ์ ํŠธ Spring Security ๋ถ„์„
1. ๊ฐœ์š”4์›” 5์ผ๋ถ€๋กœ ํŠนํ™” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚ฌ๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ๋ณด์•ˆ์„ ๋งก์•˜๋Š”๋ฐ, ํ•ญ์ƒ ๋‚ด๊ฐ€ ๋งก์€ ํŒŒํŠธ๋ฅผ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ๋ฒŒ์จ 2์ฃผ ๋ฐ˜์ด ํ˜๋ €๊ธฐ์—, ๋” ๊นŒ๋จน๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ์ •๋ฆฌํ•ด๋‘๋ คํ•œ๋‹ค.ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ์ „๋ฌธ์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ์„ ํ™•์ธํ•˜์ž.SSAFY 10๊ธฐ ๊ตฌ๋ฏธ 2๋ฐ˜ ํŠนํ™”ํ”„๋กœ์ ํŠธ WALK_WALK2. ์ „๊ฐœ๋„3. ์ฝ”๋“œ ๋ถ„์„(1) JwtAuthFilter ์•ˆ์— ์žˆ๋Š” JwtUtil ๋ถ„์„import io.jsonwebtoken.*;import io.jsonwebtoken.security.Keys;import jakarta.annotation.PostConstruct;import jakarta.servlet.http.HttpServletRequest;import lombok.RequiredArgsCo..
2024.04.26
Develop/BACK-END
thumbnail
JWT์— ๋Œ€ํ•˜์—ฌ
1. JWT๋ž€ ๋ฌด์—‡์ธ๊ฐ€?๊ธฐ๋ณธ์ ์ธ ํ† ํฐ ์ธ์ฆ ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๊ณ , ๊ฑฐ๊ธฐ์„œ ํ† ํฐ ์ž์ฒด๋ฅผ ๊ฐ•ํ™”ํ•œ ๋ฐฉ์‹์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.์›๋ž˜์˜ ํ† ํฐ ์ธ์ฆ ๊ธฐ๋ฐ˜์—์„œ ์š”์ฒญ์ž๊ฐ€ ๋ณด๋‚ด์˜จ ID/PW ๊ฐ€ DB์— ์กด์žฌํ•˜๋ฉด (์šฐ๋ฆฌ ํšŒ์›์ด ๋งž์œผ๋ฉด) ๊ทธ ์š”์ฒญ์ž์—๊ฒŒ ์ž์‹ ๋“ค์˜ API๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š” ํ—ˆ๊ฐ€์ฆ์ธ ํ† ํฐ์„ ์ „ํ•ด์คฌ์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋”ํ•ด JWT์˜ ๊ฒฝ์šฐ ํ† ํฐ์„ ๋งŒ๋“ค ๋•Œ, ์‚ฌ์šฉ์ž์˜ ์ •๋ณด(๊ฐ„๋‹จํ•œ ๊ฐœ์ธ์ •๋ณด ๋“ฑ +@)๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋งŒ๋“ ๋‹ค.์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ฌด์—‡์ด ์ข‹์„๊นŒ?์•„๊นŒ ํ† ํฐ ์ž์ฒด๊ฐ€ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ฐœ์ธ ์ •๋ณด๋ผ๊ณ  ํ•˜์˜€๋‹ค. ํšŒ์›๊ฐ€์ž…์„ ํ•˜์—ฌ ํ† ํฐ์„ ๋ฐ›์•˜๋‹ค๋ฉด, ์ดํ›„ API ์š”์ฒญ์„ ํ•  ๋•Œ, ํ† ํฐ์„ Header๋‚˜ Cookie์— ๋„ฃ์–ด์„œ ๋ณด๋‚ธ๋‹ค. ๋งŒ์•ฝ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›ํ•˜๋Š” ์š”์ฒญ์ด ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด์— ๋Œ€ํ•œ ์š”์ฒญ์ด๋ผ๋ฉด, ์„œ๋ฒ„์—์„œ๋Š” DB๋ฅผ ์กฐํšŒํ•  ํ•„์š”์—†์ด ํ† ํฐ์„ ๋ณตํ˜ธํ™” ํ•˜์—ฌ ๊ทธ ์•ˆ์˜..
2024.04.25
Develop/BACK-END
thumbnail
Weaving๊ณผ Proxy์— ๋Œ€ํ•˜์—ฌ
๊นƒํ—ˆ๋ธŒ์—๋„ ์ •๋ฆฌ ์˜ฌ๋ ค๋†“์•˜์Šต๋‹ˆ๋‹ค.์ „์ˆ˜๋ฏผ_๊นƒํ—ˆ๋ธŒ ์ฃผ์†ŒWeaving๊ณผ Proxy ๊ฐ์ฒด์— ๋Œ€ํ•˜์—ฌ์ด๋ฒˆ ์žฅ์—์„œ ์•Œ์•„๋ณผ ๊ฒƒ:AOP์—์„œ Weaving์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? Proxy์™€์˜ ๊ด€๊ณ„๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€?Proxy ๊ฐ์ฒด๋ž€ ๋ฌด์—‡์ด๊ณ ? AOP์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์›๋ฆฌ๋Š” ๋ฌด์—‡์ธ๊ฐ€?1. AOP์—์„œ Weaving์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?AOP์—์„œ weaving์ด๋ž€ ๋ถ€๊ฐ€๊ธฐ๋Šฅ(advice)์„ ๊ทธ๊ฒƒ์ด ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ณธ ๊ธฐ๋Šฅ์— ์žฅ์ฐฉํ•˜๋Š” ์ž‘์—…์„ ๋งํ•œ๋‹ค. ๋”ฐ๋ผ์„œ weaving์€ ๋ณธ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ์—ฐ๊ฒฐ์‹œํ‚ค๋Š” AOP์˜ ํ•ต์‹ฌ ์ž‘์—…์ด๋‹ค.weaving์€ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์— ๋”ฐ๋ผ 3๊ฐ€์ง€๋กœ ์ข…๋ฅ˜๊ฐ€ ๋‚˜๋‰œ๋‹ค.(1) Compile Time Weaving(CTW)Spring์—์„œ AOP๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” AspectJ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋Š” ๊ฒƒ๊ณผ, Spring A..
2024.03.12
Develop/BACK-END
thumbnail
[01]-OAuth2 ์ด๋ก 
๋ชฉ์ฐจ1. OAuth2์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ (OAuth2๋ž€ ์™œ ํ•„์š”ํ•œ๊ฐ€?)2. ๊ทธ๋ž˜์„œ OAuth2๋ž€?3. OAuth2 ๊ด€๋ จ ์šฉ์–ด ์ •๋ฆฌ 4. OAuth2์˜ ๋™์ž‘ ๊ณผ์ • 1. OAuth์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ  (OAuth2๋ž€ ์™œ ํ•„์š”ํ•œ๊ฐ€?)ํ˜„ IT ์„œ๋น„์Šค ์‹œ์žฅ์—๋Š” ๊ตฌ๊ธ€์ด๋‚˜ ์•„๋งˆ์กด, ํŠธ์œ„ํ„ฐ์™€ ๊ฐ™์€ ๋ฉ”๊ฐ€๊ธ‰ ๊ธฐ์—…๋“ค์ด ๋‹ค์ˆ˜ ์กด์žฌํ•œ๋‹ค. ์ด ๊ธฐ์—…์˜ ์‚ฌ์šฉ์ž๋“ค์€ ์ˆ˜์ฒœ๋งŒ ๋งŽ๊ฒŒ๋Š” ์–ต๋Œ€ ๋‹จ์œ„๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ๊ทธ ๋งŒํผ ํ•ด๋‹น ๊ธฐ์—…๋“ค์ด ๊ฐ€์ง„ ๋ฆฌ์†Œ์Šค๋„ ๋‹ค์ˆ˜ ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ, ๋‹จ์ฒด์ƒํ™œ์„ ํ•ด๋ดค๋‹ค๋ฉด ์•Œ ์ˆ˜์žˆ๋“ฏ์ด ํ•˜๋‚˜์˜ ์ผ์„ ์ž‘์—…์ž ์ „์›์ด ๋งŒ์กฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ์— ๊ฐ€๊น๋‹ค. A๋Š” ์„œ๋ฅ˜ ์ž‘์—…์„ ๋” ์™„๋ฒฝํžˆ ํ•˜๊ณ  ๋‹ค์Œ ์ผ๋กœ ๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ๊ณ , B๋Š” ๊ทธ์ € ๋ณธ ์ž‘์—…์„ ๋นจ๋ฆฌ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ํŠน์ • ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ..
2024.03.03
Develop/BACK-END