Initial import of Hugo site to Forgejo
This commit is contained in:
commit
cb1ba0317f
1259 changed files with 236349 additions and 0 deletions
600
public-onion/about/index.html
Normal file
600
public-onion/about/index.html
Normal file
|
|
@ -0,0 +1,600 @@
|
|||
<!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>About | AlipourIm journeys</title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="Iman Alipour — PhD candidate at MPI-INF. Human-centered security & privacy, usable security, and security measurement. Loves CTFs, hiking, coffee experiments, and making everyday gadgets smart.">
|
||||
<meta name="author" content="Iman Alipour">
|
||||
<link rel="canonical" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/about/">
|
||||
<link crossorigin="anonymous" href="/assets/css/stylesheet.31b150d909186c48d6dbbf653acc2489945fa9ac2c8f8cd3fe8448e89e40fccf.css" integrity="sha256-MbFQ2QkYbEjW279lOswkiZRfqawsj4zT/oRI6J5A/M8=" rel="preload stylesheet" as="style">
|
||||
<link rel="icon" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/favicon-16x16.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/apple-touch-icon.png">
|
||||
<link rel="mask-icon" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/safari-pinned-tab.svg">
|
||||
<meta name="theme-color" content="#2e2e33">
|
||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||||
<link rel="alternate" type="application/rss+xml" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/about/index.xml">
|
||||
<link rel="alternate" hreflang="en" href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/about/">
|
||||
<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 s = document.createElement("script");
|
||||
s.async = true;
|
||||
s.src = "/js/count.js";
|
||||
document.head.appendChild(s);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
|
||||
const GC = "";
|
||||
const nf = new Intl.NumberFormat();
|
||||
const SING = "visit";
|
||||
const PLUR = "visits";
|
||||
|
||||
function ready(fn) {
|
||||
if (document.readyState === "complete" || document.readyState === "interactive") setTimeout(fn, 0);
|
||||
else document.addEventListener("DOMContentLoaded", fn);
|
||||
}
|
||||
|
||||
function gcPath() {
|
||||
try {
|
||||
return window.goatcounter && window.goatcounter.get_data
|
||||
? window.goatcounter.get_data().p
|
||||
: location.pathname;
|
||||
} catch (_) {
|
||||
return location.pathname;
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchCount(path, period) {
|
||||
try {
|
||||
const q = new URLSearchParams({ t: String(Date.now()) });
|
||||
if (period) q.set("start", period);
|
||||
const url = `${GC}/counter/${encodeURIComponent(path)}.json?${q}`;
|
||||
const r = await fetch(url, { credentials: "omit" });
|
||||
if (r.status === 404) return 0;
|
||||
if (!r.ok) throw 0;
|
||||
const j = await r.json();
|
||||
|
||||
const n = Number(String(j.count).replace(/,/g, ""));
|
||||
return Number.isFinite(n) ? n : 0;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
const labelVisits = (n) =>
|
||||
n === null ? "—" : `${nf.format(n)} ${n === 1 ? SING : PLUR}`;
|
||||
|
||||
ready(async function () {
|
||||
const post = document.querySelector(".post-single");
|
||||
if (post) {
|
||||
const meta = post.querySelector(
|
||||
".post-header .post-meta, .post-header .entry-meta, .post-meta"
|
||||
);
|
||||
const visits = await fetchCount(gcPath());
|
||||
if (meta) {
|
||||
let span = meta.querySelector(".post-views");
|
||||
if (!span) {
|
||||
span = document.createElement("span");
|
||||
span.className = "post-views";
|
||||
meta.appendChild(span);
|
||||
}
|
||||
span.textContent = labelVisits(visits ?? 0);
|
||||
}
|
||||
}
|
||||
|
||||
const cards = document.querySelectorAll("article.post-entry");
|
||||
await Promise.all(
|
||||
Array.from(cards).map(async (card) => {
|
||||
const meta = card.querySelector(".entry-footer, .post-meta");
|
||||
const link = card.querySelector("a.entry-link, h2 a, .entry-title a");
|
||||
if (!meta || !link) return;
|
||||
try {
|
||||
const u = new URL(link.getAttribute("href"), location.origin);
|
||||
if (u.origin !== location.origin) return;
|
||||
let span = meta.querySelector(".post-views");
|
||||
if (!span) {
|
||||
span = document.createElement("span");
|
||||
span.className = "post-views";
|
||||
meta.appendChild(span);
|
||||
}
|
||||
span.textContent = labelVisits((await fetchCount(u.pathname)) ?? 0);
|
||||
} catch {}
|
||||
})
|
||||
);
|
||||
|
||||
const uvEl = document.getElementById("gc_site_visitors_week");
|
||||
if (uvEl) {
|
||||
const n = await fetchCount("TOTAL", "week");
|
||||
uvEl.textContent = n === null ? "—" : nf.format(n);
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="list" id="top">
|
||||
<script>
|
||||
if (localStorage.getItem("pref-theme") === "dark") {
|
||||
document.body.classList.add('dark');
|
||||
} else if (localStorage.getItem("pref-theme") === "light") {
|
||||
document.body.classList.remove('dark')
|
||||
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.body.classList.add('dark');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<header class="header">
|
||||
<nav class="nav">
|
||||
<div class="logo">
|
||||
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/" 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" xmlns="http://www.w3.org/2000/svg" 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 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||
</svg>
|
||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" 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"></circle>
|
||||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="menu">
|
||||
<li>
|
||||
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/posts/" title="Posts">
|
||||
<span>Posts</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/phd_journey/" title="PhD_journey">
|
||||
<span>PhD_journey</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/about/" title="About">
|
||||
<span class="active">About</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="main">
|
||||
|
||||
<article class="post-single">
|
||||
<header class="post-header">
|
||||
|
||||
<h1 class="post-title entry-hint-parent">
|
||||
About
|
||||
</h1>
|
||||
<div class="post-description">
|
||||
Iman Alipour — PhD candidate at MPI-INF. Human-centered security & privacy, usable security, and security measurement. Loves CTFs, hiking, coffee experiments, and making everyday gadgets smart.
|
||||
</div>
|
||||
</header>
|
||||
<figure class="entry-cover">
|
||||
<img loading="eager" src="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/about/pfp.jpeg" alt="Iman Alipour">
|
||||
|
||||
</figure>
|
||||
<div class="post-content"><h1 id="hey-im-iman-">Hey, I’m Iman 👋<a hidden class="anchor" aria-hidden="true" href="#hey-im-iman-">#</a></h1>
|
||||
<p>I’m a PhD candidate at the <strong>Max Planck Institute for Informatics (MPI-INF)</strong> in the <strong>Internet Architecture</strong> group. I’m broadly fascinated by how people actually experience security and privacy online—and how we can design systems that protect them without asking for expert knowledge. My current work explores how emerging and existing technologies shape everyday users’ privacy and threaten their security, and how usable defenses can make a real difference.</p>
|
||||
<p>I finished my <strong>B.Sc. in Computer Engineering</strong> at <strong>Sharif University of Technology</strong> in 2024, where I explored a mix of <strong>Machine Learning, Systems, Security, HCI, CPS, and IoT</strong>. For my bachelor thesis, I studied <strong>client selection in federated learning</strong> and proposed a reinforcement-learning–based method that balances <strong>accuracy, efficiency, and fairness</strong> while considering data quality and <strong>energy consumption</strong>.</p>
|
||||
<h2 id="what-im-into-research">What I’m into (research)<a hidden class="anchor" aria-hidden="true" href="#what-im-into-research">#</a></h2>
|
||||
<ul>
|
||||
<li><em><strong>Censorship Circumvention</strong></em></li>
|
||||
<li><strong>Human-centered Security & Privacy</strong></li>
|
||||
<li><strong>Usable Security</strong></li>
|
||||
<li><strong>Security Measurement</strong></li>
|
||||
<li><strong>Emerging technologies and their effects on user privacy</strong></li>
|
||||
</ul>
|
||||
<h2 id="a-few-things-ive-worked-on">A few things I’ve worked on<a hidden class="anchor" aria-hidden="true" href="#a-few-things-ive-worked-on">#</a></h2>
|
||||
<ul>
|
||||
<li><strong>Federated learning client selection (B.Sc. thesis):</strong> A reinforcement-learning approach to optimize accuracy, efficiency, and fairness; accounts for end-user data quality and aims to reduce energy use.</li>
|
||||
<li><strong>Security & privacy perceptions of messaging platforms in Iran:</strong> Investigated trust and distrust in local platforms, identified root causes, and contrasted Iranian vs. non-Iranian platforms.</li>
|
||||
</ul>
|
||||
<h2 id="hobbies--off-screen-life">Hobbies & off-screen life<a hidden class="anchor" aria-hidden="true" href="#hobbies--off-screen-life">#</a></h2>
|
||||
<p>When I’m not chasing down research questions, you’ll likely find me:</p>
|
||||
<ul>
|
||||
<li>🎧 <strong>Listening to music</strong> and 🧩 <strong>playing CTFs</strong></li>
|
||||
<li>📰 <strong>Reading the news</strong> and keeping active—<strong>any sport is fair game</strong></li>
|
||||
<li>🥾 <strong>Hiking</strong> and 🌄 <strong>sight-seeing</strong></li>
|
||||
<li>☕ <strong>Experimenting with coffee</strong> and 🍳 <strong>cooking</strong></li>
|
||||
<li>🎲 <strong>Playing board games</strong></li>
|
||||
<li>🔧 <strong>Fiddling with electronics</strong>: making everyday tools <strong>smart</strong> and remotely controllable with <strong>micro-controllers</strong>, sensors, and actuators</li>
|
||||
<li>📚 <strong>Reading books</strong> and happily getting lost in <strong>math & physics</strong> problems</li>
|
||||
</ul>
|
||||
<h2 id="quick-timeline">Quick timeline<a hidden class="anchor" aria-hidden="true" href="#quick-timeline">#</a></h2>
|
||||
<ul>
|
||||
<li><strong>Aug 2024 – present:</strong> PhD candidate, MPI-INF, Internet Architecture group (Saarbrücken, Germany)</li>
|
||||
<li><strong>Jun 2023 – Jul 2024:</strong> Volunteer remote Research Assistant, InSPIRe Lab, Duke University</li>
|
||||
<li><strong>Sep 2023 – Feb 2024:</strong> Volunteer Research Assistant, CPS Lab, Sharif University of Technology</li>
|
||||
<li><strong>Feb 2023 – Sep 2023:</strong> Volunteer Research Assistant, RADIAN Lab, Sharif University of Technology</li>
|
||||
<li><strong>Jul 2022 – Sep 2022:</strong> Summer Intern, Rasta Scientific Group</li>
|
||||
</ul>
|
||||
<h2 id="teaching-ive-helped-with">Teaching I’ve helped with<a hidden class="anchor" aria-hidden="true" href="#teaching-ive-helped-with">#</a></h2>
|
||||
<p>Advanced Programming (2021) · Probabilities & Statistics (2022) · Operating Systems (2023) · Embedded Systems (2023) · Computer Simulation (two offerings, 2023)</p>
|
||||
<h2 id="honors">Honors<a hidden class="anchor" aria-hidden="true" href="#honors">#</a></h2>
|
||||
<ul>
|
||||
<li>Silver medal, <strong>Paya Math & Physics League</strong> — Tehran, Iran (Sep 2017)</li>
|
||||
<li><strong>2nd place</strong>, Water Rocket Design Competition — Isfahan’s Math House (Sep 2015)</li>
|
||||
</ul>
|
||||
<h2 id="contact">Contact<a hidden class="anchor" aria-hidden="true" href="#contact">#</a></h2>
|
||||
<p>Max-Planck-Institut für Informatik<br>
|
||||
Saarland Informatics Campus — <strong>Campus E1 4</strong>, 66123 Saarbrücken<br>
|
||||
<strong>Office:</strong> E1 4 – 514 · <strong>Phone:</strong> +49 681 9325 3548</p>
|
||||
<hr>
|
||||
<h2 id="links">Links<a hidden class="anchor" aria-hidden="true" href="#links">#</a></h2>
|
||||
<ul>
|
||||
<li>🔗 <strong>LinkedIn:</strong> <a href="https://de.linkedin.com/in/iman-alipour-b9234723a">https://de.linkedin.com/in/iman-alipour-b9234723a</a></li>
|
||||
<li>🐙 <strong>GitHub:</strong> <a href="https://github.com/AlipourIm">https://github.com/AlipourIm</a></li>
|
||||
<li>🧩 <strong>TryHackMe:</strong> <a href="https://tryhackme.com/p/curiousNF">https://tryhackme.com/p/curiousNF</a></li>
|
||||
<li>💼 <strong>Work page:</strong> <a href="https://www.mpi-inf.mpg.de/departments/inet/people/iman-alipour">https://www.mpi-inf.mpg.de/departments/inet/people/iman-alipour</a></li>
|
||||
<li>🔑 <strong>OpenPGP public key (download):</strong> <a href="/keys/iman-alipour-pgp.asc">pgp_public_key</a></li>
|
||||
</ul>
|
||||
<h2 id="openpgp">OpenPGP<a hidden class="anchor" aria-hidden="true" href="#openpgp">#</a></h2>
|
||||
<p><strong>Fingerprint:</strong> <code>55A2 A5DE 8479 2BAC C6CA EE3F B588 2850 E04C 8D2A</code></p>
|
||||
<details>
|
||||
<summary>Show ASCII-armored key</summary>
|
||||
<pre style="font-size:0.85em; overflow-x:auto; padding:0.75rem;">-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=mAs8
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
</pre>
|
||||
</details>
|
||||
|
||||
<h3 id="verify-a-post">Verify a post<a hidden class="anchor" aria-hidden="true" href="#verify-a-post">#</a></h3>
|
||||
<ol>
|
||||
<li>Import my key once:
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -O https://blog.alipourimjourneys.ir/keys/iman-alipour-pgp.asc
|
||||
</span></span><span style="display:flex;"><span>gpg --import iman-alipour-pgp.asc
|
||||
</span></span></code></pre></div></li>
|
||||
<li>Download the post and its signature (each post links them):
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -O https://blog.alipourimjourneys.ir/sources/posts/hello-world.md
|
||||
</span></span><span style="display:flex;"><span>curl -O https://blog.alipourimjourneys.ir/sources/posts/hello-world.md.asc
|
||||
</span></span></code></pre></div></li>
|
||||
<li>Verify:
|
||||
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>gpg --verify hello-world.md.asc hello-world.md
|
||||
</span></span></code></pre></div></li>
|
||||
</ol>
|
||||
<hr>
|
||||
<div class="signature-block" style="margin-top:1rem">
|
||||
<p><strong>Downloads:</strong>
|
||||
<a href="/sources/about.md">Markdown</a> ·
|
||||
<a href="/sources/about.md.asc">Signature (.asc)</a>
|
||||
</p><p><em>Verify locally:</em></p>
|
||||
<pre style="font-size:0.85em; overflow-x:auto; padding:0.75rem;">torsocks curl -fSLO http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/sources/about.md
|
||||
torsocks curl -fSLO http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/sources/about.md.asc
|
||||
gpg --verify about.md.asc about.md
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="post-footer">
|
||||
<ul class="post-tags">
|
||||
</ul>
|
||||
|
||||
</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="/about/"
|
||||
data-title="About">
|
||||
<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 panelIsso = document.getElementById('panel-isso');
|
||||
var panelGisc = document.getElementById('panel-giscus');
|
||||
var issoBtn = document.getElementById('btn-isso');
|
||||
var giscBtn = document.getElementById('btn-giscus');
|
||||
var gLoaded = false;
|
||||
|
||||
function isDark() {
|
||||
var pref = localStorage.getItem('pref-theme');
|
||||
if (pref === 'dark') return true;
|
||||
if (pref === 'light') return false;
|
||||
|
||||
var html = document.documentElement, body = document.body;
|
||||
if (
|
||||
(html.classList && html.classList.contains('dark')) ||
|
||||
(body.classList && body.classList.contains('dark')) ||
|
||||
html.getAttribute('data-theme') === 'dark' ||
|
||||
body.getAttribute('data-theme') === 'dark' ||
|
||||
(html.classList && html.classList.contains('theme-dark')) ||
|
||||
(body.classList && body.classList.contains('theme-dark'))
|
||||
) return true;
|
||||
|
||||
return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
}
|
||||
function gTheme(){ return isDark() ? 'dark_dimmed' : 'noborder_light'; }
|
||||
|
||||
function loadGiscus() {
|
||||
if (gLoaded) return;
|
||||
var s = document.createElement('script');
|
||||
s.src = 'https://giscus.app/client.js';
|
||||
s.async = true;
|
||||
s.crossOrigin = 'anonymous';
|
||||
s.setAttribute('data-repo','AlipourIm/blog-comments');
|
||||
s.setAttribute('data-repo-id','R_kgDOQGARyA');
|
||||
s.setAttribute('data-category','Comments');
|
||||
s.setAttribute('data-category-id','DIC_kwDOQGARyM4Cw3x-');
|
||||
s.setAttribute('data-mapping','pathname');
|
||||
s.setAttribute('data-strict','0');
|
||||
s.setAttribute('data-reactions-enabled','1');
|
||||
s.setAttribute('data-emit-metadata','0');
|
||||
s.setAttribute('data-input-position','bottom');
|
||||
s.setAttribute('data-lang','en');
|
||||
s.setAttribute('data-theme', gTheme());
|
||||
document.getElementById('giscus-thread').appendChild(s);
|
||||
|
||||
function reTheme(){
|
||||
var iframe = document.querySelector('iframe.giscus-frame');
|
||||
if (iframe && iframe.contentWindow) {
|
||||
iframe.contentWindow.postMessage(
|
||||
{ giscus: { setConfig: { theme: gTheme() } } },
|
||||
'https://giscus.app'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
var tbtn = document.getElementById('theme-toggle');
|
||||
if (tbtn) tbtn.addEventListener('click', function(){ setTimeout(reTheme, 0); });
|
||||
|
||||
var mo = new MutationObserver(function(){ reTheme(); });
|
||||
mo.observe(document.documentElement, { attributes:true, attributeFilter:['class','data-theme'] });
|
||||
mo.observe(document.body, { attributes:true, attributeFilter:['class','data-theme'] });
|
||||
|
||||
gLoaded = true;
|
||||
}
|
||||
|
||||
function show(which) {
|
||||
var showIsso = which === 'isso';
|
||||
panelIsso.style.display = showIsso ? 'block' : 'none';
|
||||
panelGisc.style.display = showIsso ? 'none' : 'block';
|
||||
if (issoBtn) issoBtn.setAttribute('aria-pressed', showIsso ? 'true' : 'false');
|
||||
if (giscBtn) giscBtn.setAttribute('aria-pressed', showIsso ? 'false' : 'true');
|
||||
if (!showIsso) loadGiscus();
|
||||
}
|
||||
|
||||
if (issoBtn) issoBtn.addEventListener('click', function(e){ e.preventDefault(); show('isso'); });
|
||||
if (giscBtn) giscBtn.addEventListener('click', function(e){ e.preventDefault(); show('giscus'); });
|
||||
|
||||
|
||||
show('isso');
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
||||
</article>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<span>© 2026 <a href="http://fjthpp2h3mj2rup25r3psmqamutnkbvxbpltlohdthw6fscgo3t6bpad.onion/">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 xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||
<path d="M12 6H0l6-6z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
|
||||
<script src="/isso/js/count.min.js" data-isso="/isso" async></script>
|
||||
|
||||
|
||||
<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 xmlns="http://www.w3.org/2000/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 0 1 9 9" />
|
||||
<path d="M4 4a16 16 0 0 1 16 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')
|
||||
if (menu) {
|
||||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||||
menu.onscroll = function () {
|
||||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener("click", function (e) {
|
||||
e.preventDefault();
|
||||
var id = this.getAttribute("href").substr(1);
|
||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||||
behavior: "smooth"
|
||||
});
|
||||
} else {
|
||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||||
}
|
||||
if (id === "top") {
|
||||
history.replaceState(null, null, " ");
|
||||
} else {
|
||||
history.pushState(null, null, `#${id}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
<script>
|
||||
var mybutton = document.getElementById("top-link");
|
||||
window.onscroll = function () {
|
||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||||
mybutton.style.visibility = "visible";
|
||||
mybutton.style.opacity = "1";
|
||||
} else {
|
||||
mybutton.style.visibility = "hidden";
|
||||
mybutton.style.opacity = "0";
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
<script>
|
||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||||
if (document.body.className.includes("dark")) {
|
||||
document.body.classList.remove('dark');
|
||||
localStorage.setItem("pref-theme", 'light');
|
||||
} else {
|
||||
document.body.classList.add('dark');
|
||||
localStorage.setItem("pref-theme", 'dark');
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue