Evidence is a lightweight framework for building data apps. It's open source and free to get started.
æ ªå¼ä¼ç¤¾ã¹ã¿ãã£ã¹ãæ§ã®ä¾é ¼ã§ãããã³ãã¨ã³ãåå µã¨ãã¦ãRails å ã®å·¨å¤§SPA ã®æ®µéçãªã¢ããã¤ãºã®ææ¡ãè¡ã£ãäºä¾ç´¹ä»ã§ãã ãã¤ãã¯ããã©ã¼ãã³ã¹è¦ç¹ã§ä»äºã«ãããã®ã§ãããä»åã¯ãã¯ããªè¨è¨è¦ç¹ã§ã½ã¼ã¹ã³ã¼ããèªãã§ããã¾ããä¸æ¦ã¯ä¸æã´ã¼ã«ãææ¡ãã¤ã¤ããã®ä½æ¥ã®å¿ è¦æ§ãéãã¦ããªããã®å¤æ´ãå¿ è¦ãªã®ãã¨ãã解説ããã¦ããã¾ããã ã³ã¹ããè¯ãé¨åããããããã§ãããã§ãã³ã¹ãæè¦ã¯äººããããã§ããããã¾ã§ããã³ãã¨ã³ãå°é家ã®èªåãåªå 度ä»ãããªããã¨ãã観ç¹ã§ãã£ã¦ããã¾ãã ä»åã®ä»äºã«ããã£ã¦ããã¤ãã®æè¡çãªèª²é¡ãåãä¸ãã¾ãããããã¯ã¹ã¿ãã£ã¹ãæ§ã«åé¡ãããã¨ãã話ã§ã¯ããã¾ããããããåé¡ãä¿®æ£ãããã¨ããææãå¼·ããå®é1ã¶æã®æéä¸ã«ããã¤ãã®ä¿®æ£ããã¼ã¸ãããã¨ãã§ãã¦ãã¾ãã 以ä¸ãæ¬ç§°ç¥ã注æç¹ã¨ãã¦ãä»åã®å 容ã¯ä¸ã®äººéãè¦è¿ãããã®è¨è¿°ãå¤ãã®
æè¿å人éçºã§Next.jsã®ç°å¢ãç«ã¡ä¸ããéã«ãã¹ã¿ã¤ãªã³ã°ãã©ããã£ã¦ãããããªã¨è¿·ã£ãã®ã§åå¿ã«å¸°ã£ã¦æè¿ã®ã¹ã¿ã¤ãªã³ã°ã«ã¤ãã¦èª¿ã¹ç´ãã¦ã¿ã¾ãããçµæ§é¢ç½ãã£ãã®ã§ãè¨äºã«ã¾ã¨ãããã¨ã«ããã®ã§ãããã£ããèªãã§ã¿ã¦ãã ããã æ¬è¨äºã§ã¯ä»¥ä¸ã«è§¦ãã¾ãã Reactçéã«ãããã¹ã¿ã¤ãªã³ã°æ¹æ³ã®æ´å²çå¤é· ãªãã¿ã¤ãã«éããã¥ã¢ãªCSSããµãã¼ãããæ©æ§ãè¯ãã¨æããã ããããã®ã¹ã¿ã¤ãªã³ã°æ©æ§ ãã£ã¨æ¯ãè¿ãReactã®ã¹ã¿ã¤ãªã³ã°æ¹æ³ã®æ´å²çå¤é· ç§ãæçµçã«ãã¥ã¢CSSãæ¨ãããã¨æã£ãçç±ãã話ããåã«ãçéã§å¤ããç¶ããReactã¨ã¨ãã«ãã¹ã¿ã¤ãªã³ã°ã¯ã©ãå¤é·ãã¦ãã£ãã®ãããã£ã¨ã¾ã¨ãããã¨æãã¾ãã ï¼ããããã®ã£ã¦ãæ´å²ã¨çµã¿åããã¦ç解ããã¨ãçµæ§æ·±ã¾ãã¾ãããã¨æã£ã¦ããã®ã¯ç§ã ãã§ããããâ¦ããããããªãã¨ã¯ãªãã¯ãðï¼ å¤§æ: CSS Modules
ã¯ããã« ãã®è¨äºã®å 容ã¯ã以ä¸ã®åç»ã§ã解説ãã¦ãã¾ããã¢ãã¡ã¼ã·ã§ã³ã§ãããããããªã£ã¦ããã®ã§ããã²è¦ã¦ã¿ã¦ãã ãããä»ã«ã Web ã«é¢ãã解説åç»ãæ稿ãã¦ããã®ã§ãæ°ã«ãªã人ã¯ãã£ã³ãã«ç»é²ãããããé¡ããã¾ãï¼ Cloudflare Workers ã¨ã¯ï¼ Cloudflare Workers ã¨ã¯ãä¸è¨ã§è¨ãã¨ãCloudflare ã®ã¨ãã¸ã§åããµã¼ãã¼ã¬ã¹ã® JavaScript å®è¡ç°å¢ã®ãã¨ã§ãã ...ã¨è¨ã£ã¦ããããã ãã ã¨ããããããªãã§ããããã ãããä»åã¯åãã¦è§¦ã人ã§ããããããã«ãé åºã ã¦ã¦ãããããã解説ãã¦ããã¾ãã Cloudflare Workers ç解ããããã®éã®ã Cloudflare Workers ãç解ããããã«ã¯ä»¥ä¸ã®3ã¤ã®ãã¼ã¯ã¼ããç解ãããã¨ãéè¦ã§ãã CDN ã¨ãã¸ã³ã³ãã¥ã¼ãã£ã³ã° JavaScript å®è¡ç°å¢ ã
ãã®ã¢ã³ã«ã¼ã¿ã°ã¯ãã©ã¦ã¶ã¼ã«æ¬¡ã®ããã«æ示ãã¾ãï¼ ã¦ã¼ã¶ã¼ããã®ãªã³ã¯ãã¯ãªãã¯ãããã'/blog'ã«HTTP GETãªã¯ã¨ã¹ããçºè¡ããã¬ã¹ãã³ã¹ã®å 容ããã©ã¦ã¶ã¼ã®ã¦ã£ã³ãã¦ã«èªã¿è¾¼ã¿ã¾ãã ãããè¸ã¾ãã¦ã次ã®ãããªHTMLã®ä¾ãèãã¦ã¿ã¾ãããï¼ ããã¯htmxã«æ¬¡ã®ããã«æ示ãã¾ãï¼ ã¦ã¼ã¶ã¼ããã®ãã¿ã³ãã¯ãªãã¯ãããã'/clicked' ã«HTTP POSTãªã¯ã¨ã¹ããçºè¡ããã¬ã¹ãã³ã¹ã®å 容ã使ã£ã¦DOMå ã®id parent-div ã®è¦ç´ ãç½®ãæããã htmxã¯ããã¤ãã¼ããã¹ãã¨ãã¦ã®HTMLã®æ ¸ã¨ãªãèãæ¹ãæ¡å¼µã»ä¸è¬åããè¨èªå ã§ç´æ¥å¤ãã®å¯è½æ§ãéãã¾ãï¼ ã¢ã³ã«ã¼ããã©ã¼ã ã ãã§ãªããã©ããªè¦ç´ ã§ãHTTPãªã¯ã¨ã¹ããçºè¡ã§ããããã«ãªãã¾ã ã¯ãªãã¯ããã©ã¼ã éä¿¡ã ãã§ãªããã©ã®ãããªã¤ãã³ãã§ããªã¯ã¨ã¹ããããªã¬ã¼ã§ããããã«ãªãã¾ã GET ã
ã¯ããã« ããã«ã¡ã¯ããæ³ã§ã ã¨ç³ãã¾ã! NRI OpenStandia Advent Calendar 2023ã®16æ¥ç®ã¯ ä»ã¢ãã¬ããããªãã©ã®ãã¼ã«ä½¿ãã®ãããã®ã?? ã¨ããã¿ã¤ãã«ã§ãéããããã¾ã! æè¿ã¢ãã¬ãã§éçºãããã¨ããããã¢ãã¬ã管çãè¡ãããã®ãã¼ã«ã£ã¦ã¡ããã¡ããèããã©ä½ãå¢ããããã ãã?ã¨æ°ã«ãªã£ãã®ã§èª¿ã¹ã¦ã¿ã¾ããã çæ§ã®ããããã®ãã¼ã«ãè¨å®ãªã©ããããã¾ããããã²ã³ã¡ã³ãã§æãã¦ããã ããã¨å¤§å¤åã³ã¾ãðââï¸ TL;DR ããã³ãã¨ã³ã(JavaScript/TypeScript)éçºããã¸ã§ã¯ãåãã¢ãã¬ã管çãã¼ã«ã¯ã npm Workspacesã»Lernaã»Nxã»Turborepo ãå¢ãããã åãã¼ã«ã®é¸å®åºæºã¯å人çã«ä»¥ä¸ãæ¨å¥¨ ã©ã¤ãã«ææ©ãã¢ãã¬ã管çãããï¼ npm Workspaces è¤æ°ã®npmããã±ã¼ã¸ã®éçºã»
1. å§ãã« ããã«ã¡ã¯ãmorioka12 ã§ãã æ¬ç¨¿ã§ã¯ããã°ãã¦ã³ãã£ãªã©ã®èå¼±æ§èª¿æ»ã§è¡ããJavaScript ã®éç解æã¨åç解æã«ã¤ãã¦ã¾ã¨ãã¦ç´¹ä»ãã¾ãã 1. å§ãã« å 責äºé æ³å®èªè æ¤è¨¼ç°å¢ éç解æã¨åç解æ 2. éç解æ (Static Analysis) 2.1 JavaScript File ã® URL ãåéãã getJS hakrawler getallurls (gau) 2.2 ã¨ã³ããã¤ã³ããåæãã LinkFinder xnLinkFinder katana jsluice endext 2.3 ã·ã¼ã¯ã¬ããæ å ±ãæ¤åºãã SecretFinder jsluice Mantra trufflehog 2.4 æ½å¨çãªèå¼±æ§æ å ±ãæ¤åºãã Retire.js ESLint 3. åç解æ (Dynamic Analysis) DevTool
ã¯ããã« ããã«ã¡ã¯ãMagic Momentã§ã¨ã³ã¸ãã¢ããã¦ããä¼è¤ã§ãã ãã¤ãã¯Magic Momentã®ãããã¯ãã§ããMagic Moment Playbookã®éçºã«æºãã£ã¦ãã¾ãã å ã ã¯Goè¨èªã¨ã³ã¸ãã¢ã¨ãã¦Magic Moment Playbookã®ããã¯ã¨ã³ãéçºã«åå ãå§ãã¾ããã ã§ãããä»åããã³ãã¨ã³ãã¨ã³ã¸ãã¢ã¨ãã¦ããã³ãå´ã®éçºã«åå ãããã¨ã¨ãªãã¾ããã Goè¨èªã使ã£ã¦ããã¨ã³ã¸ãã¢ãReactã使ãå§ãã¦é©ãããã¨ãç解ãã¥ããã£ãé¨åãªã©ãæ¸ãã¦ãããã¨æãã¾ãã ããããããã³ãããã£ã¦ã¿ããã¨æãããã¯ã¨ã³ãã¨ã³ã¸ãã¢ã®æ¹ã®åèã«ãªãã°å¹¸ãã§ãã ããããReact.jsã¨ã¯ Magic Moment Playbookã®ããã³ãã¨ã³ãã¯React.jsã使ã£ã¦æ§ç¯ããã¦ãã¾ãããããããReactã¨ã¯ãªããªã®ã§ããããã Reactã¯Fac
ãã®è¨äºã¯ãFigma Advent Calendar 2023ã®11æ¥ç®ã®è¨äºã§ãã æè¿Figmaã§é¢åãªä½æ¥ãçºçããèªååã®ããã®Figmaãã©ã°ã¤ã³ã®ã³ã¼ããChat GPTã«æ¸ãã¦ããã£ãã¨ãã大å¤ã¯ãã©ãã¾ããããã®æé ã説æãã¾ãã ãã£ããã¨ã³ã¸ãã¢ã¨ã®æ¯ãè¿ãMTGã§ããããªç¸è«ãåãã¾ããã 使ç¨é »åº¦ãé«ãã³ã³ãã¼ãã³ãããå®è£ ãé²ãããããã¶ã¤ã³ä¸ã§ä½¿ç¨é »åº¦ã®é«ãã³ã³ãã¼ãã³ãã®ä¸è¦§ãåºãã¦ãããããã 解決çã¯ããã¤ãèãããã¾ãã ç®è¦ã§ã«ã¦ã³ããã Figmaã®ãã¶ã¤ã³ã·ã¹ãã ã¢ããªãã£ã¯ã¹æ©è½ã使ã æ¢åã®ãã©ã°ã¤ã³ã使ã£ã¦ã«ã¦ã³ããã ãã©ã°ã¤ã³ãéçºãã¦ã«ã¦ã³ããã 対象ã¨ãªãç»é¢æ°ãï¼ç»é¢ããããªããã1. ç®è¦ã§ã«ã¦ã³ããããã§è§£æ±ºãããã§ããããã対象ã¨ãªãFigmaãã¡ã¤ã«ã§æ±ããã¦ããç»é¢æ°ã¯100ç»é¢ã軽ãè¶ ããã®ã§ããã®æ¡ã¯å´ä¸ã§ãã ã2
ããã«ã¡ã¯ãã¬ãããã§ãã è¿å¹´ãWebããã³ãã¨ã³ãã§ã¯ãµã¤ãã®ããã©ã¼ãã³ã¹ã®éè¦æ§ãé«ã¾ã£ã¦ãã¾ãã ä¾ãã°ãGoogleã¯Core Web Vitalã¨ããããã©ã¼ãã³ã¹ã«ææ¨ãæ¤ç´¢çµæã®ã©ã³ãã³ã°è¦å ã«çµã¿è¾¼ã¿ã¾ããã ã¾ããè¿å¹´ã®æä¼æ¥ããããã©ã¼ãã³ã¹ã®æ¹åã«åãçµãã çµæãã»ãã·ã§ã³æ°ãï¼ ã¢ãããCVRãï¼ ã¢ãã...ããªã©ã®äºä¾ã¯ææã«ãã¨ã¾ããªãã§ãããã ããã©ã¼ãã³ã¹ãã¥ã¼ãã³ã°ããããã«ã¯ãå®éçã«è¨æ¸¬ãã¦ããã«ããã¯ãæ¢ããããªããããã¦ã³ãªã¢ããã¼ããããã¾ãã ããããªãããæã«ã¯åæ¬ããã¯çã«ãã¦ãã¼ãçã£ç«¯ãã試ãã¦ããããã ã¢ãããªã¢ããã¼ããæå¹ã«ãªããã¨ããã£ãããæ¥ã ã®ã³ã¼ãã£ã³ã°ã§ããã©ã¼ãã³ã¹ãæèããã³ã¼ããæ¸ããã¨ã¯å¤§åã§ãããã ãã®è¨äºã§ã¯ããã©ã¼ãã³ã¹æé©åã®ãã¦ãã¼ãç´¹ä»ãã¾ãã ããã©ã¼ãã³ã¹æ¹åã®æ½çãæãæµ®ãã°ãªãæãããã³
Reactã¢ããªã±ã¼ã·ã§ã³ã®ã¢ã¼ããã¯ãã£ã®ä¸ä¾ã¨ãã¦å ¬éããã¦ããGitHubãªãã¸ããªãbulletproof-reactãã大å¤åå¼·ã«ãªãã®ã§ãç§èªèº«ã®è¦è§£ã交ãã¤ã¤ã·ã§ã¢ãã¾ãã â»2022å¹´11æè¿½è¨ è¨äºãªãªã¼ã¹ãã1å¹´ã»ã©çµéãã¦ãæ°ããåºã¦ããæ å ±ãèãæ¹ãçãè¾¼ãã ç¶ç·¨è¨äºãæ¸ãã¦ããã ãã¦ããã®ã§ããã¡ããä½µãã¦èªãã§ããã ããã°ã¨æ³ãã¾ãï¼@t_keshiãããããã¨ããããã¾ãï¼ï¼ã ãã£ã¬ã¯ããªæ§é ãåå¼·ã«ãªã ã¾ãã¯ããã¸ã§ã¯ããã¨ã«ãã©ã¤ããã¡ãªãã£ã¬ã¯ããªæ§é ã«ã¤ãã¦ã ã½ã¼ã¹ã³ã¼ãã¯src以ä¸ã«å ¥ãã bulletproof-reactã§ã¯ãReactã«é¢ããã½ã¼ã¹ã³ã¼ãã¯srcãã£ã¬ã¯ããªä»¥ä¸ã«æ ¼ç´ããã¦ãã¾ããéã«è¨ãã°ãã«ã¼ããã£ã¬ã¯ããªã«componentsãutilsã¨ãã£ããã£ã¬ã¯ããªã¯ããã¾ããã ãã¨ãã°Create Next Appã§ä½æ
Flashæ代ã®ç§ä¼ã®ã³ã¼ããããã¦ãã¦ããæ代ã¨ã¨ãã«å¤±ä¼ãã¤ã¤ããåé¡ãã¡ã¢æ¸ãç¨åº¦ã«æ¸ãæ®ãã æ¶ããããã©ã©ãã¯ã¹è¡¨ç¾ããããã©ã©ãã¯ã¹ï¼è¦å·®å¹æï¼ã¨ããã¡ããã£ã¨å ¥ãï¼ãã¨èãã¨ãã¨ã³ã¸ãã¢ããããé£è²ã示ããããã¨ãå¤ãã ãã©ã©ãã¯ã¹ã¯å®è£ ãã¡ã³ãã¦ã ããèªã¿è¿ãã«ããifæãé£è§£ãªå¼ãã¤ãã³ããã³ãã©ã«å ¥ãããããã°ããã¥ã¼ãã³ã°ãé£ãããªã£ã¦ãã¾ããã¨ãå¤ãããã ã ã§ãå®ã¯ããã©ã©ãã¯ã¹ã¯ãæ°è¡ã§åå©ç¨æ§ã®ããå®è£ ãã§ããã®ã ããããªã¡ã¢ã Flashå ¨çæã«çæããããã©ã©ãã¯ã¹ã®å®è£ ããæ代ã¨ã¨ãã«æ¶ãã¦è¡ã£ã¦ãã¾ãã®ãåãªããæ®ãã¦ããã°ãUnityã¨ãã§èª°ãã®å½¹ã«ç«ã¤ãããããªãã ãããã³ã°é¢æ°ãã¤ããã¹ãã¼ãã«ãã©ã©ãã¯ã¹ãå®è£ ããã«ã¯ãã¾ããããã³ã°é¢æ°ãå®è£ ãããä»»æã®ã¬ã³ã¸Aï½Bã®æ°åããä»»æã®å¥ã®ã¬ã³ã¸Cï½Dã«å¤æããé¢æ°ã ã // ãããã³ã°é¢æ°
対象èªè ã¨ç®ç éåæå¦çã®å®è£ æ¹æ³ã¯ç¥ã£ã¦ããããä»çµã¿ã詳ããç¥ããªãã®ã§ãã¹ããã©ã¯ãã£ã¹ãããããªãã¨ãããã å®è¡é åºã®ä¿è¨¼ãããããããªãã®ã§èªä¿¡ããã£ã¦ãããã¤ã§ããªãå¤æ´ããã ãã詳ããä»çµã¿ãç解ãããã¨ã§ããè¨ç»çãªå®è£ ãã§ããããã«ãªããã ã¨ããåæ©ã§æ¸ãããè¨äºã§ããåæ§ã®èª²é¡ãæ±ãã人ã対象èªè ã¨ãã¦æ³å®ãã¦ãã¾ãã ç®æ¬¡ å®è¡ã¢ãã«ã¨ã¿ã¹ã¯ãã¥ã¼ Promise async/await AbortSignal, Event, Async Context WHATWG Streams / Node.js Streams (å·çä¸) æªå® ç¨èªã«é¢ãã注æ åã åå®ç¾©ãã以ä¸ã®ç¨èªãä»åã使ãã¾ãã 1 tick ... ã¿ã¹ã¯ãã¥ã¼ã1å¨ãããã¨ã 1 microtick ... ãã¤ã¯ãã¿ã¹ã¯ãã¥ã¼ã1å¨ãããã¨ã ãããã®åä½ã¯éåæå¦çã®éã®ç¸å¯¾çãªåªå
ã¯ããã« Next.js 㧠MPA ãæ§ç¯ãã¦ããã¨ããã¼ã¸åä½ã§ã¢ã¯ã¢ã»ã¹ã³ã³ããã¼ã«ãè¡ããã¼ãºãã±ã¼ã¹ãããçºçãã¾ãã ããã§ã®ã¢ã¯ã»ã¹ã³ã³ããã¼ã«ã¯ããã¼ã¸ãã¨ã«ã¢ã¯ã»ã¹å¯è½ãªæ¡ä»¶ãå®ç¾©ããããã«ã¼ã«ã«ããããªãã¢ã¯ã»ã¹ãå¥ã®ãã¼ã¸ã«è»¢éããããªã©ã®å¦çãæå³ãã¾ãã ä¾ãã°ãä¸è¬ã¦ã¼ã¶åãã®ãã¼ã¸ã¨ãç»é²æ¸ã¿ã¦ã¼ã¶åãã®ãã¤ãã¼ã¸ãæã¤ã±ã¼ã¹ãèãã¦ã¿ãã¨â¦ ä¸è¬ã¦ã¼ã¶åããã¼ã¸ã¯èª°ã§ãã¢ã¯ã»ã¹å¯è½ ãã¤ãã¼ã¸ã¯ãã°ã¤ã³æ¸ã¿ã®ã¦ã¼ã¶ã®ã¿ã¢ã¯ã»ã¹å¯è½ ãã°ã¤ã³ã®ããã®ãµã¤ã³ã¤ã³ã»ã¢ãããã©ã¼ã ã®ãã¼ã¸ãåå¨ãããããã°ã¤ã³æ¸ã¿ã§ããã°ãã¤ãã¼ã¸ã«ãªãã¤ã¬ã¯ãããã ãã ãããã¹ã¯ã¼ããªã»ããã®ãã©ã¼ã ã¯èª°ã§ãã¢ã¯ã»ã¹å¯è½ ä»åã¯ä¸è¨ã®ã«ã¼ã«ãå®è£ ããä¸ã§ã®ãããã¤ãã®ã¢ã¯ã»ã¹ã³ã³ããã¼ã«ãã¿ã¼ã³ãèãã¾ãã å人çã«ã¯ä¸è¦æ¨¡ä»¥ä¸ã®ããã¸ã§ã¯ãã§ã¯ãã¿ã¼ã³3ããããããã¾ãããã®
// ã©ã³ãã ã«è¦ç´ ãåãåºãé¢æ° const randomPick = (items) => { const index = Math.floor(items.length * Math.random()); return items[index]; }; randomPick("123456"); // 1ã6ã®ã©ãã // æååã®ç¯å²ãå±éããé¢æ° const expandCharRange = (str) => str.replace(/.-./g, (range = 'a-z') => { // ãã¤ãã³ãæãã æååãå ¨ã¦ç½®æ const first = range.codePointAt(0); // 1æåç®ã®æåã³ã¼ã const last = range.codePointAt(2); // 2æåç®ã®æåã³ã¼ã const length = last - first
ã¡ã³ããã³ã¹
ãç¥ãã
é害
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}