Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Хранение пароля к MYSQL в хэшированном виде?

Лучший ответ:
Продолжать хранить в файлах конфигурации. Для безопасного хранения файлов конфигурации занимайтесь безопасностью самого сервера. 
База:
- Код вашей "системы на php". Нет, серьёзно, проверяйте свой код, тестируйте.   
- Отключите ssh по паролю, используйте ключ с секретом;
- Смените стандартный ssh порт на 2к+, просто чтобы китайцы логи не засоряли; 
- Настройте фаервол, в идеале кроме веб сервера и ssh из внешнего мира ничего не должно быть доступно;  
- Поддерживайте актуальные версии ПО на сервере (как минимум веб-сервер, php, бд не старше полугода).

Худший ответ:
Эм, давно сайты пишете? Все хранят в открытом виде в файлах конфигурации. Другое дело, что к этим файлам доступа извне быть не должно.
И даже если вы зашифруете (не путь с кэшированием), человек, взломавший сервер   все равно найдет функцию, по которой вы конвертируете шифр в пароль.
Вопрос: Что быстрее: websocket или «обычное» соединение?

Лучший ответ:
Думаю единственной проблемой будет работа с другими сообщениями протокола, пока вы передаете файл. Давно не работал с вебсокетами, но что-то мне подсказывает, что передача файла заблокирует другие сообщения по каналу. Если это для вас критично, у вас есть два способа решения проблемы:
1. Передавать файл частями.
2. Передавать файл по другому каналу. Таким каналом может быть отдельный сокет или, внимание, xhr
Если мое предположение о заблокированном канале ошибочно, то других подводных камней я придумать не могу.
Помните что в http протоколе за вас уже позаботились о формате передачи файлов (вспоминаем про multipart/form-data, как об одном из решений), в сокетах вы будете создавать велосипед.

Худший ответ:
"Обычное" соединение - это протокол HTTP, он тоже основан на TCP/IP, но для получения ответа от сервера, требуется сперва сделать HTTP-запрос, это нагрузка и на клиент, и на сервер, а WebSockets - это почти что "сырой" TCP/IP, соединение остается открытым, нет "запросов" и "ответов", обе стороны шлют пакеты, когда им "вздумается", поэтому WebSockets лучше подходит для push-уведомлений, например, мгновенных сообщений (чаты), в остальных же случаях не имеет никакого смысла.
Вопрос: Как работает данный код?

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

если вы напишите
a,b = 2,3
то в переменной a окажется значение 2
а в переменной b -- значение 3

это же можно использовать в циклах:
words = [(0,'What'),(1,'the'),(2,'heck?')]
for key,word in words:
    print('key:', key)
    print('word:', word)
    print()
вывод:
key: 0
word: What

key: 1
word: the

key: 2
word: heck?

если же при разборе кортежа, какой-то элемент вам не нужет, то можно просто использовать нижнее подчёркивание

words = [(0,'What'),(1,'the'),(2,'heck?')]

for _,word in words:
    print(word)

Но автор вашего примера решил сделать нечто странное:
{} -- создание пустого dict
[()] -- присвоение в него по ключу "пустой кортеж" значения

учитывая, что исходный dict никуда не сохраняется, это можно считать отчисткой, только вот зачем?
a = {}
a[()] = 5
print(a)

{(): 5}

Худший ответ:
d = {}
for d[()], word in [(0, 'What'), (1, 'the'), (2, 'heck?')]:
    print(d, word)
Так понятно?
Вопрос: Почему выдает одну и ту же сумму?

Лучший ответ:
Должно быть так:
https://jsfiddle.net/ye2hxf3p/

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

Лучший ответ:
Давай рассмотрим другой вариант. Имеем хитрожопого пользователя. Который ищет халяву. Который решил попользоваться чужим трафиком. И его жопу поджарили. И он начал бегать как наседка в курятнике. которой не хватает петуха. Рассказывать что-то про то что он думал о том что он думал о том что было бы хорошо если он такой умный .... ну и так до бесконечности. Ну а по факту ... имеем воришку. Его поймали за руку и он теперь всякую охинею несет. 
Провайдер не нарушил какие-то законы. А ты нарушил. =) Ну а дальше суд разберется. Так что 

Худший ответ:
Здесь можно зацепиться только за то, что провайдер, фактически, не в состоянии установить личность подключившихся абонентов. т.е если подключить wifi точку где-то на нейтральной территории (чердаке например) к оборудованию провайдера,  и раздавать бесплатный wifi, то это уже нарушение закона.
Но это правда только в том случае если в России провайдеров обязывают собирать данные обо всех абонентах. В любом случае думаю в эту сторону можно покопать. 
Кстати если Вы так сделаете и возьмете чей-то МАС адрес, то учтите, что скорее всего подставите того человека... 
И перестаньте уже кормить этого тролля))
Вопрос: Какие стоит пройти курсы по Ruby/Ruby on rails?

Лучший ответ:
guides.rubyonrails.org круче ничего нету

Худший ответ:
Бесплатно и увлекательно: https://rubyrush.ru
Дорого и основательно: https://goodprogrammer.ru/rails
Вопрос: Есть ли у кого опыт удаления неправдивых отзывов в Google Play?

Лучший ответ:
Люди имеют право писать отзывы какие посчитают нужными (кроме откровенного спама, который как раз и могут удалить).  Я имею полное право написать "Отстой" с одной звездой и не сообщать вам никаких причин на это.
Да и вообще, что-то мне подсказывает, что несколько отзывов с лайками, уже могут говорить о том, что всё не так уж и несправедливо.

Худший ответ:
В наши дни приложения нужно писать без багов вообще, как бы это странно ни звучало. Каждый баг - это родовое пятно. Каждая функция должна быть удобна и очевидна. Если что-то не так - ловите плохой отзыв. Такая, вот, справедливость.
Вопрос: WHERE в SELECT SQL?

Лучший ответ:
SELECT [Поле группировки], sum(что сложить) FROM `table`  
 WHERE <условие>
 group by [Поле группировки]
илиSELECT [Поле группировки], sum(что сложить) FROM `table`  
 group by [Поле группировки]
having [условие]
Запросы работают примерно одинаково. Только в первом мы сначала  накладываем условие на таблицу, а потом группируем. А во втором сначала получаем данные и накладываем условие.

Худший ответ:
SELECT `money` FROM `table`
  WHERE date(`date`) BETWEEN вчера AND сегодня
Вопрос: Как сильно востребовательны технологии microsoft наподобие Xamarin, ASP.NET на рынке труда?

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

Худший ответ:
Вакансий в разы меньше. Но нужно понимать, что компании, кто пишет на java/.net cтабильней в силу объема, плюс задачи достаточно последовательные. Так что 5-10 вакансий на .net могут перекрывать, 40-50 вакансий на php/python/ruby.
Так что если возьмешь место, можно там 3-5 лет стабильно работать.
Вопрос: Какие ОС используют хостинги и как на них устанавливается php, node.js и БД?

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

Худший ответ:
Если это vds-хостинг, то самостоятельно выбираете нужный дистрибутив, создаёте виртуальный сервер, а дальше устанавливать в зависимости от выбранной ОС
Вопрос: Как использовать PIP на хостинге?

Лучший ответ:
Если речь про shared hosting (то есть, вы не можете подключиться на сервер по ssh с правами рута), то единственный способ что-то там поменять - обратиться в тех. поддержку. Но есть немаленькая вероятность, что в поддержке ничего делать не станут - хостинги работают по принципу "работает - не трогай", а те, кому нужны подобные тонкости, используют VPS.

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

Лучший ответ:
wsus, на котором для него ничего нет.Сообщите об этом администратору WSUS. Необходимо включить соответствующую категорию обновлений для синхронизации.
Или скачивать их Каталог Центра обновления Майкрософт. Поскольку для Windows 10 выпускается одно кумулятивное обновление в месяц (редко, обновление безопасности, отдельно — но входящее в следующее кумулятивное) это не доставит больших хлопот.Журнал обновлений Windows 10
А ведь сразу даже в голову не пришло:указать системе обычные сервера обновлений через инет, а не локальныеC:\Windows\System32\drivers\etc\hosts

Худший ответ:
wsus, на котором для него ничего нет.Сообщите об этом администратору WSUS. Необходимо включить соответствующую категорию обновлений для синхронизации.
Или скачивать их Каталог Центра обновления Майкрософт. Поскольку для Windows 10 выпускается одно кумулятивное обновление в месяц (редко, обновление безопасности, отдельно — но входящее в следующее кумулятивное) это не доставит больших хлопот.Журнал обновлений Windows 10
А ведь сразу даже в голову не пришло:указать системе обычные сервера обновлений через инет, а не локальныеC:\Windows\System32\drivers\etc\hosts
Вопрос: Насколько адекватно я совершил трюк с убиранием папки web?

Лучший ответ:
Ужасный трюк
Сервер должен смотреть в публичную папку, где есть ТОЛЬКО точка входа и статичные файлы
Костыль с разруливанием в htaccess уже фигня
Ваш "трюк" -- совсем фигня

Худший ответ:
И теперь у вас ссылка вида http://site.com/composer.json возвращает то что надо?
Обработчик index.php прячут для того, чтобы закрыть возможность блуждания пользователя по дочерним директориям, а не для забавы ради. Несомненно, всё будет работать (если правильно настроить), но вот только теперь вам нужно во все поддиректории корневой папки добавить по файлу htaccess, чтобы запретить туда доступ. Где профит?
Вопрос: Сборку которую я собрала нормальная?

Лучший ответ:
1) нет никакого смысла в дорогой памяти, она работает точно так же как и дешевая. А вот взять 32gb вместо 16 - однозначно стоит.
2) первый раз в жизни вижу что бы в заказ включали лицензионный виндовс.
3) WD Blue - самая мертвая серия, берите RED лучше.
PS а BD разве жив? я делал предзаказ, потом долго выбивал из них деньги обратно посмотрев на этот треш вживую.

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

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

Худший ответ:
либо пишется для каждой ОС (винда, линукс, яблоко) отдельная реализация основанная на апи системы и потом через макросы делается чтобы например если винда то использовалась виндовая реализация и т.д.
Примерно так, для компиляции - макросы препроцессора, для выполнения - есть разные способы, можно через те же макросы менять значения констант.либо как то может на ассемлере пишется...
В доступе ниже прикладного уровня главную роль играет не ЯП, а внедрение в ОС, штатными способами (драйвера и т.п.) или с помощью инъекций и т.п., Assembler здесь не главное, это всего лишь очень гибкий и очень неудобный "формат" исполняемого кода и не более.вручную отрисовка кнопок и прочих элементов интерфейса попиксельно и т.д.
По пикселям никто не рисует, с другой стороны использования стандартных контролов WinAPI (CreateWindow) "в чистом виде" тоже избегают, они недостаточно гибкие и в конце-концов их в нем просто очень мало, лучше реализовать свои "велосипеды", но для отрисовки используется максимально высокоуровневый интерфейс GDI/GDI+/OpenGL/DirectDraw который рисует изображения "зашитые" в библиотеку, и вовсе не по пикселям, а целиком.
А если требуется соответствие графики системной теме оформления, то используется еще и UxTheme - тоже библиотека из WinAPI.Потому что как тогда объяснить что в том же Qt на всех ОС внешний вид контролов одинаковый?
Разве? В Qt Widgets вроде бы как раз system look and feel.
А вот в Quick (QML) - да, там изображения "зашиты" в саму библиотеку и она их рисует через системное API каждой ОС.
Вопрос: Как лучше реализовывать баланс?

Лучший ответ:
Создать таблицу для хранения платежей (пополнения списания) и считать баланс путем сложения операций? Или просто создать колонку balance и все? 
И то и другое. Колонка balance для быстрого получение этой информации, чтобы, к примеру, выводить на странице профиля. Но при любой операции с балансом эту колонку пересчитываем путем сложения. Так же не стоит её использовать при определении того хватает ли пользователю на какую-то операцию или нет.

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

Лучший ответ:
Просто подробно почитайте википедию о том, как работают скриптовые языки и все будет понятно.
https://ru.wikipedia.org/wiki/%D0%A1%D1%86%D0%B5%D...
Основная суть - потому что программа на скриптовом языке не выполняется сразу, а интерпретируется интерпретатором.

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

Лучший ответ:
Функция myAlerts() в данной реализации (onclick атрибут) должна послать асинхронный запрос на сервер, который уже сделает запись в базу.
Так как javascript выполняется в браузере уже после выполнения кода на сервере - единственный способ сделать запись в базу - AJAX (еще есть вебсокеты, но это более сложная тема).
https://ru.wikipedia.org/wiki/AJAX
Обработчиком этого запроса может служить выделенный файл php, или роут (если Вы используете фреймворк)

Худший ответ:
в функции myAlerts() сделай Update с именем пользователя который ты можешь взять из сессии.
Вопрос: Парсинг html с помощью c# стандартных инструментов?

Лучший ответ:
Если у вас правильный html с закрывающимися тегами, то можно попробовать через XDocument или XElement
Условно, где-то так:var xEl = XElement.Parse("<div style=\"font-family: 'Courier New', Courier, monospace; font-weight: normal\">Hello word</div>");
Console.WriteLine((string)xEl);
Там же можно воспользоваться XPath. Где-то так:var xDoc = XDocument.Parse("<div><div class='c1'>c1</div><div class='c2'>c2</div><div class='c3'>c3</div></div>");

string xPath = "//div[@class='c1']";

foreach (var xElement in xDoc.XPathSelectElements(xPath))
{
	Console.WriteLine((string)xElement);
}

Худший ответ:
Если действительно необходимо выполнить парсинг HTML при помощи регулярных выражений, то можно сделать такstring html = "<div style=\"font - family: 'Courier New', Courier, monospace; font - weight: normal; \">Hello word</div>";
Regex regex = new Regex("<div style=\"font - family: 'Courier New', Courier, monospace; font - weight: normal; \">(.*)<\\/div>");
string text = regex.Match(html).Groups[1].Value;
Вопрос: Как вычислять uptime компьютеров в домене?

Лучший ответ:
создать список из компов
в цикле бегать по списку получать wmi объект
дальше делать что хочется

Худший ответ:
Если не хочется использовать скрипты - есть программа softperfect network scanner, которая может определять Uptime компьютеров при сканировании сети. Старые версии программы (<= 6) бесплатны.
Вопрос: Кто-нибудь видел что-то на подобии?

Лучший ответ:
Готовый пример: https://jsfiddle.net/MrStan1slav/nb1h7tdu

Худший ответ:
в готовых шаблонах bootstrap написанных для админок (да и вообще наборов) есть подобные штуки
Вопрос: Как сделать окошко при первом заходе на сайт?

Лучший ответ:
Проверять запись в локалсторейдже, если ее нет - показывать окошко и записывать, если есть - ничего не делать.

Худший ответ:
Проверять есть ли Cookie/Session/localStorage.
Вопрос: Laravel и данные в отношения?

Лучший ответ:
В коде здорово человек такое не просходить@foreach ($client->relatedOrders as $order)
            @foreach ($order->relatedProducts as $product)
                @php($a[] = $product->qty*$product->relatedPenalty->price)
            @endforeach
        @endforeachв представлении
Это хотя бы надо делать в сервисе/модели отдельным методом и споконо выводить.$client->getTotalOrdersProductsPenaltyPrice()
И именно getTotalOrdersProductsPenaltyPrice, а то потом хрен разберешься в вашем коде.

Худший ответ:
наверное $a для каждого клиента при выводе обнулять
ну или хотя бы расскажите какие неправильные значения и чего становятся
Вопрос: Как вылечить сервер, который считает, что все место на диске закончилось, так как df -h показывает 100% занятого места на /, но df -ih показывает 27%?

Лучший ответ:
Потому что аноды это индексные дескрипторы, и место под них резервируется сразу. Видимо вы видите сколько места система под них использовала и сколько осталось. Гуглить перед вопросом....

Худший ответ:
Есть такая тулза ncdu
https://dev.yorhel.nl/ncdu
Это аналог baobab для работы без иксов.
Вопрос: Слайдер на vue.js?

Лучший ответ:
https://youtu.be/Q7CUJRbuZaU
Посмотрите это видео.
Делается просто и быстро

Худший ответ:
В общем для начинающим, коем сейчас являюсь и я )
Переходим сюда https://www.jsdelivr.com/
в строке поиска вводим нужный компонент vue и не только, после он сформирует ссылку на cdn которую достаточно подключить в своем проекте для использования этого компонента или там же можно скачать сформированный архив и залить к себе в проект, после чего этот компонент можно сразу использовать. Обычно в самих архивах есть пример подключения и использования компонента из коробки. Так же можно сформировать целую пачку необходимых компонентов в виде архива.
Вопрос: Знание других языков и HTML/CSS и тд?

Лучший ответ:
ЯП и веб-разработка не имеют ничего общего между собой.
ЯП - это инструмент, реализующий логику работы алгоритма через написание кода.
Веб-разработка - это применение различных наборов веб-технологий (общепринятых правил для обмена информацией в интернете), позволяющих выносить логику работы алгоритма в сеть для возможности удалённой работы с сетевым приложением, запущенном на удалённом устройстве (например, на веб-сервере).
Ничто не мешает разрабатывать интернет-сервис на том языке программирования, который Вы уже знаете. Если хотите влиться в общий поток - учите PHP.
В плане корректного отображения в браузерах на клиентских устройствах, необходимо будет изучить гипертекстовую разметку (HTML5), создание каскадных таблиц стилей (CSS) и javascript (для обработки событий DOM-структуры веб-приложения браузером).

Худший ответ:
Причина, по которой вас обучали Pascal, Delphi и т.п. на первых классах/курсах - это понятие самого программирования, алгоритмов и т.п.Насколько важно знать другие языки, по типу Паскаля, Делфи и др полушкольных и языков
Только основы - алгоритмы, стиль мышления и т.п.Боюсь пропустить основы, начав изучать веб-разработку
Если вы поняли что да как на одном ЯПе, то изучить другой язык программирования не должен составить много труда. Главное было желание.
Вопрос: Каким образом можно определить, был ли компьютер перезагружен?

Лучший ответ:
https://msdn.microsoft.com/en-us/library/ms713418(...
timeGetTime() — воз­вра­ща­ет вре­мя в мил­ли­се­кун­дах с мо­мен­та стар­та опе­ра­ци­он­ной си­сте­мы

Худший ответ:
в консоли cmd введи systeminfo
Вопрос: Как проверить, правильно ли введен номер телефона?

Лучший ответ:
Я просто оставлю это здесь регулярка

Худший ответ:
Лучший вариант, это, конечно, или контрольный звонок, или менее докучающий Ping-SMS
Вопрос: Возможно ли трудоустройство несовершеннолетнего программистом?

Лучший ответ:
Позвонить в принципе будет быстрее и эффективнее, чем ждать ответа на тостере.
Например, откуда мы знаем, в какой стране вы живете?
Законодательство отличается.
Трудоустройство может быть официальным и нет.

Худший ответ:
Трудовая деятельнось в РФ разрешена с 14 лет.
14-16 лет — 24 часа в неделю
16-18 лет — 36  часов в неделю
Вопрос: На чем разрабатывают AR игры и приложения?

Лучший ответ:
Для разработки под Hololens нужен либо Windows 10 SDK, либо Unity, при желании можно использовать и Unreal, но официально майкрософт рекомендует юнити. Никаких Android AR и Apple AR не существует, есть ARCore и ARKit, это SDK, которые можно использовать напрямую, либо вызывать из игрового движка. По части мобильного AR особой разницы между Unity и Unreal нет.
Графику для движка можно делать в любой программе, хоть в Cinema 4D, хоть в блокноте, главное, чтобы движок поддерживал формат. Напрямую из Cinema 4D в Hololens ничего не запихнёшь, потому что синема это не движок, а редактор.
Короче говоря, если вам очень сильно нужен Hololens, то берите Unity, если не очень, то берите то, что больше нравится.

Худший ответ:
Всё реализуется на уровне игровых движков. А большие игровые движки, наподобие unreal engine, покрывают почти все платформы. Глубже копать почти бессмысленно, потому что у каждого набора VR, AR свой SDK на С++ и сделать что то что покроет несколько платформ - затратно по времени.
https://www.unrealengine.com/en-US/vr
Изучайте работу с каким нибудь большим игровым движком. Будь то Unity или Unreal engine.
То что показывали Apple на презентации было сделано на Unreal Engine. Пруф https://www.unrealengine.com/en-US/blog/high-end-a...
Вопрос: Как построить цепочку вызовов статичной функции?

Лучший ответ:
нет никакой разницы статический метод или нет: если он возвращает объект, то можно чейнить.
самый примитивный пример - ideone.com/Nr4MgL

Худший ответ:
USER::take('email');
USER::where(['id' => 1]);
цепочку статически никак
Вопрос: Как определить алгоритмическую сложность функции?

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

Худший ответ:
Цикломатическая сложность (вдруг натолкнет на нужное)
Вопрос: В чем суть миграций БД?

Лучший ответ:
СУБД можно разделить на 2 группы:С заранее определенной схемой данных (определенным списком таблиц и их колонок)И бессхемные
СУБД с жесткими схемами и шустрее и лучше оптимизируются.
Но обладают очень неприятным недостатком - вы не можете вот так легко и просто начать туда записывать новый вид данных, не предусмотренный при начальном создании БД.
Процесс преобразования БД, при котором меняется схема (таблицы и их колонки; вспомогательные вещи такие как индексы и пр.) - и называется миграцией.
Причем важный момент - изменения в структуру базы данных могут вноситься, когда она уже давно существует и наполнена важной информацией, которую нельзя потерять, что еще больше затрудняет процесс. 
И еще важный момент:
Как правило та или иная версия программы рассчитана на работу или со старой или с новой схемой базы данных. Не одновременно со старой и новой. То есть перед, тем как вы начнете эксплуатировать новую версию - вам обязательно нужно произвести миграцию. И после того как произведете миграцию - уже нельзя будет использовать старую версию программы. Что еще дополнительно усложняет процедуру перехода на новую версию программы.

Худший ответ:
Рекомендую ознакомиться с хорошим мануалом по миграциям в Django - возможно это вас приблизит к пониманию сути процесса.
Вопрос: Какие есть наборы настроек операционной системы (Windows) для повышения ее защищенности?

Лучший ответ:
Навскидку:
1. Настройка политик безопасности, там очень много настроек именно на эту тему;
2. Создать юзера с ограниченными правами (урезать в "Пользователях");
3. Заюзать права NTFS к файлам, квоты и прочее;
4. Брандмауэр и Защитник.
Что первое в голову пришло.

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