PageSourceSearch

https://odan.github.io/search.html

html odan.github.io collected 2026-10-03 09:42:17 UTC 6,841 bytes, 156 lines download raw bytes

1<!DOCTYPE html>
2<html lang=" en-US" data-theme="dark">
3
4<head>
5    
5<script>
6        (function () {
7            var saved = localStorage.getItem('theme') || 'dark';
8            document.documentElement.setAttribute('data-theme', saved);
9        })();
10    </script>
10
11    <meta charset="UTF-8">
12    <!-- Begin Jekyll SEO tag v2.8.0 -->
13<title>Search | Daniel Opitz - Blog</title>
14<meta name="generator" content="Jekyll v3.10.0" />
15<meta property="og:title" content="Search" />
16<meta property="og:locale" content="en_US" />
17<meta name="description" content="Search" />
18<meta property="og:description" content="Search" />
19<link rel="canonical" href="https://odan.github.io/search.html" />
20<meta property="og:url" content="https://odan.github.io/search.html" />
21<meta property="og:site_name" content="Daniel Opitz - Blog" />
22<meta property="og:type" content="article" />
23<meta property="article:published_time" content="2019-10-20T00:00:00+00:00" />
24<meta name="twitter:card" content="summary" />
25<meta property="twitter:title" content="Search" />
26<script type="application/ld+json">
27{"@context":"https://schema.org","@type":"BlogPosting","dateModified":"2019-10-20T00:00:00+00:00","datePublished":"2019-10-20T00:00:00+00:00","description":"Search","headline":"Search","mainEntityOfPage":{"@type":"WebPage","@id":"https://odan.github.io/search.html"},"url":"https://odan.github.io/search.html"}</script>
27
28<!-- End Jekyll SEO tag -->
29
30    <meta name="viewport" content="width=device-width, initial-scale=1">
31    <meta name="theme-color" content="#1e293b">
32    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
33    
34    <meta name="keywords" content="search" />
35    
36    <link rel="alternate" type="application/rss+xml" title="Subscribe to What's New"
37        href="https://odan.github.io/feed.xml" />
38    <link rel="preconnect" href="https://fonts.bunny.net">
39    <link rel="stylesheet" href="/assets/css/style.css?v=e9a526afe686618291ddcbf01fc2dc3799c141f8">
40    <link href="https://fonts.bunny.net/css?family=inter:400,500,600,700,800|jetbrains-mono:400,500" rel="stylesheet" />
41    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?">
42    
42<script type="module"
43        src="https://cdn.jsdelivr.net/npm/@hotwired/turbo@latest/dist/turbo.es2017-esm.min.js"></script>
43
44    <meta name="view-transition" content="same-origin">
45    <meta name="turbo-prefetch" content="false">
46    <meta name="turbo-refresh-method" content="morph">
47    <meta name="turbo-refresh-scroll" content="preserve">
48</head>
49
50<body>
51    <nav>
52        <div class="nav-inner">
53            <a href="/" class="nav-logo">odan/blog</a>
54            <div class="nav-links" id="nav-links">
55                <a href="/">Blog</a>
56                <a href="/about.html">About</a>
57                <a href="/donate.html">Donate</a>
58                <a href="/search.html">Search</a>
59            </div>
60            <button class="theme-btn" id="toggle-mode" aria-label="Toggle dark/light mode">&#9790;</button>
61            <button class="hamburger" id="hamburger" aria-label="Menu">&#9776;</button>
62        </div>
63        <div class="nav-overlay" id="nav-overlay"></div>
64    </nav>
65
66    <header class="hero" role="banner">
67        <div class="hero-bg"></div>
68        <div class="hero-content">
69            <h1>Daniel Opitz - Blog</h1>
70            <p>Developer, Trainer, Open Source Contributor</p>
71        </div>
72    </header>
73
74    <main id="content" class="container-wide" role="main">
75        <h1 class="page-heading">Search</h1>
76
77<form class="search-form" action="">
78    <label for="search">Search term:</label>
79    <input id="search" type="text" name="search" placeholder="" autocomplete="off" tabindex="0">
80    <ul class="search-results" id="list"></ul>
81</form>
82
83<!--
84<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8731878573760439"
85        crossorigin="anonymous">
86</script>
86
87-->
88<!--
89<iframe src="https://rcm-eu.amazon-adsystem.com/e/cm?o=3&p=26&l=ez&f=ifr&linkID=abb0f54a7e918b0807606332fe09d652&t=28031982-21&tracking_id=28031982-21" width="468" height="60" scrolling="no" border="0" marginwidth="0" style="border:none;" frameborder="0"></iframe>
90-->
91
92<!--
93<iframe src="https://rcm-eu.amazon-adsystem.com/e/cm?o=3&p=26&l=ur1&category=gift_certificates&banner=1FRYA4Y34G5SPX4CXAR2&f=ifr&linkID=d02832eeac1478aae87ef3f420acc971&t=28031982-21&tracking_id=28031982-21" width="468" height="60" scrolling="no" border="0" marginwidth="0" style="border:none;" frameborder="0"></iframe>
94-->
95
96<script src="/assets/fetch.js"></script>
vendor: 1 bytes, line 96
96
97<script src="/assets/search.js"></script>
vendor: 1 bytes, line 97
97
98<script>
99    var search = new jekyllSearch(
100        '/assets/search.json',
101        '#search',
102        '#list',
103        'https://odan.github.io'
104    );
105    search.init();
106
107    window.setTimeout(function () {
108        document.getElementById('search').focus();
109    }, 100);
110</script>
110
111
112<noscript>Please enable JavaScript to use the search form.</noscript>
113
114
115        <footer>
116            &copy; 2026 Daniel Opitz
117            &nbsp;|&nbsp; <a href="https://x.com/dopitz" target="_blank">X</a>
118            &nbsp;|&nbsp; <a href="https://github.com/odan" target="_blank">GitHub</a>
119            &nbsp;|&nbsp; <a href="https://www.linkedin.com/in/daniel-opitz-493816111" target="_blank">LinkedIn</a>
120            &nbsp;|&nbsp; <a href="https://odan.github.io/feed.xml" target="_blank">RSS</a>
121        </footer>
122    </main>
123
124    
124<script>
125        (function () {
126            document.getElementById('toggle-mode').addEventListener('click', function (e) {
127                var cur = document.documentElement.getAttribute('data-theme');
128                var next = cur === 'dark' ? 'light' : 'dark';
129                document.documentElement.setAttribute('data-theme', next);
130                localStorage.setItem('theme', next);
131            });
132
133            var hamburger = document.getElementById('hamburger');
134            var navLinks = document.getElementById('nav-links');
135            var overlay = document.getElementById('nav-overlay');
136            if (hamburger && navLinks) {
137                function closeMenu() {
138                    navLinks.classList.remove('open');
139                    overlay.classList.remove('open');
140                    document.body.classList.remove('nav-open');
141                }
142                hamburger.addEventListener('click', function () {
143                    navLinks.classList.toggle('open');
144                    overlay.classList.toggle('open');
145                    document.body.classList.toggle('nav-open');
146                });
147                overlay.addEventListener('click', closeMenu);
148                navLinks.querySelectorAll('a').forEach(function (link) {
149                    link.addEventListener('click', closeMenu);
150                });
151            }
152        })();
153    </script>
153
154</body>
155
156</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.