Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как в REACT-REDUX сделать, чтобы перерендеривался только один элемент?

Лучший ответ:
Гляньте вот этот ответ React-Redux. Какой путь правильнее: вызов connect ...
Если кратко: Избавьтесь от коннектов, которые слушают большие куски стейта Используйте reselect, для вычислений стейта (например, когда собираете элемент из разных редьюсеров) Используйте connect элементах, которым нужны данные. Их может быть много. Список из 1000 connected-elements работает быстрее, чем список из 1000 элементов с 1м connected-element. Потому что даже PureComponent имеет свой оверхед и если дочерний компонент не обновился - это не значит, что diff алгоритм реакта не будет обрабатывать изменения в родительском компоненте

Худший ответ:
Когда вызывается метод render это не значит, что приложение перерендерится. Метод render возвращает Virtual DOM. Механизм ReactJS берет возвращаемый объект Virtual DOM, сравнивает с предыдущим и точечно вносит изменения, если они есть.
Вопрос: Как работает react js?

Лучший ответ:
1. Грубо-говоря есть 1 страница в которую данные приходят по REST интерфейсу с ModX и он не участвует, непосредственно, в рендере. Сам по себе реакт рендерит страничку по кусочкам(компонентам), но вот внутри нет хорошего механизма для проверки нужно ли менять эти кусочки в DOM дереве - есть PureRenderMixin, но часто нужно городить руками.
2. Нет эта страница не должна перегружаться и от реакта в таком случае толку 0. Реакт - это шаблонизатор в MVC, он не занимается работой с моделью и в нём нет бизнес-логики.
3. Flux - это православный CQRS-ES, и непосредственно к modx отношения не имеет. Полноценной реализации этого паттерна, по всем канонам и с SOA, сейчас нет. Так что не стоит заморачиваться. Для работы с подобными вещами РНР / Python / Ruby довольно плохо подходят, так как там нужна асинхронность / многопоточность прямо с коробки, и без костылей типа gearmand или celery.
4. Надо ковыряться в самом реакте - там много недочётов и недоделок, но сейчас это наиболее полноценное и типобезопасное решение для рендеринга посредством VirtualDOM.

Худший ответ:
Возможно вам поможет подробный курс на русском языке по react.js
Вопрос: Как заказчики относятся к react native?

Лучший ответ:
Хочешь сразу на все платформы и дёшево (и достаточно простой проект), готов к тому что функционал может быть порезан из-за невозможности реализации? ReactNative
Много бабла и нужно бескомпромиссное качество - только native.
Думаю, этих двух предложений хватит чтоб говорить с заказчиком =)

Худший ответ:
Очевидно, что они не будут выбирать технологию, потому что она тебе интересна. 
Тебе, как и с любой другой технологией, необходимо её продать. Найти +/- и искать подходящие проекты.
Вопрос: Передача больших файлов

Лучший ответ:
А чем плохо использовать bittorrent с magnet url's?
а если еще DHT включить, то шансы есть даже получить дополнительных внешних сидов

Худший ответ:
Можно использовать шаринг-ресурсы, типа 4shared.com. Макс. размер файла там 2 Гб (конкретно на 4shared), файл просплитить (через total cmd например), залить туда — дать ссылки или акк, если сервис не допускает публичных ссылок. Я так таскал файлы от людей, которые не очень прошарены и для которых существенной проблемой является создания torrent'а. К тому же еще есть + в том, что закачал один раз и не нужно быть в сети, чтобы раздавать.

Вообщем, если подитожить — облачные хранилища данных, я бы в их сторону смотрел.
Вопрос: Как сделать такой parallax + svg?

Лучший ответ:
В общем я отыскал для себя 2 варианта: 
1) это воспользоватся нативным скроллом вот я примерчик быстро наваял codepen.io/dark19/pen/ybboPw , но есть проблемка в том, что я не придумал как задерживать секцию до полного выполнения анимации, может кто знает, то подскажитет;
2) это воспользоватся готовым решением с помощью плагинов GSAP и ScrollMagic (как мне тут подсказали, но удалили коммент). Вот этим вариантом я и воспользовался. Но нужно хорошо разобраться в документации.
На jquery мне показалось проще как-то все сделать, но у меня не было там сверхзадач в проекте. Мне нужно было просто заполнять свг линию цветом и по мере её заполнения в некоторых участках анимировать блоки html(тут ещё есть грабли: рисуйте svg как path потому, что потом вы не сможете заполнить его цветом, там нужно будет использовать свойства stroke-dasharray и stroke-dashoffset). Но я все таки воспользовался плагинами, хотя, я думаю, зря, так как я вручную прописывал точки заполнения свг и когда должна произойти анимация, по другому я не знаю как вычислить степень заполнения линии. Вот вам ещё пример GSAP + ScrollMagic правда тут он без эффектов codepen.io/dark19/pen/WjwoWm

Худший ответ:
Используй js события скролла.
Вопрос: Как это реализовано на Яндекс API?

Лучший ответ:
При обводке на мышь ставится эвент.
Кнопка зажимается - высчитываем с каждым перемещением курсора положение, рисуя при этом с помощью метода YMaps.Polygon линию. Соединяем первую и последнюю линию между собой, завершая "чертеж".
После высчитываются метки входящие в этот полигон, добавляются в группу, а остальные скрываются.
Как только метки скрыли - с помощью метода getCenterAndZoom объекта bounds определяем нужный центр/зум обводки.

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

Лучший ответ:
Ну или у картинки прописать opacity, а у элемента, в котором она находится background-color: black;
То есть что-то типа этого - codepen.io/anon/pen/dGEGBE

Худший ответ:
наложить див с черным беграундом и opacity поставить нужное
Вопрос: Какой процент пользователей ставит баннерорезки?

Лучший ответ:
1. Ставите банер со сбором статистики
2. Собираете сайтом статистику о входах
3. Делите количество посещений из статистики сайта на количество посещений из статистики банера
4.!!!
5. Получаете математическое соотношение, проценты вычислите сами.
Вообще от людей зависит, на хабре больше рекламы режут, на женских форумах меньше итд.

Худший ответ:
Спасибо! Отличный вариант!
Вопрос: Как сделать одинаковое отображение верстки на различных мониторах?

Лучший ответ:
Шрифты делайте в em, задав основной размер один раз. Верстайте по сетке (кастомизировать можно под разрешения) + медиа запросы, про картинки в поиске посмотрите под ретину были уже решения.

Худший ответ:
Согласен с Алексеем. Добавлю, что самая распространенная сетка - bootStrap.
Для ознакомления с адаптивной версткой советую данное видео.
Вопрос: Сервер убивает PHP скрипт по таймауту. Что делать?

Лучший ответ:
увеличить таймаут

Худший ответ:
Рекомендую впредь не реализовывать такие массивные скрипты на php, т.к. его идея абсолютно не в жутких демонах.
Серьёзные люди используют под подходящие задачи подходящие языки.
Взгляните в сторону лаконичного Python и ему подобных - учится быстро, особенно после пыха (нет, я про php).
Вопрос: Как лучше собрать ПК из старого железа для дедушки?

Лучший ответ:
Бесполезный вариант клепать HTPC на старом железе да еще с 256 оперативы, нормальный вариант получить трудно.
Уж лучше купить у китайцев android tv box они от $30, брать версию с 1гб оперативы или больше, зато и место не занимает и не шумит и свет почти не жрет. Любое приложение ютуба или кинотеатра из маркета и не только, HDMI + CVBS RCA на борту - подключай хоть к плазме хоть к аквариуму. В настоящее время это лучший вариант.

Худший ответ:
Память. Без 2 гигабайтов вообще делать нечего (некомфортно будет)
Может что получится до 4-х довести?
Вопрос: Находится ли точка в произвольно нарисованной фигуре?

Лучший ответ:
Находится.

Худший ответ:
Если есть произвольная замкнутая ломаная и точка: проводим из точки луч в верх, считаем количество пересечений с отрезками составляющими ломаную. Если нечетное -- внутри, иначе -- снаружи. Отрезки стоит брать полуоткрытые, чтобы избежать проблем при прохождении через узлы ломаной.
Вопрос: Где подключать js в теме wordpress «color mag»?

Лучший ответ:
Правильное подключение js в  WordPress темы

Худший ответ:
С помощью хука wp_enqueue_script
Вопрос: Не удаётся вывести данные из БД php, в чём может быть проблема?

Лучший ответ:
email строка, а строки указываются в кавычках$res=$this->db->mysqli->query("SELECT * FROM user WHERE email='".mysql_real_escape_string($email)."'");

Худший ответ:
У вас SQL injection. Используйте PDO и prepared statements. А ещё лучше возьмите yii2
Вопрос: Проблема с роутером TP-LINK WR941ND на DD-WRT?

Лучший ответ:
Попробуйте нажать кнопку ресет, подержать 30 секунд, выключить питание, подождать 10 секунд и, не прекращая удерживать ресет, подождать еще 30 секунд. После этого можно попробовать пушить прошивку по TFTP (для верности, можно сначала залить прошивку с пометкой типа «clear nvram»)

LinkSys'ы и Asus'ы таким образом оживают. Из ~20 рутеров насмерть брикнуть ни удалось ни один.
В случае брика оживляли вышеуказанным способом.

Худший ответ:
Проверьте кстати жив ли загрузчик на роутере, подклбчившись к нему консольным кабелем. Знаю о случае, когда человек восстановил роутер скормив ему правильную прошивку через консоль загрузчика, предобразовав ее в HEX-коды и залив их через Hyperterminal
Вопрос: Нужен js для создания html edittable с любой СУБД (без PHP)?

Лучший ответ:
без PHP
Node.js? А совсем без серверного языка не обойтись.

Худший ответ:
> без PHP
Почему? ИМХО, необоснованное требование. Стоит пересмотреть задачу.
А так, ну есть в современном JS какое-то API для баз данных на клиенте, вроде WebSQL называется. В PhoneGap как раз оно вроде используется.
Вопрос: Стоит ли покупать arduino начинающему программисту?

Лучший ответ:
amperka.ru/product/matryoshka-z
замечательный набор как раз для новичков, такой же себе приобрел только Y.
wiki.amperka.ru
здесь найдешь много инфы полезной по работе с arduino.

Худший ответ:
Да.
Но только для самых основ основ.
Там все настолько просто.
Вопрос: Lingvo в Mac плодит кучу окон — как убрать?

Лучший ответ:
я просто подключил словари от лингво к родному dictionary.app.

Худший ответ:
Была, эта проблема. Перешел на гугл. Надоело каждый раз закрывать.
Вопрос: Что правильнее вернуть на Ajax-запрос?

Лучший ответ:
Если скрипт запрашивает количество непрочитанных сообщений, а их нет, то логично возвращать "0".
Бросать исключения необходимо в случае нестандартного завершения обработчика на сервере (ошибка).

Худший ответ:
а вернуть json массив ['result'=>1, 'error'=>false] религия не позволяет?
Вопрос: По какой схеме реализовать отправку сообщений по запросу в Telegram?

Лучший ответ:
Насколько я в курсе, у телеграма нет api для каналов.
Есть api для ботов - и там это разумеется возможно.

Худший ответ:
Сделайте бота. С его помощью можно реализовать то, что вы задумали.
Намного удобнее будет.
Отправляете список статей в виде меню, пользователь выбирает (нажимает кнопку в меню), открывается статья/дается ссылка на нее.
При желании можно отправлять не ссылку на статью, а ссылку на платежный шлюз, после оплаты присылать статью
Вопрос: Почему OpenSsl выдаёт ошибку?

Лучший ответ:
пароль ключа неверный?

Худший ответ:
Может он просто не RSA?
Вопрос: Кто-нибудь может помочь доработать парсер на python?

Лучший ответ:
Специализуюсь на сборе данных и очень вам советую:
1. Выбросить grab (на редкость глючное поделие).
2. Переписать на Scrapy, настроить RetryMiddleware.

Худший ответ:
Не пробовали кого нить нанять то ?
Вопрос: Почему все матрицы на ноутбуках синят картинку?

Лучший ответ:
Было бы отвратительно. TN матрицы надо запрещать как класс. От них глаза сильно устают. Открыл сайт на IPS так он выглядит одинаково на твоём мониторе и на мониторе товарища, а на TN зоопарк цветов

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

Лучший ответ:
Мож, так?var sticks = $(".fork > .stick");
if (sticks.length > 0){
   $(".menu").toogleClass(...)
   //или что там нужно
}

Худший ответ:
здесь только яваскрипт (jQuery)if($("div").hasClass("stick")){ //если в коде присутствует див с классом stick 
 $(".menu").css('display', 'block');
 //если несколько свойств
 $(".menu").css({'backgroundColor' : '#000', 'color':'#fff', 'padding':'5px'});
}
Вопрос: Как лучше сравнить результаты?

Лучший ответ:
Ну так а что вам мешает написать switch или if что если результат победа то выполнить такое условие и т.д

Худший ответ:
хранить же будете в БД? делаем таблицу прогнозов, таблицу результатов и таблицу балов.
потом делаем LEFT JOIN таблицы результат с таблицей прогноза, к ним JOIN таблицы баллов - и считаем сумму баллов, группируя по "прогнозисту" и игре.
профит
Вопрос: Как удалённо перезагрузить Server 2012 R2?

Лучший ответ:
psexec \\ip cmd.exe 
получишь консоль.
если работает там winrm  
то через powershell получить консоль enter-pssession ip
можно еще попробовать такshutdown -m ip -r -t 0
если не удается цепануться попробуй сначала выполнитьnet use \\ip\$ipc /user:user
и повторить команды выше

Худший ответ:
Есть такая статья interface31.ru/tech_it/2015/11/adminu-na-zametku-1... Вы все пробовали?
Вопрос: Сколько стоит доля в готовом бизнесе (веб-студия)?

Лучший ответ:
Делите шкуру не убитого медведя.  С таким подходом советую ничего не открывать.

Худший ответ:
Понимаю, что вопрос не корректный и глупый, но интересно узнать примерные данные. С другом создаём веб-студию в подмосковном городке с населением 120к человек. 
Стоимость продажи бизнеса связана с тем, сколько бизнес приносит прибыли.
Если бизнес надежный и стабильный, то стоимость продажи бизнеса исчисляется прибылью умноженной на годы. Например, на три. То есть покупатель уверен, что будет получать прибыль намного больше этих трех лет. 
Но в случае с веб-студии очень много "но", делающих такой бизнес непредсказуемым, поэтому я бы не надеялся бы ее продать дороже чем полугодовая прибыль даже в лучшем случае.
Разумеется проценты стоимости продажи доли пропорциональны доле участия в прибыли.каким образом можно будет получать доход с этой доли в случае если мы с другом например поругаемся и решим не работать вместе?
Почти никак.
Именно поэтому и стоимость продажи такая небольшая.
Если ты хочешь получать прибыль или продавать, то тебе нужно реально контролировать ключевые моменты работы студии: продажи клиентам.
Покупателя найти сложно, поскольку покупает он актив, который почти невозможно контролировать.
Самым уверенным покупателем может быть только совладелец.
Остальные покупают кота в мешке.
Вопрос: Теория категорий для чайника

Лучший ответ:
Довольно популярное, но в то же время формализованное изложение:
docs.google.com/Doc?docid=0Aa6kKaQaqdCZZGN4MzN3bWdfMjMwZHZ4dHozZHg&pli=1
docs.google.com/Doc?docid=0Aa6kKaQaqdCZZGN4MzN3bWdfMzE4Y3EyaDVwaGM

Худший ответ:
Википедию почитайте. Хотя мне вынесло мозг уже определение транзитивных множеств (множество, элементы которого являются подмножествами этого множества).
Вопрос: Можно ли через wifi адаптер одновременно раздавать и быть подключенным к сети?

Лучший ответ:
Одновременно быть клиентом и точкой доступа с одной вайфай карточкой нельзя, если вы это имели в виду.

Худший ответ:
Connectify умеет Wi-Fi Repeater Mode. Платная.
Правда я не понял при чём тут ssh.
Вопрос: В проверке с «&&» вторая часть не выполнится в случае ложной первой?

Лучший ответ:
Зависит от языка программирования. Например VisualBasic имеет два оператора - And и AndAlso. And всегда вычисляет оба аргумента, AndAlso вычисляет второй аргумент только если первый true.

Худший ответ:
Вот общее описание принципа и как это работает в разных языках: Short-circuit evaluation.
Вопрос: Доступ в интернет по 2 каналам. Возможно-ли?

Лучший ответ:
Да запросто -
Самое простое раскидать пользователей по каналам.
Чуть сложнее раскидать разные виды трафика по каналам.
Главное следить за тем чтобы ответ шел по тому же каналу что и запрос.
Из оборудования - микротик вполне подойдет.

Худший ответ:
А вы не путаете подключение к провайдеру по PPTP с каналом интернет?
Например Билайн раздает интернет по L2TP - но это по сути один канал. Если не поднять туннель-  будет доступ в сеть Билайна. Если поднять - будет доступ в интернет.
Считаю что у вас один канал и вам просто нужно правильно настроить соединение
Вопрос: Вечная авторизация на хабре

Лучший ответ:
Присоединяюсь, раньше капчи практически не видел, после весеннего обновления лезет как г_но из под снега…

Худший ответ:
Бета лисы, разлогинивает раз в неделю, капчу видела всего однажды, на прошлых выходных.
Вопрос: Перебор массива циклом или сверка значений проверкой?

Лучший ответ:
С точки зрения производительности - без разницы, так как второй вариант эквивалентен циклу. Но сами понимаете что первый вариант лучше. Если вас парит производительность - то бинарный поиск. Но ни в коем случае не тот ад что вы привели. Быстрее всего поиск производить по хэш-мэпе, так как там сложность выборки всегда O(1).
Вообще как, для большинства языков, в том числе для интерпритируемых, развертка цикла дает прирост производительности. За счет чего происходит ускорение? А за счет того что все эти инструкции внутри цикла независимы друг от друга, у нас нет конфликтов по записи (и не может быть) и посему процессор спокойно так паралелит выполнение инструкций. Это удобно когда надо посчитать какой-нибудь длинный массив (например добавить на картинку яркости).
Пример. Возьмем массив на 1 000 000 чисел, и попробуем сделать его копию, с увеличенным в два раза значением:var data = range(1000000);
var result = range(1000000);
// обычный вариант
for(var i = 0;i<1000000;i++) {
    result[i] = data[i] * 2;
}

// развертка цикла
for(var i = 0;i<1000000;i+=4) {
    result[i] = data[i] * 2;
    result[i+1] = data[i+1] * 2;
    result[i+2] = data[i+2] * 2;
    result[i+3] = data[i+3] * 2;
}
jsperf.com/loop-unroll-simple
На этом примере уже видно что развертка работает, хоть и прирост производительности не такой большой. Оптимизирующий компилятор JS-а и там умеет это делать.
В вашем же случае у вас есть условия, которые уже вызывают ограничения по тому насколько что можно паралелить (посути при условиях вообще ничего нельзя паралелить), так что за счет развертки цикла профита не будет никак.

Худший ответ:
На С++ прямая проверка работает примерно вдвое быстрее, чем проверка циклом. Я проверял для массива из 10 элементов (проверял, входит ли число в первые 10 простых чисел). С циклом проблема ещё и в том, что для такого "if" трудно написать else-часть - нужно либо добавлять лишнюю логическую переменную, либо использовать goto.
Вопрос: Можно ли в данном случае arp-spoofing считать dos атакой?

Лучший ответ:
Можно ли в данном случае arp-spoofing считать dos атакой?Нет. 
Насколько я знаю dos это операционная система которую продвигал Билл Гейтс, к arp-spoofing'у она никакого отношения не имеет.
Если речь про DoS, то все зависит от точки зрения и сопутствующих факторов. В некоторых случаях это может быть атакой, в некоторых сбоем оборудования.

Худший ответ:
Ну если ссылать на определение из ГОСТов, то да, т.к. там нет конкретных уточнений умышленная/неумышленная. Можно щаглчнуть в пересень угроз и уязвимостей ФСТЭК.
Вопрос: Очень &quot;толстая&quot; программа в списке &quot;установка и удаление программ&quot; win XP

Лучший ответ:
Длиннокот какой-то

Худший ответ:
Это видимо используется компонент Internet Explorer для отображения списка со всеми вытекающими (у кого есть WinSpy++ из вижуал студии — проверьте, у меня нету).
Вопрос: Jkdkfjkdjfkdjfkdsfladjflekfkfajfkafeiukefal;fkdjaiuyeiejkfjakef?

Лучший ответ:
не нужно путать оферту с ЭЦП это совершенно разные вещи. Вам нужна именно оферта судя по вопросу, это обычная форма "с галочкой".

Худший ответ:
через Canvas попробуйте
Вопрос: Переход с MariaDB на Percona — какие подводные камни?

Лучший ответ:
занимаюсь эксплуатацией zabbix на форке mysql - percona. Целью перехода была попытка оптимизации работы СУБД при переходе storage на SSD, она именно на это заточена. Дополнительных особенностей при переводе объектов БД не было.

Худший ответ:
Сталкивались с появлением случайного мусора в полях типа text/binary в таблицах типа MEMORY. Таблицы заполнялись как-то так (точный запрос не помню, давненько было): INSERT INTO ... FROM (SELECT <fields> FROM ... )
В текстовых полях вместо ожидаемых осмысленных строк оказывался какой попало мусор. Ошибка появлялась через раз, причем админ активно что-то шаманил на сервере, пытаясь увеличить быстродействие. Добиться однозначного воспроизвдения (и составить тикет) не удалось.
Вопрос: Как прикрепить картинку к нижнему-правому углу родительского элемента?

Лучший ответ:
в теории, без конкретного примера , можно было бы поставить родителю position:relative; а картинке absolute, bottom:10px; right:10px; max-width:100%; или поставить фоном с позиционированием справа внизу

Худший ответ:
Можно еще через Flexbox вот так к примеру:
https://jsfiddle.net/4L8qf2ca/2/
Вопрос: Как подобрать драйвер шагового двигателя?

Лучший ответ:
Я на l298 готовые модули использую, не станок правда, но мощности ИМХО хватит

Худший ответ:
Для NEMA 17 отлично подходят A4988 имеющие управление DIR - STEP. Коих у братьев - китайцев завались. Да и в любом интернет - магазине торгующим товарами для 3D печати тоже.
Вопрос: Могул ли я установить ОЗУ с большей частотой чем поддерживает мат.плата по заявлению производителя?

Лучший ответ:
Да.
Но:
1) Итоговая частота все равно будет ниже.
2) Задержка будет больше (более высокочастотная память обладает большей задержкой).
3) Но есть шанс, что спецификация материнки устарела и на самом деле эта память может быть использована. Обновите BIOS.

Худший ответ:
Можно, но мать все равно обрежет до максимально поддерживаемой ею частоты.
Вопрос: Как правильно хранить/выбирать данные в PostgreSQL?

Лучший ответ:
Третья_нормальная_форма 
И тк ты не знаешь какой набор полей у тебя в действительности есть
не знаешь какие запросы у тебя превалируют
не знаешь набор типов полей
...
непонятно, что означает "лучше", "быстро" и тд

Худший ответ:
Мне кажется, что все проблемы от того, что вы храните совершенно разные сущности в одной колонке. До тех пор, пока вы их не разложите по разным местам, вы будете страдать. И даже регулярки/флаги/попытки сохранить числа отдельно от строк проблему не решат на 100% - вы сами привели пример, когда не ясно, сумма лежит в строке или телефон. У вас что-то не так в самой схеме хранения.... Предметную область знаете только вы, так что вам решать, что и где)
Если это динамические атрибуты, то возможно стоит посмотреть в сторону jsonb, залитого gin. Но нужно детальнее понять, какая аналитика будет над этими полями и почему важны именно числа.
Вопрос: Странный код, что значит?

Лучший ответ:
Это комментарий

Худший ответ:
К C или C++ код отношения не имеет. Это скорее всего Brainfuck.
Вопрос: Видеонаблюдение с помощью веб-камеры

Лучший ответ:
Вообще-то шумные ремонтные работы разрешено вести до 19-00.

Худший ответ:
Если вы пробовали ставить камеру вне квартиры, были ли случаи вандализма?
Ставило как-то ТСЖ в лифте камеру, её закрасили из баллона с краской. Так что камеру лучше ка можно лучше прятать или брать не шибко дорогую, чтобы не так обидно было.