Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Насколько полезно читать книги?

Лучший ответ:
Книга - величайшее достижение человечества.

Книгу ты можешь читать в том темпе, который тебе удобен. ОЧЕНЬ легко в книге вернуться и перечитать слово или фразу или предложение или абзац. С видео это гораздо проблематичнее.

Какие-то вещи в видео нагляднее, но процент таких вещей несмотря на развитие технологий визуализации, все еще невелик.

Само по себе оформление знаний в книге может быть гораздо более плотным чем в любом видео.

Но.
Самым эффективным является практика.
Поэтому просто чтение книг или просмотр роликов - должны быть только подсказкой как нужно делать. Эффективным для получения навыков является исключительно практика. А в этом случае чтение книг, статей, документации - является гораздо более удобным, чем видеоролики.

В принципе видеоролики могут быть более эффективными для для художников, спортсменов, и так далее. 
Для разработчиков - только отдельные моменты.

Худший ответ:
Пойдем от обратного: ни один человек не стал глупее, прочитав даже самую бесполезную книгу. А степень полезности не может быть выражена количественно. 
Поэтому охота - читайте. Не охота - не читайте. Уникальный материал и он вам нужен - читайте даже если не охота.
Вопрос: Локальный домен AD назван по типу company.loc, а не company.local. Так можно?

Лучший ответ:
Даже лучше ибо бывают проблемы

Худший ответ:
Коллеги, большущее спасибо всем за ответы! 

Если я правильно понял, то ни *.loc ни *.local не торт, но *.local в 2021 году уже использовать явно не стоит, а *.loc кое-как, худо-бедно сойдёт.

Поговорю об этом с коллегой, благодаря вам у меня теперь есть аргументы :)

Всё-таки, ещё прошу Вас напоследок поделится, как Вы бы в назвали новый домен AD, сейчас в 2021 году?

Я так понимаю, самое "best practice" - это делать поддомен вида corp.company.com? В целом, мне такой вариант очень по душе, сайт у нас уже давно имеется, корп почта тоже. Вроде как логичное продолжение...
Вопрос: Как ускорить загрузку страницы с фильтром по товарам?

Лучший ответ:
Считать фильтры по крону и кешировать.
Ещё вот интересно: https://habr.com/ru/post/261137/

Худший ответ:
Запросы осуществляются через Promise.all ?
Вопрос: Что за папка /root/mdb103/?

Лучший ответ:
Сделай из под root

lsof -n | grep root/mdb103

при запущенной mariadb. Если найдёт запущенные процессы mariadb, использующие файлы в этом каталоге, значит да, файлы там нужны.

В каталоге лежат deb-пакеты, они после установки не нужны. В подкаталоге лежат исходники сервера скомпилированные. В зависимости от того, как они установлены, они могут быть также не нужны. Если их ставили через make install без префикса в /root, то сервер должен, скорее всего, стоять в /usr/local. Если через сборку пакетов с помощью debian/rules (при этом готовые пакеты кладутся в вышестоящий каталог, что весьма логично), то тоже не нужны - они должны быть затем установлены в систему.

В конце концов, необязательно файлы сразу удалять. Можно попробовать переименовать этот каталог, перезагрузить базу или даже весь сервер и убедиться, что всё работает.

Худший ответ:
mariadb скорее всего и перестанет работать
Вопрос: Почему мои SQL запросы неправильные?

Лучший ответ:
1. Вы пишите ORDERS_ID = 'гречка', по ТЗ "ORDERS_ID — ID заказов, int;"
2. Вы пишите Orders.ORDERS_ID = Users.USER_ID, по ТЗ "ORDERS_ID — ID заказов, int; USER_ID — ID пользователей, int;", т.е. совсем разные вещи, нет смысла по ним соединять таблицы.
3. Вы пишите EMPLOYEE_ID = 'менеджер', по ТЗ "EMPLOYEE_ID — ID сотрудника, int;"

Разберитесь, что такое ID в базе данных, как создаются связи. Создайте базу по указанным условиям, и на ней делайте попытки.

Худший ответ:
Почему мои SQL запросы неправильные?
Потому что тут нет SQL запросов.

Тут мешанина служебных слов SQL и полей таблиц, собранных воедино без малейшего понимания сути.

ORDERS_ID = 'гречка'
Orders.ORDERS_ID = Users.USER_ID
Jobs.SALARY = Employees.EMPLOYEE_ID

Действительно, что тут может быть не так?..
Вопрос: Причина медленной работы сети?

Лучший ответ:
CRS125 не роутер, отсюда и проблемы. Поставьте роутером хотя бы hEX

Худший ответ:
4) поможет ли увеличение скорости от провайдера?
Вне рабочее время, скорость интернета нормализуется
Вопрос: Разница между L2 и L3 vpn разница?

Лучший ответ:
L2 VPN объединяет локальную и удаленную сети в один L2 сегмент, а L3 VPN требует маршрутизации для обмена данными между сетями. Неприменимо, если к VPN подключается конкретно хост, а не сразу подсеть.

Худший ответ:
Поверх L2 туннеля можно использовать любой L3 протокол, а поверх L3 - нельзя.
Вопрос: Как создать самоперезапускающийся сервис systemd?

Лучший ответ:
В systemd для этого существуют таймеры. Делают ровно то, что вам нужно.

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

Лучший ответ:
Есть две основные опции:
1. Обычные банки в других странах
2. Необанки.

Резиденты РФ последнее время открывают карты в:
1. Казахстане
2. Армении
3. Узбекистане
4. Киргизии
5. Турции

В большинстве случаев карту нельзя открыть удалённо. Нужно прилететь в страну, пройти комплаенс банка, дождаться изготовления. Есть редкие спецпредложения открыть карту удалённо. В Казахстане вроде что-то такое рекламировали. Поищи.
По опыту с Арменией могу сказать, что сейчас желающих настолько много, что все местные банки затянули гайки насколько можно: с нерезидентов требуют подтверждение дохода и договор аренды квартиры, многие банки вообще перестали открывать счета нерезидентам, а те, кто открывает, взвинтили комиссии до небес. Ну то есть отдать 3000-15000р за открытие обычной карточки - это нормальная картина.
Второй момент - российская банковская система настолько впереди планеты всей, что даже не пытайся найти что-то "а-ля Тинькофф" за границей. Никаких виртуальных карт, мультивалютных карт, крутых мобильных банков и тому подобного. Тут ты платишь деньги банку, а тебе за это дают самую простую карточку, по которой за каждый чих ещё берут комиссию. И интернет-сервисы лет на 10-20 отстают от РФ.

Необанки - это что-то вроде Wise, Revolut, Bankoff, Payoneer и т.д. С ними всё сложнее, потому что они не хотят иметь дела с россиянами. Вроде Bankoff нормально открывает, но пополнение только в крипте.

Худший ответ:
А есть какой то большой доступ? Собственно для открытия счета почти везде нужно быть на месте живьём, так что выбирайте исходя имя того что есть у вас рядом
Из совсем удаленных смысла открывать нет, так как карты в РФ никто не выдает уже давно, плюс есть риск что сейчас отожмут все счета россиян
Вопрос: Как передать данные с html в php и обратно?

Лучший ответ:
https://developer.mozilla.org/ru/docs/Web/API/Fetc...
На кнопку результата навешиваете обработчик, в нем получив результат
document.getElementsByName("answer")[0].value = data;

Худший ответ:
Получилось после объединения в 1 php файл

<?php
$result = "";

function calculate($value)
{
    return eval("return ".$value.";");
}

if (isset($_POST["answer"])) 
{
    $result = calculate($_POST["answer"]);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/style.css">
</head>
<body>
    <div class="wrapper">
        <div class="flex-block">
            <div class="gui">
                <form name="calc" method="post">
                    <input class="answer" type="text" name="answer" value="<?php print($result); ?>" autocomplete="off">
                    <input class="button" type="button" value="1" onclick="form.answer.value += '1';">
                    <input class="button" type="button" value="2" onclick="calc.answer.value += '2'">
                    <input class="button" type="button" value="3" onclick="calc.answer.value += '3'">
                    <input class="button operator" type="button" value="+" onclick="calc.answer.value += '+'">
                
                    <input class="button" type="button" value="4" onclick="calc.answer.value += '4'">
                    <input class="button" type="button" value="5" onclick="calc.answer.value += '5'">
                    <input class="button" type="button" value="6" onclick="calc.answer.value += '6'">
                    <input class="button operator" type="button" value="-" onclick="calc.answer.value += '-'">
                
                    <input class="button" type="button" value="7" onclick="calc.answer.value += '7'">
                    <input class="button" type="button" value="8" onclick="calc.answer.value += '8'">
                    <input class="button" type="button" value="9" onclick="calc.answer.value += '9'">
                    <input class="button operator" type="button" value="x" onclick="calc.answer.value += '*'">
                
                    <input class="button clear" type="button" name="clear" value="c" onclick="calc.answer.value = ''">
                    <input class="button" type="button" value="0" onclick="calc.answer.value += '0'">
                    <input class="button" type="submit" value="=">
                    <input class="button operator" type="button" value="/" onclick="calc.answer.value += '/'">
                </form>
            </div>
        </div>
    </div>
</body>
</html>
Вопрос: Стоит ли чистить систему от Вирусов?

Лучший ответ:
Переустановите, если есть возможность.
Если нет, то KVRT и CureIt! в помощь. Потом ещё sfc /scannow полирнуть.

Худший ответ:
Соглашусь с Рональдом. Есть вариант - переставьте
Вопрос: Как защитить WiFi пароль?

Лучший ответ:
В организации не нужно использовать пароль, а нужно использовать авторизацию, привязанную к логину и паролю пользователя, например через Radius.

Худший ответ:
С учетом повального безлимита вопрос выглядит немного странно (если, конечно, вы не беспокоитесь за "сомнительный" трафик, но его и текущие работяги могут нагнать).
Если все-таки нужно:
В колледже / универе у нас была локальная прослойка между роутерами и "внешним миром" с необходимостью авторизовываться через персональный аккаунт (выдавали лаборанты) Без понятия, что у них там крутилось, возможно самопал, но поиск выдал это.
Вопрос, как таковой не решает, но своевременная чистка устаревших акков раз в 2 недели / месяц, скажем, наиболее оптимальна.
Вопрос: Автоматическое завершение тегов на php?

Лучший ответ:
Можно починить текст при сохранении через tidy, но в долгосрочной перспективе лучше прикрутить wysiwyg без опции редактирования голого текста или разрешить только markdown

Худший ответ:
нашел один ответ на форуме.
Мне подошелfunction closetag($html){
    $html_new = $html;
    preg_match_all ( "#<([a-z]+)( .*)?(?!/)>#iU", $html, $result1);
    preg_match_all ( "#</([a-z]+)>#iU", $html, $result2);
    $results_start = $result1[1];
    $results_end = $result2[1];
    foreach($results_start AS $startag){
        if(!in_array($startag, $results_end)){
            $html_new = str_replace('<'.$startag.'>', '', $html_new);
        }
    }
    foreach($results_end AS $endtag){
        if(!in_array($endtag, $results_start)){
            $html_new = str_replace('</'.$endtag.'>', '', $html_new);
        }
    }
    return $html_new;
}
Вопрос: Зачем надо (1) в COUNT?

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

В данном случае, в качестве аргумента COUNT используется число 1. Однако, это значение не имеет никакого значения для подсчета количества строк в таблице. Оно выбрано скорее для упрощения запроса и ускорения его выполнения. Например, в некоторых базах данных, использование 1 вместо столбца имеет меньший размер и может ускорить выполнение запроса.

Поэтому, если вам нужно просто подсчитать количество строк в таблице, можно использовать любой аргумент внутри функции COUNT, в том числе и 1. Однако, в общем случае, для подсчета количества строк можно использовать и другие конструкции, например, COUNT(*) или COUNT(имя_столбца).

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

В данном случае, в качестве аргумента COUNT используется число 1. Однако, это значение не имеет никакого значения для подсчета количества строк в таблице. Оно выбрано скорее для упрощения запроса и ускорения его выполнения. Например, в некоторых базах данных, использование 1 вместо столбца имеет меньший размер и может ускорить выполнение запроса.

Поэтому, если вам нужно просто подсчитать количество строк в таблице, можно использовать любой аргумент внутри функции COUNT, в том числе и 1. Однако, в общем случае, для подсчета количества строк можно использовать и другие конструкции, например, COUNT(*) или COUNT(имя_столбца).
Вопрос: Реально ли на чистом HTML, CSS, JS написать CRM систему как Basecamp?

Лучший ответ:
По описанию звучит как бред, НО:
Во первых - на вашем месте (да и вообще в любом случае в будущем) - не стесняйтесь спросить - какие функции работодатель ждет от финальной работы. Может ему нужно только хтмл+цсс, ну и как-то переключаться между папочками. 

Если нет - просите развернутые задачи по каждому из предполагаемо рабочих элементов, как должен реагировать, какое поведение, откуда берутся данные, куда отправляются, в каком формате...

После этого четко распишите задачи для себя, что и как по порядку будете делать. Если сможете - крайне желательно напротив каждого пункта написать время, сколько вы будете реализовывать то или другое задание. По идее за вас это должен был сделать "сенпай", но если не сделал - значит постановка задач в конторе хромает на обе ноги, и тут уже вам решать - будете ли вы и далее в таком режиме работать или будете искать другую работу. С одной стороны - хорошо научитесь декомпозировать задачи и обосновывать сроки, с другой - сверху должны понимать что сроки соответствуют описанным вами и выделять затребованное время.

Худший ответ:
Без бэкэнда никак
Вопрос: Как реализовать онлайн трансляцию экрана на Python?

Лучший ответ:
Сам по себе Python ничего не транслирует. Но из него можно вызвать утилиты такие как 
* ffmpeg
* openRTSP 
* cvlc (Concole VLC player)
и дать им задание что-то транслировать.

Еще почитай про RTSP/RTP протоколы для общего развития.

Вообще это задание требует обширных знаний сетей и протоколов. И просто на одном Python тут я считаю нельзя выехать.

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

К предыдущему ответу по существу могу вот нагугленный с первой попытки вопрос со стэк-оверфлоу предложить: https://stackoverflow.com/questions/35097837/captu...

Однако, судя по постановке вопроса, не думаю, что вы сможете собрать всё это в работоспособную кучу.
Вопрос: Как убрать disabled при повторном нажатии на чекбокс?

Лучший ответ:
чекбокс.addEventListener('change', e => кнопка.disabled = !e.target.checked);

Худший ответ:
Условием к примеру
reg_chekbox.onclick = () => {
if (reg_button.disabled) ? reg_button.disabled = false : reg_button.disabled = true
     
    };
Вопрос: Как работать с готовой базой данных sql?

Лучший ответ:
ставите SQl management studio, создаете базу , выполняете скрипт


Поправка, увидел дамп это mysql используйте mysql workbench

Худший ответ:
Что значит есть sql файл ?
Это дамп или sql с созданием таблиц, инсертами и констрейнами? Приложи sql-файл, чтобы было понятно
Вопрос: Какой текстовый редактор умеет работать с файлами до 5Гб?

Лучший ответ:
man sed
man awk

честно говоря не уверен, что обычный текстовый редактор справится с такими объемами. В этом случае линуксовые потоковые редакторы лучше подходят под задачу.

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

Можно само собой пользоваться готовыми утилитами типа sed (регулярными выражениями) и awk (это вообще специализированный древний язык работы с потоками данных)
Вопрос: Как не распыляться в обучении?

Лучший ответ:
Эффект крысы, нашедшей рычажок, включающий электроды у нее в мозгу.
Ты хватаешься за новую технологию, играешься с ней, получаешь удовольствие, в крови плещется дофамин.
А берешься копать глубже - там уже рутина, неинтересно, уровень дофамина падает и мозг ищет, как его поднять. Да вот же - надо бросить все, схватиться еще за одну игрушку, и получишь новую дозу.
Пока такое поведение не будет сопровождаться выбросом кортизола, потому что тебе реально надо заниматься делом, а ты балуешься - так и будешь "жать на рычажок".
Можно начать с проверки, чему ты научился за эти 1,5 года. На каких-нибудь тестах, которые ткнут тебя носом в грязь и покажут, что ты полный неуч, похватал по верхам, но всерьез ничего не освоил.
Ну, банально выйти из этой самой пресловутой зоны комфорта. Испортить себе это благодушное настроение, создать стресс. Он мотивирует.

Худший ответ:
не надо себя ограничивать
к примеру:
если ты знаешь "идеально", но только какой то один язык программирования,
то и программёр из тебя посредственный,
есть любимые/предпочитаемые/"в которых я Бог",
но нужно знать больше,
хотя бы для того, чтобы было с чем сравнивать.
Вопрос: Как разделить input.value на 2 span`a, если имеется знак [*]?

Лучший ответ:
const array = value.split("*");
Вы получите массив с двумя строчными значениями, потом делайте с ними что угодно.
напримерarray.map((e) => <span>{e}</span> || <span>{array[0]}</span>

Худший ответ:
const array = value.split("*");
Вы получите массив с двумя строчными значениями, потом делайте с ними что угодно.
напримерarray.map((e) => <span>{e}</span> || <span>{array[0]}</span>
Вопрос: Как сделать картинку размером более 100000 пикселей(png)?

Лучший ответ:
 Битмап такой размер сделать не может.
 а затем редактировать её классом битмап?
У тебя тут взаимоисключающие тезисы. Так что никак :)

1. Учитывай, что такая "картинка" будет весить 232гб (для манипуляций с картинкой её надо распаковать), так что продуктивнее будет её разрезать на N тайлов чуть меньшего размера. Хотябы по 16к*16к пикселей
2. Ты можешь взять ImageSharp(https://sixlabors.com/products/imagesharp/)
или Skia:(https://github.com/mono/SkiaSharp) - в них меньше ограничений, чем у стандартного Bitmap, но всё равно врядли они смогут с гигантскими картинками работать.

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

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

Худший ответ:
Если Вы хотите вызвать функцию из какого либо "кейса", то Вам необходимо создать класс. Если Вы новичок, побольше почитайте про ООП. Вот пример кода, где Ваш метод (функция) вызывается из класса. 
class SimpleClass:
  def SimpleMethod():
    print('Я метод "SimpleMethod" в классе "SimpleClass"')

def SimpleFunction():
    SimpleClass.SimpleMethod()

SimpleFunction()
Вопрос: Как восстановить внешний жёсткий диск?

Лучший ответ:
Для начала разобрать, и подцепить напрямую к ПК, через сата

Худший ответ:
В общем помогла программа RS Partition Recovery. Удалось восстановить все файлы, однако несколько самых больших файлов (1.5 - 3ГБ) после восстановления имели размер 0 байт.
Вопрос: Как собрать сервер на устаревшем ПО?

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

Как виртуализовать? Тут придется немного потрахаться. (Мне не так давно пришлось сделать примерно то же самое, только версия FreeBSD была еще более старой - установлена (мной же) в 2004 году!)
- Снять винт и воткнуть в машину, где есть место равное двойному обьему винта
- Сделать тупой посекторый образ винта (dd в линухе, WinDD в винде)
- Сконвертить полученный образ в образ, годный для гипера - vdi, vmdk, vhd, смотря какой гипер будет
- Создать машину, указать в качестве винта полученный образ, с железом не фантазировать, ставить то, что точно есть в ядре (во FreeBSD ядро монолитное, практика подгрузки модулей не особо применяется, если дров нет в ядре - скорее всего их нет вообще)
- Забутится и проверить, что все работает/не работает. Если вдруг понадобится какая-то программа - придется качать вручную ту самую версию, которую хочет порт, класть в /usr/ports/distfiles и собирать.

Если чувствуете уверенность в своих силах - можно не откапывать стюардессу - это замечено совершенно верно (увы, FreeBSD все больше движется ... в никуда) - а поднять линух, тот, который знаете и поставить там нужные версии софта, а сайт просто тупо перенести.

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

Лучший ответ:
У вас 3.11 питон. Гляньте есть ли совместмость у ваших библиотек с этой версией. Возможно они еще не сделали релиз под 3.11.

Худший ответ:
Что касается альтернативы PyCharm, то я советую Visual Studio Code. На мой взгляд он лучше PyCharm
Вопрос: Является ли порочной практика итеративных попыток сдачи тестировщикам сырых результатов работы?

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

 После этого задача попадает на проверку к тимлиду, который уже анализирует насколько то что получилось соответствует ожиданиям.
Эм, если все настолько плохо, что надо повторять цикл снова и снова, то где все это время был тимлид, который давал изначальную задачу?
Его привлекать в первую очередь, чтобы он либо переобъяснил разработчикам все, либо поправил свои требования, чтобы они были понятнее.
В моем понимании тимлид - это один из разработчиков, который ежедневно контролирует их работу, а не ждет пока ему принесут готовое через месяц.
А так да, тестировщик помогает разработчикам правильно понять требования, но он не должен биться головой об стену в одиночку. Если разработчикам что-то неясно, они могут и сами поднять жёпку и сходить к тимлиду, к аналитикам, к тестировщикам чтобы понять задачу правильно.

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

Лучший ответ:
Очередной Модест Матвеевич

Увы, но отключение под нагрузкой таких токов - это уже удел промышленных приборов.

Ну и важно понимать, что лазерный принтер может жрать пару киловатт - включать его в сетевой фильтр запрещено - превысите мощность.

Следовательно, вам потребуется научить тетенек дергать автомат в щите.

Либо соорудить классическую конструкцию из кнопок (тут возможна любая фантазия, через них не течет сильный ток. Если у вас есть кабель-каналы, купите пару кнопок Le Grand без фиксации)  и контактора, который можно засунуть либо в щиток, либо в бокс.

Тетеньки будут жамкать на кнопки, кнопки будут управлять контактором, контактор будет дергать вам уже приборы.

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

Лучший ответ:
Практическую работу в процессе изучения делайте на последней версии.
Читать можно и старые уроки (от 7 версии).
Расхождения в уроках и реальности очень небольшими будут и их вы сверите в документации. Она всегда свежая.

Худший ответ:
Даже 5я версия не отличается радикально от 7-9. Со времен 5ой версии появилось много полезного но это все не для человека который только начал в этом разбираться. А к тому моменту когда оно понадобится будешь уже программистом. :)