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

Programming

(71)
[Linux / Terminal] ๋ฆฌ๋ˆ…์Šค, ํ„ฐ๋ฏธ๋„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด ์ •๋ฆฌ ์ทจ๋ฏธ๋‚˜ ์—…๋ฌด๋กœ ์ธํ•ด์„œ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์„ ์ž์ฃผ ์ ‘ํ•ด์•ผ ํ•˜๋Š” ๋ถ„๋“ค์ด ๋งŽ์œผ์‹ค ํ…๋ฐ์š”. ์ตœ๊ทผ์— ์ €๋„ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ GUI์™€๋Š” ๋‹ค๋ฅธ ํŽธ๋ฆฌํ•œ ์ ๋„ ๋งŽ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์•ˆ ์“ฐ๋ฉด ์›Œ๋‚™ ์ž์ฃผ ์žŠ์–ด๋ฒ„๋ฆฌ๋Š” ์„ฑ๊ฒฉ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์œ ์šฉํ•œ ๋ช…๋ น์–ด๋“ค์„ ์ •๋ฆฌํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“ Linux ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด ๐Ÿค” ํ˜„์žฌ ์œ„์น˜(working dirctory) ์ฐพ๊ธฐ - PWD (Print Working Directory) pwd ํ˜„์žฌ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค(๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.). ๋ฆฌ๋ˆ…์Šค๋‚˜ ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ•  ๋•Œ, ์ข…์ข… ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์–ด๋””์ธ์ง€ ํ—ท๊ฐˆ๋ฆด ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•œ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. cd๋กœ ์ฐพ๋Š” ์ผ์€ ์ด์ œ ๊ทธ๋งŒ~ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ(ํด๋”) ๋ฐ ํŒŒ์ผ ์ฐพ๊ธฐ / ์ˆจ๊น€ ํŒŒ..
ํ‹ฐ์Šคํ† ๋ฆฌ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๋งŒ๋“ค๊ธฐ(๋„ค๋น„๊ฒŒ์ด์…˜ ๋งŒ๋“ค๊ธฐ) / Tistory ๋„ค๋น„๊ฒŒ์ด์…˜ โœ๏ธ ํ‹ฐ์Šคํ† ๋ฆฌ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๋งŒ๋“ค๊ธฐ ๋งํฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ฐ™์€ ํŽ˜์ด์ง€ ๋‚ด์— ์žˆ๋Š” ํŠน์ • ๊ธ€์˜ ์œ„์น˜๋กœ ์ด๋™ํ•˜๋Š”๊ฑธ ๋ณด์‹ ์  ์žˆ์œผ์‹ค ๊ฒ๋‹ˆ๋‹ค. ์ด ๋งํฌ๋ฅผ ๋„ค๋น„๊ฒŒ์ด์…˜์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๐Ÿ˜ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ƒ์„ฑํ•˜๊ธฐ ๋„ค๋น„๊ฒŒ์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” HTML์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HTML์„ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด์„œ ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด ๋ชจ๋“  ์›น ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ผˆ๋Œ€์ž…๋‹ˆ๋‹ค. ์ผ๋‹จ ๋ˆˆ์œผ๋กœ ๋ณด๋ฉด์„œ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค. ํ‹ฐ์Šคํ† ๋ฆฌ๋Š” ๊ธ€์„ ์ž‘์„ฑํ•  ๋•Œ, ๊ธฐ๋ณธ๋ชจ๋“œ ์ด ์™ธ์—์„œ HTML์„ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ HTML์„ ๋ˆŒ๋Ÿฌ๋ด…๋‹ˆ๋‹ค. ์•Œ์ˆ˜ ์—†๋Š” ๊ธ€์ž ์‚ฌ์ด์— ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€์ž๊ฐ€ ์žˆ๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์›น ํŽ˜์ด์ง€๋Š” ์ด๋ ‡๊ฒŒ HTML ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฅผ ์šฐ๋ฆฌ๋Š” ํƒœ๊ทธ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ํƒœ๊ทธ๋Š” ์—ฌ๋Ÿฌ ์˜๋ฏธ๊ฐ€ ์žˆ์ง€๋งŒ, ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธ€..
[Network]TCP/IP๋Š” ๋ญ˜๊นŒ? + UDP, Port ์ˆœ์„œ IP๋ž€? ใ„ด IP address / ์•„์ดํ”ผ ์ฃผ์†Œ ใ„ด IP์˜ ํ•œ๊ณ„์ (TCP์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ) TCP๋ž€? ใ„ด TCP ์„ธ๊ทธ๋จผํŠธ ใ„ด Port(ํฌํŠธ)๋ž€? ใ„ด 3-way handshake ใ„ด TCP์™€ UDP์˜ ์ฐจ์ด์  IP(Internet Protocal)๋ž€? IP๋Š” ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ํ˜น์€ ์ธํ„ฐ๋„ท ํ†ต์‹ ๊ทœ์•ฝ ์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ํ†ต์‹ ๊ทœ์•ฝ์ด๋ž€๊ฒŒ ๋ฌด์Šจ ๋ง์ผ๊นŒ? ์ธํ„ฐ๋„ท์€ ์•„์ฃผ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ์žˆ๋Š” ๋‘ ์„œ๋ฒ„ ํ˜น์€ ์ปดํ“จํ„ฐ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ฒŒํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ด์ฃผ๋Š” ํŽธ๋ฆฌํ•œ ์กด์žฌ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ปดํ“จํ„ฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋ฉด(๋ฉ”์„ธ์ง€๋‚˜, ๋ฉ”์ผ ๊ฐ™์€ ๊ฒƒ์„ ์ „์†ก) ์ธ๊ณต์œ„์„ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐ€์„œ ์ƒ๋Œ€ํŽธ์˜ ์ปดํ“จํ„ฐ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์ฃผ๋Š” ์ค„ ์•Œ์•˜์ง€๋งŒ(์ปดํ“จํ„ฐ๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ์ „์— ๋‚œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค...) ์‚ฌ์‹ค ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์ปดํ“จํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ, ์„ ์œผ๋กœ..
[Java] Kruskal's Algorithm ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(MST) ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ MST(Minimun Spanning Tree) - ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž๋ฐ” ๊ตฌํ˜„ ๐Ÿง ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ MST(Minimun Spanning Tree)๋ž€? ์ตœ์†Œํ•œ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์ •์ ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ๊ฒŒํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์˜ˆ์‹œ) ๋„์‹œ๋“ค์€ ๋ชจ๋‘ ๋‹ค๋ฆฌ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์„ ๋•Œ, ๋ชจ๋“  ๋„์‹œ๋ฅผ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋‹ค๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๋˜ ์ตœ์†Œํ•œ์˜ ๋‹ค๋ฆฌ ๊ธธ์ด๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• (๋„์‹œ๊ฐ€ ๊ฐ€๋กœ๋“ฑ์œผ๋กœ ๋‹ค๋ฆฌ๊ฐ€ ์ „์„ ์œผ๋กœ ๋ฐ”๋€”์ˆ˜๋„ ์žˆ๋‹ค.) ๋„ค๋น„๊ฒŒ์ด์…˜์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ชจ๋“  ์ •์ (node ํ˜น์€ vortex)๊ฐ€ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ ์ค‘ ๊ฐ€์žฅ ์ ์€ ๊ฐ€์ค‘์น˜(์—ฌ๊ธฐ์„  ๊ฑฐ๋ฆฌ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ ์ฃผ์˜์‚ฌํ•ญ ์—ฌ๊ธฐ์„œ ์—ฐ๊ฒฐ์ด๋ž€ ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ๊ฑฐ์ณ์„œ ๊ฐ€๋Š” ๊ฒƒ์„ ํฌํ•จํ•œ๋‹ค. ๊ฐ„์„  ํ˜น์€ ๋ธŒ๋žœ์น˜(๋…ธ๋“œ๋ฅผ ์ด์–ด์ฃผ๋Š” ์„ , ๊ฑฐ๋ฆฌ)๋Š” ๋ฐฉํ–ฅ์„ฑ์„ ๊ฐ–์ง€ ์•Š๋Š”๋‹ค.(์—ฐ๊ฒฐ๋งŒ ๋˜์–ด์žˆ..
[Java] Dijkstra Path ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„(ft. ์šฐ์„ ์ˆœ์œ„ ํ) ์‰ฝ์ง€๋งŒ ๋ณต์žกํ•œ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿค” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์™œ ์“ธ๊นŒ? โ—๏ธ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ํŠน์ • ์ง€์ ์—์„œ ๋ชฉํ‘œ ์ง€์ ์œผ๋กœ ๊ฐ€์žฅ ์ ์€ ๋น„์šฉ์„ ๋“ค์ด๋ฉฐ ๊ฐ€์•ผํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ) A์—์„œ D๋กœ ๊ฐ€๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ๋น„์šฉ์€ ์ตœ์†Œ ๊ฐ’์€? A -> D = 5 A -> B -> D = 5 A -> C -> D = 3 ๋”ฐ๋ผ์„œ ์‹ค์ œ ์ตœ์†Œ ๋น„์šฉ ์ง€๋ถˆํ•˜๋Š” ๊ฒฝ๋กœ๋Š” A -> C -> D ์ด๋‹ค. ๐Ÿฅธ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋กœ์ง 1. ์‹œ์ž‘์ง€์ ๊ณผ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค๊ณผ์˜ ๋น„์šฉ์„ ๊ตฌํ•œ๋‹ค. Result List ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ A B C D E ๋น„์šฉ 0 3 1 5 ๋ฌดํ•œ ์ถœ๋ฐœ ์ง€์ ์ด A์ผ ๋•Œ, ์ž๊ธฐ ์ž์‹ ์—๊ฒŒ ๊ฐ€๋Š” ๋น„์šฉ์€ ์—†์œผ๋‹ˆ 0 A์—์„œ E์™€ ๊ฐ™์ด ๋ฐ”๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒฝ๋กœ๋Š” ์—†์„ ๋•Œ, ๋น„์šฉ์„ ๋ฌดํ•œ(์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ์•„์ฃผ ํฐ ๊ฐ’)์œผ๋กœ ํ•œ๋‹ค..
[JavaScript] String-boot ์›น ์†Œ์ผ“(WebSocket)์„ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… ๊ตฌํ˜„ - Session Storage ํ™œ์šฉํ•˜๊ธฐ ์†Œ๊ฐœ ์™œ WebSocket์„ ์‚ฌ์šฉํ•˜์˜€๋‚˜? Spring-boot WebSocket ์‚ฌ์šฉ๋ฒ•(์„ค์ •๋ฒ•) ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•ด๋ณด๊ธฐ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ใ„ด HTTP session ๊ฐ€์ ธ์˜ค๊ธฐ -> interception ์‚ฌ์šฉ ใ„ด DB๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด ๋ฉ”์‹œ์ง€ ์ €์žฅํ•˜๊ธฐ -> Session Storage ์‚ฌ์šฉํ•˜๊ธฐ ์ตœ๊ทผ ์ž‘์„ฑ ์ค‘์ธ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ์›น์— ์ ‘์†ํ•œ ํด๋ผ์ด์–ธํŠธ์™€ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ๋‹ค. ๐Ÿค” ์™œ WebSocket์„ ์‚ฌ์šฉํ•˜์˜€๋‚˜? ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์›น ์†Œ์ผ“์€ Spring Framework์˜ STOMP๊ฐ€ ์•„๋‹Œ ์ˆœ์ˆ˜ JavaScript๋ฅผ ํ™œ์šฉํ•œ ์˜ˆ์ œ ์ž…๋‹ˆ๋‹ค. jquery๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. WebSocket์ด ํ•„์š”ํ–ˆ๋˜ ์ด์œ  ์•ž์„œ๋งํ–ˆ๋“ฏ ์‹ค์‹œ๊ฐ„ ๋ผ์ด๋ธŒ ์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ธฐ..
[์ž๋ฃŒ๊ตฌ์กฐ] Linked List๋ž€? - Java ๊ตฌํ˜„ ์ˆœ์„œ Linked list(๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ) ๋ž€? ใ„ด Linked list์™€ List์˜ ์ฐจ์ด์  ใ„ด Single Linked List์™€ Doubly Linked List ์ฐจ์ด์ (Doubly Linked List๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ) Single Linked list ๊ตฌํ˜„(JAVA) Doubly Linked list ๊ตฌํ˜„(JAVA) ๐Ÿค” Linked list ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? List์™€์˜ ์ฐจ์ด์  ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ๋ž€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋Š” ์ผ๋ฐ˜ ๋ฆฌ์ŠคํŠธ(List)์™€ ์ฐจ์ด์ ์„ ๋ณด๋ฉด์„œ ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ List๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ฐฐ์—ด ๊ตฌ์กฐ์ด๋‹ค. List ๊ตฌ์กฐ index(์ˆœ์„œ) 0 1 2 3 4 5 value(๊ฐ’) "์ฒซ๋ฒˆ์งธ ๊ฐ’" "๋‘๋ฒˆ์งธ ๊ฐ’" "์„ธ๋ฒˆ์งธ ๊ฐ’" "๋„ค๋ฒˆ์งธ ๊ฐ’" "๋‹ค์„ฏ๋ฒˆ์งธ ๊ฐ’" "์—ฌ์„ฏ๋ฒˆ์งธ ๊ฐ’" ..
[JavaScript] ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ disabled, display ์†์„ฑ ์ถ”๊ฐ€, ํ•ด์ œ(๋ณ€๊ฒฝ) ๊ฐ„ํ˜น ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ disabled ์†์„ฑ๊ณผ display ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ํ•„์š”ํ•  ๋•Œ ์ฐพ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ ๊ธ€์„ ์”๋‹ˆ๋‹ค. JavaSctript๋กœ disabled ์†์„ฑ ํ™œ์„ฑํ™” or ํ•ด์ œ ํ•˜๊ธฐ function disabledFalse() { document.querySelector('#name').disabled = false; document.querySelector('#email').disabled = false; document.querySelector('#phone').disabled = false; document.querySelector('#message').disabled = false; } ์œ„ ์ฒ˜๋Ÿผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์„ ํƒ์ž๋ฅผ ์„ ํƒํ•ด์ค€ ํ›„ .disabled ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค...

728x90