137 lines
No EOL
24 KiB
HTML
137 lines
No EOL
24 KiB
HTML
<!doctype html><html lang=en dir=auto><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="noindex, nofollow"><title>October '25 | AlipourIm journeys</title>
|
||
<meta name=keywords content><meta name=description content="1st
|
||
Ok, let’s start the month by declareing some goals and agendas.
|
||
What do I want to do this month?
|
||
|
||
Finish previous semester.
|
||
Pick the last of the course work for my prep phase.
|
||
Finalize the CoNEXT student workshop paper.
|
||
Finish my second RIL.
|
||
Start my 3rd and last RIL.
|
||
Learn more Go to become more comfortable with it, but how do I set this as a measureable goal?
|
||
More literature review, persumabely all of FOCI related papers this month.
|
||
Work on my codebase:
|
||
|
||
Do code cleaning
|
||
Add comments for code
|
||
Start working on ICMP stuff
|
||
|
||
|
||
More socializing! :-)
|
||
A fun pet project? Maybe with Go? Maybe with 3d printer? Idk.
|
||
Enhance your routines and add exercise to it please!
|
||
|
||
Alright. Now that the goals are set, let’s start the month strong!
|
||
My last exam for pervious semester will be on October 7th.
|
||
I have done 74 ECTS, another 6 will be my last RIL.
|
||
If they give me Router Lab, 4 of it would count as ungraded along with an advance course such as either NN, ML sec or EML I would be done with the requirements for my prep phase.
|
||
I then just need to do my QE for which I should submit my first paper for which I’m doing work!"><meta name=author content="Iman Alipour"><link rel=canonical href=https://blog.alipour.eu/phd_journey/october_2025/><link crossorigin=anonymous href=/assets/css/stylesheet.31b150d909186c48d6dbbf653acc2489945fa9ac2c8f8cd3fe8448e89e40fccf.css integrity="sha256-MbFQ2QkYbEjW279lOswkiZRfqawsj4zT/oRI6J5A/M8=" rel="preload stylesheet" as=style><link rel=icon href=https://blog.alipour.eu/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://blog.alipour.eu/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://blog.alipour.eu/favicon-32x32.png><link rel=apple-touch-icon href=https://blog.alipour.eu/apple-touch-icon.png><link rel=mask-icon href=https://blog.alipour.eu/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=https://blog.alipour.eu/phd_journey/october_2025/><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51)}.list{background:var(--theme)}.list:not(.dark)::-webkit-scrollbar-track{background:0 0}.list:not(.dark)::-webkit-scrollbar-thumb{border-color:var(--theme)}}</style></noscript><script>(function(){window.goatcounter={endpoint:"/count"};const e=document.createElement("script");e.async=!0,e.src="/js/count.js",document.head.appendChild(e)})()</script><script>(function(){const s="",t=new Intl.NumberFormat,o="visit",i="visits";function a(e){document.readyState==="complete"||document.readyState==="interactive"?setTimeout(e,0):document.addEventListener("DOMContentLoaded",e)}function r(){try{return window.goatcounter&&window.goatcounter.get_data?window.goatcounter.get_data().p:location.pathname}catch{return location.pathname}}async function e(e,t){try{const o=new URLSearchParams({t:String(Date.now())});t&&o.set("start",t);const a=`${s}/counter/${encodeURIComponent(e)}.json?${o}`,n=await fetch(a,{credentials:"omit"});if(n.status===404)return 0;if(!n.ok)throw 0;const r=await n.json(),i=Number(String(r.count).replace(/,/g,""));return Number.isFinite(i)?i:0}catch{return null}}const n=e=>e===null?"—":`${t.format(e)} ${e===1?o:i}`;a(async function(){const s=document.querySelector(".post-single");if(s){const t=s.querySelector(".post-header .post-meta, .post-header .entry-meta, .post-meta"),o=await e(r());if(t){let e=t.querySelector(".post-views");e||(e=document.createElement("span"),e.className="post-views",t.appendChild(e)),e.textContent=n(o??0)}}const i=document.querySelectorAll("article.post-entry");await Promise.all(Array.from(i).map(async t=>{const s=t.querySelector(".entry-footer, .post-meta"),o=t.querySelector("a.entry-link, h2 a, .entry-title a");if(!s||!o)return;try{const i=new URL(o.getAttribute("href"),location.origin);if(i.origin!==location.origin)return;let t=s.querySelector(".post-views");t||(t=document.createElement("span"),t.className="post-views",s.appendChild(t)),t.textContent=n(await e(i.pathname)??0)}catch{}}));const o=document.getElementById("gc_site_visitors_week");if(o){const n=await e("TOTAL","week");o.textContent=n===null?"—":t.format(n)}})})()</script></head><body id=top><script>localStorage.getItem("pref-theme")==="dark"?document.body.classList.add("dark"):localStorage.getItem("pref-theme")==="light"?document.body.classList.remove("dark"):window.matchMedia("(prefers-color-scheme: dark)").matches&&document.body.classList.add("dark")</script><header class=header><nav class=nav><div class=logo><a href=https://blog.alipour.eu/ accesskey=h title="AlipourIm journeys (Alt + H)">AlipourIm journeys</a><div class=logo-switches><button id=theme-toggle accesskey=t title="(Alt + T)" aria-label="Toggle theme"><svg id="moon" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg><svg id="sun" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://blog.alipour.eu/posts/ title=Posts><span>Posts</span></a></li><li><a href=https://blog.alipour.eu/phd_journey/ title=PhD_journey><span>PhD_journey</span></a></li><li><a href=https://blog.alipour.eu/about/ title=About><span>About</span></a></li></ul></nav></header><main class=main><article class=post-single><header class=post-header><div class=breadcrumbs><a href=https://blog.alipour.eu/>Home</a> » <a href=https://blog.alipour.eu/phd_journey/>PhD_journeys</a></div><h1 class="post-title entry-hint-parent">October '25</h1><div class=post-meta><span title='2025-10-31 08:40:43 +0000 UTC'>October 31, 2025</span> · 8 min · Iman Alipour
|
||
<span class=post-meta-item><a href=https://blog.alipour.eu/phd_journey/october_2025/#isso-thread class=isso-comments-link>Comments</a></span></div></header><div class=post-content><h1 id=1st>1st<a hidden class=anchor aria-hidden=true href=#1st>#</a></h1><p>Ok, let’s start the month by declareing some goals and agendas.</p><p>What do I want to do this month?</p><ul><li>Finish previous semester.</li><li>Pick the last of the course work for my prep phase.</li><li>Finalize the CoNEXT student workshop paper.</li><li>Finish my second RIL.</li><li>Start my 3rd and last RIL.</li><li>Learn more Go to become more comfortable with it, but how do I set this as a measureable goal?</li><li>More literature review, persumabely all of FOCI related papers this month.</li><li>Work on my codebase:<ol><li>Do code cleaning</li><li>Add comments for code</li><li>Start working on ICMP stuff</li></ol></li><li>More socializing! :-)</li><li>A fun pet project? Maybe with Go? Maybe with 3d printer? Idk.</li><li>Enhance your routines and add exercise to it please!</li></ul><p>Alright. Now that the goals are set, let’s start the month strong!
|
||
My last exam for pervious semester will be on October 7th.
|
||
I have done 74 ECTS, another 6 will be my last RIL.
|
||
If they give me Router Lab, 4 of it would count as ungraded along with an advance course such as either NN, ML sec or EML I would be done with the requirements for my prep phase.
|
||
I then just need to do my QE for which I should submit my first paper for which I’m doing work!</p><p>I have started to take SSRIs again.
|
||
I used to take them before I came to Germany to start my PhD, but after coming here things were going really well for many months, and I wanted to cut the medication.
|
||
I was taking more than just SSRIs actually, and my psychiatrist agreed to cut all other three medications but advised me to keep taking my SSRI.
|
||
After being all happy and things working very well, we started to cut the last piece of the puzzle.
|
||
We agreed to reduce the dosage by 0.25% of the max and wait for one month.
|
||
Things were going really well for the first two and a half month, and then it happened.
|
||
The catastrophe that put me in my worst mental and physicall position happened to me.
|
||
It’s not something I want to talk about in my blog, well at least for now, but I’ve tried to talk about it with my closest friends.
|
||
It’s so sad that things happened the way they did.
|
||
I never really fully recovered.
|
||
But… time has passed.
|
||
Almost 8 months now.
|
||
I should not have continued to cut my medication, but I did.
|
||
I damaged myself badly by being stubborn.
|
||
My brother who knew everything insisted that I should continue the usage, but I didn’t listen.
|
||
My parents didn’t know anything, but could see thier happy son turning into the saddest, most depressed thing of all time.
|
||
I was scared of my own shadow for more than one month.
|
||
I eventually started to go out, but seeing some certain people made me uncomfortable.
|
||
This is another thing I haven’t been able to figure out.
|
||
In the end, I just endured pain, a lot of pain.
|
||
I’m glad I didn’t break, but I do think most people would’ve.
|
||
To deal with this pain, I decided to take many courses.
|
||
Cure pain with more pain.
|
||
What a fool I was.
|
||
I just tore myself up mentally and added much more unneeded stress.</p><p>Did I mention I didn’t show up in office for 6 weeks?
|
||
And that when I came back I was hit again with things I didn’t understand?
|
||
Sometimes in life shit happens, but this was a whole new level.
|
||
I don’t know how much of this I want to talk about publicly, but I do want to just say that I was hurt really badly.
|
||
I’ve been trying to just lay low, stick to myself, and stay the hell out of trouble.</p><h1 id=3rd>3rd<a hidden class=anchor aria-hidden=true href=#3rd>#</a></h1><p>Today is the German unity day, and we have a long weekend ahead!
|
||
Other than that, last night was one of the most fantabolous days of my life.
|
||
I’m feeling more content and secure.
|
||
I’m feeling true happiness.
|
||
I don’t know how much the SSRI is affecting me, but I know one thing for sure.
|
||
I’m just like I used to be 9 months ago.
|
||
Just as jolly, positive, and feeling like I’m on top of the world.
|
||
Thinking about it a bit more, I do think I’m being a bit less passionate about my work.
|
||
What could be the reason? Different priorities? Nah. I really love my research and care about it.
|
||
I think it’s just that there is no pressure on me, and no deadline.
|
||
I will try to set small deadlines for myself and force myself to be more productive.
|
||
Oh, and the SSRI adverse effects are visible! Yeah… But it’s going to be alright, I’m sure of it.
|
||
I have an exam I need to prepare for on 7th, but I’ve been procrastinating. I should plan my days and stick to it. Hell yes.</p><h1 id=5th>5th<a hidden class=anchor aria-hidden=true href=#5th>#</a></h1><p>My student workshop paper to CoNEXT ‘25 was rejected.
|
||
It got one weak accept and one weak reject, with both reviewers claiming to have somewhat familiarity with the topic.</p><p>First review (wa) provided two suggestions for improving the work.
|
||
However, as this was a workshop paper, the goal was to talk about the research in the presentation and afterwards fine-tune details.</p><p>Second review (wr) asked for more details.
|
||
In the end they suggested only focusing on one approach and it’s evaluation.
|
||
This kinda defeated the purpose of what I was trying to do, to provide “tools”.</p><p>Another thing they mentioned was how ML-based traffic analysis can be used to detect evasion.
|
||
This is indeed something I like to work on and look at in the near future.</p><h1 id=7th>7th<a hidden class=anchor aria-hidden=true href=#7th>#</a></h1><p>Stressful day.
|
||
I had my last exam, the exam for Interactive systems that I did not attend the main exam for.
|
||
I tried to study over the weekend, but some weird things happened throughout the weekend, making my very distracted mind even more distracted.
|
||
I don’t know how I did, but I’m glad I did the exam.
|
||
Hopefully I did alright, although I kinda do know some of the mistakes I’ve made, which is a really bad sign…
|
||
I hope I won’t have to take another extra course in the next semesters, that would just be annoying.
|
||
I really do hope so.</p><h1 id=8th>8th<a hidden class=anchor aria-hidden=true href=#8th>#</a></h1><p>I’m back at work, still very distracted with life.
|
||
I do need to do literature review, expand my framework, and focus on my work.
|
||
It’s a Wednesday unfortunately, meaning I have my German class until 9:30, which today it lasted until 9:45, and then we have cookies at 14:00.
|
||
I hope I can get myself together and start being productive again.</p><h1 id=9th>9th<a hidden class=anchor aria-hidden=true href=#9th>#</a></h1><p>I will be doing literature review today.
|
||
Yesteday I didn’t manage to get myself together. Drat.
|
||
There will be a nice social event later today too.
|
||
I can rest and socialize with my group’s amazing people!
|
||
It’ll be fun! :)</p><p>Another fun thing is that I will get my very own physical GFW box today.
|
||
It’s probably the most majestic thing that could’ve happened?
|
||
The reason for it is that a month ago there was a leak for GFW.
|
||
Lucky us I guess.</p><h1 id=13th>13th<a hidden class=anchor aria-hidden=true href=#13th>#</a></h1><p>Last week was again not a productive week.
|
||
I will start to plan my days from now on.
|
||
The important things are literature review, working on the code base, and looking at the box a bit.
|
||
Unfortunately the new semester also starts from today.
|
||
I’ll be having one, at most two courses.</p><h1 id=17th>17th<a hidden class=anchor aria-hidden=true href=#17th>#</a></h1><p>Another unproductive week.
|
||
I think this was the worst one actually.
|
||
I can’t focus on reading the papers, I get distracted easily or lose interest.
|
||
Tobias suggested USENIX’s 3-slide slide deck to enhance my focus, I’ll give it a try.</p><p>I also need to address the elephant in the room, and start working on the codebase.</p><p>I also need to look at the GFW files more, and try to find useful stuff there.</p><p>But first I need to work on HTDN’s papers, and craft the slides. That is the highest priority on my list. I’ll do it.</p><hr><h1 id=31st>31st<a hidden class=anchor aria-hidden=true href=#31st>#</a></h1><p>It went by.
|
||
It went by quickly.
|
||
I wasn’t able to pick myself up this month, but I won’t let it happen in the following.
|
||
I want to be truthful, so I won’t hide anything.
|
||
the only thing is I should’ve let myself grief a bit, and I did. I’m proud of it. It’s fine.
|
||
For next month, I will start strong, try to get myself together, and pick myself up. I will make progress.
|
||
I promise.</p><p>Also I think there is no point in me ranting everyday or every once in a while in my PhD journey posts? Maybe it’s not a bad thing. The problem is I don’t have much to present, and that’s why this is the content. Idk if I change the structure or not, but for now it is what it is.</p><p>Ok, let’s set some goals for next month in advance, then we can see how good we did.</p><ul><li>I want to work on ICMP stuff and make it work nicely.</li><li>I want to do more literature review, maybe read all 2025 and 2024 censorship papers. Cross your fingers for this.</li><li>I need to keep up with my courses, including the German class.</li><li>I might work more on the GFW leaked data, but I think it’s not a priority for me for now. So… scrap this last one.</li></ul><div class=signature-block style=margin-top:1rem><p><strong>Downloads:</strong>
|
||
<a href=/sources/PhD_journey/October_2025.md>Markdown</a> ·
|
||
<a href=/sources/PhD_journey/October_2025.md.asc>Signature (.asc)</a></p><details class=signature><summary>View OpenPGP signature</summary><pre style=font-size:.85em;overflow-x:auto;padding:.75rem>-----BEGIN PGP SIGNATURE-----
|
||
|
||
iQIzBAABCgAdFiEEVaKl3oR5K6zGyu4/tYgoUOBMjSoFAmpkbtwACgkQtYgoUOBM
|
||
jSryHhAAvH+XWK2675p6vFyzP9ZVDmyh1klyhNM/rLiErk5GfmnwNmKQIFxoMei9
|
||
2UuypSgH7l7mG9Ga+1Ph9W5YhA0qMMbA5LVWMyqlRfvVF9hoY4On21YRBieXqwsx
|
||
G4jS7A4PxYZbRt8+lVuyphe+KMRiwOMfPuWoIse2hfpfhs64h+cmZVPen5zsWHD5
|
||
2jAV888Y5oqGc9uISf380zBqEn3jIJOxiWCi+4vS6p87h0x8E2tVqCUNQEGgiriu
|
||
NLBkMOkuXAlQZnnv379jX4wh7N79bVjDoH3IHRQx+W8FqEGzu11D3VxO85+Q5/EY
|
||
n0FvOI4EXtWAHKjsHFcEX/MfXESy5zwNgIWW7+8OYnIv1CRPLPz/hHoZxklkflyZ
|
||
yqNdg8o+aRHsqbDVQxIKQXH5xUEcDH+9A7bRxmCmgksML01dPnrcw4ioYzu+t0em
|
||
4DRVp1HWJP/P7Sv2QrR6KgLS3DINRzC7ZkzV7Yeg40eQcb7BadEAZZ9aEjjDJtR0
|
||
B/n18yUje9BWNFc7nYKkmBYO4UU4L5O1lJWQZhgLrfWxZziJSRs2WTD+tKsbY+5/
|
||
YSEmToD9nAFioRSpWIV9/uYlsJYfGFtCCgNb/JD2uE+bROitVdZ6auE5AXmef1aN
|
||
t1QRAQvtpctfFlmwkDdb0BLFS5GSbRr55mkLg1yGS2o4zsC6FQ8=
|
||
=NvQ7
|
||
-----END PGP SIGNATURE-----
|
||
</pre></details><p><em>Verify locally:</em></p><pre style=font-size:.85em;overflow-x:auto;padding:.75rem>curl -fSLO https://blog.alipour.eu/sources/PhD_journey/October_2025.md
|
||
curl -fSLO https://blog.alipour.eu/sources/PhD_journey/October_2025.md.asc
|
||
gpg --verify October_2025.md.asc October_2025.md
|
||
</pre></div></div><footer class=post-footer><ul class=post-tags></ul><nav class=paginav><a class=prev href=https://blog.alipour.eu/posts/cupid/><span class=title>« Prev</span><br><span>Cupid is so dumb</span>
|
||
</a><a class=next href=https://blog.alipour.eu/posts/e2ee/><span class=title>Next »</span><br><span>Sending End‑to‑End Encrypted Email (E2EE) without losing friends</span></a></nav></footer><div class=comments-switch style="display:flex;gap:.5rem;margin:.5rem 0 1rem"><button id=btn-isso type=button aria-pressed=true>Anonymous (Isso)</button>
|
||
<button id=btn-giscus type=button aria-pressed=false>GitHub (Giscus)</button>
|
||
<a href=https://github.com/AlipourIm/blog-comments/discussions/categories/comments target=_blank rel=noopener>Open on GitHub ↗</a></div><div id=panel-giscus style=display:none><section id=giscus-thread></section></div><div id=panel-isso><section id=isso-thread data-isso-id=/phd_journey/october_2025/ data-title="October &#39;25"><noscript>Javascript needs to be activated to view comments.</noscript></section><script src=/isso/js/embed.min.js data-isso=/isso/ data-isso-css=false data-isso-lang=en data-isso-max-comments-nested=5 data-isso-sorting=newest async></script><small class=isso-powered style="display:block;margin:.5rem 0;color:var(--secondary,#888)">Comments powered by <a href=https://isso-comments.de target=_blank rel=noopener>Isso</a></small></div><script>(function(){var i=document.getElementById("panel-isso"),a=document.getElementById("panel-giscus"),e=document.getElementById("btn-isso"),t=document.getElementById("btn-giscus"),s=!1;function r(){if(n=localStorage.getItem("pref-theme"),n==="dark")return!0;if(n==="light")return!1;var n,e=document.documentElement,t=document.body;return!!(e.classList&&e.classList.contains("dark")||t.classList&&t.classList.contains("dark")||e.getAttribute("data-theme")==="dark"||t.getAttribute("data-theme")==="dark"||e.classList&&e.classList.contains("theme-dark")||t.classList&&t.classList.contains("theme-dark"))||window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}function o(){return r()?"dark_dimmed":"noborder_light"}function c(){if(s)return;var t,n,e=document.createElement("script");e.src="https://giscus.app/client.js",e.async=!0,e.crossOrigin="anonymous",e.setAttribute("data-repo","AlipourIm/blog-comments"),e.setAttribute("data-repo-id","R_kgDOQGARyA"),e.setAttribute("data-category","Comments"),e.setAttribute("data-category-id","DIC_kwDOQGARyM4Cw3x-"),e.setAttribute("data-mapping","pathname"),e.setAttribute("data-strict","0"),e.setAttribute("data-reactions-enabled","1"),e.setAttribute("data-emit-metadata","0"),e.setAttribute("data-input-position","bottom"),e.setAttribute("data-lang","en"),e.setAttribute("data-theme",o()),document.getElementById("giscus-thread").appendChild(e);function i(){var e=document.querySelector("iframe.giscus-frame");e&&e.contentWindow&&e.contentWindow.postMessage({giscus:{setConfig:{theme:o()}}},"https://giscus.app")}t=document.getElementById("theme-toggle"),t&&t.addEventListener("click",function(){setTimeout(i,0)}),n=new MutationObserver(function(){i()}),n.observe(document.documentElement,{attributes:!0,attributeFilter:["class","data-theme"]}),n.observe(document.body,{attributes:!0,attributeFilter:["class","data-theme"]}),s=!0}function n(n){var s=n==="isso";i.style.display=s?"block":"none",a.style.display=s?"none":"block",e&&e.setAttribute("aria-pressed",s?"true":"false"),t&&t.setAttribute("aria-pressed",s?"false":"true"),s||c()}e&&e.addEventListener("click",function(e){e.preventDefault(),n("isso")}),t&&t.addEventListener("click",function(e){e.preventDefault(),n("giscus")}),n("isso")})()</script></article></main><footer class=footer><span>© 2026 <a href=https://blog.alipour.eu/>AlipourIm journeys</a></span> ·
|
||
<span>Powered by
|
||
<a href=https://gohugo.io/ rel="noopener noreferrer" target=_blank>Hugo</a> &
|
||
<a href=https://github.com/adityatelange/hugo-PaperMod/ rel=noopener target=_blank>PaperMod</a></span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentcolor"><path d="M12 6H0l6-6z"/></svg></a><div class=site-meta-row style=display:flex;align-items:center;gap:.75rem;flex-wrap:wrap><a href=/index.xml rel=alternate type=application/rss+xml title=RSS class=rss-link style=display:inline-flex;align-items:center;gap:.35rem><svg viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg>
|
||
<span>RSS</span>
|
||
</a><span aria-hidden=true>·</span>
|
||
<span>Visitors this week: <span id=gc_site_visitors_week>—</span></span></div><script>let menu=document.getElementById("menu");menu&&(menu.scrollLeft=localStorage.getItem("menu-scroll-position"),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}),document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{document.body.className.includes("dark")?(document.body.classList.remove("dark"),localStorage.setItem("pref-theme","light")):(document.body.classList.add("dark"),localStorage.setItem("pref-theme","dark"))})</script><script>document.querySelectorAll("pre > code").forEach(e=>{const n=e.parentNode.parentNode,t=document.createElement("button");t.classList.add("copy-code"),t.innerHTML="copy";function s(){t.innerHTML="copied!",setTimeout(()=>{t.innerHTML="copy"},2e3)}t.addEventListener("click",t=>{if("clipboard"in navigator){navigator.clipboard.writeText(e.textContent),s();return}const n=document.createRange();n.selectNodeContents(e);const o=window.getSelection();o.removeAllRanges(),o.addRange(n);try{document.execCommand("copy"),s()}catch{}o.removeRange(n)}),n.classList.contains("highlight")?n.appendChild(t):n.parentNode.firstChild==n||(e.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName=="TABLE"?e.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(t):e.parentNode.appendChild(t))})</script></body></html> |