[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฆฌ์‹œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฆฌ์‹œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฆฌ์‹œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์˜ ์ดํ•ด์™€ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ๋‹ค. ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฆฌ์‹œ๋ฒ„๋Š” ์‹œ์Šคํ…œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ, BroadcastReceiver ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ•˜๋ฉฐ, ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์— ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ๋™์ ์œผ๋กœ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๋ถ€ํŒ… ์™„๋ฃŒ, ํ™”๋ฉด ์ผœ์ง/๊บผ์ง, ๋ฐฐํ„ฐ๋ฆฌ ์ƒํƒœ ๋“ฑ์˜ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋‹ค๋ฃฌ๋‹ค. ๊ฐ ์ƒํ™ฉ์— ๋งž๋Š” ๋ฆฌ์‹œ๋ฒ„ ๋“ฑ๋ก๊ณผ ํ•ด์ œ ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ๋ฐฐํ„ฐ๋ฆฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ ์˜ˆ์ œ๋„ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
DriedPollack's avatar
Aug 19, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์•กํ‹ฐ๋น„ํ‹ฐ ์ปดํฌ๋„ŒํŠธ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์•กํ‹ฐ๋น„ํ‹ฐ ์ปดํฌ๋„ŒํŠธ

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์•กํ‹ฐ๋น„ํ‹ฐ ์ปดํฌ๋„ŒํŠธ์™€ ์ธํ…ํŠธ, ์•กํ‹ฐ๋น„ํ‹ฐ ์ƒ๋ช…์ฃผ๊ธฐ, ANR ๋ฌธ์ œ์™€ ์ฝ”๋ฃจํ‹ด์„ ์ •๋ฆฌํ–ˆ๋‹ค. ์ธํ…ํŠธ ํ•„ํ„ฐ ์„ค์ •, ์ธํ…ํŠธ์˜ action๊ณผ data ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ๋ฒ•, ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์ƒํƒœ ๋ณ€ํ™”์™€ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜, ์•กํ‹ฐ๋น„ํ‹ฐ ์ข…๋ฃŒ ์‹œ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๋ณต์› ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ANR ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์ฝ”๋ฃจํ‹ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๋ฉฐ, ์ฝ”๋ฃจํ‹ด์˜ ์žฅ์ ๊ณผ ์Šค์ฝ”ํ”„, ๋””์ŠคํŒจ์ฒ˜ ์„ค์ • ๋“ฑ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
DriedPollack's avatar
Aug 14, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์ œํŠธํŒฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์ œํŠธํŒฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ œํŠธํŒฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ ๋ทฐ, ๋ทฐ ํŽ˜์ด์ €2, ๋“œ๋กœ์–ด ๋ ˆ์ด์•„์›ƒ์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ๋‹ค. ์ œํŠธํŒฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ ๋™์  ์ œ์–ด์™€ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๋‹ค๋ฃจ๋ฉฐ, ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ ๋ทฐ๋Š” ๋ชฉ๋ก ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. ๋ทฐ ํŽ˜์ด์ €2๋Š” ์Šค์™€์ดํ”„๋กœ ํ™”๋ฉด์„ ์ „ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋“œ๋กœ์–ด ๋ ˆ์ด์•„์›ƒ์€ ํ™”๋ฉด์˜ ์˜†์—์„œ ์—ด๋ฆฌ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค. ๊ฐ ์„น์…˜์€ ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์ƒ์„ธํ•œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.
DriedPollack's avatar
Aug 08, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋‹ค์ด์–ผ๋กœ๊ทธ์™€ ์•Œ๋ฆผ ์ด์šฉํ•˜๊ธฐ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋‹ค์ด์–ผ๋กœ๊ทธ์™€ ์•Œ๋ฆผ ์ด์šฉํ•˜๊ธฐ

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํผ๋ฏธ์…˜ ํ™•์ธ ๋ฐ ์š”์ฒญ ๋ฐฉ๋ฒ•, ๋‹ค์–‘ํ•œ ๋‹ค์ด์–ผ๋กœ๊ทธ์™€ ์•Œ๋ฆผ ์ฐฝ ์‚ฌ์šฉ๋ฒ•, ์†Œ๋ฆฌ์™€ ์ง„๋™ ์•Œ๋ฆผ ์„ค์ •, ์•Œ๋ฆผ ์ฑ„๋„ ๋ฐ ๊ฐ์ฒด ๊ตฌ์„ฑ, ์•Œ๋ฆผ ์Šคํƒ€์ผ ์ ์šฉ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. ์ฃผ์š” ๋‚ด์šฉ์œผ๋กœ๋Š” ํผ๋ฏธ์…˜ ํ—ˆ์šฉ ํ™•์ธ๊ณผ ์š”์ฒญ, ํ† ์ŠคํŠธ ๋ฉ”์‹œ์ง€, ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ์ž…๋ ฅ ๋‹ค์ด์–ผ๋กœ๊ทธ, ์•Œ๋ฆผ ์ฐฝ ๊ตฌ์„ฑ, ์†Œ๋ฆฌ ๋ฐ ์ง„๋™ ์•Œ๋ฆผ, ์•Œ๋ฆผ ์ฑ„๋„ ์„ค์ •, ์•Œ๋ฆผ ๊ฐ์ฒด ์ƒ์„ฑ, ์•Œ๋ฆผ ํ„ฐ์น˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ, ์•Œ๋ฆผ ์Šคํƒ€์ผ ์„ค์ • ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.
DriedPollack's avatar
Aug 01, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋ฆฌ์†Œ์Šค ํ™œ์šฉํ•˜๊ธฐ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋ฆฌ์†Œ์Šค ํ™œ์šฉํ•˜๊ธฐ

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋Š” ์•ฑ ๋ฆฌ์†Œ์Šค์™€ ํ”Œ๋žซํผ ๋ฆฌ์†Œ์Šค๋กœ ๋‚˜๋‰˜๋ฉฐ, ๋ ˆ์ด์•„์›ƒ, ์ด๋ฏธ์ง€, ์‹คํ–‰ ์•„์ด์ฝ˜, ๊ฐ’, ์ƒ‰์ƒ, ๊ธ€๊ผด ๋ฆฌ์†Œ์Šค ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๋ฆฌ์†Œ์Šค ์กฐ๊ฑด ์„ค์ •์„ ํ†ตํ•ด ํŠน์ • ํ™˜๊ฒฝ์—์„œ๋งŒ ์ ์šฉ๋˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ™”๋ฉด ํšŒ์ „๊ณผ ๊ตญ์ œ ์–ธ์–ด ์ง€์›์—๋„ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ์•ˆ๋“œ๋กœ์ด๋“œ ํฐ์˜ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์— ํ˜ธํ™˜์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๊ณ , ๊ธฐ๊ธฐ์˜ ํฌ๊ธฐ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ ์ง์ ‘ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Jul 26, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌํ•˜๊ธฐ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌํ•˜๊ธฐ

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ๋‹ค. ํ„ฐ์น˜ ์ด๋ฒคํŠธ๋Š” onTouchEvent() ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์ฃผ์š” ์ด๋ฒคํŠธ๋กœ๋Š” ACTION_DOWN, ACTION_UP, ACTION_MOVE๊ฐ€ ์žˆ๋‹ค. ํ‚ค ์ด๋ฒคํŠธ๋Š” onKeyDown, onKeyUp, onKeyLongPress ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ํŠน์ • ํ‚ค ์ด๋ฒคํŠธ๋Š” onBackPressed()๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ทฐ ์ด๋ฒคํŠธ๋Š” ์ด๋ฒคํŠธ ์†Œ์Šค์™€ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋ฆฌ์Šค๋„ˆ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ํด๋ฆญ๊ณผ ๋กฑํด๋ฆญ ์ด๋ฒคํŠธ๋Š” ๊ฐ๊ฐ setOnClickListener์™€ setOnLongClickListener๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์˜ SAM ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Jul 18, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ

LinearLayout์€ ๋ทฐ๋ฅผ ๊ฐ€๋กœ๋‚˜ ์„ธ๋กœ๋กœ ๋‚˜์—ดํ•˜๊ณ , RelativeLayout์€ ์ƒ๋Œ€์ ์ธ ์œ„์น˜๋กœ ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค. FrameLayout์€ ๋ทฐ๋ฅผ ๊ฒน์ณ์„œ ์ถœ๋ ฅํ•˜๋ฉฐ, GridLayout์€ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋กœ ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค. ConstraintLayout์€ ๋” ๋งŽ์€ ์†์„ฑ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์˜ ๋ ˆ์ด์•„์›ƒ ํŽธ์ง‘๊ธฐ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Jul 12, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋ทฐ๋ฅผ ์ด์šฉํ•œ ํ™”๋ฉด ๊ตฌ์„ฑ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ๋ทฐ๋ฅผ ์ด์šฉํ•œ ํ™”๋ฉด ๊ตฌ์„ฑ

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ ์ฝ”๋“œ์™€ ๋ ˆ์ด์•„์›ƒ XML ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์•กํ‹ฐ๋น„ํ‹ฐ ์ฝ”๋“œ๋กœ๋Š” ์ง์ ‘ ๋ทฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐฐ์น˜ํ•˜๋ฉฐ, XML ํŒŒ์ผ๋กœ๋Š” ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•œ๋‹ค. ๋ทฐ ํด๋ž˜์Šค๋Š” View์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ, TextView, ImageView, Button ๋“ฑ ๋‹ค์–‘ํ•œ ๋ทฐ๋ฅผ ํฌํ•จํ•œ๋‹ค. ๋ทฐ ๋ฐ”์ธ๋”ฉ์„ ํ†ตํ•ด ๋ ˆ์ด์•„์›ƒ XML ํŒŒ์ผ์— ์„ ์–ธํ•œ ๋ทฐ ๊ฐ์ฒด๋ฅผ ์ฝ”๋“œ์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด build.gradle ํŒŒ์ผ์— viewBinding์„ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋ทฐ ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด findViewById() ํ•จ์ˆ˜๋ฅผ ๋Œ€์ฒดํ•ด ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ทฐ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Jul 04, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์ฝ”ํ‹€๋ฆฐ์˜ ์œ ์šฉํ•œ ๊ธฐ๋ฒ•

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์ฝ”ํ‹€๋ฆฐ์˜ ์œ ์šฉํ•œ ๊ธฐ๋ฒ•

์ฝ”ํ‹€๋ฆฐ์˜ ์œ ์šฉํ•œ ๊ธฐ๋ฒ•์„ ๋‹ค๋ฃจ๋ฉฐ, ๋žŒ๋‹ค ํ•จ์ˆ˜์™€ ๊ณ ์ฐจ ํ•จ์ˆ˜, ํ•จ์ˆ˜ ํƒ€์ž…, ๋„ ์•ˆ์ „์„ฑ์— ๋Œ€ํ•ด ์ •๋ฆฌํ–ˆ๋‹ค. ๋žŒ๋‹ค ํ•จ์ˆ˜๋Š” ์ต๋ช… ํ•จ์ˆ˜๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณ ์ฐจ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋‚˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋‹ค. ์ฝ”ํ‹€๋ฆฐ์€ ๋„ ์•ˆ์ „์„ฑ์„ ์ง€์›ํ•˜์—ฌ ๋„ ํฌ์ธํŠธ ์˜ˆ์™ธ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
DriedPollack's avatar
Jun 28, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์ฝ”ํ‹€๋ฆฐ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์ฝ”ํ‹€๋ฆฐ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํด๋ž˜์Šค์™€ ์ƒ์„ฑ์ž, ์ƒ์†, ์ ‘๊ทผ ์ œํ•œ์ž, ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค, ์˜ค๋ธŒ์ ํŠธ ํด๋ž˜์Šค, ๊ทธ๋ฆฌ๊ณ  ์ปดํŒจ๋‹ˆ์–ธ ํด๋ž˜์Šค๋ฅผ ์ •๋ฆฌํ–ˆ๋‹จ. ํด๋ž˜์Šค๋Š” class ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•˜๋ฉฐ, ์ƒ์„ฑ์ž๋Š” ์ฃผ ์ƒ์„ฑ์ž์™€ ๋ณด์กฐ ์ƒ์„ฑ์ž๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. ์ƒ์†์€ open ํ‚ค์›Œ๋“œ๋กœ ํ—ˆ์šฉ๋˜๋ฉฐ, override ํ‚ค์›Œ๋“œ๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ ‘๊ทผ ์ œํ•œ์ž๋Š” public, internal, protected, private๊ฐ€ ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค๋Š” data ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ๋‹ค. ์˜ค๋ธŒ์ ํŠธ ํด๋ž˜์Šค๋Š” ์ต๋ช… ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๊ณ , ์ปดํŒจ๋‹ˆ์–ธ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ํด๋ž˜์Šค ์ด๋ฆ„์œผ๋กœ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
DriedPollack's avatar
Jun 20, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์ฝ”ํ‹€๋ฆฐ ์‹œ์ž‘ํ•˜๊ธฐ

[Do it! ๊นก์ƒ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ with ์ฝ”ํ‹€๋ฆฐ] ์ฝ”ํ‹€๋ฆฐ ์‹œ์ž‘ํ•˜๊ธฐ

์ฝ”ํ‹€๋ฆฐ ์–ธ์–ด์˜ ์žฅ์ , ํŒŒ์ผ ๊ตฌ์„ฑ, ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜ ์„ ์–ธ, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์ปฌ๋ ‰์…˜ ํƒ€์ž…, ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ์— ๋Œ€ํ•ด ์ •๋ฆฌํ–ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์€ ๊ฐ„๊ฒฐํ•˜๊ณ  ์•ˆ์ „ํ•œ ์ฝ”๋“œ, ์ž๋ฐ”์™€์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ, ๊ตฌ์กฐํ™”๋œ ๋™์‹œ์„ฑ ๋“ฑ์˜ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋ณ€์ˆ˜๋Š” val๊ณผ var๋กœ ์„ ์–ธํ•˜๋ฉฐ, ํ•จ์ˆ˜๋Š” fun ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์„ ์ง€์›ํ•˜๋ฉฐ, ์กฐ๊ฑด๋ฌธ if์™€ when, ๋ฐ˜๋ณต๋ฌธ for์™€ while์„ ํ†ตํ•ด ์ œ์–ด ํ๋ฆ„์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Jun 14, 2024
๐Ÿค–Android๐Ÿ“ฑKotlin
[Chrome] Unchecked runtime ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

[Chrome] Unchecked runtime ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๊ฐœ๋ฐœ์ž ๋ชจ๋“œ์—์„œ ๊ธฐ๋Šฅ ์‹คํ–‰ ์‹œ ์ฝ˜์†”์ฐฝ์— ์˜ค๋ฅ˜๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๋ฌธ์ œ๋Š” ์‹œํฌ๋ฆฟ๋ชจ๋“œ์—์„œ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ, Chrome ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์˜ ํ†ต์‹  ๋ฌธ์ œ๋กœ ํ™•์ธ๋˜์—ˆ๋‹ค. Google Chrome์šฉ Adobe Acrobat ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ญ์ œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.
DriedPollack's avatar
Jun 06, 2024
๐Ÿ’ปHTML / CSS / JavaScriptโ—Error
[Intellij] ํ”„๋กœ์ ํŠธ๋Š” ์กด์žฌํ•˜๋Š”๋ฐ ํŒŒ์ผ์ด ๋ณด์ด์ง€ ์•Š์„ ๊ฒฝ์šฐ

[Intellij] ํ”„๋กœ์ ํŠธ๋Š” ์กด์žฌํ•˜๋Š”๋ฐ ํŒŒ์ผ์ด ๋ณด์ด์ง€ ์•Š์„ ๊ฒฝ์šฐ

InteliJ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ์˜ค๋ฅ˜๋Š” ํ”„๋กœ์ ํŠธ์˜ SDK๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” File > Project Structure > Project Settings > Project > SDK ํ•ญ๋ชฉ์—์„œ SDK๋ฅผ ์„ค์ •ํ•˜๊ณ , Gradle์„ ๋‹ค์‹œ Reloadํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
May 28, 2024
โ—Error๐Ÿ“ŸInteliJ
[Windows 11] ์œˆ๋„์šฐ ๊ธ€์ž ๊ฐ„๊ฒฉ ๋ฒŒ์–ด์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

[Windows 11] ์œˆ๋„์šฐ ๊ธ€์ž ๊ฐ„๊ฒฉ ๋ฒŒ์–ด์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

MySQL Workbench์—์„œ ๊ฐ’์„ ์ˆ˜์ •ํ•  ๋•Œ ๊ธ€์ž ๊ฐ„๊ฒฉ์ด ์ด์ƒํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚˜๋Š” ์˜ค๋ฅ˜๋Š” ์–ธ์–ด ์ž…๋ ฅ ๋ชจ๋“œ์˜ ๋ฌธ์ž ๋„ˆ๋น„ ๋ฉ”๋‰ด๊ฐ€ ์ „์ž๋กœ ์„ค์ •๋˜์–ด ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋ฌธ์ž ๋„ˆ๋น„ ๋ฉ”๋‰ด๋ฅผ ๋ฐ˜์ž๋กœ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
May 23, 2024
โ—Error๐ŸชŸWindows
[Spring boot] ์Šคํ”„๋ง ๋ถ€ํŠธ 3.0 QDomain์ด ์—†์„ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

[Spring boot] ์Šคํ”„๋ง ๋ถ€ํŠธ 3.0 QDomain์ด ์—†์„ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์Šคํ”„๋ง ๋ถ€ํŠธ 3.0 ์ด์ƒ์—์„œ๋Š” compileQuerydsl์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, Querydsl์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” QDomain์ด ํ•„์š”ํ•˜๋‹ค. ์ด๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด build.gradle์—์„œ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ , Gradle > Tasks > other > compileJava๋ฅผ ์‹คํ–‰ํ•˜์—ฌ QDomain์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
May 16, 2024
โ—Error๐ŸŒผSpring
[Spring boot] defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

[Spring boot] defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‹คํ–‰ ์‹œ 'bean ์ด๋ฆ„' ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ, ์ด๋Š” 'build.gradle' ๋˜๋Š” 'pom.xml' ํŒŒ์ผ์—์„œ 'Spring Data JPA'์™€ 'Spring Data JDBC'๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋นŒ๋“œ ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ 'Spring Data JPA' ์™ธ์˜ ๋‹ค๋ฅธ 'Spring Data XXX'์™€ ๊ฐ™์€ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•˜๋ฉด ๋œ๋‹ค.
DriedPollack's avatar
May 13, 2024
โ—Error๐ŸŒผSpring
ํ”„๋กœ์ ํŠธ๊ด€๋ฆฌ ํŠน๊ฐ• ์ •๋ฆฌ

ํ”„๋กœ์ ํŠธ๊ด€๋ฆฌ ํŠน๊ฐ• ์ •๋ฆฌ

ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ํŠน๊ฐ•์—์„œ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๋ฒ”์œ„, ์ผ์ •, ์›๊ฐ€, ๋ฆฌ์Šคํฌ, ํ’ˆ์งˆ, ์˜์‚ฌ์†Œํ†ต, ์กฐ๋‹ฌ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ํ•ต์‹ฌ ๊ฐœ๋…๊ณผ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. WBS, Work package ํฌ๊ธฐ, ์ผ์ • ๊ด€๋ฆฌ ์ž‘์„ฑ ํ˜•ํƒœ, ์›๊ฐ€ ์‚ฐ์ • ๊ธฐ๋ฒ•, ๋ฆฌ์Šคํฌ ๋Œ€์‘ ์ „๋žต, ํ’ˆ์งˆ ๊ด€๋ฆฌ ๊ณ„ํš, ์˜์‚ฌ์†Œํ†ต ๋ชจ๋ธ, ๊ณ„์•ฝ ๋ฐฉ์‹ ๋“ฑ ๋‹ค์–‘ํ•œ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ผํ•˜๋Š” ๋ฐฉ์‹์˜ ๋ณ€ํ™”์™€ ์• ์ž์ผ์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์„ ๊ฐ•์กฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.
DriedPollack's avatar
May 03, 2024
๐Ÿ—‚๏ธProject
[programmers] [1์ฐจ] ๋‹คํŠธ ๊ฒŒ์ž„ - Java

[programmers] [1์ฐจ] ๋‹คํŠธ ๊ฒŒ์ž„ - Java

๋‹คํŠธ ๊ฒŒ์ž„์˜ ์ ์ˆ˜ ๊ณ„์‚ฐ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ฐ ๋‹คํŠธ ๊ฒŒ์ž„์˜ ๊ธฐํšŒ๋Š” ์ ์ˆ˜, ๋ณด๋„ˆ์Šค, ์˜ต์…˜์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋ณด๋„ˆ์Šค๋Š” 'S', 'D', 'T' ์ค‘ ํ•˜๋‚˜๋กœ ์ ์ˆ˜์˜ 1์ œ๊ณฑ, 2์ œ๊ณฑ, 3์ œ๊ณฑ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์€ '*' ๋˜๋Š” '#'์œผ๋กœ, '*'๋Š” ํ•ด๋‹น ์ ์ˆ˜์™€ ๋ฐ”๋กœ ์ „ ์ ์ˆ˜๋ฅผ 2๋ฐฐ๋กœ, '#'๋Š” ํ•ด๋‹น ์ ์ˆ˜๋ฅผ ๋งˆ์ด๋„ˆ์Šค๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ๋ฌธ์ž์— ๋”ฐ๋ฅธ ์กฐ๊ฑด์„ ์ฒดํฌํ•˜์—ฌ ์ตœ์ข… ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Apr 23, 2024
โ˜•Java๐Ÿ’กCoding Test
[programmers] ์•ผ๊ทผ ์ง€์ˆ˜ - Java

[programmers] ์•ผ๊ทผ ์ง€์ˆ˜ - Java

ํšŒ์‚ฌ์› Demi์˜ ์•ผ๊ทผ ํ”ผ๋กœ๋„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฌธ์ œ์—์„œ, ์ดˆ๊ธฐ ์ฝ”๋“œ๋Š” ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜์—ฌ ์ตœ๋Œ€ ์ž‘์—…๋Ÿ‰์—์„œ 1์„ ๋นผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜์˜€์œผ๋‚˜, ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…๋Ÿ‰์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ๊ฐ€์žฅ ๋งŽ์€ ์ž‘์—…๋Ÿ‰์„ ๊ฐ€์ ธ์™€์„œ 1์„ ๋นผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜์˜€๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ํž™ ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.
DriedPollack's avatar
Apr 22, 2024
โ˜•Java๐Ÿ’กCoding Test
[programmers] ๋ชจ์Œ์‚ฌ์ „ - Java

[programmers] ๋ชจ์Œ์‚ฌ์ „ - Java

์•ŒํŒŒ๋ฒณ ๋ชจ์Œ 'A', 'E', 'I', 'O', 'U'๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด 5 ์ดํ•˜์˜ ๋‹จ์–ด๊ฐ€ ์‚ฌ์ „์— ์ˆ˜๋ก๋˜์–ด ์žˆ์„ ๋•Œ, ์ฃผ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ์‚ฌ์ „์—์„œ ๋ช‡ ๋ฒˆ์งธ ๋‹จ์–ด์ธ์ง€ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. DFS ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์ „์„ ์ƒ์„ฑํ•˜๊ณ , ํ•ด๋‹น ์‚ฌ์ „์—์„œ ๋‹จ์–ด๊ฐ€ ์ถœํ˜„ํ•˜๋Š” ์ˆœ์„œ๋ฅผ ์ฐพ์•„ ๋ฆฌํ„ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์‚ฌ์ „์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ’์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์ „ํ•˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
DriedPollack's avatar
Apr 18, 2024
โ˜•Java๐Ÿ’กCoding Test
[programmers] N์ง„์ˆ˜ ๊ฒŒ์ž„ - Java

[programmers] N์ง„์ˆ˜ ๊ฒŒ์ž„ - Java

'N์ง„์ˆ˜ ๊ฒŒ์ž„' ๋ฌธ์ œ๋Š” ์ฐธ๊ฐ€์ž๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ์ˆซ์ž๋ฅผ ๋งํ•˜๋Š” ๊ฒŒ์ž„์œผ๋กœ, ์ฃผ์–ด์ง„ ์ง„๋ฒ•, ๊ตฌํ•  ์ˆซ์ž์˜ ๊ฐœ์ˆ˜, ์ฐธ๊ฐ€ ์ธ์›, ํŠœ๋ธŒ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ํŠœ๋ธŒ๊ฐ€ ๋งํ•ด์•ผ ํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ดˆ๊ธฐ ์ฝ”๋“œ๋Š” ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๊ณ  ์ผ๋ถ€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ์œผ๋‚˜, ๊ฐœ์„ ๋œ ์ฝ”๋“œ์—์„œ๋Š” StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ณ , ํŠœ๋ธŒ๊ฐ€ ๋งˆ์ง€๋ง‰ ์‚ฌ๋žŒ์ผ ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ์ถœ๋ ฅ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.
DriedPollack's avatar
Apr 16, 2024
โ˜•Java๐Ÿ’กCoding Test
[์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค] 4์žฅ ์ •๋ฆฌ

[์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค] 4์žฅ ์ •๋ฆฌ

๋ฆฌ๋ˆ…์Šค์˜ ๊ธฐ๋ณธ ๋ช…๋ น์–ด, ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ์™€ ํŒŒ์ผ ์†์„ฑ, ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•œ ๋ช…๋ น์–ด, ํŒŒ์ผ ์••์ถ•, ํŒŒ์ผ ๋ฌถ๊ธฐ, ํŒŒ์ผ ์œ„์น˜ ๊ฒ€์ƒ‰, CRON๊ณผ AT, ํŒŒ์ดํ”„, ํ•„ํ„ฐ, ๋ฆฌ๋””๋ ‰์…˜ ๋“ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ์‚ฌ์šฉ๋ฒ•์ด ๋‹ด๊ฒจ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฆฌ๋ˆ…์Šค๋ฅผ ์šด์˜ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๋‚ด์šฉ๊ณผ ์„œ๋ฒ„ ๊ตฌ์ถ•์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ๊ฐœ๋…๊ณผ ๋ช…๋ น์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Apr 15, 2024
๐ŸงLinux
[programmers] [3์ฐจ] ์••์ถ• - Java

[programmers] [3์ฐจ] ์••์ถ• - Java

์‹ ์ž…์‚ฌ์› ์–ดํ”ผ์น˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์••์ถ•ํ•˜์—ฌ ์ „์†ก ํšจ์œจ์„ ๋†’์ด๋Š” ๋ฌด์†์‹ค ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ LZW ์••์ถ•์„ ๊ตฌํ˜„ํ•œ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‚ฌ์ „์— ํ˜„์žฌ ์ž…๋ ฅ๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฐ€์žฅ ๊ธด ๋ฌธ์ž์—ด์„ ์ฐพ์•„ ์‚ฌ์ „์˜ ์ƒ‰์ธ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ์ž…๋ ฅ์—์„œ ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ์ œ๊ฑฐํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž…๋ ฅ์—์„œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ๋‹ค์Œ ๊ธ€์ž๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ๋‹จ์–ด๋ฅผ ์‚ฌ์ „์— ๋“ฑ๋กํ•œ๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์••์ถ•ํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์ž๋ฐ”์—์„œ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ž์—ด๋“ค์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์„ ์ˆ™์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Apr 15, 2024
โ˜•Java๐Ÿ’กCoding Test
[Bootstrap v5.0] ํ”Œ๋ ‰์Šค๋ฅผ ์ด์šฉํ•œ ์š”์†Œ ๋ฐฐ์น˜ ๋ฐฉ๋ฒ•(d-flex)

[Bootstrap v5.0] ํ”Œ๋ ‰์Šค๋ฅผ ์ด์šฉํ•œ ์š”์†Œ ๋ฐฐ์น˜ ๋ฐฉ๋ฒ•(d-flex)

"d-flex"๋Š” `<div>` ํƒœ๊ทธ ๋‚ด๋ถ€์˜ ์š”์†Œ๋“ค์„ ์ธ๋ผ์ธ์œผ๋กœ ๋ฐฐ์น˜์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. `<a>` ํƒœ๊ทธ๋กœ ๋‹ค๋ฅธ ํƒœ๊ทธ๋ฅผ ๊ฐ์‹ธ๊ฒŒ ๋˜๋ฉด ์ธ๋ผ์ธ ํŒ์ •์ด ๊ฐ์‹ผ ํƒœ๊ทธ ์ „์ฒด๋กœ ์ ์šฉ๋˜์ง€๋งŒ, ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด `<a>` ํƒœ๊ทธ๋ฅผ `<div>` ๋‚ด๋ถ€์— ์œ„์น˜์‹œ์ผœ ์›ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Apr 12, 2024
๐Ÿ’ปHTML / CSS / JavaScript
[programmers] ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ - Java

[programmers] ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ - Java

ROR ๊ฒŒ์ž„์—์„œ ์บ๋ฆญํ„ฐ๊ฐ€ ์ƒ๋Œ€ ํŒ€ ์ง„์˜์— ๋„์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ง€๋‚˜๊ฐ€์•ผ ํ•˜๋Š” ์นธ์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ๋งต์˜ ์ƒํƒœ๊ฐ€ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง€๋ฉฐ, BFS๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ๋Š” ๋™, ์„œ, ๋‚จ, ๋ถ ๋ฐฉํ–ฅ์œผ๋กœ ํ•œ ์นธ์”ฉ ์ด๋™ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ฒฝ์ด ์žˆ๋Š” ๊ณณ์€ ๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ƒ๋Œ€ ํŒ€ ์ง„์˜์— ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Apr 11, 2024
โ˜•Java๐Ÿ’กCoding Test
[programmers] ์‹คํŒจ์œจ - Java

[programmers] ์‹คํŒจ์œจ - Java

์Šˆํผ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž ์˜ค๋ ๋ฆฌ๋Š” ์‹คํŒจ์œจ์„ ๊ณ„์‚ฐํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์‹คํŒจ์œจ์€ ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ–ˆ์œผ๋‚˜ ํด๋ฆฌ์–ดํ•˜์ง€ ๋ชปํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ์ˆ˜๋ฅผ ์Šคํ…Œ์ด์ง€์— ๋„๋‹ฌํ•œ ํ”Œ๋ ˆ์ด์–ด ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด๋‹ค. ์Šคํ…Œ์ด์ง€์˜ ๊ฐœ์ˆ˜ N๊ณผ ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ๋ฉˆ์ถฐ์žˆ๋Š” ์Šคํ…Œ์ด์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด stages๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์‹คํŒจ์œจ์ด ๋†’์€ ์Šคํ…Œ์ด์ง€๋ถ€ํ„ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์Šคํ…Œ์ด์ง€์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ฐฐ์—ด๊ณผ HashMap์„ ์‚ฌ์šฉํ•˜๋ฉฐ, HashMap์˜ keySet์„ List์— ๋„ฃ์€ ํ›„, List์˜ sort ๋ฉ”์†Œ๋“œ๋กœ ๊ฐ’์„ ์ •๋ ฌํ•œ๋‹ค.
DriedPollack's avatar
Apr 09, 2024
โ˜•Java๐Ÿ’กCoding Test
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 7์žฅ ์ •๋ฆฌ

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 7์žฅ ์ •๋ฆฌ

์ฃผ๋ฌธ ๊ธฐ๋Šฅ ๊ตฌํ˜„์—๋Š” ์ƒํ’ˆ ์žฌ๊ณ  ๊ด€๋ฆฌ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๋ฉ”์†Œ๋“œํ™”, ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„ ์„ค์ •, ์ฃผ๋ฌธ ์—”ํ‹ฐํ‹ฐ ์ƒ์„ฑ, ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ๊ฒ€์‚ฌ, ๋กœ๊ทธ์ธ ์œ ์ € ์ •๋ณด ์ ‘๊ทผ, Ajax๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ์ฃผ๋ฌธ ๋กœ์ง ํ˜ธ์ถœ, CSRF ํ† ํฐ ๊ฐ’ ์กฐํšŒ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ฃผ๋ฌธ ์ด๋ ฅ ์กฐํšŒ๋Š” ์ฃผ๋ฌธ ์ƒํ’ˆ ์ •๋ณด ๋ฐ ์ฃผ๋ฌธ ์ •๋ณด ํด๋ž˜์Šค ์ƒ์„ฑ, ์ฃผ๋ฌธ ์ด๋ ฅ ์กฐํšŒ ์ฟผ๋ฆฌ ์ž‘์„ฑ, ์ฃผ๋ฌธ ๋ชฉ๋ก ์กฐํšŒ ๋กœ์ง ๊ตฌํ˜„, ์ฃผ๋ฌธ ๋ชฉ๋ก ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜ ๋“ฑ์„ ํฌํ•จํ•˜๋ฉฐ, ์ฃผ๋ฌธ ์ทจ์†Œ ๊ธฐ๋Šฅ์€ ์ƒํ’ˆ ์žฌ๊ณ  ์ฆ๊ฐ€ ๋ฉ”์†Œ๋“œ, ์ฃผ๋ฌธ ์ทจ์†Œ ์‹œ ์žฌ๊ณ  ์ฆ๊ฐ€ ๋ฉ”์†Œ๋“œ, ์ฃผ๋ฌธ ์ทจ์†Œ ๋กœ์ง, ์ฃผ๋ฌธ ์ทจ์†Œ ๊ถŒํ•œ ๊ฒ€์‚ฌ ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Apr 08, 2024
๐ŸŒผSpring
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 8์žฅ ์ •๋ฆฌ

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 8์žฅ ์ •๋ฆฌ

์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„์—๋Š” ์ƒํ’ˆ ์•„์ด๋””์™€ ์ˆ˜๋Ÿ‰์„ ์ „๋‹ฌ๋ฐ›๋Š” DTO ๊ตฌํ˜„, ํšŒ์› ๋ณ„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒ์„ฑ, ์ƒํ’ˆ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜๋Ÿ‰ ์ฆ๊ฐ€ ๋ฉ”์†Œ๋“œ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ ์ƒํ’ˆ ์กฐํšŒ, ์ƒํ’ˆ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ๋กœ์ง ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์กฐํšŒ ํŽ˜์ด์ง€๋Š” DTO ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ ์‚ญ์ œ๋Š” ์„œ๋น„์Šค ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค์— ์š”์ฒญ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ƒํ’ˆ ์ฃผ๋ฌธ์€ ์ฃผ๋ฌธํ•  ์ƒํ’ˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์ฃผ๋ฌธ์„ ์ƒ์„ฑํ•˜๊ณ , ์ฃผ๋ฌธํ•œ ์ƒํ’ˆ์€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Apr 08, 2024
๐ŸŒผSpring
[programmers] ๋„คํŠธ์›Œํฌ - Java

[programmers] ๋„คํŠธ์›Œํฌ - Java

์ปดํ“จํ„ฐ์˜ ๊ฐœ์ˆ˜์™€ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์ฒ˜์Œ์—๋Š” ๋‘ ์ปดํ“จํ„ฐ๊ฐ€ ์—ฐ๊ฒฐ๋  ๋•Œ๋งˆ๋‹ค ๋„คํŠธ์›Œํฌ ์ˆ˜๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜, ์ด๋Š” ๊ฐ„์ ‘ ์—ฐ๊ฒฐ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„ ์ •ํ™•ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)๋ฅผ ์ ์šฉํ•˜์—ฌ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ปดํ“จํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ DFS๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ๋ฐฉ๋ฌธํ•œ ์ปดํ“จํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋ฉฐ, ํ•ด๋‹น ์ปดํ“จํ„ฐ์™€ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.
DriedPollack's avatar
Apr 08, 2024
โ˜•Java๐Ÿ’กCoding Test
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 6์žฅ ์ •๋ฆฌ

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 6์žฅ ์ •๋ฆฌ

์ƒํ’ˆ ๋“ฑ๋ก, ์ˆ˜์ •, ๊ด€๋ฆฌ, ๋ฉ”์ธ ํŽ˜์ด์ง€ ๋ฐ ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์ƒํ’ˆ ๋“ฑ๋ก ์‹œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด ๋ณ€ํ™˜, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ, ํŒŒ์ผ ์ „์†ก, ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๊ฒฝ๋กœ ์„ค์ • ๋“ฑ์ด ์ค‘์š”ํ•˜๋ฉฐ, ์ˆ˜์ • ์‹œ ํŠธ๋žœ์žญ์…˜ ์ฝ๊ธฐ ์ „์šฉ ์„ค์ •, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ๋ณ€๊ฒฝ ๊ฐ์ง€ ๊ธฐ๋Šฅ ํ™œ์šฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒํ’ˆ ๊ด€๋ฆฌ์—์„œ๋Š” ๋ณต์žกํ•œ ์กฐํšŒ ์กฐ๊ฑด์— Querydsl์„ ํ™œ์šฉํ•˜๋ฉฐ, ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ๋Š” @QueryProjection์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํ’ˆ ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ DTO ๊ฐ์ฒด๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ƒํ’ˆ ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ๋Š” th:each๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ฌธ์„ ๋ฐ˜๋ณตํ•˜๊ณ , th:if๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์ด null์ด๊ฑฐ๋‚˜ ๋นˆ ๋ฌธ์ž์—ด์ผ ๋•Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Apr 05, 2024
๐ŸŒผSpring
[programmers] ์ด์ค‘์šฐ์„ ์ˆœ์œ„ํ - Java

[programmers] ์ด์ค‘์šฐ์„ ์ˆœ์œ„ํ - Java

์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ ๋ฌธ์ œ๋Š” ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด [0,0] ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด [์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’]์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ์ตœ์†Ÿ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด poll()์„ ์‚ฌ์šฉํ•˜๊ณ , ์ตœ๋Œ“๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ์„ ์ˆœ์œ„ ํ์˜ ๊ฐ’์„ ArrayList๋กœ ๋ณต์‚ฌํ•˜๊ณ  ์ •๋ ฌํ•ด์„œ ์ตœ๋Œ“๊ฐ’์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ์šฐ์„ ์ˆœ์œ„ ํ์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ตํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
DriedPollack's avatar
Apr 04, 2024
โ˜•Java๐Ÿ’กCoding Test
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 5์žฅ ์ •๋ฆฌ

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 5์žฅ ์ •๋ฆฌ

์—”ํ‹ฐํ‹ฐ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ์™€ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ์œผ๋ฉฐ, JPA์—์„œ๋Š” ์ด๋ฅผ ๋งคํ•‘ํ•ด ํ•„์š”ํ•  ๋•Œ ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ์™€ ์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์—ฐ๊ด€ ๋งคํ•‘์˜ ์ข…๋ฅ˜๋กœ๋Š” ์ผ๋Œ€์ผ, ์ผ๋Œ€๋‹ค, ๋‹ค๋Œ€์ผ, ๋‹ค๋Œ€๋‹ค๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋‹จ๋ฐฉํ–ฅ ๋˜๋Š” ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜์†์„ฑ ์ „์ด๋Š” ์—”ํ‹ฐํ‹ฐ์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ์™€ ์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ์˜ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ „ํŒŒ์‹œํ‚ค๋Š” ์˜ต์…˜์ด๋‹ค. ์ผ๋Œ€์ผ, ๋‹ค๋Œ€์ผ๋กœ ๋งคํ•‘ํ•  ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ „๋žต์ธ ์ฆ‰์‹œ ๋กœ๋”ฉ์„ ํ†ตํ•ด ์—”ํ‹ฐํ‹ฐ๋ฅผ ํ•จ๊ป˜ ๊ฐ€์ง€๊ณ  ์˜ค์ง€๋งŒ, ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ๊ฒฝ์šฐ ๋งคํ•‘๋˜๋Š” ์—”ํ‹ฐํ‹ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ๊ณ , ์ด ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๋Š” ์ฟผ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋ ์ง€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ง€์—ฐ ๋กœ๋”ฉ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, Auditing ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋ฉด ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ €์žฅ ๋˜๋Š” ์ˆ˜์ •๋  ๋•Œ ์ž๋™์œผ๋กœ ๋“ฑ๋ก์ผ, ์ˆ˜์ •์ผ, ๋“ฑ๋ก์ž, ์ˆ˜์ •์ž๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค.
DriedPollack's avatar
Apr 03, 2024
๐ŸŒผSpring
[programmers] ์ •์ˆ˜ ์‚ผ๊ฐํ˜• - Java

[programmers] ์ •์ˆ˜ ์‚ผ๊ฐํ˜• - Java

์ •์ˆ˜ ์‚ผ๊ฐํ˜• ๋ฌธ์ œ์—์„œ๋Š” ์‚ผ๊ฐํ˜•์˜ ๊ผญ๋Œ€๊ธฐ์—์„œ ๋ฐ”๋‹ฅ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ๊ฒฝ๋กœ ์ค‘, ๊ฑฐ์ณ๊ฐ„ ์ˆซ์ž์˜ ํ•ฉ์ด ๊ฐ€์žฅ ํฐ ๊ฒฝ์šฐ๋ฅผ ์ฐพ๋Š”๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์‚ผ๊ฐํ˜•์˜ ์•„๋ž˜๋ถ€ํ„ฐ ์œ„๋กœ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ, ์™ผ์ชฝ ์ž์‹๋“ค์˜ ๊ฐ’ ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๊ณ , ์ด๋ฅผ ๋ถ€๋ชจ์˜ ๊ฐ’์— ๋”ํ•ด์„œ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ๋ฐฐ์—ด์˜ 0๋ฒˆ ์ธ๋ฑ์Šค์˜ 0๋ฒˆ์งธ ๊ฐ’์ด ์ตœ๋Œ“๊ฐ’์ด ๋œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ๋™์  ๊ณ„ํš๋ฒ•์˜ ๊ธฐ์ดˆ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Apr 03, 2024
โ˜•Java๐Ÿ’กCoding Test
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 4์žฅ ์ •๋ฆฌ

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 4์žฅ ์ •๋ฆฌ

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋Š” ์Šคํ”„๋ง ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณด์•ˆ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋ฉฐ, ํšŒ์› ๊ฐ€์ž…, ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ํŽ˜์ด์ง€ ๊ถŒํ•œ ์„ค์ •์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋Š” ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ณผ์ •์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, `pom.xml`์— ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํšŒ์›์€ ์ด๋ฉ”์ผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ, ๊ฐ ํšŒ์›์€ ์—ญํ• ์— ๋”ฐ๋ผ ํŽ˜์ด์ง€ ์ ‘๊ทผ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ๋‹ค. ๋˜ํ•œ, ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋Š” CSRF ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  POST ๋ฐฉ์‹์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณดํ˜ธํ•œ๋‹ค.
DriedPollack's avatar
Apr 02, 2024
๐ŸŒผSpring
[programmers] ํƒ€๊ฒŸ ๋„˜๋ฒ„- Java

[programmers] ํƒ€๊ฒŸ ๋„˜๋ฒ„- Java

'ํƒ€๊ฒŸ ๋„˜๋ฒ„' ๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ ์ˆซ์ž ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์„œ ํƒ€๊ฒŸ ๋„˜๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋ฉฐ, ๊ฐ ์ธ๋ฑ์Šค์—์„œ ์ˆซ์ž๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋บ€ ๊ฐ’์„ ์žฌ๊ท€ํ˜ธ์ถœ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ๋์— ๋„๋‹ฌํ•˜๋ฉด, ๋งŒ๋“ค์–ด์ง„ ํ•ฉ๊ณ„๊ฐ€ ํƒ€๊ฒŸ ๋„˜๋ฒ„์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ๊ทธ๋ ‡๋‹ค๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Apr 01, 2024
โ˜•Java๐Ÿ’กCoding Test
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 3์žฅ ์ •๋ฆฌ

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 3์žฅ ์ •๋ฆฌ

Thymeleaf๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์„ ํ†ตํ•ด ๋™์  HTML ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด๋‹ค. Thymeleaf ๋ฌธ๋ฒ•์€ HTML ํƒœ๊ทธ ์•ˆ์— ์†์„ฑ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. Spring Boot Devtools๋Š” ๊ฐœ๋ฐœ ์‹œ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ๋กœ, ํŒŒ์ผ ๋ณ€๊ฒฝ ์‹œ ์ž๋™ ์žฌ์‹œ์ž‘, ๋ผ์ด๋ธŒ ๋ฆฌ๋กœ๋“œ, ์†์„ฑ ๊ธฐ๋ณธ๊ฐ’ ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค. Thymeleaf๋Š” ํ…์ŠคํŠธ ์ถœ๋ ฅ, ์ปฌ๋ ‰์…˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ, ์กฐ๊ฑด๋ถ€ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ, ์Šค์œ„์น˜๋ฌธ ์‚ฌ์šฉ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๋˜ํ•œ, Thymeleaf Layout Dialect๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณตํ†ต ๋ ˆ์ด์•„์›ƒ์„ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Apr 01, 2024
๐ŸŒผSpring
[programmers] k์ง„์ˆ˜์—์„œ ์†Œ์ˆ˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ - Java

[programmers] k์ง„์ˆ˜์—์„œ ์†Œ์ˆ˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ - Java

์–‘์˜ ์ •์ˆ˜ n์„ k์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ, ๋ณ€ํ™˜๋œ ์ˆ˜ ์•ˆ์—์„œ ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ, ์ฒ˜์Œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ์™€ NumberFormatException ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด๋Š” int ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋Š” ๊ฐ’์ด ์ง„๋ฒ• ๋ณ€ํ™˜์‹œ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋” ํฐ ๋ฒ”์œ„์˜ ์ •์ˆ˜ํ˜•์ธ long์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌ์„ฑํ•  ๋•Œ ๋กœ์ง๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒํ˜•๋„ ์‹ ๊ฒฝ์จ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์˜€๋‹ค.
DriedPollack's avatar
Apr 01, 2024
โ˜•Java๐Ÿ’กCoding Test
[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 2์žฅ ์ •๋ฆฌ

[์Šคํ”„๋ง ๋ถ€ํŠธ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ with JPA] 2์žฅ ์ •๋ฆฌ

์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ด๋Š” 1์ฐจ ์บ์‹œ, ๋™์ผ์„ฑ ๋ณด์žฅ, ์“ฐ๊ธฐ ์ง€์—ฐ, ๋ณ€๊ฒฝ ๊ฐ์ง€ ๋“ฑ์˜ ์ด์ ์„ ์ œ๊ณตํ•œ๋‹ค. Spring Data JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Repository ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋Š” @Query ์–ด๋…ธํ…Œ์ด์…˜๊ณผ JPQL์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Querydsl์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒํ’ˆ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™” ์ „๋žต, ์—”ํ‹ฐํ‹ฐ ๋งค์นญ ๊ด€๋ จ ์–ด๋…ธํ…Œ์ด์…˜, ๊ธฐ๋ณธํ‚ค ์ƒ์„ฑ ์ „๋žต ๋“ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์˜€๋‹ค.
DriedPollack's avatar
Mar 29, 2024
๐ŸŒผSpring
[์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ์›น ํ”„๋กœ์ ํŠธ ๊ฐœ์ •ํŒ] 7์žฅ ์ •๋ฆฌ

[์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ์›น ํ”„๋กœ์ ํŠธ ๊ฐœ์ •ํŒ] 7์žฅ ์ •๋ฆฌ

์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ์ด์šฉํ•ด ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ, ์ž๋™ ๋กœ๊ทธ์ธ, ์ธ์ฆ/๊ถŒํ•œ ์ฒ˜๋ฆฌ, JDBC ์ธ์ฆ/๊ถŒํ•œ ์ฒ˜๋ฆฌ, ์‚ฌ์šฉ์ž ์ •์˜ UserDetailsService, JSP์—์„œ์˜ ์‚ฌ์šฉ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” POST ๋ฐฉ์‹, JDBC, BCryptPasswordEncoder, CustomUserDetailsService, Ajax ๋“ฑ์„ ํ™œ์šฉํ•˜๋ฉฐ, ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋˜ํ•œ, ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋Š” CSRF ํ† ํฐ ์ฒ˜๋ฆฌ์™€ ์•”ํ˜ธํ™” ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Mar 28, 2024
๐ŸŒผSpring
[programmers] ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก - Java

[programmers] ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก - Java

์ „ํ™”๋ฒˆํ˜ธ๋ถ€์— ์ ํžŒ ์ „ํ™”๋ฒˆํ˜ธ ์ค‘ ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ์ฝ”๋“œ๊ฐ€ ์ œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œ๋Š” ๋‘ ๊ฐœ์˜ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n^2)๋กœ ํฐ ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์—์„œ๋Š” ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง‘๋‹ˆ๋‹ค. ๊ฐœ์„ ๋œ ์ฝ”๋“œ๋Š” ์ „ํ™”๋ฒˆํ˜ธ๋ถ€๋ฅผ ์‚ฌ์ „์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„, ๊ฐ ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋ฐ”๋กœ ๋‹ค์Œ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ์ง€๋งŒ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n log n)์œผ๋กœ ํ›จ์”ฌ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
DriedPollack's avatar
Mar 28, 2024
โ˜•Java๐Ÿ’กCoding Test
[programmers] ๋ง์น ํ•˜๊ธฐ - Java

[programmers] ๋ง์น ํ•˜๊ธฐ - Java

ํŽ˜์ธํŠธ๋ฅผ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ๊ตฌ์—ญ์˜ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฌธ์ œ์—์„œ, ๋กค๋Ÿฌ์˜ ๊ธธ์ด์™€ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ๊ตฌ์—ญ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋กค๋Ÿฌ๋Š” ๋ฒฝ์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ , ๊ตฌ์—ญ์˜ ์ผ๋ถ€๋ถ„๋งŒ ์น ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ตฌ์—ญ์„ ํ•œ ๋ฒˆ์”ฉ ์น ํ•˜๋ฉด์„œ ํ•„์š”ํ•œ ์„น์…˜์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ๊ฐ ์„น์…˜์˜ ์‹œ์ž‘๊ณผ ๋์„ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Mar 27, 2024
โ˜•Java๐Ÿ’กCoding Test
[programmers] ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง - Java

[programmers] ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง - Java

"๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง" ๋ฌธ์ œ์—์„œ๋Š” ๋‘ ๋ฌธ์ž์—ด์˜ ์œ ์‚ฌ๋„๋ฅผ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•ด "์ž์นด๋“œ ์œ ์‚ฌ๋„"๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ž…๋ ฅ ๋ฌธ์ž์—ด์„ ๋‘ ๊ธ€์ž์”ฉ ๋Š์–ด ๋‹ค์ค‘์ง‘ํ•ฉ์˜ ์›์†Œ๋กœ ๋งŒ๋“ค๊ณ , ์˜๋ฌธ์ž๋กœ ๋œ ๊ธ€์ž ์Œ๋งŒ ์œ ํšจํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•œ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž ์ฐจ์ด๋Š” ๋ฌด์‹œํ•œ๋‹ค. ์ž์นด๋“œ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐํ•œ ํ›„ 65536์„ ๊ณฑํ•˜๊ณ  ์†Œ์ˆ˜์  ์•„๋ž˜๋ฅผ ๋ฒ„๋ฆฐ ์ •์ˆ˜๋ถ€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๋ฌธ์ž ์Œ์„ ์ถ”์ถœํ•˜๊ณ , ์ด๋ฅผ map์— ์ €์žฅํ•˜์—ฌ ๋‹ค์ค‘ ์ง‘ํ•ฉ์„ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ ํ›„, ๋‘ ๋‹ค์ค‘ ์ง‘ํ•ฉ์˜ ๊ต์ง‘ํ•ฉ๊ณผ ํ•ฉ์ง‘ํ•ฉ์„ ๊ณ„์‚ฐํ•˜์—ฌ ์œ ์‚ฌ๋„๋ฅผ ๊ตฌํ•œ๋‹ค.
DriedPollack's avatar
Mar 26, 2024
โ˜•Java๐Ÿ’กCoding Test
[์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ์›น ํ”„๋กœ์ ํŠธ ๊ฐœ์ •ํŒ] 6์žฅ ์ •๋ฆฌ

[์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ์›น ํ”„๋กœ์ ํŠธ ๊ฐœ์ •ํŒ] 6์žฅ ์ •๋ฆฌ

์ฒจ๋ถ€ํŒŒ์ผ ์—…๋กœ๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œ๋ฌผ์„ ๋“ฑ๋กํ•˜๊ธฐ ์ „์— ์—…๋กœ๋“œํ•œ ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์ฒจ๋ถ€ํŒŒ์ผ ์ฒ˜๋ฆฌ๋Š” ๋ณต์žกํ•˜๋ฉฐ, ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์˜ ์ดˆ๊ธฐํ™”, ์—…๋กœ๋“œ๋œ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ, ๋‹ค์šด๋กœ๋“œ, ์›๋ณธ ์ด๋ฏธ์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ, ์ฒจ๋ถ€ํŒŒ์ผ ์‚ญ์ œ ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค. ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ์‹œ ์ฒจ๋ถ€ํŒŒ์ผ ์ฒ˜๋ฆฌ๋Š” ๊ธฐ์กด ํŒŒ์ผ ์‚ญ์ œ ๋ฐ ์ƒˆ ํŒŒ์ผ ์ถ”๊ฐ€๋ฅผ ํฌํ•จํ•œ๋‹ค. ์ž˜๋ชป ์—…๋กœ๋“œ๋œ ํŒŒ์ผ ์‚ญ์ œ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” `Spring-Batch`๋‚˜ `Quartz` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
DriedPollack's avatar
Mar 26, 2024
๐ŸŒผSpring
[programmers] ์†Œ์ˆ˜ ์ฐพ๊ธฐ - Java

[programmers] ์†Œ์ˆ˜ ์ฐพ๊ธฐ - Java

1๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž n ์‚ฌ์ด์— ์žˆ๋Š” ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฌธ์ œ๋กœ, ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํŠน์ •ํ•œ ์ˆซ์ž์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ ์•ฝ์ˆ˜์˜ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ฆํ•˜์—ฌ ์†Œ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
DriedPollack's avatar
Mar 24, 2024
โ˜•Java๐Ÿ’กCoding Test
[์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ์›น ํ”„๋กœ์ ํŠธ ๊ฐœ์ •ํŒ] 5์žฅ ์ •๋ฆฌ

[์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ์›น ํ”„๋กœ์ ํŠธ ๊ฐœ์ •ํŒ] 5์žฅ ์ •๋ฆฌ

๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(AOP)๋Š” ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ณ ๋ฏผ์„ ๋ณ„๋„์˜ '๊ด€์‹ฌ์‚ฌ'๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๋งŒ์„ ์ž‘์„ฑํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. AOP๋Š” ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ๋ฉ”์„œ๋“œ์˜ ์‹คํ–‰ ์‹œ๊ฐ„ ๊ธฐ๋ก, ์ž˜๋ชป๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ธํ•œ ์˜ˆ์™ธ ์ œ์–ด ๋“ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ๋˜ํ•œ, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค์—์„œ ์ชผ๊ฐœ์งˆ ์ˆ˜ ์—†๋Š” ํ•˜๋‚˜์˜ ๋‹จ์œ„ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ACID ์›์น™์„ ๋”ฐ๋ฅธ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์—์„œ๋Š” ์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ €์žฅ์˜ ํšจ์œจ์„ ๋†’์ด๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์Šคํ”„๋ง์—์„œ๋Š” @Transactional ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค.
DriedPollack's avatar
Mar 21, 2024
๐ŸŒผSpring
RSSPowered by inblog