๋ชฉ๋ก๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (124)

DevLog ๐Ÿ˜ถ

[์šฐํ…Œ์ฝ” 5๊ธฐ] ์›น ์ž๋™์ฐจ ๊ฒฝ์ฃผ ๋ฏธ์…˜ ํšŒ๊ณ 

๋‘๋‘ ๊ณผ ์ง„ํ–‰ํ•œ ๋ ˆ๋ฒจ 2 ์ฒซ ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฏธ์…˜์ธ ์›น ์ž๋™์ฐจ ๊ฒฝ์ฃผ ๋ฏธ์…˜์ด๋‹ค :D ์–ด์ฉŒ๋‹ค ๋ณด๋‹ˆ 1๋“ฑ์œผ๋กœ ๋ ˆ๋ฒจ 2 ์ฒซ ๋ฏธ์…˜์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค ๐Ÿ‘ ๋ ˆ๋ฒจ 2์˜ ๋ชฉํ‘œ๋Š” ๋ฏธ์…˜์— ๋Œ€ํ•œ ํšŒ๊ณ ๊ธ€์ด ๋ฐ€๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋น ๋ฅด๊ฒŒ ํšŒ๊ณ  ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ด๋ฒˆ ๋ฏธ์…˜์€ ์š”๊ตฌ์‚ฌํ•ญ์— ๋น„ํ•ด ๋ฏธ์…˜ ๊ธฐ๊ฐ„์ด ๊ธธ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฏธ์…˜์„ ์—ฌ์œ ๋กญ๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‚จ์€ ๊ธฐ๊ฐ„ ๋™์•ˆ์—๋Š” ์Šคํ”„๋ง์— ๋Œ€ํ•ด์„œ ์ข€ ๊ณต๋ถ€ํ•ด๋ณด๋Š” ์‹œ๊ธฐ๋กœ ๊ฐ€์ ธ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. โœ”๏ธ ์ž‘์„ฑํ•œ ์ฝ”๋“œ GitHub - Cl8D/jwp-racingcar: ๋ ˆ๋ฒจ 2 ์ž๋™์ฐจ ๊ฒฝ์ฃผ ๊ฒŒ์ž„ ์›น ๊ตฌํ˜„ ์ €์žฅ์†Œ ๋ ˆ๋ฒจ 2 ์ž๋™์ฐจ ๊ฒฝ์ฃผ ๊ฒŒ์ž„ ์›น ๊ตฌํ˜„ ์ €์žฅ์†Œ. Contribute to Cl8D/jwp-racingcar development by creating an account on GitHub..

[Network] IP ์ฃผ์†Œ์™€ DNS ์„œ๋ฒ„์˜ ๋™์ž‘ ์›๋ฆฌ

โœ”๏ธ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ €๋ฒˆ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” HTTP ๋ฉ”์‹œ์ง€๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ๋งŒ๋“œ๋Š”์ง€ ๋ฐฐ์› ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” URL์„ ํ•ด๋…ํ•˜๊ฑฐ๋‚˜ HTTP ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊นŒ์ง€๋Š” ์ง„ํ–‰ํ•˜์ง€๋งŒ, ๋„คํŠธ์›Œํฌ์— ์†ก์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— OS์— ์˜๋ขฐํ•˜์—ฌ ์†ก์‹ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ, URL ๋‚ด๋ถ€์— ์žˆ๋Š” ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ๋ช…์—์„œ IP ์ฃผ์†Œ๋ฅผ ์กฐ์‚ฌํ•˜๋Š”๋ฐ, OS์—๊ฒŒ ์†ก์‹ ํ•  ๋•Œ๋Š” IP ์ฃผ์†Œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ์ƒ๋Œ€๋ฅผ ์ง€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์–ด๋–ป๊ฒŒ IP ์ฃผ์†Œ๋ฅผ ์กฐ์‚ฌํ•˜๋Š”์ง€ ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์ž. ๋˜ํ•œ, IP ์ฃผ์†Œ๋ฅผ ๋„๋ฉ”์ธ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. โœ”๏ธ TCP / IP ๋„คํŠธ์›Œํฌ TCP/IP ๋„คํŠธ์›Œํฌ๋Š” ์ž‘์€ ์„œ๋ธŒ๋„ท์„ ๋ผ์šฐํ„ฐ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ „์ฒด ๋„คํŠธ์›Œํฌ๋ฅผ ์™„์„ฑํ•œ๋‹ค. ์„œ๋ธŒ๋„ท์ด๋ž€ ํŒจํ‚ท์„ ์ค‘๊ณ„ํ•˜๋Š” ์žฅ์น˜์ธ ํ—ˆ๋ธŒ์™€ ์—ฌ๋Ÿฌ PC๊ฐ€ ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๋ผ๊ณ  ์ƒ๊ฐํ•ด๋„ ๋œ๋‹ค. XX๋™ Y..

โœ๏ธ/Network 2023. 4. 20. 10:45
[HTTP] GET vs POST, GET์€ body ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ์•ˆ ๋ ๊นŒ?

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ, GET ์š”์ฒญ๊ณผ POST ์š”์ฒญ์˜ ์ฐจ์ด๊ฐ€ ๋‹จ์ˆœํžˆ '์˜๋ฏธ๋ก ์ '์œผ๋กœ๋งŒ ์ฐจ์ด๊ฐ€ ์žˆ๋Š” ๊ฑด์ง€ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์Šต๊ด€์ ์œผ๋กœ ๋‚˜๋Š” ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก ์‹œ POST๋ฅผ, ๊ทธ๋ฆฌ๊ณ  ์กฐํšŒ ์‹œ GET์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก ์‹œ์—๋„ GET์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ๋ฒ•์ ์œผ๋กœ๋„ ์•ˆ ๋˜๋Š” ๊ฑด์ง€, ์•„๋‹ˆ๋ฉด ๊ด€์Šต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ธ์ง€๋Š” ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ณด์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ช‡ ๊ฐ€์ง€ ์š”์ฒญ๋“ค์„ ์‹ค์Šตํ•ด๊ฐ€๋ฉฐ ์–ด๋Š ์ •๋„ ์ƒ๊ฐ์„ ์ •๋ฆฌํ•ด๋‘์—ˆ๋‹ค. (์˜์–ด ์›๋ฌธ์— ๋Œ€ํ•œ ๋ฒˆ์—ญ์„ ํ•˜๋‹ค ๋ณด๋‹ˆ ๋‹ค์†Œ ์˜๋ฏธ์  ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿฅฒ) โœ”๏ธ GET The GET method requests that the target resource transfer a representation of its state. GET requests..

โœ๏ธ/CS 2023. 4. 19. 10:43
[Spring] ์Šคํ”„๋ง๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์ƒ๊ด€๊ด€๊ณ„ - DI๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋ ˆ๋ฒจ 2 ์ˆ˜์—… ์‹œ๊ฐ„์— ์˜์กด์„ฑ ์ฃผ์ž… ๊ด€๋ จ ๋‚ด์šฉ์„ ๋“ค์œผ๋ฉด์„œ ์กฐ๊ธˆ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๊ทธ๋™์•ˆ ์Šคํ”„๋ง์€ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ์ข‹์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ๋ง์€ ๋“ค์–ด๋ดค์ง€๋งŒ, ์ •ํ™•ํ•˜๊ฒŒ ์™œ์ธ์ง€๋Š” ์ดํ•ดํ•œ ์ ์ด ์—†์—ˆ๋‹ค. ์ •๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ์กฐ๊ธˆ ๋” ๋จธ๋ฆฌ์—... ๋‹ด์•„๋‘๊ณ ์ž ํ•œ๋‹ค! โœ”๏ธ ๊ฐ์ฒด์ง€ํ–ฅ์  ์„ค๊ณ„๊ณผ ๋””์ž์ธ ํŒจํ„ด ์šฐ์„ , ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์›์น™์œผ๋กœ ๋งŽ์ด๋“ค ์–ธ๊ธ‰ํ•˜๋Š” SOLID์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด์ž. - SRP (๋‹จ์ผ ์ฑ…์ž„ ์›์น™): ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ด์œ ๋Š” ์˜ค์ง ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•œ๋‹ค. - OCP (๊ฐœ๋ฐฉ ํ์‡„ ์›์น™): ์ž์‹ ์˜ ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ , ์ฃผ๋ณ€์˜ ๋ณ€ํ™”์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค. - LSP (๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™): ์„œ๋ธŒ ํƒ€์ž…์€ ํ•ญ์ƒ ์ž์‹ ์˜ ๊ธฐ๋ฐ˜ ํƒ€์ž…์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - ISP (์ธํ„ฐํŽ˜์ด์Šค..

Back-end/Spring 2023. 4. 18. 17:38
[Spring] Jackson annotation - Serialization ์•Œ์•„๋ณด๊ธฐ

๋ฌธ๋“ ์ง๋ ฌํ™” ๊ด€๋ จํ•ด์„œ ๊ถ๊ธˆํ•ดํ•˜๋‹ค๊ฐ€, Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋„ ํ•œ ๋ฒˆ ๊ณต๋ถ€ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ž‘์„ฑํ•˜๋Š” ๊ธ€! ์ •๋ง ๊ฐ„๋‹จํ•˜๊ณ  ์–•๊ฒŒ ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋ผ, ๋‚˜์ค‘์— ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ํ•œ ๋ฒˆ ๋” ์ž‘์„ฑํ•ด๋ณด์ง€ ์•Š์„๊นŒ ์‹ถ๋‹ค ๐Ÿซ  โœ”๏ธ Serialization Serialization is taking the properties of an object, and converting them into json string representation. ์ง๋ ฌํ™”๋ž€ ๋ฌด์—‡์ผ๊นŒ? ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๊ฐ€์ ธ์™€์„œ Json ๋ฌธ์ž์—ด ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ๋Š”, ๊ฐ์ฒด๋ฅผ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ์ง๋ ฌํ™”๋œ ๊ฐ์ฒด๋Š” ๋‚˜์ค‘์— ๋‹ค์‹œ ๋ณต์›์ด ๊ฐ€๋Šฅํ•˜๋‹ค. public class Crew { private String name; ..

Back-end/Spring 2023. 4. 16. 22:29
[Network] ์›น ๋ธŒ๋ผ์šฐ์ € ์š”์ฒญ๊ณผ HTTP ๋ฆฌํ€˜์ŠคํŠธ

โœ”๏ธ URL ์ž…๋ ฅ๊ณผ ํŒจํ‚ท ์—ฌํ–‰ ๊ต์žฌ์— ๋‚˜์™€์žˆ๋Š” ๋‚ด์šฉ์ด์ง€๋งŒ ๋‚˜๋ฆ„ ์ •๋ฆฌํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ๋‹ค์‹œ ๊ทธ๋ฆผ์„ ๊ทธ๋ ค๋ณด์•˜๋‹ค. ํด๋ผ์ด์–ธํŠธ, ์›น ์„œ๋ฒ„ LAN, ์›น ์„œ๋ฒ„๊นŒ์ง€ ํ•œ ๋ฒˆ ๋Œ์•„๋ณด๋ฉด์„œ ์ •๋ฆฌ๋ฅผ ํ•œ ๋‹ค์Œ, ์‹œ๊ฐ„์ด ๋  ๋•Œ ํ—ˆ๋ธŒ๋‚˜ ํšŒ์„  ์ชฝ์„ ๊ณต๋ถ€ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. (์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” 1% ์˜ ๋„คํŠธ์›Œํฌ ์›๋ฆฌ๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค :D) โœ”๏ธ ์‚ฌ์šฉ์ž๊ฐ€ URL์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์ƒ๊ธฐ๋Š” ์ผ URL์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ? Uniform Resource Locator๋กœ, http://๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ file:, ftp:, mailto: ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” URL๋“ค์ด ์กด์žฌํ•œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋‹จ์ˆœํžˆ ์›น ์„œ๋ฒ„์— ์—‘์„ธ์Šค ํ•˜๋Š” ์—ญํ• ๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ, ์—…๋กœ๋“œ ๊ฐ™์€ FTP ํด๋ผ์ด์–ธํŠธ๋‚˜ ๋ฉ”์ผ ํด๋ผ์ด์–ธํŠธ ๊ธฐ๋Šฅ๋„ ์žˆ๊ธฐ ๋•Œ..

โœ๏ธ/Network 2023. 4. 15. 23:21
[๊ฐ์ฒด์ง€ํ–ฅ์˜์‚ฌ์‹ค๊ณผ์˜คํ•ด] 03 - ํƒ€์ž…๊ณผ ์ถ”์ƒํ™”

โœ”๏ธ ์ถ”์ƒํ™” ๐ŸŒฑ ์ถ”์ƒํ™”๋ž€, ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ์ ˆ์ฐจ๋‚˜ ๋ฌผ์ฒด๋ฅผ ์˜๋„์ ์œผ๋กœ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ ๊ฐ์ถค์œผ๋กœ ๋ณต์žก๋„๋ฅผ ๊ทน๋ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ณต์žก์„ฑ์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ˆ˜์ค€์œผ๋กœ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋‹ค. ์ง€๋‚œ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ ๊ณ„์† ์–˜๊ธฐํ•˜๊ณ  ์žˆ๋Š” '๊ณ ์–‘์ด ์Šค๋‚ต๋ฐ”'๋ผ๋Š” ๊ฒŒ์ž„์ด๋‹ค. ์œ„ ์ด๋ฏธ์ง€๋Š” ์‹ค์ œ๋กœ ๊ฒŒ์ž„์„ ํ”Œ๋ ˆ์ดํ•˜๋Š” ์žฅ๋ฉด์ด๋‹ค. ์œ„ ๊ทธ๋ฆผ์—์„œ ๋ฌด์—‡์ด ๋ณด์ด๋Š”๊ฐ€? ๊ฐ๊ฐ ์†๋‹˜๋ƒฅ, ์•Œ๋ฐ”๋ƒฅ, ์…ฐํ”„๋ƒฅ์ด๋ผ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์กด์žฌํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์†๋‹˜๋ƒฅ๋„, ์•Œ๋ฐ”๋ƒฅ๋„, ์…ฐํ”„๋ƒฅ๋„ ๋ชจ๋‘ ๊ณ ์–‘์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋™์‹œ์— ๊ฐ์ฒด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด์™€ ๊ฐ™์ด ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋“ค์„ ‘๊ณ ์–‘์ด’๋ผ๊ณ  ํ•œ ๋ฒˆ์— ์ •์˜๋‚ด๋ฆฌ๋Š” ๊ฒƒ์„ '์ถ”์ƒํ™”'๋ผ๊ณ  ํ•œ๋‹ค. ๊ณ ์–‘์ด๋Š”, ๊ณตํ†ต์ ์„ ๊ฐ€์ง„ ๊ฐ์ฒด๋“ค์„ ํฌ๊ด„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋…์ด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ด๋Ÿฌํ•œ ‘๊ณ ์–‘์ด’๋ผ๋Š” ๊ฐœ๋…์„ ์ ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์†๋‹˜๋ƒฅ, ์•Œ๋ฐ”๋ƒฅ, ์…ฐํ”„๋ƒฅ์œผ..

[๋ชจ๋˜์ž๋ฐ”์ธ์•ก์…˜] ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•ด๋ณด์ž! - ์ŠคํŠธ๋ฆผ ๋ฉ”์„œ๋“œ

๐Ÿ’ฌ ๋ชจ๋˜ ์ž๋ฐ” ์ธ ์•ก์…˜ ์ฑ•ํ„ฐ 5์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. โœ”๏ธ ํ•„ํ„ฐ๋ง ๐ŸŒฑ ํ”„๋ฆฌ๋””์ผ€์ดํŠธ๋กœ ํ•„ํ„ฐ๋งํ•˜๊ธฐ List crews = new ArrayList(); List backendCrews = crews.stream() // ๋žŒ๋‹ค์˜ ์ธ์ˆ˜(๋ฐฑ์—”๋“œ ํฌ๋ฃจ)๋ฅผ ๋ฐ›์•„ ํŠน์ • ์š”์†Œ๋ฅผ ์„ ํƒํ•œ๋‹ค. .filter(crew -> crew.getCourse() == Course.BACKEND) .collect(Collectors.toUnmodifiableList()); ์ง€๋‚œ ์ฑ•ํ„ฐ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ์˜ˆ์ œ์ด๋‹ค. ์—ฌ๊ธฐ์„œ filter ๋ฉ”์„œ๋“œ๋Š” Predicate๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›์•„์„œ, ํ•ด๋‹น ํ”„๋ฆฌ๋””์ผ€์ดํŠธ์™€ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ŠคํŠธ๋ฆผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๐ŸŒฑ ๊ณ ์œ  ์š”์†Œ ํ•„ํ„ฐ๋ง distinct ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ง„ ์ŠคํŠธ๋ฆผ์„ ๋ฐ˜..