๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ60

[Spring Security] SecurityContextHolder๋ž€? ๋ฆฌํ”„๋ ˆ์‰ฌ ํ† ํฐ์€ DB์—๋„ ๋ณด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—Entity๋ž‘ Repository๊นŒ์ง€ ๋งŒ๋“ค์–ด์ค€ ์ƒํƒœ ์ด์ œ ํ† ํฐ ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ค ์ฐจ๋ก€์ž„. ํ•„ํ„ฐ๋Š” ์ „๋‹ฌ๋˜๊ธฐ ์ „ํ›„์—URLํŒจ๋„ก์— ๋งž๋Š” ๋ชจ๋“  ์š”์ฒญ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Œ.HTTP์š”์ฒญ์ด controller๊นŒ์ง€ ๋„๋‹ฌํ•˜๊ธฐ ์ „/ํ›„์— ์ž‘๋™. ์š”์ฒญ์ด ์˜ค๋ฉด, ํ—ค๋”๊ฐ’ ๋น„๊ตํ•ด์„œ ํ† ํฐ ์žˆ๋Š”์ง€ ํ™•์ธํ•จ.์œ ํšจ์„ฑ ํ™•์ธํ•˜๊ณ ์œ ํšจํ•œ ํ† ํฐ์ด๋ฉด Security Context Holder(ํด๋ž˜์Šค)์— ์ธ์ฆ ์ •๋ณด๋ฅผ ์ €์žฅํ•จ. ** SecurityContextHolder๋Š” ์•ž์—์„œ๋„ ์ž ๊น ์–ธ๊ธ‰ํ•œ ์  ์žˆ๋Š”๋ฐ,์ธ์ฆ ๊ฐ์ฒด(Authentication)๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ์ž„.(๊ทธ๋ž˜์„œ getAuthentication()๋ฉ”์„œ๋“œ๊ฐ€ ์ฃผ๋กœ ํ˜ธ์ถœ๋˜๋Š”๊ณณ์ด ํ•„ํ„ฐ๋ผ๊ณ  ๋“ค์Œ)๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ ์ธ์ฆ ๊ฐ์ฒด ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ์ด ํด๋ž˜์Šค๋Š” ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ๊ณต๊ฐ„์„.. 2025. 5. 5.
[Git] ๊นƒํ—ˆ๋ธŒ์— SSH์›๊ฒฉ ์ ‘์†ํ•˜๊ธฐ/SSH ํ‚ค ์ƒ์„ฑ/ํผ๋ธ”๋ฆญํ‚ค ์ „์†กํ•˜๊ธฐ/SSH์ฃผ์†Œ๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ ์—ฐ๊ฒฐํ•˜๊ธฐ SSH ์›๊ฒฉ ์ ‘์†์ด๋ž€SSH = Secure Shell์˜ ์ค„์ž„๋ง๋ณด์•ˆ์ด ๊ฐ•ํ•œ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ณด ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ์‹โ€‹Public Key & Private Key ํ•œ ์Œ์œผ๋กœ ๋ฌถ์—ฌ์„œ ์ปดํ“จํ„ฐ๋ฅผ ์ธ์ฆํ•จSSH์ƒ์„ฑ๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ•จ๊ป˜ ๋งŒ๋“ค์–ด์ง.โ€‹โ€‹โ€‹โ€‹SSH ํ‚ค ์ƒ์„ฑํ•˜๊ธฐ$ ssh-keygen*ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ•ด์•ผํ•จ ($cd ~๋กœ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Œ)โ€‹Your identification has been saved in ~~~~~.ssh/id_rsa --> ํ”„๋ผ์ด๋น— ํ‚คYour public key has been sved in ~~~~.ssh/id_rsa.pub --> ํผ๋ธ”๋ฆญ ํ‚คโ€‹$ cd ~/.ssh $ ls -la์œ„์˜ ์ฝ”๋“œ๋กœ ํ‚ค๋“ค์ด .ssh ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅโ€‹โ€‹โ€‹โ€‹๊นƒํ—ˆ๋ธŒ์— ํผ๋ธ”๋ฆญ ํ‚ค ์ „์†กํ•˜๊ธฐโ€‹์‚ฌ์šฉ์ž ์ปด.. 2025. 5. 5.
[Git]์›๊ฒฉ ์ €์žฅ์†Œ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ/git clone/git pull **git_home๊ณผ git_office๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์—ฐ์Šต. ์ด๋ฏธ ๋งŒ๋“ค์–ด์ ธ์žˆ๋‹ค๊ณ  ๊ฐ€์ •git_home์€ ๊ฐœ์ธ ์ปดํ“จํ„ฐ ์ €์žฅ์†Œ, git_office๋Š” ํšŒ์‚ฌ ์ปดํ“จํ„ฐ ์ €์žฅ์†Œ๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ๋จโ€‹โ€‹โ€‹์›๊ฒฉ ์ €์žฅ์†Œ ๋ณต์ œํ•˜๊ธฐ - git clone1.clone-https์˜ ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌโ€‹โ€‹2.ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ git_home ๋””๋ ‰ํ† ๋ฆฌ, git_office ๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ณ  git clone @@@git clone *๋ณต์‚ฌํ•œ ์ฃผ์†Œ* git_homegit_home์— ๋ณต์‚ฌํ•˜๋Š” ๋ชจ์Šตโ€‹git_office์— ๋ณต์‚ฌํ•˜๋Š” ๋ชจ์Šตโ€‹**์ด ๋•Œ git_home(ํ˜น์€ office)์ด๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง โ€‹โ€‹โ€‹3. ls -al ๋ช…๋ น ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“  ๋””๋ ‰ํ† ๋ฆฌ ํ™•์ธโ€‹โ€‹โ€‹4. git_home ๋””๋ ‰ํ† ๋ฆฌ์™€ git_office ๋””๋ ‰ํ† ๋ฆฌ์— ๊ฐ™์€.. 2025. 5. 5.
[Git]์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ/git fetch/ํŽ˜์น˜/๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ/FETCH-HEAD ์›๊ฒฉ master ๋ธŒ๋žœ์น˜**์›๊ฒฉ ์ €์žฅ์†Œ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜ --> ์›๊ฒฉ ๋ธŒ๋žœ์น˜**์›๊ฒฉ ์ €์žฅ์†Œ์— ์žˆ๋Š” master ๋ธŒ๋žœ์น˜ --> ์›๊ฒฉ master ๋ธŒ๋žœ์น˜๋กœ ๋ถ€๋ฅด๊ฒ ์Œ 1. ๊นƒํ—ˆ๋ธŒ์—์„œ ์ž‘์—…ํ•˜๋˜ ์ €์žฅ์†Œ๋กœ ์ ‘์† ํ›„, ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹ ํ™•์ธ* ์ฑ…๋Œ€๋กœ ํ–ˆ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์€ 'add d'โ€‹์—ฌ๊ธฐ์„œ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ HEAD๋Š” ์›๊ฒฉ ์ €์ž์†Œ์˜ master ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ ,์›๊ฒฉ master ๋ธŒ๋žœ์น˜๋Š” 'add d'๋ผ๋Š” ์ตœ์ข… ์ปค๋ฐ‹ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Œโ€‹โ€‹2. git_home ๋””๋ ‰ํ† ๋ฆฌ์—์„œ git log๋กœ ์ปค๋ฐ‹ ์ƒํƒœ ํ™•์ธ$ cd ~/git_home $ git log --onelineHEAD -> main : ์ด ์ปค๋ฐ‹์ด ์ง€์—ญ ์ €์žฅ์†Œ์˜ ์ตœ์ข… ์ปค๋ฐ‹์ด๋ผ๋Š” ๋œปorigin/main : ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์ข… ์ปค๋ฐ‹์ด๋ผ๋Š” ๋œปโ€‹์•„์ง git_home ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์›๊ฒฉ ์ €์žฅ.. 2025. 5. 4.
[Github]๊ณต๋™ ์ž‘์—…์ž ์ถ”๊ฐ€ํ•˜๊ธฐ 1. ๊นƒํ—ˆ๋ธŒ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋“ค์–ด๊ฐ€์„œ settings ํด๋ฆญ์˜ˆ์‹œ ์‚ฌ์ง„์€ ์ „์— ํ•˜๋˜ ์œ ๋‹ˆํ‹ฐ ์ €์žฅ์†Œ..โ€‹โ€‹โ€‹2. Collaborators - ์˜ค๋ฅธ์ชฝ ํ…์ŠคํŠธ ํ•„๋“œ์— ํŒ€์›๋“ค์˜ ๊นƒํ—ˆ๋ธŒ ์•„์ด๋”” or ๋ฉ”์ผ ์ฃผ์†Œ ์ž‘์„ฑ - Add Collaboratorํด๋ฆญโ€‹โ€‹โ€‹3. ํŒ€์›์€ ํ˜‘์—…์ž๋กœ ์ดˆ๋Œ€๋˜์—ˆ๋‹ค๋Š” ๋ฉ”์ผ + ๊นƒํ—ˆ๋ธŒ ๋ฉ”์‹œ์ง€ ๋ฐ›๊ฒŒ ๋จ ->Accept Invitation๋ˆ„๋ฅด๋ฉด ์ดˆ๋Œ€ ์ˆ˜๋ฝ! โ€‹๊ณต๋™ ์ž‘์—…์ž๋“ค์ด ๋ชจ๋‘ ์ดˆ๋Œ€๋ฅผ ์ˆ˜๋ฝํ•˜๋ฉด Collaborators ํ™”๋ฉด์— ์‚ฌ์šฉ์ž ์ด๋ฆ„๋งŒ ๋‚˜ํƒ€๋‚จ 2025. 5. 4.
[Git]๋ธŒ๋žœ์น˜ pushํ•˜๊ธฐ/ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋กœ ํ‘ธ์‰ฌํ•œ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉํ•˜๊ธฐ/git checkout -b ์ƒˆ๋กœ ๋งŒ๋“  ๋ธŒ๋žœ์น˜ pushํ•˜๊ธฐ1. ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋‹ค๋ฅธ ํŒ€์›๋“ค์˜ ์ปค๋ฐ‹์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด git pull๋ช…๋ น ์‚ฌ์šฉ$ git pullโ€‹โ€‹2. ์ง€์—ญ ์ €์žฅ์†Œ์— ๋ธŒ๋žœ์น˜ f๋ฅผ ๋งŒ๋“ค๊ณ , f๋กœ ์ฒดํฌ์•„์›ƒ$ git checkout -b f*์ด๋ฏธ f๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๋‹ค๋ฉด f๋ธŒ๋žœ์น˜๋กœ ์ฒดํฌ์•„์›ƒํ•จโ€‹โ€‹3. f1.txt ๋ฌธ์„œ ์ž‘์„ฑ + ์ปค๋ฐ‹ (features1)+ push$ vim f1.txt $ git add f1.txt $ git commit -m "features1" $ git push origin f*git push ๋’ค์— origin f ์ถ”๊ฐ€ํ•˜๋ฉด ์›๊ฒฉ ์ €์žฅ์†Œ(origin)์— f ๋ธŒ๋žœ์น˜๋ฅผ pushํ•˜๊ฒ ๋‹ค๋Š” ๋œปโ€‹โ€‹โ€‹4. ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ ์ ‘์† - 2 branches ํ™•์ธ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋กœ pushํ•œ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉํ•˜๊ธฐ1... 2025. 5. 4.
[Java] stream()ํ•จ์ˆ˜๋ž€(map, toList ํ™œ์šฉ ์˜ˆ์ œ) ๊ณต์‹๋ฌธ์„œ :https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/Stream.html w.getColor() == RED) .mapToInt(w -> w.getWeight()) " data-og-host="docs.oracle.com" data-og-source-url="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/Stream.html" data-og-url="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/Stream.html" dat.. 2025. 5. 4.
[Java] ์ž๋ฐ” ์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™”๊ฐ€ ๋ญ˜๊นŒ?ObjectMapper ํด๋ž˜์Šค ObjectMapper ํด๋ž˜์Šค๊ฐ€ ๋“ค์–ด๊ฐ„ ์‹ค์Šต ์ฝ”๋“œ๊ฐ€ ์žˆ๊ธธ๋ž˜ ๊ถ๊ธˆํ•ด์„œ ์•Œ์•„๋ด„โ€‹โ€‹โ€‹ObjectMapper ํด๋ž˜์Šค ํ†ตํ•ด์„œ ๋งŒ๋“  ๊ฐ์ฒด๋Š”,โ€‹์ž๋ฐ” ๊ฐ์ฒด -> Json๊ฐ์ฒด (์ง๋ ฌํ™”)Json๊ฐ์ฒด -> ์ž๋ฐ” ๊ฐ์ฒด (์—ญ์ง๋ ฌํ™”)ํ• ๋•Œ ์“ฐ์ž„ HTTP์—์„œ๋Š” JSON์„ ์“ฐ๊ณ JAVA์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•จโ€‹๊ทธ๋ ‡๋‹ค๋ฉด ์„œ๋กœ ํ˜•์‹์— ๋งž๊ฒŒ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์ˆ˜์ ์ž„.โ€‹๊ทธ๋Ÿฐ ์ž‘์—…์„ ์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™” ๋ผ๊ณ  ํ•˜๋Š”๊ฑฐ์ž„(์ด๋ฆ„์ด ๊ดœํžˆ ์–ด๋ ค์›Œ..)โ€‹โ€‹์˜ˆ๋ฅผ๋“ค์–ดโ€‹์ž๋ฐ” ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ์ด ๊ฐ์ฒด ์•ˆ์—๋Š”"title"์—๋Š” "์ œ๋ชฉ1"์ด๋ผ๋Š” ๊ฐ’์ด,"content"์—๋Š” "๋‚ด์šฉ1"์ด๋ผ๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๊ณ  ์น˜์ž.โ€‹---> (JSON์œผ๋กœ ์ง๋ ฌํ™”) --->{"title" : "์ œ๋ชฉ1","content": "๋‚ด์šฉ1"} ์ด๋ ‡๊ฒŒ ๋ณ€ํ™˜๋˜๋Š”๊ฑฐ์ž„!!!!โ€‹โ€‹์—ญ์ง๋ ฌํ™”๋Š” ๊ฑ ๋ฐ˜๋Œ€โ€‹ O.. 2025. 5. 4.
[Spring Boot] ํ…Œ์ŠคํŠธ์ฝ”๋“œ์—์„œ ๋กฌ๋ณต import์•ˆ๋จ @Getterpublic class JwtFactory { private String subject = "test1@email.com"; private Date issuedAt = new Date(); private Date expiration = new Date(new Date().getTime() + Duration.ofDays(14).toMillis()); private Map claims = emptyMap(); // ๋นŒ๋” ํŒจํ„ด ์จ์„œ ์„ค์ •์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์„ ํƒ ์„ค์ • @Builder public JwtFactory(String subject, Date issuedAt, Date expiration, Map claims) { this.subject .. 2025. 5. 4.
๋ฐ˜์‘ํ˜•