CSS ์ ์šฉ๊ณผ์ • :: cascade, specificity, inheritance์— ๊ด€ํ•˜์—ฌ
์›น (WEB)/๊ณต๋ถ€ 2021. 10. 17. 10:42

์„ ํƒ์ž ์ถฉ๋Œ ์‹œ /*css*/ .special{ color: blue; } p{ color: red; } css๋Š” cascade์™€ specificity๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” rule์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ํ•ด๋‹น rule์— ๋”ฐ๋ผ ์ถฉ๋Œ ์‹œ ๋” ๊ฐ•ํ•œ ์„ ํƒ์ž๊ฐ€ ์ ์šฉ๋œ๋‹ค. cascade rule : ๋’ค์— ์ ์šฉ๋œ ์Šคํƒ€์ผ์ด ์•ž์„  ์Šคํƒ€์ผ์„ ๋ฎ์–ด์“ด๋‹ค. specificity rule : ์š”์†Œ๋ฅผ ๋” ํŠน์ •ํ•˜๋Š” ์„ ํƒ์ž๊ฐ€ ์Šคํƒ€์ผ์„ ์ฐจ์ง€ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์˜ ์˜ˆ์ œ์—์„œ specificty rule์— ์˜ํ•ด color๋Š” blue๊ฐ€ ๋œ๋‹ค. specificity specificity๋Š” 4๊ฐ€์ง€์˜ ๋‹จ์œ„๋กœ ์ธก์ •๋œ๋‹ค. Thousands : style ์†์„ฑ ๋‚ด์— ์ •์˜๋˜์–ด ์žˆ๋Š” style(inline style)์ผ ๊ฒฝ์šฐ Hundreds : ID selector๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ..

Javascript ๊ธฐ๋ณธ :: declare (Typescript์—์„œ type ์—†์„ ๋•Œ)
์›น (WEB)/๊ณต๋ถ€ 2021. 9. 22. 14:15

๋งŒ์ผ Typescript๋กœ ๊ฐœ๋ฐœํ•˜๋˜ ์ค‘์— ์•„์ฃผ ์ž˜ ์ž‘์„ฑ๋œ JS ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์™€์„œ ์“ฐ๊ณ ์ž ํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ๋ชจ๋“ˆ ๋‚ด์˜ ํ•จ์ˆ˜๋Š” typescript๋กœ ์ •์˜๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค. ๋ชจ๋“ˆ์ด ํ•ด๋‹น ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์—๋„ type์ด ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š์•„์„œ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๊ณ  ํ•ด์„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด declare ํ‚ค์›Œ๋“œ๋ฅผ ์จ์„œ ์ •์˜ํ•ด๋‘๋ฉด type์ด ์ธ์‹๋˜์–ด typescript compiler๊ฐ€ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. declare let module: any ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ "์ด๊ฑด ์ด๋ฏธ ์กด์žฌํ•˜๊ณ  ๋‹ค๋ฅธ ์ฝ”๋“œ์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค."๋ผ๊ณ  ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

CommonJS vs ES Modules
์›น (WEB)/๊ณต๋ถ€ 2021. 9. 22. 13:57

๋ฐฐ๊ฒฝ ํ•จ์ˆ˜๋“ค๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ์ „์—ญ ์Šค์ฝ”ํ”„์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋‘”๋‹ค๋ฉด ๋‹ค๋ฅธ ๋‚ด๋ถ€ ์š”์†Œ์— ์˜ํ•ด ๋ง๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ๊ณ , ์ˆœ์„œ๊ฐ€ ๋’ค์—‰์ผœ ์ „์—ญ ์Šค์ฝ”ํ”„์˜ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“ˆ์ด๋ผ๋Š” ๋ฐฉ์‹์„ ์ด์šฉํ•˜๋ฉด ๊ฐ๊ฐ ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ importํ•˜์—ฌ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์–ด๋””์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๋‹ค. ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๊ณ  import, export ํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ด๋ผ ํ•˜๋Š”๋ฐ ํ˜„์žฌ 2๊ฐ€์ง€์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ด ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. CommonJS ES modules ์ฐจ์ด์  ๊ธฐ์ดˆ ๋ฌธ๋ฒ• CommonJS const module = require('์–ด์ฉŒ๊ตฌ'); const { func } = require('์–ด์ฉŒ๊ตฌ'); module.exports = '์–ด์ฉŒ๊ตฌ'; // default export..

React context ์ฝ”๋“œ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ :: ๋ฆฌํŒฉํ† ๋ง
์›น (WEB)/๊ณต๋ถ€ 2021. 9. 21. 14:11

๋ฌธ์ œ ์ƒํ™ฉ React context ์‚ฌ์šฉ ์‹œ ๊ธฐ์กด ์ฝ”๋“œ ๊ตฌ์„ฑ์ด context ๋‚ด๋ถ€ ์š”์†Œ๊ฐ€ ๋Š˜์–ด๋‚  ์ˆ˜๋ก ๋ณต์žกํ•ด์ ธ์„œ ๋ฆฌํŒฉํ† ๋งํ•˜๋ ค ํ•œ๋‹ค. ๊ธฐ์กด ๊ตฌํ˜„ // ๊ตฌ์„ฑ const UserContext = createContext({}); const SignInContext = createContextvoid>(()=>{}); export const UserContextProvider = ({ children }) => { const [user, setUser] = useState(); const signIn = () => {}; return ( {children} ); } export function useUserState() { const context = useContext(UserContext); return c..

๋”ฅ๋งํฌ, ์•ฑ๋งํฌ, ์œ ๋‹ˆ๋ฒ„์…œ๋งํฌ? :: ๋ฌด์กฐ๊ฑด ์•ฑ์œผ๋กœ ์—ฐ๋™๋˜๋Š” ์ƒํ™ฉ ํ•ด๊ฒฐ
์›น (WEB)/๊ณต๋ถ€ 2021. 9. 1. 21:12

๋ฌธ์ œ : ๋„๋ฉ”์ธ(B)์ด ๋ณธ ์„œ๋น„์Šค ๋„๋ฉ”์ธ(A)์—์„œ ๋ถ„๋ฆฌ๋˜์–ด ๋‚˜์˜จ ์ƒํ™ฉ์—์„œ ์œ ๋‹ˆ๋ฒ„์…œ ๋งํฌ๊ฐ€ ์˜ค๋™์ž‘. ์›๋ž˜ ์‚ฌ์šฉ์ž์˜ ์„ ํ˜ธ์— ๋”ฐ๋ผ ๋ชจ๋ฐ”์ผ ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ ์ด๋™๋˜๊ฑฐ๋‚˜ ์•ฑ์„ ๋„์›Œ์•ผ ํ•˜๋Š”๋ฐ, ๋ฌด์กฐ๊ฑด ์•ฑ์œผ๋กœ ์—ฐ๋™๋˜๋Š” ํ˜„์ƒ ๋ฐœ์ƒ. ์›์ธ : ์œ ๋‹ˆ๋ฒ„์…œ ๋งํฌ๋Š” ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ๋ฌด์กฐ๊ฑด ์•ฑ์œผ๋กœ ์—ฐ๋™๋˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค. ํ•ด๊ฒฐ : ์œ ๋‹ˆ๋ฒ„์…œ ๋งํฌ๋ฅผ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ์ฒ˜๋ฆฌ. ์•„๋‹ˆ๋ผ๋ฉด URI scheme์„ ์ด์šฉํ•˜์—ฌ ์—๋Ÿฌ ์‹œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜๋Š” ์‹์œผ๋กœ ์ˆ˜์ •. ๋”ฅ๋งํฌ ๋”ฅ๋งํฌ๋Š” ํŠน์ • ์ฃผ์†Œ or ๊ฐ’์— ์˜ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ ๋‚ด์˜ ํŠน์ • ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งํ•œ๋‹ค. ๋”ฅ๋งํฌ๋Š” 3๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. URI scheme : ์•ฑ์— URI scheme ๊ฐ’์„ ๋“ฑ๋กํ•˜๋Š” ๋”ฅ๋งํฌ ํŠน์ • scheme ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด (ex_ ohouse:/..

์„œ๋น„์Šค์˜ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ :: ์ด๋ฏธ์ง€ ์ตœ์ ํ™”
์›น (WEB)/๊ณต๋ถ€ 2021. 8. 29. 10:02

https://web.dev/fast/#optimize-your-images ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์š”์•ฝํ•œ ๋ธ”๋กœ๊ทธ ๊ธ€์ž…๋‹ˆ๋‹ค.* ๋„์ž… ์„œ๋น„์Šค์˜ ์†๋„๋Š” UX์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ , UX๋Š” ๊ณง ์‚ฌ์šฉ์ž์˜ ์œ ์ž…์„ ๊ฒฐ์ •ํ•œ๋‹ค. ์„œ๋น„์Šค ์†๋„ ๊ฐœ์„ ์—๋Š” ๋‹ค์–‘ํ•œ ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ์ด๋ฒˆ์—๋Š” ์ด๋ฏธ์ง€ ์ตœ์ ํ™”๋ฅผ ์‚ดํŽด๋ณด์ž. ์ด๋ฏธ์ง€ ์ข…๋ฅ˜ ์ด๋ฏธ์ง€๋Š” 2๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. vector ์ด๋ฏธ์ง€ raster ์ด๋ฏธ์ง€ vector ์ด๋ฏธ์ง€๋Š” ์„ , ์ , ๋ฉด ๋“ฑ์˜ ๋ฒกํ„ฐ์  ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ, ๊ฐ„๋‹จํ•œ ๊ธฐํ•˜ํ•™ ๋ชจ์–‘ (๋กœ๊ณ , ๊ธ€์ž, ์•„์ด์ฝ˜ ๋“ฑ)์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์— ์ ํ•ฉํ•˜๋‹ค. vector ์ด๋ฏธ์ง€๋Š” ์‚ฌ์ด์ฆˆ์— ๋”ฐ๋ฅธ ๊นจ์ง ์—†์ด ์ด๋ฏธ์ง€๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ํ‘œํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ชจ์–‘์ด ๋ณต์žกํ•  ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์•„์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. rast..

์ธ์ฆ ๋ฐฉ์‹ :: ๊ธฐ๋ณธ ์ธ์ฆ ์›๋ฆฌ๋ถ€ํ„ฐ MSA ์ธ์ฆ๊นŒ์ง€
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:54

์ธ์ฆ ๋ฐฉ์‹ 1. API key๋ฅผ ํ†ตํ•œ ์ธ์ฆ ๊ณผ์ • user๊ฐ€ login ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. Client๋Š” ์ด๋ฏธ Server์— ๋“ฑ๋กํ•œ API key๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Client๋Š” user๊ฐ€ ์ž…๋ ฅํ•œ Login ์ •๋ณด๋ฅผ ๋ฐ›์•„์„œ API key์™€ ํ•จ๊ป˜ Login API๋ฅผ ์š”์ฒญํ•œ๋‹ค. Server๋Š” API key๋ฅผ ํ†ตํ•ด ํ•ด๋‹น Client๊ฐ€ ๋“ฑ๋ก๋˜์–ด์žˆ๋Š” ์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. Sever๋Š” Login ์ •๋ณด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น User๊ฐ€ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค. ๋‹จ์  API key๋Š” ๋ชจ๋“  Client๋“ค์ด ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ์ถœ๋˜๋ฉด ์ „์ฒด API๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค. API key๋Š” ์‹œ๊ฐ„์ด ๋ฌด์ œํ•œ์ด๊ณ  ํ•œ ๋ฒˆ ๋…ธ์ถœ๋˜๋ฉด API key ๋ณ€๊ฒฝ ์ „๊นŒ์ง€ ๊ณ„์† ๋…ธ์ถœ๋œ๋‹ค. 2. API Token์„ ํ†ตํ•œ ์ธ์ฆ ๊ณผ์ • user๊ฐ€ login ์ •๋ณด๋ฅผ ์ž…..

Micro Service Architecture์ด๋ž€?
์›น (WEB)/๊ณต๋ถ€ 2021. 7. 22. 08:51

๊ธฐ์กด์˜ ์•„ํ‚คํ…์ฒ˜ ๊ธฐ์กด์˜ ์•„ํ‚คํ…์ฒ˜๋Š” Monolitic ์•„ํ‚คํ…์ฒ˜๋กœ ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ํ•˜๋‚˜์˜ ๋ฐฐํฌ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋œปํ•œ๋‹ค. ์„œ๋น„์Šค ๋ณ„๋กœ ๋‚˜๋‰˜์–ด์ ธ์žˆ์ง€ ์•Š์œผ๋ฉฐ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋ฅผ ๊ฐฑ์‹ ํ•˜์—ฌ ๋ฐฐํฌํ•˜๊ณ ์ž ํ•˜๋ฉด ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ๋‹ค์‹œ ๋ฐฐํฌ ๋œ๋‹ค. MSA ์žฅ์  ๊ฐ„๋‹จํ•˜๋‹ค. ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋‹ค. MSA ๋‹จ์  ๋นŒ๋“œ ์‹œ๊ฐ„, ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„, ๋ฐฐํฌ ์‹œ๊ฐ„์ด ๋น ๋ฅด๊ฒŒ ์ƒ์Šนํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ์ „์ฒด ์„œ๋น„์Šค๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์„œ๋น„์Šค์˜ ์˜ํ–ฅ๋„๋‚˜ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ํŒŒ์•…์ด ์–ด๋ ต๋‹ค. MSA ๊ตฌ์กฐ UI layer ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง layer ๋ฐ์ดํ„ฐ ์ ‘๊ทผ layer DB Micro Service Architecture MSA๋Š” ๋ฐฐํฌ ๋‹จ์œ„๋ฅผ ์„œ๋น„์Šค ๋ณ„๋กœ ์ชผ๊ฐ  ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋œปํ•œ๋‹ค. ๋น„๊ตํ•˜์ž๋ฉด ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค. MSA ํŠน์ง• ๊ฐ ์„œ๋น„์Šค๋Š” mono..