• [์‚ฌ์ดํŠธ ์ถ”์ฒœ] ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ์œ„ํ•œ ๋””์ž์ธ ๋ณด์กฐ ์‚ฌ์ดํŠธ ์ถ”์ฒœ (์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ, ๋ณด๋”, SVG ํ•„ํ„ฐ, ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ)

    1. ์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ ์ถ”์ฒœ ์‚ฌ์ดํŠธ Coolors - The super fast color palettes generator!Generate or browse beautiful color combinations for your designs.coolors.co๐Ÿ”— https://coolors.co/์ปฌ๋Ÿฌ ํŒ”๋ ˆํŠธ ์ถ”์ฒœํ•ด ์ฃผ๋Š” ์‚ฌ์ดํŠธ๊ฐœ์ธ ํ”Œ์ ํ•  ๋•Œ ๋Œ€ํ‘œ ์ƒ‰์ƒ ์ •ํ•˜๊ณ  ์‹œ์ž‘ํ•˜๊ธฐ ์ข‹๋‹ค 2. border-style: dashed ์ปค์Šคํ…€ ์‚ฌ์ดํŠธ Coolors - The super fast color palettes generator!Generate or browse beautiful color combinations for your designs.coolors.co๐Ÿ”— https://kovart.github.io/dash..

  • [ํฐํŠธ] Apple ๊ฐ€์ด๋“œ ๋ผ์ธ์— ๋”ฐ๋ฅธ pt๋‹จ์œ„ ๊ธ€๊ผด

    iOS app ํ‘œ์ค€ SF PRO Text & Display ๊ธ€๊ผด์ด Apple์˜ ๋Œ€ํ‘œ ํ‘œ์ค€์ด๋‹ค.๋˜ํ•œ, ์ด ๊ธ€๊ผด์„ ์„ ํƒํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์„ค์ •์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์กฐ์ •๋œ๋‹ค. - ํฐ์ œ๋ชฉ(Large Title): 34pt- ์ œ๋ชฉ1(Title1): 28pt- ์ œ๋ชฉ3(Title3): 20pt- ๋ณธ๋ฌธ(Body): 17pt- ์„œ๋ธŒํ—ค๋“œ(Subhead): 15pt- ์บก์…˜(Caption): 12pt StyleWeightSize (points)Large TitleRegular34Title 1Regular28Title 2Regular22Title 3Regular20HeadlineRegular17BodyRegular18CalloutRegular16SubheadRegular15FootnoteRegular13Caption 1Regular12..

  • [์œ ์šฉํ•œ ์‚ฌ์ดํŠธ] UI/UX ๊ด€๋ จ ๋ฌด๋ฃŒ ์‚ฌ์ดํŠธ ๋ชจ์Œ

    ์„ธ๊ณ„ 1,966 ์•ฑ์˜ UX/UI ๋ฌด๋ฃŒ ๋ชจ์Œ ์‚ฌ์ดํŠธuxdnas.com2. ์ˆจ๊ฒจ์ง„ UX/UI ์ „๋žต์„ ์†Œ๊ฐœํ•ด์ฃผ๋Š” ์‚ฌ์ดํŠธ (๋ฌผ๋ก  ๋ฌด๋ฃŒ)growth.design 3. ์„ธ๊ณ„ ์•ฑ ๋งค์ถœ, DAU, ์ƒ์„ธ ์ •๋ณด ๋ถ„์„ ์‚ฌ์ดํŠธ (์ผ๋ถ€ ์œ ๋ฃŒ์ง€๋งŒ, ๋ฌด๋ฃŒ๋„ ์ถฉ๋ถ„)appmagic.rocks ref - https://www.threads.com/@2one.product/post/DKEM2jevjQX?xmt=AQGzgWiFWT-_I4EFVJTG6xy3J4BVywFKifD2Ztw1zcV1MRs

  • [Cursor] ์ž๋™ ํ”„๋กœ์ ํŠธ ๋งž์ถค ๊ทœ์น™ ์ƒ์„ฑํ•˜๊ธฐ

    /Generate Cursor Rules ๋ช…๋ น์–ด ํ•œ ์ค„์ด๋ฉด ์ž๋™์œผ๋กœ ํ”„๋กœ์ ํŠธ ๋งž์ถค ๊ทœ์น™์„ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค. ref - https://www.threads.com/@promppy_com/post/DJaKIXLT5rs?xmt=AQGzgWiFWT-_I4EFVJTG6xy3J4BVywFKifD2Ztw1zcV1MRs

  • [Vue] Watch, Computed ์ฐจ์ด์ 

    method method๋Š” ์ฃผ๋กœ ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ 1. ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ 2. ์ด๋ฒคํŠธ ๋ฐ”์ธ๋”ฉ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์„ ์œ„ํ•ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฆ‰, ์ค‘๊ด„ํ˜ธ ์‚ฌ์ด์— ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ํ…œํ”Œ๋ฆฟ์—์„œ vue ์ธ์Šคํ„ด์Šค๋กœ ์•„์›ƒ์†Œ์‹ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ ๋ฆฌ๋ Œ๋”๋ง ์ฃผ๊ธฐ์— ๋งž์ถฐ ๋งค๋ฒˆ ์‹คํ–‰๋จ ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ณ€๋™ ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๋ฉด ํ…œํ”Œ๋ฆฟ์„ ์žฌํ‰๊ฐ€ํ•˜๊ณ  ํ•ด๋‹น ํ…œํ”Œ๋ฆฟ์— ํ˜ธ์ถœ๋œ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๊ฒŒ ๋จ ๊ทธ๋ž˜์„œ ์ด๋ฒคํŠธ ๋ฐ”์ธ๋”ฉ ์‹œ์—๋Š” method๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ computed computed(์—ฐ์‚ฐ) ํ”„๋กœํผํ‹ฐ๋Š” ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์—๋งŒ ์“ฐ์ž„ ์ด๋ฒคํŠธ ๋ฐ”์ธ๋”ฉ์—๋Š” ์•Œ๋งž์ง€ ์•Š์Œ ๊ฒŒ๋‹ค๊ฐ€ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ์— ์œ ์šฉํ•˜์—ฌ ์˜์กดํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€” ๊ฒฝ์šฐ์—๋งŒ vue์— ์˜ํ•ด ์žฌํ‰๊ฐ€๋˜๊ฑฐ๋‚˜ ์žฌ์‹คํ–‰ ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Œ ์ฆ‰, co..

  • [JavaScript] ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ ํ˜ธ์ถœ ์‹œ์˜ this๋ฐ”์ธ๋”ฉ

    [JavaScript] ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ ํ˜ธ์ถœ ์‹œ์˜ this๋ฐ”์ธ๋”ฉ

    this๋ฐ”์ธ๋”ฉ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹, ์ฆ‰ ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ํ˜ธ์ถœ๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๊ฒฐ์ •์ด ๋˜๋Š”๋ฐ์š”, ์ฃผ์˜ํ•  ์ ์€ ๋™์ผํ•œ ํ•จ์ˆ˜๋„ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Œ์— ๋”ฐ๋ผ this๊ฐ€ ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ํ˜ธ์ถœ Function.prototype.apply/call/bind ๋ฉ”์„œ๋“œ์— ์˜ํ•œ ๊ฐ„์ ‘ ํ˜ธ์ถœ ๊ทธ์ค‘์—์„œ๋„ ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ ํ˜ธ์ถœ๋˜์—ˆ์„๋•Œ์˜ this์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿค” ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ธฐ๋ณธ์ ์œผ๋กœ this์—๋Š” ์ „์—ญ ๊ฐ์ฒด(global object)๊ฐ€ ๋ฐ”์ธ๋”ฉ ๋ฉ๋‹ˆ๋‹ค. function foo() { console.log("foo's this: ", this); // window function bar() { console.log("bar's this: ", this);// ..

  • [React/error] consider using transient props (`$` prefix for automatic filtering.)

    [React/error] consider using transient props (`$` prefix for automatic filtering.)

    styled component๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ props๋ฅผ ๋ณด๋‚ผ ๋•Œ ๊ฐ€๋” consider using transient props (`$` prefix for automatic filtering.) ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ ์—๋Ÿฌ ๊ทธ๋Œ€๋กœ ๋ณด๋‚ด๋Š” props์•ž์— '$'๋ฅผ ๋ถ™์–ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. import React from 'react'; import styled from 'styled-components'; const StyledDiv = styled.div` background-image: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), ${props => `url(${props.$imageurl})` || 'none'}; background-size: cov..

  • [JavaScript] ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

    [JavaScript] ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

    var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ์ด์ „์— ์ฐธ์กฐํ•˜๋ ค๊ณ  undefined๊ฐ€ ๋‚˜์˜ค๊ณ  let/const ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” reference error๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋˜, ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์ •์˜ ์ด์ „์— ์‹คํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ????? ํ˜ธ์ด์ŠคํŒ…์—๋Š” ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ์žˆ๋Š”๋ฐ ๋‘˜์€ ๋Ÿฐํƒ€์ž„ ์ด์ „์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด ๋จผ์ € ์‹คํ–‰๋˜์–ด ์‹๋ณ„์ž๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์—์„  ๋™์ผํ•˜์ง€๋งŒ, varํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” undefined๋กœ ์ดˆ๊ธฐํ™”๋˜๊ณ , ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์„ ํ†ตํ•ด ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑ๋œ ์‹๋ณ„์ž๋Š” ํ•จ์ˆ˜ ๊ฐ์ฒด๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, varํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ์ด์ „์— ์ฐธ์กฐํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์— ์˜ํ•ด undefined๋กœ ํ‰๊ฐ€๋˜์ง€๋งŒ, ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ ์ •์˜ํ•œ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ ์ด์ „์— ํ˜ธ์ถœํ•˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์ฝ”๋“œ ์„ ๋‘๋กœ ..

  • [JavaScript] for๋ฌธ์—์„œ varํ‚ค์›Œ๋“œ๋ฅผ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ  (var/let/const ์ฐจ์ด)

    [JavaScript] for๋ฌธ์—์„œ varํ‚ค์›Œ๋“œ๋ฅผ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ  (var/let/const ์ฐจ์ด)

    javascript scope์—๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Œ ๊ตฌ๋ถ„ ์„ค๋ช… ์Šค์ฝ”ํ”„ ๋ณ€์ˆ˜ ์ „์—ญ ์ฝ”๋“œ์˜ ๊ฐ€์žฅ ๋ฐ”๊นฅ ์˜์—ญ ์ „์—ญ ์Šค์ฝ”ํ”„ ์ „์—ญ ๋ณ€์ˆ˜ ์ง€์—ญ ํ•จ์ˆ˜ ๋ชธ์ฒด ๋‚ด๋ถ€ ์ง€์—ญ ์Šค์ฝ”ํ”„ ์ง€์—ญ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜๋Š” ์ž์‹ ์ด ์„ ์–ธ๋œ ์œ„์น˜(์ „์—ญ ๋˜๋Š” ์ง€์—ญ)์— ์˜ํ•ด ์ž์‹ ์ด ์œ ํšจํ•œ ๋ฒ”์œ„์ธ ์Šค์ฝ”ํ”„๊ฐ€ ๊ฒฐ์ •๋จ. ์ฆ‰, ์ „์—ญ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ „์—ญ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ–๋Š” ์ „์—ญ๋ณ€์ˆ˜์ด๊ณ , ์ง€์—ญ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ–๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์ž„ js์—์„œ var๋ฅผ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ ๋Š” ์ €๋ฒˆ ๋ ‰์‹œ์ปฌํ™˜๊ฒฝ ๋•Œ ์–ด๋А ์ •๋„ ์ดํ•ดํ–ˆ์—ˆ์Œ ๋Œ€์ถฉ var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ์ „์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š”๋ฐ ์ „์—ญ ์Šค์ฝ”ํ”„์—๋Š” js๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์ง„ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•จ ์˜ˆ๋ฅผ ๋“ค์–ด ์•Œ๋ฆผ์„ ๋„์šธ ์ˆ˜ ์žˆ๋Š” alert ๋งŒ์•ฝ var alert = "alert" ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ธฐ์กด์— ์žˆ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ ธ..

  • [React] ๊ฐ„๋‹จํ•œ todo ํ”„๋กœ์ ํŠธ(3) - Todo

    [React] ๊ฐ„๋‹จํ•œ todo ํ”„๋กœ์ ํŠธ(3) - Todo

    ์ด๋ฒˆ์—๋Š” todoList๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทผ๋ฐ ์ด๋ฒˆ ํŒŒํŠธ๋Š” ํฐ ํ‹€์ธ Todo์™€ ์•ˆ์— child component์ธ TodoItem ๋‘ ํŒŒํŠธ๋กœ ๋‚˜๋ˆ ์„œ ํฌ์ŠคํŒ…ํ• ๊ฒŒ์š” ๐Ÿค” Todo component Todo component์— ํ•„์š”ํ•œ css ํŒŒ์ผ์„ Todo.module.cssํŒŒ์ผ๋กœ ๋นผ์„œ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. import React, { useEffect, useState } from 'react'; import TodoItem from './TodoItem'; import useInput from './hooks/use-input'; import classes from './Todo.module.css'; (1) ๋กœ๊ทธ์ธ ํŽธ์—์„œ ๋งŒ๋“  custom hooks์ธ useInput๊ณผ ์—ฌ๋Ÿฌ ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ import //..