pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Свой сервер аналог Skype есть ли такой?

Лучший ответ: Skype это проприетарное ПО.  Свой «сервер» поднять не получится.
Ближе всего к твоему запросу будет скорее всего Matrix и подобные
Есть поддержка и голоса, и видео, и шифрование, и мосты в другие мессенджеры, и кроссплатформенность, и возможность изоляции

Худший ответ: Openfire. Родной полноценный клиент под Windows/Lunix/Mac, но есть еще веб-клиент, а если нужен только функционал чатов - он есть везде (любой XMPP-клиент). 
Бесплатно, работает, еще и интеграция с Active Directory имеется.
Видеоконференции решаются плагином.

Еще возможность звонков, видео и чатов есть в 3CX. Есть бесплатная версия.
Там основной упор на телефонию, для нее и чатов можно делать полностью свой сервер. Видеоконференции через браузер и фактически разруливаются внешним сервером. Платные решения доступны в РФ.

З.Ы. уточнил - сейчас и видео на  своем сервере.
Вопрос: Как записать в переменную строку из JSON файла с#?

Лучший ответ: Это не json файл. ЧИтай его как обычный текстовый файл. Построчно или полностью

Худший ответ: flexpc 
Правильно, https://www.newtonsoft.com/json/help/html/QueryJso... использовать
Вопрос: Можно ли реализовать такое меню без флексов?

Лучший ответ: CSS Grid Layout - на MDN среди вариантов реализации он перечислен
https://codepen.io/xdevelx/pen/rNYazer
snippet

PS На данный момент flex является для  такой менюшки оптимальным решением. Для гридов придется указывать количество ячеек, что не совсем подходит для меню, у которого может быть любое количество пунктов.

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

Лучший ответ: да
да
нет, байка о забыл add когда писал  "switchport trunk allowed vlan", пришлось ехать перезагружать свич основана на реальных событиях очень и очень многих людей. Как и "не ту строчку скопировал", и прочие прочие "человеческие факторы".
Для защиты есть механизмы типа safe-mode на микротиках или commit confirmed на джуниперах, которые вернут все взад, если связь не восстановится.

Худший ответ: А если это, например, Zyxel, то у вас еще много вариантов прострелить себе ногу и отключить управление до сброса на заводские
Вопрос: Почему не работает sudo apt update?

Лучший ответ: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>
Где PUBKEY - публичный ключ который у вас отсутствует, т.е. 7FCC7D46ACCC4CF8 и прочие

Худший ответ: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>
Где PUBKEY - публичный ключ который у вас отсутствует, т.е. 7FCC7D46ACCC4CF8 и прочие
Вопрос: Как полностью защитить ноутбук от взлома?

Лучший ответ:  Как полностью защитить ноутбук или компьютер от взлома?
Не включать его.

Худший ответ: В общем случае достаточно иметь бук с TPM и включить битблокер и включить антивирус.
Также рекомендую не ставить ломалки и прочий подобный софт. 
Дальше. Пароли должны быть сложными, и различными для всех сайтов. 
Дальше используйте менеджер паролей. Отключите вход через сканер отпечатка и камеру. Включите блокировку экрана через 1 минуту простоя. 
Создайте сервер с TFTP и настройте Clonezilla. Делайте регулярные снимки диска. 
Так же создайте разъездной образ для предоставления сотрудникам органов на таможне. 
Там должны быть дублирующие записи в соцсетях с абсолютно нейтральными постами. 
Дубли этих соцсетей должны быть и в смартфоне. 

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

Лучший ответ: По идее, жмёт его ImageIO.write, больше некому. Судя по всему, контролировать степень cжатия в этом методе нельзя.ImageReader reader = ...; //ImageIO.getImageReaders(ImageIO.createImageInputStream(stream))
reader.setInput(...);
IIOImage image = reader.readAll(0, null); 

RenderedImage renderedImage = image.getRenderedImage();
ImageWriter writer = ImageIO.getImageWriter(reader);
ImageWriteParam param = writer.getDefaultWriteParam();
paran.setCompressionMode(MODE_COPY_FROM_METADATA);  
writer.setOutput(...);
writer.write(null, image, param);
Должно быть примерно как-то так.

Худший ответ: Внутри ImageIO использует JPEGImageWriter, видимо, он что-то там пережимает (но это не точно).
Если вы просто хотите прочитать и записать файл, ImageIO вам не нужен.
Используйте тот-же Files из nio:
Files.write(Path.of("C:\\out.jpg"), bytes, WRITE);
Вопрос: Правда ли то, что например сайт или сервис електронной почты не имеют доступа к паролям?

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

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

Лучший ответ: Вообще возможно такое?
Если текст весь разбит на параграфы, и последними строками всегда будет </p> тогда возможно через REGEXP_REPLACE. С некоторыми извращениями скорее всего можно и если не закрывающий тег в конце текста.

Худший ответ: Лучше для такой операции написать отдельный скрипт на php или python. В СУБД очень бедный функционал на функциях регулярных выражений. А в скрипте вы сможете как извлечь данные, так обрезать все лишнее, а потом обновить данные в базе. Если данные записаны в виде HTML или JSON, то удобнее их декодить или строить DOM дерево и обрезать лишнее в преобразованной структуре с последующим преобразованием в вид для сохранения в базе.
Вопрос: Программировать на AVR востребованно?

Лучший ответ: STM дешевле (при массовом выпуске), мощнее, цикл разработки короче, доступно много отладчиков. Но всё решает задача, может вашу выгоднее решить на pic16? Осваивайте C, зная его переход на другой контроллер будет сводится к изучению таймеров, периферии, и errata. А если дело хоббийное, то никакие советы не помогут).
Пример:
1. модули bitichino для отельных систем на шине scs (управление энергоэффективностью номера) все на одном и том же pic16f886
2. Китайские аналоги таких систем поголовно на STM
3. Inncom by Honeywell традиционно выпускает такое оборудование на AVR, любимая всеми 328 мега. По моему скромному опыту проигрывает в надежности китайцам.
Угадаете, что обходится дороже заказчику? 3

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

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

 если программировать AVR на чистом C то он становится значительно быстрееЭто ваще шедеврально. А вас не смущает, что STM32 (STM8 это отдельная тема) против AVR того же ценового диапазона (например Arduino Nano против Blue Pill) имеет в 4 раза большую разрядность, работает на частотах минимум в 3 раза выше чем AVR, имеет кучу периферии, а главное - DMA и вычисления с плавающей точкой.  
От объясните как AVR может работать быстрее STM, для которого так же можно писать на С

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

Лучший ответ: 1)Сначала изучаешь теорию дизайна(цветовые сочетания, типографику, композиция, паттерны в дизайне и т.п.), теорию по UX бери из основ, например, Алан Купер "Основы проектирования взаимодействия", это классика; Якоб Нильсен "Веб-дизайн"
2)Изучаешь инструмент для работы: FIGMA 100%, есть куча бесплатного и при этом годного контента на ютуб
3)Развиваешь насмотренность (не просто смотри, а анализируй почему приняты были те или иные решения в дизайне) сайтов с примерами куча, беханс,аввввордс,лэндбук и т.п.
4)Практикуешься: сначала просто перерисовываешь работы, потом пытайся соединить несколько работ в одной, потом пробуй редизайнить какие-то плохие сайты, потом можно на просторах интернета найти реальные ТЗ

Худший ответ: 1. Делаешь, чтобы было удобно и красиво.
2. Читаешь книги по искусству, архитектуре, цвету, композиции, стилистике и т.д.
3. Изучаешь дизайн на курсах или находишь курс дизайна в каком-нибудь универе и учишься по вечерам. Тут главное работать по плану.

Вникаешь в то, что содержание первично, а форма вторична. Как только прозреешь, учись отсекать все лишнее. Когда лишнего не останется, познай гармонию содержания и формы в движении.
Вопрос: Как жить начинающему ui/ux дизайнеру?

Лучший ответ: ВОДА: Так как дизайн как таковой не имеет четкого разделения по критерию знаний, которые можно легко проверить на собеседовании, основной упор при найме строится на опыте и портфолио (что не так важно для тех же программистов или девопс). Плюс в вашем случае вы ищете удаленную работу, при абсолютном отсутствии опыта, причем это касается не столько именно дизайна, сколько работы в команде, что еще сильнее сужает возможность выбора вас как кандидата. С вами просто гораздо сложнее работать, так как условный вася, с абсолютно такими же скилами, но сидящий в офисе, и учится в разы быстрее и фидбэк получает мгновенно, а не 2 раза в неделю, когда тимлид просматривает кто чего сделал и раздает плюшки и плюхи.

СУТЬ: Есть два стула варианта, и оба они... ну, не супер, имхо.
1) Фигачить на фрилансе за репу, пока портфолио не будет выглядеть как у спеца с серьезным опытом, то есть 20-30 серьезных работ, время за работой +- год-два, тогда можно пробовать удаленку искать с бОльшим шансом на успех. Так же можно попробовать влиться в галеру на фриланс бирже, денег не много, зато опыт обычно качается достаточно быстро, единственный минус - много е*ут и мало платят.
2) Устроиться в любую оффлайн контору, и вообще то это самый надежный способ. Понимаю что не в каждой локации это реально, но даже если в городе 1 компания, надо пробовать устроиться туда, опыт оффлан работы сравнивать просто не с чем, это +200% буст в росте скила и профитная запись в резюме. Если контор 2-3 идеально поработать во всех, так как разнообразие подхода к работе в разных конторах никто не отменял. Как вариант со звездочкой - релокэйт в более обитаемые места и устройство на работу там. Студенчество перевести в заочку и фигачить в крупном населенном пункте - тоже профитный путь. 

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

Худший ответ: Извините, но у вас беда именно с портфолио. Не открывая проекты, по обложкам видно, что вы начинающий)

Вообще все доводы и мысли — ерунда, если ты хороший специалист, у тебя шансы выше, чем если ты новичок)

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

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

В любом случае вам поможет только опыт и только он. Больше будете это делать — круче будет получаться. Главное не разочаровываться, уже же нормально выходит, просо надо подтягивать уровень.

Еще рекомендовал бы заниматься копированием. Берете красивый сайт, ставите его рядом и пытаетесь скорпировать. Так вы начинаете понимать, как он сделать.

Сейчас в ваших работах детали мало проработаны. Главное не обижайтесь, просто делайте дальше)
Вопрос: Как сравнить по времени в таблицах, отбросив минуты и секунды до часов?

Лучший ответ: Select t1.ID, t1.TIME
from 
TABLE_1 t1 
JOIN TABLE_2 t2 ON t1.ID=t2.ID
              and to_char(t1.TIME, 'DD.MM.YYYY HH24') = to_char(t2.TIME, 'DD.MM.YYYY HH24')
Вариант 2 (возможно, пригодится при оптимизации, так как на выходе сравниваются значения в типе дата время, а не строк):
... and trunc(t1.TIME, 'hh24') = trunc(t2.TIME, 'hh24')
PS: Хорошо бы еще индекс создать под этот формат времени для колонок t1.TIME и t2.TIME, тогда запрос будет всегда производителен.

Худший ответ: У Оракла есть короткий синтаксис внутренних соединений. Вообще JOIN не нужно указывать.

SELECT 
  t1.ID, t1.TIME
FROM 
  t1,t2 
WHERE t1.ID = t2.ID
  AND trunc(t1.TIME, 'hh24') = trunc(t2.TIME, 'hh24')
И есть общая рекомендация - выделять ключевые слова SQL  в uppercase. Так их удобнее видеть.
Вопрос: Сделал базу данных для телеграм бота и постоянно выдаёт ошибку, что делать?

Лучший ответ: Вам же пишут:
no such table: test
У вас нет таблицы с названием "test".
Создайте её хотя бы.

Худший ответ: Каждое сообщение обрабатывается в отдельном потоке, т.е. подключение (connect) должны делать в каждом обработчике @bot.message_handler

для sqlite еще потребуется семафоры (fcntl.flock), т.к  локальная СУБД плохо "разруливает" блокировки

lock_bd=open(os.path.join(os.path.dirname(os.path.realpath(__file__)),'db','database.lock'),'a')
fcntl.flock(lock_bd,fcntl.LOCK_EX)
conn = sqlite3.connect('db/database.db', check_same_thread=False)
cursor = conn.cursor()
....

cursor.close()
conn.close()
lock_bd.close()
Вопрос: Какие плюсы и минусы у Task и Thread?

Лучший ответ: Отвечает сам Джон Скит:
https://stackoverflow.com/a/13429164/3143750
Ну и вот ещё
https://www.c-sharpcorner.com/article/task-and-thr...

Худший ответ: Thread — это абстракция потока. Task — более высокоуровневая абстракция; это Обещание, иначе говоря, некоторая операция, которая завершится в будущем.

И гугл прав, непосредственно Thread в коде сейчас не используют.
Вопрос: Зачем разделяют ввод логина и пароля?

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

сомневаюсь что речь идет именно о пользовательском опыте, скорее всего это внутренние заморочки компании, использующей единый портал для входа как своих сотрудников так и пользователей

p.s. с точки зрения пользователя, это отвратительный способ, требует больше действий от него, браузеры или парольные менеджеры могут быть не готовы к такому разделению и т.п.

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

Как вариант, можно после ввода логина подтянуть какие то настройки пользователя, вроде языка, часового пояса и т.п. (честно говоря, чего то важного придумать не могу).
Еще вариант - современное стремление к максимально простым и "чистым" формам, т.е. одна форма - один элемент ввода. Упрощение взаимодействия.
Вопрос: Как физлицу выгодно продать домен другому физлицу?

Лучший ответ: Продать домен нельзя :) От слова совсем. Он Вам не принадлежит, Вы его арендовали. 
Можно переуступить право аренды.
(От того, что все называют это "покупкой" - оно покупкой не становится :) )

Я бы дал расклад покупателю, что так и так. Если он реально заинтересован в сделке - пойдет на 50/50, если не пойдет - значит тут где-то лежит попытка наипать, нужно только понять - где.

Худший ответ: Напрямую заключать договор или через гаранта.
Вопрос: Как победить is not in the sudoers file. This incident will be reported?

Лучший ответ: УСТАНОВКА SUDO В DEBIAN

Худший ответ: Залогиниться в root, добавить пользователя в группу wheels и разрешить ей исполнение sudo в /etc/sudoers
Вопрос: Где купить сервер для vpn c возможностью оплаты картами Visa/Mastercard?

Лучший ответ: Есть. 
Есть vds.sh, но я еще не пробовал продлять у них, хотя скоро надо
Есть majordomo
Есть adminvps
У ruweb кончились возможность размещения в голландии.
Есть poiskvps, в конце концов, там сбственно все и находится.

Худший ответ: 3й вопрос за день
Сделайте поиск по сайту. Найдете ответ
Вопрос: Правильно ли под каждый микросервис запускать сервер базы данных?

Лучший ответ: Имеется в виду одна БД не для каждого отдельного экземпляра микросервиса, а для всех  экземпляров некоторого микросервиса. Скажем, 10 контейнеров микросервиса с одним DB connection string. Соответственно, 1 балансировщик на эту группу.

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

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

Худший ответ: Если приняли офер, можете смело рассылать предложения, где-то читал на upwork комьюнити,  что рекомендуют не более 5 в день.
Вопрос: На ноутбуке не хватает места, 256 ГБ SDD. Лучшее решение для увеличения места?

Лучший ответ: купи новый ssd на 1 тб
клонируй на него систему
купи бокс для старого ssd и юзай как флешку

вот тебе лучшее решение

Худший ответ: На ноутбуке не хватает места, 256 ГБ SDD. Лучшее решение для увеличения места?Нет такого решения - как было 256, так и останется 256. Увеличить можно только заменой на больший.
Покупать более емкий sdd и менять не хочу, нужно все переустанавливатьПереустанавливать не нужно, достаточно запустить опцию "Миграция ОС", которая есть во многих продвинутых менеджерах разделов, и подождать 5 минут. ОС перелезет на другой носитель без всяких изменений. один к одному, со всеми своими настройками, установленными программами и личными данными в пользовательских папках.
Хочу взять внешний ssd на 500 и подключить через usd 3. Есть еще Type-C. Нет, там не всё так просто. Даже если декларируется скорость передачи данных во всех этих типах-С, якобы сравнимая со скоростью внутрисистемных шин, всё равно это будет сильно медленнее из-за конверсии форматов данных на стыках разных интерфейсов. Эту разницу легко увидеть экспериментально, если взять боксик с хвостом USB-3, вставить в него ноутбучный диск SATA и замерить скорость, а потом вытащить диск, подключить его к внутрисистемному SATA и опять замерить скорость.
Так что покупайте больший и не ищите приключений.
Вопрос: Зачем писать .to_string() при объявлении строки?

Лучший ответ: Есть хорошая статья: https://habr.com/ru/post/274485/

У строковых литералов тип &'static str. Тоесть это заимствованная ссылка на объект с неограниченным временем жизни.
А to_string возвращает уже owned строку типа std::string::String

А нужно это в данном коде, чтобы показать механику владения, что очевидно нельзя, если никто не является владельцем значений, как в случае со ссылками.

Если ты хочешь получить именно String из строкового литерала, то есть сразу несколько вариантов, включая показанный:
let a: String = String::from("a");
let b: String = "b".to_string();
let c: String = "c".into(); // или "c".into::<String>(), если не указывать тип явно.
let d: String = "d".to_owned();

Худший ответ: https://qna.habr.com/q/1105214#answer_2097786

Раздел Strings in Rust
Вопрос: Как решить вопрос ожидания в асинхронном программировании?

Лучший ответ: Тут проблема не в асинхронном коде, а в том что обработка ваших данных занимает слишком много времени. Если бы у вас обработка данных была синхронной - была бы та же проблема.

Таким образом, у вас 2 варианта:
1. Увеличить таймаут на nginx (или кто там отвечает 502 Gateway timeout), чтобы он ждал ответа 10 минут. Пользователю при этом тоже придется ждать. На фронте в это время можно рисовать "крутилку" или запустить прямо в браузере тетрис :)
2. Делать общение с фронтом асинхронным тоже. Пользователь загружает файл, файл уходит в обработку и фронту сразу же возвращается 200 OK + идентификатор задачи. Фронт с определенной периодичностью (10-30 секунд) опрашивает по идентификатору бэк "ну что, закончилась обработка?". И как только закончилась - бэк ему отдает итоговый файл. Пока обработка не закончилась - бэк может отдавать данные о количестве обработанных записей, что позволит фронту рисовать прогресс-бар, например.
2а. Тоже самое что и в п.2, но уведомление о завершении задачи посылает бэк через WebSocket.

Худший ответ: Нужно реализовать асинхронное выполнение и на стороне пользователя тоже.
Сделайте что-то типа "заданий".
Пользователь загружает файл - создается "задание". Пользователь может зайти в какой-то список заданий и посмотреть их прогресс. Когда задание выполнено - пользователь должен получить возможность выгрузить результаты.
Вопрос: Зачем нужны 2 USB на мониторе HP?

Лучший ответ: это usb-хаб. 
можете не пользоваться, если не нужно.

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

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


Худший ответ: В исходном коде есть такие строки. Скорее всего, они прописаны в каком-то шаблоне.
Вопрос: Async: false; — плохая практика?

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

mutation observer ловит изменения, делает проверку и заполняет массив потоми делает запрос. Но тут почему то ajax не ждёт пока заполнится массив и сразу выполняет запрос.К тому же эту проблему синхронный запрос не решит, он ее наоборот усугубит, так как MutationObserver так же не сможет отработать пока не завершится запрос.

Существуют ли случаи, когда оправдано использование синхронных запросовединственное оправданное применение - отправка данных перед закрытием вкладки на динозаврах без поддержки sendBeacon
Заметьте, в современном fetch api даже нет такой возможности, как отправка синхронного запроса, и не просто так.

логика хромает и лучше всего все переписатьк сожалению появление асинхронности в одном месте может привести к появлению асинхронности во многих других местах, по другому ни как. Так что да, придется переписать. Но это неизбежно, так как многие api в современно браузере (тот же MutationObserver) работают только асинхронно. К счастью есть промисы и async/await сахар над ними, что сильно упрощает такую задачу.

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

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

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