Utf-8 json generator on php with unicode 6 support

Of course, PHP has a great json_encode function. But until version 5.3 inclusive, the same Russian characters are encoded as \ uXXXX - many times longer than utf-8. To reduce the amount of traffic, it is necessary to remove the utf-8 character conversion in \ u-sequence. Yes, in PHP 5.4, json_encode finally got the JSON_UNESCAPED_UNICODE parameter, but many hosters still provide users with a choice only between versions 5.2 and 5.3.

I would not invent another bike, but those solutions that I came across have a common problem - they correctly process only the symbols of the Unicode base plane.

The method, in various modifications, widely spread on the Internet, is that the result of the json_encode function is processed by a filter that replaces all occurrences of \ uXXXX with utf-8 characters. Например, так:

class Json{
  static function json_encode($data){
    return preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
      function($val){
        return mb_decode_numericentity('&#'.intval($val[1], 16).';', array(0, 0xffff, 0, 0xffff), 'utf-8');
      }, json_encode($data)
    );
  }
}

And this code worked ... Until then, until it was necessary to add support for unicode emoji (emoticons were added in the Unicode 6 standard), most of which have codes more than 0x1F000 (the first unicode plane).

The fact is that \ u-sequences are encoded in utf-16: a word (2 bytes) per character with a code from 0x0000 to 0xFFFF (excluding the “window” 0xD800-0xDFFF) and 2 words (4 bytes) with codes 0xD800-0xDFFF for characters with codes more than 0xFFFF.

For example, the original unicode character with the code 0x1f601, having utf-8 representation "\ xf0 \ x9f \ x98 \ x81", will be converted by the json_dencode function to the string "\ ud83d \ ude01" and the result of the above function will be the string "\ xed \ xa0 \ xbd \ xed \ xb8 \ x81 ". Instead of one 4-byte character, two 3-byte characters were received.

Thus, for the normal processing of characters, an analysis of codes and a separate transformation of 2 character \ u-sequences are necessary. Например, так:

class Json{
  static public $_code;

  static public function json_encode($data){
    Json::$_code=0;
    return preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
      function($val){
        $val=hexdec($val[1]);
          if(Json::$_code){
            $val=((Json::$_code&0x3FF)<<10)+($val&0x3FF)+0x10000;
            Json::$_code=0;
          }elseif($val>=0xD800&&$val<0xE000){
            Json::$_code=$val;
            return '';
          }
          return html_entity_decode(sprintf('&#x%x;', $val), ENT_NOQUOTES, 'utf-8');
      }, json_encode($data)
    );
  }
}
</code></pre><br/>
Данный вариант корректно преобразовывает любые utf-8 символы.<br/>
<br/>
P.S. Я прекрасно понимаю, что вышеприведенный код далек от оптимального. Но он работает и с достаточной — для моих задач — производительностью. А сравнивать скорость работы всех придуманных вариантов просто лень. Вот, например, вариант, перекладывающий анализ на регулярное выражение:<br/>
<br/>
<pre><code class="php">class Json{
  static public function json_encode($data){
    return preg_replace_callback('/\\\\ud([89ab][0-9a-f]{2})\\\\ud([c-f][0-9a-f]{2})|\\\\u([0-9a-f]{4})/i', function($val){
      return html_entity_decode(
        empty($val[3])?
          sprintf('&#x%x;', ((hexdec($val[1])&0x3FF)&lt;&lt;10)+(hexdec($val[2])&0x3FF)+0x10000):
          '&#x'.$val[3].';',
        ENT_NOQUOTES, 'utf-8'
      );
    }, json_encode($data));
  }
}
</code></pre><br/>
P.P.S. Вызовы html_entity_decode вставлены в callback-функцию потому, что обрабатываемые данные могут содержать html-код, включающий служебные html-сущности ('&lt;', '&gt;', '&amp;' и т.д.), которые не должны быть преобразованы в символы.</div>
      
    </div>

    

    <dl class="post__tags">
      <dt class="post__tags-label">Теги:</dt>
      <dd class="post__tags-list">    <ul class="inline-list inline-list_fav-tags js-post-tags">
        <li class="inline-list__item inline-list__item_tag"><a href="https://habr.com/ru/search/?q=%5Bphp%5D&target_type=posts" rel="tag" class="inline-list__item-link post__tag  ">php</a></li>
        <li class="inline-list__item inline-list__item_tag"><a href="https://habr.com/ru/search/?q=%5Bjson%5D&target_type=posts" rel="tag" class="inline-list__item-link post__tag  ">json</a></li>
        <li class="inline-list__item inline-list__item_tag"><a href="https://habr.com/ru/search/?q=%5Butf-8%5D&target_type=posts" rel="tag" class="inline-list__item-link post__tag  ">utf-8</a></li>
        <li class="inline-list__item inline-list__item_tag"><a href="https://habr.com/ru/search/?q=%5Bemoji%5D&target_type=posts" rel="tag" class="inline-list__item-link post__tag  ">emoji</a></li>
        <li class="inline-list__item inline-list__item_tag"><a href="https://habr.com/ru/search/?q=%5Bregexp%5D&target_type=posts" rel="tag" class="inline-list__item-link post__tag  ">regexp</a></li>
    </ul>
    <button type="button" class="btn btn_outline_grey btn_mini hidden js-fav-edit-link" data-type="2" data-id="195806" onclick="show_edit_tags(this)">Добавить метки</button>
</dd>
    </dl>
      <dl class="post__tags">
        <dt class="post__tags-label">Хабы:</dt>
        <dd class="post__tags-list">
          <ul class="inline-list inline-list_fav-tags js-post-hubs">
              <li class="inline-list__item inline-list__item_tag">
                <a href="#" rel="tag" class="inline-list__item-link post__tag">
                  PHP
                </a>
              </li>
          </ul>
        </dd>
      </dl>
  </div>
    <div class="overlay hidden" id="js-vote-reason">
  <div class="popup popup_reasons">
    <div class="popup__head popup__head_lang-settings">
      <span class="popup__head-title">Укажите причину минуса, чтобы автор поработал над ошибками</span>
      <button type="button" class="btn btn_small btn_popup-close js-hide_vote-reason">
        <svg class="icon-svg" width="12" height="12">
          <use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#close" />
        </svg>
      </button>
    </div>
    <div class="popup__body">
       <span class="radio radio_custom reasons-vote__item js-vote-popup_list-item">
          <input type="radio" id="reasonList" name="reasonList" class="radio__input js-vote_radio" value="">
          <label for="reasonList" class="radio__label radio__label_another js-vote_title"></label>
        </span>
      <div id="js-vote-popup_list"></div>
      <button type="button" class="btn btn_blue btn_huge js-vote_send" disabled>Отправить анонимно</button>
    </div>
  </div>
</div>

</article>


      <form action="/json/favorites/" method="post" class="form form_bordered form_favorites-tags hidden" id="edit_tags_form">
  <input type="hidden" name="action" value="add" />
  <input type="hidden" name="ti" value="0" />
  <input type="hidden" name="tt" value="0" />

  <button type="button" class="btn form__close-btn" onclick="closeForm(this)" title="Закрыть"><svg class="icon-svg icon-svg_navbar-close-search" width="31" height="32" viewBox="0 0 31 32" aria-hidden="true" version="1.1" role="img"><path d="M26.67 0L15.217 11.448 3.77 0 0 3.77l11.447 11.45L0 26.666l3.77 3.77L15.218 18.99l11.45 11.448 3.772-3.77-11.448-11.45L30.44 3.772z"/></svg>
</button>

  <fieldset class="form__fieldset">
    <legend class="form__legend">Пометьте публикацию своими метками</legend>
    <input type="text" name="tags_string" class="form__text-field" />
    <span class="form__desc">Метки лучше разделять запятой. Например: <i>программирование, алгоритмы</i></span>
  </fieldset>

  <div class="form__footer">
    <button type="submit" class="btn btn_x-large btn_outline_blue" disabled>Сохранить</button>
  </div>
</form>

    </div>

    <div class="sidebar">
      <div class="sidebar_right_ad">
        <!-- /235032688/HH/HH01_ATF_Poster -->
<div class="dfp-slot dfp-slot_top is_visible">
  <div class="dfp-slot__banner" id="div-gpt-hh-atf">
    <script>
      window.display_dfp_slot('div-gpt-hh-atf');
    </script>
  </div>
  <div class="dfp-slot__placeholder">
  <span class="dfp-slot__placeholder-text">Когда конференция Microsoft для разработчиков идет двое суток <a href="https://u.tmtm.ru/microsoftbuild2020_megapost_zaglush" class="btn btn_large btn_blue" style="display:inline-flex!important;" target="_blank">А хочется только самого важного</a></span>
</div>
<a href="https://tmtm.ru/services/advertising/" target="_blank" class="dfp-slot__label">Реклама</a>

</div>

      </div>
      <div class="sidebar_right sidebar_content-area">
            <div class="default-block default-block_sidebar" id="neuro-habr">
  </div>
  <script>
    var rndmvlue = Math.random().toString(36).substring(2);
    var neuroHabrUrl = '/ru/json/mrnh/?v='+rndmvlue;
    $.ajax({
      url: neuroHabrUrl,
      success: function (data) {
        if (data.messages === 'ok' && data.html && data.html.length) {
          $('#neuro-habr').append(data.html);
        }
      },
      error: function(err) {},
      dataType: 'json',
      type: 'GET',
    });
  </script>

            <div class="default-block default-block_sidebar hidden" id="tm-editoral-subscription">
    <div class="tm-editoral-subscription">
      <span class="tm-editoral-subscription__close" id="editoral-subscribe-close">
        <svg width="12" height="12">
          <use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#close" />
        </svg>
      </span>

      <h3 class="tm-editoral-subscription__title">
        Редакторский дайджест
      </h3>
      <p class="tm-editoral-subscription__description">
        Присылаем лучшие статьи раз в месяц
      </p>
      <form method="POST" class="tm-editoral-subscription__form" id="editoral-subscribe">
        <input placeholder="Электропочта" name="email" type="email" id="editoral-subscribe-email" class="tm-editoral-subscription__input" />
        <input name="hl" type="hidden" value="ru" />
        <input name="fl" type="hidden" value="ru" />
        <button type="submit" class="tm-editoral-subscription__icon" id="editoral-subscribe-button">
          <svg width="24" height="24">
            <use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-right" />
          </svg>
        </button>
      </form>
      <p class="tm-editoral-subscription__error hidden" id="editoral-subscribe-error"></p>
      <p class="tm-editoral-subscription__success hidden" id="editoral-subscribe-success">
        Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.
      </p>
  </div>
  <script>
    $(document).ready(function () {
      var block = $('#tm-editoral-subscription');
      var input = $('#editoral-subscribe-email');
      var button = $('#editoral-subscribe-button');
      var error = $('#editoral-subscribe-error');
      var success = $('#editoral-subscribe-success');

      var cookieOptions = {
        expires: 90,
        path: '/',
        secure: true,
      };

      if (!$.cookie('habr-editoral-subscription')) {
        block.removeClass('hidden');
      }

      $('#editoral-subscribe-close').click(function() {
        $.cookie('habr-editoral-subscription', 'close', cookieOptions);
        if (typeof ga === 'function') {
          ga('send', 'event', 'tm_block', 'edit-digest_post', 'close');
        }
        block.remove();
      });


      function onError(msg) {
        input.prop('disabled', false);
        button.prop('disabled', false);
        button.removeClass('loading');
        error.removeClass('hidden');
        error.text(msg);
      }

      $('#editoral-subscribe').submit(function (e) {
        var form = $(this);

        form.ajaxSubmit({
          url:'/json/digests/editorial/subscribe',
          dataType:'json',
          beforeSubmit: function() {
            input.prop('disabled', true);
            button.prop('disabled', true);
            error.addClass('hidden');
            button.addClass('loading');
          },
          error: function(err) {
            if (err.status !== 200) {
              onError(err.statusText);
            } else {
              onError(err);
            }
          },
          success: function(json) {
            if (json.system_errors) {
              onError(json.system_errors && json.system_errors[0]);
            } else {
              form.addClass('hidden');
              success.removeClass('hidden');
              button.removeClass('loading');
              $.cookie('habr-editoral-subscription', 'subscribe', cookieOptions);
              if (typeof ga === 'function') {
                ga('send', 'event', 'tm_block', 'edit-digest_post', 'subscribe');
              }
              setTimeout(function() {block.remove()}, 10000);
            }
          }
        });
        return false;
      });
    });
  </script>

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

  <section class="column-wrapper column-wrapper_post-additionals">
    <div class="content_left">
      <div class="post-additionals">
          <ul class="post-stats post-stats_post js-user_" data-post-type="publish_ugc_ru,h_260,f_develop" id="infopanel_post_195806">
          <li class="post-stats__item post-stats__item_voting-wjt">
            <div class="voting-wjt voting-wjt_post js-post-vote" data-id="195806" data-type="2">
              <button type="button" class="btn voting-wjt__button " data-action="plus" onclick="posts_vote_plus(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-up" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>

              <span class="voting-wjt__counter  voting-wjt__counter_positive  js-score" onclick="posts_vote_result(24, 14, 10)" title="Всего голосов 24: &uarr;14 и &darr;10">+4</span>

              <button type="button" class="btn voting-wjt__button " data-action="minus" onclick="posts_vote_minus(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-down" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>
            </div>
          </li>
    <li class="post-stats__item post-stats__item_bookmark">
      <button type="button" class="btn bookmark-btn bookmark-btn_post " data-post-type="publish_ugc_ru,h_260,f_develop" data-type="2" data-id="195806" data-action="add" title="Только зарегистрированные пользователи могут добавлять публикации в закладки" onclick="posts_add_to_favorite(this);" disabled>
        <span class="btn_inner"><svg class="icon-svg_bookmark" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="bookmark__counter js-favs_count" title="Количество пользователей, добавивших публикацию в закладки">40</span></span>
      </button>
    </li>

    <li class="post-stats__item post-stats__item_views">
      <div class="post-stats__views" title="Количество просмотров">
        <svg class="icon-svg_views-count" width="21" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-stats__views-count">15,3k</span>
      </div>
    </li>

      <li class="post-stats__item post-stats__item_comments">
          <a href="https://habr.com/ru/post/195806/#comments" class="post-stats__comments-link" rel="nofollow">
            <svg class="icon-svg_post-comments" width="16" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-stats__comments-count" title="Читать комментарии">5</span>
          </a>
      </li>


      <li class="post-stats__item post-stats__item_share">
        <div class="dropdown dropdown_share">
          <div href="https://habr.com/ru/post/195806/#comments" data-toggle="dropdown" class="post-stats__share" rel="nofollow">
            <svg class="icon-svg_post-share" width="24" height="24">
              <use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#share">
            </svg>
            <span class="post-stats__comments-text" title="Поделиться">
              Поделиться
            </span>
          </div>

          <div class="dropdown-container">
            <div class="post-share">
  <ul class="post-share__buttons">
    <li class="post-share__item post-share__item_post">
      <span
        class="post-share__item-link post-share__item-link_normal post-share__item-link_copy"
        title="Скопировать ссылку"
        onclick="copyCurrentUrl(), $('.dropdown_share').removeClass('dropdown_active')"
      >
        Скопировать ссылку
      </span>
    </li>
    <li class="post-share__item post-share__item_post">
      <a href="https://www.facebook.com/sharer/sharer.php?u=https://habr.com/ru/post/195806/"
        class="post-share__item-link post-share__item-link_normal post-share__item-link_facebook"
        title="Facebook"
        onclick="window.open(this.href, 'Facebook', 'width=640,height=436,toolbar=0,status=0'); return false"
      >
        Facebook
      </a>
    </li>
    <li class="post-share__item post-share__item_post">
      <a href="https://twitter.com/intent/tweet?text=%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80+utf-8+json+%D0%BD%D0%B0+php+%D1%81+%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%BE%D0%B9+unicode+6+https://habr.com/p/195806/+via+%40habr_com"
        class="post-share__item-link post-share__item-link_normal post-share__item-link_twitter"
        title="Twitter"
        onclick="window.open(this.href, 'Twitter', 'width=800,height=300,resizable=yes,toolbar=0,status=0'); return false"
      >
        Twitter
      </a>
    </li>
    <li class="post-share__item post-share__item_post">
      <a href="https://vk.com/share.php?url=https://habr.com/ru/post/195806/"
        class="post-share__item-link post-share__item-link_normal post-share__item-link_vkontakte"
        title="ВКонтакте"
        onclick="window.open(this.href, 'ВКонтакте', 'width=800,height=300,toolbar=0,status=0'); return false"
      >
        ВКонтакте
      </a>
    </li>
    <li class="post-share__item post-share__item_post">
      <a href="https://t.me/share/url?url=https://habr.com/ru/post/195806/&title=Генератор utf-8 json на php с поддержкой unicode 6"
        class="post-share__item-link post-share__item-link_normal post-share__item-link_telegram"
        title="Telegram"
        onclick="window.open(this.href, 'Telegram', 'width=800,height=300,toolbar=0,status=0'); return false"
      >
        Telegram
      </a>
    </li>
    <li class="post-share__item post-share__item_post">
      <a href="https://getpocket.com/edit?url=https://habr.com/ru/post/195806/&title=Генератор utf-8 json на php с поддержкой unicode 6"
        class="post-share__item-link post-share__item-link_normal post-share__item-link_pocket"
        title="Pocket"
        target="_blank"
      >
        Pocket
      </a>
    </li>
  </ul>
</div>

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





  </ul>

            <form action="/conversations/eandr_67/" method="GET" class="form form_bordered form_admin-causes hidden" id="admin_causes">

    <input type="hidden" name="moderation" value="195806">

    <button type="button" class="btn form__close-btn" onclick="closeForm(this)"><svg class="icon-svg icon-svg_navbar-close-search" width="31" height="32" viewBox="0 0 31 32" aria-hidden="true" version="1.1" role="img"><path d="M26.67 0L15.217 11.448 3.77 0 0 3.77l11.447 11.45L0 26.666l3.77 3.77L15.218 18.99l11.45 11.448 3.772-3.77-11.448-11.45L30.44 3.772z"/></svg>
</button>

    <fieldset class="form__fieldset form__fieldset_admin-causes">
      <legend class="form__legend">Выберите рекомендации для отправки автору:</legend>

      <div class="checkbox-group_columns">
        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox1" value="1"/>
          <label for="checkbox1" class="checkbox__label">Указан только блог</label>
        </span>

        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox2" value="2"/>
          <label for="checkbox2" class="checkbox__label">Орфографические ошибки</label>
        </span>

        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox3" value="3"/>
          <label for="checkbox3" class="checkbox__label">Пунктуационные ошибки</label>
        </span>

        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox4" value="4"/>
          <label for="checkbox4" class="checkbox__label">Отступы</label>
        </span>

        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox5" value="5"/>
          <label for="checkbox5" class="checkbox__label">Текст-простыня</label>
        </span>

        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox6" value="6"/>
          <label for="checkbox6" class="checkbox__label">Короткие предложения</label>
        </span>
        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox7" value="7"/>
          <label for="checkbox7" class="checkbox__label">Смайлики</label>
        </span>
        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox8" value="8"/>
          <label for="checkbox8" class="checkbox__label">Много форматирования</label>
        </span>
        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox9" value="9"/>
          <label for="checkbox9" class="checkbox__label">Картинки</label>
        </span>
        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox10" value="10"/>
          <label for="checkbox10" class="checkbox__label">Ссылки</label>
        </span>
        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox11" value="11"/>
          <label for="checkbox11" class="checkbox__label">Оформление кода</label>
        </span>
        <span class="checkbox checkbox_custom checkbox_recommendation-form">
          <input type="checkbox" class="form__input form__input_checkbox" name="id[]" id="checkbox12" value="12"/>
          <label for="checkbox12" class="checkbox__label">Рекламный характер</label>
        </span>
      </div>
    </fieldset>

    <div class="form__footer">
      <button type="submit" class="btn btn_x-large btn_outline_blue" disabled>Отправить</button>
    </div>
  </form>

          <form action="/json/complaints/add/" class="form form_bordered form_abuse hidden" method="post" id="abuse_form">
  <input type="hidden" name="tt" value="2" />
  <input type="hidden" name="ti" value="195806" />

  <button type="button" class="btn form__close-btn" onclick="closeForm(this)"><svg class="icon-svg icon-svg_navbar-close-search" width="31" height="32" viewBox="0 0 31 32" aria-hidden="true" version="1.1" role="img"><path d="M26.67 0L15.217 11.448 3.77 0 0 3.77l11.447 11.45L0 26.666l3.77 3.77L15.218 18.99l11.45 11.448 3.772-3.77-11.448-11.45L30.44 3.772z"/></svg>
</button>

  <fieldset class="form__fieldset">
    <legend class="form__legend">Нарушение</legend>
    <input type="text" name="text" class="form__text-field" />
    <span class="form__desc">Опишите суть нарушения</span>
  </fieldset>

  <div class="form__footer">
    <button type="submit" class="btn btn_x-large btn_outline_blue" disabled>Отправить</button>
  </div>
</form>


          <div class="author-panel author-panel_user">
            <div class="author-panel__user-info">
              <div class="user-info"  data-user-login="eandr_67">
  <a href="#" class="media-obj__image" onclick="if (typeof ga === 'function') { ga('send', 'event', 'author_info_top', 'profile', 'eandr_67');}">
      <img src="//habrastorage.org/getpro/habr/avatars/db3/390/719/db3390719211e43fe22176a2477c8423.jpg" width="48" height="48" class="media-obj__image-pic media-obj__image-pic_user"/>
  </a>

  <div class="user-info__about">
    <div class="user-info__links">
        <a href="#" class="user-info__fullname" onclick="if (typeof ga === 'function') { ga('send', 'event', 'author_info_top', 'profile', 'eandr_67');}">Андрей Ежгуров</a>&nbsp;<a href="/users/eandr_67/" class="user-info__nickname user-info__nickname_doggy" onclick="if (typeof ga === 'function') { ga('send', 'event', 'author_info_top', 'profile', 'eandr_67');}">eandr_67</a>
        
    </div>

      <div class="user-info__specialization">Пользователь</div>
  </div>
</div>


<div class="overlay hidden" id="js-donate">
  <div class="popup">
    <div class="popup__head popup__head_lang-settings">
      <span class="popup__head-title js-popup_title" data-section="1">Платежная система</span>
      <button type="button" class="btn btn_small btn_popup-close js-hide-donate">
        <svg class="icon-svg" width="12" height="12">
          <use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#close" />
        </svg>
      </button>
    </div>
    <div class="popup__body js-donate-popup_body">
    </div>
  </div>
</div>

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

    <div class="default-block default-block_content">
      <div class="default-block__header default-block__header_large">
        <h2 class="default-block__header-title default-block__header-title_large">Похожие публикации</h2>
      </div>
      <div class="default-block__content">

        <ul class="content-list">
            <li class="content-list__item content-list__item_devided post-info">
              <span class="post-info__date">22 февраля 2015 в 13:23</span>
                <h3 class="post-info__title post-info__title_large">
                  <a href="https://habr.com/ru/post/251177/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'similar_posts', 'common', '1'); }">
                    MessagePack аналог JSON, но быстрее и меньше
                  </a>
                </h3>

              <div class="post-info__meta">
                <span class="post-info__meta-item" title="Рейтинг">
                  <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg>
                      <span class="post-info__meta-counter">+6</span>
                </span>
                <span class="post-info__meta-item" title="Количество просмотров">
                  <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">38k</span>
                </span>
                <span class="post-info__meta-item" title="Закладки">
                  <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">92</span>
                </span>
                <a href="https://habr.com/ru/post/251177#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                  <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">53</span>
                </a>
              </div>
            </li>
            <li class="content-list__item content-list__item_devided post-info">
              <span class="post-info__date">20 октября 2013 в 21:33</span>
                <h3 class="post-info__title post-info__title_large">
                  <a href="https://habr.com/ru/post/198312/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'similar_posts', 'common', '2'); }">
                    PHP JSON был удален из PHP 5.5?
                  </a>
                </h3>

              <div class="post-info__meta">
                <span class="post-info__meta-item" title="Рейтинг">
                  <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg>
                      <span class="post-info__meta-counter">+124</span>
                </span>
                <span class="post-info__meta-item" title="Количество просмотров">
                  <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">81,9k</span>
                </span>
                <span class="post-info__meta-item" title="Закладки">
                  <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">89</span>
                </span>
                <a href="https://habr.com/ru/post/198312#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                  <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">105</span>
                </a>
              </div>
            </li>
            <li class="content-list__item content-list__item_devided post-info">
              <span class="post-info__date">21 мая 2011 в 16:10</span>
                <h3 class="post-info__title post-info__title_large">
                  <a href="https://habr.com/ru/post/119719/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'similar_posts', 'common', '3'); }">
                    PHP / JSON база данных
                  </a>
                </h3>

              <div class="post-info__meta">
                <span class="post-info__meta-item" title="Рейтинг">
                  <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg>
                      <span class="post-info__meta-counter">+34</span>
                </span>
                <span class="post-info__meta-item" title="Количество просмотров">
                  <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">54,7k</span>
                </span>
                <span class="post-info__meta-item" title="Закладки">
                  <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">136</span>
                </span>
                <a href="https://habr.com/ru/post/119719#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                  <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">40</span>
                </a>
              </div>
            </li>
        </ul>

      </div>
    </div>

      <div class="default-block_content">
          

  <div class="promo-block promo-block_courses">
    <h2 class="promo-block__header">
      <a onclick="if (typeof ga === 'function') { if (g_is_ugc_post) { var action = 'career_courses_post' } else {  var action = 'career_courses_feed' } ga('send', 'event', 'tm_block', action, 'blockname'); }" href="https://career.habr.com/courses" target="_blank" data-utm="?utm_source=habr&utm_medium=habr_block&utm_content=block_name&utm_campaign=courses_post" class="promo-block__title-link" rel="nofollow">
        Курсы
      </a>
    </h2>

    <div class="promo-block__content">
      <ul class="content-list content-list_promo" >
          <li class="content-list__item content-list__item_promo">
            <a onclick="if (typeof ga === 'function') { if (g_is_ugc_post) { var action = 'career_courses_post' } else {  var action = 'career_courses_feed' } ga('send', 'event', 'tm_block', action, 'post'); }" href="https://career.habr.com/courses/323" class="promo-item" data-utm="?utm_source=habr&utm_medium=habr_block&utm_content=course&utm_campaign=courses_post" >
  <div class="promo-item__wrap">
    <div class="promo-item__title promo-item__title_hovered">
        <img src="https://habrastorage.org/getpro/moikrug/uploads/education_platform/000/000/036/logo/medium_54ab1ce8c393eb3df1474846ce0a0e2c.png" class="promo-item__title-image" width="20" height="20" />
      Профессия Perfomance-маркетолог
    </div>
    <div class="promo-item__attrs">
        <span class="promo-item__attrs-item">
            21 июня 2020
        </span>
        <span class="promo-item__attrs-item">
            2 года
        </span>
        <span class="promo-item__attrs-item promo-item__amount_rur">
            305 572 
        </span>
        <span class="promo-item__attrs-item">
          Skillbox
        </span>
    </div>
  </div>
</a>

          </li>
          <li class="content-list__item content-list__item_promo">
            <a onclick="if (typeof ga === 'function') { if (g_is_ugc_post) { var action = 'career_courses_post' } else {  var action = 'career_courses_feed' } ga('send', 'event', 'tm_block', action, 'post'); }" href="https://career.habr.com/courses/889" class="promo-item" data-utm="?utm_source=habr&utm_medium=habr_block&utm_content=course&utm_campaign=courses_post" >
  <div class="promo-item__wrap">
    <div class="promo-item__title promo-item__title_hovered">
        <img src="https://habrastorage.org/getpro/moikrug/uploads/education_platform/000/000/036/logo/medium_54ab1ce8c393eb3df1474846ce0a0e2c.png" class="promo-item__title-image" width="20" height="20" />
      HR-аналитика с нуля
    </div>
    <div class="promo-item__attrs">
        <span class="promo-item__attrs-item">
            21 июня 2020
        </span>
        <span class="promo-item__attrs-item">
            4 месяца
        </span>
        <span class="promo-item__attrs-item promo-item__amount_rur">
            80 000 
        </span>
        <span class="promo-item__attrs-item">
          Skillbox
        </span>
    </div>
  </div>
</a>

          </li>
          <li class="content-list__item content-list__item_promo">
            <a onclick="if (typeof ga === 'function') { if (g_is_ugc_post) { var action = 'career_courses_post' } else {  var action = 'career_courses_feed' } ga('send', 'event', 'tm_block', action, 'post'); }" href="https://career.habr.com/courses/6" class="promo-item" data-utm="?utm_source=habr&utm_medium=habr_block&utm_content=course&utm_campaign=courses_post" >
  <div class="promo-item__wrap">
    <div class="promo-item__title promo-item__title_hovered">
        <img src="https://habrastorage.org/getpro/moikrug/uploads/education_platform/000/000/037/logo/medium_3869053716ff0b787b38590f7ae5ed62.jpg" class="promo-item__title-image" width="20" height="20" />
      React.js. Разработка веб-приложений
    </div>
    <div class="promo-item__attrs">
        <span class="promo-item__attrs-item">
            22 июня 2020
        </span>
        <span class="promo-item__attrs-item">
            6 недель
        </span>
        <span class="promo-item__attrs-item promo-item__amount_rur">
            27 000 
        </span>
        <span class="promo-item__attrs-item">
          Loftschool
        </span>
    </div>
  </div>
</a>

          </li>
          <li class="content-list__item content-list__item_promo">
            <a onclick="if (typeof ga === 'function') { if (g_is_ugc_post) { var action = 'career_courses_post' } else {  var action = 'career_courses_feed' } ga('send', 'event', 'tm_block', action, 'post'); }" href="https://career.habr.com/courses/297" class="promo-item" data-utm="?utm_source=habr&utm_medium=habr_block&utm_content=course&utm_campaign=courses_post" >
  <div class="promo-item__wrap">
    <div class="promo-item__title promo-item__title_hovered">
        <img src="https://habrastorage.org/getpro/moikrug/uploads/education_platform/000/000/058/logo/medium_90c46342f487198001713f1faa9f8eee.png" class="promo-item__title-image" width="20" height="20" />
      Game-дизайнер
    </div>
    <div class="promo-item__attrs">
        <span class="promo-item__attrs-item">
            22 июня 2020
        </span>
        <span class="promo-item__attrs-item">
            12 месяцев
        </span>
        <span class="promo-item__attrs-item promo-item__amount_rur">
            128 400 
        </span>
        <span class="promo-item__attrs-item">
          GeekBrains
        </span>
    </div>
  </div>
</a>

          </li>
          <li class="content-list__item content-list__item_promo">
            <a onclick="if (typeof ga === 'function') { if (g_is_ugc_post) { var action = 'career_courses_post' } else {  var action = 'career_courses_feed' } ga('send', 'event', 'tm_block', action, 'post'); }" href="https://career.habr.com/courses/209" class="promo-item" data-utm="?utm_source=habr&utm_medium=habr_block&utm_content=course&utm_campaign=courses_post" >
  <div class="promo-item__wrap">
    <div class="promo-item__title promo-item__title_hovered">
        <img src="https://habrastorage.org/getpro/moikrug/uploads/education_platform/000/000/010/logo/medium_c61084b73a4ef06b72f39d0d25ce34e7.png" class="promo-item__title-image" width="20" height="20" />
      Тестировщик
    </div>
    <div class="promo-item__attrs">
        <span class="promo-item__attrs-item">
            22 июня 2020
        </span>
        <span class="promo-item__attrs-item">
            5 месяцев
        </span>
        <span class="promo-item__attrs-item promo-item__amount_rur">
            65 900 
        </span>
        <span class="promo-item__attrs-item">
          Нетология
        </span>
    </div>
  </div>
</a>

          </li>
      </ul>
    </div>

    <div class="promo-block__footer">
      <a onclick="if (typeof ga === 'function') { if (g_is_ugc_post) { var action = 'career_courses_post' } else {  var action = 'career_courses_feed' }  ga('send', 'event', 'tm_block', action, 'posts'); }" href="https://career.habr.com/courses" data-utm="?utm_source=habr&utm_medium=habr_block&utm_content=courses_all&utm_campaign=courses_post" class="promo-block__footer-link promo-block__footer-link_selected" target="_blank" rel="nofollow">Больше курсов на Хабр Карьере</a>
    </div>
  </div>


      </div>
      <!-- /235032688/HH/HH02_inpage_wide -->
<div class="dfp-slot">
  <div class="dfp-slot__banner dfp-slot__banner_wide" id='div-gpt-hh-inpage-wide'>
    <script>
      window.display_dfp_slot('div-gpt-hh-inpage-wide');
    </script>
  </div>
  <div class="dfp-slot__placeholder">
  <span class="dfp-slot__placeholder-text">AdBlock похитил этот баннер, но&nbsp;баннеры не&nbsp;зубы &mdash; отрастут<br/><br/> <a href="https://u.tmtm.ru/tmtalkadblock" class="btn btn_large btn_blue" style="display:inline-flex!important;" target="_blank">Подробнее</a></span>
</div>
<a href="https://tmtm.ru/services/advertising/" target="_blank" class="dfp-slot__label">Реклама</a>

</div>

    </div>
    <div class="sidebar_right">
    </div>
  </section>

<section class="column-wrapper column-wrapper_comments js-comments-wrapper">
  <div class="content_left">
        <div class="comments-section" id="comments">
    <header class="comments-section__head">
      <h2 class="comments-section__head-title">
        Комментарии
        <span class="comments-section__head-counter" id="comments_count">
          5
        </span>
      </h2>
      
    </header>
    
    

    <ul class="content-list content-list_comments" id="comments-list">
        <li class="content-list__item content-list__item_comment js-comment " rel="6793164">
    
    <span class="parent_id" data-parent_id="0"></span>
    <div class="comment" id="comment_6793164">
      <span class="comment__collapse" title="Свернуть/развернуть ветку комментариев" data-id="6793164"></span>
        <span class="comment__folding-dotholder"></span>
        <div class="comment__head   " rel="6793164">
          <a href="https://habr.com/ru/users/Mithgol/" class="user-info user-info_inline"  data-user-login="Mithgol">
    <img src="//habrastorage.org/getpro/habr/avatars/45b/a39/080/45ba3908025464c61b3ad3ebcf6aa351.png" class="user-info__image-pic user-info__image-pic_small" width="24" height="24" />
  <span class="user-info__nickname user-info__nickname_small user-info__nickname_comment">Mithgol</span>
</a>

          
          <time class="comment__date-time comment__date-time_published">30 сентября 2013 в 20:59</time>
          <ul class="inline-list inline-list_comment-nav">
  <li class="inline-list__item inline-list__item_comment-nav">
    <a href="#comment_6793164" class="icon_comment-anchor" title="Ссылка на комментарий"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#anchor" /></svg></a>
  </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <button class="icon_comment-bookmark " onclick="return comments_add_to_favorite(this)" data-type="3" data-id="6793164" data-action="add" title="Только зарегистрированные пользователи могут добавлять комментарии в избранное" disabled><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg></button>
    </li>


  <li class="inline-list__item inline-list__item_comment-nav hidden js-comment_children">
    <a href="#comment_6793164" class="icon_comment-arrow-down js-comment_parent back_to_children" data-id="6793164" data-parent_id="0" title="Вернуться к ответу"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#rounded-arrow" /></svg></a>
  </li>
</ul>

            <div class="voting-wjt voting-wjt_comments js-comment-vote" data-id="6793164" data-post-target="195806" data-type="3">
    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="plus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-up" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>

    <span class="voting-wjt__counter voting-wjt__counter_positive  js-score" title="Всего голосов +2: &uarr;2 и &darr;0">+2</span>

    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="minus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-down" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>
  </div>

        </div>

        <div class="comment__message ">Сразу скажу, что анонимные функции появились только <nobr>в PHP 5.3 —</nobr> <nobr>а в PHP 5.2</nobr> <nobr>в <b>preg_replace_callback</b></nobr> пришлось бы совать строку с именем функции, определённой <nobr>где-то ещё.</nobr></div>

        <div class="comment__footer">
</div>

        <div class="comment__reply-form js-form_placeholder"></div>
    </div>

    <ul class="content-list content-list_nested-comments content-list_nested-comments-0" id="reply_comments_6793164"></ul>
  </li>
  <li class="content-list__item content-list__item_comment js-comment " rel="6793226">
    
    <span class="parent_id" data-parent_id="0"></span>
    <div class="comment" id="comment_6793226">
      <span class="comment__collapse" title="Свернуть/развернуть ветку комментариев" data-id="6793226"></span>
        <span class="comment__folding-dotholder"></span>
        <div class="comment__head   " rel="6793226">
          <a href="https://habr.com/ru/users/Mithgol/" class="user-info user-info_inline"  data-user-login="Mithgol">
    <img src="//habrastorage.org/getpro/habr/avatars/45b/a39/080/45ba3908025464c61b3ad3ebcf6aa351.png" class="user-info__image-pic user-info__image-pic_small" width="24" height="24" />
  <span class="user-info__nickname user-info__nickname_small user-info__nickname_comment">Mithgol</span>
</a>

          <svg class="icon_comment-edit" title="Комментарий был изменен" width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#pencil" /></svg>
          <time class="comment__date-time comment__date-time_published">30 сентября 2013 в 21:15</time>
          <ul class="inline-list inline-list_comment-nav">
  <li class="inline-list__item inline-list__item_comment-nav">
    <a href="#comment_6793226" class="icon_comment-anchor" title="Ссылка на комментарий"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#anchor" /></svg></a>
  </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <button class="icon_comment-bookmark " onclick="return comments_add_to_favorite(this)" data-type="3" data-id="6793226" data-action="add" title="Только зарегистрированные пользователи могут добавлять комментарии в избранное" disabled><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg></button>
    </li>


  <li class="inline-list__item inline-list__item_comment-nav hidden js-comment_children">
    <a href="#comment_6793226" class="icon_comment-arrow-down js-comment_parent back_to_children" data-id="6793226" data-parent_id="0" title="Вернуться к ответу"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#rounded-arrow" /></svg></a>
  </li>
</ul>

            <div class="voting-wjt voting-wjt_comments js-comment-vote" data-id="6793226" data-post-target="195806" data-type="3">
    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="plus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-up" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>

    <span class="voting-wjt__counter   js-score" title="Всего голосов 0: &uarr;0 и &darr;0">0</span>

    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="minus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-down" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>
  </div>

        </div>

        <div class="comment__message ">Кстати, а разве функции <b>json_encode</b> <nobr>и <b>json_decode</b></nobr> не взаимно обратимы?<br/>
<br/>
И если они обратимы, то почему бы не использовать (для простоты дела) такое решение, при котором итоги работы <nobr><b>json_encode</b>,</nobr> содержащие <nobr><b>\uXXXX</b>-последовательности,</nobr> скармливаются <nobr>в <b>json_encode</b></nobr> для обратного преобразования?<br/>
<br/>
Я сейчас запустил вот такой тест:<br/>
<br/>
<pre><code class="php">&lt;?php
header('Content-Type: application/json;charset=utf-8');

function prepareUTF8($matches){
   return json_decode('&quot;'.$matches[1].'&quot;');
}

echo preg_replace_callback('/((\\\u[01-9a-fA-F]{4})+)/', 'prepareUTF8',
   json_encode( &quot;Самшит \xf0\x9f\x98\x81&quot; )
);
</code></pre><br/>
Он выдал мне ту строку, которая от него, как я это понимаю, и требовалася. Со смайлом (единственным символом) на конце.<br/>
<br/>
(Я не могу процитировать её тут: ломается Хабрахабр. Серьёзно.)</div>

        <div class="comment__footer">
</div>

        <div class="comment__reply-form js-form_placeholder"></div>
    </div>

    <ul class="content-list content-list_nested-comments content-list_nested-comments-0" id="reply_comments_6793226">  <li class="content-list__item content-list__item_comment js-comment " rel="6793250">
    
    <span class="parent_id" data-parent_id="6793226"></span>
    <div class="comment" id="comment_6793250">
      <span class="comment__collapse" title="Свернуть/развернуть ветку комментариев" data-id="6793250"></span>
        <span class="comment__folding-dotholder"></span>
        <div class="comment__head   " rel="6793250">
          <a href="https://habr.com/ru/users/Mithgol/" class="user-info user-info_inline"  data-user-login="Mithgol">
    <img src="//habrastorage.org/getpro/habr/avatars/45b/a39/080/45ba3908025464c61b3ad3ebcf6aa351.png" class="user-info__image-pic user-info__image-pic_small" width="24" height="24" />
  <span class="user-info__nickname user-info__nickname_small user-info__nickname_comment">Mithgol</span>
</a>

          <svg class="icon_comment-edit" title="Комментарий был изменен" width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#pencil" /></svg>
          <time class="comment__date-time comment__date-time_published">30 сентября 2013 в 21:20</time>
          <ul class="inline-list inline-list_comment-nav">
  <li class="inline-list__item inline-list__item_comment-nav">
    <a href="#comment_6793250" class="icon_comment-anchor" title="Ссылка на комментарий"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#anchor" /></svg></a>
  </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <button class="icon_comment-bookmark " onclick="return comments_add_to_favorite(this)" data-type="3" data-id="6793250" data-action="add" title="Только зарегистрированные пользователи могут добавлять комментарии в избранное" disabled><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg></button>
    </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <span class="icon_comment-branch js-comment_tree" data-id="6793250" data-parent_id="6793226" title="Показать ветку комментариев"><svg width="8" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#tree" /></svg></span>
    </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <a href="#comment_6793226" class="icon_comment-arrow-up js-comment_parent" data-id="6793250" data-parent_id="6793226" title="Показать предыдущий комментарий"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#rounded-arrow" /></svg></a>
    </li>

  <li class="inline-list__item inline-list__item_comment-nav hidden js-comment_children">
    <a href="#comment_6793250" class="icon_comment-arrow-down js-comment_parent back_to_children" data-id="6793250" data-parent_id="6793226" title="Вернуться к ответу"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#rounded-arrow" /></svg></a>
  </li>
</ul>

            <div class="voting-wjt voting-wjt_comments js-comment-vote" data-id="6793250" data-post-target="195806" data-type="3">
    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="plus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-up" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>

    <span class="voting-wjt__counter   js-score" title="Всего голосов 0: &uarr;0 и &darr;0">0</span>

    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="minus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-down" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>
  </div>

        </div>

        <div class="comment__message ">Опечатка. <br/>
<br/>
Вместо «скармливаются <nobr>в <b>json_encode</b></nobr> для обратного преобразования» следует читать «скармливаются <nobr>в <b>json_decode</b></nobr> для обратного преобразования».</div>

        <div class="comment__footer">
</div>

        <div class="comment__reply-form js-form_placeholder"></div>
    </div>

    <ul class="content-list content-list_nested-comments content-list_nested-comments-1" id="reply_comments_6793250">  <li class="content-list__item content-list__item_comment js-comment " rel="6793342">
    
    <span class="parent_id" data-parent_id="6793250"></span>
    <div class="comment" id="comment_6793342">
      <span class="comment__collapse" title="Свернуть/развернуть ветку комментариев" data-id="6793342"></span>
        <span class="comment__folding-dotholder"></span>
        <div class="comment__head comment__head_topic-author  " rel="6793342">
          <a href="#" class="user-info user-info_inline"  data-user-login="eandr_67">
    <img src="//habrastorage.org/getpro/habr/avatars/db3/390/719/db3390719211e43fe22176a2477c8423.jpg" class="user-info__image-pic user-info__image-pic_small" width="24" height="24" />
  <span class="user-info__nickname user-info__nickname_small user-info__nickname_comment">eandr_67</span>
</a>

          
          <time class="comment__date-time comment__date-time_published">30 сентября 2013 в 21:41</time>
          <ul class="inline-list inline-list_comment-nav">
  <li class="inline-list__item inline-list__item_comment-nav">
    <a href="#comment_6793342" class="icon_comment-anchor" title="Ссылка на комментарий"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#anchor" /></svg></a>
  </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <button class="icon_comment-bookmark " onclick="return comments_add_to_favorite(this)" data-type="3" data-id="6793342" data-action="add" title="Только зарегистрированные пользователи могут добавлять комментарии в избранное" disabled><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg></button>
    </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <span class="icon_comment-branch js-comment_tree" data-id="6793342" data-parent_id="6793250" title="Показать ветку комментариев"><svg width="8" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#tree" /></svg></span>
    </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <a href="#comment_6793250" class="icon_comment-arrow-up js-comment_parent" data-id="6793342" data-parent_id="6793250" title="Показать предыдущий комментарий"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#rounded-arrow" /></svg></a>
    </li>

  <li class="inline-list__item inline-list__item_comment-nav hidden js-comment_children">
    <a href="#comment_6793342" class="icon_comment-arrow-down js-comment_parent back_to_children" data-id="6793342" data-parent_id="6793250" title="Вернуться к ответу"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#rounded-arrow" /></svg></a>
  </li>
</ul>

            <div class="voting-wjt voting-wjt_comments js-comment-vote" data-id="6793342" data-post-target="195806" data-type="3">
    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="plus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-up" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>

    <span class="voting-wjt__counter  voting-wjt__counter_negative js-score" title="Всего голосов –2: &uarr;0 и &darr;2">–2</span>

    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="minus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-down" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>
  </div>

        </div>

        <div class="comment__message comment__message_downgrade comment__message_downgrade-2">Остроумно, но ошибочно. Например, если на вход подать <b>'\'&quot;\\'</b>, то на выходе получим <b>'&quot;\'\\&quot;\\\\&quot;'</b>.<br/>
</div>

        <div class="comment__footer">
</div>

        <div class="comment__reply-form js-form_placeholder"></div>
    </div>

    <ul class="content-list content-list_nested-comments content-list_nested-comments-2" id="reply_comments_6793342"></ul>
  </li>
  <li class="content-list__item content-list__item_comment js-comment " rel="6793380">
    
    <span class="parent_id" data-parent_id="6793250"></span>
    <div class="comment" id="comment_6793380">
      <span class="comment__collapse" title="Свернуть/развернуть ветку комментариев" data-id="6793380"></span>
        <span class="comment__folding-dotholder"></span>
        <div class="comment__head comment__head_topic-author  " rel="6793380">
          <a href="#" class="user-info user-info_inline"  data-user-login="eandr_67">
    <img src="//habrastorage.org/getpro/habr/avatars/db3/390/719/db3390719211e43fe22176a2477c8423.jpg" class="user-info__image-pic user-info__image-pic_small" width="24" height="24" />
  <span class="user-info__nickname user-info__nickname_small user-info__nickname_comment">eandr_67</span>
</a>

          
          <time class="comment__date-time comment__date-time_published">30 сентября 2013 в 21:52</time>
          <ul class="inline-list inline-list_comment-nav">
  <li class="inline-list__item inline-list__item_comment-nav">
    <a href="#comment_6793380" class="icon_comment-anchor" title="Ссылка на комментарий"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#anchor" /></svg></a>
  </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <button class="icon_comment-bookmark " onclick="return comments_add_to_favorite(this)" data-type="3" data-id="6793380" data-action="add" title="Только зарегистрированные пользователи могут добавлять комментарии в избранное" disabled><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg></button>
    </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <span class="icon_comment-branch js-comment_tree" data-id="6793380" data-parent_id="6793250" title="Показать ветку комментариев"><svg width="8" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#tree" /></svg></span>
    </li>

    <li class="inline-list__item inline-list__item_comment-nav">
      <a href="#comment_6793250" class="icon_comment-arrow-up js-comment_parent" data-id="6793380" data-parent_id="6793250" title="Показать предыдущий комментарий"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#rounded-arrow" /></svg></a>
    </li>

  <li class="inline-list__item inline-list__item_comment-nav hidden js-comment_children">
    <a href="#comment_6793380" class="icon_comment-arrow-down js-comment_parent back_to_children" data-id="6793380" data-parent_id="6793250" title="Вернуться к ответу"><svg width="12" height="12"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#rounded-arrow" /></svg></a>
  </li>
</ul>

            <div class="voting-wjt voting-wjt_comments js-comment-vote" data-id="6793380" data-post-target="195806" data-type="3">
    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="plus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-up" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>

    <span class="voting-wjt__counter voting-wjt__counter_positive  js-score" title="Всего голосов +1: &uarr;1 и &darr;0">+1</span>

    <button type="button" class="btn voting-wjt__button voting-wjt__button_small " data-action="minus" onclick="comment_vote(this);" title="Голосовать могут только зарегистрированные пользователи" disabled><svg class="icon-svg_arrow-down" width="10" height="16"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#vote-arrow" /></svg></button>
  </div>

        </div>

        <div class="comment__message ">Прошу прощения, похоже, я не прав и именно такой результат должен быть…<br/>
</div>

        <div class="comment__footer">
</div>

        <div class="comment__reply-form js-form_placeholder"></div>
    </div>

    <ul class="content-list content-list_nested-comments content-list_nested-comments-2" id="reply_comments_6793380"></ul>
  </li>
</ul>
  </li>
</ul>
  </li>

      
    </ul>
      <div class="js-form_placeholder">
                <p class="for_users_only_msg">Только&nbsp;<a href="/info/help/registration/">полноправные пользователи</a> могут оставлять комментарии. <a href="https://habr.com/ru/auth/login/">Войдите</a>, пожалуйста.</p>

      </div>
  </div>


  </div>
  <div class="sidebar">
    <div class="sidebar_right sidebar_comments js-sidebar_right">
          

  <div class="js-ad_sticky_comments">
    <div class="default-block">
      <div class="default-block__header">
        <h3 class="default-block__header-title">Что обсуждают</h3>
      </div>

      <div class="default-block__content default-block__content_most-comments" id="broadcast_tabs_comments">
        <ul class="toggle-menu toggle-menu_most-comments">
          <li class="toggle-menu__item">
            <a href="#broadcast_comments_now" class="toggle-menu__item-link active" rel="nofollow">Сейчас</a>
          </li>
          <li class="toggle-menu__item">
            <a href="#broadcast_comments_yesterday" class="toggle-menu__item-link" rel="nofollow">Вчера</a>
          </li>
          <li class="toggle-menu__item">
            <a href="#broadcast_comments_week" class="toggle-menu__item-link" rel="nofollow">Неделя</a>
          </li>
        </ul>

          <div class="tabs__content" id="broadcast_comments_now">
              <ul class="content-list content-list_most-comments" >
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/post/506812/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'now'); }" class="post-info__title">Выбираем канал для точки доступа Wi-Fi. Исчерпывающее руководство</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">37,6k</span>
                    </span>
                    <a href="https://habr.com/ru/post/506812/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">117</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/post/506938/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'now'); }" class="post-info__title">Игры с презентации Sony PlayStation 5</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">4,5k</span>
                    </span>
                    <a href="https://habr.com/ru/post/506938/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">15</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/company/vdsina/blog/507016/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'now'); }" class="post-info__title">Как проще всего перейти с macOS на Linux</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">8,5k</span>
                    </span>
                    <a href="https://habr.com/ru/company/vdsina/blog/507016/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">55</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/post/506456/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'now'); }" class="post-info__title">Принимаем и анализируем радиосигнал платежного терминала с помощью SDR</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">19,7k</span>
                    </span>
                    <a href="https://habr.com/ru/post/506456/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">86</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/news/t/507038/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'now'); }" class="post-info__title">SpaceX ищет инженеров для строительства плавучего космодрома для запуска и посадки Starship и других сверхтяжелых ракет</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">2,8k</span>
                    </span>
                    <a href="https://habr.com/ru/news/t/507038/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">11</span>
                    </a>
                  </div>
                </li>
            </ul>
        </div>
          <div class="tabs__content" id="broadcast_comments_yesterday">
              <ul class="content-list content-list_most-comments" >
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/post/506832/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'yesterday'); }" class="post-info__title">Сколько инструкций процессора использует компилятор?</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">15,8k</span>
                    </span>
                    <a href="https://habr.com/ru/post/506832/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">101</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/post/506896/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'yesterday'); }" class="post-info__title">Самая реалистичная интерпретация квантовой механики</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">11,3k</span>
                    </span>
                    <a href="https://habr.com/ru/post/506896/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">77</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/company/funcorp/blog/506770/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'yesterday'); }" class="post-info__title">Тёмная тема vs Светлая тема: что лучше?</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">12,3k</span>
                    </span>
                    <a href="https://habr.com/ru/company/funcorp/blog/506770/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">68</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/company/vdsina/blog/507016/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'yesterday'); }" class="post-info__title">Как проще всего перейти с macOS на Linux</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">8,5k</span>
                    </span>
                    <a href="https://habr.com/ru/company/vdsina/blog/507016/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">55</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/company/selectel/blog/506864/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'yesterday'); }" class="post-info__title">Грядущий релиз Linux 5.8: миллион строк нового кода и 14 000 изменений</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">31,7k</span>
                    </span>
                    <a href="https://habr.com/ru/company/selectel/blog/506864/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">48</span>
                    </a>
                  </div>
                </li>
            </ul>
        </div>
          <div class="tabs__content" id="broadcast_comments_week">
              <ul class="content-list content-list_most-comments" >
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/post/506598/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'week'); }" class="post-info__title">Microsoft: Rust является 'лучшим шансом' в отрасли программирования безопасных систем</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">26,1k</span>
                    </span>
                    <a href="https://habr.com/ru/post/506598/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">418</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/company/avito/blog/505916/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'week'); }" class="post-info__title">Как Авито выявляет мошенников и борется с фродом</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">25,4k</span>
                    </span>
                    <a href="https://habr.com/ru/company/avito/blog/505916/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">335</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/company/ruvds/blog/506460/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'week'); }" class="post-info__title">Отличия мужского мозга от женского: женщины кодят лучше?</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">34,1k</span>
                    </span>
                    <a href="https://habr.com/ru/company/ruvds/blog/506460/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">290</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/post/506218/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'week'); }" class="post-info__title">Мегафон продолжает вмешиваться в мой HTTP-трафик в 2020 году, отправлять рекламу, даже после получения запретов на это</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">48k</span>
                    </span>
                    <a href="https://habr.com/ru/post/506218/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">258</span>
                    </a>
                  </div>
                </li>
                  <li class="content-list__item content-list__item_devided post-info">
                    <a href="https://habr.com/ru/post/505380/" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'discussions', 'week'); }" class="post-info__title">Слушаю и повинуюсь: рыночная экономика как фактор выгорания педагога</a>

                  <div class="post-info__meta">
                    <span class="post-info__meta-item">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">15,1k</span>
                    </span>
                    <a href="https://habr.com/ru/post/505380/#comments" class="post-info__meta-item" rel="nofollow">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">214</span>
                    </a>
                  </div>
                </li>
            </ul>
        </div>
    </div>
  </div>

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


  <script type="text/javascript">
    var userLabel = 'reader';
  </script>

  


        </div>
      </div>

        <div class="layout__row layout__row_promo-blocks">
          <div class="layout__cell">
            <section class="column-wrapper column-wrapper_bottom column-wrapper_bordered">
  <div class="content_left">
    

  <div class="default-block default-block_content">
    <div class="default-block__header default-block__header_large">
      <h2 class="default-block__header-title default-block__header-title_large">Самое читаемое</h2>
    </div>
    <div class="default-block__content default-block__content_most-read" id="broadcast_tabs_posts">
      <ul class="toggle-menu toggle-menu__most-read">
        <li class="toggle-menu__item">
          <a href="#broadcast_posts_today" class="toggle-menu__item-link active" rel="nofollow">Сутки</a>
        </li>
        <li class="toggle-menu__item">
          <a href="#broadcast_posts_week" class="toggle-menu__item-link" rel="nofollow">Неделя</a>
        </li>
        <li class="toggle-menu__item">
          <a href="#broadcast_posts_month" class="toggle-menu__item-link" rel="nofollow">Месяц</a>
        </li>
      </ul>

        <div class="tabs__content tabs__content_reading" id="broadcast_posts_today">
            <ul class="content-list content-list_most-read">
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/company/selectel/blog/506864/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'today'); }">Грядущий релиз Linux 5.8: миллион строк нового кода и 14 000 изменений</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;42</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">31,7k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">40</span>
                    </span>
                    <a href="https://habr.com/ru/company/selectel/blog/506864/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">48</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/post/506718/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'today'); }">Стеснительная маска, автоматически закрывающаяся при виде людей</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;9</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">26,5k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">20</span>
                    </span>
                    <a href="https://habr.com/ru/post/506718/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">29</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/company/flant/blog/506848/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'today'); }">Почему мы в $ИЗВЕСТНОЙ_КОМПАНИИ перешли на $РАСКРУЧЕННУЮ_ТЕХНОЛОГИЮ</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;86</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">20,2k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">57</span>
                    </span>
                    <a href="https://habr.com/ru/company/flant/blog/506848/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">17</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/post/506832/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'today'); }">Сколько инструкций процессора использует компилятор?</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;77</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">15,8k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">77</span>
                    </span>
                    <a href="https://habr.com/ru/post/506832/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">101</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/news/t/506920/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'today'); }">Все российские школы оборудуют системой «Оруэлл» с функцией распознавания лиц от NtechLab</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;28</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">20,7k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">5</span>
                    </span>
                    <a href="https://habr.com/ru/news/t/506920/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">137</span>
                    </a>
                  </div>
                </li>
            </ul>
        </div>
        <div class="tabs__content tabs__content_reading" id="broadcast_posts_week">
            <ul class="content-list content-list_most-read">
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/post/506218/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'week'); }">Мегафон продолжает вмешиваться в мой HTTP-трафик в 2020 году, отправлять рекламу, даже после получения запретов на это</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;217</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">48k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">145</span>
                    </span>
                    <a href="https://habr.com/ru/post/506218/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">258</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/company/itelma/blog/506396/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'week'); }">Илон Маск: «Лидар это потеря времени. Все, кто полагаются на лидар, обречены»</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;26</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">44,1k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">54</span>
                    </span>
                    <a href="https://habr.com/ru/company/itelma/blog/506396/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">151</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/company/englishdom/blog/506690/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'week'); }">Корпоративный жаргон в США: почему «Good job» в американских компаниях иногда означает «Все фигня, переделывай»</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;53</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">40k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">96</span>
                    </span>
                    <a href="https://habr.com/ru/company/englishdom/blog/506690/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">120</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/company/ruvds/blog/506334/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'week'); }">Что делать, если к твоему хостеру пришли siloviki</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;79</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">39,6k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">121</span>
                    </span>
                    <a href="https://habr.com/ru/company/ruvds/blog/506334/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">108</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/post/506812/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'week'); }">Выбираем канал для точки доступа Wi-Fi. Исчерпывающее руководство</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;85</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">37,6k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">345</span>
                    </span>
                    <a href="https://habr.com/ru/post/506812/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">117</span>
                    </a>
                  </div>
                </li>
            </ul>
        </div>
        <div class="tabs__content tabs__content_reading" id="broadcast_posts_month">
            <ul class="content-list content-list_most-read">
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/company/analogbytes/blog/503552/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'month'); }">ДИТ Москвы при проверке пропуска получает разрешение на отправку рекламы на следующие 10 лет</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;277</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">170k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">186</span>
                    </span>
                    <a href="https://habr.com/ru/company/analogbytes/blog/503552/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">350</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/post/503062/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'month'); }">Реальная стоимость жизни в Кремниевой Долине для разработчика</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;260</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">117k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">352</span>
                    </span>
                    <a href="https://habr.com/ru/post/503062/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">889</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/post/505240/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'month'); }">Тёмная сторона работы в Яндекс.Маркете</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;450</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">116k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">178</span>
                    </span>
                    <a href="https://habr.com/ru/post/505240/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">753</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/post/503932/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'month'); }">Мне надоело, что обычные продавцы выдают себя за разработчиков и позорят индустрию. Они делают мир хуже</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;242</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">105k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">230</span>
                    </span>
                    <a href="https://habr.com/ru/post/503932/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">960</span>
                    </a>
                  </div>
                </li>
                <li class="content-list__item content-list__item_devided post-info">
                  <a href="https://habr.com/ru/post/505576/" class="post-info__title post-info__title_large" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'most_read', 'month'); }">Как живется в США «неайтишникам». Другая сторона</a>
                  <div class="post-info__meta">
                    <span class="post-info__meta-item" title="Рейтинг">
                      <svg class="post-info__meta-icon icon-svg_rating" width="11" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#arrow-bold" /></svg><span class="post-info__meta-counter">&plus;297</span>
                    </span>
                    <span class="post-info__meta-item" title="Количество просмотров">
                      <svg class="post-info__meta-icon icon-svg_views" width="16" height="9"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#eye" /></svg><span class="post-info__meta-counter">95,2k</span>
                    </span>
                    <span class="post-info__meta-item" title="Закладки">
                      <svg class="post-info__meta-icon icon-svg_bookmark-mini" width="8" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#book" /></svg><span class="post-info__meta-counter">308</span>
                    </span>
                    <a href="https://habr.com/ru/post/505576/#comments" class="post-info__meta-item" rel="nofollow" title="Комментарии">
                      <svg class="post-info__meta-icon icon-svg_comments" width="14" height="13"><use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#comment" /></svg><span class="post-info__meta-counter">499</span>
                    </a>
                  </div>
                </li>
            </ul>
        </div>
    </div>
  </div>

  </div>

  <div class="sidebar">
    <div class="sidebar_right">
      <div class="default-block">
  <div class="default-block__header">
    <h2 class="default-block__header-title">Рекомендуем</h2>
      <a href="https://tmtm.ru/megapost" class="default-block__header-link" rel="nofollow" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'megapost_promo', 'order'); }">Разместить</a>
  </div>
  <div class="default-block__content">
    <ul class="megapost-teasers megapost-teasers_sidebar">
        <li class="megapost-teasers__item megapost-teasers__item_sidebar teaser">
          <a href="https://u.tmtm.ru/promohabr_promoblok" target="_blank" class="teaser__image" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'megapost_promo', 'article_pic'); }" rel="nofollow">
            <img src="https://habrastorage.org/webt/pr/bk/5w/prbk5waboaik0diqbhhozberefe.jpeg" class="teaser__image-pic"/>
                <div class="megapost-teasers__label">
                  Промо
                    <img class="megapost-teasers__label-image" src="/images/Union.svg" />
                </div>
          </a>
          <a href="https://u.tmtm.ru/promohabr_promoblok" target="_blank" class="teaser__body" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'megapost_promo', 'article_title'); }" rel="nofollow">
            <h3 class="teaser__body-title">Когда деньги кончились раньше конца карантина, выручит промокод</h3>
          </a>
        </li>
        <li class="megapost-teasers__item megapost-teasers__item_sidebar teaser">
          <a href="https://u.tmtm.ru/camp" target="_blank" class="teaser__image" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'megapost_promo', 'article_pic'); }" rel="nofollow">
            <img src="https://habrastorage.org/getpro/tmtm/pictures/9ef/ff0/a3e/9efff0a3e5202be4f4b25ccebc2a67f4.jpg" class="teaser__image-pic"/>
                <div class="megapost-teasers__label">
                  Интересно
                </div>
          </a>
          <a href="https://u.tmtm.ru/camp" target="_blank" class="teaser__body" onclick="if (typeof ga === 'function') { ga('send', 'event', 'tm_block', 'megapost_promo', 'article_title'); }" rel="nofollow">
            <h3 class="teaser__body-title">ProductCamp сделан по принципу опенсорса, а каждый участник — организатор. Как так?</h3>
          </a>
        </li>
    </ul>
  </div>
</div>

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

          </div>
        </div>

      <div class="layout__row layout__row_footer-links">
        <div class="layout__cell">
          <div class="footer-grid footer-grid_menu">
  <div class="footer-grid__item footer-block">
    <h3 class="footer-block__title">
      Ваш аккаунт
    </h3>
    <div class="footer-block__content">
      <ul class="footer-menu">
          <li class="footer-menu__item">
            <a href="https://habr.com/ru/auth/login/" class="footer-menu__item-link">Войти</a>
          </li>
          <li class="footer-menu__item">
            <a href="https://habr.com/ru/auth/register/" class="footer-menu__item-link">Регистрация</a>
          </li>
      </ul>
    </div>
  </div>

  <div class="footer-grid__item footer-block">
    <h3 class="footer-block__title">Разделы</h3>
    <div class="footer-block__content">
      <ul class="footer-menu">
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/posts/top/" class="footer-menu__item-link">Публикации</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/news/" class="footer-menu__item-link">Новости</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/hubs/" class="footer-menu__item-link">Хабы</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/companies/" class="footer-menu__item-link">Компании</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/users/" class="footer-menu__item-link">Пользователи</a>
        </li>
        <li class="footer-menu__item">
          <a href="#" class="footer-menu__item-link">Песочница</a>
        </li>
      </ul>
    </div>
  </div>

  <div class="footer-grid__item footer-block">
    <h3 class="footer-block__title">Информация</h3>
    <div class="footer-block__content">
      <ul class="footer-menu">
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/docs/help/" class="footer-menu__item-link">Устройство сайта</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/docs/authors/" class="footer-menu__item-link">Для авторов</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/docs/companies/" class="footer-menu__item-link">Для компаний</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/docs/docs/" class="footer-menu__item-link">Документы</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://account.habr.com/info/agreement/?hl=ru_RU" class="footer-menu__item-link">Соглашение</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://account.habr.com/info/confidential/?hl=ru_RU" class="footer-menu__item-link">Конфиденциальность</a>
        </li>
      </ul>
    </div>
  </div>

  <div class="footer-grid__item footer-block">
    <h3 class="footer-block__title">Услуги</h3>
    <div class="footer-block__content">
      <ul class="footer-menu">
        <li class="footer-menu__item">
          <a href="https://tmtm.ru/services/advertising/" target="_blank" class="footer-menu__item-link">Реклама</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://tmtm.ru/services/corpblog/" target="_blank" class="footer-menu__item-link">Тарифы</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://tmtm.ru/services/content/" target="_blank" class="footer-menu__item-link">Контент</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://tmtm.ru/workshops/" target="_blank" class="footer-menu__item-link">Семинары</a>
        </li>
        <li class="footer-menu__item">
          <a href="https://habr.com/ru/megaprojects/" target="_blank" class="footer-menu__item-link">Мегапроекты</a>
        </li>
      </ul>
    </div>
  </div>
</div>

<div class="footer-misprints">
  Если нашли опечатку в&nbsp;посте, выделите ее&nbsp;и&nbsp;нажмите Ctrl+Enter, чтобы сообщить автору.
</div>

        </div>
      </div>

      <div class="layout__row layout__row_footer">
        <div class="layout__cell">
          <script>
  $(document).ready(function () {
    window.voteReasonsList = JSON.parse('{"1":{"id":"1","title":"Низкий технический уровень материала","order":1},"2":{"id":"2","title":"Больше рекламы, чем пользы","order":2},"3":{"id":"3","title":"Не соответствует тематике Хабра","order":3},"4":{"id":"4","title":"В тексте много ошибок и опечаток","order":4},"5":{"id":"5","title":"Пост небрежно оформлен","order":5},"6":{"id":"6","title":"Личная неприязнь к автору или компании","order":6},"7":{"id":"7","title":"В статье нет новой для меня информации","order":7},"8":{"id":"8","title":"Ничего не понял после прочтения","order":8},"9":{"id":"9","title":"Другое","order":9}}');
  });
</script>
<script>

$(document).on('hljsUpdate', function () {
  if (typeof hljs === 'undefined') {
    initHighlightJS();
  } else {
    $('pre code').each(function (i, e) {
      hljs.highlightBlock(e, '    ');
    });
  }
})

function createScript(url) {
  var hljsScript = document.createElement("script");
  hljsScript.src = url;
  hljsScript.type = 'text/javascript';
  document.body.appendChild(hljsScript)

  return hljsScript;
}

function initHighlightJS() {
  if (typeof hljs !== 'undefined') {
    $('pre code').each(function (i, e) {
      hljs.highlightBlock(e, '    ');
    });
    return;
  };

  var hljsScript = createScript('https://dr.habracdn.net/habrcom/javascripts/1592207935/highlight.pack.js');

  hljsScript.onload = function() {
    var hljsLangs = createScript('https://dr.habracdn.net/habrcom/javascripts/1592207935/highlight.langs.js');
    hljsLangs.onload = function () {
      hljs.initHighlighting();
    }
  }
}


var codeElements = document.querySelectorAll('pre code');

if (codeElements.length) {
  initHighlightJS();
}

</script>

<script>

var mathElements = document.getElementsByTagName('math');

function mathJaxConfig() {
  MathJax.Hub.Config({
    showProcessingMessages: false,
    showMathMenu: true,
    tex2jax: {
      inlineMath: [['$inline$','$inline$']],
      displayMath: [['$$display$$','$$display$$']],
      processEscapes: true
    },
    MathMenu: {
      showRenderer: true,
      showContext:  true
    }
  });

  MathJax.Extension.Img2jax = {
    PreProcess: function (element) {
      var hasMath = false;
      var images = element.querySelectorAll('[data-tex]');
      for (var i = images.length - 1; i >= 0; i--) {
        var img = images[i];
        var tex = img.alt.replace(/(\r\n|\n|\r)/gm, " ");
        if (tex && tex[0] === '$'){
          var script = document.createElement("script"); script.type = "math/tex";
          hasMath = true;
          if (img.getAttribute('data-tex') == "display"){script.type += ";mode=display"}
          MathJax.HTML.setScript(script, tex.substring(1,tex.length-1));
          img.parentNode.replaceChild(script,img);
        }
      }
    }
  };

  MathJax.Hub.Register.PreProcessor(["PreProcess", MathJax.Extension.Img2jax]);
}

function mathjaxInit() {
 if (typeof MathJax === 'undefined') {
    var url = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_SVG-full&locale=ru';
    var mathScript = document.createElement("script");
    mathScript.src = url;
    mathScript.type = 'text/javascript';
    document.body.appendChild(mathScript)

    mathScript.onload = function() {
      mathJaxConfig();
    }
  } else {
    mathJaxConfig();
  }
}

if (mathElements.length) {
  mathjaxInit();
}

</script>
<div class="footer-grid footer">
  <div class="footer-grid__item footer-grid__item_copyright">
    <span class="footer__copyright">&copy; 2006 &ndash; 2020 «<a href="https://tmtm.ru/" class="footer__link">TM</a>»</span>
  </div>
    <div class="footer-grid__item footer-grid__item_link footer-grid__item_lang">
      <svg class="icon-svg icon-svg_lang-footer" width="16" height="16">
        <use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#globus-v2" />
      </svg>
      <a href="#" class="footer__link js-show_lang_settings">Настройка языка</a>
    </div>
  <div class="footer-grid__item footer-grid__item_link">
      <a href="https://habr.com/ru/about/" class="footer__link">О сайте</a>
  </div>
  <div class="footer-grid__item footer-grid__item_link">
    <a href="https://habr.com/ru/feedback/" class="footer__link">Служба поддержки</a>
  </div>
  <div class="footer-grid__item footer-grid__item_link">
      <a href="https://m.habr.com/post/195806/?mobile=yes" class="footer__link">Мобильная версия</a>
  </div>

  <div class="footer-grid__item footer-grid__item_social">
    <ul class="social-icons">
      <li class="social-icons__item">
        <a href="https://twitter.com/habr_com"
          class="social-icons__item-link social-icons__item-link_normal social-icons__item-link_twitter"
          target="_blank"
          onclick="if (typeof ga === 'function') { ga('send', 'event', 'footer', 'Social_icons', 'twitter'); }"
        >
          <svg class="icon-svg" aria-hidden="true" aria-labelledby="title" version="1.1" role="img" width="24" height="24" viewBox="0 0 24 24"><path d="M17.414 8.642c-.398.177-.826.296-1.276.35.459-.275.811-.71.977-1.229-.43.254-.905.439-1.41.539-.405-.432-.982-.702-1.621-.702-1.227 0-2.222.994-2.222 2.222 0 .174.019.344.058.506-1.846-.093-3.484-.978-4.579-2.322-.191.328-.301.71-.301 1.117 0 .77.392 1.45.988 1.849-.363-.011-.706-.111-1.006-.278v.028c0 1.077.766 1.974 1.782 2.178-.187.051-.383.078-.586.078-.143 0-.282-.014-.418-.04.282.882 1.103 1.525 2.075 1.542-.76.596-1.718.951-2.759.951-.179 0-.356-.01-.53-.031.983.63 2.15.998 3.406.998 4.086 0 6.321-3.386 6.321-6.321l-.006-.287c.433-.314.81-.705 1.107-1.15z"/></svg>
        </a>
      </li>
      <li class="social-icons__item">
        <a href="https://www.facebook.com/habrahabr.ru"
          class="social-icons__item-link social-icons__item-link_normal social-icons__item-link_facebook"
          target="_blank"
          onclick="if (typeof ga === 'function') { ga('send', 'event', 'footer', 'Social_icons', 'facebook'); }"
        >
          <svg class="icon-svg" aria-hidden="true" aria-labelledby="title" version="1.1" role="img" width="24" height="24" viewBox="0 0 24 24"><path d="M14.889 8.608h-1.65c-.195 0-.413.257-.413.6v1.192h2.063v1.698h-2.063v5.102h-1.948v-5.102h-1.766v-1.698h1.766v-1c0-1.434.995-2.6 2.361-2.6h1.65v1.808z"/></svg>
        </a>
      </li>
        <li class="social-icons__item">
          <a href="https://vk.com/habr"
            class="social-icons__item-link social-icons__item-link_normal social-icons__item-link_vkontakte"
            target="_blank"
            onclick="if (typeof ga === 'function') { ga('send', 'event', 'footer', 'Social_icons', 'vkontakte'); }"
          >
            <svg class="icon-svg" aria-hidden="true" aria-labelledby="title" version="1.1" role="img" width="24" height="24" viewBox="0 0 24 24"><path d="M16.066 11.93s1.62-2.286 1.782-3.037c.054-.268-.064-.418-.343-.418h-1.406c-.322 0-.44.139-.537.343 0 0-.76 1.619-1.685 2.64-.297.33-.448.429-.612.429-.132 0-.193-.11-.193-.408v-2.607c0-.365-.043-.472-.343-.472h-2.254c-.172 0-.279.1-.279.236 0 .343.526.421.526 1.352v1.921c0 .386-.022.537-.204.537-.483 0-1.631-1.663-2.274-3.552-.129-.386-.268-.494-.633-.494h-1.406c-.204 0-.354.139-.354.343 0 .375.44 2.114 2.167 4.442 1.159 1.566 2.683 2.414 4.056 2.414.838 0 1.041-.139 1.041-.494v-1.202c0-.301.118-.429.29-.429.193 0 .534.062 1.33.848.945.901 1.01 1.276 1.525 1.276h1.578c.161 0 .311-.075.311-.343 0-.354-.462-.987-1.17-1.738-.29-.386-.762-.805-.912-.998-.215-.226-.151-.354-.001-.59z"/></svg>
          </a>
        </li>
      <li class="social-icons__item">
        <a href="https://telegram.me/habr_com"
          class="social-icons__item-link social-icons__item-link_normal social-icons__item-link_telegram"
          target="_blank"
          onclick="if (typeof ga === 'function') { ga('send', 'event', 'footer', 'Social_icons', 'telegram'); }"
        >
          <svg class="icon-svg" aria-hidden="true" aria-labelledby="title" version="1.1" role="img" width="24" height="24" viewBox="0 0 24 24"><path d="M17.17 7.621l-10.498 3.699c-.169.059-.206.205-.006.286l2.257.904 1.338.536 6.531-4.796s.189.057.125.126l-4.68 5.062-.27.299.356.192 2.962 1.594c.173.093.397.016.447-.199.058-.254 1.691-7.29 1.728-7.447.047-.204-.087-.328-.291-.256zm-6.922 8.637c0 .147.082.188.197.084l1.694-1.522-1.891-.978v2.416z"/></svg>
        </a>
      </li>
        <li class="social-icons__item">
          <a href="https://www.youtube.com/channel/UCd_sTwKqVrweTt4oAKY5y4w"
            class="social-icons__item-link social-icons__item-link_normal social-icons__item-link_youtube"
            target="_blank"
            onclick="if (typeof ga === 'function') { ga('send', 'event', 'footer', 'Social_icons', 'youtube'); }"
          >
            <svg class="icon-svg" aria-hidden="true" aria-labelledby="title" version="1.1" role="img" width="32" height="32" viewBox="0 0 32 32"><path d="M3.2 0h25.6c1.767 0 3.2 1.433 3.2 3.2v25.6c0 1.767-1.433 3.2-3.2 3.2h-25.6c-1.767 0-3.2-1.433-3.2-3.2v-25.6c0-1.767 1.433-3.2 3.2-3.2zm18.133 16l-10.667-5.333v10.667l10.667-5.333z"/></svg>

          </a>
        </li>
        <li class="social-icons__item">
          <a href="https://zen.yandex.ru/habr"
            class="social-icons__item-link social-icons__item-link_normal social-icons__item-link_zen"
            target="_blank"
            onclick="if (typeof ga === 'function') { ga('send', 'event', 'footer', 'Social_icons', 'zen'); }"
          >
            <svg xmlns="http://www.w3.org/2000/svg" class="icon-svg" width="32" height="32" viewBox="0 0 32 32"><path fill="#f00" d="M3.2 0h25.6c1.767 0 3.2 1.433 3.2 3.2v25.6c0 1.767-1.433 3.2-3.2 3.2h-25.6c-1.767 0-3.2-1.433-3.2-3.2v-25.6c0-1.767 1.433-3.2 3.2-3.2z"/><path fill="#d00000" d="M13.661 32h-6.157l12.409-9.537 2.44 2.811-8.693 6.726zm3.782-32h5.883l-10.515 8.777-2.44-2.811 7.072-5.966z"/><path fill="#f8b3b2" d="M10.4 17.879l9.474-7.314 2.441 2.812-9.475 7.314z"/><path fill="#fff" d="M10.417 5.954l11.909 3.897v3.543l-11.909-3.897v-3.543zm0 11.909l11.909 3.897v3.543l-11.909-3.897v-3.543z"/></svg>

          </a>
        </li>
    </ul>
  </div>
</div>

        </div>
      </div>

      <a href="#" class="layout__elevator hidden" id="scroll_to_top" title="Наверх"  onclick="if (typeof ga === 'function') { ga('send', 'event', 'navigation_button', 'down'); }">
        <svg class="icon-svg icon-svg_scroll-up" width="32" height="32" viewBox="0 0 32 32" aria-hidden="true" version="1.1" role="img"><path d="M16 0C7.164 0 0 7.164 0 16s7.164 16 16 16 16-7.164 16-16S24.836 0 16 0zm8.412 19.523c-.517.512-1.355.512-1.872 0L16 13.516l-6.54 6.01c-.518.51-1.356.51-1.873 0-.516-.513-.517-1.343 0-1.855l7.476-7.326c.517-.512 1.356-.512 1.873 0l7.476 7.327c.516.513.516 1.342 0 1.854z"/></svg>
      </a>
    </div>

    <div class="overlay hidden" id="js-lang_settings">
  <div class="popup">
    <div class="popup__head popup__head_lang-settings">
      <span class="popup__head-title js-popup_title" data-section="1">Настройка языка</span>
      <button type="button" class="btn btn_small btn_popup-close js-hide_lang_settings">
        <svg class="icon-svg" width="12" height="12">
          <use xlink:href="https://habr.com/images/1592207935/common-svg-sprite.svg#close" />
        </svg>
      </button>
    </div>
    <div class="popup__body">
      <form action="/json/settings/i18n/" method="post" class="form form_lang-settings" id="lang-settings-form">
        <fieldset class="form__fieldset form__fieldset_thin" data-section="2">
          <legend class="form__legend form__legend_lang-settings js-popup_hl_legend">Интерфейс</legend>
            <div class="form-field form-field_lang-settings">
              <span class="radio radio_custom ">
                <input type="radio" name="hl" id="hl_langs_ru" class="radio__input js-hl_langs" value="ru" checked>
                <label for="hl_langs_ru" class="radio__label radio__label_another">Русский</label>
              </span>
            </div>
            <div class="form-field form-field_lang-settings">
              <span class="radio radio_custom ">
                <input type="radio" name="hl" id="hl_langs_en" class="radio__input js-hl_langs" value="en" >
                <label for="hl_langs_en" class="radio__label radio__label_another">English</label>
              </span>
            </div>
        </fieldset>

        <fieldset class="form__fieldset form__fieldset_thin">
          <legend class="form__legend form__legend_lang-settings js-popup_fl_legend" data-section="3">Язык публикаций</legend>
            <div class="form-field form-field_lang-settings">
              <span class="checkbox checkbox_custom">
                <input type="checkbox" name="fl[]" id="fl_langs_ru" class="checkbox__input js-fl_langs" value="ru" checked>
                <label for="fl_langs_ru" class="checkbox__label checkbox__label_another js-popup_feed_ru">Русский</label>
              </span>
            </div>
            <div class="form-field form-field_lang-settings">
              <span class="checkbox checkbox_custom">
                <input type="checkbox" name="fl[]" id="fl_langs_en" class="checkbox__input js-fl_langs" value="en" >
                <label for="fl_langs_en" class="checkbox__label checkbox__label_another js-popup_feed_en">Английский</label>
              </span>
            </div>
        </fieldset>

        <div class="form__footer form__footer_lang-settings">
          <button type="submit" class="btn btn_blue btn_huge btn_full-width js-popup_save_btn">Сохранить настройки</button>
        </div>
      </form>
    </div>
  </div>
</div>



    <script type="text/javascript">
  // global vars
  var g_base_url = 'habr.com/ru';
  var g_base_fullurl = 'https://habr.com/ru/';
  var g_tmid_fullurl = 'https://account.habr.com/';
  var g_is_guest = false;
  var g_show_xpanel = false;
  var g_is_enableShortcuts = '1';
  var g_is_ugc_post = '1';
  var g_is_company_post = '';
    var g_current_hl = 'ru';
    var g_current_fl = 'ru';

</script>

    <script src="https://dr.habracdn.net/habrcom/javascripts/1592207935/vendors.bundle.js"></script>
    <script src="https://dr.habracdn.net/habrcom/javascripts/1592207935/main.bundle.js"></script>
      <script src="https://hsto.org/getpro/neuro-habr/1.0.0/neuro-habr.js"></script>

<script>
if (window.fetch) {
  var nh = window.neuroHabr;
    nh.init('https://habr.neuron.digital');

  var articleId = 195806;

  if (articleId) {
    nh.send('view', articleId);
  }

  var nhState = {
    viewTime: 0,
    interval: null,
    scrolledDown: false,
    likeSent: false,
  };

  var hidden;
  var visibilityChange;

  if (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support
    hidden = 'hidden';
    visibilityChange = 'visibilitychange';
  } else if (typeof document.msHidden !== 'undefined') {
    hidden = 'msHidden';
    visibilityChange = 'msvisibilitychange';
  } else if (typeof document.webkitHidden !== 'undefined') {
    hidden = 'webkitHidden';
    visibilityChange = 'webkitvisibilitychange';
  }


  var articleBody = document.querySelector('.post__body') || document.querySelector('.article__body');

  if (articleBody) {
    var MINIMUM_ARTICLE_READ_SECONDS = 10;

    var isInViewport = function(e) {
      var b = e.getBoundingClientRect();
      return b.top <= window.innerHeight && b.top + b.height >= 0;
    };

    var isAtTheEnd = function(e) {
      return e.getBoundingClientRect().bottom - window.innerHeight <= 0;
    };

    var hasReadArticle = function() {
      return nhState.scrolledDown && nhState.viewTime >= MINIMUM_ARTICLE_READ_SECONDS;
    };

    function incrementViewTime(e) {
      if (!nhState.likeSent && !nhState.interval) {
        nhState.interval = setInterval(() => {
          if (hasReadArticle()) {
            if (!nhState.likeSent) {
              nhState.likeSent = true;
              nh.send('like', articleId);
            }
            clearInterval(nhState.interval);
            nhState.interval = null;
          } else if (isInViewport(e)) {
            nhState.viewTime += 2;
          }
        }, 2000);
      }
    };

    incrementViewTime(articleBody);

    if (typeof document.addEventListener !== 'undefined' && hidden !== undefined) {
      document.addEventListener(visibilityChange, () => {
        if (!hasReadArticle() && !nhState.likeSent) {
          if (document[hidden]) {
            clearInterval(nhState.interval);
            nhState.interval = null;
          } else {
            incrementViewTime(articleBody);
          }
        }
      });

      document.addEventListener('scroll', () => {
        if (!nhState.scrolledDown) {
          if (isAtTheEnd(articleBody)) {
            nhState.scrolledDown = true;
          }
        }
      });
    } else {
      nhState.scrolledDown = true;
    }
  }
}


</script>


      <script src="https://dr.habracdn.net/habrcom/javascripts/1592207935/check-login.js"></script>

      <script type="text/javascript" src="https://habr.com/ru/viewcount/post/195806/"></script>

    
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(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();
  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(24049213, "init", {
      clickmap:true,
      trackLinks:true,
      accurateTrackBounce:true,
      webvisor:true
    });
</script>
<noscript>
  <div>
      <img src="https://mc.yandex.ru/watch/24049213" style="position:absolute; left:-9999px;" alt="" />
  </div>
</noscript>
<!-- /Yandex.Metrika counter -->

    <script type="text/javascript">
  function stripUrl(currentUrl, queryParam) {
   return currentUrl.replace(/\?([^#]*)/, function(_, search) {
      var result = search.split('&').map(function(param) {
        var regexp = new RegExp(`^${queryParam}`);
        if (regexp.test(param)) {
          return '';
        }
        return param;
      }).filter(Boolean).join('&');
      return result ? '?' + result : '';
    });
  }

  (function() {
    if (location.search.indexOf('cv') != -1 && history.replaceState) {
      var currentUrl = location.toString();
      var strippedUrl = stripUrl(currentUrl, 'cv');
      history.replaceState({}, '', strippedUrl);
    }
  })();

  function callGA(usesABP) {
    if (typeof window.adb1 === 'undefined') { window.adb1 = 'yes';}
    if (usesABP) { window.adb1 = 'aa'; }

    var user_type = 'guest';

    var page_type = "publish_ugc_ru,h_260,f_develop";

    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-726094-1',  'auto');
        ga('create', 'UA-726094-24', 'auto', {'name': 'HGM', 'allowLinker': true});

    ga('HGM.require', 'linker');
    ga('HGM.linker:autoLink', ['toster.ru', 'habr.com', 'account.habr.com', 'm.habr.com']);

    ga('require', 'displayfeatures');
    ga('set', 'dimension1', user_type); // user type - guest/readonly/habrauser
    ga('set', 'dimension2', page_type);
    ga('set', 'dimension3', 'na');
    ga('set', 'dimension4', window.adb1);
    ga('set', 'dimension6', 'ru');
    ga('set', 'dimension7', 'A');


    (function() {
      var removeUtms = function(){
        var location = window.location;
        if (location.search.indexOf('utm_') != -1 && history.replaceState) {
          var currentUrl = location.toString();
          var strippedUrl = stripUrl(currentUrl, 'utm_');
          history.replaceState({}, '', strippedUrl);
        }
      };
      ga('require', 'GTM-559GVC8');
      ga('send', 'pageview', { 'hitCallback': removeUtms });
    })();

    ga('HGM.set', 'dimension1', user_type);
    ga('HGM.set', 'dimension2', "habrahabr");
    ga('HGM.set', 'dimension4', window.adb1);

    ga('HGM.send', 'pageview');
  }


  if (window.habr_blockers_checker) {
    window.habr_blockers_checker.detectWrapper(callGA);
  } else {
    callGA(false)
  }

</script>

    <!-- Facebook Pixel Code -->
<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=317458588730613&ev=PageView&noscript=1"/>
<!-- End Facebook Pixel Code -->

    <img src="https://vk.com/rtrg?p=VK-RTRG-421343-57vKE" style="position:fixed; left:-999px;" alt=""/>
    
  </body>
</html>