๐Ÿ‘จ‍๐Ÿ’ป kimtongting
article thumbnail
[CSS] ์›น ํฐํŠธ ๋กœ๋”ฉ์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•

๊ฐœ์š” * ์›์ธํŒŒ์•…-์ฒซ ํ™”๋ฉด(๋Œ€์‹œ๋ณด๋“œ) ์ง„์ž… ์‹œ ๋Š๋ฆผ ๐Ÿ“์‹œ์ž‘์€ ์ด๋ ‡๋‹ค. '์šฐ๋ฆฌ ์‚ฌ์ดํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ ค์š”.. ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ์•ˆ๋ ๊นŒ์š”?' ๋ผ๋Š” ๋ง์„ ๋“ฃ๊ณ  ์‚ฌ์ดํŠธ๋ฅผ ๋“ค์–ด๊ฐ€๋ดค๋‹ค. ์„ธ์ƒ์—.. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ๋ฏธ์ฒ˜ ์Œ“์ด๊ธฐ๋„ ์ „์— ๋‚˜์กฐ์ฐจ๋„ ์ดํƒˆํ•˜๊ณ  ์‹ถ์€ ์†๋„์˜€๋‹ค. DevTools ๋กœ ๋„คํŠธ์›Œํฌ ์กฐํšŒํ•ด๋ณด๋‹ˆ ์‚ฌ์ดํŠธ ์ง„์ž… ์‹œ, Font์— ๋Œ€ํ•œ CSS ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ ๊ฝค๋‚˜ ํฐ ๋ชซ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์›์ธ ์›์ธ์€ Font! ๊ตฌ๊ธ€์—์„œ fonts ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ณณ์—์„œ ํฐ Delay ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ์—„์ฒญ ๋งŽ์€ font ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์žˆ์—ˆ๋‹ค. ์„œ๋ฒ„์˜ ๊ฒฝ๋Ÿ‰ํ™”๋ฅผ ์œ„ํ•ด์„œ์ธ์ง€(์ถ”์ธก) Google fonts ๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์‹ฌ์ง€์–ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” font ๋“ค๋„ ์„ ์–ธํ•˜์—ฌ ํ˜ธ์ถœ์ค‘์ด์—ˆ๋‹ค.. (์ด๋Ÿฐ.. cdn ์„œ๋ฒ„๊ฐ€ ๊ฐ€๊นŒ์šด์ง€๋„ ๋ชจ..

article thumbnail
[MSA] CQRS ์ด๋Ÿฐ๊ฑฐ์˜€์–ด?

QUOTE THE DAY “ ์—๋Ÿฌ ์—†๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐ๋Š” ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์„ธ๋ฒˆ์งธ ๊ฒƒ๋งŒ ์ž‘๋™ํ•œ๋‹ค. ” - Alan J. Perlis (์•จ๋Ÿฐ J. ํŽ„๋ฆฌ์Šค) CQRS (Command Query Responsibility Segregation) * CQRS ๋ž€? ๐Ÿ“์ง์—ญํ•˜์ž๋ฉด ๋ช…๋ น๊ณผ ์ฟผ๋ฆฌ์˜ ์—ญํ• ์„ ๊ตฌ๋ถ„ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Create-Insert, Update, Delete ์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๊ณผ Select-Read ์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ ๋‘ ๊ฐ€์ง€์˜ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. * ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š”(ํ˜น์€ ์‚ฌ์šฉํ–ˆ๋˜) ์ „ํ†ต์ ์ธ CRUD ์•„ํ‚คํ…์ณ ๊ธฐ๋ฐ˜์—์„œ ์‹œ์Šคํ…œ์„ ์œ ์ง€๋ณด์ˆ˜ํ•˜๋‹ค ๋ณด๋ฉด, ์ถ”๊ฐ€์ ์ธ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์ •์ฑ…์˜ ๋ณ€ํ™”๋“ค๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋กœ์ง์ƒ์˜ Domain Model ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ..

article thumbnail
[Spring] @Valid ๋กœ exception ์ฒ˜๋ฆฌํ•˜๊ธฐ ๊ฒ€์ฆํ•˜๊ธฐ

๊ฐœ์š” API ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜, ํŠน์ • ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜ ๊ฐ’์„ ์ง€์ •ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. (ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ) ๋”ฐ๋กœ Rule ์ด ์—†๋‹ค๋ฉด ๋ฐฉ๋ฒ•์€ ๋ฌด๊ถ๋ฌด์ง„ํ•˜๋‹ค. ๋ชจ๋“  ์š”์ฒญ์— if๋ฅผ ๊ฑธ์–ด ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜.. ๊ณตํ†ต์œผ๋กœ ํ•˜๋‚˜์˜ Class ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฒฝ์œ ํ•˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜.. ์ด ๊ธ€์—์„œ๋Š” ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  Exception ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ ์ž ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ๊น”๋”ํ•˜๋‹ค. ๊ธฐ์กด Spring ์ด๋‚˜ Spring Boot์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ ๋ฐœ์ƒํ–ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Spring Boot์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฉ”์‹œ์ง€๋กœ ์ œ์–ดํ•  ์˜ˆ์ •์ด๋‹ค. *์•„๋ž˜ ๊ธ€์—์„œ๋Š” ์ฟ ํฐ์„ ๋ฐœํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด์šฉ์„ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ @Valid ๋ฅผ ๋„ฃ์–ด ๊ตฌํ˜„ํ•˜์˜€๋‹ค. 1. ์‚ฌ์ „์ค€๋น„ ๐Ÿ“Maven ์„ ๊ธฐ..

article thumbnail
[Java] ์ •๊ทœ ํ‘œํ˜„์‹ / ์ •๊ทœ์‹

์ •๊ทœ ํ‘œํ˜„์‹(๋ณด์กฐ์ œ๋ชฉ * ์–ธ์ œ ์“ฐ์ด๋Š”๊ฐ€? ๐Ÿ“๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด, ์œ ํšจ์„ฑ ๊ฒ€์ฆ์„ ์œ„ํ•ด ์ •๊ทœ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ˆซ์ž๋งŒ ์ž…๋ ฅ, ์˜๋ฌธ์ž๋งŒ ์ž…๋ ฅ, ์—ฐ๋ฝ์ฒ˜์— '-' ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ž…๋ ฅ ๋“ฑ๋“ฑ.. ์ œํ•œ์„ ๋‘๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ด์— ์ž์ฃผ ์“ฐ์ด๋Š” ํ‘œํ˜„์‹์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘์–ด ๊ณต์œ ํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹ ์„ค๋ช… ^[0-9]*$ ์ˆซ์ž ^[a-zA-Z]*$ ์˜๋ฌธ์ž ^[๊ฐ€-ํžฃ]*$ ํ•œ๊ธ€ \\w+@\\w+\\.\\w+(\\.\\w+)? E-Mail ^\d{2,3}-\d{3,4}-\d{4}$ ์ „ํ™”๋ฒˆํ˜ธ ^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ ํœด๋Œ€์ „ํ™”๋ฒˆํ˜ธ \d{6} \- [1-4]\d{6} ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ ^\d{3}-\d{2}$ ์šฐํŽธ๋ฒˆํ˜ธ ์ž‘์„ฑ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. #์—ฐ๋ฝ์ฒ˜ ์ƒ˜ํ”Œ @Pattern(reg..

article thumbnail
[Spring] @SuppressWarnings ์‚ฌ์šฉ๋ฐฉ๋ฒ•

@SuppressWarnings 1. ์–ธ์ œ ์“ฐ์ผ๊นŒ? ๐Ÿ“IDE๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์ปดํŒŒ์ผ ๊ฒฝ๊ณ ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ๋˜๋Š” ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ๋“ฑ์˜ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•œ๋‹ค. @SuppressWarnings๋Š” ์ด๋Ÿฐ ๊ฒฝ๊ณ ๋ฅผ ์ œ์™ธํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๐Ÿ‘จ‍๐Ÿ’ป๐Ÿ’ปโŒจ all : ๋ชจ๋“  ๊ฒฝ๊ณ  cast : ์บ์ŠคํŠธ ์—ฐ์‚ฐ์ž ๊ด€๋ จ ๊ฒฝ๊ณ  dep-ann : ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•  ์ฃผ์„ ๊ด€๋ จ ๊ฒฝ๊ณ  deprecation : ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ• (๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ) ๋ฉ”์„œ๋“œ ๊ด€๋ จ ๊ฒฝ๊ณ  fallthrough : switch ๋ฌธ์—์„œ break ๋ˆ„๋ฝ ๊ด€๋ จ ๊ฒฝ๊ณ  finally : ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” finally ๋ธ”๋ก ๊ด€๋ จ ๊ฒฝ๊ณ  null : null ๋ถ„์„ ๊ด€๋ จ ๊ฒฝ๊ณ  rawtypes : ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ๋ถˆ..

article thumbnail
[CMD] ๋ฆฌ๋ˆ…์Šค EUC-KR ์„ค์ •ํ•˜๊ธฐ

๋ฆฌ๋ˆ…์Šค EUC-KR ์„ค์ •ํ•˜๊ธฐ * ๊ณ„์ •์— ์ง์ ‘ ์„ค์ • ๐Ÿ“.bash_profile #ํ˜„์žฌ ์ ‘์†ํ•œ ๊ณ„์ •์˜ ๊ฒฝ๋กœ๋กœ ์ด๋™ cd ~ #.bash_profile ํŒŒ์ผ์„ vi ํŽธ์ง‘๊ธฐ๋กœ ์—ด๊ธฐ vi .bash_profile #๋‚ด์šฉ์— ํ•˜๋‹จ ๋‚ด์šฉ ์ถ”๊ฐ€ export LANG=ko_KR.euckr #vi ํŽธ์ง‘๊ธฐ๋ฅผ ์ €์žฅ(:wq)ํ•˜๋ฉฐ ์ข…๋ฃŒ #.bash_profile ์„ ์ ์šฉ source .bash_profile * ํ˜„์žฌ ์„ธ์…˜์—์„œ๋งŒ ์ ์šฉ export LANG=ko_KR.euckr

article thumbnail
[Git] git ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ Pull Request ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

๐Ÿ“” ์†Œ๊ฐœ ์•„์ง Git ์„ ์‚ฌ์šฉํ•จ์— ์žˆ์–ด Pull Request ์— ์–ด์ƒ‰ํ•œ ๋ถ„๋“ค์„ ์œ„ํ•œ ๊ธ€์ด๋‹ค. Pull Request๋ž€ ๋ฌด์—‡์ผ๊นŒ? ๐Ÿ“„ Pull Request ๋ž€? Repository(ํ”„๋กœ์ ํŠธ)์˜ Maker(์ƒ์„ฑ์ž), Collaborators(ํ˜‘๋ ฅ์ž) ๊ฐ€ ์•„๋‹ˆ๊ธฐ์— Push ๊ถŒํ•œ์ด ์—†์ง€๋งŒ, ํ•ด๋‹น ๊ตฌ์„ฑ์›๋“ค์—๊ฒŒ Contribute ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ์š”์ฒญ์ด๋‹ค. ์กฐ๊ธˆ ๋” ํ’€์–ด ๋งํ•˜์ž๋ฉด, ๋‚ด๊ฐ€ ์ž‘์—…ํ•ด์•ผํ•˜๋Š”(ํ˜น์€ ๋งˆ์Œ์— ๋“œ๋Š”) Repository๊ฐ€ ์žˆ๋Š”๋ฐ ์ฝ”๋“œ์— ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ(๋” ๋ฐœ์ „๋œ ์ฝ”๋“œ๊ฑฐ๋‚˜ Maker์™€ Collaborators์— ๋„์›€๋˜๋Š” ์ฝ”๋“œ) ๋‚ด๊ฐ€ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋‹ˆ ๊ฒ€ํ†  ํ›„, ์ฝ”๋“œ ๋ณ‘ํ•ฉ ์š”์ฒญ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๐Ÿ“„ ์‚ฌ๊ฑด์˜ ๋ฐœ๋‹จ OO๋‹˜~~ A ํ”„๋กœ์ ํŠธ ์ด์Šˆ #12451๋ฒˆ ์ฒ˜๋ฆฌ ๋ถ€ํƒ๋“œ๋ ค์š”~! ๐Ÿ“์ดˆ๋ณด์ž๋Š” ์ด ๋ง์„ ๋“ฃ..

article thumbnail
DDD ๋ž€? ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„

๋„๋ฉ”์ธ ์ค‘์‹ฌ ์„ค๊ณ„(Domain-Driven Design)์ด๋ž€? ๋‹จ์ˆœํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด ๋„๋ฉ”์ธ(๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ)์„ ์ค‘์‹ฌ์œผ๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ์–ด ์„ค๊ณ„(๋˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ)ํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ํ”„๋กœ์ ํŠธ ์† ๋ชจ๋“ˆ๊ฐ„์˜ ์˜์กด์„ฑ์€ ์ตœ์†Œํ™”ํ•˜๋ฉฐ ์‘์ง‘์„ฑ์€ ์ตœ๋Œ€ํ™” ํ•˜๋ฉด์„œ ๋ง์ด๋‹ค... ์ฒ˜์Œ DDD ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ ‘ํ•  ๋•Œ๋Š” ๋„ˆ๋ฌด๋‚˜๋„ ๋„“์€ ๋ฒ”์œ„์— ๋‚œํ•ดํ•ด์„œ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์› ์—ˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ผ๊นŒ. ๊ฐ์ฒด ์ง€ํ–ฅ์€ ๋…๋ฆฝ์ ์ธ ๊ฐœ์ฒด(๊ฐ์ฒด)๋“ค์ด ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค. ๋ฌผ๊ฑด์„ ์‚ฌ๊ธฐ์œ„ํ•ด(Buy Domain) ๋งˆํŠธ์— ๋“ค์–ด๊ฐ„ A์”จ๋Š” ๊ทธ๊ณณ์—์„œ ์ผํ•˜๊ณ  ์žˆ๋Š” B์”จ์—๊ฒŒ ๊ณ„์‚ฐ์„ ํ•œ๋‹ค(Sell Domain) ์ ์ฃผ์ธ C ๋Š” ์ด๋ฅผ ๊ด€๋ฆฌ(Manage Domain)ํ•œ๋‹ค. ๋ฒŒ์จ ์—ฌ๊ธฐ์„œ๋งŒ 3๊ฐœ ์ด์ƒ์˜ ๋„๋ฉ”์ธ์ด..