MapleStory Finger Point

โ˜… 566

[ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] react ํ”„๋กœ์ ํŠธ npm ์‹คํ–‰ ์•ˆ๋จ (npm run build + watch ...)

๊ธฐ์กด์— ๋ฐ์Šคํฌํƒ‘์—์„œ ์ž‘์—…์„ ํ•˜๋‹ค๊ฐ€ ๋…ธํŠธ๋ถ์œผ๋กœ ์ž‘์—… ํ™˜๊ฒฝ์„ ๋ฐ”๊ฟจ๋‹ค.react + spring boot ํ”„๋กœ์ ํŠธ๋ฅผ ๊นƒํ—ˆ๋ธŒ์—์„œ ํด๋ก  ๋ฐ›์•„์„œ ํ”„๋กœ์ ํŠธ ์„ธํŒ…์„ ํ•˜๊ณ ์žˆ์—ˆ๋‹ค.์–ด์งธ์„œ์ธ์ง€ npm ๋ช…๋ น์–ด๊ฐ€ ์ž…๋ ฅ์€ ๋˜๋Š”๋ฐ .. ์˜ค๋ฅ˜๋„ ์•ˆ๋œจ๋Š”๋ฐ .. ์‹คํ–‰(์ž‘๋™)์ด ์•ˆ๋˜๋Š” ๊ฒƒ์ด๋‹ค.   ๋‹น์‹œ ํ„ฐ๋ฏธ๋„ ์ž‘๋™ ์ƒํƒœPS C:\Users\user1\OneDrive\๋ฐ”ํƒ• ํ™”๋ฉด\project> npx webpack --watch --devtool inline-source-mapPS C:\Users\user1\OneDrive\๋ฐ”ํƒ• ํ™”๋ฉด\project> npm run watch> watch> node_modules\.bin\webpack --watch --devtool inline-source-mapPS C:\Users\user1\OneDriv..

[Spring Security] Authentication(์ธ์ฆ)

์‹œํ๋ฆฌํ‹ฐ ๊ธฐ๋ณธ ํ‚ค์›Œ๋“œ Filter ๊ธฐ๋ฐ˜ ๋™์ž‘ (ํ•„ํ„ฐ์ฒด์ธ)๋ชจ๋“  ์š”์ฒญ์€ ํ•„ํ„ฐ๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค. ์ ‘๊ทผ ์ฃผ์ฒด(Principal) : ๋ณดํ˜ธ๋œ ๋Œ€์ƒ์— ์ ‘๊ทผํ•˜๋Š” ์ฃผ์ฒด(์œ ์ €) ์ธ์ฆ(Authentication) : ์ฆ๋ช…, ์œ ์ €๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ, ํ†ต์ƒ ํšŒ์›๊ฐ€์ž…ํ•˜๊ณ  ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๊ถŒํ•œ(Role) : ๋กœ๊ทธ์ธ ๋œ ์‚ฌ๋žŒ + role (๊ถŒํ•œ) ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์ธ๊ฐ€(Authorization) : ํ—ˆ๋ฝ, ์œ ์ €์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ™•์ธ, ํ—ˆ๋ฝํ•˜๋Š” ๊ฒƒ   ๋กœ๊ทธ์ธ ์ธ์ฆ ์ฒ˜๋ฆฌ ๊ณผ์ •  1.  User ๊ฐ€ ๋กœ๊ทธ์ธ ์ •๋ณด + ์ธ์ฆ ์š”์ฒญ์„ ํ•œ๋‹ค (Http Request) 2. ๋ชจ๋“  ์š”์ฒญ์€ `AuthenticationFilter` ๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋œ๋‹ค. (๋ชจ๋“  ์š”์ฒญ ๊ฐ€๋กœ์ฑ„๊ธฐ)3.  `UsernamePasswordAuthenticationToken`(..

[Spring Security] BCryptPasswordEncoder ํด๋ž˜์Šค

[ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ] BCryptPasswordEncoder ๋Š” ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ(ํ”„๋ ˆ์ž„์›Œํฌ) ์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค ๋‹จ๋ฐฉํ–ฅ ํ•ด์‹œ ํ•จ์ˆ˜์ธ BCrypt ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.BCrypt ์˜ ๊ฒฝ์šฐ์—๋Š”  ์†”ํŠธ(salt) ๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ํ•ด์‹ฑํ•œ๋‹ค.  ๋กœ๊ทธ๋ผ์šด๋“œ = ๊ฐ•๋„ (strength)๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์•”ํ˜ธ๋ฅผ ํ•ด์‹œ ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—… ์ˆ˜ํ–‰ ์ •๋„์ด๋‹ค. (๊ธฐ๋ณธ๊ฐ’ 10)  BCryptPasswordEncoder ํด๋ž˜์Šค์—๋Š” ์•”ํ˜ธํ™”๋˜์–ด ์ €์žฅ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•จ  [ BCryptPasswordEncoder ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ ์ข…๋ฅ˜ ] 1. `String encode(CharSequence rawPassword)`ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™” ๋ฉ”์„œ๋“œ (์›๋ณธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•ด์‹ฑ) 2. `boolean matches(CharS..

[Spring Security] BCrypt ํ•ด์‹œ ํ•จ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

Spring Security ์—์„œ๋Š” BCryptPasswordEncoder ๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ์ด ํด๋ž˜์Šค๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋•Œ ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ BCrypt ํ•ด์‹œ ํ•จ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐBCrypt ํ•ด์‹œ ํ•จ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ๋‹ค.  - BCrypt ๋ž€? BCrypt ๋ฐฉ์‹์€ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ์„ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.๋‹จ๋ฐฉํ–ฅ ํ•ด์‹œ๋กœ ์›๋ณธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์—†๋‹ค.  - BCrypy ๋™์ž‘ ๋ฐฉ์‹ ๋‚ด๋ถ€์ ์œผ๋กœ ๋žœ๋คํ•œ ์†”ํŠธ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ์— ํฌํ•จ์‹œํ‚จ๋‹ค. ๋žœ๋ค salt ์ƒ์„ฑ >  ๋น„๋ฐ€๋ฒˆํ˜ธ + salt ๊ฒฐํ•ฉ > ๋น„์šฉํŒฉํ„ฐ์— ๋”ฐ๋ฅธ ๋ฐ˜๋ณต ํ•ด์‹ฑ > ํ•ด์‹ฑ ๊ฒฐ๊ณผ ์ €์žฅ  ์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.  - salt(์†”ํŠธ) ๋ž€?ํ•ด์‹œํ•จ์ˆ˜์— ์ถ”๊ฐ€์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋žœ๋ค ๋ฐ์ดํ„ฐ 1. ๋ฌด์ž‘์œ„์„ฑ ์ถ”๊ฐ€ : ๋™์ผํ•œ ๋น„..

[Linux] RAID ๋ ˆ์ด๋“œ ๋ณ„ 156 ํŠน์ง• ์„ค๋ช…

RAID ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ•˜๋“œ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ ์„œ ๋ถ„์‚ฐ, ์ค‘๋ณต ์ €์žฅํ•˜๋Š” ๊ธฐ์ˆ ์„ ๋งํ•œ๋‹ค. ๋ ˆ์ด๋“œ(RAID)๋ž€ Redundant Array Inexpensive Disks์˜ ์•ฝ์–ด์ด๋ฉฐ, ์˜๋ฏธ๋Š” ๊ฐ’์‹ผ ๋””์Šคํฌ๋ฅผ ์—ฌ๋ถ„์œผ๋กœ ๋ฐฐ์น˜ํ•œ๋‹ค ๋Š” ๋œป์ด๋‹ค. RAID (Redunant Array of Independent Disks  ๋˜๋Š” Reundant Array of Inexpensive Disks) ๋ž€ ์—ฌ๋Ÿฌ ๊ฐœ์˜  ํ•˜๋“œ ๋””์Šคํฌ๋ฅผ ํ•˜๋‚˜์˜ ๋””์Šคํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ถ€ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ ์„œ ์ €์žฅํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋ ˆ๋ฒจ์— ๋”ฐ๋ผ ์ €์žฅ์žฅ์น˜์˜ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ด๊ฑฐ๋‚˜ ์ „์ฒด์ ์ธ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋ชฉ์ ์„ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.   RAID 0์ž๋ฃŒ ๋‘ ์žฅ์น˜์— ๋™์‹œ์— ์‚ฌ์šฉ, ๋น ๋ฅด๊ฒŒ ์ €์žฅ RAID 1๋ณต์ œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ์Œ์˜ ๋“œ๋ผ์ด๋ธŒ์— ๊ธฐ๋ก๋˜๋Š” ๋ฐฉ์‹ ์„œ๋กœ ..

๐Ÿ’ŽLinux 2024.09.30

[Linux] vi ์‚ฌ์šฉ์‹œ ์˜ค๋ฅ˜ → ์ •์ƒ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฒ•

โ–ซ gedit์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•์„ ํ™•์ธํ•œ๋‹ค.โ–ซ nano ์—๋””ํ„ฐ์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžŒ๋‹ค.โ–ซ vi์˜ ์‚ฌ์šฉ๋ฒ•์„ ์—ฐ์Šตํ•œ๋‹ค  vi์˜ ๋น„์ •์ƒ ์ข…๋ฃŒ ์‹œ ์กฐ์น˜๋ฒ• ??? ์™œ? ) vi ํŒŒ์ผ ์ˆ˜์ •์ค‘์— ๋น„์ •์ƒ ์ข…๋ฃŒ๋ฅผ ํ• ๋•Œ ๋‚˜์˜ค๋Š” ๋ฉ”์„ธ์ง€์ธ๋ฐ ์›๋ณธํŒŒ์ผ์ด ๊ทธ๋Œ€๋กœ ์žˆ๊ณ  ์Šค์™‘ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ.์Šค์™‘ํŒŒ์ผ์„ ์ง€์›Œ์คŒ = ๋น„์ •์ƒ ์ข…๋ฃŒ์‹œ ์ƒ๊ธฐ๋Š” swap ํŒŒ์ผ (ํ•ด๋‹น ํŒŒ์ผ์„ ์‚ญ์ œํ•ด์•ผ ํ•จ) ,๊ทธ๋Ÿฌ๋ฉด ์œ„์˜ ํ™”๋ฉด ์•ˆ๋œธ 0. vi ํŒŒ์ผ ์ˆ˜์ • ์ค‘ ๋น„์ •์ƒ ์ข…๋ฃŒ์‹œ ์ƒ๊ธฐ๋Š” swap ํŒŒ์ผ์ด ์ƒ์„ฑ๋ผ์„œ=> ํ•ด๋‹น ํŒŒ์ผ์„ ์‚ญ์ œํ•ด์•ผ ํ•จ1. ์‚ญ์ œํ•  ์Šค์™‘ํŒŒ์ผ ์ฐพ๊ธฐ# ls -al (ํ˜„ ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„ ์ˆจ๊ฒจ์ง„ ํŒŒ์ผ ํฌํ•จ ์ƒ์„ธํžˆ๋ณด๊ธฐ)~ delete the swap file ".install.log.swp"//์ด๋•Œ ์ˆจ๊ฒจ์ง„ ํŒŒ์ผ์€ .{ํŒŒ์ผ ์ด๋ฆ„} ์œผ๋กœ ๋˜์–ด์žˆ๋”ฐ.//ํŒŒ์ผ ์ด๋ฆ„ ์•ž . ์€ ..

๐Ÿ’ŽLinux 2024.09.30

[Linux] File ๋งํฌ , ํ—ˆ๊ฐ€, ์••์ถ•, ๋ฆฌ๋‹ค์ด๋ ‰์…˜

๋งํฌ ํŒŒ์ผ [๋งํฌ] ํ•˜๋“œ๋งํฌ/์†Œํ”„ํŠธ๋งํฌ์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ฐœ์š” Windows์—์„œ ํŠน์ • ์‹คํ–‰ ํŒŒ์ผ์„ ๋ฐ”ํƒ•ํ™”๋ฉด์— ๋ฐ”๋กœ๊ฐ€๊ธฐ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋ฆฌ๋ˆ…์Šค์—์„œ๋„ ๋งํฌ๋ฅผ ํ†ตํ•ด ํŠน์ • ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฐ”๋กœ๊ฐ€๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Linux์—์„œ Windows์˜kimdy.tistory.com  ํ•˜๋“œ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด “ํ•˜๋“œ๋งํฌํŒŒ์ผ”๋งŒ ํ•˜๋‚˜ ์ƒ์„ฑ๋˜๋ฉฐ,  ๊ฐ™์€ inode1์„ ์‚ฌ์šฉ # ln ๋งํฌ๋Œ€์ƒํŒŒ์ผ์ด๋ฆ„ ๋งํฌํŒŒ์ผ์ด๋ฆ„-> ln basefile hardlink์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒˆ๋กœ์šด inode2๋ฅผ ๋งŒ๋“ค๊ณ ,  ๋ฐ์ดํ„ฐ๋Š” ์›๋ณธ ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•˜๋Š” ํšจ๊ณผ# ln -s ๋งํฌ๋Œ€์ƒํŒŒ์ผ์ด๋ฆ„ ๋งํฌํŒŒ์ผ์ด๋ฆ„-> ln -s basefile softlink   โ‘  ์‹ค์Šต์„ ์œ„ํ•ด ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์›๋ณธํŒŒ์ผ์„ ์ž‘์„ฑ# cd# mkdir l..

๐Ÿ’ŽLinux 2024.09.30

[Spring boot] Thymeleaf + Model

๋ ˆ์ด์•„์›ƒ ํ…œํ”Œ๋ฆฟ ์ ์šฉ: layout03 ํ…œํ”Œ๋ฆฟ์— container ๋ถ€๋ถ„์„ ์ „๋‹ฌํ•˜์—ฌ ํ•ด๋‹น ํ…œํ”Œ๋ฆฟ์˜ ํŠน์ • ๋ถ€๋ถ„๋งŒ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ๊ณตํ†ต๋œ ๋ ˆ์ด์•„์›ƒ์„ ์œ ์ง€ํ•˜๋ฉด์„œ, ํŠน์ • ๋ถ€๋ถ„๋งŒ ๋™์ ์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ™”๋ฉด์— ์ง„์ž…ํ•  ๋•Œ TestVO๋ฅผ Model์— ๋‹ด์•„ ํ™”๋ฉด์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. 1. ํšŒ์›์ •๋ณดํ™•์ธ ๋งํฌ์—๋Š” quiz_result01?ํ‚ค=๊ฐ’ ํ˜•ํƒœ๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋„˜๊ธฐ๊ณ  ์ถœ๋ ฅํ•ด ์ฃผ์„ธ์š” 2. ์•„๋ž˜ class="container" ๋ถ€๋ถ„๋งŒ layout03 ํ…œํ”Œ๋ฆฟ์— ์ „๋‹ฌ ๋  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•˜์„ธ์š” ํšŒ์›๋ฒˆํ˜ธ: [[${vo.num}]] ์ด๋ฆ„: [[${vo.name}]] ๋‚˜์ด: [[${vo.age}]] ํšŒ์›์ •๋ณดํ™•์ธ   ๊ฒฐ๊ณผํ™”๋ฉด ๋„˜์–ด์˜จ ๊ฐ’: [[${num}]]   ..

[spring boot] RestController

@RestController //Controller + ResponseBody(์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์‘๋‹ต์„ ์š”์ฒญ์ด ๋“ค์–ด์˜จ๊ณณ์œผ๋กœ ๋ฐ”๊ฟˆ) ํ•ฉ์„ฑ์–ด    JSON ํ˜•์‹์˜ ๋ฐ˜ํ™˜ 1. Vo ํƒ€์ž…  2. Map ํƒ€์ž…     jsonํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก @RequestBody - JSON๋ฐ์ดํ„ฐ๋ฅผ -> ์ž๋ฐ” ์˜ค๋ธŒ์ ํŠธ๋กœ ๋ณ€ํ˜•ํ•ด์„œ ๋งตํ•‘ { "name" : "ํ™๊ธธ๋™", "age" : 20, "addr" : "์„œ์šธ์‹œ์‹œ" }       /////////////////////////////////////////////////////////////////////////////// //์‘๋‹ต๋ฌธ์„œ ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ธฐ ResponseEntity //@CrossOrigin({"http://127.0.0.1:5500", "h..