1<!DOCTYPE html> 2<html lang="zh-cn"> 3 <head> 4 <meta charset="utf-8"> 5<!-- This site is hosted on Netlify. Anyone can build and deploy a site 6 like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=b41490d3-d7bf-458d-ab89-5030dae65e27 7 Netlify hosting facts for this site: static/SSR served via Netlify Edge. --> 8 <meta name="viewport" content="width=device-width, initial-scale=1"> 9 10 <title>Run Wang | Rivendell</title> 11 <link rel="stylesheet" href="/css/style.css" /> 12 <link rel="stylesheet" href="/css/fonts.css" /> 13 14 15<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css"> 16<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css" media="(prefers-color-scheme: dark)"> 17 18
19<script> 20(function() { 21 22 var season = null; 23 try { 24 var m = location.search.match(/[?&]season=(spring|summer|autumn|winter)/); 25 if (m) season = m[1]; 26 if (!season) season = localStorage.getItem('season-override'); 27 } catch (e) {} 28 if (!season) { 29 var mo = new Date().getMonth() + 1; 30 var d = new Date().getDate(); 31 var ymd = mo * 100 + d; 32 if (ymd >= 204 && ymd < 505) season = 'spring'; 33 else if (ymd >= 505 && ymd < 807) season = 'summer'; 34 else if (ymd >= 807 && ymd < 1107) season = 'autumn'; 35 else season = 'winter'; 36 } 37 document.documentElement.setAttribute('data-season', season); 38})(); 39</script>
39 40 41 42<link rel="icon" href="/images/favicon.jpg" sizes="32x32"> 43 44 45<link rel="stylesheet" href="/pagefind/pagefind-ui.css"> 46 47 48<link rel="stylesheet" href="/css/custom.css"> 49 50 51 52 53 </head> 54 55 <body class="page"> 56 <nav class="header"> 57 <div class="banner"> 58<a href="/" class="text"> 59ℜℑ𝔙𝔈𝔑𝔇𝔈𝔏𝔏 60</a> 61</div> 62 63 64 <ul class="top-menu"> 65 66 <li><a href="/">Home</a></li> 67 68 <li><a href="/tags/%E9%95%BF%E6%96%87">é¿æ</a></li> 69 70 <li><a href="/series/">æè®°</a></li> 71 72 <li><a href="/vlog">Vlog</a></li> 73 74 <li><a href="/tags/%E6%B8%B8%E8%AE%B0">游记</a></li> 75 76 <li><a href="/photos">ç¸å</a></li> 77 78 <li><a href="/notes">çè®°</a></li> 79 80 <li><a href="/100">100 ä»¶äº</a></li> 81 82 <li><a href="/travel">å°å¾</a></li> 83 84 <li><a href="/archive">åæ¡£</a></li> 85 86 <li><a href="/about">About Me</a></li> 87 88 <li><a href="/index.xml">RSS</a></li> 89 90 </ul> 91 <div class="head-meta"> 92 93 <span><a href="/">← Back to Home</a></span> 94 <span class="date"> 95 96 972026-05-13<span class="lunar-extra"> · ä¸åå¹´ä¸æå»¿ä¸ Â· ç«å¤å第8æ¥</span> 98</span> 99 100 101 102 103 104 105 106 <span><a href="https://github.com/yihui/hugo-xmag/edit/master/exampleSite/content/about.md">Edit this page</a></span> 107 108 109 110 </div> 111 </nav> 112 113<div class="container single-container"> 114<article> 115<div class="article-meta"> 116 117 <div class="categories"> 118 119 </div> 120 121 <h1><span class="title">Run Wang</span></h1> 122 123 124 <h3 class="author">é®ä»æ¯ä½ä¸ 125</h3> 126 127 128 129 <div class="reading-info"> 130 <span>约 259 å</span> 131 <span> · </span> 132 <span>é 读 1 åé</span> 133</div> 134 135 136</div> 137 138 139 140 141<main data-pagefind-body class=""> 142 143<span data-pagefind-meta="date" hidden>2026-05-13</span> 144<blockquote> 145<p>Come, you spirits That tend on mortal thoughts, unsex me here,</p> 146<p>And fill me from the crown to the toe top-full Of direst cruelty</p> 147<p>make thick my blood Stop up the access and passage to remorse, That no compunctious visitings of nature Shake my fell purpose, nor keep peace between The effect and it</p> 148<p>Come to my woman’s breasts, And take my milk for gall, you murdering ministers, 149Wherever in your sightless substances You wait on nature’s mischief</p> 150<p>Come, thick night, And pall thee in the dunnest smoke of hell, That my keen knife see not the wound it makes, 151Nor heaven peep through the blanket of the dark, To cry ‘Hold, hold!’</p> 152</blockquote> 153<h2 id="now">Now</h2> 154<p><em>ç°å¨çæï¼æåæ´æ°ï¼2026-05-13ï¼</em></p> 155<p><strong>å¨åª</strong> â èé»ä¸ãETH IIS PhD 第ä¸å¹´ã</p> 156<p><strong>å¨å</strong> â Embedded ML / on-device trainingï¼æè¿å¨ç PIM + RISC-V çåå设计ï¼é¡ºæç»´æ¤è¿ä¸ªå客ã</p> 157<p><strong>å¨è¯»</strong> â <em>å¾ å¡«</em></p> 158<p><strong>å¨å¬</strong> â <em>å¾ å¡«</em></p> 159<p><strong>æ³åä½è¿æ²¡å¨æ</strong> â <em>å¾ å¡«</em></p> 160<h2 id="åä½ç»è®¡">åä½ç»è®¡</h2> 161 162 163<div class="stats-summary"> 164 <div class="stat-card"> 165 <span class="stat-num" id="stat-posts">65</span> 166 <span class="stat-label">ç¯æç« </span> 167 </div> 168 <div class="stat-card"> 169 <span class="stat-num" id="stat-words">â</span> 170 <span class="stat-label">æ»åæ°</span> 171 </div> 172 <div class="stat-card"> 173 <span class="stat-num" id="stat-years">â</span> 174 <span class="stat-label">å¹´åä½</span> 175 </div> 176 <div class="stat-card"> 177 <span class="stat-num" id="stat-gap">â</span> 178 <span class="stat-label">æé¿åç¬ï¼å¤©ï¼</span> 179 </div> 180</div> 181 182<h3>æäº§éçåå¾</h3> 183<div id="stats-heatmap" class="stats-heatmap"></div> 184 185<h3>åæ° Top 10</h3> 186<ol id="stats-longest" class="stats-list"></ol> 187 188<h3>æ ç¾åå¸</h3> 189<div id="stats-tags" class="stats-tags"></div> 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387
388<script id="stats-data" type="application/json">[{"date":"2026-09-05","month":9,"tags":["æè®°"],"title":"å
«æï½éæ¥æçç»æ","url":"/post/2026/09/05/%E5%85%AB%E6%9C%88%E9%9D%92%E6%98%A5%E6%9C%9F%E7%9A%84%E7%BB%93%E6%9D%9F/","words":2349,"year":2026},{"date":"2026-07-11","month":7,"tags":["æè®°"],"title":"å
æä¸ï½ä¹ç´ä¹¦ä»¥æ¶å¿§","url":"/post/2026/07/11/%E5%85%AD%E6%9C%88%E4%B8%8B%E4%B9%90%E7%90%B4%E4%B9%A6%E4%BB%A5%E6%B6%88%E5%BF%A7/","words":635,"year":2026},{"date":"2026-06-14","month":6,"tags":["æè®°"],"title":"äºå
æï½éªå±±èä¸çäºåä¸å²","url":"/post/2026/06/14/%E4%BA%94%E5%85%AD%E6%9C%88%E9%9B%AA%E5%B1%B1%E8%84%9A%E4%B8%8B%E7%9A%84%E4%BA%8C%E5%8D%81%E4%B8%83%E5%B2%81/","words":2017,"year":2026},{"date":"2026-05-24","month":5,"tags":["æè®°"],"title":"åäºæï½ç°åå°èè¡ä¸å½","url":"/post/2026/05/24/%E5%9B%9B%E4%BA%94%E6%9C%88%E7%94%B0%E5%9B%AD%E5%B0%86%E8%8A%9C%E8%83%A1%E4%B8%8D%E5%BD%92/","words":1015,"year":2026},{"date":"2026-04-08","month":4,"tags":["é¿æ"],"title":"å士åå¹´è®°","url":"/post/2026/04/08/%E5%8D%9A%E5%A3%AB%E5%8D%8A%E5%B9%B4%E8%AE%B0/","words":1533,"year":2026},{"date":"2025-11-01","month":11,"tags":["æè®°"],"title":"å
«ä¹åï¼åå½åå¼å§å士","url":"/post/2025/11/01/%E5%85%AB%E4%B9%9D%E5%8D%81%E5%9B%9E%E5%9B%BD%E5%92%8C%E5%BC%80%E5%A7%8B%E5%8D%9A%E5%A3%AB/","words":871,"year":2025},{"date":"2025-07-30","month":7,"tags":["æè®°"],"title":"åå¹´è®°ï¼ä¸ç¨å强æè½å¼å¸","url":"/post/2025/07/30/%E5%8D%8A%E5%B9%B4%E8%AE%B0%E4%B8%8D%E7%94%A8%E5%8B%89%E5%BC%BA%E6%89%8D%E8%83%BD%E5%91%BC%E5%90%B8/","words":1650,"year":2025},{"date":"2025-03-01","month":3,"tags":["æè®°"],"title":"12æï¼éªå±±ãç½é©¬ä¸æªç«ä¹äº","url":"/post/2025/03/01/12%E6%9C%88%E9%9B%AA%E5%B1%B1%E7%BD%97%E9%A9%AC%E4%B8%8E%E6%9C%AA%E7%AB%9F%E4%B9%8B%E4%BA%8B/","words":1250,"year":2025},{"date":"2025-02-28","month":2,"tags":["æè®°"],"title":"10æï¼11æï¼ç§©åºä¸å¹»è§","url":"/post/2025/02/28/10%E6%9C%8811%E6%9C%88%E7%A7%A9%E5%BA%8F%E4%B8%8E%E5%B9%BB%E8%A7%89/","words":1787,"year":2025},{"date":"2024-12-01","month":12,"tags":["æè®°"],"title":"7æï¼8æï¼ 9æï¼ç«¥å¹´çæ¶é","url":"/post/2024/12/01/7%E6%9C%888%E6%9C%88-9%E6%9C%88%E7%AB%A5%E5%B9%B4%E7%9A%84%E6%B6%88%E9%80%9D/","words":3941,"year":2024},{"date":"2024-07-09","month":7,"tags":["æè®°"],"title":"5æï¼6æï¼å®å®ç尽头å¨è±å½ä¹ï¼","url":"/post/2024/07/09/5%E6%9C%886%E6%9C%88%E5%AE%87%E5%AE%99%E7%9A%84%E5%B0%BD%E5%A4%B4%E5%9C%A8%E8%8B%B1%E5%9B%BD%E4%B9%88/","words":2022,"year":2024},{"date":"2024-05-02","month":5,"tags":["æè®°"],"title":"3æï¼4æï¼é±ï¼å·¥ä½åç±æ
","url":"/post/2024/05/02/3%E6%9C%884%E6%9C%88%E9%92%B1%E5%B7%A5%E4%BD%9C%E5%92%8C%E7%88%B1%E6%83%85/","words":1921,"year":2024},{"date":"2024-03-01","month":3,"tags":["æè®°"],"title":"1æï¼2æï¼é¾å¹´å¤§å","url":"/post/2024/03/01/1%E6%9C%882%E6%9C%88%E9%BE%99%E5%B9%B4%E5%A4%A7%E5%90%89/","words":933,"year":2024},{"date":"2024-01-20","month":1,"tags":["æè®°"],"title":"11æï¼12æï¼ æ»ç³ç跨年","url":"/post/2024/01/20/11%E6%9C%8812%E6%9C%88-%E6%BB%9A%E7%9F%B3%E7%9A%84%E8%B7%A8%E5%B9%B4/","words":2321,"year":2024},{"date":"2023-11-04","month":11,"tags":["æè®°"],"title":"ä¹åæï½ åè£
岿é好","url":"/post/2023/11/04/%E4%B9%9D%E5%8D%81%E6%9C%88-%E5%81%87%E8%A3%85%E5%B2%81%E6%9C%88%E9%9D%99%E5%A5%BD/","words":2923,"year":2023},{"date":"2023-10-16","month":10,"tags":["æè®°"],"title":"å
«æï½ å©ä¸çæå®","url":"/post/2023/10/16/%E5%85%AB%E6%9C%88-%E5%89%A9%E4%B8%8B%E7%9A%84%E6%9E%9C%E5%AE%9E/","words":1812,"year":2023},{"date":"2023-08-13","month":8,"tags":["æè®°"],"title":"ä¸æï½ éé¸é度","url":"/post/2023/08/13/%E4%B8%83%E6%9C%88-%E9%80%83%E9%80%B8%E9%80%9F%E5%BA%A6/","words":1512,"year":2023},{"date":"2023-07-15","month":7,"tags":["æè®°"],"title":"56æï½ æ©çæ·®å","url":"/post/2023/07/15/56%E6%9C%88-%E6%A9%98%E7%94%9F%E6%B7%AE%E5%8C%97/","words":4284,"year":2023},{"date":"2023-05-06","month":5,"tags":["æè®°"],"title":"4æï½ æµæµªçæ´»åçç«æ°","url":"/post/2023/05/06/4%E6%9C%88-%E6%B5%81%E6%B5%AA%E7%94%9F%E6%B4%BB%E5%92%8C%E7%83%9F%E7%81%AB%E6%B0%94/","words":5778,"year":2023},{"date":"2023-04-16","month":4,"tags":["æè®°"],"title":"3æï½å»æ¥å
ç¦","url":"/post/2023/04/16/3%E6%9C%88%E5%8E%BB%E6%97%A5%E5%86%85%E7%93%A6/","words":1469,"year":2023},{"date":"2023-03-09","month":3,"tags":["游记"],"title":"ä¼¦æ¦æ¸¸è®°","url":"/post/2023/03/09/%E4%BC%A6%E6%95%A6%E6%B8%B8%E8%AE%B0/","words":2716,"year":2023},{"date":"2023-02-20","month":2,"tags":["æè®°"],"title":"1æï½ä¸é´æä¸¤ä¸ªäººçæ¿å","url":"/post/2023/02/20/1%E6%9C%88%E4%B8%80%E9%97%B4%E6%9C%89%E4%B8%A4%E4%B8%AA%E4%BA%BA%E7%9A%84%E6%88%BF%E5%AD%90/","words":3070,"year":2023},{"date":"2023-02-17","month":2,"tags":["é¿æ"],"title":"æççææ
° II","url":"/post/2023/02/17/%E6%96%99%E7%90%86%E7%9A%84%E6%8A%9A%E6%85%B0-ii/","words":844,"year":2023},{"date":"2023-02-16","month":2,"tags":["é¿æ"],"title":"æççææ
° I","url":"/post/2023/02/16/%E6%96%99%E7%90%86%E7%9A%84%E6%8A%9A%E6%85%B0-i/","words":1084,"year":2023},{"date":"2023-02-05","month":2,"tags":["游记"],"title":"巴黿¸¸è®°","url":"/post/2023/02/05/%E5%B7%B4%E9%BB%8E%E6%B8%B8%E8%AE%B0/","words":2377,"year":2023},{"date":"2022-12-10","month":12,"tags":["é¿æ"],"title":"润äºä»¥å","url":"/post/2022/12/10/%E6%B6%A6%E4%BA%86%E4%BB%A5%E5%90%8E/","words":5118,"year":2022},{"date":"2022-11-24","month":11,"tags":["æè®°","çæ´»"],"title":"10ï¼11æï½ 御å§çè¯ç","url":"/post/2022/11/24/1011%E6%9C%88-%E5%BE%A1%E5%A7%90%E7%9A%84%E8%AF%9E%E7%94%9F/","words":3208,"year":2022},{"date":"2022-10-14","month":10,"tags":["æè®°","çæ´»"],"title":"9æï½ 妿¯æé»","url":"/post/2022/10/14/9%E6%9C%88-%E5%A6%82%E6%98%AF%E6%88%91%E9%97%BB/","words":4288,"year":2022},{"date":"2022-09-10","month":9,"tags":["æè®°","çæ´»"],"title":"8æï½æåçç»æä¸æ°çå¼å§","url":"/post/2022/09/10/8%E6%9C%88%E6%9C%80%E5%90%8E%E7%9A%84%E7%BB%93%E6%9D%9F%E4%B8%8E%E6%96%B0%E7%9A%84%E5%BC%80%E5%A7%8B/","words":3172,"year":2022},{"date":"2022-08-05","month":8,"tags":["æè®°","çæ´»"],"title":"7æï½çæ´»å¨å«å¤","url":"/post/2022/08/05/7%E6%9C%88%E7%94%9F%E6%B4%BB%E5%9C%A8%E5%88%AB%E5%A4%84/","words":4010,"year":2022},{"date":"2022-07-16","month":7,"tags":["é¿æ","ç»éª"],"title":"å¦å¤¢å¹»æ³¡å½±ï½ç³è¯·å£æ»ç»","url":"/post/2022/07/16/%E5%A6%82%E5%A4%A2%E5%B9%BB%E6%B3%A1%E5%BD%B1%E7%94%B3%E8%AF%B7%E5%AD%A3%E6%80%BB%E7%BB%93/","words":5164,"year":2022},{"date":"2022-07-04","month":7,"tags":["æè®°"],"title":"6æï½è¿ç¦»é¢ 忢¦æ³","url":"/post/2022/07/04/6%E6%9C%88%E8%BF%9C%E7%A6%BB%E9%A2%A0%E5%80%92%E6%A2%A6%E6%83%B3/","words":2160,"year":2022},{"date":"2022-06-26","month":6,"tags":["æè®°","å¥åº·"],"title":"5æï½å¿åææ´","url":"/post/2022/06/26/5%E6%9C%88%E5%BF%83%E5%8A%9B%E6%86%94%E6%82%B4/","words":1994,"year":2022},{"date":"2022-04-21","month":4,"tags":["é¿æ"],"title":"æå¤´ç»£è±çæ¹æ³","url":"/post/2022/04/21/%E6%9E%95%E5%A4%B4%E7%BB%A3%E8%8A%B1%E7%9A%84%E6%96%B9%E6%B3%95/","words":1736,"year":2022},{"date":"2022-04-18","month":4,"tags":["é¿æ"],"title":"天ç丽质é¾èªå¼","url":"/post/2022/04/18/%E5%A4%A9%E7%94%9F%E4%B8%BD%E8%B4%A8%E9%9A%BE%E8%87%AA%E5%BC%83/","words":1921,"year":2022},{"date":"2022-03-20","month":3,"tags":["æè®°","å¥åº·"],"title":"3æï½ä½è°ç¥ä»çæ´»","url":"/post/2022/03/20/3%E6%9C%88%E4%BD%95%E8%B0%93%E7%A5%9E%E4%BB%99%E7%94%9F%E6%B4%BB/","words":2338,"year":2022},{"date":"2022-03-18","month":3,"tags":["é¿æ","ç»éª"],"title":"æçæ°ååºå»º","url":"/post/2022/03/18/%E6%88%91%E7%9A%84%E6%95%B0%E5%AD%97%E5%9F%BA%E5%BB%BA/","words":1843,"year":2022},{"date":"2022-02-28","month":2,"tags":["é¿æ","ç»éª"],"title":"ç»èæè¯»ä¹¦ççè¯","url":"/post/2022/02/28/%E7%BB%99%E8%99%9A%E6%8B%9F%E8%AF%BB%E4%B9%A6%E7%99%96%E7%9A%84%E8%8D%AF/","words":3523,"year":2022},{"date":"2021-12-21","month":12,"tags":["é¿æ"],"title":"NASï¼æçç²¾ç¥ç»¿æ´²","url":"/post/2021/12/21/nas%E6%88%91%E7%9A%84%E7%B2%BE%E7%A5%9E%E7%BB%BF%E6%B4%B2/","words":2165,"year":2021},{"date":"2021-12-20","month":12,"tags":["é¿æ"],"title":"被G鮿äºå¤å¹´çæç»äºè°æäºå®","url":"/post/2021/12/20/%E8%A2%ABg%E9%82%AE%E6%90%9E%E4%BA%86%E5%A4%9A%E5%B9%B4%E7%9A%84%E6%88%91%E7%BB%88%E4%BA%8E%E8%B0%83%E6%95%99%E4%BA%86%E5%AE%83/","words":1951,"year":2021},{"date":"2021-12-19","month":12,"tags":["é¿æ"],"title":"è¢«éªæ æ°æ¬¡åé»ç¼åºçåé®ä»¶skill","url":"/post/2021/12/19/%E8%A2%AB%E9%AA%82%E6%97%A0%E6%95%B0%E6%AC%A1%E5%90%8E%E9%94%BB%E7%82%BC%E5%87%BA%E7%9A%84%E5%86%99%E9%82%AE%E4%BB%B6skill/","words":4218,"year":2021}
388,{"date":"2021-11-28","month":11,"tags":["游记","å½å
","çæ´»","ææ
çæ´»"],"title":"é鵿¸¸è®°","url":"/post/2021/11/28/%E9%87%91%E9%99%B5%E6%B8%B8%E8%AE%B0/","words":1245,"year":2021},{"date":"2021-11-24","month":11,"tags":["æè®°","ç³è¯·"],"title":"11æï½ä¸ç¾¡é¸³é¸¯åªç¾¡ä»","url":"/post/2021/11/24/11%E6%9C%88%E4%B8%8D%E7%BE%A1%E9%B8%B3%E9%B8%AF%E5%8F%AA%E7%BE%A1%E4%BB%99/","words":2989,"year":2021},{"date":"2021-11-21","month":11,"tags":["é¿æ","è´¢å¡"],"title":"è±é±çèºæ¯","url":"/post/2021/11/21/%E8%8A%B1%E9%92%B1%E7%9A%84%E8%89%BA%E6%9C%AF/","words":3648,"year":2021},{"date":"2021-11-19","month":11,"tags":["é¿æ","IT","è´¢å¡"],"title":"how to freelancee","url":"/post/2021/11/19/how-to-freelancee/","words":3481,"year":2021},{"date":"2021-11-11","month":11,"tags":["读书ç¬è®°","ç³è¯·"],"title":"ç»æPS书åç²åº","url":"/post/2021/11/11/%E7%BB%9D%E6%9D%80ps%E4%B9%A6%E5%86%99%E7%9B%B2%E5%8C%BA/","words":3187,"year":2021},{"date":"2021-10-25","month":10,"tags":["æè®°","ç³è¯·"],"title":"910æï½ç»ææ§åå","url":"/post/2021/10/25/910%E6%9C%88%E7%BB%93%E6%9E%84%E6%80%A7%E5%8F%98%E5%8C%96/","words":2183,"year":2021},{"date":"2021-08-31","month":8,"tags":["æè®°","çæ´»"],"title":"78æï½ä¸è±¡é½ç¼ä¸å¿µæ³¢","url":"/post/2021/08/31/78%E6%9C%88%E4%B8%87%E8%B1%A1%E9%83%BD%E7%BC%98%E4%B8%80%E5%BF%B5%E6%B3%A2/","words":2882,"year":2021},{"date":"2021-08-19","month":8,"tags":["é¿æ","社交"],"title":"æä¸ºå¾æä¸å®¶","url":"/post/2021/08/19/%E6%88%90%E4%B8%BA%E5%8B%BE%E6%90%AD%E4%B8%93%E5%AE%B6/","words":5724,"year":2021},{"date":"2021-08-18","month":8,"tags":["é¿æ","è¯è¨å¦ä¹ "],"title":"乡ä¸äººä¸è±æç康å¤","url":"/post/2021/08/18/%E4%B9%A1%E4%B8%8B%E4%BA%BA%E4%B8%AD%E8%8B%B1%E6%96%87%E7%9A%84%E5%BA%B7%E5%A4%8D/","words":3424,"year":2021},{"date":"2021-07-30","month":7,"tags":["æè®°","æ
æ"],"title":"6æï½å¼æå¿å¤é","url":"/post/2021/07/30/6%E6%9C%88%E5%BC%83%E6%8D%90%E5%8B%BF%E5%A4%8D%E9%81%93/","words":2461,"year":2021},{"date":"2021-05-30","month":5,"tags":["æè®°","çæ´»"],"title":"5æï½èå¾","url":"/post/2021/05/30/5%E6%9C%88%E8%88%8D%E5%BE%97/","words":1434,"year":2021},{"date":"2021-05-30","month":5,"tags":["é¿æ","æå","çæ´»"],"title":"å¨å
å¤ç°åºå
¥é¨æå","url":"/post/2021/05/30/%E5%91%A8%E5%85%AD%E5%A4%9C%E7%8E%B0%E5%9C%BA%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/","words":2791,"year":2021},{"date":"2021-05-02","month":5,"tags":["æè®°","å¦ä¹ "],"title":"4æï½æè¿·éç¥è¿çç§ç åå³","url":"/post/2021/05/02/4%E6%9C%88%E6%88%91%E8%BF%B7%E9%80%94%E7%9F%A5%E8%BF%94%E7%9A%84%E7%A7%91%E7%A0%94%E5%93%81%E5%91%B3/","words":2253,"year":2021},{"date":"2021-04-21","month":4,"tags":["é¿æ"],"title":"Best Conduct for Scientific Code ç§å¦ä»£ç æä½³å®è·µ","url":"/post/2021/04/21/best-conduct-for-scientific-code-%E7%A7%91%E5%AD%A6%E4%BB%A3%E7%A0%81%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/","words":1480,"year":2021},{"date":"2021-03-31","month":3,"tags":["æè®°","å¦ä¹ "],"title":"3æï½Code Skill for Non-programmerï¼å
¥é¨ä¸æ±äºº","url":"/post/2021/03/31/3%E6%9C%88code-skill-for-non-programmer%E5%85%A5%E9%97%A8%E4%B8%8D%E6%B1%82%E4%BA%BA/","words":2434,"year":2021},{"date":"2021-02-20","month":2,"tags":["游记"],"title":"If this is not happiness","url":"/post/2021/02/20/if-this-is-not-happiness/","words":1607,"year":2021},{"date":"2021-01-28","month":1,"tags":["é¿æ","research"],"title":"æ¬ç§çå®éªå®¤æ··é¥åæå","url":"/post/2021/01/28/%E6%9C%AC%E7%A7%91%E7%94%9F%E5%AE%9E%E9%AA%8C%E5%AE%A4%E6%B7%B7%E9%A5%AD%E5%90%83%E6%8C%87%E5%8D%97/","words":2893,"year":2021},{"date":"2021-01-18","month":1,"tags":["é¿æ","åä½"],"title":"æ æ³åè±éçå¹´ä»£ææ³åä¸ä¸ªç¬ç«åªä½","url":"/post/2021/01/18/%E6%97%A0%E6%B3%95%E5%81%9A%E8%8B%B1%E9%9B%84%E7%9A%84%E5%B9%B4%E4%BB%A3%E6%88%91%E6%83%B3%E5%81%9A%E4%B8%80%E4%B8%AA%E7%8B%AC%E7%AB%8B%E5%AA%92%E4%BD%93/","words":2670,"year":2021},{"date":"2020-11-25","month":11,"tags":["æ°é»","é¿æ"],"title":"ç®ç»å禧代çç®ä½ä¸æå±äºèç½è夿å","url":"/post/2020/11/25/%E7%8C%AE%E7%BB%99%E5%8D%83%E7%A6%A7%E4%BB%A3%E7%9A%84%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E5%B1%8A%E4%BA%92%E8%81%94%E7%BD%91%E8%80%83%E5%8F%A4%E6%8C%87%E5%8D%97/","words":4133,"year":2020},{"date":"2020-10-30","month":10,"tags":["é¿æ","ç»éª"],"title":"å¦çå
é¢è±æ¼«æ¸¸æå","url":"/post/2020/10/30/%E5%AD%A6%E7%94%9F%E5%85%9A%E9%A2%86%E8%8B%B1%E6%BC%AB%E6%B8%B8%E6%8C%87%E5%8D%97/","words":3978,"year":2020}
388,{"date":"2020-10-13","month":10,"tags":["读书ç¬è®°","读å"],"title":"åæ¶æ¢æï¼ç»å¸¸åpre","url":"/post/2020/10/13/%E5%8F%8A%E6%97%B6%E6%AD%A2%E6%8D%9F%E7%BB%8F%E5%B8%B8%E5%81%9Apre/","words":1291,"year":2020},{"date":"2020-09-12","month":9,"tags":["é¿æ","个人管ç"],"title":"大å¦ä¿¡æ¯ç³»ç»çSetup","url":"/post/2020/09/12/%E5%A4%A7%E5%AD%A6%E4%BF%A1%E6%81%AF%E7%B3%BB%E7%BB%9F%E7%9A%84setup/","words":3306,"year":2020},{"date":"2020-05-29","month":5,"tags":["游记","æ
游"],"title":"å¨å¡å¿åæå龿°","url":"/post/2020/05/29/%E5%9C%A8%E5%9D%A1%E5%8E%BF%E5%81%9A%E6%96%87%E5%8C%96%E9%9A%BE%E6%B0%91/","words":3240,"year":2020},{"date":"0001-01-01","month":1,"tags":[],"title":"","url":"/post/1/01/01/","words":1705,"year":1}]</script>
388 389
390<script> 391(function() { 392 var dataEl = document.getElementById('stats-data'); 393 if (!dataEl) return; 394 var posts; 395 try { posts = JSON.parse(dataEl.textContent); } catch (e) { return; } 396 if (!posts.length) return; 397 398 posts.sort(function(a, b) { return a.date.localeCompare(b.date); }); 399 400 401 var totalWords = posts.reduce(function(s, p) { return s + p.words; }, 0); 402 document.getElementById('stat-words').textContent = totalWords.toLocaleString(); 403 404 var first = new Date(posts[0].date); 405 var last = new Date(posts[posts.length - 1].date); 406 var years = ((last - first) / (1000 * 60 * 60 * 24 * 365.25)).toFixed(1); 407 document.getElementById('stat-years').textContent = years; 408 409 var maxGap = 0; 410 for (var i = 1; i < posts.length; i++) { 411 var d1 = new Date(posts[i - 1].date); 412 var d2 = new Date(posts[i].date); 413 var gap = Math.round((d2 - d1) / (1000 * 60 * 60 * 24)); 414 if (gap > maxGap) maxGap = gap; 415 } 416 document.getElementById('stat-gap').textContent = maxGap; 417 418 419 var now = new Date(); 420 var nowYear = now.getFullYear(); 421 var nowMonth = now.getMonth() + 1; 422 var endYear = nowYear + 4; 423 var startYear = endYear - 9; 424 425 var grid = {}; 426 posts.forEach(function(p) { 427 grid[p.year] = grid[p.year] || {}; 428 grid[p.year][p.month] = (grid[p.year][p.month] || 0) + 1; 429 }); 430 var maxCount = 0; 431 Object.values(grid).forEach(function(yr) { 432 Object.values(yr).forEach(function(c) { if (c > maxCount) maxCount = c; }); 433 }); 434 function heatColor(count) { 435 if (!count) return 'var(--heat-0)'; 436 var t = count / maxCount; 437 if (t < 0.25) return 'var(--heat-1)'; 438 if (t < 0.5) return 'var(--heat-2)'; 439 if (t < 0.75) return 'var(--heat-3)'; 440 return 'var(--heat-4)'; 441 } 442 var heatHTML = '<table class="heatmap-table"><thead><tr><th></th>'; 443 for (var m = 1; m <= 12; m++) heatHTML += '<th>' + m + '</th>'; 444 heatHTML += '</tr></thead><tbody>'; 445 for (var y = endYear; y >= startYear; y--) { 446 heatHTML += '<tr><th>' + y + '</th>'; 447 for (var m = 1; m <= 12; m++) { 448 var future = (y > nowYear) || (y === nowYear && m > nowMonth); 449 var c = (grid[y] && grid[y][m]) || 0; 450 if (future) { 451 heatHTML += '<td class="heat-future" title="' + y + 'å¹´' + m + 'æï¼æªæ¥"></td>'; 452 } else { 453 heatHTML += '<td style="background:' + heatColor(c) + '" title="' + y + 'å¹´' + m + 'æï¼' + c + ' ç¯"></td>'; 454 } 455 } 456 heatHTML += '</tr>'; 457 } 458 heatHTML += '</tbody></table>'; 459 document.getElementById('stats-heatmap').innerHTML = heatHTML; 460 461 462 var byLen = posts.slice().sort(function(a, b) { return b.words - a.words; }).slice(0, 10); 463 var maxLen = byLen[0].words; 464 var listHTML = ''; 465 byLen.forEach(function(p) { 466 var pct = (p.words / maxLen * 100).toFixed(0); 467 listHTML += '<li><a href="' + p.url + '"><span class="post-t">' + p.title + '</span>' + 468 '<span class="post-bar"><span class="post-bar-fill" style="width:' + pct + '%"></span></span>' + 469 '<span class="post-w">' + p.words.toLocaleString() + '</span></a></li>'; 470 }); 471 document.getElementById('stats-longest').innerHTML = listHTML; 472 473 474 var tagCounts = {}; 475 posts.forEach(function(p) { 476 (p.tags || []).forEach(function(t) { tagCounts[t] = (tagCounts[t] || 0) + 1; }); 477 }); 478 var tagsSorted = Object.keys(tagCounts).map(function(k) { return [k, tagCounts[k]]; }) 479 .sort(function(a, b) { return b[1] - a[1]; }); 480 var maxTag = tagsSorted[0] ? tagsSorted[0][1] : 1; 481 var tagHTML = ''; 482 tagsSorted.forEach(function(pair) { 483 var size = 0.85 + (pair[1] / maxTag) * 0.8; 484 tagHTML += '<a class="tag-cloud-item" href="/tags/' + encodeURIComponent(pair[0]) + '" ' + 485 'style="font-size:' + size.toFixed(2) + 'em">' + pair[0] + 486 ' <span class="tag-cloud-c">' + pair[1] + '</span></a>'; 487 }); 488 document.getElementById('stats-tags').innerHTML = tagHTML; 489})(); 490</script>
490 491 492<h2 id="æè¿æ³è¯»">æè¿æ³è¯»</h2> 493<style> 494#gr_updates_widget{ 495border-radius: 5px; 496background-color:#fff; 497border:solid #683205 10px; 498-webkit-box-shadow: 0px 0px 4px 1px #595959, 499inset 0px 0px 0px 1px #7D730B; 500-moz-box-shadow: 0px 0px 4px 1px #595959, 501inset 0px 0px 0px 1px #7D730B; 502box-shadow: 0px 0px 4px 1px #595959, 503inset 0px 0px 0px 1px #7D730B; 504padding:15px 0 35px 15px; 505width:800px; 506height:500px; 507} 508#gr_footer{ 509margin-bottom:10px; 510} 511#gr_updates_widget p{ 512padding:0px; 513margin:0; 514font-size:14px; 515} 516#gr_footer img{ 517width:100px; 518float:left; 519} 520#gr_updates_widget img{ 521 border-style:none; 522} 523</style> 524<div id="gr_updates_widget"> 525 <iframe sandbox id="the_iframe" src="https://www.goodreads.com/widgets/user_update_widget?height=400&num_updates=20&user=157040928&width=750" width="750" height="500" frameborder="0"></iframe> 526 <div id="gr_footer"> 527 <a href="https://www.goodreads.com/"><img alt="Goodreads: Book reviews, recommendations, and discussion" rel="nofollow" src="https://s.gr-assets.com/images/layout/goodreads_logo_140.png" /></a> 528 </div> 529</div> 530<h2 id="github-heatmap">Github Heatmap</h2> 531<!-- Include the library. -->
532<script 533 src="https://unpkg.com/github-calendar@latest/dist/github-calendar.min.js" 534></script>
534 535<!-- Optionally, include the theme (if you don't want to struggle to write the CSS) --> 536<link 537 rel="stylesheet" 538 href="https://unpkg.com/github-calendar@latest/dist/github-calendar-responsive.css" 539/> 540<!-- Prepare a container for your calendar. --> 541<div class="calendar"> 542 <!-- Loading stuff --> 543 Loading the data just for you. 544</div>
545<script> 546 GitHubCalendar(".calendar", "samanthawangdl"); 547 // or enable responsive functionality 548 GitHubCalendar(".calendar", "samanthawangdl", { responsive: true }); 549</script>
549 550 551</main> 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577<link rel="stylesheet" href="/css/comments.css"> 578<section class="rc-comments" id="rc-comments" data-path="/about/"> 579 <div class="rc-react-wrap"> 580 <span class="rc-react-label">读å®çå¿æ </span> 581 <div class="rc-react-bar"></div> 582 </div> 583 <h3 class="rc-title">è¯è®º <span class="rc-count"></span></h3> 584 <div class="rc-list"><p class="rc-empty">å è½½ä¸â¦</p></div> 585 <form class="rc-form"> 586 <textarea name="body" rows="4" maxlength="2000" placeholder="说ç¹ä»ä¹å§ï¼ä¸ç¨ç»å½" required></textarea> 587 <input class="rc-hp" name="website" tabindex="-1" autocomplete="off" aria-hidden="true"> 588 <div class="rc-row"> 589 <input name="name" maxlength="30" placeholder="æµç§°ï¼å¯ä¸å¡«ï¼" autocomplete="nickname"> 590 <span class="rc-reply-to"></span> 591 <button type="submit">å表</button> 592 </div> 593 <div class="rc-status"></div> 594 </form> 595</section>
596<script src="/js/comments.js" defer></script>
596 597 598 599</article> 600</div> 601
602<script async src="//yihui.org/js/center-img.js"></script>
602 603 604<footer> 605
606<script> 607(function() { 608 609 var season = document.documentElement.getAttribute('data-season'); 610 var config = { 611 spring: { glyph: 'â', count: 7, color: '#e8b4b8' }, 612 autumn: { glyph: 'ð', count: 6 }, 613 winter: { glyph: 'â', count: 8, color: '#e8eef5' } 614 }; 615 var c = config[season]; 616 if (!c) return; 617 var overlay = document.createElement('div'); 618 overlay.className = 'season-overlay'; 619 overlay.setAttribute('aria-hidden', 'true'); 620 for (var i = 0; i < c.count; i++) { 621 var f = document.createElement('span'); 622 f.className = 'season-particle'; 623 f.textContent = c.glyph; 624 f.style.left = (Math.random() * 100) + '%'; 625 f.style.animationDelay = (Math.random() * 10) + 's'; 626 f.style.animationDuration = (9 + Math.random() * 8) + 's'; 627 f.style.opacity = (0.3 + Math.random() * 0.4).toFixed(2); 628 f.style.fontSize = (0.8 + Math.random() * 0.6).toFixed(2) + 'em'; 629 if (c.color) f.style.color = c.color; 630 overlay.appendChild(f); 631 } 632 document.body.appendChild(overlay); 633})(); 634</script>
634 635 636
637<script> 638(function() { 639 var el = document.querySelector('.banner-subtitle'); 640 if (!el) return; 641 var textEl = el.querySelector('.banner-subtitle-text'); 642 var full = el.dataset.text || ''; 643 if (!full) return; 644 var i = 0; 645 function step() { 646 if (i > full.length) return; 647 textEl.textContent = full.slice(0, i); 648 i += 1; 649 setTimeout(step, 130 + Math.random() * 60); 650 } 651 setTimeout(step, 350); 652})(); 653</script>
653 654 655
656<script> 657(function() { 658 var dq = document.querySelector('.daily-quote'); 659 var dataEl = document.getElementById('quotes-data'); 660 if (!dq || !dataEl) return; 661 var quotes; 662 try { quotes = JSON.parse(dataEl.textContent); } catch (e) { return; } 663 if (!quotes || !quotes.length) return; 664 665 var d = new Date(); 666 var doy = Math.floor((d - new Date(d.getFullYear(), 0, 0)) / 86400000); 667 var idx = (doy + d.getFullYear() * 7) % quotes.length; 668 var q = quotes[idx]; 669 var textEl = dq.querySelector('.daily-quote-text'); 670 var srcEl = dq.querySelector('.daily-quote-source'); 671 textEl.textContent = 'ã' + q.text + 'ã'; 672 srcEl.textContent = 'â æèªã' + q.title + 'ã' + (q.year ? ' ' + q.year : ''); 673 674 setTimeout(function() { 675 dq.classList.add('daily-quote-visible'); 676 dq.setAttribute('aria-hidden', 'false'); 677 }, 350 + 200 * 8); 678})(); 679</script>
679 680 681 682 683<div id="progress-bar"></div>
684<script> 685(function() { 686 var bar = document.getElementById('progress-bar'); 687 if (!bar) return; 688 window.addEventListener('scroll', function() { 689 var h = document.documentElement; 690 var scrollTop = h.scrollTop || document.body.scrollTop; 691 var scrollHeight = h.scrollHeight - h.clientHeight; 692 bar.style.width = (scrollTop / scrollHeight * 100) + '%'; 693 }); 694})(); 695</script>
695 696 697 698 699 700 701 702 703 704 705<button id="search-toggle" aria-label="æç´¢ (âK)" title="æç´¢ (âK)"> 706 <svg class="search-toggle-icon" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="7"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg> 707 <span class="search-toggle-text">æç´¢æç« â¦</span> 708 <span class="search-toggle-kbd"><kbd>â</kbd><kbd>K</kbd></span> 709</button> 710<div id="search-modal" aria-hidden="true"> 711 <div class="search-backdrop"></div> 712 <div class="search-panel" role="dialog" aria-label="ç«å æç´¢"> 713 <div id="pagefind-search"></div> 714 <div class="search-hint">æ <kbd>Esc</kbd> å ³é · <kbd>âK</kbd> å¤èµ·</div> 715 </div> 716</div>
717<script> 718(function() { 719 var modal = document.getElementById('search-modal'); 720 var toggle = document.getElementById('search-toggle'); 721 var mount = document.getElementById('pagefind-search'); 722 if (!modal || !toggle || !mount) return; 723 var uiLoaded = false; 724 725 function loadUI() { 726 if (uiLoaded) return Promise.resolve(); 727 return new Promise(function(resolve) { 728 var s = document.createElement('script'); 729 s.src = '/pagefind/pagefind-ui.js'; 730 s.onload = function() { 731 try { 732 new PagefindUI({ 733 element: '#pagefind-search', 734 showSubResults: true, 735 showImages: false, 736 resetStyles: false, 737 translations: { 738 placeholder: 'æç´¢æç« â¦', 739 clear_search: 'æ¸ é¤', 740 load_more: 'å è½½æ´å¤', 741 search_label: 'ç«å æç´¢', 742 filters_label: 'çé', 743 zero_results: 'æ²¡ææ¾å° "[SEARCH_TERM]" ç¸å ³å 容', 744 many_results: 'æ¾å° [COUNT] æ¡ "[SEARCH_TERM]" ç¸å ³ç»æ', 745 one_result: 'æ¾å° 1 æ¡ "[SEARCH_TERM]" ç¸å ³ç»æ', 746 alt_search: '没æ "[SEARCH_TERM]" çç»æï¼è¯è¯ "[DIFFERENT_TERM]"', 747 search_suggestion: '没æ "[SEARCH_TERM]" çç»æï¼è¯è¯æç´¢ï¼', 748 searching: 'æç´¢ä¸â¦' 749 } 750 }); 751 uiLoaded = true; 752 } catch (e) {} 753 resolve(); 754 }; 755 s.onerror = function() { 756 mount.innerHTML = '<p style="padding:1em;color:#999;">æç´¢ç´¢å¼æªçæã请å¨é¨ç½²å访é®ï¼ææ¬å°è¿è¡ <code>npx pagefind --site public</code> åé¢è§ã</p>'; 757 resolve(); 758 }; 759 document.body.appendChild(s); 760 }); 761 } 762 763 function openModal() { 764 modal.setAttribute('aria-hidden', 'false'); 765 document.body.style.overflow = 'hidden'; 766 loadUI().then(function() { 767 var input = modal.querySelector('.pagefind-ui__search-input'); 768 if (input) input.focus(); 769 }); 770 } 771 function closeModal() { 772 modal.setAttribute('aria-hidden', 'true'); 773 document.body.style.overflow = ''; 774 } 775 toggle.addEventListener('click', openModal); 776 modal.querySelector('.search-backdrop').addEventListener('click', closeModal); 777 document.addEventListener('keydown', function(e) { 778 if ((e.metaKey || e.ctrlKey) && e.key === 'k') { 779 e.preventDefault(); 780 modal.getAttribute('aria-hidden') === 'false' ? closeModal() : openModal(); 781 } else if (e.key === 'Escape' && modal.getAttribute('aria-hidden') === 'false') { 782 closeModal(); 783 } 784 }); 785})(); 786</script>
786 787 788
789<script> 790(function() { 791 792 var konami = ['arrowup','arrowup','arrowdown','arrowdown','arrowleft','arrowright','arrowleft','arrowright','b','a']; 793 var kbuf = []; 794 795 var typed = ''; 796 797 function k(e) { return (e.key || '').toLowerCase(); } 798 799 800 var PORTAL = "https://llednevir.netlify.app/"; 801 function portal(el) { 802 if (!PORTAL) return; 803 el.style.pointerEvents = 'auto'; 804 el.style.cursor = 'pointer'; 805 el.addEventListener('click', function() { location.href = PORTAL; }); 806 } 807 808 809 var WITCH_SVG = '<svg width="56" height="56" viewBox="0 0 64 64" fill="#0a0a0a">' + 810 '<rect x="10" y="42" width="48" height="2" transform="rotate(-8 32 43)"/>' + 811 '<path d="M 8 40 L 2 36 L 2 50 L 8 46 Z" />' + 812 '<path d="M 26 24 Q 22 38 22 44 L 40 44 Q 40 38 36 24 Z"/>' + 813 '<circle cx="31" cy="22" r="4"/>' + 814 '<path d="M 24 18 L 31 4 L 38 18 Z"/>' + 815 '<rect x="22" y="17" width="18" height="2"/>' + 816 '<rect x="29" y="13" width="3" height="2" fill="#d4a86a"/>' + 817 '</svg>'; 818 819 function summonWitch(withToast) { 820 if (document.querySelector('.witch-fly')) return; 821 var w = document.createElement('div'); 822 w.className = 'witch-fly'; 823 w.setAttribute('aria-hidden', 'true'); 824 w.innerHTML = WITCH_SVG; 825 document.body.appendChild(w); 826 827 var t = null; 828 if (withToast) { 829 t = document.createElement('div'); 830 t.className = 'witch-toast'; 831 t.textContent = 'Double, double toil and trouble; fire burn and cauldron bubble.'; 832 document.body.appendChild(t); 833 } 834 setTimeout(function() { w.remove(); if (t) t.remove(); }, 7000); 835 } 836 837 function peekWitch() { 838 if (document.querySelector('.witch-peek') || document.querySelector('.witch-fly')) return; 839 var sides = ['top', 'right', 'bottom', 'left']; 840 var side = sides[Math.floor(Math.random() * 4)]; 841 var p = document.createElement('div'); 842 p.className = 'witch-peek witch-peek-' + side; 843 p.setAttribute('aria-hidden', 'true'); 844 845 var offset = 20 + Math.floor(Math.random() * 60); 846 if (side === 'top' || side === 'bottom') p.style.left = offset + '%'; 847 else p.style.top = offset + '%'; 848 p.innerHTML = WITCH_SVG; 849 portal(p); 850 document.body.appendChild(p); 851 setTimeout(function() { p.remove(); }, 4200); 852 } 853 854 function castSpell() { 855 if (document.querySelector('.spell-sigil')) return; 856 var dim = document.createElement('div'); 857 dim.className = 'spell-dim'; 858 document.body.appendChild(dim); 859 var s = document.createElement('div'); 860 s.className = 'spell-sigil'; 861 s.innerHTML = '<svg viewBox="-50 -50 100 100" width="240" height="240">' + 862 '<circle cx="0" cy="0" r="45" fill="none" stroke="#d4a86a" stroke-width="0.7"/>' + 863 864 '<path d="M 0 -40 L 23.5 32.4 L -38 -12.4 L 38 -12.4 L -23.5 32.4 Z" ' + 865 'fill="none" stroke="#d4a86a" stroke-width="0.9" stroke-linejoin="round"/>' + 866 '</svg>'; 867 portal(s); 868 document.body.appendChild(s); 869 setTimeout(function() { dim.remove(); s.remove(); }, 2400); 870 } 871 872 document.addEventListener('keydown', function(e) { 873 var key = k(e); 874 875 kbuf.push(key); 876 if (kbuf.length > 10) kbuf.shift(); 877 if (kbuf.length === 10 && kbuf.every(function(v, i) { return v === konami[i]; })) { 878 if (!sessionStorage.getItem('egg-konami')) { 879 sessionStorage.setItem('egg-konami', '1'); 880 summonWitch(true); 881 } else { 882 summonWitch(false); 883 } 884 kbuf = []; 885 } 886 887 if (key.length === 1 && /[a-z]/.test(key)) { 888 typed = (typed + key).slice(-20); 889 if (typed.endsWith('macbeth')) { castSpell(); typed = ''; } 890 } else if (key !== 'shift' && key !== 'capslock') { 891 typed = ''; 892 } 893 }); 894 895 896 if (Math.random() < 0.10) { 897 setTimeout(function() { summonWitch(false); }, 2000 + Math.random() * 8000); 898 } 899 900 901 function schedulePeek() { 902 var delay = 60000 + Math.random() * 30000; 903 setTimeout(function() { 904 if (Math.random() < 0.25 && !document.hidden) peekWitch(); 905 schedulePeek(); 906 }, delay); 907 } 908 schedulePeek(); 909})(); 910</script>
910 911 912 913<button id="back-to-top" aria-label="Back to top">↑</button>
914<script> 915(function() { 916 var btn = document.getElementById('back-to-top'); 917 if (!btn) return; 918 window.addEventListener('scroll', function() { 919 btn.classList.toggle('visible', window.scrollY > 400); 920 }); 921 btn.addEventListener('click', function() { 922 window.scrollTo({top: 0, behavior: 'smooth'}); 923 }); 924})(); 925</script>
925 926 927 928 929<div class="footer"> 930 <ul class="menu"> 931 932 <li><a href="/"><span data-hover="Home">Home</span></a></li> 933 934 <li><a href="/tags/%E9%95%BF%E6%96%87"><span data-hover="é¿æ">é¿æ</span></a></li> 935 936 <li><a href="/series/"><span data-hover="æè®°">æè®°</span></a></li> 937 938 <li><a href="/vlog"><span data-hover="Vlog">Vlog</span></a></li> 939 940 <li><a href="/tags/%E6%B8%B8%E8%AE%B0"><span data-hover="游记">游记</span></a></li> 941 942 <li><a href="/photos"><span data-hover="ç¸å">ç¸å</span></a></li> 943 944 <li><a href="/notes"><span data-hover="çè®°">çè®°</span></a></li> 945 946 <li><a href="/100"><span data-hover="100 ä»¶äº">100 ä»¶äº</span></a></li> 947 948 <li><a href="/travel"><span data-hover="å°å¾">å°å¾</span></a></li> 949 950 <li><a href="/archive"><span data-hover="åæ¡£">åæ¡£</span></a></li> 951 952 <li><a href="/about"><span data-hover="About Me">About Me</span></a></li> 953 954 <li><a href="/index.xml"><span data-hover="RSS">RSS</span></a></li> 955 956 </ul> 957 958</div> 959</footer>
vendor: 76 bytes, lines 959-966
959 960 961 962 963 964 965 966 <script async src="https://www.googletagmanager.com/gtag/js?id=
966G-GXV0HP1VMW
vendor: 18 bytes, lines 966-967
966"></script> 967
967<script> 968 var doNotTrack = false; 969 if ( true ) { 970 var dnt = (navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack); 971 var doNotTrack = (dnt == "1" || dnt == "yes"); 972 } 973 if (!doNotTrack) { 974
vendor: 157 bytes, lines 974-977
974window.dataLayer = window.dataLayer || []; 975 function gtag(){dataLayer.push(arguments);} 976 gtag('js', new Date()); 977 gtag('config', '
977G-GXV0HP1VMW
vendor: 12 bytes, lines 977-978
977'); 978
978} 979 </script>
979 980 981</body> 982</html> 983
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.