VS Codeã¯ããã©ãŒã«ã¹ãããŠã¢ã€ãã«ç¶æ ã®ãšãã«13ïŒ ã®CPUã䜿çšããããããªãŒãæ¶èããŸãã ããã¯ãã«ãŒãœã«ã®ã¬ã³ããªã³ã°ãç¹æ» ããŠããããšãåå ã§ããå¯èœæ§ããããŸãã ãã©ãŒã«ã¹ã¢ã³ãã¢ã€ãã«æã®CPU䜿çšçã¯ãçæ³çã«ã¯0ïŒ è¿ãã«ãªããšæããŸãã
åçŸããã«ã¯ïŒããã¯ç©ºã®èšå®ãã¡ã€ã«ã§æ©èœãããã¹ãŠã®ãã©ã°ã€ã³ãç¡å¹ã«ãªã£ãŠããŸãïŒïŒ
éçºããŒã«ã§ã¿ã€ã ã©ã€ã³ãèšé²ããŸãããããã£ãšèŠããšãããCPUã¢ã¯ãã£ããã£ã¯500ããªç§ããšã«ç¹æ» ããã«ãŒãœã«ã®ã¬ã³ããªã³ã°ã«ãããã®ã§ããããšãããããŸããã
ChromeãTextEditã®ãããªä»ã®macOSã¢ããªã±ãŒã·ã§ã³ã¯ãCPUãããŸãæ¶è²»ããã«ã«ãŒãœã«ãç¹æ» ããã®ã§ãããã¯ç¢ºå®ã«æé©åã§ãããšæããŸãã
åæ§ã«ããããªãŒå¯¿åœã«å€¢äžã«ãªã£ãŠãã人ã®ããã®åé¿çïŒã«ãŒãœã«ã®ç¹æ» ãç¡å¹ã«ãããšãCPU䜿çšçã0ã«äœäžããŸããèšå®ã¯æ¬¡ã®ãšããã§ãã
"editor.cursorBlinking": "solid"
Twitterã®äœäººãã®äººã ã¯ãããåçŸã§ããªããšèšã£ãã®ã§ãç§ã¯ãããã°ã«åœ¹ç«ã€ããã«éçºããŒã«ã«ã¿ã€ã ã©ã€ã³ãèšé²ããŸããã
TimelineRawData-20170321T114212.json.zip
ã¿ã€ã ã©ã€ã³ã®ã¹ã¯ãªãŒã³ã·ã§ããïŒ
åäžã®ãã¬ãŒã ã«ãºãŒã ã€ã³ãããšã2 fpsã®ã¿ãã¬ã³ããªã³ã°ããŠããã®ã«ãã¡ã€ã³ã¹ã¬ããã60 fpsïŒ16ããªç§ããšïŒã§ããã€ãã®äœæ¥ãå®è¡ããŠããããšãããããŸããç¢å°ã§ããŒã¯ããã现ãç·ã§ãã
ãããã®çŽ°ãç·ã®1ã€ã«ãºãŒã ã€ã³ãããšã60fpsã§ã¬ã³ããªã³ã°ãè¡ãããŠããããšãããããŸãã
CPUãããã¡ã€ã«ãååŸãããšãç¹å®ã®JSé¢æ°ã§ã¯ãªãããïŒããã°ã©ã ïŒãã§äœ¿çšãããŠããCPUã®ã»ãšãã©ã衚瀺ãããŸãã
"editor.cursorBlinking": "solid"
ãèšå®ãããšãåé¡ã¯ã»ãšãã©ãªããªããŸããå®æçãªãã¬ã€ã€ãŒããªãŒã®æŽæ°ã/ããã€ã³ãã/ãè€åã¬ã€ã€ãŒããåŒãç¶ãçºçããŸããã16ããªç§ããšã§ã¯ãªãã500ããªç§ããšã«ã®ã¿çºçããŸãã
ãããã圹ã«ç«ãŠã°å¹žãã§ãã
@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
Webã¹ã¿ãã¯äžã«æ§ç¯ããã匷åãª*ããã¹ããšãã£ã¿ã¯ãOSããã¹ãã«ã¬ããã«äŸåã§ãããç¬èªã«æäŸããå¿ èŠããããŸãã
ãã®å ŽåãVSCodeã¯ããããã«ãŒãœã«ãç¹æ» ãããããã®æãåççãªã¢ãããŒãã䜿çšããŠããŸãïŒCSSããŒãã¬ãŒã ã¢ãã¡ãŒã·ã§ã³ãåããstep
ã¿ã€ãã³ã°é¢æ°ã ããã«ããããã©ãŠã¶ã¯500ããªç§ããšã«ã®ã¿äžéæ床ãå€æŽããããã«ãªããŸãã äžæ¹ãChromeã¯ãŸã ãããå®å šã«æé©åããŠããªãããã httpïŒ//crbug.com/361587ã§ãã
ãã®ãããçŸåšãChromeã¯16ããªç§ããšã«å®å šãªã¬ã³ããªã³ã°ã©ã€ããµã€ã¯ã«ïŒã¹ã¿ã€ã«ããã€ã³ããã¬ã€ã€ãŒïŒãå®è¡ããŠããŸããã500ããªç§ééã§ã®ã¿ãã®äœæ¥ãå®è¡ããå¿ èŠããããŸãã Chromeã®ã¹ã¿ã€ã«ã³ã³ããŒãã³ãã«åãçµãã§ãããšã³ãžãã¢ã¯ããã解決ã§ãããšç¢ºä¿¡ããŠããŸãããå°ãæéãããããŸãã ãã®ãããã¯ã«é¢ããå¯èŠæ§ã®è¿œå ã«ãããä¿®æ£ã®åªå é äœãäžããå¯èœæ§ãé«ããšæããŸãã :)
- åçŽãªããã¹ããšãã£ã¿ãããã³[contenteditable]ã«åºã¥ããŠæ§ç¯ãããåºæ¬çãªãšãã£ã¿ã¯å¯èœã§ãããããããæãå¿ èŠãªæ©èœã»ããã«æ¡åŒµãããããšã¯ãã£ãã«ãããŸããã
ã¯ãã ã¿ãã®ããã¯ã°ã©ãŠã³ãCPU䜿çšçã«é¢ãããã®å€æŽã¯ããšãã£ã¿ãŒã«åœ±é¿ããŸããïŒ
ããŸããããªãïŒhttps://github.com/electron/electron/issues/7553ãåç
§ïŒã åœç€Ÿã¯ãªãèšå®backgroundThrottling
ã«false
ãã°ãããã§ã«ä»¥æ¥ã
çŽ æŽãããåæãããŠããã@ joliss @ rebornixã«æè¬ããŸãã
OSXã§setInterval
䜿çšã«æ»ãå¿
èŠãããããã§ãã
psãããæåã®ã«ãŒãœã«ç¹æ»
ããžãã¯ã§ã:)
@rebornixããã¯ç§ãã¡ããã°ããåã«ééããåæ§ã®åé¡ã ãã®å Žåã®åé¿çã¯ãã¢ãã¡ãŒã·ã§ã³èŠçŽ ãåã«éå¡ããã®ã§ã¯ãªãã䜿çšãããŠããªããšãã«DOMããåé€ããããšã§ããã
çŸåšã®å®è£
ãžã®ãªã³ã¯-
https://github.com/Microsoft/vscode/blob/master/src/vs/editor/browser/viewParts/viewCursors/viewCursors.ts
åãããã®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ã䜿çšããŠã¿ãŸãããïŒ
ããŒãžãé衚瀺ã«ãªã£ãããšãéç¥ãã
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ãé åçã§ãããå¯äžã®
@mehas will-change
ã¯ææã§ãã è©ŠããŠã¿ãŸãããããã®å ŽåãChromiumã¯æé©åãããŸããã éçºããŒã«ã§[ç¹æ»
ã®ãã€ã³ã]ãªãã·ã§ã³ããªã³ã«ãããšããã®ç¹æ»
ããŠããã«ãŒãœã«ããŸã£ããåãã€ã³ããããŠããªãããšãããããŸãã
@ jlukic @ bchernyãææ¡ããããšãããããŸãã æé©åãããã®ã¯ãã«ãŒãœã«ã衚瀺ãããã¢ã¯ãã£ãã§ç¹æ» ããŠãããšãã§ãããã®ãããå¯èŠæ§ãã§ãã¯ãè¡ã£ãŠãããã®åé¡ã¯åŒãç¶ãçºçããŸãã ããããããªãã¯æ£ããã§ããç§ãã¡ã¯å¯èŠæ§ããã§ãã¯ããå¿ èŠããããŸãã çŸåšããŠã£ã³ããŠãã¹ã¯ããŒã«ããŠç¹æ» ããŠããã«ãŒãœã«ãé衚瀺ã«ããå Žåãæé©åã¯è¡ãããŸããã
å ¬å¹³ãæãããã«ãã¢ãã³ã¯æ¬åœã«ãæ¬åœã«ãæ¬åœã«è€éã§ãã :)
@rebornix will-å€æŽã¯ç§ã®ãããžã§ã¯ãã§æ©èœããCPU䜿çšçã¯å®å šã«ãªããªããŸããã ãã ããç§ã®ããŒãã¬ãŒã ã¯äžéæ床ãå€æŽããŸããã代ããã«ãèŠçŽ ã®è²ããç¶æ¿ããããéæãã«å€æŽããŸãã
ç§ã¯ãã ã®æœäŒè ã§ãããããã眵åãšèŠãªãããå Žåã¯ç³ãèš³ãããŸãããã2ãã¬ãŒã ã®ã¢ãã¡ãŒã·ã§ã³GIFã§ããŸããããŸãããïŒ ãããæçµçã«ãã¹ãããæ¹æ³ã¯å®å šã«ã¯ããããŸããããChromeã«å€æããããã£ãšåã«ãKHTMLã§ãããã§ã«ãã®ããã®æé©åããããã¹ãæã£ãŠãããšæ³åã§ããŸããã
@eteeselinkã¯èå³æ·±ããã®ã§ãããã«ãŒãœã«ã®è²ãå€æŽããããºãŒã ãããããå¿ èŠããããªã©ãç°¡åã§ã¯ãªããããããŸããããããŸã§ã®éãjsã«æ»ãæ¹ãç°¡åãããããŸããã
@matthiasg AhyesããºãŒã ãå¿ããŸããã
ãã以å€ã®å Žåã¯ãããŒãã®è²ã«åºã¥ããŠç¹æ» ããGIFãèªåçæããã®ã¯ããã»ã©é£ãããããŸããã GIFãã¯ã»ã«ããŒã¿ã¯LZWã§ãšã³ã³ãŒããããŠããŸããããã¬ããããŒã¿ã¯å§çž®ãããŠããªããããããªãã€ã¯ããããã¡ã€ã«ã®æ°ãã€ãã«ããããé©çšããå¿ èŠããããŸãã ãããããã®ãããªgifããºãŒã ãããšãŒãããŠããŸãã®ã§ãããã§ãããã¯æªãã¢ãããŒããããããŸããã
誰ããgifãã£ã¬ããã®ãºãŒã ãéªéããªãããã«ããæ¹æ³ãæãä»ãããšãã§ããã°ãè²ãåããç¹æ» ãããã£ã¬ããã®ã¢ãã¡ãŒã·ã§ã³gifããŒã¿URLãçæããã³ãŒããæäŸããããšãçŽæããŸãã
@eteeselinkãšã«ãããããã©JSã§ã¯ãããããPHPãšä»ã®ããã€ãã®ãã¬ãŒããŒã絶察ã«èŠç¹ã
@eteeselinkãªãã¶ãŠã©ãŒã«ã®ãœãªã¥ãŒã·ã§ã³ãææ¡ããå Žåã¯ã代ããã«ã«ã©ããã<blink></blink>
ã§ã©ããããŠã¿ãŸãããïŒ ïŒãŠã£ã³ã¯ïŒ
人ã ãçã®æ¹åãè©Šã¿ãŠããåé¡ãPRã«ã€ããŠãç¡é§ãªã³ã¡ã³ããããããšã§Redditæ å£ã«åå ããããšã¯æ§ããŠãã ããã
ãšãã£ã¿ãŒã«ãã©ãŒã«ã¹ãããå Žåã¯ããšãã£ã¿ãŒã衚瀺ãããŠããããšãæå³ããŸã
ããã¯èª€ã£ãä»®å®ã§ãã ãã©ãŒã«ã¹ãäžããã«ãŠã£ã³ããŠãå¥ã®ãŠã£ã³ããŠã®äžã«äžããã®ã¯ç°¡åã§ãã ç§ãç¥ã£ãŠãã2ã€ã®æ¹æ³ïŒ
ã©ã¡ããããèªäœã§éåžžã«äžè¬çã§ãããå¿ ãããåé¡ãåŒãèµ·ãããšã¯éããŸããã
@ o11cããããšããæžããšãã®ç§ã®ä»®å®ã¯ããŸãã«ãã¯ã€ã«ãã§ããã ã¯ãããã©ãŒã«ã¹ã¯å¿ ããã衚瀺ãããå¿ èŠã¯ãããŸããããŠã£ã³ããŠã®ã¹ã¯ããŒã«ã¯1ã€ã®ã±ãŒã¹ã§ãïŒåã段èœã§ããã«ã€ããŠèª¬æããŸãã:(ïŒããã©ãŒã«ã¹+衚瀺ãæãäžè¬çãªã±ãŒã¹ãã©ããã¯ããããŸãããããã¹ãŠè»œæžããå¿ èŠããããŸãã
setTimeoutãŸãã¯setIntervalã¯ãrequestIdleCallbackããããã®ãŠãŒã¹ã±ãŒã¹ã«ããããé©ããŠãããšæããŸãã requestIdleCallbackã®ã¿ã€ãã³ã°ã¯äºæž¬ã§ãããJSã§è¡ã£ãŠããäœæ¥ã¯å®äŸ¡ã§ããé »åºŠã®äœãã¿ã€ããŒãã¹ã±ãžã¥ãŒã«ããã ãã§ãããšæããŸãã
äŸ https://gist.github.com/esprehn/afec30fbc655bba6bb8f3f67c28beef4
ãŸãããã®ãã£ã¬ããã¢ãã¡ãŒã·ã§ã³ã¯ã¹ã ãŒãºãªãã«ã¹å¹æãå®è¡ããŠããŸããããã©ãŠã¶ã®ã·ã¹ãã ã«ãŒãœã«ïŒäŸïŒ <input>
ãŸãã¯<textarea>
å
ã®ã«ãŒãœã«ïŒã¯ãã€ããªã®ãªã³/ãªãã®ã¿ãå®è¡ããŠããããšã«ã泚æããŠãã ããã ã MacãšLinuxã®ãã€ãã£ãã³ã³ãããŒã«ãåæ§ã«ã代ããã«ç¹æ»
ããŸãã ããŸããããã§ã¯ãããŸãããã䜿çšããé»åã¯ããªãå°ãªããªããŸãã
@esprehnã«æè¬ãease-in-out
ã䜿çšããæ»ãããª/æ¡å€§ããç¹æ»
ã«ãŒãœã«ãèšãããšãããããŸããã
@eteeselinkãåŸ ã£ãŠ
äŸïŒ https ïŒ
ãã®ã¢ãã¡ãŒã·ã§ã³ã®ãŸã°ãããã£ã¬ãããžã§ãã¬ãŒã¿ãããã«èŠãããšæã£ãŠããŸã;ïŒ
@mrkev your 1px gif as data uriïŒ dataïŒimage / gif; base64 ãR0lGODlhAQABAPAAAAAAAP /// yH / C05FVFNDQVBFMi4wAwEAAAAh + QQFMgABACwAAAAAAAAQABAAACAkwBACH5BAUyAAOALAAAAABABAC
@rmacfadyençãïŒ gifã¯çè«çã«ã¯ã«ã©ãŒããŒãã«ã䜿çšãããããããªã³ããã¬ãŒã ã®ãã®ãã¯ã»ã«ãé»ã«çè²ãã3ãã€ãã¯ãèŠã€ããã®ãé£ãããªãã¯ãã§ãïŒãã¬ãŒã ã«æ ŒçŽãããŠããªããããããããŒãæ·±ãééããå¿ èŠã¯ãããŸããã ïŒã ææ¥æãããã°ããã£ãšæ·±ãæãäžããããšãã§ããŸã
ãšã«ããç¡ç ãå¿ èŠãªãŠã§ã«ãã¯ããããããå°ã詳ãã調ã¹ãããšã«ããŸããã gifã¯åžžã«14ãã€ãç®ããå§ãŸãã°ããŒãã«ã«ã©ãŒããŒãã«ã䜿çšãããããè²ãå€æŽããæ¹æ³ãç解ããã®ã¯é£ãããããŸããã§ããã ããã«ããããã®ç¹æ» ãããã¯ã»ã«gifãèµ€ã«ãªããŸããã
ããŠãæ¬åœã«åä»ãªã®ã¯ã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æ倧å€ã¯çŽ50fpsã§ããå¿ èŠããããŸãã httpïŒ //nullsleep.tumblr.com/post/16524517190/animated-gif-minimum-frame-delay-browser
ç§ã«ãšã£ãŠã¯ãã»ãšãã©ã®å Žå0ã®ãŸãŸã§ãïŒCPU䜿çšçã¯æåã®åã§ã-OSX 10.12.3-MacBook Pro Retinaã15ã€ã³ãã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代ããã«ãå®å šã«ãã€ãã£ãã§éWebã¹ã¿ãã¯ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ãææ¡ããŠããå ŽåïŒVSCodeã®ãããªãããŒãã倧ãããå®å šã«DPIã«äŸåããªããã¯ãã¹ãã©ãããã©ãŒã ã¢ããªã±ãŒã·ã§ã³ã®å¯èœæ§ã®ããããŒãºã暪æããå Žåãéãã€ãã£ãã®ã«ãŒãœã«ä»£æ¿ãé¢ä¿ãªãå¿ èŠã§ãã
誰ãæšæž¬ããã§ããããïŒ
@LandonPowellããªãã¯åé¡ã«ã€ããŠã®å®éã®è°è«ãæ±æããŠããŸãã ããã§ã®reddit / hackernewsã®ããªã²ãŒãã¯ã°ãããŠããŸãã
ã¿ãŒããã«ã«ãŒãœã«ã¯ã©ãã§ããïŒ ããã¯CPUãµã€ã¯ã«ã«ãã¹ãã€ã¯ãåŒãèµ·ãããŠããŸããïŒ
@mehas
CPUã®ä»£ããã«GPUã䜿çšããŠCSSã¢ãã¡ãŒã·ã§ã³ãã¬ã³ããªã³ã°ããããã®ããã§ã®ææ¡ïŒ
ããã¯ãCPUããGPUã«è² è·ã移åããããšã§åé¡ãé ãã ãã§ãã å®éã«ã¯ä¿®æ£ãããŸããã
@ Daniel15
ããã¯ãCPUããGPUã«è² è·ã移åããããšã§åé¡ãé ãã ãã§ãã å®éã«ã¯ä¿®æ£ãããŸããã
CPUã®è² è·ããã®åé¡ãä¿®æ£ãããGPUã䜿çšããããã«ã¢ãã¡ãŒã·ã§ã³ãæé©åããåé¡ãšãªã£ãŠããŸãã
ïŒããã¯ãç§ãææ¡ããç¹å®ã®ä¿®æ£ã®è³ªåãšã¯å¥ã®ãã®ã§ãïŒ
ãããåçŸããæ¹æ³ãããããããŸããã ç§ã¯vimãšãã¥ã¬ãŒã·ã§ã³ãã©ã°ã€ã³ã䜿çšããŠããŸãã ãããé¢é£ããŠãããã©ããã¯æ¬åœã«ããããŸããã
ãããã©ããªããç¥ãããã®ã§ããã
GPUã䜿çšããããã«ã¢ãã¡ãŒã·ã§ã³ãæé©åãããšããã®åé¡ã¯ä¿®æ£ãããŸãã
ãã ããäžèŠãªGPUè² è·ãçºçããŸãã ããã¯ãã°ã©ãã£ãã¯ã«ãŒãã®ããã»ããµã«è² è·ããããããšãé€ããŠãåæ§ã®åé¡ã§ãã ããã¯å®éã«ã¯ä¿®æ£ã§ã¯ãããŸããð
ã€ãšã¹ã¯ã¢ããªã«ã§çãŸããŸããã
ã©ãããããŸããŠã
ã«ãŒãœã«ã«gifã䜿ã£ãŠã¿ãŸãããïŒ
ãã ããäžèŠãªGPUè² è·ãçºçããŸãã ããã¯åæ§ã®åé¡ã§ã
ããã§ãããã¢ã€ãã«ç¶æ ã§ãCPU䜿çšçã§ãããã®åé¡ã§ã¯ãããŸããã
@ efroim102 https://github.com/Microsoft/vscode/issues/22900#issuecomment -288832322
芪æãªãç¥ãããã®è°è«ã¯ãç®æšãäœã§ãããã決å®ããããŸã§ã茪ã«ãªã£ãŠé²ã¿ãŸãã
ä»ã®ãšããïŒ1ïŒãä»®å®ããŸãã 次ã«ããã®ãããªã¯ãŒã¯ããŒãã§CPUããGPUãžã®ãªãããŒãããïŒaïŒåãéã®ãšãã«ã®ãŒã䜿çšããããïŒbïŒããå°ãªããšãã«ã®ãŒã䜿çšããããïŒcïŒããå€ãã®ãšãã«ã®ãŒã䜿çšãããã«ã€ããŠãããå°ãããŒã¿é§ååã«ããããšãã§ããŸãã ç§ã¯ãããã®åé¡ã«é¢ããå°éç¥èããªãã®ã§ãã©ã¡ããæ£ããããäºæž¬ããããšã¯ã§ããŸããã
ãã ããGPUãªãããŒããïŒbïŒã«ã€ãªãããšä»®å®ããŸãããã å®å šã§ã¯ãããŸããããChromiumãæ ¹æ¬çãªåé¡ã«å¯ŸåŠããŠããéããŸãã¯ãã®å Žåããã¬ãŒããªãã¯ãã®ãã¹ãè¿œæ±ããã®ã«åå蚱容ã§ããå¯èœæ§ããããŸãã ãã ããVSCodeããŒã ããããå®å šã«ä¿®æ£ããå¿ èŠããããšå€æããå ŽåããªãããŒããéžæããããšã¯ã»ãšãã©ãããŸãããé·æçãªä¿®æ£ãè¿œæ±ããããšããå§ãããŸãïŒããªãæéããããå Žåã§ãïŒã å°ãªããšãç§ã®åãã«è¶³ããªãæèŠã§ã¯ããã®åé¡ã«æ³šæãåããããŠãããäŸåé¢ä¿ã«ãã£ãŠæå³ããä¿®æ£ãæå¹ã«ãªã£ããšãã«åªå ãããããšãç¥ã£ãŠããã°ååã§ãã
ïŒã©ã®ãœãªã¥ãŒã·ã§ã³ãå©çšå¯èœ/ãããã¯ãããŠãããã«ã€ããŠã®åŸ®åŠãªè©³çŽ°ã®ããã€ããæ··ä¹±ããããšç¢ºä¿¡ããŠããŸããããããæžãããšã§ã人ã ããœãªã¥ãŒã·ã§ã³ç©ºéã«é£ã³èŸŒãã®ã§ã¯ãªãã解決ãããåé¡ã䞻匵ããããšã«éäžã§ããããšãæãã§ããŸããïŒ
ã©ã¡ãã®æ¹æ³ã§ããGPUã¯ã¬ã³ããªã³ã°ã®è² è·ã«å¯ŸåŠããããã®èšåãæŽã£ãŠããŸãããïŒ ããã¯ãŸãã«ãããäœããããã®ã§ãã
åæããŸãããCPUãšGPUã®äœ¿çšæ¹æ³ãåªå ããã°ã©ãã£ãã¯ã¹é¢é£ã®æ©èœã§ã°ã©ãã£ãã¯ã¹åºæã®ãªãœãŒã¹ã䜿ãæããæ¹ãçã«ããªã£ãŠããŸãã CPUã®å¢å ã¯GPUã®1ïŒ1ã®æ倱ã§ã¯ãªãããã®éãåæ§ã§ãã ãã®æç¹ã§ã¯ïŒChromiumã®ãã°ã«ããããé©çšããããŸã§ïŒã»ãšãã©æå³ããããŸããããçŸåšã®ãœãªã¥ãŒã·ã§ã³ã§ã¯CPUã䜿çšããŠããããïŒééã¯ã¯ããã«å°ãªãã§ããïŒãããçšåºŠé¢é£æ§ããããŸãã
ããã°ã©ã ããšã«æ¬æ Œçãªãã©ãŠã¶ãåºè·ããå¿
èŠãããããããã¹ã¯ãããã§ã®Webãã¯ãããžã®äœ¿çšããããã¹ãã ãšæããŸãã
èšããŸã§ããªããäžèšã®ããã°ã©ã ãããã€ãããå Žåã¯ãåããã€ããªãããããšããã«è€è£œãããŠããŸãã
PSïŒAppleã埩掻ããŠããªããã°ãJScriptã¯Obj-Cãšåãããã«ã10幎åã«å»æ¢ãããã¹ãã§ããã
PPSïŒ^^^^ããã¯æŽèšã§ãã
PPSïŒ^^^^ããã¯æŽèšã§ãã
@ bit2shift確ãã«ããã§ãããããŠãã
@ bit2shift-ç§ã¯ããã€ãã®éšåã«åæããŸããïŒãã©ãŠã¶ããŒã¹ã®ã¢ããªã¯ããããçã®ãã€ãã£ãã¢ããªãšæ¯èŒããŠããªãããã€ãã£ããã«æããããªããšããäºå®ãªã©ïŒãããã¢ã¡ã¿ã«ãã¯ã©ã®ãããäœã¬ãã«ã§ããïŒ ãã·ã³ã³ãŒãïŒ ã¢ã»ã³ããªèšèªïŒ CïŒ C ++ïŒ CïŒïŒ ãã¯ãããžãŒã¹ã¿ãã¯ã«é¢ä¿ãªããåžžã«ããã€ãã®æœè±¡åã¬ã€ã€ãŒããããŸãã
èšããŸã§ããªããäžèšã®ããã°ã©ã ãããã€ãããå Žåã¯ãåããã€ããªãããããšããã«è€è£œãããŠããŸãã
ãã ããNuGetããã±ãŒãžã䜿çšããCïŒã¢ããªã§ãåãã§ãã ãã¹ãŠã®ã¢ã»ã³ãã«ã¯ã¢ããªã«å¯ŸããŠããŒã«ã«ã§ãã .NET Coreã¯ããã¬ãŒã ã¯ãŒã¯ã®å€§éšåãNuGetããã±ãŒãžãšããŠé åžããŸãã
åããã°ã©ã ã«æ¬æ Œçãªãã©ãŠã¶ãå梱ããå¿ èŠãããããã§ãã
æè¡çã«ã¯ãEdgeãšã³ãžã³ã䜿çšã§ããŸããããã«ãããå¥ã®ãã©ãŠã¶ãŒã©ã³ã¿ã€ã ãã€ã³ã¹ããŒã«ããå¿ èŠããªããªããŸãã Internet Explorerã¯ãã»ãŒ20幎åã«HTMLã¢ããªã±ãŒã·ã§ã³ã§åæ§ã®ããšãè¡ããŸããã ãã1ã€ã®äŸã¯ReactNativeã§ãå©çšå¯èœãªå Žåã¯OSã®ãã€ãã£ãJSãšã³ãžã³ã䜿çšããŸãã JavaScriptããŒã¹ã®ã¢ããªã®å ŽåãReact Native for Windowsã®ãããªãã®ã¯ããã€ãã£ãUIãŠã£ãžã§ããã䜿çšããããããããã€ãã£ãã«æãããããããWebãã¯ãããžãŒã§ã¯ãªãããããæªæ¥ã§ãã
@ Daniel15
ïŒ...ïŒããã¢ã¡ã¿ã«ãã¯ã©ããããäœã¬ãã«ã§ããïŒ ãã·ã³ã³ãŒãïŒ ã¢ã»ã³ããªèšèªïŒ CïŒ C ++ïŒ CïŒïŒ
æ©æ¢°èªã«ã³ã³ãã€ã«å¯èœãªèšèªïŒ source -> ELF/PE
ã«ãŠã³ããããïŒã¯ããã®ã³ã³ããã¹ãã§ã¯ããã¢ã¡ã¿ã«ããšèŠãªããããããããã§ã¯æœè±¡åã¬ã€ã€ãŒã¯éèŠã§ã¯ãããŸããã
Internet Explorerã¯ãã»ãŒ20幎åã«HTMLã¢ããªã±ãŒã·ã§ã³ã§åæ§ã®ããšãè¡ããŸããã
mshta.exe
90幎代ããsystem32ã«ååšããmshtml.dll
ã䜿çšãããã®ãšã䌌ããããªãã®ãã
ãã1ã€ã®äŸã¯ReactNativeã§ãå©çšå¯èœãªå Žåã¯OSã®ãã€ãã£ãJSãšã³ãžã³ã䜿çšããŸãã JavaScriptããŒã¹ã®ã¢ããªã®å ŽåãReact Native for Windowsã®ãããªãã®ã¯ããã€ãã£ãUIãŠã£ãžã§ããã䜿çšããããããããã€ãã£ãã«æãããããããWebãã¯ãããžãŒã§ã¯ãªãããããæªæ¥ã§ãã
ãã¹ã¯ãããJSã¢ããªã§é«ãããã©ãŒãã³ã¹ãå¿
èŠãªå Žåã¯ãååãªæéãæã£ãŠãã人ãLLVMã®ããã³ããšã³ããäœæããå¿
èŠããããŸãã
ã³ãŒãã®ä»»æã®ã¹ãããããå®è¡ããæ©èœã倱ãããŸãããããã¯ã»ãã¥ãªãã£ã®èŠ³ç¹ããã¯å©ç¹ã«ãªããŸãã
/糞
ãã®ç³žãè±ç·ãããŠãããŸãããïŒ ããã¯ãã«ãŒãœã«ãç¹æ» ããç¹å®ã®ããã©ãŒãã³ã¹ã®åé¡ã«é¢ããåé¡ã§ãããJSããŒã¹ã®ãã¹ã¯ãããã¢ããªãéçºããããšã®äžè¬çãªã¡ãªããã«ã€ããŠè°è«ããå Žæã§ã¯ãããŸããã
ããªãã¯ãããã®æŽèšã«èå³ã®ãªã人ã ã®ã¡ãŒã«ããã¯ã¹ãã¹ãã ããŠããã ãã§ãã
<input type=text>
ã2px * 10pxã®ãµã€ãºã§ãã«ãŒãœã«ã眮ããå Žæã«é
眮ããŠã¯ã©ãã§ããããã ããããã°ã <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
ãsmooth
ã expand
ãŸãã¯phase
ã«èšå®ãããŠããå Žåããããã¯CSSã€ãŒãžã³ã°æ©èœã䜿çšããã«ãŒãœã«ãã¢ã€ãã«ç¶æ
ã«ãªã£ãåŸãç¹æ»
ããã¢ãã¡ãŒã·ã§ã³ãåæ¢ããŸãã 10ç§ããã®ä¿®æ£ã¯ãã§ã«Insiderãã«ãã«å«ãŸããŠãããæ°æ¥äžã«ãªãªãŒã¹ãããAprilStableãã«ãã§å©çšã§ããããã«ãªããŸãã ç§ãã¡ã®ãã¹ãçµæã確èªããŠããã ããã°å¹žãã§ãã åé¡ãçºçããå Žåã¯ãæ°ããåé¡ãäœæããŠãã ããã
@rebornix ããŸãã¯ã terminal.integrated.cursorBlinking
ãtrue
èšå®ãããŠãããšããæå³ã§ããïŒ ãããšããandãã¯æå³çãªãã®ã§ãããïŒ
@jedmaoèšæ£ããŠãããŠããããšãã or
ã¯ãã§ãã
æãåèã«ãªãã³ã¡ã³ã
åæ§ã«ããããªãŒå¯¿åœã«å€¢äžã«ãªã£ãŠãã人ã®ããã®åé¿çïŒã«ãŒãœã«ã®ç¹æ» ãç¡å¹ã«ãããšãCPU䜿çšçã0ã«äœäžããŸããèšå®ã¯æ¬¡ã®ãšããã§ãã