Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Взломали страницу,как избежать в дальнейшем этого?

Лучший ответ:
1) Попробовать узнать как взломали.
2) Поменять пароль с другого компьютера
3) Переустановить windows
4) Узнать кто взломал, наказать.
Да много всего еще можно придумать. Для вас самым действенным будет п.2 и п.3

Худший ответ:
поставить антивирус
сменить пароли на все не только на одноклассников
Вопрос: Можно ли раздать интернет на 2 ПК если у провайдера привязка к MAC-адресу?

Лучший ответ:
Переписать сеть к MAC-адресу wifi роутера и раздавать интернет с роутера.

Худший ответ:
Я так понял, роутера нет? Идёте в магазин, покупаете d-link dwa-120(125) - стоят они 10 баксов
и через virtual router раздаёте на ноутбук, смартфон, микроволновку и кота
можно еще купить сетевуху и сварганить патчкорд к ноутбуку, но как же кот без интернета?
Вопрос: Каков в Андроиде механизм обработки аппаратных клавиш?

Лучший ответ:
Неожиданно было найдено решение. В Андроиде имеется база настроек в формате SQLite3:

/data/data/com.android.providers.settings/databases/settings.db 

Это что-то наподобие виндузового реестра. В ней должен быть параметр device_provisioned, значение 1. При его отсутствии именно проявляется эффект не работы кнопок HOME и SEARCH.

Чтобы исправить, сливаем этот файл на компьютер и открываем редактором, я использовал SQLiteman. Выполняем запрос:

INSERT INTO secure (name,value) VALUES ('device_provisioned','1');

Сохраняем, заливаем обратно, перезагружаемся. Кнопка HOME равно как и значок «домика» сверху заработали. )) При сохранении важно проверить, что файл остался в формате SQLite3 и что не изменились разрешения (у меня было 0660). В противном случае вас ждёт перепрошивка. ))

В принципе базу можно отредактировать локально, но на моём девайсе файла sqlite3 не обнаружилось.

Решение это я нашёл здесь:

forum.cyanogenmod.org/topic/19605-home-button-issues-striking-back/

Cyanogenmod я не использую, чем это всё объясняется, я понятия не имею. :)

Худший ответ:
пара ссылок: раз и два
Вопрос: Toolbar как расположить item'ы?

Лучший ответ:
1. Это стандартный способ, он расположит элементы только стандартным способом, т.е. только как задумал Google
2. Чтобы расположить элементы кастомно, вам нужно переделать layout самой Toolbar примерно так
3. Поскольку это крайне против гайдлайнов Google, подумайте, действительно ли это вам нужно

Худший ответ:
Как вариант, можно в Activity написать такие строки:setSupportActionBar((Toolbar) findViewById(R.id.toolbar));        
getSupportActionBar().setDisplayHomeAsUpEnabled(true);       
getSupportActionBar().setHomeAsUpIndicator(R.drawable. is_back);
Вопрос: Разница между ARM процессорами?

Лучший ответ:
у xscale набор инструкций — armV5
у Snapdragon — armV7
Чем шире набор инструкций, тем больше производительность на специфических задачах, которые используют расширенные инструкции в зависимости от типа процессора.
Кроме набора инструкций есть ещё понятие процессорного кеша, есть различные алгоритмы предсказания след. инструкций.
По хорошему, для сравнения надо качать тех. характеристики на них, и изучать досконально. А лучше на практике погонять по тестам ;)

Худший ответ:
А где можно приобрести или заказать макетные платы с ARM процессорами. Что бы можно было заказать и попробовать там LInux развернуть и потестировать…
Вопрос: Каковы трудозатраты на создание квадрокоптера?

Лучший ответ:
Пока могу посоветовать идею для корпуса: www.youtube.com/watch?v=-HnwhGgsgXc

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

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

import java.util.concurrent.Callable;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;

public class MyCache<K, V> implements Computable<K, V> {

    private final ConcurrentHashMap<K, Future<V>> cache = new ConcurrentHashMap<K, Future<V>>();
    private final Computable<K, V> c;

    public MyCache(Computable<K, V> c) {
        this.c = c;
    }

    @Override
    public V compute(final K key) throws InterruptedException {
        while (true) {
            Future<V> f = cache.get(key);
            if (f == null) {
                Callable<V> eval = new Callable<V>() {

                    @Override
                    public V call() throws Exception {
                        return c.compute(key);
                    }
                };
                FutureTask<V> ft = new FutureTask<V>(eval);
                f = cache.putIfAbsent(key, ft);
                if (f == null) {
                    f = ft;
                    ft.run();
                }
            }
            try {
                return f.get();
            } catch (CancellationException e) {
                cache.remove(key, f);
            } catch (ExecutionException e) {
                throw new RuntimeException(e.getCause());
            }
        }
    }

    public static interface Computable<K, V> {

        public V compute(K k) throws InterruptedException;
    }
}


Худший ответ:
// key: url, value: list of waiting latches for threads
private static final Map<String, List<CountDownLatch>> waiters;


По входу нового потока идёт проверка waiters на наличие списка по url:
если записи нет (waiters.get(url) == null), то создаётся новый пустой список и помещается в Map, сам поток начинает делать работу;
если запись есть, то данный поток создаёт объект типа CountDownLatch с параметром 1, добавляет его в список и вызывает метод await().

Тот поток, который получил право на выполнение работы по окончанию проверяет Map на наличие списка ждущих потоков, удаляет его из Map'a и вызывает методы count() для каждого latch'а.

Все операции с waiters — должны быть синхронизованы:
synchronized(waiters) {
    // check if record for url exists and either continue work or wait
    // ...
}

// do work

synchronized(waiters) {
    // check if record for url and call count() for all waiters, then remove record
    // ...
}
 

Вроде решает поставленную вами задачу.
Вопрос: Каковым должен быть объём изменений в программе, чтобы считать результат не багфиксом/расширением возможностей, а другой программой?

Лучший ответ:
Смены названия вполне достаточно.

Худший ответ:
у MS это 3%
Я считаю, что 100%.
Вопрос: Какую библиотеку C/C++ выбрать для рисования графиков функции?

Лучший ответ:
Как вам unix-way - программа на C++ считает, а потом передает данные в gnuplot?

Худший ответ:
Tufitko 
Вам уже Армянское Радио советовал про Unix-way. Можно поступить немножко по-другому. Вы пишите консольную программу, печатающую на stdout в виде csv-формата. Далее с помощью python-а и библиотеки к нему matplotlib.org/ получаете более дешевый в разработке и в тоже время кросс-платформенный вариант ;)
Вопрос: Как изменить слово- search products вверху?

Лучший ответ:
Без ковыряний в шаблоне, возможно как я отвечал ранее, но тогда и плагин видел бы это, возможно оно не подключено на gettext, можно молотком вот так(function($){
  var $text = 'Найти продукт'
$('.screen-reader-text').html($text);
  $('#s').attr('placeholder',$text);
  $('#searchsubmit').attr('value','Поиск');
})(jQuery);

Худший ответ:
Посмотрите файл search.php своей темы, скорее всего найдёте в нём строчку Search Products и сможете заменить.
Вопрос: Как сделать редирект в скрипте, куда отправляются данные ajax?

Лучший ответ:
Хотите серверу новую страницу показать ?

Худший ответ:
Хотите серверу новую страницу показать ?
Вопрос: Знает ли вы автора Bootable CD Wizard (BCDW), и что с ним стало?

Лучший ответ:
На почты
reanimatolog [sobaka] yandex.ru
reanimatolog [@@@] yahoo.com 
bootcd@---@ya.ru
писали?
Что Alex Kopylov его зовут, тоже известно?

И связаться с пользователем
forum.oszone.net/member.php?userid=30799
попробуйте

Худший ответ:
Года два назад с ним пытался связатся на какую-то из них писал, ответа не получил.
Вопрос: Борятся ли anti-DDoS сервисы с бот сетями?

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

Худший ответ:
Вот посмотрите хроники дос атаки — blogerator.ru/page/ddos-v-100-gbits-reportazh-s-linii-fronta-ot-ocevidca
Я не являюсь глубоким специалистом в сетевых технологиях, но считаю, что эффективной защиты от доса нет. Есть только надежда, что не зацепит, а если зацепит, сервис гарантировано станет и будет стоять столько, сколько будет длиться атака, т.е. неопределённое время. В статье есть про дедоссеров и их эффективность при реальных «наводнениях».
Вопрос: Не могу понять, что такое VOID в С++?

Лучший ответ:
вот видите бублик? вы выполняете функцию и сьедаете его. что у вас остается от бублика? true? false? null? void!

Худший ответ:
процедура
Вопрос: стОит ли публиковать?

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

Худший ответ:
Лизервеб?
Вопрос: Переключить расскладку возможно?

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

Худший ответ:
Jquery - это либа для манипуляциями с DOM , так что нельзя.
Вопрос: IntelliJ IDEA и подсветка неразрывного пробела

Лучший ответ:
скорее всего написать в их трекер и попросить youtrack.jetbrains.net/issues

Худший ответ:
попробуйте решить это путем написания плагина
Вопрос: Есть ли у вас серьезные проекты на Node.js?

Лучший ответ:
Откуда взяться серьезным проектам на несерьезном языке? JS был придуман для того чтобы поморгать кнопочкой в браузере, сделать бегущую строку или какой другой хеловорд. Для серьезных проектов JS плох чуть менее чем полностью, а Node.js — это забавная игрушка в стиле «посмотрите что из этого г. можно сделать».
Серьезные проекты надо писать на серьезных языках. Для этого предназначенных.

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

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

Худший ответ:
Битрикс 24
Вопрос: Мерцает ли лампа дневного света?

Лучший ответ:
Стало интересно, взял осциллограф и фотодиод, померял.
Оказалось — пульсация есть, но на частоте порядка 40кГц.
50/100 Гц в спектре даже близко нет.

С другой стороны, лампы разные бывают,

Худший ответ:
Господа, вы про какие лампы говорите? Лампы дневного света — это цилиндрообразные длинные лампы со стартёром, которые с советских времён использовались в учреждениях. Они действительно мерцают. Знаю, т.к. в детстве у меня был игрушечный проигрыватель, а на диске его был нанесён стробоскоп в виде чёрточек для настройки частоты вращения. Так вот под лампами дневного света он работал очень чётко, в отличие от обычных ламп под светом которых границы чёрточек были немного размазаны.

Если речь об энергосберегающих лампах, то нет, не мерцают, т.к. в них стоит импульсный преобразователь, работающий на частоте 20-40 КНц, как уже здесь справедливо отметили.

Глазу заметно мерцание 50 Гц, но на обычных лампах это практически не видно из-за инерционности самой лампы!!!
Вопрос: Могут ли Template Monster доказать использование шаблона повторно на другом сайте (была куплена 1 лицензия)?

Лучший ответ:
Не парьтесь. 
У них и так праздник:
Но если по существу - как минимум лицензия есть - остальное на Вашей совести. 
Да и Вы не самый злостный нарушитель - целые студии бывает вообще не парятся,  так что =)

Худший ответ:
Вообще-то могут. Насколько мне известно они используют технологию Stegano, вшивая в jpg файлы информацию о лицензии и транзакции, а затем, по аналогии с фотобанками отслеживают реальное использование. 
Если Вы делаете сайт для себя, я бы не парился, всегда можно сказать, что заказали этот сайт на фрилансе. А вот если для клиента, я бы не стал рисковать своей репутацией за 40 долларов (за повторное испоьзование по-моему можно получить 50% скидку).
Вопрос: Как задать ограничение цикла django в тегах?

Лучший ответ:
Если нужен паджинатор:from django.views.generic import ListView

class NewsList(ListView):
    model = News
    paginate_by = 5
Если просто выкинуть 5 последних:News.objects.all()[:5]
В теги это лучше не совать. Но если очень хочется сделать это в шаблоне:class News(Model):
    # Твоя модель новостей
    @classmethod
    def last_five(cls):
        return cls.objects.all()[:5]
Затем передать модель в контекст:return render(request, 'template.html', {'News': News})
И в шаблоне написать:<div class="my-very-own-news">
    {% for news in News.last_five %}
        {{ news }}
    {% endfor %}
</div>

Худший ответ:
Вот пример.news = AllNews.objects.order_by('pk')[0:5]
Вопрос: Антуражные сайты. Насколько важен дизайн для создания атмосферы и погружения?

Лучший ответ:
Если сайт предусматривает долгое на нем пребывание (если вашу легенду читать нужно на сайте), то он не должен чересчур быть перегружен графикой с кучей деталей — от чтения ничего не должно отвлекать.

Худший ответ:
Я не являюсь диайнером или Web-разработчиком, но могу поделиться собственной токой зрения по вашему вопросу. По моему мнению, способствующий дизайн необходим, но при этом, он должен быть броским. Лично мне нравятся ресурсы, на которых способствующая часть достигается деталями, которых с первого взгляда можно и не заметить. Чем проще, тем лучше. Чтобы было понятно, что именно я имею ввиду приведу пример. Обчно, когда я вижу знакомого человека на улице, я подхожу к нему и приветсвую, а некоторые из моих знакомых делают иначе, подходят незаметно, останавливаются рядом с вами, не старются привлечь к себе внимание, но дают возможность заметить себя боковым зрением, а после того, как их замечают, приветсвуют.
Вопрос: Почему вместо открытия Google скачивается application/octet-stream?

Лучший ответ:
Это KIS "чудит" после обновления на версию (d).
Есть 2 способа решить проблему:
1. зайти в Настройки -> Дополнительно -> Сеть, включите "Проверять защищенные соединения" и переключите на "Проверять защищенные соединения, если включен Родительский контроль", далее зайдите в "Дополнительные параметры" и включите "Использовать HTTP вместо SPDY", и нажмите на кнопку "Установить сертификат".
2. зайти в Настройки -> Дополнительно -> Угрозы и исключения -> Управлять доверенными программами -> (Выберите браузер), включите "Не проверять зашифрованный сетевой трафик" -> "Изменить".

Худший ответ:
hosts нормальный?
Вопрос: Почему нет сканеров, делающих моментальный снимок по принципу фотокамеры? Или есть?

Лучший ответ:
Такое устройство существует. Называются планетарный или книжный сканер.

Худший ответ:
Профит не очевиден, т.к. появятся искажения, увеличится толщина.
Вопрос: Как создать нормальное dev-окружение для PHP разработки на ОС Windows?

Лучший ответ:
Главное правило – храните все файлы в гостевой системе.
Проекты с большим количеством файлов будут тормозить и в Линуксе если эти файлы хранятся на основной системе. Да и логически это более правильно, держать файлы и базы данных в одном месте.PHPStorm умеет работать с файлами по SFTP.  Если это не подходит, то для windows есть всякие проприетарные решения (платные и бесплатные) для монтирования удаленных файловых систем.
P.S. Используйте Вагрант даже если перейдете на Линукс или OS X.

Худший ответ:
В итоге добавил памяти, поставил SSD, провозился пару дней с настройкой Vagrant для Symfony и в итоге родил это: https://github.com/stepansib/symphpet
Стало гораздо лучше
Вопрос: Как лучше решить задачу с размером картинок в WordPress?

Лучший ответ:
<?php $loop = 0; ?>
<?php if(have_posts()) : while(have_posts()) : the_post();?>
<?php $loop++; ?>
<?php if( $loop == 1) {
//Do action for large image
} elseif( $loop == 2 ) {
//Do action for big image
} elseif( $loop > 2 && $loop <= 5 ){
//Do action for middle image
} elseif( $loop > 5 ) {
//Do action for small image
}?>
<?php endwhile; endif;?>
Это самый простой способ реализации по вашему примеру

Худший ответ:
Дак а в чем собственно проблема? Насчитал 4 разных типа картинок. add_image_size
Вопрос: Как менять на странице значения полей ForeignKey и ManyToManyField?

Лучший ответ:
1. Зачем нужен переход на другую страницу для выбора начальника, разве это удобно? Чтобы избавиться от проблем выпадающего списка при большом количестве записей в таблице Person, можно использовать django-select2 - он даст возможность искать по элементам или, нажав на кнопку "удалить" прямо в элементе управления, указать, что начальника нет. Демо.2 и 3. С работниками и товарами, наверное, нужно использовать FormSets. Вот пример о том, как скрестить их с class-based views: effectivedjango.com/tutorial/related.html - кажется, он подходит к вашей ситуации.P. S. Если у вас вся задача состоит в управлении таблицами, не думали для этого использовать родное средство - django-admin? Там всё это уже есть - и выбор, и формсеты. С помощью таких батареек как Django Suit можно облагородить внешний вид. Ну а где нужно - кастомизировать и добавить свои view, скажем, на главную страницу админки.

Худший ответ:
Наверное уже мертвый вопрос, но тем не менее, может еще что то посоветуют. Или мне самой еще это когда то понадобится, буду знать где искать.
У меня получилось так:# forms.py
StockroomWorkerFormSet = inlineformset_factory(Stockroom, WorkerType, extra=0, can_delete=True)
StockroomGoodsFormSet = inlineformset_factory(Stockroom, GoodsType, extra=0, can_delete=True)# views.py
class StockroomEditView(UpdateView):
    model = Stockroom
    temlate_name = 'stock/edit.html'

    def get_success_url(self):
        return self.get_object().get_absolute_url()

    def get(self, request, *args, **kwargs):
        self.object = self.get_object()
        worker_formset = self.get_form(StockroomWorkerFormSet)
        goods_formset = self.get_form(StockroomGoodsFormSet)

        return self.render_to_response(self.get_context_data(
            worker_formset=worker_formset, goods_formset=goods_formset))

    def get(self, request, *args, **kwargs):
        self.object = self.get_object()
        worker_formset = self.get_form(StockroomWorkerFormSet)
        goods_formset = self.get_form(StockroomGoodsFormSet)

    if worker_formset.is_valid() and goods_formset.is_valid():
        return self._form_valid(worker_formset, goods_formset)
    else:
        return self._form_invalid(worker_formset, goods_formset)

    def _form_valid(self, worker, goods):
        worker.save()
        goods.save()
        return HttpResponseRedirect(self.get_success_url())edit.html
    <form action="" method="post">
        {% csrf_token %}
        {{ worker_formset.management_form }}
        {{ goods_formset.management_form }}
        {% for form in worker_formset %}
            {{ form }}
        {% endfor %}
        {% for form in goods_formset %}
            {{ form }}
        {% endfor %}
    </form>
Если кто то меня слышит, на сколько правильно так делать?
Вопрос: Какой язык программирования подойдет для олимпиад?

Лучший ответ:
Я бы выбрал Python,  на нём будет проще писать алгоритмы для олимпиадных задач, чем на C++ и Java. Тем более динамическая типизация(Python), лучше подойдёт чем статическая. Так же, он более лёгок в изучении, нежели Java и тем более C++, который вы за 8 дней на достаточном уровне вряд ли выучите, так что Python будет лучшим выбором.

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

Лучший ответ:
1. Забудьте про инструменты. Вам насоветую всякого, вы пойдете применять, но будете как мартышка и очки, не знать куда их еще прицепить, чтобы заработать денег. Инструмент эффективен только тогда, когда держущая его рука знает, как его применить наилучшим способом. Пока не наберетесь опыта, экспериментировать с инструментами я бы не советовал, только зря потратите время. Лучше сфокусируйтесь на других вещах.
2. Ничто не мотивирует работника лучше, чем бесконечные деньги и бесконечные знания. Рано об этом думать начали.
3. Серьезные заказчики очень сильно редко заказывают проекты у начинающих вебстудий. Потому что им нужно решать свои бизнес-задачи, делать это быстро и эффективно. Нужно набраться опыта, наростить жирок в виде портфолио, и тогда вы резко перейдете в лигу повыше.

Что нужно? 
1. Составить некое подобие бизнес-плана. Нужно описать всю затратную и прибыльную часть. Любой проект должен приносить вам прибыль, иначе вы попадете в ситуацию, когда для оплаты труда работников вам потребуется потратить деньги будущих проектов. Т.е. вы будете жить в долг. Из этой ситуации очень сложно выпутаться. 
2. Никогда не тратьте больше, чем требует бизнес-план. Лучше пусть у вас на счету будут оставаться деньги, они пригодятся стабилизировать неровности поступления средств. Этот период становления на рынке занимает в среднем года за 3. Вы или выживете, или прогорите. Научитесь не опускаться ниже линии убыточности. 
3. Никогда не демпингуйте сверх меры. 
4. Качество всегда и во всем. Вы должны сделать клиенту качественный продукт. Просто обязаны. Себе, не заказчику. 
5. Всегда держите свое слово. С балаболами на рынке никому не интересно работать
6. Цените свой труд. Вы продаете или свои знания или свои руки и мозги. В первом случае заказчик доверяет вам выполнить работу, потому что вы лучше него знаете, что ему нужно. Во втором вам платят за то, что вы молча выполняете прихоти платящих деньги. Первых трудно найти, вторых — пруд пруди. Первые зарабатывают, вторые — выживают.

Удачи вам с бизнесом.

Худший ответ:
Не начинайте. Рынок перенасыщен предложением при относительно невысоком спросе. А учиться лучше работая на дядю за его деньги и на его клиентах. Говорю от имени дяди. Удачи.
Вопрос: Какие цвета лучше всего подходят для чтения с монитора?

Лучший ответ:
1. Контрастные цвета
В идеале это черный на белом, но как тут правильно пишут — яркий монитор будет белым бить по глазам. Лучше всего использовать не холодный белый, а теплый.2. Специально спроектированные шрифты для мониторов
вроде верданы, тахомы, и пр.
В идеале не только спроектированный компьютерный шрифт или шрифт для веб, но и с отдельными глифами для каждого размера шрифта. Такие шрифты есть (мало, поищите, я даже не берусь назвать), они достаточно сглаженные даже с отключенным антиалиасингом, так как проектируются попиксельно, в т. ч. рассчитываются апроши, чтобы межбуквенное расстояние не гуляло, что тоже очень утомляет глаза и затрудняет чтение.3. Отключенный или несильный антиалиасинг начертания
Да, с ним буквы выглядят симпатичнее, но глаз постоянно пытается сфокусироваться.
Из общих рекомендаций, если собираетесь много читать с монитора, то могу посоветовать также обратить внимание на интерлиньяж. Многие оставляют его по умолчанию, но для чтения он маловат. Сильно увеличивать тоже не стоит, так как будет теряться связь между строками, но скажем если автоматические мы имеем 12/14 pt, то лучше увеличить на 1 или 2 пункта, т. е. 12/16.

Худший ответ:
Данная тема уже была... Вот ссылка
Вопрос: В advanced шаблоне yii2 в папке frontend/web нет index.php?

Лучший ответ:
php /path/to/yii-application/init выполни команду

Худший ответ:
Надо скрипт init запустить с указанием нужного окружения. 
В advanced-шаблоне конфиги и файлы index.php зависят от окружения и лежат в папке environments. С помощью скрипта init они оттуда копируются в приложение.
Вопрос: Нужна ли хабру статья «Что делать айтишнику в российской армии»?

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

Худший ответ:
Люто, неистово плюсую!
Вопрос: Посоветуйте IDE для начала изучения JAVA

Лучший ответ:
Когда я только только начинал изучать яву, я писал в блокноте (Notepad2) и собирал все собственноручно через javac и командной строки, зная, что были разные IDE и тд. 
Я думаю, толк в этом какой-никакой все-таки был. А в IDE вы все равно еще напишитесь. Попробуйте без IDE на первых парах.

Худший ответ:
Использую Intellij Idea, но для новичка советую NetBeans. Сам на первых курсах использовал, остался доволен.