์ „์ฒด ๊ธ€

๐Ÿ’ป Programming/JS, TS

[JavaScript] window&document ์ „์—ญ๊ฐ์ฒด์™€ DOM

์ „์—ญ window & document ๊ฐ์ฒด Built-in Variables & Functions ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์ฝ”๋“œ ๋‚ด์—์„œ ํ•ญ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜ window ๊ฐ์ฒด ์ „์—ญ ๊ฐ์ฒด window ์ „์—ญ ๊ฐ์ฒด๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ์ „์—ญ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ชจ๋“  ์ „์—ญ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋Š” ์‹ค์ œ๋กœ ์ด window ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ ์กด์žฌํ•œ๋‹ค. window ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ. ํ•จ์ˆ˜ ๊ธฐํ˜ธ f๊ฐ€ ํ‘œ์‹œ๋œ ๊ฒƒ์ด ๋ฉ”์„œ๋“œ์ด๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์€ ํ”„๋กœํผํ‹ฐ์ด๋‹ค. window ๊ฐ์ฒด์— ๋‚ด์žฅ๋œ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋“ค์€ window. ์—†์ด๋„ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค. alert ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ window.alert()๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ƒฅ alert()์œผ๋กœ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค. ์œˆ๋„์šฐ์™€ ๋ธŒ๋ผ์šฐ์ € ํƒญ ์œˆ๋„์šฐ๋Š” ์›น ๋ธŒ๋ผ์šฐ..

๐Ÿ’ป Programming/HTML, CSS

[CSS] ๋ณ€ํ™˜๊ณผ ์ „ํ™˜ (Transformations & Transitions)

1. ๋ณ€ํ™˜ Transformations ์š”์†Œ์˜ ๋ชจ์–‘์„ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ (ex. hover) ๋ณ€ํ™˜์€ transform ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด ์†์„ฑ์€ ๋ณ€ํ™˜ํ•˜๋ ค๋Š” ์š”์†Œ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ณ€ํ™˜์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์š”์†Œ์— ์ถ”๊ฐ€ํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ๋‹ค์‹œ ์‚ดํŽด๋ณด์ž. .card-container { background-color: rgb(255, 255, 255); width: 350px; margin: 50px auto; box-shadow: 3px 3px 10px rgb(201, 200, 200); } .card-container:hover { transform: scale(1.05); } ๋ณ€ํ™˜ํ•˜๋ ค๋Š” ์š”์†Œ๋Š” .card-container์ด์ง€๋งŒ ์—ฌ๊ธฐ์— transform ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , .card..

๐Ÿ’ป Programming/HTML, CSS

[CSS] html, :root, * ์„ ํƒ์ž

1. html ํ•˜๋Š” css ๊ทœ์น™์€ html์— ์ ์šฉ๋˜๊ณ  html ์•ˆ์— ํฌํ•จ๋œ ์š”์†Œ๋“ค์—๋„ ์ƒ์†๋œ๋‹ค. ์•„๋ž˜์˜ css ๋ณ€์ˆ˜ ์˜ˆ์ œ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๋…ผ๋ฆฌ html { --color-grey-100: rgb(236, 236, 236); --color-grey-400: rgb(134, 134, 134); --color-grey-600: rgb(58, 58, 58); --color-grey-900: rgb(41, 41, 41); --color-primary-300: rgb(167, 226, 255); --color-primary-700: rgb(0, 170, 255); --size-1: 18px; --size-5: 50px; background-color: var(--color-grey-100); } 2. :root ๊ฐ€์ƒ ..

๐Ÿ’ป Programming/HTML, CSS

[CSS] em, rem, %

1. ํฐํŠธ ํฌ๊ธฐ์—์„œ์˜ em, rem, % 1) px ์žฅ์ : Easy to understand & translateable ๋‹จ์ : Limited user focus & not scalable 2) em vs. rem (1) em (element) Size is relative to font-size ๋‹ค๋ฅธ ์š”์†Œ์˜ ํฐํŠธ ํฌ๊ธฐ์™€ ์—ฐ๊ด€๋œ ํฌ๊ธฐ - ํฐํŠธ ํฌ๊ธฐ๋Š” ๋ถ€๋ชจ ์š”์†Œ์˜ ํฌ๊ธฐ์— ๋‹ฌ๋ ค์žˆ๋‹ค. ๋‹จ์  %์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ถ€๋ชจ ์š”์†Œ์—์„œ ์ƒ์†๋ฐ›๋Š” ํฌ๊ธฐ์— ๋”ฐ๋ผ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค. (2) rem (root em) Size is relative to root element’s font size ํ˜„์žฌ ์š”์†Œ์˜ ํฐํŠธ ํฌ๊ธฐ์™€ ์ตœ์ƒ์œ„ ์š”์†Œ์˜ ํฐํŠธ ํฌ๊ธฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. HTML์—์„œ ์ตœ์ƒ์œ„ ์š”์†Œ: ์ตœ์ƒ์œ„ ์š”์†Œ์— ํฐํŠธ ํฌ๊ธฐ..

๐Ÿ’ป Programming/๊ธฐํƒ€

VS Code ์ž‘์€ ๋”ฐ์˜ดํ‘œ, ํฐ ๋”ฐ์˜ดํ‘œ ์„ค์ •ํ•˜๊ธฐ

VS Code์—์„œ ์ฝ”๋“œ ์ž‘์„ฑํ•  ๋•Œ ๋‚˜๋Š” ์ฃผ๋กœ ํฐ ๋”ฐ์˜ดํ‘œ(Double quote)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š”๋ฐ, ์ž๊พธ ์ž๋™์œผ๋กœ ์ž‘์€ ๋”ฐ์˜ดํ‘œ(Single quote)๊ฐ€ ์‚ฌ์šฉ๋˜์–ด์„œ ์„ค์ •์„ ์ฐพ์•„๋ณด๋˜ ์ค‘์— ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๋‚˜์ค‘์— ํŒ€ ์ปจ๋ฒค์…˜์ด ์ž‘์€ ๋”ฐ์˜ดํ‘œ์ธ ๊ฒฝ์šฐ๋„ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ƒํ™ฉ์— ๋งž๊ฒŒ ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์œ ์šฉํ•  ๊ฒƒ ๊ฐ™์•„ ๋ธ”๋กœ๊ทธ์— ๋‚จ๊ธฐ๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋จผ์ € code - ๊ธฐ๋ณธ ์„ค์ • - Settings ๋˜๋Š” ๋‹จ์ถ•ํ‚ค Command + , ๋ฅผ ๋ˆŒ๋Ÿฌ์„œ Settings์— ๋“ค์–ด๊ฐ„๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค์Œ ๋„ค ๊ฐ€์ง€๋ฅผ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์„ค์ •ํ•ด์ค€๋‹ค. 1. ๊ธฐ๋ณธ ์„ค์ •์„ ํฐ ๋”ฐ์˜ดํ‘œ(Double quote)๋กœ ์„ค์ • ์‹œ JavaScript > Preferences: Quote Style โžก๏ธ double TypeScript > Pre..

๐Ÿ’ป Programming/๊ธฐํƒ€

ROM, RAM, SSD, HDD (feat. ํ”„๋กœ์ ํŠธ ํ—ค์ผ๋ฉ”๋ฆฌ)

์š”์ฆ˜ ํ”„๋กœ์ ํŠธ ํ—ค์ผ๋ฉ”๋ฆฌ๋ผ๋Š” ์ฑ…์„ ์žฌ๋ฐŒ๊ฒŒ ์ฝ๋Š” ์ค‘์ธ๋ฐ, ์ฃผ์ธ๊ณต์ด ์šฐ์ฃผ์„ ์—์„œ ํ„ฐ์น˜์Šคํฌ๋ฆฐ ์ปดํ“จํ„ฐ(์•„๋งˆ ํƒœ๋ธ”๋ฆฟPC๊ฐ€ ์•„๋‹๊นŒ ํ•œ๋‹ค.)๋ฅผ ๋ฐœ๊ฒฌํ•˜๋Š” ์žฅ๋ฉด์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ๋‚˜์˜จ๋‹ค. "'์˜ํšŒ ๋„์„œ๊ด€'์ด๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™์€ ํด๋”๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ๊ฑฐ๊ธฐ์—๋Š” ๋ฏธ๊ตญ์—์„œ ์ €์ž‘๊ถŒ์„ ์ธ์ •๋ฐ›์€ ๋ชจ๋“  ์ „์ž ์นดํƒˆ๋กœ๊ทธ๊ฐ€ ํ†ต์งธ๋กœ ๋“ค์–ด ์žˆ๋Š” ๋“ฏ ํ•˜๋‹ค. ...(์ค‘๋žต)... SSD๋Š” ๋ฌด๊ฒŒ๊ฐ€ ๊ฐ€๋ฒผ์šฐ๋‹ˆ, ์ •๋ณด๋ฅผ ์‹ค์„ ๋•Œ ๊ตณ์ด ์ธ์ƒ‰ํ•ด์งˆ ํ•„์š”๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•œ ๋ชจ์–‘์ด๋‹ค. ์•„๋‹ˆ, ์ž๋ฃŒ๋ฅผ ๊ทธ๋ƒฅ ๋กฌ(ROM)์— ๊ตฌ์›Œ๋ฒ„๋ฆฐ๊ฑธ ์ˆ˜๋„ ์žˆ๋‹ค." ์ด ๋ถ€๋ถ„์„ ์ฝ์œผ๋ฉด์„œ SSD์™€ ROM์ด ๋ญ์˜€๋”๋ผ? SSD๋Š” ๋น„๊ต์  ์ต์ˆ™ํ•˜์ง€๋งŒ ROM์€ ๋“ค์–ด๋งŒ ๋ดค์ง€ ๋ฌด์—‡์ด์—ˆ๋Š”์ง€ ์ •ํ™•ํžˆ ๊ธฐ์–ต์ด ๋‚˜์ง€ ์•Š์•„์„œ ์ฐพ์•„๋ณด์•˜๋‹ค. 1. ROM ROM์€ Read-Only Memory์˜ ์•ฝ์ž๋กœ ์ฝ๊ธฐ ์ „์šฉ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ..

โœ๏ธ What I Learned/TIL

[TIL] Recoil Selector

๐Ÿ’ก TIL 20231029 - Recoil Selector Selector๋ž€? Derived state ์ž…๋ ฅ๋ฐ›์€ state๋ฅผ ๋ณ€ํ˜•ํ•ด ๋ฐ˜ํ™˜ํ•˜๋Š” ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ฅผ ๊ฑฐ์ณ ๋ฐ˜ํ™˜๋œ ๊ฐ’ Selector๋Š” ํŒŒ์ƒ๋œ state(derived state)์˜ ์ผ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰, ๊ธฐ์กด state๋ฅผ ๊ฐ€์ ธ์™€์„œ, ๊ธฐ์กด state๋ฅผ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด state๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์กด state๋ฅผ ์ด์šฉ๋งŒํ•  ๋ฟ ๋ณ€ํ˜•์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค. derived state๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•๋ ฅํ•œ ๊ฐœ๋…์ด๋‹ค. atom์˜ output์„ ๋ณ€ํ˜•์‹œ์ผœ ์ฃผ๋Š” ๊ฐœ๋… To Do ๋ชฉ๋ก๋“ค์„ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ? ์ปดํฌ๋„ŒํŠธ ์ž์ฒด์—์„œ ์ „์ฒด To Dos ๋ฐฐ์—ด์„ ๋ถˆ๋Ÿฌ์˜จ ๋’ค ๋ถ„๋ฅ˜ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๊ฒƒ์€ ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๋ฐ”..

โœ๏ธ What I Learned/TIL

[TIL] React-hook-form ๋ณต์Šต - register, validate, errors, handleSubmit

๐Ÿ’ก TIL 20231019 - React-hook-form ๋ณต์Šต - register, validate, errors, handleSubmit React-hook-form import useForm ์ปดํฌ๋„ŒํŠธ์—์„œ useForm์„ ํ˜ธ์ถœํ•˜๋ฉด register์™€ handleSubmit์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. form ๋‚ด์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š”ํ•œ input๋“ค์— register ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. required, minLength/maxLength, pattern, validate ๋“ฑ ๐Ÿ’ญ Register ํ•จ์ˆ˜ ; useForm hook์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Œ ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š”ํ•œ input์—์„œ register ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ react-hook-form์ด ์•Œ ์ˆ˜ ์žˆ๋„๋ก input์— ์ด๋ฆ„์„ ๋ถ€์—ฌํ•ด์•ผ ํ•จ {...register("email..

โœ๏ธ What I Learned/TIL

[TIL] ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ค๋Š” data์— ์ œ๋„ค๋ฆญ ์‚ฌ์šฉํ•˜๊ธฐ

๐Ÿ’ก TIL 20230914 - ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ค๋Š” data์— ์ œ๋„ค๋ฆญ ์‚ฌ์šฉํ•˜๊ธฐ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ค๋Š” data์— ํƒ€์ž… ์—๋Ÿฌ ๋ฐœ์ƒ useMutation.tsx์—์„œ useMutation ํ›…์„ ํ†ตํ•ด ๋ฐ›์•„์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ง€์ •ํ•ด๋‘์—ˆ๋‹ค. // src/hooks/useMutation.tsx interface UseMutationState { loading: boolean; data?: object; error?: object; } // src/components/Auth/Auth.tsx // ์ƒ๋žต return ( // ... ์ค‘๊ฐ„ ์ƒ๋žต {data?.ok ? null : ( {method === "email" ? ( ๊ทธ๋žฌ๋”๋‹ˆ ์œ„์˜ data?.ok ๋ถ€๋ถ„์—์„œ 'Property 'ok' does ..

โœ๏ธ What I Learned/TIL

[TIL] HTTP ์ƒํƒœ ์ฝ”๋“œ

๐Ÿ’ก TIL 20230912 - HTTP ์ƒํƒœ ์ฝ”๋“œ ์ž์ฃผ ์“ฐ๋Š” HTTP ์ƒํƒœ ์ฝ”๋“œ โœ… 200 OK ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (์„ฑ๊ณต) ๐Ÿ‘Ž 400 Bad Request ์ด ์‘๋‹ต์€ ์ž˜๋ชป๋œ ๋ฌธ๋ฒ•์œผ๋กœ ์ธํ•˜์—ฌ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ดํ•ดํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (ํด๋ผ์ด์–ธํŠธ์—์„œ Requestํ•  ๋•Œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ) ๐Ÿ” 401 Unauthorized ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์œ ํšจํ•œ ์ธ์ฆ ์ž๊ฒฉ ์ฆ๋ช…์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. โ›”๏ธ 403 Forbidden ํด๋ผ์ด์–ธํŠธ๋Š” ์ฝ˜ํ…์ธ ์— ์ ‘๊ทผํ•  ๊ถŒ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 401๊ณผ ๋‹ค๋ฅธ ์ ์€ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿšซ 405 Method Not Allowed ์š”์ฒญํ•œ ๋ฉ”์„œ๋“œ๋Š” ์„œ๋ฒ„์—์„œ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ์ œ๊ฑฐ๋˜์—ˆ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (ํ—ˆ..

Jiwon()
jiwondev.log