pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Торрент тихий убийца ссд?

Лучший ответ: Помогает ли "раздача" убивать диск?
При раздаче на диск ничего не пишется. Чтение диск не убивает.

З.Ы. И в чем разница TBW и DWPD
Ну блин гуглится же легко :)

TBW (total bytes written / всего байт записано) - сколько всего можно байт по кругу записать на диск (общий ресурс)

TWPD (total writes per day / полных записей в день) = TBW / (Capacity * 365 days * 5 years) - тобишь то, сколько полных перезаписей в день может выдержать диск в течение 5 лет.

Худший ответ: Современные ssd имеют большой мото-ресурс. Скорее всего они будут убиты чем угодно но не торрентом. 

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

У тебя что сервер?
Вопрос: Ошибка IndentationError: unexpected unindent, что делать?

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

import telebot
bot = telebot.TeleBot('####')

@bot.message_handler(content_types=['text'])
def get_text_messages(message): 
    if message.text == "Привет":
        bot.send_message(message.from_user.id, "Привет, чем я могу тебе помочь?")
    elif message.text == "/help":
        bot.send_message(message.from_user.id, "Напиши привет")
    else:
        bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")

bot.polling(none_stop=True, interval=0)

Худший ответ: def get_text_messages(message):
    @bot.message_handler(content_types=['text', 'document', 'audio'])
    if message.text == "Привет":
        bot.send_message(message.from_user.id, "Привет, чем я могу тебе помочь?")
    elif message.text == "/help":
        bot.send_message(message.from_user.id, "Напиши привет")
    else:
        bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
    bot.polling(none_stop=True, interval=0)
Вопрос: Алгоритм поиска минимального количества ходов, требуемых для приведения всех элементов к одному числу (Python)?

Лучший ответ: Ищите медиану вашего набора чисел. Это и будет отправная точка, до которой нужно будет добивать все числа.
А дальше просто суммируете модули разности каждого элемента набора с этим числом.
Если нужно более подробно - скажите

P.S. Перечитал второй ответ - в принципе то же самое.

Худший ответ: Визуально можно представить: на плоскоть бросили случайно кучку точек )
Оси X и Y, приём X  не важен в данном случае. Y – значения в массиве.

Нужно так подвинуть горизонтальную линию, чтобы сумма расстояний от каждой из точек до этой линии оказалась минимальна. Её Y и будет тем значением, до которой остальным точкам «шагать».

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

Лучший ответ: Погуглите "ab тестирование"

Худший ответ: Это очень просто. Заходит посетитель, вы проверяете его кукисы, если вашего кукиса там нет, то вы заносите его в группу А или в группу Б согласно вашему алгоритму рандома, к-й делит аудиторию 1:1000. Если кукис есть или после того как он уже установлен, вы показываете своего котенка или другую версию дизайна страницы только группе Б.
В принципе, для а/б тестирования есть и готовые решения, работающие по этому принципу.
Вопрос: Оптимальная реализация связки Django + React в сложном SPA приложении?

Лучший ответ: Ну смотри, для создания связки Django + React, наиболее оптимальным видится взять Django и React.

P.S. почему вообще рассматривается пункт под номером 1, если ты собрался ещё и мобильное приложение пилить и тебе нужен АПИ?
Давай лучше от qna сайтов отдохни, сядь, напиши на листочке что тебе нужно и подумай, а то набросился, на большой СПА проект, не подумав.

Худший ответ: Делайте второй вариант, сейчас все постепенно переходят на чистое API и для мобильного легче будет прикрутить. Пока backend не готов используйте mocks ! Если будут вопросы DevOps - пишите, у самого есть идея подобное приложение делать.  И не слушайте тех, кто говорят не набрасываться на большой проект, именно так и учишься многим, современным вещам !
Вопрос: Какой 34 дюймовый монитор подойдёт для программирования?

Лучший ответ: Хочу купить 34 дюймовый монитор в пределах 40 тыс, за эту сумму можно взять либо LG на IPS 60Ghz ровный, либо Huawai изогнутый на VA, 165Ghz.
34 дюйма до 40к рублей — это долбанное зерно. Я купил 27 дюймов экран с высотой 1440 точек и плююсь до сих пор. Хотел подключить макбук и работать с двумя экранами. Но не смог из-за ОЧЕНЬ разной плотности пикселей. Потому что невозможно смотреть то туда, то сюда, глаза текут. В итоге работаю с закрытым ноутом, только на мониторе. А 34 дюйма — это ещё большего размера пиксели, толщиной с палец.

что лучше подойдёт с точки зрения разработчика?
С точки зрения разработчика подойдёт большая плотность пикселей. Чем ближе к макбуку — тем лучше (у мака 227ppi). Потому что 8 часов в день ты смотришь на тоненький текст, очень много текста, очень плотно расположенного и глаза устают от зернистого экрана.

Например, можно 27-дюймовую лыжу (LG UltraFine 27UL650-W) с 163ppi

Худший ответ: одно время по всякому смотрел и пришел к выводу, что современный софт заточен на работу на одном 24" мониторе и самое комфортное, приобрести два или лучше три и разместить слева и справа от основного, в одном месте я пробовал сверху ставить монитор - неудобно, исключение если это что то беглым взглядом

по поводу разрешения, выбрав 4к, все равно придется выставлять скалинг, возвращая fullhd разрешение (но да тексты читать будет приятнее)

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

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

Лучший ответ: SPF, DKIM, DMARC. Ну и не рассылать спам со своего сервера.
Проверить можно на https://www.mail-tester.com/

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

Лучший ответ: Добавлю к пессимизму. 
Верно ли это утверждение?  59 минут назад
Сломался WordPress Кто поможет?  14 окт. 
Почему так произошло Опенкарт?  06 июл. 
Стоит ли учить Python по книгам?  более года назад
Как двигаться в гейм дев? более года назад
Как начать путь в сферу game дизайна? более года назад
Не получается верстать самостоятельно. Как преодолеть это?  более года назад

Этот список говорит нам открытым текстом, что увлекаетесь вы не программированием, а "вайти".
Ой, геймдев! Ой нет, Питон! А, нет - вёрстка! Ну и понятное дело что всё кончилось вордпрессом. 

Люди, которые действительно увлекаются программированием, не задают вопросов, "стоит ли учиться по книгам". и "как войти вайти". Они учатся. И входят. 

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

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

пока ты не создаешь свои приложения и только читаешь теорию - ты не программист
Вопрос: Можно-ли искать стажировку или что-то типа того в 15 лет? Если да, то где?

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

Худший ответ: Обычно стажеров берут во время учебы в университете. Например давайте посмотрим на крупные компании:

Google: https://careers.google.com/jobs/results/8568781851...
- ищут людей которые прямо сейчас учатся в Computer Scince и подходят к диплому в следующем году.
Facebook: https://www.facebook.com/careers/jobs/654496918442526/
- опять требуется чтобы вы прямо сейчас учились Computer Science.
и т.п.

Кроме того, немаловажный момент для работы в компаниях - совершеннолетие. 

В 15 лет лучше продолжать учится, можно начинать писать свои Open Source проекты, чтобы к наступлению совершеннолетия уже был опыт разработки.
Вопрос: Как правильно клонировать приватный репозиторий github?

Лучший ответ: Там же написано

Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

Худший ответ: Сгенерируй пару SSH ключей. Открытый ключ добавь на GitHub и забудь про пароли.
Вопрос: Firewall для Android?

Лучший ответ: AFWall - с рутом
NetGuard - без рута
AdGuard
Третий понятно по названию предназначен для борьбы с рекламой, но можно вручную поотключать фильтры и оставить работать как фаерволл. Умеет работать с рут и без
У всех есть логи, выборочный запрет приложениям выходить в сеть и уведомления о попытках достучаться до ББ

Худший ответ: Пользовался этим: https://4pda.to/forum/index.php?showtopic=495699 NoRoot Firewall
Есть возможность перехвата отдельных запросов.
Вопрос: Можно ли уменьшить выделяемый объем диску в хранилище proxmox?

Лучший ответ: клонируй на новый диск

Худший ответ: Нет такой функции, бекап рестор сделай
Вопрос: Как сделать вывод цветного текста в txt файл?

Лучший ответ: Никак. txt - простой текстовый формат и что такое "цвет" он не знает.

Худший ответ: Линукс-консоли поддерживают цветовые коды при выводе текста на экран.
Этим иногда пользуются для дизайна command-line утилит.
Вот как-то так.
LRED='\033[1;31m'
echo "$LRED 2023-01-01 [Error] Server is down"Но то что будет получено в результате - уже не текстовый файл. 

 Насчет windows - не знаю. Там может как-то под другому с консолью надо работать.
Вопрос: Как лучше реализовать корзину для магазина?

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

Обычно для анрегов корзина делается в сессии, а для регов - в базе.
При логине и наличии корзины в сессии, содержимое мержится с корзиной в базе. То есть такого вопроса "как сделать идентификацию" в принципе не возникает - все делается само собой. Когда юзер авторизовался, у нас есть и его ид, и сессиия. Что тут может быть не ясно?

Худший ответ: Давай предположим, что корзина основана на бд. Тебе понадобиться как минимум идентифицировать пользователя (самый простой способ, в качестве идентификатора использовать сессию). В таблице, тебе нужны поля : id товара и количество (минимум).
А теперь представь, что кто-то добавил в корзину товар и вышел - не очень хорошо, нужно очищать старые записи (добавляем поле со временем добавления записи и создаём задание на удаление).

Просто, не правда ли :) (сарказм).
А теперь представь, что сессии упрощают все выше. И тебе не нужно париться с очищением заказов.
Решить проблему с блокировкой файла сессий можно настроив их хранение в redis.

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

Лучший ответ: Если просто, то так. Использовать gap
.box {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 20px;
}

Худший ответ: Как вариант можешь убрать justify-content: space-between; и добавить column-gap: 1rem;
Вопрос: Что делать если не скачивается?

Лучший ответ: Попробуйте через VPN

Худший ответ: VPN включите
Вопрос: Как десериализовать массив именных объектов в именно объекте посредством Unity JsonUtility?

Лучший ответ: 1. У тебя json выглядит так:
- cars
  - cars_bigs
    - force: 500
      weight: 1000
    - force: 1000
      weight: 4000
  - cars_smaller
    # и так далее
Значит тебе объекты нужны такие:
class CarsResult {
  public CarItem[] Cars { get; set; }
}
class CarItem {
  // К сожалению, нельзя на уровне системы типов выразить "Объект, у которого есть либо поле А либо поле Б"
  // Так что придётся указать оба поля
 // И нельзя это разрулить на уровне настроек сериализатора, если не придумывать кастомный сериализатор (не знаю, можно ли кастомизировать юнитивский)
  public Car[] BigCars { get; set; }
  public Car[] SmallCars { get; set; }
}
class Car {
  public int Force { get; set; }
  public int Weight { get; set; }
}
PS: В английском языке прилагательные ставятся перед существительными и не имеют числа. Так что "большие машины" - это "big cars", но никак не "Cars bigs". А "машины по меньше" - это "Smaller cars"
PPS: Надеюсь, как указать нужные имена ты сам догадаешься, почитав документацию..

Худший ответ: Стандартный json то ли полу-рабочий, то ли я что-то не понимаю, у меня с ним тоже были проблемы и выходом была библиотека newtonsoft, вроде в юнити сразу есть, попробуй ее, с ней все заработало
Вопрос: Как отсортировать числовые строки вида «Х.Х.Х»?

Лучший ответ: Чтобы не заниматься программированием в PostgreSQL, в котором натуральной сортировки для такого случая я не нашёл, решением может быть хранить ваши строки не as is, а отдельно буквы и массив цифр, т.е. вместо одного поля VARCHAR для всей строки использовать 2 поля: строка VARCHAR для букв и массив чисел INTEGER[]:

CREATE TABLE test (
  "letters" VARCHAR(20),
  "digits" INTEGER[]
);

INSERT INTO test
  ("letters", "digits")
VALUES
  ('ЧС', '{1, 1}'),
  ('ЧС', '{1, 2}'),
  ('ЧС', '{1, 3, 1}'),
  ('ЧС', '{1, 10}'),
  ('ЧС', '{1, 11, 1}'),
  ('П', '{1, 1}'),
  ('П', '{1, 2}'),
  ('П', '{2, 10}');

SQL тогда получается банальным - сортировка просто по этим двум полям, а собрать нужную строку можно прямо в запросе:
SELECT letters || '.' || array_to_string(digits, '.') from test order by letters, digits;

Поиграться: https://www.db-fiddle.com/f/kGBapu86EXBuMZ6Bh6mGfe/1

Худший ответ: Согласен с Anton Kuzmichev, однако если нет возможности изменить структуру данных, то можно разбить строку на массив и сортировать по каждому элементу
create table test (
  col varchar(64)
);

insert into test 
values 
  ('ЧС.1.1'), 
  ('ЧС.1.2'), 
  ('ЧС.1.3.1'), 
  ('ЧС.1.10'), 
  ('ЧС.1.11.1'), 
  ('П.1.1'), 
  ('П.1.2'), 
  ('П.10.2'), 
  ('П.2.10');

select 
  col
from 
  test 
order by 
  (string_to_array(col, '.'))[1], 
  (string_to_array(col, '.'))[2]::int, 
  (string_to_array(col, '.'))[3]::int;

PostgreSQL fiddle

или так:

select col from (
  select 
	col, string_to_array(col, '.') arr
  from 
	test
) tbl
order by 
  arr[1], 
  arr[2]::int, 
  arr[3]::int;
Вопрос: Почему при изменении языка в windows 10 меняются названия папок на системном диске?

Лучший ответ: Нет никакой разницы, как называются папки. Пути к ним находятся в переменных окружения ProgramFiles и ProgramFiles(x86).
> set
...
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
...

Худший ответ: У десятки есть фишка в проводнике показывать локализованные псевдонимы папок. Если зайти на диск C через тотал, там будут привычные program files, users и тп.
Вопрос: Как отслеживать активность пользователя в системе?

Лучший ответ: Если юзер закрыл вкладку, или перешел на неотслеживаемую страницу - значит у него перестал исполняться JavaScript код, который например каждые 5 секунд делает проверочный AJAX-запрос типа PING-PONG (с токеном страницы, конечно).

Худший ответ: Решили использовать сокеты.

Факт открытия сокета создаёт в базе данных запись и сохраняет id записи в памяти.
Факт отключения от сокета обновляет существующую запись в базе данных с второй отметкой времени.

Например, на определённых страницах, где мне необходимо замерять время пребывания, я либо открываю, либо закрываю открытый сокет.

Плюсы
----------------------------------------------------------------------------
Высокая точность измерения
Нет хлама в базе данных в виде дискретных записей.
99 % Гарантия записи end_action_at в базу данных.

Минусы
----------------------------------------------------------------------------
Нужно поднимать отдельно ноду.
Аппендикс в виде маленького сервиса.
Вопрос: В ларавел можно как то удалить модель, но с удалением всех связующих записей?

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

Худший ответ: в миграциях нужно добавить каскадное удаление к ключам https://laravel.com/docs/8.x/migrations#foreign-ke...
или удалять в обсервере модели событие deleted
https://laravel.com/docs/8.x/eloquent#observers
Вопрос: Какие нужны ресурсы для разработки приложения?

Лучший ответ: Допустим, за месяц вам три разработчика (андроид + айос + бэк ) сделают MVP... 
Сеньер стоит около 200к/мес. 
Выходит в месяц вам надо 600тр только на разработку. 
Дальше, если что-то будет получаться, берете тестера и админа (девопс) + ещё 300.
Получается, минимальная команда разработки будет стоить от 1млн/мес, без учёта менеджеров и вэб-фронта.
Добавляйте сюда затраты на инфраструктуру, лицензии, налоги...

По срокам:
Я верю, что MVP можно сделать за месяц, более-менее годный проект 6-9 месяцев.

Худший ответ: К вашей идеи нужен миллион баксов и удача. Шансы 1 из 1000, что выйдете в ноль.
Вопрос: Как запустить .cs файлы без компиляции в exe?

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

Каким образом я могу запускать .cs файлы без компиляции/ide?
Никак, так как C# - компилируемый язык.
Чисто теоретически ты можешь использовать C# Interactive, но там всё достаточно специфично и ограниченно.
Ещё ты можешь компилировать C# из консоли через dotnet SDK

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

Лучший ответ: Это скорее вопрос не столько реализации корзины, а организации собственно справочника номенклатур. Ничего нового тут нет. Что ботинки разных размеров продавать, что пиццы. Можно считать разные размеры разной номенклатурой, а можно ввести какие-нибудь "типы" или "категории" номенклатур. Дело вкуса, делают и так и так.
А вот добавки я бы считал просто отдельными номенклатурами. Так как "Ананас" за 59 рублей он что к одной пицце, что к другой - всё тот же ананас! Для удобства я бы их выделил в отдельную группу, позиции из которой не предлагаются в основном прайсе (где сами пиццы), а только после выбора основной позиции. 
В корзину добавляется товар из основной группы (пицца), затем предлагается добавить товары из другой группы (добавки - грибы, ананасы и т.д.)

Худший ответ: В чем именно проблема реализации?
Добавки - это отдельные товары из соответствующей категории Добавки, а размеры пиццы - это лишь модификации этого товара.
В корзине идентификатором товаров пусть выступает не id товара, а ключ, который генерируется в бэке перед добавлением. Например ключ каждого товара будет равен шифрованию md5 строки
$productKey = md5(id_товара. цена_товара. модификация_товара(размер). json_encode(добавки));
И пишите массив товаров корзины например в сессию, где ключом будет выступать сгенерированный key.
Тогда, условно, при добавлении Маграгриты 25см с халапеньо и Маргариты 30см без добавок, в корзине будут отображаться два разных товара, так как у них разный key.
И в сессии это может выглядеть например так:
[идентификатор_сессии][id-заказа][cart] = array (
  '984b707b193e29fb93c9d6e05a585ce6' => array("Маргарита", 100 рублей, 25см, 1шт, {"халапеньо"}),
  '977b713b193e29fb93c9d6e05a513ke2' => array("Маргарита", 100 рублей, 30см, 1шт, {})
);
Вопрос: Как передать переменную из одной функции в другую?

Лучший ответ: Вопрос не имеет никакого отношения к написанию ботов вообще, ни к telegram в частности. Вопрос имеет отношения к Python, его основам, а так-же к необходимости его изучения.
Для передачи значений между функциями ВСЕГДА И ВЕЗДЕ существует ТРИ способа.
1. Классический: в общей вызывающей программе создаете переменную, которую передаете как параметр в обе функции. В одной из этих функций эта переменная заполняется значением, в другой - читается и используется.
2. Нерекомендуемый: через глобальную переменную.  
3. Для очень сложных систем: через внешний файл.
Все. 
Вот и выбирайте тот из них, который вам подходит больше.

Худший ответ: Чтобы задать пользователю несколько вопросов тебе нужно воспользоваться машиной состояний. Обычно реализация есть в любой популярной библиотеке. Вот пример на aiogram: https://github.com/aiogram/aiogram/blob/dev-2.x/ex...
Вопрос: Arduino улучшение редактора?

Лучший ответ: 1. Напиши свой редактор кода.
2. Ни кто не мешает тебе писать код в одном редакторе, а запускать в другом

Худший ответ: Можете программировать функциональными блоками.
Редактор XOD.
Вопрос: Может ли статическое электричество попасть на процессор через радиатор?

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

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

Лучший ответ: Опишите зависимость в require-dev секции + можно дать ссылку на пакет в suggest секции.
Таким образом при разработке все зависимости будут устанавливаться, а при использовании библиотеки как зависимости - игнорироваться

https://getcomposer.org/doc/04-schema.md#require-dev
https://getcomposer.org/doc/04-schema.md#suggest

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

Лучший ответ: 1) Обычно сначала применяют лексер, затем парсер.
2) Вы должны создать грамматику в виде дерева.
3) Есть хорошие примеры в функциональном программировании (Haskell, F#).
Книги надо, скорее всего, гуглить, я видел такие:
а) 1972-73. The theory of parsing, translation, and compiling (2 тома), Aho, Ullman.
б) 1988. Parsing theory. Sippu, Soisalon-Soininen
в) 2008. Parsing techniques. Grune, Jacobs.

Худший ответ: книги по парсингу?) ну хз, если мы говорим про веб, то в 

первую очередь это понимание того, что такое dom и как с ним работать, 
конечно же css,
регулярные выражения, 
циклы,
функции,
не лишним будет js и nodejs
там же готовые библиотеки
работа с api
базы данных
меня выручало знание php
там же ООП
работа с командной строкой
canvas, fingerprint, useragent, vpn, proxy, туннелирование и тд
и многое другое


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

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