๋ฐ˜์‘ํ˜•

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

ํ•ด๋‹น ๊ธ€ 150๊ฑด

querySelectorAll() ์€ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ “๋ฐฐ์—ด์ด ์•„๋‹ˆ๋‹ค.”๊ทธ๋ž˜์„œ map(), filter() ๊ฐ™์€ ๋ฐฐ์—ด ์ „์šฉ ๋ฉ”์„œ๋“œ๋ฅผ ์“ธ ์ˆ˜ ์—†๋‹ค. Array.from() ์œผ๋กœ ์ง„์งœ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.1) querySelectorAll()์˜ ๋ฐ˜ํ™˜๊ฐ’์€ “NodeList”์˜ˆ๋ฅผ ๋“ค์–ด:const checked = document.querySelectorAll(".row-check:checked");checked ๋Š” ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋‹ค.์ •ํ™•ํ•œ ํƒ€์ž…์€ NodeList ๋ผ๋Š” “์œ ์‚ฌ๋ฐฐ์—ด ๊ฐ์ฒด”.์œ ์‚ฌ๋ฐฐ์—ด์ด๋ž€:๊ธธ์ด(length) ์žˆ์Œ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ์Œํ•˜์ง€๋งŒ,map() ์—†์Œfilter() ์—†์Œreduce() ์—†์Œ์ฆ‰, ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ƒ๊ฒผ์ง€๋งŒ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋‹ค.2) NodeList์™€ ๋ฐฐ์—ด(Array)์˜ ์ฐจ..

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋””๋ฐ”์šด์Šค ํ•จ์ˆ˜๋ฅผ ์ ‘ํ•ด๋ณด์‹  ์  ์žˆ๋‚˜์š”?์Šคํฌ๋กค, ๊ฒ€์ƒ‰์ฐฝ ์ž…๋ ฅ, ์œˆ๋„์šฐ ๋ฆฌ์‚ฌ์ด์ฆˆ์ฒ˜๋Ÿผ ์งง์€ ์‹œ๊ฐ„์— ๋ฐ˜๋ณตํ•ด์„œ ํ˜ธ์ถœ๋˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋ชจ์•„์„œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.debounce()๋ž€?์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐ˜๋ณต ๋ฐœ์ƒํ•ด๋„, ๋งˆ์ง€๋ง‰ ํ˜ธ์ถœ๋งŒ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋Š” ํ•จ์ˆ˜ ์ œ์–ด ๊ธฐ๋ฒ•์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒ€์ƒ‰์ฐฝ์— ๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•  ๋•Œ๋งˆ๋‹ค API๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์–ด์š”.์ด๋•Œ debounce()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž…๋ ฅ์ด ๋ฉˆ์ถ˜ ํ›„ ํŠน์ • ์‹œ๊ฐ„(์˜ˆ: 300ms)์ด ์ง€๋‚˜๋ฉด ๋”ฑ ํ•œ ๋ฒˆ API๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.debounce()๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ๋‹ค์Œ๊ณผ ๊ฐ™์ด “๋„ˆ๋ฌด ์ž์ฃผ ์‹คํ–‰๋˜๋Š” ์ด๋ฒคํŠธ”์—์„œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. :์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰ API ํ˜ธ์ถœ์œˆ๋„์šฐ ๋ฆฌ์‚ฌ์ด์ฆˆ ์ด๋ฒคํŠธ์Šคํฌ๋กค ์ด๋ฒคํŠธ(๋ฌดํ•œ ์Šคํฌ๋กค, ์Šคํฌ๋กค ์œ„์น˜ ์ €..

ClickUp์˜ Description ์ฐฝ์€ ๋งˆํฌ๋‹ค์šด(Markdown) ๊ธฐ๋ฐ˜ + ์ž์ฒด ๋‹จ์ถ•ํ‚ค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.์•„๋ž˜๋Š” ์ž์ฃผ ์“ฐ์ด๋Š” ๋ช…๋ น์–ด, ์„œ์‹, ๋‹จ์ถ•ํ‚ค ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.1. ์ œ๋ชฉ / ํ—ค๋”ฉ (Heading)๊ธฐ๋Šฅ๋‹จ์ถ•ํ‚ค์˜ˆ์‹œ์ œ๋ชฉ 1# ๊ณต๋ฐฑ# ์ œ๋ชฉ์ œ๋ชฉ 2## ๊ณต๋ฐฑ## ์†Œ์ œ๋ชฉ์ œ๋ชฉ 3### ๊ณต๋ฐฑ### ๋‚ด์šฉ ๊ตฌ๋ถ„2. ๊ตต๊ฒŒ / ๊ธฐ์šธ์ž„ / ์ทจ์†Œ์„ ๊ธฐ๋Šฅ๋‹จ์ถ•ํ‚ค๋ฌธ๋ฒ•๊ตต๊ฒŒCtrl + B**ํ…์ŠคํŠธ**๊ธฐ์šธ์ž„Ctrl + I*ํ…์ŠคํŠธ*์ทจ์†Œ์„ ~~ํ…์ŠคํŠธ~~~~์‚ญ์ œ~~3. ๋ฆฌ์ŠคํŠธ- ๋ถˆ๋ฆฟ ๋ฆฌ์ŠคํŠธ- ์•„์ดํ…œ- ์•„์ดํ…œ - ๋ฒˆํ˜ธ ๋ฆฌ์ŠคํŠธ1. ์ฒซ ๋ฒˆ์งธ2. ๋‘ ๋ฒˆ์งธ3. ์„ธ ๋ฒˆ์งธ4. ์ฒดํฌ๋ฐ•์Šค(To-do)- [ ] ํ•  ์ผ- [x] ์™„๋ฃŒ๋œ ์ผ5. ์ฝ”๋“œ ๋ธ”๋ก (๊ฐœ๋ฐœ์ž์šฉ ๋ฌธ์„œ ์ž‘์„ฑํ•  ๋•Œ ํ•„์ˆ˜)์ธ๋ผ์ธ ์ฝ”๋“œ`์ฝ”๋“œ`๋ธ”๋ก ์ฝ”๋“œ```์–ธ์–ด๋‚ด์šฉ```6. ์ธ์šฉ๋ฌธ (Quote)> ์ธ์šฉ๋ฌธ ํ˜น์€ ๊ฐ•..

๋ฉ”์ผ๋กœ ์ž„์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฐœ๊ธ‰ํ•˜๋ ค๋ฉด ์ผ๋‹จ SMTP๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.์ €๋Š” ๊ตฌ๊ธ€๋กœ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Gmail SMTPGmail SMTP๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜ 3๊ฐ€์ง€๋ฅผ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.๊ตฌ๊ธ€ ๊ณ„์ •์ด 2๋‹จ๊ณ„ ์ธ์ฆ(OTP) ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์„ ๊ฒƒ์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ(App Password)๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์„ ๊ฒƒSpring Boot ๋ฉ”์ผ ์„ค์ •(application.properties)์ด SMTP ๊ทœ์น™์— ๋งž์„ ๊ฒƒํ•„์š”ํ•œ ์‚ฌ์ „ ์กฐ๊ฑด1) ๊ตฌ๊ธ€ ๊ณ„์ •์—์„œ 2๋‹จ๊ณ„ ์ธ์ฆ ํ™œ์„ฑํ™”๋งํฌ: https://support.google.com/accounts/answer/185839?hl=ko&co=GENIE.Platform%3DAndroid→ “2๋‹จ๊ณ„ ์ธ์ฆ” ์ผœ๊ธฐ 2๋‹จ๊ณ„ ์ธ์ฆ ์‚ฌ์šฉ - Android - Google ๊ณ„์ • ๊ณ ๊ฐ์„ผํ„ฐ2๋‹จ๊ณ„ ์ธ์ฆ์„ ..

์ƒ๋‹จ ๋ฉ”๋‰ด์—์„œEdit - Find - Replace in Files...๋ฅผ ์„ ํƒํ•œ ํ›„ํ•ด๋‹น ์ฐฝ์—์„œ ์ฐพ์œผ๋ฉด ๋˜๋Š”๋ฐ ์ธํ„ฐ๋„ท์—์„œ ๋‹จ์ถ•ํ‚ค ๊ฒ€์ƒ‰์„ ํ•˜๋‹ˆ๊นŒ๋‹ค๋“ค ์ปจํŠธ๋กค ์‰ฌํ”„ํŠธ R์ด๋ผ๋Š”๋ฐ ์•„๋ฌด๋ฆฌ ๋ˆŒ๋Ÿฌ๋„ ์•ˆ๋˜๋”๋ผ,,, (์บก์ฒ˜์—๋Š” ์„ค์ • ํ›„ ๋ชจ์Šต) ๋ณด๋‹ˆ๊นŒ ๋‹จ์ถ•ํ‚ค ์ง€์ •์ด ์•ˆ๋˜์žˆ๋Š”๋ฐ ๋‚˜์ฒ˜๋Ÿผ ์•ˆ๋˜์–ด์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด๋‹จ์ถ•ํ‚ค ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ถ”๊ฐ€๋กœ ์ ๊ฒ ์Šต๋‹ˆ๋‹ค. File - Settings์—์„œ keymap ๊ฒ€์ƒ‰ ๋ณด์‹œ๋ฉด Main Menu๋ผ๋Š” ๋ชฉ๋ก์ด ์žˆ๋Š”๋ฐ์—ฌ๊ธฐ์„œ Edit - Fine ํด๋”์— Replace in Files...๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.์˜†์— ๋‹จ์ถ•ํ‚ค๊ฐ€ ์—†์œผ๋ฉด ๋น„์–ด์žˆ์„ํ…๋ฐ ๋”๋ธ”ํด๋ฆญํ•˜๋ฉด์š”๋Ÿฐ์ฐฝ์ด ๋œฐํ…๋ฐ ์ด๊ฑธ ๋ˆ„๋ฅด๊ณ  ๋‹จ์ถ•ํ‚ค๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”IDE/intelliJ 2025. 12. 2. 15:29

DOM์—์„œ ์š”์†Œ๋ฅผ ํด๋ฆญํ•  ๋•Œ ์‹คํ–‰๋˜๋Š” ์ด๋ฒคํŠธ๋Š” **์ž์‹ → ๋ถ€๋ชจ๋กœ ์ „ํŒŒ(๋ฒ„๋ธ”๋ง)**๋ฉ๋‹ˆ๋‹ค.์ด ํŠน์„ฑ์„ ์ด์šฉํ•ด์„œ, “์—ฌ๋Ÿฌ ์ž์‹ ์š”์†Œ๋งˆ๋‹ค ์ด๋ฒคํŠธ๋ฅผ ๋ถ™์ด์ง€ ์•Š๊ณ  ๋ถ€๋ชจ ํ•˜๋‚˜์— ์ด๋ฒคํŠธ๋ฅผ ๋งก๊ธฐ๋Š” ๋ฐฉ์‹”์„ **์ด๋ฒคํŠธ ์œ„์ž„(Event Delegation)**์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.1. ๊ธฐ์กด ๋ฐฉ์‹: ์š”์†Œ๋งˆ๋‹ค ์ด๋ฒคํŠธ ์ง์ ‘ ๋“ฑ๋กdeleteBtn.addEventListener("click", function(){ newDiv.remove();})โœ” ๋™์ž‘ ๋ฐฉ์‹์นด๋“œ 1๊ฐœ ์ƒ์„ฑ → ์‚ญ์ œ ๋ฒ„ํŠผ 1๊ฐœ → ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ 1๊ฐœ์นด๋“œ 100๊ฐœ ์ƒ์„ฑ → ์‚ญ์ œ ๋ฒ„ํŠผ 100๊ฐœ → ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ 100๊ฐœ์ฆ‰, ์š”์†Œ ๊ฐœ์ˆ˜๋งŒํผ ์ด๋ฒคํŠธ๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค. ์ด ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ :์นด๋“œ 100๊ฐœ๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋„ 100๊ฐœ ์ƒ๊น€์„ฑ๋Šฅ ๋–จ์–ด์ง€๊ณ  ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง๋™์ ์œผ๋กœ ์ถ”๊ฐ€๋œ ์š”์†Œ๋Š”..

DB ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ํด๋ผ์šฐ๋“œ๋‚˜ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…(๋คํ”„)ํ•˜๊ณ ,์ด๋ฅผ ๋กœ์ปฌ ํ™˜๊ฒฝ์œผ๋กœ ๋ณต์›ํ•ด์•ผ ํ•  ์ผ์ด ์ž์ฃผ ์ƒ๊น๋‹ˆ๋‹ค.์ด ๊ธ€์—์„œ๋Š” pg_dump๋กœ ๋ฐฑ์—…์„ ๋งŒ๋“ค๊ณ , pg_restore๋ฅผ ์ด์šฉํ•ด ๋กœ์ปฌ DB·ํŠน์ • ์Šคํ‚ค๋งˆ์— ๋ณต์›ํ•˜๋Š” ์ „์ฒด ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.1. pg_dump๋กœ DB ๋ฐฑ์—…(dump) ๋งŒ๋“ค๊ธฐ๋ฐฑ์—…(dump) ์ƒ์„ฑ์€ PostgreSQL์˜ pg_dump๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.Custom format(-F c)์œผ๋กœ ๋ฐฑ์—…ํ•˜๋ฉด ๋‚˜์ค‘์— pg_restore๋กœ ์Šคํ‚ค๋งˆ ๋‹จ์œ„ ๋ณต์›์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ ๋ช…๋ นpg_dump -h {host} -U {user} -d {database} -F c -f "๊ฒฝ๋กœ\ํŒŒ์ผ๋ช….dump" ์˜ต์…˜ ์„ค๋ช…์˜ต์…˜์„ค๋ช…-h์ ‘์†ํ•  ์„œ๋ฒ„ ์ฃผ์†Œ. Render ๋“ฑ ์™ธ๋ถ€ ์„œ๋ฒ„์ผ ๊ฒฝ์šฐ ์™ธ๋ถ€ ํ˜ธ์ŠคํŠธ, ๋กœ์ปฌ์€ loca..

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์Šค์ฝ”ํ”„(์œ ํšจ ๋ฒ”์œ„)๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. var : ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„(function scope)let, const : ๋ธ”๋ก ์Šค์ฝ”ํ”„(block scope)์—ฌ๊ธฐ์„œ "์Šค์ฝ”ํ”„"๋Š” ๊ทธ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์˜ ๋ฒ”์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋ž€?var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ์ „์ฒด์—์„œ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.์ฆ‰, if, for, { } ๊ฐ™์€ ๋ธ”๋ก({}) ๋‚ด๋ถ€์— ์„ ์–ธํ•ด๋„ ๋ธ”๋ก ๋ฐ–์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ž€?let์ด๋‚˜ const๋Š” ํ•ด๋‹น ๋ธ”๋ก({}) ์•ˆ์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ECMAScript 2015(ES6)์—์„œ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.์˜ˆ์ œ(1) var๋Š” ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„if (true) { var x = 5;}console.log(x); // 5 var x๋Š” if๋ฌธ ๋ธ”๋ก {} ์•ˆ์—์„œ ์„ ์–ธ๋์ง€๋งŒ,์ž๋ฐ”์Šค..

์•ˆ๋…•ํ•˜์„ธ์š” :) ์˜ค๋Š˜์€ ๋งŽ์€ ๋ถ„๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” Noto Sans KR ํฐํŠธ ์ ์šฉ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ดค์–ด์š”.Google Fonts๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํžˆ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ , npm์œผ๋กœ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.ํ”„๋กœ์ ํŠธ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ์„ ํƒํ•ด์„œ ์ ์šฉํ•ด๋ณด์„ธ์š”! Noto Sans KR๊ตฌ๊ธ€·์–ด๋„๋น„ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ์‚ฐ์„ธ๋ฆฌํ”„ ๊ณ„์—ด ๊ธ€๊ผด๋กœ ํ•œ๊ธ€·์˜๋ฌธ·ํ•œ์ž ๋“ฑ ๋‹ค๊ตญ์–ด ์ง€์›์ด ์ข‹๊ณ  ํ™”๋ฉด ๊ฐ€๋…์„ฑ์ด ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.์›น์šฉ์œผ๋กœ ๋„๋ฆฌ ์“ฐ์ด๋ฉฐ ์—ฌ๋Ÿฌ ๊ตต๊ธฐ(Weights)๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ์–ด์š”.1. CDN์œผ๋กœ ์ ์šฉํ•˜๊ธฐ (๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•)jsDelivr (์ถ”์ฒœ)์œ„ ๋งํฌ๋ฅผ ์•ˆ์— ๋„ฃ์œผ๋ฉด**Thin(100)๋ถ€ํ„ฐ Black(900)**๊นŒ์ง€ ๋ชจ๋“  weight๋ฅผ ํ•œ ๋ฒˆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ดํ›„ CSS์—์„œ ์ด๋ ‡๊ฒŒ ์ง€์ •ํ•˜๋ฉด ๋ผ์š” ๐Ÿ‘‡body { font-fa..

๋ฐ˜์‘ํ˜•