habr.com_ru_yandex.rss.xml - sfeed_tests - sfeed tests and RSS and Atom files
 (HTM) git clone git://git.codemadness.org/sfeed_tests
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       habr.com_ru_yandex.rss.xml (67309B)
       ---
            1 <?xml version="1.0" encoding="UTF-8"?>
            2 <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"  >
            3   <channel>
            4     <title>Яндекс - Как мы делаем Яндекс / Статьи</title>
            5     <link>https://habr.com/ru/company/yandex/blog/</link>
            6     <description><![CDATA[1 780 статей от авторов компании Яндекс]]></description>
            7     <language>ru</language>
            8     <managingEditor>editor@habr.com</managingEditor>
            9     <generator>habr.com</generator>
           10     <pubDate>Fri, 24 Jun 2022 08:51:23 GMT</pubDate>
           11     
           12       <image>
           13         <link>https://habr.com/ru/</link>
           14         <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
           15         <title>Хабр</title>
           16       </image>
           17 
           18               <item>
           19       <title><![CDATA[Яндекс выложил YaLM 100B — сейчас это крупнейшая GPT-подобная нейросеть в свободном доступе. Вот как удалось её обучить]]></title>
           20       <guid isPermaLink="true">https://habr.com/ru/post/672396/</guid>
           21       <link>https://habr.com/ru/post/672396/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
           22       <description><![CDATA[<img src="https://habrastorage.org/webt/ts/ia/1n/tsia1nfjftapykyt4ywqvegkwe4.png"><br>
           23 <sup>Больше примеров — <a href="https://habr.com/ru/company/yandex/blog/672396/#examples">в конце</a> поста</sup><br>
           24 <br>
           25 В последние годы большие языковые модели на архитектуре трансформеров стали вершиной развития нейросетей в задачах NLP. С каждым месяцем они становятся всё больше и сложнее. Чтобы обучить подобные модели, уже сейчас требуются миллионы долларов, лучшие специалисты и годы разработки. В результате доступ к современным технологиям остался лишь у крупнейших IT-компаний. При этом у исследователей и разработчиков со всего мира есть потребность в доступе к таким решениям. Без новых исследований развитие технологий неизбежно снизит темпы. Единственный способ избежать этого — делиться с сообществом своими наработками. <br>
           26 <br>
           27 Год назад мы впервые <a href="https://habr.com/ru/company/yandex/blog/561924/">рассказали</a> Хабру о семействе языковых моделей YaLM и их применении в Алисе и Поиске. Сегодня мы выложили в свободный доступ нашу самую большую модель YaLM на 100 млрд параметров. Она обучалась 65 дней на 1,7 ТБ текстов из интернета, книг и множества других источников с помощью 800 видеокарт A100. Модель и дополнительные материалы <a href="https://github.com/yandex/YaLM-100B" rel="nofollow noopener noreferrer">опубликованы на Гитхабе</a> под лицензией Apache 2.0, которая допускает применение как в исследовательских, так и в коммерческих проектах. Сейчас это самая большая в мире GPT-подобная нейросеть в свободном доступе как для английского, так и для русского языков.<br>
           28  <br>
           29 В этой статье мы поделимся не только моделью, но и нашим опытом её обучения. Может показаться, что если у вас уже есть суперкомпьютер, то с обучением больших моделей никаких проблем не возникнет. К сожалению, это заблуждение. Под катом мы расскажем о том, как смогли обучить языковую модель такого размера. Вы узнаете, как удалось добиться стабильности обучения и при этом ускорить его в два раза. Кстати, многое из того, что будет описано ниже, может быть полезно при обучении нейросетей любого размера.<br> <a href="https://habr.com/ru/post/672396/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
           30       
           31       <pubDate>Thu, 23 Jun 2022 07:59:03 GMT</pubDate>
           32       <dc:creator>MichaelEk</dc:creator>
           33       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Open source]]></category><category><![CDATA[Алгоритмы]]></category><category><![CDATA[Машинное обучение]]></category><category><![CDATA[Natural Language Processing]]></category>
           34       <category><![CDATA[gpt-3]]></category><category><![CDATA[yalm]]></category><category><![CDATA[обработка изображений]]></category><category><![CDATA[модели анализа текстов]]></category>
           35     </item>
           36 
           37 
           38 
           39 
           40 
           41 
           42 
           43       <item>
           44       <title><![CDATA[Как Яндекс Карты с помощью отзывов улучшают поиск организаций]]></title>
           45       <guid isPermaLink="true">https://habr.com/ru/post/671504/</guid>
           46       <link>https://habr.com/ru/post/671504/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
           47       <description><![CDATA[<img src="https://habrastorage.org/webt/4g/eq/mz/4geqmzvgr50wxv0tccxnbslspuk.jpeg"><br>
           48 <br>
           49 Раньше Карты, Поиск и Алиса отвечали на запросы об организациях, во многом основываясь на данных от самих организаций. Это был нормальный компромисс, но всегда можно сделать лучше. <br>
           50 <br>
           51 Теперь учитываются ещё и реальные отзывы людей. Тем самым запросы, по которым раньше выдача была менее релевантной, обрабатываются качественнее, и мы можем решить больше пользовательских задач. Давайте расскажу, как мы к этому шли, и покажу примеры. <br> <a href="https://habr.com/ru/post/671504/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
           52       
           53       <pubDate>Thu, 16 Jun 2022 07:53:11 GMT</pubDate>
           54       <dc:creator>danilchenkoandrey</dc:creator>
           55       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Поисковые технологии]]></category><category><![CDATA[Алгоритмы]]></category><category><![CDATA[Геоинформационные сервисы]]></category><category><![CDATA[Машинное обучение]]></category>
           56       <category><![CDATA[отзывы]]></category><category><![CDATA[отзывы о компаниях]]></category><category><![CDATA[геопоиск]]></category>
           57     </item>
           58 
           59 
           60 
           61 
           62 
           63 
           64 
           65       <item>
           66       <title><![CDATA[Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки]]></title>
           67       <guid isPermaLink="true">https://habr.com/ru/post/671236/</guid>
           68       <link>https://habr.com/ru/post/671236/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
           69       <description><![CDATA[<img src="https://habrastorage.org/webt/c1/j6/qx/c1j6qxwalh-xtd54yac9gzvqxzq.jpeg"><br>
           70 <br>
           71 Однажды ты просыпаешься и понимаешь: избыточность компонентов и рассинхронизация в твоём приложении начинают вредить пользователям. Однажды ты смотришь на написанное давным-давно ядро, плачешь горькими слезами, и приходит это некомфортное, но вместе с тем немного соблазнительное ощущение — что рефакторинг назрел. Добро пожаловать на экскурсию по рефакторингу Музыки, начиная с ресёрча и заканчивая эксплуатацией! Я покажу вам реальный код и постараюсь в деталях вспомнить, как мы формировали требования к механизмам и разрабатывали их, рисовали у себя в голове и в коде границы ядра, по одной переделывали очереди и внедряли то, что получилось, в SDK.<br> <a href="https://habr.com/ru/post/671236/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
           72       
           73       <pubDate>Wed, 15 Jun 2022 07:56:44 GMT</pubDate>
           74       <dc:creator>Rugged</dc:creator>
           75       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Проектирование и рефакторинг]]></category><category><![CDATA[Разработка под Android]]></category><category><![CDATA[Kotlin]]></category>
           76       <category><![CDATA[яндекс музыка]]></category><category><![CDATA[рефакторинг]]></category>
           77     </item>
           78 
           79 
           80 
           81 
           82 
           83 
           84 
           85       <item>
           86       <title><![CDATA[Yandex Planner. Как планировать вычислительные мощности]]></title>
           87       <guid isPermaLink="true">https://habr.com/ru/post/564510/</guid>
           88       <link>https://habr.com/ru/post/564510/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
           89       <description><![CDATA[<img src="https://habrastorage.org/webt/p5/su/nb/p5sunbyggewh4hfebubjmn3e8jq.jpeg"><br>
           90 <br>
           91 Серверные вычислительные ресурсы распределяются между большинством сервисов Яндекса централизованно. Тем самым все команды — и существующие давно, и собранные вокруг небольших экспериментов — получают мощности, которые им необходимы, чтобы сервис бесперебойно и быстро работал у всех пользователей. Однако этим распределением нужно управлять. <br>
           92 <br>
           93 Меня зовут Сергей Фомин, я разработчик Yandex Planner. Мой пост будет посвящён тому, как мы эффективно решаем задачу планирования вычислительных мощностей. <br>
           94 <br>
           95 Сначала я расскажу, что такое Yandex Planner и почему мы решили писать своё решение. После этого мы поговорим про то, в чём заключается задача планирования, почему она не такая простая, как может показаться на первый взгляд. И в качестве одного из способов решения задачи мы рассмотрим дефрагментацию ресурсов. Поехали. <br> <a href="https://habr.com/ru/post/564510/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
           96       
           97       <pubDate>Tue, 07 Jun 2022 07:52:20 GMT</pubDate>
           98       <dc:creator>sergio42</dc:creator>
           99       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Высокая производительность]]></category><category><![CDATA[Анализ и проектирование систем]]></category><category><![CDATA[Серверная оптимизация]]></category><category><![CDATA[Распределённые системы]]></category>
          100       <category><![CDATA[планирование ресурсов]]></category><category><![CDATA[управление ресурсами]]></category><category><![CDATA[инфраструктура]]></category><category><![CDATA[бэкенд]]></category><category><![CDATA[devtools]]></category>
          101     </item>
          102 
          103 
          104 
          105 
          106 
          107 
          108 
          109       <item>
          110       <title><![CDATA[Память в браузерах и в Node.js: ограничения, утечки и нестандартные оптимизации]]></title>
          111       <guid isPermaLink="true">https://habr.com/ru/post/666870/</guid>
          112       <link>https://habr.com/ru/post/666870/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          113       <description><![CDATA[<h2 id="intro-pochemu-ya-napisal-etu-statyu">Интро: почему я написал эту статью</h2><br>
          114 <p>Меня зовут Виктор, я разрабатываю страницу результатов поиска Яндекса. Несмотря на внешнюю простоту, поисковая выдача — сложная штука: на каждый запрос генерируется своя уникальная страница, на которой в зависимости от запроса может присутствовать блок Картинок, Карты, Переводчик, видеоплеер и многие другие компоненты. Все они должны запускаться и работать в памяти обычных бюджетных телефонов, которые использует большинство наших пользователей. Браузерам должно хватать ресурсов, чтобы пользователь не видел вот такого:</p><br>
          115 <p><img src="https://habrastorage.org/webt/wp/li/dm/wplidmelkxo8hx1qxxu0vb71ask.jpeg"></p><br>
          116 <p>На своих серверах мы должны генерировать сотни миллионов уникальных страниц в сутки — это сложнее, чем просто отдавать одни и те же ресурсы. Генерация страницы не должна быть слишком требовательной к памяти сервера.</p><br>
          117 <p>Разрабатывая проект на JavaScript (TypeScript, ClojureScript или каком-то другом языке, транслируемом в JavaScript), мы привыкли создавать объекты, массивы, строки и вообще писать код, как будто память бесконечна. Это не так. Я расскажу о видах проблем с памятью, о том, какие ограничения мы часто забываем и как их можно преодолеть. В ответ браузеры и пользователи скажут вам спасибо.</p><br>
          118 <ul>
          119 <li><a href="https://habr.com/ru/company/yandex/blog/666870/#1">Категории проблем с памятью</a></li>
          120 <li><a href="https://habr.com/ru/company/yandex/blog/666870/#2">Ограничения по памяти для разных типов данных</a><br>
          121  <a href="https://habr.com/ru/company/yandex/blog/666870/#21">Heap</a><br>
          122  <a href="https://habr.com/ru/company/yandex/blog/666870/#22">Buffer, TypedArray</a><br>
          123  <a href="https://habr.com/ru/company/yandex/blog/666870/#23">String</a><br>
          124  <a href="https://habr.com/ru/company/yandex/blog/666870/#24">Map, Set</a><br>
          125  <a href="https://habr.com/ru/company/yandex/blog/666870/#25">Call stack</a><br>
          126  <a href="https://habr.com/ru/company/yandex/blog/666870/#26">Типичные задачи, в которых можно наткнуться на ограничения по памяти</a></li>
          127 <li><a href="https://habr.com/ru/company/yandex/blog/666870/#3">Soft-утечки</a><br>
          128  <a href="https://habr.com/ru/company/yandex/blog/666870/#31">Пример из продакшена</a><br>
          129  <a href="https://habr.com/ru/company/yandex/blog/666870/#32">Как получаются soft-утечки </a><br>
          130  <a href="https://habr.com/ru/company/yandex/blog/666870/#33">Как их обнаружить</a><br>
          131  <a href="https://habr.com/ru/company/yandex/blog/666870/#34">Как найти причину</a><br>
          132   <a href="https://habr.com/ru/company/yandex/blog/666870/#341">1. Memory Allocation Timeline</a><br>
          133   <a href="https://habr.com/ru/company/yandex/blog/666870/#342">2. Техника трёх снапшотов</a><br>
          134   <a href="https://habr.com/ru/company/yandex/blog/666870/#343">3. queryObjects</a><br>
          135   <a href="https://habr.com/ru/company/yandex/blog/666870/#344">Тренируемся находить утечки</a></li>
          136 <li><a href="https://habr.com/ru/company/yandex/blog/666870/#4">Hard-утечки</a><br>
          137  <a href="https://habr.com/ru/company/yandex/blog/666870/#41">Пример из продакшена</a><br>
          138  <a href="https://habr.com/ru/company/yandex/blog/666870/#42">Как бороться</a></li>
          139 <li><a href="https://habr.com/ru/company/yandex/blog/666870/#5">Нестандартные оптимизации памяти в Node.js</a><br>
          140  <a href="https://habr.com/ru/company/yandex/blog/666870/#51">Исходный код</a><br>
          141  <a href="https://habr.com/ru/company/yandex/blog/666870/#52">Module._pathCache</a><br>
          142  <a href="https://habr.com/ru/company/yandex/blog/666870/#53">Несколько версий пакета в node_modules</a><br>
          143  <a href="https://habr.com/ru/company/yandex/blog/666870/#54">require('./data.json')</a></li>
          144 <li><a href="https://habr.com/ru/company/yandex/blog/666870/#6">Заключение</a></li>
          145 </ul> <a href="https://habr.com/ru/post/666870/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          146       
          147       <pubDate>Thu, 02 Jun 2022 07:56:33 GMT</pubDate>
          148       <dc:creator>victor-homyakov</dc:creator>
          149       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Разработка веб-сайтов]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Интерфейсы]]></category><category><![CDATA[Node.JS]]></category>
          150       <category><![CDATA[управление памятью]]></category><category><![CDATA[утечки памяти]]></category><category><![CDATA[нехватка памяти]]></category><category><![CDATA[клиентская оптимизация]]></category><category><![CDATA[серверная оптимизация]]></category>
          151     </item>
          152 
          153 
          154 
          155 
          156 
          157 
          158 
          159       <item>
          160       <title><![CDATA[Станция 2. Истории разработки одного из самых сложных устройств Яндекса]]></title>
          161       <guid isPermaLink="true">https://habr.com/ru/post/668660/</guid>
          162       <link>https://habr.com/ru/post/668660/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          163       <description><![CDATA[<img src="https://habrastorage.org/webt/kv/7f/s1/kv7fs1htgeubwsgbpyobpr91dzk.jpeg"><br>
          164 <br>
          165 Сегодня стартуют продажи Яндекс Станции 2 — нашего новейшего устройства, которое станет центральным элементом в умном доме с Алисой. Мы полностью переосмыслили и внутренний, и внешний дизайн, добавили световой экран на верхней панели и постарались учесть опыт предыдущего поколения во множестве незаметных с первого взгляда компонентов.<br>
          166 <br>
          167 Я хочу поделиться нашей внутренней кухней в формате, который уже стал традиционным для хабрастатей о новых Станциях. Это снова будут несколько историй про разные аспекты hardware-разработки: поговорим об исследованиях формы комнаты микрофонами, распространении света в прозрачном материале, а ещё о генеративных анимациях и неожиданной пользе от ПЛИС.<br> <a href="https://habr.com/ru/post/668660/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          168       
          169       <pubDate>Tue, 31 May 2022 07:28:52 GMT</pubDate>
          170       <dc:creator>Leono</dc:creator>
          171       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Производство и разработка электроники]]></category><category><![CDATA[Гаджеты]]></category><category><![CDATA[Компьютерное железо]]></category><category><![CDATA[Звук]]></category>
          172       <category><![CDATA[яндекс]]></category><category><![CDATA[умные колонки]]></category><category><![CDATA[команда алисы]]></category><category><![CDATA[яндекс станция]]></category>
          173     </item>
          174 
          175 
          176 
          177 
          178 
          179 
          180 
          181       <item>
          182       <title><![CDATA[Про поддержку Certificate Transparency для национальных сертификатов]]></title>
          183       <guid isPermaLink="true">https://habr.com/ru/post/667300/</guid>
          184       <link>https://habr.com/ru/post/667300/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          185       <description><![CDATA[<p>Недавно мы рассказывали Хабру про поддержку в Яндекс Браузере тех сайтов, которые перешли на использование национальных TLS-сертификатов. Если вы пропустили, то рекомендуем <a href="https://habr.com/ru/company/yandex/blog/655185/"><u>прочитать</u></a> пост, он содержит ответы на популярные вопросы.&nbsp;&nbsp;</p><p>Сегодня мы расскажем про следующий большой шаг в этом направлении — про обещанную поддержку публичных логов, созданных на базе открытого стандарта Certificate Transparency.</p> <a href="https://habr.com/ru/post/667300/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать далее</a>]]></description>
          186       
          187       <pubDate>Mon, 23 May 2022 11:29:34 GMT</pubDate>
          188       <dc:creator>ironpeter</dc:creator>
          189       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Информационная безопасность]]></category><category><![CDATA[Разработка веб-сайтов]]></category><category><![CDATA[Браузеры]]></category><category><![CDATA[IT-компании]]></category>
          190       <category><![CDATA[яндекс]]></category><category><![CDATA[сертификаты]]></category><category><![CDATA[ssl]]></category><category><![CDATA[tls]]></category><category><![CDATA[безопасность]]></category><category><![CDATA[certificate transparency]]></category>
          191     </item>
          192 
          193 
          194 
          195 
          196 
          197 
          198 
          199       <item>
          200       <title><![CDATA[Находим главное в отзывах. Опыт разработчиков геопоиска Яндекса]]></title>
          201       <guid isPermaLink="true">https://habr.com/ru/post/665132/</guid>
          202       <link>https://habr.com/ru/post/665132/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          203       <description><![CDATA[<img src="https://habrastorage.org/webt/tc/rs/lk/tcrslkb4iqhzxup_i-aylbmjqns.jpeg"><br>
          204 <br>
          205 Существует классический способ выбрать, в какое кафе сходить или в какую организацию обратиться: достаточно почитать отзывы (которые, конечно, должны быть защищены от ботов). И такой способ правда популярен — в том числе, уверен, и среди читателей этого поста.<br>
          206 <br>
          207 Для тех, кому важно выбрать быстрее, существует топ отзывов, а также рейтинг заведения. Но в случае с топом по-прежнему нужно вчитываться в мнения людей, а рейтинг скрывает за собой множество деталей — непонятно, учитывает ли он нюансы про еду, обслуживание, спектр услуг и так далее. <br>
          208 <br>
          209 Мы поняли, что нужно учиться систематизировать отзывы и выделять главное. Этот пост — про то, как мы стремились состыковать интересы пользователей с доступными нам технологиями в машинном обучении и на фронтенде. Рассказывать буду достаточно подробно, чтобы вы прошли этот путь вместе со мной и увидели все пробы и ошибки. Возможно, по дороге у вас возникнут свои мысли о том, как можно решать подобную задачу.<br> <a href="https://habr.com/ru/post/665132/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          210       
          211       <pubDate>Wed, 18 May 2022 07:58:06 GMT</pubDate>
          212       <dc:creator>aim110</dc:creator>
          213       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Интерфейсы]]></category><category><![CDATA[Геоинформационные сервисы]]></category><category><![CDATA[Машинное обучение]]></category><category><![CDATA[Natural Language Processing]]></category>
          214       <category><![CDATA[отзывы]]></category><category><![CDATA[отзывы о компаниях]]></category>
          215     </item>
          216 
          217 
          218 
          219 
          220 
          221 
          222 
          223       <item>
          224       <title><![CDATA[Гайд по написанию и рефакторингу компонентов, которые хочется переиспользовать]]></title>
          225       <guid isPermaLink="true">https://habr.com/ru/post/662826/</guid>
          226       <link>https://habr.com/ru/post/662826/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          227       <description><![CDATA[<img src="https://habrastorage.org/webt/so/ta/qi/sotaqiwk-bcmkriabdlnt4cgarc.jpeg" align="right" width="25%">Случалось ли вам, выполняя какую-то задачу, понять, что самый простой путь — нажать Сtrl+C, Сtrl+V: перетащить из соседней папочки пару файлов, поменять пару строчек, и будет ок? Повторялось ли это ощущение? Я хочу рассказать о том, как боролся с этой проблемой и к чему пришёл вместе с командой. Назовём это решение «универсальные компоненты» (если у кого-то будет более удачное название для концепции, жду в коментариях). Примеры буду приводить в основном на React, но концепции будут общие. <br> <a href="https://habr.com/ru/post/662826/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          228       
          229       <pubDate>Tue, 26 Apr 2022 08:01:43 GMT</pubDate>
          230       <dc:creator>roaming-light</dc:creator>
          231       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Разработка веб-сайтов]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Интерфейсы]]></category><category><![CDATA[ReactJS]]></category>
          232       <category><![CDATA[компоненты]]></category><category><![CDATA[переиспользуемые компоненты]]></category><category><![CDATA[архитектура фронтенда]]></category>
          233     </item>
          234 
          235 
          236 
          237 
          238 
          239 
          240 
          241       <item>
          242       <title><![CDATA[Почему GPU обманывают о своей нагрузке и как с этим бороться]]></title>
          243       <guid isPermaLink="true">https://habr.com/ru/post/661989/</guid>
          244       <link>https://habr.com/ru/post/661989/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          245       <description><![CDATA[В предыдущем <a href="https://habr.com/ru/company/yandex/blog/589363/">посте</a> я рассказывал о том, как мы строили свои суперкомпьютеры. В этом — поделюсь опытом, который мы накопили, эксплуатируя наши кластеры. Этот опыт будет полезен не только тем, кто обучает огромные ML-модели. На грабли, о которых пойдёт речь, легко наступить, даже если вы специалист с парой GPU. <br>
          246 <br>
          247 <img src="https://habrastorage.org/webt/_v/hs/x-/_vhsx-thqr_kl1rb8txwzcu8wqm.jpeg"><br>
          248 <br>
          249 Почему в распределённом обучении нельзя доверять утилизации GPU? Почему переход в эру распределённого обучения — фундаментальный сдвиг парадигмы мышления, к которому должен быть готов каждый ML-разработчик? Ещё больше «Почему» и ответов на них — под катом.<br> <a href="https://habr.com/ru/post/661989/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          250       
          251       <pubDate>Thu, 21 Apr 2022 07:59:00 GMT</pubDate>
          252       <dc:creator>dmtrmonakhov</dc:creator>
          253       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Высокая производительность]]></category><category><![CDATA[Сетевые технологии]]></category><category><![CDATA[Машинное обучение]]></category><category><![CDATA[Суперкомпьютеры]]></category>
          254       <category><![CDATA[суперкомпьютеры]]></category><category><![CDATA[GPU-кластеры]]></category><category><![CDATA[машинное обучение]]></category>
          255     </item>
          256 
          257 
          258 
          259 
          260 
          261 
          262 
          263       <item>
          264       <title><![CDATA[Яндекс выложил в опенсорс YDB]]></title>
          265       <guid isPermaLink="true">https://habr.com/ru/post/660271/</guid>
          266       <link>https://habr.com/ru/post/660271/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          267       <description><![CDATA[Сегодня мы выложили в опенсорс систему управления базами данных YDB — плод многолетнего опыта Яндекса в разработке систем хранения и обработки данных. Исходный код, документация, SDK и все инструменты для работы с базой <a href="https://github.com/ydb-platform/ydb" rel="nofollow noopener noreferrer">опубликованы на GitHub</a> под лицензией Apache 2.0. Развернуть базу можно как на собственных, так и на сторонних серверах — в том числе в любых облачных сервисах.<br>
          268 <br>
          269 <img src="https://habrastorage.org/webt/mn/es/dq/mnesdqdj71e0lbeisai6qbmuwro.jpeg"><br>
          270 <br>
          271 YDB решает задачи в одной из самых критичных областей — позволяет создавать интерактивные приложения, которые можно быстро масштабировать по нагрузке и по объёму данных. Мы разрабатывали её, исходя из ключевых требований к сервисам Яндекса. Во-первых, это катастрофоустойчивость, то есть возможность продолжить работу без деградации при отключении одного из дата-центров. Во-вторых, это масштабируемость на десятки тысяч серверов на чтение и на запись. В-третьих, это строгая консистентность данных.<br>
          272 <br>
          273 В посте я расскажу об истории развития технологий баз данных, о том, зачем использовать YDB, как её применяют текущие пользователи и какие плюсы для всех несёт выход в опенсорс. А во второй половине поста поговорим о разных вариантах развёртывания.<br> <a href="https://habr.com/ru/post/660271/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          274       
          275       <pubDate>Tue, 19 Apr 2022 08:59:14 GMT</pubDate>
          276       <dc:creator>olalala</dc:creator>
          277       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Высокая производительность]]></category><category><![CDATA[Open source]]></category><category><![CDATA[Администрирование баз данных]]></category><category><![CDATA[GitHub]]></category>
          278       <category><![CDATA[ydb]]></category><category><![CDATA[yandex]]></category><category><![CDATA[yandex cloud]]></category><category><![CDATA[базы данных]]></category><category><![CDATA[открытый код]]></category><category><![CDATA[субд]]></category>
          279     </item>
          280 
          281 
          282 
          283 
          284 
          285 
          286 
          287       <item>
          288       <title><![CDATA[Как мы учимся адаптировать Яндекс Go для незрячих пользователей: ожидания, суровая реальность, чек-лист разработчика]]></title>
          289       <guid isPermaLink="true">https://habr.com/ru/post/660663/</guid>
          290       <link>https://habr.com/ru/post/660663/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          291       <description><![CDATA[Может показаться, что работа над доступностью приложения для незрячих пользователей заключается лишь в том, чтобы подписать все элементы интерфейса для скринридера. Мы тоже так раньше думали. Реальность оказалась куда сложнее.<br>
          292 <br>
          293 <img src="https://habrastorage.org/webt/m6/6i/sa/m66isabclypsnafco85hh3zq_zu.jpeg" alt="Девушка пользуется приложением Go"><br>
          294 <br>
          295 Привет! Меня зовут Николай Морев, я разрабатываю iOS-версию приложения Яндекс Go. Не буду скрывать: долгое время незрячим и слабовидящим пользователям было крайне сложно, а порой и невозможно пользоваться нашим приложением. <br>
          296 <br>
          297 Первые попытки, которые мы предприняли, должны были решить проблему малой кровью. Этот подход оказался наивным, но он принёс нам опыт, которым я хочу поделиться с другими разработчиками в этом посте. Под катом расскажу, почему работа над доступностью — это прежде всего работа над UX, а уже во вторую очередь — над API. Покажу примеры, когда эвристики системного скринридера приносили больше вреда, чем пользы. Объясню, почему для работы над доступностью нам потребовалась помощь ещё и бэкендеров. <br>
          298 <br>
          299 Приложению Яндекс Go ещё далеко до идеала, нерешённых проблем хватает. Но, надеюсь, накопленный нами опыт поможет другим.<br> <a href="https://habr.com/ru/post/660663/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          300       
          301       <pubDate>Thu, 14 Apr 2022 07:58:13 GMT</pubDate>
          302       <dc:creator>k011a</dc:creator>
          303       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Геоинформационные сервисы]]></category><category><![CDATA[Accessibility]]></category>
          304       <category><![CDATA[доступность]]></category><category><![CDATA[доступность навигации]]></category><category><![CDATA[команда яндекс go]]></category>
          305     </item>
          306 
          307 
          308 
          309 
          310 
          311 
          312 
          313       <item>
          314       <title><![CDATA[Эволюция перевода видео в Яндекс Браузере: от новых языков до интерактивных субтитров]]></title>
          315       <guid isPermaLink="true">https://habr.com/ru/post/658121/</guid>
          316       <link>https://habr.com/ru/post/658121/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          317       <description><![CDATA[В сентябре мы <a href="https://habr.com/ru/company/yandex/blog/576438/">рассказывали</a> Хабру о том, как наша команда помогает преодолевать языковой барьер с помощью перевода видео. Эта функция позволяет автоматически переводить видео так, чтобы зритель сразу слышал русскую речь. Пользователи встретили новую возможность тепло: ролики с переводом смотрят больше 200 тысяч раз в день.<br>
          318 <br>
          319 С тех пор мы развиваем перевод видео. Не писали здесь про каждое изменение, потому что <s>скромные</s> по отдельности они не тянут на рассказ. Но сегодня воспользуюсь поводом и расскажу не только про свежую версию, в которую добавили перевод субтитров, но и про предыдущие обновления. <br>
          320 <br>
          321 <img src="https://habrastorage.org/webt/bd/wy/uf/bdwyufkxrc_fi5iiy9cnccplido.jpeg"><br>
          322 <br> <a href="https://habr.com/ru/post/658121/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          323       
          324       <pubDate>Wed, 30 Mar 2022 08:02:17 GMT</pubDate>
          325       <dc:creator>BarakAdama</dc:creator>
          326       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Браузеры]]></category><category><![CDATA[Софт]]></category><category><![CDATA[Искусственный интеллект]]></category><category><![CDATA[Изучение языков]]></category>
          327       <category><![CDATA[яндекс браузер]]></category><category><![CDATA[яндекс]]></category><category><![CDATA[команда яндекс.браузера]]></category><category><![CDATA[перевод видео]]></category><category><![CDATA[переводчик]]></category><category><![CDATA[перевод субтитров]]></category><category><![CDATA[машинный перевод]]></category>
          328     </item>
          329 
          330 
          331 
          332 
          333 
          334 
          335 
          336       <item>
          337       <title><![CDATA[Про поддержку сайтов с национальными сертификатами в Яндекс Браузере]]></title>
          338       <guid isPermaLink="true">https://habr.com/ru/post/655185/</guid>
          339       <link>https://habr.com/ru/post/655185/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          340       <description><![CDATA[Очень много вопросов по этой теме. Оно и понятно: информации мало, противоречивых интерпретаций много. Для нас тема защиты соединений с сайтами близка. Мы пишем на Хабре об этом уже лет восемь. Например, в своё время мы первыми <a href="https://habr.com/ru/company/yandex/blog/280380/">поддержали</a> DNSCrypt прямо в браузере, первыми начали <a href="https://habr.com/ru/company/yandex/blog/326796/">предупреждать</a> о неизвестных корневых сертификатах в системе, первыми <a href="https://habr.com/ru/company/yandex/blog/267013/">включили</a> шифрование трафика для незащищенных Wi-Fi-сетей. <br>
          341 <br>
          342 Поэтому сегодня мы расскажем сообществу о происходящем чуть более подробно. Тем, кто очень спешит и хочет получить короткие ответы, достаточно прочитать начало поста. Поехали.<br>
          343 <br>
          344 <h2>Коротко о главном</h2><br>
          345 <ol>
          346 <li>Национальный удостоверяющий центр выдаёт сертификаты на домены только тех организаций, которые явно это запросили. Полный список этих доменов публично доступен по адресу <a href="https://www.gosuslugi.ru/tls" rel="nofollow noopener noreferrer">www.gosuslugi.ru/tls</a>.</li>
          347 <li>Яндекс Браузер применяет национальные сертификаты не для всего рунета, а только на тех сайтах, которые есть в списке на <a href="https://www.gosuslugi.ru/tls" rel="nofollow noopener noreferrer">www.gosuslugi.ru/tls</a>. Попытка применить сертификат на других доменах приведёт к стандартной ошибке и недоступности сайта для пользователя. </li>
          348 <li>Национальные сертификаты используют общепринятую открытую криптографию и работают по стандартным правилам (это обычный RSA с длинным ключом, ровно такой же, какой выписывают другие центры сертификации). </li>
          349 <li>Мы работаем над поддержкой стандарта Certificate Transparency и планируем создать публичный лог, в который будут вноситься все выпускаемые национальным центром сертификаты. Мы надеемся, что другие представители индустрии поддержат эту инициативу и запустят дополнительные публичные логи. Это позволит добиться прозрачности в работе с национальными сертификатами. </li>
          350 </ol><br> <a href="https://habr.com/ru/post/655185/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          351       
          352       <pubDate>Fri, 11 Mar 2022 10:57:33 GMT</pubDate>
          353       <dc:creator>ironpeter</dc:creator>
          354       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Браузеры]]></category>
          355       <category><![CDATA[яндекс]]></category><category><![CDATA[ssl]]></category><category><![CDATA[tls]]></category><category><![CDATA[сертификаты]]></category><category><![CDATA[безопасность]]></category>
          356     </item>
          357 
          358 
          359 
          360 
          361 
          362 
          363 
          364       <item>
          365       <title><![CDATA[Что считать счастьем покупателя?]]></title>
          366       <guid isPermaLink="true">https://habr.com/ru/post/651751/</guid>
          367       <link>https://habr.com/ru/post/651751/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          368       <description><![CDATA[<img src="https://habrastorage.org/webt/mx/p_/hx/mxp_hxr4hg36y3sg9xntdptilo0.jpeg" width="700"><br>
          369 <sub>По запросу [форма] мы должны угадать, что именно нужно покупателю: выпечка, наращивание ногтей, косплеить медсестру или калибратор кубов бетона. Задача — быстро понять, кто перед нами и что сделает человека счастливым.</sub><br>
          370 <br>
          371 Я работаю над качеством поиска в Яндекс.Маркете. И качество поиска прямо связано с ощущением счастья пользователя от шопинга. Счастье нужно измерять. Самый очевидный способ — посмотреть, купил ли что-нибудь пользователь. Но мы не всегда приходим в магазин или на Маркет, чтобы взять что-то конкретное.<br>
          372 <br>
          373 <b>Человек может:</b><br>
          374 <br>
          375 <ul>
          376 <li>Формулировать требования к покупке по мере сравнения вариантов. <br>
          377 <br>
          378 <div class="spoiler" role="button" tabindex="0">
          379                         <b class="spoiler_title">Пример с соковыжималкой</b>
          380                         <div class="spoiler_text">Предположим, он ищет соковыжималку, но ещё не знает, какие они бывают. По мере изучения товаров он примерно начинает понимать, что хочет. На старте у него нет ни фиксированного бюджета, ни требований, только мечта. Дальше нужно сопоставить мечту с конкретной карточкой товара. С точки зрения метрики покупки, пользователь будет довольно долго бесцельно бродить в начале — но мы понимаем, что эта часть была очень важна, там он изучал предложение и понимал, как устроен мир.</div>
          381                     </div></li>
          382 <li>Приходить с примерным бюджетом и выбирать что-то под него, например, при поиске подарка. В этой ситуации у пользователя даже нет мечты, он ходит по категориям и ищет что-то, что его «зацепит».</li>
          383 <li>Более-менее точно понимать, что хочет купить (часто вплоть до модели товара), но искать лучшее предложение.</li>
          384 <li>Знать модель товара и проверять, насколько честна цена на неё, насколько хороши отзывы и так далее.</li>
          385 </ul><br>
          386 То есть с точки зрения человека покупка — далеко не единственная цель. Маркетплейс используется и для развлечения, и для изучения предложений, и даже для проверки цены, когда стоишь в очереди к кассе в реальном магазине.<br>
          387 <br>
          388 Мы работаем над улучшением поиска по товарам. Поэтому нам нужна была метрика, которая показывает удовлетворённость людей тем, что мы показываем на выдаче. Мы искали её в несколько итераций, и сейчас я хочу рассказать о том, что мы уже придумали.<br> <a href="https://habr.com/ru/post/651751/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          389       
          390       <pubDate>Wed, 16 Feb 2022 07:53:26 GMT</pubDate>
          391       <dc:creator>art-fomin</dc:creator>
          392       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Поисковые технологии]]></category><category><![CDATA[Алгоритмы]]></category><category><![CDATA[Разработка под e-commerce]]></category>
          393       <category><![CDATA[качество поиска]]></category><category><![CDATA[маркетплейсы]]></category><category><![CDATA[счастье]]></category><category><![CDATA[команда яндекс.маркета]]></category>
          394     </item>
          395 
          396 
          397 
          398 
          399 
          400 
          401 
          402       <item>
          403       <title><![CDATA[С++23 — итоги февральской встречи международного комитета]]></title>
          404       <guid isPermaLink="true">https://habr.com/ru/post/649497/</guid>
          405       <link>https://habr.com/ru/post/649497/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          406       <description><![CDATA[<div style="text-align:center;"><img src="https://habrastorage.org/webt/k3/ay/8j/k3ay8ji3lxa1_bpqaxlkcfsp1da.jpeg" width="70%"></div><br>
          407 Без лишних слов, прямо к делу — вот какие новые вкусности будут нас ждать в C++23:<br>
          408 <br>
          409 <ul>
          410 <li><code>std::expected</code> — новый механизм сообщения об ошибках без использования исключений и без недостатков кодов возврата.</li>
          411 <li>constexpr-математика — теперь на этапе компиляции можно доставать разные части чисел с плавающей запятой, копировать знаки и округлять числа.</li>
          412 <li><code>std::ranges::to</code> — результаты работы алгоритмов можно легко превратить в контейнер.</li>
          413 <li><code>std::views::join_with</code> — добавление разделителя между элементами.</li>
          414 </ul><br>
          415 Что мы <b>не</b> увидим в C++23, на что ещё можно надеяться и что ещё приняли в текущий черновик стандарта? Всё это ждёт вас под катом.<br> <a href="https://habr.com/ru/post/649497/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          416       
          417       <pubDate>Wed, 09 Feb 2022 07:59:09 GMT</pubDate>
          418       <dc:creator>antoshkka</dc:creator>
          419       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[C++]]></category><category><![CDATA[Компиляторы]]></category><category><![CDATA[IT-стандарты]]></category>
          420       <category><![CDATA[с++]]></category><category><![CDATA[c++20]]></category><category><![CDATA[c++23]]></category><category><![CDATA[expected]]></category><category><![CDATA[ranges]]></category><category><![CDATA[constexpr]]></category><category><![CDATA[unreachable code]]></category><category><![CDATA[standard library]]></category><category><![CDATA[join]]></category><category><![CDATA[iota]]></category>
          421     </item>
          422 
          423 
          424 
          425 
          426 
          427 
          428 
          429       <item>
          430       <title><![CDATA[Эволюция UI-тестов в iOS-приложении]]></title>
          431       <guid isPermaLink="true">https://habr.com/ru/post/648723/</guid>
          432       <link>https://habr.com/ru/post/648723/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          433       <description><![CDATA[<img src="https://habrastorage.org/webt/ek/km/hj/ekkmhjplrbljb-ncsjb7n5ejavu.jpeg"><br>
          434 Test-driven development — по-прежнему спорная тема. Часто встречается обоснованное, в общем-то, мнение, что такая разработка нужна только большим компаниям, потому что только у них достаточно ресурсов для создания и поддержки большого количества тест-кейсов. Но сегодня на примере iOS-приложения Маркета я покажу, что стремление как раз обратное: хочется, чтобы тесты поглощали как можно меньше времени разработчиков.<br>
          435 <br>
          436 Меня зовут Даша, работаю в команде iOS-разработки Яндекс.Маркета. Два года назад мы поняли, что без автотестов нам тяжело: с их помощью мы снизили вероятность крешей после релиза и ускорили регрессионное тестирование. Релизы приложения происходят еженедельно, и это большая нагрузка на тестировщиков и разработчиков — протестировать всё руками и быстро внести правки за несколько дней не получилось бы. Я постараюсь порефлексировать и рассказать, как эволюционировал наш подход к UI-тестам за это время, и, более конкретно, какие работы мы провели для их «улучшения»: почему решили избавиться от JSON-моков и как справились с этой задачей.<br> <a href="https://habr.com/ru/post/648723/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          437       
          438       <pubDate>Tue, 01 Feb 2022 07:58:27 GMT</pubDate>
          439       <dc:creator>dasharedd</dc:creator>
          440       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Разработка под iOS]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Swift]]></category><category><![CDATA[Тестирование мобильных приложений]]></category>
          441       <category><![CDATA[ui-тестирование]]></category><category><![CDATA[ui-тесты]]></category><category><![CDATA[json]]></category><category><![CDATA[моки]]></category><category><![CDATA[команда яндекс.маркета]]></category>
          442     </item>
          443 
          444 
          445 
          446 
          447 
          448 
          449 
          450       <item>
          451       <title><![CDATA[Анатомия асинхронных фреймворков в С++ и других языках]]></title>
          452       <guid isPermaLink="true">https://habr.com/ru/post/647853/</guid>
          453       <link>https://habr.com/ru/post/647853/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          454       <description><![CDATA[Привет! В этой статье я расскажу об устройстве асинхронных движков с корутинами и без них. Для начала сосредоточимся не на конкретном движке, а на том, почему во всех популярных языках программирования появились корутины и чем они так хороши. Это может быть интересно не только C++-разработчикам, но и всем, кто занимается разработкой сетевых приложений или интересуется архитектурой современных фреймворков.<br>
          455 <br>
          456 Пройдёмся по разным архитектурам построения серверов — от самой простой синхронной к более интересным, посмотрим на типичную архитектуру корутинового движка, а после окунёмся в дебри C++ и взглянем на самое страшное на примере нашего фреймворка userver.<br>
          457 <br>
          458 <a name="top"></a><h3>Пишем синхронный сервер</h3><br>
          459 Представьте, что у вашего сервиса очень маленькая нагрузка — 100 rps, и вам дали задачу написать простой сервер, понятный каждому второму школьнику. У вас получится что-то наподобие следующего: <br>
          460 <br>
          461 <pre><code class="cpp">void naive_accept() {
          462   for (;;) {
          463     auto new_socket = accept(listener);
          464 
          465     std::thread thrd([socket = std::move(new_socket)] {
          466       auto data = socket.receive();
          467       process(data);
          468       socket.send(data);
          469     });
          470 
          471     thrd.detach();
          472   }
          473 }</code></pre> <a href="https://habr.com/ru/post/647853/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          474       
          475       <pubDate>Thu, 27 Jan 2022 09:14:38 GMT</pubDate>
          476       <dc:creator>antoshkka</dc:creator>
          477       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Python]]></category><category><![CDATA[C++]]></category><category><![CDATA[C#]]></category><category><![CDATA[Go]]></category>
          478       <category><![CDATA[async]]></category><category><![CDATA[asynchronous]]></category><category><![CDATA[async/await]]></category><category><![CDATA[coroutine]]></category><category><![CDATA[coroutines]]></category><category><![CDATA[event-driven programming]]></category><category><![CDATA[events]]></category><category><![CDATA[python3]]></category><category><![CDATA[c++17]]></category><category><![CDATA[c++20]]></category><category><![CDATA[go]]></category>
          479     </item>
          480 
          481 
          482 
          483 
          484 
          485 
          486 
          487       <item>
          488       <title><![CDATA[Диагностика виртуальной сети в Linux. BPFTrace и skbtrace в опенсорсе]]></title>
          489       <guid isPermaLink="true">https://habr.com/ru/post/646297/</guid>
          490       <link>https://habr.com/ru/post/646297/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          491       <description><![CDATA[Привет! Меня зовут Сергей Кляус, и я как разработчик виртуальной сети сопровождаю создателей приложений, размещённых в Yandex.Cloud. При этом диагностические возможности самого облака ограничены: мы не видим метрики пользовательских виртуальных машин, например количество TCP retransmissions, а записывать и анализировать огромные дампы всего сетевого трафика с помощью tcpdump дорого и трудно из-за ограничений безопасности. <br>
          492 <div style="text-align:center;"><img src="https://habrastorage.org/webt/h4/nu/xw/h4nuxwyl2oj9w81uchr0aofjjsi.jpeg" width="80%"></div>К счастью, динамическая трассировка позволяет получить лучшее от двух миров: исполнять произвольный код в момент увеличения метрики, а в самом коде печатать тело пакета. Например, недавно мы диагностировали проблемы с TCP-соединениями у одного из наших managed-сервисов, и оказалось, что теряются на самом деле UDP-пакеты. Гипотеза требовала уточнения, хотя корреляция между ростом метрики и сбоем была поначалу очевидна. В современном Linux динамическая трассировка реализована через eBPF и утилиту BPFTrace, но постепенно мы накопили набор типовых сценариев их использования и сделали обёртку над BPFTrace. Она называется skbtrace и доступна <a href="https://github.com/yandex-cloud/skbtrace" rel="nofollow noopener noreferrer">на GitHub</a>. Про неё я и расскажу под катом.<br> <a href="https://habr.com/ru/post/646297/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          493       
          494       <pubDate>Thu, 20 Jan 2022 08:00:04 GMT</pubDate>
          495       <dc:creator>myaut12</dc:creator>
          496       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Open source]]></category><category><![CDATA[Сетевые технологии]]></category><category><![CDATA[Разработка под Linux]]></category><category><![CDATA[Облачные сервисы]]></category>
          497       <category><![CDATA[bpftrace]]></category><category><![CDATA[tcpdump]]></category><category><![CDATA[bpf]]></category><category><![CDATA[ebpf]]></category>
          498     </item>
          499 
          500 
          501 
          502 
          503 
          504 
          505 
          506       <item>
          507       <title><![CDATA[Кодогенерация DTO: зачем она нужна и как её настроить]]></title>
          508       <guid isPermaLink="true">https://habr.com/ru/post/598125/</guid>
          509       <link>https://habr.com/ru/post/598125/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog</link>
          510       <description><![CDATA[<a href="https://ru.wikipedia.org/wiki/DTO" rel="nofollow noopener noreferrer">Data Transfer Object</a> — модель данных, которые мы передаём из одного слоя приложения в другой. В Яндекс Go мы активно используем DTO. Предположим, нужно отобразить в UI приложения для вызова такси экспериментальную кнопку с двумя свойствами — надписью на кнопке и ориентировочным временем ожидания такси. Тогда в сетевом слое надо написать примерно такую DTO-модель:<br>
          511 <br>
          512 <pre><code class="swift">struct OrderButtonExperimentDTO: Decodable {
          513    let buttonTitle: String
          514    let estimationMinute: Int
          515 }</code></pre><br>
          516 Правильно написанная модель позволяет разрабатывать разные слои приложения независимо — но нужно следить за актуальностью самой модели на каждом слое. Например, если в коде выше ожидалось не estimationMinute, а estimationMinutes, то клиент не сможет декодировать полученные из сети данные и пользователь не увидит время ожидания. Такую ошибку легко совершить, в n-й раз перепечатывая названия переменных под каждый слой — а разработчики и правда должны рутинно это делать при любом изменении (или расширении) исходного формата данных. Ещё сложнее заметить ошибку на код-ревью.<br>
          517 <br>
          518 Поэтому мы решили добавить механизм, который сам бы составлял и переписывал код моделей DTO в зависимости от исходного формата.<br> <a href="https://habr.com/ru/post/598125/?utm_source=habrahabr&amp;utm_medium=rss&amp;utm_campaign=corporate_blog#habracut">Читать дальше &rarr;</a>]]></description>
          519       
          520       <pubDate>Tue, 28 Dec 2021 08:02:26 GMT</pubDate>
          521       <dc:creator>ksnegov</dc:creator>
          522       <category><![CDATA[Блог компании Яндекс]]></category><category><![CDATA[Разработка под iOS]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Геоинформационные сервисы]]></category><category><![CDATA[Swift]]></category>
          523       <category><![CDATA[кодогенерация]]></category><category><![CDATA[кодогенерация swift]]></category><category><![CDATA[dto]]></category>
          524     </item>
          525 
          526 
          527 
          528 
          529 
          530 
          531 
          532 
          533 
          534 
          535 
          536 
          537 
          538   </channel>
          539 </rss>