Форум программистов, компьютерный форум, киберфорум
JavaScript, TypeScript etc...
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
Старый
Кортежи в TypeScript
Запись от run.dev размещена 24.10.2025 в 19:27 / JavaScript, TypeScript etc...
Показов 4447 Комментарии 0
Метки javascript, tuple, typescript, web

Нажмите на изображение для увеличения
Название: Кортежи в TypeScript.jpg
Просмотров: 680
Размер:	43.7 Кб
ID:	11331
Массивы в JavaScript - это гибкие коллекции, где можно хранить что угодно и сколько угодно. TypeScript пытается навести порядок через Array<T>, но все равно остается неопределенность: а сколько там элементов? Какой тип у третьего элемента? На эти вопросы обычный массив не ответит. Кортежи же дают точный ответ: вот тут три элемента,...
Аватар для run.dev
Старый
Что такое MCP сервер и как его создать. Часть 2
Запись от run.dev размещена 17.10.2025 в 21:22 / JavaScript, TypeScript etc...
Показов 6380 Комментарии 0

Нажмите на изображение для увеличения
Название: Что такое MCP сервер и как его создать 3.jpg
Просмотров: 704
Размер:	32.1 Кб
ID:	11312
Когда я впервые попытался подключить свой MCP сервер к Claude Desktop, думал что это будет как с любым другим API - указал эндпоинт, авторизовался, готово. Но нет. MCP требует конфигурирования на стороне клиента, и каждое приложение делает это по-своему. Причём документация местами отсутствует или устарела, приходилось разбираться методом проб и ошибок.

Что такое MCP сервер и как его создать. Часть 1

Клиентские приложения для...
Аватар для run.dev
Старый
Что такое MCP сервер и как его создать. Часть 1
Запись от run.dev размещена 17.10.2025 в 21:21 / JavaScript, TypeScript etc.... Обновил(-а) run.dev 17.10.2025 в 21:23
Показов 6903 Комментарии 0

Нажмите на изображение для увеличения
Название: Что такое MCP сервер и как его создать.jpg
Просмотров: 700
Размер:	50.4 Кб
ID:	11310
Model Context Protocol - это не очередной API и не замена REST. Это скорее мост между вашей языковой моделью и реальным миром данных. Представьте: у вас есть Claude или другой AI-ассистент, который умеет болтать, но не имеет доступа к вашим базам данных, файлам или внешним сервисам....
Аватар для run.dev
Старый
Гайд по tsconfig.json
Запись от run.dev размещена 22.09.2025 в 18:31 / JavaScript, TypeScript etc...
Показов 3609 Комментарии 0

Нажмите на изображение для увеличения
Название: Гайд по tsconfig.json.jpg
Просмотров: 359
Размер:	83.7 Кб
ID:	11196
Каждый, кто хоть раз имел дело с TypeScript, сталкивался с этим файлом – tsconfig.json. В 2016 году, когда я только начинал свою миграцию с чистого JavaScript на TypeScript, этот файл казался мне тёмным лесом с кучей непонятных опций. В одном проекте всё работало как часы, в другом – непонятные ошибки компиляции по каждому поводу и без. И...
Аватар для run.dev
Старый
Символы в TypeScript
Запись от run.dev размещена 20.09.2025 в 22:00 / JavaScript, TypeScript etc...
Показов 3398 Комментарии 0

Нажмите на изображение для увеличения
Название: Символы в TypeScript.jpg
Просмотров: 301
Размер:	87.7 Кб
ID:	11189
Символы — один из примитивных типов в JavaScript, введенный в ECMAScript 2015 (ES6). В отличие от других примитивов (строк, чисел, булевых значений), главная особенность символов — их уникальность. Каждый символ, созданный с помощью конструктора Symbol(), гарантированно уникален:

TypeScript
1
2
3
const sym1 = Symbol();
const sym2 = Symbol();
console.log(sym1 === sym2); // всегда false, даже если конструкторы вызваны одинаково
Эта...
Аватар для run.dev
Старый
Map в JavaScript
Запись от run.dev размещена 12.09.2025 в 21:24 / JavaScript, TypeScript etc...
Показов 5217 Комментарии 2

Нажмите на изображение для увеличения
Название: Map в JavaScript.jpg
Просмотров: 448
Размер:	237.8 Кб
ID:	11169
Объекты в JavaScript – это классика. Они как старые добрые "Жигули": вроде едут, но с кучей особенностей. Главная проблема – они могут использовать в качестве ключей только строки и символы. А еще эти неожиданные "встроенные" свойства из прототипа, которые так и норовят испортить вам день. Вы пытаетесь проверить наличие ключа через obj.hasOwnProperty('key'), а потом вспоминаете, что какой-нибудь джуниор мог переопределить...
Аватар для run.dev
Старый
Рейтинг: 5.00. Голосов: 1.
Собеседование по JavaScript - Опыт выживания
Запись от run.dev размещена 26.07.2025 в 21:38 / JavaScript, TypeScript etc...
Показов 3134 Комментарии 1

Нажмите на изображение для увеличения
Название: Собеседование по JavaScript - Опыт выживания.jpg
Просмотров: 409
Размер:	234.9 Кб
ID:	11014
Когда речь заходит о технических собеседованиях по JavaScript, статистика может напугать даже бывалого разработчика. По данным за последние годы, около 67% кандидатов проваливают собеседования по JavaScript при первой попытке. И это неудивительно - ведь язык только кажется простым на поверхности, а копнешь глубже - и оказываешся в кроличьей норе особенностей...
Аватар для run.dev
Старый
REST API с Node.js и TypeScript
Запись от run.dev размещена 23.07.2025 в 20:08 / JavaScript, TypeScript etc...
Показов 4579 Комментарии 1

Нажмите на изображение для увеличения
Название: REST API с Node.js и TypeScript.jpg
Просмотров: 427
Размер:	175.3 Кб
ID:	11010
Знаете, в серверной разработки с Node.js я давно заметил одну штуку - чем больше проект, тем сложнее держать его в узде на чистом JavaScript. Когда API начинает разрастатся как грибы после дождя, отлавливать ошибки становится сущим адом. Именно поэтому я перешел на TypeScript, и теперь считаю его не просто полезной игрушкой, а жизненно важным инструментом.

Статическая типизация...
Аватар для run.dev
Старый
Server-Sent Events (SSE) в Node.js
Запись от run.dev размещена 05.06.2025 в 19:15 / JavaScript, TypeScript etc...
Показов 3067 Комментарии 0

Нажмите на изображение для увеличения
Название: Server-Sent Events (SSE) в Node.js.png
Просмотров: 364
Размер:	1.83 Мб
ID:	10878
Потоковая передача данных с сервера прямо в браузер стала повседневной потребностью - от биржевых графиков и спортивных трансляций до чатов и умных дашбордов. Много лет разработчики полагались на вебсокеты или мучились с бесконечными циклами опроса сервера. Но...
Аватар для run.dev
Старый
Подробно о цикле событий в JavaScript
Запись от run.dev размещена 07.05.2025 в 18:41 / JavaScript, TypeScript etc...
Показов 5707 Комментарии 1

Нажмите на изображение для увеличения
Название: 20f4c0b2-0650-46a6-9952-c4a6001eb658.jpg
Просмотров: 275
Размер:	137.7 Кб
ID:	10764
JavaScript — пожалуй, самый неоднозначный язык программирования в мире веб-разработки. Часто его хвалят за гибкость и универсальность, но при этом ругают за странные особенности поведения и непредсказуемость. Однако за многими "странностями" JavaScript скрывается...
Аватар для run.dev
Старый
Замыкания в JavaScript
Запись от run.dev размещена 03.05.2025 в 09:51 / JavaScript, TypeScript etc...
Показов 3420 Комментарии 1
Метки javascript

Нажмите на изображение для увеличения
Название: 4116ca69-5dfb-43b0-85b0-faa3035b93ec.jpg
Просмотров: 211
Размер:	214.3 Кб
ID:	10721
JavaScript — язык со множеством интересных и мощных особенностей, но есть одна концепция, которая заставляет начинающих разработчиков морщить лоб, а опытных — улыбаться с пониманием дела. Замыкания (closures) — один из тех механизмов, который сначала кажется чудом, потом...
Аватар для run.dev
Старый
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
Запись от run.dev размещена 26.04.2025 в 20:19 / JavaScript, TypeScript etc...
Показов 6274 Комментарии 0

Нажмите на изображение для увеличения
Название: e7227c3d-c904-4237-a471-6dea534aa3b5.jpg
Просмотров: 230
Размер:	213.7 Кб
ID:	10675
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд разработчиков возникла острая необходимость в инструментах, способных...
Аватар для run.dev
Старый
Статические свойства и методы в TypeScript
Запись от run.dev размещена 20.04.2025 в 19:43 / JavaScript, TypeScript etc...
Показов 6660 Комментарии 0
Метки typescript

Нажмите на изображение для увеличения
Название: 043d0b57-e6dd-48bc-809d-f2fe0788031e.jpg
Просмотров: 293
Размер:	155.7 Кб
ID:	10626
TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более безопасной, предсказуемой и поддерживаемой. Среди множества возможностей, которые предлагает TypeScript, особый интерес представляют статические свойства и методы классов.

Когда разработчик впервые...
Аватар для run.dev
Старый
Типы в TypeScript
Запись от run.dev размещена 18.04.2025 в 11:32 / JavaScript, TypeScript etc...
Показов 4071 Комментарии 0
Метки typescript

Нажмите на изображение для увеличения
Название: 26d7a107-d733-4954-9713-41317ca82a85.jpg
Просмотров: 217
Размер:	144.5 Кб
ID:	10609
TypeScript представляет собой мощное расширение JavaScript, которое добавляет статическую типизацию в этот динамический язык. В JavaScript, где переменная может свободно менять тип в процессе выполнения программы, TypeScript вводит строгий порядок и структуру, позволяя разработчикам явно указывать, какие типы данных ожидаются и используются в коде.

Почему типы важны в разработке



Типизация – не просто формальность...
Аватар для run.dev
Старый
Абстрактные классы в TypeScript
Запись от run.dev размещена 15.04.2025 в 21:59 / JavaScript, TypeScript etc...
Показов 3700 Комментарии 0
Метки typescript

Нажмите на изображение для увеличения
Название: 42b075cb-c4eb-4c25-9e48-a576ec63c790.jpg
Просмотров: 221
Размер:	169.8 Кб
ID:	10597
Разработка современных веб-приложений требует надежных инструментов для структурирования кода. В этом контексте абстрактные классы стали незаменимым элементом объектно-ориентированного программирования. Они представляют собой особый тип классов, от которых нельзя создать экземпляры напрямую — можно только наследовать. По сути, это своеобразные шаблоны, предназначенные для создания более специализированных классов.

Абстрактные классы в TypeScript:

...
Аватар для run.dev
Старый
Рейтинг: 5.00. Голосов: 1.
TypeScript: Интерфейсы vs Типы
Запись от run.dev размещена 11.04.2025 в 22:10 / JavaScript, TypeScript etc...
Показов 5183 Комментарии 0
Метки typescript

Нажмите на изображение для увеличения
Название: 03cf5a95-4212-4de9-8dc3-f8e40ea4ac80.jpg
Просмотров: 284
Размер:	39.5 Кб
ID:	10580
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения, улучшить документацию и сделать код более предсказуемым. Именно на этой волне возник TypeScript — язык, который расширяет JavaScript, добавляя статическую типизацию. TypeScript функционирует как надмножество JavaScript, что означает, что любой валидный JavaScript...
Аватар для run.dev
Старый
Функции высшего порядка в JavaScript
Запись от run.dev размещена 09.04.2025 в 18:12 / JavaScript, TypeScript etc...
Показов 3546 Комментарии 1
Метки functional, javascript

Нажмите на изображение для увеличения
Название: 7fca727e-7ec3-4fdf-8a9d-3ff5ddaae016.jpg
Просмотров: 261
Размер:	207.2 Кб
ID:	10563
Функции высшего порядка представляют собой один из фундаментальных камней функционального программирования в JavaScript. По сути, это функции, которые либо принимают другие функции в качестве аргументов, либо возвращают функции как результат своей работы. Эта концепция позволяет писать лаконичный, минималистичный...
Аватар для run.dev
Старый
Async/await в TypeScript
Запись от run.dev размещена 06.04.2025 в 17:02 / JavaScript, TypeScript etc...
Показов 5426 Комментарии 0

Нажмите на изображение для увеличения
Название: 9ceb9465-ec79-4e18-9f50-10b39db81078.jpg
Просмотров: 288
Размер:	106.0 Кб
ID:	10544
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая операция ждёт завершения предыдущей, асинхронный код продолжает...
Аватар для run.dev
Старый
TypeScript: Классы и конструкторы
Запись от run.dev размещена 06.04.2025 в 11:05 / JavaScript, TypeScript etc...
Показов 5375 Комментарии 0
Метки typescript

Нажмите на изображение для увеличения
Название: 2c0a272c-c469-490b-ad32-daf5bb254c71.jpg
Просмотров: 252
Размер:	188.7 Кб
ID:	10541
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой системы стали классы – концепция, знакомая разработчикам по многим объектно-ориентированным языкам, но реализованная в TypeScript с учетом особенностей JavaScript и современных парадигм программирования.

Эволюция ООП в TypeScript



История объектно-ориентированного программирования...
Аватар для run.dev
Старый
Создаем Telegram бот на TypeScript с grammY
Запись от run.dev размещена 05.04.2025 в 11:23 / JavaScript, TypeScript etc...
Показов 4974 Комментарии 0

Нажмите на изображение для увеличения
Название: fda19869-9094-45ba-a12e-7cc27b7fbf61.jpg
Просмотров: 339
Размер:	186.3 Кб
ID:	10531
Одна из его самых сильных сторон Telegram — это интеграция ботов прямо в экосистему приложения. В отличие от многих других платформ, он предоставляет разработчикам мощный API, позволяющий создавать разнообразных ботов — от простых информационных помощников до сложных...
Аватар для run.dev
Старый
Оптимизация производительности Node.js с помощью кластеризации
Запись от run.dev размещена 04.04.2025 в 18:15 / JavaScript, TypeScript etc...
Показов 5300 Комментарии 0

Нажмите на изображение для увеличения
Название: 00727b52-51bb-42b4-8ef8-b90f343f9ed0.jpg
Просмотров: 260
Размер:	183.1 Кб
ID:	10525
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node.js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной платформой для создания высокопроизводительных серверных приложений. Но даже у этой технологии есть свои ограничения,...
Аватар для run.dev
Старый
Как работает Node.js изнутри
Запись от run.dev размещена 29.03.2025 в 18:46 / JavaScript, TypeScript etc...
Показов 6711 Комментарии 0

Нажмите на изображение для увеличения
Название: 127c1868-d473-4b0a-a3d6-03b8ef516f55.jpg
Просмотров: 364
Размер:	186.8 Кб
ID:	10496
Node.js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый, кроссплатформенный runtime превратился в основной инструмент современного веб-разработчика. Сегодня трудно представить веб-разработку без Node.js — от стартапов до крупных корпораций вроде Netflix, PayPal или LinkedIn,...
Аватар для run.dev
Старый
JavaScript: Управление памятью и улучшение производительности
Запись от run.dev размещена 29.03.2025 в 10:22 / JavaScript, TypeScript etc...
Показов 7571 Комментарии 0
Метки javascript, memory leak

Нажмите на изображение для увеличения
Название: 9ee5e8a0-d6b0-4ebb-8432-c4799f5f7053.jpg
Просмотров: 334
Размер:	79.1 Кб
ID:	10494
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты больше не используются, и освобождает занимаемую ими память. Это упрощает процесс разработки,...
Аватар для run.dev
Старый
Работа с метаданными EXIF и JPEG в JavaScript
Запись от run.dev размещена 19.03.2025 в 13:25 / JavaScript, TypeScript etc...
Показов 4345 Комментарии 0
Метки exif, javascript, jpeg

Нажмите на изображение для увеличения
Название: 0039dcd3-7e5a-47fd-a267-06ccd07b4d6a.jpg
Просмотров: 222
Размер:	152.7 Кб
ID:	10459
Работа с изображениями в веб-разработке нередко выходит за рамки простого отображения картинки. Современные задачи требуют глубокого понимания структуры файлов и умения манипулировать их внутренними данными. Особое место здесь занимает формат JPEG с его богатыми возможностями метаданных, в частности – EXIF.

Что такое EXIF и почему это важно



EXIF (Exchangeable Image File Format) – стандарт, определяющий формат хранения...
Аватар для run.dev
Старый
Перечисления в TypeScript: использование и лучшие практики
Запись от run.dev размещена 18.03.2025 в 08:50 / JavaScript, TypeScript etc...
Показов 3237 Комментарии 0
Метки angular, react, typescript, vue

Нажмите на изображение для увеличения
Название: 101b7dac-a2b9-4616-a931-29f09fce5413.jpg
Просмотров: 405
Размер:	143.0 Кб
ID:	10446
Пишете код и устали от разбросанных по проекту "волшебных" строк и чисел? Знакомая ситуация: где-то в глубине кода притаилась строка "ADMIN", а в другом месте используется "admin". И вот уже пользователь с правами администратора не может войти в систему, а вы тратите часы на отладку. TypeScript предлагает решение этой проблемы – перечисления или enum. По сути, это специальный класс,...
Аватар для run.dev
Старый
Создаем микросервисы с NestJS, TCP и Typescript
Запись от run.dev размещена 17.03.2025 в 17:26 / JavaScript, TypeScript etc...
Показов 4984 Комментарии 0

Нажмите на изображение для увеличения
Название: 5f67227f-09f5-48b1-ae2d-ac3a562d1e65.jpg
Просмотров: 294
Размер:	164.1 Кб
ID:	10438
NestJS — фреймворк, который значительно упрощает создание серверных приложений на Node.js. Его прелесть в том, что он комбинирует концепции ООП, функционального программирования и предлагает архитектуру, вдохновленную Angular, делая разработку микросервисов интуитивно понятной для многих разработчиков. В паре с TypeScript этот фреймворк становится мощным инструментом...
Аватар для run.dev
Старый
Deno против Node.js: Будущее JavaScript рантайма
Запись от run.dev размещена 16.03.2025 в 11:12 / JavaScript, TypeScript etc...
Показов 1683 Комментарии 0

Нажмите на изображение для увеличения
Название: d20fdeca-ed54-4dcb-9a60-2a852c8f8d83.png
Просмотров: 241
Размер:	990.1 Кб
ID:	10418
За последнее десятилетие Node.js стал абсолютным лидером среди JavaScript-рантаймов и фактическим стандартом для серверной разработки на JavaScript. Но в 2018 году тот же разработчик, который создал Node.js — Райан Даль — представил новый проект: Deno. Интересно, что сам Даль назвал Deno "исправлением ошибок", допущенных при создании...
Аватар для run.dev
Старый
Бессерверный JavaScript: Разработка масштабируемых API с AWS Lambda
Запись от run.dev размещена 14.03.2025 в 21:34 / JavaScript, TypeScript etc...
Показов 1757 Комментарии 0

Нажмите на изображение для увеличения
Название: c2385153-98ed-4909-8f81-3a300ac96c09.jpg
Просмотров: 275
Размер:	116.5 Кб
ID:	10402
Но что такое бессерверные вычисления на самом деле? По сути, это модель облачных вычислений, где разработчик фокусируется исключительно на создании бизнес-логики, не тратя время на настройку серверов, обновление ПО и мониторинг инфраструктуры. При таком подходе...
Аватар для run.dev
Старый
Предотвращение XSS, CSRF и SQL-инъекций в JavaScript
Запись от run.dev размещена 13.03.2025 в 09:19 / JavaScript, TypeScript etc...
Показов 5481 Комментарии 0

Нажмите на изображение для увеличения
Название: 90ac2e90-4586-4386-8411-367d8a42a553.jpg
Просмотров: 356
Размер:	165.7 Кб
ID:	10381
JavaScript занимает первые позиции среди языков веб-разработки, но его распространенность делает его привлекательной целью для злоумышленников. Межсайтовый скриптинг (XSS), межсайтовая подделка запросов (CSRF) и SQL-инъекции — три наиболее опасные уязвимости, которые могут...
Аватар для run.dev
Старый
Создаем утилиты CLI с помощью Node.js
Запись от run.dev размещена 07.03.2025 в 21:16 / JavaScript, TypeScript etc...
Показов 2962 Комментарии 0
Метки cli, node.js

Нажмите на изображение для увеличения
Название: 96ba395b-2990-4e41-83aa-7b81028ad780.jpg
Просмотров: 557
Размер:	134.9 Кб
ID:	10339
Помню те времена, когда командная строка считалась уделом гиков и сисадминов. Они давно прошли. Но история повторяется и интерфейс командной строки (CLI) снова ягодка опять в средах разработки и стал важной частью инструментария современного программиста. Не всегда удобной, но важной. CLI-инструменты — это приложения, которые взаимодействуют с пользователем через текстовые команды в терминале или командной строке. От npm и git до более специализированных...
Аватар для run.dev
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru