PageSourceSearch

https://rhuen.netlify.app/about/

html rhuen.netlify.app collected 2026-10-03 11:20:47 UTC 39,046 bytes, 983 lines download raw bytes

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&Rfr;&Ifr;&Vfr;&Efr;&Nfr;&Dfr;&Efr;&Lfr;&Lfr;
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="/">&larr; 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&rsquo;s breasts, And take my milk for gall, you murdering ministers,
149Wherever in your sightless substances You wait on nature&rsquo;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 &lsquo;Hold, hold!&rsquo;</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">&uarr;</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.