Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Сколько можно подключить usb флешек в линуксе?

Лучший ответ:
Вам ни чем не поможет чей-то частный опыт, как это всегда и бывает. Потому что все весьма сильно зависит от конкретной конфигурации.
Математика - простая: учитывая, что за устройство считаются и хабы, в ключая корневой, а максимум устройств на одном контроллере по спецификации USB - 127, при семипортовых хабах включенных каскадом, максимум на один контроллер будет 108 свободных портов, при четырехпортовых - всего 94. При этом, нужно понимать, что поскольку каждое устройство получает свой номер в пределах типа (major number), а число устройств одного типа ограничено размером minor number в один байт (256) - это, в общем случае, ограничение драйвера в Linux. Однако, в отдельных случаях, все это не имеет значения, потому что под конкретный Линукс что-то собрано не так, не оттуда или не из того, потому, например, более 20 устройств не видны вообще. Не забываем, также, про необходимость внешнего питания всему этому дереву из хабов и самих устройств. А еще - про то, что скорость доступа к устройствам делится между ними, и каждому достается обратно пропорционально их количеству.
Так что если вы действительно собрались копировать flash-накопители (а не майнить биткоины внешними ASIC-устройствами, например), при каскадной конфигурации подключения, скорость записи будет, как во времена dial-up модемов. Что-то мне подсказывает, что вас это не устроит.

Худший ответ:
Теоретически - до 127 устройств (физическое ограничение), в плане монтирования именно из под ОС думаю нет ограничений
Вопрос: Как использовать дочерний класс сущности или класс-декоратор в SonataAdminBundle (Symfony3, Doctrine ORM)?

Лучший ответ:
Не надо ничего наследовать, декорирать и создавать новые меттоды 
Для list - кастомный шаблон
Для форм - слушатели или типы

Худший ответ:
Т.е. Doctrine ORM (ВНЕЗАПНО) считает, что это какая-то совершенно другая сущность, для которой нет mapping-информации.
Пардоньте, а как ЕЩЕ ей реагировать? Вы создали новую сущность в папке для сущностей и аннотировали ее сущностью. От того, что она маппится с таблицы,  с которой уже маппится другая сущность, доктрине ни жарко, ни холодно.Действия, описанные в мануале по классам-декораторам в Doctrine ORM, привели к совершенно не тому результату, который ожидался.
Разумеется, ведь статья немного не про вашу проблему. И кроме этого, вы упустили прямо таки ключевой кусок, а именно:** @MappedSuperclass */
abstract class Decorator extends Component
По решению проблемы выше уже написали: вам нужно сделать свой шаблон для поля. Ковырньте бандл типа SonataNews, там точно были кастомные шаблоны для листа.
Вопрос: Как перенести проект с Codeigniter на Yii2?

Лучший ответ:
Как безболезненно его портировать на Yii2?
Безболезненно - никак, от слова "совсем".
Переписываете поблочно. Вполне возможно, что придется пошаманить с базовой инициализацией и она будет общая. В старом коде можно использовать новый, но ни в коем случае не наоборот.Самый большой вопрос о замене коробочных методов.
Пишите обертки для использования в старом коде нового.

Худший ответ:
Нужно писать бизнес-логику независимой от фреймворка. Обкладывая доменную модель интерфейсами со всех сторон. Тогда при переезде на любой другой фреймворк переписать придется только реализации этих интерфейсов, контроллеры фреймворка, которые должны состоять из 2-3 строк кода и вьюшки. Можете погуглить и посмотреть реализации DDD архитектур например.
Но сейчас нет выбора, нужно пересматривать каждый кусок кода, который делает обращения к codeigniter. То есть по-сути заново написать проект. На Yii2 тоже 99% пишут зависимый от фреймворка код. Можно перед переездом почитать что-то по архитектуре и сделать БЛ максимально независимой от фреймворка. Чтобы в будущем здесь не появился очередной вопрос "Как перенести проект с Yii2 на Symfony?".
Но не всегда это оправдано. Это не быстро и не для простых crud проектов. Поэтому возможно будет выгоднее с каждым переездом на новый фреймворк переписывать проект, если он относительно не сложный, чем пытаться выстроить архитектуру вокруг всего этого.
Вопрос: Можно ли так присваивать значения в ассоциативном массиве?

Лучший ответ:
Можно.

Худший ответ:
Нужно
Вопрос: Как сделать код html в одну строку?

Лучший ответ:
Тег {% spaceless %}, хотя он не уберет все переносы, т.к. это может сломать код. Если нужно прям все перносы убрать, то сделайте свой тег на основе джанговского.
Но мне гораздо больше нравится фильтр в pagespeed модуле nginx:pagespeed on;
pagespeed EnableFilters collapse_whitespace;
Он работает гораздо быстрее, хотя опять-таки не все переносы убирает. Но возможно такой вариант, тоже подойдет.

Худший ответ:
Да практически так же:>>> a = """
... <!DOCTYPE html>
... <html lang="en">
... <head>
...     <meta charset="UTF-8">
...     <title>Title</title>
... </head>
... <body>
... 
... </body>
... </html>
... """

>>> import re
>>> a1 = a.replace("\r\n"," ")
>>> a1
'\n<!DOCTYPE html>\n<html lang="en">\n<head>\n    <meta charset="UTF-8">\n    <title>Title</title>\n</head>\n<body>\n\n</body>\n</html>\n'

>>> re.sub("/((?<=>)|(?<=--)|(?<=.))[\s\n\r\t]+((?=--)|(?=<))/U",'', a1)
'\n<!DOCTYPE html>\n<html lang="en">\n<head>\n    <meta charset="UTF-8">\n    <title>Title</title>\n</head>\n<body>\n\n</body>\n</html>\n'
Вопрос: Почему в алгоритмах хэширования отсутствуют заглавные буквы A-Z?

Лучший ответ:
они буквы вообще не используют
это цифры

Худший ответ:
Потому что результатом хеширования является набор байтов, а не текстовая строка. Байт - это шестнадцатеричная система счисления. А вот уже для представления байт в понятном человеку виде обычно используются представлением, в котором есть только цифры 0-9 и буквы а-f (итого получается 16 символов). 
Почему эти буквы в данном случае не заглавные - так принято (хотя, по идее, в данном применении 1A и 1а эквивалентны). 
Также это улучшает читаемость длинной сплошной последовательности символов.
Вопрос: Для чего и почему надо делать подтверждение паспорта владельца домена?

Лучший ответ:
С одной стороны можно подумать "Да какое право они имеют требовать паспорт - это личный документ?!". Да, есть регистраторы которые требуют паспортные данные, некоторые не требуют.
А с другой, в случае спорных каких-либо моментов (не дай бог, конечно). Как доказать, что домен именно ваш? А вы это вы?
Верификация через email: а если его взломают;
Верификация через телефон: а если утерян будет или еще чего;
Может все же и правильно, что необходима подобная верификация?
Спокойнее, как то, что ли.
Я брала домен через Majordomo - они требуют паспорт. Предоставляют что-то вроде "сертификата владельца".

Худший ответ:
Вот разместите вы материал про наркотики, или любой другой, который нарушает законы РФ. А роспотребнадзору не известно к кому идти и кого за это наказывать.
Вопрос: Какой тематики сайтов в тренде сейчас?

Лучший ответ:
Все таки непонятен смысл, за чем следить? за развитием сайта?
Не лучше ли создать сайт с интересующей тебя тематикой?

Худший ответ:
Думаю, конечной Вашей целью всё же является заработок. Себе хотя бы признайтесь )
Вот темы, которые сечас в тренде:
фильмы, сериалы
медицина
строительство
авто
финансы
путешествия
дизайн
музыка
Вопрос: Какой web фреймворк использовать для go?

Лучший ответ:
Есть довольно популярное в отрасли мнение (я его же придерживаюсь), что в Go нет действительно нужных фреймворков. Возможно они что-то и упрощают, но в сложных проектах вы будете не один и, соответственно, учить фреймворк придётся всем. При этом мощных преимуществ у фреймворков (типа как в JS) в Go нет. Это касается любых фреймворков, не только веб.
При этом я не призываю отказываться от полезных разных внешних пакетов-зависимостей. Главное, чтобы они были узконаправленными и не меняли идиоматику языка.

Худший ответ:
Gin один из самых популярных, по моему мнению и самый удобный. Также по gin можно легко найти нужные решения в интернете что довольно неплохо для разработчика;) 
Но если вам нужна бешенная скорость то это fasthttp, его скорость может сравниться со скоростью C/C++
Вопрос: Порекомендуйте курсы по HTML/CSS для вебдизайнера?

Лучший ответ:
Эти хорошие

Худший ответ:
Говорят, на Coursera хорошие уроки, но сам не пробовал
Вопрос: Как в Express работает маршрутизация?

Лучший ответ:
 однообразные функции?
У вас все функции разные, вынесите свою локигу в NotesController. 
И не забывайте что это учебный пример и такой cb будет подлиннее 1 строки. 
Посоветую глянуть что такое middleware и как error обрабатывать в express, вот это сразу режет глаз

Худший ответ:
В качестве маршрута можно использовать регулярные выражения. Есть обработчик .any() в котором можно выцепить из req конкретный тип запроса (get/post/delete/put). Ну и есть app.route(), который может объединять обработчики в одну цепочку (в комбинации с регулярными выражениями). app.route().get().post().put().delete()
Вопрос: Как сделана такая анимация с открытием книжки?

Лучший ответ:
Смотрите здесь https://tympanus.net/codrops/2013/07/11/animated-b...

Худший ответ:
Вращение вокруг оси Y. Можете погуглить "css transform rotate".
Вопрос: Что нужно для написание сайтов на ubuntu?

Лучший ответ:
завтра думаю переустанавливать windows и ставить ubuntu
Решение в правильном направлении.
Только Windows нужно не переустанавливать, а сносить, а Linux - ставить.Меня интересуют веб-сервер(локальный), можно ли и как поставить phpstorm(IDE) и что еще туда нужно? 
Всё нужное легко найдёте и поставите.
Конечно, некоторое время привыкать придется.

Худший ответ:
мне на Gnome 3 хватает sublime-text  плюс xammp плюс codepen
Вопрос: Дистанционное удаление почты и сетевых настроек на ios?

Лучший ответ:
https://habrahabr.ru/post/277763/
Изучайте.

Худший ответ:
а шифрования разве нет на iphone?
Вопрос: Одновременный доступ нескольких программ к com порту, как?

Лучший ответ:
Да никак. Com-порт никогда не подразумевал общение с несколькими устройствами, так как нет ни арбитража, ни присвоения адреса и т.д. Так что пока один подключенный клиент не отвалит, второму на порту делать нечего.
Читать порт двумя приложениями можно без проблем с точки зрения порта, а вот писать в порт из нескольких приложений - большая проблема, так как вы не можете знать, не попытается ли другое приложение установить связь, когда вы общаетнсь по порту с устройством. Максимум, что можно сделать - ставить клиентов на очередь при попытке записи в порт.

Худший ответ:
Начать нужно с анализа протокола анализатора. Ищите документацию, или воспользуйтесь перехватом пакетов, чтобы узнать, что там передается.
Вопрос: Как отобразить img(любой тег) в Wordpress?

Лучший ответ:
Советую выпить чайку, переосмыслить ваш вопрос и что вы хотите сделать, и задать его ещё разок, а мы подождём.

Худший ответ:
=) Я так понял есть некая структура сайта в которой картинке показываются в отрыве от основного контента, если так то ройте в сторону advanced custom fields
Вопрос: Как создают приложения для сайтов?

Лучший ответ:
Создается обычное Android приложение, данные загружаются/отправляются через API сайта (веб-сервиса) обычным GET/POST запросом по URL

Худший ответ:
Есть решения вроде www.appsgeyser.com - на входе веб-страничка или архив с ней, на выходе apk
Или есть PhoneGap/Cordova, например.
Вопрос: Какой самый быстрый браузер?

Лучший ответ:
Чем ответы поисковиков тебя не удовлетворили? Веб разработчик, который не может нагуглить себе браузер...

Худший ответ:
Слабый - это сколько оперативки?
Доставьте (докупите) хотя бы до 4GB. И тогда уже используйте любой браузер.
Где-то с 32GB начинается комфортная жизнь, можно параллельно и фотошоп, и премьер, и рам-диск, и виртуалку, и игры всякие запускать. Простите, размечтался. Слабый ПК - зло.
Вопрос: Какие сборки Linux лучше для изучения и дальнейшего пользования?

Лучший ответ:
Вопросы 1 и 2 я пропущу- потому что это спровоцирует тут нехилый холиварчик :) В понятие "лучший" всегда вкладывается личный смысл. С моей точки зрения для серверов лучший дистриб - это CentOS. Если бы они не продали душу Поттерингу в 7-й версии - я бы с него не ушел.
3. Любой популярный дистриб имеет множество приложений, дополнительных репозиториев, коммунити. Оно может быть больше или меньше, но оно всегда есть.
4 - 5. Любой дистриб, потому что большая часть приложений работает в любом дистрибе
6. Любой source-based. Все пакетные дистрибы основаны на том факте, что Вы ставите только пакеты и руками в систему не лезете, некоторые даже не предполагают работу в консоли - только через настроечный гуй
7. Gentoo однозначно. Если уж совсем хочется полного хардкора - slakware или LFS
8. Коммунити есть у каждого дистриба.
В развитии дистрибов есть сейчас две линии - и как бы мы ни открещивались от этого, оно существует обьективно. Есть пакетные дистрибы, развитие которых идет в сторону приближения к юзеру - в сторону упрощения, уменьшения, скрытия. Почему им всем понравился systemd - c одной стороны он свою работу делает, с другой стороны он мутный, сложный с бинарными логами - юзер просто так в него не полезет. Пакетные дистрибы основаны на том факте, что ничего в систему не ставится помимо пакетов, если же это правило нарушить - можно огрести много-много проблем. Они конечно все решаемые, но нужно иметь достаточную квалификацию, чтобы их разгрести.
Есть source-based дистрибы, развитие которых идет по классической линии - для того, чтобы развернуть систему, нужно обладать достаточной квалификацией, чтобы ее развернуть. Старт там труднее, но после того, как одолеешь порог входа, работа с любым пакетным дистрибом щелкается как орешек.
Почему обычно советуют бубунту? Считается, что это наиболее легкий в освоении дистриб. Но освоив бубунту/федору/дебиан или даже центос/RH/SUSE - Вы освоите именно дистрибутив. Да, знания по общему устройству Linux тоже будут. Но в основном будут знания о том, какими кнопочками (в лучшем случае, какими командами) настраивать те или иные сервисы - установка дистриба, управление пакетами и настройка сервисов в любом дистрибе своя. Освоив source-based дистриб - Вы освоите именно Linux - потому что понятие "дружественный source-based дистриб" - это немного анекдот. Чтобы этот "дружественный" дистриб взлетел - придется долго и упорно гуглить.

Худший ответ:
лучший для изучения Linux(как системы)
Если самый не хлопотный - Mint (17, 18)лучший для изучения Linux(как сервера для администрирования)
Fedora (23, 24)
Вопрос: Какой реальных доход с продаж шаблонов дизайна и тем сайтов?

Лучший ответ:
Самый верный способ узнать, это зайти в профиль средненького автора, посмотреть кол-во его покупок и вычесть среднюю сумму каждого его шаблона, и умножить цену на кол-во покупок.
Насколько мне известно, есть иллюстраторы которые на стоках получают 20к рублей, а есть те кто получают 200к рублей, а есть те кто вообще никаких прибыли не имеют. Тоже самое и с шаблонами на themeforest или других площадках. Все зависит от того, взлетит ли ваш товар среди выбранной аудитории или нет.

Худший ответ:
Чтобы делать шаблоны для сайтов типо темфорест, придется "заморочиться" очень серьезно. Потому что требования к работам там очень высокие и чтобы шаблон попал на сайт придется кропотливо и чисто поработать. а дальше как повезет.
Вопрос: Что дает Java Spring?

Лучший ответ:
Spring Framework, как и любой другой уважающий себя framework, дает Вам основу, скелет, систему координат, в которой Вы (а еще важнее не только Вы, но и другие разработчики) разбираетесь и ориентируетесь. И вот используя этот скелет, можно строить приложения. В основе своей Spring Framework это про бины, управление бинами и IoC (Inversion of Control). Поверх всего этого строятся остальные модули Spring Security, Spring MVC и прочие (тысячи их!).

Худший ответ:
Привет
Прочитай книжку Spring для профессионалов 4 - поймешь, для чего нужен спринг, и что он тебе дает в общем. Если тебе просто нужно сделать какой-то сайт или веб-проект в одни руки или маленькой командой, то сразу забей и беги от Spring - это явно не твой выбор.
Вопрос: Как восстановить программный RAID1?

Лучший ответ:
Каким мануалом по замене диска в массиве пользовались?
На сколько я помню, порядок такой:
1. помечаем раздел sdb1 в массиве md0 как сбойный:mdadm --manage /dev/md0 --fail /dev/sdb1
2. Удаляем раздел sdb1 из массива md0:mdadm --manage /dev/md0 --remove /dev/sdb1
3. скопировать разметку с диска sda на новый диск sdb. (Выполнять нужно с чистой головой, чтобы не затереть вообще все данные!!!)sfdisk -d /dev/sda | sfdisk --force /dev/sdb
4. Добавляем новый раздел в массив md0mdadm --manage /dev/md0 --add /dev/sdb1

Худший ответ:
ты   на новй диск разделы перенес ?
Вопрос: Есть ли готовые решения или best practice для организации backup'ов с контролем версии?

Лучший ответ:
Почитайте о bacula

Худший ответ:
Если нужна оперативная синхронизация - то лучше воспользоваться https://syncthing.net/ или аналогами.
Для резервных копий посоветую rsnapshot rsnapshot.org . Позволяет хранить несколько копий, одинаковые файлы не будут дублироваться за счет жестких ссылок.
Вопрос: Почему перезагружается страница при отправке аякс-формы в popup?

Лучший ответ:
submit,button  - не важно, preventDefault решает
перезагрузки не увидел, однако Ajax у вас сделан через зад так делать не надо

Худший ответ:
скорее всего связано с тем что у кнопки type="submit" он в любом случае отправляет форму перезагрузив страницу , попробуйте type="button"
Вопрос: Перенос Zabbix 3.2 на другой сервер — как сделать?

Лучший ответ:
План переезда по личному опыту - я возил 3 раза большие базы zabbix в mysql от 300гб и больше.
1 Устанавливаете zabbix и mysql идентичных версий на новом сервере
2 останавливаете zabbix на новом сервере
3 при помощи percona-toolsделаете бекап базы и везете его на новый сервер
4 поднимаете mysql репликацию с старого на новый
5 добавляете хостнейм/ип нового сервера в конфиги всех агентов
6 стопаете myql и заббикс на старом
7 убираете репликацию на новом
8 запускаете заббикс на новом
9 убираете ип старого на всех агентах
Итого даунтайм не больше 5 минут.

Худший ответ:
Итак, что в итоге сделано для успешного переноса Zabbix.
1) На новом сервере развернул Zabbix той же версии.
-скопированы конфиги, алерт-скрипты, внешние скрипты
-"стандартная" база данных развернута на системных HDD, по стандартному пути /var/lib/mysql
2) На старом сервере сделал бекапы через innobackupex, mysqldump. 
3) На обоих серверах остановил mysql, файлы из /var/lib/mysql старого сервера скопировал в ту же папку на новом сервере.
4) Запустил на новом сервере mysql. Запустился. Делаю mysql_upgrade - утилита менее чем за минуту проверила все таблицы базы на совместимость с новой версией MariaDB (на старом была 10.0, на новом 10.1). Отлично
5) Перенес SSD из старого сервера в новый, собрал из них RAID1 (на старом сервере HP контроллер, на новом mdadm). 
6) Смонтировал RAID в папку (/srv/ssd, можно в любую пустую), скопировал в /srv/ssd/mysql "проверенные" данные из /var/lib/mysql. 
7) Очистил /var/lib/mysql, примонтировал туда /srv/ssd/mysql.
6) Запустил mysql - работает.
7) Остановил старый сервер, назначил новому серверу ip старого, чтобы не перенастраивать тысячи zabbix-агентов.
8) PROFIT!
Всем спасибо за советы!
Вопрос: Объекты в python?

Лучший ответ:
Касательно фразы "Объект это ведь экземпляр класса". 
Эта фраза из объектно-ориентированного программирования (ООП). Сама она значит, что у каждого объекта есть какой-то класс, или иначе говоря объект является его экземпляром. Но здесь Вы смешиваете объектную модель Python с ООП, а это разные вещи. В Python любой экземпляр класса это объект, но далеко не все объекты это просто экземпляры класса. 
К примеру, объектом является также класс, экземпляры этого класса (которые в ООП и называются объектами) тоже объекты, но лишь одни из возможных видов объектов в Python. 
В Python, чтобы быть объектом участку памяти нужно иметь тип и количество ссылок на этот участок памяти (https://habrahabr.ru/company/buruki/blog/189986/). 
Перечень всех встроенных типов можно найти здесь: https://docs.python.org/3/library/stdtypes.html. 
Что касается "объект строки это экземпляр от какого то класса?". 
Если говорить на языке ООП есть класс строк (в Python его имя str), любая конкретная строка, например 'я_строка', есть экземпляр класса строк или, иначе говоря, объект класса строк. 
А если говорить на языке объектной модели Python: str - класс объектов, который и сам тоже объект. 
А любой его экземпляр (какая-либо строка) - тоже объект. 
В общем в ООП экземпляр и объект одно и то же, в Python - нет. 
С практической точки зрения фраза "все есть объект" говорит, что что угодно можно присвоить переменной, передать в качестве аргумента функции, вернуть, как результат функции и т.д. 
Например, в качестве аргумента или результата функции может быть другая функция или даже какой-либо класс (встроенный или созданный Вами).  
Вообще такие вещи определяют гибкость языка, что в свою очередь иногда позволяет сделать значительно более простое и короткое решение.

Худший ответ:
Если кратко: здесь имеется ввиду что существует первородный класс _object_ и все остальные типы (включая пользовательские и дефолтные) являются наследниками этого класса. Для примера строка это объект (в значении этого слова как экземпляр класса) класса str, но данный класс является наследником класса object.
Если более полно то рекомендую читать Лутца, он рассказывает в том числе и об внутреннем устройстве python.
Вопрос: Чтобы получить самый безопасный,приватный мессенджер- надо его сделать самому [параноик]?

Лучший ответ:
Вот вы сделали свой чат, дали другу ссылку, причем полностью ему доверяете, он честный и преданный вам человек. А у него на компе троян, который делает скриншоты экрана. Да и сам экран повернут к окну без штор. Со смартфона смотрит камера, и микрофон случает. А что отвечать ментам, когда они просто придут и спросят, чё да как?
А вообще не стоит переживать, если вы не террорист, конечно. Потому что в большинстве случаев вы никому не нужны. Пользуйтесь обычными мессенжерами. Ваши тайны может быть в теории(!) и попадут в секретные организации, но не попадут к друзьям, врагам, родственникам, конкурентам, любым другим простым людям. Вот лично я для простоты считаю, что меня читают все, кому не лень. Так что если завтра вся моя личная жизнь будет опубликована, я просто пожму плечами. Хотя будет интересно, где дыра - то есть это приключение, может статью напишу. Как вы понимаете, просто так палиться секретным службам нет смысла. Это если они вообще существуют. Но параноики считают, что существуют, да.

Худший ответ:
Да :)
Собственно поэтому Дуров и сделал телегу изначально (во что она потом превратилась - не будем :) )
Свой сервер (аппаратный, не VPS), свой протокол, свой программный сервер, свой клиент, минимум, а лучше всего отсутствие внешних закрытых библиотек - а только те, у которых доступен исходный код, причем для сборки использовать самостоятельно построенные из прошедшего аудит кода :) (о чем забывают многие - не факт, что готовая либа - одно и то же с ее исходниками :) )...
Правда, когда за Вами придут и спросят ключи шифрования (ну или что у Вас там будет) - отказать не сможете :) Дуров, скажете смог. Во-первых, это доподлинно неизвестно, а во-вторых у Вас столько денег не будет :)
Вопрос: Лучше самописный блог или на движке Wordpress?

Лучший ответ:
Конечно если у вас есть время и желание, то почему бы и нет? Но я согласна с BadassRolf, зачем придумывать велосипед. Кроме того, чтобы сделать действительно качественную CMS вам понадобится очень много времени. Плюс, кроме того вы же должны понимать, что о её безопасности вам тоже придётся заботится, а это много строк кода, сил, и конечно же, вашего времени. Для простого блога берите Wordpress, а если вам так захочется каких-то особенных фишек, и кодить: напишите свой плагин под него)

Худший ответ:
Применил укозовский движок. Все было предельно быстро, задумку реализовал как представлялось без особых познаний rock-magnet.ucoz.ru