728x90
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€ 1364

[js] $.extend ์‚ฌ์šฉ์‹œ ์ฃผ์˜์ 

$.extend(obj1, obj2)๋Š” ์–•์€ ๋ณต์‚ฌ(shallow copy) ๋ฐฉ์‹์œผ๋กœ,obj2์˜ ์†์„ฑ์ด obj1๊ณผ ๊ฒน์น˜๋ฉด → obj1์˜ ๊ฐ’์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.๐Ÿ‘‡ ์˜ˆ์‹œ๋กœ ์‰ฝ๊ฒŒ ์„ค๋ช…let a = { others: "ํšŒ์˜์‹ค ๋น„๊ณ  ์žˆ์Œ", ldCd: "LD123" };let b = { others: null, ldCd: "LD456" };let merged = $.extend({}, a, b); // ๋˜๋Š” $.extend(a, b);console.log(merged.others); // โŒ null ๋ฎ์ด์ง€ ์•Š์„ ๊ฐ์ฒด๋ฅผ ๋‚˜์ค‘์— ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค.

Front/JS & jQuery 2025.06.23

[Error][dropzone] ํŒŒ์ผ๋ˆ„๋ฝํ˜„์ƒ, parallelUploads

โ— ํŒŒ์ผ ๋ˆ„๋ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ์›์ธ์›์ธ์„ค๋ช…โœ… ์„œ๋ฒ„ ์ฒ˜๋ฆฌ ์†๋„ ๋ถ€์กฑ๋ณ‘๋ ฌ๋กœ ์—ฌ๋Ÿฌ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์„œ๋ฒ„๊ฐ€ ์ผ๋ถ€ ์š”์ฒญ์„ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๋ชปํ•จโœ… ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๋А๋ฆฐ ์ธํ„ฐ๋„ท์—์„œ ๋ณ‘๋ ฌ๋กœ ์—…๋กœ๋“œ ์‹œ ์ผ๋ถ€ ์ „์†ก ์‹คํŒจ ๊ฐ€๋Šฅโœ… Dropzone ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์˜ค๋ฅ˜addedfile, sending, success ๋“ฑ ์ด๋ฒคํŠธ๋ฅผ ์ž˜๋ชป ์—ฐ๊ฒฐํ•ด์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œโœ… ๋„ˆ๋ฌด ํฐ ํŒŒ์ผ or ํŒŒ์ผ ์ˆ˜ ๊ณผ๋‹คDropzone์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํ๋ฅผ ๋Œ๋ฆฌ๋Š”๋ฐ, ์ด ํ ์ฒ˜๋ฆฌ๊ฐ€ ๊ผฌ์ผ ์ˆ˜ ์žˆ์Œโœ… ์„œ๋ฒ„ ์ œํ•œ (์˜ˆ: nginx, apache, WAS)๋™์‹œ์— ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์š”์ฒญ ์ˆ˜ ์ œํ•œ ์„ค์ • (e.g., max concurrent connections) โœ… ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒŒ ์ข‹์„๊นŒ?โœ” ์ผ๋ฐ˜์ ์ธ ๊ถŒ์žฅ ์‚ฌํ•ญํŒŒ์ผ ๋ˆ„๋ฝ ์ด์Šˆ๊ฐ€ ์—†๋‹ค๋ฉด parallelUploads: 2~4 ์ •๋„๊ฐ€ ..

Error 2025.06.22

[js] cancelAnimationFrame()

โœ… cancelAnimationFrame()์œผ๋กœ ์ทจ์†Œํ•˜๋Š” ๋ฐฉ๋ฒ•๐Ÿ“Œ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•js const id = requestAnimationFrame(myCallback);// ํ•„์š” ์‹œ ์ทจ์†ŒcancelAnimationFrame(id); ๐Ÿงช ์˜ˆ์‹œ: ํด๋ฆญํ•˜๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ค‘๋‹จjslet animationId;function animate(timestamp) { // ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ console.log("Animating..."); animationId = requestAnimationFrame(animate);}// ์‹œ์ž‘animationId = requestAnimationFrame(animate);// 3์ดˆ ๋’ค ์ค‘๋‹จsetTimeout(() => { cancelAnimationFrame(animationId)..

Front/JS & jQuery 2025.06.21

[js] requestAnimationFrame()์˜ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ

โœ… requestAnimationFrame()์˜ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ๐Ÿ“Œ ๋™์ž‘ ์ˆœ์„œJavaScript๊ฐ€ requestAnimationFrame(callback)์„ ํ˜ธ์ถœํ•˜๋ฉด,๋ธŒ๋ผ์šฐ์ €๋Š” ๋‹ค์Œ ํ”„๋ ˆ์ž„์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์ง์ „(callback์„ ํ์— ๋„ฃ๊ธฐ ์ „) ํƒ€์ด๋ฐ์—,callback์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณดํ†ต 1์ดˆ์— 60๋ฒˆ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋ฏ€๋กœ(60fps), ๋Œ€๋žต 16.67ms๋งˆ๋‹ค ํ•œ ๋ฒˆ์”ฉ callback์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ๋ฃจํ”„์™€ ๋™๊ธฐํ™”๋˜์–ด DOM ๋ณ€ํ™”๋‚˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ฐ€์žฅ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.๐Ÿง  ์–ธ์ œ ์‹คํ–‰๋˜๋Š”๊ฐ€?ํ™”๋ฉด์ด ํ™œ์„ฑ ์ƒํƒœ์ผ ๋•Œ๋งŒ ์‹คํ–‰๋จ→ ํƒญ์ด ๋น„ํ™œ์„ฑํ™”๋˜๋ฉด ์ผ์‹œ ์ค‘์ง€๋จ → CPU ๋‚ญ๋น„ Xํ”„๋ ˆ์ž„ ์Šค์ผ€์ค„์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์‹คํ–‰ ํƒ€์ด๋ฐ์ด ์กฐ์ ˆ๋จ → setTimeout๋ณด๋‹ค ์ •ํ™•ํ•œ ํƒ€์ด๋ฐ๐Ÿงช..

Front/JS & jQuery 2025.06.20

[js] requestAnimationFrame()

requestAnimationFrame()์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ธฐ ์ง์ „์— ์‹คํ–‰ํ•  ์ฝœ๋ฐฑ์„ ์˜ˆ์•ฝํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.์ฃผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ๋‚˜ ๋ Œ๋”๋ง ํƒ€์ด๋ฐ์„ ์ •ํ™•ํ•˜๊ฒŒ ๋งž์ถ”๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โœ… ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•js requestAnimationFrame(() => { // ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ repaint ์ „์— ์‹คํ–‰ํ•  ์ฝ”๋“œ // DOM์ด ๋ Œ๋”๋ง๋œ ์ดํ›„์— ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰๋จ});๐Ÿง  ๊ฐœ๋… ์š”์•ฝํ•ญ๋ชฉ์„ค๋ช…์‹คํ–‰ ์‹œ์ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ ํ”„๋ ˆ์ž„์„ ๊ทธ๋ฆฌ๊ธฐ ์ง์ „ํ˜ธ์ถœ ๋นˆ๋„์ผ๋ฐ˜์ ์œผ๋กœ ์ดˆ๋‹น 60ํšŒ (60fps)์ฃผ ๋ชฉ์ ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜ / ๋ Œ๋”๋ง ์ดํ›„ DOM ์กฐ์ž‘์ด์ setTimeout๋ณด๋‹ค ๋ถ€๋“œ๋Ÿฝ๊ณ  ํšจ์œจ์ ์ด๋ฉฐ, ๋ Œ๋”๋ง ํƒ€์ด๋ฐ ๋ณด์žฅ ๐ŸŽฏ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜?DOM ๋ณ€๊ฒฝ ์งํ›„ ํ›„์† ์ฒ˜๋ฆฌ์˜ˆ: innerHTML ๋˜๋Š” .append() ํ›„ ํŠน์ • ์š”์†Œ..

Front/JS & jQuery 2025.06.19

performance.getEntriesByType("navigation")

performance.getEntriesByType("navigation")๋Š” ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ๋ฐฉ์‹(์˜ˆ: ์ƒˆ๋กœ๊ณ ์นจ, ํžˆ์Šคํ† ๋ฆฌ ํƒ์ƒ‰, ์ตœ์ดˆ ๋กœ๋“œ ๋“ฑ) ์„ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” Web Performance API์˜ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.์ด๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ถˆ๋Ÿฌ์™”๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ๋ฌธ๋ฒ•javascriptconst entries = performance.getEntriesByType("navigation");๋ฐ˜ํ™˜๊ฐ’: PerformanceNavigationTiming ๊ฐ์ฒด ๋ฐฐ์—ด (๋ณดํ†ต ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ๋งŒ ์กด์žฌ)์ด ๊ฐ์ฒด์—๋Š” type, startTime, duration ๋“ฑ ๋‹ค์–‘ํ•œ ๋กœ๋”ฉ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.๐Ÿ“˜ ์ฃผ์š” ์†์„ฑ (PerformanceNavigationTiming)javasc..

IT์ง€์‹ 2025.06.18

[js] requestAnimationFrame ํ•จ์ˆ˜

requestAnimationFrame()์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ธฐ ์ง์ „์— ์‹คํ–‰ํ•  ์ฝœ๋ฐฑ์„ ์˜ˆ์•ฝํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.์ฃผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ๋‚˜ ๋ Œ๋”๋ง ํƒ€์ด๋ฐ์„ ์ •ํ™•ํ•˜๊ฒŒ ๋งž์ถ”๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โœ… ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•js requestAnimationFrame(() => { // ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ repaint ์ „์— ์‹คํ–‰ํ•  ์ฝ”๋“œ // DOM์ด ๋ Œ๋”๋ง๋œ ์ดํ›„์— ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰๋จ});๐Ÿง  ๊ฐœ๋… ์š”์•ฝํ•ญ๋ชฉ์„ค๋ช…์‹คํ–‰ ์‹œ์ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ ํ”„๋ ˆ์ž„์„ ๊ทธ๋ฆฌ๊ธฐ ์ง์ „ํ˜ธ์ถœ ๋นˆ๋„์ผ๋ฐ˜์ ์œผ๋กœ ์ดˆ๋‹น 60ํšŒ (60fps)์ฃผ ๋ชฉ์ ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜ / ๋ Œ๋”๋ง ์ดํ›„ DOM ์กฐ์ž‘์ด์ setTimeout๋ณด๋‹ค ๋ถ€๋“œ๋Ÿฝ๊ณ  ํšจ์œจ์ ์ด๋ฉฐ, ๋ Œ๋”๋ง ํƒ€์ด๋ฐ ๋ณด์žฅ ๐ŸŽฏ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜?DOM ๋ณ€๊ฒฝ ์งํ›„ ํ›„์† ์ฒ˜๋ฆฌ์˜ˆ: innerHTML ๋˜๋Š” .append() ํ›„ ํŠน์ • ์š”์†Œ..

Front/JS & jQuery 2025.06.18

[intelliJ] Redo ๋‹จ์ถ•ํ‚ค (ctrl + y)

์›๋ž˜ Windows๋‚˜ ์ผ๋ฐ˜ ์•ฑ๋“ค์—์„œ๋Š” Ctrl + Y๊ฐ€ '๋‹ค์‹œ ์‹คํ–‰(Redo)' ๊ธฐ๋Šฅ์ธ๋ฐ,**IntelliJ IDEA์—์„œ๋Š” Ctrl + Y๊ฐ€ '์ค„ ์‚ญ์ œ(Delete Line)'**๋กœ ๊ธฐ๋ณธ ์„ค์ •๋˜์–ด ์žˆ์–ด์„œ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์–ด์š”. IntelliJ ์—์„œ Redo ๋‹จ์ถ•ํ‚ค๋Š” ctrl + shift + Z โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ๋‹จ์ถ•ํ‚ค ์„ค์ • ๋ณ€๊ฒฝํ•˜๊ธฐCtrl + Y๋ฅผ ๋‹ค์‹œ **Redo(๋‹ค์‹œ ์‹คํ–‰)**๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผ ์„ค์ •ํ•˜์„ธ์š”:๐Ÿ”ง Ctrl + Y๋ฅผ Redo๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ• (Windows ๊ธฐ์ค€)File > Settings (๋˜๋Š” Ctrl + Alt + S)(macOS: IntelliJ IDEA > Preferences)์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œKeymap ํด๋ฆญ๊ฒ€์ƒ‰์ฐฝ์— Redo ์ž…๋ ฅ→ Main menu > Edit > Re..

IT์ง€์‹ 2025.06.16
728x90
๋ฐ˜์‘ํ˜•