PageSourceSearch

https://nusr.github.io/about/

html nusr.github.io collected 2026-10-03 09:42:00 UTC 13,758 bytes, 176 lines download raw bytes

1<!DOCTYPE html><html lang="zh" class="false"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="canonical" href="https://nusr.github.io/about/"><meta name="generator" content="Astro v4.4.7"><!-- General Meta Tags --><title>About | Steve Xu</title><meta name="title" content="About | Steve Xu"><meta name="description" content="Welcome to My Blog"><meta name="author" content="Steve Xu"><!-- Open Graph / Facebook --><meta property="og:title" content="About | Steve Xu"><meta property="og:description" content="Welcome to My Blog"><meta property="og:url" content="https://nusr.github.io/about/"><meta property="og:image" content="https://nusr.github.io/op.jpeg"><!-- Article Published/Modified time --><!-- Twitter --><meta property="twitter:card" content="summary_large_image"><meta property="twitter:url" content="https://nusr.github.io/about/"><meta property="twitter:title" content="About | Steve Xu"><meta property="twitter:description" content="Welcome to My Blog"><meta property="twitter:image" content="https://nusr.github.io/op.jpeg"><meta name="theme-color" content=""><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate"><link rel="stylesheet" href="/_astro/about.CXnmc6_F.css" />
1<script type="module" src="/_astro/hoisted.B2MTPbHz.js"></script>
1</head> <body>  <header class="astro-3ef6ksr2"> <a id="skip-to-content" href="#main-content" class="astro-3ef6ksr2">Skip to content</a> <div class="nav-container astro-3ef6ksr2"> <div class="top-nav-wrap astro-3ef6ksr2"> <a href="/" class="logo whitespace-nowrap astro-3ef6ksr2"> Steve Xu </a> <nav id="nav-menu" class="astro-3ef6ksr2"> <button class="hamburger-menu focus-outline astro-3ef6ksr2" aria-label="Open Menu" aria-expanded="false" aria-controls="menu-items"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="menu-icon astro-3ef6ksr2"> <line x1="7" y1="12" x2="21" y2="12" class="line astro-3ef6ksr2"></line> <line x1="3" y1="6" x2="21" y2="6" class="line astro-3ef6ksr2"></line> <line x1="12" y1="18" x2="21" y2="18" class="line astro-3ef6ksr2"></line> <line x1="18" y1="6" x2="6" y2="18" class="close astro-3ef6ksr2"></line> <line x1="6" y1="6" x2="18" y2="18" class="close astro-3ef6ksr2"></line> </svg> </button> <ul id="menu-items" class="display-none sm:flex astro-3ef6ksr2"> <li class="astro-3ef6ksr2"> <a href="/" class=" astro-3ef6ksr2"> Home </a> </li> <li class="astro-3ef6ksr2"> <a href="/archives/" class=" astro-3ef6ksr2">
2Archives
3</a> </li> <li class="astro-3ef6ksr2"> <a href="/tags/" class=" astro-3ef6ksr2">
4Tags
5</a> </li> <li class="astro-3ef6ksr2"> <a href="/about/" class="active astro-3ef6ksr2">
6About
7</a> </li> <li class="astro-3ef6ksr2"> <a href="/search/" class="group inline-block hover:text-skin-accent focus-outline p-3 sm:p-1  flex astro-3ef6ksr2" aria-label="search" title="Search" target="_self"> <svg xmlns="http://www.w3.org/2000/svg" class="scale-125 sm:scale-100 astro-3ef6ksr2"><path d="M19.023 16.977a35.13 35.13 0 0 1-1.367-1.384c-.372-.378-.596-.653-.596-.653l-2.8-1.337A6.962 6.962 0 0 0 16 9c0-3.859-3.14-7-7-7S2 5.141 2 9s3.14 7 7 7c1.763 0 3.37-.66 4.603-1.739l1.337 2.8s.275.224.653.596c.387.363.896.854 1.384 1.367l1.358 1.392.604.646 2.121-2.121-.646-.604c-.379-.372-.885-.866-1.391-1.36zM9 14c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5z" class="astro-3ef6ksr2"></path> </svg> <span class="sr-only astro-3ef6ksr2">Search</span> </a> </li> <li class="astro-3ef6ksr2"> <button id="theme-btn" class="focus-outline astro-3ef6ksr2" title="Toggles light & dark" aria-label="auto" aria-live="polite"> <svg xmlns="http://www.w3.org/2000/svg" id="moon-svg" class="astro-3ef6ksr2"> <path d="M20.742 13.045a8.088 8.088 0 0 1-2.077.271c-2.135 0-4.14-.83-5.646-2.336a8.025 8.025 0 0 1-2.064-7.723A1 1 0 0 0 9.73 2.034a10.014 10.014 0 0 0-4.489 2.582c-3.898 3.898-3.898 10.243 0 14.143a9.937 9.937 0 0 0 7.072 2.93 9.93 9.93 0 0 0 7.07-2.929 10.007 10.007 0 0 0 2.583-4.491 1.001 1.001 0 0 0-1.224-1.224zm-2.772 4.301a7.947 7.947 0 0 1-5.656 2.343 7.953 7.953 0 0 1-5.658-2.344c-3.118-3.119-3.118-8.195 0-11.314a7.923 7.923 0 0 1 2.06-1.483 10.027 10.027 0 0 0 2.89 7.848 9.972 9.972 0 0 0 7.848 2.891 8.036 8.036 0 0 1-1.484 2.059z" class="astro-3ef6ksr2"></path> </svg> <svg xmlns="http://www.w3.org/2000/svg" id="sun-svg" class="astro-3ef6ksr2"> <path d="M6.993 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007S14.761 6.993 12 6.993 6.993 9.239 6.993 12zM12 8.993c1.658 0 3.007 1.349 3.007 3.007S13.658 15.007 12 15.007 8.993 13.658 8.993 12 10.342 8.993 12 8.993zM10.998 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2h-3zm17 0h3v2h-3zM4.219 18.363l2.12-2.122 1.415 1.414-2.12 2.122zM16.24 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.342 7.759 4.22 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z" class="astro-3ef6ksr2"></path> </svg> </button> </li> </ul> </nav> </div> </div> <div class="mx-auto max-w-3xl px-4 astro-3ef6ksr2"> <hr class="border-skin-line astro-3ef6ksr2" aria-hidden> </div> </header>   <main id="main-content"> <section id="about" class="prose mb-28 max-w-3xl prose-img:border-0"> <h1 class="mt-6 text-2xl tracking-wider sm:text-3xl"> About </h1> <p class="mt-4"><p>I am a software engineer.</p>
8<p><a href="https://github.com/nusr">github</a></p></p> </section> </main> 
8<script src="https://utteranc.es/client.js" repo="nusr/nusr.github.io" issue-term="title" theme="preferred-color-scheme" label="comment" crossorigin="anonymous" async></script>
8<footer class="mt-auto astro-sz7xmlte"> <div class="mx-auto max-w-3xl px-0 astro-sz7xmlte"> <hr class="border-skin-line astro-sz7xmlte" aria-hidden> </div> <div class="footer-wrapper astro-sz7xmlte"> <div class="social-icons flex astro-xfej6wit"> <a href="https://github.com/nusr/nusr.github.io" class="group inline-block hover:text-skin-accent link-button astro-xfej6wit" title="Steve Xu on Github" target="_blank"> <svg viewBox="0 0 16 16" aria-hidden="true" width="32" height="32" astro-icon="social/github"><path
9    fill="currentColor"
10    d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"
11  ></path></svg> <span class="sr-only astro-xfej6wit">Steve Xu on Github</span> </a><a href="/rss.xml" class="group inline-block hover:text-skin-accent link-button astro-xfej6wit" title="Steve Xu RSS" target="_blank">  <svg viewBox="0 0 1024 1024" aria-hidden="true" width="32" height="32"><path
12    fill="currentColor"
13    d="M42.666667 853.333333a128 128 0 1 1 256 0 128 128 0 0 1-256 0z m938.666666 128h-178.773333c0-418.986667-340.906667-759.893333-759.893333-759.893333V42.666667c517.546667 0 938.666667 421.12 938.666666 938.666666z m-298.666666 0h-182.826667c0-252.074667-205.098667-457.130667-457.173333-457.130666V341.333333c352.896 0 640 287.104 640 640z"></path></svg> <span class="sr-only astro-xfej6wit">Steve Xu RSS</span> </a><a href="https://twitter.com/stevenusr" class="group inline-block hover:text-skin-accent link-button astro-xfej6wit" title="Steve Xu on Twitter" target="_blank"> <svg
14      xmlns="http://www.w3.org/2000/svg"
15      class="icon-tabler"
16      stroke-linecap="round"
17      stroke-linejoin="round"
18    >
19      <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
20      <path d="M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z"></path>
21    </svg> <span class="sr-only astro-xfej6wit">Steve Xu on Twitter</span> </a><a href="mailto:[email protected]" class="group inline-block hover:text-skin-accent link-button astro-xfej6wit" title="Send an email to Steve Xu" target="_blank"> <svg
22      xmlns="http://www.w3.org/2000/svg"
23      class="icon-tabler"
24      stroke-linecap="round"
25      stroke-linejoin="round"
26    >
27      <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
28      <rect x="3" y="5" width="18" height="14" rx="2"></rect>
29      <polyline points="3 7 12 13 21 7"></polyline>
30    </svg> <span class="sr-only astro-xfej6wit">Send an email to Steve Xu</span> </a> </div>  <div class="copyright-wrapper astro-sz7xmlte"> <span class="astro-sz7xmlte">Copyright &#169; 2024</span> <span class="separator astro-sz7xmlte">&nbsp;|&nbsp;</span> <span class="astro-sz7xmlte">All rights reserved.</span> <span class="separator astro-sz7xmlte">&nbsp;|&nbsp;</span> <span class="astro-sz7xmlte">Powered by <a href="https://astro.build" target="_blank" class="astro-sz7xmlte">Astro</a></span> </div> </div> </footer>   
30<script src="/toggle-theme.js" async></script>
30 
30<script async src="https://www.google-analytics.com/analytics.js"></script>
30 
30<script async>(function(){const id = "UA-138883536-1";
31
32  window.ga =
33    window.ga ||
34    function () {
35      (window.ga.q = window.ga.q || []).push(arguments);
36    };
37  window.ga.l = +new Date();
38  window.ga("create", id, "auto");
39  window.ga("set", "anonymizeIp", true);
40  window.ga("send", "pageview");
41})();</script>
41 
41<script async>(function(){const apiKey = "da1a9b67ea6a904027cfc8b581c0086c";
42
43  !(function () {
44    "use strict";
45    !(function (e, t) {
46      var n = e.amplitude || { _q: [], _iq: {} };
47      if (n.invoked)
48        e.console &&
49          console.error &&
50          console.error("Amplitude snippet has been loaded.");
51      else {
52        var r = function (e, t) {
53            e.prototype[t] = function () {
54              return (
55                this._q.push({
56                  name: t,
57                  args: Array.prototype.slice.call(arguments, 0),
58                }),
59                this
60              );
61            };
62          },
63          s = function (e, t, n) {
64            return function (r) {
65              e._q.push({
66                name: t,
67                args: Array.prototype.slice.call(n, 0),
68                resolve: r,
69              });
70            };
71          },
72          o = function (e, t, n) {
73            e[t] = function () {
74              if (n)
75                return {
76                  promise: new Promise(
77                    s(e, t, Array.prototype.slice.call(arguments)),
78                  ),
79                };
80            };
81          },
82          i = function (e) {
83            for (var t = 0; t < m.length; t++) o(e, m[t], !1);
84            for (var n = 0; n < g.length; n++) o(e, g[n], !0);
85          };
86        n.invoked = !0;
87        var u = t.createElement("script");
88        (u.type = "text/javascript"),
89          (u.integrity =
90            "sha384-x0ik2D45ZDEEEpYpEuDpmj05fY91P7EOZkgdKmq4dKL/ZAVcufJ+nULFtGn0HIZE"),
91          (u.crossOrigin = "anonymous"),
92          (u.async = !0),
93          (u.src =
94            "https://cdn.amplitude.com/libs/analytics-browser-2.0.0-min.js.gz"),
95          (u.onload = function () {
96            e.amplitude.runQueuedFunctions ||
97              console.log("[Amplitude] Error: could not load SDK");
98          });
99        var a = t.getElementsByTagName("script")[0];
100        a.parentNode.insertBefore(u, a);
101        for (
102          var c = function () {
103              return (this._q = []), this;
104            },
105            p = [
106              "add",
107              "append",
108              "clearAll",
109              "prepend",
110              "set",
111              "setOnce",
112              "unset",
113              "preInsert",
114              "postInsert",
115              "remove",
116              "getUserProperties",
117            ],
118            l = 0;
119          l < p.length;
120          l++
121        )
122          r(c, p[l]);
123        n.Identify = c;
124        for (
125          var d = function () {
126              return (this._q = []), this;
127            },
128            f = [
129              "getEventProperties",
130              "setProductId",
131              "setQuantity",
132              "setPrice",
133              "setRevenue",
134              "setRevenueType",
135              "setEventProperties",
136            ],
137            v = 0;
138          v < f.length;
139          v++
140        )
141          r(d, f[v]);
142        n.Revenue = d;
143        var m = [
144            "getDeviceId",
145            "setDeviceId",
146            "getSessionId",
147            "setSessionId",
148            "getUserId",
149            "setUserId",
150            "setOptOut",
151            "setTransport",
152            "reset",
153            "extendSession",
154          ],
155          g = [
156            "init",
157            "add",
158            "remove",
159            "track",
160            "logEvent",
161            "identify",
162            "groupIdentify",
163            "setGroup",
164            "revenue",
165            "flush",
166          ];
167        i(n),
168          (n.createInstance = function (e) {
169            return (n._iq[e] = { _q: [] }), i(n._iq[e]), n._iq[e];
170          }),
171          (e.amplitude = n);
172      }
173    })(window, document);
174  })();
175  window.amplitude.init(apiKey);
176})();</script>
176 
176<script defer src="https://eu.umami.is/script.js" data-website-id="6ca6aa2c-2898-47e1-8747-6c29b3c1626c"></script>
176 </body> </html>

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.