Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Что будет если SWAP файл переполнится?

Лучший ответ:
При высоком потреблении памяти, нужно увеличивать доступную память, или оптимизировать её потребление в самом приложении.Что будет, если он переполнится? 
Тоже самое, что и при отсутствии файла подкачки: приложение, запросившее больше памяти, чем доступно, будет завершено OOM killer'ом для того, чтобы система могла продолжать функционирование. Причём может быть принудительно завершено как оно само, так и любое другое, активно потребляющее RAM.
Файл подкачки нужен исключительно для избежания OOM при превышении потребления физической RAM.как очищать файл подкачки?
Никак. Это невозможно делать вручную, как и очищать RAM.
Только завершая приложения, потребляющие память.

Худший ответ:
Для начала стоит понять чем занята память
Чаще всего ето дисковый кешman free
man top
man atop
Допустим, что никаких кастомных настроек потребления памяти (lxc) нет
Допустим одно или несколько приложений начинают увеличивать потребления памяти
Постепенно из памяти вытеснится весь кеш
В процессе часть аллоцированной памяти из RAM переметится в swap
В етот момент сервер начнет вести себя странно, тк он не знает на самом деле какие приложения действительно необходимы, а у каких просто протекла память
и тут в дело вступает ООМ
unix.stackexchange.com/questions/153585/how-oom-ki...
https://linux-mm.org/OOM_Killer
Вопрос: Как сделать шестиугольник в который потом вставить картинку?

Лучший ответ:
Вот сделай и не заморачивайся ТЫК

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

Лучший ответ:
if(document.getElementById("name").value === '') {
    alert("!!!");
}
- - - - - - - - - - - - - - - - - - - - s = ' ';
s = s.replace(/^\s+|\s+$/g, '');
Дичь какая-то )))

Худший ответ:
Вы забыли запросить параметр input -- value.s = ' ';
s = s.replace(/^\s+|\s+$/g, '');
if(document.getElementById("name").value == s){alert("!!!");}
Вопрос: Есть ли книги по ФП в python3?

Лучший ответ:
Рекомендую

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

Лучший ответ:
То что выше, это тупость. Капчу нужно делать на бекенде, и проверять так же! НИКОГДА НЕ ДОВЕРЯЙТЕ ФРОНТЕНДУ!!!@ ВСЕ ДАННЫЕ НУЖНО ПРОВЕРЯТЬ НА БЕКЕНДЕ!!!

Худший ответ:
Принцип продумайте и пилите.
Что-то типа:
При сабмите формы, смотреть значение поля ввода капчи и сверять уже с известным(или вычисляемым на основе того, какое выражение вы хотите вычислить, типа Math.Random*10 + Math.Random*10 ) значением и если они "==" только после этого давать ему сабмититься.<form action="noact.js">
      <label for="bruh">Сколько будет <span class="span1"></span> + <span class="span2"></span> ?</label>
      <input type="text" name="bruh">
      </input>
      <button type="submit" class="button" name="button">Press Me, BEACH</button>
    </form>var val1 = Math.ceil(Math.random() * 10);
      var val2 = Math.ceil(Math.random() * 10);
      var span1 = $('.span1').text(val1);
      var span2 = $('.span2').text(val2);
      var spankl = val1 + val2;
      $("form").on("submit", function(event) {
        $('input[name=bruh]').val() == spankl ? console.log('Всё хорошо') : event.preventDefault();
      });
Вопрос: Если просмотреть зашифрованный Zip-архив и закрыть его, появятся ли в системе незащищенная копия его содержимого?

Лучший ответ:
Большинство софта не умеет читать информацию из архивов, поэтому при попытке открыть файл из архива или запустить программу он извлекается из архива в папку Temp находящуюся в профиле пользователя, и уже оттуда используется. После чего удаляется, или не удаляется, как повезет.
Поэтому да - в большинстве случаев появляется. Но тут еще много зависит от того каким образом вы работаете с архивом.

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

Лучший ответ:
Что угодно.
Формально, для языков высокого уровня проблем нет.
Фактически вылезти может что угодно и где угодно. А может и не вылезти.
Проверять просто.
Наиболее вероятное место косяков - в расширениях (написанных на C, как правило).
В тех частях, что на PHP, проблем быть не должно.

Худший ответ:
Ну, основные проблемы - из-за "грязных хаков" типа предположений о размере переенных в байтах, о порядке байтов в числе, о форматах чисел с плавающей точкой. Обычно вылезает в Си-программах; в языках типа Python, PHP, Perl такое бывает реже, но при старании тоже можно влететь. в проблемы. А Java изначально затачивалась на стандартное выполнение везде и всегда - правда, это не полностью удалось, но там вероятность несовместимости минимальна.
Наиболее частые проблемы - при смене разрядности системы - 32 или 64 бита (другие разрядности бывают, но в наше время встречаются совсем редко).
Для начала - укажите язык разработки.
Вопрос: Какие токи/напряжения на пинах DB-9M(com-порта)?

Лучший ответ:
напряжение на выходах RS-232 от -12в до +12в.
вообще надо бы прежде читать документацию, а уж потом паять.
даже почитав что писано о RS232 в википедии - множество вопросов бы ушло.

Худший ответ:
На современных ПК стандарт давно не соблюдается. Уровни будут в лучшем случае +-8В, а токи довольно мизерные. Удавалось питать от линии RTS устройство током около 20 мА.
Вопрос: Как правильно писать код для разных цветовых тем?

Лучший ответ:
Вообще-то темы надо решать с помощью переменных, а не огороды городить.

Худший ответ:
Правильно btn_orange, в этом вся суть БЭМ
Вопрос: Как спарсить тег с плавающим расположением?

Лучший ответ:
foreach($html->find('.primer p[class=oposit part1 part2]') as $el) {
if ($el->innertext=='Примечание')  echo $el->next_sibling();
}

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

Лучший ответ:
alt+ctr+s  Появится окно, затем Editor->color & fonts

Худший ответ:
Нажать 2 раза Shift после ввести Color Scheme Font 
Тут вы можете выбрать стиль и размер шрифта.
Вопрос: Как создавать простые страницы на Rails?

Лучший ответ:
создаете контроллер StaticPagesController
и прописываете роут как 
get 'contacts' => 'static_pages#contacts'

Худший ответ:
About, contacts and etc. это всё статика. Положите их в public
Вопрос: Как реализовать редирект на страницу заполнения профиля при первой авторизации пользователя?

Лучший ответ:
Создать отношение profile тип hasOne (если профиль в отдельной таблице)public function profile()
{
 return $this->hasOne('App\Models\Profile','user_id', 'id');
}
создать middelware hasProfile
там прописатьif (!Auth::user()->profile) {
    return redirect()->route('profile');
}
return $next($request);
добавить в роутыRoute::group('middleware' => ['verified','hasProfile'], function () {

});

Худший ответ:
protected $redirectTo = '/';
Есть такая переменная в контроллере для регистрации
Вопрос: Как лучше всего обрабатывать ошибки в python?

Лучший ответ:
Советую вам посмотреть в сторону декораторов. Полезно будет как для решения задачи, так и для общего ознакомления с синтаксическими возможностями языка. 
Дам пример самого простого декоратора, единственная функция которого "тихо" логгировать любой exception:import logging


LOG = logging.getLogger(__name__)


def handle_silently(function):
    def wrapped(*args, **kwargs): 
        result = None
        try:
            result = function(*args, **kwargs)
        except Exception as e:
            LOG.error(
                '{}(*{}, **{}) failed with exception {}'.format(
                    function.__name__, repr(args), repr(kwargs), repr(e) 
                 )
            )
        return result
    return wrapped


@handle_silently
def some_function(test):
    return test / 0
Конструкция @handle_silently заменит вашу функцию some_function на функцию wrapped. 
Механика работы wrapped является, скорее, антипаттерном, поскольку замалчивать exception совсем и тем более отдавать вместо него None - это гарантированный способ выстрелить себе в ногу. Это просто пример, в боевом проекте я бы посоветовал ререйзить (LOG.error(...); raise) ошибку в декораторе и обрабатывать несредственно в месте вызова функции (логгирование, естественно, можно и оставить). 
Для затравки и для демонстрации того, как это может быть полезно - декотораторы могут быть параметрическими (достигается это путём создания фабрики декораторов):def decorators_fabric(handler_function):
    def decorator(function):
        def wrapped(*args, **kwargs):
            handler_function(function.__name__, repr(args), repr(kwargs))
            return function(*args, **kwargs)
        return wrapped
    return decorator


@decorators_fabric(print)
def my_test_function(arg1, arg2):
    return arg1 * arg2

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

Лучший ответ:
Хорошо промыть - стряхнуть - промыть дистиллированной водой - стряхнуть и просушить на батарее часов 12, чтобы наверняка высохла.
Спиртом мыть без толку - сахар и прочие липкости в нем не растворятся.
Водой мыл и материнки, и клавы ноутбучные, и прочую электронику.

Худший ответ:
Ну и так далее https://www.youtube.com/results?search_query=%D0%B...
Вопрос: Как изменить WP, что бы можно было менять цены, не открывая каждый товар?

Лучший ответ:
Варианта два:
1. Открываете исходник вукоммерца, находите вывод цен в админке, дописываете свой функционал который позволит менять цены "на лету"
2. даете денюжку фрилансеру который это сделает за вас

Худший ответ:
запрос к базе
Вопрос: Как правильно нанять художника?

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

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

Лучший ответ:
В бубунте что - apt-get? Ну тогда apt-get install samba4 :) (ну или как там пишется команда установки пакета)
Доков в тырнете - зиллион
UPD: Полноценного AD (в зависимости от того, что ожидаете) можно и не получить.

Худший ответ:
По хорошему как минимум нужно отказаться от убунты в сторону centos\debian\rhel, курить тонны манов и делать как надо. Как таковой универсальной инструкции не найти чтобы раз и заработало, будет куча подводных камней и несостыковок.
Вариант чуть проще взять OpenSUSE, у нее есть графические оснастки для управления таким дерьмом не вникая в конфиги.
Еще есть Zentyal но там могут быть проблемы с лицензией, когда трогал ее то там все очень интересно было в этом плане.
Еще есть такая штука https://www.turnkeylinux.org/domain-controller , но лично я ей не пользовался, очень тепло о ней отозвался знакомый.
Ну и как вариант на чем угодно поднять контроллер и налепить сверху webmin у которого есть дополнения для домена.
Вопрос: Возможно ли прикрепить дополнительный столбец исходя из данных таблицы?

Лучший ответ:
SELECT garages.garage, garages.car AS 1st, garages2dn.car AS 2nd
  FROM garages 
    INNER JOIN garages AS garages2dn ON garages.garage = garages2dn.garage
  WHERE (garages.car = 'niva') AND (garages2dn.car <> 'niva')
А вот, если нет второй машины:SELECT garages.garage, garages.car AS 1st, garages2dn.car AS 2nd
FROM garages 
  LEFT OUTER JOIN garages AS garages2dn 
    ON garages.garage = garages2dn.garage AND garages.ID <> garages2dn.ID
WHERE (garages.car = 'niva')

Худший ответ:
Можете считать меня сумасшедшим, но:SELECT
  car1,
  car2,
  t1.garage
FROM (SELECT
    MIN(car) car1,
    garage
  FROM garages
  GROUP BY garage) t1
  JOIN (SELECT
      MAX(car) car2,
      garage
    FROM garages
    GROUP BY garage) t2
    ON t1.garage = t2.garage
WHERE car1 <> car2
Актуально конечно же только при максимально двух машинах в гараже.
Заранее прошу извинить меня юзера  FanatPHP  за это, ибо скорее всего, я ему этим запросом испорчу настроение окончательно))
Буду рад увидеть правильное решение, ибо SQL меня очень даже интересует.
Вопрос: Объясните как работает код?

Лучший ответ:
Потому что когда мы создали новый инстанс (объект)new Article();
this внутри конструктора стал ссылаться именно на этот интсанс , Article же ссылается на саму функцию-конструктор Article, куда мы и добавили свойство count и метод ShowStats;
Наглядно это можно увидеть сделав console.log одного из инстансов и проинспектировав свойство конструктор его прототипа.spoiler
Внутри конструктора при создании инстанса мы хотим инкрементировать именно свойство на этом конструкторе, инстансы свойства count не имеют, соответсвенно this.count++ превратится в this.count = undefined + 1 == NaN.
Article.count сответственно останется равным 0. Article.result будет равен undefined, потому что на конструкторе он вообще не был объявлен, и теперь будет являтся свойством инстанса.

Худший ответ:
Article.count++; // Значение count будет одно для всех объектов созданных на основе Article, т.к как будет являться статическим и будет храниться в структуре самой функции конструкторе.
Article.result = this.created // Значение created будет оригинальным для каждого объекта созданного на основе Article, так как будет храниться в структуре самого объекта.this.count++; // При таком раскладе count уже будет не статическим состоянием. Как и свойство created, будет находиться у каждого созданного объекта. При создание объектов, count  не будет накапливаться, а будет всегда равен %начальное значение count% + 1.
this.result = this.created
В общем тык
Вопрос: Как преодолеть кризис начинающего специалиста?

Лучший ответ:
А кто сказал, что будет легко?spoilerДаже если вы занимаетесь bleeding edge разработкой в универах или корпорациях, то рутина будет занимать 90% вашей работы
А что еще хуже 60% всего рабочего времени вы будете заняты согласованиями и совещаниями и не будете писать код вообще
Потому, если вас не хватает сейчас, то стоит подумать, а нужно ли оно вам вообще

Худший ответ:
 Нигде не требуется писать самому: нужно переиначить готовые решения с гитхаба. 
Почему такая нелюбовь к готовым решениям? Я люблю готовые решения.
Если есть готовое решение и оно подходит под задачу, то это вообще отлично. Зачем писать свое? Это только как учебная задача полезно, а на практике скорее вредно.
Зачастую готовых решений нет или похожие решения не подхоят под конерктную задачу. Приходится много писать самому. С нуля или заимствовать идеи или куски кода из других решений. 
Когда я после универа начал работать, то я сильно выгорал и уставал. Мне казалось что программирование это не мое, но оказалось, что просто нужно было спать на пару часов дольше. Но работать все-таки тяжело, не зависимо от профессиии.
Ежедневная работа это тяжело. Если надо придумывать или учить что-то новое, то мозг устает и ко второй половине дня ты как выжатый лимон. Если нужно фигачить однотипный код, формы там всякие, отчеты для бугалтерии, какие-то 100500 интеграции с партнерами, то код писать это невыносимо скучно. Скука демотивирует.
На новых местах работы меня хватало обычно на 3 месяца, потом все превращалось в рутину.
Если фигачишь свой проект - пет-проджет или стартап, то все равно наступает момент когда тебя уже от всего этого тошнит и хочется занятся уже чем-то другим. Тем более что вокруг столько хайповых или просто интересных тем - новые платформы, новые языки программирования, машинное обучение, блокчейн.
В любом проекте всегда 80-90% рутины, каких-то тупых и скучных задач. Нельзя сделать ни один проект не выполнив эту работу.
Вопрос: Как передать русский язык в клавиатуру чатбота?

Лучший ответ:
Приветствую, AlexMine !
Столкнулся с той же проблемой на PHP.
Решение оказалось простым, использовал параметр JSON_UNESCAPED_UNICODE при енкоде.
Попробуйте что-то подобное сделать на питоне.$keyjson = json_encode($keyarr, JSON_UNESCAPED_UNICODE);

Худший ответ:
Достаточно добавить ensure_ascii=False:[...] json.dumps(KEYBOARD_STEP_1, ensure_ascii=False)
Вопрос: Что написать после изучения основ Java?

Лучший ответ:
Напишите программу

Худший ответ:
Если дословно ответить на ваш вопрос, то любую учётную систему, например, телефонный справочник. Данные хранить в файле (или не хранить вовсе).
Если хотите совет, то:
Выучить java core обучаясь с 8 до 17:00 -- это месяц максимум. Если хотите стать профессионалом (то есть получать зарплату за написание программ на java) и вы молоды -- то чуть чуть почитайте о вопросах на собеседовании и устраивайтесь на работу джуном. Если вам больше 30 то:
1. java -- это знание английского на уровне читаю без словаря -- обязательно. Пишу и устно общаюсь на английском крайне желательно. Не знаете -- учите.
2. java -- это серверный софт для учётных систем. Например программа в банке. Пока вы не можете начать мыслить как написать приложение, которое не упадёт никогда, а если упадёт, то из логов будет сразу понятно что не так -- вам путь дальнейшего изучения закрыт.  То есть в обычном телефонном справочнике при добавлении записи в БД можно предусмотреть всё. Начиная от того, что база упала, заканчивая тем, что они посадили 100 человек и сутками вводят вам некорректные значения.
зы
ну и совсем не по теме, но вы наверное знаете. Java core узкие знания по сути не нужные никому. Нужны фреймворки, например, hibernate и десятки их.
Вопрос: В чем отличее роутера от точки доступа?

Лучший ответ:
В чём преимущество точки доступа над роутером?

Худший ответ:
Для раздачи Интернета дома по WiFi и проводам вам нужен WiFi роутер. Поверьте на слово.
Кроме раздачи Инета дома, есть и другие задачи - для них нужны и точки доступа, и роутеры без WiFi, и много еще чего.
Вопрос: Подойдет ли Intel HD Graphics 620 для веб-разработки?

Лучший ответ:
Да, вполне.

Худший ответ:
чтобы было комфортно кодить вне дома достаточно оперативки 4G
Вопрос: Как подняться в поиске Инстаграм?

Лучший ответ:
1. Поисковая выдача в Instagram работает по русскоязычном имени профиля.
2. Далее, иерархия выдачи идет в зависимости от кол-ва подписчиков.
3. Также существуют дополнительные алгоритмы (возможно ER, давности регистрации аккаунта)Стратегия для Вас будет простой: оформите правильно и понятно профиль (аватарка, имя, описание, логин), делайте ежедневные публикации и выращивайте подписчиков. Так как ключевой запрос достаточно частотный, то для того, чтобы обойти конкурентов - прийдется догонять.И еще: вывести аккаунт в топ поиска можно не только по названию, но и вывести публикации по геолокации, и по хэштегам.
P.S.: чуть выше Ильнур Ахунов написал о том, что выдача подстраивается под каждого пользователя персонально - это одновременно и верно и не верно. Дело в том, что у каждого пользователя есть история поиска. И при каждом поиске изначально Instagram подставляет те аккаунты, которые Вы уже искали. Также имеется приоритет по друзьям. То есть, если у Вас в друзьях есть аккаунт с именем "Суши", то первым в поисковой выдаче (по приоритету друзей) будет выдан именно этот аккаунт.

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

Лучший ответ:
Вот описана элементная база, схема и программа для Arduino под похожую задачу - дистанционное управление освещением (по 433МГц). Лишние элементы и код можно выбросить и получится то, что нужно.

Худший ответ:
NRF24L01 "почти Wi-Fi" так что сравнивать его с 433МГц трансивером в принципе нелепо.
В остальном копаешь в правильном направлении. Нужна библиотека работы с радиомодулем, может библиотека управления IR LED. Сложность вещь относительная, для меня не сложно, как для вас не знаю
Вопрос: Что читать после PHP.net?

Лучший ответ:
Теперь попытайтесь работать с ООП (типы классов, хранение данных, сеттеры / геттеры, и т.д.).
После чего переходите к Laravel. В чистом PHP ловить больше нечего.

Худший ответ:
SOLID, GRASP, PoEAA и DDD если вы серьезно настроены, а если нет, то прочитайте документацию к laravel или yii2 и отгружайте rapidly code в промышленных масштабах.
Вопрос: Влияние количества товаров на поисковое продвижение?

Лучший ответ:
Никак

Худший ответ:
положительно
Вопрос: Отправка писем с сайта. Как верифицировать обратный адрес для gmail?

Лучший ответ:
SPF запись в dns присутствует и верно настроена?
Что там еще... DKIM, DMARC...
IP сервера еще по черным спискам пробить.

Худший ответ:
почитайте об SPF и DKIM раздва
Вопрос: Как сгруппировать список английских слов по частям речи и сохранить в отдельные файлы?

Лучший ответ:
Попробуй использовать библиотеку NLTK для анлийского языка www.nltk.org/index.html

Худший ответ:
Если у Вас задача "сделал-забыл", Вам нужен костыль и не нужна производительность, попробуйте через API яндекс-переводчика переводить слова, а затем определять часть речи при помощи pyMorphy2. Или использовать какой-либо словарь с возможностью определения части речи. Разумеется, времени потребуется больше, чем Вам, вероятно, хотелось бы.
Вопрос: Как писать программы на java?

Лучший ответ:
И, согласитесь, что зная действия с массивами, я вряд ли пойму логику работы графического редактора 
Декомпозиция - и все сведется к тем же действиям с массивами (условно). Просто в очень большом количестве.

Худший ответ:
Основы и есть все что железобетонно необходимо знать, все опирается на это.
Как пример что вы привели массивы и графический редактор.
Если взять за основу 3д редактор то выйдет следующее. Утрированно все работает на этих массивах. Модель состоит из массива точек, еще один массив описывает соединения точек из первого массива в полигоны, дальше еще один массив описывает координаты текстурной развертки по этим полигонам. Все операции в том или ином виде идут над этими массивами, причем как правило они весьма простые но математические.
В общем учите основы, дальше уже берите книжки с уклоном что вам нравится, если графика то по большей части это будут книги не языковые а матан,геометрия и т.д. .Если хочется в сеть то для начала книжку про то как это устроено, спецификации и стандарты, потом уже можно взять книжку именно по java и сетям и дело пойдет очень легко.
Любая программа даже самая огромная в конечном счете состоит из множества простейших участков кода основ.
Вопрос: Оперативку на VPS дают с учетом ОС или без?

Лучший ответ:
Сама ОС требует меньше 100 мегабайт памяти с базовым набором сервисов.

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

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

Худший ответ:
v8.1c.ru/small.biz/usef/mobile.htm
Можно по вас чтонибуть простенькое написать на 1с для работы с телефона и не только.
Вопрос: Сильно ли отличаются горячие клавиши Linux от Windows при работе на рабочем столе?

Лучший ответ:
рабочий стол рабочему столу рознь в линуксе ;)

Худший ответ:
На каком рабочем столе? Я не отрывая .опы от стула назову не менее десятка DE, в которых совершенно разные рабочие столы - в том числе и по настройкам. И у каждого DE есть настройки, позволяющие переназначать клавиши практически как угодно - и зачастую есть уже предустановки "сделать как в Windows", в KDE точно есть.
Насчет Ctrl-W не скажу, а вот Alt-F4 работает :)