\
[Framer-motion] motion/react vs motion/react-client ๋น„๊ต
ยท
๐Ÿ“š STUDY/WEB
Next.js App Router์—์„œ Motion์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค.// ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹"use client";import { motion } from "motion/react";// React Server Components ํ™˜๊ฒฝimport * as motion from "motion/react-client";๋‘˜์˜ ์ฐจ์ด๋Š” ๋‹จ์ˆœํžˆ import ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹ˆ๋ผ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ด๋А ๋ Œ๋”๋ง ๊ฒฝ๊ณ„์— ๋ฐฐ์น˜๋˜๋Š”์ง€, ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์—์„œ ์–ด๋–ค ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š”์ง€, ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „๋‹ฌ๋˜๋Š” JavaScript์˜ ๋ฒ”์œ„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š”์ง€์— ์žˆ๋‹ค.1. motion/reactmotion/react๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Motion์„ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์— "use client"๋ฅผ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค."use client";impo..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 3 x n ํƒ€์ผ๋ง, JavaScript ํ’€์ด
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
๋ฌธ์ œ๋ฌธ์ œ๋งํฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ์ŠคSW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„programmers.co.kr ์ œํ•œ์‚ฌํ•ญ๊ฐ€๋กœ์˜ ๊ธธ์ด n์€ 5,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค.๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„ ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ 1,000,000,007์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ returnํ•ด์ฃผ์„ธ์š”.์ž…์ถœ๋ ฅ ์˜ˆ์‹œn๊ฒฐ๊ณผ411 ๋ฌธ์ œ ํ’€์ด์ด๋Ÿฐ ๋ฌธ์ œ์˜ ์ ‘๊ทผ์€ n์ด 1์ผ๋•Œ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ ‘๊ทผํ•ด์•ผํ•œ๋‹ค.ํ•˜์ง€๋งŒ ์„ธ๋กœ๊ฐ€ 3์œผ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ n์ด ํ™€์ˆ˜์ผ ๋•Œ, ํƒ€์ผ์„ ๋ชจ๋‘ ์ฑ„์šฐ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 0์ด๋‹ค.๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ง์ˆ˜ ๋‚ด์šฉ๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿผ n=2 ์ผ ๋•Œ๋Š” 3๊ฐœ๋กœ ์ฃผ์–ด์ง„ ์˜ˆ์‹œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. n=4์ผ ๋•Œ๋Š” 11๊ฐœ๋กœ ์„ค๋ช…์— ๋‚˜์™€์žˆ๋‹ค.์—ฌ๊ธฐ์„œ ์ฃผ์˜ ๊นŠ๊ฒŒ ๋ด์•ผํ•  ์ ์€ n=4์ผ ๋•Œ, n=2์ผ ๋•Œ..
[๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„] Front-end ์œ„์ฃผ๋กœ ๋ณด๋Š” ์ปดํ“จํ„ฐ ๊ตฌ์กฐ
ยท
๐Ÿ“š STUDY/CS & ๋„คํŠธ์›Œํฌ
๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ๋งŒ๋“œ๋Š” ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋ฆฌ์ŠคํŠธ๋ฌธ์ œ ๋ฆฌ์ŠคํŠธCPU์™€ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ๊ฐ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋‚˜?ํ”„๋กœ๊ทธ๋žจ์€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”๊ฐ€?๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์™œ ํ•„์š”ํ•œ๊ฐ€?์ง€์—ญ์„ฑ(Locality)์ด๋ž€?์Šคํƒ(Stack)๊ณผ ํž™(Heap)์˜ ์ฐจ์ด๋Š”?์ฝœ ์Šคํƒ(Call Stack)์ด๋ž€?์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‹œ์ ๊ณผ ์ด์œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋Š” ์™œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋กœ ์ด์–ด์ง€๋‚˜์š”?๋ฉ€ํ‹ฐ์ฝ”์–ด CPU๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ์— ์ฃผ๋Š” ์ด์ ์€?์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด๋ž€?๋ฌด๊ฑฐ์šด ์—ฐ์‚ฐ์ด UI๋ฅผ ๋ฉˆ์ถ”๊ฒŒํ•˜๋Š” ์ด์œ Web Worker๋Š” ์™œ ํ•„์š”ํ•œ๊ฐ€์š”? ๋“ค์–ด๊ฐ€๊ธฐ ์ „,์ปดํ“จํ„ฐ ๊ตฌ์กฐ๋ผ๋Š” ๊ณผ๋ชฉ์€, ๋ง ๊ทธ๋Œ€๋กœ ์ปดํ“จํ„ฐ์˜ ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ํ•™๋ฌธ์œผ๋กœ ๋‚ด๊ฐ€ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋„˜์–ด ์›น ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ์ง€ํ•˜๊ณ  ์žˆ์–ด์•ผํ•˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.๋”ฐ๋ผ์„œ, ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์€ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ๋ผ..
[JavaScript] JavaScript๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์›๋ฆฌ - ๊ธฐ๋ณธํŽธ
ยท
๐Ÿ“š STUDY/WEB
๋“ค์–ด๊ฐ€๋ฉฐ"ํ˜ธ์ด์ŠคํŒ…์ด ์™œ ์ผ์–ด๋‚ ๊นŒ?", "์Šค์ฝ”ํ”„ ์ฒด์ธ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?", "this๋Š” ์™œ ์ƒํ™ฉ๋งˆ๋‹ค ๋‹ฌ๋ผ์งˆ๊นŒ?" JavaScript๋ฅผ ๊ณต๋ถ€ํ•ด๋ดค๋‹ค๋ฉด, ์ด ์งˆ๋ฌธ๋“ค์€ ํ•œ ๋ฒˆ์ฏค ์ƒ๊ฐํ•ด๋ณด์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์„ธ ๊ฐ€์ง€๋Š” ๋”ฐ๋กœ ์™ธ์›Œ์•ผ ํ•  ๋ณ„๊ฐœ์˜ ๊ทœ์น™์ด ์•„๋‹Œ, ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ผ๋Š” ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ฉด ์ „๋ถ€ ๊ฐ™์€ ์›๋ฆฌ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.์ด ๊ธ€์—์„œ๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๋‚ด๋ถ€์— ๋ฌด์—‡์„ ๋‹ด๊ณ  ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ํ˜ธ์ถœ ์Šคํƒ์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.์ปจํ…์ŠคํŠธ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์•ž์„œ, ์ปจํ…์ŠคํŠธ๋ž€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.์ปจํ…์ŠคํŠธ(Context)๋ž€ ์ƒํ™ฉ, ๋งฅ๋ฝ, ๋ฌธ๋งฅ ์ƒ์˜ ์˜๋ฏธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ๋ฐœ์ž๋‹ต๊ฒŒ ํ•ด์„ํ•ด๋ณด๋ฉด, ํ…์ŠคํŠธ์˜ ๋‚ด์šฉ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํ…์ŠคํŠธ๊ฐ€ ์‚ฌ์šฉ๋œ ์ƒํ™ฉ, ์ด์ „ ๋ฌธ๋งฅ, ์ดํ›„ ๋งฅ๋ฝ ๋“ฑ์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ฌถ์Œ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค..
[์ž๋ฃŒ๊ตฌ์กฐ] ์Šคํƒ(Stack)
ยท
๐Ÿ“š STUDY/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜
๐Ÿ“ฆ ์Šคํƒ(Stack)์Šคํƒ(Stack)์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋„ฃ๊ณ  ๊บผ๋‚ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ํ›„์ž…์„ ์ถœ(LIFO, Last In First Out)๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.์˜ˆ๋ฅผ๋“ค์–ด, ์ ‘์‹œ๋ฅผ ์Œ“์•„๋‘๊ณ  ์œ„์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ“ ๋™์ž‘ ๋ฐฉ์‹์Šคํƒ์˜ ํ•ต์‹ฌ์€ “์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ , ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค.” ์ž…๋‹ˆ๋‹ค. 1. ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€(push)์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.2. ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ(pop)๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.3. ์Šคํƒ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ํ™•์ธ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.4. ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ธ๊ฐ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.JavaScrip..
[๊ฐœ๋…] HTTP ๋ฉ”์†Œ๋“œ ์ •๋ฆฌ
ยท
๐Ÿ“š STUDY/CS & ๋„คํŠธ์›Œํฌ
HTTP๋ž€HTTP(HyperText Transfer Protocol)๋ž€ HTML๊ณผ ๊ฐ™์€ ํ•˜์ดํผ๋ฏธ๋””์–ด ๋ฌธ์„œ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์˜ ํ”„๋กœํ† ์ฝœ์ด๋ฉฐ, ์ „ํ†ต์ ์ธ Client - Server ๋ชจ๋ธ์„ ๋”ฐ๋ฅด๋Š”๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ๋กœ ์„œ๋ฒ„๊ฐ€ ๋‘ ์š”์ฒญ ๊ฐ„์— ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ(์ƒํƒœ)๋„ ์œ ์ง€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋ ค์šด ๋ง์ธ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ดํ•ดํ•˜๊ณ  ๋‚˜๋ฉด ๋ณ„๊ฑฐ ์•„๋‹Œ ๋ง์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋ฉด, HTTP๋Š” ๊ธ€์ž์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ, ํ•˜์ดํผ๋ฏธ๋””์–ด ๋ฌธ์„œ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.์—ฌ๊ธฐ์„œ ํ•˜์ดํผ๋ฏธ๋””์–ด ๋ฌธ์„œ๋ž€, ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ํ•˜์ดํผ๋งํฌ์™€ ์‚ฌ์ง„, ์˜์ƒ ๋“ฑ์„ ๋ฌธ์„œ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์œ ํŠœ๋ธŒ๋ผ๋˜๊ฐ€, ์‡ผํ•‘๋ชฐ ์‚ฌ์ดํŠธ๋ฅผ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์ด๋ž€, ๋„คํŠธ์›Œํฌ์˜ OSI 7๊ณ„์ธต ์ค‘ 7๊ณ„..