fix: ignore build dir and publish article
No files matched your search
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 16 KiB |
@@ -1,662 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Authors · Sokolab</title>
|
|
||||||
<meta name="title" content="Authors · Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/authors/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/authors/index.xml" title="Sokolab" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="author" content="Alexander Sokolov aka s0k0l">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://t.me/sokolex" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://git.sokolab.xyz/sokol" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/authors/">
|
|
||||||
<meta property="og:site_name" content="Sokolab">
|
|
||||||
<meta property="og:title" content="Authors">
|
|
||||||
<meta property="og:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Authors">
|
|
||||||
<meta name="twitter:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.2fd4cae71f73e7d5de8d256fdda25088b81b3f192c1e688761f6c12c77cb3c43cae8132e194a7f37019d495951c1f99c70dbf4e1938a3a0896eb4d2ced842bc0.js"
|
|
||||||
integrity="sha512-L9TK5x9z59XejSVv3aJQiLgbPxksHmiHYfbBLHfLPEPK6BMuGUp/NwGdSVlRwfmccNv04ZOKOgiW600s7YQrwA=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Authors",
|
|
||||||
"name": "Authors",
|
|
||||||
"headline": "Authors",
|
|
||||||
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url" : "https://sokolab.xyz/authors/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Alexander Sokolov aka s0k0l",
|
|
||||||
"image": "https://sokolab.xyz/img/me.jpg",
|
|
||||||
"sameAs": ["https://t.me/sokolex", "https://git.sokolab.xyz/sokol"]
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/authors/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Sokolab
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
|
|
||||||
class="flex items-center bf-icon-color-hover"
|
|
||||||
aria-label="Блог"
|
|
||||||
title="Блог">
|
|
||||||
|
|
||||||
|
|
||||||
<span class="text-sm font-medium break-normal">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="checkbox" id="mobile-menu-toggle" autocomplete="off" class="hidden peer">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
aria-label=""
|
|
||||||
class="flex items-center justify-center cursor-pointer bf-icon-color-hover">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="mobile-menu-dialog"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label=""
|
|
||||||
style="scrollbar-gutter: stable;"
|
|
||||||
class="z-50 invisible overflow-y-auto opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100
|
|
||||||
|
|
||||||
fixed inset-0 px-6 py-20 bg-neutral-50/97 dark:bg-neutral-900/99
|
|
||||||
|
|
||||||
bf-scrollbar">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
class="fixed end-8 top-5 z-50 h-12 w-12 rounded-full flex items-center justify-center cursor-pointer select-none bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900">
|
|
||||||
<span class="sr-only"></span>
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<nav
|
|
||||||
aria-label=""
|
|
||||||
class="mx-auto max-w-md space-y-6">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="px-2">
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
aria-label="Блог"
|
|
||||||
|
|
||||||
class="flex grow items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200">
|
|
||||||
|
|
||||||
<span title="Блог" class="text-2xl font-bold tracking-tight">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Authors</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="mt-6 flex max-w-prose flex-wrap gap-2">
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Authors on Sokolab</title>
|
|
||||||
<link>https://sokolab.xyz/authors/</link>
|
|
||||||
<description>Recent content in Authors on Sokolab</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>ru</language>
|
|
||||||
<copyright>© 2026 Alexander Sokolov aka s0k0l</copyright>
|
|
||||||
<atom:link href="https://sokolab.xyz/authors/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,916 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Запустил свой сайт · Sokolab</title>
|
|
||||||
<meta name="title" content="Запустил свой сайт · Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="description" content="Как я поднял сайт и Gitea на своём сервере">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="keywords" content="сервер,hugo,">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/blog/hello/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="author" content="Alexander Sokolov aka s0k0l">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://t.me/sokolex" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://git.sokolab.xyz/sokol" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/blog/hello/">
|
|
||||||
<meta property="og:site_name" content="Sokolab">
|
|
||||||
<meta property="og:title" content="Запустил свой сайт">
|
|
||||||
<meta property="og:description" content="Как я поднял сайт и Gitea на своём сервере">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="article">
|
|
||||||
<meta property="article:section" content="blog">
|
|
||||||
<meta property="article:published_time" content="2026-10-05T21:14:48+04:00">
|
|
||||||
<meta property="article:modified_time" content="2026-10-05T21:14:48+04:00">
|
|
||||||
<meta property="article:tag" content="Сервер">
|
|
||||||
<meta property="article:tag" content="Hugo">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Запустил свой сайт">
|
|
||||||
<meta name="twitter:description" content="Как я поднял сайт и Gitea на своём сервере">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.2fd4cae71f73e7d5de8d256fdda25088b81b3f192c1e688761f6c12c77cb3c43cae8132e194a7f37019d495951c1f99c70dbf4e1938a3a0896eb4d2ced842bc0.js"
|
|
||||||
integrity="sha512-L9TK5x9z59XejSVv3aJQiLgbPxksHmiHYfbBLHfLPEPK6BMuGUp/NwGdSVlRwfmccNv04ZOKOgiW600s7YQrwA=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Блог",
|
|
||||||
"name": "Запустил свой сайт",
|
|
||||||
"headline": "Запустил свой сайт",
|
|
||||||
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url" : "https://sokolab.xyz/blog/hello/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Alexander Sokolov aka s0k0l",
|
|
||||||
"image": "https://sokolab.xyz/img/me.jpg",
|
|
||||||
"sameAs": ["https://t.me/sokolex", "https://git.sokolab.xyz/sokol"]
|
|
||||||
},
|
|
||||||
"copyrightYear": "2026",
|
|
||||||
"dateCreated": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
"datePublished": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
"dateModified": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
"keywords": ["сервер","hugo"],
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/blog/hello/",
|
|
||||||
"wordCount": 35
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Sokolab
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
|
|
||||||
class="flex items-center bf-icon-color-hover"
|
|
||||||
aria-label="Блог"
|
|
||||||
title="Блог">
|
|
||||||
|
|
||||||
|
|
||||||
<span class="text-sm font-medium break-normal">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="checkbox" id="mobile-menu-toggle" autocomplete="off" class="hidden peer">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
aria-label=""
|
|
||||||
class="flex items-center justify-center cursor-pointer bf-icon-color-hover">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="mobile-menu-dialog"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label=""
|
|
||||||
style="scrollbar-gutter: stable;"
|
|
||||||
class="z-50 invisible overflow-y-auto opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100
|
|
||||||
|
|
||||||
fixed inset-0 px-6 py-20 bg-neutral-50/97 dark:bg-neutral-900/99
|
|
||||||
|
|
||||||
bf-scrollbar">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
class="fixed end-8 top-5 z-50 h-12 w-12 rounded-full flex items-center justify-center cursor-pointer select-none bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900">
|
|
||||||
<span class="sr-only"></span>
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<nav
|
|
||||||
aria-label=""
|
|
||||||
class="mx-auto max-w-md space-y-6">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="px-2">
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
aria-label="Блог"
|
|
||||||
|
|
||||||
class="flex grow items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200">
|
|
||||||
|
|
||||||
<span title="Блог" class="text-2xl font-bold tracking-tight">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<article>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header id="single_header" class="mt-5 max-w-prose">
|
|
||||||
|
|
||||||
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
|
|
||||||
Запустил свой сайт
|
|
||||||
</h1>
|
|
||||||
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
<time datetime="2026-10-05T21:14:48+04:00">5 октября 2026</time><span class="px-2 text-primary-500">·</span><span>35 слов</span><span class="px-2 text-primary-500">·</span><span title="Время чтения">1 минута</span>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex author">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<img
|
|
||||||
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
|
|
||||||
width="96"
|
|
||||||
height="96"
|
|
||||||
alt="Alexander Sokolov aka s0k0l"
|
|
||||||
src="/img/me_hu_3067d7fc4314244e.jpg"
|
|
||||||
data-zoom-src="/img/me_hu_a7a552336841cea9.jpg">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="place-self-center">
|
|
||||||
|
|
||||||
<div class="text-[0.6rem] uppercase leading-3 text-neutral-500 dark:text-neutral-400">
|
|
||||||
Автор
|
|
||||||
</div>
|
|
||||||
<div class="font-semibold leading-6 text-neutral-800 dark:text-neutral-300">
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="text-sm text-neutral-700 dark:text-neutral-400">Пара предложений о себе</div>
|
|
||||||
|
|
||||||
<div class="text-2xl sm:text-lg">
|
|
||||||
<div class="flex flex-wrap text-neutral-400 dark:text-neutral-500 space-x-2">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
class="email-link hover:text-primary-700 dark:hover:text-primary-400"
|
|
||||||
href="#"
|
|
||||||
|
|
||||||
data-email="bWFpbHRvOnhhbGV4LnNva29sQGdtYWlsLmNvbQ=="
|
|
||||||
|
|
||||||
target="_blank"
|
|
||||||
aria-label="Email"
|
|
||||||
title="Email"
|
|
||||||
rel="me noopener noreferrer"
|
|
||||||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M207.8 20.73c-93.45 18.32-168.7 93.66-187 187.1c-27.64 140.9 68.65 266.2 199.1 285.1c19.01 2.888 36.17-12.26 36.17-31.49l.0001-.6631c0-15.74-11.44-28.88-26.84-31.24c-84.35-12.98-149.2-86.13-149.2-174.2c0-102.9 88.61-185.5 193.4-175.4c91.54 8.869 158.6 91.25 158.6 183.2l0 16.16c0 22.09-17.94 40.05-40 40.05s-40.01-17.96-40.01-40.05v-120.1c0-8.847-7.161-16.02-16.01-16.02l-31.98 .0036c-7.299 0-13.2 4.992-15.12 11.68c-24.85-12.15-54.24-16.38-86.06-5.106c-38.75 13.73-68.12 48.91-73.72 89.64c-9.483 69.01 43.81 128 110.9 128c26.44 0 50.43-9.544 69.59-24.88c24 31.3 65.23 48.69 109.4 37.49C465.2 369.3 496 324.1 495.1 277.2V256.3C495.1 107.1 361.2-9.332 207.8 20.73zM239.1 304.3c-26.47 0-48-21.56-48-48.05s21.53-48.05 48-48.05s48 21.56 48 48.05S266.5 304.3 239.1 304.3z"/></svg>
|
|
||||||
</span></span></a
|
|
||||||
>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
class=" hover:text-primary-700 dark:hover:text-primary-400"
|
|
||||||
href="https://t.me/sokolex"
|
|
||||||
|
|
||||||
target="_blank"
|
|
||||||
aria-label="Telegram"
|
|
||||||
title="Telegram"
|
|
||||||
rel="me noopener noreferrer"
|
|
||||||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z"/></svg>
|
|
||||||
</span></span></a
|
|
||||||
>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
class=" hover:text-primary-700 dark:hover:text-primary-400"
|
|
||||||
href="https://git.sokolab.xyz/sokol"
|
|
||||||
|
|
||||||
target="_blank"
|
|
||||||
aria-label="Gitea"
|
|
||||||
title="Gitea"
|
|
||||||
rel="me noopener noreferrer"
|
|
||||||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="5.67 143.05 628.65 387.55"><path fill="currentColor" d="M115.912 143.075c-6.462 0-13.762.525-22.012 2.325-8.7 1.8-33.5 7.4-53.8 26.9C-4.9 212.4 6.6 276.2 8 285.8c1.7 11.7 6.9 44.2 31.7 72.5 45.8 56.1 144.4 54.8 144.4 54.8s12.1 28.9 30.6 55.5c25 33.1 50.7 58.9 75.7 62 63 0 188.9-.1 188.9-.1s12 .1 28.3-10.3c14-8.5 26.5-23.4 26.5-23.4S547 483 565 451.5c5.5-9.7 10.1-19.1 14.1-28 0 0 55.2-117.1 55.2-231.1-1.1-34.5-9.6-40.6-11.6-42.6-4.1-4.1-9.6-4-9.6-4s-117.2 6.6-177.9 8c-13.267.3-26.433.597-39.5.697l.1 117.002s57.4 24.202 83.1 40.102c3.7 2.3 10.2 6.798 12.9 14.398 2.1 6.1 2 13.101-1 19.301l-61 126.9c-6.2 12.7-21.4 18.1-33.9 12l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5 21.2-17.9 33.8-11.8a5290.322 5290.322 0 0 0 27 12.954c0-36.449-.1-109.053-.1-109.053-29 .4-89.2-2.201-89.2-2.201s-141.4-7.1-156.8-8.5c-4.9-.3-10.525-.825-16.988-.825zm12.188 48.026s7.1 59.399 15.7 94.199c7.2 29.2 24.8 77.7 24.8 77.7s-26.1-3.1-43-9.1c-25.9-8.5-36.9-18.7-36.9-18.7S69.6 321.8 60 295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5 38.5-30c13.8-3.7 31-3.1 31-3.1z"/><path fill="currentColor" d="M326.8 380.1c-8.2.1-15.4 5.8-17.3 13.8-1.9 8 2 16.3 9.1 20 7.7 4 17.5 1.8 22.7-5.4 5.1-7.1 4.3-16.9-1.8-23.1l24-49.1c1.5.1 3.7.2 6.2-.5 4.1-.9 7.1-3.6 7.1-3.6 4.2 1.8 8.6 3.8 13.2 6.1 4.8 2.4 9.3 4.9 13.4 7.3.9.5 1.8 1.1 2.8 1.9 1.6 1.3 3.4 3.1 4.7 5.5 1.9 5.5-1.9 14.9-1.9 14.9-2.3 7.6-18.4 40.6-18.4 40.6-8.1-.2-15.3 5-17.7 12.5-2.6 8.1 1.1 17.3 8.9 21.3 7.8 4 17.4 1.7 22.5-5.3 5-6.8 4.6-16.3-1.1-22.6 1.9-3.7 3.7-7.4 5.6-11.3 5-10.4 13.5-30.4 13.5-30.4.9-1.7 5.7-10.3 2.7-21.3-2.5-11.4-12.6-16.7-12.6-16.7-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3 4.7-9.7 9.4-19.3 14.1-29-4.1-2-8.1-4-12.2-6.1-4.8 9.8-9.7 19.7-14.5 29.5-6.7-.1-12.9 3.5-16.1 9.4-3.4 6.3-2.7 14.1 1.9 19.8l-24.6 50.4z"/></svg></span></span></a
|
|
||||||
>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="mb-5"></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="min-w-0 min-h-0 max-w-fit">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="article-content max-w-prose mb-20">
|
|
||||||
<p>Сегодня запустил sokolab.xyz. Всё крутится на моём сервере в Docker.</p>
|
|
||||||
|
|
||||||
<h2 class="relative group">Как это устроено
|
|
||||||
<div id="как-это-устроено" class="anchor"></div>
|
|
||||||
|
|
||||||
<span
|
|
||||||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
|
||||||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d0%ba%d0%b0%d0%ba-%d1%8d%d1%82%d0%be-%d1%83%d1%81%d1%82%d1%80%d0%be%d0%b5%d0%bd%d0%be" aria-label="Якорь">#</a>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
<p>Сайт собран на Hugo, исходники лежат в моей <a href="https://git.sokolab.xyz/sokol" target="_blank" rel="noreferrer">Gitea</a>.</p>
|
|
||||||
<figure><img
|
|
||||||
class="my-0 rounded-md"
|
|
||||||
loading="lazy"
|
|
||||||
decoding="async"
|
|
||||||
fetchpriority="low"
|
|
||||||
alt="Схема"
|
|
||||||
src="schema.png"
|
|
||||||
></figure>
|
|
||||||
<ul>
|
|
||||||
<li>пишу пост в Markdown;</li>
|
|
||||||
<li>делаю <code>git push</code>;</li>
|
|
||||||
<li>через минуту он на сайте.</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
<footer class="pt-8 max-w-prose print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,837 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Блог · Sokolab</title>
|
|
||||||
<meta name="title" content="Блог · Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="description" content="Заметки о проектах, софте и железе">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/blog/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/blog/index.xml" title="Sokolab" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="author" content="Alexander Sokolov aka s0k0l">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://t.me/sokolex" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://git.sokolab.xyz/sokol" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/blog/">
|
|
||||||
<meta property="og:site_name" content="Sokolab">
|
|
||||||
<meta property="og:title" content="Блог">
|
|
||||||
<meta property="og:description" content="Заметки о проектах, софте и железе">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Блог">
|
|
||||||
<meta name="twitter:description" content="Заметки о проектах, софте и железе">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.2fd4cae71f73e7d5de8d256fdda25088b81b3f192c1e688761f6c12c77cb3c43cae8132e194a7f37019d495951c1f99c70dbf4e1938a3a0896eb4d2ced842bc0.js"
|
|
||||||
integrity="sha512-L9TK5x9z59XejSVv3aJQiLgbPxksHmiHYfbBLHfLPEPK6BMuGUp/NwGdSVlRwfmccNv04ZOKOgiW600s7YQrwA=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Блог",
|
|
||||||
"name": "Блог",
|
|
||||||
"headline": "Блог",
|
|
||||||
"description": "Заметки о проектах, софте и железе",
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url" : "https://sokolab.xyz/blog/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Alexander Sokolov aka s0k0l",
|
|
||||||
"image": "https://sokolab.xyz/img/me.jpg",
|
|
||||||
"sameAs": ["https://t.me/sokolex", "https://git.sokolab.xyz/sokol"]
|
|
||||||
},
|
|
||||||
"copyrightYear": "2026",
|
|
||||||
"dateCreated": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
"datePublished": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
"dateModified": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/blog/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Sokolab
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
|
|
||||||
class="flex items-center bf-icon-color-hover"
|
|
||||||
aria-label="Блог"
|
|
||||||
title="Блог">
|
|
||||||
|
|
||||||
|
|
||||||
<span class="text-sm font-medium break-normal">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="checkbox" id="mobile-menu-toggle" autocomplete="off" class="hidden peer">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
aria-label=""
|
|
||||||
class="flex items-center justify-center cursor-pointer bf-icon-color-hover">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="mobile-menu-dialog"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label=""
|
|
||||||
style="scrollbar-gutter: stable;"
|
|
||||||
class="z-50 invisible overflow-y-auto opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100
|
|
||||||
|
|
||||||
fixed inset-0 px-6 py-20 bg-neutral-50/97 dark:bg-neutral-900/99
|
|
||||||
|
|
||||||
bf-scrollbar">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
class="fixed end-8 top-5 z-50 h-12 w-12 rounded-full flex items-center justify-center cursor-pointer select-none bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900">
|
|
||||||
<span class="sr-only"></span>
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<nav
|
|
||||||
aria-label=""
|
|
||||||
class="mx-auto max-w-md space-y-6">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="px-2">
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
aria-label="Блог"
|
|
||||||
|
|
||||||
class="flex grow items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200">
|
|
||||||
|
|
||||||
<span title="Блог" class="text-2xl font-bold tracking-tight">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header>
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
|
|
||||||
Блог
|
|
||||||
</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="mt-0 prose flex max-w-full flex-col dark:prose-invert lg:flex-row mb-10">
|
|
||||||
|
|
||||||
<div class="min-w-0 min-h-0 max-w-prose w-full">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="space-y-10 w-full">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h2 class="mt-12 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
|
|
||||||
2026
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<article class="article-link--simple group flex flex-col md:flex-row relative">
|
|
||||||
|
|
||||||
<div class=" mt-3 md:mt-0">
|
|
||||||
<header class="items-center text-start text-xl font-semibold">
|
|
||||||
<a
|
|
||||||
|
|
||||||
href="/blog/hello/"
|
|
||||||
|
|
||||||
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
|
||||||
<h2>
|
|
||||||
Запустил свой сайт
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
<time datetime="2026-10-05T21:14:48+04:00">5 октября 2026</time><span class="px-2 text-primary-500">·</span><span>35 слов</span><span class="px-2 text-primary-500">·</span><span title="Время чтения">1 минута</span>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="px-6 pt-4 pb-2"></div>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Блог on Sokolab</title>
|
|
||||||
<link>https://sokolab.xyz/blog/</link>
|
|
||||||
<description>Recent content in Блог on Sokolab</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>ru</language>
|
|
||||||
<copyright>© 2026 Alexander Sokolov aka s0k0l</copyright>
|
|
||||||
<lastBuildDate>Mon, 05 Oct 2026 21:14:48 +0400</lastBuildDate><atom:link href="https://sokolab.xyz/blog/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Запустил свой сайт</title>
|
|
||||||
<link>https://sokolab.xyz/blog/hello/</link>
|
|
||||||
<pubDate>Mon, 05 Oct 2026 21:14:48 +0400</pubDate>
|
|
||||||
|
|
||||||
<guid>https://sokolab.xyz/blog/hello/</guid>
|
|
||||||
<description>Как я поднял сайт и Gitea на своём сервере</description>
|
|
||||||
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru">
|
|
||||||
<head>
|
|
||||||
<title>https://sokolab.xyz/blog/</title>
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/blog/">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://sokolab.xyz/blog/">
|
|
||||||
</head>
|
|
||||||
</html>
|
|
||||||
@@ -1,662 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Categories · Sokolab</title>
|
|
||||||
<meta name="title" content="Categories · Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/categories/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/categories/index.xml" title="Sokolab" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="author" content="Alexander Sokolov aka s0k0l">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://t.me/sokolex" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://git.sokolab.xyz/sokol" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/categories/">
|
|
||||||
<meta property="og:site_name" content="Sokolab">
|
|
||||||
<meta property="og:title" content="Categories">
|
|
||||||
<meta property="og:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Categories">
|
|
||||||
<meta name="twitter:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.2fd4cae71f73e7d5de8d256fdda25088b81b3f192c1e688761f6c12c77cb3c43cae8132e194a7f37019d495951c1f99c70dbf4e1938a3a0896eb4d2ced842bc0.js"
|
|
||||||
integrity="sha512-L9TK5x9z59XejSVv3aJQiLgbPxksHmiHYfbBLHfLPEPK6BMuGUp/NwGdSVlRwfmccNv04ZOKOgiW600s7YQrwA=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Categories",
|
|
||||||
"name": "Categories",
|
|
||||||
"headline": "Categories",
|
|
||||||
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url" : "https://sokolab.xyz/categories/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Alexander Sokolov aka s0k0l",
|
|
||||||
"image": "https://sokolab.xyz/img/me.jpg",
|
|
||||||
"sameAs": ["https://t.me/sokolex", "https://git.sokolab.xyz/sokol"]
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/categories/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Sokolab
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
|
|
||||||
class="flex items-center bf-icon-color-hover"
|
|
||||||
aria-label="Блог"
|
|
||||||
title="Блог">
|
|
||||||
|
|
||||||
|
|
||||||
<span class="text-sm font-medium break-normal">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="checkbox" id="mobile-menu-toggle" autocomplete="off" class="hidden peer">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
aria-label=""
|
|
||||||
class="flex items-center justify-center cursor-pointer bf-icon-color-hover">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="mobile-menu-dialog"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label=""
|
|
||||||
style="scrollbar-gutter: stable;"
|
|
||||||
class="z-50 invisible overflow-y-auto opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100
|
|
||||||
|
|
||||||
fixed inset-0 px-6 py-20 bg-neutral-50/97 dark:bg-neutral-900/99
|
|
||||||
|
|
||||||
bf-scrollbar">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
class="fixed end-8 top-5 z-50 h-12 w-12 rounded-full flex items-center justify-center cursor-pointer select-none bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900">
|
|
||||||
<span class="sr-only"></span>
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<nav
|
|
||||||
aria-label=""
|
|
||||||
class="mx-auto max-w-md space-y-6">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="px-2">
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
aria-label="Блог"
|
|
||||||
|
|
||||||
class="flex grow items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200">
|
|
||||||
|
|
||||||
<span title="Блог" class="text-2xl font-bold tracking-tight">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Categories</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="mt-6 flex max-w-prose flex-wrap gap-2">
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Categories on Sokolab</title>
|
|
||||||
<link>https://sokolab.xyz/categories/</link>
|
|
||||||
<description>Recent content in Categories on Sokolab</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>ru</language>
|
|
||||||
<copyright>© 2026 Alexander Sokolov aka s0k0l</copyright>
|
|
||||||
<atom:link href="https://sokolab.xyz/categories/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,179 +0,0 @@
|
|||||||
:root{--color-neutral:255, 255, 255;--color-neutral-50:248, 250, 252;--color-neutral-100:241, 245, 249;--color-neutral-200:226, 232, 240;--color-neutral-300:203, 213, 225;--color-neutral-400:148, 163, 184;--color-neutral-500:100, 116, 139;--color-neutral-600:71, 85, 105;--color-neutral-700:51, 65, 85;--color-neutral-800:30, 41, 59;--color-neutral-900:15, 23, 42;--color-primary-50:239, 246, 255;--color-primary-100:219, 234, 254;--color-primary-200:191, 219, 254;--color-primary-300:147, 197, 253;--color-primary-400:96, 165, 250;--color-primary-500:59, 130, 246;--color-primary-600:37, 99, 235;--color-primary-700:29, 78, 216;--color-primary-800:30, 64, 175;--color-primary-900:30, 58, 138;--color-secondary-50:236, 254, 255;--color-secondary-100:207, 250, 254;--color-secondary-200:165, 243, 252;--color-secondary-300:103, 232, 249;--color-secondary-400:34, 211, 238;--color-secondary-500:6, 182, 212;--color-secondary-600:8, 145, 178;--color-secondary-700:14, 116, 144;--color-secondary-800:21, 94, 117;--color-secondary-900:22, 78, 99}/*!tailwindcss v4.3.3 | MIT License | https://tailwindcss.com*//*!Blowfish | MIT License | https://github.com/nunocoracao/blowfish*/@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue",
|
|
||||||
"Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
|
|
||||||
"Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
|
||||||
"Courier New", monospace;--spacing:0.25rem;--container-2xs:18rem;--container-md:28rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-7xl:80rem;--text-xs:0.75rem;--text-xs--line-height:calc(1 / 0.75);--text-sm:0.875rem;--text-sm--line-height:calc(1.25 / 0.875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-0.05em;--tracking-tight:-0.025em;--tracking-normal:0em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:0.375rem;--radius-lg:0.5rem;--radius-xl:0.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-in:cubic-bezier(0.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, 0.2, 1);--ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--animate-pulse:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;--blur-sm:8px;--blur-xl:24px;--blur-2xl:40px;--aspect-video:16 / 9;--default-transition-duration:150ms;--default-transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::after,::before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports(not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::placeholder{color:currentcolor;@supports(color:color-mix(in lab,red,red)){color: color-mix(in oklab,currentcolor 50%,transparent);}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.collapse{visibility:collapse}.invisible{visiLine truncated
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0;
|
|
||||||
}@property --tw-translate-y{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0;
|
|
||||||
}@property --tw-translate-z{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0;
|
|
||||||
}@property --tw-scale-x{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 1;
|
|
||||||
}@property --tw-scale-y{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 1;
|
|
||||||
}@property --tw-scale-z{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 1;
|
|
||||||
}@property --tw-rotate-x{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-rotate-y{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-rotate-z{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-skew-x{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-skew-y{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-pan-x{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-pan-y{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-pinch-zoom{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-space-y-reverse{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0;
|
|
||||||
}@property --tw-space-x-reverse{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0;
|
|
||||||
}@property --tw-border-style{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: solid;
|
|
||||||
}@property --tw-gradient-position{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-gradient-from{syntax: "<color>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: #0000;
|
|
||||||
}@property --tw-gradient-via{syntax: "<color>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: #0000;
|
|
||||||
}@property --tw-gradient-to{syntax: "<color>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: #0000;
|
|
||||||
}@property --tw-gradient-stops{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-gradient-via-stops{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-gradient-from-position{syntax: "<length-percentage>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0%;
|
|
||||||
}@property --tw-gradient-via-position{syntax: "<length-percentage>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 50%;
|
|
||||||
}@property --tw-gradient-to-position{syntax: "<length-percentage>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 100%;
|
|
||||||
}@property --tw-leading{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-font-weight{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-tracking{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-ordinal{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-slashed-zero{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-numeric-figure{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-numeric-spacing{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-numeric-fraction{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-shadow{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0 0 #0000;
|
|
||||||
}@property --tw-shadow-color{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-shadow-alpha{syntax: "<percentage>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 100%;
|
|
||||||
}@property --tw-inset-shadow{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0 0 #0000;
|
|
||||||
}@property --tw-inset-shadow-color{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-inset-shadow-alpha{syntax: "<percentage>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 100%;
|
|
||||||
}@property --tw-ring-color{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-ring-shadow{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0 0 #0000;
|
|
||||||
}@property --tw-inset-ring-color{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-inset-ring-shadow{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0 0 #0000;
|
|
||||||
}@property --tw-ring-inset{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-ring-offset-width{syntax: "<length>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0px;
|
|
||||||
}@property --tw-ring-offset-color{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: #fff;
|
|
||||||
}@property --tw-ring-offset-shadow{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 0 0 #0000;
|
|
||||||
}@property --tw-outline-style{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: solid;
|
|
||||||
}@property --tw-blur{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-brightness{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-contrast{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-grayscale{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-hue-rotate{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-invert{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-opacity{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-saturate{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-sepia{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-drop-shadow{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-drop-shadow-color{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-drop-shadow-alpha{syntax: "<percentage>";
|
|
||||||
inherits: false;
|
|
||||||
initial-value: 100%;
|
|
||||||
}@property --tw-drop-shadow-size{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-backdrop-blur{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-backdrop-brightness{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-backdrop-contrast{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-backdrop-grayscale{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-backdrop-hue-rotate{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-backdrop-invert{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-backdrop-opacity{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-backdrop-saturate{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-backdrop-sepia{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-duration{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-ease{syntax: "*";
|
|
||||||
inherits: false;
|
|
||||||
}@property --tw-content{syntax: "*";
|
|
||||||
initial-value: "";
|
|
||||||
inherits: false;
|
|
||||||
}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::before,::after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}.medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}
|
|
||||||
@@ -1,616 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="en"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="en">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Authors · Blowfish</title>
|
|
||||||
<meta name="title" content="Authors · Blowfish">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/en/authors/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="en" href="https://sokolab.xyz/en/authors/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="ru" href="https://sokolab.xyz/authors/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/en/authors/index.xml" title="Blowfish" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/en/authors/">
|
|
||||||
<meta property="og:site_name" content="Blowfish">
|
|
||||||
<meta property="og:title" content="Authors">
|
|
||||||
<meta property="og:locale" content="en">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Authors">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.764f412f07ea715415e9123a5eb5f355429502d0b760146b9bcab854bc50829dee14488594acd935dfcdc6a0fe7e6d14d7bee914ebb9272b251aa238cb52c4dd.js"
|
|
||||||
integrity="sha512-dk9BLwfqcVQV6RI6XrXzVUKVAtC3YBRrm8q4VLxQgp3uFEiFlKzZNd/NxqD+fm0U177pFOu5JyslGqI4y1LE3Q=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Copy"
|
|
||||||
data-copied="Copied"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Authors",
|
|
||||||
"name": "Authors",
|
|
||||||
"headline": "Authors",
|
|
||||||
|
|
||||||
"inLanguage": "en",
|
|
||||||
"url" : "https://sokolab.xyz/en/authors/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": ""
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/en/authors/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Skip to main content
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/en/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Blowfish
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="Main menu" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Authors">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/authors/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Authors">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/authors/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Authors">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Switch to dark appearance">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Authors">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/authors/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Authors">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/authors/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Authors">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
title="Switch to dark appearance"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Authors</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="mt-6 flex max-w-prose flex-wrap gap-2">
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Scroll to top"
|
|
||||||
title="Scroll to top">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Search"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/en/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Search"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Search"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Close (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Authors on Blowfish</title>
|
|
||||||
<link>https://sokolab.xyz/en/authors/</link>
|
|
||||||
<description>Recent content in Authors on Blowfish</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>en</language>
|
|
||||||
<copyright>© 2026 </copyright>
|
|
||||||
<atom:link href="https://sokolab.xyz/en/authors/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,616 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="en"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="en">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Categories · Blowfish</title>
|
|
||||||
<meta name="title" content="Categories · Blowfish">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/en/categories/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="en" href="https://sokolab.xyz/en/categories/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="ru" href="https://sokolab.xyz/categories/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/en/categories/index.xml" title="Blowfish" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/en/categories/">
|
|
||||||
<meta property="og:site_name" content="Blowfish">
|
|
||||||
<meta property="og:title" content="Categories">
|
|
||||||
<meta property="og:locale" content="en">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Categories">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.764f412f07ea715415e9123a5eb5f355429502d0b760146b9bcab854bc50829dee14488594acd935dfcdc6a0fe7e6d14d7bee914ebb9272b251aa238cb52c4dd.js"
|
|
||||||
integrity="sha512-dk9BLwfqcVQV6RI6XrXzVUKVAtC3YBRrm8q4VLxQgp3uFEiFlKzZNd/NxqD+fm0U177pFOu5JyslGqI4y1LE3Q=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Copy"
|
|
||||||
data-copied="Copied"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Categories",
|
|
||||||
"name": "Categories",
|
|
||||||
"headline": "Categories",
|
|
||||||
|
|
||||||
"inLanguage": "en",
|
|
||||||
"url" : "https://sokolab.xyz/en/categories/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": ""
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/en/categories/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Skip to main content
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/en/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Blowfish
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="Main menu" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Categories">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/categories/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Categories">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/categories/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Categories">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Switch to dark appearance">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Categories">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/categories/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Categories">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/categories/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Categories">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
title="Switch to dark appearance"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Categories</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="mt-6 flex max-w-prose flex-wrap gap-2">
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Scroll to top"
|
|
||||||
title="Scroll to top">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Search"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/en/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Search"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Search"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Close (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Categories on Blowfish</title>
|
|
||||||
<link>https://sokolab.xyz/en/categories/</link>
|
|
||||||
<description>Recent content in Categories on Blowfish</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>en</language>
|
|
||||||
<copyright>© 2026 </copyright>
|
|
||||||
<atom:link href="https://sokolab.xyz/en/categories/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,596 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="en"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta name="generator" content="Hugo 0.167.0">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="en">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Blowfish</title>
|
|
||||||
<meta name="title" content="Blowfish">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/en/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="en" href="https://sokolab.xyz/en/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="ru" href="https://sokolab.xyz/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/en/index.xml" title="Blowfish" />
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/json" href="/en/index.json" title="Blowfish" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/en/">
|
|
||||||
<meta property="og:site_name" content="Blowfish">
|
|
||||||
<meta property="og:title" content="Blowfish">
|
|
||||||
<meta property="og:locale" content="en">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Blowfish">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.764f412f07ea715415e9123a5eb5f355429502d0b760146b9bcab854bc50829dee14488594acd935dfcdc6a0fe7e6d14d7bee914ebb9272b251aa238cb52c4dd.js"
|
|
||||||
integrity="sha512-dk9BLwfqcVQV6RI6XrXzVUKVAtC3YBRrm8q4VLxQgp3uFEiFlKzZNd/NxqD+fm0U177pFOu5JyslGqI4y1LE3Q=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Copy"
|
|
||||||
data-copied="Copied"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "WebSite",
|
|
||||||
"@id": "https://sokolab.xyz/en/",
|
|
||||||
"name": "Blowfish",
|
|
||||||
|
|
||||||
"inLanguage": "en",
|
|
||||||
"url": "https://sokolab.xyz/en/",
|
|
||||||
|
|
||||||
"publisher" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Skip to main content
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/en/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Blowfish
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="Main menu" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Blowfish">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Blowfish">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Sokolab">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Switch to dark appearance">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Blowfish">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Blowfish">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Sokolab">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
title="Switch to dark appearance"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<article
|
|
||||||
class="
|
|
||||||
h-full
|
|
||||||
flex flex-col items-center justify-center text-center">
|
|
||||||
<header class="relative px-1 py-1 flex flex-col items-center mb-3">
|
|
||||||
|
|
||||||
<h1 class="text-4xl font-extrabold">
|
|
||||||
Blowfish
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<div class="mt-1 text-2xl">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<section class="prose dark:prose-invert w-full"></section>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Scroll to top"
|
|
||||||
title="Scroll to top">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Search"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/en/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Search"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Search"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Close (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
[{"content":"","externalUrl":null,"permalink":"/en/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/en/","section":"Blowfish","summary":"","title":"Blowfish","type":"page"},{"content":"","externalUrl":null,"permalink":"/en/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/en/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","externalUrl":null,"permalink":"/en/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"}]
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Blowfish</title>
|
|
||||||
<link>https://sokolab.xyz/en/</link>
|
|
||||||
<description>Recent content on Blowfish</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>en</language>
|
|
||||||
<copyright>© 2026 </copyright>
|
|
||||||
<atom:link href="https://sokolab.xyz/en/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,616 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="en"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="en">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Series · Blowfish</title>
|
|
||||||
<meta name="title" content="Series · Blowfish">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/en/series/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="en" href="https://sokolab.xyz/en/series/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="ru" href="https://sokolab.xyz/series/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/en/series/index.xml" title="Blowfish" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/en/series/">
|
|
||||||
<meta property="og:site_name" content="Blowfish">
|
|
||||||
<meta property="og:title" content="Series">
|
|
||||||
<meta property="og:locale" content="en">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Series">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.764f412f07ea715415e9123a5eb5f355429502d0b760146b9bcab854bc50829dee14488594acd935dfcdc6a0fe7e6d14d7bee914ebb9272b251aa238cb52c4dd.js"
|
|
||||||
integrity="sha512-dk9BLwfqcVQV6RI6XrXzVUKVAtC3YBRrm8q4VLxQgp3uFEiFlKzZNd/NxqD+fm0U177pFOu5JyslGqI4y1LE3Q=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Copy"
|
|
||||||
data-copied="Copied"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Series",
|
|
||||||
"name": "Series",
|
|
||||||
"headline": "Series",
|
|
||||||
|
|
||||||
"inLanguage": "en",
|
|
||||||
"url" : "https://sokolab.xyz/en/series/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": ""
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/en/series/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Skip to main content
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/en/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Blowfish
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="Main menu" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Series">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/series/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Series">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/series/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Series">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Switch to dark appearance">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Series">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/series/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Series">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/series/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Series">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
title="Switch to dark appearance"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Series</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="mt-6 flex max-w-prose flex-wrap gap-2">
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Scroll to top"
|
|
||||||
title="Scroll to top">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Search"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/en/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Search"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Search"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Close (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Series on Blowfish</title>
|
|
||||||
<link>https://sokolab.xyz/en/series/</link>
|
|
||||||
<description>Recent content in Series on Blowfish</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>en</language>
|
|
||||||
<copyright>© 2026 </copyright>
|
|
||||||
<atom:link href="https://sokolab.xyz/en/series/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
|
||||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://sokolab.xyz/en/</loc>
|
|
||||||
<changefreq>daily</changefreq>
|
|
||||||
<priority>0.5</priority>
|
|
||||||
<xhtml:link
|
|
||||||
rel="alternate"
|
|
||||||
hreflang="ru"
|
|
||||||
href="https://sokolab.xyz/"
|
|
||||||
/>
|
|
||||||
<xhtml:link
|
|
||||||
rel="alternate"
|
|
||||||
hreflang="en"
|
|
||||||
href="https://sokolab.xyz/en/"
|
|
||||||
/>
|
|
||||||
</url>
|
|
||||||
</urlset>
|
|
||||||
@@ -1,616 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="en"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="en">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Tags · Blowfish</title>
|
|
||||||
<meta name="title" content="Tags · Blowfish">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/en/tags/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="en" href="https://sokolab.xyz/en/tags/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" hreflang="ru" href="https://sokolab.xyz/tags/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/en/tags/index.xml" title="Blowfish" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/en/tags/">
|
|
||||||
<meta property="og:site_name" content="Blowfish">
|
|
||||||
<meta property="og:title" content="Tags">
|
|
||||||
<meta property="og:locale" content="en">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Tags">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.764f412f07ea715415e9123a5eb5f355429502d0b760146b9bcab854bc50829dee14488594acd935dfcdc6a0fe7e6d14d7bee914ebb9272b251aa238cb52c4dd.js"
|
|
||||||
integrity="sha512-dk9BLwfqcVQV6RI6XrXzVUKVAtC3YBRrm8q4VLxQgp3uFEiFlKzZNd/NxqD+fm0U177pFOu5JyslGqI4y1LE3Q=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Copy"
|
|
||||||
data-copied="Copied"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Tags",
|
|
||||||
"name": "Tags",
|
|
||||||
"headline": "Tags",
|
|
||||||
|
|
||||||
"inLanguage": "en",
|
|
||||||
"url" : "https://sokolab.xyz/en/tags/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": ""
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/en/tags/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Skip to main content
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/en/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Blowfish
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="Main menu" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Tags">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/tags/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Tags">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/tags/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Tags">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Switch to dark appearance">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="translation nested-menu">
|
|
||||||
<button class="cursor-pointer flex items-center">
|
|
||||||
<span class="me-1">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
||||||
<path fill="currentColor" d="M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z"/></svg></span>
|
|
||||||
</span>
|
|
||||||
<span class="text-sm font-medium bf-icon-color-hover" title="Tags">EN</span>
|
|
||||||
</button>
|
|
||||||
<ul class="menuhide">
|
|
||||||
<li class="rounded-xl border border-neutral-200/80 bg-neutral/95 shadow-2xl shadow-neutral-900/20 dark:border-neutral-700/80 dark:bg-neutral-800/95 p-2 flex flex-col gap-1">
|
|
||||||
|
|
||||||
<a href="/en/tags/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Tags">
|
|
||||||
EN
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="/tags/" class="flex items-center bf-icon-color-hover px-3 py-1">
|
|
||||||
<span class="text-sm font-sm" title="Tags">
|
|
||||||
RU
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Switch to dark appearance"
|
|
||||||
title="Switch to dark appearance"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Search (/ or ⌘K)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Search (/ or ⌘K)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Tags</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="mt-6 flex max-w-prose flex-wrap gap-2">
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Scroll to top"
|
|
||||||
title="Scroll to top">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Powered by <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Search"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/en/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Search"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Search"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Close (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Tags on Blowfish</title>
|
|
||||||
<link>https://sokolab.xyz/en/tags/</link>
|
|
||||||
<description>Recent content in Tags on Blowfish</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>en</language>
|
|
||||||
<copyright>© 2026 </copyright>
|
|
||||||
<atom:link href="https://sokolab.xyz/en/tags/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
|
Before Width: | Height: | Size: 737 B |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 163 KiB |
@@ -1,912 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta name="generator" content="Hugo 0.167.0">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Sokolab</title>
|
|
||||||
<meta name="title" content="Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/index.xml" title="Sokolab" />
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/json" href="/index.json" title="Sokolab" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="author" content="Alexander Sokolov aka s0k0l">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://t.me/sokolex" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://git.sokolab.xyz/sokol" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/">
|
|
||||||
<meta property="og:site_name" content="Sokolab">
|
|
||||||
<meta property="og:title" content="Sokolab">
|
|
||||||
<meta property="og:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Sokolab">
|
|
||||||
<meta name="twitter:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.2fd4cae71f73e7d5de8d256fdda25088b81b3f192c1e688761f6c12c77cb3c43cae8132e194a7f37019d495951c1f99c70dbf4e1938a3a0896eb4d2ced842bc0.js"
|
|
||||||
integrity="sha512-L9TK5x9z59XejSVv3aJQiLgbPxksHmiHYfbBLHfLPEPK6BMuGUp/NwGdSVlRwfmccNv04ZOKOgiW600s7YQrwA=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "WebSite",
|
|
||||||
"@id": "https://sokolab.xyz/",
|
|
||||||
"name": "Sokolab",
|
|
||||||
"description": "Программные и аппаратные продукты для людей и бизнеса",
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url": "https://sokolab.xyz/",
|
|
||||||
|
|
||||||
"publisher" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Alexander Sokolov aka s0k0l"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Sokolab
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
|
|
||||||
class="flex items-center bf-icon-color-hover"
|
|
||||||
aria-label="Блог"
|
|
||||||
title="Блог">
|
|
||||||
|
|
||||||
|
|
||||||
<span class="text-sm font-medium break-normal">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="checkbox" id="mobile-menu-toggle" autocomplete="off" class="hidden peer">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
aria-label=""
|
|
||||||
class="flex items-center justify-center cursor-pointer bf-icon-color-hover">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="mobile-menu-dialog"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label=""
|
|
||||||
style="scrollbar-gutter: stable;"
|
|
||||||
class="z-50 invisible overflow-y-auto opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100
|
|
||||||
|
|
||||||
fixed inset-0 px-6 py-20 bg-neutral-50/97 dark:bg-neutral-900/99
|
|
||||||
|
|
||||||
bf-scrollbar">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
class="fixed end-8 top-5 z-50 h-12 w-12 rounded-full flex items-center justify-center cursor-pointer select-none bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900">
|
|
||||||
<span class="sr-only"></span>
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<nav
|
|
||||||
aria-label=""
|
|
||||||
class="mx-auto max-w-md space-y-6">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="px-2">
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
aria-label="Блог"
|
|
||||||
|
|
||||||
class="flex grow items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200">
|
|
||||||
|
|
||||||
<span title="Блог" class="text-2xl font-bold tracking-tight">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<article
|
|
||||||
class=" flex flex-col items-center justify-center text-center">
|
|
||||||
<header class="relative px-1 py-1 flex flex-col items-center mb-3">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<img
|
|
||||||
class="mb-2 h-36 w-36 rounded-full"
|
|
||||||
width="144"
|
|
||||||
height="144"
|
|
||||||
alt="Alexander Sokolov aka s0k0l"
|
|
||||||
loading="eager"
|
|
||||||
fetchpriority="high"
|
|
||||||
src="/img/me_hu_7d90f7d973c2ce6c.jpg"
|
|
||||||
data-zoom-src="/img/me_hu_a7a552336841cea9.jpg">
|
|
||||||
|
|
||||||
|
|
||||||
<h1 class="text-4xl font-extrabold">
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<h2 class="text-xl text-neutral-500 dark:text-neutral-400">
|
|
||||||
Делаю софт и железо, которые упрощают жизнь и работу
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="mt-1 text-2xl">
|
|
||||||
|
|
||||||
<div class="flex flex-wrap text-neutral-400 dark:text-neutral-500 space-x-2">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
class="email-link hover:text-primary-700 dark:hover:text-primary-400"
|
|
||||||
href="#"
|
|
||||||
|
|
||||||
data-email="bWFpbHRvOnhhbGV4LnNva29sQGdtYWlsLmNvbQ=="
|
|
||||||
|
|
||||||
target="_blank"
|
|
||||||
aria-label="Email"
|
|
||||||
title="Email"
|
|
||||||
rel="me noopener noreferrer"
|
|
||||||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M207.8 20.73c-93.45 18.32-168.7 93.66-187 187.1c-27.64 140.9 68.65 266.2 199.1 285.1c19.01 2.888 36.17-12.26 36.17-31.49l.0001-.6631c0-15.74-11.44-28.88-26.84-31.24c-84.35-12.98-149.2-86.13-149.2-174.2c0-102.9 88.61-185.5 193.4-175.4c91.54 8.869 158.6 91.25 158.6 183.2l0 16.16c0 22.09-17.94 40.05-40 40.05s-40.01-17.96-40.01-40.05v-120.1c0-8.847-7.161-16.02-16.01-16.02l-31.98 .0036c-7.299 0-13.2 4.992-15.12 11.68c-24.85-12.15-54.24-16.38-86.06-5.106c-38.75 13.73-68.12 48.91-73.72 89.64c-9.483 69.01 43.81 128 110.9 128c26.44 0 50.43-9.544 69.59-24.88c24 31.3 65.23 48.69 109.4 37.49C465.2 369.3 496 324.1 495.1 277.2V256.3C495.1 107.1 361.2-9.332 207.8 20.73zM239.1 304.3c-26.47 0-48-21.56-48-48.05s21.53-48.05 48-48.05s48 21.56 48 48.05S266.5 304.3 239.1 304.3z"/></svg>
|
|
||||||
</span></span></a
|
|
||||||
>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
class=" hover:text-primary-700 dark:hover:text-primary-400"
|
|
||||||
href="https://t.me/sokolex"
|
|
||||||
|
|
||||||
target="_blank"
|
|
||||||
aria-label="Telegram"
|
|
||||||
title="Telegram"
|
|
||||||
rel="me noopener noreferrer"
|
|
||||||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z"/></svg>
|
|
||||||
</span></span></a
|
|
||||||
>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
class=" hover:text-primary-700 dark:hover:text-primary-400"
|
|
||||||
href="https://git.sokolab.xyz/sokol"
|
|
||||||
|
|
||||||
target="_blank"
|
|
||||||
aria-label="Gitea"
|
|
||||||
title="Gitea"
|
|
||||||
rel="me noopener noreferrer"
|
|
||||||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="5.67 143.05 628.65 387.55"><path fill="currentColor" d="M115.912 143.075c-6.462 0-13.762.525-22.012 2.325-8.7 1.8-33.5 7.4-53.8 26.9C-4.9 212.4 6.6 276.2 8 285.8c1.7 11.7 6.9 44.2 31.7 72.5 45.8 56.1 144.4 54.8 144.4 54.8s12.1 28.9 30.6 55.5c25 33.1 50.7 58.9 75.7 62 63 0 188.9-.1 188.9-.1s12 .1 28.3-10.3c14-8.5 26.5-23.4 26.5-23.4S547 483 565 451.5c5.5-9.7 10.1-19.1 14.1-28 0 0 55.2-117.1 55.2-231.1-1.1-34.5-9.6-40.6-11.6-42.6-4.1-4.1-9.6-4-9.6-4s-117.2 6.6-177.9 8c-13.267.3-26.433.597-39.5.697l.1 117.002s57.4 24.202 83.1 40.102c3.7 2.3 10.2 6.798 12.9 14.398 2.1 6.1 2 13.101-1 19.301l-61 126.9c-6.2 12.7-21.4 18.1-33.9 12l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5 21.2-17.9 33.8-11.8a5290.322 5290.322 0 0 0 27 12.954c0-36.449-.1-109.053-.1-109.053-29 .4-89.2-2.201-89.2-2.201s-141.4-7.1-156.8-8.5c-4.9-.3-10.525-.825-16.988-.825zm12.188 48.026s7.1 59.399 15.7 94.199c7.2 29.2 24.8 77.7 24.8 77.7s-26.1-3.1-43-9.1c-25.9-8.5-36.9-18.7-36.9-18.7S69.6 321.8 60 295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5 38.5-30c13.8-3.7 31-3.1 31-3.1z"/><path fill="currentColor" d="M326.8 380.1c-8.2.1-15.4 5.8-17.3 13.8-1.9 8 2 16.3 9.1 20 7.7 4 17.5 1.8 22.7-5.4 5.1-7.1 4.3-16.9-1.8-23.1l24-49.1c1.5.1 3.7.2 6.2-.5 4.1-.9 7.1-3.6 7.1-3.6 4.2 1.8 8.6 3.8 13.2 6.1 4.8 2.4 9.3 4.9 13.4 7.3.9.5 1.8 1.1 2.8 1.9 1.6 1.3 3.4 3.1 4.7 5.5 1.9 5.5-1.9 14.9-1.9 14.9-2.3 7.6-18.4 40.6-18.4 40.6-8.1-.2-15.3 5-17.7 12.5-2.6 8.1 1.1 17.3 8.9 21.3 7.8 4 17.4 1.7 22.5-5.3 5-6.8 4.6-16.3-1.1-22.6 1.9-3.7 3.7-7.4 5.6-11.3 5-10.4 13.5-30.4 13.5-30.4.9-1.7 5.7-10.3 2.7-21.3-2.5-11.4-12.6-16.7-12.6-16.7-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3 4.7-9.7 9.4-19.3 14.1-29-4.1-2-8.1-4-12.2-6.1-4.8 9.8-9.7 19.7-14.5 29.5-6.7-.1-12.9 3.5-16.1 9.4-3.4 6.3-2.7 14.1 1.9 19.8l-24.6 50.4z"/></svg></span></span></a
|
|
||||||
>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<section class="prose dark:prose-invert w-full">
|
|
||||||
<h2 class="relative group">Кто я!
|
|
||||||
<div id="кто-я" class="anchor"></div>
|
|
||||||
|
|
||||||
<span
|
|
||||||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
|
||||||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d0%ba%d1%82%d0%be-%d1%8f" aria-label="Якорь">#</a>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
<p>Я тот кто решает проблемы</p>
|
|
||||||
|
|
||||||
<h2 class="relative group">Что я делаю
|
|
||||||
<div id="что-я-делаю" class="anchor"></div>
|
|
||||||
|
|
||||||
<span
|
|
||||||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
|
||||||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%87%d1%82%d0%be-%d1%8f-%d0%b4%d0%b5%d0%bb%d0%b0%d1%8e" aria-label="Якорь">#</a>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
<p>Создаю программные и аппаратные продукты для людей и бизнеса,
|
|
||||||
которые помогают жить и работать удобнее.</p>
|
|
||||||
<ul>
|
|
||||||
<li><strong>Софт</strong> — боты, сервисы, автоматизация</li>
|
|
||||||
<li><strong>Железо</strong> — устройства, электроника, прототипы</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2 class="relative group">Связаться
|
|
||||||
<div id="связаться" class="anchor"></div>
|
|
||||||
|
|
||||||
<span
|
|
||||||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
|
||||||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%81%d0%b2%d1%8f%d0%b7%d0%b0%d1%82%d1%8c%d1%81%d1%8f" aria-label="Якорь">#</a>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
<p>Пишите в <a href="https://t.me/sokolex" target="_blank" rel="noreferrer">Telegram</a> или на <a href="mailto:xalex.sokol@gmail.com" >почту</a>.
|
|
||||||
Мои проекты — в <a href="https://git.sokolab.xyz/sokol" target="_blank" rel="noreferrer">Gitea</a>.</p>
|
|
||||||
</section>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h2 class="mt-8 text-2xl font-extrabold mb-10">Недавние</h2>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<article
|
|
||||||
class="article-link--card group relative min-h-full min-w-full overflow-hidden rounded-lg border border-neutral-300/80 bg-white/85 dark:border-neutral-600/80 dark:bg-neutral-900/80">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="p-4">
|
|
||||||
<header>
|
|
||||||
<a
|
|
||||||
|
|
||||||
href="/blog/hello/"
|
|
||||||
|
|
||||||
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
|
||||||
<h2>
|
|
||||||
Запустил свой сайт
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
</a>
|
|
||||||
</header>
|
|
||||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
<time datetime="2026-10-05T21:14:48+04:00">5 октября 2026</time><span class="px-2 text-primary-500">·</span><span>35 слов</span><span class="px-2 text-primary-500">·</span><span title="Время чтения">1 минута</span>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="px-6 pt-4 pb-2"></div>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="mt-10 flex justify-center">
|
|
||||||
<a href="/blog/">
|
|
||||||
<button
|
|
||||||
class="bg-transparent hover:text-primary-500 prose dark:prose-invert font-semibold py-2 px-4 border border-primary-500 hover:border-transparent rounded">
|
|
||||||
Показать еще
|
|
||||||
</button>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
[{"content":"","date":"5 октября 2026","externalUrl":null,"permalink":"/tags/hugo/","section":"Tags","summary":"","title":"Hugo","type":"tags"},{"content":" Кто я! # Я тот кто решает проблемы\nЧто я делаю # Создаю программные и аппаратные продукты для людей и бизнеса, которые помогают жить и работать удобнее.\nСофт — боты, сервисы, автоматизация Железо — устройства, электроника, прототипы Связаться # Пишите в Telegram или на почту. Мои проекты — в Gitea.\n","date":"5 октября 2026","externalUrl":null,"permalink":"/","section":"Sokolab","summary":"","title":"Sokolab","type":"page"},{"content":"","date":"5 октября 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"5 октября 2026","externalUrl":null,"permalink":"/blog/","section":"Блог","summary":"","title":"Блог","type":"blog"},{"content":"Сегодня запустил sokolab.xyz. Всё крутится на моём сервере в Docker.\nКак это устроено # Сайт собран на Hugo, исходники лежат в моей Gitea.\nпишу пост в Markdown; делаю git push; через минуту он на сайте. ","date":"5 октября 2026","externalUrl":null,"permalink":"/blog/hello/","section":"Блог","summary":"Как я поднял сайт и Gitea на своём сервере","title":"Запустил свой сайт","type":"blog"},{"content":"","date":"5 октября 2026","externalUrl":null,"permalink":"/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/","section":"Tags","summary":"","title":"Сервер","type":"tags"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Sokolab</title>
|
|
||||||
<link>https://sokolab.xyz/</link>
|
|
||||||
<description>Recent content on Sokolab</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>ru</language>
|
|
||||||
<copyright>© 2026 Alexander Sokolov aka s0k0l</copyright>
|
|
||||||
<lastBuildDate>Mon, 05 Oct 2026 21:14:48 +0400</lastBuildDate><atom:link href="https://sokolab.xyz/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Запустил свой сайт</title>
|
|
||||||
<link>https://sokolab.xyz/blog/hello/</link>
|
|
||||||
<pubDate>Mon, 05 Oct 2026 21:14:48 +0400</pubDate>
|
|
||||||
|
|
||||||
<guid>https://sokolab.xyz/blog/hello/</guid>
|
|
||||||
<description>Как я поднял сайт и Gitea на своём сервере</description>
|
|
||||||
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,686 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Sokolab · </title>
|
|
||||||
<meta name="title" content="Sokolab · ">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="http://localhost:1313/intro/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="http://localhost:1313/intro/">
|
|
||||||
<meta property="og:title" content="Sokolab">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="article">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.764f412f07ea715415e9123a5eb5f355429502d0b760146b9bcab854bc50829dee14488594acd935dfcdc6a0fe7e6d14d7bee914ebb9272b251aa238cb52c4dd.js"
|
|
||||||
integrity="sha512-dk9BLwfqcVQV6RI6XrXzVUKVAtC3YBRrm8q4VLxQgp3uFEiFlKzZNd/NxqD+fm0U177pFOu5JyslGqI4y1LE3Q=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.da58b1304bfacd9b855ab9f384e3868df56e6f644411b2ffe3c5ece0f44326654771b87246f3c1134fe55c51e85919c93349077fee0ad8cfce067fb6205b9fc9.js"
|
|
||||||
integrity="sha512-2lixMEv6zZuFWrnzhOOGjfVub2REEbL/48Xs4PRDJmVHcbhyRvPBE0/lXFHoWRnJM0kHf+4K2M/OBn+2IFufyQ=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "",
|
|
||||||
"name": "Sokolab",
|
|
||||||
"headline": "Sokolab",
|
|
||||||
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url" : "http://localhost:1313/intro/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": ""
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "http://localhost:1313/intro/",
|
|
||||||
"wordCount": 52
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<article>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header id="single_header" class="mt-5 max-w-prose">
|
|
||||||
|
|
||||||
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
|
|
||||||
Sokolab
|
|
||||||
</h1>
|
|
||||||
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
<time datetime="0001-01-01T00:00:00+00:00">1 января 1 г.</time><span class="px-2 text-primary-500">·</span><span>52 слов</span><span class="px-2 text-primary-500">·</span><span title="Время чтения">1 минута</span>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex author">
|
|
||||||
|
|
||||||
<div class="place-self-center">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="text-2xl sm:text-lg">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="mb-5"></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="min-w-0 min-h-0 max-w-fit">
|
|
||||||
|
|
||||||
|
|
||||||
<div class="article-content max-w-prose mb-20">
|
|
||||||
|
|
||||||
<h2 class="relative group">Кто я
|
|
||||||
<div id="кто-я" class="anchor"></div>
|
|
||||||
|
|
||||||
<span
|
|
||||||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
|
||||||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d0%ba%d1%82%d0%be-%d1%8f" aria-label="Якорь">#</a>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
<p>Пара абзацев: опыт, чем занимался, что умею.</p>
|
|
||||||
|
|
||||||
<h2 class="relative group">Что я делаю
|
|
||||||
<div id="что-я-делаю" class="anchor"></div>
|
|
||||||
|
|
||||||
<span
|
|
||||||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
|
||||||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%87%d1%82%d0%be-%d1%8f-%d0%b4%d0%b5%d0%bb%d0%b0%d1%8e" aria-label="Якорь">#</a>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
<p>Создаю программные и аппаратные продукты для людей и бизнеса,
|
|
||||||
которые помогают жить и работать удобнее.</p>
|
|
||||||
<ul>
|
|
||||||
<li><strong>Софт</strong> — боты, сервисы, автоматизация</li>
|
|
||||||
<li><strong>Железо</strong> — устройства, электроника, прототипы</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2 class="relative group">Связаться
|
|
||||||
<div id="связаться" class="anchor"></div>
|
|
||||||
|
|
||||||
<span
|
|
||||||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
|
||||||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%81%d0%b2%d1%8f%d0%b7%d0%b0%d1%82%d1%8c%d1%81%d1%8f" aria-label="Якорь">#</a>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
<p>Пишите в <a href="https://t.me/sokolex" target="_blank" rel="noreferrer">Telegram</a> или на <a href="mailto:xalex.sokol@gmai.com" >почту</a>.
|
|
||||||
Мои проекты — в <a href="https://git.sokolab.xyz/" target="_blank" rel="noreferrer">Gitea</a>.</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
<footer class="pt-8 max-w-prose print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
const sitePreference=document.documentElement.getAttribute("data-default-appearance"),userPreference=localStorage.getItem("appearance");(sitePreference==="dark"&&userPreference===null||userPreference==="dark")&&document.documentElement.classList.add("dark"),document.documentElement.getAttribute("data-auto-appearance")==="true"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&userPreference!=="light"&&document.documentElement.classList.add("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{e.matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}));var updateMeta,getTargetAppearance,updateMermaidTheme=()=>{if(typeof mermaid!="undefined"){const e=document.documentElement.classList.contains("dark"),t=document.querySelectorAll("pre.mermaid");t.forEach(e=>{e.getAttribute("data-processed")?(e.removeAttribute("data-processed"),e.innerHTML=e.getAttribute("data-graph")):e.setAttribute("data-graph",e.textContent)}),e?(initMermaidDark(),mermaid.run()):(initMermaidLight(),mermaid.run())}};window.addEventListener("DOMContentLoaded",e=>{const t=document.getElementById("appearance-switcher"),n=document.getElementById("appearance-switcher-mobile"),o="Переключить на темный вид",i="Переключить на светлый вид";updateMeta(),this.updateLogo?.(getTargetAppearance()),updateMermaidTheme();const s=e=>{const s=e==="dark"?i:o;t&&(t.setAttribute("aria-label",s),t.setAttribute("title",s)),n&&(n.setAttribute("aria-label",s),n.setAttribute("title",s))};s(getTargetAppearance()),t&&(t.addEventListener("click",()=>{document.documentElement.classList.toggle("dark");var e=getTargetAppearance();localStorage.setItem("appearance",e),updateMeta(),updateMermaidTheme(),s(e),this.updateLogo?.(e)}),t.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")})),n&&(n.addEventListener("click",()=>{document.documentElement.classList.toggle("dark");var e=getTargetAppearance();localStorage.setItem("appearance",e),updateMeta(),updateMermaidTheme(),s(e),this.updateLogo?.(e)}),n.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")}))}),updateMeta=()=>{var e=document.querySelector("body"),t=getComputedStyle(e);document.querySelector('meta[name="theme-color"]').setAttribute("content",t.backgroundColor)},getTargetAppearance=()=>document.documentElement.classList.contains("dark")?"dark":"light",window.addEventListener("DOMContentLoaded",e=>{const t=document.getElementById("top-scroller"),n=document.getElementById("site-footer");t&&n&&t.getBoundingClientRect().top>n.getBoundingClientRect().top&&(t.hidden=!0)})
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
const sitePreference=document.documentElement.getAttribute("data-default-appearance"),userPreference=localStorage.getItem("appearance");(sitePreference==="dark"&&userPreference===null||userPreference==="dark")&&document.documentElement.classList.add("dark"),document.documentElement.getAttribute("data-auto-appearance")==="true"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&userPreference!=="light"&&document.documentElement.classList.add("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{e.matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}));var updateMeta,getTargetAppearance,updateMermaidTheme=()=>{if(typeof mermaid!="undefined"){const e=document.documentElement.classList.contains("dark"),t=document.querySelectorAll("pre.mermaid");t.forEach(e=>{e.getAttribute("data-processed")?(e.removeAttribute("data-processed"),e.innerHTML=e.getAttribute("data-graph")):e.setAttribute("data-graph",e.textContent)}),e?(initMermaidDark(),mermaid.run()):(initMermaidLight(),mermaid.run())}};window.addEventListener("DOMContentLoaded",e=>{const t=document.getElementById("appearance-switcher"),n=document.getElementById("appearance-switcher-mobile"),o="Switch to dark appearance",i="Switch to light appearance";updateMeta(),this.updateLogo?.(getTargetAppearance()),updateMermaidTheme();const s=e=>{const s=e==="dark"?i:o;t&&(t.setAttribute("aria-label",s),t.setAttribute("title",s)),n&&(n.setAttribute("aria-label",s),n.setAttribute("title",s))};s(getTargetAppearance()),t&&(t.addEventListener("click",()=>{document.documentElement.classList.toggle("dark");var e=getTargetAppearance();localStorage.setItem("appearance",e),updateMeta(),updateMermaidTheme(),s(e),this.updateLogo?.(e)}),t.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")})),n&&(n.addEventListener("click",()=>{document.documentElement.classList.toggle("dark");var e=getTargetAppearance();localStorage.setItem("appearance",e),updateMeta(),updateMermaidTheme(),s(e),this.updateLogo?.(e)}),n.addEventListener("contextmenu",e=>{e.preventDefault(),localStorage.removeItem("appearance")}))}),updateMeta=()=>{var e=document.querySelector("body"),t=getComputedStyle(e);document.querySelector('meta[name="theme-color"]').setAttribute("content",t.backgroundColor)},getTargetAppearance=()=>document.documentElement.classList.contains("dark")?"dark":"light",window.addEventListener("DOMContentLoaded",e=>{const t=document.getElementById("top-scroller"),n=document.getElementById("site-footer");t&&n&&t.getBoundingClientRect().top>n.getBoundingClientRect().top&&(t.hidden=!0)})
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
function scrollToTop(){const e=document.getElementById("scroll-to-top");window.scrollY>window.innerHeight*.5?(e.classList.remove("translate-y-4","opacity-0"),e.classList.add("translate-y-0","opacity-100")):(e.classList.remove("translate-y-0","opacity-100"),e.classList.add("translate-y-4","opacity-0"))}window.addEventListener("scroll",scrollToTop),window.addEventListener("load",scrollToTop);function e(e){return Array.isArray?Array.isArray(e):u(e)===`[object Array]`}function t(e){if(typeof e==`string`)return e;if(typeof e==`bigint`)return e.toString();let t=e+``;return t==`0`&&1/e==-1/0?`-0`:t}function n(e){return e==null?``:t(e)}function r(e){return typeof e==`string`}function i(e){return typeof e==`number`}function a(e){return e===!0||e===!1||s(e)&&u(e)==`[object Boolean]`}function o(e){return typeof e==`object`}function s(e){return o(e)&&e!==null}function c(e){return e!=null}function l(e){return!e.trim().length}function u(e){return e==null?e===0[0]?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}const d=`Invalid doc index: must be a non-negative integer within the bounds of the docs array`,f=e=>`Invalid value for key ${e}`,p=e=>`Pattern length exceeds max of ${e}.`,m=e=>`Missing ${e} property in key`,h=e=>`Property 'weight' in key '${e}' must be a positive integer`,g=Object.prototype.hasOwnProperty;var k,I,se,fe,_e,$,be,fuse,showButton,showButtonMobile,hideButton,wrapper,modal,input,output,first,last,searchVisible,indexed,hasResults,previouslyFocused,_=class{constructor(e){this._keys=[],this._keyMap={};let t=0;e.forEach(e=>{let n=v(e);this._keys.push(n),this._keyMap[n.id]=n,t+=n.weight}),this._keys.forEach(e=>{e.weight/=t})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function v(t){let n=null,s=null,o=null,i=1,a=null;if(r(t)||e(t))o=t,n=y(t),s=b(t);else{if(!g.call(t,`name`))throw Error(m(`name`));let e=t.name;if(o=e,g.call(t,`weight`)&&t.weight!==0[0]&&(i=t.weight,i<=0))throw Error(h(b(e)));n=y(e),s=b(e),a=t.getFn??null}return{path:n,id:s,weight:i,src:o,getFn:a}}function y(t){return e(t)?t:t.split(`.`)}function b(t){return e(t)?t.join(`.`):t}function x(t,s){let o=[],d=!1,l=(t,s,u,h)=>{if(c(t))if(s[u]){let m=t[s[u]];if(!c(m))return;if(u===s.length-1&&(r(m)||i(m)||a(m)||typeof m==`bigint`))o.push(h===0[0]?n(m):{v:n(m),i:h});else if(e(m)){d=!0;for(let e=0,t=m.length;e<t;e+=1)l(m[e],s,u+1,e)}else s.length&&l(m,s,u+1,h)}else o.push(h===0[0]?t:{v:t,i:h})};return l(t,r(s)?s.split(`.`):s,0),d?o:o[0]}const S={includeMatches:!1,findAllMatches:!1,minMatchCharLength:1},C={isCaseSensitive:!1,ignoreDiacritics:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx<t.idx?-1:1:e.score<t.score?-1:1},w={location:0,threshold:.6,distance:100},T={useExtendedSearch:!1,useTokenSearch:!1,tokenize:0[0],tokenMatch:`any`,getFn:x,ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},E=Object.freeze({...C,...S,...w,...T});function D(e){return e>=9&&e<=13||e===32||e===160}function O(e=1,t=3){let n=new Map,s=10**t;return{get(t){let o=0,i=!1;for(let e=0;e<t.length;e++)D(t.charCodeAt(e))?i=!1:i||(o++,i=!0);if(o===0&&(o=1),n.has(o))return n.get(o);let a=Math.round(s/o**(.5*e))/s;return n.set(o,a),a},clear(){n.clear()}}}k=class{constructor({getFn:e=E.getFn,fieldNormWeight:t=E.fieldNormWeight}={}){this.norm=O(t,3),this.getFn=e,this.isCreated=!1,this.docs=[],this.keys=[],this._keysMap={},this.setIndexRecords()}setSources(e=[]){this.docs=e}setIndexRecords(e=[]){this.records=e}setKeys(e=[]){this.keys=e,this._keysMap={},e.forEach((e,t)=>{this._keysMap[e.id]=t})}create(){if(this.isCreated||!this.docs.length)return;this.isCreated=!0;let e=this.docs.length;this.records=Array(e);let t=0;if(r(this.docs[0]))for(let n=0;n<e;n++){let s=this._createStringRecord(this.docs[n],n);s&&(this.records[t++]=s)}else for(let n=0;n<e;n++)this.records[t++]=this._createObjectRecord(this.docs[n],n);this.records.length=t,this.norm.clear()}add(e,t){if(!Number.isInteger(t)||t<0)throw Error(d);if(r(e)){let n=this._createStringRecord(e,t);return n&&this.records.push(n),n}let n=this._createObjectRecord(e,t);return this.records.push(n),n}removeAt(e){if(!Number.isInteger(e)||e<0)throw Error(d);for(let t=0,n=this.records.length;t<n;t+=1)if(this.records[t].i===e){this.records.splice(t,1);break}for(let t=0,n=this.records.length;t<n;t+=1)this.records[t].i>e&&--this.records[t].i}removeAll(e){let t=new Set;for(let n of e)Number.isInteger(n)&&n>=0&&t.add(n);if(t.size===0)return;this.records=this.records.filter(e=>!t.has(e.i));let n=Array.from(t).sort((e,t)=>e-t);for(let s of this.records){let e=0,t=n.length;for(;e<t;){let o=e+t>>>1;n[o]<s.i?e=o+1:t=o}s.i-=e}}getValueForItemAtKeyId(e,t){return e[this._keysMap[t]]}size(){return this.records.length}_createStringRecord(e,t){return!c(e)||l(e)?null:{v:e,i:t,n:this.norm.get(e)}}_createObjectRecord(t,s){let o={i:s,$:{}};for(let i=0,d=this.keys.length;i<d;i++){let a=this.keys[i],s=a.getFn?a.getFn(t):this.getFn(t,a.path);if(c(s))if(e(s)){letLine truncated
|
|
||||||
<a class="flex items-center px-3 py-2 rounded-md appearance-none bg-neutral-100 dark:bg-neutral-700 focus:bg-primary-100 hover:bg-primary-100 dark:hover:bg-primary-900 dark:focus:bg-primary-900 focus:outline-dotted focus:outline-transparent focus:outline-2"
|
|
||||||
${i} tabindex="0">
|
|
||||||
<div class="grow">
|
|
||||||
<div class="-mb-1 text-lg font-bold">
|
|
||||||
${o}
|
|
||||||
</div>
|
|
||||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">${e.item.section}<span class="px-2 text-primary-500">·</span>${e.item.date?e.item.date:""}</span></div>
|
|
||||||
<div class="text-sm italic">${e.item.summary}</div>
|
|
||||||
</div>
|
|
||||||
<div class="ml-2 ltr:block rtl:hidden text-neutral-500">→</div>
|
|
||||||
<div class="mr-2 ltr:hidden rtl:block text-neutral-500">←</div>
|
|
||||||
</a>
|
|
||||||
</li>`}),hasResults=!0):(t="",hasResults=!1),output.innerHTML=t,n.length>0&&output.firstChild&&(first=output.firstChild.firstElementChild,last=output.lastChild.firstElementChild)}document.getElementById("katex-render")&&document.getElementById("katex-render").addEventListener("load",()=>{renderMathInElement(document.body)}),function(){"use strict";function e(e){var t=e.checked?"true":"false";document.querySelectorAll('label[role="button"][for="'+e.id+'"]').forEach(function(e){e.setAttribute("aria-expanded",t)})}function n(){var t={};document.querySelectorAll('label[role="button"][for]').forEach(function(n){var s=document.getElementById(n.getAttribute("for"));if(!s||s.type!=="checkbox")return;n.addEventListener("keydown",function(e){(e.key==="Enter"||e.key===" "||e.key==="Spacebar")&&(e.preventDefault(),n.click())}),t[s.id]||(t[s.id]=!0,s.addEventListener("change",function(){e(s)}),e(s))})}function s(){var t=document.getElementById("mobile-menu-toggle");if(!t)return;document.addEventListener("keydown",function(n){if(n.key==="Escape"&&t.checked){t.checked=!1,e(t);var s=document.querySelector('label[role="button"][for="mobile-menu-toggle"]');s&&s.focus()}})}function o(){var t=document.getElementById("mobile-menu-toggle"),n=document.getElementById("mobile-menu-dialog");if(!t||!n)return;document.addEventListener("click",function(s){if(!t.checked||s.target===t)return;if(n.contains(s.target))return;if(s.target.closest('label[for="mobile-menu-toggle"]'))return;t.checked=!1,e(t)})}function i(){document.querySelectorAll(".nested-menu").forEach(function(e){var t,n=e.querySelector("[aria-haspopup]");if(!n)return;t=function(e){n.setAttribute("aria-expanded",e?"true":"false")},e.addEventListener("mouseenter",function(){t(!0)}),e.addEventListener("mouseleave",function(){t(!1)}),e.addEventListener("focusin",function(){t(!0)}),e.addEventListener("focusout",function(n){e.contains(n.relatedTarget)||t(!1)}),e.addEventListener("keydown",function(n){n.key==="Escape"&&(document.activeElement&&e.contains(document.activeElement)&&document.activeElement.blur(),t(!1))})})}function t(){n(),s(),o(),i()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}(),function(){"use strict";var e=[];window.addEventListener("beforeprint",function(){for(var n=document.querySelectorAll("details:not([open])"),t=0;t<n.length;t++)n[t].open=!0,e.push(n[t])}),window.addEventListener("afterprint",function(){for(var t=0;t<e.length;t++)e[t].open=!1;e=[]})}(),function(){const e=document.querySelectorAll(".email-link");e.forEach(e=>{let t=atob(e.getAttribute("data-email"));const s=e.getAttribute("data-subject");let n=t.startsWith("mailto:")?t:"mailto:"+t;s&&(n+=(n.includes("?")?"&":"?")+"subject="+encodeURIComponent(s)),e.href=n})}()
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
function scrollToTop(){const e=document.getElementById("scroll-to-top");window.scrollY>window.innerHeight*.5?(e.classList.remove("translate-y-4","opacity-0"),e.classList.add("translate-y-0","opacity-100")):(e.classList.remove("translate-y-0","opacity-100"),e.classList.add("translate-y-4","opacity-0"))}window.addEventListener("scroll",scrollToTop),window.addEventListener("load",scrollToTop),document.getElementById("katex-render")&&document.getElementById("katex-render").addEventListener("load",()=>{renderMathInElement(document.body)}),function(){"use strict";function e(e){var t=e.checked?"true":"false";document.querySelectorAll('label[role="button"][for="'+e.id+'"]').forEach(function(e){e.setAttribute("aria-expanded",t)})}function n(){var t={};document.querySelectorAll('label[role="button"][for]').forEach(function(n){var s=document.getElementById(n.getAttribute("for"));if(!s||s.type!=="checkbox")return;n.addEventListener("keydown",function(e){(e.key==="Enter"||e.key===" "||e.key==="Spacebar")&&(e.preventDefault(),n.click())}),t[s.id]||(t[s.id]=!0,s.addEventListener("change",function(){e(s)}),e(s))})}function s(){var t=document.getElementById("mobile-menu-toggle");if(!t)return;document.addEventListener("keydown",function(n){if(n.key==="Escape"&&t.checked){t.checked=!1,e(t);var s=document.querySelector('label[role="button"][for="mobile-menu-toggle"]');s&&s.focus()}})}function o(){var t=document.getElementById("mobile-menu-toggle"),n=document.getElementById("mobile-menu-dialog");if(!t||!n)return;document.addEventListener("click",function(s){if(!t.checked||s.target===t)return;if(n.contains(s.target))return;if(s.target.closest('label[for="mobile-menu-toggle"]'))return;t.checked=!1,e(t)})}function i(){document.querySelectorAll(".nested-menu").forEach(function(e){var t,n=e.querySelector("[aria-haspopup]");if(!n)return;t=function(e){n.setAttribute("aria-expanded",e?"true":"false")},e.addEventListener("mouseenter",function(){t(!0)}),e.addEventListener("mouseleave",function(){t(!1)}),e.addEventListener("focusin",function(){t(!0)}),e.addEventListener("focusout",function(n){e.contains(n.relatedTarget)||t(!1)}),e.addEventListener("keydown",function(n){n.key==="Escape"&&(document.activeElement&&e.contains(document.activeElement)&&document.activeElement.blur(),t(!1))})})}function t(){n(),s(),o(),i()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}(),function(){"use strict";var e=[];window.addEventListener("beforeprint",function(){for(var n=document.querySelectorAll("details:not([open])"),t=0;t<n.length;t++)n[t].open=!0,e.push(n[t])}),window.addEventListener("afterprint",function(){for(var t=0;t<e.length;t++)e[t].open=!1;e=[]})}(),function(){const e=document.querySelectorAll(".email-link");e.forEach(e=>{let t=atob(e.getAttribute("data-email"));const s=e.getAttribute("data-subject");let n=t.startsWith("mailto:")?t:"mailto:"+t;s&&(n+=(n.includes("?")?"&":"?")+"subject="+encodeURIComponent(s)),e.href=n})}()
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
mediumZoom(document.querySelectorAll("img:not(.nozoom)"), {
|
|
||||||
margin: 24,
|
|
||||||
background: "rgba(0,0,0,0.5)",
|
|
||||||
scrollOffset: 0,
|
|
||||||
});
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */
|
|
||||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).mediumZoom=t()}(this,(function(){"use strict";var e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},t=function(e){return"IMG"===e.tagName},o=function(e){return e&&1===e.nodeType},n=function(e){return".svg"===(e.currentSrc||e.src).substr(-4).toLowerCase()},i=function(e){try{return Array.isArray(e)?e.filter(t):function(e){return NodeList.prototype.isPrototypeOf(e)}(e)?[].slice.call(e).filter(t):o(e)?[e].filter(t):"string"==typeof e?[].slice.call(document.querySelectorAll(e)).filter(t):[]}catch(e){throw new TypeError("The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList or an array.\nSee: https://github.com/francoischalifour/medium-zoom")}},r=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t},d=function(e){var t=e.getBoundingClientRect(),o=t.top,n=t.left,i=t.width,r=t.height,d=e.cloneNode(),a=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,m=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return d.removeAttribute("id"),d.style.position="absolute",d.style.top=o+a+"px",d.style.left=n+m+"px",d.style.width=i+"px",d.style.height=r+"px",d.style.transform="",d},a=function(t,o){var n=e({bubbles:!1,cancelable:!1,detail:void 0},o);if("function"==typeof window.CustomEvent)return new CustomEvent(t,n);var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),i};return function t(m){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=window.Promise||function(e){function t(){}e(t,t)},u=function(e){var t=e.target;t!==N?-1!==O.indexOf(t)&&w({target:t}):E()},s=function(){if(!A&&T.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(k-e)>S.scrollOffset&&setTimeout(E,150)}},f=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||E()},p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t;if(t.background&&(N.style.background=t.background),t.container&&t.container instanceof Object&&(n.container=e({},S.container,t.container)),t.template){var i=o(t.template)?t.template:document.querySelector(t.template);n.template=i}return S=e({},S,n),O.forEach((function(e){e.dispatchEvent(a("medium-zoom:update",{detail:{zoom:j}}))})),j},g=function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(e({},S,o))},v=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];var n=t.reduce((function(e,t){return[].concat(e,i(t))}),[]);return n.filter((function(e){return-1===O.indexOf(e)})).forEach((function(e){O.push(e),e.classList.add("medium-zoom-image")})),x.forEach((function(e){var t=e.type,o=e.listener,i=e.options;n.forEach((function(e){e.addEventListener(t,o,i)}))})),j},h=function(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];T.zoomed&&E();var n=t.length>0?t.reduce((function(e,t){return[].concat(e,i(t))}),[]):O;return n.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(a("medium-zoom:detach",{detail:{zoom:j}}))})),O=O.filter((function(e){return-1===n.indexOf(e)})),j},z=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.addEventListener("medium-zoom:"+e,t,o)})),x.push({type:"medium-zoom:"+e,listener:t,options:o}),j},y=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.removeEventListener("medium-zoom:"+e,t,o)})),x=x.filter((function(o){return!(o.type==="medium-zoom:"+e&&o.listener.toString()===t.toString())})),j},b=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.target,r=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},i=void 0,r=void 0;if(S.container)if(S.container instanceof Object)i=(t=e({},t,S.container)).width-t.left-t.right-2*S.margin,r=t.height-t.top-t.bottom-2*S.margin;else{var d=(o(S.container)?S.container:document.querySelector(S.container)).getBoundingClientRect(),a=d.width,m=d.height,l=d.left,c=d.top;t=e({},t,{width:a,height:m,left:l,top:c})}i=i||t.width-2*S.margin,r=r||t.height-2*S.margin;var u=T.zoomedHd||T.original,s=n(u)?i:u.naturalWidth||i,f=n(u)?r:u.naturalHeight||r,p=u.getBoundingClientRect(),g=p.top,v=p.left,h=p.width,z=p.height,y=Math.min(Math.max(h,s),i)/h,b=Math.min(Math.max(z,f),r)/z,E=Math.min(y,b),w="scale("+E+") translate3d("+((i-h)/2-v+S.margin+t.left)/E+"px, "+((r-z)/2-g+S.margin+t.top)/E+"px, 0)";T.zoomed.style.transform=w,T.zoomedHd&&(T.zoomedHd.style.transform=w)};return new c((function(e){if(i&&-1===O.indexOf(i))e(j)Line truncated
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru">
|
|
||||||
<head>
|
|
||||||
<title>https://sokolab.xyz/</title>
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://sokolab.xyz/">
|
|
||||||
</head>
|
|
||||||
</html>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
User-agent: *
|
|
||||||
Allow: /
|
|
||||||
Sitemap: https://sokolab.xyz/sitemap.xml
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru">
|
|
||||||
<head>
|
|
||||||
<title>https://sokolab.xyz/</title>
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://sokolab.xyz/">
|
|
||||||
</head>
|
|
||||||
</html>
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
|
||||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://sokolab.xyz/</loc>
|
|
||||||
<changefreq>daily</changefreq>
|
|
||||||
<priority>0.5</priority>
|
|
||||||
<xhtml:link
|
|
||||||
rel="alternate"
|
|
||||||
hreflang="en"
|
|
||||||
href="https://sokolab.xyz/en/"
|
|
||||||
/>
|
|
||||||
<xhtml:link
|
|
||||||
rel="alternate"
|
|
||||||
hreflang="ru"
|
|
||||||
href="https://sokolab.xyz/"
|
|
||||||
/>
|
|
||||||
</url>
|
|
||||||
</urlset>
|
|
||||||
@@ -1,662 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Series · Sokolab</title>
|
|
||||||
<meta name="title" content="Series · Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/series/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/series/index.xml" title="Sokolab" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="author" content="Alexander Sokolov aka s0k0l">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://t.me/sokolex" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://git.sokolab.xyz/sokol" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/series/">
|
|
||||||
<meta property="og:site_name" content="Sokolab">
|
|
||||||
<meta property="og:title" content="Series">
|
|
||||||
<meta property="og:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Series">
|
|
||||||
<meta name="twitter:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.2fd4cae71f73e7d5de8d256fdda25088b81b3f192c1e688761f6c12c77cb3c43cae8132e194a7f37019d495951c1f99c70dbf4e1938a3a0896eb4d2ced842bc0.js"
|
|
||||||
integrity="sha512-L9TK5x9z59XejSVv3aJQiLgbPxksHmiHYfbBLHfLPEPK6BMuGUp/NwGdSVlRwfmccNv04ZOKOgiW600s7YQrwA=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Series",
|
|
||||||
"name": "Series",
|
|
||||||
"headline": "Series",
|
|
||||||
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url" : "https://sokolab.xyz/series/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Alexander Sokolov aka s0k0l",
|
|
||||||
"image": "https://sokolab.xyz/img/me.jpg",
|
|
||||||
"sameAs": ["https://t.me/sokolex", "https://git.sokolab.xyz/sokol"]
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/series/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Sokolab
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
|
|
||||||
class="flex items-center bf-icon-color-hover"
|
|
||||||
aria-label="Блог"
|
|
||||||
title="Блог">
|
|
||||||
|
|
||||||
|
|
||||||
<span class="text-sm font-medium break-normal">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="checkbox" id="mobile-menu-toggle" autocomplete="off" class="hidden peer">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
aria-label=""
|
|
||||||
class="flex items-center justify-center cursor-pointer bf-icon-color-hover">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="mobile-menu-dialog"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label=""
|
|
||||||
style="scrollbar-gutter: stable;"
|
|
||||||
class="z-50 invisible overflow-y-auto opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100
|
|
||||||
|
|
||||||
fixed inset-0 px-6 py-20 bg-neutral-50/97 dark:bg-neutral-900/99
|
|
||||||
|
|
||||||
bf-scrollbar">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
class="fixed end-8 top-5 z-50 h-12 w-12 rounded-full flex items-center justify-center cursor-pointer select-none bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900">
|
|
||||||
<span class="sr-only"></span>
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<nav
|
|
||||||
aria-label=""
|
|
||||||
class="mx-auto max-w-md space-y-6">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="px-2">
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
aria-label="Блог"
|
|
||||||
|
|
||||||
class="flex grow items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200">
|
|
||||||
|
|
||||||
<span title="Блог" class="text-2xl font-bold tracking-tight">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Series</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="mt-6 flex max-w-prose flex-wrap gap-2">
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Series on Sokolab</title>
|
|
||||||
<link>https://sokolab.xyz/series/</link>
|
|
||||||
<description>Recent content in Series on Sokolab</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>ru</language>
|
|
||||||
<copyright>© 2026 Alexander Sokolov aka s0k0l</copyright>
|
|
||||||
<atom:link href="https://sokolab.xyz/series/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
|
||||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://sokolab.xyz/</loc>
|
|
||||||
<lastmod>2026-10-05T21:14:48+04:00</lastmod>
|
|
||||||
<changefreq>daily</changefreq>
|
|
||||||
<priority>0.5</priority>
|
|
||||||
</url>
|
|
||||||
<url>
|
|
||||||
<loc>https://sokolab.xyz/blog/</loc>
|
|
||||||
<lastmod>2026-10-05T21:14:48+04:00</lastmod>
|
|
||||||
<changefreq>daily</changefreq>
|
|
||||||
<priority>0.5</priority>
|
|
||||||
</url>
|
|
||||||
<url>
|
|
||||||
<loc>https://sokolab.xyz/blog/hello/</loc>
|
|
||||||
<lastmod>2026-10-05T21:14:48+04:00</lastmod>
|
|
||||||
<changefreq>daily</changefreq>
|
|
||||||
<priority>0.5</priority>
|
|
||||||
</url>
|
|
||||||
</urlset>
|
|
||||||
@@ -1,815 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Hugo · Sokolab</title>
|
|
||||||
<meta name="title" content="Hugo · Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/tags/hugo/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/tags/hugo/index.xml" title="Sokolab" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="author" content="Alexander Sokolov aka s0k0l">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://t.me/sokolex" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://git.sokolab.xyz/sokol" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/tags/hugo/">
|
|
||||||
<meta property="og:site_name" content="Sokolab">
|
|
||||||
<meta property="og:title" content="Hugo">
|
|
||||||
<meta property="og:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Hugo">
|
|
||||||
<meta name="twitter:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.2fd4cae71f73e7d5de8d256fdda25088b81b3f192c1e688761f6c12c77cb3c43cae8132e194a7f37019d495951c1f99c70dbf4e1938a3a0896eb4d2ced842bc0.js"
|
|
||||||
integrity="sha512-L9TK5x9z59XejSVv3aJQiLgbPxksHmiHYfbBLHfLPEPK6BMuGUp/NwGdSVlRwfmccNv04ZOKOgiW600s7YQrwA=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Tags",
|
|
||||||
"name": "Hugo",
|
|
||||||
"headline": "Hugo",
|
|
||||||
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url" : "https://sokolab.xyz/tags/hugo/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Alexander Sokolov aka s0k0l",
|
|
||||||
"image": "https://sokolab.xyz/img/me.jpg",
|
|
||||||
"sameAs": ["https://t.me/sokolex", "https://git.sokolab.xyz/sokol"]
|
|
||||||
},
|
|
||||||
"copyrightYear": "2026",
|
|
||||||
"dateCreated": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
"datePublished": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
"dateModified": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/tags/hugo/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Sokolab
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
|
|
||||||
class="flex items-center bf-icon-color-hover"
|
|
||||||
aria-label="Блог"
|
|
||||||
title="Блог">
|
|
||||||
|
|
||||||
|
|
||||||
<span class="text-sm font-medium break-normal">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="checkbox" id="mobile-menu-toggle" autocomplete="off" class="hidden peer">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
aria-label=""
|
|
||||||
class="flex items-center justify-center cursor-pointer bf-icon-color-hover">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="mobile-menu-dialog"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label=""
|
|
||||||
style="scrollbar-gutter: stable;"
|
|
||||||
class="z-50 invisible overflow-y-auto opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100
|
|
||||||
|
|
||||||
fixed inset-0 px-6 py-20 bg-neutral-50/97 dark:bg-neutral-900/99
|
|
||||||
|
|
||||||
bf-scrollbar">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
class="fixed end-8 top-5 z-50 h-12 w-12 rounded-full flex items-center justify-center cursor-pointer select-none bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900">
|
|
||||||
<span class="sr-only"></span>
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<nav
|
|
||||||
aria-label=""
|
|
||||||
class="mx-auto max-w-md space-y-6">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="px-2">
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
aria-label="Блог"
|
|
||||||
|
|
||||||
class="flex grow items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200">
|
|
||||||
|
|
||||||
<span title="Блог" class="text-2xl font-bold tracking-tight">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Hugo</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<section class="flex flex-col max-w-full mt-0 mb-5 prose dark:prose-invert lg:flex-row">
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="space-y-10 w-full">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<article class="article-link--simple group flex flex-col md:flex-row relative">
|
|
||||||
|
|
||||||
<div class=" mt-3 md:mt-0">
|
|
||||||
<header class="items-center text-start text-xl font-semibold">
|
|
||||||
<a
|
|
||||||
|
|
||||||
href="/blog/hello/"
|
|
||||||
|
|
||||||
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
|
||||||
<h2>
|
|
||||||
Запустил свой сайт
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
<time datetime="2026-10-05T21:14:48+04:00">5 октября 2026</time><span class="px-2 text-primary-500">·</span><span>35 слов</span><span class="px-2 text-primary-500">·</span><span title="Время чтения">1 минута</span>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="px-6 pt-4 pb-2"></div>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Hugo on Sokolab</title>
|
|
||||||
<link>https://sokolab.xyz/tags/hugo/</link>
|
|
||||||
<description>Recent content in Hugo on Sokolab</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>ru</language>
|
|
||||||
<copyright>© 2026 Alexander Sokolov aka s0k0l</copyright>
|
|
||||||
<lastBuildDate>Mon, 05 Oct 2026 21:14:48 +0400</lastBuildDate><atom:link href="https://sokolab.xyz/tags/hugo/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Запустил свой сайт</title>
|
|
||||||
<link>https://sokolab.xyz/blog/hello/</link>
|
|
||||||
<pubDate>Mon, 05 Oct 2026 21:14:48 +0400</pubDate>
|
|
||||||
|
|
||||||
<guid>https://sokolab.xyz/blog/hello/</guid>
|
|
||||||
<description>Как я поднял сайт и Gitea на своём сервере</description>
|
|
||||||
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru">
|
|
||||||
<head>
|
|
||||||
<title>https://sokolab.xyz/tags/hugo/</title>
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/tags/hugo/">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://sokolab.xyz/tags/hugo/">
|
|
||||||
</head>
|
|
||||||
</html>
|
|
||||||
@@ -1,682 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Tags · Sokolab</title>
|
|
||||||
<meta name="title" content="Tags · Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/tags/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/tags/index.xml" title="Sokolab" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="author" content="Alexander Sokolov aka s0k0l">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://t.me/sokolex" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://git.sokolab.xyz/sokol" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/tags/">
|
|
||||||
<meta property="og:site_name" content="Sokolab">
|
|
||||||
<meta property="og:title" content="Tags">
|
|
||||||
<meta property="og:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Tags">
|
|
||||||
<meta name="twitter:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.2fd4cae71f73e7d5de8d256fdda25088b81b3f192c1e688761f6c12c77cb3c43cae8132e194a7f37019d495951c1f99c70dbf4e1938a3a0896eb4d2ced842bc0.js"
|
|
||||||
integrity="sha512-L9TK5x9z59XejSVv3aJQiLgbPxksHmiHYfbBLHfLPEPK6BMuGUp/NwGdSVlRwfmccNv04ZOKOgiW600s7YQrwA=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Tags",
|
|
||||||
"name": "Tags",
|
|
||||||
"headline": "Tags",
|
|
||||||
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url" : "https://sokolab.xyz/tags/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Alexander Sokolov aka s0k0l",
|
|
||||||
"image": "https://sokolab.xyz/img/me.jpg",
|
|
||||||
"sameAs": ["https://t.me/sokolex", "https://git.sokolab.xyz/sokol"]
|
|
||||||
},
|
|
||||||
"copyrightYear": "2026",
|
|
||||||
"dateCreated": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
"datePublished": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
"dateModified": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/tags/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Sokolab
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
|
|
||||||
class="flex items-center bf-icon-color-hover"
|
|
||||||
aria-label="Блог"
|
|
||||||
title="Блог">
|
|
||||||
|
|
||||||
|
|
||||||
<span class="text-sm font-medium break-normal">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="checkbox" id="mobile-menu-toggle" autocomplete="off" class="hidden peer">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
aria-label=""
|
|
||||||
class="flex items-center justify-center cursor-pointer bf-icon-color-hover">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="mobile-menu-dialog"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label=""
|
|
||||||
style="scrollbar-gutter: stable;"
|
|
||||||
class="z-50 invisible overflow-y-auto opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100
|
|
||||||
|
|
||||||
fixed inset-0 px-6 py-20 bg-neutral-50/97 dark:bg-neutral-900/99
|
|
||||||
|
|
||||||
bf-scrollbar">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
class="fixed end-8 top-5 z-50 h-12 w-12 rounded-full flex items-center justify-center cursor-pointer select-none bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900">
|
|
||||||
<span class="sr-only"></span>
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<nav
|
|
||||||
aria-label=""
|
|
||||||
class="mx-auto max-w-md space-y-6">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="px-2">
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
aria-label="Блог"
|
|
||||||
|
|
||||||
class="flex grow items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200">
|
|
||||||
|
|
||||||
<span title="Блог" class="text-2xl font-bold tracking-tight">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Tags</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="mt-6 flex max-w-prose flex-wrap gap-2">
|
|
||||||
|
|
||||||
<a
|
|
||||||
class="not-prose inline-flex items-center gap-1.5 rounded-full border border-neutral-200/80 bg-white/60 px-3 py-1.5 text-sm font-medium text-neutral-700 backdrop-blur-xl transition-colors hover:border-primary-400 hover:text-primary-600 dark:border-neutral-700/80 dark:bg-neutral-900/50 dark:text-neutral-200 dark:hover:text-primary-400"
|
|
||||||
href="/tags/hugo/">
|
|
||||||
Hugo
|
|
||||||
|
|
||||||
<span class="text-xs text-neutral-500 dark:text-neutral-400">1</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
class="not-prose inline-flex items-center gap-1.5 rounded-full border border-neutral-200/80 bg-white/60 px-3 py-1.5 text-sm font-medium text-neutral-700 backdrop-blur-xl transition-colors hover:border-primary-400 hover:text-primary-600 dark:border-neutral-700/80 dark:bg-neutral-900/50 dark:text-neutral-200 dark:hover:text-primary-400"
|
|
||||||
href="/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/">
|
|
||||||
Сервер
|
|
||||||
|
|
||||||
<span class="text-xs text-neutral-500 dark:text-neutral-400">1</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Tags on Sokolab</title>
|
|
||||||
<link>https://sokolab.xyz/tags/</link>
|
|
||||||
<description>Recent content in Tags on Sokolab</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>ru</language>
|
|
||||||
<copyright>© 2026 Alexander Sokolov aka s0k0l</copyright>
|
|
||||||
<lastBuildDate>Mon, 05 Oct 2026 21:14:48 +0400</lastBuildDate><atom:link href="https://sokolab.xyz/tags/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Hugo</title>
|
|
||||||
<link>https://sokolab.xyz/tags/hugo/</link>
|
|
||||||
<pubDate>Mon, 05 Oct 2026 21:14:48 +0400</pubDate>
|
|
||||||
|
|
||||||
<guid>https://sokolab.xyz/tags/hugo/</guid>
|
|
||||||
<description></description>
|
|
||||||
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Сервер</title>
|
|
||||||
<link>https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/</link>
|
|
||||||
<pubDate>Mon, 05 Oct 2026 21:14:48 +0400</pubDate>
|
|
||||||
|
|
||||||
<guid>https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/</guid>
|
|
||||||
<description></description>
|
|
||||||
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,815 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html
|
|
||||||
lang="ru"
|
|
||||||
dir="ltr"
|
|
||||||
class="scroll-smooth"
|
|
||||||
data-default-appearance="light"
|
|
||||||
data-auto-appearance="true"><head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="content-language" content="ru">
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
||||||
<meta name="theme-color">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<title>Сервер · Sokolab</title>
|
|
||||||
<meta name="title" content="Сервер · Sokolab">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" href="/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/index.xml" title="Sokolab" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="author" content="Alexander Sokolov aka s0k0l">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://t.me/sokolex" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link href="https://git.sokolab.xyz/sokol" rel="me">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta property="og:url" content="https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/">
|
|
||||||
<meta property="og:site_name" content="Sokolab">
|
|
||||||
<meta property="og:title" content="Сервер">
|
|
||||||
<meta property="og:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
<meta property="og:locale" content="ru">
|
|
||||||
<meta property="og:type" content="website">
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
<meta name="twitter:title" content="Сервер">
|
|
||||||
<meta name="twitter:description" content="Программные и аппаратные продукты для людей и бизнеса">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link
|
|
||||||
type="text/css"
|
|
||||||
rel="stylesheet"
|
|
||||||
href="/css/main.bundle.min.5f770476384eeda5282750bf95a91c1d626de7f2ab009004dd7ee0a9097a3686a13e1bee22ee7795fb23c7fbc0fc72e86ad1981d1ab62928e21a33eba23dddd1.css"
|
|
||||||
integrity="sha512-X3cEdjhO7aUoJ1C/lakcHWJt5/KrAJAE3X7gqQl6NoahPhvuIu53lfsjx/vA/HLoatGYHRq2KSjiGjProj3d0Q==">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
type="text/javascript"
|
|
||||||
src="/js/appearance.min.2fd4cae71f73e7d5de8d256fdda25088b81b3f192c1e688761f6c12c77cb3c43cae8132e194a7f37019d495951c1f99c70dbf4e1938a3a0896eb4d2ced842bc0.js"
|
|
||||||
integrity="sha512-L9TK5x9z59XejSVv3aJQiLgbPxksHmiHYfbBLHfLPEPK6BMuGUp/NwGdSVlRwfmccNv04ZOKOgiW600s7YQrwA=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script defer src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
|
||||||
|
|
||||||
<script defer src="/js/medium-zoom.67b71ecf7eecce38673a92244d1ffd93edb5f1aeedd12e725d0f67fe901828fa3562f6a6d64ad290b36b7d7034b8ea16e63486d75d957bcf6a2732923e5d46e6.js" integrity="sha512-Z7cez37szjhnOpIkTR/9k+218a7t0S5yXQ9n/pAYKPo1Yvam1krSkLNrfXA0uOoW5jSG112Ve89qJzKSPl1G5g=="></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script
|
|
||||||
defer
|
|
||||||
type="text/javascript"
|
|
||||||
id="script-bundle"
|
|
||||||
src="/js/main.bundle.min.be4a11c293f9b8ab20ab872f73c6b0c584fcba4a0df2c8ef7f414a5805c0ddab955ac23bec4a6d92a06087498d445cb2bf26a6602a27981980efe2bda70104a4.js"
|
|
||||||
integrity="sha512-vkoRwpP5uKsgq4cvc8awxYT8ukoN8sjvf0FKWAXA3auVWsI77EptkqBgh0mNRFyyvyamYConmBmA7+K9pwEEpA=="
|
|
||||||
data-copy="Копировать"
|
|
||||||
data-copied="Скопировано"></script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
||||||
<link rel="manifest" href="/site.webmanifest">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
|
||||||
[{
|
|
||||||
"@context": "https://schema.org",
|
|
||||||
"@type": "Article",
|
|
||||||
"articleSection": "Tags",
|
|
||||||
"name": "Сервер",
|
|
||||||
"headline": "Сервер",
|
|
||||||
|
|
||||||
"inLanguage": "ru",
|
|
||||||
"url" : "https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/",
|
|
||||||
"author" : {
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Alexander Sokolov aka s0k0l",
|
|
||||||
"image": "https://sokolab.xyz/img/me.jpg",
|
|
||||||
"sameAs": ["https://t.me/sokolex", "https://git.sokolab.xyz/sokol"]
|
|
||||||
},
|
|
||||||
"copyrightYear": "2026",
|
|
||||||
"dateCreated": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
"datePublished": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
"dateModified": "2026-10-05T21:14:48\u002b04:00",
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"mainEntityOfPage": "https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/",
|
|
||||||
"wordCount": 0
|
|
||||||
}]
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
|
||||||
<div id="the-top" class="absolute flex self-center">
|
|
||||||
<a
|
|
||||||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
|
||||||
href="#main-content">
|
|
||||||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
|
||||||
Перейти к основному содержимому
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<header>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
|
||||||
|
|
||||||
|
|
||||||
<a href="/" class="text-base font-medium truncate min-w-0 shrink">
|
|
||||||
Sokolab
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="flex items-center ms-auto">
|
|
||||||
<div class="hidden md:flex">
|
|
||||||
<nav aria-label="" class="flex items-center gap-x-5 h-12">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
|
|
||||||
class="flex items-center bf-icon-color-hover"
|
|
||||||
aria-label="Блог"
|
|
||||||
title="Блог">
|
|
||||||
|
|
||||||
|
|
||||||
<span class="text-sm font-medium break-normal">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center">
|
|
||||||
<button
|
|
||||||
id="appearance-switcher"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
type="button"
|
|
||||||
class="text-sm bf-icon-color-hover"
|
|
||||||
title="Переключить на темный вид">
|
|
||||||
<div class="flex items-center justify-center dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="items-center justify-center hidden dark:flex">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center gap-2 rounded-lg border bf-border-color bf-border-color-hover bg-neutral-100/50 px-2 py-1 text-sm text-neutral-500 transition-colors hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral-400 dark:hover:text-primary-400"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
<kbd
|
|
||||||
id="search-shortcut-hint"
|
|
||||||
class="pointer-events-none font-sans text-xs text-neutral-500 dark:text-neutral-400"
|
|
||||||
aria-hidden="true">
|
|
||||||
⌘K
|
|
||||||
</kbd>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex md:hidden">
|
|
||||||
|
|
||||||
<div class="mobile-header-row relative flex items-center h-14 gap-4">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="appearance-switcher-mobile"
|
|
||||||
type="button"
|
|
||||||
aria-label="Переключить на темный вид"
|
|
||||||
title="Переключить на темный вид"
|
|
||||||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
|
||||||
<div class="dark:hidden">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="hidden dark:block">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button
|
|
||||||
id="search-button-mobile"
|
|
||||||
aria-label="Поиск (/)"
|
|
||||||
class="flex items-center justify-center bf-icon-color-hover"
|
|
||||||
title="Поиск (/)">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="checkbox" id="mobile-menu-toggle" autocomplete="off" class="hidden peer">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
aria-label=""
|
|
||||||
class="flex items-center justify-center cursor-pointer bf-icon-color-hover">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="mobile-menu-dialog"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label=""
|
|
||||||
style="scrollbar-gutter: stable;"
|
|
||||||
class="z-50 invisible overflow-y-auto opacity-0 transition-[opacity,visibility] duration-300 peer-checked:visible peer-checked:opacity-100
|
|
||||||
|
|
||||||
fixed inset-0 px-6 py-20 bg-neutral-50/97 dark:bg-neutral-900/99
|
|
||||||
|
|
||||||
bf-scrollbar">
|
|
||||||
<label
|
|
||||||
for="mobile-menu-toggle"
|
|
||||||
tabindex="0"
|
|
||||||
role="button"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="mobile-menu-dialog"
|
|
||||||
class="fixed end-8 top-5 z-50 h-12 w-12 rounded-full flex items-center justify-center cursor-pointer select-none bf-icon-color-hover border bf-border-color bf-border-color-hover bg-neutral-50 dark:bg-neutral-900">
|
|
||||||
<span class="sr-only"></span>
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</label>
|
|
||||||
<nav
|
|
||||||
aria-label=""
|
|
||||||
class="mx-auto max-w-md space-y-6">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="px-2">
|
|
||||||
<div class="flex items-center gap-4">
|
|
||||||
<a
|
|
||||||
href="/blog/"
|
|
||||||
aria-label="Блог"
|
|
||||||
|
|
||||||
class="flex grow items-center gap-4 group bf-icon-color-hover text-neutral-700 dark:text-neutral-200">
|
|
||||||
|
|
||||||
<span title="Блог" class="text-2xl font-bold tracking-tight">
|
|
||||||
Блог
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="relative flex flex-col grow">
|
|
||||||
<main id="main-content" class="grow">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<header class="mt-5">
|
|
||||||
|
|
||||||
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">Сервер</h1>
|
|
||||||
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<section class="flex flex-col max-w-full mt-0 mb-5 prose dark:prose-invert lg:flex-row">
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<section class="space-y-10 w-full">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<article class="article-link--simple group flex flex-col md:flex-row relative">
|
|
||||||
|
|
||||||
<div class=" mt-3 md:mt-0">
|
|
||||||
<header class="items-center text-start text-xl font-semibold">
|
|
||||||
<a
|
|
||||||
|
|
||||||
href="/blog/hello/"
|
|
||||||
|
|
||||||
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
|
||||||
<h2>
|
|
||||||
Запустил свой сайт
|
|
||||||
|
|
||||||
</h2>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex flex-row flex-wrap items-center">
|
|
||||||
|
|
||||||
|
|
||||||
<time datetime="2026-10-05T21:14:48+04:00">5 октября 2026</time><span class="px-2 text-primary-500">·</span><span>35 слов</span><span class="px-2 text-primary-500">·</span><span title="Время чтения">1 минута</span>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="px-6 pt-4 pb-2"></div>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div
|
|
||||||
id="scroll-to-top"
|
|
||||||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
|
||||||
<a
|
|
||||||
href="#the-top"
|
|
||||||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
aria-label="Пролистать наверх"
|
|
||||||
title="Пролистать наверх">
|
|
||||||
↑
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</main><footer id="site-footer" class="py-10 print:hidden">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
|
||||||
©
|
|
||||||
2026
|
|
||||||
Alexander Sokolov aka s0k0l
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
|
||||||
|
|
||||||
|
|
||||||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
|
||||||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
<div
|
|
||||||
id="search-wrapper"
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
|
||||||
data-url="/">
|
|
||||||
<div
|
|
||||||
id="search-modal"
|
|
||||||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
|
||||||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
|
||||||
<form class="flex items-center flex-auto min-w-0">
|
|
||||||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
|
||||||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<input
|
|
||||||
type="search"
|
|
||||||
id="search-query"
|
|
||||||
aria-label="Поиск"
|
|
||||||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
|
||||||
placeholder="Поиск"
|
|
||||||
tabindex="0">
|
|
||||||
</form>
|
|
||||||
<button
|
|
||||||
id="close-search-button"
|
|
||||||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
|
||||||
title="Закрыть (Esc)">
|
|
||||||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
</header>
|
|
||||||
<section class="flex-auto px-2 overflow-auto">
|
|
||||||
<ul id="search-results">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Сервер on Sokolab</title>
|
|
||||||
<link>https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/</link>
|
|
||||||
<description>Recent content in Сервер on Sokolab</description>
|
|
||||||
<generator>Hugo -- gohugo.io</generator>
|
|
||||||
<language>ru</language>
|
|
||||||
<copyright>© 2026 Alexander Sokolov aka s0k0l</copyright>
|
|
||||||
<lastBuildDate>Mon, 05 Oct 2026 21:14:48 +0400</lastBuildDate><atom:link href="https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/index.xml" rel="self" type="application/rss+xml" />
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Запустил свой сайт</title>
|
|
||||||
<link>https://sokolab.xyz/blog/hello/</link>
|
|
||||||
<pubDate>Mon, 05 Oct 2026 21:14:48 +0400</pubDate>
|
|
||||||
|
|
||||||
<guid>https://sokolab.xyz/blog/hello/</guid>
|
|
||||||
<description>Как я поднял сайт и Gitea на своём сервере</description>
|
|
||||||
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="ru">
|
|
||||||
<head>
|
|
||||||
<title>https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/</title>
|
|
||||||
<link rel="canonical" href="https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="refresh" content="0; url=https://sokolab.xyz/tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/">
|
|
||||||
</head>
|
|
||||||
</html>
|
|
||||||