<!DOCTYPE html>
<html lang="en-GB"
      dir="ltr"
      class="">
<head>
    <title>Записки разработчика</title>

    <!-- Meta -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <meta name="token" content="XvngWeJvPTOBMNXYodIY4fE22484f9H43ZYp3QSv">
    <meta name="base-url" content="https://lavelin.ru">
    <meta name="theme-color" content="#206ea7"/>

    <!-- Social Cards Meta -->
    <meta property="og:title" content="Записки разработчика">
    <meta property="og:url" content="https://lavelin.ru">
    
    <!-- Styles -->
    <link rel="stylesheet" href="https://lavelin.ru/dist/styles.css?version=v23.10.4">

    <!-- Icons -->
    <link rel="icon" type="image/png" sizes="256x256" href="https://lavelin.ru/icon.png">
    <link rel="icon" type="image/png" sizes="180x180" href="https://lavelin.ru/icon-180.png">
    <link rel="apple-touch-icon" sizes="180x180" href="https://lavelin.ru/icon-180.png">
    <link rel="icon" type="image/png" sizes="128x128" href="https://lavelin.ru/icon-128.png">
    <link rel="icon" type="image/png" sizes="64x64" href="https://lavelin.ru/icon-64.png">
    <link rel="icon" type="image/png" sizes="32x32" href="https://lavelin.ru/icon-32.png">

    <!-- PWA -->
    <link rel="manifest" href="https://lavelin.ru/manifest.json">
    <meta name="mobile-web-app-capable" content="yes">

    
    <!-- Custom Styles & Head Content -->
    <style>
    :root {
        --color-primary: #206ea7;
        --color-primary-light: rgba(32,110,167,0.15);
        --color-link: #206ea7;
        --color-bookshelf: #a94747;
        --color-book: #077b70;
        --color-chapter: #af4d0d;
        --color-page: #206ea7;
        --color-page-draft: #7e50b1;
    }
</style>
    <!-- Start: custom user content -->
<!-- Yandex.Metrika counter --> <script type="text/javascript" nonce="PuNKWwyBuUrGKAktQLKGjHvr"> (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(795347, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); </script> <noscript><div><img src="https://mc.yandex.ru/watch/795347" style="position:absolute; left:-9999px;" alt=""></div></noscript> <!-- /Yandex.Metrika counter -->
<!-- End: custom user content -->

    
    <!-- Translations for JS -->
    </head>
<body
          class="">

        <a class="px-m py-s skip-to-content-link print-hidden" href="#main-content">Skip to main content</a>    <div component="notification"
     option:notification:type="success"
     option:notification:auto-hide="true"
     option:notification:show="false"
     style="display: none;"
     class="notification pos"
     role="alert">
    <svg class="svg-icon" data-icon="check-circle" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
</svg> <span></span><div class="dismiss"><svg class="svg-icon" data-icon="close" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
</svg></div>
</div>

<div component="notification"
     option:notification:type="warning"
     option:notification:auto-hide="false"
     option:notification:show="false"
     style="display: none;"
     class="notification warning"
     role="alert">
    <svg class="svg-icon" data-icon="info" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M11 17h2v-6h-2v6zm1-15C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zM11 9h2V7h-2v2z"/>
</svg> <span></span><div class="dismiss"><svg class="svg-icon" data-icon="close" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
</svg></div>
</div>

<div component="notification"
     option:notification:type="error"
     option:notification:auto-hide="false"
     option:notification:show="false"
     style="display: none;"
     class="notification neg"
     role="alert">
    <svg class="svg-icon" data-icon="danger" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM12 17.3c-.72 0-1.3-.58-1.3-1.3 0-.72.58-1.3 1.3-1.3.72 0 1.3.58 1.3 1.3 0 .72-.58 1.3-1.3 1.3zm1-4.3h-2V7h2v6z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
</svg> <span></span><div class="dismiss"><svg class="svg-icon" data-icon="close" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
</svg></div>
</div>    <header id="header" component="header-mobile-toggle" class="primary-background px-xl grid print-hidden">
    <div>
        <a href="https://lavelin.ru" data-shortcut="home_view" class="logo">
            <img class="logo-image" src="https://lavelin.ru/logo.png" alt="Logo">
                <span class="logo-text">Записки разработчика</span>
    </a>        <button type="button"
                refs="header-mobile-toggle@toggle"
                title="Expand Header Menu"
                aria-expanded="false"
                class="mobile-menu-toggle hide-over-l"><svg class="svg-icon" data-icon="more" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/>
</svg></button>
    </div>

    <div class="flex-container-column items-center justify-center hide-under-l">
            <form component="global-search" action="https://lavelin.ru/search" method="GET" class="search-box" role="search" tabindex="0">
    <button id="header-search-box-button"
            refs="global-search@button"
            type="submit"
            aria-label="Search"
            tabindex="-1"><svg class="svg-icon" data-icon="search" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
</svg></button>
    <input id="header-search-box-input"
           refs="global-search@input"
           type="text"
           name="term"
           data-shortcut="global_search"
           autocomplete="off"
           aria-label="Search" placeholder="Search"
           value="">
    <div refs="global-search@suggestions" class="global-search-suggestions card">
        <div refs="global-search@loading" class="text-center px-m global-search-loading"><div class="loading-container">
    <div></div>
    <div></div>
    <div></div>
    </div></div>
        <div refs="global-search@suggestion-results" class="px-m"></div>
        <button class="text-button card-footer-link" type="submit">View All</button>
    </div>
</form>        </div>

    <nav refs="header-mobile-toggle@menu" class="header-links">
        <div class="links text-center">
            <a class="hide-over-l" href="https://lavelin.ru/search"><svg class="svg-icon" data-icon="search" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
</svg>Search</a>
            <a href="https://lavelin.ru/shelves"
           data-shortcut="shelves_view"><svg class="svg-icon" data-icon="bookshelf" role="presentation"  xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M1.088 2.566h17.42v17.42H1.088z" fill="none"/><path d="M4 20.058h15.892V22H4z"/><path d="M2.902 1.477h17.42v17.42H2.903z" fill="none"/><g><path d="M6.658 3.643V18h-2.38V3.643zM11.326 3.643V18H8.947V3.643zM14.722 3.856l5.613 13.214-2.19.93-5.613-13.214z"/></g></svg>Shelves</a>
        <a href="https://lavelin.ru/books" data-shortcut="books_view"><svg class="svg-icon" data-icon="books" role="presentation"  xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M19.252 1.708H8.663a1.77 1.77 0 0 0-1.765 1.764v14.12c0 .97.794 1.764 1.765 1.764h10.59a1.77 1.77 0 0 0 1.764-1.765V3.472a1.77 1.77 0 0 0-1.765-1.764zM8.663 3.472h4.412v7.06L10.87 9.208l-2.206 1.324z"/><path d="M30.61 3.203h24v24h-24z" fill="none"/><path d="M2.966 6.61v14c0 1.1.9 2 2 2h14v-2h-14v-14z"/></svg>Books</a>
        
<a href="https://lavelin.ru/books/procee-Kuv/page/politika-konfidencialnosti"><?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg class="svg-icon" data-icon="law" role="presentation"  fill="#000000" width="800px" height="800px" viewBox="-2 0 19 19" xmlns="http://www.w3.org/2000/svg" class="cf-icon-svg"><path d="M14.443 4.445a1.615 1.615 0 0 1-1.613 1.614h-.506v8.396a1.615 1.615 0 0 1-1.613 1.613H2.17a1.613 1.613 0 1 1 0-3.227h.505V4.445A1.615 1.615 0 0 1 4.289 2.83h8.54a1.615 1.615 0 0 1 1.614 1.614zM2.17 14.96h7.007a1.612 1.612 0 0 1 0-1.01H2.172a.505.505 0 0 0 0 1.01zm9.045-10.515a1.62 1.62 0 0 1 .08-.505H4.29a.5.5 0 0 0-.31.107l-.002.001a.5.5 0 0 0-.193.397v8.396h6.337a.61.61 0 0 1 .6.467.632.632 0 0 1-.251.702.505.505 0 1 0 .746.445zm-.86 1.438h-5.76V6.99h5.76zm0 2.26h-5.76V9.25h5.76zm0 2.26h-5.76v1.108h5.76zm2.979-5.958a.506.506 0 0 0-.505-.505.496.496 0 0 0-.31.107h-.002a.501.501 0 0 0-.194.398v.505h.506a.506.506 0 0 0 .505-.505z"/></svg>Privace policy</a>
<a target=_blank href=https://old.lavelin.ru><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg class="svg-icon" data-icon="sad" role="presentation"  width="256px" height="256px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
<g id="SVGRepo_iconCarrier"> <path d="M8.5 11C9.32843 11 10 10.3284 10 9.5C10 8.67157 9.32843 8 8.5 8C7.67157 8 7 8.67157 7 9.5C7 10.3284 7.67157 11 8.5 11Z" fill="#ffffff"/> <path d="M17 9.5C17 10.3284 16.3284 11 15.5 11C14.6716 11 14 10.3284 14 9.5C14 8.67157 14.6716 8 15.5 8C16.3284 8 17 8.67157 17 9.5Z" fill="#ffffff"/> <path d="M15.1091 16.4588C15.3597 16.9443 15.9548 17.1395 16.4449 16.8944C16.9388 16.6474 17.1391 16.0468 16.8921 15.5528C16.8096 15.3884 16.7046 15.2343 16.5945 15.0875C16.4117 14.8438 16.1358 14.5299 15.7473 14.2191C14.9578 13.5875 13.7406 13 11.9977 13C10.2547 13 9.03749 13.5875 8.24796 14.2191C7.85954 14.5299 7.58359 14.8438 7.40078 15.0875C7.29028 15.2348 7.1898 15.3889 7.10376 15.5517C6.85913 16.0392 7.06265 16.6505 7.55044 16.8944C8.04053 17.1395 8.63565 16.9443 8.88619 16.4588C8.9 16.4339 9.08816 16.1082 9.49735 15.7809C9.95782 15.4125 10.7406 15 11.9977 15C13.2547 15 14.0375 15.4125 14.498 15.7809C14.9072 16.1082 15.0953 16.4339 15.1091 16.4588Z" fill="#ffffff"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23ZM12 20.9932C7.03321 20.9932 3.00683 16.9668 3.00683 12C3.00683 7.03321 7.03321 3.00683 12 3.00683C16.9668 3.00683 20.9932 7.03321 20.9932 12C20.9932 16.9668 16.9668 20.9932 12 20.9932Z" fill="#ffffff"/> </g>
</svg>Old site</a>

            <a href="https://lavelin.ru/register"><svg class="svg-icon" data-icon="new-user" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M15 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm-9-2V7H4v3H1v2h3v3h2v-3h3v-2H6zm9 4c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/>
</svg>Sign up</a>
        <a href="https://lavelin.ru/login"><svg class="svg-icon" data-icon="login" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M21 3.01H3c-1.1 0-2 .9-2 2V9h2V4.99h18v14.03H3V15H1v4.01c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98v-14c0-1.11-.9-2-2-2zM11 16l4-4-4-4v3H1v2h10v3z"/>
</svg>Log in</a>
        </div>
            </nav>
</header>

    <div id="content" components="" class="block">
        
    <div class="flex-fill flex">
        <div class="content flex">
            <div id="main-content" class="scroll-body">
                
    <div class="container px-xl py-s flex-container-row gap-l wrap justify-space-between">
        <div class="icon-list inline block">
            <button component="expand-toggle"
        option:expand-toggle:target-selector=".entity-list.compact .entity-item-snippet"
        option:expand-toggle:update-endpoint="https://lavelin.ru/preferences/change-expansion/home-details"
        option:expand-toggle:is-open="false"
        type="button"
        class="icon-list-item text-muted text-link">
    <span><svg class="svg-icon" data-icon="expand-text" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3 3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
</svg></span>
    <span>Toggle Details</span>
</button>
        </div>
        <div>
            <div class="icon-list inline block">
                <form action="https://lavelin.ru/preferences/toggle-dark-mode" method="post">
    <input type="hidden" name="_token" value="XvngWeJvPTOBMNXYodIY4fE22484f9H43ZYp3QSv">
    <input type="hidden" name="_method" value="patch">
            <button class="text-muted icon-list-item text-link"><span><svg class="svg-icon" data-icon="dark-mode" role="presentation"  xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 2c-1.82 0-3.53.5-5 1.35C7.99 5.08 10 8.3 10 12s-2.01 6.92-5 8.65C6.47 21.5 8.18 22 10 22c5.52 0 10-4.48 10-10S15.52 2 10 2z"/></svg></span><span>Dark Mode</span></button>
    </form>            </div>
        </div>
    </div>

    <div class="container" id="home-default">
        <div class="grid third gap-x-xxl no-row-gap">
            <div>
                
                <div id="recent-books" class="card mb-xl">
                    <h3 class="card-title">Recent Books</h3>
                    <div class="px-m">
                        <div class="entity-list compact">
                    <a href="https://lavelin.ru/books/obshhaia-informaciia" class="book   entity-list-item" data-entity-type="book" data-entity-id="21">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Общая информация</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text"></p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/windows" class="book   entity-list-item" data-entity-type="book" data-entity-id="20">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Windows</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text"></p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/go" class="book   entity-list-item" data-entity-type="book" data-entity-id="19">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">GO</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text"></p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/home-assistant" class="book   entity-list-item" data-entity-type="book" data-entity-id="18">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">home-assistant</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">https://www.home-assistant.io/</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/git" class="book   entity-list-item" data-entity-type="book" data-entity-id="17">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">GIT</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text"></p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/cicd" class="book   entity-list-item" data-entity-type="book" data-entity-id="16">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">CICD</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Информация по непрерывной интеграции (continuous integration) и непрерывному развертыванию (conti...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/procee-Kuv" class="book   entity-list-item" data-entity-type="book" data-entity-id="15">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Прочее</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Все, что не вошло в остальные книги</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/arxiv" class="book   entity-list-item" data-entity-type="book" data-entity-id="14">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Архив</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Старые записи</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/administrirovanie-1s" class="book   entity-list-item" data-entity-type="book" data-entity-id="12">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Администрирование 1С</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Информация по администрированию в 1С</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/ssylki" class="book   entity-list-item" data-entity-type="book" data-entity-id="11">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Ссылки</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text"></p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/algoritmy" class="book   entity-list-item" data-entity-type="book" data-entity-id="10">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Алгоритмы</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text"></p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/kultura-razrabotki" class="book   entity-list-item" data-entity-type="book" data-entity-id="9">
    <span role="presentation" class="icon text-book"><svg class="svg-icon" data-icon="book" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M18 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM6 4h5v8l-2.5-1.5L6 12V4z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Культура разработки</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text"></p>
</div>
    </div>
</a>            </div>
                    </div>
                </div>
            </div>

            <div>
                
                <div id="recent-pages" class="card mb-xl">
                    <h3 class="card-title">Recently Updated Pages</h3>
                    <div id="recently-updated-pages" class="px-m">
                        <div class="entity-list compact">
                    <a href="https://lavelin.ru/books/git/page/git-izmenenie-poslednego-kommita" class="page   entity-list-item" data-entity-type="page" data-entity-id="95">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Git: Изменение последнего коммита</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Команда
git commit --amend -m &quot;новое сообщение коммита&quot;

Описание
Команда git commit --amend ...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/go/page/primer-potoka-dannyx-v-clean-architecture-na-go" class="page   entity-list-item" data-entity-type="page" data-entity-id="94">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Пример потока данных в Clean Architecture на Go</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Предисловие
Clean Architecture (Чистая Архитектура), предложенная Робертом Мартином (Uncle Bob),...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/windows/page/kak-vosstanovit-polzovatelskii-profil-posle-smeny-dns-suffiksa-ili-vxoda-v-domen-v-windows" class="page   entity-list-item" data-entity-type="page" data-entity-id="93">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">🔧 Как восстановить пользовательский профиль после смены DNS-суффикса или входа в домен в Windows</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Если после изменения основного DNS-суффикса компьютера или подключения к домену Windows загрузи...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/web/page/prilozenie-12-faktorov-sovremennyi-podxod-k-razrabotke" class="page   entity-list-item" data-entity-type="page" data-entity-id="92">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">🧱 Приложение 12 факторов: современный подход к разработке</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">12-Factor App — это методология создания облачно-ориентированных приложений. Она помогает делать ...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/go/page/povedenie-for-range-s-kanalami-v-go" class="page   entity-list-item" data-entity-type="page" data-entity-id="91">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Поведение for range с каналами в Go</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">В Go for v := range ch используется для последовательного чтения из канала ch. Цикл завершится то...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/go/page/sravnenie-miuteksy-i-kanaly-v-go" class="page   entity-list-item" data-entity-type="page" data-entity-id="90">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Сравнение: Мьютексы и Каналы в Go</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Go предлагает два подхода к синхронизации и обмену данными между горутинами:

🔒 Мьютексы (Mutex...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/go/page/kak-ustroen-planirovshhik-gorutin-v-go-g-m-p-model" class="page   entity-list-item" data-entity-type="page" data-entity-id="89">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Как устроен планировщик горутин в Go: G-M-P модель</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Go использует уникальную модель управления конкурентностью — G-M-P (Goroutine, Machine, Processor...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/go/page/informaciia-po-append-v-go" class="page   entity-list-item" data-entity-type="page" data-entity-id="88">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Информация по append в Go</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">append — одна из самых важных встроенных функций в Go для работы со слайсами. Ниже рассмотрены вс...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/git/page/udalenie-i-upravlenie-tegami-v-git" class="page   entity-list-item" data-entity-type="page" data-entity-id="87">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Удаление и управление тегами в Git</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Ниже описаны основные команды для удаления тегов в Git и различия между лёгкими и аннотированными...</p>
</div>
    </div>
</a>                    <a href="https://lavelin.ru/books/git/page/zamena-polzovatelia-i-email-vo-vsex-kommitax" class="page   entity-list-item" data-entity-type="page" data-entity-id="86">
    <span role="presentation" class="icon text-page"><svg class="svg-icon" data-icon="page" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>
</svg></span>
    <div class="content">
            <h4 class="entity-list-item-name break-text">Замена пользователя и email во всех коммитах</h4>
            <div class="entity-item-snippet">

    
    
    <p class="text-muted break-text">Массовая замена имени и email в истории Git-репозитория
1. Проверить всех авторов и их email
gi...</p>
</div>
    </div>
</a>            </div>
                    </div>
                                            <a href="https://lavelin.ru/pages/recently-updated" class="card-footer-link">View All</a>
                                    </div>
            </div>

            <div>
                <div id="recent-activity" class="card mb-xl">
                    <h3 class="card-title">Recent Activity</h3>
                    <div class="px-m">
                        <div class="activity-list">
                    <div class="activity-list-item">
                <div>
        <img class="avatar" src="https://lavelin.ru/user_avatar.png" alt="Admin">
    </div>

<div>
            <a href="https://lavelin.ru/user/admin">Admin</a>
    
    deleted page

    
    
    <br>

    <span class="text-muted"><small><svg class="svg-icon" data-icon="time" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/>
</svg>6 months ago</small></span>
</div>
            </div>
                    <div class="activity-list-item">
                <div>
        <img class="avatar" src="https://lavelin.ru/user_avatar.png" alt="Admin">
    </div>

<div>
            <a href="https://lavelin.ru/user/admin">Admin</a>
    
    created page

    
    
    <br>

    <span class="text-muted"><small><svg class="svg-icon" data-icon="time" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/>
</svg>6 months ago</small></span>
</div>
            </div>
                    <div class="activity-list-item">
                <div>
        <img class="avatar" src="https://lavelin.ru/user_avatar.png" alt="Admin">
    </div>

<div>
            <a href="https://lavelin.ru/user/admin">Admin</a>
    
    deleted page

    
    
    <br>

    <span class="text-muted"><small><svg class="svg-icon" data-icon="time" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/>
</svg>6 months ago</small></span>
</div>
            </div>
                    <div class="activity-list-item">
                <div>
        <img class="avatar" src="https://lavelin.ru/user_avatar.png" alt="Admin">
    </div>

<div>
            <a href="https://lavelin.ru/user/admin">Admin</a>
    
    updated page

    
    
    <br>

    <span class="text-muted"><small><svg class="svg-icon" data-icon="time" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
    <path d="M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"/>
</svg>6 months ago</small></span>
</div>
            </div>
            </div>
                    </div>
                </div>
            </div>

        </div>
    </div>

            </div>
        </div>
    </div>

    </div>

    
    <div component="back-to-top" class="back-to-top print-hidden">
        <div class="inner">
            <svg class="svg-icon" data-icon="chevron-up" role="presentation"  viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
    <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"/>
    <path d="M0 0h24v24H0z" fill="none"/>
</svg> <span>Back to top</span>
        </div>
    </div>

                <script src="https://lavelin.ru/dist/app.js?version=v23.10.4" nonce="PuNKWwyBuUrGKAktQLKGjHvr"></script>
        
    </body>
</html>
