diff options
Diffstat (limited to 'resume')
-rw-r--r-- | resume/resume.html | 18 | ||||
-rw-r--r-- | resume/resume.js | 67 |
2 files changed, 40 insertions, 45 deletions
diff --git a/resume/resume.html b/resume/resume.html index c9f1b37..219933f 100644 --- a/resume/resume.html +++ b/resume/resume.html @@ -108,24 +108,24 @@ <address> <ul class="fakelist"> <li> - <svg class="icon" role="img" height="12" width="12" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-width="1.1"> + <svg class="icon" role="img" width="12" height="12" viewBox="0 0 640 640"> <title>cgit:</title> - <path aria-hidden="true" d="m8 9 3-3-3-3 M4 3 l-3 3 3 3"/> + <path aria-hidden="true" fill="#ac0000" d="M 215 628c-42-15-70-43-82-83-13-40-9-45 31-45 25 0 34 7 47 32 19 39 61 52 139 45 66-7 90-31 90-87 0-39 0-39-32-29-38 10-141 12-188 3-18-4-48-22-66-41-34-34-34-34-34-182 0-137 2-150 23-181 28-41 82-60 172-59 124 0 195 48 195 131 0 25-3 28-35 28-30 0-35-3-35-23 0-42-26-65-83-72-30-4-73-3-98 2-62 12-79 48-79 168 0 142 23 172 131 174 85 2 129-29 129-90 0-17 6-20 36-17 37 3 37 3 35 118-3 142-15 174-78 201-50 21-167 25-218 7 z"/> </svg> <a href="https://cgit.alxu.ca/">cgit.alxu.ca</a> </li> <li> - <svg class="icon" role="img" height="12" width="12" fill="none" stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.1"> + <svg class="icon" role="img" width="12" height="12" viewBox="0 0 325 317"> <title>GitHub:</title> - <path aria-hidden="true" d="m4.625 9.7566971c-2.5.75-2.5-1.25-3.5-1.5m7 3v-1.935a1.685 1.685 0 0 0 -.47-1.305c1.57-.175 3.22-.77 3.22-3.5a2.72 2.72 0 0 0 -.75-1.875 2.535 2.535 0 0 0 -.045-1.885s-.59-.175-1.955.74a6.69 6.69 0 0 0 -3.5 0c-1.365-.915-1.955-.74-1.955-.74a2.535 2.535 0 0 0 -.045 1.885 2.72 2.72 0 0 0 -.75 1.89c0 2.71 1.65 3.305 3.22 3.5a1.685 1.685 0 0 0 -.47 1.29v1.935"/> + <path aria-hidden="true" fill="#1b1817" d="m163 0c-90 0-163 73-163 163 0 72 46 133 111 154 8 2 11-3 11-7v-28c-45 10-55-22-55-22-7-19-18-24-18-24-15-10 1-10 1-10 17 1 25 17 25 17 15 25 38 18 48 14 1-11 5-18 10-22-36-4-74-18-74-81 0-17 6-32 16-43-1-4-7-21 2-44 0 0 14-4 45 17 13-3 27-5 41-5 13 0 27 2 40 5 31-21 45-17 45-17 9 23 3 40 2 44 10 11 17 26 17 43 0 63-39 77-75 81 6 5 11 15 11 30v45c0 4 3 9 11 7 65-21 111-82 111-154 0-90-72-163-162-163"/> </svg> <a href="https://github.com/Hello71">@Hello71</a> <span style="font-style: normal">[</span><a href="https://github.com/search?q=type%3Apr+author%3AHello71&s=created">PRs</a><span style="font-style: normal">]</span> </li> <li> <svg class="icon" role="img" width="15" height="16" fill="none"> <title>The Mail Archive:</title> - <path aria-hidden="true" stroke="#c21" d="M 1.5 8 l 0 -6.5 l 2.8 6.4 l 2.8 -6.4 l 0 6.5" stroke-linecap="butt" stroke-linejoin="bevel" /> - <path aria-hidden="true" stroke="#000" d="M 8 15 l 3 -7 l 3 7 M 9.5 12.2 l 3 0" /> + <path aria-hidden="true" stroke="#c21" d="M1.5 8l0-6.5l2.8 6.4l2.8-6.4l0 6.5" stroke-linecap="butt" stroke-linejoin="bevel" /> + <path aria-hidden="true" stroke="#000" d="M8 15l3-7l3 7M9.5 12.2l3 0" /> </svg> <a href="https://www.mail-archive.com/search?a=1&l=all&from=alex+xu+(hello71)&o=newest">Alex Xu</a> </li> @@ -198,7 +198,7 @@ <div><h4><b><a href="https://github.com/Dwarf-Therapist/Dwarf-Therapist">Dwarf Therapist</a></b></h4></div> <div class="date"><b>Aug. 2014–Sept. 2017</b><span class="date-punct">:</span></div> </div> - <p><a href="https://github.com/Dwarf-Therapist/Dwarf-Therapist/commits?author=Hello71">Implemented cross-bit ptrace, migrated from qmake to CMake, and refactored code</a>.</p> + <p><a href="https://github.com/Dwarf-Therapist/Dwarf-Therapist/commits?author=Hello71">Implemented cross-bit ptrace, migrated from qmake to CMake, and refactored C++ code</a>.</p> </section> <section class="entry"> <div class="entry-header"> @@ -211,11 +211,11 @@ <div class="gap"></div> <h2 class="left" style="font-size: 1.4em">Skills</h2> <div class="right"> - <p><strong>Alpine</strong>, Debian Linux; FreeBSD; Docker; <strong>Git</strong>; NGINX; <strong>WireGuard</strong>; TCP/IP; HTTP(S); DNS; SSH</p> + <p>Alpine, Debian Linux; FreeBSD; Docker; Git; NGINX; WireGuard; TCP/IP; HTTP(S); DNS; SSH</p> </div> <h3 class="left">Programming</h3> <div class="right"> - <p><strong>C</strong>; C++; Go; <strong>Python</strong>; <strong>bash, POSIX sh</strong>; GNU make; HTML; CSS; JavaScript; SQL</p> + <p>C; C++; Go; Python; bash, POSIX sh; GNU make; HTML; CSS; JavaScript; SQL</p> </div> <script src="resume.js"></script> </body> diff --git a/resume/resume.js b/resume/resume.js index 4f66f24..500b49c 100644 --- a/resume/resume.js +++ b/resume/resume.js @@ -1,46 +1,41 @@ (document => { 'use strict'; - const mangleurls = () => { + let timeout, pending = []; + const flush = () => { + clearTimeout(timeout); + navigator.sendBeacon('https://www.alxu.ca/analytics', new Blob([JSON.stringify(pending)], {type: 'application/json'})); + pending = []; + }; + const queue = (kind, details) => { + clearTimeout(timeout); + pending.push({created_ts: Date.now(), kind: kind, details: details}); + timeout = setTimeout(flush, 2000); + }; + queue('l', ''); + document.addEventListener('visibilitychange', () => { + queue('v', document.visibilityState); + if (document.visibilityState === 'hidden') + flush(); + }); + document.addEventListener('click', e => { + const a = e.target.closest('a'); + if (a) + queue('c', a.href); + }); + window.addEventListener('beforeprint', () => { for (let el of document.getElementsByTagName('a')) { const href = el.href.replace(/^javascript:location=(.*);void 0$/, '$1'); el.setAttribute('data-href', el.href); if (href != el.href) el.href = eval(href); - else el.href = 'https://alxu.ca/analytics?url=' + href.replace(/[%&;]/g, s=>'%'+s.charCodeAt(0).toString(16)); + else el.href = 'https://www.alxu.ca/analytics?url=' + href.replace(/[%&;]/g, s=>'%'+s.charCodeAt(0).toString(16)); } - }; - if (location.hostname === 'www.alxu.ca') { - let timeout, pending = []; - const flush = () => { - clearTimeout(timeout); - navigator.sendBeacon('/analytics', new Blob([JSON.stringify(pending)], {type: 'application/json'})); - pending = []; - }; - const queue = (kind, details) => { - clearTimeout(timeout); - pending.push({created_ts: Date.now(), kind: kind, details: details}); - timeout = setTimeout(flush, 2000); - }; - queue('l', ''); - document.addEventListener('visibilitychange', () => { - queue('v', document.visibilityState); - if (document.visibilityState === 'hidden') - flush(); - }); - document.addEventListener('click', e => { - const a = e.target.closest('a'); - if (a) - queue('c', a.href); - }); - window.addEventListener('beforeprint', mangleurls); - window.addEventListener('afterprint', () => { - for (let el of document.getElementsByTagName('a')) { - el.href = el.getAttribute('data-href'); - el.removeAttribute('data-href'); - } - }); - } else { - mangleurls(); - } + }); + window.addEventListener('afterprint', () => { + for (let el of document.getElementsByTagName('a')) { + el.href = el.getAttribute('data-href'); + el.removeAttribute('data-href'); + } + }); const css = document.styleSheets[0]; if (window.safari) { css.insertRule('@media print{@page{margin:10mm}}', css.cssRules.length); |