VS Code๋ ์ง์ค ๋ฐ ์ ํด ์ํ์์ 13 % CPU๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฐ๋ฆฌ๋ฅผ ์๋ชจํฉ๋๋ค. ๊น๋ฐ์ด๋ ์ปค์ ๋ ๋๋ง ๋๋ฌธ์ผ ์ ์์ต๋๋ค. ์ง์ค ๋ฐ ์ ํด ์ํ ์ผ ๋ CPU ์ฌ์ฉ๋์ด ๊ฑฐ์ 0 %์ ๊ฐ๊น๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌํํ๋ ค๋ฉด (๋น ์ค์ ํ์ผ๊ณผ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ด ๋นํ์ฑํ ๋ ์ํ์์ ์๋ ํจ) :
๊ฐ๋ฐ์ ๋๊ตฌ์ ํ์ ๋ผ์ธ์ ๊ธฐ๋กํ๋๋ฐ ๋๋ต์ ์ธ ๋ชจ์์ CPU ํ๋์ด 500ms๋ง๋ค ๊น๋ฐ์ด๋ ์ปค์๋ฅผ ๋ ๋๋งํ๋ ๋ฐ์ ์ค๋ ๊ฒ์์ ์์ํฉ๋๋ค.
Chrome ๋๋ TextEdit์ ๊ฐ์ ๋ค๋ฅธ macOS ์์ฉ ํ๋ก๊ทธ๋จ์ CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง ์๊ณ ์ปค์๊ฐ ๊น๋ฐ์ด๋ ๊ฒ์ ๋ณด์ฌ ์ฃผ๋ฏ๋ก ํ์คํ ์ต์ ํ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฐฐํฐ๋ฆฌ ์๋ช ์ ๋ํด ๋น์ทํ๊ฒ ์ง์ฐฉํ๋ ์ฌ๋๋ค์์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ : ์ปค์ ๊น๋ฐ์์ ๋นํ์ฑํํ๋ฉด CPU ์ฌ์ฉ๋์ด 0์ผ๋ก ๋จ์ด์ง๋๋ค. ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"editor.cursorBlinking": "solid"
Twitter์ ์ผ๋ถ ์ฌ๋๋ค์ ์ด๊ฒ์ ์ฌํ ํ ์ ์๋ค๊ณ ๋ง ํ์ผ๋ฏ๋ก ๋๋ฒ๊ทธ๋ฅผ ๋๊ธฐ ์ํด ๊ฐ๋ฐ์ ๋๊ตฌ์ ํ์ ๋ผ์ธ์ ๊ธฐ๋กํ์ต๋๋ค.
TimelineRawData-20170321T114212.json.zip
ํ์ ๋ผ์ธ ์คํฌ๋ฆฐ ์ท :
๋จ์ผ ํ๋ ์์ผ๋ก ํ๋ํ๋ฉด 2fps ๋ง ๋ ๋๋งํ๋ ๋์ ๋ฉ์ธ ์ค๋ ๋๋ ํ์ดํ๋ก ํ์๋๊ฐ๋ ์ ์ธ 60fps (16ms๋ง๋ค)์์ ์ผ๋ถ ์์ ์ ์ํํ๊ณ ์์์ ์ ์ ์์ต๋๋ค.
์์ ์ ์ค ํ๋๊น์ง ํ๋ํ๋ฉด ์ผ๋ถ ๋ ๋๋ง์ด 60fps์์ ๋ฐ์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
CPU ํ๋กํ์ผ์ ๊ฐ์ ธ ์ค๋ฉด ํน์ JS ๊ธฐ๋ฅ์ด ์๋ "(ํ๋ก๊ทธ๋จ)"์์ ์ฌ์ฉ๋๋ ๋๋ถ๋ถ์ CPU๋ฅผ ๋ณด์ฌ์ค๋๋ค.
"editor.cursorBlinking": "solid"
๋ฅผ ์ค์ ํ๋ฉด ๋๋ถ๋ถ ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง๋๋ค.์ฃผ๊ธฐ์ ์ธ "Update Layer Tree"/ "Paint"/ "Composite Layers"๊ฐ ์ฌ์ ํ ๋ฐ์ํ์ง๋ง 16ms๊ฐ ์๋ 500ms๋ง๋ค ๋ฐ์ํฉ๋๋ค.
์ด๊ฒ ๋์์ด ๋๊ธธ ๋ฐ๋๋ค!
@joliss ๋ด๋ถ ์์ ์ผ์ด๋๋ ์ผ์ ๋ํ ๋น ๋ฅธ ๋ต๋ณ : Chromium์์ ๊ธฐ๋ณธ ์ ๋๋ฉ์ด์ ์ด 60hz๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
์ ์ฌ (๊ฑฐ์ ๋์ผ) Chromium ๋ฌธ์ https://bugs.chromium.org/p/chromium/issues/detail?id=500259 ๋ฐ Chromium์ ์ถ์ ํญ๋ชฉ https://bugs.chromium.org/p/chromium/issues/detail ? id = 361587
ํ์ฌ CSS ์ ๋๋ฉ์ด์
<strong i="11">@keyframes</strong> monaco-cursor-blink {
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.cursor-blink {
animation: monaco-cursor-blink 1s step-start 0s infinite;
}
Paul Irish (Chrome guy) https://news.ycombinator.com/item?id=13941293 ์ธ์ฉ
์น ์คํ์ ๊ตฌ์ถ ๋ ๊ฐ๋ ฅํ * ํ ์คํธ ํธ์ง๊ธฐ๋ OS ํ ์คํธ ์บ๋ฟ์ ์์กด ํ ์ ์์ผ๋ฉฐ ์์ฒด์ ์ผ๋ก ์ ๊ณตํด์ผํฉ๋๋ค.
์ด ๊ฒฝ์ฐ VSCode๋ ์๋ง๋ ์ปค์๋ฅผ ๊น๋ฐ์ด๋ ๋ฐ ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์์ ๊ฒ์ ๋๋ค. CSS ํค ํ๋ ์ ์ ๋๋ฉ์ด์ ์ด์๋step
ํ์ด๋ฐ ํจ์์ ๋๋ค. ์ด๊ฒ์ 500ms๋ง๋ค ๋ถํฌ๋ช ๋๋ฅผ ๋ณ๊ฒฝํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์ง์ํฉ๋๋ค. ํํธ Chrome์ ์์ง์ด๋ฅผ ์์ ํ ์ต์ ํํ์ง ์์์ผ๋ฏ๋ก http://crbug.com/361587์ ๋๋ค.
๋ฐ๋ผ์ ํ์ฌ Chrome์ 500ms ๊ฐ๊ฒฉ์ผ๋ก ๋ง ์์ ํด์ผ ํ ๋ 16ms๋ง๋ค ์ ์ฒด ๋ ๋๋ง ์๋ช ์ฃผ๊ธฐ (์คํ์ผ, ํ์ธํธ, ๋ ์ด์ด)๋ฅผ ์ํํ๊ณ ์์ต๋๋ค. Chrome์ ์คํ์ผ ๊ตฌ์ฑ ์์๋ฅผ ์์ ํ๋ ์์ง๋์ด๊ฐ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๊ณ ํ์ ํ์ง๋ง ์ฝ๊ฐ์ ์์ ์ด ํ์ํฉ๋๋ค. ์ด ์ฃผ์ ์ ๋ํ ๊ฐ์์ฑ์ด ์ถ๊ฐ๋๋ฉด ์์ ์ ์ฐ์ ์์๊ฐ ๋์์ง ๊ฒ์ ๋๋ค. :)
- ๊ฐ๋จํ ํ ์คํธ ํธ์ง๊ธฐ์ [contenteditable] ๊ธฐ๋ฐ์ ๊ธฐ๋ณธ ํธ์ง๊ธฐ๋ ๊ฐ๋ฅํ์ง๋ง ๊ฐ์ฅ ์ํ๋ ๊ธฐ๋ฅ ์ธํธ๋ก ํ์ฅ๋๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ต๋๋ค.
Chromium ํญ์ ๋ฐฑ๊ทธ๋ผ์ด๋ CPU ์ฌ์ฉ๋์ ๋ํ ์ด ๋ณ๊ฒฝ ์ฌํญ
๊ทธ๋ ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค (https://github.com/electron/electron/issues/7553 ์ฐธ์กฐ). ์ฐ๋ฆฌ๋ ์๋ ์ค์ backgroundThrottling
์ false
๋์ ์ด๋ฏธ ๋๋ฌธ์ด๋ค.
์ข์ ๋ถ์์ ์ํด @joliss @rebornix ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
OSX์์ setInterval
๋ก ๋์ ๊ฐ์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ถ์ ๋ค์์ ์ด๊ธฐ ์ปค์ ๊น๋ฐ์ ๋
ผ๋ฆฌ์
๋๋ค. :)
@rebornix ์ฐ๋ฆฌ๊ฐ ์ผ๋ง ์ ์ -https://bugs.chromium.org/p/chromium/issues/detail?id=658894 . ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ DOM์ ์ฌ์ฉํ์ง ์์์ ๋ ์ ๋๋ฉ์ด์ ์์๋ฅผ ๋จ์ํ ๋ซ๋ ๊ฒ์ด ์๋๋ผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์์ต๋๋ค.
๋์ผํ CSS ์คํ์ผ๋ ์์ง๋ง ์ฌ๊ธฐ์ ์ฌ์ฉ๋๋์ง ํ์คํ์ง ์์ต๋๋ค.
<strong i="6">@keyframes</strong> monaco-cursor-blink {
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
์ปค์ ์ ๋๋ฉ์ด์ ์ https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback ์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ ๋๋ฉ์ด์ ์ ๋นํ์ฑํํ๋ ค๋ฉด ํ์ด์ง๊ฐ ์จ๊ฒจ ์ก๋์ง ์๋ ค์ฃผ๋ pageVisibility API๋ฅผ ์ฌ์ฉํ์ญ์์ค.
function handleVisibilityChange() {
if (document.hidden) {
// disable cursor animation with class name
}
else {
// add back cursor animation
}
}
document.addEventListener("visibilitychange", handleVisibilityChange, false);
์ ์ ์ฌ๊ธฐ๊ฐ ๋์ CPU์ GPU๋ฅผ ์ฌ์ฉํ์ฌ CSS ์ ๋๋ฉ์ด์ ์ ๋ ๋๋งํฉ๋๋ค :
.cursor-blink {
will-change: opacity;
}
ํ์ฌ ๊ตฌํ์์๋ ์๋ํฐ๊ฐ ํฌ์ปค์ค๋ฅผ ์์ผ๋ฉด ์ ๋๋ฉ์ด์ ์ ์ ๊ฑฐํ์ฌ ์ถ์ ํธํ๊ฒํฉ๋๋ค. ๊ทธ๋ฌ๋ ํธ์ง๊ธฐ์ ํฌ์ปค์ค๊ฐ ์์ผ๋ฉด ํธ์ง๊ธฐ๊ฐ ํ์๋๊ณ (์จ๊ฒจ ์ง๊ฑฐ๋ ๋ฐฐ๊ฒฝ์ ์์ง ์์) ํ์ฑ ์ํ์ด๊ณ ์ฌ์ฉ์๊ฐ ์์ ์ค์ด๋ฉฐ (์ฝ๊ธฐ๊ฐ ์ข์ ๊ฒฝ์ฐ)๋ณด๊ธฐ / ๋ด์ฉ ๋ณ๊ฒฝ์ ํธ๋ฆฌ๊ฑฐํ์ง ์์์ ์๋ฏธํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ ํด ์ํ ์ธ ๊ฒฝ์ฐ์๋ ๊น๋ฐ์ด๋ ์ปค์๋ฅผ ํ์ํด์ผํฉ๋๋ค. ์ด๊ฒ์ด ๊น๋ฐ์ด๋ ์ปค์์ ๋๋ค.
์ฒ์์์ด ๊ธฐ๋ฅ์ JavaScript๋ก ๊ตฌํ๋์์ผ๋ฉฐ ์ฝ 1 ๋ ์ ์ CSS ์ ๋๋ฉ์ด์ ์ผ๋ก ์ ํํ์ต๋๋ค. @alexandrudima๊ฐ ์ธ๊ธํ๋ฏ์ด OSX์์ JS๋ก ๋์๊ฐ๊ณ ์ถ์ ์ ์์ต๋๋ค.
@camwest ๋ API๊ฐ ๋งค๋ ฅ์ ์ด๋ฉฐ ์ ์ผํ ๋ฌธ์ ๋ ํธํ์ฑ์ ๋๋ค (์ฌํ๊ฒ๋ Safari).
@mehas will-change
๋ ์ ๋งํฉ๋๋ค. ์๋ํด ๋ณด์์ง๋ง์ด ๊ฒฝ์ฐ Chromium์ด ์ต์ ํ๋์ง ์์ต๋๋ค. Dev Tools์์ Paint Flashing ์ต์
์ ์ผ๋ฉด์ด ๊น๋ฐ์ด๋ ์ปค์๊ฐ ์ ํ ๋ค์ ๊ทธ๋ ค์ง์ง ์์์ ์ ์ ์์ต๋๋ค.
@jlukic @bcherny ๊ทํ์ ์ ์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ต์ ํํ๋ ค๋ ๊ฒ์ ์ปค์๊ฐ ํ์๋๊ณ ํ์ฑํ๋๊ณ ๊น๋ฐ์ผ ๋์ด๋ฏ๋ก ๊ฐ์์ฑ ๊ฒ์ฌ๊ฐ ์์ด๋ ์ฌ์ ํ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ์ง๋ง ๋น์ ๋ง์ด ๋ง์ต๋๋ค. ๊ฐ์์ฑ์ ํ์ธํด์ผํฉ๋๋ค. ํ์ฌ ์ฐฝ์ ์คํฌ๋กคํ์ฌ ๊น๋ฐ์ด๋ ์ปค์๋ฅผ ๋ณด์ด์ง ์๊ฒํ๋ฉด ์ต์ ํ๊ฐ ์์ต๋๋ค.
๊ณต์ ํ๊ฒ ๋งํ๋ฉด ๋ชจ๋์ฝ๋ ์ ๋ง, ์ ๋ง, ์ ๋ง ๋ณต์กํฉ๋๋ค. :)
@rebornix will-change๋ ๋ด ํ๋ก์ ํธ์์ ์๋ํ์ผ๋ฉฐ CPU ์ฌ์ฉ๋์ด ์์ ํ ์ฌ๋ผ์ก์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด ํค ํ๋ ์์ ๋ถํฌ๋ช ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. ๋์ ์์์ ์์์ '์์'์์ 'ํฌ๋ช '์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
๋๋ ๊ทธ์ ์ ๋ณต ์์ผ ๋ฟ์ด๊ณ ์ด๊ฒ์ด ์์ค๋ก ๊ฐ์ฃผ๋๋ค๋ฉด ๋ฏธ์ํ์ง๋ง 2 ํ๋ ์ ์ ๋๋ฉ์ด์ gif๊ฐ ์์์๋ฅผ ์ฐ์ง ์์๊น์? ๋๋ ์ด๊ฒ์ ๊ฒฐ์ ์ ์ผ๋ก ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ ์์ ํ ํ์ ํ์ง ๋ชปํ์ง๋ง KHTML์กฐ์ฐจ๋ Chrome์ผ๋ก ๋ณํ๋๊ธฐ ํจ์ฌ ์ ์ ์ด๋ฏธ ์ต์ ํ ๋ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ์์ํ ์ ์์ต๋๋ค.
@eteeselink ๋ ํฅ๋ฏธ๋ก์ธ ์ ์์ง๋ง ์ปค์ ์์์ ๋ณ๊ฒฝํด์ผํ๊ณ ํ๋ / ์ถ์ ๋ฑ์ด ์ฌ์ํ์ง ์์ ์ ์์ผ๋ฉฐ ๊ทธ ๋์ js๋ก ๋ค์ ์ ํํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ์ ์์ต๋๋ค.
@matthiasg Ahyes, ํ๋ / ์ถ์๋ฅผ ์์ด ๋ฒ๋ ธ์ต๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ํ ๋ง ์์์ ๋ฐ๋ผ ๊น๋ฐ์ด๋ GIF๋ฅผ ์๋ ์์ฑํ๋ ๊ฒ์ด ๋๋ฌด ์ด๋ ต์ง ์์์ผํฉ๋๋ค. GIF ํฝ์ ๋ฐ์ดํฐ๋ LZW๋ก ์ธ์ฝ๋ฉ๋์ง๋ง ํ๋ ํธ ๋ฐ์ดํฐ๋ ์์ถ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฆฌ ๋ฒ ์ดํน ๋ ํ์ผ์์ ๋ช ๋ฐ์ดํธ๋ฅผ ํจ์นํ๋ ๋ฌธ์ ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๊ทธ๋ ๊ฒ gif๋ฅผ ํ๋ํ๋ฉด ํ๋ฆฟํ๊ฒ ๋ง๋ค ๊ฒ์ด๋ฏ๋ก ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ด๊ฒ์ ๋์ ์ ๊ทผ ๋ฐฉ์ ์ผ ์ ์์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ GIF ์บ๋ฟ์ ํ๋ / ์ถ์ ํ ์์๋ ๋ฐฉ๋ฒ์ ์๊ฐํด ๋ผ ์ ์๋ค๋ฉด ์์์ ์ทจํ๊ณ ๊น๋ฐ์ด๋ ์บ๋ฟ ์ ๋๋ฉ์ด์ GIF ๋ฐ์ดํฐ URL์ ์์ฑํ๋ ์ฝ๋๋ฅผ ์ ๊ณต ํ ๊ฒ์ ์ฝ์ํฉ๋๋ค.
@eteeselink ์ด์จ๋ ๋ฐ๋๋ผ JS, ์๋ง๋ PHP์ ๋ช ๊ฐ์ง ๋ค๋ฅธ ๋ง์ ์ ๋์ ์ผ๋ก ์์งํด์ผํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์น ์ ์ฒด์์ ์ ํค์ ์ฌ์ฉ์ ์ป์ ๊ฒ์ด๋ผ๊ณ ์์ํ ์ ์์ผ๋ฉฐ, ์๋ ์ ์๋ฅผ ์ธ์ ํด์ผํ๋ ๋ผ์ด์ ์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋น์ ์ ๋งค์ฐ ์ ๋ช ํ ๊ฒ์ ๋๋ค.
@eteeselink ์ฐ๋ฆฌ๊ฐ ๋ฒฝ์์ ๋ฒ์ด๋ ์๋ฃจ์
์ ์ ์ํ๊ณ ์๋ค๋ฉด ์บ๋ฟ์ ๋์ <blink></blink>
๊ฐ์ธ๋ ๊ฒ์ด ์ด๋จ๊น์? :๋์ง:
์ฌ๋๋ค์ด ์ค์ง์ ์ธ ๊ฐ์ ์ ์๋ํ๋ ๋ฌธ์ ์ PR์ ๋ํด ์ธ๋ชจ์๋ ๋ฐ์ธ์ํ๋ ๋ฐ Reddit ์ฌ๋จ์ ํฉ๋ฅํ์ง ๋ง์ญ์์ค.
ํธ์ง๊ธฐ์ ํฌ์ปค์ค๊ฐ ์์ผ๋ฉด ํธ์ง๊ธฐ๊ฐ ํ์๋จ์ ์๋ฏธํฉ๋๋ค.
์ด๊ฒ์ ์๋ชป๋ ๊ฐ์ ์ ๋๋ค. ์ด์ ์ ๋ง์ถ์ง ์๊ณ ๋ค๋ฅธ ์ฐฝ ์๋ก ์ฐฝ์ ์ฌ๋ฆฌ๋ ๊ฒ์ ์ฌ์ํ ์ผ์ ๋๋ค. ๋ด๊ฐ ์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ :
๋ ๋ค ์์ฒด์ ์ผ๋ก ๋งค์ฐ ์ผ๋ฐ์ ์ด์ง๋ง ๋ฐ๋์ ํญ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ๊ฒ์ ์๋๋๋ค.
@ o11c ๊ฐ์ฌํฉ๋๋ค, ๊ธ์ ์ธ ๋ ๋ด ๊ฐ์ ์ด ๋๋ฌด ๊ฑฐ์น ์์ต๋๋ค. ๊ทธ๋ ์ต๋๋ค. ์ด์ ์ด ํ์ํ์ง ์๋ค๋ ๊ฒ์ ๋ณด์ด๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฐฝ์ ์คํฌ๋กคํ๋ ๊ฒ์ ํ ๊ฐ์ง ๊ฒฝ์ฐ์ ๋๋ค (๊ฐ์ ๋จ๋ฝ์์ ์ธ๊ธํ์ต๋๋ค :(). focus + visible์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ชจ๋ ์ํ๋์ด์ผํฉ๋๋ค.
setTimeout ๋๋ setInterval์ด ์๋ง๋ requestIdleCallback๋ณด๋ค์ด ์ฌ์ฉ ์ฌ๋ก์ ๋ ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค. requestIdleCallback์ ํ์ด๋ฐ์ ์์ธกํ ์ ์์ผ๋ฉฐ JS์์ ์ํํ๋ ์์ ์ ์ ๋ ดํ๋ฏ๋ก ๊ฐ๋ ํ์ด๋จธ๋ฅผ ์์ฝํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ์. https://gist.github.com/esprehn/afec30fbc655bba6bb8f3f67c28beef4
๋ํ์ด ์บ๋ฟ ์ ๋๋ฉ์ด์
์ ๋ถ๋๋ฌ์ด ํ์ค ํจ๊ณผ๋ฅผ ๋ํ๋ด์ง ๋ง ๋ธ๋ผ์ฐ์ ์ ์์คํ
์ปค์ (์ : <input>
๋๋ <textarea>
๋ด๋ถ์ ์ปค์)๋ ๋ฐ์ด๋๋ฆฌ ์ผ๊ธฐ / ๋๊ธฐ ๋ง ์ํํฉ๋๋ค. . Mac๊ณผ Linux์ ๊ธฐ๋ณธ ์ปจํธ๋กค์ ๋น์ทํ๊ฒ ๊น๋ฐ์
๋๋ค. ๋ ์์์ง ๋ง ์๋นํ ์ ์ ์ ๋ ฅ์ ์ฌ์ฉํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค @esprehn , ๋ฐ๋ก ์ง๊ธ ๋ด๊ฐ ํ๋ซ ๊น๋นก์์ ์ํด ํ ์ผ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ด ์ธ๊ธํ๋ฏ์ด, ๊ทธ๊ฒ์ ์ ๋๋ฉ์ด์
๋งํผ ์์์ง ์์ผ๋ฉฐ ease-in-out
๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋๋ฝ๊ฒ / ํ์ฅ ๊น๋ฐ์ด๋ ์ปค์๋ฅผ ๋งํ๋ ๊ฒ๋ ์๋๋๋ค.
@eteeselink ๊ธฐ๋ค๋ ค, 1px gif๋ฅผ ์ฌ์ฉํ๊ณ ์ด์จ๋ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ณ ์ถ์ง ์์ต๋๊น? ๋ธ๋ฌ๋ ๋ฌธ์ ๊ฐ๋์ง ์์ต๋๋ค.
์ : https://jsfiddle.net/mrkev/stxq613s/1/
๊ณง ์ ๋๋ฉ์ด์ ๊น๋ฐ์ ์บ๋ฟ ์์ฑ๊ธฐ๋ฅผ๋ณด๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.)
@mrkev your 1px gif as data uri : data : image / gif; base64 , R0lGODlhAQABAPAAAAAAAP /// yH / C05FVFNDQVBFMi4wAwEAAAAh + QQFMgABACwAAAAAAAAQABAAACAkwBACH5BAUyAAOALAAAAABABAC
ํธ์ ๋ด์ ๊ฐ๊ธฐ gif๋ ์ด๋ก ์ ์์ ํ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ "on"ํ๋ ์์์๋ ํฝ์ ๊ฒ์ ์์ ์ฐพ๋ 3 ๋ฐ์ดํธ๋ฅผ ์ฐพ๊ธฐ๊ฐ ๋๋ฌด ์ด๋ ต์ง ์์์ผํฉ๋๋ค (ํ๋ ์์ ์ ์ฅ๋์ง ์์ผ๋ฏ๋ก ํค๋๋ฅผ ๋๋ฌด ๊น์์ด ์ง๋๊ฐ ํ์๊ฐ ์์ต๋๋ค). ). ๋ด์ผ ์ฌ๊ฐ ์๊ฐ์ ์ฐพ์ผ๋ฉด ๋ ๊น์ด ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
์ด์จ๋ ์ ์ด ํ์ํ Welp๋ ์ด๊ฒ์ ์กฐ๊ธ ๋ ํ๊ตฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. gif๋ ํญ์ 14 ๋ฒ์งธ ๋ฐ์ดํธ์์ ์์ํ๋ ์ ์ญ ์์ ํ ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
์ด์ ์ ๋ง ์ฑ๊ฐ์ ๊ฒ์ base64์์ ๊ฐ ์ซ์๊ฐ 6 ๋นํธ ๋ง ์ธ์ฝ๋ฉํ๋ฏ๋ก ์ํฉ์ด ์ ๋๋ก ์ ๋ ฌ๋์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ์ซ์ 18์ ์ตํ์ ๋นํธ์ด๋ฉฐ ์ซ์ 22์ ์ต์์ ๋นํธ๋ ํด๋น gif์์ ๊ฒ์ ์์ ์ธ์ฝ๋ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๋ณธ์ง์ ์ผ๋ก ์์น 18-22์์ ๋ฌธ์ [A-P] [A-/] [A-/] [A-/] [P,f,v,/]
์ ์ผ๋ถ ์์ด์ ๋ชจ๋ ์์์ผ๋ก ํด๋น ํฝ์
์ ๊ทธ๋ฆฝ๋๋ค.
๋ค์์ ์์์ ์์์ ๋ํ GIF์ ์์
๋๋ค. ๋๋ ๋ณธ์ง์ ์ผ๋ก 18-22 ๋ฌธ์์์๋ ๊ฒ์ G8ABf
(์์์ ์ธ๊ธ ํ ๊ธฐ์ค์ ๋ง์)๋ก ๋์ฒดํ์ต๋๋ค.
https://jsfiddle.net/mrkev/stxq613s/7/
RGB๋ฅผ ์ฌ์ฉํ๊ณ ์ด gif๋ฅผ ํด๋น ์์์ผ๋ก ๋ฐํํ๋ ํจ์๋ฅผ ๋น๋ํ๋ ๊ฒ์ด ๋์์ง ์์์ผํฉ๋๋ค (:
๋๋ 7 ์๊ฐ ์์ ์์ ์ ๋ฃ๋๋ค. ๋๋ ๋ง ๊ทธ๋๋ก ์์ ์ ์ฐข์ด ๋ฒ๋ฆฌ๊ณ ์๋ค.
๊ทธ๋ฌ๋ ์ด์จ๋ ๋๊ตฐ๊ฐ๊ฐ ์ด๋ฏธ hex-to-base64 ํจ์๋ฅผ ์์ฑํ์ผ๋ฉฐ ๋น ๋ฅธ ์คํ ์ค๋ฒํ๋ก ๊ฒ์๋ง์ผ๋ก๋ ์ถฉ๋ถํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ์ฌ๊ธฐ์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
// takes color as string 'RRGGBB'
var generate_cursor_image = color => {
var gif = '47494638396101000100F00000' + color + '00000021FF0B4E45545343415045322E30030100000021F90405320001002C00000000010001000002024C010021F90405320001002C00000000010001000002024401003B'
return 'data:image/gif;base64,' + btoa(gif.match(/\w{2}/g).map(a => String.fromCharCode(parseInt(a, 16))).join(""))
}
๋ชจ๋ ์ ์์!
์ ์ฅ, @mrkev ๊ฐ ๋๋ฅผ ์ด๊ฒผ์ต๋๋ค. ์ด์จ๋ , ์ฌ๊ธฐ์ ๋์ผํ ๊ตฌํ์ด ์์ต๋๋ค.
https://jsfiddle.net/a6g4ob7h/
์ผ์น ๋ฐ ๋งคํ์ด ์งํ๋์ง ์๊ณ btoa ๋ง ์๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋ ๋น ๋ฅผ ์ ์์ต๋๋ค. ํ์ง๋ง ์๋๊ฐ ์ค์ํ๋ค๊ณ ์๊ฐํ์ง ์์ผ๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ์บ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ด๊ฐ ์ ๋ง๋ก ๊ถ๊ธํ ๊ฒ์ ์ด๊ฒ์ด ์๋๋ฅผ ๋์ด๋์ง ์ฌ๋ถ์ ๋๋ค. ํ ์คํธ ํ ์ข์ ์ค์ ์ ์์ง๋ง ์ ๋๋ฉ์ด์ GIF๋ 60fps๋ก ๋ค์ ๋ ๋๋ง ๋ ์ ์์ต๋๋ค.
ํ๋ / ์ถ์ํ๊ณ ์ง์ฌ๊ฐํ ๋ชจ์์ ์ปค์๊ฐ ์๋ ๊ฒฝ์ฐ ์ ๋๋ฉ์ด์
SVG๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ( <animate>
์์๋ ์ด๋ฏธ SVG 1.0 ์ฌ์์ ์ผ๋ถ์์ต๋๋ค.)
@eteeselink Max๋ ์ฝ http://nullsleep.tumblr.com/post/16524517190/animated-gif-minimum-frame-delay-browser
๋๋ฅผ ์ํด ๊ทธ๊ฒ์ ๋๋ถ๋ถ 0์ผ๋ก ์ ์ง๋ฉ๋๋ค (cpu ์ฌ์ฉ๋์ ์ฒซ ๋ฒ์งธ ์ด์ ๋๋ค-OSX 10.12.3-MacBook Pro Retina, 15-inch, Late 2013)
์ปค์์ ๊ด๋ จํ์ฌ ๊ธฐ๋ณธ ์ค์ ์ด ์์ต๋๋ค.
์๋ฌด๋ Linux์ ๋ํด ์ธ๊ธํ์ง ์์์ง๋ง Wayland (Ivy Bridge Graphics)๋ฅผ ์ฌ์ฉํ๋ GNOME Shell์์ ์ฝ 5 ~ 7 %์ ํด๋นํฉ๋๋ค.
blink
์ปค์ ๊น๋ฐ์ ์คํ์ผ์ ๋ํด setInterval
๋ก ๋์๊ฐ์์ด๋ฅผ ์ํํ๋ PR # 23121์ ๋ณํฉํ์ต๋๋ค. Mac mini์์๋ CPU ์ฌ์ฉ๋์ด 5.9 %์์ 0.9 %๋ก ๋จ์ด์ง๋๋ค.
๋ค์ดํฐ๋ธ๋ก ์ ํํ๊ณ OS๊ฐ ์ปค์๋ฅผ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋๋ก ๊ณ ๋ คํ ์ ์ด ์์ต๋๊น?
@justjoeyuk ์์ @rebornix์ ์ธ์ฉ๋ฌธ์ ์ฐธ์กฐํ์ญ์์ค.
@justjoeyuk ๋์ ์์ ํ ๋ค์ดํฐ๋ธ๊ฐ ์๋ ์น ์คํ ๊ธฐ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ํ๋ ๊ฒฝ์ฐ : VSCode์ ๊ฐ์ด ํ ๋ง๊ฐ ๋งค์ฐ ํฌ๊ณ DPI์ ๋ ๋ฆฝ์ ์ธ ํฌ๋ก์ค ํ๋ซํผ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฅ์ฑ์ด ๋์ ์๊ตฌ ์ฌํญ์ ํ์ ํ ๋ ๋ค์ดํฐ๋ธ๊ฐ ์๋ ์ปค์ ๋์ฒด๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ์๊ด์์ด ํ์ํฉ๋๋ค.
๋๊ฐ ์ถ์ธกํ์๊น์?
@LandonPowell ๋ฌธ์ ์ ๋ํ ์ค์ ํ ๋ก ์ ์ค์ผ์ํค๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ reddit / hackernews ์ฌ๋จ์ ์ฐ์ค๊ฝ ์ค๋ฝ์ต๋๋ค.
ํฐ๋ฏธ๋ ์ปค์๋ ์ด๋ป์ต๋๊น? ์ด๋ก ์ธํด CPU ์ฃผ๊ธฐ๋ ๊ธ์ฆํฉ๋๊น?
@mehas
CPU ๋์ GPU๋ฅผ ์ฌ์ฉํ์ฌ CSS ์ ๋๋ฉ์ด์ ์ ๋ ๋๋งํ๊ธฐ์ํ ์ ์ :
CPU์์ GPU๋ก ๋ถํ๋ฅผ ์ด๋ํ์ฌ ๋ฌธ์ ๋ฅผ ์จ ๊น๋๋ค. ์ค์ ๋ก ๊ทธ๊ฒ์ ๊ณ ์น๋ ๊ฒ์ ์๋๋๋ค.
ํํ
CPU์์ GPU๋ก ๋ถํ๋ฅผ ์ด๋ํ์ฌ ๋ฌธ์ ๋ฅผ ์จ ๊น๋๋ค. ์ค์ ๋ก ๊ทธ๊ฒ์ ๊ณ ์น๋ ๊ฒ์ ์๋๋๋ค.
CPU ๋ถํ ๊ฐ ๋ฌธ์ ์ ๋๋ค. GPU๋ฅผ ์ฌ์ฉํ๋๋ก ์ ๋๋ฉ์ด์ ์ ์ต์ ํํ๋ฉด์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
(์ด๊ฒ์ ๋ด๊ฐ ๊ฐ์ฅ ์ข์ ์์ ์ด๋ผ๊ณ ์ ์ํ ํน์ ์์ ์ ๋ํ ์ง๋ฌธ๊ณผ๋ ๋ณ๊ฐ์ ๋๋ค)
๊ทธ๊ฒ์ ์ฌํํ๋ ๋ฐฉ๋ฒ์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. vim ์๋ฎฌ๋ ์ด์ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ด๋ จ์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์งํ๋๋์ง ์๊ณ ์ถ์ต๋๋ค.
GPU๋ฅผ ์ฌ์ฉํ๋๋ก ์ ๋๋ฉ์ด์ ์ ์ต์ ํํ๋ฉด์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
๊ทธ๋๋ ๋ถํ์ํ GPU๋ก๋๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ํฝ ์นด๋์ ํ๋ก์ธ์์ ๋ถํ๊ฐ ์๋ค๋ ์ ์ ์ ์ธํ๋ฉด ์ ์ฌํ ๋ฌธ์ ์ ๋๋ค. ์ ๋ง ์์ ์ด ์๋๋๋ค ๐
์์๋์ ์ํ๋ฆฌ์นด์์ ํ์ด๋ฌ์ต๋๋ค.
์ฒ๋ง์์.
์ปค์์ gif๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๊ทธ๋๋ ๋ถํ์ํ GPU๋ก๋๊ฐ ๋ฐ์ํฉ๋๋ค. ๋น์ทํ ๋ฌธ์ ์ ๋๋ค
๋ง์ง๋ง ์ ํด ์ํ์์๋ CPU ์ฌ์ฉ๋์ด ๋ฌธ์ ๊ฐ ์๋๋๋ค.
@ efroim102 https://github.com/Microsoft/vscode/issues/22900#issuecomment -288832322
์ค, ์ ์ด์์ฌ,์ด ๋ ผ์์ ๋ชฉํ๊ฐ ๋ฌด์์ธ์ง ๊ฒฐ์ ๋ ๋๊น์ง ๊ณ์ ๋ ๊ฒ์ ๋๋ค.
์ ์ ๋์ (1)์ ๊ฐ์ ํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ (a) ๊ฐ์ ์์ ์๋์ง๋ฅผ ์ฌ์ฉํ๋์ง, (b) ๋ ์ ์ ์๋์ง๋ฅผ ์ฌ์ฉํ๋์ง, (c) ๋ ๋ง์ ์๋์ง๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ํด CPU์์ GPU๋ก ์คํ๋ก๋ํ๋ ๊ฒ์ ๋ํด ์ข ๋ ๋ฐ์ดํฐ ์ค์ฌ์ ์ผ ์ ์์ต๋๋ค. ๋๋ ์ด๋ฌํ ๋ฌธ์ ์ ๋ํ ์ ๋ฌธ ์ง์์ด ์์ผ๋ฏ๋ก ์ด๋ ๊ฒ์ด ์ฌ์ค์ธ์ง ์์ธกํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ GPU ์คํ๋ก๋๊ฐ (b)๋ก ์ด์ด์ง๋ค ๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์๋ฒฝํ์ง๋ ์์ง๋ง Chromium์ด ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋์์ด ๊ฒฝ๋ก๋ฅผ ์ถ๊ตฌ ํ ์์์๋งํผ ์ ์ถฉ์์ด ํ์ฉ ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ VSCode ํ์ด์ด ๋ฌธ์ ๋ฅผ ํ ๋ฒ์ ๊ณ ์น ํ์๊ฐ ์๋ค๊ณ ํ๋จํ๋ ๊ฒฝ์ฐ ์คํ๋ก๋๋ ์ ํ์ ์ฌ์ง๊ฐ ์์ ๊ฒ์ด๋ฉฐ ์ฅ๊ธฐ์ ์ธ ์์ ์ ์ถ๊ตฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค (์์ฃผ ์ค๋ ๊ฑธ๋ฆฌ๋๋ผ๋). ์ ์ด๋ ๋ด ์๊ฒฌ์ผ๋ก๋์ด ๋ฌธ์ ์ ๊ด์ฌ์ด ์๊ณ ์ข ์์ฑ์ด ์๋ ํ ์์ ์ ๊ฐ๋ฅํ๊ฒ ํ ๋ ์ฐ์ ์์๊ฐ ์ง์ ๋๋ค๋ ๊ฒ์ ์๋ฉด ์ถฉ๋ถํ ๊ฒ์ ๋๋ค.
(๋๋ ์ด๋ค ์๋ฃจ์ ์ด ์ฌ์ฉ ๊ฐ๋ฅ / ์ฐจ๋จ๋๋์ง์ ๋ํ ๋ฏธ๋ฌํ ์ธ๋ถ ์ฌํญ์ ํผ๋ํ๋ค๊ณ ํ์ ํ์ง๋ง, ์ฌ๋๋ค์ด ์๋ฃจ์ ๊ณต๊ฐ์ผ๋ก ๋ฐ์ด ๋๋ ๋์ ํด๊ฒฐํ๊ณ ์ํ๋ ๋ฌธ์ ๋ฅผ ์ฃผ์ฅํ๋ ๋ฐ ์ง์คํ ์ ์๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค.)
์ด๋ ์ชฝ์ด๋ ๋ ๋๋ง ๋ถํ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด GPU๊ฐ ๋ ์ ์ฅ์ฐฉ๋์ด ์์ง ์์๊น์? ๊ทธ๊ฒ์ด ๋ฐ๋ก ๊ทธ๊ฒ์ด ๋ง๋ค์ด์ง ๊ฒ์ ๋๋ค.
๋์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ CPU์ GPU๋ฅผ ๋ค๋ฅด๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ์ฐ์ ์์๋ฅผ๋๊ณ ๊ทธ๋ํฝ ๊ด๋ จ ๊ธฐ๋ฅ์ด ๊ทธ๋ํฝ ๊ด๋ จ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ ๋๋ค. CPU์ ์ด๋์ GPU์ 1 : 1 ์์ค์ด ์๋๋ฉฐ ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๋๋ถ๋ถ์ด ์์ ์์ (Chromium์ ๋ฒ๊ทธ๊ฐ ํจ์น ๋ ๋๊น์ง) ๋ ผ์์ด ์์ง๋ง ํ์ฌ ์๋ฃจ์ ์ด ์ฌ์ ํ CPU๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ค์ ๊ด๋ จ์ด ์์ต๋๋ค (๋ฌด๊ฒ๋ ํจ์ฌ ์ ์์๋ ๋ถ๊ตฌํ๊ณ ).
๋๋ ์ฌ๋๋ค์ด ๋ฐ์คํฌํฑ์์ ์น ๊ธฐ์ ์ ์ฌ์ฉํ์ง ๋ง์์ผํ๋ค๊ณ ์๊ฐํ๋ค. ๊ฐ ํ๋ก๊ทธ๋จ๋ง๋ค ์์ ํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ ๊ณตํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ธ๊ธ ํ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ์ฌ๊ธฐ ์ ๊ธฐ์์ ๋์ผํ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ณต์ ๋ฉ๋๋ค.
์ถ์ : JScript๋ Obj-C๊ฐ ๊ทธ๋ฌ์ด ์ผํ๋ ๊ฒ์ฒ๋ผ 10 ๋
์ ์ ๋ฒ๋ ค ์ก์ด ์ผํ์ต๋๋ค. Apple์ด ๋ถํํ์ง ์์๋ค๋ฉด ๋ง์
๋๋ค.
PPS : ^^^^ ์ด๊ฒ์ ํญ์ธ์
๋๋ค.
PPS : ^^^^ ์ด๊ฒ์ ํญ์ธ์ ๋๋ค.
@ bit2shift ์ค์ ๋ก
@ bit2shift- ์ผ๋ถ ๋ถ๋ถ์ ๋์ํ์ง๋ง (๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ์ฑ์ด ์ค์ ๋ค์ดํฐ๋ธ ์ฑ์ ๋นํด "๋ค์ดํฐ๋ธ"๋ผ๊ณ ๋๊ปด์ง์ง ์์ ์ ์๋ค๋ ์ฌ์ค๊ณผ ๊ฐ์) "๋ฒ ์ด ๋ฉํ"์์ค์ ์ผ๋ง๋ ๋ฎ์ต๋๊น? ๊ธฐ๊ณ ์ฝ๋? ์ด์ ๋ธ๋ฆฌ์ด? ์จ? C ++? ์จ#? ๊ธฐ์ ์คํ์ ๊ด๊ณ์์ด ํญ์ ์ฌ๋ฌ ๊ณ์ธต์ ์ถ์ํ๊ฐ์์ ๊ฒ์ ๋๋ค.
์ธ๊ธ ํ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ์ฌ๊ธฐ ์ ๊ธฐ์์ ๋์ผํ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ณต์ ๋ฉ๋๋ค.
ํ์ง๋ง NuGet ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ C # ์ฑ๊ณผ ๋์ผํฉ๋๋ค. ๋ชจ๋ ์ด์ ๋ธ์ ์ฑ์ ๋ก์ปฌ์ ๋๋ค. .NET Core๋ ํ๋ ์ ์ํฌ์ ๋ง์ ๋ถ๋ถ์ NuGet ํจํค์ง๋ก ๋ฐฐํฌํ๊ธฐ๋ํฉ๋๋ค.
๊ฐ ํ๋ก๊ทธ๋จ๊ณผ ํจ๊ป ์์ ํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ ๊ณตํด์ผํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ธฐ์ ์ ์ผ๋ก๋ ๋ณ๋์ ๋ธ๋ผ์ฐ์ ๋ฐํ์์ ์ค์นํ ํ์๊ฐ์๋ Edge ์์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Internet Explorer ๋ ๊ฑฐ์ 20 ๋ ์ ์ HTML ์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ๋น์ทํ ์ผ์ํ์ต๋๋ค . ๋ ๋ค๋ฅธ ์๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ OS์ ๊ธฐ๋ณธ JS ์์ง์ ์ฌ์ฉํ๋ React Native์ ๋๋ค. JavaScript ๊ธฐ๋ฐ ์ฑ์ ๊ฒฝ์ฐ Windows ์ฉ React Native์ ๊ฐ์ ๊ฒ์ด ๋ค์ดํฐ๋ธ UI ์์ ฏ์ ์ฌ์ฉํ๋ฏ๋ก ๋ ๋ค์ดํฐ๋ธ์ฒ๋ผ ๋๊ปด์ง๋ฏ๋ก ์น ๊ธฐ์ ๋ณด๋ค๋ ๋ฏธ๋ ์ผ ๊ฒ์ ๋๋ค.
ํํ
(...) "๋ฒ ์ด ๋ฉํ"์ ์ผ๋ง๋ ๋ฎ์ ์์ค์ ๋๊น? ๊ธฐ๊ณ ์ฝ๋? ์ด์ ๋ธ๋ฆฌ์ด? ์จ? C ++? ์จ#?
๊ธฐ๊ณ ์ฝ๋๋ก ์ปดํ์ผ ํ ์์๋ ๋ชจ๋ ์ธ์ด ( source -> ELF/PE
๊ณ์ฐ)๋์ด ์ปจํ
์คํธ์์ "๋ฒ ์ด ๋ฉํ"๋ก ๊ฐ์ฃผ๋๋ฏ๋ก ์ฌ๊ธฐ์ ์ถ์ํ ๊ณ์ธต์ ์ค์ํ์ง ์์ต๋๋ค.
Internet Explorer๋ ๊ฑฐ์ 20 ๋ ์ ์ HTML ์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ๋น์ทํ ์ผ์ํ์ต๋๋ค.
mshta.exe
์์์ ๊ฐ์ด "์ ์ฌํ ๊ฒ"์ 90 ๋
๋๋ถํฐ system32์์๋ mshtml.dll
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ ๋ค๋ฅธ ์๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ OS์ ๊ธฐ๋ณธ JS ์์ง์ ์ฌ์ฉํ๋ React Native์ ๋๋ค. JavaScript ๊ธฐ๋ฐ ์ฑ์ ๊ฒฝ์ฐ Windows ์ฉ React Native์ ๊ฐ์ ๊ฒ์ด ๋ค์ดํฐ๋ธ UI ์์ ฏ์ ์ฌ์ฉํ๋ฏ๋ก ๋ ๋ค์ดํฐ๋ธ์ฒ๋ผ ๋๊ปด์ง๋ฏ๋ก ์น ๊ธฐ์ ๋ณด๋ค๋ ๋ฏธ๋ ์ผ ๊ฒ์ ๋๋ค.
๋ฐ์คํฌํฑ JS ์ฑ์์ ๊ณ ์ฑ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ ์์ ์ถฉ๋ถํ ์๊ฐ์ด์๋ ์ฌ๋์ LLVM์ ๋ํ ํ๋ฐํธ ์๋๋ฅผ ์์ฑํด์ผํฉ๋๋ค.
์์์ ์ฝ๋ ์ค ๋ํซ์ ์คํํ ์์๋ ๋ฅ๋ ฅ์ ์๊ฒ๋์ง๋ง ๋ณด์ ๊ด์ ์์ ๋ณด๋ฉด ์ด์ ์ด ๋ ๊ฒ์
๋๋ค.
/์ค
์ด ์ค์ ํ์ ์ํฌ ์ ์์ต๋๊น? ์ด๊ฒ์ ์ปค์๊ฐ ๊น๋ฐ์ด๋ ํน์ ์ฑ๋ฅ ๋ฌธ์ ์ ๋ํ ๋ฌธ์ ์ด๋ฉฐ JS ๊ธฐ๋ฐ ๋ฐ์คํฌํฑ ์ฑ ๊ฐ๋ฐ์ ์ผ๋ฐ์ ์ธ ์ฅ์ ์ ๋ ผ์ ํ ์ฅ์๊ฐ ์๋๋๋ค.
์ด๋ฌํ ํญ์ธ์ ๊ด์ฌ์ด์๋ ์ฌ๋๋ค์ ์ฐํธํจ์ ์คํธํ๋ ๊ฒ์ ๋๋ค.
2px * 10px ํฌ๊ธฐ์ <input type=text>
๋ฅผ ์ปค์๊ฐ์๋ ๊ณณ์ ๋๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ์ด๋ ๊ฒํ๋ฉด <input>
: P <blink></blink>
์ ๊ธฐ๋ณธ ๊น๋ฐ์ด๋ ์ปค์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ํ์ด ๋ฌธ์ ๊ฐ ์ผ๋ง๋ ์ฌ๊ฐํ ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. VSCode๊ฐ ์ ํด ์ํ ์ผ ๋ (์ฝ๋๋ฅผ ์์ฑํ๊ณ ์์ง ์์) ๊ฑฐ์ ํญ์ ์ด์ ์ด ๋ง์ง ์๊ณ ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์์ต๋๋ค. ์ปค์๊ฐ ๊น๋ฐ์์ ๋ฉ ์ถฅ๋ ๋ค.
๋ด ๊ฒฝํ์ gif๋ ๊ทธ๋ค์ง ์ข์ง ์์ต๋๋ค. ๋๋ ํ๋ gif ์ด๋ฏธ์ง๋ก ๋ก๋ฉ ์คํผ๋๋ฅผ ๊ฐ์ง๊ณ ์์๋ค. indexeddb์ ์ํธ ์์ฉํ๋ ๋์ ์ฌ์ฉํ์ต๋๋ค. ๋๋ก๋ ๋ฐ์คํฌํ์์๋ ์คํผ๋๊ฐ ๋ฉ์ถ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
ํฐ๋ฏธ๋ ์ปค์ ๋ณ๊ฒฝ์ ๋ง์คํฐ ๋ฐ ๋ฆด๋ฆฌ์ค /1.11๋ก ๋๋ ์ต๋๋ค (CSS ์ ๋๋ฉ์ด์
-> setInterval
).
์ด ๋ฌธ์ ๋ฅผ ์กฐ์ฌํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๊ทํ์ ์กฐ์ฌ์ ์ ์์ ๊ทผ๋ณธ ์์ธ๊ณผ ๊ฐ๋ฅํ ํด๊ฒฐ์ฑ
์ ์ฐพ๋ ๋ฐ ๋์์ด๋์์ต๋๋ค! JavaScript setInterval
, ์ ๋๋ฉ์ด์
GIF ๋ฐ ๊ธฐํ ์ฌ๋ฌ ๊ธฐ์ ์ ๋น๊ตํ๊ณ ๋ค์ ์๋ฃจ์
์ ๊ฒฐ์ ํ์ต๋๋ค.
editor.cursorBlinking
๊ฐ blink
๋๊ฑฐ๋ terminal.integrated.cursorBlinking
๊ฐ true
๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๊น๋ฐ์ด๋ ๋
ผ๋ฆฌ๊ฐ ์ด์ JavaScript์์ ๊ตฌํ๋ฉ๋๋ค. ํ
์คํธ ๊ฒฐ๊ณผ CPU ์ฌ์ฉ๋์ด 1 % ๋ฏธ๋ง์ผ๋ก ๋จ์ด์ก์ต๋๋ค.editor.cursorBlinking
์ด CSS ์ฌ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ smooth
, expand
๋๋ phase
์ค์ ๋ ๊ฒฝ์ฐ ์ปค์๊ฐ ๋ค์ ์๊ฐ ๋์ ์ ํด ์ํ๊ฐ ๋ ํ ๊น๋ฐ์ด๋ ์ ๋๋ฉ์ด์
์ ์ค์งํฉ๋๋ค. 10 ์ด.์ด ์์ ์ฌํญ์ ์ด๋ฏธ Insider ๋น๋ ์ ์์ผ๋ฉฐ ํฅํ ๋ฉฐ์น ๋ด์ ๋ฆด๋ฆฌ์ค ๋ 4 ์ Stable ๋น๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ ์ค ์ผ๋ถ๊ฐ ์ฐ๋ฆฌ์ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ๋ฌธ์ ๊ฐ์๋ ๊ฒฝ์ฐ ์ ๋ฌธ์ ๋ฅผ ์์ฑํ์ญ์์ค.
@rebornix "๋๋" terminal.integrated.cursorBlinking
๊ฐ true
์ค์ ๋์ด ์๋ค๊ณ ํ์
จ๋์? ์๋๋ฉด "and"๊ฐ ์๋์ ์ด์์ต๋๊น?
@jedmao ์์ or
ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐฐํฐ๋ฆฌ ์๋ช ์ ๋ํด ๋น์ทํ๊ฒ ์ง์ฐฉํ๋ ์ฌ๋๋ค์์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ : ์ปค์ ๊น๋ฐ์์ ๋นํ์ฑํํ๋ฉด CPU ์ฌ์ฉ๋์ด 0์ผ๋ก ๋จ์ด์ง๋๋ค. ์ค์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.