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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&utm_campaign=corporate_blog</link>
185 <description><![CDATA[<p>Недавно мы рассказывали Хабру про поддержку в Яндекс Браузере тех сайтов, которые перешли на использование национальных TLS-сертификатов. Если вы пропустили, то рекомендуем <a href="https://habr.com/ru/company/yandex/blog/655185/"><u>прочитать</u></a> пост, он содержит ответы на популярные вопросы. </p><p>Сегодня мы расскажем про следующий большой шаг в этом направлении — про обещанную поддержку публичных логов, созданных на базе открытого стандарта Certificate Transparency.</p> <a href="https://habr.com/ru/post/667300/?utm_source=habrahabr&utm_medium=rss&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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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&utm_medium=rss&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&utm_medium=rss&utm_campaign=corporate_blog#habracut">Читать дальше →</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>